@salt-ds/lab 1.0.0-alpha.10 → 1.0.0-alpha.12

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 (234) hide show
  1. package/dist-cjs/accordion/Accordion.css.js +1 -1
  2. package/dist-cjs/accordion/Accordion.js +33 -108
  3. package/dist-cjs/accordion/Accordion.js.map +1 -1
  4. package/dist-cjs/accordion/AccordionContext.js +15 -11
  5. package/dist-cjs/accordion/AccordionContext.js.map +1 -1
  6. package/dist-cjs/accordion/AccordionGroup.js +23 -0
  7. package/dist-cjs/accordion/AccordionGroup.js.map +1 -0
  8. package/dist-cjs/accordion/AccordionHeader.css.js +6 -0
  9. package/dist-cjs/accordion/AccordionHeader.css.js.map +1 -0
  10. package/dist-cjs/accordion/AccordionHeader.js +50 -0
  11. package/dist-cjs/accordion/AccordionHeader.js.map +1 -0
  12. package/dist-cjs/accordion/AccordionPanel.css.js +6 -0
  13. package/dist-cjs/accordion/AccordionPanel.css.js.map +1 -0
  14. package/dist-cjs/accordion/AccordionPanel.js +45 -0
  15. package/dist-cjs/accordion/AccordionPanel.js.map +1 -0
  16. package/dist-cjs/common-hooks/useKeyboardNavigation.js +0 -3
  17. package/dist-cjs/common-hooks/useKeyboardNavigation.js.map +1 -1
  18. package/dist-cjs/dialog/DialogTitle.css.js +1 -1
  19. package/dist-cjs/dialog/DialogTitle.js +2 -3
  20. package/dist-cjs/dialog/DialogTitle.js.map +1 -1
  21. package/dist-cjs/dropdown/Dropdown.js +5 -2
  22. package/dist-cjs/dropdown/Dropdown.js.map +1 -1
  23. package/dist-cjs/dropdown/useDropdown.js +12 -0
  24. package/dist-cjs/dropdown/useDropdown.js.map +1 -1
  25. package/dist-cjs/form-field-legacy/FormFieldLegacy.css.js +1 -1
  26. package/dist-cjs/index.js +23 -10
  27. package/dist-cjs/index.js.map +1 -1
  28. package/dist-cjs/list/useList.js +0 -1
  29. package/dist-cjs/list/useList.js.map +1 -1
  30. package/dist-cjs/list-deprecated/ListItem.css.js +1 -1
  31. package/dist-cjs/list-next/ListItemNext.css.js +6 -0
  32. package/dist-cjs/list-next/ListItemNext.css.js.map +1 -0
  33. package/dist-cjs/list-next/ListItemNext.js +74 -0
  34. package/dist-cjs/list-next/ListItemNext.js.map +1 -0
  35. package/dist-cjs/list-next/ListNext.css.js +6 -0
  36. package/dist-cjs/list-next/ListNext.css.js.map +1 -0
  37. package/dist-cjs/list-next/ListNext.js +92 -0
  38. package/dist-cjs/list-next/ListNext.js.map +1 -0
  39. package/dist-cjs/list-next/ListNextContext.js +18 -0
  40. package/dist-cjs/list-next/ListNextContext.js.map +1 -0
  41. package/dist-cjs/list-next/useList.js +188 -0
  42. package/dist-cjs/list-next/useList.js.map +1 -0
  43. package/dist-cjs/logo/Logo.css.js +1 -1
  44. package/dist-cjs/logo/Logo.js +4 -36
  45. package/dist-cjs/logo/Logo.js.map +1 -1
  46. package/dist-cjs/logo/LogoImage.js +24 -0
  47. package/dist-cjs/logo/LogoImage.js.map +1 -0
  48. package/dist-cjs/logo/LogoSeparator.css.js +6 -0
  49. package/dist-cjs/logo/LogoSeparator.css.js.map +1 -0
  50. package/dist-cjs/logo/LogoSeparator.js +32 -0
  51. package/dist-cjs/logo/LogoSeparator.js.map +1 -0
  52. package/dist-cjs/multiline-input/MultilineInput.css.js +6 -0
  53. package/dist-cjs/multiline-input/MultilineInput.css.js.map +1 -0
  54. package/dist-cjs/multiline-input/MultilineInput.js +150 -0
  55. package/dist-cjs/multiline-input/MultilineInput.js.map +1 -0
  56. package/dist-cjs/pill/Pill.css.js +1 -1
  57. package/dist-cjs/query-input/internal/QueryInputBody.js +5 -5
  58. package/dist-cjs/query-input/internal/QueryInputBody.js.map +1 -1
  59. package/dist-cjs/tabs-next/OverflowMenu.js +49 -0
  60. package/dist-cjs/tabs-next/OverflowMenu.js.map +1 -0
  61. package/dist-cjs/tabs-next/TabNext.css.js +6 -0
  62. package/dist-cjs/tabs-next/TabNext.css.js.map +1 -0
  63. package/dist-cjs/tabs-next/TabNext.js +87 -0
  64. package/dist-cjs/tabs-next/TabNext.js.map +1 -0
  65. package/dist-cjs/tabs-next/TabNextContext.js +23 -0
  66. package/dist-cjs/tabs-next/TabNextContext.js.map +1 -0
  67. package/dist-cjs/tabs-next/TabstripNext.css.js +6 -0
  68. package/dist-cjs/tabs-next/TabstripNext.css.js.map +1 -0
  69. package/dist-cjs/tabs-next/TabstripNext.js +180 -0
  70. package/dist-cjs/tabs-next/TabstripNext.js.map +1 -0
  71. package/dist-cjs/toggle-button/ToggleButton.css.js +1 -1
  72. package/dist-cjs/toggle-button/ToggleButton.js +44 -74
  73. package/dist-cjs/toggle-button/ToggleButton.js.map +1 -1
  74. package/dist-cjs/toggle-button-group/ToggleButtonGroup.css.js +6 -0
  75. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js +111 -0
  76. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js.map +1 -0
  77. package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js +15 -0
  78. package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js.map +1 -0
  79. package/dist-cjs/tokenized-input/TokenizedInput.css.js +1 -1
  80. package/dist-cjs/toolbar/ToolbarButton.css.js +1 -1
  81. package/dist-es/accordion/Accordion.css.js +1 -1
  82. package/dist-es/accordion/Accordion.js +35 -110
  83. package/dist-es/accordion/Accordion.js.map +1 -1
  84. package/dist-es/accordion/AccordionContext.js +15 -11
  85. package/dist-es/accordion/AccordionContext.js.map +1 -1
  86. package/dist-es/accordion/AccordionGroup.js +19 -0
  87. package/dist-es/accordion/AccordionGroup.js.map +1 -0
  88. package/dist-es/accordion/AccordionHeader.css.js +4 -0
  89. package/dist-es/accordion/AccordionHeader.css.js.map +1 -0
  90. package/dist-es/accordion/AccordionHeader.js +46 -0
  91. package/dist-es/accordion/AccordionHeader.js.map +1 -0
  92. package/dist-es/accordion/AccordionPanel.css.js +4 -0
  93. package/dist-es/accordion/AccordionPanel.css.js.map +1 -0
  94. package/dist-es/accordion/AccordionPanel.js +41 -0
  95. package/dist-es/accordion/AccordionPanel.js.map +1 -0
  96. package/dist-es/common-hooks/useKeyboardNavigation.js +0 -3
  97. package/dist-es/common-hooks/useKeyboardNavigation.js.map +1 -1
  98. package/dist-es/dialog/DialogTitle.css.js +1 -1
  99. package/dist-es/dialog/DialogTitle.js +3 -4
  100. package/dist-es/dialog/DialogTitle.js.map +1 -1
  101. package/dist-es/dropdown/Dropdown.js +5 -2
  102. package/dist-es/dropdown/Dropdown.js.map +1 -1
  103. package/dist-es/dropdown/useDropdown.js +12 -0
  104. package/dist-es/dropdown/useDropdown.js.map +1 -1
  105. package/dist-es/form-field-legacy/FormFieldLegacy.css.js +1 -1
  106. package/dist-es/index.js +12 -5
  107. package/dist-es/index.js.map +1 -1
  108. package/dist-es/list/useList.js +0 -1
  109. package/dist-es/list/useList.js.map +1 -1
  110. package/dist-es/list-deprecated/ListItem.css.js +1 -1
  111. package/dist-es/list-next/ListItemNext.css.js +4 -0
  112. package/dist-es/list-next/ListItemNext.css.js.map +1 -0
  113. package/dist-es/list-next/ListItemNext.js +70 -0
  114. package/dist-es/list-next/ListItemNext.js.map +1 -0
  115. package/dist-es/list-next/ListNext.css.js +4 -0
  116. package/dist-es/list-next/ListNext.css.js.map +1 -0
  117. package/dist-es/list-next/ListNext.js +88 -0
  118. package/dist-es/list-next/ListNext.js.map +1 -0
  119. package/dist-es/list-next/ListNextContext.js +13 -0
  120. package/dist-es/list-next/ListNextContext.js.map +1 -0
  121. package/dist-es/list-next/useList.js +184 -0
  122. package/dist-es/list-next/useList.js.map +1 -0
  123. package/dist-es/logo/Logo.css.js +1 -1
  124. package/dist-es/logo/Logo.js +5 -37
  125. package/dist-es/logo/Logo.js.map +1 -1
  126. package/dist-es/logo/LogoImage.js +20 -0
  127. package/dist-es/logo/LogoImage.js.map +1 -0
  128. package/dist-es/logo/LogoSeparator.css.js +4 -0
  129. package/dist-es/logo/LogoSeparator.css.js.map +1 -0
  130. package/dist-es/logo/LogoSeparator.js +28 -0
  131. package/dist-es/logo/LogoSeparator.js.map +1 -0
  132. package/dist-es/multiline-input/MultilineInput.css.js +4 -0
  133. package/dist-es/multiline-input/MultilineInput.css.js.map +1 -0
  134. package/dist-es/multiline-input/MultilineInput.js +146 -0
  135. package/dist-es/multiline-input/MultilineInput.js.map +1 -0
  136. package/dist-es/pill/Pill.css.js +1 -1
  137. package/dist-es/query-input/internal/QueryInputBody.js +5 -5
  138. package/dist-es/query-input/internal/QueryInputBody.js.map +1 -1
  139. package/dist-es/tabs-next/OverflowMenu.js +45 -0
  140. package/dist-es/tabs-next/OverflowMenu.js.map +1 -0
  141. package/dist-es/tabs-next/TabNext.css.js +4 -0
  142. package/dist-es/tabs-next/TabNext.css.js.map +1 -0
  143. package/dist-es/tabs-next/TabNext.js +79 -0
  144. package/dist-es/tabs-next/TabNext.js.map +1 -0
  145. package/dist-es/tabs-next/TabNextContext.js +18 -0
  146. package/dist-es/tabs-next/TabNextContext.js.map +1 -0
  147. package/dist-es/tabs-next/TabstripNext.css.js +4 -0
  148. package/dist-es/tabs-next/TabstripNext.css.js.map +1 -0
  149. package/dist-es/tabs-next/TabstripNext.js +172 -0
  150. package/dist-es/tabs-next/TabstripNext.js.map +1 -0
  151. package/dist-es/toggle-button/ToggleButton.css.js +1 -1
  152. package/dist-es/toggle-button/ToggleButton.js +45 -75
  153. package/dist-es/toggle-button/ToggleButton.js.map +1 -1
  154. package/dist-es/toggle-button-group/ToggleButtonGroup.css.js +4 -0
  155. package/dist-es/toggle-button-group/ToggleButtonGroup.js +107 -0
  156. package/dist-es/toggle-button-group/ToggleButtonGroup.js.map +1 -0
  157. package/dist-es/toggle-button-group/ToggleButtonGroupContext.js +10 -0
  158. package/dist-es/toggle-button-group/ToggleButtonGroupContext.js.map +1 -0
  159. package/dist-es/tokenized-input/TokenizedInput.css.js +1 -1
  160. package/dist-es/toolbar/ToolbarButton.css.js +1 -1
  161. package/dist-types/accordion/Accordion.d.ts +22 -6
  162. package/dist-types/accordion/AccordionContext.d.ts +8 -8
  163. package/dist-types/accordion/AccordionGroup.d.ts +4 -0
  164. package/dist-types/accordion/AccordionHeader.d.ts +4 -0
  165. package/dist-types/accordion/AccordionPanel.d.ts +4 -0
  166. package/dist-types/accordion/index.d.ts +3 -4
  167. package/dist-types/dropdown/useDropdown.d.ts +1 -1
  168. package/dist-types/index.d.ts +4 -0
  169. package/dist-types/list-next/ListItemNext.d.ts +11 -0
  170. package/dist-types/list-next/ListNext.d.ts +10 -0
  171. package/dist-types/list-next/ListNextContext.d.ts +10 -0
  172. package/dist-types/list-next/index.d.ts +2 -0
  173. package/dist-types/list-next/useList.d.ts +29 -0
  174. package/dist-types/logo/Logo.d.ts +3 -31
  175. package/dist-types/logo/LogoImage.d.ts +5 -0
  176. package/dist-types/logo/LogoSeparator.d.ts +3 -0
  177. package/dist-types/logo/index.d.ts +2 -0
  178. package/dist-types/multiline-input/MultilineInput.d.ts +40 -0
  179. package/dist-types/multiline-input/index.d.ts +1 -0
  180. package/dist-types/tabs-next/OverflowMenu.d.ts +11 -0
  181. package/dist-types/tabs-next/TabNext.d.ts +5 -0
  182. package/dist-types/tabs-next/TabNextContext.d.ts +17 -0
  183. package/dist-types/tabs-next/TabstripNext.d.ts +10 -0
  184. package/dist-types/tabs-next/index.d.ts +2 -0
  185. package/dist-types/toggle-button/ToggleButton.d.ts +6 -11
  186. package/dist-types/toggle-button/index.d.ts +0 -1
  187. package/dist-types/toggle-button-group/ToggleButtonGroup.d.ts +25 -0
  188. package/dist-types/toggle-button-group/ToggleButtonGroupContext.d.ts +10 -0
  189. package/dist-types/toggle-button-group/index.d.ts +2 -0
  190. package/package.json +7 -5
  191. package/dist-cjs/accordion/AccordionDetails.js +0 -87
  192. package/dist-cjs/accordion/AccordionDetails.js.map +0 -1
  193. package/dist-cjs/accordion/AccordionSection.js +0 -111
  194. package/dist-cjs/accordion/AccordionSection.js.map +0 -1
  195. package/dist-cjs/accordion/AccordionSectionContext.js +0 -24
  196. package/dist-cjs/accordion/AccordionSectionContext.js.map +0 -1
  197. package/dist-cjs/accordion/AccordionSummary.js +0 -64
  198. package/dist-cjs/accordion/AccordionSummary.js.map +0 -1
  199. package/dist-cjs/accordion/utils.js +0 -8
  200. package/dist-cjs/accordion/utils.js.map +0 -1
  201. package/dist-cjs/logo/internal/LogoTitle.js +0 -28
  202. package/dist-cjs/logo/internal/LogoTitle.js.map +0 -1
  203. package/dist-cjs/toggle-button/ToggleButtonGroup.css.js +0 -6
  204. package/dist-cjs/toggle-button/ToggleButtonGroup.js +0 -147
  205. package/dist-cjs/toggle-button/ToggleButtonGroup.js.map +0 -1
  206. package/dist-cjs/toggle-button/internal/ToggleButtonGroupContext.js +0 -10
  207. package/dist-cjs/toggle-button/internal/ToggleButtonGroupContext.js.map +0 -1
  208. package/dist-es/accordion/AccordionDetails.js +0 -83
  209. package/dist-es/accordion/AccordionDetails.js.map +0 -1
  210. package/dist-es/accordion/AccordionSection.js +0 -107
  211. package/dist-es/accordion/AccordionSection.js.map +0 -1
  212. package/dist-es/accordion/AccordionSectionContext.js +0 -19
  213. package/dist-es/accordion/AccordionSectionContext.js.map +0 -1
  214. package/dist-es/accordion/AccordionSummary.js +0 -60
  215. package/dist-es/accordion/AccordionSummary.js.map +0 -1
  216. package/dist-es/accordion/utils.js +0 -4
  217. package/dist-es/accordion/utils.js.map +0 -1
  218. package/dist-es/logo/internal/LogoTitle.js +0 -24
  219. package/dist-es/logo/internal/LogoTitle.js.map +0 -1
  220. package/dist-es/toggle-button/ToggleButtonGroup.css.js +0 -4
  221. package/dist-es/toggle-button/ToggleButtonGroup.js +0 -143
  222. package/dist-es/toggle-button/ToggleButtonGroup.js.map +0 -1
  223. package/dist-es/toggle-button/internal/ToggleButtonGroupContext.js +0 -6
  224. package/dist-es/toggle-button/internal/ToggleButtonGroupContext.js.map +0 -1
  225. package/dist-types/accordion/AccordionDetails.d.ts +0 -8
  226. package/dist-types/accordion/AccordionSection.d.ts +0 -9
  227. package/dist-types/accordion/AccordionSectionContext.d.ts +0 -8
  228. package/dist-types/accordion/AccordionSummary.d.ts +0 -5
  229. package/dist-types/accordion/utils.d.ts +0 -1
  230. package/dist-types/logo/internal/LogoTitle.d.ts +0 -6
  231. package/dist-types/toggle-button/ToggleButtonGroup.d.ts +0 -18
  232. package/dist-types/toggle-button/internal/ToggleButtonGroupContext.d.ts +0 -14
  233. /package/dist-cjs/{toggle-button → toggle-button-group}/ToggleButtonGroup.css.js.map +0 -0
  234. /package/dist-es/{toggle-button → toggle-button-group}/ToggleButtonGroup.css.js.map +0 -0
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".salt-density-high {\n --pill-icon-offset: 1px;\n}\n\n.salt-density-medium {\n --pill-icon-offset: 2px;\n}\n\n.salt-density-low {\n --pill-icon-offset: 3px;\n}\n\n.salt-density-touch {\n --pill-icon-offset: 4px;\n}\n\n/* Styles applied to the root element */\n.saltPill {\n --pill-background: var(--saltPill-background, var(--salt-taggable-background));\n --pill-background-active: var(--saltPill-background-active, var(--salt-taggable-background-active));\n --pill-background-disabled: var(--saltPill-background-disabled, var(--salt-taggable-background-disabled));\n --pill-background-hover: var(--saltPill-background-hover, var(--salt-taggable-background-hover));\n --pill-checkbox-size: var(--saltPill-checkbox-size, calc(var(--pill-height) - 2px));\n --pill-fontSize: var(--saltPill-fontSize, var(--salt-text-label-fontSize));\n --pill-height: calc(var(--salt-size-base) - (var(--salt-size-unit) * 1.5));\n --pill-icon-color: var(--saltPill-icon-color, var(--salt-taggable-foreground));\n --pill-icon-color-active: var(--saltPill-icon-color-active, var(--salt-taggable-foreground-active));\n --pill-icon-color-hover: var(--saltPill-icon-color-hover, var(--salt-taggable-foreground-hover));\n --pill-icon-color-disabled: var(--saltPill-icon-color-disabled, var(--salt-taggable-foreground-disabled));\n --pill-text-color: var(--saltPill-text-color, var(--salt-taggable-foreground));\n --pill-text-color-active: var(--saltPill-text-color-active, var(--salt-taggable-foreground-active));\n --pill-text-color-hover: var(--saltPill-text-color-hover, var(--salt-taggable-foreground-hover));\n --pill-text-color-disabled: var(--saltPill-text-color-disabled, var(--salt-taggable-foreground-disabled));\n\n /* Button API */\n --saltButton-fontWeight: var(--saltPill-button-fontWeight, var(--salt-text-fontWeight));\n --saltButton-padding: var(--saltPill-button-padding, 0);\n --saltButton-textTransform: var(--saltPill-button-textTransform, unset);\n --saltButton-cursor: normal;\n}\n\n.saltPill {\n align-items: center;\n background: var(--pill-background);\n border-radius: var(--saltPill-borderRadius, 0);\n color: var(--pill-text-color);\n display: inline-flex;\n font-size: var(--pill-fontSize);\n height: var(--saltPill-height, var(--pill-checkbox-size)); /* TODO: Check with design vs checkbox height */\n letter-spacing: var(--saltPill-letterSpacing, 0);\n line-height: var(--saltPill-lineHeight, var(--salt-text-label-lineHeight));\n max-width: var(--saltPill-maxWidth, 160px);\n min-width: var(--saltPill-minWidth, 40px);\n min-height: var(--saltPill-minHeight, var(--salt-text-minHeight));\n outline: var(--saltPill-outline, 0);\n position: relative;\n}\n\n.saltPill:hover {\n --saltButton-background-active: var(--pill-background-active);\n --saltButton-background-hover: var(--pill-background-hover);\n\n --saltIcon-color: var(--pill-icon-color);\n --saltIcon-color-hover: var(--pill-icon-color-hover);\n\n background: var(--pill-background-hover);\n}\n\n/* Style applied to Pill when active */\n.saltPill:active,\n.saltPill-active {\n --saltButton-background-active: var(--pill-background-active);\n}\n\n/* Style applied to Pill on focus */\n.saltPill:focus {\n outline-color: var(--saltPill-focused-outlineColor, var(--salt-focused-outlineColor));\n outline-style: var(--saltPill-focused-outlineStyle, var(--salt-focused-outlineStyle));\n outline-width: var(--salt-focused-outlineWidth);\n outline-offset: var(--salt-focused-outlineOffset);\n}\n\n/* Style applied to Pill icon if `clickable={true}` */\n.saltPill-clickable {\n --saltButton-background-active: var(--pill-background);\n --saltButton-background-hover: var(--pill-background);\n\n cursor: var(--salt-selectable-cursor-hover);\n user-select: none;\n}\n\n/* Style applied to Pill when `deletable={true}` */\n.saltPill-deletable {\n --saltButton-background-active: var(--pill-background);\n --saltButton-background-hover: var(--pill-background);\n}\n\n.saltPill-selectable:hover,\n.saltPill-deletable:hover {\n --saltButton-background-active: var(--pill-background);\n --saltButton-background-hover: var(--pill-background);\n}\n\n/* Style applied to Pill when active if `selectable={true}` */\n.saltPill-selectable:active,\n.saltPill-active.saltPill-selectable {\n --saltButton-background-active: var(--pill-background);\n}\n\n/* Style applied to Pill when disabled */\n.saltPill-disabled,\n.saltPill-disabled:hover,\n.saltPill-disabled:active {\n --saltButton-background-active: var(--pill-background-disabled);\n --saltButton-background-hover: var(--pill-background-disabled);\n --saltButton-text-color-active: var(--pill-text-color);\n --saltButton-text-color-hover: var(--pill-text-color);\n --saltCheckbox-icon-tick-color: var(--salt-taggable-foreground-disabled);\n --saltCheckbox-icon-stroke-hover: var(--salt-selectable-borderColor-disabled);\n\n background: var(--pill-background-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n}\n\n/* Checkbox styles for selectable Pill when `disabled={true}` */\n.saltPill-disabled .saltPill-checkbox {\n --saltCheckbox-icon-tick-color: var(--salt-taggable-foreground-disabled);\n --saltCheckbox-icon-stroke: var(--salt-selectable-borderColor-disabled);\n --saltCheckbox-icon-stroke-hover: var(--salt-selectable-borderColor-disabled);\n}\n\n/* Style applied to Pill label */\n.saltPill-label {\n color: var(--saltPill-text-color, var(--pill-text-color));\n display: inline;\n flex-grow: 1;\n font-weight: var(--saltPill-fontWeight, var(--salt-text-fontWeight));\n overflow: hidden;\n padding-left: var(--saltPill-label-paddingLeft, var(--salt-size-adornmentGap));\n padding-right: var(--saltPill-label-paddingRight, var(--salt-size-adornmentGap));\n pointer-events: none;\n text-align: center;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Style applied to Pill label when `deletable={true}` */\n.saltPill-deletable .saltPill-label {\n padding-right: 0px;\n}\n\n/* Style applied to Pill label inner text */\n.saltPill-innerLabel {\n vertical-align: top;\n line-height: var(--pill-height);\n}\n\n/* Style applied to Pill label and icon when `disabled={true}` */\n.saltPill-disabled .saltPill-label,\n.saltPill-disabled .saltIcon {\n cursor: var(--salt-selectable-cursor-disabled);\n opacity: var(--salt-palette-opacity-foreground);\n\n --saltIcon-color: var(--pill-icon-color-disabled);\n --saltIcon-color-hover: var(--pill-icon-color-disabled);\n}\n\n/* Style applied to Pill delete button */\n.saltPill-deleteButton {\n --saltButton-background-hover: var(--pill-background-hover);\n --saltButton-background-active: var(--pill-background-active);\n --saltButton-cursor: pointer;\n\n flex-shrink: 0;\n height: var(--pill-checkbox-size);\n margin-left: calc(var(--salt-size-unit) / 2);\n min-height: var(--saltPill-minHeight, var(--salt-text-minHeight));\n padding-right: calc(var(--salt-size-unit) / 2);\n}\n\n/* Style applied to Pill delete button if `disabled={true}` */\n.saltPill-deleteButton-disabled {\n --saltButton-background-hover: var(--pill-background-disabled);\n --saltButton-background-active: var(--pill-background-disabled);\n --saltButton-background-disabled: initial;\n}\n\n/* Style applied to Pill delete button icon */\n.saltPill-deleteButton .saltPill-deleteIcon {\n left: var(--saltPill-deleteButton-left, var(--pill-icon-offset));\n position: relative;\n}\n\n/* Style applied to Pill delete button icon on active state */\n.saltPill-deleteButton:active .saltPill-deleteIcon {\n --saltIcon-color: var(--saltPill-deleteButton-color-active, var(--pill-icon-color-active));\n}\n\n/* Style applied to Pill delete button icon if `disabled={true}` on active state */\n.saltPill-disabled:active .saltPill-deleteIcon {\n --saltButton-background-active: var(--pill-background-disabled);\n --saltIcon-color: var(--saltPill-deleteButton-color-disabled, var(--pill-icon-color));\n}\n\n/* Style applied to Pill icon */\n.saltPill .saltPill-icon {\n fill: var(--pill-icon-color);\n height: 12px; /* TODO: Replace with updated size */\n margin-left: var(--salt-size-adornmentGap);\n margin-right: calc(var(--salt-size-unit) * 0.5);\n}\n\n/* Style applied to Pill icon on active state */\n.saltPill:active .saltPill-icon,\n.saltPill-active .saltPill-icon {\n fill: var(--pill-icon-color-active);\n}\n\n.saltPill:not(.saltPill-deletable) .saltPill-icon + .saltPill-label {\n padding-left: 0;\n}\n\n/* Pill label styles on hover */\n.saltPill:hover .saltPill-label {\n color: var(--pill-text-color-hover);\n}\n\n/* Pill label styles on active state */\n.saltPill:active .saltPill-label {\n color: var(--pill-text-color-active);\n}\n\n/* Pill label styles when `selectable={true}` or `deletable={true}` */\n.saltPill-selectable .saltPill-label,\n.saltPill-selectable:active .saltPill-label,\n.saltPill-deletable .saltPill-label,\n.saltPill-deletable:active .saltPill-label {\n background: var(--pill-background);\n color: var(--pill-text-color);\n}\n\n/* Pill label styles when `disabled={true}` */\n.saltPill-disabled .saltPill-label,\n.saltPill-disabled:active .saltPill-label {\n background: initial;\n color: var(--pill-text-color-disabled);\n}\n";
3
+ var css_248z = ".salt-density-high {\n --pill-icon-offset: 1px;\n}\n\n.salt-density-medium {\n --pill-icon-offset: 2px;\n}\n\n.salt-density-low {\n --pill-icon-offset: 3px;\n}\n\n.salt-density-touch {\n --pill-icon-offset: 4px;\n}\n\n/* Styles applied to the root element */\n.saltPill {\n --pill-background: var(--saltPill-background, var(--salt-taggable-background));\n --pill-background-active: var(--saltPill-background-active, var(--salt-taggable-background-active));\n --pill-background-disabled: var(--saltPill-background-disabled, var(--salt-taggable-background-disabled));\n --pill-background-hover: var(--saltPill-background-hover, var(--salt-taggable-background-hover));\n --pill-checkbox-size: var(--saltPill-checkbox-size, calc(var(--pill-height) - 2px));\n --pill-fontSize: var(--saltPill-fontSize, var(--salt-text-label-fontSize));\n --pill-height: calc(var(--salt-size-base) - (var(--salt-size-unit) * 1.5));\n --pill-icon-color: var(--saltPill-icon-color, var(--salt-taggable-foreground));\n --pill-icon-color-active: var(--saltPill-icon-color-active, var(--salt-taggable-foreground-active));\n --pill-icon-color-hover: var(--saltPill-icon-color-hover, var(--salt-taggable-foreground-hover));\n --pill-icon-color-disabled: var(--saltPill-icon-color-disabled, var(--salt-taggable-foreground-disabled));\n --pill-text-color: var(--saltPill-text-color, var(--salt-taggable-foreground));\n --pill-text-color-active: var(--saltPill-text-color-active, var(--salt-taggable-foreground-active));\n --pill-text-color-hover: var(--saltPill-text-color-hover, var(--salt-taggable-foreground-hover));\n --pill-text-color-disabled: var(--saltPill-text-color-disabled, var(--salt-taggable-foreground-disabled));\n\n /* Button API */\n --saltButton-fontWeight: var(--saltPill-button-fontWeight, var(--salt-text-fontWeight));\n --saltButton-padding: var(--saltPill-button-padding, 0);\n --saltButton-textTransform: var(--saltPill-button-textTransform, unset);\n --saltButton-cursor: normal;\n}\n\n.saltPill {\n align-items: center;\n background: var(--pill-background);\n border-radius: var(--saltPill-borderRadius, 0);\n color: var(--pill-text-color);\n display: inline-flex;\n font-size: var(--pill-fontSize);\n height: var(--saltPill-height, var(--pill-checkbox-size)); /* TODO: Check with design vs checkbox height */\n letter-spacing: var(--saltPill-letterSpacing, 0);\n line-height: var(--saltPill-lineHeight, var(--salt-text-label-lineHeight));\n max-width: var(--saltPill-maxWidth, 160px);\n min-width: var(--saltPill-minWidth, 40px);\n min-height: var(--saltPill-minHeight, var(--salt-text-minHeight));\n outline: var(--saltPill-outline, 0);\n position: relative;\n gap: 0;\n}\n\n.saltPill:hover {\n --saltButton-background-active: var(--pill-background-active);\n --saltButton-background-hover: var(--pill-background-hover);\n\n --saltIcon-color: var(--pill-icon-color);\n --saltIcon-color-hover: var(--pill-icon-color-hover);\n\n background: var(--pill-background-hover);\n}\n\n/* Style applied to Pill when active */\n.saltPill:active,\n.saltPill-active {\n --saltButton-background-active: var(--pill-background-active);\n}\n\n/* Style applied to Pill on focus */\n.saltPill:focus {\n outline-color: var(--saltPill-focused-outlineColor, var(--salt-focused-outlineColor));\n outline-style: var(--saltPill-focused-outlineStyle, var(--salt-focused-outlineStyle));\n outline-width: var(--salt-focused-outlineWidth);\n outline-offset: var(--salt-focused-outlineOffset);\n}\n\n/* Style applied to Pill icon if `clickable={true}` */\n.saltPill-clickable {\n --saltButton-background-active: var(--pill-background);\n --saltButton-background-hover: var(--pill-background);\n\n cursor: var(--salt-selectable-cursor-hover);\n user-select: none;\n}\n\n/* Style applied to Pill when `deletable={true}` */\n.saltPill-deletable {\n --saltButton-background-active: var(--pill-background);\n --saltButton-background-hover: var(--pill-background);\n}\n\n.saltPill-selectable:hover,\n.saltPill-deletable:hover {\n --saltButton-background-active: var(--pill-background);\n --saltButton-background-hover: var(--pill-background);\n}\n\n/* Style applied to Pill when active if `selectable={true}` */\n.saltPill-selectable:active,\n.saltPill-active.saltPill-selectable {\n --saltButton-background-active: var(--pill-background);\n}\n\n/* Style applied to Pill when disabled */\n.saltPill-disabled,\n.saltPill-disabled:hover,\n.saltPill-disabled:active {\n --saltButton-background-active: var(--pill-background-disabled);\n --saltButton-background-hover: var(--pill-background-disabled);\n --saltButton-text-color-active: var(--pill-text-color);\n --saltButton-text-color-hover: var(--pill-text-color);\n --saltCheckbox-icon-tick-color: var(--salt-taggable-foreground-disabled);\n --saltCheckbox-icon-stroke-hover: var(--salt-selectable-borderColor-disabled);\n\n background: var(--pill-background-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n}\n\n/* Checkbox styles for selectable Pill when `disabled={true}` */\n.saltPill-disabled .saltPill-checkbox {\n --saltCheckbox-icon-tick-color: var(--salt-taggable-foreground-disabled);\n --saltCheckbox-icon-stroke: var(--salt-selectable-borderColor-disabled);\n --saltCheckbox-icon-stroke-hover: var(--salt-selectable-borderColor-disabled);\n}\n\n/* Style applied to Pill label */\n.saltPill-label {\n color: var(--saltPill-text-color, var(--pill-text-color));\n display: inline;\n flex-grow: 1;\n font-weight: var(--saltPill-fontWeight, var(--salt-text-fontWeight));\n overflow: hidden;\n padding-left: var(--saltPill-label-paddingLeft, var(--salt-size-adornmentGap));\n padding-right: var(--saltPill-label-paddingRight, var(--salt-size-adornmentGap));\n pointer-events: none;\n text-align: center;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Style applied to Pill label when `deletable={true}` */\n.saltPill-deletable .saltPill-label {\n padding-right: 0px;\n}\n\n/* Style applied to Pill label inner text */\n.saltPill-innerLabel {\n vertical-align: top;\n line-height: var(--pill-height);\n}\n\n/* Style applied to Pill label and icon when `disabled={true}` */\n.saltPill-disabled .saltPill-label,\n.saltPill-disabled .saltIcon {\n cursor: var(--salt-selectable-cursor-disabled);\n opacity: var(--salt-palette-opacity-disabled);\n\n --saltIcon-color: var(--pill-icon-color-disabled);\n --saltIcon-color-hover: var(--pill-icon-color-disabled);\n}\n\n/* Style applied to Pill delete button */\n.saltPill-deleteButton {\n --saltButton-background-hover: var(--pill-background-hover);\n --saltButton-background-active: var(--pill-background-active);\n --saltButton-cursor: pointer;\n\n flex-shrink: 0;\n height: var(--pill-checkbox-size);\n margin-left: calc(var(--salt-size-unit) / 2);\n min-height: var(--saltPill-minHeight, var(--salt-text-minHeight));\n padding-right: calc(var(--salt-size-unit) / 2);\n}\n\n/* Style applied to Pill delete button if `disabled={true}` */\n.saltPill-deleteButton-disabled {\n --saltButton-background-hover: var(--pill-background-disabled);\n --saltButton-background-active: var(--pill-background-disabled);\n --saltButton-background-disabled: initial;\n}\n\n/* Style applied to Pill delete button icon */\n.saltPill-deleteButton .saltPill-deleteIcon {\n left: var(--saltPill-deleteButton-left, var(--pill-icon-offset));\n position: relative;\n}\n\n/* Style applied to Pill delete button icon on active state */\n.saltPill-deleteButton:active .saltPill-deleteIcon {\n --saltIcon-color: var(--saltPill-deleteButton-color-active, var(--pill-icon-color-active));\n}\n\n/* Style applied to Pill delete button icon if `disabled={true}` on active state */\n.saltPill-disabled:active .saltPill-deleteIcon {\n --saltButton-background-active: var(--pill-background-disabled);\n --saltIcon-color: var(--saltPill-deleteButton-color-disabled, var(--pill-icon-color));\n}\n\n/* Style applied to Pill icon */\n.saltPill .saltPill-icon {\n fill: var(--pill-icon-color);\n height: 12px; /* TODO: Replace with updated size */\n margin-left: var(--salt-size-adornmentGap);\n margin-right: calc(var(--salt-size-unit) * 0.5);\n}\n\n/* Style applied to Pill icon on active state */\n.saltPill:active .saltPill-icon,\n.saltPill-active .saltPill-icon {\n fill: var(--pill-icon-color-active);\n}\n\n.saltPill:not(.saltPill-deletable) .saltPill-icon + .saltPill-label {\n padding-left: 0;\n}\n\n/* Pill label styles on hover */\n.saltPill:hover .saltPill-label {\n color: var(--pill-text-color-hover);\n}\n\n/* Pill label styles on active state */\n.saltPill:active .saltPill-label {\n color: var(--pill-text-color-active);\n}\n\n/* Pill label styles when `selectable={true}` or `deletable={true}` */\n.saltPill-selectable .saltPill-label,\n.saltPill-selectable:active .saltPill-label,\n.saltPill-deletable .saltPill-label,\n.saltPill-deletable:active .saltPill-label {\n background: var(--pill-background);\n color: var(--pill-text-color);\n}\n\n/* Pill label styles when `disabled={true}` */\n.saltPill-disabled .saltPill-label,\n.saltPill-disabled:active .saltPill-label {\n background: initial;\n color: var(--pill-text-color-disabled);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=Pill.css.js.map
@@ -7,7 +7,8 @@ var core = require('@salt-ds/core');
7
7
  var icons = require('@salt-ds/icons');
8
8
  var React = require('react');
9
9
  var ToggleButton = require('../../toggle-button/ToggleButton.js');
10
- var ToggleButtonGroup = require('../../toggle-button/ToggleButtonGroup.js');
10
+ var ToggleButtonGroup = require('../../toggle-button-group/ToggleButtonGroup.js');
11
+ require('../../toggle-button-group/ToggleButtonGroupContext.js');
11
12
  var TokenizedInput = require('../../tokenized-input/TokenizedInput.js');
12
13
  require('../../tokenized-input/TokenizedInputBase.js');
13
14
  require('clipboard-copy');
@@ -46,8 +47,8 @@ const QueryInputBody = React.forwardRef(
46
47
  value
47
48
  };
48
49
  };
49
- const onChange = (event, index) => {
50
- const newBooleanOperator = index === 0 ? "and" : "or";
50
+ const onChange = (event) => {
51
+ const newBooleanOperator = event.currentTarget.value;
51
52
  onBooleanOperatorChange(newBooleanOperator);
52
53
  };
53
54
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
@@ -76,10 +77,9 @@ const QueryInputBody = React.forwardRef(
76
77
  className: withBaseName("separator")
77
78
  }),
78
79
  /* @__PURE__ */ jsxRuntime.jsxs(ToggleButtonGroup.ToggleButtonGroup, {
79
- variant: "secondary",
80
80
  className: withBaseName("buttonGroup"),
81
81
  "data-testid": "boolean-selector",
82
- selectedIndex: booleanOperator === "and" ? 0 : 1,
82
+ value: booleanOperator,
83
83
  onChange,
84
84
  children: [
85
85
  /* @__PURE__ */ jsxRuntime.jsx(ToggleButton.ToggleButton, {
@@ -1 +1 @@
1
- {"version":3,"file":"QueryInputBody.js","sources":["../src/query-input/internal/QueryInputBody.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { FilterIcon } from \"@salt-ds/icons\";\nimport {\n ChangeEventHandler,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n Ref,\n SyntheticEvent,\n useMemo,\n} from \"react\";\n\nimport {\n ToggleButton,\n ToggleButtonGroup,\n ToggleButtonGroupChangeEventHandler,\n} from \"../../toggle-button\";\nimport {\n ChangeHandler,\n StringToItem,\n TokenizedInput,\n} from \"../../tokenized-input\";\nimport { QueryInputItem } from \"../queryInputTypes\";\nimport { BooleanOperator } from \"../useQueryInput\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputBody\");\n\nexport interface QueryInputBodyProps {\n inputRef: Ref<HTMLInputElement>;\n disabled?: boolean;\n showCategory?: boolean;\n selectedItems: QueryInputItem[];\n onBlur: FocusEventHandler<HTMLInputElement>;\n onFocus: FocusEventHandler<HTMLInputElement>;\n onInputFocus: FocusEventHandler<HTMLInputElement>;\n onInputBlur: FocusEventHandler<HTMLInputElement>;\n onInputClick: (event: SyntheticEvent) => void;\n onInputClear: () => void;\n inputValue?: string;\n onInputChange: ChangeEventHandler<HTMLInputElement>;\n isFocused?: boolean;\n onSelectedItemsChange: ChangeHandler<QueryInputItem>;\n onKeyDown: KeyboardEventHandler<HTMLInputElement | HTMLButtonElement>;\n booleanOperator: BooleanOperator;\n onBooleanOperatorChange: (newBooleanOperator: BooleanOperator) => void;\n}\n\nexport const QueryInputBody = forwardRef<HTMLDivElement, QueryInputBodyProps>(\n function QueryInputBody(props, ref) {\n const {\n inputRef,\n disabled,\n selectedItems,\n onInputFocus,\n onInputBlur,\n showCategory,\n inputValue,\n onInputChange,\n isFocused,\n onInputClear,\n onSelectedItemsChange,\n onKeyDown,\n onInputClick,\n booleanOperator,\n onBooleanOperatorChange,\n } = props;\n\n const itemToString = useMemo(() => {\n if (showCategory) {\n return (item: QueryInputItem) => [item.category, item.value].join(\": \");\n }\n return (item: QueryInputItem) => item.value;\n }, [showCategory]);\n\n const stringToItem: StringToItem<QueryInputItem> = (\n selectedItems,\n value\n ) => {\n return {\n category: null,\n value,\n };\n };\n\n const onChange: ToggleButtonGroupChangeEventHandler = (event, index) => {\n const newBooleanOperator = index === 0 ? \"and\" : \"or\";\n onBooleanOperatorChange(newBooleanOperator);\n };\n\n return (\n <div ref={ref} className={withBaseName()}>\n <FilterIcon />\n <TokenizedInput\n inputRef={inputRef}\n disabled={disabled}\n className={withBaseName(\"input\")}\n selectedItems={selectedItems}\n itemToString={itemToString as any}\n stringToItem={stringToItem as any}\n onInputFocus={onInputFocus}\n onInputBlur={onInputBlur}\n value={inputValue}\n onClick={onInputClick}\n onInputChange={onInputChange}\n expanded={isFocused}\n onClear={onInputClear}\n onChange={onSelectedItemsChange as any}\n onKeyDown={onKeyDown}\n />\n <div className={withBaseName(\"separator\")} />\n <ToggleButtonGroup\n variant=\"secondary\"\n className={withBaseName(\"buttonGroup\")}\n data-testid=\"boolean-selector\"\n selectedIndex={booleanOperator === \"and\" ? 0 : 1}\n onChange={onChange}\n >\n <ToggleButton value=\"and\">And</ToggleButton>\n <ToggleButton value=\"or\">Or</ToggleButton>\n </ToggleButtonGroup>\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","QueryInputBody","useMemo","selectedItems","jsxs","jsx","FilterIcon","TokenizedInput","ToggleButtonGroup","ToggleButton"],"mappings":"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"}
1
+ {"version":3,"file":"QueryInputBody.js","sources":["../src/query-input/internal/QueryInputBody.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { FilterIcon } from \"@salt-ds/icons\";\nimport {\n ChangeEventHandler,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n Ref,\n SyntheticEvent,\n useMemo,\n} from \"react\";\n\nimport { ToggleButton } from \"../../toggle-button\";\nimport { ToggleButtonGroup } from \"../../toggle-button-group\";\nimport {\n ChangeHandler,\n StringToItem,\n TokenizedInput,\n} from \"../../tokenized-input\";\nimport { QueryInputItem } from \"../queryInputTypes\";\nimport { BooleanOperator } from \"../useQueryInput\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputBody\");\n\nexport interface QueryInputBodyProps {\n inputRef: Ref<HTMLInputElement>;\n disabled?: boolean;\n showCategory?: boolean;\n selectedItems: QueryInputItem[];\n onBlur: FocusEventHandler<HTMLInputElement>;\n onFocus: FocusEventHandler<HTMLInputElement>;\n onInputFocus: FocusEventHandler<HTMLInputElement>;\n onInputBlur: FocusEventHandler<HTMLInputElement>;\n onInputClick: (event: SyntheticEvent) => void;\n onInputClear: () => void;\n inputValue?: string;\n onInputChange: ChangeEventHandler<HTMLInputElement>;\n isFocused?: boolean;\n onSelectedItemsChange: ChangeHandler<QueryInputItem>;\n onKeyDown: KeyboardEventHandler<HTMLInputElement | HTMLButtonElement>;\n booleanOperator: BooleanOperator;\n onBooleanOperatorChange: (newBooleanOperator: BooleanOperator) => void;\n}\n\nexport const QueryInputBody = forwardRef<HTMLDivElement, QueryInputBodyProps>(\n function QueryInputBody(props, ref) {\n const {\n inputRef,\n disabled,\n selectedItems,\n onInputFocus,\n onInputBlur,\n showCategory,\n inputValue,\n onInputChange,\n isFocused,\n onInputClear,\n onSelectedItemsChange,\n onKeyDown,\n onInputClick,\n booleanOperator,\n onBooleanOperatorChange,\n } = props;\n\n const itemToString = useMemo(() => {\n if (showCategory) {\n return (item: QueryInputItem) => [item.category, item.value].join(\": \");\n }\n return (item: QueryInputItem) => item.value;\n }, [showCategory]);\n\n const stringToItem: StringToItem<QueryInputItem> = (\n selectedItems,\n value\n ) => {\n return {\n category: null,\n value,\n };\n };\n\n const onChange = (event: SyntheticEvent<HTMLButtonElement>) => {\n const newBooleanOperator = event.currentTarget.value as BooleanOperator;\n onBooleanOperatorChange(newBooleanOperator);\n };\n\n return (\n <div ref={ref} className={withBaseName()}>\n <FilterIcon />\n <TokenizedInput\n inputRef={inputRef}\n disabled={disabled}\n className={withBaseName(\"input\")}\n selectedItems={selectedItems}\n itemToString={itemToString as any}\n stringToItem={stringToItem as any}\n onInputFocus={onInputFocus}\n onInputBlur={onInputBlur}\n value={inputValue}\n onClick={onInputClick}\n onInputChange={onInputChange}\n expanded={isFocused}\n onClear={onInputClear}\n onChange={onSelectedItemsChange as any}\n onKeyDown={onKeyDown}\n />\n <div className={withBaseName(\"separator\")} />\n <ToggleButtonGroup\n className={withBaseName(\"buttonGroup\")}\n data-testid=\"boolean-selector\"\n value={booleanOperator}\n onChange={onChange}\n >\n <ToggleButton value=\"and\">And</ToggleButton>\n <ToggleButton value=\"or\">Or</ToggleButton>\n </ToggleButtonGroup>\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","QueryInputBody","useMemo","selectedItems","jsxs","jsx","FilterIcon","TokenizedInput","ToggleButtonGroup","ToggleButton"],"mappings":";;;;;;;;;;;;;;;;;AAsBA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA,CAAA;AAsB/C,MAAM,cAAiB,GAAAC,gBAAA;AAAA,EAC5B,SAASC,eAAe,CAAA,KAAA,EAAO,GAAK,EAAA;AAClC,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,qBAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,uBAAA;AAAA,KACE,GAAA,KAAA,CAAA;AAEJ,IAAM,MAAA,YAAA,GAAeC,cAAQ,MAAM;AACjC,MAAA,IAAI,YAAc,EAAA;AAChB,QAAO,OAAA,CAAC,SAAyB,CAAC,IAAA,CAAK,UAAU,IAAK,CAAA,KAAK,CAAE,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,OACxE;AACA,MAAO,OAAA,CAAC,SAAyB,IAAK,CAAA,KAAA,CAAA;AAAA,KACxC,EAAG,CAAC,YAAY,CAAC,CAAA,CAAA;AAEjB,IAAM,MAAA,YAAA,GAA6C,CACjDC,cAAAA,EACA,KACG,KAAA;AACH,MAAO,OAAA;AAAA,QACL,QAAU,EAAA,IAAA;AAAA,QACV,KAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,QAAA,GAAW,CAAC,KAA6C,KAAA;AAC7D,MAAM,MAAA,kBAAA,GAAqB,MAAM,aAAc,CAAA,KAAA,CAAA;AAC/C,MAAA,uBAAA,CAAwB,kBAAkB,CAAA,CAAA;AAAA,KAC5C,CAAA;AAEA,IAAA,uBACGC,eAAA,CAAA,KAAA,EAAA;AAAA,MAAI,GAAA;AAAA,MAAU,WAAW,YAAa,EAAA;AAAA,MACrC,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAACC,gBAAW,EAAA,EAAA,CAAA;AAAA,wBACXD,cAAA,CAAAE,6BAAA,EAAA;AAAA,UACC,QAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,UAC/B,aAAA;AAAA,UACA,YAAA;AAAA,UACA,YAAA;AAAA,UACA,YAAA;AAAA,UACA,WAAA;AAAA,UACA,KAAO,EAAA,UAAA;AAAA,UACP,OAAS,EAAA,YAAA;AAAA,UACT,aAAA;AAAA,UACA,QAAU,EAAA,SAAA;AAAA,UACV,OAAS,EAAA,YAAA;AAAA,UACT,QAAU,EAAA,qBAAA;AAAA,UACV,SAAA;AAAA,SACF,CAAA;AAAA,wBACCF,cAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,SAAG,CAAA;AAAA,wBAC1CD,eAAA,CAAAI,mCAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,aAAa,CAAA;AAAA,UACrC,aAAY,EAAA,kBAAA;AAAA,UACZ,KAAO,EAAA,eAAA;AAAA,UACP,QAAA;AAAA,UAEA,QAAA,EAAA;AAAA,4BAACH,cAAA,CAAAI,yBAAA,EAAA;AAAA,cAAa,KAAM,EAAA,KAAA;AAAA,cAAM,QAAA,EAAA,KAAA;AAAA,aAAG,CAAA;AAAA,4BAC5BJ,cAAA,CAAAI,yBAAA,EAAA;AAAA,cAAa,KAAM,EAAA,IAAA;AAAA,cAAK,QAAA,EAAA,IAAA;AAAA,aAAE,CAAA;AAAA,WAAA;AAAA,SAC7B,CAAA;AAAA,OAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var core = require('@salt-ds/core');
8
+ var icons = require('@salt-ds/icons');
9
+ var reactOverflow = require('@fluentui/react-overflow');
10
+ require('../dropdown/DropdownBase.js');
11
+ require('../dropdown/DropdownButton.js');
12
+ var Dropdown = require('../dropdown/Dropdown.js');
13
+ require('../responsive/useResizeObserver.js');
14
+ require('../utils/useFloatingUI.js');
15
+ require('../form-field-context-legacy/FormFieldLegacyContext.js');
16
+
17
+ const OverflowMenu = React.forwardRef(
18
+ function OverflowMenu2(props, forwardedRef) {
19
+ const { tabs, ...rest } = props;
20
+ const { ref, overflowCount, isOverflowing } = reactOverflow.useOverflowMenu();
21
+ const handleRef = core.useForkRef(ref, forwardedRef);
22
+ const itemVisibility = reactOverflow.useOverflowContext(
23
+ (context) => context.itemVisibility
24
+ );
25
+ const tabList = tabs.filter(({ value }) => !itemVisibility[value]);
26
+ if (!isOverflowing)
27
+ return null;
28
+ return /* @__PURE__ */ jsxRuntime.jsx(Dropdown.Dropdown, {
29
+ "aria-label": `${overflowCount} more tabs`,
30
+ triggerComponent: /* @__PURE__ */ jsxRuntime.jsx(core.Button, {
31
+ "aria-label": "More tabs",
32
+ variant: "secondary",
33
+ role: "combobox",
34
+ children: /* @__PURE__ */ jsxRuntime.jsx(icons.OverflowMenuIcon, {
35
+ "aria-hidden": true,
36
+ style: { margin: 0 }
37
+ })
38
+ }),
39
+ width: "auto",
40
+ ref: handleRef,
41
+ source: tabList,
42
+ selected: null,
43
+ ...rest
44
+ });
45
+ }
46
+ );
47
+
48
+ exports.OverflowMenu = OverflowMenu;
49
+ //# sourceMappingURL=OverflowMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverflowMenu.js","sources":["../src/tabs-next/OverflowMenu.tsx"],"sourcesContent":["import { forwardRef, ReactNode } from \"react\";\nimport { Button, useForkRef } from \"@salt-ds/core\";\nimport { OverflowMenuIcon } from \"@salt-ds/icons\";\n\nimport { useOverflowContext, useOverflowMenu } from \"@fluentui/react-overflow\";\nimport { Dropdown, DropdownProps } from \"../dropdown\";\n\ntype TabValue = {\n value: string;\n label: ReactNode;\n};\n\nexport interface OverflowMenuProps extends DropdownProps<TabValue> {\n tabs: TabValue[];\n}\n\nexport const OverflowMenu = forwardRef<HTMLDivElement, OverflowMenuProps>(\n function OverflowMenu(props, forwardedRef) {\n const { tabs, ...rest } = props;\n const { ref, overflowCount, isOverflowing } =\n useOverflowMenu<HTMLDivElement>();\n const handleRef = useForkRef(ref, forwardedRef);\n const itemVisibility = useOverflowContext(\n (context) => context.itemVisibility\n );\n\n const tabList = tabs.filter(({ value }) => !itemVisibility[value]);\n\n if (!isOverflowing) return null;\n\n return (\n <Dropdown<TabValue>\n aria-label={`${overflowCount} more tabs`}\n triggerComponent={\n <Button aria-label=\"More tabs\" variant=\"secondary\" role=\"combobox\">\n <OverflowMenuIcon aria-hidden style={{ margin: 0 }} />\n </Button>\n }\n width=\"auto\"\n ref={handleRef}\n source={tabList}\n selected={null}\n {...rest}\n />\n );\n }\n);\n"],"names":["forwardRef","OverflowMenu","useOverflowMenu","useForkRef","useOverflowContext","jsx","Dropdown","Button","OverflowMenuIcon"],"mappings":";;;;;;;;;;;;;;;;AAgBO,MAAM,YAAe,GAAAA,gBAAA;AAAA,EAC1B,SAASC,aAAa,CAAA,KAAA,EAAO,YAAc,EAAA;AACzC,IAAM,MAAA,EAAE,IAAS,EAAA,GAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AAC1B,IAAA,MAAM,EAAE,GAAA,EAAK,aAAe,EAAA,aAAA,KAC1BC,6BAAgC,EAAA,CAAA;AAClC,IAAM,MAAA,SAAA,GAAYC,eAAW,CAAA,GAAA,EAAK,YAAY,CAAA,CAAA;AAC9C,IAAA,MAAM,cAAiB,GAAAC,gCAAA;AAAA,MACrB,CAAC,YAAY,OAAQ,CAAA,cAAA;AAAA,KACvB,CAAA;AAEA,IAAM,MAAA,OAAA,GAAU,KAAK,MAAO,CAAA,CAAC,EAAE,KAAM,EAAA,KAAM,CAAC,cAAA,CAAe,KAAM,CAAA,CAAA,CAAA;AAEjE,IAAA,IAAI,CAAC,aAAA;AAAe,MAAO,OAAA,IAAA,CAAA;AAE3B,IAAA,uBACGC,cAAA,CAAAC,iBAAA,EAAA;AAAA,MACC,cAAY,CAAG,EAAA,aAAA,CAAA,UAAA,CAAA;AAAA,MACf,kCACGD,cAAA,CAAAE,WAAA,EAAA;AAAA,QAAO,YAAW,EAAA,WAAA;AAAA,QAAY,OAAQ,EAAA,WAAA;AAAA,QAAY,IAAK,EAAA,UAAA;AAAA,QACtD,QAAC,kBAAAF,cAAA,CAAAG,sBAAA,EAAA;AAAA,UAAiB,aAAW,EAAA,IAAA;AAAA,UAAC,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAE,EAAA;AAAA,SAAG,CAAA;AAAA,OACtD,CAAA;AAAA,MAEF,KAAM,EAAA,MAAA;AAAA,MACN,GAAK,EAAA,SAAA;AAAA,MACL,MAAQ,EAAA,OAAA;AAAA,MACR,QAAU,EAAA,IAAA;AAAA,MACT,GAAG,IAAA;AAAA,KACN,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = "/* Class applied to root Tab element */\n.saltTabNext {\n align-items: center;\n justify-content: center;\n appearance: none;\n display: inline-flex;\n background: var(--salt-navigable-primary-background);\n border: 0 solid transparent;\n border-radius: 0;\n white-space: pre;\n min-width: 4em;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding-inline: var(--salt-spacing-100);\n padding-block: var(--salt-spacing-50);\n position: relative;\n flex-shrink: 0;\n\n color: var(--salt-text-secondary-foreground);\n font-weight: var(--salt-navigable-fontWeight);\n font-family: var(--salt-text-fontFamily);\n text-align: var(--salt-text-textAlign);\n letter-spacing: var(--salt-text-letterSpacing);\n line-height: var(--salt-text-lineHeight);\n font-size: var(--salt-text-fontSize);\n}\n\n.saltTabNext:hover {\n cursor: var(--salt-navigable-cursor-hover);\n background: var(--salt-navigable-primary-background-hover);\n color: var(--salt-text-primary-foreground);\n}\n\n.saltTabNext:hover::before,\n.saltTabNext:focus-visible::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: var(--salt-size-bar);\n background: var(--salt-navigable-indicator-hover);\n}\n\n.saltTabNext:focus-visible {\n outline: var(--salt-focused-outline);\n background: var(--salt-navigable-primary-background-hover);\n color: var(--salt-text-primary-foreground);\n}\n\n.saltTabNext[aria-selected=\"true\"] {\n color: var(--salt-text-primary-foreground);\n}\n\n.saltTabNext[aria-selected=\"true\"]::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: var(--salt-size-bar);\n background: var(--salt-navigable-indicator-active);\n}\n\n.saltTabNext:disabled {\n cursor: var(--salt-navigable-cursor-disabled);\n color: var(--salt-text-primary-foreground-disabled);\n background: var(--salt-navigable-primary-background);\n}\n\n.saltTabNext:disabled:before {\n background: transparent;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=TabNext.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var core = require('@salt-ds/core');
7
+ var React = require('react');
8
+ var styles = require('@salt-ds/styles');
9
+ var window = require('@salt-ds/window');
10
+ var TabNext$1 = require('./TabNext.css.js');
11
+ var clsx = require('clsx');
12
+ var reactOverflow = require('@fluentui/react-overflow');
13
+ var TabNextContext = require('./TabNextContext.js');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);
18
+
19
+ const withBaseName = core.makePrefixer("saltTabNext");
20
+ const TabNext = React.forwardRef(function Tab(props, ref) {
21
+ const {
22
+ children,
23
+ className,
24
+ disabled: disabledProp,
25
+ onClick,
26
+ onFocus,
27
+ value,
28
+ ...rest
29
+ } = props;
30
+ const targetWindow = window.useWindow();
31
+ styles.useComponentCssInjection({
32
+ testId: "salt-tab-next",
33
+ css: TabNext$1,
34
+ window: targetWindow
35
+ });
36
+ const {
37
+ isSelected,
38
+ select,
39
+ isFocusable,
40
+ setFocusable,
41
+ disabled: tabstripDisabled,
42
+ unregisterTab,
43
+ registerTab
44
+ } = TabNextContext.useTabs();
45
+ const selected = isSelected(value);
46
+ const focusable = isFocusable(value);
47
+ const disabled = tabstripDisabled || disabledProp;
48
+ const handleClick = (event) => {
49
+ select(event);
50
+ onClick == null ? void 0 : onClick(event);
51
+ };
52
+ const handleFocus = (event) => {
53
+ setFocusable(value);
54
+ onFocus == null ? void 0 : onFocus(event);
55
+ };
56
+ React.useEffect(() => {
57
+ registerTab({ value, label: children });
58
+ return () => unregisterTab(value);
59
+ }, [children, registerTab, unregisterTab, value]);
60
+ return /* @__PURE__ */ jsxRuntime.jsx(reactOverflow.OverflowItem, {
61
+ id: value,
62
+ priority: selected ? 2 : 1,
63
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", {
64
+ className: withBaseName("wrapper"),
65
+ children: /* @__PURE__ */ jsxRuntime.jsx("button", {
66
+ className: clsx__default["default"](withBaseName(), className),
67
+ "data-value": value,
68
+ "aria-selected": selected,
69
+ disabled,
70
+ value,
71
+ ref,
72
+ role: "tab",
73
+ onClick: handleClick,
74
+ onFocus: handleFocus,
75
+ tabIndex: focusable && !disabled ? 0 : -1,
76
+ ...rest,
77
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", {
78
+ className: withBaseName("label"),
79
+ children
80
+ })
81
+ })
82
+ })
83
+ });
84
+ });
85
+
86
+ exports.TabNext = TabNext;
87
+ //# sourceMappingURL=TabNext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabNext.js","sources":["../src/tabs-next/TabNext.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport {\n forwardRef,\n ReactElement,\n ComponentPropsWithoutRef,\n MouseEvent,\n FocusEvent,\n useEffect,\n} from \"react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport tabCss from \"./TabNext.css\";\nimport clsx from \"clsx\";\nimport { OverflowItem } from \"@fluentui/react-overflow\";\nimport { useTabs } from \"./TabNextContext\";\n\nconst withBaseName = makePrefixer(\"saltTabNext\");\n\nexport interface TabNextProps extends ComponentPropsWithoutRef<\"button\"> {\n /* Value prop is mandatory and must be unique in order for overflow to work. */\n value: string;\n}\n\nexport const TabNext = forwardRef<HTMLButtonElement, TabNextProps>(function Tab(\n props,\n ref\n): ReactElement<TabNextProps> {\n const {\n children,\n className,\n disabled: disabledProp,\n onClick,\n onFocus,\n value,\n ...rest\n } = props;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tab-next\",\n css: tabCss,\n window: targetWindow,\n });\n const {\n isSelected,\n select,\n isFocusable,\n setFocusable,\n disabled: tabstripDisabled,\n unregisterTab,\n registerTab,\n } = useTabs();\n const selected = isSelected(value);\n const focusable = isFocusable(value);\n const disabled = tabstripDisabled || disabledProp;\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n select(event);\n onClick?.(event);\n };\n\n const handleFocus = (event: FocusEvent<HTMLButtonElement>) => {\n setFocusable(value);\n onFocus?.(event);\n };\n\n useEffect(() => {\n registerTab({ value, label: children });\n return () => unregisterTab(value);\n }, [children, registerTab, unregisterTab, value]);\n\n return (\n <OverflowItem id={value} priority={selected ? 2 : 1}>\n <div className={withBaseName(\"wrapper\")}>\n <button\n className={clsx(withBaseName(), className)}\n data-value={value}\n aria-selected={selected}\n disabled={disabled}\n value={value}\n ref={ref}\n role=\"tab\"\n onClick={handleClick}\n onFocus={handleFocus}\n tabIndex={focusable && !disabled ? 0 : -1}\n {...rest}\n >\n <span className={withBaseName(\"label\")}>{children}</span>\n </button>\n </div>\n </OverflowItem>\n );\n});\n"],"names":["makePrefixer","forwardRef","useWindow","useComponentCssInjection","tabCss","useTabs","useEffect","jsx","OverflowItem","clsx"],"mappings":";;;;;;;;;;;;;;;;;;AAiBA,MAAM,YAAA,GAAeA,kBAAa,aAAa,CAAA,CAAA;AAOxC,MAAM,OAAU,GAAAC,gBAAA,CAA4C,SAAS,GAAA,CAC1E,OACA,GAC4B,EAAA;AAC5B,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACV,OAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACG,GAAA,IAAA;AAAA,GACD,GAAA,KAAA,CAAA;AACJ,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,eAAA;AAAA,IACR,GAAK,EAAAC,SAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AACD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAU,EAAA,gBAAA;AAAA,IACV,aAAA;AAAA,IACA,WAAA;AAAA,MACEC,sBAAQ,EAAA,CAAA;AACZ,EAAM,MAAA,QAAA,GAAW,WAAW,KAAK,CAAA,CAAA;AACjC,EAAM,MAAA,SAAA,GAAY,YAAY,KAAK,CAAA,CAAA;AACnC,EAAA,MAAM,WAAW,gBAAoB,IAAA,YAAA,CAAA;AAErC,EAAM,MAAA,WAAA,GAAc,CAAC,KAAyC,KAAA;AAC5D,IAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AACZ,IAAU,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACZ,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,KAAyC,KAAA;AAC5D,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAClB,IAAU,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACZ,CAAA;AAEA,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,WAAA,CAAY,EAAE,KAAA,EAAO,KAAO,EAAA,QAAA,EAAU,CAAA,CAAA;AACtC,IAAO,OAAA,MAAM,cAAc,KAAK,CAAA,CAAA;AAAA,KAC/B,CAAC,QAAA,EAAU,WAAa,EAAA,aAAA,EAAe,KAAK,CAAC,CAAA,CAAA;AAEhD,EAAA,uBACGC,cAAA,CAAAC,0BAAA,EAAA;AAAA,IAAa,EAAI,EAAA,KAAA;AAAA,IAAO,QAAA,EAAU,WAAW,CAAI,GAAA,CAAA;AAAA,IAChD,QAAC,kBAAAD,cAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,MACpC,QAAC,kBAAAA,cAAA,CAAA,QAAA,EAAA;AAAA,QACC,SAAW,EAAAE,wBAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,YAAY,EAAA,KAAA;AAAA,QACZ,eAAe,EAAA,QAAA;AAAA,QACf,QAAA;AAAA,QACA,KAAA;AAAA,QACA,GAAA;AAAA,QACA,IAAK,EAAA,KAAA;AAAA,QACL,OAAS,EAAA,WAAA;AAAA,QACT,OAAS,EAAA,WAAA;AAAA,QACT,QAAU,EAAA,SAAA,IAAa,CAAC,QAAA,GAAW,CAAI,GAAA,CAAA,CAAA;AAAA,QACtC,GAAG,IAAA;AAAA,QAEJ,QAAC,kBAAAF,cAAA,CAAA,MAAA,EAAA;AAAA,UAAK,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,UAAI,QAAA;AAAA,SAAS,CAAA;AAAA,OACpD,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('@salt-ds/core');
6
+ var React = require('react');
7
+
8
+ const TabsContext = core.createContext("TabsContext", {
9
+ disabled: false,
10
+ select: () => void 0,
11
+ isSelected: () => false,
12
+ setFocusable: () => void 0,
13
+ isFocusable: () => false,
14
+ registerTab: () => void 0,
15
+ unregisterTab: () => void 0
16
+ });
17
+ function useTabs() {
18
+ return React.useContext(TabsContext);
19
+ }
20
+
21
+ exports.TabsContext = TabsContext;
22
+ exports.useTabs = useTabs;
23
+ //# sourceMappingURL=TabNextContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabNextContext.js","sources":["../src/tabs-next/TabNextContext.tsx"],"sourcesContent":["import { createContext } from \"@salt-ds/core\";\nimport { ReactNode, SyntheticEvent, useContext } from \"react\";\n\ntype TabValue = {\n value: string;\n label: ReactNode;\n};\n\nexport interface TabsContextValue {\n disabled?: boolean;\n select: (event: SyntheticEvent<HTMLButtonElement>) => void;\n isSelected: (id: string) => boolean;\n setFocusable: (id: string) => void;\n isFocusable: (id: string) => boolean;\n registerTab: (tab: TabValue) => void;\n unregisterTab: (id: string) => void;\n}\n\nexport const TabsContext = createContext<TabsContextValue>(\"TabsContext\", {\n disabled: false,\n select: () => undefined,\n isSelected: () => false,\n setFocusable: () => undefined,\n isFocusable: () => false,\n registerTab: () => undefined,\n unregisterTab: () => undefined,\n});\n\nexport function useTabs() {\n return useContext(TabsContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;;AAkBa,MAAA,WAAA,GAAcA,mBAAgC,aAAe,EAAA;AAAA,EACxE,QAAU,EAAA,KAAA;AAAA,EACV,QAAQ,MAAM,KAAA,CAAA;AAAA,EACd,YAAY,MAAM,KAAA;AAAA,EAClB,cAAc,MAAM,KAAA,CAAA;AAAA,EACpB,aAAa,MAAM,KAAA;AAAA,EACnB,aAAa,MAAM,KAAA,CAAA;AAAA,EACnB,eAAe,MAAM,KAAA,CAAA;AACvB,CAAC,EAAA;AAEM,SAAS,OAAU,GAAA;AACxB,EAAA,OAAOC,iBAAW,WAAW,CAAA,CAAA;AAC/B;;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = "/* Component class applied to the root element */\n.saltTabstripNext {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n position: relative;\n background: transparent;\n width: 100%;\n}\n\n.saltTabstripNext::before {\n content: \"\";\n position: absolute;\n inset: auto 0 0 0;\n height: var(--salt-size-border);\n background: var(--salt-container-primary-borderColor);\n}\n\n.saltTabstripNext .saltTabNext-wrapper {\n padding-right: var(--salt-spacing-50);\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=TabstripNext.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabstripNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,180 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var core = require('@salt-ds/core');
7
+ var clsx = require('clsx');
8
+ var React = require('react');
9
+ var styles = require('@salt-ds/styles');
10
+ var window = require('@salt-ds/window');
11
+ var reactOverflow = require('@fluentui/react-overflow');
12
+ var OverflowMenu = require('./OverflowMenu.js');
13
+ var TabstripNext$1 = require('./TabstripNext.css.js');
14
+ var TabNextContext = require('./TabNextContext.js');
15
+
16
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
+
18
+ var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);
19
+
20
+ const withBaseName = core.makePrefixer("saltTabstripNext");
21
+ const TabstripNext = React.forwardRef(
22
+ function TabstripNext2(props, ref) {
23
+ const {
24
+ children,
25
+ className,
26
+ disabled,
27
+ selected: selectedProp,
28
+ defaultSelected,
29
+ onChange,
30
+ onKeyDown,
31
+ ...rest
32
+ } = props;
33
+ const targetWindow = window.useWindow();
34
+ styles.useComponentCssInjection({
35
+ testId: "salt-tabstrip-next",
36
+ css: TabstripNext$1,
37
+ window: targetWindow
38
+ });
39
+ const tabstripRef = React.useRef(null);
40
+ const handleRef = core.useForkRef(tabstripRef, ref);
41
+ const [selected, setSelected] = core.useControlled({
42
+ controlled: selectedProp,
43
+ default: defaultSelected,
44
+ name: "TabstripNext",
45
+ state: "selected"
46
+ });
47
+ const [focusable, setFocusableState] = React.useState(
48
+ selected
49
+ );
50
+ const [overflowOpen, setOverflowOpen] = React.useState(false);
51
+ const select = React.useCallback(
52
+ (event) => {
53
+ const newValue = event.currentTarget.value;
54
+ setSelected(newValue);
55
+ if (selected !== newValue) {
56
+ onChange == null ? void 0 : onChange(event, { value: newValue });
57
+ }
58
+ },
59
+ [onChange, selected, setSelected]
60
+ );
61
+ const isSelected = React.useCallback(
62
+ (id) => {
63
+ return selected === id;
64
+ },
65
+ [selected]
66
+ );
67
+ const setFocusable = React.useCallback((id) => {
68
+ setFocusableState(id);
69
+ }, []);
70
+ const isFocusable = React.useCallback(
71
+ (id) => {
72
+ return focusable === id || !focusable;
73
+ },
74
+ [focusable]
75
+ );
76
+ const [tabList, setTabList] = React.useState([]);
77
+ const registerTab = React.useCallback((tab) => {
78
+ setTabList((list) => list.concat([tab]));
79
+ }, []);
80
+ const unregisterTab = React.useCallback((id) => {
81
+ setTabList((list) => list.filter((item) => item.value !== id));
82
+ }, []);
83
+ const handleKeyDown = (event) => {
84
+ var _a, _b, _c, _d, _e, _f;
85
+ if (overflowOpen)
86
+ return;
87
+ const elements = Array.from(
88
+ (_b = (_a = tabstripRef.current) == null ? void 0 : _a.querySelectorAll(
89
+ `div:not([data-overflowing]) > [role="tab"]:not([disabled])`
90
+ )) != null ? _b : []
91
+ );
92
+ const currentIndex = elements.findIndex(
93
+ (element) => element === (targetWindow == null ? void 0 : targetWindow.document.activeElement)
94
+ );
95
+ if (currentIndex < 0)
96
+ return;
97
+ switch (event.key) {
98
+ case "ArrowDown":
99
+ case "ArrowRight":
100
+ (_c = elements[Math.min(currentIndex + 1, elements.length)]) == null ? void 0 : _c.focus();
101
+ break;
102
+ case "ArrowUp":
103
+ case "ArrowLeft":
104
+ (_d = elements[Math.max(0, currentIndex - 1)]) == null ? void 0 : _d.focus();
105
+ break;
106
+ case "Home":
107
+ (_e = elements[0]) == null ? void 0 : _e.focus();
108
+ break;
109
+ case "End":
110
+ (_f = elements[elements.length - 1]) == null ? void 0 : _f.focus();
111
+ }
112
+ onKeyDown == null ? void 0 : onKeyDown(event);
113
+ };
114
+ const handleOverflowItemClick = (event, item) => {
115
+ if (item) {
116
+ setSelected(item.value);
117
+ requestAnimationFrame(() => {
118
+ var _a;
119
+ const element = (_a = tabstripRef.current) == null ? void 0 : _a.querySelector(
120
+ `[value="${item.value}"]`
121
+ );
122
+ if (element instanceof HTMLElement) {
123
+ element == null ? void 0 : element.focus();
124
+ }
125
+ });
126
+ if (selected !== item.value) {
127
+ onChange == null ? void 0 : onChange(event, { value: item.value });
128
+ }
129
+ }
130
+ };
131
+ const handleOverflowOpenChange = (isOpen) => {
132
+ setOverflowOpen(isOpen);
133
+ };
134
+ const value = React.useMemo(
135
+ () => ({
136
+ select,
137
+ isSelected,
138
+ setFocusable,
139
+ isFocusable,
140
+ registerTab,
141
+ unregisterTab
142
+ }),
143
+ [
144
+ select,
145
+ isSelected,
146
+ setFocusable,
147
+ isFocusable,
148
+ registerTab,
149
+ unregisterTab
150
+ ]
151
+ );
152
+ return /* @__PURE__ */ jsxRuntime.jsx(TabNextContext.TabsContext.Provider, {
153
+ value,
154
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactOverflow.Overflow, {
155
+ ref: handleRef,
156
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", {
157
+ role: "tablist",
158
+ className: clsx__default["default"](
159
+ withBaseName(),
160
+ withBaseName("horizontal"),
161
+ className
162
+ ),
163
+ onKeyDown: handleKeyDown,
164
+ ...rest,
165
+ children: [
166
+ children,
167
+ /* @__PURE__ */ jsxRuntime.jsx(OverflowMenu.OverflowMenu, {
168
+ tabs: tabList,
169
+ onOpenChange: handleOverflowOpenChange,
170
+ onSelectionChange: handleOverflowItemClick
171
+ })
172
+ ]
173
+ })
174
+ })
175
+ });
176
+ }
177
+ );
178
+
179
+ exports.TabstripNext = TabstripNext;
180
+ //# sourceMappingURL=TabstripNext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabstripNext.js","sources":["../src/tabs-next/TabstripNext.tsx"],"sourcesContent":["import { makePrefixer, useControlled, useForkRef } from \"@salt-ds/core\";\nimport clsx from \"clsx\";\nimport {\n ComponentPropsWithoutRef,\n forwardRef,\n ReactNode,\n SyntheticEvent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { Overflow } from \"@fluentui/react-overflow\";\nimport { OverflowMenu } from \"./OverflowMenu\";\nimport tabstripCss from \"./TabstripNext.css\";\nimport { TabsContext } from \"./TabNextContext\";\nimport { SelectionChangeHandler } from \"../common-hooks\";\n\nconst withBaseName = makePrefixer(\"saltTabstripNext\");\n\nexport interface TabstripNextProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> {\n disabled?: boolean;\n /* Value for the uncontrolled version. */\n selected?: string;\n /* Callback for the controlled version. */\n onChange?: (e: SyntheticEvent, data: { value: string }) => void;\n /* Initial value for the uncontrolled version. */\n defaultSelected?: string;\n}\n\ntype TabValue = {\n value: string;\n label: ReactNode;\n};\n\nexport const TabstripNext = forwardRef<HTMLDivElement, TabstripNextProps>(\n function TabstripNext(props, ref) {\n const {\n children,\n className,\n disabled,\n selected: selectedProp,\n defaultSelected,\n onChange,\n onKeyDown,\n ...rest\n } = props;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tabstrip-next\",\n css: tabstripCss,\n window: targetWindow,\n });\n\n const tabstripRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(tabstripRef, ref);\n\n const [selected, setSelected] = useControlled({\n controlled: selectedProp,\n default: defaultSelected,\n name: \"TabstripNext\",\n state: \"selected\",\n });\n const [focusable, setFocusableState] = useState<string | undefined>(\n selected\n );\n const [overflowOpen, setOverflowOpen] = useState(false);\n\n const select = useCallback(\n (event: SyntheticEvent<HTMLButtonElement>) => {\n const newValue = event.currentTarget.value;\n setSelected(newValue);\n if (selected !== newValue) {\n onChange?.(event, { value: newValue });\n }\n },\n [onChange, selected, setSelected]\n );\n\n const isSelected = useCallback(\n (id: string | undefined) => {\n return selected === id;\n },\n [selected]\n );\n\n const setFocusable = useCallback((id: string | undefined) => {\n setFocusableState(id);\n }, []);\n\n const isFocusable = useCallback(\n (id: string | undefined) => {\n return focusable === id || !focusable;\n },\n [focusable]\n );\n\n const [tabList, setTabList] = useState<TabValue[]>([]);\n const registerTab = useCallback((tab: TabValue) => {\n setTabList((list) => list.concat([tab]));\n }, []);\n\n const unregisterTab = useCallback((id: string) => {\n setTabList((list) => list.filter((item) => item.value !== id));\n }, []);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (overflowOpen) return;\n\n const elements: HTMLElement[] = Array.from(\n tabstripRef.current?.querySelectorAll(\n `div:not([data-overflowing]) > [role=\"tab\"]:not([disabled])`\n ) ?? []\n );\n\n const currentIndex = elements.findIndex(\n (element) => element === targetWindow?.document.activeElement\n );\n\n if (currentIndex < 0) return;\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n elements[Math.min(currentIndex + 1, elements.length)]?.focus();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n elements[Math.max(0, currentIndex - 1)]?.focus();\n break;\n case \"Home\":\n elements[0]?.focus();\n break;\n case \"End\":\n elements[elements.length - 1]?.focus();\n }\n\n onKeyDown?.(event);\n };\n\n const handleOverflowItemClick: SelectionChangeHandler<TabValue> = (\n event,\n item\n ) => {\n if (item) {\n setSelected(item.value);\n requestAnimationFrame(() => {\n const element = tabstripRef.current?.querySelector(\n `[value=\"${item.value}\"]`\n );\n if (element instanceof HTMLElement) {\n element?.focus();\n }\n });\n if (selected !== item.value) {\n onChange?.(event, { value: item.value });\n }\n }\n };\n\n const handleOverflowOpenChange = (isOpen: boolean) => {\n setOverflowOpen(isOpen);\n };\n\n const value = useMemo(\n () => ({\n select,\n isSelected,\n setFocusable,\n isFocusable,\n registerTab,\n unregisterTab,\n }),\n [\n select,\n isSelected,\n setFocusable,\n isFocusable,\n registerTab,\n unregisterTab,\n ]\n );\n\n return (\n <TabsContext.Provider value={value}>\n <Overflow ref={handleRef}>\n <div\n role=\"tablist\"\n className={clsx(\n withBaseName(),\n withBaseName(\"horizontal\"),\n className\n )}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n <OverflowMenu\n tabs={tabList}\n onOpenChange={handleOverflowOpenChange}\n onSelectionChange={handleOverflowItemClick}\n />\n </div>\n </Overflow>\n </TabsContext.Provider>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","TabstripNext","useWindow","useComponentCssInjection","tabstripCss","useRef","useForkRef","useControlled","useState","useCallback","useMemo","jsx","TabsContext","Overflow","jsxs","clsx","OverflowMenu"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".salt-density-touch {\n --toggleButton-icon-padding: 11px;\n}\n\n.salt-density-low {\n --toggleButton-icon-padding: 7px;\n}\n\n.salt-density-medium {\n --toggleButton-icon-padding: 5px;\n}\n\n.salt-density-high {\n --toggleButton-icon-padding: 1px;\n}\n\n.saltToggleButton-horizontal.saltToggleButton-iconOnly {\n padding: var(--saltToggleButton-icon-padding, var(--toggleButton-icon-padding));\n}\n\n.saltToggleButton {\n --saltButton-text-color: var(--salt-text-primary-foreground);\n --saltButton-text-color-disabled: var(--salt-text-primary-foreground-disabled);\n\n --saltIcon-color: var(--salt-text-primary-foreground);\n}\n\n.saltToggleButton-disabled.saltButton-disabled {\n --saltButton-text-color-active: var(--salt-text-primary-foreground-disabled);\n --saltButton-text-color-hover: var(--salt-text-primary-foreground-disabled);\n\n --saltIcon-color: var(--salt-text-primary-foreground-disabled);\n}\n\n/* CTA */\n.saltToggleButton-cta {\n --saltButton-background: var(--salt-selectable-background);\n --saltButton-background-hover: var(--salt-selectable-cta-background-hover);\n --saltButton-background-active: var(--salt-selectable-cta-background-selected);\n --saltButton-background-disabled: var(--salt-selectable-background-disabled);\n --saltButton-text-color-hover: var(--salt-selectable-cta-foreground-hover);\n --saltButton-text-color-active: var(--salt-selectable-cta-foreground-selected);\n}\n.saltToggleButton-cta.saltToggleButton-disabled.saltButton-disabled {\n --saltButton-background-hover: var(--salt-selectable-background-disabled);\n --saltButton-background-active: var(--salt-selectable-cta-background-disabled);\n}\n.saltToggleButton-cta.saltToggleButton-disabled {\n --saltButton-background-active: var(--salt-selectable-cta-background-selectedDisabled);\n --saltButton-text-color-active: var(--salt-selectable-cta-foreground-selectedDisabled);\n\n --saltIcon-color-active: var(--salt-selectable-cta-foreground-selectedDisabled);\n}\n.saltToggleButton-cta.saltToggleButton-toggled {\n --saltButton-background: var(--salt-selectable-cta-background-selected);\n --saltButton-background-hover: var(--salt-selectable-cta-background-selected);\n --saltButton-text-color: var(--salt-selectable-cta-foreground-selected);\n --saltButton-text-color-hover: var(--salt-selectable-cta-foreground-selected);\n\n --saltIcon-color: var(--salt-selectable-cta-foreground-selected);\n}\n.saltToggleButton-cta.saltToggleButton-toggled.saltToggleButton-disabled {\n --saltButton-background-disabled: var(--salt-selectable-cta-background-selectedDisabled);\n --saltButton-background-hover: var(--salt-selectable-cta-background-selectedDisabled);\n --saltButton-text-color-disabled: var(--salt-selectable-cta-foreground-selectedDisabled);\n --saltButton-text-color-hover: var(--salt-selectable-cta-foreground-selectedDisabled);\n\n --saltIcon-color: var(--salt-selectable-cta-foreground-selectedDisabled);\n}\n\n/* Primary */\n.saltToggleButton-primary {\n --saltButton-background: var(--salt-selectable-background);\n --saltButton-background-hover: var(--salt-selectable-primary-background-hover);\n --saltButton-background-active: var(--salt-selectable-primary-background-selected);\n --saltButton-background-disabled: var(--salt-selectable-primary-background-disabled);\n --saltButton-text-color-hover: var(--salt-selectable-primary-foreground-hover);\n --saltButton-text-color-active: var(--salt-selectable-primary-foreground-selected);\n}\n.saltToggleButton-primary.saltToggleButton-disabled.saltButton-disabled {\n --saltButton-background-active: var(--salt-selectable-primary-background-disabled);\n --saltButton-background-hover: var(--salt-selectable-background-disabled);\n}\n.saltToggleButton-primary.saltToggleButton-disabled.saltButton-active {\n --saltButton-background-active: var(--salt-selectable-primary-background-selectedDisabled);\n --saltButton-text-color-active: var(--salt-selectable-primary-foreground-selectedDisabled);\n}\n.saltToggleButton-primary.saltToggleButton-toggled {\n --saltButton-background: var(--salt-selectable-primary-background-selected);\n --saltButton-background-hover: var(--salt-selectable-primary-background-selected);\n --saltButton-text-color: var(--salt-selectable-primary-foreground-selected);\n --saltButton-text-color-hover: var(--salt-selectable-primary-foreground-selected);\n\n --saltIcon-color: var(--salt-selectable-primary-foreground-selected);\n}\n.saltToggleButton-primary.saltToggleButton-toggled.saltToggleButton-disabled {\n --saltButton-background-disabled: var(--salt-selectable-primary-background-selectedDisabled);\n --saltButton-background-hover: var(--salt-selectable-primary-background-selectedDisabled);\n --saltButton-text-color-disabled: var(--salt-selectable-primary-foreground-selectedDisabled);\n --saltButton-text-color-hover: var(--salt-selectable-primary-foreground-selectedDisabled);\n\n --saltIcon-color: var(--salt-selectable-primary-foreground-selectedDisabled);\n}\n\n/* Secondary */\n.saltToggleButton-secondary {\n --saltButton-background: var(--salt-selectable-background);\n --saltButton-background-hover: var(--salt-selectable-secondary-background-hover);\n --saltButton-background-active: var(--salt-selectable-secondary-background-selected);\n --saltButton-background-disabled: var(--salt-selectable-background-disabled);\n --saltButton-text-color-hover: var(--salt-selectable-secondary-foreground-hover);\n --saltButton-text-color-active: var(--salt-selectable-secondary-foreground-selected);\n}\n.saltToggleButton-secondary.saltToggleButton-disabled.saltButton-disabled {\n --saltButton-background-active: var(--salt-selectable-secondary-background-disabled);\n --saltButton-background-hover: var(--salt-selectable-background-disabled);\n}\n.saltToggleButton-secondary.saltToggleButton-disabled.saltButton-active {\n --saltButton-background-active: var(--salt-selectable-secondary-background-selectedDisabled);\n --saltButton-text-color-active: var(--salt-selectable-secondary-foreground-selectedDisabled);\n\n --saltIcon-color-active: var(--salt-selectable-secondary-foreground-selectedDisabled);\n}\n.saltToggleButton-secondary.saltToggleButton-toggled {\n --saltButton-background: var(--salt-selectable-secondary-background-selected);\n --saltButton-background-hover: var(--salt-selectable-secondary-background-selected);\n --saltButton-text-color: var(--salt-selectable-secondary-foreground-selected);\n --saltButton-text-color-hover: var(--salt-selectable-secondary-foreground-selected);\n\n --saltIcon-color: var(--salt-selectable-secondary-foreground-selected);\n}\n.saltToggleButton-secondary.saltToggleButton-toggled.saltToggleButton-disabled {\n --saltButton-background-disabled: var(--salt-selectable-secondary-background-selectedDisabled);\n --saltButton-background-hover: var(--salt-selectable-secondary-background-selectedDisabled);\n --saltButton-text-color-disabled: var(--salt-selectable-secondary-foreground-selectedDisabled);\n --saltButton-text-color-hover: var(--salt-selectable-secondary-foreground-selectedDisabled);\n\n --saltIcon-color: var(--salt-selectable-secondary-foreground-selectedDisabled);\n}\n";
3
+ var css_248z = ".saltToggleButton {\n align-items: center;\n justify-content: center;\n appearance: none;\n display: inline-flex;\n background: var(--salt-actionable-secondary-background);\n border: 0 solid transparent;\n border-radius: 0;\n height: var(--salt-size-base);\n color: var(--salt-actionable-secondary-foreground);\n text-transform: var(--salt-actionable-textTransform);\n font-weight: var(--salt-actionable-secondary-fontWeight);\n font-family: var(--salt-text-fontFamily);\n text-align: var(--salt-actionable-textAlign);\n letter-spacing: var(--salt-actionable-letterSpacing);\n line-height: var(--salt-text-lineHeight);\n font-size: var(--salt-text-fontSize);\n padding-inline: var(--salt-spacing-100);\n gap: var(--salt-spacing-50);\n --saltIcon-color: var(--salt-actionable-secondary-foreground);\n}\n\n.saltToggleButton:hover {\n background: var(--salt-actionable-secondary-background-hover);\n color: var(--salt-actionable-secondary-foreground-hover);\n cursor: var(--salt-actionable-cursor-hover);\n --saltIcon-color: var(--salt-actionable-secondary-foreground-hover);\n}\n\n.saltToggleButton:focus-visible {\n outline: var(--salt-focused-outline);\n background: var(--salt-actionable-secondary-background-hover);\n color: var(--salt-actionable-secondary-foreground-hover);\n cursor: var(--salt-actionable-cursor-hover);\n --saltIcon-color: var(--salt-actionable-secondary-foreground-hover);\n}\n\n.saltToggleButton[aria-checked=\"true\"]:focus-visible {\n background: var(--salt-actionable-secondary-background-active);\n color: var(--salt-actionable-secondary-foreground-active);\n cursor: var(--salt-actionable-cursor-active);\n --saltIcon-color: var(--salt-actionable-secondary-foreground-active);\n}\n\n.saltToggleButton[aria-checked=\"true\"] {\n background: var(--salt-actionable-secondary-background-active);\n color: var(--salt-actionable-secondary-foreground-active);\n cursor: var(--salt-actionable-cursor-active);\n --saltIcon-color: var(--salt-actionable-secondary-foreground-active);\n}\n\n.saltToggleButton:disabled {\n background: var(--salt-actionable-secondary-background-disabled);\n cursor: var(--salt-actionable-cursor-disabled);\n color: var(--salt-actionable-secondary-foreground-disabled);\n --saltIcon-color: var(--salt-actionable-secondary-foreground-disabled);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=ToggleButton.css.js.map