@salt-ds/core 1.13.3 → 1.14.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.
- package/css/salt-core.css +54 -63
- package/dist-cjs/accordion/AccordionHeader.css.js +1 -1
- package/dist-cjs/avatar/Avatar.css.js +1 -1
- package/dist-cjs/button/Button.css.js +1 -1
- package/dist-cjs/checkbox/Checkbox.js +8 -8
- package/dist-cjs/checkbox/Checkbox.js.map +1 -1
- package/dist-cjs/checkbox/CheckboxGroup.js +6 -3
- package/dist-cjs/checkbox/CheckboxGroup.js.map +1 -1
- package/dist-cjs/checkbox/CheckboxIcon.css.js +1 -1
- package/dist-cjs/checkbox/internal/CheckboxGroupContext.js +11 -5
- package/dist-cjs/checkbox/internal/CheckboxGroupContext.js.map +1 -1
- package/dist-cjs/checkbox/internal/useCheckboxGroup.js.map +1 -1
- package/dist-cjs/form-field-context/FormFieldContext.js.map +1 -1
- package/dist-cjs/index.js +2 -0
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/input/Input.css.js +1 -1
- package/dist-cjs/input/Input.js.map +1 -1
- package/dist-cjs/link/Link.css.js +1 -1
- package/dist-cjs/multiline-input/MultilineInput.js.map +1 -1
- package/dist-cjs/pill/Pill.css.js +6 -0
- package/dist-cjs/pill/Pill.css.js.map +1 -0
- package/dist-cjs/pill/Pill.js +64 -0
- package/dist-cjs/pill/Pill.js.map +1 -0
- package/dist-cjs/radio-button/RadioButton.js +11 -11
- package/dist-cjs/radio-button/RadioButton.js.map +1 -1
- package/dist-cjs/radio-button/RadioButtonGroup.js +6 -3
- package/dist-cjs/radio-button/RadioButtonGroup.js.map +1 -1
- package/dist-cjs/radio-button/RadioButtonIcon.css.js +1 -1
- package/dist-cjs/radio-button/internal/RadioGroupContext.js +1 -4
- package/dist-cjs/radio-button/internal/RadioGroupContext.js.map +1 -1
- package/dist-cjs/status-indicator/StatusIndicator.css.js +1 -1
- package/dist-cjs/switch/Switch.css.js +1 -1
- package/dist-cjs/switch/Switch.js +1 -1
- package/dist-cjs/switch/Switch.js.map +1 -1
- package/dist-cjs/toggle-button/ToggleButton.css.js +1 -1
- package/dist-cjs/toggle-button/ToggleButton.js.map +1 -1
- package/dist-cjs/tooltip/Tooltip.js +2 -2
- package/dist-cjs/tooltip/Tooltip.js.map +1 -1
- package/dist-cjs/tooltip/useTooltip.js +1 -6
- package/dist-cjs/tooltip/useTooltip.js.map +1 -1
- package/dist-cjs/utils/marginMiddleware.js +2 -2
- package/dist-cjs/utils/marginMiddleware.js.map +1 -1
- package/dist-cjs/utils/useFloatingUI/useFloatingUI.js +13 -5
- package/dist-cjs/utils/useFloatingUI/useFloatingUI.js.map +1 -1
- package/dist-es/accordion/AccordionHeader.css.js +1 -1
- package/dist-es/avatar/Avatar.css.js +1 -1
- package/dist-es/button/Button.css.js +1 -1
- package/dist-es/checkbox/Checkbox.js +8 -8
- package/dist-es/checkbox/Checkbox.js.map +1 -1
- package/dist-es/checkbox/CheckboxGroup.js +6 -3
- package/dist-es/checkbox/CheckboxGroup.js.map +1 -1
- package/dist-es/checkbox/CheckboxIcon.css.js +1 -1
- package/dist-es/checkbox/internal/CheckboxGroupContext.js +11 -5
- package/dist-es/checkbox/internal/CheckboxGroupContext.js.map +1 -1
- package/dist-es/checkbox/internal/useCheckboxGroup.js.map +1 -1
- package/dist-es/form-field-context/FormFieldContext.js.map +1 -1
- package/dist-es/index.js +1 -0
- package/dist-es/index.js.map +1 -1
- package/dist-es/input/Input.css.js +1 -1
- package/dist-es/input/Input.js.map +1 -1
- package/dist-es/link/Link.css.js +1 -1
- package/dist-es/multiline-input/MultilineInput.js.map +1 -1
- package/dist-es/pill/Pill.css.js +4 -0
- package/dist-es/pill/Pill.css.js.map +1 -0
- package/dist-es/pill/Pill.js +56 -0
- package/dist-es/pill/Pill.js.map +1 -0
- package/dist-es/radio-button/RadioButton.js +11 -11
- package/dist-es/radio-button/RadioButton.js.map +1 -1
- package/dist-es/radio-button/RadioButtonGroup.js +6 -3
- package/dist-es/radio-button/RadioButtonGroup.js.map +1 -1
- package/dist-es/radio-button/RadioButtonIcon.css.js +1 -1
- package/dist-es/radio-button/internal/RadioGroupContext.js +1 -4
- package/dist-es/radio-button/internal/RadioGroupContext.js.map +1 -1
- package/dist-es/status-indicator/StatusIndicator.css.js +1 -1
- package/dist-es/switch/Switch.css.js +1 -1
- package/dist-es/switch/Switch.js +1 -1
- package/dist-es/switch/Switch.js.map +1 -1
- package/dist-es/toggle-button/ToggleButton.css.js +1 -1
- package/dist-es/toggle-button/ToggleButton.js.map +1 -1
- package/dist-es/tooltip/Tooltip.js +2 -2
- package/dist-es/tooltip/Tooltip.js.map +1 -1
- package/dist-es/tooltip/useTooltip.js +1 -6
- package/dist-es/tooltip/useTooltip.js.map +1 -1
- package/dist-es/utils/marginMiddleware.js +2 -2
- package/dist-es/utils/marginMiddleware.js.map +1 -1
- package/dist-es/utils/useFloatingUI/useFloatingUI.js +13 -5
- package/dist-es/utils/useFloatingUI/useFloatingUI.js.map +1 -1
- package/dist-types/checkbox/internal/CheckboxGroupContext.d.ts +1 -3
- package/dist-types/checkbox/internal/useCheckboxGroup.d.ts +1 -2
- package/dist-types/form-field-context/FormFieldContext.d.ts +1 -2
- package/dist-types/index.d.ts +1 -0
- package/dist-types/pill/Pill.d.ts +4 -0
- package/dist-types/pill/index.d.ts +1 -0
- package/dist-types/radio-button/internal/RadioGroupContext.d.ts +1 -3
- package/dist-types/radio-button/internal/useRadioGroup.d.ts +1 -1
- package/dist-types/toggle-button/ToggleButton.d.ts +3 -3
- package/dist-types/tooltip/useTooltip.d.ts +7 -13
- package/dist-types/utils/useFloatingUI/useFloatingUI.d.ts +11 -6
- package/package.json +2 -2
package/css/salt-core.css
CHANGED
|
@@ -32,7 +32,6 @@
|
|
|
32
32
|
font-family: var(--salt-text-fontFamily);
|
|
33
33
|
color: var(--salt-content-primary-foreground);
|
|
34
34
|
font-weight: var(--salt-text-fontWeight-strong);
|
|
35
|
-
--saltIcon-color: currentcolor;
|
|
36
35
|
text-align: left;
|
|
37
36
|
cursor: var(--salt-actionable-cursor-hover);
|
|
38
37
|
}
|
|
@@ -43,7 +42,6 @@
|
|
|
43
42
|
.saltAccordionHeader:disabled {
|
|
44
43
|
background: var(--salt-actionable-secondary-background);
|
|
45
44
|
color: var(--salt-content-primary-foreground-disabled);
|
|
46
|
-
--saltIcon-fill: var(--salt-content-primary-foreground-disabled);
|
|
47
45
|
}
|
|
48
46
|
.saltAccordionHeader-icon {
|
|
49
47
|
transition: transform var(--salt-duration-perceptible) ease-in-out;
|
|
@@ -114,8 +112,7 @@
|
|
|
114
112
|
--avatar-base-fontSize: var(--saltAvatar-fontSize, var(--salt-text-notation-fontSize));
|
|
115
113
|
--avatar-container-size: calc(var(--avatar-base-size) * var(--avatar-size-multiplier));
|
|
116
114
|
--avatar-fontSize: calc(var(--avatar-base-fontSize) * var(--avatar-size-multiplier));
|
|
117
|
-
--saltIcon-
|
|
118
|
-
--salt-size-icon: calc(var(--avatar-container-size) / 2);
|
|
115
|
+
--saltIcon-size: calc(var(--avatar-container-size) / 2);
|
|
119
116
|
}
|
|
120
117
|
.saltAvatar {
|
|
121
118
|
line-height: var(--saltAvatar-lineHeight, var(--salt-text-notation-lineHeight));
|
|
@@ -261,19 +258,6 @@
|
|
|
261
258
|
--button-text-color-disabled: var(--salt-actionable-cta-foreground-disabled);
|
|
262
259
|
--button-text-color-hover: var(--salt-actionable-cta-foreground-hover);
|
|
263
260
|
}
|
|
264
|
-
.saltButton-cta {
|
|
265
|
-
--saltIcon-color: var(--salt-actionable-cta-foreground);
|
|
266
|
-
}
|
|
267
|
-
.saltButton-cta:hover {
|
|
268
|
-
--saltIcon-color: var(--salt-actionable-cta-foreground-hover);
|
|
269
|
-
}
|
|
270
|
-
.saltButton-cta:active,
|
|
271
|
-
.saltButton-cta.saltButton-active {
|
|
272
|
-
--saltIcon-color: var(--salt-actionable-cta-foreground-active);
|
|
273
|
-
}
|
|
274
|
-
.saltButton-cta.saltButton-disabled {
|
|
275
|
-
--saltIcon-color: var(--salt-actionable-cta-foreground-disabled);
|
|
276
|
-
}
|
|
277
261
|
.saltButton-primary {
|
|
278
262
|
--button-background: var(--salt-actionable-primary-background);
|
|
279
263
|
--button-background-active: var(--salt-actionable-primary-background-active);
|
|
@@ -284,19 +268,6 @@
|
|
|
284
268
|
--button-text-color-disabled: var(--salt-actionable-primary-foreground-disabled);
|
|
285
269
|
--button-text-color-hover: var(--salt-actionable-primary-foreground-hover);
|
|
286
270
|
}
|
|
287
|
-
.saltButton-primary {
|
|
288
|
-
--saltIcon-color: var(--salt-actionable-primary-foreground);
|
|
289
|
-
}
|
|
290
|
-
.saltButton-primary:hover {
|
|
291
|
-
--saltIcon-color: var(--salt-actionable-primary-foreground-hover);
|
|
292
|
-
}
|
|
293
|
-
.saltButton-primary:active,
|
|
294
|
-
.saltButton-primary.saltButton-active {
|
|
295
|
-
--saltIcon-color: var(--salt-actionable-primary-foreground-active);
|
|
296
|
-
}
|
|
297
|
-
.saltButton-primary.saltButton-disabled {
|
|
298
|
-
--saltIcon-color: var(--salt-actionable-primary-foreground-disabled);
|
|
299
|
-
}
|
|
300
271
|
.saltButton-secondary {
|
|
301
272
|
--button-background: var(--salt-actionable-secondary-background);
|
|
302
273
|
--button-background-active: var(--salt-actionable-secondary-background-active);
|
|
@@ -307,19 +278,6 @@
|
|
|
307
278
|
--button-text-color-disabled: var(--salt-actionable-secondary-foreground-disabled);
|
|
308
279
|
--button-text-color-hover: var(--salt-actionable-secondary-foreground-hover);
|
|
309
280
|
}
|
|
310
|
-
.saltButton-secondary {
|
|
311
|
-
--saltIcon-color: var(--salt-actionable-secondary-foreground);
|
|
312
|
-
}
|
|
313
|
-
.saltButton-secondary:hover {
|
|
314
|
-
--saltIcon-color: var(--salt-actionable-secondary-foreground-hover);
|
|
315
|
-
}
|
|
316
|
-
.saltButton-secondary:active,
|
|
317
|
-
.saltButton-secondary.saltButton-active {
|
|
318
|
-
--saltIcon-color: var(--salt-actionable-secondary-foreground-active);
|
|
319
|
-
}
|
|
320
|
-
.saltButton-secondary.saltButton-disabled {
|
|
321
|
-
--saltIcon-color: var(--salt-actionable-secondary-foreground-disabled);
|
|
322
|
-
}
|
|
323
281
|
.saltButton {
|
|
324
282
|
align-items: var(--saltButton-alignItems, center);
|
|
325
283
|
appearance: none;
|
|
@@ -616,7 +574,6 @@ a:link .saltInteractableCard * {
|
|
|
616
574
|
color: var(--salt-selectable-foreground);
|
|
617
575
|
background: var(--salt-container-primary-background);
|
|
618
576
|
position: relative;
|
|
619
|
-
--saltIcon-color: currentColor;
|
|
620
577
|
--saltIcon-size: 100%;
|
|
621
578
|
display: flex;
|
|
622
579
|
}
|
|
@@ -981,6 +938,7 @@ a:link .saltInteractableCard * {
|
|
|
981
938
|
background: var(--salt-content-foreground-highlight);
|
|
982
939
|
}
|
|
983
940
|
.saltInput-input::placeholder {
|
|
941
|
+
color: var(--salt-content-secondary-foreground);
|
|
984
942
|
font-weight: var(--salt-text-fontWeight-small);
|
|
985
943
|
}
|
|
986
944
|
.saltInput-focused {
|
|
@@ -1083,20 +1041,16 @@ a:link .saltInteractableCard * {
|
|
|
1083
1041
|
margin-bottom: -2px;
|
|
1084
1042
|
}
|
|
1085
1043
|
.saltLink:visited {
|
|
1086
|
-
--saltIcon-color: var(--link-color-visited);
|
|
1087
1044
|
color: var(--link-color-visited);
|
|
1088
1045
|
}
|
|
1089
1046
|
.saltLink:hover {
|
|
1090
|
-
--saltIcon-color: var(--link-color-hover);
|
|
1091
1047
|
color: var(--link-color-hover);
|
|
1092
1048
|
text-decoration: var(--link-textDecoration-hover);
|
|
1093
1049
|
}
|
|
1094
1050
|
.saltLink:active {
|
|
1095
|
-
--saltIcon-color: var(--link-color-active);
|
|
1096
1051
|
color: var(--link-color-active);
|
|
1097
1052
|
}
|
|
1098
1053
|
.saltLink:focus {
|
|
1099
|
-
--saltIcon-color: var(--link-color-focus);
|
|
1100
1054
|
outline: var(--link-focus-outline);
|
|
1101
1055
|
color: var(--link-color-focus);
|
|
1102
1056
|
text-decoration: var(--link-textDecoration-hover);
|
|
@@ -1324,6 +1278,52 @@ a:link .saltInteractableCard * {
|
|
|
1324
1278
|
line-height: var(--salt-text-lineHeight);
|
|
1325
1279
|
}
|
|
1326
1280
|
|
|
1281
|
+
/* src/pill/Pill.css */
|
|
1282
|
+
.saltPill {
|
|
1283
|
+
appearance: none;
|
|
1284
|
+
display: inline-flex;
|
|
1285
|
+
align-items: center;
|
|
1286
|
+
background: var(--saltPill-background, var(--salt-actionable-primary-background));
|
|
1287
|
+
border-radius: 0;
|
|
1288
|
+
border: 0;
|
|
1289
|
+
height: calc(var(--salt-size-base) - var(--salt-spacing-100));
|
|
1290
|
+
min-height: var(--salt-text-minHeight);
|
|
1291
|
+
outline: 0;
|
|
1292
|
+
position: relative;
|
|
1293
|
+
gap: var(--salt-spacing-50);
|
|
1294
|
+
padding-left: var(--salt-spacing-50);
|
|
1295
|
+
padding-right: var(--salt-spacing-50);
|
|
1296
|
+
color: var(--saltPill-color, var(--salt-actionable-primary-foreground));
|
|
1297
|
+
font-family: var(--salt-text-fontFamily);
|
|
1298
|
+
font-size: var(--salt-text-fontSize);
|
|
1299
|
+
font-weight: var(--salt-text-fontWeight);
|
|
1300
|
+
line-height: var(--salt-text-lineHeight);
|
|
1301
|
+
overflow: hidden;
|
|
1302
|
+
white-space: nowrap;
|
|
1303
|
+
}
|
|
1304
|
+
.saltPill-clickable {
|
|
1305
|
+
cursor: var(--salt-selectable-cursor-hover);
|
|
1306
|
+
}
|
|
1307
|
+
.saltPill-clickable:hover,
|
|
1308
|
+
.saltPill-clickable:focus-visible {
|
|
1309
|
+
color: var(--salt-actionable-primary-foreground-hover);
|
|
1310
|
+
background: var(--salt-actionable-primary-background-hover);
|
|
1311
|
+
}
|
|
1312
|
+
.saltPill-clickable.saltPill-active,
|
|
1313
|
+
.saltPill-clickable:active {
|
|
1314
|
+
background: var(--salt-actionable-primary-background-active);
|
|
1315
|
+
color: var(--salt-actionable-primary-foreground-active);
|
|
1316
|
+
}
|
|
1317
|
+
.saltPill:focus-visible {
|
|
1318
|
+
outline: var(--salt-focused-outline);
|
|
1319
|
+
}
|
|
1320
|
+
.saltPill:disabled,
|
|
1321
|
+
.saltPill:disabled:hover {
|
|
1322
|
+
color: var(--salt-actionable-primary-foreground-disabled);
|
|
1323
|
+
background: var(--salt-actionable-primary-background-disabled);
|
|
1324
|
+
cursor: var(--salt-selectable-cursor-disabled);
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
1327
|
/* src/radio-button/RadioButton.css */
|
|
1328
1328
|
.saltRadioButton {
|
|
1329
1329
|
display: flex;
|
|
@@ -1420,7 +1420,6 @@ a:link .saltInteractableCard * {
|
|
|
1420
1420
|
border: var(--salt-size-border) var(--salt-selectable-borderStyle) var(--salt-selectable-borderColor);
|
|
1421
1421
|
color: var(--salt-selectable-foreground);
|
|
1422
1422
|
background: var(--salt-container-primary-background);
|
|
1423
|
-
--saltIcon-color: currentColor;
|
|
1424
1423
|
--saltIcon-size: 100%;
|
|
1425
1424
|
display: flex;
|
|
1426
1425
|
}
|
|
@@ -1574,20 +1573,19 @@ a:link .saltInteractableCard * {
|
|
|
1574
1573
|
--statusIndicator-info-color: var(--salt-status-info-foreground);
|
|
1575
1574
|
--statusIndicator-success-color: var(--salt-status-success-foreground);
|
|
1576
1575
|
--statusIndicator-error-color: var(--salt-status-error-foreground);
|
|
1577
|
-
--
|
|
1578
|
-
color: var(--statusIndicator-Color);
|
|
1576
|
+
color: var(--saltStatusIndicator-color, var(--statusIndicator-Color));
|
|
1579
1577
|
}
|
|
1580
1578
|
.saltStatusIndicator-error {
|
|
1581
|
-
--statusIndicator-Color: var(--
|
|
1579
|
+
--statusIndicator-Color: var(--statusIndicator-error-color);
|
|
1582
1580
|
}
|
|
1583
1581
|
.saltStatusIndicator-warning {
|
|
1584
|
-
--statusIndicator-Color: var(--
|
|
1582
|
+
--statusIndicator-Color: var(--statusIndicator-warning-color);
|
|
1585
1583
|
}
|
|
1586
1584
|
.saltStatusIndicator-success {
|
|
1587
|
-
--statusIndicator-Color: var(--
|
|
1585
|
+
--statusIndicator-Color: var(--statusIndicator-success-color);
|
|
1588
1586
|
}
|
|
1589
1587
|
.saltStatusIndicator-info {
|
|
1590
|
-
--statusIndicator-Color: var(--
|
|
1588
|
+
--statusIndicator-Color: var(--statusIndicator-info-color);
|
|
1591
1589
|
}
|
|
1592
1590
|
|
|
1593
1591
|
/* src/switch/Switch.css */
|
|
@@ -1608,7 +1606,6 @@ a:link .saltInteractableCard * {
|
|
|
1608
1606
|
}
|
|
1609
1607
|
.saltSwitch-track {
|
|
1610
1608
|
border: var(--salt-size-border) var(--salt-selectable-borderStyle) var(--salt-selectable-borderColor);
|
|
1611
|
-
--saltIcon-color: currentColor;
|
|
1612
1609
|
--saltIcon-size: 100%;
|
|
1613
1610
|
display: flex;
|
|
1614
1611
|
flex-shrink: 0;
|
|
@@ -1916,38 +1913,32 @@ label.saltText small,
|
|
|
1916
1913
|
padding-left: var(--salt-spacing-100);
|
|
1917
1914
|
padding-right: var(--salt-spacing-100);
|
|
1918
1915
|
gap: var(--salt-spacing-50);
|
|
1919
|
-
--saltIcon-color: var(--salt-actionable-secondary-foreground);
|
|
1920
1916
|
}
|
|
1921
1917
|
.saltToggleButton:hover {
|
|
1922
1918
|
background: var(--salt-actionable-secondary-background-hover);
|
|
1923
1919
|
color: var(--salt-actionable-secondary-foreground-hover);
|
|
1924
1920
|
cursor: var(--salt-actionable-cursor-hover);
|
|
1925
|
-
--saltIcon-color: var(--salt-actionable-secondary-foreground-hover);
|
|
1926
1921
|
}
|
|
1927
1922
|
.saltToggleButton:focus-visible {
|
|
1928
1923
|
outline: var(--salt-focused-outline);
|
|
1929
1924
|
background: var(--salt-actionable-secondary-background-hover);
|
|
1930
1925
|
color: var(--salt-actionable-secondary-foreground-hover);
|
|
1931
1926
|
cursor: var(--salt-actionable-cursor-hover);
|
|
1932
|
-
--saltIcon-color: var(--salt-actionable-secondary-foreground-hover);
|
|
1933
1927
|
}
|
|
1934
1928
|
.saltToggleButton[aria-checked=true]:focus-visible {
|
|
1935
1929
|
background: var(--salt-actionable-secondary-background-active);
|
|
1936
1930
|
color: var(--salt-actionable-secondary-foreground-active);
|
|
1937
1931
|
cursor: var(--salt-actionable-cursor-active);
|
|
1938
|
-
--saltIcon-color: var(--salt-actionable-secondary-foreground-active);
|
|
1939
1932
|
}
|
|
1940
1933
|
.saltToggleButton[aria-checked=true] {
|
|
1941
1934
|
background: var(--salt-actionable-secondary-background-active);
|
|
1942
1935
|
color: var(--salt-actionable-secondary-foreground-active);
|
|
1943
1936
|
cursor: var(--salt-actionable-cursor-active);
|
|
1944
|
-
--saltIcon-color: var(--salt-actionable-secondary-foreground-active);
|
|
1945
1937
|
}
|
|
1946
1938
|
.saltToggleButton:disabled {
|
|
1947
1939
|
background: var(--salt-actionable-secondary-background-disabled);
|
|
1948
1940
|
cursor: var(--salt-actionable-cursor-disabled);
|
|
1949
1941
|
color: var(--salt-actionable-secondary-foreground-disabled);
|
|
1950
|
-
--saltIcon-color: var(--salt-actionable-secondary-foreground-disabled);
|
|
1951
1942
|
}
|
|
1952
1943
|
|
|
1953
1944
|
/* src/toggle-button-group/ToggleButtonGroup.css */
|
|
@@ -2019,4 +2010,4 @@ label.saltText small,
|
|
|
2019
2010
|
--tooltip-status-borderColor: var(--salt-status-success-borderColor);
|
|
2020
2011
|
}
|
|
2021
2012
|
|
|
2022
|
-
/* src/
|
|
2013
|
+
/* src/db34249f-f078-49b5-82e2-7cf5b355cc79.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 align-items: center;\n border: 0;\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n background: var(--salt-actionable-secondary-background);\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
|
|
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 align-items: center;\n border: 0;\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n background: var(--salt-actionable-secondary-background);\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}\n\n.saltAccordionHeader:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(-1 * var(--salt-focused-outlineWidth));\n}\n\n.saltAccordionHeader:disabled {\n background: var(--salt-actionable-secondary-background);\n color: var(--salt-content-primary-foreground-disabled);\n}\n\n.saltAccordionHeader-icon {\n transition: transform var(--salt-duration-perceptible) ease-in-out;\n}\n\n.saltAccordionHeader[aria-expanded=\"true\"] > .saltAccordionHeader-icon {\n transform: rotate(90deg);\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 margin-left: auto;\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-
|
|
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: 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";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=Avatar.css.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = "/* Styles applied to the root element if variant=\"cta\" */\n.saltButton-cta {\n --button-background: var(--salt-actionable-cta-background);\n --button-background-active: var(--salt-actionable-cta-background-active);\n --button-background-disabled: var(--salt-actionable-cta-background-disabled);\n --button-background-hover: var(--salt-actionable-cta-background-hover);\n --button-text-color: var(--salt-actionable-cta-foreground);\n --button-text-color-active: var(--salt-actionable-cta-foreground-active);\n --button-text-color-disabled: var(--salt-actionable-cta-foreground-disabled);\n --button-text-color-hover: var(--salt-actionable-cta-foreground-hover);\n}\n\n/*
|
|
3
|
+
var css_248z = "/* Styles applied to the root element if variant=\"cta\" */\n.saltButton-cta {\n --button-background: var(--salt-actionable-cta-background);\n --button-background-active: var(--salt-actionable-cta-background-active);\n --button-background-disabled: var(--salt-actionable-cta-background-disabled);\n --button-background-hover: var(--salt-actionable-cta-background-hover);\n --button-text-color: var(--salt-actionable-cta-foreground);\n --button-text-color-active: var(--salt-actionable-cta-foreground-active);\n --button-text-color-disabled: var(--salt-actionable-cta-foreground-disabled);\n --button-text-color-hover: var(--salt-actionable-cta-foreground-hover);\n}\n\n/* Styles applied to the root element if variant=\"primary\" (or no variant specified) */\n.saltButton-primary {\n --button-background: var(--salt-actionable-primary-background);\n --button-background-active: var(--salt-actionable-primary-background-active);\n --button-background-disabled: var(--salt-actionable-primary-background-disabled);\n --button-background-hover: var(--salt-actionable-primary-background-hover);\n --button-text-color: var(--salt-actionable-primary-foreground);\n --button-text-color-active: var(--salt-actionable-primary-foreground-active);\n --button-text-color-disabled: var(--salt-actionable-primary-foreground-disabled);\n --button-text-color-hover: var(--salt-actionable-primary-foreground-hover);\n}\n\n/* Styles applied to the root element if variant=\"secondary\" */\n.saltButton-secondary {\n --button-background: var(--salt-actionable-secondary-background);\n --button-background-active: var(--salt-actionable-secondary-background-active);\n --button-background-disabled: var(--salt-actionable-secondary-background-disabled);\n --button-background-hover: var(--salt-actionable-secondary-background-hover);\n --button-text-color: var(--salt-actionable-secondary-foreground);\n --button-text-color-active: var(--salt-actionable-secondary-foreground-active);\n --button-text-color-disabled: var(--salt-actionable-secondary-foreground-disabled);\n --button-text-color-hover: var(--salt-actionable-secondary-foreground-hover);\n}\n\n.saltButton {\n align-items: var(--saltButton-alignItems, center);\n appearance: none;\n background: var(--saltButton-background, var(--button-background));\n border-color: var(--saltButton-borderColor, transparent);\n border-style: var(--saltButton-borderStyle, solid);\n border-width: var(--saltButton-borderWidth, 0);\n border-radius: var(--saltButton-borderRadius, 0);\n color: var(--saltButton-text-color, var(--button-text-color));\n cursor: var(--saltButton-cursor, pointer);\n display: inline-flex;\n gap: var(--salt-spacing-50);\n justify-content: var(--saltButton-justifyContent, center);\n font-size: var(--saltButton-fontSize, var(--salt-text-fontSize));\n font-family: var(--saltButton-fontFamily, var(--salt-text-fontFamily));\n line-height: var(--saltButton-lineHeight, var(--salt-text-lineHeight));\n letter-spacing: var(--saltButton-letterSpacing, var(--salt-text-action-letterSpacing));\n text-transform: var(--saltButton-textTransform, var(--salt-text-action-textTransform));\n padding: 0 var(--saltButton-padding, var(--salt-size-unit));\n margin: var(--saltButton-margin, 0);\n height: var(--saltButton-height, var(--salt-size-base));\n min-width: var(--saltButton-minWidth, unset);\n position: relative;\n text-align: var(--saltButton-textAlign, var(--salt-text-action-textAlign));\n text-decoration: none;\n transition: none;\n width: var(--saltButton-width, auto);\n -webkit-appearance: none;\n -webkit-tap-highlight-color: transparent;\n /* Styles applied to align children*/\n font-weight: var(--saltButton-fontWeight, var(--salt-text-action-fontWeight));\n}\n\n/* Pseudo-class applied to the root element on focus */\n.saltButton:focus-visible {\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-color: var(--salt-focused-outlineColor);\n outline-offset: var(--salt-focused-outlineOffset);\n background: var(--saltButton-background-hover, var(--button-background-hover));\n color: var(--saltButton-text-color-hover, var(--button-text-color-hover));\n}\n\n/* Pseudo-class applied to the root element on focus when Button is active */\n.saltButton.saltButton-active:focus-visible,\n.saltButton:focus-visible(:active) {\n background: var(--saltButton-background-active-hover, var(--button-background));\n color: var(--saltButton-text-color-active-hover, var(--button-text-color));\n}\n\n/* Pseudo-class applied to the root element on hover when Button is not active or disabled */\n.saltButton:hover {\n background: var(--saltButton-background-hover, var(--button-background-hover));\n color: var(--saltButton-text-color-hover, var(--button-text-color-hover));\n}\n\n/* Pseudo-class applied to the root element when Button is active and not disabled */\n.saltButton:active,\n.saltButton.saltButton-active {\n background: var(--saltButton-background-active, var(--button-background-active));\n color: var(--saltButton-text-color-active, var(--button-text-color-active));\n}\n\n/* Pseudo-class applied to the root element if disabled={true} */\n.saltButton:disabled,\n.saltButton-disabled,\n /* Overrides to apply the disabled style when the button is focusable while also disabled */\n.saltButton-disabled:active,\n.saltButton-disabled:focus-visible,\n.saltButton-disabled:hover {\n background: var(--saltButton-background-disabled, var(--button-background-disabled));\n color: var(--saltButton-text-color-disabled, var(--button-text-color-disabled));\n cursor: var(--saltButton-cursor-disabled, var(--salt-actionable-cursor-disabled));\n}\n\n.saltButton[href] {\n display: inline-flex;\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=Button.css.js.map
|
|
@@ -39,7 +39,7 @@ const Checkbox = React.forwardRef(
|
|
|
39
39
|
readOnly: readOnlyProp,
|
|
40
40
|
...rest
|
|
41
41
|
}, ref) {
|
|
42
|
-
var _a, _b
|
|
42
|
+
var _a, _b;
|
|
43
43
|
const targetWindow = window.useWindow();
|
|
44
44
|
styles.useComponentCssInjection({
|
|
45
45
|
testId: "salt-checkbox",
|
|
@@ -54,7 +54,7 @@ const Checkbox = React.forwardRef(
|
|
|
54
54
|
onChange: inputOnChange,
|
|
55
55
|
...restInputProps
|
|
56
56
|
} = inputProps;
|
|
57
|
-
const checkboxGroupChecked =
|
|
57
|
+
const checkboxGroupChecked = (checkboxGroup == null ? void 0 : checkboxGroup.checkedValues) != null && value != null ? checkboxGroup.checkedValues.includes(value) : checkedProp;
|
|
58
58
|
const [checked, setChecked] = useControlled.useControlled({
|
|
59
59
|
controlled: checkboxGroupChecked,
|
|
60
60
|
default: Boolean(defaultChecked),
|
|
@@ -67,9 +67,9 @@ const Checkbox = React.forwardRef(
|
|
|
67
67
|
readOnly: formFieldReadOnly,
|
|
68
68
|
validationStatus: formFieldValidationStatus
|
|
69
69
|
} = useFormFieldProps.useFormFieldProps();
|
|
70
|
-
const disabled = (
|
|
71
|
-
const readOnly = (
|
|
72
|
-
const validationStatus = !disabled ? (
|
|
70
|
+
const disabled = (checkboxGroup == null ? void 0 : checkboxGroup.disabled) || formFieldDisabled || disabledProp;
|
|
71
|
+
const readOnly = (checkboxGroup == null ? void 0 : checkboxGroup.readOnly) || formFieldReadOnly || readOnlyProp;
|
|
72
|
+
const validationStatus = !disabled ? (_b = (_a = checkboxGroup == null ? void 0 : checkboxGroup.validationStatus) != null ? _a : formFieldValidationStatus) != null ? _b : validationStatusProp : void 0;
|
|
73
73
|
const handleChange = (event) => {
|
|
74
74
|
var _a2;
|
|
75
75
|
if (event.nativeEvent.defaultPrevented || readOnly) {
|
|
@@ -79,7 +79,7 @@ const Checkbox = React.forwardRef(
|
|
|
79
79
|
setChecked(value2);
|
|
80
80
|
onChange == null ? void 0 : onChange(event);
|
|
81
81
|
inputOnChange == null ? void 0 : inputOnChange(event);
|
|
82
|
-
(_a2 = checkboxGroup.onChange) == null ? void 0 : _a2.call(checkboxGroup, event);
|
|
82
|
+
(_a2 = checkboxGroup == null ? void 0 : checkboxGroup.onChange) == null ? void 0 : _a2.call(checkboxGroup, event);
|
|
83
83
|
};
|
|
84
84
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", {
|
|
85
85
|
className: clsx.clsx(
|
|
@@ -98,11 +98,11 @@ const Checkbox = React.forwardRef(
|
|
|
98
98
|
/* @__PURE__ */ jsxRuntime.jsx("input", {
|
|
99
99
|
"aria-checked": indeterminate ? "mixed" : void 0,
|
|
100
100
|
"aria-describedby": clsx.clsx(
|
|
101
|
-
|
|
101
|
+
checkboxGroup === void 0 ? formFieldA11yProps == null ? void 0 : formFieldA11yProps["aria-describedby"] : void 0,
|
|
102
102
|
inputDescribedBy
|
|
103
103
|
),
|
|
104
104
|
"aria-labelledby": clsx.clsx(
|
|
105
|
-
|
|
105
|
+
checkboxGroup === void 0 ? formFieldA11yProps == null ? void 0 : formFieldA11yProps["aria-labelledby"] : void 0,
|
|
106
106
|
inputLabelledBy
|
|
107
107
|
),
|
|
108
108
|
name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","sources":["../src/checkbox/Checkbox.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEventHandler,\n FocusEventHandler,\n forwardRef,\n InputHTMLAttributes,\n ReactNode,\n} from \"react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { makePrefixer, useControlled } from \"../utils\";\nimport { CheckboxIcon } from \"./CheckboxIcon\";\nimport { useFormFieldProps } from \"../form-field-context\";\nimport { AdornmentValidationStatus } from \"../status-adornment\";\nimport { useCheckboxGroup } from \"./internal/useCheckboxGroup\";\n\nimport checkboxCss from \"./Checkbox.css\";\n\nconst withBaseName = makePrefixer(\"saltCheckbox\");\nexport interface CheckboxProps\n extends Omit<\n InputHTMLAttributes<HTMLLabelElement>,\n \"onChange\" | \"onBlur\" | \"onFocus\"\n > {\n /**\n * If `true`, the checkbox will be checked.\n */\n checked?: boolean;\n /**\n * Whether the checkbox component is checked by default\n * This will be disregarded if checked is already set.\n */\n defaultChecked?: boolean;\n /**\n * If `true`, the checkbox will be disabled.\n */\n disabled?: boolean;\n /**\n * **Deprecated**: Use validationStatus instead\n * If `true`, the checkbox will be in the error state.\n */\n error?: boolean;\n /**\n * If true, the checkbox appears indeterminate. This does not set the native\n * input element to indeterminate due to the inconsistent behaviour across browsers\n * However, a data-indeterminate attribute is set on the input.\n */\n indeterminate?: boolean;\n /**\n * Properties applied to the input element.\n */\n inputProps?: Partial<InputHTMLAttributes<HTMLInputElement>>;\n /**\n * The label to be shown next to the checkbox.\n */\n label?: ReactNode;\n /**\n * The name applied to the input.\n */\n name?: string;\n /**\n * Callback when checkbox loses focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Callback when checked state is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Callback when checkbox gains focus.\n */\n onFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * The value of the checkbox.\n */\n value?: string;\n /**\n * Validation status, one of \"warning\" | \"error\" | \"success\"\n *\n * Checkbox has styling variants for \"error\" and \"warning\".\n * No visual styling will be applied on \"success\" variant.\n */\n validationStatus?: AdornmentValidationStatus;\n}\n\nexport const Checkbox = forwardRef<HTMLLabelElement, CheckboxProps>(\n function Checkbox(\n {\n checked: checkedProp,\n className,\n defaultChecked,\n disabled: disabledProp,\n error,\n indeterminate,\n inputProps = {},\n label,\n name,\n onBlur,\n onChange,\n onFocus,\n value,\n validationStatus: validationStatusProp,\n readOnly: readOnlyProp,\n ...rest\n },\n ref\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-checkbox\",\n css: checkboxCss,\n window: targetWindow,\n });\n const checkboxGroup = useCheckboxGroup();\n\n const {\n \"aria-describedby\": inputDescribedBy,\n \"aria-labelledby\": inputLabelledBy,\n className: inputClassName,\n onChange: inputOnChange,\n ...restInputProps\n } = inputProps;\n\n const checkboxGroupChecked =\n checkedProp == null && value != null\n ? checkboxGroup.checkedValues?.includes(value)\n : checkedProp;\n\n const [checked, setChecked] = useControlled({\n controlled: checkboxGroupChecked,\n default: Boolean(defaultChecked),\n name: \"Checkbox\",\n state: \"checked\",\n });\n\n const {\n a11yProps: formFieldA11yProps,\n disabled: formFieldDisabled,\n readOnly: formFieldReadOnly,\n validationStatus: formFieldValidationStatus,\n } = useFormFieldProps();\n\n const disabled =\n checkboxGroup.disabled ?? formFieldDisabled ?? disabledProp;\n const readOnly =\n checkboxGroup.readOnly ?? formFieldReadOnly ?? readOnlyProp;\n const validationStatus = !disabled\n ? checkboxGroup.validationStatus ??\n formFieldValidationStatus ??\n validationStatusProp\n : undefined;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n // Workaround for https://github.com/facebook/react/issues/9023\n if (event.nativeEvent.defaultPrevented || readOnly) {\n return;\n }\n\n const value = event.target.checked;\n setChecked(value);\n onChange?.(event);\n inputOnChange?.(event);\n checkboxGroup.onChange?.(event);\n };\n\n return (\n <label\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"readOnly\")]: readOnly,\n [withBaseName(\"error\")]: error /* **Deprecated** */,\n [withBaseName(validationStatus ?? \"\")]: validationStatus,\n },\n className\n )}\n ref={ref}\n {...rest}\n >\n <input\n // aria-checked only needed when indeterminate since native indeterminate behaviour is not used\n aria-checked={indeterminate ? \"mixed\" : undefined}\n aria-describedby={clsx(\n checkboxGroup.a11yProps?.[\"aria-describedby\"] ??\n formFieldA11yProps?.[\"aria-describedby\"],\n inputDescribedBy\n )}\n aria-labelledby={clsx(\n checkboxGroup.a11yProps?.[\"aria-labelledby\"] ??\n formFieldA11yProps?.[\"aria-labelledby\"],\n inputLabelledBy\n )}\n name={name}\n value={value}\n checked={checked}\n className={clsx(withBaseName(\"input\"), inputClassName)}\n data-indeterminate={indeterminate}\n defaultChecked={defaultChecked}\n disabled={disabled}\n readOnly={readOnly}\n onBlur={onBlur}\n onChange={handleChange}\n onFocus={onFocus}\n type=\"checkbox\"\n {...restInputProps}\n />\n <CheckboxIcon\n checked={checked}\n disabled={disabled}\n readOnly={readOnly}\n indeterminate={indeterminate}\n validationStatus={validationStatus}\n error={error}\n />\n {label}\n </label>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","Checkbox","useWindow","useComponentCssInjection","checkboxCss","useCheckboxGroup","useControlled","useFormFieldProps","_a","value","jsxs","clsx","jsx","CheckboxIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sources":["../src/checkbox/Checkbox.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEventHandler,\n FocusEventHandler,\n forwardRef,\n InputHTMLAttributes,\n ReactNode,\n} from \"react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { makePrefixer, useControlled } from \"../utils\";\nimport { CheckboxIcon } from \"./CheckboxIcon\";\nimport { useFormFieldProps } from \"../form-field-context\";\nimport { AdornmentValidationStatus } from \"../status-adornment\";\nimport { useCheckboxGroup } from \"./internal/useCheckboxGroup\";\n\nimport checkboxCss from \"./Checkbox.css\";\n\nconst withBaseName = makePrefixer(\"saltCheckbox\");\nexport interface CheckboxProps\n extends Omit<\n InputHTMLAttributes<HTMLLabelElement>,\n \"onChange\" | \"onBlur\" | \"onFocus\"\n > {\n /**\n * If `true`, the checkbox will be checked.\n */\n checked?: boolean;\n /**\n * Whether the checkbox component is checked by default\n * This will be disregarded if checked is already set.\n */\n defaultChecked?: boolean;\n /**\n * If `true`, the checkbox will be disabled.\n */\n disabled?: boolean;\n /**\n * **Deprecated**: Use validationStatus instead\n * If `true`, the checkbox will be in the error state.\n */\n error?: boolean;\n /**\n * If true, the checkbox appears indeterminate. This does not set the native\n * input element to indeterminate due to the inconsistent behaviour across browsers\n * However, a data-indeterminate attribute is set on the input.\n */\n indeterminate?: boolean;\n /**\n * Properties applied to the input element.\n */\n inputProps?: Partial<InputHTMLAttributes<HTMLInputElement>>;\n /**\n * The label to be shown next to the checkbox.\n */\n label?: ReactNode;\n /**\n * The name applied to the input.\n */\n name?: string;\n /**\n * Callback when checkbox loses focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Callback when checked state is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Callback when checkbox gains focus.\n */\n onFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * The value of the checkbox.\n */\n value?: string;\n /**\n * Validation status, one of \"warning\" | \"error\" | \"success\"\n *\n * Checkbox has styling variants for \"error\" and \"warning\".\n * No visual styling will be applied on \"success\" variant.\n */\n validationStatus?: AdornmentValidationStatus;\n}\n\nexport const Checkbox = forwardRef<HTMLLabelElement, CheckboxProps>(\n function Checkbox(\n {\n checked: checkedProp,\n className,\n defaultChecked,\n disabled: disabledProp,\n error,\n indeterminate,\n inputProps = {},\n label,\n name,\n onBlur,\n onChange,\n onFocus,\n value,\n validationStatus: validationStatusProp,\n readOnly: readOnlyProp,\n ...rest\n },\n ref\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-checkbox\",\n css: checkboxCss,\n window: targetWindow,\n });\n const checkboxGroup = useCheckboxGroup();\n\n const {\n \"aria-describedby\": inputDescribedBy,\n \"aria-labelledby\": inputLabelledBy,\n className: inputClassName,\n onChange: inputOnChange,\n ...restInputProps\n } = inputProps;\n\n const checkboxGroupChecked =\n checkboxGroup?.checkedValues != null && value != null\n ? checkboxGroup.checkedValues.includes(value)\n : checkedProp;\n\n const [checked, setChecked] = useControlled({\n controlled: checkboxGroupChecked,\n default: Boolean(defaultChecked),\n name: \"Checkbox\",\n state: \"checked\",\n });\n\n const {\n a11yProps: formFieldA11yProps,\n disabled: formFieldDisabled,\n readOnly: formFieldReadOnly,\n validationStatus: formFieldValidationStatus,\n } = useFormFieldProps();\n\n const disabled =\n checkboxGroup?.disabled || formFieldDisabled || disabledProp;\n const readOnly =\n checkboxGroup?.readOnly || formFieldReadOnly || readOnlyProp;\n const validationStatus = !disabled\n ? checkboxGroup?.validationStatus ??\n formFieldValidationStatus ??\n validationStatusProp\n : undefined;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n // Workaround for https://github.com/facebook/react/issues/9023\n if (event.nativeEvent.defaultPrevented || readOnly) {\n return;\n }\n\n const value = event.target.checked;\n setChecked(value);\n onChange?.(event);\n inputOnChange?.(event);\n checkboxGroup?.onChange?.(event);\n };\n\n return (\n <label\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"readOnly\")]: readOnly,\n [withBaseName(\"error\")]: error /* **Deprecated** */,\n [withBaseName(validationStatus ?? \"\")]: validationStatus,\n },\n className\n )}\n ref={ref}\n {...rest}\n >\n <input\n // aria-checked only needed when indeterminate since native indeterminate behaviour is not used\n aria-checked={indeterminate ? \"mixed\" : undefined}\n aria-describedby={clsx(\n checkboxGroup === undefined\n ? formFieldA11yProps?.[\"aria-describedby\"]\n : undefined,\n inputDescribedBy\n )}\n aria-labelledby={clsx(\n checkboxGroup === undefined\n ? formFieldA11yProps?.[\"aria-labelledby\"]\n : undefined,\n inputLabelledBy\n )}\n name={name}\n value={value}\n checked={checked}\n className={clsx(withBaseName(\"input\"), inputClassName)}\n data-indeterminate={indeterminate}\n defaultChecked={defaultChecked}\n disabled={disabled}\n readOnly={readOnly}\n onBlur={onBlur}\n onChange={handleChange}\n onFocus={onFocus}\n type=\"checkbox\"\n {...restInputProps}\n />\n <CheckboxIcon\n checked={checked}\n disabled={disabled}\n readOnly={readOnly}\n indeterminate={indeterminate}\n validationStatus={validationStatus}\n error={error}\n />\n {label}\n </label>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","Checkbox","useWindow","useComponentCssInjection","checkboxCss","useCheckboxGroup","useControlled","useFormFieldProps","_a","value","jsxs","clsx","jsx","CheckboxIcon"],"mappings":"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"}
|
|
@@ -20,6 +20,8 @@ var CheckboxGroup$1 = require('./CheckboxGroup.css.js');
|
|
|
20
20
|
|
|
21
21
|
const withBaseName = makePrefixer.makePrefixer("saltCheckboxGroup");
|
|
22
22
|
const CheckboxGroup = React.forwardRef(function CheckboxGroup2({
|
|
23
|
+
"aria-labelledby": ariaLabelledBy,
|
|
24
|
+
"aria-describedby": ariaDescribedBy,
|
|
23
25
|
checkedValues: checkedValuesProp,
|
|
24
26
|
defaultCheckedValues = [],
|
|
25
27
|
children,
|
|
@@ -45,8 +47,8 @@ const CheckboxGroup = React.forwardRef(function CheckboxGroup2({
|
|
|
45
47
|
readOnly: formFieldReadOnly,
|
|
46
48
|
validationStatus: formFieldValidationStatus
|
|
47
49
|
} = useFormFieldProps.useFormFieldProps();
|
|
48
|
-
const disabled = formFieldDisabled
|
|
49
|
-
const readOnly = formFieldReadOnly
|
|
50
|
+
const disabled = formFieldDisabled || disabledProp;
|
|
51
|
+
const readOnly = formFieldReadOnly || readOnlyProp;
|
|
50
52
|
const validationStatus = formFieldValidationStatus != null ? formFieldValidationStatus : validationStatusProp;
|
|
51
53
|
const [checkedValues, setCheckedValues] = useControlled.useControlled({
|
|
52
54
|
controlled: checkedValuesProp,
|
|
@@ -63,6 +65,8 @@ const CheckboxGroup = React.forwardRef(function CheckboxGroup2({
|
|
|
63
65
|
onChange == null ? void 0 : onChange(event);
|
|
64
66
|
};
|
|
65
67
|
return /* @__PURE__ */ jsxRuntime.jsx("fieldset", {
|
|
68
|
+
"aria-labelledby": clsx.clsx(a11yProps == null ? void 0 : a11yProps["aria-labelledby"], ariaLabelledBy) || void 0,
|
|
69
|
+
"aria-describedby": clsx.clsx(a11yProps == null ? void 0 : a11yProps["aria-describedby"], ariaDescribedBy) || void 0,
|
|
66
70
|
className: clsx.clsx(
|
|
67
71
|
withBaseName(),
|
|
68
72
|
withBaseName(direction),
|
|
@@ -75,7 +79,6 @@ const CheckboxGroup = React.forwardRef(function CheckboxGroup2({
|
|
|
75
79
|
...other,
|
|
76
80
|
children: /* @__PURE__ */ jsxRuntime.jsx(CheckboxGroupContext.CheckboxGroupContext.Provider, {
|
|
77
81
|
value: {
|
|
78
|
-
a11yProps,
|
|
79
82
|
disabled,
|
|
80
83
|
name,
|
|
81
84
|
onChange: handleChange,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxGroup.js","sources":["../src/checkbox/CheckboxGroup.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEvent,\n ChangeEventHandler,\n ComponentPropsWithoutRef,\n forwardRef,\n} from \"react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useFormFieldProps } from \"../form-field-context\";\nimport { AdornmentValidationStatus } from \"../status-adornment\";\nimport { makePrefixer, useControlled } from \"../utils\";\nimport { CheckboxGroupContext } from \"./internal/CheckboxGroupContext\";\nimport checkboxGroupCss from \"./CheckboxGroup.css\";\n\nexport interface CheckboxGroupProps\n extends Omit<ComponentPropsWithoutRef<\"fieldset\">, \"onChange\"> {\n /**\n * The current checked options.\n */\n checkedValues?: string[];\n /**\n * The default selected options for un-controlled component.\n */\n defaultCheckedValues?: string[];\n /**\n * Display group of elements in a compact row.\n */\n direction?: \"horizontal\" | \"vertical\";\n /**\n * Disable the Checkbox group\n */\n disabled?: boolean;\n /**\n * The name used to reference the value of the control.\n */\n name?: string;\n /**\n * Callback fired when a checkbox is clicked.\n * `event.target.value` returns the value of the checkbox that was clicked.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * If `true`, the component is read only.\n */\n readOnly?: boolean;\n /**\n * Only for horizontal direction. When `true` the text in radio button label will wrap to fit within the container. Otherwise, the checkboxes will wrap onto the next line.\n */\n wrap?: boolean;\n /**\n * Validation status.\n */\n validationStatus?: AdornmentValidationStatus;\n}\n\nconst withBaseName = makePrefixer(\"saltCheckboxGroup\");\n\nexport const CheckboxGroup = forwardRef<\n HTMLFieldSetElement,\n CheckboxGroupProps\n>(function CheckboxGroup(\n {\n checkedValues: checkedValuesProp,\n defaultCheckedValues = [],\n children,\n className,\n disabled: disabledProp,\n direction = \"vertical\",\n name,\n onChange,\n readOnly: readOnlyProp,\n wrap,\n validationStatus: validationStatusProp,\n ...other\n },\n ref\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-checkbox-group\",\n css: checkboxGroupCss,\n window: targetWindow,\n });\n\n const {\n a11yProps,\n disabled: formFieldDisabled,\n readOnly: formFieldReadOnly,\n validationStatus: formFieldValidationStatus,\n } = useFormFieldProps();\n\n const disabled = formFieldDisabled
|
|
1
|
+
{"version":3,"file":"CheckboxGroup.js","sources":["../src/checkbox/CheckboxGroup.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEvent,\n ChangeEventHandler,\n ComponentPropsWithoutRef,\n forwardRef,\n} from \"react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useFormFieldProps } from \"../form-field-context\";\nimport { AdornmentValidationStatus } from \"../status-adornment\";\nimport { makePrefixer, useControlled } from \"../utils\";\nimport { CheckboxGroupContext } from \"./internal/CheckboxGroupContext\";\nimport checkboxGroupCss from \"./CheckboxGroup.css\";\n\nexport interface CheckboxGroupProps\n extends Omit<ComponentPropsWithoutRef<\"fieldset\">, \"onChange\"> {\n /**\n * The current checked options.\n */\n checkedValues?: string[];\n /**\n * The default selected options for un-controlled component.\n */\n defaultCheckedValues?: string[];\n /**\n * Display group of elements in a compact row.\n */\n direction?: \"horizontal\" | \"vertical\";\n /**\n * Disable the Checkbox group\n */\n disabled?: boolean;\n /**\n * The name used to reference the value of the control.\n */\n name?: string;\n /**\n * Callback fired when a checkbox is clicked.\n * `event.target.value` returns the value of the checkbox that was clicked.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * If `true`, the component is read only.\n */\n readOnly?: boolean;\n /**\n * Only for horizontal direction. When `true` the text in radio button label will wrap to fit within the container. Otherwise, the checkboxes will wrap onto the next line.\n */\n wrap?: boolean;\n /**\n * Validation status.\n */\n validationStatus?: AdornmentValidationStatus;\n}\n\nconst withBaseName = makePrefixer(\"saltCheckboxGroup\");\n\nexport const CheckboxGroup = forwardRef<\n HTMLFieldSetElement,\n CheckboxGroupProps\n>(function CheckboxGroup(\n {\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n checkedValues: checkedValuesProp,\n defaultCheckedValues = [],\n children,\n className,\n disabled: disabledProp,\n direction = \"vertical\",\n name,\n onChange,\n readOnly: readOnlyProp,\n wrap,\n validationStatus: validationStatusProp,\n ...other\n },\n ref\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-checkbox-group\",\n css: checkboxGroupCss,\n window: targetWindow,\n });\n\n const {\n a11yProps,\n disabled: formFieldDisabled,\n readOnly: formFieldReadOnly,\n validationStatus: formFieldValidationStatus,\n } = useFormFieldProps();\n\n const disabled = formFieldDisabled || disabledProp;\n const readOnly = formFieldReadOnly || readOnlyProp;\n const validationStatus = formFieldValidationStatus ?? validationStatusProp;\n\n const [checkedValues, setCheckedValues] = useControlled({\n controlled: checkedValuesProp,\n default: defaultCheckedValues,\n name: \"CheckboxGroup\",\n state: \"checkedValues\",\n });\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const name = event.target.value;\n setCheckedValues((oldValues: string[] = []) => {\n const isSelected = oldValues.includes(name);\n\n return isSelected\n ? oldValues.filter((value) => value !== name)\n : oldValues.concat(name);\n });\n\n onChange?.(event);\n };\n\n return (\n <fieldset\n aria-labelledby={\n clsx(a11yProps?.[\"aria-labelledby\"], ariaLabelledBy) || undefined\n }\n aria-describedby={\n clsx(a11yProps?.[\"aria-describedby\"], ariaDescribedBy) || undefined\n }\n className={clsx(\n withBaseName(),\n withBaseName(direction),\n {\n [withBaseName(\"noWrap\")]: !wrap,\n },\n className\n )}\n ref={ref}\n {...other}\n >\n <CheckboxGroupContext.Provider\n value={{\n disabled,\n name,\n onChange: handleChange,\n checkedValues,\n readOnly,\n validationStatus,\n }}\n >\n {children}\n </CheckboxGroupContext.Provider>\n </fieldset>\n );\n});\n"],"names":["makePrefixer","forwardRef","CheckboxGroup","useWindow","useComponentCssInjection","checkboxGroupCss","useFormFieldProps","useControlled","name","jsx","clsx","CheckboxGroupContext"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".saltCheckboxIcon {\n --checkbox-size: var(--salt-size-selectable);\n width: var(--checkbox-size);\n min-width: var(--checkbox-size);\n height: var(--checkbox-size);\n min-height: var(--checkbox-size);\n border: var(--salt-size-border) var(--salt-selectable-borderStyle) var(--salt-selectable-borderColor);\n color: var(--salt-selectable-foreground);\n background: var(--salt-container-primary-background);\n position: relative;\n --saltIcon-
|
|
3
|
+
var css_248z = ".saltCheckboxIcon {\n --checkbox-size: var(--salt-size-selectable);\n width: var(--checkbox-size);\n min-width: var(--checkbox-size);\n height: var(--checkbox-size);\n min-height: var(--checkbox-size);\n border: var(--salt-size-border) var(--salt-selectable-borderStyle) var(--salt-selectable-borderColor);\n color: var(--salt-selectable-foreground);\n background: var(--salt-container-primary-background);\n position: relative;\n --saltIcon-size: 100%;\n display: flex;\n}\n\n.saltCheckbox:hover .saltCheckboxIcon,\n.saltCheckbox:hover .saltCheckboxIcon-indeterminate {\n border-color: var(--salt-selectable-borderColor-hover);\n color: var(--salt-selectable-foreground-hover);\n}\n\n.saltCheckboxIcon-checked,\n.saltCheckbox:hover .saltCheckboxIcon-checked {\n border-color: var(--salt-selectable-borderColor-selected);\n color: var(--salt-selectable-foreground-selected);\n}\n\n.saltCheckboxIcon-disabled,\n.saltCheckbox:hover .saltCheckboxIcon-disabled,\n.saltCheckboxIcon-disabled.saltCheckboxIcon-indeterminate,\n.saltCheckbox:hover .saltCheckboxIcon-disabled.saltCheckboxIcon-indeterminate {\n border-color: var(--salt-selectable-borderColor-disabled);\n background: var(--salt-container-primary-background-disabled);\n color: var(--salt-selectable-foreground-disabled);\n}\n\n.saltCheckboxIcon-checked.saltCheckboxIcon-disabled,\n.saltCheckbox:hover .saltCheckboxIcon-checked.saltCheckboxIcon-disabled {\n border-color: var(--salt-selectable-borderColor-selectedDisabled);\n color: var(--salt-selectable-foreground-selectedDisabled);\n}\n\n.saltCheckboxIcon-indeterminate::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n width: calc(var(--checkbox-size) - 6px);\n height: 2px;\n background: currentColor;\n transform: translate(-50%, -50%);\n}\n\n.saltCheckboxIcon-error,\n.saltCheckbox:hover .saltCheckboxIcon-error {\n color: var(--salt-status-error-foreground);\n border-color: var(--salt-status-error-borderColor);\n outline-color: var(--salt-status-error-foreground);\n}\n\n.saltCheckboxIcon-warning,\n.saltCheckbox:hover .saltCheckboxIcon-warning {\n color: var(--salt-status-warning-foreground);\n border-color: var(--salt-status-warning-borderColor);\n outline-color: var(--salt-status-warning-foreground);\n}\n\n.saltCheckboxIcon-readOnly,\n.saltCheckbox:hover .saltCheckboxIcon-readOnly {\n border-color: var(--salt-selectable-borderColor-readonly);\n color: var(--salt-content-primary-foreground);\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=CheckboxIcon.css.js.map
|
|
@@ -2,12 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var createContext = require('../../utils/createContext.js');
|
|
6
|
+
require('react');
|
|
7
|
+
require('../../utils/useFloatingUI/useFloatingUI.js');
|
|
8
|
+
require('../../utils/useId.js');
|
|
9
|
+
require('../../salt-provider/SaltProvider.js');
|
|
10
|
+
require('../../viewport/ViewportProvider.js');
|
|
11
|
+
require('clsx');
|
|
6
12
|
|
|
7
|
-
const CheckboxGroupContext =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
const CheckboxGroupContext = createContext.createContext(
|
|
14
|
+
"CheckboxGroupContext",
|
|
15
|
+
void 0
|
|
16
|
+
);
|
|
11
17
|
|
|
12
18
|
exports.CheckboxGroupContext = CheckboxGroupContext;
|
|
13
19
|
//# sourceMappingURL=CheckboxGroupContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxGroupContext.js","sources":["../src/checkbox/internal/CheckboxGroupContext.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"CheckboxGroupContext.js","sources":["../src/checkbox/internal/CheckboxGroupContext.ts"],"sourcesContent":["import { AdornmentValidationStatus } from \"../../status-adornment\";\nimport { CheckboxGroupProps } from \"../CheckboxGroup\";\nimport { createContext } from \"../../utils\";\n\nexport interface CheckboxGroupState {\n disabled?: boolean;\n name?: CheckboxGroupProps[\"name\"];\n onChange?: CheckboxGroupProps[\"onChange\"];\n checkedValues?: CheckboxGroupProps[\"checkedValues\"];\n readOnly?: boolean;\n validationStatus?: AdornmentValidationStatus;\n}\n\nconst CheckboxGroupContext = createContext<CheckboxGroupState | undefined>(\n \"CheckboxGroupContext\",\n undefined\n);\n\nexport { CheckboxGroupContext };\n"],"names":["createContext"],"mappings":";;;;;;;;;;;;AAaA,MAAM,oBAAuB,GAAAA,2BAAA;AAAA,EAC3B,sBAAA;AAAA,EACA,KAAA,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCheckboxGroup.js","sources":["../src/checkbox/internal/useCheckboxGroup.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"useCheckboxGroup.js","sources":["../src/checkbox/internal/useCheckboxGroup.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { CheckboxGroupContext } from \"./CheckboxGroupContext\";\n\nexport function useCheckboxGroup() {\n return useContext(CheckboxGroupContext);\n}\n"],"names":["useContext","CheckboxGroupContext"],"mappings":";;;;;;;AAGO,SAAS,gBAAmB,GAAA;AACjC,EAAA,OAAOA,iBAAWC,yCAAoB,CAAA,CAAA;AACxC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormFieldContext.js","sources":["../src/form-field-context/FormFieldContext.ts"],"sourcesContent":["import { createContext } from \"../utils\";\n\nexport interface A11yValueProps {\n /**\n * id for FormFieldHelperText\n */\n helperTextId?: string;\n /**\n * id for FormFieldLabel\n */\n labelId?: string;\n}\n\
|
|
1
|
+
{"version":3,"file":"FormFieldContext.js","sources":["../src/form-field-context/FormFieldContext.ts"],"sourcesContent":["import { createContext } from \"../utils\";\n\nexport interface A11yValueProps {\n /**\n * id for FormFieldHelperText\n */\n helperTextId?: string;\n /**\n * id for FormFieldLabel\n */\n labelId?: string;\n}\n\nexport type NecessityType = \"required\" | \"optional\" | \"asterisk\";\n\nexport interface a11yValueAriaProps {\n \"aria-labelledby\": A11yValueProps[\"labelId\"];\n \"aria-describedby\": A11yValueProps[\"helperTextId\"] | undefined;\n}\n\nexport interface FormFieldContextValue {\n a11yProps: a11yValueAriaProps;\n disabled: boolean;\n necessity: NecessityType | undefined;\n readOnly: boolean;\n validationStatus: \"error\" | \"warning\" | \"success\" | undefined;\n}\n\nexport const FormFieldContext = createContext(\n \"FormFieldContext\",\n {} as FormFieldContextValue\n);\n"],"names":["createContext"],"mappings":";;;;;;;;;;;;AA4BO,MAAM,gBAAmB,GAAAA,2BAAA;AAAA,EAC9B,kBAAA;AAAA,EACA,EAAC;AACH;;;;"}
|
package/dist-cjs/index.js
CHANGED
|
@@ -40,6 +40,7 @@ var Input = require('./input/Input.js');
|
|
|
40
40
|
var Link = require('./link/Link.js');
|
|
41
41
|
var MultilineInput = require('./multiline-input/MultilineInput.js');
|
|
42
42
|
var Panel = require('./panel/Panel.js');
|
|
43
|
+
var Pill = require('./pill/Pill.js');
|
|
43
44
|
var RadioButton = require('./radio-button/RadioButton.js');
|
|
44
45
|
var RadioButtonGroup = require('./radio-button/RadioButtonGroup.js');
|
|
45
46
|
var RadioButtonIcon = require('./radio-button/RadioButtonIcon.js');
|
|
@@ -134,6 +135,7 @@ exports.Input = Input.Input;
|
|
|
134
135
|
exports.Link = Link.Link;
|
|
135
136
|
exports.MultilineInput = MultilineInput.MultilineInput;
|
|
136
137
|
exports.Panel = Panel.Panel;
|
|
138
|
+
exports.Pill = Pill.Pill;
|
|
137
139
|
exports.RadioButton = RadioButton.RadioButton;
|
|
138
140
|
exports.RadioButtonGroup = RadioButtonGroup.RadioButtonGroup;
|
|
139
141
|
exports.RadioButtonIcon = RadioButtonIcon.RadioButtonIcon;
|
package/dist-cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|