@salt-ds/lab 1.0.0-alpha.73 → 1.0.0-alpha.74

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 (134) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/css/salt-lab.css +331 -1
  3. package/dist-cjs/collapsible/Collapsible.js +47 -0
  4. package/dist-cjs/collapsible/Collapsible.js.map +1 -0
  5. package/dist-cjs/collapsible/CollapsibleContext.js +23 -0
  6. package/dist-cjs/collapsible/CollapsibleContext.js.map +1 -0
  7. package/dist-cjs/collapsible/CollapsiblePanel.css.js +6 -0
  8. package/dist-cjs/collapsible/CollapsiblePanel.css.js.map +1 -0
  9. package/dist-cjs/collapsible/CollapsiblePanel.js +42 -0
  10. package/dist-cjs/collapsible/CollapsiblePanel.js.map +1 -0
  11. package/dist-cjs/collapsible/CollapsibleTrigger.js +36 -0
  12. package/dist-cjs/collapsible/CollapsibleTrigger.js.map +1 -0
  13. package/dist-cjs/index.js +36 -0
  14. package/dist-cjs/index.js.map +1 -1
  15. package/dist-cjs/table/TBody.js +32 -0
  16. package/dist-cjs/table/TBody.js.map +1 -0
  17. package/dist-cjs/table/TD.js +30 -0
  18. package/dist-cjs/table/TD.js.map +1 -0
  19. package/dist-cjs/table/TFoot.js +45 -0
  20. package/dist-cjs/table/TFoot.js.map +1 -0
  21. package/dist-cjs/table/TH.js +30 -0
  22. package/dist-cjs/table/TH.js.map +1 -0
  23. package/dist-cjs/table/THead.js +45 -0
  24. package/dist-cjs/table/THead.js.map +1 -0
  25. package/dist-cjs/table/TR.js +30 -0
  26. package/dist-cjs/table/TR.js.map +1 -0
  27. package/dist-cjs/table/Table.css.js +6 -0
  28. package/dist-cjs/table/Table.css.js.map +1 -0
  29. package/dist-cjs/table/Table.js +47 -0
  30. package/dist-cjs/table/Table.js.map +1 -0
  31. package/dist-cjs/vertical-navigation/SubMenuContext.js +34 -0
  32. package/dist-cjs/vertical-navigation/SubMenuContext.js.map +1 -0
  33. package/dist-cjs/vertical-navigation/VerticalNavigation.css.js +6 -0
  34. package/dist-cjs/vertical-navigation/VerticalNavigation.css.js.map +1 -0
  35. package/dist-cjs/vertical-navigation/VerticalNavigation.js +34 -0
  36. package/dist-cjs/vertical-navigation/VerticalNavigation.js.map +1 -0
  37. package/dist-cjs/vertical-navigation/VerticalNavigationItem.js +48 -0
  38. package/dist-cjs/vertical-navigation/VerticalNavigationItem.js.map +1 -0
  39. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js +6 -0
  40. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js.map +1 -0
  41. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js +83 -0
  42. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js.map +1 -0
  43. package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js +29 -0
  44. package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +1 -0
  45. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js +6 -0
  46. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js.map +1 -0
  47. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js +24 -0
  48. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js.map +1 -0
  49. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js +6 -0
  50. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +1 -0
  51. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js +69 -0
  52. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js.map +1 -0
  53. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js +6 -0
  54. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js.map +1 -0
  55. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js +35 -0
  56. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js.map +1 -0
  57. package/dist-es/collapsible/Collapsible.js +45 -0
  58. package/dist-es/collapsible/Collapsible.js.map +1 -0
  59. package/dist-es/collapsible/CollapsibleContext.js +20 -0
  60. package/dist-es/collapsible/CollapsibleContext.js.map +1 -0
  61. package/dist-es/collapsible/CollapsiblePanel.css.js +4 -0
  62. package/dist-es/collapsible/CollapsiblePanel.css.js.map +1 -0
  63. package/dist-es/collapsible/CollapsiblePanel.js +40 -0
  64. package/dist-es/collapsible/CollapsiblePanel.js.map +1 -0
  65. package/dist-es/collapsible/CollapsibleTrigger.js +34 -0
  66. package/dist-es/collapsible/CollapsibleTrigger.js.map +1 -0
  67. package/dist-es/index.js +17 -0
  68. package/dist-es/index.js.map +1 -1
  69. package/dist-es/table/TBody.js +30 -0
  70. package/dist-es/table/TBody.js.map +1 -0
  71. package/dist-es/table/TD.js +28 -0
  72. package/dist-es/table/TD.js.map +1 -0
  73. package/dist-es/table/TFoot.js +43 -0
  74. package/dist-es/table/TFoot.js.map +1 -0
  75. package/dist-es/table/TH.js +28 -0
  76. package/dist-es/table/TH.js.map +1 -0
  77. package/dist-es/table/THead.js +43 -0
  78. package/dist-es/table/THead.js.map +1 -0
  79. package/dist-es/table/TR.js +28 -0
  80. package/dist-es/table/TR.js.map +1 -0
  81. package/dist-es/table/Table.css.js +4 -0
  82. package/dist-es/table/Table.css.js.map +1 -0
  83. package/dist-es/table/Table.js +44 -0
  84. package/dist-es/table/Table.js.map +1 -0
  85. package/dist-es/vertical-navigation/SubMenuContext.js +30 -0
  86. package/dist-es/vertical-navigation/SubMenuContext.js.map +1 -0
  87. package/dist-es/vertical-navigation/VerticalNavigation.css.js +4 -0
  88. package/dist-es/vertical-navigation/VerticalNavigation.css.js.map +1 -0
  89. package/dist-es/vertical-navigation/VerticalNavigation.js +32 -0
  90. package/dist-es/vertical-navigation/VerticalNavigation.js.map +1 -0
  91. package/dist-es/vertical-navigation/VerticalNavigationItem.js +45 -0
  92. package/dist-es/vertical-navigation/VerticalNavigationItem.js.map +1 -0
  93. package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js +4 -0
  94. package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js.map +1 -0
  95. package/dist-es/vertical-navigation/VerticalNavigationItemContent.js +81 -0
  96. package/dist-es/vertical-navigation/VerticalNavigationItemContent.js.map +1 -0
  97. package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js +27 -0
  98. package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +1 -0
  99. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js +4 -0
  100. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js.map +1 -0
  101. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js +22 -0
  102. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js.map +1 -0
  103. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js +4 -0
  104. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +1 -0
  105. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js +67 -0
  106. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js.map +1 -0
  107. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js +4 -0
  108. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js.map +1 -0
  109. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js +33 -0
  110. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js.map +1 -0
  111. package/dist-types/collapsible/Collapsible.d.ts +16 -0
  112. package/dist-types/collapsible/CollapsibleContext.d.ts +9 -0
  113. package/dist-types/collapsible/CollapsiblePanel.d.ts +4 -0
  114. package/dist-types/collapsible/CollapsibleTrigger.d.ts +5 -0
  115. package/dist-types/collapsible/index.d.ts +3 -0
  116. package/dist-types/index.d.ts +3 -0
  117. package/dist-types/table/TBody.d.ts +4 -0
  118. package/dist-types/table/TD.d.ts +4 -0
  119. package/dist-types/table/TFoot.d.ts +20 -0
  120. package/dist-types/table/TH.d.ts +4 -0
  121. package/dist-types/table/THead.d.ts +20 -0
  122. package/dist-types/table/TR.d.ts +4 -0
  123. package/dist-types/table/Table.d.ts +20 -0
  124. package/dist-types/table/index.d.ts +7 -0
  125. package/dist-types/vertical-navigation/SubMenuContext.d.ts +14 -0
  126. package/dist-types/vertical-navigation/VerticalNavigation.d.ts +5 -0
  127. package/dist-types/vertical-navigation/VerticalNavigationItem.d.ts +12 -0
  128. package/dist-types/vertical-navigation/VerticalNavigationItemContent.d.ts +4 -0
  129. package/dist-types/vertical-navigation/VerticalNavigationItemExpansionIcon.d.ts +2 -0
  130. package/dist-types/vertical-navigation/VerticalNavigationItemLabel.d.ts +4 -0
  131. package/dist-types/vertical-navigation/VerticalNavigationItemTrigger.d.ts +6 -0
  132. package/dist-types/vertical-navigation/VerticalNavigationSubMenu.d.ts +4 -0
  133. package/dist-types/vertical-navigation/index.d.ts +7 -0
  134. package/package.json +2 -2
@@ -0,0 +1,43 @@
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 { withTableBaseName } from './Table.js';
7
+ import css_248z from './Table.css.js';
8
+
9
+ const THead = forwardRef(
10
+ function THead2({
11
+ children,
12
+ className,
13
+ sticky = false,
14
+ variant,
15
+ divider = "primary",
16
+ ...rest
17
+ }, ref) {
18
+ const targetWindow = useWindow();
19
+ useComponentCssInjection({
20
+ testId: "salt-table-thead",
21
+ css: css_248z,
22
+ window: targetWindow
23
+ });
24
+ return /* @__PURE__ */ jsx(
25
+ "thead",
26
+ {
27
+ ref,
28
+ className: clsx(
29
+ withTableBaseName("thead"),
30
+ { [withTableBaseName(`thead-${variant}`)]: variant },
31
+ { [withTableBaseName("thead-sticky")]: sticky },
32
+ { [withTableBaseName(`thead-divider-${divider}`)]: divider },
33
+ className
34
+ ),
35
+ ...rest,
36
+ children
37
+ }
38
+ );
39
+ }
40
+ );
41
+
42
+ export { THead };
43
+ //# sourceMappingURL=THead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"THead.js","sources":["../src/table/THead.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 { withTableBaseName } from \"./Table\";\n\nimport tableCss from \"./Table.css\";\n\nexport interface THeadProps extends ComponentPropsWithoutRef<\"thead\"> {\n /**\n * If header is positioned with sticky styling.\n * @default false\n */\n sticky?: boolean;\n /**\n * Divider styling variant. Defaults to \"primary\";\n * @default primary\n */\n divider?: \"primary\" | \"secondary\" | \"tertiary\" | \"none\";\n /**\n * Styling variant for header.\n * If undefined, will match variant of parent Table component's variant.\n * @default undefined\n */\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\n}\n\nexport const THead = forwardRef<HTMLTableSectionElement, THeadProps>(\n function THead(\n {\n children,\n className,\n sticky = false,\n variant,\n divider = \"primary\",\n ...rest\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-table-thead\",\n css: tableCss,\n window: targetWindow,\n });\n\n return (\n <thead\n ref={ref}\n className={clsx(\n withTableBaseName(\"thead\"),\n { [withTableBaseName(`thead-${variant}`)]: variant },\n { [withTableBaseName(\"thead-sticky\")]: sticky },\n { [withTableBaseName(`thead-divider-${divider}`)]: divider },\n className,\n )}\n {...rest}\n >\n {children}\n </thead>\n );\n },\n);\n"],"names":["THead","tableCss"],"mappings":";;;;;;;;AA2BO,MAAM,KAAQ,GAAA,UAAA;AAAA,EACnB,SAASA,MACP,CAAA;AAAA,IACE,QAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAS,GAAA,KAAA;AAAA,IACT,OAAA;AAAA,IACA,OAAU,GAAA,SAAA;AAAA,IACV,GAAG;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,kBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IACE,uBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAW,EAAA,IAAA;AAAA,UACT,kBAAkB,OAAO,CAAA;AAAA,UACzB,EAAE,CAAC,iBAAkB,CAAA,CAAA,MAAA,EAAS,OAAO,CAAE,CAAA,CAAC,GAAG,OAAQ,EAAA;AAAA,UACnD,EAAE,CAAC,iBAAA,CAAkB,cAAc,CAAC,GAAG,MAAO,EAAA;AAAA,UAC9C,EAAE,CAAC,iBAAkB,CAAA,CAAA,cAAA,EAAiB,OAAO,CAAE,CAAA,CAAC,GAAG,OAAQ,EAAA;AAAA,UAC3D;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA;AAGN;;;;"}
@@ -0,0 +1,28 @@
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 { withTableBaseName } from './Table.js';
7
+ import css_248z from './Table.css.js';
8
+
9
+ const TR = forwardRef(function TR2({ children, className, ...rest }, ref) {
10
+ const targetWindow = useWindow();
11
+ useComponentCssInjection({
12
+ testId: "salt-table-tr",
13
+ css: css_248z,
14
+ window: targetWindow
15
+ });
16
+ return /* @__PURE__ */ jsx(
17
+ "tr",
18
+ {
19
+ ref,
20
+ className: clsx(withTableBaseName("tr"), className),
21
+ ...rest,
22
+ children
23
+ }
24
+ );
25
+ });
26
+
27
+ export { TR };
28
+ //# sourceMappingURL=TR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TR.js","sources":["../src/table/TR.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 { withTableBaseName } from \"./Table\";\n\nimport tableCss from \"./Table.css\";\n\nexport interface TRProps extends ComponentPropsWithoutRef<\"tr\"> {}\n\nexport const TR = forwardRef<HTMLTableRowElement, TRProps>(function TR(\n { children, className, ...rest },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-table-tr\",\n css: tableCss,\n window: targetWindow,\n });\n\n return (\n <tr\n ref={ref}\n className={clsx(withTableBaseName(\"tr\"), className)}\n {...rest}\n >\n {children}\n </tr>\n );\n});\n"],"names":["TR","tableCss"],"mappings":";;;;;;;;AAUa,MAAA,EAAA,GAAK,UAAyC,CAAA,SAASA,GAClE,CAAA,EAAE,UAAU,SAAW,EAAA,GAAG,IAAK,EAAA,EAC/B,GACA,EAAA;AACA,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,eAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAA,IAAA,CAAK,iBAAkB,CAAA,IAAI,GAAG,SAAS,CAAA;AAAA,MACjD,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = "/* Table: Main css class */\n.saltTable {\n --table-header-height: calc(var(--salt-size-base) + var(--salt-spacing-100) + var(--salt-size-fixed-100));\n --table-footer-height: calc(var(--salt-size-base) + var(--salt-spacing-100) + var(--salt-size-fixed-100));\n --table-row-height: calc(var(--salt-size-base) + var(--salt-spacing-100) + var(--salt-size-fixed-100));\n}\n\n.saltTable-primary {\n --table-background: var(--salt-container-primary-background);\n}\n\n.saltTable-secondary {\n --table-background: var(--salt-container-secondary-background);\n}\n\n.saltTable-tertiary {\n --table-background: var(--salt-container-tertiary-background);\n}\n\n.saltTable-divider-primary {\n --table-divider-color: var(--salt-separable-primary-borderColor);\n}\n\n.saltTable-divider-secondary {\n --table-divider-color: var(--salt-separable-secondary-borderColor);\n}\n\n.saltTable-divider-tertiary {\n --table-divider-color: var(--salt-separable-tertiary-borderColor);\n}\n\n/* Zebra styling */\ntable.saltTable-zebra-primary tbody tr:nth-of-type(odd) {\n --table-background: var(--salt-container-primary-background);\n}\n\ntable.saltTable-zebra-secondary tbody tr:nth-of-type(odd) {\n --table-background: var(--salt-container-secondary-background);\n}\n\ntable.saltTable-zebra-tertiary tbody tr:nth-of-type(odd) {\n --table-background: var(--salt-container-tertiary-background);\n}\n\ntable.saltTable {\n border-spacing: 0;\n border-radius: var(--salt-palette-corner, 0);\n border-collapse: collapse;\n color: var(--salt-content-primary-foreground);\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n table-layout: fixed;\n width: 100%;\n}\n\n/* THead */\ntable.saltTable thead {\n border-start-start-radius: var(--salt-palette-corner);\n border-start-end-radius: var(--salt-palette-corner);\n color: var(--salt-content-secondary-foreground);\n height: var(--table-header-height);\n min-height: var(--table-header-height);\n font-size: var(--salt-text-label-fontSize);\n font-weight: var(--salt-text-label-fontWeight-strong);\n line-height: var(--salt-text-label-lineHeight);\n white-space: nowrap;\n}\n\ntable.saltTable thead.saltTable-thead-sticky {\n position: sticky;\n top: 0;\n}\n\ntable.saltTable thead.saltTable-thead-primary tr {\n background: var(--salt-container-primary-background);\n}\n\ntable.saltTable thead.saltTable-thead-secondary tr {\n background: var(--salt-container-secondary-background);\n}\n\ntable.saltTable thead.saltTable-thead-tertiary tr {\n background: var(--salt-container-tertiary-background);\n}\n\ntable.saltTable thead.saltTable-thead tr {\n border-bottom: var(--salt-borderStyle-solid) var(--table-header-divider-color) var(--salt-size-fixed-100);\n}\n\ntable.saltTable thead.saltTable-thead-divider-primary {\n --table-header-divider-color: var(--salt-separable-primary-borderColor);\n}\n\ntable.saltTable thead.saltTable-thead-divider-secondary {\n --table-header-divider-color: var(--salt-separable-secondary-borderColor);\n}\n\ntable.saltTable thead.saltTable-thead-divider-tertiary {\n --table-header-divider-color: var(--salt-separable-tertiary-borderColor);\n}\n\ntable.saltTable thead.saltTable-thead-divider-none {\n --table-header-divider-color: transparent;\n}\n\n/* TFoot */\ntable.saltTable tfoot {\n border-end-start-radius: var(--salt-palette-corner);\n border-end-end-radius: var(--salt-palette-corner);\n color: var(--salt-content-primary-foreground);\n height: var(--table-footer-height);\n min-height: var(--table-footer-height);\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n font-weight: var(--salt-text-fontWeight-strong);\n white-space: nowrap;\n}\n\ntable.saltTable tfoot.saltTable-tfoot-sticky {\n position: sticky;\n bottom: 0;\n}\n\ntable.saltTable tfoot.saltTable-tfoot tr {\n border-top: var(--salt-borderStyle-solid) var(--table-footer-divider-color) var(--salt-size-fixed-100);\n}\n\ntable.saltTable tfoot.saltTable-tfoot-primary tr {\n background: var(--salt-container-primary-background);\n}\n\ntable.saltTable tfoot.saltTable-tfoot-secondary tr {\n background: var(--salt-container-secondary-background);\n}\n\ntable.saltTable tfoot.saltTable-tfoot-tertiary tr {\n background: var(--salt-container-tertiary-background);\n}\n\ntable.saltTable tfoot.saltTable-tfoot-divider-primary tr {\n --table-footer-divider-color: var(--salt-separable-primary-borderColor);\n}\n\ntable.saltTable tfoot.saltTable-tfoot-divider-secondary tr {\n --table-footer-divider-color: var(--salt-separable-secondary-borderColor);\n}\n\ntable.saltTable tfoot.saltTable-tfoot-divider-tertiary tr {\n --table-footer-divider-color: var(--salt-separable-tertiary-borderColor);\n}\n\ntable.saltTable tfoot.saltTable-tfoot-divider-none tr {\n --table-footer-divider-color: transparent;\n}\n\n/* TH */\ntable.saltTable th {\n overflow: hidden;\n padding: var(--salt-spacing-100);\n position: relative;\n text-align: start;\n}\n\n.table.saltTable th[scope=\"row\"] {\n font-weight: var(--salt-text-fontWeight-strong);\n line-height: var(--salt-text-lineHeight);\n}\n\ntable.saltTable th + th::before {\n --table-th-separator-height: calc(var(--salt-size-base) / 2 - 2 * var(--salt-size-fixed-100));\n background: var(--salt-separable-tertiary-borderColor);\n content: \"\";\n position: absolute;\n z-index: 1;\n display: block;\n width: var(--salt-size-border);\n height: var(--table-th-separator-height);\n top: calc(50% - var(--table-th-separator-height) * 0.5);\n left: 0;\n}\n\n/* TR */\ntable.saltTable tr {\n background: var(--table-background);\n height: var(--table-row-height);\n min-height: var(--table-row-height);\n}\n\ntable.saltTable tbody tr:not(:last-child) {\n border-bottom: var(--salt-borderStyle-solid) var(--table-divider-color) var(--salt-size-fixed-100);\n}\n\ntable.saltTable-divider-none tbody tr {\n --table-divider-color: transparent;\n}\n\n/* TD */\ntable.saltTable td {\n height: 100%;\n padding: var(--salt-spacing-100);\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=Table.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,44 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer } from '@salt-ds/core';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import { clsx } from 'clsx';
6
+ import { forwardRef } from 'react';
7
+ import css_248z from './Table.css.js';
8
+
9
+ const withTableBaseName = makePrefixer("saltTable");
10
+ const Table = forwardRef(function Table2({
11
+ children,
12
+ className,
13
+ variant = "primary",
14
+ divider = "tertiary",
15
+ zebra,
16
+ ...rest
17
+ }, ref) {
18
+ const targetWindow = useWindow();
19
+ useComponentCssInjection({
20
+ testId: "salt-table",
21
+ css: css_248z,
22
+ window: targetWindow
23
+ });
24
+ return /* @__PURE__ */ jsx(
25
+ "table",
26
+ {
27
+ className: clsx(
28
+ withTableBaseName(),
29
+ {
30
+ [withTableBaseName(variant)]: variant,
31
+ [withTableBaseName(`zebra-${zebra}`)]: zebra,
32
+ [withTableBaseName(`divider-${divider}`)]: divider
33
+ },
34
+ className
35
+ ),
36
+ ref,
37
+ ...rest,
38
+ children
39
+ }
40
+ );
41
+ });
42
+
43
+ export { Table, withTableBaseName };
44
+ //# sourceMappingURL=Table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.js","sources":["../src/table/Table.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef } from \"react\";\n\nimport tableCss from \"./Table.css\";\n\nexport interface TableProps extends ComponentPropsWithoutRef<\"table\"> {\n /**\n * Styling variant. Defaults to \"primary\".\n * @default primary\n */\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\n /**\n * Divider styling variant. Defaults to \"tertiary\";\n * @default secondary\n */\n divider?: \"primary\" | \"secondary\" | \"tertiary\" | \"none\";\n /**\n * Zebra styling. Applies variant to every other row.\n * @default undefined\n */\n zebra?: \"primary\" | \"secondary\" | \"tertiary\";\n}\n\nexport const withTableBaseName = makePrefixer(\"saltTable\");\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n {\n children,\n className,\n variant = \"primary\",\n divider = \"tertiary\",\n zebra,\n ...rest\n },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-table\",\n css: tableCss,\n window: targetWindow,\n });\n\n return (\n <table\n className={clsx(\n withTableBaseName(),\n {\n [withTableBaseName(variant)]: variant,\n [withTableBaseName(`zebra-${zebra}`)]: zebra,\n [withTableBaseName(`divider-${divider}`)]: divider,\n },\n className,\n )}\n ref={ref}\n {...rest}\n >\n {children}\n </table>\n );\n});\n"],"names":["Table","tableCss"],"mappings":";;;;;;;;AA0Ba,MAAA,iBAAA,GAAoB,aAAa,WAAW;AAE5C,MAAA,KAAA,GAAQ,UAAyC,CAAA,SAASA,MACrE,CAAA;AAAA,EACE,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAU,GAAA,SAAA;AAAA,EACV,OAAU,GAAA,UAAA;AAAA,EACV,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,YAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,IAAA;AAAA,QACT,iBAAkB,EAAA;AAAA,QAClB;AAAA,UACE,CAAC,iBAAA,CAAkB,OAAO,CAAC,GAAG,OAAA;AAAA,UAC9B,CAAC,iBAAkB,CAAA,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,CAAC,GAAG,KAAA;AAAA,UACvC,CAAC,iBAAkB,CAAA,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAC,GAAG;AAAA,SAC7C;AAAA,QACA;AAAA,OACF;AAAA,MACA,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;;;;"}
@@ -0,0 +1,30 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { createContext } from '@salt-ds/core';
3
+ import { useMemo, useContext } from 'react';
4
+
5
+ const SubMenuContext = createContext(
6
+ "SubMenuContext",
7
+ { depth: -1, iconPaddingCount: 0 }
8
+ );
9
+ const useSubMenuContext = () => {
10
+ return useContext(SubMenuContext);
11
+ };
12
+ function SubMenuProvider({
13
+ children,
14
+ directIcons,
15
+ setDirectIcons
16
+ }) {
17
+ const { depth, iconPaddingCount } = useSubMenuContext();
18
+ const context = useMemo(
19
+ () => ({
20
+ depth: depth + 1,
21
+ iconPaddingCount: iconPaddingCount + (directIcons.length > 0 ? 1 : 0),
22
+ setDirectIcons
23
+ }),
24
+ [depth, iconPaddingCount, directIcons, setDirectIcons]
25
+ );
26
+ return /* @__PURE__ */ jsx(SubMenuContext.Provider, { value: context, children });
27
+ }
28
+
29
+ export { SubMenuContext, SubMenuProvider, useSubMenuContext };
30
+ //# sourceMappingURL=SubMenuContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubMenuContext.js","sources":["../src/vertical-navigation/SubMenuContext.tsx"],"sourcesContent":["import { createContext } from \"@salt-ds/core\";\nimport {\n type Dispatch,\n type ReactNode,\n type SetStateAction,\n useContext,\n useMemo,\n} from \"react\";\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 {\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.saltVerticalNavigation > .saltDivider-horizontal,\n.saltVerticalNavigationSubMenu > .saltDivider-horizontal,\n.saltVerticalNavigationItem > .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,32 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer } from '@salt-ds/core';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import { clsx } from 'clsx';
6
+ import { forwardRef, useState } from 'react';
7
+ import { SubMenuProvider } from './SubMenuContext.js';
8
+ import css_248z from './VerticalNavigation.css.js';
9
+
10
+ const withBaseName = makePrefixer("saltVerticalNavigation");
11
+ const VerticalNavigation = forwardRef(function VerticalNavigation2(props, ref) {
12
+ const { appearance = "indicator", className, ...rest } = props;
13
+ const targetWindow = useWindow();
14
+ useComponentCssInjection({
15
+ testId: "salt-vertical-navigation",
16
+ css: css_248z,
17
+ window: targetWindow
18
+ });
19
+ const [directIcons, setDirectIcons] = useState([]);
20
+ return /* @__PURE__ */ jsx(SubMenuProvider, { directIcons, setDirectIcons, children: /* @__PURE__ */ jsx(
21
+ "ol",
22
+ {
23
+ ref,
24
+ className: clsx(withBaseName(), withBaseName(appearance), className),
25
+ "data-has-direct-icons": directIcons.length > 0,
26
+ ...rest
27
+ }
28
+ ) });
29
+ });
30
+
31
+ export { VerticalNavigation };
32
+ //# sourceMappingURL=VerticalNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigation.js","sources":["../src/vertical-navigation/VerticalNavigation.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef, useState } from \"react\";\nimport { SubMenuProvider } from \"./SubMenuContext\";\nimport verticalNavigationCss from \"./VerticalNavigation.css\";\n\nexport interface VerticalNavigationProps\n extends ComponentPropsWithoutRef<\"ol\"> {\n appearance?: \"indicator\" | \"bordered\";\n}\n\nconst withBaseName = makePrefixer(\"saltVerticalNavigation\");\n\nexport const VerticalNavigation = forwardRef<\n HTMLOListElement,\n VerticalNavigationProps\n>(function VerticalNavigation(props, ref) {\n const { appearance = \"indicator\", 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 <ol\n ref={ref}\n className={clsx(withBaseName(), withBaseName(appearance), className)}\n data-has-direct-icons={directIcons.length > 0}\n {...rest}\n />\n </SubMenuProvider>\n );\n});\n"],"names":["VerticalNavigation","verticalNavigationCss"],"mappings":";;;;;;;;;AAaA,MAAM,YAAA,GAAe,aAAa,wBAAwB,CAAA;AAEnD,MAAM,kBAAqB,GAAA,UAAA,CAGhC,SAASA,mBAAAA,CAAmB,OAAO,GAAK,EAAA;AACxC,EAAA,MAAM,EAAE,UAAa,GAAA,WAAA,EAAa,SAAW,EAAA,GAAG,MAAS,GAAA,KAAA;AAEzD,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,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAW,IAAK,CAAA,YAAA,IAAgB,YAAa,CAAA,UAAU,GAAG,SAAS,CAAA;AAAA,MACnE,uBAAA,EAAuB,YAAY,MAAS,GAAA,CAAA;AAAA,MAC3C,GAAG;AAAA;AAAA,GAER,EAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,45 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer, createContext } from '@salt-ds/core';
3
+ import clsx from 'clsx';
4
+ import { forwardRef, useState, useMemo, useContext } from 'react';
5
+ import { useSubMenuContext } from './SubMenuContext.js';
6
+
7
+ const withBaseName = makePrefixer("saltVerticalNavigationItem");
8
+ const VerticalNavigationItemContext = createContext(
9
+ "saltVerticalNavigationItemContext",
10
+ {
11
+ active: false,
12
+ focusVisible: false,
13
+ setFocusVisible: () => {
14
+ }
15
+ }
16
+ );
17
+ function useVerticalNavigationItem() {
18
+ return useContext(VerticalNavigationItemContext);
19
+ }
20
+ const VerticalNavigationItem = forwardRef(function VerticalNavigationItem2(props, ref) {
21
+ const { children, className, active = false, style, ...rest } = props;
22
+ const { depth } = useSubMenuContext();
23
+ const [focusVisible, setFocusVisible] = useState(false);
24
+ const context = useMemo(
25
+ () => ({
26
+ active,
27
+ focusVisible,
28
+ setFocusVisible
29
+ }),
30
+ [active, focusVisible]
31
+ );
32
+ return /* @__PURE__ */ jsx(VerticalNavigationItemContext.Provider, { value: context, children: /* @__PURE__ */ jsx(
33
+ "li",
34
+ {
35
+ ref,
36
+ className: clsx(withBaseName(), className),
37
+ style: { "--verticalNavigationItem-depth": depth, ...style },
38
+ ...rest,
39
+ children
40
+ }
41
+ ) });
42
+ });
43
+
44
+ export { VerticalNavigationItem, useVerticalNavigationItem };
45
+ //# sourceMappingURL=VerticalNavigationItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItem.js","sources":["../src/vertical-navigation/VerticalNavigationItem.tsx"],"sourcesContent":["import { createContext, makePrefixer } from \"@salt-ds/core\";\nimport 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 { 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 white-space: pre;\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-navigable-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-navigable-background-hover), var(--salt-navigable-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,81 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer, useForkRef, useId } from '@salt-ds/core';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import { clsx } from 'clsx';
6
+ import { forwardRef, useRef, useState, useEffect } from 'react';
7
+ import { useSubMenuContext } from './SubMenuContext.js';
8
+ import { useVerticalNavigationItem } from './VerticalNavigationItem.js';
9
+ import css_248z from './VerticalNavigationItemContent.css.js';
10
+
11
+ const withBaseName = makePrefixer("saltVerticalNavigationItemContent");
12
+ const VerticalNavigationItemContent = forwardRef(function VerticalNavigationItemContent2(props, ref) {
13
+ const { children, className, style, ...rest } = props;
14
+ const targetWindow = useWindow();
15
+ useComponentCssInjection({
16
+ testId: "salt-vertical-navigation-item-content",
17
+ css: css_248z,
18
+ window: targetWindow
19
+ });
20
+ const containerRef = useRef(null);
21
+ const handleRef = useForkRef(ref, containerRef);
22
+ const { active, focusVisible } = useVerticalNavigationItem();
23
+ const { setDirectIcons, iconPaddingCount } = useSubMenuContext();
24
+ const [hasIcon, setHasIcon] = useState(false);
25
+ const iconId = useId();
26
+ useEffect(() => {
27
+ const checkForIcons = () => {
28
+ var _a;
29
+ const iconElement = (_a = containerRef.current) == null ? void 0 : _a.querySelector(
30
+ ".saltIcon ~ .saltVerticalNavigationItemLabel"
31
+ );
32
+ setHasIcon(Boolean(iconElement));
33
+ if (iconElement && iconId && setDirectIcons) {
34
+ setDirectIcons((icons) => {
35
+ if (!icons.includes(iconId)) {
36
+ return icons.concat(iconId);
37
+ }
38
+ return icons;
39
+ });
40
+ } else if (!iconElement && iconId && setDirectIcons) {
41
+ setDirectIcons((icons) => icons.filter((id) => id !== iconId));
42
+ }
43
+ };
44
+ const mutationObserver = new MutationObserver(() => {
45
+ checkForIcons();
46
+ });
47
+ checkForIcons();
48
+ if (containerRef.current) {
49
+ mutationObserver.observe(containerRef.current, {
50
+ childList: true,
51
+ subtree: true
52
+ });
53
+ }
54
+ return () => {
55
+ mutationObserver.disconnect();
56
+ };
57
+ }, [iconId, setDirectIcons]);
58
+ return /* @__PURE__ */ jsx(
59
+ "span",
60
+ {
61
+ ref: handleRef,
62
+ className: clsx(
63
+ withBaseName(),
64
+ {
65
+ [withBaseName("active")]: active,
66
+ [withBaseName("focused")]: focusVisible
67
+ },
68
+ className
69
+ ),
70
+ style: {
71
+ "--saltVerticalNavigationItem-iconPaddingMultiplier": hasIcon ? iconPaddingCount - 1 : iconPaddingCount,
72
+ ...style
73
+ },
74
+ ...rest,
75
+ children
76
+ }
77
+ );
78
+ });
79
+
80
+ export { VerticalNavigationItemContent };
81
+ //# sourceMappingURL=VerticalNavigationItemContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemContent.js","sources":["../src/vertical-navigation/VerticalNavigationItemContent.tsx"],"sourcesContent":["import { makePrefixer, useForkRef, useId } from \"@salt-ds/core\";\nimport { 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 { 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,27 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer, useIcon } from '@salt-ds/core';
3
+ import { clsx } from 'clsx';
4
+ import { useCollapsibleContext } from '../collapsible/CollapsibleContext.js';
5
+
6
+ const withBaseName = makePrefixer("saltVerticalNavigationItemExpansionIcon");
7
+ const VerticalNavigationItemExpansionIcon = (props) => {
8
+ const { className, ...rest } = props;
9
+ const { CollapseIcon, ExpandIcon } = useIcon();
10
+ const iconExpansionMap = {
11
+ expanded: CollapseIcon,
12
+ collapsed: ExpandIcon
13
+ };
14
+ const { open } = useCollapsibleContext();
15
+ const Icon = iconExpansionMap[open ? "expanded" : "collapsed"];
16
+ return /* @__PURE__ */ jsx(
17
+ Icon,
18
+ {
19
+ className: clsx(withBaseName(), className),
20
+ "aria-hidden": "true",
21
+ ...rest
22
+ }
23
+ );
24
+ };
25
+
26
+ export { VerticalNavigationItemExpansionIcon };
27
+ //# sourceMappingURL=VerticalNavigationItemExpansionIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemExpansionIcon.js","sources":["../src/vertical-navigation/VerticalNavigationItemExpansionIcon.tsx"],"sourcesContent":["import { makePrefixer, useIcon } from \"@salt-ds/core\";\nimport type { IconProps } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { useCollapsibleContext } from \"../collapsible/CollapsibleContext\";\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":";;;;;AAKA,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,22 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer } from '@salt-ds/core';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import { clsx } from 'clsx';
6
+ import { forwardRef } from 'react';
7
+ import css_248z from './VerticalNavigationItemLabel.css.js';
8
+
9
+ const withBaseName = makePrefixer("saltVerticalNavigationItemLabel");
10
+ const VerticalNavigationItemLabel = forwardRef(function VerticalNavigationItemLabel2(props, ref) {
11
+ const { children, className, ...rest } = props;
12
+ const targetWindow = useWindow();
13
+ useComponentCssInjection({
14
+ testId: "salt-vertical-navigation-item-label",
15
+ css: css_248z,
16
+ window: targetWindow
17
+ });
18
+ return /* @__PURE__ */ jsx("span", { className: clsx(withBaseName(), className), ref, ...rest, children });
19
+ });
20
+
21
+ export { VerticalNavigationItemLabel };
22
+ //# sourceMappingURL=VerticalNavigationItemLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemLabel.js","sources":["../src/vertical-navigation/VerticalNavigationItemLabel.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef } from \"react\";\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,67 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer, renderProps } from '@salt-ds/core';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import { clsx } from 'clsx';
6
+ import { forwardRef, useRef } from 'react';
7
+ import { useVerticalNavigationItem } from './VerticalNavigationItem.js';
8
+ import css_248z from './VerticalNavigationItemTrigger.css.js';
9
+
10
+ function ItemAction(props) {
11
+ return renderProps("a", props);
12
+ }
13
+ const withBaseName = makePrefixer("saltVerticalNavigationItemTrigger");
14
+ const VerticalNavigationItemTrigger = forwardRef(function VerticalNavigationItemTrigger2(props, ref) {
15
+ const {
16
+ className,
17
+ children,
18
+ render,
19
+ href,
20
+ onFocus,
21
+ onBlur,
22
+ onMouseDown,
23
+ ...rest
24
+ } = props;
25
+ const targetWindow = useWindow();
26
+ useComponentCssInjection({
27
+ testId: "salt-vertical-navigation-item-trigger",
28
+ css: css_248z,
29
+ window: targetWindow
30
+ });
31
+ const isLink = href != null;
32
+ const { active, setFocusVisible } = useVerticalNavigationItem();
33
+ const wasMouseDownRef = useRef(false);
34
+ const handleFocus = (event) => {
35
+ if (!wasMouseDownRef.current) {
36
+ setFocusVisible(true);
37
+ }
38
+ wasMouseDownRef.current = false;
39
+ onFocus == null ? void 0 : onFocus(event);
40
+ };
41
+ const handleBlur = (event) => {
42
+ setFocusVisible(false);
43
+ onBlur == null ? void 0 : onBlur(event);
44
+ };
45
+ const handleMouseDown = (event) => {
46
+ wasMouseDownRef.current = true;
47
+ onMouseDown == null ? void 0 : onMouseDown(event);
48
+ };
49
+ return /* @__PURE__ */ jsx(
50
+ ItemAction,
51
+ {
52
+ className: clsx(withBaseName(), className),
53
+ href,
54
+ "aria-current": active ? "page" : void 0,
55
+ render: render ?? (isLink ? void 0 : /* @__PURE__ */ jsx("button", { type: "button" })),
56
+ ref,
57
+ onFocus: handleFocus,
58
+ onBlur: handleBlur,
59
+ onMouseDown: handleMouseDown,
60
+ ...rest,
61
+ children
62
+ }
63
+ );
64
+ });
65
+
66
+ export { VerticalNavigationItemTrigger };
67
+ //# sourceMappingURL=VerticalNavigationItemTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigationItemTrigger.js","sources":["../src/vertical-navigation/VerticalNavigationItemTrigger.tsx"],"sourcesContent":["import { makePrefixer, type RenderPropsType, renderProps } from \"@salt-ds/core\";\nimport { 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 { 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,33 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer } from '@salt-ds/core';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import { clsx } from 'clsx';
6
+ import { forwardRef, useState } from 'react';
7
+ import { SubMenuProvider } from './SubMenuContext.js';
8
+ import css_248z from './VerticalNavigationSubMenu.css.js';
9
+
10
+ const withBaseName = makePrefixer("saltVerticalNavigationSubMenu");
11
+ const VerticalNavigationSubMenu = forwardRef(function VerticalNavigationSubMenu2(props, ref) {
12
+ const { children, className, ...rest } = props;
13
+ const targetWindow = useWindow();
14
+ useComponentCssInjection({
15
+ testId: "salt-vertical-navigation-sub-menu",
16
+ css: css_248z,
17
+ window: targetWindow
18
+ });
19
+ const [directIcons, setDirectIcons] = useState([]);
20
+ return /* @__PURE__ */ jsx(SubMenuProvider, { directIcons, setDirectIcons, children: /* @__PURE__ */ jsx(
21
+ "ul",
22
+ {
23
+ ref,
24
+ className: clsx(withBaseName(), className),
25
+ "data-has-direct-icons": directIcons.length > 0,
26
+ ...rest,
27
+ children
28
+ }
29
+ ) });
30
+ });
31
+
32
+ export { VerticalNavigationSubMenu };
33
+ //# sourceMappingURL=VerticalNavigationSubMenu.js.map