@salt-ds/core 1.8.0-rc.4 → 1.8.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 (105) hide show
  1. package/dist-cjs/accordion/Accordion.css.js +1 -1
  2. package/dist-cjs/accordion/Accordion.js +8 -2
  3. package/dist-cjs/accordion/Accordion.js.map +1 -1
  4. package/dist-cjs/accordion/AccordionContext.js.map +1 -1
  5. package/dist-cjs/accordion/AccordionGroup.css.js +6 -0
  6. package/dist-cjs/accordion/AccordionGroup.css.js.map +1 -0
  7. package/dist-cjs/accordion/AccordionGroup.js +9 -0
  8. package/dist-cjs/accordion/AccordionGroup.js.map +1 -1
  9. package/dist-cjs/accordion/AccordionHeader.css.js +1 -1
  10. package/dist-cjs/accordion/AccordionHeader.js +12 -3
  11. package/dist-cjs/accordion/AccordionHeader.js.map +1 -1
  12. package/dist-cjs/accordion/AccordionPanel.css.js +1 -1
  13. package/dist-cjs/accordion/AccordionPanel.js +1 -0
  14. package/dist-cjs/accordion/AccordionPanel.js.map +1 -1
  15. package/dist-cjs/button/Button.css.js +1 -1
  16. package/dist-cjs/card/InteractableCard.css.js +1 -1
  17. package/dist-cjs/card/InteractableCard.js +5 -3
  18. package/dist-cjs/card/InteractableCard.js.map +1 -1
  19. package/dist-cjs/checkbox/Checkbox.css.js +1 -1
  20. package/dist-cjs/checkbox/CheckboxGroup.js +1 -1
  21. package/dist-cjs/checkbox/CheckboxGroup.js.map +1 -1
  22. package/dist-cjs/checkbox/CheckboxIcon.css.js +1 -1
  23. package/dist-cjs/form-field/FormField.css.js +1 -1
  24. package/dist-cjs/form-field/FormFieldHelperText.css.js +1 -1
  25. package/dist-cjs/form-field/FormFieldLabel.css.js +1 -1
  26. package/dist-cjs/form-field/FormFieldLabel.js +3 -7
  27. package/dist-cjs/form-field/FormFieldLabel.js.map +1 -1
  28. package/dist-cjs/index.js +6 -0
  29. package/dist-cjs/index.js.map +1 -1
  30. package/dist-cjs/input/Input.css.js +1 -1
  31. package/dist-cjs/multiline-input/MultilineInput.css.js +6 -0
  32. package/dist-cjs/multiline-input/MultilineInput.css.js.map +1 -0
  33. package/dist-cjs/multiline-input/MultilineInput.js +170 -0
  34. package/dist-cjs/multiline-input/MultilineInput.js.map +1 -0
  35. package/dist-cjs/radio-button/RadioButton.css.js +1 -1
  36. package/dist-cjs/radio-button/RadioButtonIcon.css.js +1 -1
  37. package/dist-cjs/radio-button/RadioButtonIcon.js +21 -10
  38. package/dist-cjs/radio-button/RadioButtonIcon.js.map +1 -1
  39. package/dist-cjs/text/Text.css.js +1 -1
  40. package/dist-cjs/toast/Toast.css.js +6 -0
  41. package/dist-cjs/toast/Toast.css.js.map +1 -0
  42. package/dist-cjs/toast/Toast.js +50 -0
  43. package/dist-cjs/toast/Toast.js.map +1 -0
  44. package/dist-cjs/toast/ToastContent.css.js +6 -0
  45. package/dist-cjs/toast/ToastContent.css.js.map +1 -0
  46. package/dist-cjs/toast/ToastContent.js +34 -0
  47. package/dist-cjs/toast/ToastContent.js.map +1 -0
  48. package/dist-es/accordion/Accordion.css.js +1 -1
  49. package/dist-es/accordion/Accordion.js +8 -2
  50. package/dist-es/accordion/Accordion.js.map +1 -1
  51. package/dist-es/accordion/AccordionContext.js.map +1 -1
  52. package/dist-es/accordion/AccordionGroup.css.js +4 -0
  53. package/dist-es/accordion/AccordionGroup.css.js.map +1 -0
  54. package/dist-es/accordion/AccordionGroup.js +9 -0
  55. package/dist-es/accordion/AccordionGroup.js.map +1 -1
  56. package/dist-es/accordion/AccordionHeader.css.js +1 -1
  57. package/dist-es/accordion/AccordionHeader.js +12 -3
  58. package/dist-es/accordion/AccordionHeader.js.map +1 -1
  59. package/dist-es/accordion/AccordionPanel.css.js +1 -1
  60. package/dist-es/accordion/AccordionPanel.js +1 -0
  61. package/dist-es/accordion/AccordionPanel.js.map +1 -1
  62. package/dist-es/button/Button.css.js +1 -1
  63. package/dist-es/card/InteractableCard.css.js +1 -1
  64. package/dist-es/card/InteractableCard.js +5 -3
  65. package/dist-es/card/InteractableCard.js.map +1 -1
  66. package/dist-es/checkbox/Checkbox.css.js +1 -1
  67. package/dist-es/checkbox/CheckboxGroup.js +1 -1
  68. package/dist-es/checkbox/CheckboxGroup.js.map +1 -1
  69. package/dist-es/checkbox/CheckboxIcon.css.js +1 -1
  70. package/dist-es/form-field/FormField.css.js +1 -1
  71. package/dist-es/form-field/FormFieldHelperText.css.js +1 -1
  72. package/dist-es/form-field/FormFieldLabel.css.js +1 -1
  73. package/dist-es/form-field/FormFieldLabel.js +3 -7
  74. package/dist-es/form-field/FormFieldLabel.js.map +1 -1
  75. package/dist-es/index.js +3 -0
  76. package/dist-es/index.js.map +1 -1
  77. package/dist-es/input/Input.css.js +1 -1
  78. package/dist-es/multiline-input/MultilineInput.css.js +4 -0
  79. package/dist-es/multiline-input/MultilineInput.css.js.map +1 -0
  80. package/dist-es/multiline-input/MultilineInput.js +166 -0
  81. package/dist-es/multiline-input/MultilineInput.js.map +1 -0
  82. package/dist-es/radio-button/RadioButton.css.js +1 -1
  83. package/dist-es/radio-button/RadioButtonIcon.css.js +1 -1
  84. package/dist-es/radio-button/RadioButtonIcon.js +22 -11
  85. package/dist-es/radio-button/RadioButtonIcon.js.map +1 -1
  86. package/dist-es/text/Text.css.js +1 -1
  87. package/dist-es/toast/Toast.css.js +4 -0
  88. package/dist-es/toast/Toast.css.js.map +1 -0
  89. package/dist-es/toast/Toast.js +46 -0
  90. package/dist-es/toast/Toast.js.map +1 -0
  91. package/dist-es/toast/ToastContent.css.js +4 -0
  92. package/dist-es/toast/ToastContent.css.js.map +1 -0
  93. package/dist-es/toast/ToastContent.js +30 -0
  94. package/dist-es/toast/ToastContent.js.map +1 -0
  95. package/dist-types/accordion/Accordion.d.ts +4 -0
  96. package/dist-types/accordion/AccordionContext.d.ts +1 -0
  97. package/dist-types/card/InteractableCard.d.ts +2 -3
  98. package/dist-types/form-field/FormFieldLabel.d.ts +10 -3
  99. package/dist-types/index.d.ts +2 -0
  100. package/dist-types/multiline-input/MultilineInput.d.ts +40 -0
  101. package/dist-types/multiline-input/index.d.ts +1 -0
  102. package/dist-types/toast/Toast.d.ts +9 -0
  103. package/dist-types/toast/ToastContent.d.ts +2 -0
  104. package/dist-types/toast/index.d.ts +2 -0
  105. package/package.json +7 -7
@@ -0,0 +1,166 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { clsx } from 'clsx';
3
+ import { forwardRef, useState } from 'react';
4
+ import { useComponentCssInjection } from '@salt-ds/styles';
5
+ import { useWindow } from '@salt-ds/window';
6
+ import '../form-field-context/FormFieldContext.js';
7
+ import { useFormFieldProps } from '../form-field-context/useFormFieldProps.js';
8
+ import { StatusAdornment } from '../status-adornment/StatusAdornment.js';
9
+ import { makePrefixer } from '../utils/makePrefixer.js';
10
+ import { useControlled } from '../utils/useControlled.js';
11
+ import '../utils/useFloatingUI.js';
12
+ import '../utils/useId.js';
13
+ import '../salt-provider/SaltProvider.js';
14
+ import '../viewport/ViewportProvider.js';
15
+ import css_248z from './MultilineInput.css.js';
16
+
17
+ const withBaseName = makePrefixer("saltMultilineInput");
18
+ const MultilineInput = forwardRef(
19
+ function MultilineInput2({
20
+ "aria-activedescendant": ariaActiveDescendant,
21
+ "aria-expanded": ariaExpanded,
22
+ "aria-owns": ariaOwns,
23
+ bordered = false,
24
+ className: classNameProp,
25
+ disabled,
26
+ endAdornment,
27
+ id,
28
+ placeholder,
29
+ readOnly,
30
+ role,
31
+ rows = 3,
32
+ startAdornment,
33
+ style,
34
+ textAreaProps = {},
35
+ textAreaRef,
36
+ value: valueProp,
37
+ defaultValue: defaultValueProp = valueProp === void 0 ? "" : void 0,
38
+ validationStatus: validationStatusProp,
39
+ variant = "primary",
40
+ ...other
41
+ }, ref) {
42
+ const targetWindow = useWindow();
43
+ useComponentCssInjection({
44
+ testId: "salt-multiline-input",
45
+ css: css_248z,
46
+ window: targetWindow
47
+ });
48
+ const restA11yProps = {
49
+ "aria-activedescendant": ariaActiveDescendant,
50
+ "aria-expanded": ariaExpanded,
51
+ "aria-owns": ariaOwns
52
+ };
53
+ const [focused, setFocused] = useState(false);
54
+ const {
55
+ "aria-describedby": textAreaDescribedBy,
56
+ "aria-labelledby": textAreaLabelledBy,
57
+ onBlur,
58
+ onChange,
59
+ onFocus,
60
+ required: textAreaRequired,
61
+ ...restTextAreaProps
62
+ } = textAreaProps;
63
+ const {
64
+ a11yProps: {
65
+ "aria-describedby": formFieldDescribedBy,
66
+ "aria-labelledby": formFieldLabelledBy
67
+ } = {},
68
+ disabled: formFieldDisabled,
69
+ readOnly: formFieldReadOnly,
70
+ necessity: formFieldRequired,
71
+ validationStatus: formFieldValidationStatus
72
+ } = useFormFieldProps();
73
+ const isDisabled = disabled || formFieldDisabled;
74
+ const isReadOnly = readOnly || formFieldReadOnly;
75
+ const validationStatus = formFieldValidationStatus != null ? formFieldValidationStatus : validationStatusProp;
76
+ const isRequired = formFieldRequired ? ["required", "asterisk"].includes(formFieldRequired) : textAreaRequired;
77
+ const [value, setValue] = useControlled({
78
+ controlled: valueProp,
79
+ default: defaultValueProp,
80
+ name: "MultilineInput",
81
+ state: "value"
82
+ });
83
+ const handleChange = (event) => {
84
+ const value2 = event.target.value;
85
+ setValue(value2);
86
+ onChange == null ? void 0 : onChange(event);
87
+ };
88
+ const handleBlur = (event) => {
89
+ onBlur == null ? void 0 : onBlur(event);
90
+ setFocused(false);
91
+ };
92
+ const handleFocus = (event) => {
93
+ onFocus == null ? void 0 : onFocus(event);
94
+ setFocused(true);
95
+ };
96
+ const multilineInputStyles = {
97
+ "--saltMultilineInput-rows": rows,
98
+ ...style
99
+ };
100
+ return /* @__PURE__ */ jsxs("div", {
101
+ className: clsx(
102
+ withBaseName(),
103
+ withBaseName(variant),
104
+ {
105
+ [withBaseName("withAdornmentRow")]: endAdornment,
106
+ [withBaseName("bordered")]: bordered,
107
+ [withBaseName("focused")]: !isDisabled && !isReadOnly && focused,
108
+ [withBaseName("disabled")]: isDisabled,
109
+ [withBaseName("readOnly")]: isReadOnly,
110
+ [withBaseName(validationStatus || "")]: validationStatus
111
+ },
112
+ classNameProp
113
+ ),
114
+ ref,
115
+ style: multilineInputStyles,
116
+ ...other,
117
+ children: [
118
+ startAdornment && /* @__PURE__ */ jsx("div", {
119
+ className: withBaseName("startAdornmentContainer"),
120
+ children: startAdornment
121
+ }),
122
+ /* @__PURE__ */ jsx("textarea", {
123
+ "aria-describedby": clsx(formFieldDescribedBy, textAreaDescribedBy),
124
+ "aria-labelledby": clsx(formFieldLabelledBy, textAreaLabelledBy),
125
+ className: clsx(withBaseName("textarea"), textAreaProps == null ? void 0 : textAreaProps.className),
126
+ disabled: isDisabled,
127
+ id,
128
+ readOnly: isReadOnly,
129
+ ref: textAreaRef,
130
+ required: isRequired,
131
+ role,
132
+ rows,
133
+ tabIndex: isReadOnly || isDisabled ? -1 : 0,
134
+ onBlur: handleBlur,
135
+ onChange: handleChange,
136
+ onFocus: !isDisabled && !isReadOnly ? handleFocus : void 0,
137
+ placeholder,
138
+ value,
139
+ ...restA11yProps,
140
+ ...restTextAreaProps
141
+ }),
142
+ /* @__PURE__ */ jsxs("div", {
143
+ className: withBaseName("suffixAdornments"),
144
+ children: [
145
+ !isDisabled && !isReadOnly && validationStatus && /* @__PURE__ */ jsx("div", {
146
+ className: withBaseName("statusAdornmentContainer"),
147
+ children: /* @__PURE__ */ jsx(StatusAdornment, {
148
+ status: validationStatus
149
+ })
150
+ }),
151
+ endAdornment && /* @__PURE__ */ jsx("div", {
152
+ className: withBaseName("endAdornmentContainer"),
153
+ children: endAdornment
154
+ })
155
+ ]
156
+ }),
157
+ /* @__PURE__ */ jsx("div", {
158
+ className: withBaseName("activationIndicator")
159
+ })
160
+ ]
161
+ });
162
+ }
163
+ );
164
+
165
+ export { MultilineInput };
166
+ //# sourceMappingURL=MultilineInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultilineInput.js","sources":["../src/multiline-input/MultilineInput.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n FocusEvent,\n forwardRef,\n ReactNode,\n Ref,\n TextareaHTMLAttributes,\n useState,\n} from \"react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useFormFieldProps } from \"../form-field-context\";\nimport { StatusAdornment } from \"../status-adornment\";\nimport { makePrefixer, useControlled } from \"../utils\";\n\nimport multilineInputCss from \"./MultilineInput.css\";\n\nconst withBaseName = makePrefixer(\"saltMultilineInput\");\n\nexport interface MultilineInputProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"defaultValue\">,\n Pick<\n ComponentPropsWithoutRef<\"textarea\">,\n \"disabled\" | \"value\" | \"defaultValue\" | \"placeholder\"\n > {\n /**\n * Styling variant with full border. Defaults to false\n */\n bordered?: boolean;\n /**\n * End adornment component\n */\n endAdornment?: ReactNode;\n /**\n * If `true`, the component is read only.\n */\n readOnly?: boolean;\n /**\n * Number of rows. Defaults to 3\n */\n rows?: number;\n /**\n * Start adornment component\n */\n startAdornment?: ReactNode;\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#Attributes) applied to the `textarea` element.\n */\n textAreaProps?: TextareaHTMLAttributes<HTMLTextAreaElement>;\n /**\n * Optional ref for the textarea component\n */\n textAreaRef?: Ref<HTMLTextAreaElement>;\n /**\n * Validation status.\n */\n validationStatus?: \"error\" | \"warning\" | \"success\";\n /**\n * Styling variant. Defaults to \"primary\".\n */\n variant?: \"primary\" | \"secondary\";\n}\n\nexport const MultilineInput = forwardRef<HTMLDivElement, MultilineInputProps>(\n function MultilineInput(\n {\n \"aria-activedescendant\": ariaActiveDescendant,\n \"aria-expanded\": ariaExpanded,\n \"aria-owns\": ariaOwns,\n bordered = false,\n className: classNameProp,\n disabled,\n endAdornment,\n id,\n placeholder,\n readOnly,\n role,\n rows = 3,\n startAdornment,\n style,\n textAreaProps = {},\n textAreaRef,\n value: valueProp,\n defaultValue: defaultValueProp = valueProp === undefined ? \"\" : undefined,\n validationStatus: validationStatusProp,\n variant = \"primary\",\n ...other\n },\n ref\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-multiline-input\",\n css: multilineInputCss,\n window: targetWindow,\n });\n\n const restA11yProps = {\n \"aria-activedescendant\": ariaActiveDescendant,\n \"aria-expanded\": ariaExpanded,\n \"aria-owns\": ariaOwns,\n };\n\n const [focused, setFocused] = useState(false);\n\n const {\n \"aria-describedby\": textAreaDescribedBy,\n \"aria-labelledby\": textAreaLabelledBy,\n onBlur,\n onChange,\n onFocus,\n required: textAreaRequired,\n ...restTextAreaProps\n } = textAreaProps;\n\n const {\n a11yProps: {\n \"aria-describedby\": formFieldDescribedBy,\n \"aria-labelledby\": formFieldLabelledBy,\n } = {},\n disabled: formFieldDisabled,\n readOnly: formFieldReadOnly,\n necessity: formFieldRequired,\n validationStatus: formFieldValidationStatus,\n } = useFormFieldProps();\n\n const isDisabled = disabled || formFieldDisabled;\n const isReadOnly = readOnly || formFieldReadOnly;\n const validationStatus = formFieldValidationStatus ?? validationStatusProp;\n const isRequired = formFieldRequired\n ? [\"required\", \"asterisk\"].includes(formFieldRequired)\n : undefined ?? textAreaRequired;\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValueProp,\n name: \"MultilineInput\",\n state: \"value\",\n });\n\n const handleChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n const value = event.target.value;\n setValue(value);\n onChange?.(event);\n };\n\n const handleBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n onBlur?.(event);\n setFocused(false);\n };\n\n const handleFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n onFocus?.(event);\n setFocused(true);\n };\n\n const multilineInputStyles = {\n \"--saltMultilineInput-rows\": rows,\n ...style,\n };\n\n return (\n <div\n className={clsx(\n withBaseName(),\n withBaseName(variant),\n {\n [withBaseName(\"withAdornmentRow\")]: endAdornment,\n [withBaseName(\"bordered\")]: bordered,\n [withBaseName(\"focused\")]: !isDisabled && !isReadOnly && focused,\n [withBaseName(\"disabled\")]: isDisabled,\n [withBaseName(\"readOnly\")]: isReadOnly,\n [withBaseName(validationStatus || \"\")]: validationStatus,\n },\n classNameProp\n )}\n ref={ref}\n style={multilineInputStyles}\n {...other}\n >\n {startAdornment && (\n <div className={withBaseName(\"startAdornmentContainer\")}>\n {startAdornment}\n </div>\n )}\n <textarea\n aria-describedby={clsx(formFieldDescribedBy, textAreaDescribedBy)}\n aria-labelledby={clsx(formFieldLabelledBy, textAreaLabelledBy)}\n className={clsx(withBaseName(\"textarea\"), textAreaProps?.className)}\n disabled={isDisabled}\n id={id}\n readOnly={isReadOnly}\n ref={textAreaRef}\n required={isRequired}\n role={role}\n rows={rows}\n tabIndex={isReadOnly || isDisabled ? -1 : 0}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={!isDisabled && !isReadOnly ? handleFocus : undefined}\n placeholder={placeholder}\n value={value}\n {...restA11yProps}\n {...restTextAreaProps}\n />\n <div className={withBaseName(\"suffixAdornments\")}>\n {!isDisabled && !isReadOnly && validationStatus && (\n <div className={withBaseName(\"statusAdornmentContainer\")}>\n <StatusAdornment status={validationStatus} />\n </div>\n )}\n {endAdornment && (\n <div className={withBaseName(\"endAdornmentContainer\")}>\n {endAdornment}\n </div>\n )}\n </div>\n <div className={withBaseName(\"activationIndicator\")} />\n </div>\n );\n }\n);\n"],"names":["MultilineInput","multilineInputCss","value"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- var css_248z = "/* Styles applied to RadioButton container */\n.saltRadioButton {\n display: flex;\n gap: var(--salt-spacing-100);\n cursor: var(--salt-selectable-cursor-hover);\n position: relative;\n}\n\n/* Styles applied when RadioButton is disabled */\n.saltRadioButton-disabled {\n color: var(--salt-text-primary-foreground-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n}\n\n/* Styles applied to root component if `readOnly={true}` */\n.saltRadioButton-readOnly {\n color: var(--salt-text-primary-foreground);\n cursor: var(--salt-selectable-cursor-readonly);\n}\n\n/* Styles applied to input component */\n.saltRadioButton-input {\n cursor: inherit;\n position: absolute;\n opacity: 0;\n top: 0;\n left: 0;\n margin: 0;\n padding: 0;\n z-index: var(--salt-zIndex-default);\n}\n\n/* Styles applied to icon when :focus-visible */\n.saltRadioButton-input:focus-visible + .saltRadioButtonIcon {\n outline: var(--saltRadioButton-outline, var(--salt-focused-outline));\n outline-offset: var(--salt-focused-outlineOffset);\n border-color: var(--salt-selectable-borderColor-hover);\n color: var(--salt-selectable-foreground-hover);\n}\n\n.saltRadioButton-error .saltRadioButton-input:focus-visible + .saltRadioButtonIcon {\n outline-color: var(--salt-status-error-foreground);\n border-color: var(--salt-status-error-foreground);\n color: var(--salt-status-error-foreground);\n}\n\n.saltRadioButton-warning .saltRadioButton-input:focus-visible + .saltRadioButtonIcon {\n outline-color: var(--salt-status-warning-foreground);\n border-color: var(--salt-status-warning-foreground);\n color: var(--salt-status-warning-foreground);\n}\n";
1
+ var css_248z = "/* Styles applied to RadioButton container */\n.saltRadioButton {\n display: flex;\n gap: var(--salt-spacing-100);\n cursor: var(--salt-selectable-cursor-hover);\n position: relative;\n}\n\n/* Styles applied when RadioButton is disabled */\n.saltRadioButton-disabled {\n color: var(--salt-text-primary-foreground-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n}\n\n/* Styles applied to root component if `readOnly={true}` */\n.saltRadioButton-readOnly {\n color: var(--salt-text-primary-foreground);\n cursor: var(--salt-selectable-cursor-readonly);\n}\n\n/* Styles applied to input component */\n.saltRadioButton-input {\n cursor: inherit;\n position: absolute;\n height: var(--salt-size-selectable);\n opacity: 0;\n top: 0;\n left: 0;\n margin: 0;\n padding: 0;\n width: var(--salt-size-selectable);\n z-index: var(--salt-zIndex-default);\n}\n\n/* Styles applied to icon when :focus-visible */\n.saltRadioButton-input:focus-visible + .saltRadioButtonIcon {\n outline: var(--saltRadioButton-outline, var(--salt-focused-outline));\n outline-offset: var(--salt-focused-outlineOffset);\n border-color: var(--salt-selectable-borderColor-hover);\n color: var(--salt-selectable-foreground-hover);\n}\n\n.saltRadioButton-input:focus-visible + .saltRadioButtonIcon-checked {\n border-color: var(--salt-selectable-borderColor-selected);\n color: var(--salt-selectable-foreground-selected);\n}\n\n.saltRadioButton-error .saltRadioButton-input:focus-visible + .saltRadioButtonIcon {\n outline-color: var(--salt-status-error-foreground);\n border-color: var(--salt-status-error-foreground);\n color: var(--salt-status-error-foreground);\n}\n\n.saltRadioButton-warning .saltRadioButton-input:focus-visible + .saltRadioButtonIcon {\n outline-color: var(--salt-status-warning-foreground);\n border-color: var(--salt-status-warning-foreground);\n color: var(--salt-status-warning-foreground);\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=RadioButton.css.js.map
@@ -1,4 +1,4 @@
1
- var css_248z = "/* Styles applied to radio button icon */\n.saltRadioButtonIcon {\n --radioButton-size: var(--salt-size-selectable);\n width: var(--radioButton-size);\n height: var(--radioButton-size);\n min-width: var(--radioButton-size);\n min-height: var(--radioButton-size);\n border-radius: 50%;\n\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 --saltIcon-color: currentColor;\n --saltIcon-size: 100%;\n display: flex;\n}\n\n.saltRadioButton:hover .saltRadioButtonIcon {\n border-color: var(--salt-selectable-borderColor-hover);\n color: var(--salt-selectable-foreground-hover);\n}\n\n.saltRadioButtonIcon-checked {\n border-color: var(--salt-selectable-borderColor-selected);\n color: var(--salt-selectable-foreground-selected);\n}\n\n.saltRadioButtonIcon-disabled,\n.saltRadioButton:hover .saltRadioButtonIcon-disabled {\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.saltRadioButtonIcon-checked.saltRadioButtonIcon-disabled,\n.saltRadioButton:hover .saltRadioButtonIcon-checked.saltRadioButtonIcon-disabled {\n border-color: var(--salt-selectable-borderColor-selectedDisabled);\n color: var(--salt-selectable-foreground-selectedDisabled);\n}\n\n.saltRadioButtonIcon-error,\n.saltRadioButton:hover .saltRadioButtonIcon-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.saltRadioButtonIcon-warning,\n.saltRadioButton:hover .saltRadioButtonIcon-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.saltRadioButtonIcon-readOnly,\n.saltRadioButton:hover .saltRadioButtonIcon-readOnly {\n border-color: var(--salt-selectable-borderColor-readonly);\n color: var(--salt-text-primary-foreground);\n}\n";
1
+ var css_248z = "/* Styles applied to radio button icon */\n.saltRadioButtonIcon {\n --radioButton-size: var(--salt-size-selectable);\n width: var(--radioButton-size);\n height: var(--radioButton-size);\n min-width: var(--radioButton-size);\n min-height: var(--radioButton-size);\n border-radius: 50%;\n\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 --saltIcon-color: currentColor;\n --saltIcon-size: 100%;\n display: flex;\n}\n\n.saltRadioButton:hover .saltRadioButtonIcon {\n border-color: var(--salt-selectable-borderColor-hover);\n color: var(--salt-selectable-foreground-hover);\n}\n\n.saltRadioButtonIcon-checked,\n.saltRadioButton:hover .saltRadioButtonIcon-checked {\n border-color: var(--salt-selectable-borderColor-selected);\n color: var(--salt-selectable-foreground-selected);\n}\n\n.saltRadioButtonIcon-disabled,\n.saltRadioButton:hover .saltRadioButtonIcon-disabled {\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.saltRadioButtonIcon-checked.saltRadioButtonIcon-disabled,\n.saltRadioButton:hover .saltRadioButtonIcon-checked.saltRadioButtonIcon-disabled {\n border-color: var(--salt-selectable-borderColor-selectedDisabled);\n color: var(--salt-selectable-foreground-selectedDisabled);\n}\n\n.saltRadioButtonIcon-error,\n.saltRadioButton:hover .saltRadioButtonIcon-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.saltRadioButtonIcon-warning,\n.saltRadioButton:hover .saltRadioButtonIcon-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.saltRadioButtonIcon-readOnly,\n.saltRadioButton:hover .saltRadioButtonIcon-readOnly {\n border-color: var(--salt-selectable-borderColor-readonly);\n color: var(--salt-text-primary-foreground);\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=RadioButtonIcon.css.js.map
@@ -1,4 +1,4 @@
1
- import { jsx } from 'react/jsx-runtime';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import 'react';
3
3
  import { makePrefixer } from '../utils/makePrefixer.js';
4
4
  import '../utils/useFloatingUI.js';
@@ -26,7 +26,7 @@ const RadioButtonIcon = ({
26
26
  css: css_248z,
27
27
  window: targetWindow
28
28
  });
29
- return /* @__PURE__ */ jsx("div", {
29
+ return /* @__PURE__ */ jsxs("div", {
30
30
  "aria-hidden": "true",
31
31
  className: clsx(
32
32
  withBaseName(),
@@ -40,16 +40,27 @@ const RadioButtonIcon = ({
40
40
  className
41
41
  ),
42
42
  ...rest,
43
- children: checked && /* @__PURE__ */ jsx("svg", {
44
- xmlns: "http://www.w3.org/2000/svg",
45
- viewBox: "0 0 12 12",
46
- fill: "currentColor",
47
- children: /* @__PURE__ */ jsx("path", {
48
- fillRule: "evenodd",
49
- d: "M0 6a6 6 0 1 1 12 0A6 6 0 0 1 0 6Zm6 3a3 3 0 1 1 0-6 3 3 0 0 1 0 6Z",
50
- clipRule: "evenodd"
43
+ children: [
44
+ checked && !readOnly && /* @__PURE__ */ jsx("svg", {
45
+ xmlns: "http://www.w3.org/2000/svg",
46
+ viewBox: "0 0 12 12",
47
+ fill: "currentColor",
48
+ children: /* @__PURE__ */ jsx("path", {
49
+ fillRule: "evenodd",
50
+ d: "M0 6a6 6 0 1 1 12 0A6 6 0 0 1 0 6Zm6 3a3 3 0 1 1 0-6 3 3 0 0 1 0 6Z",
51
+ clipRule: "evenodd"
52
+ })
53
+ }),
54
+ checked && readOnly && /* @__PURE__ */ jsx("svg", {
55
+ xmlns: "http://www.w3.org/2000/svg",
56
+ fill: "currentColor",
57
+ viewBox: "0 0 12 12",
58
+ children: /* @__PURE__ */ jsx("path", {
59
+ fill: "#161616",
60
+ d: "M9.5 6a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0Z"
61
+ })
51
62
  })
52
- })
63
+ ]
53
64
  });
54
65
  };
55
66
 
@@ -1 +1 @@
1
- {"version":3,"file":"RadioButtonIcon.js","sources":["../src/radio-button/RadioButtonIcon.tsx"],"sourcesContent":["import { makePrefixer } from \"../utils\";\nimport { clsx } from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { AdornmentValidationStatus } from \"../status-adornment\";\nimport radioButtonIconCss from \"./RadioButtonIcon.css\";\nimport { ComponentPropsWithoutRef } from \"react\";\n\nconst withBaseName = makePrefixer(\"saltRadioButtonIcon\");\n\nexport interface RadioButtonIconProps extends ComponentPropsWithoutRef<\"div\"> {\n checked?: boolean;\n disabled?: boolean;\n /**\n * @deprecated Use validationStatus instead\n */\n error?: boolean;\n readOnly?: boolean;\n validationStatus?: AdornmentValidationStatus;\n}\n\n/**\n * Default radio icon\n */\nexport const RadioButtonIcon = ({\n checked,\n className,\n error,\n disabled,\n validationStatus,\n readOnly,\n ...rest\n}: RadioButtonIconProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-radio-button-icon\",\n css: radioButtonIconCss,\n window: targetWindow,\n });\n return (\n <div\n aria-hidden=\"true\"\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"checked\")]: checked,\n [withBaseName(\"error\")]: error,\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(validationStatus || \"\")]: validationStatus,\n [withBaseName(\"readOnly\")]: readOnly,\n },\n className\n )}\n {...rest}\n >\n {checked && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M0 6a6 6 0 1 1 12 0A6 6 0 0 1 0 6Zm6 3a3 3 0 1 1 0-6 3 3 0 0 1 0 6Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )}\n </div>\n );\n};\n"],"names":["radioButtonIconCss"],"mappings":";;;;;;;;;;;;AAQA,MAAM,YAAA,GAAe,aAAa,qBAAqB,CAAA,CAAA;AAgBhD,MAAM,kBAAkB,CAAC;AAAA,EAC9B,OAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,QAAA;AAAA,EACG,GAAA,IAAA;AACL,CAA4B,KAAA;AAC1B,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,wBAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AACD,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,aAAY,EAAA,MAAA;AAAA,IACZ,SAAW,EAAA,IAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QACE,CAAC,YAAa,CAAA,SAAS,CAAI,GAAA,OAAA;AAAA,QAC3B,CAAC,YAAa,CAAA,OAAO,CAAI,GAAA,KAAA;AAAA,QACzB,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,QAC5B,CAAC,YAAA,CAAa,gBAAoB,IAAA,EAAE,CAAI,GAAA,gBAAA;AAAA,QACxC,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,OAC9B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACC,GAAG,IAAA;AAAA,IAEH,qCACE,GAAA,CAAA,KAAA,EAAA;AAAA,MACC,KAAM,EAAA,4BAAA;AAAA,MACN,OAAQ,EAAA,WAAA;AAAA,MACR,IAAK,EAAA,cAAA;AAAA,MAEL,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA;AAAA,QACC,QAAS,EAAA,SAAA;AAAA,QACT,CAAE,EAAA,qEAAA;AAAA,QACF,QAAS,EAAA,SAAA;AAAA,OACX,CAAA;AAAA,KACF,CAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"RadioButtonIcon.js","sources":["../src/radio-button/RadioButtonIcon.tsx"],"sourcesContent":["import { makePrefixer } from \"../utils\";\nimport { clsx } from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { AdornmentValidationStatus } from \"../status-adornment\";\nimport radioButtonIconCss from \"./RadioButtonIcon.css\";\nimport { ComponentPropsWithoutRef } from \"react\";\n\nconst withBaseName = makePrefixer(\"saltRadioButtonIcon\");\n\nexport interface RadioButtonIconProps extends ComponentPropsWithoutRef<\"div\"> {\n checked?: boolean;\n disabled?: boolean;\n /**\n * @deprecated Use validationStatus instead\n */\n error?: boolean;\n readOnly?: boolean;\n validationStatus?: AdornmentValidationStatus;\n}\n\n/**\n * Default radio icon\n */\nexport const RadioButtonIcon = ({\n checked,\n className,\n error,\n disabled,\n validationStatus,\n readOnly,\n ...rest\n}: RadioButtonIconProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-radio-button-icon\",\n css: radioButtonIconCss,\n window: targetWindow,\n });\n return (\n <div\n aria-hidden=\"true\"\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"checked\")]: checked,\n [withBaseName(\"error\")]: error,\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(validationStatus || \"\")]: validationStatus,\n [withBaseName(\"readOnly\")]: readOnly,\n },\n className\n )}\n {...rest}\n >\n {checked && !readOnly && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M0 6a6 6 0 1 1 12 0A6 6 0 0 1 0 6Zm6 3a3 3 0 1 1 0-6 3 3 0 0 1 0 6Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )}\n {checked && readOnly && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n viewBox=\"0 0 12 12\"\n >\n <path\n fill=\"#161616\"\n d=\"M9.5 6a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0Z\"\n />\n </svg>\n )}\n </div>\n );\n};\n"],"names":["radioButtonIconCss"],"mappings":";;;;;;;;;;;;AAQA,MAAM,YAAA,GAAe,aAAa,qBAAqB,CAAA,CAAA;AAgBhD,MAAM,kBAAkB,CAAC;AAAA,EAC9B,OAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,QAAA;AAAA,EACG,GAAA,IAAA;AACL,CAA4B,KAAA;AAC1B,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,wBAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AACD,EAAA,uBACG,IAAA,CAAA,KAAA,EAAA;AAAA,IACC,aAAY,EAAA,MAAA;AAAA,IACZ,SAAW,EAAA,IAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QACE,CAAC,YAAa,CAAA,SAAS,CAAI,GAAA,OAAA;AAAA,QAC3B,CAAC,YAAa,CAAA,OAAO,CAAI,GAAA,KAAA;AAAA,QACzB,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,QAC5B,CAAC,YAAA,CAAa,gBAAoB,IAAA,EAAE,CAAI,GAAA,gBAAA;AAAA,QACxC,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,OAC9B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACC,GAAG,IAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAW,OAAA,IAAA,CAAC,4BACV,GAAA,CAAA,KAAA,EAAA;AAAA,QACC,KAAM,EAAA,4BAAA;AAAA,QACN,OAAQ,EAAA,WAAA;AAAA,QACR,IAAK,EAAA,cAAA;AAAA,QAEL,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA;AAAA,UACC,QAAS,EAAA,SAAA;AAAA,UACT,CAAE,EAAA,qEAAA;AAAA,UACF,QAAS,EAAA,SAAA;AAAA,SACX,CAAA;AAAA,OACF,CAAA;AAAA,MAED,OAAA,IAAW,4BACT,GAAA,CAAA,KAAA,EAAA;AAAA,QACC,KAAM,EAAA,4BAAA;AAAA,QACN,IAAK,EAAA,cAAA;AAAA,QACL,OAAQ,EAAA,WAAA;AAAA,QAER,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA;AAAA,UACC,IAAK,EAAA,SAAA;AAAA,UACL,CAAE,EAAA,6CAAA;AAAA,SACJ,CAAA;AAAA,OACF,CAAA;AAAA,KAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- var css_248z = "/* Main css class. Style for body text */\n.saltText {\n color: var(--saltText-color, var(--text-color));\n font-family: var(--saltText-fontFamily, var(--salt-text-fontFamily));\n}\n\n.saltText::selection {\n background: var(--saltText-highlight, var(--salt-text-background-selected));\n}\n\n/* Allows truncation */\n.saltText-lineClamp {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--text-max-rows, 0);\n overflow: hidden;\n word-break: break-word;\n}\n\n/* Primary variant */\n.saltText-primary {\n --text-color: var(--salt-text-primary-foreground);\n}\n\n/* Disabled primary variant */\n.saltText-primary.saltText-disabled {\n --text-color: var(--salt-text-primary-foreground-disabled);\n}\n\n/* Secondary variant */\n.saltText-secondary {\n --text-color: var(--salt-text-secondary-foreground);\n}\n\n/* Disabled secondary variant */\n.saltText-secondary.saltText-disabled {\n --text-color: var(--salt-text-secondary-foreground-disabled);\n}\n\n/* Body emphasis strong */\n.saltText strong {\n font-weight: var(--salt-text-fontWeight-strong);\n}\n/* Body emphasis small */\n.saltText small {\n font-size: inherit;\n font-weight: var(--salt-text-fontWeight-small);\n}\n\n/* Display 1 */\n.saltText-display1.saltText {\n font-family: var(--salt-text-display1-fontFamily);\n font-size: var(--salt-text-display1-fontSize);\n font-weight: var(--salt-text-display1-fontWeight);\n line-height: var(--salt-text-display1-lineHeight);\n}\n\n/* Display 2 */\n.saltText-display2.saltText {\n font-family: var(--salt-text-display2-fontFamily);\n font-size: var(--salt-text-display2-fontSize);\n font-weight: var(--salt-text-display2-fontWeight);\n line-height: var(--salt-text-display2-lineHeight);\n}\n\n/* Display 3 */\n.saltText-display3.saltText {\n font-family: var(--salt-text-display3-fontFamily);\n font-size: var(--salt-text-display3-fontSize);\n font-weight: var(--salt-text-display3-fontWeight);\n line-height: var(--salt-text-display3-lineHeight);\n}\n\n/* Heading 1 */\nh1.saltText,\n.saltText-h1.saltText {\n font-family: var(--salt-text-h1-fontFamily);\n font-size: var(--salt-text-h1-fontSize);\n font-weight: var(--salt-text-h1-fontWeight);\n line-height: var(--salt-text-h1-lineHeight);\n}\n\n/* H1 emphasis strong */\nh1.saltText strong,\n.saltText-h1.saltText strong {\n font-weight: var(--salt-text-h1-fontWeight-strong);\n}\n/* H1 emphasis small */\nh1.saltText small,\n.saltText-h1.saltText small {\n font-size: inherit;\n font-weight: var(--salt-text-h1-fontWeight-small);\n}\n\n/* Heading 2 */\nh2.saltText,\n.saltText-h2.saltText {\n font-family: var(--salt-text-h2-fontFamily);\n font-size: var(--salt-text-h2-fontSize);\n font-weight: var(--salt-text-h2-fontWeight);\n line-height: var(--salt-text-h2-lineHeight);\n}\n\n/* H2 emphasis strong */\nh2.saltText strong,\n.saltText-h2.saltText strong {\n font-weight: var(--salt-text-h2-fontWeight-strong);\n}\n/* H2 emphasis small */\nh2.saltText small,\n.saltText-h2.saltText small {\n font-size: inherit;\n font-weight: var(--salt-text-h2-fontWeight-small);\n}\n\n/* Heading 3 */\nh3.saltText,\n.saltText-h3.saltText {\n font-family: var(--salt-text-h3-fontFamily);\n font-size: var(--salt-text-h3-fontSize);\n font-weight: var(--salt-text-h3-fontWeight);\n line-height: var(--salt-text-h3-lineHeight);\n}\n\n/* H3 emphasis strong */\nh3.saltText strong,\n.saltText-h3.saltText strong {\n font-weight: var(--salt-text-h3-fontWeight-strong);\n}\n/* H3 emphasis small */\nh3.saltText small,\n.saltText-h3.saltText small {\n font-size: inherit;\n font-weight: var(--salt-text-h3-fontWeight-small);\n}\n\n/* Heading 4 */\nh4.saltText,\n.saltText-h4.saltText {\n font-family: var(--salt-text-h4-fontFamily);\n font-size: var(--salt-text-h4-fontSize);\n font-weight: var(--salt-text-h4-fontWeight);\n line-height: var(--salt-text-h4-lineHeight);\n}\n\n/* H4 emphasis strong */\nh4.saltText strong,\n.saltText-h4.saltText strong {\n font-weight: var(--salt-text-h4-fontWeight-strong);\n}\n/* H4 emphasis small */\nh4.saltText small,\n.saltText-h4.saltText small {\n font-size: inherit;\n font-weight: var(--salt-text-h4-fontWeight-small);\n}\n\n/* Label */\nlabel.saltText,\n.saltText-label.saltText {\n font-family: var(--salt-text-label-fontFamily);\n font-size: var(--salt-text-label-fontSize);\n line-height: var(--salt-text-label-lineHeight);\n font-weight: var(--salt-text-fontWeight);\n}\n\n/* Label emphasis strong */\nlabel.saltText strong,\n.saltText-label.saltText strong {\n font-weight: var(--salt-text-fontWeight-strong);\n}\n/* Label emphasis small */\nlabel.saltText small,\n.saltText-label.saltText small {\n font-size: inherit;\n font-weight: var(--salt-text-fontWeight-small);\n}\n";
1
+ var css_248z = "/* Main css class. Style for body text */\n.saltText {\n color: var(--saltText-color, var(--text-color));\n font-family: var(--saltText-fontFamily, var(--salt-text-fontFamily));\n}\n\n.saltText::selection {\n background: var(--saltText-highlight, var(--salt-text-background-selected));\n}\n\n/* Allows truncation */\n.saltText-lineClamp {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--text-max-rows, 0);\n overflow: hidden;\n word-break: break-word;\n}\n\n/* Primary variant */\n.saltText-primary {\n --text-color: var(--salt-text-primary-foreground);\n}\n\n/* Disabled primary variant */\n.saltText-primary.saltText-disabled {\n --text-color: var(--salt-text-primary-foreground-disabled);\n}\n\n/* Secondary variant */\n.saltText-secondary {\n --text-color: var(--salt-text-secondary-foreground);\n}\n\n/* Disabled secondary variant */\n.saltText-secondary.saltText-disabled {\n --text-color: var(--salt-text-secondary-foreground-disabled);\n}\n\n/* Body emphasis strong */\n.saltText strong {\n font-weight: var(--salt-text-fontWeight-strong);\n}\n/* Body emphasis small */\n.saltText small {\n font-size: inherit;\n font-weight: var(--salt-text-fontWeight-small);\n}\n\n/* Display 1 */\n.saltText-display1.saltText {\n font-family: var(--salt-text-display1-fontFamily);\n font-size: var(--salt-text-display1-fontSize);\n font-weight: var(--salt-text-display1-fontWeight);\n line-height: var(--salt-text-display1-lineHeight);\n}\n\n/* Display 2 */\n.saltText-display2.saltText {\n font-family: var(--salt-text-display2-fontFamily);\n font-size: var(--salt-text-display2-fontSize);\n font-weight: var(--salt-text-display2-fontWeight);\n line-height: var(--salt-text-display2-lineHeight);\n}\n\n/* Display 3 */\n.saltText-display3.saltText {\n font-family: var(--salt-text-display3-fontFamily);\n font-size: var(--salt-text-display3-fontSize);\n font-weight: var(--salt-text-display3-fontWeight);\n line-height: var(--salt-text-display3-lineHeight);\n}\n\n/* Heading 1 */\nh1.saltText,\n.saltText-h1.saltText {\n font-family: var(--salt-text-h1-fontFamily);\n font-size: var(--salt-text-h1-fontSize);\n font-weight: var(--salt-text-h1-fontWeight);\n line-height: var(--salt-text-h1-lineHeight);\n}\n\n/* H1 emphasis strong */\nh1.saltText strong,\n.saltText-h1.saltText strong {\n font-weight: var(--salt-text-h1-fontWeight-strong);\n}\n/* H1 emphasis small */\nh1.saltText small,\n.saltText-h1.saltText small {\n font-size: inherit;\n font-weight: var(--salt-text-h1-fontWeight-small);\n}\n\n/* Heading 2 */\nh2.saltText,\n.saltText-h2.saltText {\n font-family: var(--salt-text-h2-fontFamily);\n font-size: var(--salt-text-h2-fontSize);\n font-weight: var(--salt-text-h2-fontWeight);\n line-height: var(--salt-text-h2-lineHeight);\n}\n\n/* H2 emphasis strong */\nh2.saltText strong,\n.saltText-h2.saltText strong {\n font-weight: var(--salt-text-h2-fontWeight-strong);\n}\n/* H2 emphasis small */\nh2.saltText small,\n.saltText-h2.saltText small {\n font-size: inherit;\n font-weight: var(--salt-text-h2-fontWeight-small);\n}\n\n/* Heading 3 */\nh3.saltText,\n.saltText-h3.saltText {\n font-family: var(--salt-text-h3-fontFamily);\n font-size: var(--salt-text-h3-fontSize);\n font-weight: var(--salt-text-h3-fontWeight);\n line-height: var(--salt-text-h3-lineHeight);\n}\n\n/* H3 emphasis strong */\nh3.saltText strong,\n.saltText-h3.saltText strong {\n font-weight: var(--salt-text-h3-fontWeight-strong);\n}\n/* H3 emphasis small */\nh3.saltText small,\n.saltText-h3.saltText small {\n font-size: inherit;\n font-weight: var(--salt-text-h3-fontWeight-small);\n}\n\n/* Heading 4 */\nh4.saltText,\n.saltText-h4.saltText {\n font-family: var(--salt-text-h4-fontFamily);\n font-size: var(--salt-text-h4-fontSize);\n font-weight: var(--salt-text-h4-fontWeight);\n line-height: var(--salt-text-h4-lineHeight);\n}\n\n/* H4 emphasis strong */\nh4.saltText strong,\n.saltText-h4.saltText strong {\n font-weight: var(--salt-text-h4-fontWeight-strong);\n}\n/* H4 emphasis small */\nh4.saltText small,\n.saltText-h4.saltText small {\n font-size: inherit;\n font-weight: var(--salt-text-h4-fontWeight-small);\n}\n\n/* Label */\nlabel.saltText,\n.saltText-label.saltText {\n font-family: var(--salt-text-label-fontFamily);\n font-size: var(--salt-text-label-fontSize);\n line-height: var(--salt-text-label-lineHeight);\n font-weight: var(--salt-text-fontWeight);\n}\n\n/* Label emphasis strong */\nlabel.saltText strong,\n.saltText-label.saltText strong {\n font-weight: var(--salt-text-label-fontWeight-strong);\n}\n/* Label emphasis small */\nlabel.saltText small,\n.saltText-label.saltText small {\n font-size: inherit;\n font-weight: var(--salt-text-fontWeight-small);\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=Text.css.js.map
@@ -0,0 +1,4 @@
1
+ var css_248z = "/* Styles applied to Toast root element */\n.saltToast {\n --toast-background: var(--salt-container-primary-background);\n\n background: var(--saltToast-background, var(--toast-background));\n border-color: var(--saltToast-borderColor, var(--toast-borderColor));\n border-width: var(--saltToast-borderWidth, var(--salt-size-border));\n border-style: var(--saltToast-borderStyle, var(--salt-container-borderStyle));\n\n box-sizing: border-box;\n box-shadow: var(--salt-overlayable-shadow-popout);\n display: flex;\n gap: var(--salt-spacing-75);\n padding: var(--saltToast-padding, var(--salt-spacing-100));\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n margin: 0 var(--salt-spacing-100) var(--salt-spacing-100) var(--salt-spacing-100);\n}\n\n.saltToast:last-child {\n margin-bottom: var(--salt-spacing-200);\n}\n\n/* Styles applied to icon */\n.saltToast-icon.saltIcon {\n margin: calc(var(--salt-spacing-75) + 2px) 0 var(--salt-spacing-75) 0;\n}\n.salt-density-high.saltToast-icon.saltIcon {\n margin: calc(var(--salt-spacing-75) + 1px) 0 var(--salt-spacing-75) 0;\n}\n\n/* Styles applied when state = \"info\" */\n.saltToast-info {\n --toast-borderColor: var(--salt-status-info-borderColor);\n}\n\n/* Styles applied when state = \"error\" */\n.saltToast-error {\n --toast-borderColor: var(--salt-status-error-borderColor);\n}\n\n/* Styles applied when state = \"warning\" */\n.saltToast-warning {\n --toast-borderColor: var(--salt-status-warning-borderColor);\n}\n\n/* Styles applied when state = \"success\" */\n.saltToast-success {\n --toast-borderColor: var(--salt-status-success-borderColor);\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=Toast.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,46 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { clsx } from 'clsx';
3
+ import { forwardRef, useRef, useLayoutEffect } from 'react';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import { useComponentCssInjection } from '@salt-ds/styles';
6
+ import { makePrefixer } from '../utils/makePrefixer.js';
7
+ import '../utils/useFloatingUI.js';
8
+ import { useForkRef } from '../utils/useForkRef.js';
9
+ import '../utils/useId.js';
10
+ import '../salt-provider/SaltProvider.js';
11
+ import '../viewport/ViewportProvider.js';
12
+ import { StatusIndicator } from '../status-indicator/StatusIndicator.js';
13
+ import css_248z from './Toast.css.js';
14
+
15
+ const withBaseName = makePrefixer("saltToast");
16
+ const Toast = forwardRef(function Toast2(props, ref) {
17
+ const { children, className, status = "info", ...rest } = props;
18
+ const targetWindow = useWindow();
19
+ useComponentCssInjection({
20
+ testId: "salt-toast",
21
+ css: css_248z,
22
+ window: targetWindow
23
+ });
24
+ const toastRef = useRef();
25
+ const handleRef = useForkRef(toastRef, ref);
26
+ useLayoutEffect(() => {
27
+ var _a;
28
+ (_a = toastRef.current) == null ? void 0 : _a.scrollIntoView();
29
+ }, []);
30
+ return /* @__PURE__ */ jsxs("div", {
31
+ className: clsx(withBaseName(), withBaseName(status), className),
32
+ role: "alert",
33
+ ...rest,
34
+ ref: handleRef,
35
+ children: [
36
+ /* @__PURE__ */ jsx(StatusIndicator, {
37
+ status,
38
+ className: withBaseName("icon")
39
+ }),
40
+ children
41
+ ]
42
+ });
43
+ });
44
+
45
+ export { Toast };
46
+ //# sourceMappingURL=Toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.js","sources":["../src/toast/Toast.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ComponentPropsWithoutRef,\n RefObject,\n forwardRef,\n useLayoutEffect,\n useRef,\n} from \"react\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { makePrefixer, useForkRef } from \"../utils\";\nimport { StatusIndicator, ValidationStatus } from \"../status-indicator\";\n\nimport toastCss from \"./Toast.css\";\n\nconst withBaseName = makePrefixer(\"saltToast\");\n\nexport interface ToastProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * A string to determine the current state of the Toast.\n */\n status?: ValidationStatus;\n}\n\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(function Toast(\n props,\n ref\n) {\n const { children, className, status = \"info\", ...rest } = props;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-toast\",\n css: toastCss,\n window: targetWindow,\n });\n\n const toastRef = useRef<HTMLDivElement>();\n const handleRef = useForkRef(toastRef, ref);\n useLayoutEffect(() => {\n toastRef.current?.scrollIntoView();\n }, []);\n\n return (\n <div\n className={clsx(withBaseName(), withBaseName(status), className)}\n role=\"alert\"\n {...rest}\n ref={handleRef as RefObject<HTMLDivElement>}\n >\n <StatusIndicator status={status} className={withBaseName(\"icon\")} />\n {children}\n </div>\n );\n});\n"],"names":["Toast","toastCss"],"mappings":";;;;;;;;;;;;;;AAeA,MAAM,YAAA,GAAe,aAAa,WAAW,CAAA,CAAA;AAStC,MAAM,KAAQ,GAAA,UAAA,CAAuC,SAASA,MAAAA,CACnE,OACA,GACA,EAAA;AACA,EAAA,MAAM,EAAE,QAAU,EAAA,SAAA,EAAW,MAAS,GAAA,MAAA,EAAA,GAAW,MAAS,GAAA,KAAA,CAAA;AAC1D,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,YAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,WAAW,MAAuB,EAAA,CAAA;AACxC,EAAM,MAAA,SAAA,GAAY,UAAW,CAAA,QAAA,EAAU,GAAG,CAAA,CAAA;AAC1C,EAAA,eAAA,CAAgB,MAAM;AAtCxB,IAAA,IAAA,EAAA,CAAA;AAuCI,IAAA,CAAA,EAAA,GAAA,QAAA,CAAS,YAAT,IAAkB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,cAAA,EAAA,CAAA;AAAA,GACpB,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,uBACG,IAAA,CAAA,KAAA,EAAA;AAAA,IACC,WAAW,IAAK,CAAA,YAAA,IAAgB,YAAa,CAAA,MAAM,GAAG,SAAS,CAAA;AAAA,IAC/D,IAAK,EAAA,OAAA;AAAA,IACJ,GAAG,IAAA;AAAA,IACJ,GAAK,EAAA,SAAA;AAAA,IAEL,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,eAAA,EAAA;AAAA,QAAgB,MAAA;AAAA,QAAgB,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,OAAG,CAAA;AAAA,MACjE,QAAA;AAAA,KAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = "/* Styles applied to ToastContent */\n.saltToastContent {\n flex: 1 0;\n margin: var(--salt-spacing-75) 0;\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=ToastContent.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToastContent.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,30 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { clsx } from 'clsx';
3
+ import { forwardRef } from 'react';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import { useComponentCssInjection } from '@salt-ds/styles';
6
+ import { makePrefixer } from '../utils/makePrefixer.js';
7
+ import '../utils/useFloatingUI.js';
8
+ import '../utils/useId.js';
9
+ import '../salt-provider/SaltProvider.js';
10
+ import '../viewport/ViewportProvider.js';
11
+ import css_248z from './ToastContent.css.js';
12
+
13
+ const withBaseName = makePrefixer("saltToastContent");
14
+ const ToastContent = forwardRef(function ToastContent2({ children, className, ...restProps }, ref) {
15
+ const targetWindow = useWindow();
16
+ useComponentCssInjection({
17
+ testId: "salt-toast-content",
18
+ css: css_248z,
19
+ window: targetWindow
20
+ });
21
+ return /* @__PURE__ */ jsx("div", {
22
+ className: clsx(withBaseName(), className),
23
+ ...restProps,
24
+ ref,
25
+ children
26
+ });
27
+ });
28
+
29
+ export { ToastContent };
30
+ //# sourceMappingURL=ToastContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToastContent.js","sources":["../src/toast/ToastContent.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { ComponentPropsWithoutRef, ForwardedRef, forwardRef } from \"react\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { makePrefixer } from \"../utils\";\n\nimport toastContentCss from \"./ToastContent.css\";\n\nconst withBaseName = makePrefixer(\"saltToastContent\");\n\nexport const ToastContent = forwardRef(function ToastContent(\n { children, className, ...restProps }: ComponentPropsWithoutRef<\"div\">,\n ref: ForwardedRef<HTMLDivElement>\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-toast-content\",\n css: toastContentCss,\n window: targetWindow,\n });\n\n return (\n <div className={clsx(withBaseName(), className)} {...restProps} ref={ref}>\n {children}\n </div>\n );\n});\n"],"names":["ToastContent","toastContentCss"],"mappings":";;;;;;;;;;;;AAQA,MAAM,YAAA,GAAe,aAAa,kBAAkB,CAAA,CAAA;AAEvC,MAAA,YAAA,GAAe,WAAW,SAASA,aAAAA,CAC9C,EAAE,QAAU,EAAA,SAAA,EAAA,GAAc,SAAU,EAAA,EACpC,GACA,EAAA;AACA,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,oBAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IAAI,GAAG,SAAA;AAAA,IAAW,GAAA;AAAA,IAC7D,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -21,5 +21,9 @@ export interface AccordionProps extends ComponentPropsWithoutRef<"div"> {
21
21
  * Whether the accordion is disabled.
22
22
  */
23
23
  disabled?: boolean;
24
+ /**
25
+ * The status of the accordion.
26
+ */
27
+ status?: "error" | "warning" | "success";
24
28
  }
25
29
  export declare const Accordion: import("react").ForwardRefExoticComponent<AccordionProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -5,6 +5,7 @@ export interface AccordionContextValue {
5
5
  toggle: (event: SyntheticEvent<HTMLButtonElement>) => void;
6
6
  disabled: boolean;
7
7
  id: string;
8
+ status?: "error" | "warning" | "success";
8
9
  }
9
10
  export declare const AccordionContext: import("react").Context<AccordionContextValue>;
10
11
  export declare function useAccordion(): AccordionContextValue;
@@ -1,6 +1,5 @@
1
- /// <reference types="react" />
2
- import { CardProps } from "./Card";
3
- export interface InteractableCardProps extends Omit<CardProps, "disabled" | "interactable"> {
1
+ import { ComponentPropsWithoutRef } from "react";
2
+ export interface InteractableCardProps extends ComponentPropsWithoutRef<"div"> {
4
3
  /**
5
4
  * Accent border position: defaults to "bottom"
6
5
  */
@@ -1,5 +1,12 @@
1
1
  /// <reference types="react" />
2
2
  import { TextProps } from "../text";
3
- export declare const FormFieldLabel: ({ className, children, pronounced, ...restProps }: Omit<TextProps<"label">, "variant" | "styleAs"> & {
4
- pronounced?: boolean | undefined;
5
- }) => JSX.Element;
3
+ export interface FormFieldLabelProps extends Omit<TextProps<"label">, "variant" | "styleAs"> {
4
+ /**
5
+ * Intent for the label.
6
+ *
7
+ * Defaults to "label"
8
+ * Using "sentence" gives more prominent styling
9
+ */
10
+ intent?: "label" | "sentence";
11
+ }
12
+ export declare const FormFieldLabel: ({ className, children, intent, ...restProps }: FormFieldLabelProps) => JSX.Element;
@@ -17,6 +17,7 @@ export * from "./grid-item";
17
17
  export * from "./grid-layout";
18
18
  export * from "./input";
19
19
  export * from "./link";
20
+ export * from "./multiline-input";
20
21
  export * from "./panel";
21
22
  export * from "./radio-button";
22
23
  export * from "./spinner";
@@ -25,6 +26,7 @@ export * from "./status-adornment";
25
26
  export * from "./status-indicator";
26
27
  export * from "./text";
27
28
  export * from "./theme";
29
+ export * from "./toast";
28
30
  export * from "./salt-provider";
29
31
  export * from "./split-layout";
30
32
  export * from "./toggle-button";
@@ -0,0 +1,40 @@
1
+ import { ComponentPropsWithoutRef, ReactNode, Ref, TextareaHTMLAttributes } from "react";
2
+ export interface MultilineInputProps extends Omit<ComponentPropsWithoutRef<"div">, "defaultValue">, Pick<ComponentPropsWithoutRef<"textarea">, "disabled" | "value" | "defaultValue" | "placeholder"> {
3
+ /**
4
+ * Styling variant with full border. Defaults to false
5
+ */
6
+ bordered?: boolean;
7
+ /**
8
+ * End adornment component
9
+ */
10
+ endAdornment?: ReactNode;
11
+ /**
12
+ * If `true`, the component is read only.
13
+ */
14
+ readOnly?: boolean;
15
+ /**
16
+ * Number of rows. Defaults to 3
17
+ */
18
+ rows?: number;
19
+ /**
20
+ * Start adornment component
21
+ */
22
+ startAdornment?: ReactNode;
23
+ /**
24
+ * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#Attributes) applied to the `textarea` element.
25
+ */
26
+ textAreaProps?: TextareaHTMLAttributes<HTMLTextAreaElement>;
27
+ /**
28
+ * Optional ref for the textarea component
29
+ */
30
+ textAreaRef?: Ref<HTMLTextAreaElement>;
31
+ /**
32
+ * Validation status.
33
+ */
34
+ validationStatus?: "error" | "warning" | "success";
35
+ /**
36
+ * Styling variant. Defaults to "primary".
37
+ */
38
+ variant?: "primary" | "secondary";
39
+ }
40
+ export declare const MultilineInput: import("react").ForwardRefExoticComponent<MultilineInputProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ export * from "./MultilineInput";
@@ -0,0 +1,9 @@
1
+ import { ComponentPropsWithoutRef } from "react";
2
+ import { ValidationStatus } from "../status-indicator";
3
+ export interface ToastProps extends ComponentPropsWithoutRef<"div"> {
4
+ /**
5
+ * A string to determine the current state of the Toast.
6
+ */
7
+ status?: ValidationStatus;
8
+ }
9
+ export declare const Toast: import("react").ForwardRefExoticComponent<ToastProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const ToastContent: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,2 @@
1
+ export * from "./Toast";
2
+ export * from "./ToastContent";
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@salt-ds/core",
3
- "version": "1.8.0-rc.4",
3
+ "version": "1.8.0",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist-cjs/index.js",
6
6
  "sideEffects": false,
7
7
  "peerDependencies": {
8
- "@types/react": ">=16.8.6",
9
- "react": ">=16.8.0",
10
- "react-dom": ">=16.8.0"
8
+ "@types/react": ">=16.14.0",
9
+ "react": ">=16.14.0",
10
+ "react-dom": ">=16.14.0"
11
11
  },
12
12
  "peerDependenciesMeta": {
13
13
  "@types/react": {
@@ -23,9 +23,9 @@
23
23
  "dependencies": {
24
24
  "clsx": "^2.0.0",
25
25
  "@floating-ui/react": "^0.23.0",
26
- "@salt-ds/window": "^0.1.0",
27
- "@salt-ds/styles": "^0.1.0",
28
- "@salt-ds/icons": "^1.5.0"
26
+ "@salt-ds/window": "^0.1.1",
27
+ "@salt-ds/styles": "^0.1.1",
28
+ "@salt-ds/icons": "^1.6.0"
29
29
  },
30
30
  "files": [
31
31
  "dist-cjs",