@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,53 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var clsx = require('clsx');
5
+ var React = require('react');
6
+ var createContext = require('../utils/createContext.js');
7
+ var makePrefixer = require('../utils/makePrefixer.js');
8
+ require('../utils/useFloatingUI/useFloatingUI.js');
9
+ require('../utils/useId.js');
10
+ require('../salt-provider/SaltProvider.js');
11
+ require('../viewport/ViewportProvider.js');
12
+ var SubMenuContext = require('./SubMenuContext.js');
13
+
14
+ const withBaseName = makePrefixer.makePrefixer("saltVerticalNavigationItem");
15
+ const VerticalNavigationItemContext = createContext.createContext(
16
+ "saltVerticalNavigationItemContext",
17
+ {
18
+ active: false,
19
+ focusVisible: false,
20
+ setFocusVisible: () => {
21
+ }
22
+ }
23
+ );
24
+ function useVerticalNavigationItem() {
25
+ return React.useContext(VerticalNavigationItemContext);
26
+ }
27
+ const VerticalNavigationItem = React.forwardRef(function VerticalNavigationItem2(props, ref) {
28
+ const { children, className, active = false, style, ...rest } = props;
29
+ const { depth } = SubMenuContext.useSubMenuContext();
30
+ const [focusVisible, setFocusVisible] = React.useState(false);
31
+ const context = React.useMemo(
32
+ () => ({
33
+ active,
34
+ focusVisible,
35
+ setFocusVisible
36
+ }),
37
+ [active, focusVisible]
38
+ );
39
+ return /* @__PURE__ */ jsxRuntime.jsx(VerticalNavigationItemContext.Provider, { value: context, children: /* @__PURE__ */ jsxRuntime.jsx(
40
+ "li",
41
+ {
42
+ ref,
43
+ className: clsx.clsx(withBaseName(), className),
44
+ style: { "--verticalNavigationItem-depth": depth, ...style },
45
+ ...rest,
46
+ children
47
+ }
48
+ ) });
49
+ });
50
+
51
+ exports.VerticalNavigationItem = VerticalNavigationItem;
52
+ exports.useVerticalNavigationItem = useVerticalNavigationItem;
53
+ //# 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":["makePrefixer","createContext","useContext","forwardRef","VerticalNavigationItem","useSubMenuContext","useState","useMemo","jsx","clsx"],"mappings":";;;;;;;;;;;;;AAmBA,MAAM,YAAA,GAAeA,0BAAa,4BAA4B,CAAA;AAQ9D,MAAM,6BACJ,GAAAC,2BAAA;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,OAAOC,iBAAW,6BAA6B,CAAA;AACjD;AAEO,MAAM,sBAAyB,GAAAC,gBAAA,CAGpC,SAASC,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,GAAIC,gCAAkB,EAAA;AACpC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIC,eAAS,KAAK,CAAA;AAEtD,EAAA,MAAM,OAAU,GAAAC,aAAA;AAAA,IACd,OAAO;AAAA,MACL,MAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,QAAQ,YAAY;AAAA,GACvB;AAEA,EAAA,uBACGC,cAAA,CAAA,6BAAA,CAA8B,QAA9B,EAAA,EAAuC,OAAO,OAC7C,EAAA,QAAA,kBAAAA,cAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAAC,SAAA,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,6 @@
1
+ 'use strict';
2
+
3
+ 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";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=VerticalNavigationItemContent.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemContent.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,88 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var makePrefixer = require('../utils/makePrefixer.js');
9
+ require('../utils/useFloatingUI/useFloatingUI.js');
10
+ var useForkRef = require('../utils/useForkRef.js');
11
+ var useId = require('../utils/useId.js');
12
+ require('../salt-provider/SaltProvider.js');
13
+ require('../viewport/ViewportProvider.js');
14
+ var SubMenuContext = require('./SubMenuContext.js');
15
+ var VerticalNavigationItem = require('./VerticalNavigationItem.js');
16
+ var VerticalNavigationItemContent$1 = require('./VerticalNavigationItemContent.css.js');
17
+
18
+ const withBaseName = makePrefixer.makePrefixer("saltVerticalNavigationItemContent");
19
+ const VerticalNavigationItemContent = React.forwardRef(function VerticalNavigationItemContent2(props, ref) {
20
+ const { children, className, style, ...rest } = props;
21
+ const targetWindow = window.useWindow();
22
+ styles.useComponentCssInjection({
23
+ testId: "salt-vertical-navigation-item-content",
24
+ css: VerticalNavigationItemContent$1,
25
+ window: targetWindow
26
+ });
27
+ const containerRef = React.useRef(null);
28
+ const handleRef = useForkRef.useForkRef(ref, containerRef);
29
+ const { active, focusVisible } = VerticalNavigationItem.useVerticalNavigationItem();
30
+ const { setDirectIcons, iconPaddingCount } = SubMenuContext.useSubMenuContext();
31
+ const [hasIcon, setHasIcon] = React.useState(false);
32
+ const iconId = useId.useId();
33
+ React.useEffect(() => {
34
+ const checkForIcons = () => {
35
+ var _a;
36
+ const iconElement = (_a = containerRef.current) == null ? void 0 : _a.querySelector(
37
+ ".saltIcon ~ .saltVerticalNavigationItemLabel"
38
+ );
39
+ setHasIcon(Boolean(iconElement));
40
+ if (iconElement && iconId && setDirectIcons) {
41
+ setDirectIcons((icons) => {
42
+ if (!icons.includes(iconId)) {
43
+ return icons.concat(iconId);
44
+ }
45
+ return icons;
46
+ });
47
+ } else if (!iconElement && iconId && setDirectIcons) {
48
+ setDirectIcons((icons) => icons.filter((id) => id !== iconId));
49
+ }
50
+ };
51
+ const mutationObserver = new MutationObserver(() => {
52
+ checkForIcons();
53
+ });
54
+ checkForIcons();
55
+ if (containerRef.current) {
56
+ mutationObserver.observe(containerRef.current, {
57
+ childList: true,
58
+ subtree: true
59
+ });
60
+ }
61
+ return () => {
62
+ mutationObserver.disconnect();
63
+ };
64
+ }, [iconId, setDirectIcons]);
65
+ return /* @__PURE__ */ jsxRuntime.jsx(
66
+ "span",
67
+ {
68
+ ref: handleRef,
69
+ className: clsx.clsx(
70
+ withBaseName(),
71
+ {
72
+ [withBaseName("active")]: active,
73
+ [withBaseName("focused")]: focusVisible
74
+ },
75
+ className
76
+ ),
77
+ style: {
78
+ "--saltVerticalNavigationItem-iconPaddingMultiplier": hasIcon ? iconPaddingCount - 1 : iconPaddingCount,
79
+ ...style
80
+ },
81
+ ...rest,
82
+ children
83
+ }
84
+ );
85
+ });
86
+
87
+ exports.VerticalNavigationItemContent = VerticalNavigationItemContent;
88
+ //# 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":["makePrefixer","forwardRef","VerticalNavigationItemContent","useWindow","useComponentCssInjection","verticalNavigationItemContentCss","useRef","useForkRef","useVerticalNavigationItem","useSubMenuContext","useState","useId","useEffect","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,MAAM,YAAA,GAAeA,0BAAa,mCAAmC,CAAA;AAE9D,MAAM,6BAAgC,GAAAC,gBAAA,CAG3C,SAASC,8BAAAA,CAA8B,OAAO,GAAK,EAAA;AACnD,EAAA,MAAM,EAAE,QAAU,EAAA,SAAA,EAAW,KAAO,EAAA,GAAG,MAAS,GAAA,KAAA;AAEhD,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,uCAAA;AAAA,IACR,GAAK,EAAAC,+BAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,YAAA,GAAeC,aAAwB,IAAI,CAAA;AACjD,EAAM,MAAA,SAAA,GAAYC,qBAAW,CAAA,GAAA,EAAK,YAAY,CAAA;AAE9C,EAAA,MAAM,EAAE,MAAA,EAAQ,YAAa,EAAA,GAAIC,gDAA0B,EAAA;AAC3D,EAAA,MAAM,EAAE,cAAA,EAAgB,gBAAiB,EAAA,GAAIC,gCAAkB,EAAA;AAC/D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,SAASC,WAAM,EAAA;AAErB,EAAAC,eAAA,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,uBAAAC,cAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,SAAA;AAAA,MACL,SAAW,EAAAC,SAAA;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,35 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var clsx = require('clsx');
5
+ var CollapsibleContext = require('../collapsible/CollapsibleContext.js');
6
+ var SemanticIconProvider = require('../semantic-icon-provider/SemanticIconProvider.js');
7
+ require('react');
8
+ var makePrefixer = require('../utils/makePrefixer.js');
9
+ require('../utils/useFloatingUI/useFloatingUI.js');
10
+ require('../utils/useId.js');
11
+ require('../salt-provider/SaltProvider.js');
12
+ require('../viewport/ViewportProvider.js');
13
+
14
+ const withBaseName = makePrefixer.makePrefixer("saltVerticalNavigationItemExpansionIcon");
15
+ const VerticalNavigationItemExpansionIcon = (props) => {
16
+ const { className, ...rest } = props;
17
+ const { CollapseIcon, ExpandIcon } = SemanticIconProvider.useIcon();
18
+ const iconExpansionMap = {
19
+ expanded: CollapseIcon,
20
+ collapsed: ExpandIcon
21
+ };
22
+ const { open } = CollapsibleContext.useCollapsibleContext();
23
+ const Icon = iconExpansionMap[open ? "expanded" : "collapsed"];
24
+ return /* @__PURE__ */ jsxRuntime.jsx(
25
+ Icon,
26
+ {
27
+ className: clsx.clsx(withBaseName(), className),
28
+ "aria-hidden": "true",
29
+ ...rest
30
+ }
31
+ );
32
+ };
33
+
34
+ exports.VerticalNavigationItemExpansionIcon = VerticalNavigationItemExpansionIcon;
35
+ //# 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":["makePrefixer","useIcon","useCollapsibleContext","jsx","clsx"],"mappings":";;;;;;;;;;;;;AAMA,MAAM,YAAA,GAAeA,0BAAa,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,GAAIC,4BAAQ,EAAA;AAC7C,EAAA,MAAM,gBAAmB,GAAA;AAAA,IACvB,QAAU,EAAA,YAAA;AAAA,IACV,SAAW,EAAA;AAAA,GACb;AAEA,EAAM,MAAA,EAAE,IAAK,EAAA,GAAIC,wCAAsB,EAAA;AAEvC,EAAA,MAAM,IAAO,GAAA,gBAAA,CAAiB,IAAO,GAAA,UAAA,GAAa,WAAW,CAAA;AAC7D,EACE,uBAAAC,cAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,aAAY,EAAA,MAAA;AAAA,MACX,GAAG;AAAA;AAAA,GACN;AAEJ;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltVerticalNavigationItemLabel {\n flex: 1;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=VerticalNavigationItemLabel.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemLabel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var makePrefixer = require('../utils/makePrefixer.js');
9
+ require('../utils/useFloatingUI/useFloatingUI.js');
10
+ require('../utils/useId.js');
11
+ require('../salt-provider/SaltProvider.js');
12
+ require('../viewport/ViewportProvider.js');
13
+ var VerticalNavigationItemLabel$1 = require('./VerticalNavigationItemLabel.css.js');
14
+
15
+ const withBaseName = makePrefixer.makePrefixer("saltVerticalNavigationItemLabel");
16
+ const VerticalNavigationItemLabel = React.forwardRef(function VerticalNavigationItemLabel2(props, ref) {
17
+ const { children, className, ...rest } = props;
18
+ const targetWindow = window.useWindow();
19
+ styles.useComponentCssInjection({
20
+ testId: "salt-vertical-navigation-item-label",
21
+ css: VerticalNavigationItemLabel$1,
22
+ window: targetWindow
23
+ });
24
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: clsx.clsx(withBaseName(), className), ref, ...rest, children });
25
+ });
26
+
27
+ exports.VerticalNavigationItemLabel = VerticalNavigationItemLabel;
28
+ //# 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":["makePrefixer","forwardRef","VerticalNavigationItemLabel","useWindow","useComponentCssInjection","verticalNavigationItemLabelCss","jsx","clsx"],"mappings":";;;;;;;;;;;;;;AAUA,MAAM,YAAA,GAAeA,0BAAa,iCAAiC,CAAA;AAE5D,MAAM,2BAA8B,GAAAC,gBAAA,CAGzC,SAASC,4BAAAA,CAA4B,OAAO,GAAK,EAAA;AACjD,EAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,GAAG,MAAS,GAAA,KAAA;AACzC,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,qCAAA;AAAA,IACR,GAAK,EAAAC,6BAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAAC,cAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAWC,SAAK,CAAA,YAAA,EAAgB,EAAA,SAAS,CAAG,EAAA,GAAA,EAAW,GAAG,IAAA,EAC7D,QACH,EAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ 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";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=VerticalNavigationItemTrigger.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemTrigger.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var makePrefixer = require('../utils/makePrefixer.js');
9
+ var renderProps = require('../utils/renderProps.js');
10
+ require('../utils/useFloatingUI/useFloatingUI.js');
11
+ require('../utils/useId.js');
12
+ require('../salt-provider/SaltProvider.js');
13
+ require('../viewport/ViewportProvider.js');
14
+ var VerticalNavigationItem = require('./VerticalNavigationItem.js');
15
+ var VerticalNavigationItemTrigger$1 = require('./VerticalNavigationItemTrigger.css.js');
16
+
17
+ function ItemAction(props) {
18
+ return renderProps.renderProps("a", props);
19
+ }
20
+ const withBaseName = makePrefixer.makePrefixer("saltVerticalNavigationItemTrigger");
21
+ const VerticalNavigationItemTrigger = React.forwardRef(function VerticalNavigationItemTrigger2(props, ref) {
22
+ const {
23
+ className,
24
+ children,
25
+ render,
26
+ href,
27
+ onFocus,
28
+ onBlur,
29
+ onMouseDown,
30
+ ...rest
31
+ } = props;
32
+ const targetWindow = window.useWindow();
33
+ styles.useComponentCssInjection({
34
+ testId: "salt-vertical-navigation-item-trigger",
35
+ css: VerticalNavigationItemTrigger$1,
36
+ window: targetWindow
37
+ });
38
+ const isLink = href != null;
39
+ const { active, setFocusVisible } = VerticalNavigationItem.useVerticalNavigationItem();
40
+ const wasMouseDownRef = React.useRef(false);
41
+ const handleFocus = (event) => {
42
+ if (!wasMouseDownRef.current) {
43
+ setFocusVisible(true);
44
+ }
45
+ wasMouseDownRef.current = false;
46
+ onFocus == null ? void 0 : onFocus(event);
47
+ };
48
+ const handleBlur = (event) => {
49
+ setFocusVisible(false);
50
+ onBlur == null ? void 0 : onBlur(event);
51
+ };
52
+ const handleMouseDown = (event) => {
53
+ wasMouseDownRef.current = true;
54
+ onMouseDown == null ? void 0 : onMouseDown(event);
55
+ };
56
+ return /* @__PURE__ */ jsxRuntime.jsx(
57
+ ItemAction,
58
+ {
59
+ className: clsx.clsx(withBaseName(), className),
60
+ href,
61
+ "aria-current": active ? "page" : void 0,
62
+ render: render ?? (isLink ? void 0 : /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button" })),
63
+ ref,
64
+ onFocus: handleFocus,
65
+ onBlur: handleBlur,
66
+ onMouseDown: handleMouseDown,
67
+ ...rest,
68
+ children
69
+ }
70
+ );
71
+ });
72
+
73
+ exports.VerticalNavigationItemTrigger = VerticalNavigationItemTrigger;
74
+ //# 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":["renderProps","makePrefixer","forwardRef","VerticalNavigationItemTrigger","useWindow","useComponentCssInjection","verticalNavigationItemTriggerCss","useVerticalNavigationItem","useRef","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;;AAeA,SAAS,WAAW,KAAsC,EAAA;AACxD,EAAO,OAAAA,uBAAA,CAAY,KAAK,KAAK,CAAA;AAC/B;AAOA,MAAM,YAAA,GAAeC,0BAAa,mCAAmC,CAAA;AAE9D,MAAM,6BAAgC,GAAAC,gBAAA,CAG3C,SAASC,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,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,uCAAA;AAAA,IACR,GAAK,EAAAC,+BAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,SAAS,IAAQ,IAAA,IAAA;AACvB,EAAA,MAAM,EAAE,MAAA,EAAQ,eAAgB,EAAA,GAAIC,gDAA0B,EAAA;AAE9D,EAAM,MAAA,eAAA,GAAkBC,aAAO,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,uBAAAC,cAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,IAAA;AAAA,MACA,cAAA,EAAc,SAAS,MAAS,GAAA,MAAA;AAAA,MAChC,QAAQ,MAAW,KAAA,MAAA,GAAS,yBAAaD,cAAA,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,6 @@
1
+ 'use strict';
2
+
3
+ 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";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=VerticalNavigationSubMenu.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationSubMenu.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var makePrefixer = require('../utils/makePrefixer.js');
9
+ require('../utils/useFloatingUI/useFloatingUI.js');
10
+ require('../utils/useId.js');
11
+ require('../salt-provider/SaltProvider.js');
12
+ require('../viewport/ViewportProvider.js');
13
+ var SubMenuContext = require('./SubMenuContext.js');
14
+ var VerticalNavigationSubMenu$1 = require('./VerticalNavigationSubMenu.css.js');
15
+
16
+ const withBaseName = makePrefixer.makePrefixer("saltVerticalNavigationSubMenu");
17
+ const VerticalNavigationSubMenu = React.forwardRef(function VerticalNavigationSubMenu2(props, ref) {
18
+ const { children, className, ...rest } = props;
19
+ const targetWindow = window.useWindow();
20
+ styles.useComponentCssInjection({
21
+ testId: "salt-vertical-navigation-sub-menu",
22
+ css: VerticalNavigationSubMenu$1,
23
+ window: targetWindow
24
+ });
25
+ const [directIcons, setDirectIcons] = React.useState([]);
26
+ return /* @__PURE__ */ jsxRuntime.jsx(SubMenuContext.SubMenuProvider, { directIcons, setDirectIcons, children: /* @__PURE__ */ jsxRuntime.jsx(
27
+ "ul",
28
+ {
29
+ ref,
30
+ className: clsx.clsx(withBaseName(), className),
31
+ "data-has-direct-icons": directIcons.length > 0,
32
+ ...rest,
33
+ children
34
+ }
35
+ ) });
36
+ });
37
+
38
+ exports.VerticalNavigationSubMenu = VerticalNavigationSubMenu;
39
+ //# 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":["makePrefixer","forwardRef","VerticalNavigationSubMenu","useWindow","useComponentCssInjection","verticalNavigationSubMenuCss","useState","jsx","SubMenuProvider","clsx"],"mappings":";;;;;;;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,0BAAa,+BAA+B,CAAA;AAE1D,MAAM,yBAA4B,GAAAC,gBAAA,CAGvC,SAASC,0BAAAA,CAA0B,OAAO,GAAK,EAAA;AAC/C,EAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,GAAG,MAAS,GAAA,KAAA;AAEzC,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mCAAA;AAAA,IACR,GAAK,EAAAC,2BAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,CAAC,WAAa,EAAA,cAAc,CAAI,GAAAC,cAAA,CAAmB,EAAE,CAAA;AAE3D,EACE,uBAAAC,cAAA,CAACC,8BAAgB,EAAA,EAAA,WAAA,EAA0B,cACzC,EAAA,QAAA,kBAAAD,cAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAAE,SAAA,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;;;;"}
@@ -1,4 +1,4 @@
1
- var css_248z = "/* Styles applied to root component */\n.saltBanner {\n --banner-background: var(--salt-container-primary-background);\n\n background: var(--saltBanner-background, var(--banner-background));\n border-color: var(--saltBanner-borderColor, var(--banner-borderColor));\n border-width: var(--saltBanner-borderWidth, var(--salt-size-fixed-100));\n border-style: var(--saltBanner-borderStyle, var(--salt-borderStyle-solid));\n border-radius: var(--saltBanner-borderRadius, var(--salt-palette-corner, 0));\n box-sizing: border-box;\n display: inline-flex;\n gap: var(--salt-spacing-75);\n padding: var(--saltBanner-padding, var(--salt-spacing-50) var(--salt-spacing-100));\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n}\n\n/* Styles applied to icon */\n.saltBanner-icon.saltIcon {\n min-height: var(--salt-size-base);\n}\n\n/* Styles applied when state = \"info\" */\n.saltBanner-info {\n --banner-borderColor: var(--salt-status-info-borderColor);\n}\n\n/* Styles applied when state = \"error\" */\n.saltBanner-error {\n --banner-borderColor: var(--salt-status-error-borderColor);\n}\n\n/* Styles applied when state = \"warning\" */\n.saltBanner-warning {\n --banner-borderColor: var(--salt-status-warning-borderColor);\n}\n\n/* Styles applied when state = \"success\" */\n.saltBanner-success {\n --banner-borderColor: var(--salt-status-success-borderColor);\n}\n\n.saltBanner-secondary.saltBanner-info {\n --banner-background: var(--salt-status-info-background);\n}\n\n.saltBanner-secondary.saltBanner-error {\n --banner-background: var(--salt-status-error-background);\n}\n\n.saltBanner-secondary.saltBanner-warning {\n --banner-background: var(--salt-status-warning-background);\n}\n\n.saltBanner-secondary.saltBanner-success {\n --banner-background: var(--salt-status-success-background);\n}\n";
1
+ var css_248z = "/* Styles applied to root component */\n.saltBanner {\n --banner-background: var(--salt-container-primary-background);\n\n background: var(--saltBanner-background, var(--banner-background));\n border-color: var(--saltBanner-borderColor, var(--banner-borderColor));\n border-width: var(--saltBanner-borderWidth, var(--salt-size-fixed-100));\n border-style: var(--saltBanner-borderStyle, var(--salt-borderStyle-solid));\n border-radius: var(--saltBanner-borderRadius, var(--salt-palette-corner, 0));\n box-sizing: border-box;\n display: inline-flex;\n gap: var(--salt-spacing-75);\n padding: var(--saltBanner-padding, var(--salt-spacing-50) var(--salt-spacing-100));\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n color: var(--salt-content-primary-foreground);\n}\n\n/* Styles applied to icon */\n.saltBanner-icon.saltIcon {\n min-height: var(--salt-size-base);\n}\n\n/* Styles applied when state = \"info\" */\n.saltBanner-info {\n --banner-borderColor: var(--salt-status-info-borderColor);\n}\n\n/* Styles applied when state = \"error\" */\n.saltBanner-error {\n --banner-borderColor: var(--salt-status-error-borderColor);\n}\n\n/* Styles applied when state = \"warning\" */\n.saltBanner-warning {\n --banner-borderColor: var(--salt-status-warning-borderColor);\n}\n\n/* Styles applied when state = \"success\" */\n.saltBanner-success {\n --banner-borderColor: var(--salt-status-success-borderColor);\n}\n\n.saltBanner-secondary.saltBanner-info {\n --banner-background: var(--salt-status-info-background);\n}\n\n.saltBanner-secondary.saltBanner-error {\n --banner-background: var(--salt-status-error-background);\n}\n\n.saltBanner-secondary.saltBanner-warning {\n --banner-background: var(--salt-status-warning-background);\n}\n\n.saltBanner-secondary.saltBanner-success {\n --banner-background: var(--salt-status-success-background);\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=Banner.css.js.map
@@ -0,0 +1,50 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { clsx } from 'clsx';
3
+ import { forwardRef, useState, useCallback, useMemo } from 'react';
4
+ import { makePrefixer } from '../utils/makePrefixer.js';
5
+ import { useControlled } from '../utils/useControlled.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 { CollapsibleContext } from './CollapsibleContext.js';
11
+
12
+ const withBaseName = makePrefixer("saltCollapsible");
13
+ const Collapsible = forwardRef(
14
+ function Collapsible2(props, ref) {
15
+ const {
16
+ className,
17
+ open: openProp,
18
+ defaultOpen,
19
+ onOpenChange,
20
+ ...rest
21
+ } = props;
22
+ const [open, setOpenState] = useControlled({
23
+ default: Boolean(defaultOpen),
24
+ controlled: openProp,
25
+ name: "Collapsible",
26
+ state: "open"
27
+ });
28
+ const [panelId, setPanelId] = useState(void 0);
29
+ const setOpen = useCallback(
30
+ (event, newOpen) => {
31
+ setOpenState(newOpen);
32
+ onOpenChange == null ? void 0 : onOpenChange(event, newOpen);
33
+ },
34
+ [onOpenChange]
35
+ );
36
+ const contextValue = useMemo(
37
+ () => ({
38
+ open,
39
+ setOpen,
40
+ panelId,
41
+ setPanelId
42
+ }),
43
+ [open, setOpen, panelId]
44
+ );
45
+ return /* @__PURE__ */ jsx(CollapsibleContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx("div", { className: clsx(withBaseName(), className), ref, ...rest }) });
46
+ }
47
+ );
48
+
49
+ export { Collapsible };
50
+ //# sourceMappingURL=Collapsible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collapsible.js","sources":["../src/collapsible/Collapsible.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type SyntheticEvent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { makePrefixer, useControlled } from \"../utils\";\nimport { CollapsibleContext } from \"./CollapsibleContext\";\n\nexport interface CollapsibleProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"onToggle\"> {\n /**\n * Whether the accordion is open.\n */\n open?: boolean;\n /**\n * Whether the accordion is open by default.\n */\n defaultOpen?: boolean;\n /**\n * Callback fired when the accordion is opened or closed.\n */\n onOpenChange?: (\n event: SyntheticEvent<HTMLButtonElement>,\n open: boolean,\n ) => void;\n}\n\nconst withBaseName = makePrefixer(\"saltCollapsible\");\n\nexport const Collapsible = forwardRef<HTMLDivElement, CollapsibleProps>(\n function Collapsible(props, ref) {\n const {\n className,\n open: openProp,\n defaultOpen,\n onOpenChange,\n ...rest\n } = props;\n\n const [open, setOpenState] = useControlled({\n default: Boolean(defaultOpen),\n controlled: openProp,\n name: \"Collapsible\",\n state: \"open\",\n });\n\n const [panelId, setPanelId] = useState<string | undefined>(undefined);\n\n const setOpen = useCallback(\n (event: SyntheticEvent<HTMLButtonElement>, newOpen: boolean) => {\n setOpenState(newOpen);\n onOpenChange?.(event, newOpen);\n },\n [onOpenChange],\n );\n\n const contextValue = useMemo(\n () => ({\n open,\n setOpen,\n panelId,\n setPanelId,\n }),\n [open, setOpen, panelId],\n );\n\n return (\n <CollapsibleContext.Provider value={contextValue}>\n <div className={clsx(withBaseName(), className)} ref={ref} {...rest} />\n </CollapsibleContext.Provider>\n );\n },\n);\n"],"names":["Collapsible"],"mappings":";;;;;;;;;;;AA+BA,MAAM,YAAA,GAAe,aAAa,iBAAiB,CAAA;AAE5C,MAAM,WAAc,GAAA,UAAA;AAAA,EACzB,SAASA,YAAY,CAAA,KAAA,EAAO,GAAK,EAAA;AAC/B,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,IAAM,EAAA,QAAA;AAAA,MACN,WAAA;AAAA,MACA,YAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,KAAA;AAEJ,IAAA,MAAM,CAAC,IAAA,EAAM,YAAY,CAAA,GAAI,aAAc,CAAA;AAAA,MACzC,OAAA,EAAS,QAAQ,WAAW,CAAA;AAAA,MAC5B,UAAY,EAAA,QAAA;AAAA,MACZ,IAAM,EAAA,aAAA;AAAA,MACN,KAAO,EAAA;AAAA,KACR,CAAA;AAED,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAA6B,MAAS,CAAA;AAEpE,IAAA,MAAM,OAAU,GAAA,WAAA;AAAA,MACd,CAAC,OAA0C,OAAqB,KAAA;AAC9D,QAAA,YAAA,CAAa,OAAO,CAAA;AACpB,QAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,KAAO,EAAA,OAAA,CAAA;AAAA,OACxB;AAAA,MACA,CAAC,YAAY;AAAA,KACf;AAEA,IAAA,MAAM,YAAe,GAAA,OAAA;AAAA,MACnB,OAAO;AAAA,QACL,IAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA,OACF,CAAA;AAAA,MACA,CAAC,IAAM,EAAA,OAAA,EAAS,OAAO;AAAA,KACzB;AAEA,IAAA,2BACG,kBAAmB,CAAA,QAAA,EAAnB,EAA4B,KAAA,EAAO,cAClC,QAAC,kBAAA,GAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,IAAA,CAAK,cAAgB,EAAA,SAAS,GAAG,GAAW,EAAA,GAAG,MAAM,CACvE,EAAA,CAAA;AAAA;AAGN;;;;"}
@@ -0,0 +1,26 @@
1
+ import { useContext } from 'react';
2
+ import { createContext } from '../utils/createContext.js';
3
+ import 'clsx';
4
+ import 'react/jsx-runtime';
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 CollapsibleContext = createContext(
11
+ "CollapsibleContext",
12
+ {
13
+ open: false,
14
+ setOpen: () => {
15
+ },
16
+ panelId: void 0,
17
+ setPanelId: () => {
18
+ }
19
+ }
20
+ );
21
+ function useCollapsibleContext() {
22
+ return useContext(CollapsibleContext);
23
+ }
24
+
25
+ export { CollapsibleContext, useCollapsibleContext };
26
+ //# sourceMappingURL=CollapsibleContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsibleContext.js","sources":["../src/collapsible/CollapsibleContext.ts"],"sourcesContent":["import { type SyntheticEvent, useContext } from \"react\";\nimport { createContext } from \"../utils\";\n\nexport type CollapsibleContextValue = {\n open: boolean;\n setOpen: (event: SyntheticEvent<HTMLButtonElement>, open: boolean) => void;\n panelId?: string;\n setPanelId?: (panelId: string) => void;\n};\n\nexport const CollapsibleContext = createContext<CollapsibleContextValue>(\n \"CollapsibleContext\",\n {\n open: false,\n setOpen: () => {},\n panelId: undefined,\n setPanelId: () => {},\n },\n);\n\nexport function useCollapsibleContext() {\n return useContext(CollapsibleContext);\n}\n"],"names":[],"mappings":";;;;;;;;;AAUO,MAAM,kBAAqB,GAAA,aAAA;AAAA,EAChC,oBAAA;AAAA,EACA;AAAA,IACE,IAAM,EAAA,KAAA;AAAA,IACN,SAAS,MAAM;AAAA,KAAC;AAAA,IAChB,OAAS,EAAA,MAAA;AAAA,IACT,YAAY,MAAM;AAAA;AAAC;AAEvB;AAEO,SAAS,qBAAwB,GAAA;AACtC,EAAA,OAAO,WAAW,kBAAkB,CAAA;AACtC;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltCollapsiblePanel {\n display: grid;\n transition:\n grid-template-rows var(--salt-duration-perceptible) ease-in-out,\n opacity var(--salt-duration-perceptible) ease-in-out,\n visibility var(--salt-duration-perceptible) ease-in-out;\n}\n\n.saltCollapsiblePanel[aria-hidden=\"true\"] {\n grid-template-rows: 0fr;\n opacity: 0;\n visibility: hidden;\n}\n\n.saltCollapsiblePanel {\n grid-template-rows: 1fr;\n opacity: 1;\n visibility: visible;\n}\n\n.saltCollapsiblePanel-inner {\n overflow: hidden;\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=CollapsiblePanel.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsiblePanel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,44 @@
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 { useEffect } from 'react';
6
+ import { makePrefixer } from '../utils/makePrefixer.js';
7
+ import '../utils/useFloatingUI/useFloatingUI.js';
8
+ import { useId } from '../utils/useId.js';
9
+ import '../salt-provider/SaltProvider.js';
10
+ import '../viewport/ViewportProvider.js';
11
+ import { useCollapsibleContext } from './CollapsibleContext.js';
12
+ import css_248z from './CollapsiblePanel.css.js';
13
+
14
+ const withBaseName = makePrefixer("saltCollapsiblePanel");
15
+ const CollapsiblePanel = (props) => {
16
+ const { children, className, id: idProp, ...rest } = props;
17
+ const targetWindow = useWindow();
18
+ useComponentCssInjection({
19
+ testId: "salt-collapsible-panel",
20
+ css: css_248z,
21
+ window: targetWindow
22
+ });
23
+ const id = useId(idProp);
24
+ const { open, setPanelId } = useCollapsibleContext();
25
+ useEffect(() => {
26
+ if (id) {
27
+ setPanelId == null ? void 0 : setPanelId(id);
28
+ }
29
+ }, [id, setPanelId]);
30
+ return /* @__PURE__ */ jsx(
31
+ "div",
32
+ {
33
+ className: clsx(withBaseName(), className),
34
+ id,
35
+ "aria-hidden": !open ? "true" : void 0,
36
+ hidden: !open,
37
+ ...rest,
38
+ children: /* @__PURE__ */ jsx("div", { className: withBaseName("inner"), children })
39
+ }
40
+ );
41
+ };
42
+
43
+ export { CollapsiblePanel };
44
+ //# sourceMappingURL=CollapsiblePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsiblePanel.js","sources":["../src/collapsible/CollapsiblePanel.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, useEffect } from \"react\";\nimport { makePrefixer, useId } from \"../utils\";\n\nimport { useCollapsibleContext } from \"./CollapsibleContext\";\nimport collapsiblePanelCss from \"./CollapsiblePanel.css\";\n\nexport interface CollapsiblePanelProps\n extends ComponentPropsWithoutRef<\"div\"> {}\n\nconst withBaseName = makePrefixer(\"saltCollapsiblePanel\");\n\nexport const CollapsiblePanel = (props: CollapsiblePanelProps) => {\n const { children, className, id: idProp, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-collapsible-panel\",\n css: collapsiblePanelCss,\n window: targetWindow,\n });\n\n const id = useId(idProp);\n const { open, setPanelId } = useCollapsibleContext();\n\n useEffect(() => {\n if (id) {\n setPanelId?.(id);\n }\n }, [id, setPanelId]);\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n id={id}\n aria-hidden={!open ? \"true\" : undefined}\n hidden={!open}\n {...rest}\n >\n <div className={withBaseName(\"inner\")}>{children}</div>\n </div>\n );\n};\n"],"names":["collapsiblePanelCss"],"mappings":";;;;;;;;;;;;;AAYA,MAAM,YAAA,GAAe,aAAa,sBAAsB,CAAA;AAE3C,MAAA,gBAAA,GAAmB,CAAC,KAAiC,KAAA;AAChE,EAAA,MAAM,EAAE,QAAU,EAAA,SAAA,EAAW,IAAI,MAAQ,EAAA,GAAG,MAAS,GAAA,KAAA;AAErD,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,wBAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,EAAA,GAAK,MAAM,MAAM,CAAA;AACvB,EAAA,MAAM,EAAE,IAAA,EAAM,UAAW,EAAA,GAAI,qBAAsB,EAAA;AAEnD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,EAAI,EAAA;AACN,MAAa,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAA,EAAA,CAAA;AAAA;AACf,GACC,EAAA,CAAC,EAAI,EAAA,UAAU,CAAC,CAAA;AAEnB,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,EAAA;AAAA,MACA,aAAA,EAAa,CAAC,IAAA,GAAO,MAAS,GAAA,MAAA;AAAA,MAC9B,QAAQ,CAAC,IAAA;AAAA,MACR,GAAG,IAAA;AAAA,MAEJ,8BAAC,KAAI,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,OAAO,GAAI,QAAS,EAAA;AAAA;AAAA,GACnD;AAEJ;;;;"}