@arbor-education/design-system.components 0.23.1 → 0.24.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.
- package/CHANGELOG.md +12 -0
- package/dist/components/sidebarNav/SidebarNav.d.ts +46 -0
- package/dist/components/sidebarNav/SidebarNav.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNav.js +102 -0
- package/dist/components/sidebarNav/SidebarNav.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNav.stories.d.ts +61 -0
- package/dist/components/sidebarNav/SidebarNav.stories.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNav.stories.js +253 -0
- package/dist/components/sidebarNav/SidebarNav.stories.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNav.test.d.ts +2 -0
- package/dist/components/sidebarNav/SidebarNav.test.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNav.test.js +240 -0
- package/dist/components/sidebarNav/SidebarNav.test.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavContext.d.ts +13 -0
- package/dist/components/sidebarNav/SidebarNavContext.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavContext.js +15 -0
- package/dist/components/sidebarNav/SidebarNavContext.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavGroup.d.ts +10 -0
- package/dist/components/sidebarNav/SidebarNavGroup.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavGroup.js +16 -0
- package/dist/components/sidebarNav/SidebarNavGroup.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavItem.d.ts +32 -0
- package/dist/components/sidebarNav/SidebarNavItem.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavItem.js +43 -0
- package/dist/components/sidebarNav/SidebarNavItem.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts +8 -0
- package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavItemFavourite.js +14 -0
- package/dist/components/sidebarNav/SidebarNavItemFavourite.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavPanel.d.ts +4 -0
- package/dist/components/sidebarNav/SidebarNavPanel.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavPanel.js +9 -0
- package/dist/components/sidebarNav/SidebarNavPanel.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts +10 -0
- package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavPanelNav.js +21 -0
- package/dist/components/sidebarNav/SidebarNavPanelNav.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRail.d.ts +6 -0
- package/dist/components/sidebarNav/SidebarNavRail.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRail.js +7 -0
- package/dist/components/sidebarNav/SidebarNavRail.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRailItem.d.ts +10 -0
- package/dist/components/sidebarNav/SidebarNavRailItem.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRailItem.js +24 -0
- package/dist/components/sidebarNav/SidebarNavRailItem.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRailList.d.ts +4 -0
- package/dist/components/sidebarNav/SidebarNavRailList.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRailList.js +7 -0
- package/dist/components/sidebarNav/SidebarNavRailList.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts +6 -0
- package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavRailSlot.js +7 -0
- package/dist/components/sidebarNav/SidebarNavRailSlot.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavSeparator.d.ts +6 -0
- package/dist/components/sidebarNav/SidebarNavSeparator.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavSeparator.js +8 -0
- package/dist/components/sidebarNav/SidebarNavSeparator.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavTitle.d.ts +4 -0
- package/dist/components/sidebarNav/SidebarNavTitle.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavTitle.js +7 -0
- package/dist/components/sidebarNav/SidebarNavTitle.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavTooltip.d.ts +7 -0
- package/dist/components/sidebarNav/SidebarNavTooltip.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavTooltip.js +9 -0
- package/dist/components/sidebarNav/SidebarNavTooltip.js.map +1 -0
- package/dist/components/sidebarNav/SidebarNavTrigger.d.ts +8 -0
- package/dist/components/sidebarNav/SidebarNavTrigger.d.ts.map +1 -0
- package/dist/components/sidebarNav/SidebarNavTrigger.js +15 -0
- package/dist/components/sidebarNav/SidebarNavTrigger.js.map +1 -0
- package/dist/components/sidebarNav/index.d.ts +4 -0
- package/dist/components/sidebarNav/index.d.ts.map +1 -0
- package/dist/components/sidebarNav/index.js +3 -0
- package/dist/components/sidebarNav/index.js.map +1 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.d.ts +4 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.d.ts.map +1 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.js +43 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.js.map +1 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts +2 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts.map +1 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.test.js +52 -0
- package/dist/components/sidebarNav/resolvePanelItemProps.test.js.map +1 -0
- package/dist/components/sidebarNav/types.d.ts +100 -0
- package/dist/components/sidebarNav/types.d.ts.map +1 -0
- package/dist/components/sidebarNav/types.js +4 -0
- package/dist/components/sidebarNav/types.js.map +1 -0
- package/dist/components/sidebarNav/useControllableBoolean.d.ts +9 -0
- package/dist/components/sidebarNav/useControllableBoolean.d.ts.map +1 -0
- package/dist/components/sidebarNav/useControllableBoolean.js +14 -0
- package/dist/components/sidebarNav/useControllableBoolean.js.map +1 -0
- package/dist/index.css +287 -10
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +7 -4
- package/src/components/sidebarNav/SidebarNav.stories.tsx +484 -0
- package/src/components/sidebarNav/SidebarNav.test.tsx +611 -0
- package/src/components/sidebarNav/SidebarNav.tsx +230 -0
- package/src/components/sidebarNav/SidebarNavContext.tsx +28 -0
- package/src/components/sidebarNav/SidebarNavGroup.tsx +59 -0
- package/src/components/sidebarNav/SidebarNavItem.tsx +160 -0
- package/src/components/sidebarNav/SidebarNavItemFavourite.tsx +49 -0
- package/src/components/sidebarNav/SidebarNavPanel.tsx +20 -0
- package/src/components/sidebarNav/SidebarNavPanelNav.tsx +55 -0
- package/src/components/sidebarNav/SidebarNavRail.tsx +20 -0
- package/src/components/sidebarNav/SidebarNavRailItem.tsx +84 -0
- package/src/components/sidebarNav/SidebarNavRailList.tsx +11 -0
- package/src/components/sidebarNav/SidebarNavRailSlot.tsx +15 -0
- package/src/components/sidebarNav/SidebarNavSeparator.tsx +19 -0
- package/src/components/sidebarNav/SidebarNavTitle.tsx +13 -0
- package/src/components/sidebarNav/SidebarNavTooltip.tsx +24 -0
- package/src/components/sidebarNav/SidebarNavTrigger.tsx +52 -0
- package/src/components/sidebarNav/index.ts +6 -0
- package/src/components/sidebarNav/resolvePanelItemProps.test.ts +57 -0
- package/src/components/sidebarNav/resolvePanelItemProps.ts +50 -0
- package/src/components/sidebarNav/sidebarNav.scss +283 -0
- package/src/components/sidebarNav/types.ts +126 -0
- package/src/components/sidebarNav/useControllableBoolean.ts +20 -0
- package/src/index.scss +1 -0
- package/src/index.ts +12 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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":"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"}
|
|
@@ -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 @@
|
|
|
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"}
|