@flipdish/ui-library 0.7.5 → 0.8.0

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 (105) hide show
  1. package/dist/components/atoms/FlipdishLogo/flipdish-logo.paths.cjs +56 -0
  2. package/dist/components/atoms/FlipdishLogo/flipdish-logo.paths.cjs.map +1 -0
  3. package/dist/components/atoms/FlipdishLogo/flipdish-logo.paths.d.ts +7 -0
  4. package/dist/components/atoms/FlipdishLogo/flipdish-logo.paths.d.ts.map +1 -0
  5. package/dist/components/atoms/FlipdishLogo/flipdish-logo.paths.js +49 -0
  6. package/dist/components/atoms/FlipdishLogo/flipdish-logo.paths.js.map +1 -0
  7. package/dist/components/atoms/FlipdishLogo/index.cjs +30 -6
  8. package/dist/components/atoms/FlipdishLogo/index.cjs.map +1 -1
  9. package/dist/components/atoms/FlipdishLogo/index.d.ts +65 -4
  10. package/dist/components/atoms/FlipdishLogo/index.d.ts.map +1 -1
  11. package/dist/components/atoms/FlipdishLogo/index.js +30 -6
  12. package/dist/components/atoms/FlipdishLogo/index.js.map +1 -1
  13. package/dist/components/organisms/HeaderNavigation/components/mobile-header.cjs +1 -1
  14. package/dist/components/organisms/HeaderNavigation/components/mobile-header.cjs.map +1 -1
  15. package/dist/components/organisms/HeaderNavigation/components/mobile-header.js +1 -1
  16. package/dist/components/organisms/HeaderNavigation/components/mobile-header.js.map +1 -1
  17. package/dist/components/organisms/HeaderNavigation/index.cjs +1 -1
  18. package/dist/components/organisms/HeaderNavigation/index.cjs.map +1 -1
  19. package/dist/components/organisms/HeaderNavigation/index.js +1 -1
  20. package/dist/components/organisms/HeaderNavigation/index.js.map +1 -1
  21. package/dist/components/organisms/SidebarNavigation/components/mobile-header.cjs +16 -3
  22. package/dist/components/organisms/SidebarNavigation/components/mobile-header.cjs.map +1 -1
  23. package/dist/components/organisms/SidebarNavigation/components/mobile-header.d.ts +31 -1
  24. package/dist/components/organisms/SidebarNavigation/components/mobile-header.d.ts.map +1 -1
  25. package/dist/components/organisms/SidebarNavigation/components/mobile-header.js +18 -6
  26. package/dist/components/organisms/SidebarNavigation/components/mobile-header.js.map +1 -1
  27. package/dist/components/organisms/SidebarNavigation/components/nav-account-card.cjs +6 -45
  28. package/dist/components/organisms/SidebarNavigation/components/nav-account-card.cjs.map +1 -1
  29. package/dist/components/organisms/SidebarNavigation/components/nav-account-card.d.ts +16 -25
  30. package/dist/components/organisms/SidebarNavigation/components/nav-account-card.d.ts.map +1 -1
  31. package/dist/components/organisms/SidebarNavigation/components/nav-account-card.js +8 -47
  32. package/dist/components/organisms/SidebarNavigation/components/nav-account-card.js.map +1 -1
  33. package/dist/components/organisms/SidebarNavigation/components/nav-button.cjs +2 -2
  34. package/dist/components/organisms/SidebarNavigation/components/nav-button.cjs.map +1 -1
  35. package/dist/components/organisms/SidebarNavigation/components/nav-button.d.ts +5 -1
  36. package/dist/components/organisms/SidebarNavigation/components/nav-button.d.ts.map +1 -1
  37. package/dist/components/organisms/SidebarNavigation/components/nav-button.js +2 -2
  38. package/dist/components/organisms/SidebarNavigation/components/nav-button.js.map +1 -1
  39. package/dist/components/organisms/SidebarNavigation/components/nav-item.cjs +14 -8
  40. package/dist/components/organisms/SidebarNavigation/components/nav-item.cjs.map +1 -1
  41. package/dist/components/organisms/SidebarNavigation/components/nav-item.d.ts +9 -3
  42. package/dist/components/organisms/SidebarNavigation/components/nav-item.d.ts.map +1 -1
  43. package/dist/components/organisms/SidebarNavigation/components/nav-item.js +14 -8
  44. package/dist/components/organisms/SidebarNavigation/components/nav-item.js.map +1 -1
  45. package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.cjs +19 -0
  46. package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.cjs.map +1 -0
  47. package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.d.ts +22 -0
  48. package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.d.ts.map +1 -0
  49. package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.js +17 -0
  50. package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.js.map +1 -0
  51. package/dist/components/organisms/SidebarNavigation/index.cjs +139 -11
  52. package/dist/components/organisms/SidebarNavigation/index.cjs.map +1 -1
  53. package/dist/components/organisms/SidebarNavigation/index.d.ts +55 -7
  54. package/dist/components/organisms/SidebarNavigation/index.d.ts.map +1 -1
  55. package/dist/components/organisms/SidebarNavigation/index.js +143 -7
  56. package/dist/components/organisms/SidebarNavigation/index.js.map +1 -1
  57. package/dist/utilities/localStorageUtils/index.cjs +125 -0
  58. package/dist/utilities/localStorageUtils/index.cjs.map +1 -0
  59. package/dist/utilities/localStorageUtils/index.d.ts +43 -0
  60. package/dist/utilities/localStorageUtils/index.d.ts.map +1 -0
  61. package/dist/utilities/localStorageUtils/index.js +121 -0
  62. package/dist/utilities/localStorageUtils/index.js.map +1 -0
  63. package/dist/utilities/localStorageUtils/localStorageUtils.constants.cjs +15 -0
  64. package/dist/utilities/localStorageUtils/localStorageUtils.constants.cjs.map +1 -0
  65. package/dist/utilities/localStorageUtils/localStorageUtils.constants.d.ts +11 -0
  66. package/dist/utilities/localStorageUtils/localStorageUtils.constants.d.ts.map +1 -0
  67. package/dist/utilities/localStorageUtils/localStorageUtils.constants.js +13 -0
  68. package/dist/utilities/localStorageUtils/localStorageUtils.constants.js.map +1 -0
  69. package/package.json +1 -1
  70. package/dist/components/atoms/FlipdishLogo/components/flipdish-logo-minimal.cjs +0 -16
  71. package/dist/components/atoms/FlipdishLogo/components/flipdish-logo-minimal.cjs.map +0 -1
  72. package/dist/components/atoms/FlipdishLogo/components/flipdish-logo-minimal.d.ts +0 -3
  73. package/dist/components/atoms/FlipdishLogo/components/flipdish-logo-minimal.d.ts.map +0 -1
  74. package/dist/components/atoms/FlipdishLogo/components/flipdish-logo-minimal.js +0 -14
  75. package/dist/components/atoms/FlipdishLogo/components/flipdish-logo-minimal.js.map +0 -1
  76. package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.cjs +0 -32
  77. package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.cjs.map +0 -1
  78. package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.d.ts +0 -20
  79. package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.d.ts.map +0 -1
  80. package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.js +0 -30
  81. package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.js.map +0 -1
  82. package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.cjs +0 -23
  83. package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.cjs.map +0 -1
  84. package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.d.ts +0 -15
  85. package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.d.ts.map +0 -1
  86. package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.js +0 -21
  87. package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.js.map +0 -1
  88. package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.cjs +0 -22
  89. package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.cjs.map +0 -1
  90. package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.d.ts +0 -18
  91. package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.d.ts.map +0 -1
  92. package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.js +0 -20
  93. package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.js.map +0 -1
  94. package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.cjs +0 -24
  95. package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.cjs.map +0 -1
  96. package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.d.ts +0 -21
  97. package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.d.ts.map +0 -1
  98. package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.js +0 -22
  99. package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.js.map +0 -1
  100. package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.cjs +0 -35
  101. package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.cjs.map +0 -1
  102. package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.d.ts +0 -28
  103. package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.d.ts.map +0 -1
  104. package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.js +0 -33
  105. package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.js.map +0 -1
@@ -3,9 +3,9 @@ import { Tooltip } from '@flipdish/ui-library/components/atoms/Tooltip';
3
3
  import { cx } from '@flipdish/ui-library/utilities/cx';
4
4
  import { Pressable } from 'react-aria-components';
5
5
 
6
- const NavButton = ({ current, label, href, icon: Icon, className, tooltipPlacement = 'right', onClick, children }) => {
6
+ const NavButton = ({ current, label, href, icon: Icon, className, tooltipPlacement = 'right', onClick, children, 'aria-expanded': ariaExpanded, 'aria-controls': ariaControls, }) => {
7
7
  const iconOnly = !children;
8
- return (jsx(Tooltip, { isDisabled: !label, title: label, placement: tooltipPlacement, children: jsx(Pressable, { children: jsxs("a", { href: href, "aria-label": label, onClick: onClick, className: cx('group/item relative flex w-full cursor-pointer items-center justify-center gap-1 rounded-md bg-primary outline-focus-ring transition duration-100 ease-linear select-none hover:bg-primary_hover focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2', current && 'bg-secondary hover:bg-secondary_hover', iconOnly ? 'size-9' : 'px-2 py-1.5', className), children: [Icon && (jsx(Icon, { "aria-hidden": "true", className: cx('size-5 shrink-0 text-fg-quaternary transition-inherit-all group-hover/item:text-fg-quaternary_hover', current && 'text-fg-quaternary_hover') })), children && (jsx("span", { className: cx('px-0.5 text-sm font-semibold transition duration-100 ease-linear group-hover/item:text-secondary_hover', current && 'text-secondary_hover'), children: children }))] }) }) }));
8
+ return (jsx(Tooltip, { isDisabled: !label, title: label, placement: tooltipPlacement, children: jsx(Pressable, { children: jsxs("a", { href: href, "aria-label": label, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, onClick: onClick, className: cx('group/item relative flex w-full cursor-pointer items-center justify-center gap-1 rounded-md bg-transparent outline-focus-ring transition duration-100 ease-linear select-none hover:bg-secondary_hover focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2', current && 'bg-brand-primary hover:bg-brand-primary', iconOnly ? 'size-9' : 'px-2 py-1.5', className), children: [Icon && (jsx(Icon, { "aria-hidden": "true", className: cx('size-5 shrink-0 text-fg-quaternary transition-inherit-all group-hover/item:text-fg-quaternary_hover', current && 'text-fg-brand-primary') })), children && (jsx("span", { className: cx('px-0.5 text-sm font-semibold transition duration-100 ease-linear group-hover/item:text-secondary_hover', current && 'text-brand-secondary'), children: children }))] }) }) }));
9
9
  };
10
10
 
11
11
  export { NavButton };
@@ -1 +1 @@
1
- {"version":3,"file":"nav-button.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-button.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;AA4BO,MAAM,SAAS,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAkB,KAAI;AAC1I,IAAA,MAAM,QAAQ,GAAG,CAAC,QAAQ;IAE1B,QACEA,IAAC,OAAO,EAAA,EAAC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,YACpEA,GAAA,CAAC,SAAS,EAAA,EAAA,QAAA,EACRC,IAAA,CAAA,GAAA,EAAA,EACE,IAAI,EAAE,IAAI,EAAA,YAAA,EACE,KAAK,EACjB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CACX,4QAA4Q,EAC5Q,OAAO,IAAI,uCAAuC,EAClD,QAAQ,GAAG,QAAQ,GAAG,aAAa,EACnC,SAAS,CACV,EAAA,QAAA,EAAA,CAEA,IAAI,KACHD,IAAC,IAAI,EAAA,EAAA,aAAA,EACS,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,qGAAqG,EACrG,OAAO,IAAI,0BAA0B,CACtC,EAAA,CACD,CACH,EAEA,QAAQ,KACPA,GAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,wGAAwG,EACxG,OAAO,IAAI,sBAAsB,CAClC,YAEA,QAAQ,EAAA,CACJ,CACR,CAAA,EAAA,CACC,EAAA,CACM,EAAA,CACJ;AAEd;;;;"}
1
+ {"version":3,"file":"nav-button.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-button.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;AAgCO,MAAM,SAAS,GAAG,CAAC,EACxB,OAAO,EACP,KAAK,EACL,IAAI,EACJ,IAAI,EAAE,IAAI,EACV,SAAS,EACT,gBAAgB,GAAG,OAAO,EAC1B,OAAO,EACP,QAAQ,EACR,eAAe,EAAE,YAAY,EAC7B,eAAe,EAAE,YAAY,GACd,KAAI;AACnB,IAAA,MAAM,QAAQ,GAAG,CAAC,QAAQ;IAE1B,QACEA,IAAC,OAAO,EAAA,EAAC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAA,QAAA,EACpEA,IAAC,SAAS,EAAA,EAAA,QAAA,EACRC,IAAA,CAAA,GAAA,EAAA,EACE,IAAI,EAAE,IAAI,gBACE,KAAK,EAAA,eAAA,EACF,YAAY,EAAA,eAAA,EACZ,YAAY,EAC3B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CACX,kRAAkR,EAClR,OAAO,IAAI,yCAAyC,EACpD,QAAQ,GAAG,QAAQ,GAAG,aAAa,EACnC,SAAS,CACV,EAAA,QAAA,EAAA,CAEA,IAAI,KACHD,GAAA,CAAC,IAAI,mBACS,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,qGAAqG,EACrG,OAAO,IAAI,uBAAuB,CACnC,GACD,CACH,EAEA,QAAQ,KACPA,cACE,SAAS,EAAE,EAAE,CACX,wGAAwG,EACxG,OAAO,IAAI,sBAAsB,CAClC,EAAA,QAAA,EAEA,QAAQ,EAAA,CACJ,CACR,CAAA,EAAA,CACC,EAAA,CACM,EAAA,CACJ;AAEd;;;;"}
@@ -6,25 +6,31 @@ var Badge = require('@flipdish/ui-library/components/atoms/Badge');
6
6
  var cx = require('@flipdish/ui-library/utilities/cx');
7
7
  var reactAriaComponents = require('react-aria-components');
8
8
 
9
+ /**
10
+ * A single navigation item used across the sidebar. The active state uses the
11
+ * brand surface/text tokens (`bg-brand-primary`, `text-brand-secondary`), and an
12
+ * optional leading status dot can be rendered before the icon.
13
+ */
9
14
  const styles = cx.sortCx({
10
- root: 'group relative flex max-h-9 w-full cursor-pointer items-center rounded-md bg-primary outline-focus-ring transition duration-100 ease-linear select-none hover:bg-primary_hover focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2',
11
- rootSelected: 'bg-secondary hover:bg-secondary_hover',
15
+ root: 'group/item relative flex max-h-9 w-full cursor-pointer items-center rounded-md bg-transparent outline-focus-ring transition duration-100 ease-linear select-none hover:bg-secondary_hover focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2',
16
+ rootSelected: 'bg-brand-primary hover:bg-brand-primary',
12
17
  });
13
- const NavItemBase = ({ current, type, badge, href, icon: Icon, children, truncate = true, onClick }) => {
14
- const iconElement = Icon && (jsxRuntime.jsx(Icon, { "aria-hidden": "true", className: cx.cx('mr-2 size-5 shrink-0 text-fg-quaternary transition-inherit-all group-hover/item:text-fg-quaternary_hover', current && 'text-fg-quaternary_hover') }));
15
- const badgeElement = badge && (typeof badge === 'string' || typeof badge === 'number') ? (jsxRuntime.jsx(Badge.Badge, { className: "ml-3", color: "gray", type: "pill-color", size: "sm", children: badge })) : (badge);
16
- const labelElement = (jsxRuntime.jsx("span", { className: cx.cx('flex-1 text-sm font-semibold text-secondary transition-inherit-all group-hover/item:text-secondary_hover', truncate && 'truncate', current && 'text-secondary_hover'), children: children }));
18
+ const StatusDot = ({ status }) => (jsxRuntime.jsx("span", { "aria-hidden": "true", className: cx.cx('mr-2 size-2 shrink-0 rounded-full', status === 'online' ? 'bg-success-solid' : 'bg-fg-quaternary') }));
19
+ const NavItemBase = ({ current, type, badge, href, icon: Icon, children, truncate = true, status, onClick, 'aria-expanded': ariaExpanded, 'aria-controls': ariaControls, }) => {
20
+ const iconElement = Icon && (jsxRuntime.jsx(Icon, { "aria-hidden": "true", className: cx.cx('mr-2 size-5 shrink-0 text-fg-quaternary transition-inherit-all group-hover/item:text-fg-quaternary_hover', current && 'text-fg-brand-primary') }));
21
+ const badgeElement = badge && (typeof badge === 'string' || typeof badge === 'number') ? (jsxRuntime.jsx(Badge.Badge, { className: "ml-3", color: current ? 'brand' : 'gray', type: "pill-color", size: "sm", children: badge })) : (badge);
22
+ const labelElement = (jsxRuntime.jsx("span", { className: cx.cx('flex-1 text-sm font-semibold text-secondary transition-inherit-all group-hover/item:text-secondary_hover', truncate && 'truncate', current && 'text-brand-secondary group-hover/item:text-brand-secondary'), children: children }));
17
23
  const isExternal = href?.startsWith('http');
18
24
  const externalIcon = isExternal && jsxRuntime.jsx(uiIcons.Share04, { className: "size-4 stroke-[2.5px] text-fg-quaternary" });
19
25
  if (type === 'collapsible') {
20
26
  return (
21
27
  // biome-ignore lint/a11y/noStaticElementInteractions: This is a summary element
22
- jsxRuntime.jsxs("summary", { className: cx.cx('p-2', styles.root, current && styles.rootSelected), onClick: onClick, children: [iconElement, labelElement, badgeElement, jsxRuntime.jsx(uiIcons.ChevronDown, { "aria-hidden": "true", className: "ml-3 size-4 shrink-0 stroke-[2.5px] text-fg-quaternary in-open:-scale-y-100" })] }));
28
+ jsxRuntime.jsxs("summary", { className: cx.cx('p-2', styles.root, current && styles.rootSelected), onClick: onClick, children: [status && jsxRuntime.jsx(StatusDot, { status: status }), iconElement, labelElement, badgeElement, jsxRuntime.jsx(uiIcons.ChevronDown, { "aria-hidden": "true", className: "ml-3 size-4 shrink-0 stroke-[2.5px] text-fg-quaternary in-open:-scale-y-100" })] }));
23
29
  }
24
30
  if (type === 'collapsible-child') {
25
31
  return (jsxRuntime.jsxs(reactAriaComponents.Link, { href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", className: cx.cx('py-2 pr-3 pl-10', styles.root, current && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [labelElement, externalIcon, badgeElement] }));
26
32
  }
27
- return (jsxRuntime.jsxs(reactAriaComponents.Link, { href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", className: cx.cx('group/item p-2', styles.root, current && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [iconElement, labelElement, externalIcon, badgeElement] }));
33
+ return (jsxRuntime.jsxs(reactAriaComponents.Link, { href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", className: cx.cx('group/item p-2', styles.root, current && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, children: [status && jsxRuntime.jsx(StatusDot, { status: status }), iconElement, labelElement, externalIcon, badgeElement] }));
28
34
  };
29
35
 
30
36
  exports.NavItemBase = NavItemBase;
@@ -1 +1 @@
1
- {"version":3,"file":"nav-item.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"sourcesContent":[null],"names":["sortCx","_jsx","cx","Badge","Share04","_jsxs","ChevronDown","AriaLink"],"mappings":";;;;;;;;AAQA,MAAM,MAAM,GAAGA,SAAM,CAAC;AACpB,IAAA,IAAI,EAAE,0PAA0P;AAChQ,IAAA,YAAY,EAAE,uCAAuC;AACtD,CAAA,CAAC;AAyBK,MAAM,WAAW,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,EAAoB,KAAI;IAC9H,MAAM,WAAW,GAAG,IAAI,KACtBC,cAAA,CAAC,IAAI,EAAA,EAAA,aAAA,EACS,MAAM,EAClB,SAAS,EAAEC,KAAE,CACX,0GAA0G,EAC1G,OAAO,IAAI,0BAA0B,CACtC,EAAA,CACD,CACH;IAED,MAAM,YAAY,GAChB,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,IAC/DD,cAAA,CAACE,WAAK,EAAA,EAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,IAAI,EAAA,QAAA,EAC7D,KAAK,GACA,KAER,KAAK,CACN;IAEH,MAAM,YAAY,IAChBF,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAEC,KAAE,CACX,0GAA0G,EAC1G,QAAQ,IAAI,UAAU,EACtB,OAAO,IAAI,sBAAsB,CAClC,EAAA,QAAA,EAEA,QAAQ,EAAA,CACJ,CACR;IAED,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC;IAC3C,MAAM,YAAY,GAAG,UAAU,IAAID,cAAA,CAACG,eAAO,EAAA,EAAC,SAAS,EAAC,0CAA0C,EAAA,CAAG;AAEnG,IAAA,IAAI,IAAI,KAAK,aAAa,EAAE;QAC1B;;AAEE,QAAAC,eAAA,CAAA,SAAA,EAAA,EAAS,SAAS,EAAEH,KAAE,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAA,QAAA,EAAA,CACzF,WAAW,EAEX,YAAY,EAEZ,YAAY,EAEbD,cAAA,CAACK,mBAAW,EAAA,EAAA,aAAA,EAAa,MAAM,EAAC,SAAS,EAAC,6EAA6E,EAAA,CAAG,CAAA,EAAA,CAClH;IAEd;AAEA,IAAA,IAAI,IAAI,KAAK,mBAAmB,EAAE;AAChC,QAAA,QACED,eAAA,CAACE,wBAAQ,EAAA,EACP,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,EACvC,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAEL,KAAE,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,EAC7E,OAAO,EAAE,OAAO,EAAA,cAAA,EACF,OAAO,GAAG,MAAM,GAAG,SAAS,EAAA,QAAA,EAAA,CAEzC,YAAY,EACZ,YAAY,EACZ,YAAY,CAAA,EAAA,CACJ;IAEf;AAEA,IAAA,QACEG,eAAA,CAACE,wBAAQ,EAAA,EACP,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,EACvC,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAEL,KAAE,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,EAC5E,OAAO,EAAE,OAAO,EAAA,cAAA,EACF,OAAO,GAAG,MAAM,GAAG,SAAS,EAAA,QAAA,EAAA,CAEzC,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,CAAA,EAAA,CACJ;AAEf;;;;"}
1
+ {"version":3,"file":"nav-item.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"sourcesContent":[null],"names":["sortCx","_jsx","cx","Badge","Share04","_jsxs","ChevronDown","AriaLink"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { FC, HTMLAttributes, MouseEventHandler, ReactNode } from 'react';
2
+ /** Online status shown as a small leading dot on the nav item. */
3
+ export type NavItemStatus = 'online' | 'offline';
2
4
  interface NavItemBaseProps {
3
- /** Whether the nav item shows only an icon. */
4
- iconOnly?: boolean;
5
5
  /** Whether the collapsible nav item is open. */
6
6
  open?: boolean;
7
7
  /** URL to navigate to when the nav item is clicked. */
@@ -16,11 +16,17 @@ interface NavItemBaseProps {
16
16
  current?: boolean;
17
17
  /** Whether to truncate the label text. */
18
18
  truncate?: boolean;
19
+ /** Optional leading status dot rendered before the icon. */
20
+ status?: NavItemStatus;
19
21
  /** Handler for click events. */
20
22
  onClick?: MouseEventHandler;
23
+ /** Disclosure state when the item triggers a revealed region (e.g. a sub-nav panel). */
24
+ 'aria-expanded'?: boolean;
25
+ /** ID of the region this item controls when it acts as a disclosure trigger. */
26
+ 'aria-controls'?: string;
21
27
  /** Content to display. */
22
28
  children?: ReactNode;
23
29
  }
24
- export declare const NavItemBase: ({ current, type, badge, href, icon: Icon, children, truncate, onClick }: NavItemBaseProps) => import("react").JSX.Element;
30
+ export declare const NavItemBase: ({ current, type, badge, href, icon: Icon, children, truncate, status, onClick, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, }: NavItemBaseProps) => import("react").JSX.Element;
25
31
  export {};
26
32
  //# sourceMappingURL=nav-item.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nav-item.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ9E,UAAU,gBAAgB;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,mBAAmB,CAAC;IACnD,iCAAiC;IACjC,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5C,wBAAwB;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,GAAI,yEAAgF,gBAAgB,gCAkF3H,CAAC"}
1
+ {"version":3,"file":"nav-item.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAa9E,kEAAkE;AAClE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,UAAU,gBAAgB;IACxB,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,mBAAmB,CAAC;IACnD,iCAAiC;IACjC,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5C,wBAAwB;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gCAAgC;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,wFAAwF;IACxF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD,eAAO,MAAM,WAAW,GAAI,gJAYzB,gBAAgB,gCAmFlB,CAAC"}
@@ -4,25 +4,31 @@ import { Badge } from '@flipdish/ui-library/components/atoms/Badge';
4
4
  import { sortCx, cx } from '@flipdish/ui-library/utilities/cx';
5
5
  import { Link } from 'react-aria-components';
6
6
 
7
+ /**
8
+ * A single navigation item used across the sidebar. The active state uses the
9
+ * brand surface/text tokens (`bg-brand-primary`, `text-brand-secondary`), and an
10
+ * optional leading status dot can be rendered before the icon.
11
+ */
7
12
  const styles = sortCx({
8
- root: 'group relative flex max-h-9 w-full cursor-pointer items-center rounded-md bg-primary outline-focus-ring transition duration-100 ease-linear select-none hover:bg-primary_hover focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2',
9
- rootSelected: 'bg-secondary hover:bg-secondary_hover',
13
+ root: 'group/item relative flex max-h-9 w-full cursor-pointer items-center rounded-md bg-transparent outline-focus-ring transition duration-100 ease-linear select-none hover:bg-secondary_hover focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2',
14
+ rootSelected: 'bg-brand-primary hover:bg-brand-primary',
10
15
  });
11
- const NavItemBase = ({ current, type, badge, href, icon: Icon, children, truncate = true, onClick }) => {
12
- const iconElement = Icon && (jsx(Icon, { "aria-hidden": "true", className: cx('mr-2 size-5 shrink-0 text-fg-quaternary transition-inherit-all group-hover/item:text-fg-quaternary_hover', current && 'text-fg-quaternary_hover') }));
13
- const badgeElement = badge && (typeof badge === 'string' || typeof badge === 'number') ? (jsx(Badge, { className: "ml-3", color: "gray", type: "pill-color", size: "sm", children: badge })) : (badge);
14
- const labelElement = (jsx("span", { className: cx('flex-1 text-sm font-semibold text-secondary transition-inherit-all group-hover/item:text-secondary_hover', truncate && 'truncate', current && 'text-secondary_hover'), children: children }));
16
+ const StatusDot = ({ status }) => (jsx("span", { "aria-hidden": "true", className: cx('mr-2 size-2 shrink-0 rounded-full', status === 'online' ? 'bg-success-solid' : 'bg-fg-quaternary') }));
17
+ const NavItemBase = ({ current, type, badge, href, icon: Icon, children, truncate = true, status, onClick, 'aria-expanded': ariaExpanded, 'aria-controls': ariaControls, }) => {
18
+ const iconElement = Icon && (jsx(Icon, { "aria-hidden": "true", className: cx('mr-2 size-5 shrink-0 text-fg-quaternary transition-inherit-all group-hover/item:text-fg-quaternary_hover', current && 'text-fg-brand-primary') }));
19
+ const badgeElement = badge && (typeof badge === 'string' || typeof badge === 'number') ? (jsx(Badge, { className: "ml-3", color: current ? 'brand' : 'gray', type: "pill-color", size: "sm", children: badge })) : (badge);
20
+ const labelElement = (jsx("span", { className: cx('flex-1 text-sm font-semibold text-secondary transition-inherit-all group-hover/item:text-secondary_hover', truncate && 'truncate', current && 'text-brand-secondary group-hover/item:text-brand-secondary'), children: children }));
15
21
  const isExternal = href?.startsWith('http');
16
22
  const externalIcon = isExternal && jsx(Share04, { className: "size-4 stroke-[2.5px] text-fg-quaternary" });
17
23
  if (type === 'collapsible') {
18
24
  return (
19
25
  // biome-ignore lint/a11y/noStaticElementInteractions: This is a summary element
20
- jsxs("summary", { className: cx('p-2', styles.root, current && styles.rootSelected), onClick: onClick, children: [iconElement, labelElement, badgeElement, jsx(ChevronDown, { "aria-hidden": "true", className: "ml-3 size-4 shrink-0 stroke-[2.5px] text-fg-quaternary in-open:-scale-y-100" })] }));
26
+ jsxs("summary", { className: cx('p-2', styles.root, current && styles.rootSelected), onClick: onClick, children: [status && jsx(StatusDot, { status: status }), iconElement, labelElement, badgeElement, jsx(ChevronDown, { "aria-hidden": "true", className: "ml-3 size-4 shrink-0 stroke-[2.5px] text-fg-quaternary in-open:-scale-y-100" })] }));
21
27
  }
22
28
  if (type === 'collapsible-child') {
23
29
  return (jsxs(Link, { href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", className: cx('py-2 pr-3 pl-10', styles.root, current && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [labelElement, externalIcon, badgeElement] }));
24
30
  }
25
- return (jsxs(Link, { href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", className: cx('group/item p-2', styles.root, current && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [iconElement, labelElement, externalIcon, badgeElement] }));
31
+ return (jsxs(Link, { href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", className: cx('group/item p-2', styles.root, current && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, children: [status && jsx(StatusDot, { status: status }), iconElement, labelElement, externalIcon, badgeElement] }));
26
32
  };
27
33
 
28
34
  export { NavItemBase };
@@ -1 +1 @@
1
- {"version":3,"file":"nav-item.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","AriaLink"],"mappings":";;;;;;AAQA,MAAM,MAAM,GAAG,MAAM,CAAC;AACpB,IAAA,IAAI,EAAE,0PAA0P;AAChQ,IAAA,YAAY,EAAE,uCAAuC;AACtD,CAAA,CAAC;AAyBK,MAAM,WAAW,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,EAAoB,KAAI;IAC9H,MAAM,WAAW,GAAG,IAAI,KACtBA,GAAA,CAAC,IAAI,EAAA,EAAA,aAAA,EACS,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,0GAA0G,EAC1G,OAAO,IAAI,0BAA0B,CACtC,EAAA,CACD,CACH;IAED,MAAM,YAAY,GAChB,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,IAC/DA,GAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,IAAI,EAAA,QAAA,EAC7D,KAAK,GACA,KAER,KAAK,CACN;IAEH,MAAM,YAAY,IAChBA,GAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,0GAA0G,EAC1G,QAAQ,IAAI,UAAU,EACtB,OAAO,IAAI,sBAAsB,CAClC,EAAA,QAAA,EAEA,QAAQ,EAAA,CACJ,CACR;IAED,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC;IAC3C,MAAM,YAAY,GAAG,UAAU,IAAIA,GAAA,CAAC,OAAO,EAAA,EAAC,SAAS,EAAC,0CAA0C,EAAA,CAAG;AAEnG,IAAA,IAAI,IAAI,KAAK,aAAa,EAAE;QAC1B;;AAEE,QAAAC,IAAA,CAAA,SAAA,EAAA,EAAS,SAAS,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAA,QAAA,EAAA,CACzF,WAAW,EAEX,YAAY,EAEZ,YAAY,EAEbD,GAAA,CAAC,WAAW,EAAA,EAAA,aAAA,EAAa,MAAM,EAAC,SAAS,EAAC,6EAA6E,EAAA,CAAG,CAAA,EAAA,CAClH;IAEd;AAEA,IAAA,IAAI,IAAI,KAAK,mBAAmB,EAAE;AAChC,QAAA,QACEC,IAAA,CAACC,IAAQ,EAAA,EACP,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,EACvC,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,EAC7E,OAAO,EAAE,OAAO,EAAA,cAAA,EACF,OAAO,GAAG,MAAM,GAAG,SAAS,EAAA,QAAA,EAAA,CAEzC,YAAY,EACZ,YAAY,EACZ,YAAY,CAAA,EAAA,CACJ;IAEf;AAEA,IAAA,QACED,IAAA,CAACC,IAAQ,EAAA,EACP,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,EACvC,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,EAC5E,OAAO,EAAE,OAAO,EAAA,cAAA,EACF,OAAO,GAAG,MAAM,GAAG,SAAS,EAAA,QAAA,EAAA,CAEzC,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,CAAA,EAAA,CACJ;AAEf;;;;"}
1
+ {"version":3,"file":"nav-item.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","AriaLink"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var uiIcons = require('@flipdish/ui-icons');
5
+ var cx = require('@flipdish/ui-library/utilities/cx');
6
+ var reactAriaComponents = require('react-aria-components');
7
+
8
+ /**
9
+ * A standalone hamburger toggle for the `SidebarNavigation` mobile drawer. Drop
10
+ * it into your own header when you don't render the built-in mobile header
11
+ * (`showMobileHeader={false}`), and wire it to the same open-state you pass to
12
+ * `SidebarNavigation`'s `mobileMenuOpen` / `onMobileMenuOpenChange`.
13
+ *
14
+ * @summary hamburger toggle that opens the sidebar drawer from a custom header
15
+ */
16
+ const SidebarMenuButton = ({ isOpen = false, onPress, controls, 'aria-label': ariaLabel, className }) => (jsxRuntime.jsxs(reactAriaComponents.Button, { "aria-label": ariaLabel ?? (isOpen ? 'Close navigation menu' : 'Open navigation menu'), "aria-expanded": isOpen, "aria-controls": controls, onPress: onPress, className: cx.cx('relative flex items-center justify-center rounded-lg bg-transparent p-2 text-fg-secondary outline-focus-ring hover:bg-secondary_hover hover:text-fg-secondary_hover focus-visible:outline-2 focus-visible:outline-offset-2', className), children: [jsxRuntime.jsx(uiIcons.Menu02, { className: cx.cx('size-6 transition duration-200 ease-in-out', isOpen && 'opacity-0') }), jsxRuntime.jsx(uiIcons.X, { className: cx.cx('absolute size-6 opacity-0 transition duration-200 ease-in-out', isOpen && 'opacity-100') })] }));
17
+
18
+ exports.SidebarMenuButton = SidebarMenuButton;
19
+ //# sourceMappingURL=sidebar-menu-button.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-menu-button.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/components/sidebar-menu-button.tsx"],"sourcesContent":[null],"names":["_jsxs","AriaButton","cx","_jsx","Menu02","CloseIcon"],"mappings":";;;;;;;AAmBA;;;;;;;AAOG;AACI,MAAM,iBAAiB,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAA0B,MACjIA,eAAA,CAACC,0BAAU,kBACG,SAAS,KAAK,MAAM,GAAG,uBAAuB,GAAG,sBAAsB,CAAC,EAAA,eAAA,EACrE,MAAM,EAAA,eAAA,EACN,QAAQ,EACvB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAEC,KAAE,CACX,4NAA4N,EAC5N,SAAS,CACV,EAAA,QAAA,EAAA,CAEDC,eAACC,cAAM,EAAA,EAAC,SAAS,EAAEF,KAAE,CAAC,4CAA4C,EAAE,MAAM,IAAI,WAAW,CAAC,EAAA,CAAI,EAC9FC,eAACE,SAAS,EAAA,EAAC,SAAS,EAAEH,KAAE,CAAC,+DAA+D,EAAE,MAAM,IAAI,aAAa,CAAC,EAAA,CAAI,CAAA,EAAA,CAC3G;;;;"}
@@ -0,0 +1,22 @@
1
+ export interface SidebarMenuButtonProps {
2
+ /** Whether the drawer this button controls is open. Drives the Menu ⇄ X icon crossfade and `aria-expanded`. */
3
+ isOpen?: boolean;
4
+ /** Called when the button is pressed — toggle your drawer open-state here. */
5
+ onPress?: () => void;
6
+ /** ID of the drawer element this button controls, for `aria-controls`. */
7
+ controls?: string;
8
+ /** Accessible label. Defaults to "Open/Close navigation menu" based on `isOpen`. */
9
+ 'aria-label'?: string;
10
+ /** Additional CSS classes for the button. */
11
+ className?: string;
12
+ }
13
+ /**
14
+ * A standalone hamburger toggle for the `SidebarNavigation` mobile drawer. Drop
15
+ * it into your own header when you don't render the built-in mobile header
16
+ * (`showMobileHeader={false}`), and wire it to the same open-state you pass to
17
+ * `SidebarNavigation`'s `mobileMenuOpen` / `onMobileMenuOpenChange`.
18
+ *
19
+ * @summary hamburger toggle that opens the sidebar drawer from a custom header
20
+ */
21
+ export declare const SidebarMenuButton: ({ isOpen, onPress, controls, "aria-label": ariaLabel, className }: SidebarMenuButtonProps) => import("react").JSX.Element;
22
+ //# sourceMappingURL=sidebar-menu-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-menu-button.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/components/sidebar-menu-button.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,sBAAsB;IACrC,+GAA+G;IAC/G,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAI,mEAA2E,sBAAsB,gCAclI,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { Menu02, X } from '@flipdish/ui-icons';
3
+ import { cx } from '@flipdish/ui-library/utilities/cx';
4
+ import { Button } from 'react-aria-components';
5
+
6
+ /**
7
+ * A standalone hamburger toggle for the `SidebarNavigation` mobile drawer. Drop
8
+ * it into your own header when you don't render the built-in mobile header
9
+ * (`showMobileHeader={false}`), and wire it to the same open-state you pass to
10
+ * `SidebarNavigation`'s `mobileMenuOpen` / `onMobileMenuOpenChange`.
11
+ *
12
+ * @summary hamburger toggle that opens the sidebar drawer from a custom header
13
+ */
14
+ const SidebarMenuButton = ({ isOpen = false, onPress, controls, 'aria-label': ariaLabel, className }) => (jsxs(Button, { "aria-label": ariaLabel ?? (isOpen ? 'Close navigation menu' : 'Open navigation menu'), "aria-expanded": isOpen, "aria-controls": controls, onPress: onPress, className: cx('relative flex items-center justify-center rounded-lg bg-transparent p-2 text-fg-secondary outline-focus-ring hover:bg-secondary_hover hover:text-fg-secondary_hover focus-visible:outline-2 focus-visible:outline-offset-2', className), children: [jsx(Menu02, { className: cx('size-6 transition duration-200 ease-in-out', isOpen && 'opacity-0') }), jsx(X, { className: cx('absolute size-6 opacity-0 transition duration-200 ease-in-out', isOpen && 'opacity-100') })] }));
15
+
16
+ export { SidebarMenuButton };
17
+ //# sourceMappingURL=sidebar-menu-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-menu-button.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/sidebar-menu-button.tsx"],"sourcesContent":[null],"names":["_jsxs","AriaButton","_jsx","CloseIcon"],"mappings":";;;;;AAmBA;;;;;;;AAOG;AACI,MAAM,iBAAiB,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAA0B,MACjIA,IAAA,CAACC,MAAU,kBACG,SAAS,KAAK,MAAM,GAAG,uBAAuB,GAAG,sBAAsB,CAAC,EAAA,eAAA,EACrE,MAAM,EAAA,eAAA,EACN,QAAQ,EACvB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CACX,4NAA4N,EAC5N,SAAS,CACV,EAAA,QAAA,EAAA,CAEDC,IAAC,MAAM,EAAA,EAAC,SAAS,EAAE,EAAE,CAAC,4CAA4C,EAAE,MAAM,IAAI,WAAW,CAAC,EAAA,CAAI,EAC9FA,IAACC,CAAS,EAAA,EAAC,SAAS,EAAE,EAAE,CAAC,+DAA+D,EAAE,MAAM,IAAI,aAAa,CAAC,EAAA,CAAI,CAAA,EAAA,CAC3G;;;;"}
@@ -1,21 +1,149 @@
1
1
  'use strict';
2
2
 
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var uiIcons = require('@flipdish/ui-icons');
5
+ var FlipdishLogo = require('@flipdish/ui-library/components/atoms/FlipdishLogo');
6
+ var UtilityButton = require('@flipdish/ui-library/components/atoms/UtilityButton');
7
+ var cx = require('@flipdish/ui-library/utilities/cx');
8
+ var localStorageUtils = require('@flipdish/ui-library/utilities/localStorageUtils');
9
+ var react = require('motion/react');
10
+ var React = require('react');
11
+ var mobileHeader = require('./components/mobile-header.cjs');
3
12
  var navAccountCard = require('./components/nav-account-card.cjs');
13
+ var navButton = require('./components/nav-button.cjs');
4
14
  var navItem = require('./components/nav-item.cjs');
5
- var sidebarDualTier = require('./components/sidebar-dual-tier.cjs');
6
- var sidebarSectionDividers = require('./components/sidebar-section-dividers.cjs');
7
- var sidebarSectionsSubheadings = require('./components/sidebar-sections-subheadings.cjs');
8
- var sidebarSimple = require('./components/sidebar-simple.cjs');
9
- var sidebarSlim = require('./components/sidebar-slim.cjs');
10
-
15
+ var navList = require('./components/nav-list.cjs');
16
+ var sidebarMenuButton = require('./components/sidebar-menu-button.cjs');
11
17
 
18
+ const COLLAPSED_WIDTH = 68;
19
+ const EXPANDED_WIDTH = 280;
20
+ const SECONDARY_SIDEBAR_WIDTH = 256;
21
+ /**
22
+ * The primary app-shell navigation rail. It renders a logo, a list of
23
+ * destinations, footer links, and an account card, and can be toggled between a
24
+ * labelled list and an icon-only strip (the choice persists across reloads).
25
+ * Hovering, focusing, or pressing ArrowRight on a section with children reveals a
26
+ * secondary sub-navigation panel. Below the `lg` breakpoint it collapses into a
27
+ * mobile header with a slide-over menu.
28
+ *
29
+ * @summary collapsible app-shell sidebar with a hover-revealed sub-navigation panel
30
+ */
31
+ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, collapsed, defaultCollapsed = false, onCollapsedChange, persistCollapsed = true, hideBorder, hideRightBorder, showMobileHeader = true, mobileMenuOpen, onMobileMenuOpenChange, }) => {
32
+ const isControlled = collapsed !== undefined;
33
+ const [internalCollapsed, setInternalCollapsed] = React.useState(defaultCollapsed);
34
+ const isCollapsed = isControlled ? collapsed : internalCollapsed;
35
+ // Mobile drawer open-state: controlled when `mobileMenuOpen` is provided, else internal.
36
+ const isMobileMenuControlled = mobileMenuOpen !== undefined;
37
+ const [internalMobileMenuOpen, setInternalMobileMenuOpen] = React.useState(false);
38
+ const isMobileMenuOpen = isMobileMenuControlled ? mobileMenuOpen : internalMobileMenuOpen;
39
+ const setMobileMenuOpen = (next) => {
40
+ onMobileMenuOpenChange?.(next);
41
+ if (!isMobileMenuControlled)
42
+ setInternalMobileMenuOpen(next);
43
+ };
44
+ // Hydrate the persisted preference after mount to avoid an SSR hydration mismatch.
45
+ React.useEffect(() => {
46
+ if (isControlled || !persistCollapsed)
47
+ return;
48
+ const stored = localStorageUtils.sidebarCollapsedStorage.get();
49
+ if (stored !== null)
50
+ setInternalCollapsed(stored);
51
+ }, [isControlled, persistCollapsed]);
52
+ const setCollapsed = (next) => {
53
+ onCollapsedChange?.(next);
54
+ if (isControlled)
55
+ return;
56
+ setInternalCollapsed(next);
57
+ if (persistCollapsed)
58
+ localStorageUtils.sidebarCollapsedStorage.set(next);
59
+ };
60
+ const isActive = (item) => item.href === activeUrl || item.items?.some((sub) => sub.href === activeUrl);
61
+ // The secondary sub-navigation panel is revealed on hover/focus of a parent
62
+ // item (one with children); leaf items and clicks navigate straight to `href`.
63
+ const [panelItem, setPanelItem] = React.useState(undefined);
64
+ const [showSubNav, setShowSubNav] = React.useState(false);
65
+ const isSecondarySidebarVisible = showSubNav && Boolean(panelItem?.items?.length);
66
+ const panelId = React.useId();
67
+ // Ties the built-in mobile toggle to the drawer it opens via `aria-controls`.
68
+ const mobileMenuId = React.useId();
69
+ const panelRef = React.useRef(null);
70
+ // The primary item that opened the panel, so ArrowLeft/Escape can restore focus.
71
+ const triggerRef = React.useRef(null);
72
+ // Set when a keyboard action should move focus into the panel once it renders.
73
+ const focusPanelOnOpen = React.useRef(false);
74
+ // Guards the focus-reveal so restoring focus to a parent doesn't re-open the panel.
75
+ const suppressReveal = React.useRef(false);
76
+ const focusFirstPanelItem = () => panelRef.current?.querySelector('a, button')?.focus();
77
+ // Move focus into the panel once it has rendered after a keyboard-triggered open.
78
+ // biome-ignore lint/correctness/useExhaustiveDependencies: focusFirstPanelItem only reads the stable panelRef
79
+ React.useEffect(() => {
80
+ if (isSecondarySidebarVisible && focusPanelOnOpen.current) {
81
+ focusPanelOnOpen.current = false;
82
+ focusFirstPanelItem();
83
+ }
84
+ }, [isSecondarySidebarVisible]);
85
+ const revealSubNav = (item) => {
86
+ if (suppressReveal.current) {
87
+ suppressReveal.current = false;
88
+ return;
89
+ }
90
+ if (item.items?.length) {
91
+ setPanelItem(item);
92
+ setShowSubNav(true);
93
+ }
94
+ else {
95
+ // Hovering/focusing a leaf destination closes any open panel.
96
+ setShowSubNav(false);
97
+ }
98
+ };
99
+ const hideSubNav = () => setShowSubNav(false);
100
+ const handleContainerBlur = (event) => {
101
+ if (!event.currentTarget.contains(event.relatedTarget))
102
+ hideSubNav();
103
+ };
104
+ // ArrowRight on a parent item opens (if needed) and moves focus into the panel.
105
+ const handlePrimaryKeyDown = (item) => (event) => {
106
+ if (event.key !== 'ArrowRight' || !item.items?.length)
107
+ return;
108
+ event.preventDefault();
109
+ triggerRef.current = event.currentTarget.querySelector('a, button');
110
+ if (isSecondarySidebarVisible && panelItem?.label === item.label) {
111
+ focusFirstPanelItem();
112
+ }
113
+ else {
114
+ focusPanelOnOpen.current = true;
115
+ setPanelItem(item);
116
+ setShowSubNav(true);
117
+ }
118
+ };
119
+ // ArrowLeft/Escape inside the panel closes it and restores focus to the parent.
120
+ const handlePanelKeyDown = (event) => {
121
+ if (event.key !== 'ArrowLeft' && event.key !== 'Escape')
122
+ return;
123
+ event.preventDefault();
124
+ suppressReveal.current = true;
125
+ hideSubNav();
126
+ triggerRef.current?.focus();
127
+ };
128
+ const renderPrimaryItems = (list) => list.map((item) => {
129
+ const hasChildren = Boolean(item.items?.length);
130
+ const isOpen = hasChildren && isSecondarySidebarVisible && panelItem?.label === item.label;
131
+ // Disclosure semantics: parents announce their expanded state and, once open, the panel they control.
132
+ const disclosure = {
133
+ 'aria-expanded': hasChildren ? isOpen : undefined,
134
+ 'aria-controls': isOpen ? panelId : undefined,
135
+ };
136
+ return (jsxRuntime.jsx("li", { className: isCollapsed ? undefined : 'py-px', onMouseEnter: () => revealSubNav(item), onFocus: () => revealSubNav(item), onKeyDown: handlePrimaryKeyDown(item), children: isCollapsed ? (jsxRuntime.jsx(navButton.NavButton, { current: isActive(item), href: item.href, label: item.label || '', icon: item.icon, ...disclosure })) : (jsxRuntime.jsx(navItem.NavItemBase, { type: "link", current: isActive(item), href: item.href, icon: item.icon, badge: item.badge, ...disclosure, children: item.label })) }, item.label));
137
+ });
138
+ const mainSidebar = (jsxRuntime.jsxs(react.motion.aside, { animate: { width: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, transition: { type: 'spring', damping: 26, stiffness: 220, bounce: 0 }, className: cx.cx('flex h-full max-h-full flex-col justify-between overflow-x-hidden overflow-y-auto bg-secondary', !hideBorder && 'border-r border-secondary'), children: [jsxRuntime.jsxs("div", { className: "flex flex-col", children: [isCollapsed ? (jsxRuntime.jsx("div", { className: "flex justify-center px-3 py-5", children: jsxRuntime.jsx(UtilityButton.ButtonUtility, { size: "sm", color: "tertiary", tooltip: "Expand", "aria-label": "Expand navigation", icon: uiIcons.ChevronRightDouble, onClick: () => setCollapsed(false) }) })) : (jsxRuntime.jsxs("div", { className: "relative flex items-center px-5 py-5", children: [jsxRuntime.jsx(FlipdishLogo.FlipdishLogo, { size: "md" }), jsxRuntime.jsx("div", { className: "absolute top-5 right-4", children: jsxRuntime.jsx(UtilityButton.ButtonUtility, { size: "sm", color: "tertiary", tooltip: "Collapse", "aria-label": "Collapse navigation", icon: uiIcons.ChevronLeftDouble, onClick: () => setCollapsed(true) }) })] })), jsxRuntime.jsx("ul", { className: cx.cx('flex flex-col gap-0.5', isCollapsed ? 'items-center px-3.5' : 'px-4 pt-1'), children: renderPrimaryItems(items) })] }), jsxRuntime.jsxs("div", { className: cx.cx('mt-auto flex flex-col gap-3 py-4', isCollapsed ? 'items-center px-3' : 'px-4'), children: [footerItems.length > 0 && jsxRuntime.jsx("ul", { className: cx.cx('flex flex-col gap-0.5', isCollapsed && 'items-center'), children: renderPrimaryItems(footerItems) }), account &&
139
+ (isCollapsed ? (jsxRuntime.jsx(navAccountCard.NavAccountCard, { variant: "avatar", account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems })) : (jsxRuntime.jsx(navAccountCard.NavAccountCard, { account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems })))] })] }));
140
+ const secondarySidebar = panelItem && (jsxRuntime.jsx(react.AnimatePresence, { initial: false, children: isSecondarySidebarVisible && (jsxRuntime.jsx(react.motion.div, { ref: panelRef, id: panelId, onKeyDown: handlePanelKeyDown, role: "group", "aria-label": `${panelItem.label} pages`, initial: { width: 0, borderColor: 'var(--color-border-secondary)' }, animate: { width: SECONDARY_SIDEBAR_WIDTH, borderColor: 'var(--color-border-secondary)' }, exit: { width: 0, borderColor: 'rgba(0,0,0,0)', transition: { borderColor: { type: 'tween', delay: 0.05 } } }, transition: { type: 'spring', damping: 26, stiffness: 220, bounce: 0 }, className: cx.cx('relative h-full overflow-x-hidden overflow-y-auto bg-primary', !(hideBorder || hideRightBorder) && 'box-content border-r border-secondary'), children: jsxRuntime.jsxs("div", { style: { width: SECONDARY_SIDEBAR_WIDTH }, className: "flex h-full flex-col px-4 pt-6", children: [jsxRuntime.jsx("h3", { className: "px-2 text-sm font-semibold text-brand-secondary", children: panelItem.label }), jsxRuntime.jsx("ul", { className: "py-2", children: panelItem.items?.map((item) => (jsxRuntime.jsx("li", { className: "py-px", children: jsxRuntime.jsx(navItem.NavItemBase, { type: "link", current: activeUrl === item.href, href: item.href, icon: item.icon, badge: item.badge, children: item.label }) }, item.label))) })] }) })) }));
141
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: "z-50 hidden lg:fixed lg:inset-y-0 lg:left-0 lg:flex", onMouseLeave: hideSubNav, onBlur: handleContainerBlur, children: [mainSidebar, secondarySidebar] }), jsxRuntime.jsx("div", { style: { paddingLeft: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, className: "invisible hidden lg:sticky lg:top-0 lg:bottom-0 lg:left-0 lg:block" }), showMobileHeader && jsxRuntime.jsx(mobileHeader.MobileNavigationHeader, { isOpen: isMobileMenuOpen, onOpenChange: setMobileMenuOpen, controls: mobileMenuId }), jsxRuntime.jsx(mobileHeader.MobileNavigationDrawer, { id: mobileMenuId, isOpen: isMobileMenuOpen, onOpenChange: setMobileMenuOpen, children: jsxRuntime.jsxs("aside", { className: "group flex h-full max-h-full w-full max-w-full flex-col justify-between overflow-y-auto bg-secondary pt-4", children: [jsxRuntime.jsx("div", { className: "px-4", children: jsxRuntime.jsx(FlipdishLogo.FlipdishLogo, { size: "sm" }) }), jsxRuntime.jsx(navList.NavList, { activeUrl: activeUrl, items: items }), jsxRuntime.jsxs("div", { className: "mt-auto flex flex-col gap-3 p-4", children: [footerItems.length > 0 && (jsxRuntime.jsx("ul", { className: "flex flex-col gap-0.5", children: footerItems.map((item) => (jsxRuntime.jsx("li", { children: jsxRuntime.jsx(navItem.NavItemBase, { type: "link", current: activeUrl === item.href, href: item.href, icon: item.icon, badge: item.badge, children: item.label }) }, item.label))) })), account && jsxRuntime.jsx(navAccountCard.NavAccountCard, { account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems })] })] }) })] }));
142
+ };
12
143
 
13
144
  exports.NavAccountCard = navAccountCard.NavAccountCard;
14
145
  exports.NavAccountMenu = navAccountCard.NavAccountMenu;
15
146
  exports.NavItemBase = navItem.NavItemBase;
16
- exports.SidebarNavigationDualTier = sidebarDualTier.SidebarNavigationDualTier;
17
- exports.SidebarNavigationSectionDividers = sidebarSectionDividers.SidebarNavigationSectionDividers;
18
- exports.SidebarNavigationSectionsSubheadings = sidebarSectionsSubheadings.SidebarNavigationSectionsSubheadings;
19
- exports.SidebarNavigationSimple = sidebarSimple.SidebarNavigationSimple;
20
- exports.SidebarNavigationSlim = sidebarSlim.SidebarNavigationSlim;
147
+ exports.SidebarMenuButton = sidebarMenuButton.SidebarMenuButton;
148
+ exports.SidebarNavigation = SidebarNavigation;
21
149
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"sourcesContent":[null],"names":["useState","useEffect","sidebarCollapsedStorage","useId","useRef","_jsx","NavButton","NavItemBase","_jsxs","motion","cx","ButtonUtility","ChevronRightDouble","FlipdishLogo","ChevronLeftDouble","NavAccountCard","AnimatePresence","MobileNavigationHeader","MobileNavigationDrawer","NavList"],"mappings":"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"}
@@ -1,8 +1,56 @@
1
- export { NavAccountCard, type NavAccountData, NavAccountMenu, type NavAccountMenuItemType, type NavAccountType, } from './components/nav-account-card';
2
- export { NavItemBase } from './components/nav-item';
3
- export { SidebarNavigationDualTier } from './components/sidebar-dual-tier';
4
- export { SidebarNavigationSectionDividers } from './components/sidebar-section-dividers';
5
- export { SidebarNavigationSectionsSubheadings } from './components/sidebar-sections-subheadings';
6
- export { SidebarNavigationSimple } from './components/sidebar-simple';
7
- export { SidebarNavigationSlim } from './components/sidebar-slim';
1
+ import type { FC } from 'react';
2
+ import { type NavAccountData } from './components/nav-account-card';
3
+ import type { NavItemType } from './sidebarNavigation.types';
4
+ export { NavAccountCard, type NavAccountData, NavAccountMenu, type NavAccountMenuItemType, type NavAccountType } from './components/nav-account-card';
5
+ export { NavItemBase, type NavItemStatus } from './components/nav-item';
6
+ export { SidebarMenuButton, type SidebarMenuButtonProps } from './components/sidebar-menu-button';
7
+ type SidebarNavItem = NavItemType & {
8
+ icon: FC<{
9
+ className?: string;
10
+ }>;
11
+ };
12
+ export interface SidebarNavigationProps {
13
+ /** URL of the currently active item. */
14
+ activeUrl?: string;
15
+ /** List of items to display. Every item requires an icon for the collapsed rail. */
16
+ items: SidebarNavItem[];
17
+ /** List of footer items to display. */
18
+ footerItems?: SidebarNavItem[];
19
+ /** Account configuration for the card at the bottom of the sidebar. When omitted the account card is not rendered. */
20
+ account?: NavAccountData;
21
+ /** Controlled collapsed state. When provided, the component is controlled and the parent owns persistence. */
22
+ collapsed?: boolean;
23
+ /** Initial collapsed state when uncontrolled. @default false */
24
+ defaultCollapsed?: boolean;
25
+ /** Called whenever the user toggles the rail. */
26
+ onCollapsedChange?: (collapsed: boolean) => void;
27
+ /** Persist the collapsed state to localStorage (uncontrolled mode only). @default true */
28
+ persistCollapsed?: boolean;
29
+ /** Whether to hide the border when the secondary panel is closed. */
30
+ hideBorder?: boolean;
31
+ /** Whether to hide the right side border of the secondary panel. */
32
+ hideRightBorder?: boolean;
33
+ /**
34
+ * Whether to render the built-in mobile header (logo + hamburger) below the `lg`
35
+ * breakpoint. Set `false` to supply your own trigger — embed a `SidebarMenuButton`
36
+ * in a custom header and drive the drawer via `mobileMenuOpen`/`onMobileMenuOpenChange`.
37
+ * @default true
38
+ */
39
+ showMobileHeader?: boolean;
40
+ /** Controlled open state of the mobile drawer. When provided, the parent owns the state. */
41
+ mobileMenuOpen?: boolean;
42
+ /** Called whenever the mobile drawer opens or closes. */
43
+ onMobileMenuOpenChange?: (open: boolean) => void;
44
+ }
45
+ /**
46
+ * The primary app-shell navigation rail. It renders a logo, a list of
47
+ * destinations, footer links, and an account card, and can be toggled between a
48
+ * labelled list and an icon-only strip (the choice persists across reloads).
49
+ * Hovering, focusing, or pressing ArrowRight on a section with children reveals a
50
+ * secondary sub-navigation panel. Below the `lg` breakpoint it collapses into a
51
+ * mobile header with a slide-over menu.
52
+ *
53
+ * @summary collapsible app-shell sidebar with a hover-revealed sub-navigation panel
54
+ */
55
+ export declare const SidebarNavigation: ({ activeUrl, items, footerItems, account, collapsed, defaultCollapsed, onCollapsedChange, persistCollapsed, hideBorder, hideRightBorder, showMobileHeader, mobileMenuOpen, onMobileMenuOpenChange, }: SidebarNavigationProps) => import("react").JSX.Element;
8
56
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,cAAc,EACnB,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,cAAc,GACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,oCAAoC,EAAE,MAAM,2CAA2C,CAAC;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,EAAE,EAA6B,MAAM,OAAO,CAAC;AAG3D,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAIpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,cAAc,EAAE,KAAK,sBAAsB,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACtJ,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAElG,KAAK,cAAc,GAAG,WAAW,GAAG;IAAE,IAAI,EAAE,EAAE,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAEzE,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,uCAAuC;IACvC,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,sHAAsH;IACtH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,8GAA8G;IAC9G,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oEAAoE;IACpE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4FAA4F;IAC5F,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD;AAMD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,sMAc/B,sBAAsB,gCAuQxB,CAAC"}