@salt-ds/core 1.47.5 → 1.48.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 (96) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/css/salt-core.css +171 -1
  3. package/dist-cjs/banner/Banner.css.js +1 -1
  4. package/dist-cjs/collapsible/Collapsible.js +52 -0
  5. package/dist-cjs/collapsible/Collapsible.js.map +1 -0
  6. package/dist-cjs/collapsible/CollapsibleContext.js +29 -0
  7. package/dist-cjs/collapsible/CollapsibleContext.js.map +1 -0
  8. package/dist-cjs/collapsible/CollapsiblePanel.css.js +6 -0
  9. package/dist-cjs/collapsible/CollapsiblePanel.css.js.map +1 -0
  10. package/dist-cjs/collapsible/CollapsiblePanel.js +46 -0
  11. package/dist-cjs/collapsible/CollapsiblePanel.js.map +1 -0
  12. package/dist-cjs/collapsible/CollapsibleTrigger.js +40 -0
  13. package/dist-cjs/collapsible/CollapsibleTrigger.js.map +1 -0
  14. package/dist-cjs/index.js +21 -0
  15. package/dist-cjs/index.js.map +1 -1
  16. package/dist-cjs/vertical-navigation/SubMenuContext.js +39 -0
  17. package/dist-cjs/vertical-navigation/SubMenuContext.js.map +1 -0
  18. package/dist-cjs/vertical-navigation/VerticalNavigation.css.js +6 -0
  19. package/dist-cjs/vertical-navigation/VerticalNavigation.css.js.map +1 -0
  20. package/dist-cjs/vertical-navigation/VerticalNavigation.js +38 -0
  21. package/dist-cjs/vertical-navigation/VerticalNavigation.js.map +1 -0
  22. package/dist-cjs/vertical-navigation/VerticalNavigationItem.js +53 -0
  23. package/dist-cjs/vertical-navigation/VerticalNavigationItem.js.map +1 -0
  24. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js +6 -0
  25. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js.map +1 -0
  26. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js +88 -0
  27. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js.map +1 -0
  28. package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js +35 -0
  29. package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +1 -0
  30. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js +6 -0
  31. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js.map +1 -0
  32. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js +28 -0
  33. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js.map +1 -0
  34. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js +6 -0
  35. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +1 -0
  36. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js +74 -0
  37. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js.map +1 -0
  38. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js +6 -0
  39. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js.map +1 -0
  40. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js +39 -0
  41. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js.map +1 -0
  42. package/dist-es/banner/Banner.css.js +1 -1
  43. package/dist-es/collapsible/Collapsible.js +50 -0
  44. package/dist-es/collapsible/Collapsible.js.map +1 -0
  45. package/dist-es/collapsible/CollapsibleContext.js +26 -0
  46. package/dist-es/collapsible/CollapsibleContext.js.map +1 -0
  47. package/dist-es/collapsible/CollapsiblePanel.css.js +4 -0
  48. package/dist-es/collapsible/CollapsiblePanel.css.js.map +1 -0
  49. package/dist-es/collapsible/CollapsiblePanel.js +44 -0
  50. package/dist-es/collapsible/CollapsiblePanel.js.map +1 -0
  51. package/dist-es/collapsible/CollapsibleTrigger.js +38 -0
  52. package/dist-es/collapsible/CollapsibleTrigger.js.map +1 -0
  53. package/dist-es/index.js +10 -0
  54. package/dist-es/index.js.map +1 -1
  55. package/dist-es/vertical-navigation/SubMenuContext.js +35 -0
  56. package/dist-es/vertical-navigation/SubMenuContext.js.map +1 -0
  57. package/dist-es/vertical-navigation/VerticalNavigation.css.js +4 -0
  58. package/dist-es/vertical-navigation/VerticalNavigation.css.js.map +1 -0
  59. package/dist-es/vertical-navigation/VerticalNavigation.js +36 -0
  60. package/dist-es/vertical-navigation/VerticalNavigation.js.map +1 -0
  61. package/dist-es/vertical-navigation/VerticalNavigationItem.js +50 -0
  62. package/dist-es/vertical-navigation/VerticalNavigationItem.js.map +1 -0
  63. package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js +4 -0
  64. package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js.map +1 -0
  65. package/dist-es/vertical-navigation/VerticalNavigationItemContent.js +86 -0
  66. package/dist-es/vertical-navigation/VerticalNavigationItemContent.js.map +1 -0
  67. package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js +33 -0
  68. package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +1 -0
  69. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js +4 -0
  70. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js.map +1 -0
  71. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js +26 -0
  72. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js.map +1 -0
  73. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js +4 -0
  74. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +1 -0
  75. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js +72 -0
  76. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js.map +1 -0
  77. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js +4 -0
  78. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js.map +1 -0
  79. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js +37 -0
  80. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js.map +1 -0
  81. package/dist-types/collapsible/Collapsible.d.ts +16 -0
  82. package/dist-types/collapsible/CollapsibleContext.d.ts +9 -0
  83. package/dist-types/collapsible/CollapsiblePanel.d.ts +4 -0
  84. package/dist-types/collapsible/CollapsibleTrigger.d.ts +5 -0
  85. package/dist-types/collapsible/index.d.ts +3 -0
  86. package/dist-types/index.d.ts +2 -0
  87. package/dist-types/vertical-navigation/SubMenuContext.d.ts +14 -0
  88. package/dist-types/vertical-navigation/VerticalNavigation.d.ts +8 -0
  89. package/dist-types/vertical-navigation/VerticalNavigationItem.d.ts +12 -0
  90. package/dist-types/vertical-navigation/VerticalNavigationItemContent.d.ts +4 -0
  91. package/dist-types/vertical-navigation/VerticalNavigationItemExpansionIcon.d.ts +2 -0
  92. package/dist-types/vertical-navigation/VerticalNavigationItemLabel.d.ts +4 -0
  93. package/dist-types/vertical-navigation/VerticalNavigationItemTrigger.d.ts +6 -0
  94. package/dist-types/vertical-navigation/VerticalNavigationSubMenu.d.ts +4 -0
  95. package/dist-types/vertical-navigation/index.d.ts +7 -0
  96. package/package.json +1 -1
@@ -0,0 +1,38 @@
1
+ import { jsx, Fragment } from 'react/jsx-runtime';
2
+ import { clsx } from 'clsx';
3
+ import { forwardRef, isValidElement, cloneElement } from 'react';
4
+ import { makePrefixer } from '../utils/makePrefixer.js';
5
+ import { mergeProps } from '../utils/mergeProps.js';
6
+ import '../utils/useFloatingUI/useFloatingUI.js';
7
+ import '../utils/useId.js';
8
+ import '../salt-provider/SaltProvider.js';
9
+ import '../viewport/ViewportProvider.js';
10
+ import { useCollapsibleContext } from './CollapsibleContext.js';
11
+
12
+ const withBaseName = makePrefixer("saltCollapsibleTrigger");
13
+ const CollapsibleTrigger = forwardRef(function CollapsibleTrigger2(props, ref) {
14
+ const { children, className, onClick } = props;
15
+ const { open, setOpen, panelId } = useCollapsibleContext();
16
+ const handleClick = (event) => {
17
+ setOpen(event, !open);
18
+ onClick == null ? void 0 : onClick(event);
19
+ };
20
+ if (!children || !isValidElement(children)) {
21
+ return /* @__PURE__ */ jsx(Fragment, { children });
22
+ }
23
+ return cloneElement(children, {
24
+ ...mergeProps(
25
+ {
26
+ className: clsx(withBaseName(), className),
27
+ "aria-expanded": open,
28
+ "aria-controls": panelId,
29
+ onClick: handleClick
30
+ },
31
+ children.props
32
+ ),
33
+ ref
34
+ });
35
+ });
36
+
37
+ export { CollapsibleTrigger };
38
+ //# sourceMappingURL=CollapsibleTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsibleTrigger.js","sources":["../src/collapsible/CollapsibleTrigger.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n cloneElement,\n forwardRef,\n isValidElement,\n type MouseEvent,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport { makePrefixer, mergeProps } from \"../utils\";\nimport { useCollapsibleContext } from \"./CollapsibleContext\";\n\nexport interface CollapsibleTriggerProps\n extends Pick<ComponentPropsWithoutRef<\"button\">, \"className\" | \"onClick\"> {\n children: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltCollapsibleTrigger\");\n\nexport const CollapsibleTrigger = forwardRef<\n HTMLButtonElement,\n CollapsibleTriggerProps\n>(function CollapsibleTrigger(props, ref) {\n const { children, className, onClick } = props;\n\n const { open, setOpen, panelId } = useCollapsibleContext();\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n setOpen(event, !open);\n onClick?.(event);\n };\n\n if (!children || !isValidElement<{ ref?: Ref<unknown> }>(children)) {\n // Should we log or throw error?\n return <>{children}</>;\n }\n\n return cloneElement(children, {\n ...mergeProps(\n {\n className: clsx(withBaseName(), className),\n \"aria-expanded\": open,\n \"aria-controls\": panelId,\n onClick: handleClick,\n },\n children.props,\n ),\n ref,\n });\n});\n"],"names":["CollapsibleTrigger"],"mappings":";;;;;;;;;;;AAkBA,MAAM,YAAA,GAAe,aAAa,wBAAwB,CAAA;AAEnD,MAAM,kBAAqB,GAAA,UAAA,CAGhC,SAASA,mBAAAA,CAAmB,OAAO,GAAK,EAAA;AACxC,EAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,OAAA,EAAY,GAAA,KAAA;AAEzC,EAAA,MAAM,EAAE,IAAA,EAAM,OAAS,EAAA,OAAA,KAAY,qBAAsB,EAAA;AAEzD,EAAM,MAAA,WAAA,GAAc,CAAC,KAAyC,KAAA;AAC5D,IAAQ,OAAA,CAAA,KAAA,EAAO,CAAC,IAAI,CAAA;AACpB,IAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AAAA,GACZ;AAEA,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,cAAA,CAAuC,QAAQ,CAAG,EAAA;AAElE,IAAA,uCAAU,QAAS,EAAA,CAAA;AAAA;AAGrB,EAAA,OAAO,aAAa,QAAU,EAAA;AAAA,IAC5B,GAAG,UAAA;AAAA,MACD;AAAA,QACE,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,eAAiB,EAAA,IAAA;AAAA,QACjB,eAAiB,EAAA,OAAA;AAAA,QACjB,OAAS,EAAA;AAAA,OACX;AAAA,MACA,QAAS,CAAA;AAAA,KACX;AAAA,IACA;AAAA,GACD,CAAA;AACH,CAAC;;;;"}
package/dist-es/index.js CHANGED
@@ -22,6 +22,9 @@ export { Card } from './card/Card.js';
22
22
  export { Checkbox } from './checkbox/Checkbox.js';
23
23
  export { CheckboxGroup } from './checkbox/CheckboxGroup.js';
24
24
  export { CheckboxIcon } from './checkbox/CheckboxIcon.js';
25
+ export { Collapsible } from './collapsible/Collapsible.js';
26
+ export { CollapsiblePanel } from './collapsible/CollapsiblePanel.js';
27
+ export { CollapsibleTrigger } from './collapsible/CollapsibleTrigger.js';
25
28
  export { ComboBox } from './combo-box/ComboBox.js';
26
29
  export { ConditionalScrimWrapper, Dialog } from './dialog/Dialog.js';
27
30
  export { DialogActions } from './dialog/DialogActions.js';
@@ -143,5 +146,12 @@ export { usePrevious } from './utils/usePrevious.js';
143
146
  export { useResizeObserver } from './utils/useResizeObserver.js';
144
147
  export { getCurrentBreakpoint, resolveResponsiveValue, useCurrentBreakpoint, useOrderedBreakpoints, useResponsiveProp } from './utils/useResponsiveProp.js';
145
148
  export { useValueEffect } from './utils/useValueEffect.js';
149
+ export { VerticalNavigation } from './vertical-navigation/VerticalNavigation.js';
150
+ export { VerticalNavigationItem, useVerticalNavigationItem } from './vertical-navigation/VerticalNavigationItem.js';
151
+ export { VerticalNavigationItemContent } from './vertical-navigation/VerticalNavigationItemContent.js';
152
+ export { VerticalNavigationItemExpansionIcon } from './vertical-navigation/VerticalNavigationItemExpansionIcon.js';
153
+ export { VerticalNavigationItemLabel } from './vertical-navigation/VerticalNavigationItemLabel.js';
154
+ export { VerticalNavigationItemTrigger } from './vertical-navigation/VerticalNavigationItemTrigger.js';
155
+ export { VerticalNavigationSubMenu } from './vertical-navigation/VerticalNavigationSubMenu.js';
146
156
  export { ViewportContext, ViewportProvider, useViewport } from './viewport/ViewportProvider.js';
147
157
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,35 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useMemo, useContext } from 'react';
3
+ import { createContext } from '../utils/createContext.js';
4
+ import 'clsx';
5
+ import '../utils/useFloatingUI/useFloatingUI.js';
6
+ import '../utils/useId.js';
7
+ import '../salt-provider/SaltProvider.js';
8
+ import '../viewport/ViewportProvider.js';
9
+
10
+ const SubMenuContext = createContext(
11
+ "SubMenuContext",
12
+ { depth: -1, iconPaddingCount: 0 }
13
+ );
14
+ const useSubMenuContext = () => {
15
+ return useContext(SubMenuContext);
16
+ };
17
+ function SubMenuProvider({
18
+ children,
19
+ directIcons,
20
+ setDirectIcons
21
+ }) {
22
+ const { depth, iconPaddingCount } = useSubMenuContext();
23
+ const context = useMemo(
24
+ () => ({
25
+ depth: depth + 1,
26
+ iconPaddingCount: iconPaddingCount + (directIcons.length > 0 ? 1 : 0),
27
+ setDirectIcons
28
+ }),
29
+ [depth, iconPaddingCount, directIcons, setDirectIcons]
30
+ );
31
+ return /* @__PURE__ */ jsx(SubMenuContext.Provider, { value: context, children });
32
+ }
33
+
34
+ export { SubMenuContext, SubMenuProvider, useSubMenuContext };
35
+ //# sourceMappingURL=SubMenuContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubMenuContext.js","sources":["../src/vertical-navigation/SubMenuContext.tsx"],"sourcesContent":["import {\n type Dispatch,\n type ReactNode,\n type SetStateAction,\n useContext,\n useMemo,\n} from \"react\";\nimport { createContext } from \"../utils\";\n\ntype SubMenuContextValue = {\n depth: number;\n iconPaddingCount: number;\n setDirectIcons?: Dispatch<SetStateAction<string[]>>;\n};\n\nexport const SubMenuContext = createContext<SubMenuContextValue>(\n \"SubMenuContext\",\n { depth: -1, iconPaddingCount: 0 },\n);\n\nexport const useSubMenuContext = () => {\n return useContext(SubMenuContext);\n};\n\nexport function SubMenuProvider({\n children,\n directIcons,\n setDirectIcons,\n}: {\n children: ReactNode;\n directIcons: string[];\n setDirectIcons?: Dispatch<SetStateAction<string[]>>;\n}) {\n const { depth, iconPaddingCount } = useSubMenuContext();\n\n const context = useMemo(\n () => ({\n depth: depth + 1,\n iconPaddingCount: iconPaddingCount + (directIcons.length > 0 ? 1 : 0),\n setDirectIcons,\n }),\n [depth, iconPaddingCount, directIcons, setDirectIcons],\n );\n\n return (\n <SubMenuContext.Provider value={context}>\n {children}\n </SubMenuContext.Provider>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAeO,MAAM,cAAiB,GAAA,aAAA;AAAA,EAC5B,gBAAA;AAAA,EACA,EAAE,KAAA,EAAO,EAAI,EAAA,gBAAA,EAAkB,CAAE;AACnC;AAEO,MAAM,oBAAoB,MAAM;AACrC,EAAA,OAAO,WAAW,cAAc,CAAA;AAClC;AAEO,SAAS,eAAgB,CAAA;AAAA,EAC9B,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAIG,EAAA;AACD,EAAA,MAAM,EAAE,KAAA,EAAO,gBAAiB,EAAA,GAAI,iBAAkB,EAAA;AAEtD,EAAA,MAAM,OAAU,GAAA,OAAA;AAAA,IACd,OAAO;AAAA,MACL,OAAO,KAAQ,GAAA,CAAA;AAAA,MACf,gBAAkB,EAAA,gBAAA,IAAoB,WAAY,CAAA,MAAA,GAAS,IAAI,CAAI,GAAA,CAAA,CAAA;AAAA,MACnE;AAAA,KACF,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,gBAAkB,EAAA,WAAA,EAAa,cAAc;AAAA,GACvD;AAEA,EAAA,2BACG,cAAe,CAAA,QAAA,EAAf,EAAwB,KAAA,EAAO,SAC7B,QACH,EAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltVerticalNavigation ol {\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-fixed-100);\n list-style: none;\n padding: 0;\n margin: 0;\n position: relative;\n}\n\n.saltVerticalNavigationSubMenu > .saltDivider-horizontal,\n.saltVerticalNavigationItem > .saltDivider-horizontal,\n.saltVerticalNavigation ol > .saltDivider-horizontal {\n margin-bottom: calc(var(--salt-size-fixed-100) * -1);\n}\n\n.saltVerticalNavigation [data-has-direct-icons=\"false\"] .saltCollapsiblePanel-inner {\n margin-bottom: calc(var(--salt-size-fixed-100) * -1);\n}\n\n.saltVerticalNavigation [data-has-direct-icons=\"false\"] .saltCollapsiblePanel-inner .saltVerticalNavigationSubMenu {\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-tertiary-borderColor);\n}\n\n/* Only show border at the top-level */\n\n.saltVerticalNavigation .saltCollapsiblePanel-inner .saltCollapsiblePanel-inner,\n.saltVerticalNavigation .saltCollapsiblePanel[aria-hidden=\"true\"] .saltCollapsiblePanel-inner {\n margin-bottom: 0;\n}\n\n.saltVerticalNavigation .saltCollapsiblePanel-inner .saltCollapsiblePanel-inner .saltVerticalNavigationSubMenu,\n.saltVerticalNavigation .saltCollapsiblePanel[aria-hidden=\"true\"] .saltCollapsiblePanel-inner .saltVerticalNavigationSubMenu {\n border-bottom: none;\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=VerticalNavigation.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigation.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,36 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useComponentCssInjection } from '@salt-ds/styles';
3
+ import { useWindow } from '@salt-ds/window';
4
+ import { clsx } from 'clsx';
5
+ import { forwardRef, useState } from 'react';
6
+ import { makePrefixer } from '../utils/makePrefixer.js';
7
+ import '../utils/useFloatingUI/useFloatingUI.js';
8
+ import '../utils/useId.js';
9
+ import '../salt-provider/SaltProvider.js';
10
+ import '../viewport/ViewportProvider.js';
11
+ import { SubMenuProvider } from './SubMenuContext.js';
12
+ import css_248z from './VerticalNavigation.css.js';
13
+
14
+ const withBaseName = makePrefixer("saltVerticalNavigation");
15
+ const VerticalNavigation = forwardRef(function VerticalNavigation2(props, ref) {
16
+ const { appearance = "bordered", children, className, ...rest } = props;
17
+ const targetWindow = useWindow();
18
+ useComponentCssInjection({
19
+ testId: "salt-vertical-navigation",
20
+ css: css_248z,
21
+ window: targetWindow
22
+ });
23
+ const [directIcons, setDirectIcons] = useState([]);
24
+ return /* @__PURE__ */ jsx(SubMenuProvider, { directIcons, setDirectIcons, children: /* @__PURE__ */ jsx(
25
+ "nav",
26
+ {
27
+ ref,
28
+ className: clsx(withBaseName(), withBaseName(appearance), className),
29
+ ...rest,
30
+ children: /* @__PURE__ */ jsx("ol", { "data-has-direct-icons": directIcons.length > 0, children })
31
+ }
32
+ ) });
33
+ });
34
+
35
+ export { VerticalNavigation };
36
+ //# sourceMappingURL=VerticalNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigation.js","sources":["../src/vertical-navigation/VerticalNavigation.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef, useState } from \"react\";\nimport { makePrefixer } from \"../utils\";\nimport { SubMenuProvider } from \"./SubMenuContext\";\nimport verticalNavigationCss from \"./VerticalNavigation.css\";\n\nexport interface VerticalNavigationProps\n extends ComponentPropsWithoutRef<\"nav\"> {\n /**\n * The appearance of the tabs. Defaults to \"bordered\".\n */\n appearance?: \"indicator\" | \"bordered\";\n}\n\nconst withBaseName = makePrefixer(\"saltVerticalNavigation\");\n\nexport const VerticalNavigation = forwardRef<\n HTMLElement,\n VerticalNavigationProps\n>(function VerticalNavigation(props, ref) {\n const { appearance = \"bordered\", children, className, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-vertical-navigation\",\n css: verticalNavigationCss,\n window: targetWindow,\n });\n\n const [directIcons, setDirectIcons] = useState<string[]>([]);\n\n return (\n <SubMenuProvider directIcons={directIcons} setDirectIcons={setDirectIcons}>\n <nav\n ref={ref}\n className={clsx(withBaseName(), withBaseName(appearance), className)}\n {...rest}\n >\n <ol data-has-direct-icons={directIcons.length > 0}>{children}</ol>\n </nav>\n </SubMenuProvider>\n );\n});\n"],"names":["VerticalNavigation","verticalNavigationCss"],"mappings":";;;;;;;;;;;;;AAgBA,MAAM,YAAA,GAAe,aAAa,wBAAwB,CAAA;AAEnD,MAAM,kBAAqB,GAAA,UAAA,CAGhC,SAASA,mBAAAA,CAAmB,OAAO,GAAK,EAAA;AACxC,EAAA,MAAM,EAAE,UAAa,GAAA,UAAA,EAAY,UAAU,SAAW,EAAA,GAAG,MAAS,GAAA,KAAA;AAElE,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,0BAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,CAAC,WAAa,EAAA,cAAc,CAAI,GAAA,QAAA,CAAmB,EAAE,CAAA;AAE3D,EACE,uBAAA,GAAA,CAAC,eAAgB,EAAA,EAAA,WAAA,EAA0B,cACzC,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAW,IAAK,CAAA,YAAA,IAAgB,YAAa,CAAA,UAAU,GAAG,SAAS,CAAA;AAAA,MAClE,GAAG,IAAA;AAAA,MAEJ,8BAAC,IAAG,EAAA,EAAA,uBAAA,EAAuB,WAAY,CAAA,MAAA,GAAS,GAAI,QAAS,EAAA;AAAA;AAAA,GAEjE,EAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,50 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { clsx } from 'clsx';
3
+ import { forwardRef, useState, useMemo, useContext } from 'react';
4
+ import { createContext } from '../utils/createContext.js';
5
+ import { makePrefixer } from '../utils/makePrefixer.js';
6
+ import '../utils/useFloatingUI/useFloatingUI.js';
7
+ import '../utils/useId.js';
8
+ import '../salt-provider/SaltProvider.js';
9
+ import '../viewport/ViewportProvider.js';
10
+ import { useSubMenuContext } from './SubMenuContext.js';
11
+
12
+ const withBaseName = makePrefixer("saltVerticalNavigationItem");
13
+ const VerticalNavigationItemContext = createContext(
14
+ "saltVerticalNavigationItemContext",
15
+ {
16
+ active: false,
17
+ focusVisible: false,
18
+ setFocusVisible: () => {
19
+ }
20
+ }
21
+ );
22
+ function useVerticalNavigationItem() {
23
+ return useContext(VerticalNavigationItemContext);
24
+ }
25
+ const VerticalNavigationItem = forwardRef(function VerticalNavigationItem2(props, ref) {
26
+ const { children, className, active = false, style, ...rest } = props;
27
+ const { depth } = useSubMenuContext();
28
+ const [focusVisible, setFocusVisible] = useState(false);
29
+ const context = useMemo(
30
+ () => ({
31
+ active,
32
+ focusVisible,
33
+ setFocusVisible
34
+ }),
35
+ [active, focusVisible]
36
+ );
37
+ return /* @__PURE__ */ jsx(VerticalNavigationItemContext.Provider, { value: context, children: /* @__PURE__ */ jsx(
38
+ "li",
39
+ {
40
+ ref,
41
+ className: clsx(withBaseName(), className),
42
+ style: { "--verticalNavigationItem-depth": depth, ...style },
43
+ ...rest,
44
+ children
45
+ }
46
+ ) });
47
+ });
48
+
49
+ export { VerticalNavigationItem, useVerticalNavigationItem };
50
+ //# sourceMappingURL=VerticalNavigationItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItem.js","sources":["../src/vertical-navigation/VerticalNavigationItem.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type Dispatch,\n forwardRef,\n type SetStateAction,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { createContext, makePrefixer } from \"../utils\";\nimport { useSubMenuContext } from \"./SubMenuContext\";\n\nexport interface VerticalNavigationItemProps\n extends ComponentPropsWithoutRef<\"li\"> {\n active?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltVerticalNavigationItem\");\n\ntype VerticalNavigationItemContextType = {\n active: boolean;\n focusVisible: boolean;\n setFocusVisible: Dispatch<SetStateAction<boolean>>;\n};\n\nconst VerticalNavigationItemContext =\n createContext<VerticalNavigationItemContextType>(\n \"saltVerticalNavigationItemContext\",\n {\n active: false,\n focusVisible: false,\n setFocusVisible: () => {},\n },\n );\n\nexport function useVerticalNavigationItem() {\n return useContext(VerticalNavigationItemContext);\n}\n\nexport const VerticalNavigationItem = forwardRef<\n HTMLLIElement,\n VerticalNavigationItemProps\n>(function VerticalNavigationItem(props, ref) {\n const { children, className, active = false, style, ...rest } = props;\n\n const { depth } = useSubMenuContext();\n const [focusVisible, setFocusVisible] = useState(false);\n\n const context = useMemo(\n () => ({\n active,\n focusVisible,\n setFocusVisible,\n }),\n [active, focusVisible],\n );\n\n return (\n <VerticalNavigationItemContext.Provider value={context}>\n <li\n ref={ref}\n className={clsx(withBaseName(), className)}\n style={\n { \"--verticalNavigationItem-depth\": depth, ...style } as CSSProperties\n }\n {...rest}\n >\n {children}\n </li>\n </VerticalNavigationItemContext.Provider>\n );\n});\n"],"names":["VerticalNavigationItem"],"mappings":";;;;;;;;;;;AAmBA,MAAM,YAAA,GAAe,aAAa,4BAA4B,CAAA;AAQ9D,MAAM,6BACJ,GAAA,aAAA;AAAA,EACE,mCAAA;AAAA,EACA;AAAA,IACE,MAAQ,EAAA,KAAA;AAAA,IACR,YAAc,EAAA,KAAA;AAAA,IACd,iBAAiB,MAAM;AAAA;AAAC;AAE5B,CAAA;AAEK,SAAS,yBAA4B,GAAA;AAC1C,EAAA,OAAO,WAAW,6BAA6B,CAAA;AACjD;AAEO,MAAM,sBAAyB,GAAA,UAAA,CAGpC,SAASA,uBAAAA,CAAuB,OAAO,GAAK,EAAA;AAC5C,EAAM,MAAA,EAAE,UAAU,SAAW,EAAA,MAAA,GAAS,OAAO,KAAO,EAAA,GAAG,MAAS,GAAA,KAAA;AAEhE,EAAM,MAAA,EAAE,KAAM,EAAA,GAAI,iBAAkB,EAAA;AACpC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA;AAEtD,EAAA,MAAM,OAAU,GAAA,OAAA;AAAA,IACd,OAAO;AAAA,MACL,MAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,QAAQ,YAAY;AAAA,GACvB;AAEA,EAAA,uBACG,GAAA,CAAA,6BAAA,CAA8B,QAA9B,EAAA,EAAuC,OAAO,OAC7C,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,KACE,EAAA,EAAE,gCAAkC,EAAA,KAAA,EAAO,GAAG,KAAM,EAAA;AAAA,MAErD,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GAEL,EAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltVerticalNavigationItemContent {\n --verticalNavigationItem-iconPadding: calc(var(--saltVerticalNavigationItem-iconPaddingMultiplier, 0) * (var(--salt-size-icon) + var(--salt-spacing-100)));\n --verticalNavigationItem-depthPadding: calc(var(--salt-spacing-100) * max(0, calc(var(--verticalNavigationItem-depth, 0) - 1)));\n}\n\n.saltVerticalNavigation-indicator .saltVerticalNavigationItemContent {\n --verticalNavigationItem-paddingLeft: calc(var(--salt-spacing-150) + var(--salt-size-indicator) + var(--verticalNavigationItem-depthPadding) + var(--verticalNavigationItem-iconPadding));\n --verticalNavigationItem-paddingBlock: var(--salt-spacing-50);\n}\n\n.saltVerticalNavigation-bordered .saltVerticalNavigationItemContent {\n --verticalNavigationItem-paddingLeft: calc(var(--salt-spacing-100) + var(--verticalNavigationItem-depthPadding) + var(--verticalNavigationItem-iconPadding));\n --verticalNavigationItem-paddingBlock: calc(var(--salt-spacing-50) - var(--salt-size-fixed-100));\n}\n\n.saltVerticalNavigationItemContent {\n display: flex;\n flex-direction: row;\n gap: var(--salt-spacing-100);\n appearance: none;\n -webkit-appearance: none;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n min-width: 4em;\n padding: var(--verticalNavigationItem-paddingBlock) var(--salt-spacing-100) var(--verticalNavigationItem-paddingBlock) var(--verticalNavigationItem-paddingLeft);\n position: relative;\n flex-shrink: 0;\n box-sizing: border-box;\n border-radius: var(--salt-palette-corner-weak, 0);\n overflow: hidden;\n\n cursor: var(--salt-cursor-hover);\n color: var(--salt-content-primary-foreground);\n font-weight: var(--salt-text-h4-fontWeight);\n font-family: var(--salt-text-h4-fontFamily);\n text-align: var(--salt-text-textAlign);\n letter-spacing: var(--salt-text-letterSpacing);\n line-height: var(--salt-text-h4-lineHeight);\n font-size: var(--salt-text-h4-fontSize);\n}\n\n.saltVerticalNavigation-indicator .saltVerticalNavigationItemContent-active,\n.saltVerticalNavigation-indicator .saltVerticalNavigationItemContent-active:hover {\n background: var(--salt-navigable-accent-background-active);\n}\n\n.saltVerticalNavigation-indicator .saltVerticalNavigationItemContent::before {\n left: var(--salt-spacing-50);\n content: \"\";\n position: absolute;\n height: var(--salt-size-base);\n border-radius: var(--salt-palette-corner-strongest);\n width: var(--salt-size-indicator);\n}\n\n.saltVerticalNavigation-indicator .saltVerticalNavigationItemContent-active::before {\n background: var(--salt-navigable-accent-indicator-active);\n}\n\n.saltVerticalNavigation-bordered .saltVerticalNavigationItemContent {\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) transparent;\n}\n\n.saltVerticalNavigation-bordered .saltVerticalNavigationItemContent-active,\n.saltVerticalNavigation-bordered .saltVerticalNavigationItemContent-active:hover {\n background: var(--salt-navigable-accent-background-active);\n border-color: var(--salt-navigable-accent-borderColor-active);\n}\n\n.saltVerticalNavigationItemContent .saltIcon,\n.saltVerticalNavigationItemContent .saltBadge {\n min-height: var(--salt-text-lineHeight);\n}\n\n.saltVerticalNavigationItemContent-focused {\n outline: var(--salt-focused-outline);\n outline-offset: calc(var(--salt-size-fixed-100) * -2);\n z-index: 1;\n}\n\n.saltVerticalNavigationItemContent:hover {\n background: var(--salt-overlayable-background-hover);\n}\n\n.saltVerticalNavigation .saltVerticalNavigationItemContent-active,\n.saltVerticalNavigation .saltVerticalNavigationSubMenu .saltVerticalNavigationItemContent-active {\n font-weight: var(--salt-text-h4-fontWeight);\n}\n\n@supports selector(:has(*)) {\n .saltVerticalNavigationItemContent-active:hover:has(.saltVerticalNavigationItemTrigger[aria-controls]) {\n background: linear-gradient(var(--salt-overlayable-background-hover), var(--salt-overlayable-background-hover)) var(--salt-navigable-accent-background-active);\n }\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=VerticalNavigationItemContent.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemContent.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,86 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useComponentCssInjection } from '@salt-ds/styles';
3
+ import { useWindow } from '@salt-ds/window';
4
+ import { clsx } from 'clsx';
5
+ import { forwardRef, useRef, useState, useEffect } from 'react';
6
+ import { makePrefixer } from '../utils/makePrefixer.js';
7
+ import '../utils/useFloatingUI/useFloatingUI.js';
8
+ import { useForkRef } from '../utils/useForkRef.js';
9
+ import { useId } from '../utils/useId.js';
10
+ import '../salt-provider/SaltProvider.js';
11
+ import '../viewport/ViewportProvider.js';
12
+ import { useSubMenuContext } from './SubMenuContext.js';
13
+ import { useVerticalNavigationItem } from './VerticalNavigationItem.js';
14
+ import css_248z from './VerticalNavigationItemContent.css.js';
15
+
16
+ const withBaseName = makePrefixer("saltVerticalNavigationItemContent");
17
+ const VerticalNavigationItemContent = forwardRef(function VerticalNavigationItemContent2(props, ref) {
18
+ const { children, className, style, ...rest } = props;
19
+ const targetWindow = useWindow();
20
+ useComponentCssInjection({
21
+ testId: "salt-vertical-navigation-item-content",
22
+ css: css_248z,
23
+ window: targetWindow
24
+ });
25
+ const containerRef = useRef(null);
26
+ const handleRef = useForkRef(ref, containerRef);
27
+ const { active, focusVisible } = useVerticalNavigationItem();
28
+ const { setDirectIcons, iconPaddingCount } = useSubMenuContext();
29
+ const [hasIcon, setHasIcon] = useState(false);
30
+ const iconId = useId();
31
+ useEffect(() => {
32
+ const checkForIcons = () => {
33
+ var _a;
34
+ const iconElement = (_a = containerRef.current) == null ? void 0 : _a.querySelector(
35
+ ".saltIcon ~ .saltVerticalNavigationItemLabel"
36
+ );
37
+ setHasIcon(Boolean(iconElement));
38
+ if (iconElement && iconId && setDirectIcons) {
39
+ setDirectIcons((icons) => {
40
+ if (!icons.includes(iconId)) {
41
+ return icons.concat(iconId);
42
+ }
43
+ return icons;
44
+ });
45
+ } else if (!iconElement && iconId && setDirectIcons) {
46
+ setDirectIcons((icons) => icons.filter((id) => id !== iconId));
47
+ }
48
+ };
49
+ const mutationObserver = new MutationObserver(() => {
50
+ checkForIcons();
51
+ });
52
+ checkForIcons();
53
+ if (containerRef.current) {
54
+ mutationObserver.observe(containerRef.current, {
55
+ childList: true,
56
+ subtree: true
57
+ });
58
+ }
59
+ return () => {
60
+ mutationObserver.disconnect();
61
+ };
62
+ }, [iconId, setDirectIcons]);
63
+ return /* @__PURE__ */ jsx(
64
+ "span",
65
+ {
66
+ ref: handleRef,
67
+ className: clsx(
68
+ withBaseName(),
69
+ {
70
+ [withBaseName("active")]: active,
71
+ [withBaseName("focused")]: focusVisible
72
+ },
73
+ className
74
+ ),
75
+ style: {
76
+ "--saltVerticalNavigationItem-iconPaddingMultiplier": hasIcon ? iconPaddingCount - 1 : iconPaddingCount,
77
+ ...style
78
+ },
79
+ ...rest,
80
+ children
81
+ }
82
+ );
83
+ });
84
+
85
+ export { VerticalNavigationItemContent };
86
+ //# sourceMappingURL=VerticalNavigationItemContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemContent.js","sources":["../src/vertical-navigation/VerticalNavigationItemContent.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n forwardRef,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { makePrefixer, useForkRef, useId } from \"../utils\";\nimport { useSubMenuContext } from \"./SubMenuContext\";\nimport { useVerticalNavigationItem } from \"./VerticalNavigationItem\";\nimport verticalNavigationItemContentCss from \"./VerticalNavigationItemContent.css\";\n\nexport interface VerticalNavigationItemContentProps\n extends ComponentPropsWithoutRef<\"span\"> {}\n\nconst withBaseName = makePrefixer(\"saltVerticalNavigationItemContent\");\n\nexport const VerticalNavigationItemContent = forwardRef<\n HTMLSpanElement,\n VerticalNavigationItemContentProps\n>(function VerticalNavigationItemContent(props, ref) {\n const { children, className, style, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-vertical-navigation-item-content\",\n css: verticalNavigationItemContentCss,\n window: targetWindow,\n });\n\n const containerRef = useRef<HTMLSpanElement>(null);\n const handleRef = useForkRef(ref, containerRef);\n\n const { active, focusVisible } = useVerticalNavigationItem();\n const { setDirectIcons, iconPaddingCount } = useSubMenuContext();\n const [hasIcon, setHasIcon] = useState(false);\n\n const iconId = useId();\n\n useEffect(() => {\n const checkForIcons = () => {\n const iconElement = containerRef.current?.querySelector<HTMLElement>(\n \".saltIcon ~ .saltVerticalNavigationItemLabel\",\n );\n\n setHasIcon(Boolean(iconElement));\n if (iconElement && iconId && setDirectIcons) {\n setDirectIcons((icons) => {\n if (!icons.includes(iconId)) {\n return icons.concat(iconId);\n }\n return icons;\n });\n } else if (!iconElement && iconId && setDirectIcons) {\n setDirectIcons((icons) => icons.filter((id) => id !== iconId));\n }\n };\n\n const mutationObserver = new MutationObserver(() => {\n checkForIcons();\n });\n checkForIcons();\n\n if (containerRef.current) {\n mutationObserver.observe(containerRef.current, {\n childList: true,\n subtree: true,\n });\n }\n\n return () => {\n mutationObserver.disconnect();\n };\n }, [iconId, setDirectIcons]);\n\n return (\n <span\n ref={handleRef}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"active\")]: active,\n [withBaseName(\"focused\")]: focusVisible,\n },\n className,\n )}\n style={\n {\n \"--saltVerticalNavigationItem-iconPaddingMultiplier\": hasIcon\n ? iconPaddingCount - 1\n : iconPaddingCount,\n ...style,\n } as CSSProperties\n }\n {...rest}\n >\n {children}\n </span>\n );\n});\n"],"names":["VerticalNavigationItemContent","verticalNavigationItemContentCss"],"mappings":";;;;;;;;;;;;;;;AAmBA,MAAM,YAAA,GAAe,aAAa,mCAAmC,CAAA;AAE9D,MAAM,6BAAgC,GAAA,UAAA,CAG3C,SAASA,8BAAAA,CAA8B,OAAO,GAAK,EAAA;AACnD,EAAA,MAAM,EAAE,QAAU,EAAA,SAAA,EAAW,KAAO,EAAA,GAAG,MAAS,GAAA,KAAA;AAEhD,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,uCAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,YAAA,GAAe,OAAwB,IAAI,CAAA;AACjD,EAAM,MAAA,SAAA,GAAY,UAAW,CAAA,GAAA,EAAK,YAAY,CAAA;AAE9C,EAAA,MAAM,EAAE,MAAA,EAAQ,YAAa,EAAA,GAAI,yBAA0B,EAAA;AAC3D,EAAA,MAAM,EAAE,cAAA,EAAgB,gBAAiB,EAAA,GAAI,iBAAkB,EAAA;AAC/D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,SAAS,KAAM,EAAA;AAErB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,gBAAgB,MAAM;AA5ChC,MAAA,IAAA,EAAA;AA6CM,MAAM,MAAA,WAAA,GAAA,CAAc,EAAa,GAAA,YAAA,CAAA,OAAA,KAAb,IAAsB,GAAA,MAAA,GAAA,EAAA,CAAA,aAAA;AAAA,QACxC;AAAA,OAAA;AAGF,MAAW,UAAA,CAAA,OAAA,CAAQ,WAAW,CAAC,CAAA;AAC/B,MAAI,IAAA,WAAA,IAAe,UAAU,cAAgB,EAAA;AAC3C,QAAA,cAAA,CAAe,CAAC,KAAU,KAAA;AACxB,UAAA,IAAI,CAAC,KAAA,CAAM,QAAS,CAAA,MAAM,CAAG,EAAA;AAC3B,YAAO,OAAA,KAAA,CAAM,OAAO,MAAM,CAAA;AAAA;AAE5B,UAAO,OAAA,KAAA;AAAA,SACR,CAAA;AAAA,OACQ,MAAA,IAAA,CAAC,WAAe,IAAA,MAAA,IAAU,cAAgB,EAAA;AACnD,QAAe,cAAA,CAAA,CAAC,UAAU,KAAM,CAAA,MAAA,CAAO,CAAC,EAAO,KAAA,EAAA,KAAO,MAAM,CAAC,CAAA;AAAA;AAC/D,KACF;AAEA,IAAM,MAAA,gBAAA,GAAmB,IAAI,gBAAA,CAAiB,MAAM;AAClD,MAAc,aAAA,EAAA;AAAA,KACf,CAAA;AACD,IAAc,aAAA,EAAA;AAEd,IAAA,IAAI,aAAa,OAAS,EAAA;AACxB,MAAiB,gBAAA,CAAA,OAAA,CAAQ,aAAa,OAAS,EAAA;AAAA,QAC7C,SAAW,EAAA,IAAA;AAAA,QACX,OAAS,EAAA;AAAA,OACV,CAAA;AAAA;AAGH,IAAA,OAAO,MAAM;AACX,MAAA,gBAAA,CAAiB,UAAW,EAAA;AAAA,KAC9B;AAAA,GACC,EAAA,CAAC,MAAQ,EAAA,cAAc,CAAC,CAAA;AAE3B,EACE,uBAAA,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,SAAA;AAAA,MACL,SAAW,EAAA,IAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAA,CAAa,QAAQ,CAAC,GAAG,MAAA;AAAA,UAC1B,CAAC,YAAA,CAAa,SAAS,CAAC,GAAG;AAAA,SAC7B;AAAA,QACA;AAAA,OACF;AAAA,MACA,KACE,EAAA;AAAA,QACE,oDAAA,EAAsD,OAClD,GAAA,gBAAA,GAAmB,CACnB,GAAA,gBAAA;AAAA,QACJ,GAAG;AAAA,OACL;AAAA,MAED,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;;;;"}
@@ -0,0 +1,33 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { clsx } from 'clsx';
3
+ import { useCollapsibleContext } from '../collapsible/CollapsibleContext.js';
4
+ import { useIcon } from '../semantic-icon-provider/SemanticIconProvider.js';
5
+ import 'react';
6
+ import { makePrefixer } from '../utils/makePrefixer.js';
7
+ import '../utils/useFloatingUI/useFloatingUI.js';
8
+ import '../utils/useId.js';
9
+ import '../salt-provider/SaltProvider.js';
10
+ import '../viewport/ViewportProvider.js';
11
+
12
+ const withBaseName = makePrefixer("saltVerticalNavigationItemExpansionIcon");
13
+ const VerticalNavigationItemExpansionIcon = (props) => {
14
+ const { className, ...rest } = props;
15
+ const { CollapseIcon, ExpandIcon } = useIcon();
16
+ const iconExpansionMap = {
17
+ expanded: CollapseIcon,
18
+ collapsed: ExpandIcon
19
+ };
20
+ const { open } = useCollapsibleContext();
21
+ const Icon = iconExpansionMap[open ? "expanded" : "collapsed"];
22
+ return /* @__PURE__ */ jsx(
23
+ Icon,
24
+ {
25
+ className: clsx(withBaseName(), className),
26
+ "aria-hidden": "true",
27
+ ...rest
28
+ }
29
+ );
30
+ };
31
+
32
+ export { VerticalNavigationItemExpansionIcon };
33
+ //# sourceMappingURL=VerticalNavigationItemExpansionIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemExpansionIcon.js","sources":["../src/vertical-navigation/VerticalNavigationItemExpansionIcon.tsx"],"sourcesContent":["import type { IconProps } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { useCollapsibleContext } from \"../collapsible/CollapsibleContext\";\nimport { useIcon } from \"../semantic-icon-provider\";\nimport { makePrefixer } from \"../utils\";\n\nconst withBaseName = makePrefixer(\"saltVerticalNavigationItemExpansionIcon\");\n\nexport const VerticalNavigationItemExpansionIcon = (props: IconProps) => {\n const { className, ...rest } = props;\n const { CollapseIcon, ExpandIcon } = useIcon();\n const iconExpansionMap = {\n expanded: CollapseIcon,\n collapsed: ExpandIcon,\n };\n\n const { open } = useCollapsibleContext();\n\n const Icon = iconExpansionMap[open ? \"expanded\" : \"collapsed\"];\n return (\n <Icon\n className={clsx(withBaseName(), className)}\n aria-hidden=\"true\"\n {...rest}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAMA,MAAM,YAAA,GAAe,aAAa,yCAAyC,CAAA;AAE9D,MAAA,mCAAA,GAAsC,CAAC,KAAqB,KAAA;AACvE,EAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAS,GAAA,KAAA;AAC/B,EAAA,MAAM,EAAE,YAAA,EAAc,UAAW,EAAA,GAAI,OAAQ,EAAA;AAC7C,EAAA,MAAM,gBAAmB,GAAA;AAAA,IACvB,QAAU,EAAA,YAAA;AAAA,IACV,SAAW,EAAA;AAAA,GACb;AAEA,EAAM,MAAA,EAAE,IAAK,EAAA,GAAI,qBAAsB,EAAA;AAEvC,EAAA,MAAM,IAAO,GAAA,gBAAA,CAAiB,IAAO,GAAA,UAAA,GAAa,WAAW,CAAA;AAC7D,EACE,uBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,aAAY,EAAA,MAAA;AAAA,MACX,GAAG;AAAA;AAAA,GACN;AAEJ;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltVerticalNavigationItemLabel {\n flex: 1;\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=VerticalNavigationItemLabel.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemLabel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,26 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useComponentCssInjection } from '@salt-ds/styles';
3
+ import { useWindow } from '@salt-ds/window';
4
+ import { clsx } from 'clsx';
5
+ import { forwardRef } from 'react';
6
+ import { makePrefixer } from '../utils/makePrefixer.js';
7
+ import '../utils/useFloatingUI/useFloatingUI.js';
8
+ import '../utils/useId.js';
9
+ import '../salt-provider/SaltProvider.js';
10
+ import '../viewport/ViewportProvider.js';
11
+ import css_248z from './VerticalNavigationItemLabel.css.js';
12
+
13
+ const withBaseName = makePrefixer("saltVerticalNavigationItemLabel");
14
+ const VerticalNavigationItemLabel = forwardRef(function VerticalNavigationItemLabel2(props, ref) {
15
+ const { children, className, ...rest } = props;
16
+ const targetWindow = useWindow();
17
+ useComponentCssInjection({
18
+ testId: "salt-vertical-navigation-item-label",
19
+ css: css_248z,
20
+ window: targetWindow
21
+ });
22
+ return /* @__PURE__ */ jsx("span", { className: clsx(withBaseName(), className), ref, ...rest, children });
23
+ });
24
+
25
+ export { VerticalNavigationItemLabel };
26
+ //# sourceMappingURL=VerticalNavigationItemLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemLabel.js","sources":["../src/vertical-navigation/VerticalNavigationItemLabel.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { makePrefixer } from \"../utils\";\nimport verticalNavigationItemLabelCss from \"./VerticalNavigationItemLabel.css\";\n\nexport interface VerticalNavigationItemLabelProps\n extends ComponentPropsWithoutRef<\"span\"> {}\n\nconst withBaseName = makePrefixer(\"saltVerticalNavigationItemLabel\");\n\nexport const VerticalNavigationItemLabel = forwardRef<\n HTMLSpanElement,\n VerticalNavigationItemLabelProps\n>(function VerticalNavigationItemLabel(props, ref) {\n const { children, className, ...rest } = props;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-vertical-navigation-item-label\",\n css: verticalNavigationItemLabelCss,\n window: targetWindow,\n });\n\n return (\n <span className={clsx(withBaseName(), className)} ref={ref} {...rest}>\n {children}\n </span>\n );\n});\n"],"names":["VerticalNavigationItemLabel","verticalNavigationItemLabelCss"],"mappings":";;;;;;;;;;;;AAUA,MAAM,YAAA,GAAe,aAAa,iCAAiC,CAAA;AAE5D,MAAM,2BAA8B,GAAA,UAAA,CAGzC,SAASA,4BAAAA,CAA4B,OAAO,GAAK,EAAA;AACjD,EAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,GAAG,MAAS,GAAA,KAAA;AACzC,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,qCAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAA,GAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,IAAK,CAAA,YAAA,EAAgB,EAAA,SAAS,CAAG,EAAA,GAAA,EAAW,GAAG,IAAA,EAC7D,QACH,EAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltVerticalNavigationItemTrigger {\n all: unset;\n padding: var(--salt-spacing-75) 0;\n display: flex;\n gap: var(--salt-spacing-100);\n width: 100%;\n}\n\n.saltVerticalNavigationItemTrigger::before {\n content: \"\";\n display: block;\n width: 100%;\n position: absolute;\n height: 100%;\n left: 0;\n top: 0;\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=VerticalNavigationItemTrigger.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemTrigger.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,72 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useComponentCssInjection } from '@salt-ds/styles';
3
+ import { useWindow } from '@salt-ds/window';
4
+ import { clsx } from 'clsx';
5
+ import { forwardRef, useRef } from 'react';
6
+ import { makePrefixer } from '../utils/makePrefixer.js';
7
+ import { renderProps } from '../utils/renderProps.js';
8
+ import '../utils/useFloatingUI/useFloatingUI.js';
9
+ import '../utils/useId.js';
10
+ import '../salt-provider/SaltProvider.js';
11
+ import '../viewport/ViewportProvider.js';
12
+ import { useVerticalNavigationItem } from './VerticalNavigationItem.js';
13
+ import css_248z from './VerticalNavigationItemTrigger.css.js';
14
+
15
+ function ItemAction(props) {
16
+ return renderProps("a", props);
17
+ }
18
+ const withBaseName = makePrefixer("saltVerticalNavigationItemTrigger");
19
+ const VerticalNavigationItemTrigger = forwardRef(function VerticalNavigationItemTrigger2(props, ref) {
20
+ const {
21
+ className,
22
+ children,
23
+ render,
24
+ href,
25
+ onFocus,
26
+ onBlur,
27
+ onMouseDown,
28
+ ...rest
29
+ } = props;
30
+ const targetWindow = useWindow();
31
+ useComponentCssInjection({
32
+ testId: "salt-vertical-navigation-item-trigger",
33
+ css: css_248z,
34
+ window: targetWindow
35
+ });
36
+ const isLink = href != null;
37
+ const { active, setFocusVisible } = useVerticalNavigationItem();
38
+ const wasMouseDownRef = useRef(false);
39
+ const handleFocus = (event) => {
40
+ if (!wasMouseDownRef.current) {
41
+ setFocusVisible(true);
42
+ }
43
+ wasMouseDownRef.current = false;
44
+ onFocus == null ? void 0 : onFocus(event);
45
+ };
46
+ const handleBlur = (event) => {
47
+ setFocusVisible(false);
48
+ onBlur == null ? void 0 : onBlur(event);
49
+ };
50
+ const handleMouseDown = (event) => {
51
+ wasMouseDownRef.current = true;
52
+ onMouseDown == null ? void 0 : onMouseDown(event);
53
+ };
54
+ return /* @__PURE__ */ jsx(
55
+ ItemAction,
56
+ {
57
+ className: clsx(withBaseName(), className),
58
+ href,
59
+ "aria-current": active ? "page" : void 0,
60
+ render: render ?? (isLink ? void 0 : /* @__PURE__ */ jsx("button", { type: "button" })),
61
+ ref,
62
+ onFocus: handleFocus,
63
+ onBlur: handleBlur,
64
+ onMouseDown: handleMouseDown,
65
+ ...rest,
66
+ children
67
+ }
68
+ );
69
+ });
70
+
71
+ export { VerticalNavigationItemTrigger };
72
+ //# sourceMappingURL=VerticalNavigationItemTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemTrigger.js","sources":["../src/vertical-navigation/VerticalNavigationItemTrigger.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEvent,\n forwardRef,\n type MouseEvent,\n useRef,\n} from \"react\";\nimport { makePrefixer, type RenderPropsType, renderProps } from \"../utils\";\nimport { useVerticalNavigationItem } from \"./VerticalNavigationItem\";\nimport verticalNavigationItemTriggerCss from \"./VerticalNavigationItemTrigger.css\";\n\n// biome-ignore lint/suspicious/noExplicitAny: We don't know the exact type here\nfunction ItemAction(props: ComponentPropsWithoutRef<any>) {\n return renderProps(\"a\", props);\n}\n\nexport interface VerticalNavigationItemTriggerProps\n extends ComponentPropsWithoutRef<\"a\"> {\n render?: RenderPropsType[\"render\"];\n}\n\nconst withBaseName = makePrefixer(\"saltVerticalNavigationItemTrigger\");\n\nexport const VerticalNavigationItemTrigger = forwardRef<\n HTMLAnchorElement,\n VerticalNavigationItemTriggerProps\n>(function VerticalNavigationItemTrigger(props, ref) {\n const {\n className,\n children,\n render,\n href,\n onFocus,\n onBlur,\n onMouseDown,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-vertical-navigation-item-trigger\",\n css: verticalNavigationItemTriggerCss,\n window: targetWindow,\n });\n\n const isLink = href != null;\n const { active, setFocusVisible } = useVerticalNavigationItem();\n\n const wasMouseDownRef = useRef(false);\n\n const handleFocus = (event: FocusEvent<never>) => {\n if (!wasMouseDownRef.current) {\n setFocusVisible(true);\n }\n wasMouseDownRef.current = false;\n onFocus?.(event);\n };\n\n const handleBlur = (event: FocusEvent<never>) => {\n setFocusVisible(false);\n onBlur?.(event);\n };\n\n const handleMouseDown = (event: MouseEvent<never>) => {\n wasMouseDownRef.current = true;\n onMouseDown?.(event);\n };\n\n return (\n <ItemAction\n className={clsx(withBaseName(), className)}\n href={href}\n aria-current={active ? \"page\" : undefined}\n render={render ?? (isLink ? undefined : <button type=\"button\" />)}\n ref={ref}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseDown={handleMouseDown}\n {...rest}\n >\n {children}\n </ItemAction>\n );\n});\n"],"names":["VerticalNavigationItemTrigger","verticalNavigationItemTriggerCss"],"mappings":";;;;;;;;;;;;;;AAeA,SAAS,WAAW,KAAsC,EAAA;AACxD,EAAO,OAAA,WAAA,CAAY,KAAK,KAAK,CAAA;AAC/B;AAOA,MAAM,YAAA,GAAe,aAAa,mCAAmC,CAAA;AAE9D,MAAM,6BAAgC,GAAA,UAAA,CAG3C,SAASA,8BAAAA,CAA8B,OAAO,GAAK,EAAA;AACnD,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,uCAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,SAAS,IAAQ,IAAA,IAAA;AACvB,EAAA,MAAM,EAAE,MAAA,EAAQ,eAAgB,EAAA,GAAI,yBAA0B,EAAA;AAE9D,EAAM,MAAA,eAAA,GAAkB,OAAO,KAAK,CAAA;AAEpC,EAAM,MAAA,WAAA,GAAc,CAAC,KAA6B,KAAA;AAChD,IAAI,IAAA,CAAC,gBAAgB,OAAS,EAAA;AAC5B,MAAA,eAAA,CAAgB,IAAI,CAAA;AAAA;AAEtB,IAAA,eAAA,CAAgB,OAAU,GAAA,KAAA;AAC1B,IAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AAAA,GACZ;AAEA,EAAM,MAAA,UAAA,GAAa,CAAC,KAA6B,KAAA;AAC/C,IAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,IAAS,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAA,KAAA,CAAA;AAAA,GACX;AAEA,EAAM,MAAA,eAAA,GAAkB,CAAC,KAA6B,KAAA;AACpD,IAAA,eAAA,CAAgB,OAAU,GAAA,IAAA;AAC1B,IAAc,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAA,KAAA,CAAA;AAAA,GAChB;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,IAAA;AAAA,MACA,cAAA,EAAc,SAAS,MAAS,GAAA,MAAA;AAAA,MAChC,QAAQ,MAAW,KAAA,MAAA,GAAS,yBAAa,GAAA,CAAA,QAAA,EAAA,EAAO,MAAK,QAAS,EAAA,CAAA,CAAA;AAAA,MAC9D,GAAA;AAAA,MACA,OAAS,EAAA,WAAA;AAAA,MACT,MAAQ,EAAA,UAAA;AAAA,MACR,WAAa,EAAA,eAAA;AAAA,MACZ,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltVerticalNavigationSubMenu {\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-fixed-100);\n list-style: none;\n padding: var(--salt-spacing-fixed-100) 0 0;\n margin: 0;\n}\n\n.saltVerticalNavigationSubMenu .saltVerticalNavigationItemContent {\n font-weight: var(--salt-text-h4-fontWeight-small);\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=VerticalNavigationSubMenu.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationSubMenu.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,37 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useComponentCssInjection } from '@salt-ds/styles';
3
+ import { useWindow } from '@salt-ds/window';
4
+ import { clsx } from 'clsx';
5
+ import { forwardRef, useState } from 'react';
6
+ import { makePrefixer } from '../utils/makePrefixer.js';
7
+ import '../utils/useFloatingUI/useFloatingUI.js';
8
+ import '../utils/useId.js';
9
+ import '../salt-provider/SaltProvider.js';
10
+ import '../viewport/ViewportProvider.js';
11
+ import { SubMenuProvider } from './SubMenuContext.js';
12
+ import css_248z from './VerticalNavigationSubMenu.css.js';
13
+
14
+ const withBaseName = makePrefixer("saltVerticalNavigationSubMenu");
15
+ const VerticalNavigationSubMenu = forwardRef(function VerticalNavigationSubMenu2(props, ref) {
16
+ const { children, className, ...rest } = props;
17
+ const targetWindow = useWindow();
18
+ useComponentCssInjection({
19
+ testId: "salt-vertical-navigation-sub-menu",
20
+ css: css_248z,
21
+ window: targetWindow
22
+ });
23
+ const [directIcons, setDirectIcons] = useState([]);
24
+ return /* @__PURE__ */ jsx(SubMenuProvider, { directIcons, setDirectIcons, children: /* @__PURE__ */ jsx(
25
+ "ul",
26
+ {
27
+ ref,
28
+ className: clsx(withBaseName(), className),
29
+ "data-has-direct-icons": directIcons.length > 0,
30
+ ...rest,
31
+ children
32
+ }
33
+ ) });
34
+ });
35
+
36
+ export { VerticalNavigationSubMenu };
37
+ //# sourceMappingURL=VerticalNavigationSubMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationSubMenu.js","sources":["../src/vertical-navigation/VerticalNavigationSubMenu.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef, useState } from \"react\";\nimport { makePrefixer } from \"../utils\";\nimport { SubMenuProvider } from \"./SubMenuContext\";\nimport verticalNavigationSubMenuCss from \"./VerticalNavigationSubMenu.css\";\n\nexport interface VerticalNavigationSubMenuProps\n extends ComponentPropsWithoutRef<\"ul\"> {}\n\nconst withBaseName = makePrefixer(\"saltVerticalNavigationSubMenu\");\n\nexport const VerticalNavigationSubMenu = forwardRef<\n HTMLUListElement,\n VerticalNavigationSubMenuProps\n>(function VerticalNavigationSubMenu(props, ref) {\n const { children, className, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-vertical-navigation-sub-menu\",\n css: verticalNavigationSubMenuCss,\n window: targetWindow,\n });\n\n const [directIcons, setDirectIcons] = useState<string[]>([]);\n\n return (\n <SubMenuProvider directIcons={directIcons} setDirectIcons={setDirectIcons}>\n <ul\n ref={ref}\n className={clsx(withBaseName(), className)}\n data-has-direct-icons={directIcons.length > 0}\n {...rest}\n >\n {children}\n </ul>\n </SubMenuProvider>\n );\n});\n"],"names":["VerticalNavigationSubMenu","verticalNavigationSubMenuCss"],"mappings":";;;;;;;;;;;;;AAWA,MAAM,YAAA,GAAe,aAAa,+BAA+B,CAAA;AAE1D,MAAM,yBAA4B,GAAA,UAAA,CAGvC,SAASA,0BAAAA,CAA0B,OAAO,GAAK,EAAA;AAC/C,EAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,GAAG,MAAS,GAAA,KAAA;AAEzC,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mCAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,CAAC,WAAa,EAAA,cAAc,CAAI,GAAA,QAAA,CAAmB,EAAE,CAAA;AAE3D,EACE,uBAAA,GAAA,CAAC,eAAgB,EAAA,EAAA,WAAA,EAA0B,cACzC,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,uBAAA,EAAuB,YAAY,MAAS,GAAA,CAAA;AAAA,MAC3C,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GAEL,EAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,16 @@
1
+ import { type ComponentPropsWithoutRef, type SyntheticEvent } from "react";
2
+ export interface CollapsibleProps extends Omit<ComponentPropsWithoutRef<"div">, "onToggle"> {
3
+ /**
4
+ * Whether the accordion is open.
5
+ */
6
+ open?: boolean;
7
+ /**
8
+ * Whether the accordion is open by default.
9
+ */
10
+ defaultOpen?: boolean;
11
+ /**
12
+ * Callback fired when the accordion is opened or closed.
13
+ */
14
+ onOpenChange?: (event: SyntheticEvent<HTMLButtonElement>, open: boolean) => void;
15
+ }
16
+ export declare const Collapsible: import("react").ForwardRefExoticComponent<CollapsibleProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,9 @@
1
+ import { type SyntheticEvent } from "react";
2
+ export type CollapsibleContextValue = {
3
+ open: boolean;
4
+ setOpen: (event: SyntheticEvent<HTMLButtonElement>, open: boolean) => void;
5
+ panelId?: string;
6
+ setPanelId?: (panelId: string) => void;
7
+ };
8
+ export declare const CollapsibleContext: import("react").Context<CollapsibleContextValue>;
9
+ export declare function useCollapsibleContext(): CollapsibleContextValue;
@@ -0,0 +1,4 @@
1
+ import { type ComponentPropsWithoutRef } from "react";
2
+ export interface CollapsiblePanelProps extends ComponentPropsWithoutRef<"div"> {
3
+ }
4
+ export declare const CollapsiblePanel: (props: CollapsiblePanelProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ export interface CollapsibleTriggerProps extends Pick<ComponentPropsWithoutRef<"button">, "className" | "onClick"> {
3
+ children: ReactNode;
4
+ }
5
+ export declare const CollapsibleTrigger: import("react").ForwardRefExoticComponent<CollapsibleTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;