@salt-ds/core 1.47.4 → 1.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/css/salt-core.css +202 -24
  3. package/dist-cjs/aria-announcer/AriaAnnounce.js.map +1 -1
  4. package/dist-cjs/avatar/Avatar.js +5 -2
  5. package/dist-cjs/avatar/Avatar.js.map +1 -1
  6. package/dist-cjs/banner/Banner.css.js +1 -1
  7. package/dist-cjs/breakpoints/BreakpointProvider.js +10 -7
  8. package/dist-cjs/breakpoints/BreakpointProvider.js.map +1 -1
  9. package/dist-cjs/button/useButton.js +3 -3
  10. package/dist-cjs/button/useButton.js.map +1 -1
  11. package/dist-cjs/checkbox/Checkbox.css.js +1 -1
  12. package/dist-cjs/checkbox/CheckboxIcon.css.js +1 -1
  13. package/dist-cjs/collapsible/Collapsible.js +52 -0
  14. package/dist-cjs/collapsible/Collapsible.js.map +1 -0
  15. package/dist-cjs/collapsible/CollapsibleContext.js +29 -0
  16. package/dist-cjs/collapsible/CollapsibleContext.js.map +1 -0
  17. package/dist-cjs/collapsible/CollapsiblePanel.css.js +6 -0
  18. package/dist-cjs/collapsible/CollapsiblePanel.css.js.map +1 -0
  19. package/dist-cjs/collapsible/CollapsiblePanel.js +46 -0
  20. package/dist-cjs/collapsible/CollapsiblePanel.js.map +1 -0
  21. package/dist-cjs/collapsible/CollapsibleTrigger.js +40 -0
  22. package/dist-cjs/collapsible/CollapsibleTrigger.js.map +1 -0
  23. package/dist-cjs/dialog/Dialog.js +1 -1
  24. package/dist-cjs/dialog/Dialog.js.map +1 -1
  25. package/dist-cjs/dialog/DialogContent.css.js +1 -1
  26. package/dist-cjs/dialog/DialogHeader.css.js +1 -1
  27. package/dist-cjs/divider/Divider.js.map +1 -1
  28. package/dist-cjs/index.js +21 -0
  29. package/dist-cjs/index.js.map +1 -1
  30. package/dist-cjs/input/Input.css.js +1 -1
  31. package/dist-cjs/interactable-card/InteractableCard.js +29 -26
  32. package/dist-cjs/interactable-card/InteractableCard.js.map +1 -1
  33. package/dist-cjs/interactable-card/InteractableCardGroup.js +3 -3
  34. package/dist-cjs/interactable-card/InteractableCardGroup.js.map +1 -1
  35. package/dist-cjs/multiline-input/MultilineInput.css.js +1 -1
  36. package/dist-cjs/multiline-input/MultilineInput.js.map +1 -1
  37. package/dist-cjs/navigation-item/ExpansionIcon.js.map +1 -1
  38. package/dist-cjs/pagination/PageButton.css.js +1 -1
  39. package/dist-cjs/pill/Pill.js +1 -1
  40. package/dist-cjs/pill/Pill.js.map +1 -1
  41. package/dist-cjs/pill-input/PillInput.css.js +1 -1
  42. package/dist-cjs/pill-input/useTruncatePills.js +2 -1
  43. package/dist-cjs/pill-input/useTruncatePills.js.map +1 -1
  44. package/dist-cjs/radio-button/RadioButton.css.js +1 -1
  45. package/dist-cjs/radio-button/RadioButtonIcon.css.js +1 -1
  46. package/dist-cjs/salt-provider/SaltProvider.js +2 -2
  47. package/dist-cjs/salt-provider/SaltProvider.js.map +1 -1
  48. package/dist-cjs/spinner/Spinner.js +3 -4
  49. package/dist-cjs/spinner/Spinner.js.map +1 -1
  50. package/dist-cjs/stepper/Step.js +1 -1
  51. package/dist-cjs/stepper/Step.js.map +1 -1
  52. package/dist-cjs/stepper/internal/StepText.css.js +1 -1
  53. package/dist-cjs/stepper/internal/StepText.js +0 -1
  54. package/dist-cjs/stepper/internal/StepText.js.map +1 -1
  55. package/dist-cjs/switch/Switch.js.map +1 -1
  56. package/dist-cjs/text/Text.css.js +1 -1
  57. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js +3 -3
  58. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js.map +1 -1
  59. package/dist-cjs/tooltip/Tooltip.js +1 -1
  60. package/dist-cjs/tooltip/Tooltip.js.map +1 -1
  61. package/dist-cjs/tooltip/useTooltip.js +1 -1
  62. package/dist-cjs/tooltip/useTooltip.js.map +1 -1
  63. package/dist-cjs/utils/mergeProps.js +2 -2
  64. package/dist-cjs/utils/mergeProps.js.map +1 -1
  65. package/dist-cjs/utils/useControlled.js +1 -1
  66. package/dist-cjs/utils/useControlled.js.map +1 -1
  67. package/dist-cjs/utils/useFloatingUI/useFloatingUI.js +2 -2
  68. package/dist-cjs/utils/useFloatingUI/useFloatingUI.js.map +1 -1
  69. package/dist-cjs/utils/useIsFocusVisible.js +1 -1
  70. package/dist-cjs/utils/useIsFocusVisible.js.map +1 -1
  71. package/dist-cjs/utils/usePreventScroll.js.map +1 -1
  72. package/dist-cjs/utils/usePrevious.js.map +1 -1
  73. package/dist-cjs/vertical-navigation/SubMenuContext.js +39 -0
  74. package/dist-cjs/vertical-navigation/SubMenuContext.js.map +1 -0
  75. package/dist-cjs/vertical-navigation/VerticalNavigation.css.js +6 -0
  76. package/dist-cjs/vertical-navigation/VerticalNavigation.css.js.map +1 -0
  77. package/dist-cjs/vertical-navigation/VerticalNavigation.js +38 -0
  78. package/dist-cjs/vertical-navigation/VerticalNavigation.js.map +1 -0
  79. package/dist-cjs/vertical-navigation/VerticalNavigationItem.js +53 -0
  80. package/dist-cjs/vertical-navigation/VerticalNavigationItem.js.map +1 -0
  81. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js +6 -0
  82. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js.map +1 -0
  83. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js +88 -0
  84. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js.map +1 -0
  85. package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js +35 -0
  86. package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +1 -0
  87. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js +6 -0
  88. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js.map +1 -0
  89. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js +28 -0
  90. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js.map +1 -0
  91. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js +6 -0
  92. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +1 -0
  93. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js +74 -0
  94. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js.map +1 -0
  95. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js +6 -0
  96. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js.map +1 -0
  97. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js +39 -0
  98. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js.map +1 -0
  99. package/dist-es/aria-announcer/AriaAnnounce.js.map +1 -1
  100. package/dist-es/avatar/Avatar.js +5 -2
  101. package/dist-es/avatar/Avatar.js.map +1 -1
  102. package/dist-es/banner/Banner.css.js +1 -1
  103. package/dist-es/breakpoints/BreakpointProvider.js +11 -8
  104. package/dist-es/breakpoints/BreakpointProvider.js.map +1 -1
  105. package/dist-es/button/useButton.js +3 -3
  106. package/dist-es/button/useButton.js.map +1 -1
  107. package/dist-es/checkbox/Checkbox.css.js +1 -1
  108. package/dist-es/checkbox/CheckboxIcon.css.js +1 -1
  109. package/dist-es/collapsible/Collapsible.js +50 -0
  110. package/dist-es/collapsible/Collapsible.js.map +1 -0
  111. package/dist-es/collapsible/CollapsibleContext.js +26 -0
  112. package/dist-es/collapsible/CollapsibleContext.js.map +1 -0
  113. package/dist-es/collapsible/CollapsiblePanel.css.js +4 -0
  114. package/dist-es/collapsible/CollapsiblePanel.css.js.map +1 -0
  115. package/dist-es/collapsible/CollapsiblePanel.js +44 -0
  116. package/dist-es/collapsible/CollapsiblePanel.js.map +1 -0
  117. package/dist-es/collapsible/CollapsibleTrigger.js +38 -0
  118. package/dist-es/collapsible/CollapsibleTrigger.js.map +1 -0
  119. package/dist-es/dialog/Dialog.js +1 -1
  120. package/dist-es/dialog/Dialog.js.map +1 -1
  121. package/dist-es/dialog/DialogContent.css.js +1 -1
  122. package/dist-es/dialog/DialogHeader.css.js +1 -1
  123. package/dist-es/divider/Divider.js.map +1 -1
  124. package/dist-es/index.js +10 -0
  125. package/dist-es/index.js.map +1 -1
  126. package/dist-es/input/Input.css.js +1 -1
  127. package/dist-es/interactable-card/InteractableCard.js +29 -26
  128. package/dist-es/interactable-card/InteractableCard.js.map +1 -1
  129. package/dist-es/interactable-card/InteractableCardGroup.js +3 -3
  130. package/dist-es/interactable-card/InteractableCardGroup.js.map +1 -1
  131. package/dist-es/multiline-input/MultilineInput.css.js +1 -1
  132. package/dist-es/multiline-input/MultilineInput.js.map +1 -1
  133. package/dist-es/navigation-item/ExpansionIcon.js.map +1 -1
  134. package/dist-es/pagination/PageButton.css.js +1 -1
  135. package/dist-es/pill/Pill.js +1 -1
  136. package/dist-es/pill/Pill.js.map +1 -1
  137. package/dist-es/pill-input/PillInput.css.js +1 -1
  138. package/dist-es/pill-input/useTruncatePills.js +2 -1
  139. package/dist-es/pill-input/useTruncatePills.js.map +1 -1
  140. package/dist-es/radio-button/RadioButton.css.js +1 -1
  141. package/dist-es/radio-button/RadioButtonIcon.css.js +1 -1
  142. package/dist-es/salt-provider/SaltProvider.js +2 -2
  143. package/dist-es/salt-provider/SaltProvider.js.map +1 -1
  144. package/dist-es/spinner/Spinner.js +3 -4
  145. package/dist-es/spinner/Spinner.js.map +1 -1
  146. package/dist-es/stepper/Step.js +1 -1
  147. package/dist-es/stepper/Step.js.map +1 -1
  148. package/dist-es/stepper/internal/StepText.css.js +1 -1
  149. package/dist-es/stepper/internal/StepText.js +0 -1
  150. package/dist-es/stepper/internal/StepText.js.map +1 -1
  151. package/dist-es/switch/Switch.js.map +1 -1
  152. package/dist-es/text/Text.css.js +1 -1
  153. package/dist-es/toggle-button-group/ToggleButtonGroup.js +3 -3
  154. package/dist-es/toggle-button-group/ToggleButtonGroup.js.map +1 -1
  155. package/dist-es/tooltip/Tooltip.js +1 -1
  156. package/dist-es/tooltip/Tooltip.js.map +1 -1
  157. package/dist-es/tooltip/useTooltip.js +1 -1
  158. package/dist-es/tooltip/useTooltip.js.map +1 -1
  159. package/dist-es/utils/mergeProps.js +2 -2
  160. package/dist-es/utils/mergeProps.js.map +1 -1
  161. package/dist-es/utils/useControlled.js +1 -1
  162. package/dist-es/utils/useControlled.js.map +1 -1
  163. package/dist-es/utils/useFloatingUI/useFloatingUI.js +2 -2
  164. package/dist-es/utils/useFloatingUI/useFloatingUI.js.map +1 -1
  165. package/dist-es/utils/useIsFocusVisible.js +1 -1
  166. package/dist-es/utils/useIsFocusVisible.js.map +1 -1
  167. package/dist-es/utils/usePreventScroll.js.map +1 -1
  168. package/dist-es/utils/usePrevious.js.map +1 -1
  169. package/dist-es/vertical-navigation/SubMenuContext.js +35 -0
  170. package/dist-es/vertical-navigation/SubMenuContext.js.map +1 -0
  171. package/dist-es/vertical-navigation/VerticalNavigation.css.js +4 -0
  172. package/dist-es/vertical-navigation/VerticalNavigation.css.js.map +1 -0
  173. package/dist-es/vertical-navigation/VerticalNavigation.js +36 -0
  174. package/dist-es/vertical-navigation/VerticalNavigation.js.map +1 -0
  175. package/dist-es/vertical-navigation/VerticalNavigationItem.js +50 -0
  176. package/dist-es/vertical-navigation/VerticalNavigationItem.js.map +1 -0
  177. package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js +4 -0
  178. package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js.map +1 -0
  179. package/dist-es/vertical-navigation/VerticalNavigationItemContent.js +86 -0
  180. package/dist-es/vertical-navigation/VerticalNavigationItemContent.js.map +1 -0
  181. package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js +33 -0
  182. package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +1 -0
  183. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js +4 -0
  184. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js.map +1 -0
  185. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js +26 -0
  186. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js.map +1 -0
  187. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js +4 -0
  188. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +1 -0
  189. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js +72 -0
  190. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js.map +1 -0
  191. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js +4 -0
  192. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js.map +1 -0
  193. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js +37 -0
  194. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js.map +1 -0
  195. package/dist-types/collapsible/Collapsible.d.ts +16 -0
  196. package/dist-types/collapsible/CollapsibleContext.d.ts +9 -0
  197. package/dist-types/collapsible/CollapsiblePanel.d.ts +4 -0
  198. package/dist-types/collapsible/CollapsibleTrigger.d.ts +5 -0
  199. package/dist-types/collapsible/index.d.ts +3 -0
  200. package/dist-types/index.d.ts +2 -0
  201. package/dist-types/vertical-navigation/SubMenuContext.d.ts +14 -0
  202. package/dist-types/vertical-navigation/VerticalNavigation.d.ts +8 -0
  203. package/dist-types/vertical-navigation/VerticalNavigationItem.d.ts +12 -0
  204. package/dist-types/vertical-navigation/VerticalNavigationItemContent.d.ts +4 -0
  205. package/dist-types/vertical-navigation/VerticalNavigationItemExpansionIcon.d.ts +2 -0
  206. package/dist-types/vertical-navigation/VerticalNavigationItemLabel.d.ts +4 -0
  207. package/dist-types/vertical-navigation/VerticalNavigationItemTrigger.d.ts +6 -0
  208. package/dist-types/vertical-navigation/VerticalNavigationSubMenu.d.ts +4 -0
  209. package/dist-types/vertical-navigation/index.d.ts +7 -0
  210. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,56 @@
1
1
  # @salt-ds/core
2
2
 
3
+ ## 1.48.0
4
+
5
+ ### Minor Changes
6
+
7
+ - f1dc9fc: Added `VerticalNavigation` and related components.
8
+
9
+ `VerticalNavigation` has been introduced to replace the existing `NavigationItem` component for vertical navigation. The new component provides a more structured and flexible way to create vertical navigation. For now you can continue to use the `NavigationItem` component, but we recommend migrating to the new `VerticalNavigation` component as the `NavigationItem` component will be deprecated in a future release and removed in the future major release.
10
+
11
+ ```tsx
12
+ <VerticalNavigation aria-label="Basic sidebar" appearance="indicator">
13
+ <VerticalNavigationItem active>
14
+ <VerticalNavigationItemContent>
15
+ <VerticalNavigationItemTrigger>
16
+ <VerticalNavigationItemLabel>Item 1</VerticalNavigationItemLabel>
17
+ </VerticalNavigationItemTrigger>
18
+ </VerticalNavigationItemContent>
19
+ </VerticalNavigationItem>
20
+ </VerticalNavigation>
21
+ ```
22
+
23
+ - f1dc9fc: Added `Collapsible` and related components.
24
+
25
+ `Collapsible` enables content to be either collapsed (hidden) or expanded (visible). It has two elements: a trigger and a panel whose visibility is controlled by the button.
26
+
27
+ ```tsx
28
+ <Collapsible>
29
+ <CollapsibleTrigger>
30
+ <Button>Click</Button>
31
+ </CollapsibleTrigger>
32
+ <CollapsiblePanel>
33
+ <p>Content</p>
34
+ </CollapsiblePanel>
35
+ </Collapsible>
36
+ ```
37
+
38
+ ### Patch Changes
39
+
40
+ - 9560539: Fixed foreground color not being applied explicitly to Banner.
41
+
42
+ ## 1.47.5
43
+
44
+ ### Patch Changes
45
+
46
+ - 846d975: Fixed Pagination active border color.
47
+ - 8538730: Removed text selection background color override.
48
+ - 8261887: Fixed Tooltip showing when content is null.
49
+ - e6445dc: Fixed Stepper using incorrect font styles in steps.
50
+ - ff646e2: Fixed Dialog having an unnecessary scrollbar.
51
+ - 9a25824: Updated `DialogHeader`'s responsive behaviour to meet WCAG 2.1 Reflow success criterion.
52
+ - 64ef723: Updated read-only style for RadioButton and Checkbox to meet color contrast requirements.
53
+
3
54
  ## 1.47.4
4
55
 
5
56
  ### Patch Changes
package/css/salt-core.css CHANGED
@@ -299,6 +299,7 @@
299
299
  font-size: var(--salt-text-fontSize);
300
300
  font-weight: var(--salt-text-fontWeight);
301
301
  line-height: var(--salt-text-lineHeight);
302
+ color: var(--salt-content-primary-foreground);
302
303
  }
303
304
  .saltBanner-icon.saltIcon {
304
305
  min-height: var(--salt-size-base);
@@ -860,7 +861,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
860
861
  box-sizing: border-box;
861
862
  }
862
863
  .saltCheckbox-input:focus-visible + .saltCheckboxIcon {
863
- outline-offset: var(--salt-focused-outlineOffset);
864
+ outline-offset: var(--salt-spacing-fixed-100);
864
865
  outline: var(--saltCheckbox-outline, var(--salt-focused-outline));
865
866
  border-color: var(--salt-selectable-borderColor-hover);
866
867
  color: var(--salt-selectable-foreground-hover);
@@ -983,8 +984,10 @@ a:focus .saltCard-interactable.saltCard-disabled {
983
984
  outline-color: var(--salt-status-warning-foreground-decorative);
984
985
  }
985
986
  .saltCheckboxIcon-readOnly,
986
- .saltCheckbox:hover .saltCheckboxIcon-readOnly {
987
+ .saltCheckbox:hover .saltCheckboxIcon-readOnly,
988
+ .saltCheckbox-input:focus-visible + .saltCheckboxIcon-readOnly {
987
989
  border-color: var(--salt-selectable-borderColor-readonly);
990
+ border-style: var(--salt-borderStyle-dashed);
988
991
  color: var(--salt-content-primary-foreground);
989
992
  }
990
993
  .saltCheckboxIcon > svg {
@@ -992,6 +995,28 @@ a:focus .saltCard-interactable.saltCard-disabled {
992
995
  transform: scale(1.01);
993
996
  }
994
997
 
998
+ /* src/collapsible/CollapsiblePanel.css */
999
+ .saltCollapsiblePanel {
1000
+ display: grid;
1001
+ transition:
1002
+ grid-template-rows var(--salt-duration-perceptible) ease-in-out,
1003
+ opacity var(--salt-duration-perceptible) ease-in-out,
1004
+ visibility var(--salt-duration-perceptible) ease-in-out;
1005
+ }
1006
+ .saltCollapsiblePanel[aria-hidden=true] {
1007
+ grid-template-rows: 0fr;
1008
+ opacity: 0;
1009
+ visibility: hidden;
1010
+ }
1011
+ .saltCollapsiblePanel {
1012
+ grid-template-rows: 1fr;
1013
+ opacity: 1;
1014
+ visibility: visible;
1015
+ }
1016
+ .saltCollapsiblePanel-inner {
1017
+ overflow: hidden;
1018
+ }
1019
+
995
1020
  /* src/combo-box/ComboBox.css */
996
1021
  .saltComboBox-focused {
997
1022
  outline: var(--saltPillInput-outline, var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--pillInput-outlineColor));
@@ -1124,6 +1149,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
1124
1149
  flex: 1 1 auto;
1125
1150
  position: relative;
1126
1151
  display: flex;
1152
+ box-sizing: border-box;
1127
1153
  }
1128
1154
  .saltDialogContent-inner {
1129
1155
  overflow-y: auto;
@@ -1131,6 +1157,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
1131
1157
  border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) transparent;
1132
1158
  max-height: inherit;
1133
1159
  flex: 1;
1160
+ box-sizing: border-box;
1134
1161
  }
1135
1162
  .saltDialogContent-overflow {
1136
1163
  padding-right: var(--salt-spacing-100);
@@ -1141,6 +1168,11 @@ a:focus .saltCard-interactable.saltCard-disabled {
1141
1168
  .saltDialogContent-scrollBottom.saltDialogContent-inner {
1142
1169
  border-bottom-color: var(--salt-separable-tertiary-borderColor);
1143
1170
  }
1171
+ @supports selector(:has(*)) {
1172
+ .saltDialogContent:has(.saltDialogContent-overflow) {
1173
+ min-height: calc(var(--salt-text-lineHeight) * 4);
1174
+ }
1175
+ }
1144
1176
 
1145
1177
  /* src/dialog/DialogHeader.css */
1146
1178
  .saltDialogHeader {
@@ -1163,6 +1195,8 @@ a:focus .saltCard-interactable.saltCard-disabled {
1163
1195
  gap: var(--salt-spacing-50);
1164
1196
  padding-top: calc((var(--salt-size-base) - var(--salt-text-h2-lineHeight)) / 2);
1165
1197
  align-items: flex-start;
1198
+ min-width: 0;
1199
+ word-break: break-word;
1166
1200
  }
1167
1201
  .saltDialogHeader-header > .saltText {
1168
1202
  margin: 0;
@@ -1922,9 +1956,6 @@ a:focus .saltCard-interactable.saltCard-disabled {
1922
1956
  .saltInput-input:focus {
1923
1957
  outline: none;
1924
1958
  }
1925
- .saltInput-input::selection {
1926
- background: var(--salt-content-foreground-highlight);
1927
- }
1928
1959
  .saltInput-input::placeholder {
1929
1960
  color: var(--salt-content-secondary-foreground);
1930
1961
  font-weight: var(--salt-text-fontWeight-small);
@@ -2565,9 +2596,6 @@ a:focus .saltCard-interactable.saltCard-disabled {
2565
2596
  .saltMultilineInput-textarea:focus {
2566
2597
  outline: none;
2567
2598
  }
2568
- .saltMultilineInput-textarea::selection {
2569
- background: var(--salt-content-foreground-highlight);
2570
- }
2571
2599
  .saltMultilineInput-disabled .saltMultilineInput-textarea::selection {
2572
2600
  background: none;
2573
2601
  }
@@ -2903,7 +2931,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
2903
2931
  line-height: var(--salt-text-lineHeight);
2904
2932
  letter-spacing: var(--salt-text-letterSpacing);
2905
2933
  cursor: var(--salt-cursor-hover);
2906
- border-radius: var(--salt-palette-corner-weak, 0);
2934
+ border-radius: var(--salt-palette-corner-weak);
2907
2935
  }
2908
2936
  .saltPageButton:hover,
2909
2937
  .saltPageButton:focus-visible {
@@ -2921,7 +2949,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
2921
2949
  cursor: var(--salt-cursor-readonly);
2922
2950
  }
2923
2951
  .saltPageButton[aria-current=page] {
2924
- border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor);
2952
+ border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor-selected);
2925
2953
  background: var(--salt-selectable-background-selected);
2926
2954
  }
2927
2955
  .saltPageButton-fixed {
@@ -3318,9 +3346,6 @@ a:focus .saltCard-interactable.saltCard-disabled {
3318
3346
  .saltPillInput-input:focus {
3319
3347
  outline: none;
3320
3348
  }
3321
- .saltPillInput-input::selection {
3322
- background: var(--salt-content-foreground-highlight);
3323
- }
3324
3349
  .saltPillInput-disabled .saltPillInput-input::selection {
3325
3350
  background: none;
3326
3351
  }
@@ -3365,7 +3390,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
3365
3390
  }
3366
3391
  .saltRadioButton-input:focus-visible + .saltRadioButtonIcon {
3367
3392
  outline: var(--saltRadioButton-outline, var(--salt-focused-outline));
3368
- outline-offset: var(--salt-focused-outlineOffset);
3393
+ outline-offset: var(--salt-spacing-fixed-100);
3369
3394
  border-color: var(--salt-selectable-borderColor-hover);
3370
3395
  color: var(--salt-selectable-foreground-hover);
3371
3396
  clip-path: unset;
@@ -3463,8 +3488,10 @@ a:focus .saltCard-interactable.saltCard-disabled {
3463
3488
  outline-color: var(--salt-status-warning-foreground-decorative);
3464
3489
  }
3465
3490
  .saltRadioButtonIcon-readOnly,
3466
- .saltRadioButton:hover .saltRadioButtonIcon-readOnly {
3491
+ .saltRadioButton:hover .saltRadioButtonIcon-readOnly,
3492
+ .saltRadioButton-input:focus-visible + .saltRadioButtonIcon-readOnly {
3467
3493
  border-color: var(--salt-selectable-borderColor-readonly);
3494
+ border-style: var(--salt-borderStyle-dashed);
3468
3495
  color: var(--salt-content-primary-foreground);
3469
3496
  }
3470
3497
  .saltRadioButtonIcon > svg {
@@ -4073,9 +4100,6 @@ a:focus .saltCard-interactable.saltCard-disabled {
4073
4100
  font-weight: var(--saltText-fontWeight, var(--salt-text-fontWeight));
4074
4101
  letter-spacing: var(--salt-text-letterSpacing);
4075
4102
  }
4076
- .saltText::selection {
4077
- background: var(--saltText-highlight, var(--salt-content-foreground-highlight));
4078
- }
4079
4103
  .saltText-lineClamp {
4080
4104
  display: -webkit-box;
4081
4105
  -webkit-box-orient: vertical;
@@ -4733,6 +4757,153 @@ label.saltText small,
4733
4757
  --tooltip-status-borderColor: var(--salt-status-success-borderColor);
4734
4758
  }
4735
4759
 
4760
+ /* src/vertical-navigation/VerticalNavigation.css */
4761
+ .saltVerticalNavigation ol {
4762
+ display: flex;
4763
+ flex-direction: column;
4764
+ gap: var(--salt-spacing-fixed-100);
4765
+ list-style: none;
4766
+ padding: 0;
4767
+ margin: 0;
4768
+ position: relative;
4769
+ }
4770
+ .saltVerticalNavigationSubMenu > .saltDivider-horizontal,
4771
+ .saltVerticalNavigationItem > .saltDivider-horizontal,
4772
+ .saltVerticalNavigation ol > .saltDivider-horizontal {
4773
+ margin-bottom: calc(var(--salt-size-fixed-100) * -1);
4774
+ }
4775
+ .saltVerticalNavigation [data-has-direct-icons=false] .saltCollapsiblePanel-inner {
4776
+ margin-bottom: calc(var(--salt-size-fixed-100) * -1);
4777
+ }
4778
+ .saltVerticalNavigation [data-has-direct-icons=false] .saltCollapsiblePanel-inner .saltVerticalNavigationSubMenu {
4779
+ border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-tertiary-borderColor);
4780
+ }
4781
+ .saltVerticalNavigation .saltCollapsiblePanel-inner .saltCollapsiblePanel-inner,
4782
+ .saltVerticalNavigation .saltCollapsiblePanel[aria-hidden=true] .saltCollapsiblePanel-inner {
4783
+ margin-bottom: 0;
4784
+ }
4785
+ .saltVerticalNavigation .saltCollapsiblePanel-inner .saltCollapsiblePanel-inner .saltVerticalNavigationSubMenu,
4786
+ .saltVerticalNavigation .saltCollapsiblePanel[aria-hidden=true] .saltCollapsiblePanel-inner .saltVerticalNavigationSubMenu {
4787
+ border-bottom: none;
4788
+ }
4789
+
4790
+ /* src/vertical-navigation/VerticalNavigationItemContent.css */
4791
+ .saltVerticalNavigationItemContent {
4792
+ --verticalNavigationItem-iconPadding: calc(var(--saltVerticalNavigationItem-iconPaddingMultiplier, 0) * (var(--salt-size-icon) + var(--salt-spacing-100)));
4793
+ --verticalNavigationItem-depthPadding: calc(var(--salt-spacing-100) * max(0, calc(var(--verticalNavigationItem-depth, 0) - 1)));
4794
+ }
4795
+ .saltVerticalNavigation-indicator .saltVerticalNavigationItemContent {
4796
+ --verticalNavigationItem-paddingLeft: calc(var(--salt-spacing-150) + var(--salt-size-indicator) + var(--verticalNavigationItem-depthPadding) + var(--verticalNavigationItem-iconPadding));
4797
+ --verticalNavigationItem-paddingBlock: var(--salt-spacing-50);
4798
+ }
4799
+ .saltVerticalNavigation-bordered .saltVerticalNavigationItemContent {
4800
+ --verticalNavigationItem-paddingLeft: calc(var(--salt-spacing-100) + var(--verticalNavigationItem-depthPadding) + var(--verticalNavigationItem-iconPadding));
4801
+ --verticalNavigationItem-paddingBlock: calc(var(--salt-spacing-50) - var(--salt-size-fixed-100));
4802
+ }
4803
+ .saltVerticalNavigationItemContent {
4804
+ display: flex;
4805
+ flex-direction: row;
4806
+ gap: var(--salt-spacing-100);
4807
+ appearance: none;
4808
+ -webkit-appearance: none;
4809
+ min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));
4810
+ min-width: 4em;
4811
+ padding: var(--verticalNavigationItem-paddingBlock) var(--salt-spacing-100) var(--verticalNavigationItem-paddingBlock) var(--verticalNavigationItem-paddingLeft);
4812
+ position: relative;
4813
+ flex-shrink: 0;
4814
+ box-sizing: border-box;
4815
+ border-radius: var(--salt-palette-corner-weak, 0);
4816
+ overflow: hidden;
4817
+ cursor: var(--salt-cursor-hover);
4818
+ color: var(--salt-content-primary-foreground);
4819
+ font-weight: var(--salt-text-h4-fontWeight);
4820
+ font-family: var(--salt-text-h4-fontFamily);
4821
+ text-align: var(--salt-text-textAlign);
4822
+ letter-spacing: var(--salt-text-letterSpacing);
4823
+ line-height: var(--salt-text-h4-lineHeight);
4824
+ font-size: var(--salt-text-h4-fontSize);
4825
+ }
4826
+ .saltVerticalNavigation-indicator .saltVerticalNavigationItemContent-active,
4827
+ .saltVerticalNavigation-indicator .saltVerticalNavigationItemContent-active:hover {
4828
+ background: var(--salt-navigable-accent-background-active);
4829
+ }
4830
+ .saltVerticalNavigation-indicator .saltVerticalNavigationItemContent::before {
4831
+ left: var(--salt-spacing-50);
4832
+ content: "";
4833
+ position: absolute;
4834
+ height: var(--salt-size-base);
4835
+ border-radius: var(--salt-palette-corner-strongest);
4836
+ width: var(--salt-size-indicator);
4837
+ }
4838
+ .saltVerticalNavigation-indicator .saltVerticalNavigationItemContent-active::before {
4839
+ background: var(--salt-navigable-accent-indicator-active);
4840
+ }
4841
+ .saltVerticalNavigation-bordered .saltVerticalNavigationItemContent {
4842
+ border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) transparent;
4843
+ }
4844
+ .saltVerticalNavigation-bordered .saltVerticalNavigationItemContent-active,
4845
+ .saltVerticalNavigation-bordered .saltVerticalNavigationItemContent-active:hover {
4846
+ background: var(--salt-navigable-accent-background-active);
4847
+ border-color: var(--salt-navigable-accent-borderColor-active);
4848
+ }
4849
+ .saltVerticalNavigationItemContent .saltIcon,
4850
+ .saltVerticalNavigationItemContent .saltBadge {
4851
+ min-height: var(--salt-text-lineHeight);
4852
+ }
4853
+ .saltVerticalNavigationItemContent-focused {
4854
+ outline: var(--salt-focused-outline);
4855
+ outline-offset: calc(var(--salt-size-fixed-100) * -2);
4856
+ z-index: 1;
4857
+ }
4858
+ .saltVerticalNavigationItemContent:hover {
4859
+ background: var(--salt-overlayable-background-hover);
4860
+ }
4861
+ .saltVerticalNavigation .saltVerticalNavigationItemContent-active,
4862
+ .saltVerticalNavigation .saltVerticalNavigationSubMenu .saltVerticalNavigationItemContent-active {
4863
+ font-weight: var(--salt-text-h4-fontWeight);
4864
+ }
4865
+ @supports selector(:has(*)) {
4866
+ .saltVerticalNavigationItemContent-active:hover:has(.saltVerticalNavigationItemTrigger[aria-controls]) {
4867
+ background: linear-gradient(var(--salt-overlayable-background-hover), var(--salt-overlayable-background-hover)) var(--salt-navigable-accent-background-active);
4868
+ }
4869
+ }
4870
+
4871
+ /* src/vertical-navigation/VerticalNavigationItemLabel.css */
4872
+ .saltVerticalNavigationItemLabel {
4873
+ flex: 1;
4874
+ }
4875
+
4876
+ /* src/vertical-navigation/VerticalNavigationItemTrigger.css */
4877
+ .saltVerticalNavigationItemTrigger {
4878
+ all: unset;
4879
+ padding: var(--salt-spacing-75) 0;
4880
+ display: flex;
4881
+ gap: var(--salt-spacing-100);
4882
+ width: 100%;
4883
+ }
4884
+ .saltVerticalNavigationItemTrigger::before {
4885
+ content: "";
4886
+ display: block;
4887
+ width: 100%;
4888
+ position: absolute;
4889
+ height: 100%;
4890
+ left: 0;
4891
+ top: 0;
4892
+ }
4893
+
4894
+ /* src/vertical-navigation/VerticalNavigationSubMenu.css */
4895
+ .saltVerticalNavigationSubMenu {
4896
+ display: flex;
4897
+ flex-direction: column;
4898
+ gap: var(--salt-spacing-fixed-100);
4899
+ list-style: none;
4900
+ padding: var(--salt-spacing-fixed-100) 0 0;
4901
+ margin: 0;
4902
+ }
4903
+ .saltVerticalNavigationSubMenu .saltVerticalNavigationItemContent {
4904
+ font-weight: var(--salt-text-h4-fontWeight-small);
4905
+ }
4906
+
4736
4907
  /* src/progress/CircularProgress/CircularProgress.css */
4737
4908
  .saltCircularProgress {
4738
4909
  color: var(--salt-content-primary-foreground);
@@ -5247,6 +5418,11 @@ label.saltText small,
5247
5418
  /* src/stepper/internal/StepText.css */
5248
5419
  .saltStepText-label {
5249
5420
  grid-area: label;
5421
+ font-size: var(--salt-text-fontSize);
5422
+ line-height: var(--salt-text-lineHeight);
5423
+ font-family: var(--salt-text-fontFamily);
5424
+ color: var(--salt-content-primary-foreground);
5425
+ font-weight: var(--salt-text-fontWeight);
5250
5426
  }
5251
5427
  .saltStepper-horizontal .saltStepText-label {
5252
5428
  margin-top: var(--salt-spacing-50);
@@ -5254,10 +5430,7 @@ label.saltText small,
5254
5430
  .saltStepper-vertical .saltStepText-label {
5255
5431
  padding-top: calc((var(--salt-size-base) - var(--salt-text-label-lineHeight)) / 2);
5256
5432
  padding-bottom: calc((var(--salt-size-base) - var(--salt-text-label-lineHeight)) / 2);
5257
- padding-left: calc((var(--step-depth)) * var(--salt-spacing-100));
5258
- }
5259
- .saltStep-depth-0 > .saltText.saltStepText-label {
5260
- font-weight: var(--salt-text-fontWeight-strong);
5433
+ padding-left: calc(var(--step-depth) * var(--salt-spacing-100));
5261
5434
  }
5262
5435
  .saltStep-depth-0 > .saltText.saltStepText-label {
5263
5436
  font-weight: var(--salt-text-fontWeight-strong);
@@ -5265,10 +5438,15 @@ label.saltText small,
5265
5438
  .saltStepText-description {
5266
5439
  grid-area: description;
5267
5440
  color: var(--salt-content-secondary-foreground);
5441
+ font-size: var(--salt-text-label-fontSize);
5442
+ font-weight: var(--salt-text-label-fontWeight-strong);
5443
+ font-family: var(--salt-text-label-fontFamily);
5444
+ line-height: var(--salt-text-label-lineHeight);
5445
+ letter-spacing: var(--salt-text-letterSpacing);
5268
5446
  }
5269
5447
  .saltStepper-vertical .saltStepText-description {
5270
5448
  padding-bottom: var(--salt-spacing-300);
5271
- padding-left: calc((var(--step-depth)) * var(--salt-spacing-100));
5449
+ padding-left: calc(var(--step-depth) * var(--salt-spacing-100));
5272
5450
  }
5273
5451
  .saltStep-status-warning > .saltStepText-description {
5274
5452
  color: var(--salt-status-warning-foreground-informative);
@@ -5277,4 +5455,4 @@ label.saltText small,
5277
5455
  color: var(--salt-status-error-foreground-informative);
5278
5456
  }
5279
5457
 
5280
- /* src/547b2efd-4e8e-42aa-9020-205b64d0039a.css */
5458
+ /* src/a3c9275d-f674-46ac-ba4b-1442197b5a6e.css */
@@ -1 +1 @@
1
- {"version":3,"file":"AriaAnnounce.js","sources":["../src/aria-announcer/AriaAnnounce.tsx"],"sourcesContent":["import { type ComponentType, useEffect } from \"react\";\n\nimport { useAriaAnnouncer } from \"./useAriaAnnouncer\";\n\nexport interface AriaAnnounceProps {\n /**\n * String which will be announced by screen readers on change\n */\n announcement?: string;\n}\n\nexport const AriaAnnounce: ComponentType<AriaAnnounceProps> = ({\n announcement,\n}) => {\n const { announce } = useAriaAnnouncer();\n\n useEffect(() => {\n if (announcement) {\n announce(announcement);\n }\n }, [announce, announcement]);\n\n // If we return null here, react-docgen wouldn't be able to locate the component\n return <></>;\n};\n"],"names":["useAriaAnnouncer","useEffect","jsx","Fragment"],"mappings":";;;;;;AAWO,MAAM,eAAiD,CAAC;AAAA,EAC7D;AACF,CAAM,KAAA;AACJ,EAAM,MAAA,EAAE,QAAS,EAAA,GAAIA,iCAAiB,EAAA;AAEtC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAc,EAAA;AAChB,MAAA,QAAA,CAAS,YAAY,CAAA;AAAA;AACvB,GACC,EAAA,CAAC,QAAU,EAAA,YAAY,CAAC,CAAA;AAG3B,EAAA,uBAASC,cAAA,CAAAC,mBAAA,EAAA,EAAA,CAAA;AACX;;;;"}
1
+ {"version":3,"file":"AriaAnnounce.js","sources":["../src/aria-announcer/AriaAnnounce.tsx"],"sourcesContent":["import { type ComponentType, useEffect } from \"react\";\n\nimport { useAriaAnnouncer } from \"./useAriaAnnouncer\";\n\nexport interface AriaAnnounceProps {\n /**\n * String which will be announced by screen readers on change\n */\n announcement?: string;\n}\n\nexport const AriaAnnounce: ComponentType<AriaAnnounceProps> = ({\n announcement,\n}) => {\n const { announce } = useAriaAnnouncer();\n\n useEffect(() => {\n if (announcement) {\n announce(announcement);\n }\n }, [announce, announcement]);\n\n // biome-ignore lint/complexity/noUselessFragments: If we return null here, react-docgen wouldn't be able to locate the component.\n return <></>;\n};\n"],"names":["useAriaAnnouncer","useEffect","jsx","Fragment"],"mappings":";;;;;;AAWO,MAAM,eAAiD,CAAC;AAAA,EAC7D;AACF,CAAM,KAAA;AACJ,EAAM,MAAA,EAAE,QAAS,EAAA,GAAIA,iCAAiB,EAAA;AAEtC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAc,EAAA;AAChB,MAAA,QAAA,CAAS,YAAY,CAAA;AAAA;AACvB,GACC,EAAA,CAAC,QAAU,EAAA,YAAY,CAAC,CAAA;AAG3B,EAAA,uBAASC,cAAA,CAAAC,mBAAA,EAAA,EAAA,CAAA;AACX;;;;"}
@@ -50,6 +50,10 @@ const Avatar = React.forwardRef(function Avatar2({
50
50
  children = childrenProp;
51
51
  }
52
52
  const avatarInitials = nameToInitials(name);
53
+ const ariaProps = name ? {
54
+ role: "img",
55
+ "aria-label": name
56
+ } : {};
53
57
  return /* @__PURE__ */ jsxRuntime.jsx(
54
58
  "div",
55
59
  {
@@ -63,8 +67,7 @@ const Avatar = React.forwardRef(function Avatar2({
63
67
  },
64
68
  className
65
69
  ),
66
- role: name ? "img" : void 0,
67
- "aria-label": name,
70
+ ...ariaProps,
68
71
  ...rest,
69
72
  children: children || avatarInitials || fallbackIcon
70
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","sources":["../src/avatar/Avatar.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { useIcon } from \"../semantic-icon-provider\";\nimport { makePrefixer } from \"../utils\";\nimport avatarCss from \"./Avatar.css\";\nimport { useAvatarImage } from \"./useAvatarImage\";\n\nexport type NameToInitials = (name?: string) => string;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The name that Avatar represents.\n */\n name?: string;\n /**\n * Defines the function that gets initials. Default is capital first letter of each separate word in name.\n * If a function is not passed or returns undefined, Avatar will default to Icon.\n */\n nameToInitials?: NameToInitials;\n /**\n * Image src of Avatar.\n */\n src?: string;\n /**\n * Multiplier for the base avatar.\n */\n size?: number;\n /**\n * Icon to be used as a default item. Defaults to `UserIcon`.\n */\n fallbackIcon?: ReactNode;\n /**\n * Changes Avatar's color.\n */\n color?:\n | \"accent\"\n | \"category-1\"\n | \"category-2\"\n | \"category-3\"\n | \"category-4\"\n | \"category-5\"\n | \"category-6\"\n | \"category-7\"\n | \"category-8\"\n | \"category-9\"\n | \"category-10\"\n | \"category-11\"\n | \"category-12\"\n | \"category-13\"\n | \"category-14\"\n | \"category-15\"\n | \"category-16\"\n | \"category-17\"\n | \"category-18\"\n | \"category-19\"\n | \"category-20\";\n}\n\nconst withBaseName = makePrefixer(\"saltAvatar\");\nconst DEFAULT_AVATAR_SIZE = 2; // medium\n\nconst defaultNameToInitials = (name?: string) =>\n name\n ?.split(\" \")\n .slice(0, 2)\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase();\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n className,\n children: childrenProp,\n color = \"accent\",\n name,\n nameToInitials = defaultNameToInitials,\n src,\n size = DEFAULT_AVATAR_SIZE,\n style: styleProp,\n fallbackIcon: fallbackIconProp,\n ...rest\n },\n ref,\n) {\n const targetWindow = useWindow();\n const { UserIcon } = useIcon();\n\n const fallbackIcon =\n fallbackIconProp === undefined ? (\n <UserIcon aria-hidden />\n ) : (\n fallbackIconProp\n );\n\n useComponentCssInjection({\n testId: \"salt-avatar\",\n css: avatarCss,\n window: targetWindow,\n });\n\n let children: ReactNode;\n\n const style = {\n ...styleProp,\n \"--saltAvatar-size-multiplier\": `${size}`,\n };\n\n const status = useAvatarImage({ src });\n const hasImgNotFailing = status === \"loaded\";\n if (hasImgNotFailing) {\n children = <img alt=\"\" src={src} />;\n } else if (childrenProp != null) {\n children = childrenProp;\n }\n\n const avatarInitials = nameToInitials(name);\n\n return (\n <div\n ref={ref}\n style={style}\n className={clsx(\n withBaseName(),\n withBaseName(color),\n {\n [withBaseName(\"withImage\")]: hasImgNotFailing,\n },\n className,\n )}\n role={name ? \"img\" : undefined}\n aria-label={name}\n {...rest}\n >\n {children || avatarInitials || fallbackIcon}\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","Avatar","useWindow","useIcon","useComponentCssInjection","avatarCss","useAvatarImage","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;;AA4DA,MAAM,YAAA,GAAeA,0BAAa,YAAY,CAAA;AAC9C,MAAM,mBAAsB,GAAA,CAAA;AAE5B,MAAM,wBAAwB,CAAC,IAAA,KAC7B,IACI,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,KAAA,CAAM,KACP,KAAM,CAAA,CAAA,EAAG,CACT,CAAA,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAA,CAAA,CACd,KAAK,EACL,CAAA,CAAA,WAAA,EAAA;AAEQ,MAAA,MAAA,GAASC,gBAAwC,CAAA,SAASC,OACrE,CAAA;AAAA,EACE,SAAA;AAAA,EACA,QAAU,EAAA,YAAA;AAAA,EACV,KAAQ,GAAA,QAAA;AAAA,EACR,IAAA;AAAA,EACA,cAAiB,GAAA,qBAAA;AAAA,EACjB,GAAA;AAAA,EACA,IAAO,GAAA,mBAAA;AAAA,EACP,KAAO,EAAA,SAAA;AAAA,EACP,YAAc,EAAA,gBAAA;AAAA,EACd,GAAG;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAM,MAAA,EAAE,QAAS,EAAA,GAAIC,4BAAQ,EAAA;AAE7B,EAAA,MAAM,eACJ,gBAAqB,KAAA,MAAA,kCAClB,QAAS,EAAA,EAAA,aAAA,EAAW,MAAC,CAEtB,GAAA,gBAAA;AAGJ,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,aAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAI,IAAA,QAAA;AAEJ,EAAA,MAAM,KAAQ,GAAA;AAAA,IACZ,GAAG,SAAA;AAAA,IACH,8BAAA,EAAgC,GAAG,IAAI,CAAA;AAAA,GACzC;AAEA,EAAA,MAAM,MAAS,GAAAC,6BAAA,CAAe,EAAE,GAAA,EAAK,CAAA;AACrC,EAAA,MAAM,mBAAmB,MAAW,KAAA,QAAA;AACpC,EAAA,IAAI,gBAAkB,EAAA;AACpB,IAAA,QAAA,mBAAYC,cAAA,CAAA,KAAA,EAAA,EAAI,GAAI,EAAA,EAAA,EAAG,GAAU,EAAA,CAAA;AAAA,GACnC,MAAA,IAAW,gBAAgB,IAAM,EAAA;AAC/B,IAAW,QAAA,GAAA,YAAA;AAAA;AAGb,EAAM,MAAA,cAAA,GAAiB,eAAe,IAAI,CAAA;AAE1C,EACE,uBAAAA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAW,EAAAC,SAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb,aAAa,KAAK,CAAA;AAAA,QAClB;AAAA,UACE,CAAC,YAAA,CAAa,WAAW,CAAC,GAAG;AAAA,SAC/B;AAAA,QACA;AAAA,OACF;AAAA,MACA,IAAA,EAAM,OAAO,KAAQ,GAAA,MAAA;AAAA,MACrB,YAAY,EAAA,IAAA;AAAA,MACX,GAAG,IAAA;AAAA,MAEH,sBAAY,cAAkB,IAAA;AAAA;AAAA,GACjC;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"Avatar.js","sources":["../src/avatar/Avatar.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { useIcon } from \"../semantic-icon-provider\";\nimport { makePrefixer } from \"../utils\";\nimport avatarCss from \"./Avatar.css\";\nimport { useAvatarImage } from \"./useAvatarImage\";\n\nexport type NameToInitials = (name?: string) => string;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The name that Avatar represents.\n */\n name?: string;\n /**\n * Defines the function that gets initials. Default is capital first letter of each separate word in name.\n * If a function is not passed or returns undefined, Avatar will default to Icon.\n */\n nameToInitials?: NameToInitials;\n /**\n * Image src of Avatar.\n */\n src?: string;\n /**\n * Multiplier for the base avatar.\n */\n size?: number;\n /**\n * Icon to be used as a default item. Defaults to `UserIcon`.\n */\n fallbackIcon?: ReactNode;\n /**\n * Changes Avatar's color.\n */\n color?:\n | \"accent\"\n | \"category-1\"\n | \"category-2\"\n | \"category-3\"\n | \"category-4\"\n | \"category-5\"\n | \"category-6\"\n | \"category-7\"\n | \"category-8\"\n | \"category-9\"\n | \"category-10\"\n | \"category-11\"\n | \"category-12\"\n | \"category-13\"\n | \"category-14\"\n | \"category-15\"\n | \"category-16\"\n | \"category-17\"\n | \"category-18\"\n | \"category-19\"\n | \"category-20\";\n}\n\nconst withBaseName = makePrefixer(\"saltAvatar\");\nconst DEFAULT_AVATAR_SIZE = 2; // medium\n\nconst defaultNameToInitials = (name?: string) =>\n name\n ?.split(\" \")\n .slice(0, 2)\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase();\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n className,\n children: childrenProp,\n color = \"accent\",\n name,\n nameToInitials = defaultNameToInitials,\n src,\n size = DEFAULT_AVATAR_SIZE,\n style: styleProp,\n fallbackIcon: fallbackIconProp,\n ...rest\n },\n ref,\n) {\n const targetWindow = useWindow();\n const { UserIcon } = useIcon();\n\n const fallbackIcon =\n fallbackIconProp === undefined ? (\n <UserIcon aria-hidden />\n ) : (\n fallbackIconProp\n );\n\n useComponentCssInjection({\n testId: \"salt-avatar\",\n css: avatarCss,\n window: targetWindow,\n });\n\n let children: ReactNode;\n\n const style = {\n ...styleProp,\n \"--saltAvatar-size-multiplier\": `${size}`,\n };\n\n const status = useAvatarImage({ src });\n const hasImgNotFailing = status === \"loaded\";\n if (hasImgNotFailing) {\n children = <img alt=\"\" src={src} />;\n } else if (childrenProp != null) {\n children = childrenProp;\n }\n\n const avatarInitials = nameToInitials(name);\n\n const ariaProps = name\n ? {\n role: \"img\",\n \"aria-label\": name,\n }\n : {};\n\n return (\n <div\n ref={ref}\n style={style}\n className={clsx(\n withBaseName(),\n withBaseName(color),\n {\n [withBaseName(\"withImage\")]: hasImgNotFailing,\n },\n className,\n )}\n {...ariaProps}\n {...rest}\n >\n {children || avatarInitials || fallbackIcon}\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","Avatar","useWindow","useIcon","useComponentCssInjection","avatarCss","useAvatarImage","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;;AA4DA,MAAM,YAAA,GAAeA,0BAAa,YAAY,CAAA;AAC9C,MAAM,mBAAsB,GAAA,CAAA;AAE5B,MAAM,wBAAwB,CAAC,IAAA,KAC7B,IACI,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,KAAA,CAAM,KACP,KAAM,CAAA,CAAA,EAAG,CACT,CAAA,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAA,CAAA,CACd,KAAK,EACL,CAAA,CAAA,WAAA,EAAA;AAEQ,MAAA,MAAA,GAASC,gBAAwC,CAAA,SAASC,OACrE,CAAA;AAAA,EACE,SAAA;AAAA,EACA,QAAU,EAAA,YAAA;AAAA,EACV,KAAQ,GAAA,QAAA;AAAA,EACR,IAAA;AAAA,EACA,cAAiB,GAAA,qBAAA;AAAA,EACjB,GAAA;AAAA,EACA,IAAO,GAAA,mBAAA;AAAA,EACP,KAAO,EAAA,SAAA;AAAA,EACP,YAAc,EAAA,gBAAA;AAAA,EACd,GAAG;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAM,MAAA,EAAE,QAAS,EAAA,GAAIC,4BAAQ,EAAA;AAE7B,EAAA,MAAM,eACJ,gBAAqB,KAAA,MAAA,kCAClB,QAAS,EAAA,EAAA,aAAA,EAAW,MAAC,CAEtB,GAAA,gBAAA;AAGJ,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,aAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAI,IAAA,QAAA;AAEJ,EAAA,MAAM,KAAQ,GAAA;AAAA,IACZ,GAAG,SAAA;AAAA,IACH,8BAAA,EAAgC,GAAG,IAAI,CAAA;AAAA,GACzC;AAEA,EAAA,MAAM,MAAS,GAAAC,6BAAA,CAAe,EAAE,GAAA,EAAK,CAAA;AACrC,EAAA,MAAM,mBAAmB,MAAW,KAAA,QAAA;AACpC,EAAA,IAAI,gBAAkB,EAAA;AACpB,IAAA,QAAA,mBAAYC,cAAA,CAAA,KAAA,EAAA,EAAI,GAAI,EAAA,EAAA,EAAG,GAAU,EAAA,CAAA;AAAA,GACnC,MAAA,IAAW,gBAAgB,IAAM,EAAA;AAC/B,IAAW,QAAA,GAAA,YAAA;AAAA;AAGb,EAAM,MAAA,cAAA,GAAiB,eAAe,IAAI,CAAA;AAE1C,EAAA,MAAM,YAAY,IACd,GAAA;AAAA,IACE,IAAM,EAAA,KAAA;AAAA,IACN,YAAc,EAAA;AAAA,MAEhB,EAAC;AAEL,EACE,uBAAAA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAW,EAAAC,SAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb,aAAa,KAAK,CAAA;AAAA,QAClB;AAAA,UACE,CAAC,YAAA,CAAa,WAAW,CAAC,GAAG;AAAA,SAC/B;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,SAAA;AAAA,MACH,GAAG,IAAA;AAAA,MAEH,sBAAY,cAAkB,IAAA;AAAA;AAAA,GACjC;AAEJ,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = "/* Styles applied to root component */\n.saltBanner {\n --banner-background: var(--salt-container-primary-background);\n\n background: var(--saltBanner-background, var(--banner-background));\n border-color: var(--saltBanner-borderColor, var(--banner-borderColor));\n border-width: var(--saltBanner-borderWidth, var(--salt-size-fixed-100));\n border-style: var(--saltBanner-borderStyle, var(--salt-borderStyle-solid));\n border-radius: var(--saltBanner-borderRadius, var(--salt-palette-corner, 0));\n box-sizing: border-box;\n display: inline-flex;\n gap: var(--salt-spacing-75);\n padding: var(--saltBanner-padding, var(--salt-spacing-50) var(--salt-spacing-100));\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n}\n\n/* Styles applied to icon */\n.saltBanner-icon.saltIcon {\n min-height: var(--salt-size-base);\n}\n\n/* Styles applied when state = \"info\" */\n.saltBanner-info {\n --banner-borderColor: var(--salt-status-info-borderColor);\n}\n\n/* Styles applied when state = \"error\" */\n.saltBanner-error {\n --banner-borderColor: var(--salt-status-error-borderColor);\n}\n\n/* Styles applied when state = \"warning\" */\n.saltBanner-warning {\n --banner-borderColor: var(--salt-status-warning-borderColor);\n}\n\n/* Styles applied when state = \"success\" */\n.saltBanner-success {\n --banner-borderColor: var(--salt-status-success-borderColor);\n}\n\n.saltBanner-secondary.saltBanner-info {\n --banner-background: var(--salt-status-info-background);\n}\n\n.saltBanner-secondary.saltBanner-error {\n --banner-background: var(--salt-status-error-background);\n}\n\n.saltBanner-secondary.saltBanner-warning {\n --banner-background: var(--salt-status-warning-background);\n}\n\n.saltBanner-secondary.saltBanner-success {\n --banner-background: var(--salt-status-success-background);\n}\n";
3
+ var css_248z = "/* Styles applied to root component */\n.saltBanner {\n --banner-background: var(--salt-container-primary-background);\n\n background: var(--saltBanner-background, var(--banner-background));\n border-color: var(--saltBanner-borderColor, var(--banner-borderColor));\n border-width: var(--saltBanner-borderWidth, var(--salt-size-fixed-100));\n border-style: var(--saltBanner-borderStyle, var(--salt-borderStyle-solid));\n border-radius: var(--saltBanner-borderRadius, var(--salt-palette-corner, 0));\n box-sizing: border-box;\n display: inline-flex;\n gap: var(--salt-spacing-75);\n padding: var(--saltBanner-padding, var(--salt-spacing-50) var(--salt-spacing-100));\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n color: var(--salt-content-primary-foreground);\n}\n\n/* Styles applied to icon */\n.saltBanner-icon.saltIcon {\n min-height: var(--salt-size-base);\n}\n\n/* Styles applied when state = \"info\" */\n.saltBanner-info {\n --banner-borderColor: var(--salt-status-info-borderColor);\n}\n\n/* Styles applied when state = \"error\" */\n.saltBanner-error {\n --banner-borderColor: var(--salt-status-error-borderColor);\n}\n\n/* Styles applied when state = \"warning\" */\n.saltBanner-warning {\n --banner-borderColor: var(--salt-status-warning-borderColor);\n}\n\n/* Styles applied when state = \"success\" */\n.saltBanner-success {\n --banner-borderColor: var(--salt-status-success-borderColor);\n}\n\n.saltBanner-secondary.saltBanner-info {\n --banner-background: var(--salt-status-info-background);\n}\n\n.saltBanner-secondary.saltBanner-error {\n --banner-background: var(--salt-status-error-background);\n}\n\n.saltBanner-secondary.saltBanner-warning {\n --banner-background: var(--salt-status-warning-background);\n}\n\n.saltBanner-secondary.saltBanner-success {\n --banner-background: var(--salt-status-success-background);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=Banner.css.js.map
@@ -13,14 +13,17 @@ function BreakpointProvider(props) {
13
13
  return /* @__PURE__ */ jsxRuntime.jsx(Context.Provider, { value: { matchedBreakpoints }, children });
14
14
  }
15
15
  function useMatchedBreakpoints(breakpoints) {
16
- const entries = Object.entries(breakpoints).sort(([, a], [, b]) => b - a);
17
- const queries = entries.map(([, value]) => `(min-width: ${value}px)`);
16
+ const entries = React.useMemo(
17
+ () => Object.entries(breakpoints).sort(([, a], [, b]) => b - a),
18
+ [breakpoints]
19
+ );
18
20
  const supportsMatchMedia = typeof window !== "undefined" && typeof window.matchMedia === "function";
19
21
  const [matchedBreakpoints, setMatchedBreakpoints] = React.useState(Object.fromEntries(entries.map(([bp]) => [bp, false])));
20
22
  useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
21
23
  if (!supportsMatchMedia) {
22
24
  return;
23
25
  }
26
+ const queries = entries.map(([, value]) => `(min-width: ${value}px)`);
24
27
  const matchers = queries.map((query, index) => {
25
28
  const mq = window.matchMedia(query);
26
29
  const bp = entries[index][0];
@@ -36,16 +39,16 @@ function useMatchedBreakpoints(breakpoints) {
36
39
  }
37
40
  };
38
41
  });
39
- matchers.forEach(({ mq, handler }) => {
42
+ for (const { mq, handler } of matchers) {
40
43
  handler();
41
44
  mq.addEventListener("change", handler);
42
- });
45
+ }
43
46
  return () => {
44
- matchers.forEach(({ mq, handler }) => {
47
+ for (const { mq, handler } of matchers) {
45
48
  mq.removeEventListener("change", handler);
46
- });
49
+ }
47
50
  };
48
- }, [supportsMatchMedia]);
51
+ }, [supportsMatchMedia, entries]);
49
52
  return Object.keys(matchedBreakpoints).filter(
50
53
  (bp) => matchedBreakpoints[bp]
51
54
  );
@@ -1 +1 @@
1
- {"version":3,"file":"BreakpointProvider.js","sources":["../src/breakpoints/BreakpointProvider.tsx"],"sourcesContent":["import { type ReactNode, useContext, useState } from \"react\";\nimport { createContext } from \"../utils/createContext\";\nimport { useIsomorphicLayoutEffect } from \"../utils/useIsomorphicLayoutEffect\";\nimport type { Breakpoints } from \"./Breakpoints\";\n\ntype Breakpoint = keyof Breakpoints;\n\ninterface BreakpointContext {\n matchedBreakpoints: Breakpoint[];\n}\n\nconst Context = createContext<BreakpointContext>(\"BreakpointContext\", {\n matchedBreakpoints: [],\n});\n\ninterface BreakpointProviderProps {\n children?: ReactNode;\n matchedBreakpoints: Breakpoint[];\n}\n\nexport function BreakpointProvider(props: BreakpointProviderProps) {\n const { children, matchedBreakpoints } = props;\n\n return (\n <Context.Provider value={{ matchedBreakpoints }}>\n {children}\n </Context.Provider>\n );\n}\n\nexport function useMatchedBreakpoints(breakpoints: Breakpoints): Breakpoint[] {\n const entries = Object.entries(breakpoints).sort(([, a], [, b]) => b - a);\n const queries = entries.map(([, value]) => `(min-width: ${value}px)`);\n\n const supportsMatchMedia =\n typeof window !== \"undefined\" && typeof window.matchMedia === \"function\";\n\n const [matchedBreakpoints, setMatchedBreakpoints] = useState<\n Partial<Record<Breakpoint, boolean>>\n >(Object.fromEntries(entries.map(([bp]) => [bp as Breakpoint, false])));\n\n useIsomorphicLayoutEffect(() => {\n if (!supportsMatchMedia) {\n return;\n }\n\n const matchers = queries.map((query, index) => {\n const mq = window.matchMedia(query);\n const bp = entries[index][0] as Breakpoint;\n\n return {\n mq,\n handler: () => {\n setMatchedBreakpoints((prev) => {\n return {\n ...prev,\n [bp]: mq.matches,\n };\n });\n },\n };\n });\n\n matchers.forEach(({ mq, handler }) => {\n handler();\n mq.addEventListener(\"change\", handler);\n });\n\n return () => {\n matchers.forEach(({ mq, handler }) => {\n mq.removeEventListener(\"change\", handler);\n });\n };\n }, [supportsMatchMedia]);\n\n return Object.keys(matchedBreakpoints).filter(\n (bp) => matchedBreakpoints[bp as Breakpoint],\n ) as Breakpoint[];\n}\n\nexport function useBreakpoint(): BreakpointContext & {\n breakpoint: Breakpoint | null;\n} {\n const { matchedBreakpoints } = useContext(Context);\n\n return {\n matchedBreakpoints,\n breakpoint: matchedBreakpoints[0] ?? null,\n };\n}\n"],"names":["createContext","jsx","useState","useIsomorphicLayoutEffect","useContext"],"mappings":";;;;;;;AAWA,MAAM,OAAA,GAAUA,4BAAiC,mBAAqB,EAAA;AAAA,EACpE,oBAAoB;AACtB,CAAC,CAAA;AAOM,SAAS,mBAAmB,KAAgC,EAAA;AACjE,EAAM,MAAA,EAAE,QAAU,EAAA,kBAAA,EAAuB,GAAA,KAAA;AAEzC,EACE,uBAAAC,cAAA,CAAC,QAAQ,QAAR,EAAA,EAAiB,OAAO,EAAE,kBAAA,IACxB,QACH,EAAA,CAAA;AAEJ;AAEO,SAAS,sBAAsB,WAAwC,EAAA;AAC5E,EAAA,MAAM,UAAU,MAAO,CAAA,OAAA,CAAQ,WAAW,CAAA,CAAE,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA,KAAM,IAAI,CAAC,CAAA;AACxE,EAAM,MAAA,OAAA,GAAU,OAAQ,CAAA,GAAA,CAAI,CAAC,GAAG,KAAK,CAAA,KAAM,CAAe,YAAA,EAAA,KAAK,CAAK,GAAA,CAAA,CAAA;AAEpE,EAAA,MAAM,qBACJ,OAAO,MAAA,KAAW,WAAe,IAAA,OAAO,OAAO,UAAe,KAAA,UAAA;AAEhE,EAAA,MAAM,CAAC,kBAAoB,EAAA,qBAAqB,IAAIC,cAElD,CAAA,MAAA,CAAO,YAAY,OAAQ,CAAA,GAAA,CAAI,CAAC,CAAC,EAAE,CAAM,KAAA,CAAC,IAAkB,KAAK,CAAC,CAAC,CAAC,CAAA;AAEtE,EAAAC,mDAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,MAAA;AAAA;AAGF,IAAA,MAAM,QAAW,GAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,OAAO,KAAU,KAAA;AAC7C,MAAM,MAAA,EAAA,GAAK,MAAO,CAAA,UAAA,CAAW,KAAK,CAAA;AAClC,MAAA,MAAM,EAAK,GAAA,OAAA,CAAQ,KAAK,CAAA,CAAE,CAAC,CAAA;AAE3B,MAAO,OAAA;AAAA,QACL,EAAA;AAAA,QACA,SAAS,MAAM;AACb,UAAA,qBAAA,CAAsB,CAAC,IAAS,KAAA;AAC9B,YAAO,OAAA;AAAA,cACL,GAAG,IAAA;AAAA,cACH,CAAC,EAAE,GAAG,EAAG,CAAA;AAAA,aACX;AAAA,WACD,CAAA;AAAA;AACH,OACF;AAAA,KACD,CAAA;AAED,IAAA,QAAA,CAAS,OAAQ,CAAA,CAAC,EAAE,EAAA,EAAI,SAAc,KAAA;AACpC,MAAQ,OAAA,EAAA;AACR,MAAG,EAAA,CAAA,gBAAA,CAAiB,UAAU,OAAO,CAAA;AAAA,KACtC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,OAAQ,CAAA,CAAC,EAAE,EAAA,EAAI,SAAc,KAAA;AACpC,QAAG,EAAA,CAAA,mBAAA,CAAoB,UAAU,OAAO,CAAA;AAAA,OACzC,CAAA;AAAA,KACH;AAAA,GACF,EAAG,CAAC,kBAAkB,CAAC,CAAA;AAEvB,EAAO,OAAA,MAAA,CAAO,IAAK,CAAA,kBAAkB,CAAE,CAAA,MAAA;AAAA,IACrC,CAAC,EAAO,KAAA,kBAAA,CAAmB,EAAgB;AAAA,GAC7C;AACF;AAEO,SAAS,aAEd,GAAA;AACA,EAAA,MAAM,EAAE,kBAAA,EAAuB,GAAAC,gBAAA,CAAW,OAAO,CAAA;AAEjD,EAAO,OAAA;AAAA,IACL,kBAAA;AAAA,IACA,UAAA,EAAY,kBAAmB,CAAA,CAAC,CAAK,IAAA;AAAA,GACvC;AACF;;;;;;"}
1
+ {"version":3,"file":"BreakpointProvider.js","sources":["../src/breakpoints/BreakpointProvider.tsx"],"sourcesContent":["import { type ReactNode, useContext, useMemo, useState } from \"react\";\nimport { createContext } from \"../utils/createContext\";\nimport { useIsomorphicLayoutEffect } from \"../utils/useIsomorphicLayoutEffect\";\nimport type { Breakpoints } from \"./Breakpoints\";\n\ntype Breakpoint = keyof Breakpoints;\n\ninterface BreakpointContext {\n matchedBreakpoints: Breakpoint[];\n}\n\nconst Context = createContext<BreakpointContext>(\"BreakpointContext\", {\n matchedBreakpoints: [],\n});\n\ninterface BreakpointProviderProps {\n children?: ReactNode;\n matchedBreakpoints: Breakpoint[];\n}\n\nexport function BreakpointProvider(props: BreakpointProviderProps) {\n const { children, matchedBreakpoints } = props;\n\n return (\n <Context.Provider value={{ matchedBreakpoints }}>\n {children}\n </Context.Provider>\n );\n}\n\nexport function useMatchedBreakpoints(breakpoints: Breakpoints): Breakpoint[] {\n const entries = useMemo(\n () => Object.entries(breakpoints).sort(([, a], [, b]) => b - a),\n [breakpoints],\n );\n\n const supportsMatchMedia =\n typeof window !== \"undefined\" && typeof window.matchMedia === \"function\";\n\n const [matchedBreakpoints, setMatchedBreakpoints] = useState<\n Partial<Record<Breakpoint, boolean>>\n >(Object.fromEntries(entries.map(([bp]) => [bp as Breakpoint, false])));\n\n useIsomorphicLayoutEffect(() => {\n if (!supportsMatchMedia) {\n return;\n }\n\n const queries = entries.map(([, value]) => `(min-width: ${value}px)`);\n\n const matchers = queries.map((query, index) => {\n const mq = window.matchMedia(query);\n const bp = entries[index][0] as Breakpoint;\n\n return {\n mq,\n handler: () => {\n setMatchedBreakpoints((prev) => {\n return {\n ...prev,\n [bp]: mq.matches,\n };\n });\n },\n };\n });\n\n for (const { mq, handler } of matchers) {\n handler();\n mq.addEventListener(\"change\", handler);\n }\n\n return () => {\n for (const { mq, handler } of matchers) {\n mq.removeEventListener(\"change\", handler);\n }\n };\n }, [supportsMatchMedia, entries]);\n\n return Object.keys(matchedBreakpoints).filter(\n (bp) => matchedBreakpoints[bp as Breakpoint],\n ) as Breakpoint[];\n}\n\nexport function useBreakpoint(): BreakpointContext & {\n breakpoint: Breakpoint | null;\n} {\n const { matchedBreakpoints } = useContext(Context);\n\n return {\n matchedBreakpoints,\n breakpoint: matchedBreakpoints[0] ?? null,\n };\n}\n"],"names":["createContext","jsx","useMemo","useState","useIsomorphicLayoutEffect","useContext"],"mappings":";;;;;;;AAWA,MAAM,OAAA,GAAUA,4BAAiC,mBAAqB,EAAA;AAAA,EACpE,oBAAoB;AACtB,CAAC,CAAA;AAOM,SAAS,mBAAmB,KAAgC,EAAA;AACjE,EAAM,MAAA,EAAE,QAAU,EAAA,kBAAA,EAAuB,GAAA,KAAA;AAEzC,EACE,uBAAAC,cAAA,CAAC,QAAQ,QAAR,EAAA,EAAiB,OAAO,EAAE,kBAAA,IACxB,QACH,EAAA,CAAA;AAEJ;AAEO,SAAS,sBAAsB,WAAwC,EAAA;AAC5E,EAAA,MAAM,OAAU,GAAAC,aAAA;AAAA,IACd,MAAM,MAAO,CAAA,OAAA,CAAQ,WAAW,CAAA,CAAE,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA,KAAM,IAAI,CAAC,CAAA;AAAA,IAC9D,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,MAAM,qBACJ,OAAO,MAAA,KAAW,WAAe,IAAA,OAAO,OAAO,UAAe,KAAA,UAAA;AAEhE,EAAA,MAAM,CAAC,kBAAoB,EAAA,qBAAqB,IAAIC,cAElD,CAAA,MAAA,CAAO,YAAY,OAAQ,CAAA,GAAA,CAAI,CAAC,CAAC,EAAE,CAAM,KAAA,CAAC,IAAkB,KAAK,CAAC,CAAC,CAAC,CAAA;AAEtE,EAAAC,mDAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,MAAA;AAAA;AAGF,IAAM,MAAA,OAAA,GAAU,OAAQ,CAAA,GAAA,CAAI,CAAC,GAAG,KAAK,CAAA,KAAM,CAAe,YAAA,EAAA,KAAK,CAAK,GAAA,CAAA,CAAA;AAEpE,IAAA,MAAM,QAAW,GAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,OAAO,KAAU,KAAA;AAC7C,MAAM,MAAA,EAAA,GAAK,MAAO,CAAA,UAAA,CAAW,KAAK,CAAA;AAClC,MAAA,MAAM,EAAK,GAAA,OAAA,CAAQ,KAAK,CAAA,CAAE,CAAC,CAAA;AAE3B,MAAO,OAAA;AAAA,QACL,EAAA;AAAA,QACA,SAAS,MAAM;AACb,UAAA,qBAAA,CAAsB,CAAC,IAAS,KAAA;AAC9B,YAAO,OAAA;AAAA,cACL,GAAG,IAAA;AAAA,cACH,CAAC,EAAE,GAAG,EAAG,CAAA;AAAA,aACX;AAAA,WACD,CAAA;AAAA;AACH,OACF;AAAA,KACD,CAAA;AAED,IAAA,KAAA,MAAW,EAAE,EAAA,EAAI,OAAQ,EAAA,IAAK,QAAU,EAAA;AACtC,MAAQ,OAAA,EAAA;AACR,MAAG,EAAA,CAAA,gBAAA,CAAiB,UAAU,OAAO,CAAA;AAAA;AAGvC,IAAA,OAAO,MAAM;AACX,MAAA,KAAA,MAAW,EAAE,EAAA,EAAI,OAAQ,EAAA,IAAK,QAAU,EAAA;AACtC,QAAG,EAAA,CAAA,mBAAA,CAAoB,UAAU,OAAO,CAAA;AAAA;AAC1C,KACF;AAAA,GACC,EAAA,CAAC,kBAAoB,EAAA,OAAO,CAAC,CAAA;AAEhC,EAAO,OAAA,MAAA,CAAO,IAAK,CAAA,kBAAkB,CAAE,CAAA,MAAA;AAAA,IACrC,CAAC,EAAO,KAAA,kBAAA,CAAmB,EAAgB;AAAA,GAC7C;AACF;AAEO,SAAS,aAEd,GAAA;AACA,EAAA,MAAM,EAAE,kBAAA,EAAuB,GAAAC,gBAAA,CAAW,OAAO,CAAA;AAEjD,EAAO,OAAA;AAAA,IACL,kBAAA;AAAA,IACA,UAAA,EAAY,kBAAmB,CAAA,CAAC,CAAK,IAAA;AAAA,GACvC;AACF;;;;;;"}
@@ -11,7 +11,7 @@ const useButton = ({
11
11
  onClick,
12
12
  onBlur
13
13
  }) => {
14
- const [keyIsDown, setkeyIsDown] = React.useState("");
14
+ const [keyIsDown, setKeyIsDown] = React.useState("");
15
15
  const [active, setActive] = React.useState(false);
16
16
  const enter = "Enter";
17
17
  const space = " ";
@@ -26,7 +26,7 @@ const useButton = ({
26
26
  };
27
27
  }, [active, keyIsDown]);
28
28
  const handleKeyUp = (event) => {
29
- setkeyIsDown("");
29
+ setKeyIsDown("");
30
30
  setActive(false);
31
31
  onKeyUp == null ? void 0 : onKeyUp(event);
32
32
  };
@@ -40,7 +40,7 @@ const useButton = ({
40
40
  };
41
41
  const handleKeyDown = (event) => {
42
42
  if (event.key === enter || event.key === space) {
43
- setkeyIsDown(event.key);
43
+ setKeyIsDown(event.key);
44
44
  setActive(true);
45
45
  }
46
46
  onKeyDown == null ? void 0 : onKeyDown(event);
@@ -1 +1 @@
1
- {"version":3,"file":"useButton.js","sources":["../src/button/useButton.ts"],"sourcesContent":["import {\n type FocusEvent,\n type KeyboardEvent,\n type MouseEvent,\n useEffect,\n useState,\n} from \"react\";\n\nexport interface ButtonHookProps<T extends Element> {\n loading?: boolean;\n disabled?: boolean;\n focusableWhenDisabled?: boolean;\n onKeyUp?: (event: KeyboardEvent<T>) => void;\n onKeyDown?: (event: KeyboardEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onBlur?: (event: FocusEvent<T>) => void;\n}\n\nexport interface ButtonHookResult<T extends Element> {\n active: boolean;\n buttonProps: {\n \"aria-disabled\"?: boolean;\n \"data-loading\"?: boolean;\n disabled?: boolean;\n tabIndex: number;\n onBlur: (event: FocusEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onKeyDown: (event: KeyboardEvent<T>) => void;\n onKeyUp: (event: KeyboardEvent<T>) => void;\n };\n}\n\nexport const useButton = <T extends Element>({\n loading,\n disabled,\n focusableWhenDisabled,\n onKeyUp,\n onKeyDown,\n onClick,\n onBlur,\n}: ButtonHookProps<T>): ButtonHookResult<T> => {\n const [keyIsDown, setkeyIsDown] = useState(\"\");\n const [active, setActive] = useState(false);\n\n const enter = \"Enter\";\n const space = \" \";\n\n useEffect(() => {\n const t = setTimeout(() => {\n // This key state check is to stop continual visual state change when using Enter Key, which the browser treats as both key and click events on a Button\n // This key state check also fixes Firefox Button where Space key is pressed but button fails to be in active state\n if (keyIsDown !== enter && keyIsDown !== space) {\n setActive(false);\n }\n }, 0);\n\n return () => {\n clearTimeout(t);\n };\n }, [active, keyIsDown]);\n\n const handleKeyUp = (event: KeyboardEvent<T>) => {\n setkeyIsDown(\"\");\n setActive(false);\n onKeyUp?.(event);\n };\n\n const handleClick = (event: MouseEvent<T>) => {\n setActive(true);\n onClick?.(event);\n };\n\n const handleBlur = (event: FocusEvent<T>) => {\n setActive(false);\n onBlur?.(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<T>) => {\n if (event.key === enter || event.key === space) {\n setkeyIsDown(event.key);\n setActive(true);\n }\n\n onKeyDown?.(event);\n };\n\n const buttonProps = {\n \"aria-disabled\": disabled && focusableWhenDisabled ? true : undefined,\n \"data-loading\": loading,\n disabled: disabled && !focusableWhenDisabled,\n tabIndex: disabled && !focusableWhenDisabled ? -1 : 0,\n onBlur: handleBlur,\n onClick: !loading && !disabled ? handleClick : undefined,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n };\n\n return {\n active,\n buttonProps,\n };\n};\n"],"names":["useState","useEffect"],"mappings":";;;;AAgCO,MAAM,YAAY,CAAoB;AAAA,EAC3C,OAAA;AAAA,EACA,QAAA;AAAA,EACA,qBAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAA+C,KAAA;AAC7C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAS,KAAK,CAAA;AAE1C,EAAA,MAAM,KAAQ,GAAA,OAAA;AACd,EAAA,MAAM,KAAQ,GAAA,GAAA;AAEd,EAAAC,eAAA,CAAU,MAAM;AACd,IAAM,MAAA,CAAA,GAAI,WAAW,MAAM;AAGzB,MAAI,IAAA,SAAA,KAAc,KAAS,IAAA,SAAA,KAAc,KAAO,EAAA;AAC9C,QAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AACjB,OACC,CAAC,CAAA;AAEJ,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,CAAC,CAAA;AAAA,KAChB;AAAA,GACC,EAAA,CAAC,MAAQ,EAAA,SAAS,CAAC,CAAA;AAEtB,EAAM,MAAA,WAAA,GAAc,CAAC,KAA4B,KAAA;AAC/C,IAAA,YAAA,CAAa,EAAE,CAAA;AACf,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AAAA,GACZ;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,KAAyB,KAAA;AAC5C,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AAAA,GACZ;AAEA,EAAM,MAAA,UAAA,GAAa,CAAC,KAAyB,KAAA;AAC3C,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAS,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAA,KAAA,CAAA;AAAA,GACX;AAEA,EAAM,MAAA,aAAA,GAAgB,CAAC,KAA4B,KAAA;AACjD,IAAA,IAAI,KAAM,CAAA,GAAA,KAAQ,KAAS,IAAA,KAAA,CAAM,QAAQ,KAAO,EAAA;AAC9C,MAAA,YAAA,CAAa,MAAM,GAAG,CAAA;AACtB,MAAA,SAAA,CAAU,IAAI,CAAA;AAAA;AAGhB,IAAY,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAA,KAAA,CAAA;AAAA,GACd;AAEA,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB,eAAA,EAAiB,QAAY,IAAA,qBAAA,GAAwB,IAAO,GAAA,MAAA;AAAA,IAC5D,cAAgB,EAAA,OAAA;AAAA,IAChB,QAAA,EAAU,YAAY,CAAC,qBAAA;AAAA,IACvB,QAAU,EAAA,QAAA,IAAY,CAAC,qBAAA,GAAwB,EAAK,GAAA,CAAA;AAAA,IACpD,MAAQ,EAAA,UAAA;AAAA,IACR,OAAS,EAAA,CAAC,OAAW,IAAA,CAAC,WAAW,WAAc,GAAA,MAAA;AAAA,IAC/C,SAAW,EAAA,aAAA;AAAA,IACX,OAAS,EAAA;AAAA,GACX;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useButton.js","sources":["../src/button/useButton.ts"],"sourcesContent":["import {\n type FocusEvent,\n type KeyboardEvent,\n type MouseEvent,\n useEffect,\n useState,\n} from \"react\";\n\nexport interface ButtonHookProps<T extends Element> {\n loading?: boolean;\n disabled?: boolean;\n focusableWhenDisabled?: boolean;\n onKeyUp?: (event: KeyboardEvent<T>) => void;\n onKeyDown?: (event: KeyboardEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onBlur?: (event: FocusEvent<T>) => void;\n}\n\nexport interface ButtonHookResult<T extends Element> {\n active: boolean;\n buttonProps: {\n \"aria-disabled\"?: boolean;\n \"data-loading\"?: boolean;\n disabled?: boolean;\n tabIndex: number;\n onBlur: (event: FocusEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onKeyDown: (event: KeyboardEvent<T>) => void;\n onKeyUp: (event: KeyboardEvent<T>) => void;\n };\n}\n\nexport const useButton = <T extends Element>({\n loading,\n disabled,\n focusableWhenDisabled,\n onKeyUp,\n onKeyDown,\n onClick,\n onBlur,\n}: ButtonHookProps<T>): ButtonHookResult<T> => {\n const [keyIsDown, setKeyIsDown] = useState(\"\");\n const [active, setActive] = useState(false);\n\n const enter = \"Enter\";\n const space = \" \";\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: active is needed to remove the active styling on mouse up\n useEffect(() => {\n const t = setTimeout(() => {\n // This key state check is to stop continual visual state change when using Enter Key, which the browser treats as both key and click events on a Button\n // This key state check also fixes Firefox Button where Space key is pressed but button fails to be in active state\n if (keyIsDown !== enter && keyIsDown !== space) {\n setActive(false);\n }\n }, 0);\n\n return () => {\n clearTimeout(t);\n };\n }, [active, keyIsDown]);\n\n const handleKeyUp = (event: KeyboardEvent<T>) => {\n setKeyIsDown(\"\");\n setActive(false);\n onKeyUp?.(event);\n };\n\n const handleClick = (event: MouseEvent<T>) => {\n setActive(true);\n onClick?.(event);\n };\n\n const handleBlur = (event: FocusEvent<T>) => {\n setActive(false);\n onBlur?.(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<T>) => {\n if (event.key === enter || event.key === space) {\n setKeyIsDown(event.key);\n setActive(true);\n }\n\n onKeyDown?.(event);\n };\n\n const buttonProps = {\n \"aria-disabled\": disabled && focusableWhenDisabled ? true : undefined,\n \"data-loading\": loading,\n disabled: disabled && !focusableWhenDisabled,\n tabIndex: disabled && !focusableWhenDisabled ? -1 : 0,\n onBlur: handleBlur,\n onClick: !loading && !disabled ? handleClick : undefined,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n };\n\n return {\n active,\n buttonProps,\n };\n};\n"],"names":["useState","useEffect"],"mappings":";;;;AAgCO,MAAM,YAAY,CAAoB;AAAA,EAC3C,OAAA;AAAA,EACA,QAAA;AAAA,EACA,qBAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAA+C,KAAA;AAC7C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAS,KAAK,CAAA;AAE1C,EAAA,MAAM,KAAQ,GAAA,OAAA;AACd,EAAA,MAAM,KAAQ,GAAA,GAAA;AAGd,EAAAC,eAAA,CAAU,MAAM;AACd,IAAM,MAAA,CAAA,GAAI,WAAW,MAAM;AAGzB,MAAI,IAAA,SAAA,KAAc,KAAS,IAAA,SAAA,KAAc,KAAO,EAAA;AAC9C,QAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AACjB,OACC,CAAC,CAAA;AAEJ,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,CAAC,CAAA;AAAA,KAChB;AAAA,GACC,EAAA,CAAC,MAAQ,EAAA,SAAS,CAAC,CAAA;AAEtB,EAAM,MAAA,WAAA,GAAc,CAAC,KAA4B,KAAA;AAC/C,IAAA,YAAA,CAAa,EAAE,CAAA;AACf,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AAAA,GACZ;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,KAAyB,KAAA;AAC5C,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AAAA,GACZ;AAEA,EAAM,MAAA,UAAA,GAAa,CAAC,KAAyB,KAAA;AAC3C,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAS,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAA,KAAA,CAAA;AAAA,GACX;AAEA,EAAM,MAAA,aAAA,GAAgB,CAAC,KAA4B,KAAA;AACjD,IAAA,IAAI,KAAM,CAAA,GAAA,KAAQ,KAAS,IAAA,KAAA,CAAM,QAAQ,KAAO,EAAA;AAC9C,MAAA,YAAA,CAAa,MAAM,GAAG,CAAA;AACtB,MAAA,SAAA,CAAU,IAAI,CAAA;AAAA;AAGhB,IAAY,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAA,KAAA,CAAA;AAAA,GACd;AAEA,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB,eAAA,EAAiB,QAAY,IAAA,qBAAA,GAAwB,IAAO,GAAA,MAAA;AAAA,IAC5D,cAAgB,EAAA,OAAA;AAAA,IAChB,QAAA,EAAU,YAAY,CAAC,qBAAA;AAAA,IACvB,QAAU,EAAA,QAAA,IAAY,CAAC,qBAAA,GAAwB,EAAK,GAAA,CAAA;AAAA,IACpD,MAAQ,EAAA,UAAA;AAAA,IACR,OAAS,EAAA,CAAC,OAAW,IAAA,CAAC,WAAW,WAAc,GAAA,MAAA;AAAA,IAC/C,SAAW,EAAA,aAAA;AAAA,IACX,OAAS,EAAA;AAAA,GACX;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = "/* Styles applied to root component */\n.saltCheckbox {\n display: inline-flex;\n gap: var(--salt-spacing-100);\n position: relative;\n cursor: var(--salt-cursor-hover);\n\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n font-family: var(--salt-text-fontFamily);\n font-weight: var(--salt-text-fontWeight);\n}\n\n/* Styles applied to root component if `disabled={true}` */\n.saltCheckbox-disabled {\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-cursor-disabled);\n}\n\n/* Styles applied to root component if `readOnly={true}` */\n.saltCheckbox-readOnly {\n color: var(--salt-content-primary-foreground);\n cursor: var(--salt-cursor-readonly);\n}\n\n.saltCheckbox-input,\n.saltCheckboxIcon {\n margin: calc((var(--salt-text-lineHeight) - var(--salt-size-selectable)) / 2) 0;\n box-sizing: border-box;\n}\n\n/* Styles applied to the icon component if focused */\n.saltCheckbox-input:focus-visible + .saltCheckboxIcon {\n outline-offset: var(--salt-focused-outlineOffset);\n outline: var(--saltCheckbox-outline, var(--salt-focused-outline));\n border-color: var(--salt-selectable-borderColor-hover);\n color: var(--salt-selectable-foreground-hover);\n clip-path: unset;\n}\n\n.saltCheckbox-input:focus-visible + .saltCheckboxIcon-checked {\n border-color: var(--salt-selectable-borderColor-selected);\n color: var(--salt-selectable-foreground-selected);\n}\n\n.saltCheckbox-error .saltCheckbox-input:focus-visible + .saltCheckboxIcon {\n outline-color: var(--salt-status-error-foreground-decorative);\n border-color: var(--salt-status-error-borderColor);\n color: var(--salt-status-error-foreground-decorative);\n}\n\n.saltCheckbox-warning .saltCheckbox-input:focus-visible + .saltCheckboxIcon {\n outline-color: var(--salt-status-warning-foreground-decorative);\n border-color: var(--salt-status-warning-borderColor);\n color: var(--salt-status-warning-foreground-decorative);\n}\n\n/* Styles applied to input element */\n.saltCheckbox-input {\n cursor: inherit;\n opacity: 0;\n padding: 0;\n position: absolute;\n z-index: var(--salt-zIndex-default);\n}\n";
3
+ var css_248z = "/* Styles applied to root component */\n.saltCheckbox {\n display: inline-flex;\n gap: var(--salt-spacing-100);\n position: relative;\n cursor: var(--salt-cursor-hover);\n\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n font-family: var(--salt-text-fontFamily);\n font-weight: var(--salt-text-fontWeight);\n}\n\n/* Styles applied to root component if `disabled={true}` */\n.saltCheckbox-disabled {\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-cursor-disabled);\n}\n\n/* Styles applied to root component if `readOnly={true}` */\n.saltCheckbox-readOnly {\n color: var(--salt-content-primary-foreground);\n cursor: var(--salt-cursor-readonly);\n}\n\n.saltCheckbox-input,\n.saltCheckboxIcon {\n margin: calc((var(--salt-text-lineHeight) - var(--salt-size-selectable)) / 2) 0;\n box-sizing: border-box;\n}\n\n/* Styles applied to the icon component if focused */\n.saltCheckbox-input:focus-visible + .saltCheckboxIcon {\n outline-offset: var(--salt-spacing-fixed-100);\n outline: var(--saltCheckbox-outline, var(--salt-focused-outline));\n border-color: var(--salt-selectable-borderColor-hover);\n color: var(--salt-selectable-foreground-hover);\n clip-path: unset;\n}\n\n.saltCheckbox-input:focus-visible + .saltCheckboxIcon-checked {\n border-color: var(--salt-selectable-borderColor-selected);\n color: var(--salt-selectable-foreground-selected);\n}\n\n.saltCheckbox-error .saltCheckbox-input:focus-visible + .saltCheckboxIcon {\n outline-color: var(--salt-status-error-foreground-decorative);\n border-color: var(--salt-status-error-borderColor);\n color: var(--salt-status-error-foreground-decorative);\n}\n\n.saltCheckbox-warning .saltCheckbox-input:focus-visible + .saltCheckboxIcon {\n outline-color: var(--salt-status-warning-foreground-decorative);\n border-color: var(--salt-status-warning-borderColor);\n color: var(--salt-status-warning-foreground-decorative);\n}\n\n/* Styles applied to input element */\n.saltCheckbox-input {\n cursor: inherit;\n opacity: 0;\n padding: 0;\n position: absolute;\n z-index: var(--salt-zIndex-default);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=Checkbox.css.js.map