@optimum-intelligence/opti-ui 0.5.1 → 0.5.2

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.
@@ -700,7 +700,7 @@ function PinnedTab(t0) {
700
700
  * </AppShell>
701
701
  */
702
702
  function AppShell(t0) {
703
- const $ = c(77);
703
+ const $ = c(83);
704
704
  let children;
705
705
  let className;
706
706
  let mainProps;
@@ -747,6 +747,7 @@ function AppShell(t0) {
747
747
  const moreLabel = t3 === void 0 ? "More" : t3;
748
748
  const moreTabPosition = t4 === void 0 ? "start" : t4;
749
749
  const [open, setOpen] = React.useState(false);
750
+ const [drawer] = React.useState(_temp);
750
751
  const container = usePortalContainer();
751
752
  let t5;
752
753
  if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
@@ -775,63 +776,72 @@ function AppShell(t0) {
775
776
  let t7;
776
777
  let t8;
777
778
  let t9;
778
- if ($[15] !== mobileActions || $[16] !== mobileBrand || $[17] !== mobileNavPosition || $[18] !== moreLabel || $[19] !== moreTabPosition || $[20] !== pinned) {
779
- const tabs = [...pinned.entries()].sort(_temp).slice(0, MAX_PINNED);
779
+ if ($[15] !== drawer || $[16] !== mobileActions || $[17] !== mobileBrand || $[18] !== mobileNavPosition || $[19] !== moreLabel || $[20] !== moreTabPosition || $[21] !== pinned) {
780
+ const tabs = [...pinned.entries()].sort(_temp2).slice(0, MAX_PINNED);
780
781
  hasTabs = tabs.length > 0;
781
782
  showTopBar = !hasTabs || mobileBrand != null || mobileActions != null;
782
783
  let t12;
783
- if ($[29] === Symbol.for("react.memo_cache_sentinel")) {
784
+ if ($[30] === Symbol.for("react.memo_cache_sentinel")) {
784
785
  t12 = /* @__PURE__ */ jsx("span", {
785
786
  className: "oui-app-shell__tab-icon",
786
787
  children: /* @__PURE__ */ jsx(MenuIcon, {})
787
788
  });
788
- $[29] = t12;
789
- } else t12 = $[29];
789
+ $[30] = t12;
790
+ } else t12 = $[30];
790
791
  let t13;
791
- if ($[30] !== moreLabel) {
792
- t13 = /* @__PURE__ */ jsxs(Dialog.Trigger, {
792
+ if ($[31] !== moreLabel) {
793
+ t13 = /* @__PURE__ */ jsx("span", {
794
+ className: "oui-app-shell__tab-label",
795
+ children: moreLabel
796
+ });
797
+ $[31] = moreLabel;
798
+ $[32] = t13;
799
+ } else t13 = $[32];
800
+ let t14;
801
+ if ($[33] !== drawer || $[34] !== t13) {
802
+ t14 = /* @__PURE__ */ jsxs(Dialog.Trigger, {
803
+ handle: drawer,
793
804
  className: "oui-app-shell__tab",
794
- children: [t12, /* @__PURE__ */ jsx("span", {
795
- className: "oui-app-shell__tab-label",
796
- children: moreLabel
797
- })]
805
+ children: [t12, t13]
798
806
  });
799
- $[30] = moreLabel;
800
- $[31] = t13;
801
- } else t13 = $[31];
802
- moreTab = t13;
807
+ $[33] = drawer;
808
+ $[34] = t13;
809
+ $[35] = t14;
810
+ } else t14 = $[35];
811
+ moreTab = t14;
803
812
  t7 = "oui-app-shell__tabbar";
804
813
  t8 = mobileNavPosition;
805
814
  t9 = "Quick navigation";
806
815
  t10 = moreTabPosition === "start" && moreTab;
807
- t11 = tabs.map(_temp2);
808
- $[15] = mobileActions;
809
- $[16] = mobileBrand;
810
- $[17] = mobileNavPosition;
811
- $[18] = moreLabel;
812
- $[19] = moreTabPosition;
813
- $[20] = pinned;
814
- $[21] = hasTabs;
815
- $[22] = moreTab;
816
- $[23] = showTopBar;
817
- $[24] = t10;
818
- $[25] = t11;
819
- $[26] = t7;
820
- $[27] = t8;
821
- $[28] = t9;
816
+ t11 = tabs.map(_temp3);
817
+ $[15] = drawer;
818
+ $[16] = mobileActions;
819
+ $[17] = mobileBrand;
820
+ $[18] = mobileNavPosition;
821
+ $[19] = moreLabel;
822
+ $[20] = moreTabPosition;
823
+ $[21] = pinned;
824
+ $[22] = hasTabs;
825
+ $[23] = moreTab;
826
+ $[24] = showTopBar;
827
+ $[25] = t10;
828
+ $[26] = t11;
829
+ $[27] = t7;
830
+ $[28] = t8;
831
+ $[29] = t9;
822
832
  } else {
823
- hasTabs = $[21];
824
- moreTab = $[22];
825
- showTopBar = $[23];
826
- t10 = $[24];
827
- t11 = $[25];
828
- t7 = $[26];
829
- t8 = $[27];
830
- t9 = $[28];
833
+ hasTabs = $[22];
834
+ moreTab = $[23];
835
+ showTopBar = $[24];
836
+ t10 = $[25];
837
+ t11 = $[26];
838
+ t7 = $[27];
839
+ t8 = $[28];
840
+ t9 = $[29];
831
841
  }
832
842
  const t12 = moreTabPosition === "end" && moreTab;
833
843
  let t13;
834
- if ($[32] !== t10 || $[33] !== t11 || $[34] !== t12 || $[35] !== t7 || $[36] !== t8 || $[37] !== t9) {
844
+ if ($[36] !== t10 || $[37] !== t11 || $[38] !== t12 || $[39] !== t7 || $[40] !== t8 || $[41] !== t9) {
835
845
  t13 = /* @__PURE__ */ jsxs("nav", {
836
846
  className: t7,
837
847
  "data-position": t8,
@@ -842,31 +852,31 @@ function AppShell(t0) {
842
852
  t12
843
853
  ]
844
854
  });
845
- $[32] = t10;
846
- $[33] = t11;
847
- $[34] = t12;
848
- $[35] = t7;
849
- $[36] = t8;
850
- $[37] = t9;
851
- $[38] = t13;
852
- } else t13 = $[38];
855
+ $[36] = t10;
856
+ $[37] = t11;
857
+ $[38] = t12;
858
+ $[39] = t7;
859
+ $[40] = t8;
860
+ $[41] = t9;
861
+ $[42] = t13;
862
+ } else t13 = $[42];
853
863
  const tabbar = t13;
854
864
  let t14;
855
- if ($[39] === Symbol.for("react.memo_cache_sentinel")) {
865
+ if ($[43] === Symbol.for("react.memo_cache_sentinel")) {
856
866
  t14 = (event) => {
857
867
  if (event.target.closest("a, .oui-navbar__item")) setOpen(false);
858
868
  };
859
- $[39] = t14;
860
- } else t14 = $[39];
869
+ $[43] = t14;
870
+ } else t14 = $[43];
861
871
  const closeOnNavigate = t14;
862
872
  let t15;
863
- if ($[40] !== className) {
873
+ if ($[44] !== className) {
864
874
  t15 = cx("oui-app-shell", className);
865
- $[40] = className;
866
- $[41] = t15;
867
- } else t15 = $[41];
875
+ $[44] = className;
876
+ $[45] = t15;
877
+ } else t15 = $[45];
868
878
  let t16;
869
- if ($[42] !== navbar || $[43] !== register) {
879
+ if ($[46] !== navbar || $[47] !== register) {
870
880
  t16 = /* @__PURE__ */ jsx("div", {
871
881
  className: "oui-app-shell__navbar",
872
882
  children: /* @__PURE__ */ jsx(PinnedRegistryContext, {
@@ -874,16 +884,17 @@ function AppShell(t0) {
874
884
  children: navbar
875
885
  })
876
886
  });
877
- $[42] = navbar;
878
- $[43] = register;
879
- $[44] = t16;
880
- } else t16 = $[44];
887
+ $[46] = navbar;
888
+ $[47] = register;
889
+ $[48] = t16;
890
+ } else t16 = $[48];
881
891
  let t17;
882
- if ($[45] !== hasTabs || $[46] !== menuLabel || $[47] !== mobileActions || $[48] !== mobileBrand || $[49] !== showTopBar) {
892
+ if ($[49] !== drawer || $[50] !== hasTabs || $[51] !== menuLabel || $[52] !== mobileActions || $[53] !== mobileBrand || $[54] !== showTopBar) {
883
893
  t17 = showTopBar && /* @__PURE__ */ jsxs("header", {
884
894
  className: "oui-app-shell__mobile-bar",
885
895
  children: [
886
896
  !hasTabs && /* @__PURE__ */ jsx(Dialog.Trigger, {
897
+ handle: drawer,
887
898
  className: "oui-app-shell__menu-button",
888
899
  "aria-label": menuLabel,
889
900
  children: /* @__PURE__ */ jsx(MenuIcon, {})
@@ -895,50 +906,51 @@ function AppShell(t0) {
895
906
  mobileActions
896
907
  ]
897
908
  });
898
- $[45] = hasTabs;
899
- $[46] = menuLabel;
900
- $[47] = mobileActions;
901
- $[48] = mobileBrand;
902
- $[49] = showTopBar;
903
- $[50] = t17;
904
- } else t17 = $[50];
909
+ $[49] = drawer;
910
+ $[50] = hasTabs;
911
+ $[51] = menuLabel;
912
+ $[52] = mobileActions;
913
+ $[53] = mobileBrand;
914
+ $[54] = showTopBar;
915
+ $[55] = t17;
916
+ } else t17 = $[55];
905
917
  const t18 = hasTabs && mobileNavPosition === "top" && tabbar;
906
918
  const t19 = mainProps?.className;
907
919
  let t20;
908
- if ($[51] !== t19) {
920
+ if ($[56] !== t19) {
909
921
  t20 = cx("oui-app-shell__main", t19);
910
- $[51] = t19;
911
- $[52] = t20;
912
- } else t20 = $[52];
922
+ $[56] = t19;
923
+ $[57] = t20;
924
+ } else t20 = $[57];
913
925
  let t21;
914
- if ($[53] !== children || $[54] !== mainProps || $[55] !== t20) {
926
+ if ($[58] !== children || $[59] !== mainProps || $[60] !== t20) {
915
927
  t21 = /* @__PURE__ */ jsx("main", {
916
928
  ...mainProps,
917
929
  className: t20,
918
930
  children
919
931
  });
920
- $[53] = children;
921
- $[54] = mainProps;
922
- $[55] = t20;
923
- $[56] = t21;
924
- } else t21 = $[56];
932
+ $[58] = children;
933
+ $[59] = mainProps;
934
+ $[60] = t20;
935
+ $[61] = t21;
936
+ } else t21 = $[61];
925
937
  const t22 = hasTabs && mobileNavPosition === "bottom" && tabbar;
926
938
  let t23;
927
- if ($[57] === Symbol.for("react.memo_cache_sentinel")) {
939
+ if ($[62] === Symbol.for("react.memo_cache_sentinel")) {
928
940
  t23 = /* @__PURE__ */ jsx(Dialog.Backdrop, { className: "oui-dialog__backdrop" });
929
- $[57] = t23;
930
- } else t23 = $[57];
941
+ $[62] = t23;
942
+ } else t23 = $[62];
931
943
  let t24;
932
- if ($[58] === Symbol.for("react.memo_cache_sentinel")) {
944
+ if ($[63] === Symbol.for("react.memo_cache_sentinel")) {
933
945
  t24 = /* @__PURE__ */ jsx(Dialog.Close, {
934
946
  className: "oui-app-shell__drawer-close",
935
947
  "aria-label": "Close navigation",
936
948
  children: /* @__PURE__ */ jsx(XIcon, {})
937
949
  });
938
- $[58] = t24;
939
- } else t24 = $[58];
950
+ $[63] = t24;
951
+ } else t24 = $[63];
940
952
  let t25;
941
- if ($[59] !== navbar) {
953
+ if ($[64] !== navbar) {
942
954
  t25 = /* @__PURE__ */ jsxs(Dialog.Popup, {
943
955
  className: "oui-app-shell__drawer",
944
956
  "aria-label": "Navigation",
@@ -948,66 +960,72 @@ function AppShell(t0) {
948
960
  children: navbar
949
961
  })]
950
962
  });
951
- $[59] = navbar;
952
- $[60] = t25;
953
- } else t25 = $[60];
963
+ $[64] = navbar;
964
+ $[65] = t25;
965
+ } else t25 = $[65];
954
966
  let t26;
955
- if ($[61] !== container || $[62] !== t25) {
967
+ if ($[66] !== container || $[67] !== t25) {
956
968
  t26 = /* @__PURE__ */ jsxs(Dialog.Portal, {
957
969
  container,
958
970
  children: [t23, t25]
959
971
  });
960
- $[61] = container;
961
- $[62] = t25;
962
- $[63] = t26;
963
- } else t26 = $[63];
972
+ $[66] = container;
973
+ $[67] = t25;
974
+ $[68] = t26;
975
+ } else t26 = $[68];
964
976
  let t27;
965
- if ($[64] !== open || $[65] !== t17 || $[66] !== t18 || $[67] !== t21 || $[68] !== t22 || $[69] !== t26) {
966
- t27 = /* @__PURE__ */ jsxs(Dialog.Root, {
977
+ if ($[69] !== drawer || $[70] !== open || $[71] !== t26) {
978
+ t27 = /* @__PURE__ */ jsx(Dialog.Root, {
979
+ handle: drawer,
967
980
  open,
968
981
  onOpenChange: setOpen,
969
- children: [
970
- t17,
971
- t18,
972
- t21,
973
- t22,
974
- t26
975
- ]
982
+ children: t26
976
983
  });
977
- $[64] = open;
978
- $[65] = t17;
979
- $[66] = t18;
980
- $[67] = t21;
981
- $[68] = t22;
982
- $[69] = t26;
983
- $[70] = t27;
984
- } else t27 = $[70];
984
+ $[69] = drawer;
985
+ $[70] = open;
986
+ $[71] = t26;
987
+ $[72] = t27;
988
+ } else t27 = $[72];
985
989
  let t28;
986
- if ($[71] !== props || $[72] !== ref || $[73] !== t15 || $[74] !== t16 || $[75] !== t27) {
990
+ if ($[73] !== props || $[74] !== ref || $[75] !== t15 || $[76] !== t16 || $[77] !== t17 || $[78] !== t18 || $[79] !== t21 || $[80] !== t22 || $[81] !== t27) {
987
991
  t28 = /* @__PURE__ */ jsxs("div", {
988
992
  ref,
989
993
  className: t15,
990
994
  ...props,
991
- children: [t16, t27]
995
+ children: [
996
+ t16,
997
+ t17,
998
+ t18,
999
+ t21,
1000
+ t22,
1001
+ t27
1002
+ ]
992
1003
  });
993
- $[71] = props;
994
- $[72] = ref;
995
- $[73] = t15;
996
- $[74] = t16;
997
- $[75] = t27;
998
- $[76] = t28;
999
- } else t28 = $[76];
1004
+ $[73] = props;
1005
+ $[74] = ref;
1006
+ $[75] = t15;
1007
+ $[76] = t16;
1008
+ $[77] = t17;
1009
+ $[78] = t18;
1010
+ $[79] = t21;
1011
+ $[80] = t22;
1012
+ $[81] = t27;
1013
+ $[82] = t28;
1014
+ } else t28 = $[82];
1000
1015
  return t28;
1001
1016
  }
1002
- function _temp2(t0) {
1017
+ function _temp3(t0) {
1003
1018
  const [id_0, entry_0] = t0;
1004
1019
  return /* @__PURE__ */ jsx(PinnedTab, { entry: entry_0 }, id_0);
1005
1020
  }
1006
- function _temp(t0, t1) {
1021
+ function _temp2(t0, t1) {
1007
1022
  const [, a] = t0;
1008
1023
  const [, b] = t1;
1009
1024
  return byDocumentOrder(a, b);
1010
1025
  }
1026
+ function _temp() {
1027
+ return Dialog.createHandle();
1028
+ }
1011
1029
  /** Page title block with optional breadcrumbs, eyebrow, description and actions. */
1012
1030
  function PageHeader(t0) {
1013
1031
  const $ = c(32);
@@ -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","container","Map","setPinned","prev","set","delete","hasTabs","moreTab","showTopBar","tabs","entries","sort","_temp","slice","length","map","_temp2","tabbar","target","closest","closeOnNavigate","t21","t22","t23","t24","t25","t26","t27","t28","id_0","entry_0","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 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 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 <BaseDialog.Root open={open} onOpenChange={setOpen}>\n {showTopBar && (\n <header className=\"oui-app-shell__mobile-bar\">\n {!hasTabs && (\n <BaseDialog.Trigger 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.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","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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"}