@arbor-education/design-system.components 0.23.2 → 0.24.1

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 (124) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/CONTRIBUTING.md +24 -22
  3. package/dist/components/sidebarNav/SidebarNav.d.ts +46 -0
  4. package/dist/components/sidebarNav/SidebarNav.d.ts.map +1 -0
  5. package/dist/components/sidebarNav/SidebarNav.js +102 -0
  6. package/dist/components/sidebarNav/SidebarNav.js.map +1 -0
  7. package/dist/components/sidebarNav/SidebarNav.stories.d.ts +61 -0
  8. package/dist/components/sidebarNav/SidebarNav.stories.d.ts.map +1 -0
  9. package/dist/components/sidebarNav/SidebarNav.stories.js +253 -0
  10. package/dist/components/sidebarNav/SidebarNav.stories.js.map +1 -0
  11. package/dist/components/sidebarNav/SidebarNav.test.d.ts +2 -0
  12. package/dist/components/sidebarNav/SidebarNav.test.d.ts.map +1 -0
  13. package/dist/components/sidebarNav/SidebarNav.test.js +240 -0
  14. package/dist/components/sidebarNav/SidebarNav.test.js.map +1 -0
  15. package/dist/components/sidebarNav/SidebarNavContext.d.ts +13 -0
  16. package/dist/components/sidebarNav/SidebarNavContext.d.ts.map +1 -0
  17. package/dist/components/sidebarNav/SidebarNavContext.js +15 -0
  18. package/dist/components/sidebarNav/SidebarNavContext.js.map +1 -0
  19. package/dist/components/sidebarNav/SidebarNavGroup.d.ts +10 -0
  20. package/dist/components/sidebarNav/SidebarNavGroup.d.ts.map +1 -0
  21. package/dist/components/sidebarNav/SidebarNavGroup.js +16 -0
  22. package/dist/components/sidebarNav/SidebarNavGroup.js.map +1 -0
  23. package/dist/components/sidebarNav/SidebarNavItem.d.ts +32 -0
  24. package/dist/components/sidebarNav/SidebarNavItem.d.ts.map +1 -0
  25. package/dist/components/sidebarNav/SidebarNavItem.js +43 -0
  26. package/dist/components/sidebarNav/SidebarNavItem.js.map +1 -0
  27. package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts +8 -0
  28. package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts.map +1 -0
  29. package/dist/components/sidebarNav/SidebarNavItemFavourite.js +14 -0
  30. package/dist/components/sidebarNav/SidebarNavItemFavourite.js.map +1 -0
  31. package/dist/components/sidebarNav/SidebarNavPanel.d.ts +4 -0
  32. package/dist/components/sidebarNav/SidebarNavPanel.d.ts.map +1 -0
  33. package/dist/components/sidebarNav/SidebarNavPanel.js +9 -0
  34. package/dist/components/sidebarNav/SidebarNavPanel.js.map +1 -0
  35. package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts +10 -0
  36. package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts.map +1 -0
  37. package/dist/components/sidebarNav/SidebarNavPanelNav.js +21 -0
  38. package/dist/components/sidebarNav/SidebarNavPanelNav.js.map +1 -0
  39. package/dist/components/sidebarNav/SidebarNavRail.d.ts +6 -0
  40. package/dist/components/sidebarNav/SidebarNavRail.d.ts.map +1 -0
  41. package/dist/components/sidebarNav/SidebarNavRail.js +7 -0
  42. package/dist/components/sidebarNav/SidebarNavRail.js.map +1 -0
  43. package/dist/components/sidebarNav/SidebarNavRailItem.d.ts +10 -0
  44. package/dist/components/sidebarNav/SidebarNavRailItem.d.ts.map +1 -0
  45. package/dist/components/sidebarNav/SidebarNavRailItem.js +24 -0
  46. package/dist/components/sidebarNav/SidebarNavRailItem.js.map +1 -0
  47. package/dist/components/sidebarNav/SidebarNavRailList.d.ts +4 -0
  48. package/dist/components/sidebarNav/SidebarNavRailList.d.ts.map +1 -0
  49. package/dist/components/sidebarNav/SidebarNavRailList.js +7 -0
  50. package/dist/components/sidebarNav/SidebarNavRailList.js.map +1 -0
  51. package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts +6 -0
  52. package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts.map +1 -0
  53. package/dist/components/sidebarNav/SidebarNavRailSlot.js +7 -0
  54. package/dist/components/sidebarNav/SidebarNavRailSlot.js.map +1 -0
  55. package/dist/components/sidebarNav/SidebarNavSeparator.d.ts +6 -0
  56. package/dist/components/sidebarNav/SidebarNavSeparator.d.ts.map +1 -0
  57. package/dist/components/sidebarNav/SidebarNavSeparator.js +8 -0
  58. package/dist/components/sidebarNav/SidebarNavSeparator.js.map +1 -0
  59. package/dist/components/sidebarNav/SidebarNavTitle.d.ts +4 -0
  60. package/dist/components/sidebarNav/SidebarNavTitle.d.ts.map +1 -0
  61. package/dist/components/sidebarNav/SidebarNavTitle.js +7 -0
  62. package/dist/components/sidebarNav/SidebarNavTitle.js.map +1 -0
  63. package/dist/components/sidebarNav/SidebarNavTooltip.d.ts +7 -0
  64. package/dist/components/sidebarNav/SidebarNavTooltip.d.ts.map +1 -0
  65. package/dist/components/sidebarNav/SidebarNavTooltip.js +9 -0
  66. package/dist/components/sidebarNav/SidebarNavTooltip.js.map +1 -0
  67. package/dist/components/sidebarNav/SidebarNavTrigger.d.ts +8 -0
  68. package/dist/components/sidebarNav/SidebarNavTrigger.d.ts.map +1 -0
  69. package/dist/components/sidebarNav/SidebarNavTrigger.js +15 -0
  70. package/dist/components/sidebarNav/SidebarNavTrigger.js.map +1 -0
  71. package/dist/components/sidebarNav/index.d.ts +4 -0
  72. package/dist/components/sidebarNav/index.d.ts.map +1 -0
  73. package/dist/components/sidebarNav/index.js +3 -0
  74. package/dist/components/sidebarNav/index.js.map +1 -0
  75. package/dist/components/sidebarNav/resolvePanelItemProps.d.ts +4 -0
  76. package/dist/components/sidebarNav/resolvePanelItemProps.d.ts.map +1 -0
  77. package/dist/components/sidebarNav/resolvePanelItemProps.js +43 -0
  78. package/dist/components/sidebarNav/resolvePanelItemProps.js.map +1 -0
  79. package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts +2 -0
  80. package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts.map +1 -0
  81. package/dist/components/sidebarNav/resolvePanelItemProps.test.js +52 -0
  82. package/dist/components/sidebarNav/resolvePanelItemProps.test.js.map +1 -0
  83. package/dist/components/sidebarNav/types.d.ts +100 -0
  84. package/dist/components/sidebarNav/types.d.ts.map +1 -0
  85. package/dist/components/sidebarNav/types.js +4 -0
  86. package/dist/components/sidebarNav/types.js.map +1 -0
  87. package/dist/components/sidebarNav/useControllableBoolean.d.ts +9 -0
  88. package/dist/components/sidebarNav/useControllableBoolean.d.ts.map +1 -0
  89. package/dist/components/sidebarNav/useControllableBoolean.js +14 -0
  90. package/dist/components/sidebarNav/useControllableBoolean.js.map +1 -0
  91. package/dist/index.css +275 -0
  92. package/dist/index.css.map +1 -1
  93. package/dist/index.d.ts +3 -0
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +2 -0
  96. package/dist/index.js.map +1 -1
  97. package/package.json +1 -1
  98. package/src/components/sidebarNav/SidebarNav.stories.tsx +484 -0
  99. package/src/components/sidebarNav/SidebarNav.test.tsx +611 -0
  100. package/src/components/sidebarNav/SidebarNav.tsx +230 -0
  101. package/src/components/sidebarNav/SidebarNavContext.tsx +28 -0
  102. package/src/components/sidebarNav/SidebarNavGroup.tsx +59 -0
  103. package/src/components/sidebarNav/SidebarNavItem.tsx +160 -0
  104. package/src/components/sidebarNav/SidebarNavItemFavourite.tsx +49 -0
  105. package/src/components/sidebarNav/SidebarNavPanel.tsx +20 -0
  106. package/src/components/sidebarNav/SidebarNavPanelNav.tsx +55 -0
  107. package/src/components/sidebarNav/SidebarNavRail.tsx +20 -0
  108. package/src/components/sidebarNav/SidebarNavRailItem.tsx +84 -0
  109. package/src/components/sidebarNav/SidebarNavRailList.tsx +11 -0
  110. package/src/components/sidebarNav/SidebarNavRailSlot.tsx +15 -0
  111. package/src/components/sidebarNav/SidebarNavSeparator.tsx +19 -0
  112. package/src/components/sidebarNav/SidebarNavTitle.tsx +13 -0
  113. package/src/components/sidebarNav/SidebarNavTooltip.tsx +24 -0
  114. package/src/components/sidebarNav/SidebarNavTrigger.tsx +52 -0
  115. package/src/components/sidebarNav/index.ts +6 -0
  116. package/src/components/sidebarNav/resolvePanelItemProps.test.ts +57 -0
  117. package/src/components/sidebarNav/resolvePanelItemProps.ts +50 -0
  118. package/src/components/sidebarNav/sidebarNav.scss +283 -0
  119. package/src/components/sidebarNav/types.ts +126 -0
  120. package/src/components/sidebarNav/useControllableBoolean.ts +20 -0
  121. package/src/docs/Contributing.mdx +7 -0
  122. package/src/index.scss +1 -0
  123. package/src/index.ts +12 -0
  124. package/src/tokens.scss +14 -0
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ import { useSidebarNavContext } from './SidebarNavContext.js';
4
+ import { SidebarNavTooltip } from './SidebarNavTooltip.js';
5
+ export const SidebarNavRailItem = (props) => {
6
+ const { href, onClick, current, 'aria-label': ariaLabel, 'data-testid': dataTestId, className, children, ...rest } = props;
7
+ const { renderLink } = useSidebarNavContext();
8
+ const itemClassName = classNames('ds-sidebar-nav__rail-item', { 'ds-sidebar-nav__rail-item--selected': Boolean(current) });
9
+ const content = (_jsx("span", { className: "ds-sidebar-nav__rail-badge-anchor", children: children }));
10
+ const trigger = href
11
+ ? (renderLink
12
+ ? renderLink({
13
+ href,
14
+ className: itemClassName,
15
+ ariaCurrent: current ? 'page' : undefined,
16
+ ariaLabel,
17
+ onClick,
18
+ children: content,
19
+ })
20
+ : (_jsx("a", { href: href, className: itemClassName, "aria-current": current ? 'page' : undefined, "aria-label": ariaLabel, onClick: onClick, children: content })))
21
+ : (_jsx("button", { type: "button", className: itemClassName, "aria-current": current ? 'page' : undefined, "aria-label": ariaLabel, onClick: onClick, children: content }));
22
+ return (_jsx("li", { className: classNames('ds-sidebar-nav__rail-list-item', className), "data-testid": dataTestId, ...rest, children: _jsx(SidebarNavTooltip, { label: ariaLabel, children: trigger }) }));
23
+ };
24
+ //# sourceMappingURL=SidebarNavRailItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavRailItem.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavRailItem.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAU3D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACnE,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,YAAY,EAAE,SAAS,EACvB,aAAa,EAAE,UAAU,EACzB,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,MAAM,EAAE,UAAU,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAE9C,MAAM,aAAa,GAAG,UAAU,CAC9B,2BAA2B,EAC3B,EAAE,qCAAqC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAC5D,CAAC;IAEF,MAAM,OAAO,GAAG,CACd,eAAM,SAAS,EAAC,mCAAmC,YAAE,QAAQ,GAAQ,CACtE,CAAC;IAEF,MAAM,OAAO,GACT,IAAI;QACJ,CAAC,CAAC,CACE,UAAU;YACR,CAAC,CAAC,UAAU,CAAC;gBACT,IAAI;gBACJ,SAAS,EAAE,aAAa;gBACxB,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACzC,SAAS;gBACT,OAAO;gBACP,QAAQ,EAAE,OAAO;aAClB,CAAC;YACJ,CAAC,CAAC,CACE,YACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,aAAa,kBACV,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,gBAC9B,SAAS,EACrB,OAAO,EAAE,OAAO,YAEf,OAAO,GACN,CACL,CACN;QACH,CAAC,CAAC,CACE,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,aAAa,kBACV,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,gBAC9B,SAAS,EACrB,OAAO,EAAE,OAAO,YAEf,OAAO,GACD,CACV,CAAC;IAER,OAAO,CACL,aACE,SAAS,EAAE,UAAU,CAAC,gCAAgC,EAAE,SAAS,CAAC,iBACrD,UAAU,KACnB,IAAI,YAER,KAAC,iBAAiB,IAAC,KAAK,EAAE,SAAS,YAChC,OAAO,GACU,GACjB,CACN,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export type SidebarNavRailListProps = HTMLAttributes<HTMLUListElement>;
3
+ export declare const SidebarNavRailList: (props: SidebarNavRailListProps) => import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=SidebarNavRailList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavRailList.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavRailList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,uBAAuB,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;AAEvE,eAAO,MAAM,kBAAkB,GAAI,OAAO,uBAAuB,4CAKhE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ export const SidebarNavRailList = (props) => {
4
+ const { className, ...rest } = props;
5
+ return (_jsx("ul", { className: classNames('ds-sidebar-nav__rail-list', className), ...rest }));
6
+ };
7
+ //# sourceMappingURL=SidebarNavRailList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavRailList.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavRailList.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAKpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACnE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACrC,OAAO,CACL,aAAI,SAAS,EAAE,UAAU,CAAC,2BAA2B,EAAE,SAAS,CAAC,KAAM,IAAI,GAAI,CAChF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export type SidebarNavRailSlotProps = {
3
+ children: React.ReactNode;
4
+ } & Omit<HTMLAttributes<HTMLLIElement>, 'children'>;
5
+ export declare const SidebarNavRailSlot: (props: SidebarNavRailSlotProps) => import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=SidebarNavRailSlot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavRailSlot.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavRailSlot.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,kBAAkB,GAAI,OAAO,uBAAuB,4CAOhE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ export const SidebarNavRailSlot = (props) => {
4
+ const { children, className, ...rest } = props;
5
+ return (_jsx("li", { className: classNames('ds-sidebar-nav__rail-list-item', className), ...rest, children: children }));
6
+ };
7
+ //# sourceMappingURL=SidebarNavRailSlot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavRailSlot.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavRailSlot.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAOpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC/C,OAAO,CACL,aAAI,SAAS,EAAE,UAAU,CAAC,gCAAgC,EAAE,SAAS,CAAC,KAAM,IAAI,YAC7E,QAAQ,GACN,CACN,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type SidebarNavSeparatorProps = {
2
+ id?: string;
3
+ className?: string;
4
+ };
5
+ export declare const SidebarNavSeparator: (props: SidebarNavSeparatorProps) => import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=SidebarNavSeparator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavSeparator.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavSeparator.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO,wBAAwB,4CAUlE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Separator } from '../separator/Separator.js';
3
+ import classNames from 'classnames';
4
+ export const SidebarNavSeparator = (props) => {
5
+ const { id, className } = props;
6
+ return (_jsx(Separator, { orientation: "horizontal", decorative: true, className: classNames('ds-sidebar-nav__separator', className), "data-testid": id ? `sidebar-nav-rail-separator-${id}` : 'sidebar-nav-rail-separator' }));
7
+ };
8
+ //# sourceMappingURL=SidebarNavSeparator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavSeparator.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavSeparator.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,UAAU,MAAM,YAAY,CAAC;AAOpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAA+B,EAAE,EAAE;IACrE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAChC,OAAO,CACL,KAAC,SAAS,IACR,WAAW,EAAC,YAAY,EACxB,UAAU,QACV,SAAS,EAAE,UAAU,CAAC,2BAA2B,EAAE,SAAS,CAAC,iBAChD,EAAE,CAAC,CAAC,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC,CAAC,4BAA4B,GACnF,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export type SidebarNavTitleProps = HTMLAttributes<HTMLHeadingElement>;
3
+ export declare const SidebarNavTitle: (props: SidebarNavTitleProps) => import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=SidebarNavTitle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavTitle.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavTitle.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;AAEtE,eAAO,MAAM,eAAe,GAAI,OAAO,oBAAoB,4CAO1D,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ export const SidebarNavTitle = (props) => {
4
+ const { className, children, ...rest } = props;
5
+ return (_jsx("h2", { className: classNames('ds-sidebar-nav__title', className), ...rest, children: children }));
6
+ };
7
+ //# sourceMappingURL=SidebarNavTitle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavTitle.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavTitle.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAKpC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAA2B,EAAE,EAAE;IAC7D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC/C,OAAO,CACL,aAAI,SAAS,EAAE,UAAU,CAAC,uBAAuB,EAAE,SAAS,CAAC,KAAM,IAAI,YACpE,QAAQ,GACN,CACN,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type SidebarNavTooltipProps = {
2
+ label: string;
3
+ children: React.ReactElement;
4
+ side?: 'left' | 'right';
5
+ };
6
+ export declare const SidebarNavTooltip: (props: SidebarNavTooltipProps) => import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=SidebarNavTooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavTooltip.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavTooltip.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,OAAO,sBAAsB,4CAa9D,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { TooltipContent } from '../tooltip/TooltipContent.js';
3
+ import { TooltipTrigger } from '../tooltip/TooltipTrigger.js';
4
+ import { Tooltip as TooltipPrimitive } from 'radix-ui';
5
+ export const SidebarNavTooltip = (props) => {
6
+ const { label, children, side = 'right' } = props;
7
+ return (_jsxs(TooltipPrimitive.Root, { disableHoverableContent: true, delayDuration: 400, children: [_jsx(TooltipTrigger, { onPointerDown: event => event.preventDefault(), children: children }), _jsx(TooltipContent, { side: side, sideOffset: 8, arrowPadding: 0, children: label })] }));
8
+ };
9
+ //# sourceMappingURL=SidebarNavTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavTooltip.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavTooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAQvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAA6B,EAAE,EAAE;IACjE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;IAElD,OAAO,CACL,MAAC,gBAAgB,CAAC,IAAI,IAAC,uBAAuB,QAAC,aAAa,EAAE,GAAG,aAC/D,KAAC,cAAc,IAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,YAC3D,QAAQ,GACM,EACjB,KAAC,cAAc,IAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YACvD,KAAK,GACS,IACK,CACzB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ButtonHTMLAttributes } from 'react';
2
+ export declare const SIDEBAR_NAV_TRIGGER_TOOLTIP = "Show/hide sub navigation";
3
+ export type SidebarNavTriggerProps = {
4
+ 'tooltip'?: string;
5
+ 'data-testid'?: string;
6
+ } & ButtonHTMLAttributes<HTMLButtonElement>;
7
+ export declare const SidebarNavTrigger: (props: SidebarNavTriggerProps) => import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=SidebarNavTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavTrigger.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavTrigger.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAIlD,eAAO,MAAM,2BAA2B,6BAA6B,CAAC;AAEtE,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAE5C,eAAO,MAAM,iBAAiB,GAAI,OAAO,sBAAsB,4CAuC9D,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ import { useSidebarNavContext } from './SidebarNavContext.js';
4
+ import { SidebarNavTooltip } from './SidebarNavTooltip.js';
5
+ export const SIDEBAR_NAV_TRIGGER_TOOLTIP = 'Show/hide sub navigation';
6
+ export const SidebarNavTrigger = (props) => {
7
+ const { tooltip = SIDEBAR_NAV_TRIGGER_TOOLTIP, className, onClick, children, 'data-testid': dataTestId = 'sidebar-nav-panel-trigger', ...rest } = props;
8
+ const { expanded, setExpanded, panelId } = useSidebarNavContext();
9
+ const button = (_jsx("button", { type: "button", "aria-controls": panelId, "aria-expanded": expanded, "aria-label": tooltip, className: classNames('ds-sidebar-nav__rail-item', { 'ds-sidebar-nav__rail-item--selected': expanded }, className), "data-testid": dataTestId, onClick: (e) => {
10
+ setExpanded(!expanded);
11
+ onClick?.(e);
12
+ }, ...rest, children: children }));
13
+ return (_jsx(SidebarNavTooltip, { label: tooltip, children: button }));
14
+ };
15
+ //# sourceMappingURL=SidebarNavTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavTrigger.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavTrigger.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,2BAA2B,GAAG,0BAA0B,CAAC;AAOtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAA6B,EAAE,EAAE;IACjE,MAAM,EACJ,OAAO,GAAG,2BAA2B,EACrC,SAAS,EACT,OAAO,EACP,QAAQ,EACR,aAAa,EAAE,UAAU,GAAG,2BAA2B,EACvD,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAElE,MAAM,MAAM,GAAG,CACb,iBACE,IAAI,EAAC,QAAQ,mBACE,OAAO,mBACP,QAAQ,gBACX,OAAO,EACnB,SAAS,EAAE,UAAU,CACnB,2BAA2B,EAC3B,EAAE,qCAAqC,EAAE,QAAQ,EAAE,EACnD,SAAS,CACV,iBACY,UAAU,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;YACvB,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC,KACG,IAAI,YAEP,QAAQ,GACF,CACV,CAAC;IAEF,OAAO,CACL,KAAC,iBAAiB,IAAC,KAAK,EAAE,OAAO,YAC9B,MAAM,GACW,CACrB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { SidebarNav } from './SidebarNav.js';
2
+ export { isSidebarNavRailSeparator } from './types.js';
3
+ export type { SidebarNavGroupNode, SidebarNavItemNode, SidebarNavNode, SidebarNavProps, SidebarNavRailEntry, SidebarNavRailItemConfig, SidebarNavRailSeparatorConfig, SidebarNavRenderLinkArgs, } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACvD,YAAY,EACV,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,6BAA6B,EACtJ,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { SidebarNav } from './SidebarNav.js';
2
+ export { isSidebarNavRailSeparator } from './types.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SidebarNavItemProps } from './SidebarNavItem.js';
2
+ import type { SidebarNavItemNode } from './types.js';
3
+ export declare function resolvePanelItemProps(node: SidebarNavItemNode): SidebarNavItemProps;
4
+ //# sourceMappingURL=resolvePanelItemProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvePanelItemProps.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/resolvePanelItemProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,GAAG,mBAAmB,CA8CnF"}
@@ -0,0 +1,43 @@
1
+ export function resolvePanelItemProps(node) {
2
+ const base = {
3
+ itemId: node.id,
4
+ current: node.current,
5
+ isPressed: node.isPressed,
6
+ onFavouriteClick: node.onFavouriteClick,
7
+ children: node.label,
8
+ };
9
+ const hasHref = 'href' in node && node.href != null;
10
+ if (node.canFavourite) {
11
+ if (hasHref) {
12
+ return {
13
+ ...base,
14
+ canFavourite: true,
15
+ favouriteTooltip: node.favouriteTooltip,
16
+ href: node.href,
17
+ onClick: node.onClick,
18
+ linkProps: node.linkProps,
19
+ };
20
+ }
21
+ return {
22
+ ...base,
23
+ canFavourite: true,
24
+ favouriteTooltip: node.favouriteTooltip,
25
+ linkElement: 'button',
26
+ onClick: node.onClick,
27
+ };
28
+ }
29
+ if (hasHref) {
30
+ return {
31
+ ...base,
32
+ href: node.href,
33
+ onClick: node.onClick,
34
+ linkProps: node.linkProps,
35
+ };
36
+ }
37
+ return {
38
+ ...base,
39
+ linkElement: 'button',
40
+ onClick: node.onClick,
41
+ };
42
+ }
43
+ //# sourceMappingURL=resolvePanelItemProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvePanelItemProps.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/resolvePanelItemProps.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,qBAAqB,CAAC,IAAwB;IAC5D,MAAM,IAAI,GAAG;QACX,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,QAAQ,EAAE,IAAI,CAAC,KAAK;KACrB,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;IAEpD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;gBACL,GAAG,IAAI;gBACP,YAAY,EAAE,IAAI;gBAClB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,WAAW,EAAE,QAAQ;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,WAAW,EAAE,QAAQ;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=resolvePanelItemProps.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvePanelItemProps.test.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/resolvePanelItemProps.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import { describe, expect, test } from 'vitest';
2
+ import { resolvePanelItemProps } from './resolvePanelItemProps.js';
3
+ describe('resolvePanelItemProps', () => {
4
+ test('maps href item to link variant with top-level onClick', () => {
5
+ const onClick = () => { };
6
+ const props = resolvePanelItemProps({
7
+ type: 'item',
8
+ id: 'daily',
9
+ label: 'Daily Attendance',
10
+ href: '/daily',
11
+ onClick,
12
+ });
13
+ expect(props).toEqual({
14
+ itemId: 'daily',
15
+ children: 'Daily Attendance',
16
+ href: '/daily',
17
+ onClick,
18
+ });
19
+ });
20
+ test('maps onClick-only item to button variant with top-level onClick', () => {
21
+ const onClick = () => { };
22
+ const props = resolvePanelItemProps({
23
+ type: 'item',
24
+ id: 'action',
25
+ label: 'Run action',
26
+ onClick,
27
+ });
28
+ expect(props).toEqual({
29
+ itemId: 'action',
30
+ children: 'Run action',
31
+ linkElement: 'button',
32
+ onClick,
33
+ });
34
+ });
35
+ test('maps favourite href item with canFavourite and favouriteTooltip', () => {
36
+ const props = resolvePanelItemProps({
37
+ type: 'item',
38
+ id: 'daily',
39
+ label: 'Daily Attendance',
40
+ href: '/daily',
41
+ canFavourite: true,
42
+ favouriteTooltip: 'Add to favourites',
43
+ });
44
+ expect(props).toMatchObject({
45
+ itemId: 'daily',
46
+ canFavourite: true,
47
+ favouriteTooltip: 'Add to favourites',
48
+ href: '/daily',
49
+ });
50
+ });
51
+ });
52
+ //# sourceMappingURL=resolvePanelItemProps.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvePanelItemProps.test.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/resolvePanelItemProps.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,uDAAuD,EAAE,GAAG,EAAE;QACjE,MAAM,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,qBAAqB,CAAC;YAClC,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,QAAQ;YACd,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YACpB,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,kBAAkB;YAC5B,IAAI,EAAE,QAAQ;YACd,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;QAC3E,MAAM,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,qBAAqB,CAAC;YAClC,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,YAAY;YACnB,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YACpB,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,YAAY;YACtB,WAAW,EAAE,QAAQ;YACrB,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;QAC3E,MAAM,KAAK,GAAG,qBAAqB,CAAC;YAClC,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE,mBAAmB;SACtC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;YAC1B,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE,mBAAmB;YACrC,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,100 @@
1
+ import type { IconName } from '../icon/allowedIcons.js';
2
+ import type { Icon } from '../icon/Icon.js';
3
+ import type { AnchorHTMLAttributes } from 'react';
4
+ export type SidebarNavLinkProps = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'children' | 'className'> & Record<`data-${string}`, string | number | boolean | undefined>;
5
+ export type SidebarNavRenderLinkArgs = {
6
+ href: string;
7
+ className: string;
8
+ children: React.ReactNode;
9
+ ariaCurrent?: 'page';
10
+ ariaLabel?: string;
11
+ onClick?: React.MouseEventHandler;
12
+ linkProps?: SidebarNavLinkProps;
13
+ linkElementProps?: Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'className' | 'children'>;
14
+ };
15
+ type SidebarNavItemNodeFavouriteFields = {
16
+ canFavourite?: false;
17
+ favouriteTooltip?: never;
18
+ } | {
19
+ canFavourite: true;
20
+ favouriteTooltip: string;
21
+ };
22
+ type SidebarNavItemNodeLinkFields = {
23
+ href: string;
24
+ onClick?: React.MouseEventHandler;
25
+ };
26
+ type SidebarNavItemNodeButtonFields = {
27
+ href?: never;
28
+ onClick: React.MouseEventHandler;
29
+ };
30
+ export type SidebarNavItemNode = {
31
+ type: 'item';
32
+ id: string;
33
+ label: string;
34
+ current?: boolean;
35
+ linkProps?: SidebarNavLinkProps;
36
+ isPressed?: boolean;
37
+ onFavouriteClick?: React.MouseEventHandler<HTMLButtonElement>;
38
+ } & SidebarNavItemNodeFavouriteFields & (SidebarNavItemNodeLinkFields | SidebarNavItemNodeButtonFields);
39
+ export type SidebarNavGroupNode = {
40
+ type: 'group';
41
+ id: string;
42
+ label: string;
43
+ children: SidebarNavNode[];
44
+ defaultExpanded?: boolean;
45
+ expanded?: boolean;
46
+ onExpandedChange?: (expanded: boolean) => void;
47
+ };
48
+ export type SidebarNavNode = SidebarNavItemNode | SidebarNavGroupNode;
49
+ export type SidebarNavRailSeparatorConfig = {
50
+ type: 'separator';
51
+ id: string;
52
+ };
53
+ export type SidebarNavIconColor = Icon.Props['color'];
54
+ type SidebarNavRailItemBase = {
55
+ type?: 'item';
56
+ id: string;
57
+ label: string;
58
+ onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;
59
+ };
60
+ export type SidebarNavRailItemStandard = SidebarNavRailItemBase & {
61
+ iconName: IconName;
62
+ href?: string;
63
+ current?: boolean;
64
+ badgeContent?: React.ReactNode;
65
+ iconColor?: SidebarNavIconColor;
66
+ renderItem?: never;
67
+ opensPanel?: false;
68
+ };
69
+ export type SidebarNavRailItemPanelTrigger = SidebarNavRailItemBase & {
70
+ opensPanel: true;
71
+ iconName: IconName;
72
+ iconColor?: SidebarNavIconColor;
73
+ renderItem?: never;
74
+ href?: never;
75
+ badgeContent?: never;
76
+ current?: never;
77
+ };
78
+ export type SidebarNavRailItemCustom = SidebarNavRailItemBase & {
79
+ renderItem: (item: SidebarNavRailItemCustom) => React.ReactNode;
80
+ iconName?: never;
81
+ iconColor?: never;
82
+ href?: never;
83
+ opensPanel?: never;
84
+ badgeContent?: never;
85
+ current?: never;
86
+ };
87
+ export type SidebarNavRailItemConfig = SidebarNavRailItemStandard | SidebarNavRailItemPanelTrigger | SidebarNavRailItemCustom;
88
+ export type SidebarNavRailEntry = SidebarNavRailItemConfig | SidebarNavRailSeparatorConfig;
89
+ export declare function isSidebarNavRailSeparator(entry: SidebarNavRailEntry): entry is SidebarNavRailSeparatorConfig;
90
+ export type SidebarNavProps = {
91
+ expanded?: boolean;
92
+ defaultExpanded?: boolean;
93
+ onExpandedChange?: (expanded: boolean) => void;
94
+ renderLink?: (args: SidebarNavRenderLinkArgs) => React.ReactElement;
95
+ railItems?: SidebarNavRailEntry[];
96
+ panelTitle?: string;
97
+ panelNavItems?: SidebarNavNode[];
98
+ } & React.HTMLAttributes<HTMLDivElement>;
99
+ export {};
100
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAElD,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,MAAM,GAAG,UAAU,GAAG,WAAW,CAClC,GAAG,MAAM,CAAC,QAAQ,MAAM,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAEpE,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IAClC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,gBAAgB,CAAC,EAAE,IAAI,CACrB,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,MAAM,GAAG,WAAW,GAAG,UAAU,CAClC,CAAC;CACH,CAAC;AAEF,KAAK,iCAAiC,GAChC;IAAE,YAAY,CAAC,EAAE,KAAK,CAAC;IAAC,gBAAgB,CAAC,EAAE,KAAK,CAAA;CAAE,GAClD;IAAE,YAAY,EAAE,IAAI,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;CACnC,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;CAC/D,GAAG,iCAAiC,GACnC,CAAC,4BAA4B,GAAG,8BAA8B,CAAC,CAAC;AAElE,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAEtE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAEtD,KAAK,sBAAsB,GAAG;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,sBAAsB,GAAG;IAChE,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,sBAAsB,GAAG;IACpE,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,sBAAsB,GAAG;IAC9D,UAAU,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,KAAK,CAAC,SAAS,CAAC;IAChE,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAC9B,0BAA0B,GAC1B,8BAA8B,GAC9B,wBAAwB,CAAC;AAE/B,MAAM,MAAM,mBAAmB,GAAG,wBAAwB,GAAG,6BAA6B,CAAC;AAE3F,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,mBAAmB,GACzB,KAAK,IAAI,6BAA6B,CAExC;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,KAAK,CAAC,YAAY,CAAC;IACpE,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;CAClC,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export function isSidebarNavRailSeparator(entry) {
2
+ return 'type' in entry && entry.type === 'separator';
3
+ }
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/types.ts"],"names":[],"mappings":"AA+GA,MAAM,UAAU,yBAAyB,CACvC,KAA0B;IAE1B,OAAO,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC;AACvD,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare function useControllableBoolean(args: {
2
+ value?: boolean;
3
+ defaultValue: boolean;
4
+ onChange?: (next: boolean) => void;
5
+ }): {
6
+ value: boolean;
7
+ set: (next: boolean) => void;
8
+ };
9
+ //# sourceMappingURL=useControllableBoolean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useControllableBoolean.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/useControllableBoolean.ts"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;;gBAOgC,OAAO;EAMvC"}
@@ -0,0 +1,14 @@
1
+ import { useCallback, useMemo, useState } from 'react';
2
+ export function useControllableBoolean(args) {
3
+ const { value, defaultValue, onChange } = args;
4
+ const [uncontrolled, setUncontrolled] = useState(defaultValue);
5
+ const isControlled = typeof value === 'boolean';
6
+ const current = isControlled ? value : uncontrolled;
7
+ const set = useCallback((next) => {
8
+ if (!isControlled)
9
+ setUncontrolled(next);
10
+ onChange?.(next);
11
+ }, [isControlled, onChange]);
12
+ return useMemo(() => ({ value: current, set }), [current, set]);
13
+ }
14
+ //# sourceMappingURL=useControllableBoolean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useControllableBoolean.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/useControllableBoolean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,UAAU,sBAAsB,CAAC,IAItC;IACC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC/C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,SAAS,CAAC;IAEhD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAE,KAAiB,CAAC,CAAC,CAAC,YAAY,CAAC;IAEjE,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,IAAa,EAAE,EAAE;QACxC,IAAI,CAAC,YAAY;YAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QACzC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE7B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAClE,CAAC"}