Components
Tabs
Tab list and panels with primary/secondary variants and vertical layout — aligned with @heroui/react Tabs and tabs.css.
Usage
Horizontal default variant: `RiseThemeData.muted` list, `RiseThemeData.surface` segment + surface shadow, `text-sm` labels; `mt-4` gap before panel.
RiseTabs(
tabViewHeight: 140,
tabs: const [
Tab(text: 'Overview'),
Tab(text: 'Analytics'),
Tab(text: 'Reports'),
],
children: const [
Text('Overview panel'),
Text('Analytics panel'),
Text('Reports panel'),
],
)Vertical
Default variant vertical strip — same segment pill + shadow as horizontal.
RiseTabs(
orientation: RiseTabsOrientation.vertical,
variant: RiseTabsVariant.default_,
tabViewHeight: 200,
tabs: const [
Tab(text: 'Account'),
Tab(text: 'Security'),
],
children: const [Text('Account'), Text('Security')],
)Disabled tab
One tab cannot be selected.
RiseTabs(
tabViewHeight: 140,
tabEnabled: const [true, false, true],
tabs: const [
Tab(text: 'Active'),
Tab(text: 'Disabled'),
Tab(text: 'Available'),
],
children: const [Text('A'), Text('B'), Text('C')],
)Custom styles
Same default segment chrome as Usage, but `labelStyle` (12px semibold, wider tracking), `labelColor: rise.accent` for the selected tab, and `initialIndex: 1` — Daily / Weekly / Bi-Weekly / Monthly.
RiseTabs(
tabViewHeight: 140,
initialIndex: 1,
labelColor: rise.accent,
labelStyle: const TextStyle(
fontSize: 12,
fontWeight: FontWeight.w600,
letterSpacing: 0.35,
height: 16 / 12,
),
tabs: const [
Tab(text: 'Daily'),
Tab(text: 'Weekly'),
Tab(text: 'Bi-Weekly'),
Tab(text: 'Monthly'),
],
children: const [Text('…'), Text('…'), Text('…'), Text('…')],
)Secondary variant
`.tabs--secondary`: transparent list, `border-border` rule, `bg-accent` 2px indicator.
RiseTabs(
variant: RiseTabsVariant.secondary,
tabViewHeight: 140,
tabs: const [
Tab(text: 'Overview'),
Tab(text: 'Analytics'),
],
children: const [Text('…'), Text('…')],
)Secondary vertical
Left border on list; accent vertical stroke on the selected tab.
RiseTabs(
variant: RiseTabsVariant.secondary,
orientation: RiseTabsOrientation.vertical,
tabViewHeight: 200,
tabs: const [
Tab(text: 'Account'),
Tab(text: 'Billing'),
],
children: const [Text('…'), Text('…')],
)Scrollable
Many tabs in the secondary style.
RiseTabs(
variant: RiseTabsVariant.secondary,
isScrollable: true,
tabAlignment: TabAlignment.start,
tabViewHeight: 120,
tabs: const [
Tab(text: 'Overview'),
Tab(text: 'Analytics'),
Tab(text: 'Reports'),
Tab(text: 'Team'),
],
children: const [Text('…'), Text('…'), Text('…'), Text('…')],
)