@optimum-intelligence/opti-ui 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/components/app-shell/AppShell.d.ts +12 -3
  3. package/dist/components/app-shell/AppShell.js +45 -26
  4. package/dist/components/app-shell/AppShell.js.map +1 -1
  5. package/dist/components/data-table/DataTable.d.ts +25 -4
  6. package/dist/components/data-table/DataTable.js +238 -90
  7. package/dist/components/data-table/DataTable.js.map +1 -1
  8. package/dist/components/data-table/DataTableContent.d.ts +6 -1
  9. package/dist/components/data-table/DataTableContent.js +306 -409
  10. package/dist/components/data-table/DataTableContent.js.map +1 -1
  11. package/dist/components/data-table/DataTableFilters.d.ts +6 -1
  12. package/dist/components/data-table/DataTableFilters.js +65 -45
  13. package/dist/components/data-table/DataTableFilters.js.map +1 -1
  14. package/dist/components/data-table/DataTableRow.js +2 -0
  15. package/dist/components/data-table/DataTableRow.js.map +1 -1
  16. package/dist/components/data-table/types.d.ts +14 -1
  17. package/dist/components/data-table/useDataTable.js +2 -0
  18. package/dist/components/data-table/useDataTable.js.map +1 -1
  19. package/dist/components/drawer/Drawer.d.ts +7 -4
  20. package/dist/components/drawer/Drawer.js +2 -1
  21. package/dist/components/drawer/Drawer.js.map +1 -1
  22. package/dist/components/map/Map.d.ts +30 -6
  23. package/dist/components/map/Map.js +387 -271
  24. package/dist/components/map/Map.js.map +1 -1
  25. package/dist/components/stat-card/StatCard.d.ts +2 -2
  26. package/dist/components/stat-card/StatCard.js +1 -1
  27. package/dist/components/stat-card/StatCard.js.map +1 -1
  28. package/dist/components/stepper/Stepper.d.ts +7 -1
  29. package/dist/components/stepper/Stepper.js +46 -27
  30. package/dist/components/stepper/Stepper.js.map +1 -1
  31. package/dist/components/table/Table.d.ts +1 -1
  32. package/dist/components/table/Table.js +3 -1
  33. package/dist/components/table/Table.js.map +1 -1
  34. package/dist/components/tabs/Tabs.d.ts +4 -1
  35. package/dist/components/tabs/Tabs.js +33 -23
  36. package/dist/components/tabs/Tabs.js.map +1 -1
  37. package/dist/components/toggle/Toggle.d.ts +1 -1
  38. package/dist/components/toggle/Toggle.js.map +1 -1
  39. package/dist/components.json +101 -29
  40. package/dist/icons/index.d.ts +8 -0
  41. package/dist/icons/index.js +11 -1
  42. package/dist/icons/index.js.map +1 -1
  43. package/dist/index.js +2 -2
  44. package/dist/llms-full.txt +48 -19
  45. package/dist/llms.txt +7 -7
  46. package/dist/opti-ui.css +380 -29
  47. package/dist/utils/media.d.ts +4 -0
  48. package/dist/utils/media.js +34 -0
  49. package/dist/utils/media.js.map +1 -0
  50. package/dist/utils/scroll-fade.d.ts +9 -0
  51. package/dist/utils/scroll-fade.js +45 -0
  52. package/dist/utils/scroll-fade.js.map +1 -0
  53. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,45 @@
3
3
  All notable changes to `@optimum-intelligence/opti-ui`. Versions follow [semver](https://semver.org/); while
4
4
  the version is `0.x`, minor releases may contain breaking changes, which are marked **Breaking**.
5
5
 
6
+ ## 0.7.3 (2026-11-03)
7
+
8
+ ### Added
9
+
10
+ - DataTable phone layout (below 640px): search and a "Filters (n)" button on one line, whose bottom sheet holds
11
+ every filter and the `toolbar` content, with Clear filters and "Show N records" in its footer; row count
12
+ and export on the line under it. New part
13
+ `DataTable.FilterSheet`, new labels `showResults` and `close`.
14
+ - DataTable column `priority: 'low'` hides the column below 640px; column `nowrap` keeps values such as plates on
15
+ one line; `stickyFirstColumn` keeps the first column in place while the table scrolls sideways.
16
+ - `Drawer` `side="bottom"`: a full-width bottom sheet.
17
+ - `Map.Root` `attributionCollapsed` starts the attribution as the info button. `Map.Legend` `size="sm"` is a
18
+ denser legend that scrolls past `--oui-map-legend-max-height`. `Map.BaseLayerSwitch` `variant="icon"` is one
19
+ button that cycles the base maps; new map label `baseLayer`.
20
+ - `FilterIcon` and `LayersIcon`.
21
+
22
+ ### Changed
23
+
24
+ - On touch screens (`pointer: coarse`) control heights grow to 40/44/48px (sm/md/lg), as do the mobile menu
25
+ button and the hit area of sortable table headers.
26
+ - `Grid` picks its column count from its own width instead of the screen's: up to `columns`, each at least
27
+ `minItemWidth` (new prop; `12rem`, or for 4–6 columns `11rem` and `9rem` on phones), stepping down to half the
28
+ columns before fewer. A 4–6 column KPI row keeps 2 columns on a phone, and a 2–3 column grid no longer stacks
29
+ below 900px when it has the room.
30
+ - `DescriptionList layout="grid"` uses a narrower column gap below 640px.
31
+ - `StatCard` is compact below 640px: smaller value, no icon tile.
32
+ - `ToggleGroup` `variant="outline"` wraps onto more rows instead of overflowing.
33
+ - Card header actions drop onto their own row when the title needs the width.
34
+ - Scrolling tab lists and tables fade the edge where content is cut off.
35
+ - A horizontal `Stepper` below 640px shows the current step ("2/4 · Date") over a segmented progress bar.
36
+ - A collapsed `Navbar` rail shows only the selected segment of a segmented control (a language switch).
37
+
38
+ ### Fixed
39
+
40
+ - On small screens, tapping a `NavbarGroup` in the navigation drawer opens its sub-links instead of closing the
41
+ drawer.
42
+ - `Map.Overlay` no longer blocks the zoom and expand buttons with its empty area; only its content takes clicks.
43
+ The overlay itself no longer scrolls: a legend in it shrinks and scrolls instead.
44
+
6
45
  ## 0.7.2 (2026-11-03)
7
46
 
8
47
  ### Added
@@ -179,10 +179,19 @@ export declare function PageHeader({ breadcrumbs, eyebrow, title, description, a
179
179
  export interface GridProps extends React.HTMLAttributes<HTMLDivElement> {
180
180
  /** Ref to the grid element. */
181
181
  ref?: React.Ref<HTMLDivElement>;
182
- /** Columns on wide screens; collapses to 2 below 1200px (for 4+) and 1 below 900px. */
182
+ /**
183
+ * Most columns, shown while each can be at least `minItemWidth` wide. As the grid's own width runs
184
+ * out it steps down to half the columns (4 → 2, 6 → 3), then to as many as fit. With the defaults a
185
+ * 4–6 column KPI row keeps 2 columns on a phone.
186
+ */
183
187
  columns?: 1 | 2 | 3 | 4 | 5 | 6;
188
+ /**
189
+ * Narrowest a column may get before the grid drops columns: any CSS length. Defaults to `12rem`; for
190
+ * 4–6 columns `11rem`, or `9rem` below 640px. Same as setting `--oui-grid-min-item-width`.
191
+ */
192
+ minItemWidth?: string;
184
193
  /** Space between grid cells. */
185
194
  gap?: 'sm' | 'md' | 'lg';
186
195
  }
187
- /** Responsive dashboard grid. */
188
- export declare function Grid({ columns, gap, className, ref, ...props }: GridProps): React.JSX.Element;
196
+ /** Responsive dashboard grid: up to `columns` equal columns, fewer when its own width cannot fit them. */
197
+ export declare function Grid({ columns, gap, minItemWidth, className, style, ref, ...props }: GridProps): React.JSX.Element;
@@ -864,7 +864,8 @@ function AppShell(t0) {
864
864
  let t14;
865
865
  if ($[43] === Symbol.for("react.memo_cache_sentinel")) {
866
866
  t14 = (event) => {
867
- if (event.target.closest("a, .oui-navbar__item")) setOpen(false);
867
+ const item = event.target.closest("a, .oui-navbar__item");
868
+ if (item && !item.matches("[data-has-children]")) setOpen(false);
868
869
  };
869
870
  $[43] = t14;
870
871
  } else t14 = $[43];
@@ -1143,54 +1144,72 @@ function PageHeader(t0) {
1143
1144
  } else t8 = $[31];
1144
1145
  return t8;
1145
1146
  }
1146
- /** Responsive dashboard grid. */
1147
+ /** Responsive dashboard grid: up to `columns` equal columns, fewer when its own width cannot fit them. */
1147
1148
  function Grid(t0) {
1148
- const $ = c(14);
1149
+ const $ = c(20);
1149
1150
  let className;
1151
+ let minItemWidth;
1150
1152
  let props;
1151
1153
  let ref;
1154
+ let style;
1152
1155
  let t1;
1153
1156
  let t2;
1154
1157
  if ($[0] !== t0) {
1155
- ({columns: t1, gap: t2, className, ref, ...props} = t0);
1158
+ ({columns: t1, gap: t2, minItemWidth, className, style, ref, ...props} = t0);
1156
1159
  $[0] = t0;
1157
1160
  $[1] = className;
1158
- $[2] = props;
1159
- $[3] = ref;
1160
- $[4] = t1;
1161
- $[5] = t2;
1161
+ $[2] = minItemWidth;
1162
+ $[3] = props;
1163
+ $[4] = ref;
1164
+ $[5] = style;
1165
+ $[6] = t1;
1166
+ $[7] = t2;
1162
1167
  } else {
1163
1168
  className = $[1];
1164
- props = $[2];
1165
- ref = $[3];
1166
- t1 = $[4];
1167
- t2 = $[5];
1169
+ minItemWidth = $[2];
1170
+ props = $[3];
1171
+ ref = $[4];
1172
+ style = $[5];
1173
+ t1 = $[6];
1174
+ t2 = $[7];
1168
1175
  }
1169
1176
  const columns = t1 === void 0 ? 3 : t1;
1170
1177
  const gap = t2 === void 0 ? "md" : t2;
1171
1178
  let t3;
1172
- if ($[6] !== className) {
1179
+ if ($[8] !== className) {
1173
1180
  t3 = cx("oui-grid", className);
1174
- $[6] = className;
1175
- $[7] = t3;
1176
- } else t3 = $[7];
1181
+ $[8] = className;
1182
+ $[9] = t3;
1183
+ } else t3 = $[9];
1177
1184
  let t4;
1178
- if ($[8] !== columns || $[9] !== gap || $[10] !== props || $[11] !== ref || $[12] !== t3) {
1179
- t4 = /* @__PURE__ */ jsx("div", {
1185
+ if ($[10] !== minItemWidth || $[11] !== style) {
1186
+ t4 = minItemWidth ? {
1187
+ "--oui-grid-min-item-width": minItemWidth,
1188
+ ...style
1189
+ } : style;
1190
+ $[10] = minItemWidth;
1191
+ $[11] = style;
1192
+ $[12] = t4;
1193
+ } else t4 = $[12];
1194
+ let t5;
1195
+ if ($[13] !== columns || $[14] !== gap || $[15] !== props || $[16] !== ref || $[17] !== t3 || $[18] !== t4) {
1196
+ t5 = /* @__PURE__ */ jsx("div", {
1180
1197
  ref,
1181
1198
  className: t3,
1182
1199
  "data-columns": columns,
1183
1200
  "data-gap": gap,
1201
+ style: t4,
1184
1202
  ...props
1185
1203
  });
1186
- $[8] = columns;
1187
- $[9] = gap;
1188
- $[10] = props;
1189
- $[11] = ref;
1190
- $[12] = t3;
1191
- $[13] = t4;
1192
- } else t4 = $[13];
1193
- return t4;
1204
+ $[13] = columns;
1205
+ $[14] = gap;
1206
+ $[15] = props;
1207
+ $[16] = ref;
1208
+ $[17] = t3;
1209
+ $[18] = t4;
1210
+ $[19] = t5;
1211
+ } else t5 = $[19];
1212
+ return t5;
1194
1213
  }
1195
1214
  //#endregion
1196
1215
  export { AppShell, Grid, Navbar, NavbarBrand, NavbarFooter, NavbarGroup, NavbarHeader, NavbarItem, NavbarSection, NavbarSectionLabel, PageHeader };
@@ -1 +1 @@
1
- {"version":3,"file":"AppShell.js","names":["React","Collapsible","BaseCollapsible","Dialog","BaseDialog","useRender","mergeProps","cx","createPrimitive","usePortalContainer","ChevronLeftIcon","ChevronRightIcon","MenuIcon","XIcon","NavbarVariant","NavbarState","variant","collapsed","peek","NavbarProps","ComponentProps","collapsible","defaultCollapsed","onCollapsedChange","expandOnHover","collapseLabel","expandLabel","NavbarCollapsedContext","createContext","NavbarDrawerContext","NavbarNestedContext","PinnedEntry","node","HTMLElement","icon","ReactNode","label","active","render","NavbarItemProps","props","Omit","PinnedRegistryContext","id","entry","Navbar","t0","$","_c","t1","t2","collapsedProp","t3","t4","t5","t6","children","ref","undefined","inDrawer","useContext","canCollapse","internal","setInternal","useState","pointerInside","setPointerInside","hovered","setHovered","t7","t8","timer","setTimeout","clearTimeout","useEffect","t9","Symbol","for","endHover","t10","toggle","t11","event","pointerType","onPointerEnter","t12","t13","state","t14","t15","t16","t17","className","onPointerLeave","t18","defaultTagName","element","t19","t20","NavbarHeader","NavbarFooter","NavbarSection","NavbarSectionLabel","NavbarBrandProps","logo","title","subtitle","NavbarBrand","NavbarItemState","badge","pinned","NavbarItem","nested","registry","register","useId","nodeRef","useRef","_className","style","_style","_title","rest","current","Ref","HTMLAnchorElement","hasActiveItem","Children","toArray","some","child","isValidElement","type","Fragment","NavbarGroup","NavbarGroupProps","HTMLAttributes","HTMLDivElement","open","defaultOpen","onOpenChange","openProp","hasActive","prevActive","setPrevActive","next","setOpen","MobileNavPosition","MoreTabPosition","AppShellProps","navbar","mobileBrand","mobileActions","mobileNavPosition","menuLabel","moreLabel","moreTabPosition","mainProps","MAX_PINNED","byDocumentOrder","a","b","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","PinnedTab","AppShell","drawer","_temp","container","Map","setPinned","prev","set","delete","hasTabs","moreTab","showTopBar","tabs","entries","sort","_temp2","slice","length","map","_temp3","tabbar","target","closest","closeOnNavigate","t21","t22","t23","t24","t25","t26","t27","t28","id_0","entry_0","createHandle","PageHeaderProps","breadcrumbs","eyebrow","description","actions","PageHeader","GridProps","columns","gap","Grid","_c","_Fragment","BaseCollapsible","BaseDialog"],"sources":["../../../src/components/app-shell/AppShell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible';\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { useRender } from '@base-ui/react/use-render';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { cx } from '../../utils/cx';\nimport { createPrimitive } from '../../utils/primitive';\nimport { usePortalContainer } from '../../utils/portal';\nimport { ChevronLeftIcon, ChevronRightIcon, MenuIcon, XIcon } from '../../icons';\n\n// ─── Navbar ─────────────────────────────────────────────────────────────────\n\nexport type NavbarVariant = 'inverse' | 'surface';\n\nexport type NavbarState = { variant: NavbarVariant; collapsed: boolean; peek: boolean };\n\nexport interface NavbarProps extends useRender.ComponentProps<'nav', NavbarState> {\n /** `inverse` (brand-colored, default) or `surface` (light panel). */\n variant?: NavbarVariant;\n /** Shows a toggle in the top right that shrinks the navbar to an icon rail. Defaults to `true`. */\n collapsible?: boolean;\n /** Controlled collapsed state. */\n collapsed?: boolean;\n /** Initial collapsed state when uncontrolled. */\n defaultCollapsed?: boolean;\n /** Called when the user collapses or expands the navbar. */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Temporarily opens a collapsed navbar while the mouse is over it. Defaults to `true`. */\n expandOnHover?: boolean;\n /** Accessible names for the icon-only toggle. */\n collapseLabel?: string;\n /** Accessible name of the toggle while collapsed. */\n expandLabel?: string;\n}\n\nconst NavbarCollapsedContext = React.createContext(false);\n// True inside the AppShell drawer, where the navbar always shows in full.\nconst NavbarDrawerContext = React.createContext(false);\n// True for items inside a `NavbarGroup` panel: they are indented and drop their icon.\nconst NavbarNestedContext = React.createContext(false);\n\ntype PinnedEntry = {\n node: HTMLElement | null;\n icon: React.ReactNode;\n label: React.ReactNode;\n active: boolean;\n render: NavbarItemProps['render'];\n props: Omit<NavbarItemProps, 'className' | 'style' | 'title'>;\n};\n// Provided by AppShell: pinned NavbarItems register here to appear in the mobile tab bar.\nconst PinnedRegistryContext = React.createContext<((id: string, entry: PinnedEntry | null) => void) | null>(null);\n\n/**\n * Collapsible side navigation. Use inside `AppShell`. Compose with `NavbarHeader` (`NavbarBrand`),\n * `NavbarSection` (`NavbarSectionLabel`, `NavbarItem`) and `NavbarFooter`.\n */\nexport function Navbar({\n variant = 'inverse',\n collapsible = true,\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n expandOnHover = true,\n collapseLabel = 'Collapse',\n expandLabel = 'Expand',\n render,\n children,\n ref,\n ...props\n}: NavbarProps) {\n const inDrawer = React.useContext(NavbarDrawerContext);\n const canCollapse = collapsible && !inDrawer;\n const [internal, setInternal] = React.useState(defaultCollapsed);\n const collapsed = canCollapse && (collapsedProp ?? internal);\n const label = collapsed ? expandLabel : collapseLabel;\n\n // Hover peek: shown in full once the mouse has rested over a collapsed navbar.\n const [pointerInside, setPointerInside] = React.useState(false);\n const [hovered, setHovered] = React.useState(false);\n React.useEffect(() => {\n if (!pointerInside) return;\n const timer = setTimeout(() => setHovered(true), 120);\n return () => clearTimeout(timer);\n }, [pointerInside]);\n const peek = collapsed && expandOnHover && hovered;\n\n const endHover = () => {\n setPointerInside(false);\n setHovered(false);\n };\n\n const toggle = () => {\n // Collapsing with the mouse still inside must not peek straight back open.\n endHover();\n if (collapsedProp === undefined) setInternal(!collapsed);\n onCollapsedChange?.(!collapsed);\n };\n\n const onPointerEnter = (event: React.PointerEvent) => {\n if (event.pointerType === 'mouse') setPointerInside(true);\n };\n\n const state: NavbarState = { variant, collapsed: collapsed && !peek, peek };\n const element = useRender({\n defaultTagName: 'nav',\n render,\n ref,\n state,\n props: mergeProps<'nav'>(\n {\n className: 'oui-navbar',\n onPointerEnter: collapsed && expandOnHover ? onPointerEnter : undefined,\n onPointerLeave: collapsed && expandOnHover ? endHover : undefined,\n children: (\n <>\n {canCollapse && (\n <button\n type=\"button\"\n className=\"oui-navbar__toggle\"\n aria-label={label}\n aria-expanded={!collapsed}\n title={label}\n onClick={toggle}\n >\n <ChevronLeftIcon />\n </button>\n )}\n {children}\n </>\n ),\n },\n props,\n ),\n });\n return <NavbarCollapsedContext value={collapsed && !peek}>{element}</NavbarCollapsedContext>;\n}\n\nexport const NavbarHeader = createPrimitive('div', 'oui-navbar__header', 'NavbarHeader');\nexport const NavbarFooter = createPrimitive('div', 'oui-navbar__footer', 'NavbarFooter');\nexport const NavbarSection = createPrimitive('div', 'oui-navbar__section', 'NavbarSection');\nexport const NavbarSectionLabel = createPrimitive('div', 'oui-navbar__section-label', 'NavbarSectionLabel');\n\nexport interface NavbarBrandProps extends Omit<useRender.ComponentProps<'div'>, 'title'> {\n /** Logo or icon shown before the title; stays visible when the navbar is collapsed. */\n logo?: React.ReactNode;\n /** Product or organization name. */\n title: React.ReactNode;\n /** Smaller line under the title. */\n subtitle?: React.ReactNode;\n}\n\n/** Logo, title and subtitle block for the top of a `Navbar`. */\nexport function NavbarBrand({ logo, title, subtitle, render, ref, ...props }: NavbarBrandProps) {\n return useRender({\n defaultTagName: 'div',\n render,\n ref,\n props: mergeProps<'div'>(\n {\n className: 'oui-navbar__brand',\n children: (\n <>\n {logo && <span className=\"oui-navbar__logo\">{logo}</span>}\n <span className=\"oui-navbar__brand-text\">\n <span className=\"oui-navbar__brand-title\">{title}</span>\n {subtitle && <span className=\"oui-navbar__brand-subtitle\">{subtitle}</span>}\n </span>\n </>\n ),\n },\n props,\n ),\n });\n}\n\nexport type NavbarItemState = { active: boolean };\n\nexport interface NavbarItemProps extends useRender.ComponentProps<'a', NavbarItemState> {\n /** Icon shown before the label; it stays visible when the navbar is collapsed to a rail. Not shown inside a `NavbarGroup`. */\n icon?: React.ReactNode;\n /** Marks the current page (sets aria-current). Also opens the surrounding `NavbarGroup`. */\n active?: boolean;\n /** Trailing content such as a count badge. */\n badge?: React.ReactNode;\n /**\n * Also shows the item in the `AppShell` mobile tab bar (icon and label). Pin up to four items; the\n * first four in navbar order are used. Has no effect outside an `AppShell`.\n */\n pinned?: boolean;\n}\n\n/**\n * Navigation link. Renders an `<a>`; use `render={<Link to=\"…\" />}` for a\n * router link or `render={<button />}` for an action. Inside a `NavbarGroup` it becomes an indented sub-link.\n */\nexport function NavbarItem({\n icon,\n active = false,\n badge,\n pinned = false,\n render,\n children,\n ref,\n ...props\n}: NavbarItemProps) {\n const collapsed = React.useContext(NavbarCollapsedContext);\n const nested = React.useContext(NavbarNestedContext);\n const inDrawer = React.useContext(NavbarDrawerContext);\n const registry = React.useContext(PinnedRegistryContext);\n const register = pinned && !inDrawer ? registry : null;\n const id = React.useId();\n const nodeRef = React.useRef<HTMLElement>(null);\n\n // Keep the tab bar copy in sync; the second effect removes it when unpinned or unmounted.\n React.useEffect(() => {\n if (!register) return;\n const { className: _className, style: _style, title: _title, ...rest } = props;\n register(id, { node: nodeRef.current, icon, label: children, active, render, props: rest });\n });\n React.useEffect(() => {\n if (register) return () => register(id, null);\n }, [register, id]);\n\n const state: NavbarItemState = { active };\n return useRender({\n defaultTagName: 'a',\n render,\n ref: [ref, nodeRef] as React.Ref<HTMLAnchorElement>[],\n state,\n props: mergeProps<'a'>(\n {\n className: 'oui-navbar__item',\n 'aria-current': active ? 'page' : undefined,\n title: collapsed && typeof children === 'string' ? children : undefined,\n children: (\n <>\n {icon && !nested && <span className=\"oui-navbar__item-icon\">{icon}</span>}\n <span className=\"oui-navbar__item-label\">{children}</span>\n {badge != null && <span className=\"oui-navbar__item-badge\">{badge}</span>}\n </>\n ),\n },\n props,\n ),\n });\n}\n\nfunction hasActiveItem(children: React.ReactNode): boolean {\n return React.Children.toArray(children).some(\n (child) =>\n React.isValidElement<{ active?: boolean; children?: React.ReactNode }>(child) &&\n (child.props.active === true ||\n ((child.type === React.Fragment || child.type === NavbarGroup) && hasActiveItem(child.props.children))),\n );\n}\n\nexport interface NavbarGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Ref to the group's root element. */\n ref?: React.Ref<HTMLDivElement>;\n /** Text of the parent row. A string also becomes its tooltip on the collapsed rail. */\n label: React.ReactNode;\n /** Icon of the parent row; it stays visible when the navbar is collapsed to a rail. */\n icon?: React.ReactNode;\n /** Trailing content of the parent row, such as a count badge. */\n badge?: React.ReactNode;\n /** Controlled open state. Takes over from the automatic opening on an active child. */\n open?: boolean;\n /**\n * Initial open state when uncontrolled. Whenever a child item becomes `active`, the group opens.\n * @default true when a child item is active\n */\n defaultOpen?: boolean;\n /** Called when the user opens or closes the group. */\n onOpenChange?: (open: boolean) => void;\n /** Sub-links: `NavbarItem` elements (directly or in fragments), shown indented and without icons. */\n children?: React.ReactNode;\n}\n\n/**\n * Expandable parent row in a `Navbar` with nested `NavbarItem` sub-links. Place it in a `NavbarSection`\n * next to other items. On a collapsed rail the sub-links are hidden and the parent shows as active when\n * one of them is; the hover peek shows the full tree.\n *\n * @example\n * <NavbarSection>\n * <NavbarGroup icon={<Truck />} label=\"Fleet\">\n * <NavbarItem href=\"/fleet/vehicles\" active>Vehicles</NavbarItem>\n * <NavbarItem href=\"/fleet/drivers\">Drivers</NavbarItem>\n * </NavbarGroup>\n * </NavbarSection>\n */\nexport function NavbarGroup({\n label,\n icon,\n badge,\n open: openProp,\n defaultOpen,\n onOpenChange,\n className,\n children,\n ref,\n ...props\n}: NavbarGroupProps) {\n const collapsed = React.useContext(NavbarCollapsedContext);\n const hasActive = hasActiveItem(children);\n const [internal, setInternal] = React.useState(defaultOpen ?? hasActive);\n // Open when navigation lands on one of the sub-links.\n const [prevActive, setPrevActive] = React.useState(hasActive);\n if (hasActive !== prevActive) {\n setPrevActive(hasActive);\n if (hasActive) setInternal(true);\n }\n const open = openProp ?? internal;\n\n const setOpen = (next: boolean) => {\n if (openProp === undefined) setInternal(next);\n onOpenChange?.(next);\n };\n\n return (\n <BaseCollapsible.Root\n ref={ref}\n className={cx('oui-navbar__group', className)}\n open={open}\n onOpenChange={setOpen}\n data-open={open ? '' : undefined}\n {...props}\n >\n <BaseCollapsible.Trigger\n className=\"oui-navbar__item\"\n data-has-children=\"\"\n data-open={open ? '' : undefined}\n // The parent stands in for a hidden active child.\n data-active={hasActive && (collapsed || !open) ? '' : undefined}\n title={collapsed && typeof label === 'string' ? label : undefined}\n >\n {icon && <span className=\"oui-navbar__item-icon\">{icon}</span>}\n <span className=\"oui-navbar__item-label\">{label}</span>\n {badge != null && <span className=\"oui-navbar__item-badge\">{badge}</span>}\n <ChevronRightIcon className=\"oui-navbar__item-chevron\" />\n </BaseCollapsible.Trigger>\n {/* Kept mounted so pinned sub-links stay registered for the mobile tab bar while closed. */}\n <BaseCollapsible.Panel className=\"oui-navbar__group-panel\" keepMounted>\n <div className=\"oui-navbar__group-items\">\n <NavbarNestedContext value={true}>{children}</NavbarNestedContext>\n </div>\n </BaseCollapsible.Panel>\n </BaseCollapsible.Root>\n );\n}\n\n// ─── App shell ───────────────────────────────────────────────────────────────\n\nexport type MobileNavPosition = 'bottom' | 'top';\n\nexport type MoreTabPosition = 'start' | 'end';\n\nexport interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Ref to the shell's root element. */\n ref?: React.Ref<HTMLDivElement>;\n /** Navbar content (usually a `<Navbar>`). Rendered in a drawer on small screens. */\n navbar: React.ReactNode;\n /** Brand shown in the mobile top bar. */\n mobileBrand?: React.ReactNode;\n /** Extra content on the right of the mobile top bar. */\n mobileActions?: React.ReactNode;\n /**\n * Where small screens show the tab bar of pinned `NavbarItem`s: below or above the main area. Both look\n * the same; the \"More\" slot (see `moreTabPosition`) opens the navbar drawer. The top bar with `mobileBrand` and\n * `mobileActions` only appears when one of them is set. Without pinned items, a top bar with a menu\n * button is shown instead.\n */\n mobileNavPosition?: MobileNavPosition;\n /** Accessible name of the button that opens the navigation drawer on small screens. */\n menuLabel?: string;\n /** Label of the tab-bar slot that opens the navigation drawer. */\n moreLabel?: string;\n /** Whether the \"More\" slot comes before or after the pinned items in the tab bar. */\n moreTabPosition?: MoreTabPosition;\n /** Props for the scrolling `<main>` element. */\n mainProps?: React.HTMLAttributes<HTMLElement>;\n}\n\nconst MAX_PINNED = 4;\n\nfunction byDocumentOrder(a: PinnedEntry, b: PinnedEntry) {\n if (!a.node || !b.node) return 0;\n return a.node.compareDocumentPosition(b.node) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n}\n\nfunction PinnedTab({ entry }: { entry: PinnedEntry }) {\n const state: NavbarItemState = { active: entry.active };\n return useRender({\n defaultTagName: 'a',\n render: entry.render,\n state,\n props: mergeProps<'a'>(\n {\n className: 'oui-app-shell__tab',\n 'aria-current': entry.active ? 'page' : undefined,\n title: typeof entry.label === 'string' ? entry.label : undefined,\n children: (\n <>\n <span className=\"oui-app-shell__tab-icon\">{entry.icon}</span>\n <span className=\"oui-app-shell__tab-label\">{entry.label}</span>\n </>\n ),\n },\n entry.props as React.ComponentProps<'a'>,\n ),\n });\n}\n\n/**\n * Full-height layout with a fixed navbar and an internally scrolling main\n * area. Below 900px the navbar moves into a slide-in drawer, and `NavbarItem`s marked `pinned` show in a\n * tab bar (see `mobileNavPosition`).\n * Customize width with `--oui-navbar-width` and `--oui-navbar-collapsed-width`.\n *\n * @example\n * <AppShell\n * mobileBrand=\"OptiControl\"\n * navbar={\n * <Navbar>\n * <NavbarSection>\n * <NavbarItem href=\"/\" icon={<Home />} active pinned>Overview</NavbarItem>\n * <NavbarItem href=\"/fleet\" icon={<Truck />} pinned>Fleet</NavbarItem>\n * </NavbarSection>\n * </Navbar>\n * }\n * >\n * <PageHeader title=\"Overview\" />\n * </AppShell>\n */\nexport function AppShell({\n navbar,\n mobileBrand,\n mobileActions,\n mobileNavPosition = 'bottom',\n menuLabel = 'Open navigation',\n moreLabel = 'More',\n moreTabPosition = 'start',\n mainProps,\n className,\n children,\n ref,\n ...props\n}: AppShellProps) {\n const [open, setOpen] = React.useState(false);\n // Detached triggers keep page content outside the drawer's Root; otherwise every\n // dialog in the page counts as nested and Base UI drops its backdrop.\n const [drawer] = React.useState(() => BaseDialog.createHandle());\n const container = usePortalContainer();\n\n const [pinned, setPinned] = React.useState<ReadonlyMap<string, PinnedEntry>>(new Map());\n // Must stay referentially stable: items re-register on every render.\n const [register] = React.useState(() => (id: string, entry: PinnedEntry | null) => {\n setPinned((prev) => {\n const next = new Map(prev);\n if (entry) next.set(id, entry);\n else next.delete(id);\n return next;\n });\n });\n const tabs = [...pinned.entries()].sort(([, a], [, b]) => byDocumentOrder(a, b)).slice(0, MAX_PINNED);\n const hasTabs = tabs.length > 0;\n const showTopBar = !hasTabs || mobileBrand != null || mobileActions != null;\n\n const moreTab = (\n <BaseDialog.Trigger handle={drawer} className=\"oui-app-shell__tab\">\n <span className=\"oui-app-shell__tab-icon\">\n <MenuIcon />\n </span>\n <span className=\"oui-app-shell__tab-label\">{moreLabel}</span>\n </BaseDialog.Trigger>\n );\n const tabbar = (\n <nav className=\"oui-app-shell__tabbar\" data-position={mobileNavPosition} aria-label=\"Quick navigation\">\n {moreTabPosition === 'start' && moreTab}\n {tabs.map(([id, entry]) => (\n <PinnedTab key={id} entry={entry} />\n ))}\n {moreTabPosition === 'end' && moreTab}\n </nav>\n );\n\n const closeOnNavigate = (event: React.MouseEvent) => {\n if ((event.target as HTMLElement).closest('a, .oui-navbar__item')) setOpen(false);\n };\n\n return (\n <div ref={ref} className={cx('oui-app-shell', className)} {...props}>\n <div className=\"oui-app-shell__navbar\">\n <PinnedRegistryContext value={register}>{navbar}</PinnedRegistryContext>\n </div>\n\n {showTopBar && (\n <header className=\"oui-app-shell__mobile-bar\">\n {!hasTabs && (\n <BaseDialog.Trigger handle={drawer} className=\"oui-app-shell__menu-button\" aria-label={menuLabel}>\n <MenuIcon />\n </BaseDialog.Trigger>\n )}\n <div className=\"oui-app-shell__mobile-brand\">{mobileBrand}</div>\n {mobileActions}\n </header>\n )}\n\n {hasTabs && mobileNavPosition === 'top' && tabbar}\n\n <main {...mainProps} className={cx('oui-app-shell__main', mainProps?.className)}>\n {children}\n </main>\n\n {hasTabs && mobileNavPosition === 'bottom' && tabbar}\n\n <BaseDialog.Root handle={drawer} open={open} onOpenChange={setOpen}>\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop className=\"oui-dialog__backdrop\" />\n <BaseDialog.Popup className=\"oui-app-shell__drawer\" aria-label=\"Navigation\" onClick={closeOnNavigate}>\n <BaseDialog.Close className=\"oui-app-shell__drawer-close\" aria-label=\"Close navigation\">\n <XIcon />\n </BaseDialog.Close>\n <NavbarDrawerContext value={true}>{navbar}</NavbarDrawerContext>\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n </div>\n );\n}\n\n// ─── Page layout helpers ─────────────────────────────────────────────────────\n\nexport interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n /** Ref to the `<header>` element. */\n ref?: React.Ref<HTMLElement>;\n /** Trail shown above the title, usually `<Breadcrumbs>`. */\n breadcrumbs?: React.ReactNode;\n /** Small label above the title. */\n eyebrow?: React.ReactNode;\n /** Page title, rendered as the page `<h1>`. */\n title: React.ReactNode;\n /** Supporting text under the title. */\n description?: React.ReactNode;\n /** Buttons or controls aligned to the right of the title. */\n actions?: React.ReactNode;\n}\n\n/** Page title block with optional breadcrumbs, eyebrow, description and actions. */\nexport function PageHeader({\n breadcrumbs,\n eyebrow,\n title,\n description,\n actions,\n className,\n ref,\n ...props\n}: PageHeaderProps) {\n return (\n <header ref={ref} className={cx('oui-page-header', className)} {...props}>\n <div className=\"oui-page-header__text\">\n {breadcrumbs && <div className=\"oui-page-header__breadcrumbs\">{breadcrumbs}</div>}\n {eyebrow && <span className=\"oui-eyebrow\">{eyebrow}</span>}\n <h1 className=\"oui-page-header__title\">{title}</h1>\n {description && <p className=\"oui-page-header__description\">{description}</p>}\n </div>\n {actions && <div className=\"oui-page-header__actions\">{actions}</div>}\n </header>\n );\n}\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Ref to the grid element. */\n ref?: React.Ref<HTMLDivElement>;\n /** Columns on wide screens; collapses to 2 below 1200px (for 4+) and 1 below 900px. */\n columns?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Space between grid cells. */\n gap?: 'sm' | 'md' | 'lg';\n}\n\n/** Responsive dashboard grid. */\nexport function Grid({ columns = 3, gap = 'md', className, ref, ...props }: GridProps) {\n return <div ref={ref} className={cx('oui-grid', className)} data-columns={columns} data-gap={gap} {...props} />;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AppShell.js","names":["React","Collapsible","BaseCollapsible","Dialog","BaseDialog","useRender","mergeProps","cx","createPrimitive","usePortalContainer","ChevronLeftIcon","ChevronRightIcon","MenuIcon","XIcon","NavbarVariant","NavbarState","variant","collapsed","peek","NavbarProps","ComponentProps","collapsible","defaultCollapsed","onCollapsedChange","expandOnHover","collapseLabel","expandLabel","NavbarCollapsedContext","createContext","NavbarDrawerContext","NavbarNestedContext","PinnedEntry","node","HTMLElement","icon","ReactNode","label","active","render","NavbarItemProps","props","Omit","PinnedRegistryContext","id","entry","Navbar","t0","$","_c","t1","t2","collapsedProp","t3","t4","t5","t6","children","ref","undefined","inDrawer","useContext","canCollapse","internal","setInternal","useState","pointerInside","setPointerInside","hovered","setHovered","t7","t8","timer","setTimeout","clearTimeout","useEffect","t9","Symbol","for","endHover","t10","toggle","t11","event","pointerType","onPointerEnter","t12","t13","state","t14","t15","t16","t17","className","onPointerLeave","t18","defaultTagName","element","t19","t20","NavbarHeader","NavbarFooter","NavbarSection","NavbarSectionLabel","NavbarBrandProps","logo","title","subtitle","NavbarBrand","NavbarItemState","badge","pinned","NavbarItem","nested","registry","register","useId","nodeRef","useRef","_className","style","_style","_title","rest","current","Ref","HTMLAnchorElement","hasActiveItem","Children","toArray","some","child","isValidElement","type","Fragment","NavbarGroup","NavbarGroupProps","HTMLAttributes","HTMLDivElement","open","defaultOpen","onOpenChange","openProp","hasActive","prevActive","setPrevActive","next","setOpen","MobileNavPosition","MoreTabPosition","AppShellProps","navbar","mobileBrand","mobileActions","mobileNavPosition","menuLabel","moreLabel","moreTabPosition","mainProps","MAX_PINNED","byDocumentOrder","a","b","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","PinnedTab","AppShell","drawer","_temp","container","Map","setPinned","prev","set","delete","hasTabs","moreTab","showTopBar","tabs","entries","sort","_temp2","slice","length","map","_temp3","tabbar","item","target","closest","matches","closeOnNavigate","t21","t22","t23","t24","t25","t26","t27","t28","id_0","entry_0","createHandle","PageHeaderProps","breadcrumbs","eyebrow","description","actions","PageHeader","GridProps","columns","minItemWidth","gap","Grid","CSSProperties","_c","_Fragment","BaseCollapsible","BaseDialog"],"sources":["../../../src/components/app-shell/AppShell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible';\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { useRender } from '@base-ui/react/use-render';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { cx } from '../../utils/cx';\nimport { createPrimitive } from '../../utils/primitive';\nimport { usePortalContainer } from '../../utils/portal';\nimport { ChevronLeftIcon, ChevronRightIcon, MenuIcon, XIcon } from '../../icons';\n\n// ─── Navbar ─────────────────────────────────────────────────────────────────\n\nexport type NavbarVariant = 'inverse' | 'surface';\n\nexport type NavbarState = { variant: NavbarVariant; collapsed: boolean; peek: boolean };\n\nexport interface NavbarProps extends useRender.ComponentProps<'nav', NavbarState> {\n /** `inverse` (brand-colored, default) or `surface` (light panel). */\n variant?: NavbarVariant;\n /** Shows a toggle in the top right that shrinks the navbar to an icon rail. Defaults to `true`. */\n collapsible?: boolean;\n /** Controlled collapsed state. */\n collapsed?: boolean;\n /** Initial collapsed state when uncontrolled. */\n defaultCollapsed?: boolean;\n /** Called when the user collapses or expands the navbar. */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Temporarily opens a collapsed navbar while the mouse is over it. Defaults to `true`. */\n expandOnHover?: boolean;\n /** Accessible names for the icon-only toggle. */\n collapseLabel?: string;\n /** Accessible name of the toggle while collapsed. */\n expandLabel?: string;\n}\n\nconst NavbarCollapsedContext = React.createContext(false);\n// True inside the AppShell drawer, where the navbar always shows in full.\nconst NavbarDrawerContext = React.createContext(false);\n// True for items inside a `NavbarGroup` panel: they are indented and drop their icon.\nconst NavbarNestedContext = React.createContext(false);\n\ntype PinnedEntry = {\n node: HTMLElement | null;\n icon: React.ReactNode;\n label: React.ReactNode;\n active: boolean;\n render: NavbarItemProps['render'];\n props: Omit<NavbarItemProps, 'className' | 'style' | 'title'>;\n};\n// Provided by AppShell: pinned NavbarItems register here to appear in the mobile tab bar.\nconst PinnedRegistryContext = React.createContext<((id: string, entry: PinnedEntry | null) => void) | null>(null);\n\n/**\n * Collapsible side navigation. Use inside `AppShell`. Compose with `NavbarHeader` (`NavbarBrand`),\n * `NavbarSection` (`NavbarSectionLabel`, `NavbarItem`) and `NavbarFooter`.\n */\nexport function Navbar({\n variant = 'inverse',\n collapsible = true,\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n expandOnHover = true,\n collapseLabel = 'Collapse',\n expandLabel = 'Expand',\n render,\n children,\n ref,\n ...props\n}: NavbarProps) {\n const inDrawer = React.useContext(NavbarDrawerContext);\n const canCollapse = collapsible && !inDrawer;\n const [internal, setInternal] = React.useState(defaultCollapsed);\n const collapsed = canCollapse && (collapsedProp ?? internal);\n const label = collapsed ? expandLabel : collapseLabel;\n\n // Hover peek: shown in full once the mouse has rested over a collapsed navbar.\n const [pointerInside, setPointerInside] = React.useState(false);\n const [hovered, setHovered] = React.useState(false);\n React.useEffect(() => {\n if (!pointerInside) return;\n const timer = setTimeout(() => setHovered(true), 120);\n return () => clearTimeout(timer);\n }, [pointerInside]);\n const peek = collapsed && expandOnHover && hovered;\n\n const endHover = () => {\n setPointerInside(false);\n setHovered(false);\n };\n\n const toggle = () => {\n // Collapsing with the mouse still inside must not peek straight back open.\n endHover();\n if (collapsedProp === undefined) setInternal(!collapsed);\n onCollapsedChange?.(!collapsed);\n };\n\n const onPointerEnter = (event: React.PointerEvent) => {\n if (event.pointerType === 'mouse') setPointerInside(true);\n };\n\n const state: NavbarState = { variant, collapsed: collapsed && !peek, peek };\n const element = useRender({\n defaultTagName: 'nav',\n render,\n ref,\n state,\n props: mergeProps<'nav'>(\n {\n className: 'oui-navbar',\n onPointerEnter: collapsed && expandOnHover ? onPointerEnter : undefined,\n onPointerLeave: collapsed && expandOnHover ? endHover : undefined,\n children: (\n <>\n {canCollapse && (\n <button\n type=\"button\"\n className=\"oui-navbar__toggle\"\n aria-label={label}\n aria-expanded={!collapsed}\n title={label}\n onClick={toggle}\n >\n <ChevronLeftIcon />\n </button>\n )}\n {children}\n </>\n ),\n },\n props,\n ),\n });\n return <NavbarCollapsedContext value={collapsed && !peek}>{element}</NavbarCollapsedContext>;\n}\n\nexport const NavbarHeader = createPrimitive('div', 'oui-navbar__header', 'NavbarHeader');\nexport const NavbarFooter = createPrimitive('div', 'oui-navbar__footer', 'NavbarFooter');\nexport const NavbarSection = createPrimitive('div', 'oui-navbar__section', 'NavbarSection');\nexport const NavbarSectionLabel = createPrimitive('div', 'oui-navbar__section-label', 'NavbarSectionLabel');\n\nexport interface NavbarBrandProps extends Omit<useRender.ComponentProps<'div'>, 'title'> {\n /** Logo or icon shown before the title; stays visible when the navbar is collapsed. */\n logo?: React.ReactNode;\n /** Product or organization name. */\n title: React.ReactNode;\n /** Smaller line under the title. */\n subtitle?: React.ReactNode;\n}\n\n/** Logo, title and subtitle block for the top of a `Navbar`. */\nexport function NavbarBrand({ logo, title, subtitle, render, ref, ...props }: NavbarBrandProps) {\n return useRender({\n defaultTagName: 'div',\n render,\n ref,\n props: mergeProps<'div'>(\n {\n className: 'oui-navbar__brand',\n children: (\n <>\n {logo && <span className=\"oui-navbar__logo\">{logo}</span>}\n <span className=\"oui-navbar__brand-text\">\n <span className=\"oui-navbar__brand-title\">{title}</span>\n {subtitle && <span className=\"oui-navbar__brand-subtitle\">{subtitle}</span>}\n </span>\n </>\n ),\n },\n props,\n ),\n });\n}\n\nexport type NavbarItemState = { active: boolean };\n\nexport interface NavbarItemProps extends useRender.ComponentProps<'a', NavbarItemState> {\n /** Icon shown before the label; it stays visible when the navbar is collapsed to a rail. Not shown inside a `NavbarGroup`. */\n icon?: React.ReactNode;\n /** Marks the current page (sets aria-current). Also opens the surrounding `NavbarGroup`. */\n active?: boolean;\n /** Trailing content such as a count badge. */\n badge?: React.ReactNode;\n /**\n * Also shows the item in the `AppShell` mobile tab bar (icon and label). Pin up to four items; the\n * first four in navbar order are used. Has no effect outside an `AppShell`.\n */\n pinned?: boolean;\n}\n\n/**\n * Navigation link. Renders an `<a>`; use `render={<Link to=\"…\" />}` for a\n * router link or `render={<button />}` for an action. Inside a `NavbarGroup` it becomes an indented sub-link.\n */\nexport function NavbarItem({\n icon,\n active = false,\n badge,\n pinned = false,\n render,\n children,\n ref,\n ...props\n}: NavbarItemProps) {\n const collapsed = React.useContext(NavbarCollapsedContext);\n const nested = React.useContext(NavbarNestedContext);\n const inDrawer = React.useContext(NavbarDrawerContext);\n const registry = React.useContext(PinnedRegistryContext);\n const register = pinned && !inDrawer ? registry : null;\n const id = React.useId();\n const nodeRef = React.useRef<HTMLElement>(null);\n\n // Keep the tab bar copy in sync; the second effect removes it when unpinned or unmounted.\n React.useEffect(() => {\n if (!register) return;\n const { className: _className, style: _style, title: _title, ...rest } = props;\n register(id, { node: nodeRef.current, icon, label: children, active, render, props: rest });\n });\n React.useEffect(() => {\n if (register) return () => register(id, null);\n }, [register, id]);\n\n const state: NavbarItemState = { active };\n return useRender({\n defaultTagName: 'a',\n render,\n ref: [ref, nodeRef] as React.Ref<HTMLAnchorElement>[],\n state,\n props: mergeProps<'a'>(\n {\n className: 'oui-navbar__item',\n 'aria-current': active ? 'page' : undefined,\n title: collapsed && typeof children === 'string' ? children : undefined,\n children: (\n <>\n {icon && !nested && <span className=\"oui-navbar__item-icon\">{icon}</span>}\n <span className=\"oui-navbar__item-label\">{children}</span>\n {badge != null && <span className=\"oui-navbar__item-badge\">{badge}</span>}\n </>\n ),\n },\n props,\n ),\n });\n}\n\nfunction hasActiveItem(children: React.ReactNode): boolean {\n return React.Children.toArray(children).some(\n (child) =>\n React.isValidElement<{ active?: boolean; children?: React.ReactNode }>(child) &&\n (child.props.active === true ||\n ((child.type === React.Fragment || child.type === NavbarGroup) && hasActiveItem(child.props.children))),\n );\n}\n\nexport interface NavbarGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Ref to the group's root element. */\n ref?: React.Ref<HTMLDivElement>;\n /** Text of the parent row. A string also becomes its tooltip on the collapsed rail. */\n label: React.ReactNode;\n /** Icon of the parent row; it stays visible when the navbar is collapsed to a rail. */\n icon?: React.ReactNode;\n /** Trailing content of the parent row, such as a count badge. */\n badge?: React.ReactNode;\n /** Controlled open state. Takes over from the automatic opening on an active child. */\n open?: boolean;\n /**\n * Initial open state when uncontrolled. Whenever a child item becomes `active`, the group opens.\n * @default true when a child item is active\n */\n defaultOpen?: boolean;\n /** Called when the user opens or closes the group. */\n onOpenChange?: (open: boolean) => void;\n /** Sub-links: `NavbarItem` elements (directly or in fragments), shown indented and without icons. */\n children?: React.ReactNode;\n}\n\n/**\n * Expandable parent row in a `Navbar` with nested `NavbarItem` sub-links. Place it in a `NavbarSection`\n * next to other items. On a collapsed rail the sub-links are hidden and the parent shows as active when\n * one of them is; the hover peek shows the full tree.\n *\n * @example\n * <NavbarSection>\n * <NavbarGroup icon={<Truck />} label=\"Fleet\">\n * <NavbarItem href=\"/fleet/vehicles\" active>Vehicles</NavbarItem>\n * <NavbarItem href=\"/fleet/drivers\">Drivers</NavbarItem>\n * </NavbarGroup>\n * </NavbarSection>\n */\nexport function NavbarGroup({\n label,\n icon,\n badge,\n open: openProp,\n defaultOpen,\n onOpenChange,\n className,\n children,\n ref,\n ...props\n}: NavbarGroupProps) {\n const collapsed = React.useContext(NavbarCollapsedContext);\n const hasActive = hasActiveItem(children);\n const [internal, setInternal] = React.useState(defaultOpen ?? hasActive);\n // Open when navigation lands on one of the sub-links.\n const [prevActive, setPrevActive] = React.useState(hasActive);\n if (hasActive !== prevActive) {\n setPrevActive(hasActive);\n if (hasActive) setInternal(true);\n }\n const open = openProp ?? internal;\n\n const setOpen = (next: boolean) => {\n if (openProp === undefined) setInternal(next);\n onOpenChange?.(next);\n };\n\n return (\n <BaseCollapsible.Root\n ref={ref}\n className={cx('oui-navbar__group', className)}\n open={open}\n onOpenChange={setOpen}\n data-open={open ? '' : undefined}\n {...props}\n >\n <BaseCollapsible.Trigger\n className=\"oui-navbar__item\"\n data-has-children=\"\"\n data-open={open ? '' : undefined}\n // The parent stands in for a hidden active child.\n data-active={hasActive && (collapsed || !open) ? '' : undefined}\n title={collapsed && typeof label === 'string' ? label : undefined}\n >\n {icon && <span className=\"oui-navbar__item-icon\">{icon}</span>}\n <span className=\"oui-navbar__item-label\">{label}</span>\n {badge != null && <span className=\"oui-navbar__item-badge\">{badge}</span>}\n <ChevronRightIcon className=\"oui-navbar__item-chevron\" />\n </BaseCollapsible.Trigger>\n {/* Kept mounted so pinned sub-links stay registered for the mobile tab bar while closed. */}\n <BaseCollapsible.Panel className=\"oui-navbar__group-panel\" keepMounted>\n <div className=\"oui-navbar__group-items\">\n <NavbarNestedContext value={true}>{children}</NavbarNestedContext>\n </div>\n </BaseCollapsible.Panel>\n </BaseCollapsible.Root>\n );\n}\n\n// ─── App shell ───────────────────────────────────────────────────────────────\n\nexport type MobileNavPosition = 'bottom' | 'top';\n\nexport type MoreTabPosition = 'start' | 'end';\n\nexport interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Ref to the shell's root element. */\n ref?: React.Ref<HTMLDivElement>;\n /** Navbar content (usually a `<Navbar>`). Rendered in a drawer on small screens. */\n navbar: React.ReactNode;\n /** Brand shown in the mobile top bar. */\n mobileBrand?: React.ReactNode;\n /** Extra content on the right of the mobile top bar. */\n mobileActions?: React.ReactNode;\n /**\n * Where small screens show the tab bar of pinned `NavbarItem`s: below or above the main area. Both look\n * the same; the \"More\" slot (see `moreTabPosition`) opens the navbar drawer. The top bar with `mobileBrand` and\n * `mobileActions` only appears when one of them is set. Without pinned items, a top bar with a menu\n * button is shown instead.\n */\n mobileNavPosition?: MobileNavPosition;\n /** Accessible name of the button that opens the navigation drawer on small screens. */\n menuLabel?: string;\n /** Label of the tab-bar slot that opens the navigation drawer. */\n moreLabel?: string;\n /** Whether the \"More\" slot comes before or after the pinned items in the tab bar. */\n moreTabPosition?: MoreTabPosition;\n /** Props for the scrolling `<main>` element. */\n mainProps?: React.HTMLAttributes<HTMLElement>;\n}\n\nconst MAX_PINNED = 4;\n\nfunction byDocumentOrder(a: PinnedEntry, b: PinnedEntry) {\n if (!a.node || !b.node) return 0;\n return a.node.compareDocumentPosition(b.node) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n}\n\nfunction PinnedTab({ entry }: { entry: PinnedEntry }) {\n const state: NavbarItemState = { active: entry.active };\n return useRender({\n defaultTagName: 'a',\n render: entry.render,\n state,\n props: mergeProps<'a'>(\n {\n className: 'oui-app-shell__tab',\n 'aria-current': entry.active ? 'page' : undefined,\n title: typeof entry.label === 'string' ? entry.label : undefined,\n children: (\n <>\n <span className=\"oui-app-shell__tab-icon\">{entry.icon}</span>\n <span className=\"oui-app-shell__tab-label\">{entry.label}</span>\n </>\n ),\n },\n entry.props as React.ComponentProps<'a'>,\n ),\n });\n}\n\n/**\n * Full-height layout with a fixed navbar and an internally scrolling main\n * area. Below 900px the navbar moves into a slide-in drawer, and `NavbarItem`s marked `pinned` show in a\n * tab bar (see `mobileNavPosition`).\n * Customize width with `--oui-navbar-width` and `--oui-navbar-collapsed-width`.\n *\n * @example\n * <AppShell\n * mobileBrand=\"OptiControl\"\n * navbar={\n * <Navbar>\n * <NavbarSection>\n * <NavbarItem href=\"/\" icon={<Home />} active pinned>Overview</NavbarItem>\n * <NavbarItem href=\"/fleet\" icon={<Truck />} pinned>Fleet</NavbarItem>\n * </NavbarSection>\n * </Navbar>\n * }\n * >\n * <PageHeader title=\"Overview\" />\n * </AppShell>\n */\nexport function AppShell({\n navbar,\n mobileBrand,\n mobileActions,\n mobileNavPosition = 'bottom',\n menuLabel = 'Open navigation',\n moreLabel = 'More',\n moreTabPosition = 'start',\n mainProps,\n className,\n children,\n ref,\n ...props\n}: AppShellProps) {\n const [open, setOpen] = React.useState(false);\n // Detached triggers keep page content outside the drawer's Root; otherwise every\n // dialog in the page counts as nested and Base UI drops its backdrop.\n const [drawer] = React.useState(() => BaseDialog.createHandle());\n const container = usePortalContainer();\n\n const [pinned, setPinned] = React.useState<ReadonlyMap<string, PinnedEntry>>(new Map());\n // Must stay referentially stable: items re-register on every render.\n const [register] = React.useState(() => (id: string, entry: PinnedEntry | null) => {\n setPinned((prev) => {\n const next = new Map(prev);\n if (entry) next.set(id, entry);\n else next.delete(id);\n return next;\n });\n });\n const tabs = [...pinned.entries()].sort(([, a], [, b]) => byDocumentOrder(a, b)).slice(0, MAX_PINNED);\n const hasTabs = tabs.length > 0;\n const showTopBar = !hasTabs || mobileBrand != null || mobileActions != null;\n\n const moreTab = (\n <BaseDialog.Trigger handle={drawer} className=\"oui-app-shell__tab\">\n <span className=\"oui-app-shell__tab-icon\">\n <MenuIcon />\n </span>\n <span className=\"oui-app-shell__tab-label\">{moreLabel}</span>\n </BaseDialog.Trigger>\n );\n const tabbar = (\n <nav className=\"oui-app-shell__tabbar\" data-position={mobileNavPosition} aria-label=\"Quick navigation\">\n {moreTabPosition === 'start' && moreTab}\n {tabs.map(([id, entry]) => (\n <PinnedTab key={id} entry={entry} />\n ))}\n {moreTabPosition === 'end' && moreTab}\n </nav>\n );\n\n const closeOnNavigate = (event: React.MouseEvent) => {\n // A group's trigger only opens its sub-links; the drawer stays open for the user to pick one.\n const item = (event.target as HTMLElement).closest('a, .oui-navbar__item');\n if (item && !item.matches('[data-has-children]')) setOpen(false);\n };\n\n return (\n <div ref={ref} className={cx('oui-app-shell', className)} {...props}>\n <div className=\"oui-app-shell__navbar\">\n <PinnedRegistryContext value={register}>{navbar}</PinnedRegistryContext>\n </div>\n\n {showTopBar && (\n <header className=\"oui-app-shell__mobile-bar\">\n {!hasTabs && (\n <BaseDialog.Trigger handle={drawer} className=\"oui-app-shell__menu-button\" aria-label={menuLabel}>\n <MenuIcon />\n </BaseDialog.Trigger>\n )}\n <div className=\"oui-app-shell__mobile-brand\">{mobileBrand}</div>\n {mobileActions}\n </header>\n )}\n\n {hasTabs && mobileNavPosition === 'top' && tabbar}\n\n <main {...mainProps} className={cx('oui-app-shell__main', mainProps?.className)}>\n {children}\n </main>\n\n {hasTabs && mobileNavPosition === 'bottom' && tabbar}\n\n <BaseDialog.Root handle={drawer} open={open} onOpenChange={setOpen}>\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop className=\"oui-dialog__backdrop\" />\n <BaseDialog.Popup className=\"oui-app-shell__drawer\" aria-label=\"Navigation\" onClick={closeOnNavigate}>\n <BaseDialog.Close className=\"oui-app-shell__drawer-close\" aria-label=\"Close navigation\">\n <XIcon />\n </BaseDialog.Close>\n <NavbarDrawerContext value={true}>{navbar}</NavbarDrawerContext>\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n </div>\n );\n}\n\n// ─── Page layout helpers ─────────────────────────────────────────────────────\n\nexport interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n /** Ref to the `<header>` element. */\n ref?: React.Ref<HTMLElement>;\n /** Trail shown above the title, usually `<Breadcrumbs>`. */\n breadcrumbs?: React.ReactNode;\n /** Small label above the title. */\n eyebrow?: React.ReactNode;\n /** Page title, rendered as the page `<h1>`. */\n title: React.ReactNode;\n /** Supporting text under the title. */\n description?: React.ReactNode;\n /** Buttons or controls aligned to the right of the title. */\n actions?: React.ReactNode;\n}\n\n/** Page title block with optional breadcrumbs, eyebrow, description and actions. */\nexport function PageHeader({\n breadcrumbs,\n eyebrow,\n title,\n description,\n actions,\n className,\n ref,\n ...props\n}: PageHeaderProps) {\n return (\n <header ref={ref} className={cx('oui-page-header', className)} {...props}>\n <div className=\"oui-page-header__text\">\n {breadcrumbs && <div className=\"oui-page-header__breadcrumbs\">{breadcrumbs}</div>}\n {eyebrow && <span className=\"oui-eyebrow\">{eyebrow}</span>}\n <h1 className=\"oui-page-header__title\">{title}</h1>\n {description && <p className=\"oui-page-header__description\">{description}</p>}\n </div>\n {actions && <div className=\"oui-page-header__actions\">{actions}</div>}\n </header>\n );\n}\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Ref to the grid element. */\n ref?: React.Ref<HTMLDivElement>;\n /**\n * Most columns, shown while each can be at least `minItemWidth` wide. As the grid's own width runs\n * out it steps down to half the columns (4 → 2, 6 → 3), then to as many as fit. With the defaults a\n * 4–6 column KPI row keeps 2 columns on a phone.\n */\n columns?: 1 | 2 | 3 | 4 | 5 | 6;\n /**\n * Narrowest a column may get before the grid drops columns: any CSS length. Defaults to `12rem`; for\n * 4–6 columns `11rem`, or `9rem` below 640px. Same as setting `--oui-grid-min-item-width`.\n */\n minItemWidth?: string;\n /** Space between grid cells. */\n gap?: 'sm' | 'md' | 'lg';\n}\n\n/** Responsive dashboard grid: up to `columns` equal columns, fewer when its own width cannot fit them. */\nexport function Grid({ columns = 3, gap = 'md', minItemWidth, className, style, ref, ...props }: GridProps) {\n return (\n <div\n ref={ref}\n className={cx('oui-grid', className)}\n data-columns={columns}\n data-gap={gap}\n style={minItemWidth ? ({ '--oui-grid-min-item-width': minItemWidth, ...style } as React.CSSProperties) : style}\n {...props}\n />\n );\n}\n"],"mappings":"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"}
@@ -27,6 +27,18 @@ export interface DataTablePaginationProps extends Omit<PaginationProps, 'page' |
27
27
  }
28
28
  /** Page navigation of the table. Renders nothing when there are no rows, or the table is not paginated. */
29
29
  declare function DataTablePagination({ className, ...props }: DataTablePaginationProps): React.JSX.Element | null;
30
+ export interface DataTableFilterSheetProps {
31
+ /** Height of the filter button; the filters in the sheet are full size. */
32
+ size?: DataTableControlSize;
33
+ /** Extra content placed under the filters (add, bulk actions…). */
34
+ children?: React.ReactNode;
35
+ }
36
+ /**
37
+ * The phone toolbar's "Filters (n)" button, which opens a bottom sheet holding every filter and the
38
+ * `children`. Filters apply as they change. The footer keeps a clear button (disabled while no filter
39
+ * is set, so nothing moves when one is) and a button that closes the sheet on the result count.
40
+ */
41
+ declare function DataTableFilterSheet({ size, children }: DataTableFilterSheetProps): React.JSX.Element | null;
30
42
  export interface DataTableToolbarContext<T> {
31
43
  /** Rows after filters, search and sorting, across all pages. In server mode: the current page. */
32
44
  rows: T[];
@@ -42,7 +54,11 @@ export interface DataTableProps<T> extends UseDataTableOptions<T>, DataTableCont
42
54
  controlSize?: DataTableControlSize;
43
55
  /** Extra toolbar content (add, bulk actions…). A function receives the processed rows. */
44
56
  toolbar?: React.ReactNode | ((context: DataTableToolbarContext<T>) => React.ReactNode);
45
- /** `false` drops the search, filters, summary and toolbar content: rows only, for short tables under their own heading. */
57
+ /**
58
+ * `false` drops the search, filters, summary and toolbar content: rows only, for short tables under
59
+ * their own heading. Below 640px the toolbar is the search and a "Filters (n)" button, whose bottom
60
+ * sheet holds the filters and the `toolbar` content, over a line with the row count and export.
61
+ */
46
62
  showToolbar?: boolean;
47
63
  /**
48
64
  * Adds an export button that saves the filtered, sorted rows as `<exportName>.csv`.
@@ -57,7 +73,7 @@ export interface DataTableProps<T> extends UseDataTableOptions<T>, DataTableCont
57
73
  /** Class name for the table's root element. */
58
74
  className?: string;
59
75
  }
60
- declare function DataTableComponent<T>({ density, striped, stickyHeader, layout, maxHeight, virtualized, onEndReached, empty, tableProps, pageSizeOptions, controlSize, toolbar, showToolbar, exportName, fill, className, ...options }: DataTableProps<T>): React.JSX.Element;
76
+ declare function DataTableComponent<T>({ density, striped, stickyHeader, layout, maxHeight, virtualized, onEndReached, stickyFirstColumn, empty, tableProps, pageSizeOptions, controlSize, toolbar, showToolbar, exportName, fill, className, ...options }: DataTableProps<T>): React.JSX.Element;
61
77
  /**
62
78
  * `<DataTable data={…} columns={…} />` renders a complete table with search,
63
79
  * filters, sorting, pagination, row selection, row actions and inline editing;
@@ -67,8 +83,12 @@ declare function DataTableComponent<T>({ density, striped, stickyHeader, layout,
67
83
  *
68
84
  * For another layout, create the table with `useDataTable` and compose the
69
85
  * parts: `DataTable.Root`, `DataTable.Toolbar`, `DataTable.Search`,
70
- * `DataTable.Filters`, `DataTable.Filter`, `DataTable.Actions`,
71
- * `DataTable.Summary`, `DataTable.Content`, `DataTable.Pagination`.
86
+ * `DataTable.Filters`, `DataTable.Filter`, `DataTable.FilterSheet` (the
87
+ * phone filter button and sheet), `DataTable.Actions`, `DataTable.Summary`,
88
+ * `DataTable.Content`, `DataTable.Pagination`.
89
+ *
90
+ * On phones (below 640px) columns with `priority: 'low'` are hidden, and
91
+ * `stickyFirstColumn` keeps each row's name in view while the rest scrolls.
72
92
  */
73
93
  export declare const DataTable: typeof DataTableComponent & {
74
94
  Root: typeof DataTableRoot;
@@ -79,6 +99,7 @@ export declare const DataTable: typeof DataTableComponent & {
79
99
  Search: typeof DataTableSearch;
80
100
  Filters: typeof DataTableFilters;
81
101
  Filter: typeof DataTableFilter;
102
+ FilterSheet: typeof DataTableFilterSheet;
82
103
  Actions: {
83
104
  (props: import("../../utils/primitive").PrimitiveProps<"div">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
84
105
  displayName: string;