@salt-ds/core 1.40.0 → 1.42.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 (99) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/css/salt-core.css +210 -50
  3. package/dist-cjs/accordion/AccordionHeader.css.js +1 -1
  4. package/dist-cjs/avatar/Avatar.css.js +1 -1
  5. package/dist-cjs/avatar/Avatar.js +9 -8
  6. package/dist-cjs/avatar/Avatar.js.map +1 -1
  7. package/dist-cjs/border-item/BorderItem.js.map +1 -1
  8. package/dist-cjs/border-layout/BorderLayout.js.map +1 -1
  9. package/dist-cjs/button/Button.css.js +1 -1
  10. package/dist-cjs/card/Card.css.js +1 -1
  11. package/dist-cjs/card/Card.js.map +1 -1
  12. package/dist-cjs/combo-box/ComboBox.js +4 -4
  13. package/dist-cjs/combo-box/ComboBox.js.map +1 -1
  14. package/dist-cjs/dialog/Dialog.js +1 -0
  15. package/dist-cjs/dialog/Dialog.js.map +1 -1
  16. package/dist-cjs/flex-item/FlexItem.js +3 -8
  17. package/dist-cjs/flex-item/FlexItem.js.map +1 -1
  18. package/dist-cjs/flex-layout/FlexLayout.js +4 -9
  19. package/dist-cjs/flex-layout/FlexLayout.js.map +1 -1
  20. package/dist-cjs/flex-layout/parseSpacing.js +11 -0
  21. package/dist-cjs/flex-layout/parseSpacing.js.map +1 -0
  22. package/dist-cjs/form-field/FormField.css.js +1 -1
  23. package/dist-cjs/grid-item/GridItem.css.js +1 -1
  24. package/dist-cjs/grid-item/GridItem.js +7 -0
  25. package/dist-cjs/grid-item/GridItem.js.map +1 -1
  26. package/dist-cjs/grid-layout/GridLayout.css.js +1 -1
  27. package/dist-cjs/grid-layout/GridLayout.js +9 -8
  28. package/dist-cjs/grid-layout/GridLayout.js.map +1 -1
  29. package/dist-cjs/interactable-card/InteractableCard.css.js +1 -1
  30. package/dist-cjs/link/Link.css.js +1 -1
  31. package/dist-cjs/link/Link.js +11 -2
  32. package/dist-cjs/link/Link.js.map +1 -1
  33. package/dist-cjs/link-card/LinkCard.css.js +1 -1
  34. package/dist-cjs/menu/MenuItem.css.js +1 -1
  35. package/dist-cjs/option/Option.css.js +1 -1
  36. package/dist-cjs/pagination/PageButton.css.js +1 -1
  37. package/dist-cjs/pagination/PageButton.js +2 -3
  38. package/dist-cjs/pagination/PageButton.js.map +1 -1
  39. package/dist-cjs/pagination/Paginator.css.js +1 -1
  40. package/dist-cjs/skip-link/SkipLink.css.js +1 -1
  41. package/dist-cjs/text/Text.css.js +1 -1
  42. package/dist-cjs/utils/useFloatingUI/useFloatingUI.js +3 -0
  43. package/dist-cjs/utils/useFloatingUI/useFloatingUI.js.map +1 -1
  44. package/dist-cjs/utils/usePreventScroll.js +233 -0
  45. package/dist-cjs/utils/usePreventScroll.js.map +1 -0
  46. package/dist-es/accordion/AccordionHeader.css.js +1 -1
  47. package/dist-es/avatar/Avatar.css.js +1 -1
  48. package/dist-es/avatar/Avatar.js +9 -8
  49. package/dist-es/avatar/Avatar.js.map +1 -1
  50. package/dist-es/border-item/BorderItem.js.map +1 -1
  51. package/dist-es/border-layout/BorderLayout.js.map +1 -1
  52. package/dist-es/button/Button.css.js +1 -1
  53. package/dist-es/card/Card.css.js +1 -1
  54. package/dist-es/card/Card.js.map +1 -1
  55. package/dist-es/combo-box/ComboBox.js +4 -4
  56. package/dist-es/combo-box/ComboBox.js.map +1 -1
  57. package/dist-es/dialog/Dialog.js +1 -0
  58. package/dist-es/dialog/Dialog.js.map +1 -1
  59. package/dist-es/flex-item/FlexItem.js +1 -6
  60. package/dist-es/flex-item/FlexItem.js.map +1 -1
  61. package/dist-es/flex-layout/FlexLayout.js +1 -6
  62. package/dist-es/flex-layout/FlexLayout.js.map +1 -1
  63. package/dist-es/flex-layout/parseSpacing.js +9 -0
  64. package/dist-es/flex-layout/parseSpacing.js.map +1 -0
  65. package/dist-es/form-field/FormField.css.js +1 -1
  66. package/dist-es/grid-item/GridItem.css.js +1 -1
  67. package/dist-es/grid-item/GridItem.js +7 -0
  68. package/dist-es/grid-item/GridItem.js.map +1 -1
  69. package/dist-es/grid-layout/GridLayout.css.js +1 -1
  70. package/dist-es/grid-layout/GridLayout.js +7 -6
  71. package/dist-es/grid-layout/GridLayout.js.map +1 -1
  72. package/dist-es/interactable-card/InteractableCard.css.js +1 -1
  73. package/dist-es/link/Link.css.js +1 -1
  74. package/dist-es/link/Link.js +11 -2
  75. package/dist-es/link/Link.js.map +1 -1
  76. package/dist-es/link-card/LinkCard.css.js +1 -1
  77. package/dist-es/menu/MenuItem.css.js +1 -1
  78. package/dist-es/option/Option.css.js +1 -1
  79. package/dist-es/pagination/PageButton.css.js +1 -1
  80. package/dist-es/pagination/PageButton.js +2 -3
  81. package/dist-es/pagination/PageButton.js.map +1 -1
  82. package/dist-es/pagination/Paginator.css.js +1 -1
  83. package/dist-es/skip-link/SkipLink.css.js +1 -1
  84. package/dist-es/text/Text.css.js +1 -1
  85. package/dist-es/utils/useFloatingUI/useFloatingUI.js +3 -0
  86. package/dist-es/utils/useFloatingUI/useFloatingUI.js.map +1 -1
  87. package/dist-es/utils/usePreventScroll.js +231 -0
  88. package/dist-es/utils/usePreventScroll.js.map +1 -0
  89. package/dist-types/avatar/Avatar.d.ts +5 -1
  90. package/dist-types/border-item/BorderItem.d.ts +9 -1
  91. package/dist-types/border-layout/BorderLayout.d.ts +9 -1
  92. package/dist-types/card/Card.d.ts +1 -1
  93. package/dist-types/flex-layout/parseSpacing.d.ts +1 -0
  94. package/dist-types/grid-item/GridItem.d.ts +8 -0
  95. package/dist-types/grid-layout/GridLayout.d.ts +8 -0
  96. package/dist-types/link/Link.d.ts +13 -1
  97. package/dist-types/utils/useFloatingUI/useFloatingUI.d.ts +4 -0
  98. package/dist-types/utils/usePreventScroll.d.ts +11 -0
  99. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,68 @@
1
1
  # @salt-ds/core
2
2
 
3
+ ## 1.42.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 38da566: Added strong and small font weight support to `Text` when `styleAs="action"`.
8
+ `<strong>` and `<small>` work in `Button` as well.
9
+ - aac1500: - Added `variant="ghost"` to Card with translucent background.
10
+ - Added default shadow to all Card, Link Card and Interactable Card variants.
11
+ - 803d0c0: Added `underline` prop to `Link`. It controls when the underline text decoration is applied to a link.
12
+
13
+ ```
14
+ <Link underline="default">Underline default</Link>
15
+ <Link underline="never">Underline never</Link>
16
+ ```
17
+
18
+ - e783dd5: Added `lockScroll` prop to FloatingComponent that makes the page unscrollable when the floating component is open.
19
+
20
+ ### Patch Changes
21
+
22
+ - 32de853: Refactored Pagination to simplify page button styling.
23
+ - 7a84d72: Fixed Accordion flashing blue when tapped on mobile devices.
24
+ - c30b6a4: Revert layout padding and margin defaults removal to avoid margins and paddings being inherited from parent containers.
25
+
26
+ ## 1.41.0
27
+
28
+ ### Minor Changes
29
+
30
+ - 90b85d4: Added accent colored Links.
31
+
32
+ ```tsx
33
+ <Link href="#" color="accent">
34
+ Link text
35
+ </Link>
36
+ ```
37
+
38
+ - 9a75603: Added `color` prop to `Avatar`. Using `color` will change Avatar's background to one of the 20 categorical colors or accent.
39
+
40
+ ```tsx
41
+ <Avatar color="category-1" />
42
+ ```
43
+
44
+ - 7510f56: Add `padding` and `margin` to `GridLayout`, `GridItem`, `BorderLayout` and `BorderItem`
45
+
46
+ ```tsx
47
+ <GridLayout padding={1} margin={1}>
48
+ <GridItem padding={2} margin={2}>
49
+ Item
50
+ </GridItem>
51
+ </GridLayout>
52
+ ```
53
+
54
+ ### Patch Changes
55
+
56
+ - 90b85d4: When Link is set to `color="inherit"` its hover, active and focus colors will now also be inherited.
57
+ Fixed status colors being included in Link's `color` type. This was accidentally added when status color support was added to Text. If you need to achieve this behaviour you can use `color="inherit"`.
58
+ - fd86394: Fix layout paddings and margins beings set by default
59
+ - 56a997c: Fixed FormField incorrectly applying `align-self` when `labelPlacement` is `"left"` or `"right"`.
60
+ - 98d3aac: Improved screen-reader support for read-only combo boxes.
61
+ - ea5fc00: Improve screen reader support for Avatar.
62
+ - ba0f436: Added centered vertical alignment to MenuItem
63
+ - Updated dependencies [021e90d]
64
+ - @salt-ds/icons@1.13.2
65
+
3
66
  ## 1.40.0
4
67
 
5
68
  ### Minor Changes
package/css/salt-core.css CHANGED
@@ -37,6 +37,7 @@
37
37
  text-align: left;
38
38
  cursor: var(--salt-actionable-cursor-hover);
39
39
  box-sizing: border-box;
40
+ -webkit-tap-highlight-color: transparent;
40
41
  }
41
42
  .saltAccordionHeader:focus-visible {
42
43
  outline: var(--salt-focused-outline);
@@ -116,35 +117,118 @@
116
117
 
117
118
  /* src/avatar/Avatar.css */
118
119
  .saltAvatar {
119
- --avatar-foreground: var(--saltAvatar-foreground, var(--salt-accent-foreground));
120
120
  --avatar-size-multiplier: var(--saltAvatar-size-multiplier, 1);
121
- --avatar-base-size: var(--salt-size-base, 12px);
121
+ --avatar-base-size: var(--salt-size-base);
122
122
  --avatar-base-fontSize: var(--saltAvatar-fontSize, var(--salt-text-notation-fontSize));
123
123
  --avatar-container-size: calc(var(--avatar-base-size) * var(--avatar-size-multiplier));
124
124
  --avatar-fontSize: calc(var(--avatar-base-fontSize) * var(--avatar-size-multiplier));
125
125
  --saltIcon-size: calc(var(--avatar-container-size) / 2);
126
126
  }
127
127
  .saltAvatar {
128
- line-height: var(--saltAvatar-lineHeight, var(--salt-text-notation-lineHeight));
129
- display: flex;
130
- justify-content: center;
131
- align-items: center;
132
- background: var(--saltAvatar-background, var(--salt-accent-background));
133
- color: var(--avatar-foreground);
128
+ color: var(--saltAvatar-foreground, var(--avatar-foreground));
129
+ background: var(--saltAvatar-background, var(--avatar-background));
134
130
  font-size: var(--avatar-fontSize);
131
+ line-height: var(--saltAvatar-lineHeight, var(--salt-text-notation-lineHeight));
135
132
  font-family: var(--salt-text-fontFamily);
136
133
  font-weight: var(--salt-text-fontWeight);
137
134
  width: var(--avatar-container-size);
138
135
  min-width: var(--avatar-container-size);
139
136
  height: var(--avatar-container-size);
140
137
  min-height: var(--avatar-container-size);
138
+ border-radius: var(--saltAvatar-borderRadius, var(--salt-palette-corner-strongest, 50%));
139
+ display: flex;
140
+ justify-content: center;
141
+ align-items: center;
141
142
  overflow: hidden;
142
143
  user-select: none;
143
- border-radius: var(--saltAvatar-borderRadius, var(--salt-palette-corner-strongest, 50%));
144
+ }
145
+ .saltAvatar-accent {
146
+ --avatar-background: var(--salt-accent-background);
147
+ --avatar-foreground: var(--salt-accent-foreground);
148
+ }
149
+ .saltAvatar-category-1 {
150
+ --avatar-background: var(--salt-category-1-bold-background);
151
+ --avatar-foreground: var(--salt-category-1-bold-foreground);
152
+ }
153
+ .saltAvatar-category-2 {
154
+ --avatar-background: var(--salt-category-2-bold-background);
155
+ --avatar-foreground: var(--salt-category-2-bold-foreground);
156
+ }
157
+ .saltAvatar-category-3 {
158
+ --avatar-background: var(--salt-category-3-bold-background);
159
+ --avatar-foreground: var(--salt-category-3-bold-foreground);
160
+ }
161
+ .saltAvatar-category-4 {
162
+ --avatar-background: var(--salt-category-4-bold-background);
163
+ --avatar-foreground: var(--salt-category-4-bold-foreground);
164
+ }
165
+ .saltAvatar-category-5 {
166
+ --avatar-background: var(--salt-category-5-bold-background);
167
+ --avatar-foreground: var(--salt-category-5-bold-foreground);
168
+ }
169
+ .saltAvatar-category-6 {
170
+ --avatar-background: var(--salt-category-6-bold-background);
171
+ --avatar-foreground: var(--salt-category-6-bold-foreground);
172
+ }
173
+ .saltAvatar-category-7 {
174
+ --avatar-background: var(--salt-category-7-bold-background);
175
+ --avatar-foreground: var(--salt-category-7-bold-foreground);
176
+ }
177
+ .saltAvatar-category-8 {
178
+ --avatar-background: var(--salt-category-8-bold-background);
179
+ --avatar-foreground: var(--salt-category-8-bold-foreground);
180
+ }
181
+ .saltAvatar-category-9 {
182
+ --avatar-background: var(--salt-category-9-bold-background);
183
+ --avatar-foreground: var(--salt-category-9-bold-foreground);
184
+ }
185
+ .saltAvatar-category-10 {
186
+ --avatar-background: var(--salt-category-10-bold-background);
187
+ --avatar-foreground: var(--salt-category-10-bold-foreground);
188
+ }
189
+ .saltAvatar-category-11 {
190
+ --avatar-background: var(--salt-category-11-bold-background);
191
+ --avatar-foreground: var(--salt-category-11-bold-foreground);
192
+ }
193
+ .saltAvatar-category-12 {
194
+ --avatar-background: var(--salt-category-12-bold-background);
195
+ --avatar-foreground: var(--salt-category-12-bold-foreground);
196
+ }
197
+ .saltAvatar-category-13 {
198
+ --avatar-background: var(--salt-category-13-bold-background);
199
+ --avatar-foreground: var(--salt-category-13-bold-foreground);
200
+ }
201
+ .saltAvatar-category-14 {
202
+ --avatar-background: var(--salt-category-14-bold-background);
203
+ --avatar-foreground: var(--salt-category-14-bold-foreground);
204
+ }
205
+ .saltAvatar-category-15 {
206
+ --avatar-background: var(--salt-category-15-bold-background);
207
+ --avatar-foreground: var(--salt-category-15-bold-foreground);
208
+ }
209
+ .saltAvatar-category-16 {
210
+ --avatar-background: var(--salt-category-16-bold-background);
211
+ --avatar-foreground: var(--salt-category-16-bold-foreground);
212
+ }
213
+ .saltAvatar-category-17 {
214
+ --avatar-background: var(--salt-category-17-bold-background);
215
+ --avatar-foreground: var(--salt-category-17-bold-foreground);
216
+ }
217
+ .saltAvatar-category-18 {
218
+ --avatar-background: var(--salt-category-18-bold-background);
219
+ --avatar-foreground: var(--salt-category-18-bold-foreground);
220
+ }
221
+ .saltAvatar-category-19 {
222
+ --avatar-background: var(--salt-category-19-bold-background);
223
+ --avatar-foreground: var(--salt-category-19-bold-foreground);
224
+ }
225
+ .saltAvatar-category-20 {
226
+ --avatar-background: var(--salt-category-20-bold-background);
227
+ --avatar-foreground: var(--salt-category-20-bold-foreground);
144
228
  }
145
229
  .saltAvatar:has(img),
146
230
  .saltAvatar-withImage {
147
- background: none;
231
+ --avatar-background: none;
148
232
  }
149
233
  .saltAvatar > img,
150
234
  .saltAvatar > svg:not(.saltIcon) {
@@ -629,6 +713,13 @@
629
713
  --button-borderColor-disabled: var(--salt-actionable-caution-borderColor);
630
714
  cursor: progress;
631
715
  }
716
+ .saltButton strong {
717
+ font-weight: var(--salt-text-action-fontWeight-strong);
718
+ }
719
+ .saltButton small {
720
+ font-size: inherit;
721
+ font-weight: var(--salt-text-action-fontWeight-small);
722
+ }
632
723
  .saltButton-spinner {
633
724
  position: absolute;
634
725
  inset: 0;
@@ -649,6 +740,7 @@
649
740
  border-style: var(--salt-container-borderStyle);
650
741
  padding: var(--saltCard-padding, var(--salt-spacing-200));
651
742
  position: relative;
743
+ box-shadow: var(--salt-overlayable-shadow);
652
744
  transition: box-shadow var(--salt-duration-instant) ease-in-out;
653
745
  box-sizing: border-box;
654
746
  border-radius: var(--saltCard-borderRadius, var(--salt-palette-corner, 0));
@@ -667,6 +759,10 @@
667
759
  background: var(--saltCard-background, var(--salt-container-tertiary-background));
668
760
  border-color: var(--salt-container-tertiary-borderColor);
669
761
  }
762
+ .saltCard-ghost {
763
+ background: var(--saltCard-background, var(--salt-container-ghost-background));
764
+ border-color: var(--salt-container-ghost-borderColor);
765
+ }
670
766
  .saltCard-accent::after {
671
767
  content: "";
672
768
  position: absolute;
@@ -1485,12 +1581,10 @@ a:focus .saltCard-interactable.saltCard-disabled {
1485
1581
  grid-area: 3 / 1;
1486
1582
  }
1487
1583
  .saltFormField-labelLeft {
1488
- align-self: center;
1489
1584
  grid-template-columns: var(--saltFormField-label-width, var(--formField-label-width, 40%)) 1fr;
1490
1585
  grid-template-areas: "label controls";
1491
1586
  }
1492
1587
  .saltFormField-labelRight {
1493
- align-self: center;
1494
1588
  grid-template-columns: var(--saltFormField-label-width, var(--formField-label-width, 40%)) 1fr;
1495
1589
  grid-template-areas: "label controls";
1496
1590
  }
@@ -1567,6 +1661,8 @@ a:focus .saltCard-interactable.saltCard-disabled {
1567
1661
  grid-column-start: var(--gridItem-gridColumnStart);
1568
1662
  grid-row-end: var(--gridItem-gridRowEnd);
1569
1663
  grid-column-end: var(--gridItem-gridColumnEnd);
1664
+ margin: var(--gridItem-margin);
1665
+ padding: var(--gridItem-padding);
1570
1666
  }
1571
1667
  .saltGridItem-area {
1572
1668
  grid-area: var(--gridItem-gridArea);
@@ -1579,6 +1675,8 @@ a:focus .saltCard-interactable.saltCard-disabled {
1579
1675
  row-gap: var(--gridLayout-rowGap);
1580
1676
  grid-template-columns: var(--gridLayout-columns);
1581
1677
  grid-template-rows: var(--gridLayout-rows);
1678
+ margin: var(--gridLayout-margin);
1679
+ padding: var(--gridLayout-padding);
1582
1680
  grid-auto-columns: auto;
1583
1681
  grid-auto-rows: auto;
1584
1682
  }
@@ -1806,6 +1904,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
1806
1904
  border-width: var(--saltInteractableCard-borderWidth, var(--salt-size-border));
1807
1905
  border-style: var(--saltInteractableCard-borderStyle, var(--salt-container-borderStyle));
1808
1906
  border-radius: var(--saltInteractableCard-borderRadius, var(--salt-palette-corner, 0));
1907
+ box-shadow: var(--salt-overlayable-shadow);
1809
1908
  display: block;
1810
1909
  padding: var(--saltInteractableCard-padding, var(--salt-spacing-200));
1811
1910
  position: relative;
@@ -1930,45 +2029,76 @@ a:focus .saltCard-interactable.saltCard-disabled {
1930
2029
 
1931
2030
  /* src/link/Link.css */
1932
2031
  .saltLink {
1933
- --link-color-hover: var(--saltLink-color-hover, var(--salt-content-foreground-hover));
1934
- --link-color-active: var(--saltLink-color-active, var(--salt-content-foreground-active));
1935
- --link-color-visited: var(--saltLink-color-visited, var(--salt-content-foreground-visited));
1936
- --link-color-focus: var(--saltLink-color-focus, var(--link-color-hover));
1937
- --link-textDecoration: var(--salt-navigable-textDecoration);
1938
- --link-textDecoration-hover: var(--salt-navigable-textDecoration-hover);
2032
+ --link-color: "inherit";
2033
+ --link-color-hover: "inherit";
2034
+ --link-color-active: "inherit";
2035
+ --link-color-visited: var(--salt-content-foreground-visited);
2036
+ --link-color-focus: "inherit";
2037
+ --link-focus-outlineColor: currentColor;
1939
2038
  --link-fontFamily: var(--salt-text-fontFamily);
1940
- --link-focus-outline: var(--salt-focused-outline);
1941
2039
  }
1942
- .saltLink {
2040
+ .saltLink-underlineDefault {
2041
+ --link-textDecoration: var(--salt-typography-textDecoration-underline);
2042
+ --link-textDecoration-hover: var(--salt-typography-textDecoration-none);
2043
+ --link-textDecoration-active: var(--link-textDecoration);
2044
+ --link-textDecoration-focus: var(--link-textDecoration-hover);
2045
+ --link-textDecoration-visited: var(--link-textDecoration);
2046
+ }
2047
+ .saltLink-underlineNever {
2048
+ --link-textDecoration: var(--salt-typography-textDecoration-none);
2049
+ --link-textDecoration-hover: var(--salt-typography-textDecoration-none);
2050
+ }
2051
+ .saltLink.saltText {
1943
2052
  color: var(--link-color);
1944
2053
  letter-spacing: var(--salt-text-letterSpacing);
1945
2054
  text-decoration: var(--link-textDecoration);
1946
2055
  font-family: var(--link-fontFamily);
1947
2056
  }
1948
- .saltText-primary {
2057
+ .saltLink-primary {
1949
2058
  --link-color: var(--salt-content-primary-foreground);
2059
+ --link-color-hover: var(--salt-content-primary-foreground);
2060
+ --link-color-active: var(--salt-content-primary-foreground);
2061
+ --link-color-focus: var(--salt-content-primary-foreground);
2062
+ --link-focus-outlineColor: var(--salt-focused-outlineColor);
2063
+ --link-color-visited: var(--salt-content-foreground-visited);
1950
2064
  }
1951
- .saltText-secondary {
2065
+ .saltLink-secondary {
1952
2066
  --link-color: var(--salt-content-secondary-foreground);
2067
+ --link-color-hover: var(--salt-content-secondary-foreground);
2068
+ --link-color-active: var(--salt-content-secondary-foreground);
2069
+ --link-color-focus: var(--salt-content-secondary-foreground);
2070
+ --link-focus-outlineColor: var(--salt-focused-outlineColor);
2071
+ --link-color-visited: var(--salt-content-foreground-visited);
2072
+ }
2073
+ .saltLink-accent {
2074
+ --link-color: var(--salt-content-accent-foreground);
2075
+ --link-color-hover: var(--salt-content-accent-foreground);
2076
+ --link-color-active: var(--salt-content-accent-foreground);
2077
+ --link-color-focus: var(--salt-content-accent-foreground);
2078
+ --link-focus-outlineColor: var(--salt-focused-outlineColor);
2079
+ --link-color-visited: var(--salt-content-foreground-visited);
1953
2080
  }
1954
2081
  .saltLink .saltLink-icon {
1955
2082
  margin-left: var(--salt-spacing-75);
1956
2083
  margin-bottom: -2px;
1957
2084
  }
1958
2085
  .saltLink:visited {
1959
- color: var(--link-color-visited);
2086
+ color: var(--saltLink-color-visited, var(--link-color-visited));
2087
+ text-decoration: var(--link-textDecoration-visited);
1960
2088
  }
1961
2089
  .saltLink:hover {
1962
- color: var(--link-color-hover);
2090
+ color: var(--saltLink-color-hover, var(--link-color-hover));
1963
2091
  text-decoration: var(--link-textDecoration-hover);
1964
2092
  }
1965
2093
  .saltLink:active {
1966
- color: var(--link-color-active);
2094
+ color: var(--saltLink-color-active, var(--link-color-active));
2095
+ text-decoration: var(--link-textDecoration-active);
1967
2096
  }
1968
2097
  .saltLink:focus {
1969
- outline: var(--link-focus-outline);
1970
- color: var(--link-color-focus);
1971
- text-decoration: var(--link-textDecoration-hover);
2098
+ color: var(--saltLink-color-focus, var(--link-color-focus));
2099
+ outline: var(--salt-focused-outline);
2100
+ outline-color: var(--link-focus-outlineColor);
2101
+ text-decoration: var(--link-textDecoration-focus);
1972
2102
  }
1973
2103
  .saltLink-externalLinkADA {
1974
2104
  display: block;
@@ -1983,16 +2113,17 @@ a:focus .saltCard-interactable.saltCard-disabled {
1983
2113
 
1984
2114
  /* src/link-card/LinkCard.css */
1985
2115
  .saltLinkCard {
1986
- border-width: var(--saltLinkCard-borderWidth, var(--salt-size-border));
1987
- border-style: var(--saltLinkCard-borderStyle, var(--salt-container-borderStyle));
1988
2116
  border-radius: var(--saltLinkCard-borderRadius, var(--salt-palette-corner, 0));
2117
+ border-style: var(--saltLinkCard-borderStyle, var(--salt-container-borderStyle));
2118
+ border-width: var(--saltLinkCard-borderWidth, var(--salt-size-border));
2119
+ box-shadow: var(--salt-overlayable-shadow);
1989
2120
  display: block;
2121
+ overflow: hidden;
1990
2122
  padding: var(--saltLinkCard-padding, var(--salt-spacing-200));
1991
2123
  position: relative;
1992
2124
  text-decoration: none;
1993
2125
  transition: box-shadow var(--salt-duration-instant) ease-in-out;
1994
2126
  --linkCard-accent-color: var(--salt-accent-background);
1995
- overflow: hidden;
1996
2127
  }
1997
2128
  .saltLinkCard-primary {
1998
2129
  background: var(--saltLinkCard-background, var(--salt-container-primary-background));
@@ -2146,6 +2277,9 @@ a:focus .saltCard-interactable.saltCard-disabled {
2146
2277
  box-shadow: 0 calc(var(--salt-size-border) * -1) 0 0 var(--salt-selectable-borderColor-selected), 0 var(--salt-size-border) 0 0 var(--salt-selectable-borderColor-selected);
2147
2278
  box-shadow: 0 calc(var(--salt-size-border) * -1) 0 0 var(--salt-selectable-borderColor-selected), 0 var(--salt-size-border) 0 0 var(--salt-selectable-borderColor-selected);
2148
2279
  }
2280
+ .saltMenuItem .saltIcon:not(.saltCheckboxIcon-icon) {
2281
+ min-height: var(--salt-text-lineHeight);
2282
+ }
2149
2283
  .saltMenuItem-expandIcon.saltIcon {
2150
2284
  margin-left: auto;
2151
2285
  }
@@ -2544,6 +2678,9 @@ a:focus .saltCard-interactable.saltCard-disabled {
2544
2678
  color: var(--salt-content-primary-foreground-disabled);
2545
2679
  cursor: var(--salt-selectable-cursor-disabled);
2546
2680
  }
2681
+ .saltOption .saltIcon:not(.saltCheckboxIcon-icon) {
2682
+ min-height: var(--salt-text-lineHeight);
2683
+ }
2547
2684
 
2548
2685
  /* src/option/OptionGroup.css */
2549
2686
  .saltOptionGroup-label {
@@ -2689,30 +2826,46 @@ a:focus .saltCard-interactable.saltCard-disabled {
2689
2826
 
2690
2827
  /* src/pagination/PageButton.css */
2691
2828
  .saltPageButton {
2692
- --saltButton-minWidth: var(--salt-size-base);
2693
- --saltButton-fontWeight: var(--salt-text-fontWeight);
2694
- --saltButton-height: var(--salt-size-base);
2695
- --saltButton-text-color: var(--salt-content-primary-foreground);
2696
- --saltButton-background-active: var(--salt-selectable-background-selected);
2697
- --saltButton-text-color-active: var(--salt-content-primary-foreground);
2829
+ min-width: var(--salt-size-base);
2830
+ font-weight: var(--salt-text-fontWeight);
2831
+ height: var(--salt-size-base);
2832
+ color: var(--salt-content-primary-foreground);
2833
+ background: var(--salt-selectable-background);
2834
+ appearance: none;
2835
+ box-sizing: border-box;
2836
+ padding: 0 var(--salt-spacing-100);
2837
+ border: none;
2838
+ font-size: var(--salt-text-fontSize);
2839
+ font-family: var(--salt-text-action-fontFamily);
2840
+ line-height: var(--salt-text-lineHeight);
2841
+ letter-spacing: var(--salt-text-action-letterSpacing);
2842
+ cursor: var(--salt-selectable-cursor-hover);
2843
+ border-radius: var(--salt-palette-corner-weak, 0);
2698
2844
  }
2699
2845
  .saltPageButton:hover,
2700
2846
  .saltPageButton:focus-visible {
2701
- --saltButton-text-color-hover: var(--salt-content-primary-foreground);
2702
- --saltButton-background-hover: var(--salt-selectable-background-hover);
2847
+ background: var(--salt-selectable-background-hover);
2848
+ }
2849
+ .saltPageButton:active,
2850
+ .saltPageButton-active {
2851
+ background: var(--salt-selectable-background-selected);
2852
+ }
2853
+ .saltPageButton:focus-visible {
2854
+ outline: var(--salt-focused-outline);
2703
2855
  }
2704
2856
  .saltPageButton:disabled {
2705
- --saltButton-text-color-disabled: var(--salt-content-secondary-foreground);
2706
- --saltButton-cursor-disabled: var(--salt-editable-cursor-readonly);
2857
+ color: var(--salt-content-secondary-foreground);
2858
+ background: var(--salt-selectable-background);
2859
+ cursor: var(--salt-editable-cursor-readonly);
2707
2860
  }
2708
2861
  .saltPageButton-selected {
2709
- --saltButton-background: var(--salt-selectable-background-selected);
2862
+ background: var(--salt-selectable-background-selected);
2710
2863
  }
2711
2864
  .saltPageButton-selected:focus-visible {
2712
- --saltButton-background-hover: var(--salt-selectable-background-selected);
2865
+ background: var(--salt-selectable-background-selected);
2713
2866
  }
2714
2867
  .saltPageButton-fixed {
2715
- --saltButton-padding: 0;
2868
+ padding: 0;
2716
2869
  }
2717
2870
 
2718
2871
  /* src/pagination/PageRanges.css */
@@ -2736,11 +2889,11 @@ a:focus .saltCard-interactable.saltCard-disabled {
2736
2889
  display: flex;
2737
2890
  flex-wrap: nowrap;
2738
2891
  }
2739
- .saltPaginator-arrowButton-previous {
2740
- --saltButton-margin: 0 var(--salt-spacing-100) 0 0;
2892
+ .saltPaginator-arrowButton-previous.saltButton {
2893
+ margin: 0 var(--salt-spacing-100) 0 0;
2741
2894
  }
2742
- .saltPaginator-arrowButton-next {
2743
- --saltButton-margin: 0 0 0 var(--salt-spacing-100);
2895
+ .saltPaginator-arrowButton-next.saltButton {
2896
+ margin: 0 0 0 var(--salt-spacing-100);
2744
2897
  }
2745
2898
 
2746
2899
  /* src/panel/Panel.css */
@@ -3339,7 +3492,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
3339
3492
  box-sizing: border-box;
3340
3493
  color: var(--salt-content-primary-foreground);
3341
3494
  letter-spacing: var(--salt-text-letterSpacing);
3342
- text-decoration: var(--salt-navigable-textDecoration);
3495
+ text-decoration: var(--salt-typography-textDecoration-underline);
3343
3496
  font-family: var(--salt-text-fontFamily);
3344
3497
  white-space: nowrap;
3345
3498
  background: var(--saltSkipLink-background, var(--salt-container-primary-background));
@@ -3847,6 +4000,13 @@ a:focus .saltCard-interactable.saltCard-disabled {
3847
4000
  text-align: var(--salt-text-action-textAlign);
3848
4001
  font-weight: var(--salt-text-action-fontWeight);
3849
4002
  }
4003
+ .saltText-action.saltText strong {
4004
+ font-weight: var(--salt-text-action-fontWeight-strong);
4005
+ }
4006
+ .saltText-action.saltText small {
4007
+ font-size: inherit;
4008
+ font-weight: var(--salt-text-action-fontWeight-small);
4009
+ }
3850
4010
  code.saltText,
3851
4011
  .saltText-code.saltText {
3852
4012
  font-family: var(--salt-text-code-fontFamily);
@@ -4367,4 +4527,4 @@ label.saltText small,
4367
4527
  }
4368
4528
  }
4369
4529
 
4370
- /* src/01290561-3655-4333-9891-20d24ed36bf9.css */
4530
+ /* src/69f9d8f9-ed5e-44e2-9a8c-b7ed2155ac5d.css */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltAccordionHeader {\n display: flex;\n gap: var(--salt-spacing-100);\n padding: var(--salt-spacing-50) var(--salt-spacing-100);\n border: 0;\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n background: transparent;\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n font-family: var(--salt-text-fontFamily);\n color: var(--salt-content-primary-foreground);\n font-weight: var(--salt-text-fontWeight-strong);\n text-align: left;\n cursor: var(--salt-actionable-cursor-hover);\n box-sizing: border-box;\n}\n\n.saltAccordionHeader:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(-1 * var(--salt-focused-outlineWidth));\n}\n\n.saltAccordionHeader-content {\n padding: var(--salt-spacing-75) 0;\n width: 100%;\n box-sizing: border-box;\n}\n\n.saltAccordionHeader .saltAccordionHeader-icon {\n height: var(--salt-size-base);\n}\n\n.saltAccordionHeader-error {\n background: var(--salt-status-error-background);\n}\n\n.saltAccordionHeader-error:focus-visible {\n outline-color: var(--salt-status-error-borderColor);\n}\n\n.saltAccordionHeader-warning {\n background: var(--salt-status-warning-background);\n}\n\n.saltAccordionHeader-warning:focus-visible {\n outline-color: var(--salt-status-warning-borderColor);\n}\n\n.saltAccordionHeader-success {\n background: var(--salt-status-success-background);\n}\n\n.saltAccordionHeader-success:focus-visible {\n outline-color: var(--salt-status-error-borderColor);\n}\n\n.saltAccordionHeader .saltAccordionHeader-statusIndicator {\n height: var(--salt-size-base);\n margin-left: auto;\n}\n\n.saltAccordionHeader:disabled {\n background: transparent;\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-actionable-cursor-disabled);\n}\n";
3
+ var css_248z = ".saltAccordionHeader {\n display: flex;\n gap: var(--salt-spacing-100);\n padding: var(--salt-spacing-50) var(--salt-spacing-100);\n border: 0;\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n background: transparent;\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n font-family: var(--salt-text-fontFamily);\n color: var(--salt-content-primary-foreground);\n font-weight: var(--salt-text-fontWeight-strong);\n text-align: left;\n cursor: var(--salt-actionable-cursor-hover);\n box-sizing: border-box;\n -webkit-tap-highlight-color: transparent;\n}\n\n.saltAccordionHeader:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(-1 * var(--salt-focused-outlineWidth));\n}\n\n.saltAccordionHeader-content {\n padding: var(--salt-spacing-75) 0;\n width: 100%;\n box-sizing: border-box;\n}\n\n.saltAccordionHeader .saltAccordionHeader-icon {\n height: var(--salt-size-base);\n}\n\n.saltAccordionHeader-error {\n background: var(--salt-status-error-background);\n}\n\n.saltAccordionHeader-error:focus-visible {\n outline-color: var(--salt-status-error-borderColor);\n}\n\n.saltAccordionHeader-warning {\n background: var(--salt-status-warning-background);\n}\n\n.saltAccordionHeader-warning:focus-visible {\n outline-color: var(--salt-status-warning-borderColor);\n}\n\n.saltAccordionHeader-success {\n background: var(--salt-status-success-background);\n}\n\n.saltAccordionHeader-success:focus-visible {\n outline-color: var(--salt-status-error-borderColor);\n}\n\n.saltAccordionHeader .saltAccordionHeader-statusIndicator {\n height: var(--salt-size-base);\n margin-left: auto;\n}\n\n.saltAccordionHeader:disabled {\n background: transparent;\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-actionable-cursor-disabled);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=AccordionHeader.css.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = "/* Default variables applied to the root element */\n.saltAvatar {\n --avatar-foreground: var(--saltAvatar-foreground, var(--salt-accent-foreground));\n --avatar-size-multiplier: var(--saltAvatar-size-multiplier, 1);\n --avatar-base-size: var(--salt-size-base, 12px);\n --avatar-base-fontSize: var(--saltAvatar-fontSize, var(--salt-text-notation-fontSize));\n --avatar-container-size: calc(var(--avatar-base-size) * var(--avatar-size-multiplier));\n --avatar-fontSize: calc(var(--avatar-base-fontSize) * var(--avatar-size-multiplier));\n /* Icon styling */\n --saltIcon-size: calc(var(--avatar-container-size) / 2);\n}\n\n/* Style applied to the root element */\n.saltAvatar {\n line-height: var(--saltAvatar-lineHeight, var(--salt-text-notation-lineHeight));\n display: flex;\n justify-content: center;\n align-items: center;\n background: var(--saltAvatar-background, var(--salt-accent-background));\n color: var(--avatar-foreground);\n font-size: var(--avatar-fontSize);\n font-family: var(--salt-text-fontFamily);\n font-weight: var(--salt-text-fontWeight);\n width: var(--avatar-container-size);\n min-width: var(--avatar-container-size);\n height: var(--avatar-container-size);\n min-height: var(--avatar-container-size);\n overflow: hidden;\n user-select: none;\n border-radius: var(--saltAvatar-borderRadius, var(--salt-palette-corner-strongest, 50%));\n}\n.saltAvatar:has(img),\n.saltAvatar-withImage {\n background: none;\n}\n/* Style applied to the image/svg element. We specifically allow SVGs as the Avatar image to enable SVGs such as Flags to take up the full Avatar space */\n.saltAvatar > img,\n.saltAvatar > svg:not(.saltIcon) {\n width: 100%;\n height: 100%;\n}\n";
3
+ var css_248z = "/* Default variables applied to the root element */\n.saltAvatar {\n --avatar-size-multiplier: var(--saltAvatar-size-multiplier, 1);\n --avatar-base-size: var(--salt-size-base);\n --avatar-base-fontSize: var(--saltAvatar-fontSize, var(--salt-text-notation-fontSize));\n --avatar-container-size: calc(var(--avatar-base-size) * var(--avatar-size-multiplier));\n --avatar-fontSize: calc(var(--avatar-base-fontSize) * var(--avatar-size-multiplier));\n /* Icon styling */\n --saltIcon-size: calc(var(--avatar-container-size) / 2);\n}\n\n/* Style applied to the root element */\n.saltAvatar {\n color: var(--saltAvatar-foreground, var(--avatar-foreground));\n background: var(--saltAvatar-background, var(--avatar-background));\n font-size: var(--avatar-fontSize);\n line-height: var(--saltAvatar-lineHeight, var(--salt-text-notation-lineHeight));\n font-family: var(--salt-text-fontFamily);\n font-weight: var(--salt-text-fontWeight);\n width: var(--avatar-container-size);\n min-width: var(--avatar-container-size);\n height: var(--avatar-container-size);\n min-height: var(--avatar-container-size);\n border-radius: var(--saltAvatar-borderRadius, var(--salt-palette-corner-strongest, 50%));\n\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n user-select: none;\n}\n\n.saltAvatar-accent {\n --avatar-background: var(--salt-accent-background);\n --avatar-foreground: var(--salt-accent-foreground);\n}\n\n.saltAvatar-category-1 {\n --avatar-background: var(--salt-category-1-bold-background);\n --avatar-foreground: var(--salt-category-1-bold-foreground);\n}\n.saltAvatar-category-2 {\n --avatar-background: var(--salt-category-2-bold-background);\n --avatar-foreground: var(--salt-category-2-bold-foreground);\n}\n\n.saltAvatar-category-3 {\n --avatar-background: var(--salt-category-3-bold-background);\n --avatar-foreground: var(--salt-category-3-bold-foreground);\n}\n\n.saltAvatar-category-4 {\n --avatar-background: var(--salt-category-4-bold-background);\n --avatar-foreground: var(--salt-category-4-bold-foreground);\n}\n\n.saltAvatar-category-5 {\n --avatar-background: var(--salt-category-5-bold-background);\n --avatar-foreground: var(--salt-category-5-bold-foreground);\n}\n\n.saltAvatar-category-6 {\n --avatar-background: var(--salt-category-6-bold-background);\n --avatar-foreground: var(--salt-category-6-bold-foreground);\n}\n\n.saltAvatar-category-7 {\n --avatar-background: var(--salt-category-7-bold-background);\n --avatar-foreground: var(--salt-category-7-bold-foreground);\n}\n\n.saltAvatar-category-8 {\n --avatar-background: var(--salt-category-8-bold-background);\n --avatar-foreground: var(--salt-category-8-bold-foreground);\n}\n\n.saltAvatar-category-9 {\n --avatar-background: var(--salt-category-9-bold-background);\n --avatar-foreground: var(--salt-category-9-bold-foreground);\n}\n\n.saltAvatar-category-10 {\n --avatar-background: var(--salt-category-10-bold-background);\n --avatar-foreground: var(--salt-category-10-bold-foreground);\n}\n.saltAvatar-category-11 {\n --avatar-background: var(--salt-category-11-bold-background);\n --avatar-foreground: var(--salt-category-11-bold-foreground);\n}\n.saltAvatar-category-12 {\n --avatar-background: var(--salt-category-12-bold-background);\n --avatar-foreground: var(--salt-category-12-bold-foreground);\n}\n.saltAvatar-category-13 {\n --avatar-background: var(--salt-category-13-bold-background);\n --avatar-foreground: var(--salt-category-13-bold-foreground);\n}\n.saltAvatar-category-14 {\n --avatar-background: var(--salt-category-14-bold-background);\n --avatar-foreground: var(--salt-category-14-bold-foreground);\n}\n.saltAvatar-category-15 {\n --avatar-background: var(--salt-category-15-bold-background);\n --avatar-foreground: var(--salt-category-15-bold-foreground);\n}\n.saltAvatar-category-16 {\n --avatar-background: var(--salt-category-16-bold-background);\n --avatar-foreground: var(--salt-category-16-bold-foreground);\n}\n.saltAvatar-category-17 {\n --avatar-background: var(--salt-category-17-bold-background);\n --avatar-foreground: var(--salt-category-17-bold-foreground);\n}\n.saltAvatar-category-18 {\n --avatar-background: var(--salt-category-18-bold-background);\n --avatar-foreground: var(--salt-category-18-bold-foreground);\n}\n.saltAvatar-category-19 {\n --avatar-background: var(--salt-category-19-bold-background);\n --avatar-foreground: var(--salt-category-19-bold-foreground);\n}\n.saltAvatar-category-20 {\n --avatar-background: var(--salt-category-20-bold-background);\n --avatar-foreground: var(--salt-category-20-bold-foreground);\n}\n\n.saltAvatar:has(img),\n.saltAvatar-withImage {\n --avatar-background: none;\n}\n\n/* Style applied to the image/svg element. We specifically allow SVGs as the Avatar image to enable SVGs such as Flags to take up the full Avatar space */\n.saltAvatar > img,\n.saltAvatar > svg:not(.saltIcon) {\n width: 100%;\n height: 100%;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=Avatar.css.js.map
@@ -20,6 +20,7 @@ const defaultNameToInitials = (name) => name == null ? void 0 : name.split(" ").
20
20
  const Avatar = React.forwardRef(function Avatar2({
21
21
  className,
22
22
  children: childrenProp,
23
+ color = "accent",
23
24
  name,
24
25
  nameToInitials = defaultNameToInitials,
25
26
  src,
@@ -30,7 +31,7 @@ const Avatar = React.forwardRef(function Avatar2({
30
31
  }, ref) {
31
32
  const targetWindow = window.useWindow();
32
33
  const { UserIcon } = SemanticIconProvider.useIcon();
33
- const fallbackIcon = fallbackIconProp === void 0 ? /* @__PURE__ */ jsxRuntime.jsx(UserIcon, { "aria-label": "User Avatar" }) : fallbackIconProp;
34
+ const fallbackIcon = fallbackIconProp === void 0 ? /* @__PURE__ */ jsxRuntime.jsx(UserIcon, { "aria-hidden": true }) : fallbackIconProp;
34
35
  styles.useComponentCssInjection({
35
36
  testId: "salt-avatar",
36
37
  css: Avatar$1,
@@ -44,15 +45,11 @@ const Avatar = React.forwardRef(function Avatar2({
44
45
  const status = useAvatarImage.useAvatarImage({ src });
45
46
  const hasImgNotFailing = status === "loaded";
46
47
  if (hasImgNotFailing) {
47
- children = /* @__PURE__ */ jsxRuntime.jsx("img", { alt: name, src });
48
+ children = /* @__PURE__ */ jsxRuntime.jsx("img", { alt: "", src });
48
49
  } else if (childrenProp != null) {
49
50
  children = childrenProp;
50
51
  }
51
52
  const avatarInitials = nameToInitials(name);
52
- const initialsProps = avatarInitials ? {
53
- role: "img",
54
- "aria-label": name
55
- } : {};
56
53
  return /* @__PURE__ */ jsxRuntime.jsx(
57
54
  "div",
58
55
  {
@@ -60,10 +57,14 @@ const Avatar = React.forwardRef(function Avatar2({
60
57
  style,
61
58
  className: clsx.clsx(
62
59
  withBaseName(),
63
- { [withBaseName("withImage")]: hasImgNotFailing },
60
+ withBaseName(color),
61
+ {
62
+ [withBaseName("withImage")]: hasImgNotFailing
63
+ },
64
64
  className
65
65
  ),
66
- ...initialsProps,
66
+ role: name ? "img" : void 0,
67
+ "aria-label": name,
67
68
  ...rest,
68
69
  children: children || avatarInitials || fallbackIcon
69
70
  }
@@ -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 { type HTMLAttributes, type ReactNode, forwardRef } 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\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 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-label=\"User Avatar\" />\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={name} src={src} />;\n } else if (childrenProp != null) {\n children = childrenProp;\n }\n\n const avatarInitials = nameToInitials(name);\n\n const initialsProps = avatarInitials\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(\"withImage\")]: hasImgNotFailing },\n className,\n )}\n {...initialsProps}\n {...rest}\n >\n {children || avatarInitials || fallbackIcon}\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","Avatar","useWindow","useIcon","useComponentCssInjection","avatarCss","useAvatarImage","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;;AAmCA,MAAM,YAAA,GAAeA,0BAAa,YAAY,CAAA;AAC9C,MAAM,mBAAsB,GAAA,CAAA;AAE5B,MAAM,wBAAwB,CAAC,IAAA,KAC7B,IACI,IAAA,IAAA,GAAA,KAAA,CAAA,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,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,KAAA,CAAA,kCAClB,QAAS,EAAA,EAAA,YAAA,EAAW,eAAc,CAEnC,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,GAAK,EAAA,IAAA,EAAM,GAAU,EAAA,CAAA;AAAA,GACvC,MAAA,IAAW,gBAAgB,IAAM,EAAA;AAC/B,IAAW,QAAA,GAAA,YAAA;AAAA;AAGb,EAAM,MAAA,cAAA,GAAiB,eAAe,IAAI,CAAA;AAE1C,EAAA,MAAM,gBAAgB,cAClB,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,EAAE,CAAC,YAAA,CAAa,WAAW,CAAC,GAAG,gBAAiB,EAAA;AAAA,QAChD;AAAA,OACF;AAAA,MACC,GAAG,aAAA;AAAA,MACH,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 { type HTMLAttributes, type ReactNode, forwardRef } 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,KAAA,CAAA,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,KAAA,CAAA,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,KAAA,CAAA;AAAA,MACrB,YAAY,EAAA,IAAA;AAAA,MACX,GAAG,IAAA;AAAA,MAEH,sBAAY,cAAkB,IAAA;AAAA;AAAA,GACjC;AAEJ,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"BorderItem.js","sources":["../src/border-item/BorderItem.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ElementType, type ReactElement, forwardRef } from \"react\";\nimport { GridItem, type GridItemProps } from \"../grid-item\";\nimport {\n type PolymorphicComponentPropWithRef,\n type PolymorphicRef,\n makePrefixer,\n} from \"../utils\";\nimport borderItemCss from \"./BorderItem.css\";\n\nexport const BORDER_POSITION = [\n \"north\",\n \"west\",\n \"center\",\n \"east\",\n \"south\",\n] as const;\n\nexport type BorderPosition = (typeof BORDER_POSITION)[number];\n\nexport type BorderItemProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * Aligns a grid item inside a cell along the inline (row) axis. Defaults to \"stretch\"\n */\n horizontalAlignment?: GridItemProps<T>[\"horizontalAlignment\"];\n /**\n * Aligns a grid item inside a cell along the block (column) axis. Defaults to \"stretch\"\n */\n verticalAlignment?: GridItemProps<T>[\"verticalAlignment\"];\n /**\n * Position in the Border Layout\n */\n position: BorderPosition;\n /**\n * Defines if the item should stick to the edges of its container. Defaults to \"false\"\n */\n sticky?: boolean;\n }\n >;\n\nconst withBaseName = makePrefixer(\"saltBorderItem\");\n\ntype BorderItemComponent = <T extends ElementType = \"div\">(\n props: BorderItemProps<T>,\n) => ReactElement | null;\n\nexport const BorderItem: BorderItemComponent = forwardRef(\n <T extends ElementType>(\n {\n children,\n className,\n position,\n sticky = false,\n style,\n ...rest\n }: BorderItemProps<T>,\n ref?: PolymorphicRef<T>,\n ) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-border-item\",\n css: borderItemCss,\n window: targetWindow,\n });\n\n const gridItemStyles = {\n ...style,\n \"--gridItem-gridArea\": position,\n };\n\n return (\n <GridItem\n ref={ref}\n className={clsx(\n withBaseName(),\n \"saltGridItem-area\",\n {\n [withBaseName(\"sticky\")]: sticky,\n },\n className,\n )}\n style={gridItemStyles}\n {...rest}\n >\n {children}\n </GridItem>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","useWindow","useComponentCssInjection","borderItemCss","jsx","GridItem","clsx"],"mappings":";;;;;;;;;;;;;;;AAYO,MAAM,eAAkB,GAAA;AAAA,EAC7B,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF;AA2BA,MAAM,YAAA,GAAeA,0BAAa,gBAAgB,CAAA;AAM3C,MAAM,UAAkC,GAAAC,gBAAA;AAAA,EAC7C,CACE;AAAA,IACE,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAS,GAAA,KAAA;AAAA,IACT,KAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,kBAAA;AAAA,MACR,GAAK,EAAAC,YAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,cAAiB,GAAA;AAAA,MACrB,GAAG,KAAA;AAAA,MACH,qBAAuB,EAAA;AAAA,KACzB;AAEA,IACE,uBAAAC,cAAA;AAAA,MAACC,iBAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAW,EAAAC,SAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb,mBAAA;AAAA,UACA;AAAA,YACE,CAAC,YAAA,CAAa,QAAQ,CAAC,GAAG;AAAA,WAC5B;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAO,EAAA,cAAA;AAAA,QACN,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA;AAGN;;;;;"}
1
+ {"version":3,"file":"BorderItem.js","sources":["../src/border-item/BorderItem.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ElementType, type ReactElement, forwardRef } from \"react\";\nimport { GridItem, type GridItemProps } from \"../grid-item\";\nimport {\n type PolymorphicComponentPropWithRef,\n type PolymorphicRef,\n type ResponsiveProp,\n makePrefixer,\n} from \"../utils\";\nimport borderItemCss from \"./BorderItem.css\";\n\nexport const BORDER_POSITION = [\n \"north\",\n \"west\",\n \"center\",\n \"east\",\n \"south\",\n] as const;\n\nexport type BorderPosition = (typeof BORDER_POSITION)[number];\n\nexport type BorderItemProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * Aligns a grid item inside a cell along the inline (row) axis. Defaults to \"stretch\"\n */\n horizontalAlignment?: GridItemProps<T>[\"horizontalAlignment\"];\n /**\n * Aligns a grid item inside a cell along the block (column) axis. Defaults to \"stretch\"\n */\n verticalAlignment?: GridItemProps<T>[\"verticalAlignment\"];\n /**\n * Position in the Border Layout\n */\n position: BorderPosition;\n /**\n * Defines if the item should stick to the edges of its container. Defaults to \"false\"\n */\n sticky?: boolean;\n /**\n * Defines the margin around the component. It can be specified as a number (which acts as a multiplier) or a string representing the margin value. Default is `0`.\n */\n margin?: ResponsiveProp<number | string>;\n /**\n * Defines the padding within the component. It can be specified as a number (which acts as a multiplier) or a string representing the padding value. Default is `0`.\n */\n padding?: ResponsiveProp<number | string>;\n }\n >;\n\nconst withBaseName = makePrefixer(\"saltBorderItem\");\n\ntype BorderItemComponent = <T extends ElementType = \"div\">(\n props: BorderItemProps<T>,\n) => ReactElement | null;\n\nexport const BorderItem: BorderItemComponent = forwardRef(\n <T extends ElementType>(\n {\n children,\n className,\n position,\n sticky = false,\n style,\n ...rest\n }: BorderItemProps<T>,\n ref?: PolymorphicRef<T>,\n ) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-border-item\",\n css: borderItemCss,\n window: targetWindow,\n });\n\n const gridItemStyles = {\n ...style,\n \"--gridItem-gridArea\": position,\n };\n\n return (\n <GridItem\n ref={ref}\n className={clsx(\n withBaseName(),\n \"saltGridItem-area\",\n {\n [withBaseName(\"sticky\")]: sticky,\n },\n className,\n )}\n style={gridItemStyles}\n {...rest}\n >\n {children}\n </GridItem>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","useWindow","useComponentCssInjection","borderItemCss","jsx","GridItem","clsx"],"mappings":";;;;;;;;;;;;;;;AAaO,MAAM,eAAkB,GAAA;AAAA,EAC7B,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF;AAmCA,MAAM,YAAA,GAAeA,0BAAa,gBAAgB,CAAA;AAM3C,MAAM,UAAkC,GAAAC,gBAAA;AAAA,EAC7C,CACE;AAAA,IACE,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAS,GAAA,KAAA;AAAA,IACT,KAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,kBAAA;AAAA,MACR,GAAK,EAAAC,YAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,cAAiB,GAAA;AAAA,MACrB,GAAG,KAAA;AAAA,MACH,qBAAuB,EAAA;AAAA,KACzB;AAEA,IACE,uBAAAC,cAAA;AAAA,MAACC,iBAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAW,EAAAC,SAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb,mBAAA;AAAA,UACA;AAAA,YACE,CAAC,YAAA,CAAa,QAAQ,CAAC,GAAG;AAAA,WAC5B;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAO,EAAA,cAAA;AAAA,QACN,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA;AAGN;;;;;"}