@salt-ds/lab 1.0.0-alpha.3 → 1.0.0-alpha.4

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 (78) hide show
  1. package/dist-cjs/packages/lab/src/carousel/Carousel.js +7 -6
  2. package/dist-cjs/packages/lab/src/carousel/Carousel.js.map +1 -1
  3. package/dist-cjs/packages/lab/src/checkbox/CheckboxIcon.css.js +1 -1
  4. package/dist-cjs/packages/lab/src/color-chooser/Color.js +9 -0
  5. package/dist-cjs/packages/lab/src/color-chooser/Color.js.map +1 -1
  6. package/dist-cjs/packages/lab/src/color-chooser/ColorHelpers.js +2 -2
  7. package/dist-cjs/packages/lab/src/color-chooser/ColorHelpers.js.map +1 -1
  8. package/dist-cjs/packages/lab/src/color-chooser/color-utils.js +1 -1
  9. package/dist-cjs/packages/lab/src/color-chooser/color-utils.js.map +1 -1
  10. package/dist-cjs/packages/lab/src/contact-details/ContactDetails.css.js +1 -1
  11. package/dist-cjs/packages/lab/src/index.js +0 -3
  12. package/dist-cjs/packages/lab/src/index.js.map +1 -1
  13. package/dist-cjs/packages/lab/src/progress/CircularProgress/CircularProgress.css.js +1 -1
  14. package/dist-cjs/packages/lab/src/progress/LinearProgress/LinearProgress.css.js +1 -1
  15. package/dist-cjs/packages/lab/src/radio-button/RadioButton.css.js +1 -1
  16. package/dist-cjs/packages/lab/src/radio-button/RadioButton.js +44 -25
  17. package/dist-cjs/packages/lab/src/radio-button/RadioButton.js.map +1 -1
  18. package/dist-cjs/packages/lab/src/radio-button/RadioButtonGroup.css.js +1 -1
  19. package/dist-cjs/packages/lab/src/radio-button/RadioButtonGroup.js +20 -66
  20. package/dist-cjs/packages/lab/src/radio-button/RadioButtonGroup.js.map +1 -1
  21. package/dist-cjs/packages/lab/src/radio-button/RadioButtonIcon.css.js +1 -1
  22. package/dist-cjs/packages/lab/src/radio-button/RadioButtonIcon.js +9 -5
  23. package/dist-cjs/packages/lab/src/radio-button/RadioButtonIcon.js.map +1 -1
  24. package/dist-cjs/packages/lab/src/radio-button/internal/RadioGroupContext.js.map +1 -1
  25. package/dist-cjs/packages/lab/src/slider/Slider.css.js +1 -1
  26. package/dist-cjs/packages/lab/src/toggle-button/ToggleButton.css.js +1 -1
  27. package/dist-es/packages/lab/src/calendar/internal/CalendarCarousel.js +2 -2
  28. package/dist-es/packages/lab/src/calendar/internal/utils.js +1 -1
  29. package/dist-es/packages/lab/src/calendar/useCalendar.js +1 -1
  30. package/dist-es/packages/lab/src/carousel/Carousel.js +7 -6
  31. package/dist-es/packages/lab/src/carousel/Carousel.js.map +1 -1
  32. package/dist-es/packages/lab/src/cascading-menu/internal/useRefsManager.js +1 -1
  33. package/dist-es/packages/lab/src/checkbox/CheckboxIcon.css.js +1 -1
  34. package/dist-es/packages/lab/src/color-chooser/Color.js +9 -0
  35. package/dist-es/packages/lab/src/color-chooser/Color.js.map +1 -1
  36. package/dist-es/packages/lab/src/color-chooser/ColorHelpers.js +2 -2
  37. package/dist-es/packages/lab/src/color-chooser/ColorHelpers.js.map +1 -1
  38. package/dist-es/packages/lab/src/color-chooser/color-utils.js +1 -1
  39. package/dist-es/packages/lab/src/color-chooser/color-utils.js.map +1 -1
  40. package/dist-es/packages/lab/src/contact-details/ContactDetails.css.js +1 -1
  41. package/dist-es/packages/lab/src/index.js +1 -2
  42. package/dist-es/packages/lab/src/index.js.map +1 -1
  43. package/dist-es/packages/lab/src/list-deprecated/useList.js +1 -1
  44. package/dist-es/packages/lab/src/progress/CircularProgress/CircularProgress.css.js +1 -1
  45. package/dist-es/packages/lab/src/progress/LinearProgress/LinearProgress.css.js +1 -1
  46. package/dist-es/packages/lab/src/radio-button/RadioButton.css.js +1 -1
  47. package/dist-es/packages/lab/src/radio-button/RadioButton.js +46 -27
  48. package/dist-es/packages/lab/src/radio-button/RadioButton.js.map +1 -1
  49. package/dist-es/packages/lab/src/radio-button/RadioButtonGroup.css.js +1 -1
  50. package/dist-es/packages/lab/src/radio-button/RadioButtonGroup.js +23 -69
  51. package/dist-es/packages/lab/src/radio-button/RadioButtonGroup.js.map +1 -1
  52. package/dist-es/packages/lab/src/radio-button/RadioButtonIcon.css.js +1 -1
  53. package/dist-es/packages/lab/src/radio-button/RadioButtonIcon.js +10 -5
  54. package/dist-es/packages/lab/src/radio-button/RadioButtonIcon.js.map +1 -1
  55. package/dist-es/packages/lab/src/radio-button/internal/RadioGroupContext.js.map +1 -1
  56. package/dist-es/packages/lab/src/responsive/useDynamicCollapse.js +1 -1
  57. package/dist-es/packages/lab/src/skip-link/internal/useManageFocusOnTarget.js +1 -1
  58. package/dist-es/packages/lab/src/slider/Slider.css.js +1 -1
  59. package/dist-es/packages/lab/src/slider/internal/useSliderMouseDown.js +1 -1
  60. package/dist-es/packages/lab/src/toggle-button/ToggleButton.css.js +1 -1
  61. package/dist-es/packages/lab/src/toolbar/toolbar-field/useToolbarField.js +1 -1
  62. package/dist-es/packages/lab/src/utils/useEventCallback.js +1 -1
  63. package/dist-types/color-chooser/Color.d.ts +2 -0
  64. package/dist-types/color-chooser/ColorHelpers.d.ts +3 -1
  65. package/dist-types/radio-button/RadioButton.d.ts +33 -10
  66. package/dist-types/radio-button/RadioButtonGroup.d.ts +22 -12
  67. package/dist-types/radio-button/RadioButtonIcon.d.ts +4 -6
  68. package/dist-types/radio-button/index.d.ts +0 -1
  69. package/package.json +2 -2
  70. package/dist-cjs/packages/lab/src/radio-button/RadioButtonBase.css.js +0 -9
  71. package/dist-cjs/packages/lab/src/radio-button/RadioButtonBase.css.js.map +0 -1
  72. package/dist-cjs/packages/lab/src/radio-button/RadioButtonBase.js +0 -142
  73. package/dist-cjs/packages/lab/src/radio-button/RadioButtonBase.js.map +0 -1
  74. package/dist-es/packages/lab/src/radio-button/RadioButtonBase.css.js +0 -7
  75. package/dist-es/packages/lab/src/radio-button/RadioButtonBase.css.js.map +0 -1
  76. package/dist-es/packages/lab/src/radio-button/RadioButtonBase.js +0 -138
  77. package/dist-es/packages/lab/src/radio-button/RadioButtonBase.js.map +0 -1
  78. package/dist-types/radio-button/RadioButtonBase.d.ts +0 -22
@@ -1,26 +1,45 @@
1
- import { jsx } from 'react/jsx-runtime';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { clsx } from 'clsx';
3
3
  import { forwardRef } from 'react';
4
- import { makePrefixer } from '@salt-ds/core';
5
- import { ControlLabel } from '../control-label/ControlLabel.js';
6
- import { RadioButtonBase } from './RadioButtonBase.js';
4
+ import { makePrefixer, useControlled } from '@salt-ds/core';
5
+ import { useRadioGroup } from './internal/useRadioGroup.js';
6
+ import { RadioButtonIcon } from './RadioButtonIcon.js';
7
7
  import './RadioButton.css.js';
8
8
 
9
9
  const withBaseName = makePrefixer("saltRadioButton");
10
10
  const RadioButton = forwardRef(
11
11
  function RadioButton2(props, ref) {
12
12
  const {
13
- checked,
13
+ checked: checkedProp,
14
14
  className,
15
- icon,
16
15
  disabled,
16
+ error,
17
+ inputProps,
17
18
  label,
18
- LabelProps,
19
- value,
19
+ name: nameProp,
20
+ onFocus,
21
+ onBlur,
20
22
  onChange,
23
+ value,
21
24
  ...rest
22
25
  } = props;
23
- return /* @__PURE__ */ jsx("div", {
26
+ const radioGroup = useRadioGroup();
27
+ const radioGroupChecked = radioGroup.value != null && value != null ? radioGroup.value === value : checkedProp;
28
+ const name = nameProp != null ? nameProp : radioGroup.name;
29
+ const [checked, setCheckedState] = useControlled({
30
+ controlled: radioGroupChecked,
31
+ default: Boolean(checkedProp),
32
+ name: "RadioBase",
33
+ state: "checked"
34
+ });
35
+ const handleChange = (event) => {
36
+ var _a;
37
+ const newChecked = event.target.checked;
38
+ setCheckedState(newChecked);
39
+ onChange == null ? void 0 : onChange(event);
40
+ (_a = radioGroup.onChange) == null ? void 0 : _a.call(radioGroup, event);
41
+ };
42
+ return /* @__PURE__ */ jsxs("label", {
24
43
  className: clsx(
25
44
  withBaseName(),
26
45
  {
@@ -28,28 +47,28 @@ const RadioButton = forwardRef(
28
47
  },
29
48
  className
30
49
  ),
50
+ ref,
31
51
  ...rest,
32
- children: /* @__PURE__ */ jsx(ControlLabel, {
33
- ...LabelProps,
34
- className: clsx(
35
- withBaseName("labelContainer"),
36
- {
37
- [withBaseName("disabled")]: disabled
38
- },
39
- className
40
- ),
41
- disabled,
42
- label,
43
- labelPlacement: "right",
44
- ref,
45
- children: /* @__PURE__ */ jsx(RadioButtonBase, {
52
+ children: [
53
+ /* @__PURE__ */ jsx("input", {
54
+ className: withBaseName("input"),
55
+ ...inputProps,
46
56
  checked,
47
57
  disabled,
58
+ name,
48
59
  value,
49
- onChange,
50
- icon
51
- })
52
- })
60
+ onBlur,
61
+ onChange: handleChange,
62
+ onFocus,
63
+ type: "radio"
64
+ }),
65
+ /* @__PURE__ */ jsx(RadioButtonIcon, {
66
+ checked,
67
+ error,
68
+ disabled
69
+ }),
70
+ label
71
+ ]
53
72
  });
54
73
  }
55
74
  );
@@ -1 +1 @@
1
- {"version":3,"file":"RadioButton.js","sources":["../src/radio-button/RadioButton.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEventHandler,\n forwardRef,\n HTMLAttributes,\n ComponentType,\n} from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { ControlLabel, ControlLabelProps } from \"../control-label\";\nimport { RadioButtonBase as Radio } from \"./RadioButtonBase\";\nimport { RadioButtonIconProps } from \"./RadioButtonIcon\";\n\nimport \"./RadioButton.css\";\n\nconst withBaseName = makePrefixer(\"saltRadioButton\");\n\nexport interface RadioButtonProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n checked?: boolean;\n className?: string;\n disabled?: boolean;\n /**\n * Custom icon component\n */\n icon?: ComponentType<RadioButtonIconProps>;\n /**\n * The label to be shown next to the radio\n */\n label?: ControlLabelProps[\"label\"];\n LabelProps?: Partial<ControlLabelProps>;\n name?: string;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n value?: string;\n}\n\nexport const RadioButton = forwardRef<HTMLLabelElement, RadioButtonProps>(\n function RadioButton(props, ref) {\n const {\n checked,\n className,\n icon,\n disabled,\n label,\n LabelProps,\n value,\n onChange,\n ...rest\n } = props;\n\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n },\n className\n )}\n {...rest}\n >\n <ControlLabel\n {...LabelProps}\n className={clsx(\n withBaseName(\"labelContainer\"),\n {\n [withBaseName(\"disabled\")]: disabled,\n },\n className\n )}\n disabled={disabled}\n label={label}\n labelPlacement=\"right\"\n ref={ref}\n >\n <Radio\n checked={checked}\n disabled={disabled}\n value={value}\n onChange={onChange}\n icon={icon}\n />\n </ControlLabel>\n </div>\n );\n }\n);\n"],"names":["RadioButton","Radio"],"mappings":";;;;;;;;AAcA,MAAM,YAAA,GAAe,aAAa,iBAAiB,CAAA,CAAA;AAqB5C,MAAM,WAAc,GAAA,UAAA;AAAA,EACzB,SAASA,YAAY,CAAA,KAAA,EAAO,GAAK,EAAA;AAC/B,IAAM,MAAA;AAAA,MACJ,OAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACG,GAAA,IAAA;AAAA,KACD,GAAA,KAAA,CAAA;AAEJ,IAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,MACC,SAAW,EAAA,IAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,SAC9B;AAAA,QACA,SAAA;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAC,kBAAA,GAAA,CAAA,YAAA,EAAA;AAAA,QACE,GAAG,UAAA;AAAA,QACJ,SAAW,EAAA,IAAA;AAAA,UACT,aAAa,gBAAgB,CAAA;AAAA,UAC7B;AAAA,YACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,WAC9B;AAAA,UACA,SAAA;AAAA,SACF;AAAA,QACA,QAAA;AAAA,QACA,KAAA;AAAA,QACA,cAAe,EAAA,OAAA;AAAA,QACf,GAAA;AAAA,QAEA,QAAC,kBAAA,GAAA,CAAAC,eAAA,EAAA;AAAA,UACC,OAAA;AAAA,UACA,QAAA;AAAA,UACA,KAAA;AAAA,UACA,QAAA;AAAA,UACA,IAAA;AAAA,SACF,CAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"RadioButton.js","sources":["../src/radio-button/RadioButton.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEventHandler,\n FocusEventHandler,\n forwardRef,\n HTMLAttributes,\n InputHTMLAttributes,\n ReactNode,\n} from \"react\";\nimport { makePrefixer, useControlled } from \"@salt-ds/core\";\nimport { useRadioGroup } from \"./internal/useRadioGroup\";\nimport { RadioButtonIcon } from \"./RadioButtonIcon\";\n\nimport \"./RadioButton.css\";\n\nconst withBaseName = makePrefixer(\"saltRadioButton\");\n\nexport interface RadioButtonProps\n extends Omit<\n HTMLAttributes<HTMLLabelElement>,\n \"onChange\" | \"onBlur\" | \"onFocus\"\n > {\n /**\n * Set the default selected radio button in the group\n */\n checked?: boolean;\n /**\n * Set the disabled state\n */\n disabled?: boolean;\n /**\n * Set the error state\n */\n error?: boolean;\n /**\n * Props to be passed to the radio input\n */\n inputProps?: Partial<InputHTMLAttributes<HTMLInputElement>>;\n /**\n * The label to be shown next to the radio icon\n */\n label?: ReactNode;\n /**\n * Name of the radio group\n */\n name?: string;\n /**\n * Callback for blur event\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Callback for change event\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Callback for focus event\n */\n onFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * Value of radio button\n */\n value?: string;\n}\n\nexport const RadioButton = forwardRef<HTMLLabelElement, RadioButtonProps>(\n function RadioButton(props, ref) {\n const {\n checked: checkedProp,\n className,\n disabled,\n error,\n inputProps,\n label,\n name: nameProp,\n onFocus,\n onBlur,\n onChange,\n value,\n ...rest\n } = props;\n\n const radioGroup = useRadioGroup();\n\n const radioGroupChecked =\n radioGroup.value != null && value != null\n ? radioGroup.value === value\n : checkedProp;\n const name = nameProp ?? radioGroup.name;\n\n const [checked, setCheckedState] = useControlled({\n controlled: radioGroupChecked,\n default: Boolean(checkedProp),\n name: \"RadioBase\",\n state: \"checked\",\n });\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const newChecked = event.target.checked;\n setCheckedState(newChecked);\n\n onChange?.(event);\n radioGroup.onChange?.(event);\n };\n\n return (\n <label\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n },\n className\n )}\n ref={ref}\n {...rest}\n >\n <input\n className={withBaseName(\"input\")}\n {...inputProps}\n checked={checked}\n disabled={disabled}\n name={name}\n value={value}\n onBlur={onBlur}\n onChange={handleChange}\n onFocus={onFocus}\n type=\"radio\"\n />\n <RadioButtonIcon checked={checked} error={error} disabled={disabled} />\n {label}\n </label>\n );\n }\n);\n"],"names":["RadioButton"],"mappings":";;;;;;;;AAeA,MAAM,YAAA,GAAe,aAAa,iBAAiB,CAAA,CAAA;AAiD5C,MAAM,WAAc,GAAA,UAAA;AAAA,EACzB,SAASA,YAAY,CAAA,KAAA,EAAO,GAAK,EAAA;AAC/B,IAAM,MAAA;AAAA,MACJ,OAAS,EAAA,WAAA;AAAA,MACT,SAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAM,EAAA,QAAA;AAAA,MACN,OAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACG,GAAA,IAAA;AAAA,KACD,GAAA,KAAA,CAAA;AAEJ,IAAA,MAAM,aAAa,aAAc,EAAA,CAAA;AAEjC,IAAM,MAAA,iBAAA,GACJ,WAAW,KAAS,IAAA,IAAA,IAAQ,SAAS,IACjC,GAAA,UAAA,CAAW,UAAU,KACrB,GAAA,WAAA,CAAA;AACN,IAAM,MAAA,IAAA,GAAO,8BAAY,UAAW,CAAA,IAAA,CAAA;AAEpC,IAAA,MAAM,CAAC,OAAA,EAAS,eAAe,CAAA,GAAI,aAAc,CAAA;AAAA,MAC/C,UAAY,EAAA,iBAAA;AAAA,MACZ,OAAA,EAAS,QAAQ,WAAW,CAAA;AAAA,MAC5B,IAAM,EAAA,WAAA;AAAA,MACN,KAAO,EAAA,SAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,YAAA,GAAqD,CAAC,KAAU,KAAA;AAhG1E,MAAA,IAAA,EAAA,CAAA;AAiGM,MAAM,MAAA,UAAA,GAAa,MAAM,MAAO,CAAA,OAAA,CAAA;AAChC,MAAA,eAAA,CAAgB,UAAU,CAAA,CAAA;AAE1B,MAAW,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA;AACX,MAAA,CAAA,EAAA,GAAA,UAAA,CAAW,aAAX,IAAsB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAAA,KACxB,CAAA;AAEA,IAAA,uBACG,IAAA,CAAA,OAAA,EAAA;AAAA,MACC,SAAW,EAAA,IAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,SAC9B;AAAA,QACA,SAAA;AAAA,OACF;AAAA,MACA,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,OAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,UAC9B,GAAG,UAAA;AAAA,UACJ,OAAA;AAAA,UACA,QAAA;AAAA,UACA,IAAA;AAAA,UACA,KAAA;AAAA,UACA,MAAA;AAAA,UACA,QAAU,EAAA,YAAA;AAAA,UACV,OAAA;AAAA,UACA,IAAK,EAAA,OAAA;AAAA,SACP,CAAA;AAAA,wBACC,GAAA,CAAA,eAAA,EAAA;AAAA,UAAgB,OAAA;AAAA,UAAkB,KAAA;AAAA,UAAc,QAAA;AAAA,SAAoB,CAAA;AAAA,QACpE,KAAA;AAAA,OAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -1,6 +1,6 @@
1
1
  import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
2
2
 
3
- var css_248z = "/* Styles applied to root component (RadioButton) */\n.salt-density-high {\n --radioButton-group-vertical-label-marginBottom: 4px;\n --radioButton-group-legend-minHeight: 14px;\n --radioButton-group-legend-paddingRight: 16px;\n --radioButton-group-horizontal-legend-marginTop: 2px;\n --radioButton-group-horizontal-legend-marginRight: 12px;\n --radioButton-group-horizontal-legend-paddingRight: 4px;\n --radioButton-group-horizontal-legend-marginBottom: 0px;\n --radioButton-group-vertical-formLabel-paddingRight: 4px;\n --radioButton-group-vertical-formLabel-marginBottom: 4px;\n --radioButton-group-vertical-formLabel-transform: translate(0px, 3px);\n --radioButton-group-formLabel-transform: translate(0px, 3px);\n}\n\n.salt-density-medium {\n --radioButton-group-vertical-label-marginBottom: 6px;\n --radioButton-group-legend-minHeight: 14px;\n --radioButton-group-legend-paddingRight: 16px;\n --radioButton-group-horizontal-legend-marginTop: 1px;\n --radioButton-group-horizontal-legend-marginRight: 24px;\n --radioButton-group-horizontal-legend-paddingRight: 8px;\n --radioButton-group-horizontal-legend-marginBottom: 0px;\n --radioButton-group-vertical-formLabel-paddingRight: 8px;\n --radioButton-group-vertical-formLabel-marginBottom: 6px;\n --radioButton-group-vertical-formLabel-transform: translate(0px, 5px);\n --radioButton-group-formLabel-transform: translate(0px, 5px);\n}\n\n.salt-density-low {\n --radioButton-group-vertical-label-marginBottom: 9px;\n --radioButton-group-legend-minHeight: 14px;\n --radioButton-group-legend-paddingRight: 16px;\n --radioButton-group-horizontal-legend-marginTop: 4px;\n --radioButton-group-horizontal-legend-marginRight: 36px;\n --radioButton-group-horizontal-legend-paddingRight: 12px;\n --radioButton-group-horizontal-legend-marginBottom: 0px;\n --radioButton-group-vertical-formLabel-paddingRight: 12px;\n --radioButton-group-vertical-formLabel-marginBottom: 9px;\n --radioButton-group-vertical-formLabel-transform: translate(0px, 7px);\n --radioButton-group-formLabel-transform: translate(0px, 7px);\n}\n\n.salt-density-touch {\n --radioButton-group-vertical-label-marginBottom: 12px;\n --radioButton-group-legend-minHeight: 16px;\n --radioButton-group-legend-paddingRight: 16px;\n --radioButton-group-horizontal-legend-marginTop: 4px;\n --radioButton-group-horizontal-legend-marginRight: 48px;\n --radioButton-group-horizontal-legend-paddingRight: 16px;\n --radioButton-group-horizontal-legend-marginBottom: 0px;\n --radioButton-group-vertical-formLabel-paddingRight: 16px;\n --radioButton-group-vertical-formLabel-marginBottom: 12px;\n --radioButton-group-vertical-formLabel-transform: translate(0px, 11px);\n --radioButton-group-formLabel-transform: translate(0px, 11px);\n}\n\n/* Styles applied to root element */\n.saltRadioButtonGroup {\n border: 0;\n margin: 0;\n padding: 0;\n display: inline-flex;\n flex-direction: column;\n vertical-align: top;\n}\n\n/* Styles applied when `row=false OR undefined` */\n.saltRadioButtonGroup-vertical .saltRadioButtonGroup-legend.saltFormLabel {\n margin-bottom: var(--saltRadioButton-group-vertical-label-marginBottom, var(--radioButton-group-vertical-label-marginBottom));\n margin-top: var(--saltRadioButton-group-vertical-label-marginTop, 0px);\n\n --saltFormField-label-paddingRight: var(--radioButton-group-vertical-formLabel-paddingRight);\n --saltFormField-label-marginBottom: var(--radioButton-group-vertical-formLabel-marginBottom);\n --saltFormField-label-transform: var(--radioButton-group-vertical-formLabel-transform);\n}\n\n/* Styles applied to the FormField FormLabel component */\n.saltRadioButtonGroup-legend.saltFormLabel {\n --saltFormField-label-transform: var(--radioButton-group-formLabel-transform);\n}\n\n/* Styles applied to the Form Field FormLabel component if `row={true}` */\n.saltRadioButtonGroup-horizontal .saltRadioButtonGroup-legend.saltFormLabel {\n --formField-label-width: auto;\n float: left;\n}\n\n/* Styles applied to the Form Field FormLabel component */\n.saltRadioButtonGroup-legend.saltFormLabel {\n padding-left: var(--saltRadioButton-group-formLabel-paddingLeft, 0px);\n}\n\n/* Styles applied to legend if `row={true}` */\n.saltRadioButtonGroup-horizontal .saltRadioButtonGroup-legend {\n margin-bottom: var(--saltRadioButton-group-horizontal-legend-marginBottom, var(--radioButton-group-horizontal-legend-marginBottom));\n margin-right: var(--saltRadioButton-group-horizontal-legend-marginRight, var(--radioButton-group-horizontal-legend-marginRight));\n margin-top: var(--saltRadioButton-group-horizontal-legend-marginTop, var(--radioButton-group-horizontal-legend-marginTop));\n padding-right: var(--saltRadioButton-group-horizontal-legend-paddingRight, var(--radioButton-group-horizontal-legend-paddingRight));\n}\n\n/* Styles applied to legend */\n.saltRadioButtonGroup-legend {\n margin-bottom: var(--saltRadioButton-group-legend-marginBottom, 4px);\n min-height: var(--saltRadioButton-group-legend-minHeight, var(--radioButton-group-legend-minHeight));\n padding-right: var(--saltRadioButton-group-legend-paddingRight, var(--radioButton-group-legend-paddingRight));\n transition: none;\n width: auto;\n}\n\n/* fieldset specific styles */\nfieldset.saltRadioButtonGroup.saltRadioButtonGroup-vertical {\n line-height: 1;\n}\n\nfieldset.saltRadioButtonGroup.saltRadioButtonGroup-horizontal {\n display: block;\n padding-left: 0px;\n min-inline-size: max-content;\n}\n";
3
+ var css_248z = "/* Styles applied to root element */\n.saltRadioButtonGroup {\n border: none;\n margin: 0;\n padding: 0;\n}\n\n/* Styles applied when direction is vertical */\n.saltRadioButtonGroup-vertical {\n display: flex;\n gap: var(--salt-size-unit);\n flex-direction: column;\n}\n\n/* Styles applied when direction is horizontal */\n.saltRadioButtonGroup-horizontal {\n display: flex;\n gap: var(--salt-size-unit);\n flex-direction: row;\n flex-wrap: wrap;\n}\n\n.saltRadioButtonGroup-noWrap {\n flex-wrap: nowrap;\n}\n.saltRadioButtonGroup-noWrap .saltRadioButton {\n white-space: break-spaces;\n}\n\n/* Styles applied to radio group's legend */\n.saltRadioButtonGroup-legend {\n display: inline-block;\n font-size: var(--formField-label-fontSize);\n color: var(--salt-text-primary-foreground);\n margin-bottom: calc(var(--salt-size-unit) * 2);\n}\n";
4
4
  styleInject(css_248z);
5
5
 
6
6
  export { css_248z as default };
@@ -1,14 +1,8 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import { clsx } from 'clsx';
3
- import { forwardRef, useState, useRef, useImperativeHandle } from 'react';
4
- import { makePrefixer, useId } from '@salt-ds/core';
5
- import '../form-field-context/FormFieldContext.js';
6
- import { useFormFieldProps } from '../form-field-context/useFormFieldProps.js';
7
- import { FormGroup } from '../form-group/FormGroup.js';
8
- import '../form-field/FormField.js';
9
- import { FormLabel } from '../form-field/FormLabel.js';
3
+ import { forwardRef } from 'react';
4
+ import { makePrefixer, useControlled, useId } from '@salt-ds/core';
10
5
  import { RadioGroupContext } from './internal/RadioGroupContext.js';
11
- import { RadioButton } from './RadioButton.js';
12
6
  import './RadioButtonGroup.css.js';
13
7
 
14
8
  const withBaseName = makePrefixer("saltRadioButtonGroup");
@@ -17,81 +11,41 @@ const RadioButtonGroup = forwardRef(function RadioButtonGroup2(props, ref) {
17
11
  children,
18
12
  className,
19
13
  defaultValue,
20
- legend,
21
- icon,
22
- radios,
14
+ direction = "vertical",
15
+ wrap = true,
16
+ name: nameProp,
23
17
  onChange,
24
18
  value: valueProp,
25
- row,
26
- name: nameProp,
27
19
  ...rest
28
20
  } = props;
29
- const { inFormField, a11yProps } = useFormFieldProps({
30
- focusVisible: false
21
+ const [value, setStateValue] = useControlled({
22
+ controlled: valueProp,
23
+ default: defaultValue,
24
+ state: "value",
25
+ name: "RadioButtonGroup"
31
26
  });
32
- const [stateValue, setStateValue] = useState(props.defaultValue);
33
- const getValue = () => isControlled() ? props.value : stateValue;
34
- const isControlled = () => props.value !== void 0;
35
27
  const handleChange = (event) => {
36
- if (!isControlled()) {
37
- setStateValue(event.target.value);
38
- }
39
- if (props.onChange) {
40
- props.onChange(event);
41
- }
28
+ setStateValue(event.target.value);
29
+ onChange == null ? void 0 : onChange(event);
42
30
  };
43
- const rootRef = useRef(null);
44
- useImperativeHandle(
45
- void 0,
46
- () => ({
47
- focus: () => {
48
- const current = rootRef.current;
49
- if (current) {
50
- let input = current.querySelector(
51
- "input:not(:disabled):checked"
52
- );
53
- if (!input) {
54
- input = current.querySelector("input:not(:disabled)");
55
- }
56
- if (input) {
57
- input.focus();
58
- }
59
- }
60
- }
61
- }),
62
- []
63
- );
64
31
  const name = useId(nameProp);
65
- return /* @__PURE__ */ jsxs("fieldset", {
32
+ return /* @__PURE__ */ jsx("fieldset", {
66
33
  className: clsx(
67
34
  withBaseName(),
68
- row ? withBaseName("horizontal") : withBaseName("vertical"),
35
+ withBaseName(direction),
36
+ {
37
+ [withBaseName("noWrap")]: !wrap
38
+ },
69
39
  className
70
40
  ),
71
41
  "data-testid": "radio-button-group",
72
42
  ref,
73
43
  role: "radiogroup",
74
- ...a11yProps,
75
- children: [
76
- !inFormField && /* @__PURE__ */ jsx(FormLabel, {
77
- className: clsx(withBaseName("legend")),
78
- label: legend
79
- }),
80
- /* @__PURE__ */ jsx(RadioGroupContext.Provider, {
81
- value: { name, onChange: handleChange, value: getValue() },
82
- children: /* @__PURE__ */ jsx(FormGroup, {
83
- role: "radiogroup",
84
- ...rest,
85
- row,
86
- children: radios && radios.map((radio) => /* @__PURE__ */ jsx(RadioButton, {
87
- disabled: radio.disabled,
88
- icon,
89
- label: radio.label,
90
- value: radio.value
91
- }, radio.label)) || children
92
- })
93
- })
94
- ]
44
+ ...rest,
45
+ children: /* @__PURE__ */ jsx(RadioGroupContext.Provider, {
46
+ value: { name, onChange: handleChange, value },
47
+ children
48
+ })
95
49
  });
96
50
  });
97
51
 
@@ -1 +1 @@
1
- {"version":3,"file":"RadioButtonGroup.js","sources":["../src/radio-button/RadioButtonGroup.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEventHandler,\n ComponentType,\n forwardRef,\n HTMLAttributes,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { makePrefixer, useId } from \"@salt-ds/core\";\nimport { useFormFieldProps } from \"../form-field-context\";\nimport { FormGroup } from \"../form-group\";\nimport { FormLabel } from \"../form-field\";\nimport { RadioGroupContext } from \"./internal/RadioGroupContext\";\nimport { RadioButton } from \"./RadioButton\";\nimport { RadioButtonIconProps } from \"./RadioButtonIcon\";\n\nimport \"./RadioButtonGroup.css\";\n\nconst withBaseName = makePrefixer(\"saltRadioButtonGroup\");\n\nexport interface RadioButtonGroupProps extends HTMLAttributes<HTMLDivElement> {\n className?: string;\n defaultValue?: string;\n icon?: ComponentType<RadioButtonIconProps>;\n legend?: string;\n name?: string;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n radios?: {\n disabled?: boolean;\n label?: string;\n value?: string;\n }[];\n row?: boolean;\n value?: string;\n}\n\nexport const RadioButtonGroup = forwardRef<\n HTMLFieldSetElement,\n RadioButtonGroupProps\n>(function RadioButtonGroup(props, ref) {\n const {\n children,\n className,\n defaultValue,\n legend,\n icon,\n radios,\n onChange,\n value: valueProp,\n row,\n name: nameProp,\n ...rest\n } = props;\n\n const { inFormField, a11yProps } = useFormFieldProps({\n focusVisible: false,\n });\n\n const [stateValue, setStateValue] = useState(props.defaultValue);\n\n const getValue = () => (isControlled() ? props.value : stateValue);\n\n const isControlled = () => props.value !== undefined;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n if (!isControlled()) {\n setStateValue(event.target.value);\n }\n if (props.onChange) {\n props.onChange(event);\n }\n };\n\n const rootRef = useRef<HTMLFieldSetElement>(null);\n\n useImperativeHandle(\n undefined,\n () => ({\n focus: () => {\n const current = rootRef.current;\n if (current) {\n let input: HTMLInputElement | null = current.querySelector(\n \"input:not(:disabled):checked\"\n );\n if (!input) {\n input = current.querySelector(\"input:not(:disabled)\");\n }\n if (input) {\n input.focus();\n }\n }\n },\n }),\n []\n );\n\n const name = useId(nameProp);\n\n return (\n <fieldset\n className={clsx(\n withBaseName(),\n row ? withBaseName(\"horizontal\") : withBaseName(\"vertical\"),\n className\n )}\n data-testid=\"radio-button-group\"\n ref={ref}\n role=\"radiogroup\"\n {...a11yProps}\n >\n {!inFormField && (\n <FormLabel className={clsx(withBaseName(\"legend\"))} label={legend} />\n )}\n\n <RadioGroupContext.Provider\n value={{ name, onChange: handleChange, value: getValue() }}\n >\n <FormGroup role=\"radiogroup\" {...rest} row={row}>\n {(radios &&\n radios.map((radio) => (\n <RadioButton\n disabled={radio.disabled}\n icon={icon}\n key={radio.label}\n label={radio.label}\n value={radio.value}\n />\n ))) ||\n children}\n </FormGroup>\n </RadioGroupContext.Provider>\n </fieldset>\n );\n});\n"],"names":["RadioButtonGroup"],"mappings":";;;;;;;;;;;;;AAoBA,MAAM,YAAA,GAAe,aAAa,sBAAsB,CAAA,CAAA;AAkBjD,MAAM,gBAAmB,GAAA,UAAA,CAG9B,SAASA,iBAAAA,CAAiB,OAAO,GAAK,EAAA;AACtC,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAO,EAAA,SAAA;AAAA,IACP,GAAA;AAAA,IACA,IAAM,EAAA,QAAA;AAAA,IACH,GAAA,IAAA;AAAA,GACD,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,EAAE,WAAA,EAAa,SAAU,EAAA,GAAI,iBAAkB,CAAA;AAAA,IACnD,YAAc,EAAA,KAAA;AAAA,GACf,CAAA,CAAA;AAED,EAAA,MAAM,CAAC,UAAY,EAAA,aAAa,CAAI,GAAA,QAAA,CAAS,MAAM,YAAY,CAAA,CAAA;AAE/D,EAAA,MAAM,QAAW,GAAA,MAAO,YAAa,EAAA,GAAI,MAAM,KAAQ,GAAA,UAAA,CAAA;AAEvD,EAAM,MAAA,YAAA,GAAe,MAAM,KAAA,CAAM,KAAU,KAAA,KAAA,CAAA,CAAA;AAE3C,EAAM,MAAA,YAAA,GAAqD,CAAC,KAAU,KAAA;AACpE,IAAI,IAAA,CAAC,cAAgB,EAAA;AACnB,MAAc,aAAA,CAAA,KAAA,CAAM,OAAO,KAAK,CAAA,CAAA;AAAA,KAClC;AACA,IAAA,IAAI,MAAM,QAAU,EAAA;AAClB,MAAA,KAAA,CAAM,SAAS,KAAK,CAAA,CAAA;AAAA,KACtB;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,OAAA,GAAU,OAA4B,IAAI,CAAA,CAAA;AAEhD,EAAA,mBAAA;AAAA,IACE,KAAA,CAAA;AAAA,IACA,OAAO;AAAA,MACL,OAAO,MAAM;AACX,QAAA,MAAM,UAAU,OAAQ,CAAA,OAAA,CAAA;AACxB,QAAA,IAAI,OAAS,EAAA;AACX,UAAA,IAAI,QAAiC,OAAQ,CAAA,aAAA;AAAA,YAC3C,8BAAA;AAAA,WACF,CAAA;AACA,UAAA,IAAI,CAAC,KAAO,EAAA;AACV,YAAQ,KAAA,GAAA,OAAA,CAAQ,cAAc,sBAAsB,CAAA,CAAA;AAAA,WACtD;AACA,UAAA,IAAI,KAAO,EAAA;AACT,YAAA,KAAA,CAAM,KAAM,EAAA,CAAA;AAAA,WACd;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;AAAA,IACA,EAAC;AAAA,GACH,CAAA;AAEA,EAAM,MAAA,IAAA,GAAO,MAAM,QAAQ,CAAA,CAAA;AAE3B,EAAA,uBACG,IAAA,CAAA,UAAA,EAAA;AAAA,IACC,SAAW,EAAA,IAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb,GAAM,GAAA,YAAA,CAAa,YAAY,CAAA,GAAI,aAAa,UAAU,CAAA;AAAA,MAC1D,SAAA;AAAA,KACF;AAAA,IACA,aAAY,EAAA,oBAAA;AAAA,IACZ,GAAA;AAAA,IACA,IAAK,EAAA,YAAA;AAAA,IACJ,GAAG,SAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,CAAC,+BACC,GAAA,CAAA,SAAA,EAAA;AAAA,QAAU,SAAW,EAAA,IAAA,CAAK,YAAa,CAAA,QAAQ,CAAC,CAAA;AAAA,QAAG,KAAO,EAAA,MAAA;AAAA,OAAQ,CAAA;AAAA,sBAGrE,GAAA,CAAC,kBAAkB,QAAlB,EAAA;AAAA,QACC,OAAO,EAAE,IAAA,EAAM,UAAU,YAAc,EAAA,KAAA,EAAO,UAAW,EAAA;AAAA,QAEzD,QAAC,kBAAA,GAAA,CAAA,SAAA,EAAA;AAAA,UAAU,IAAK,EAAA,YAAA;AAAA,UAAc,GAAG,IAAA;AAAA,UAAM,GAAA;AAAA,UACnC,QACA,EAAA,MAAA,IAAA,MAAA,CAAO,GAAI,CAAA,CAAC,0BACT,GAAA,CAAA,WAAA,EAAA;AAAA,YACC,UAAU,KAAM,CAAA,QAAA;AAAA,YAChB,IAAA;AAAA,YAEA,OAAO,KAAM,CAAA,KAAA;AAAA,YACb,OAAO,KAAM,CAAA,KAAA;AAAA,WAFR,EAAA,KAAA,CAAM,KAGb,CACD,CACD,IAAA,QAAA;AAAA,SACJ,CAAA;AAAA,OACF,CAAA;AAAA,KAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"RadioButtonGroup.js","sources":["../src/radio-button/RadioButtonGroup.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEventHandler,\n ComponentPropsWithoutRef,\n forwardRef,\n} from \"react\";\nimport { makePrefixer, useControlled, useId } from \"@salt-ds/core\";\nimport { RadioGroupContext } from \"./internal/RadioGroupContext\";\n\nimport \"./RadioButtonGroup.css\";\n\nconst withBaseName = makePrefixer(\"saltRadioButtonGroup\");\n\nexport interface RadioButtonGroupProps\n extends Omit<ComponentPropsWithoutRef<\"fieldset\">, \"onChange\"> {\n /**\n * Set the selected value when initialized.\n */\n defaultValue?: string;\n /**\n * Set the group direction.\n */\n direction?: \"horizontal\" | \"vertical\";\n /**\n * Only for horizontal direction. When `true` the text in radio button label will wrap to fit within the container. Otherwise the radio buttons will wrap onto the next line.\n */\n wrap?: boolean;\n /**\n * The name to be set on each radio button within the group. If not set, then one will be generated for you.\n */\n name?: string;\n /**\n * Callback for change event.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * The value of the radio group, required for a controlled component.\n */\n value?: string;\n}\n\nexport const RadioButtonGroup = forwardRef<\n HTMLFieldSetElement,\n RadioButtonGroupProps\n>(function RadioButtonGroup(props, ref) {\n const {\n children,\n className,\n defaultValue,\n direction = \"vertical\",\n wrap = true,\n name: nameProp,\n onChange,\n value: valueProp,\n ...rest\n } = props;\n\n const [value, setStateValue] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n state: \"value\",\n name: \"RadioButtonGroup\",\n });\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n setStateValue(event.target.value);\n onChange?.(event);\n };\n\n const name = useId(nameProp);\n\n return (\n <fieldset\n className={clsx(\n withBaseName(),\n withBaseName(direction),\n {\n [withBaseName(\"noWrap\")]: !wrap,\n },\n className\n )}\n data-testid=\"radio-button-group\"\n ref={ref}\n role=\"radiogroup\"\n {...rest}\n >\n <RadioGroupContext.Provider\n value={{ name, onChange: handleChange, value }}\n >\n {children}\n </RadioGroupContext.Provider>\n </fieldset>\n );\n});\n"],"names":["RadioButtonGroup"],"mappings":";;;;;;;AAWA,MAAM,YAAA,GAAe,aAAa,sBAAsB,CAAA,CAAA;AA8BjD,MAAM,gBAAmB,GAAA,UAAA,CAG9B,SAASA,iBAAAA,CAAiB,OAAO,GAAK,EAAA;AACtC,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAY,GAAA,UAAA;AAAA,IACZ,IAAO,GAAA,IAAA;AAAA,IACP,IAAM,EAAA,QAAA;AAAA,IACN,QAAA;AAAA,IACA,KAAO,EAAA,SAAA;AAAA,IACJ,GAAA,IAAA;AAAA,GACD,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,CAAC,KAAA,EAAO,aAAa,CAAA,GAAI,aAAc,CAAA;AAAA,IAC3C,UAAY,EAAA,SAAA;AAAA,IACZ,OAAS,EAAA,YAAA;AAAA,IACT,KAAO,EAAA,OAAA;AAAA,IACP,IAAM,EAAA,kBAAA;AAAA,GACP,CAAA,CAAA;AAED,EAAM,MAAA,YAAA,GAAqD,CAAC,KAAU,KAAA;AACpE,IAAc,aAAA,CAAA,KAAA,CAAM,OAAO,KAAK,CAAA,CAAA;AAChC,IAAW,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACb,CAAA;AAEA,EAAM,MAAA,IAAA,GAAO,MAAM,QAAQ,CAAA,CAAA;AAE3B,EAAA,uBACG,GAAA,CAAA,UAAA,EAAA;AAAA,IACC,SAAW,EAAA,IAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb,aAAa,SAAS,CAAA;AAAA,MACtB;AAAA,QACE,CAAC,YAAA,CAAa,QAAQ,CAAA,GAAI,CAAC,IAAA;AAAA,OAC7B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACA,aAAY,EAAA,oBAAA;AAAA,IACZ,GAAA;AAAA,IACA,IAAK,EAAA,YAAA;AAAA,IACJ,GAAG,IAAA;AAAA,IAEJ,QAAA,kBAAA,GAAA,CAAC,kBAAkB,QAAlB,EAAA;AAAA,MACC,KAAO,EAAA,EAAE,IAAM,EAAA,QAAA,EAAU,cAAc,KAAM,EAAA;AAAA,MAE5C,QAAA;AAAA,KACH,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
2
2
 
3
- var css_248z = ".salt-density-high {\n --radioButton-icon-size: 12px;\n}\n\n.salt-density-medium {\n --radioButton-icon-size: 14px;\n}\n\n.salt-density-low {\n --radioButton-icon-size: 16px;\n}\n\n.salt-density-touch {\n --radioButton-icon-size: 18px;\n}\n\n/* Styles applied to root component */\n.saltRadioButtonIcon {\n --radioButton-icon-fill: transparent;\n --radioButton-icon-fill-checked: var(--salt-selectable-borderColor-selected);\n --radioButton-icon-fill-checked-disabled: var(--salt-selectable-borderColor-selectedDisabled);\n\n --radioButton-icon-strokeColor: var(--salt-selectable-borderColor);\n --radioButton-icon-strokeColor-disabled: var(--salt-selectable-borderColor-disabled);\n --radioButton-icon-strokeColor-hover: var(--salt-selectable-borderColor-hover);\n --radioButton-icon-strokeColor-checked: var(--salt-selectable-borderColor-selected);\n --radioButton-icon-strokeColor-checked-disabled: var(--salt-selectable-borderColor-selectedDisabled);\n\n --radioButton-icon-strokeWidth: var(--salt-size-border);\n --radioButton-icon-strokeWidth-hover: var(--salt-size-border);\n --radioButton-icon-strokeWidth-checked: var(--salt-size-border);\n\n width: var(--saltRadioButton-icon-svg-size, var(--radioButton-icon-size));\n height: var(--saltRadioButton-icon-svg-size, var(--radioButton-icon-size));\n}\n\n/* Styles applied to RadioButtonIcon border */\n.saltRadioButtonIcon-border {\n fill: var(--saltRadioButton-icon-fill, var(--radioButton-icon-fill));\n stroke: var(--saltRadioButton-icon-strokeColor, var(--radioButton-icon-strokeColor));\n stroke-width: var(--saltRadioButton-icon-strokeWidth, var(--radioButton-icon-strokeWidth));\n}\n\n/* Styles applied to RadioButtonIcon border if `checked={true}` */\n.saltRadioButtonIcon-checked .saltRadioButtonIcon-border {\n fill: var(--saltRadioButton-icon-fill-checked, var(--radioButton-icon-fill-checked));\n stroke: var(--saltRadioButton-icon-strokeColor-checked, var(--radioButton-icon-strokeColor-checked));\n stroke-width: var(--saltRadioButton-icon-strokeWidth-checked, var(--radioButton-icon-strokeWidth-checked));\n}\n\n/* Styles applied to RadioButtonIcon border on hover */\n.saltRadioButton:hover .saltRadioButtonIcon-border {\n fill: var(--saltRadioButton-icon-fill-hover, var(--radioButton-icon-fill));\n stroke: var(--saltRadioButton-icon-strokeColor-hover, var(--radioButton-icon-strokeColor-hover));\n}\n\n/* Styles applied to RadioButtonIcon border on hover if `checked={true}` */\n.saltRadioButton:hover .saltRadioButtonIcon-checked .saltRadioButtonIcon-border {\n fill: var(--saltRadioButton-icon-fill-checked-hover, var(--radioButton-icon-fill-checked));\n stroke: var(--saltRadioButton-icon-strokeColor-checked-hover, var(--radioButton-icon-strokeColor-checked));\n}\n\n/* Styles applied to RadioButtonIcon border if `disabled={true}` or in a disabled FormField */\n.saltRadioButton-disabled .saltRadioButtonIcon-border,\n.saltFormField-disabled .saltRadioButton .saltRadioButtonIcon-border,\n.saltRadioButton-disabled:hover .saltRadioButtonIcon-border,\n.saltFormField-disabled .saltRadioButton:hover .saltRadioButtonIcon-border {\n fill: var(--saltRadioButton-icon-fill-disabled, var(--radioButton-icon-fill));\n stroke: var(--saltRadioButton-icon-strokeColor-disabled, var(--radioButton-icon-strokeColor-disabled));\n}\n\n/* Styles applied to RadioButtonIcon border if `checked={true}` when `disabled={true}` or in a disabled FormField */\n.saltFormField-disabled .saltRadioButton .saltRadioButtonIcon-checked .saltRadioButtonIcon-border,\n.saltFormField-disabled .saltRadioButton:hover .saltRadioButtonIcon-checked .saltRadioButtonIcon-border,\n.saltRadioButton-disabled .saltRadioButtonIcon-checked .saltRadioButtonIcon-border,\n.saltRadioButton-disabled:hover .saltRadioButtonIcon-checked .saltRadioButtonIcon-border {\n fill: var(--saltRadioButton-icon-fill-checked-disabled, var(--radioButton-icon-fill-checked-disabled));\n stroke: var(--saltRadioButton-icon-strokeColor-checked-disabled, transparent);\n}\n\n/* Styles applied to inner circle when `checked={true}` */\n.saltRadioButtonIcon-inner-checked {\n fill: var(--saltRadioButton-icon-inner-fill, var(--salt-selectable-primary-foreground-selected));\n}\n";
3
+ var css_248z = "/* Styles applied to root component */\n.saltRadioButtonIcon {\n --radioButton-icon-fill: transparent;\n --radioButton-icon-fill-checked: var(--salt-selectable-borderColor-selected);\n --radioButton-icon-fill-checked-disabled: var(--salt-selectable-borderColor-selectedDisabled);\n --radioButton-icon-fill-error: var(--salt-status-error-borderColor);\n --radioButton-icon-fill-error-disabled: var(--salt-selectable-borderColor-selectedDisabled);\n\n width: var(--saltRadioButton-icon-svg-size, var(--salt-size-selectable));\n height: var(--saltRadioButton-icon-svg-size, var(--salt-size-selectable));\n border-radius: 50%;\n flex: none;\n margin-top: var(--salt-size-border);\n}\n\n/* Styles applied to RadioButtonIcon border */\n.saltRadioButtonIcon-border {\n fill: var(--saltRadioButton-icon-fill, var(--radioButton-icon-fill));\n stroke: var(--saltRadioButton-icon-strokeColor, var(--salt-selectable-borderColor));\n stroke-width: var(--salt-size-border);\n}\n\n/* Styles applied to RadioButtonIcon border on hover */\n.saltRadioButton:hover .saltRadioButtonIcon-border {\n fill: var(--saltRadioButton-icon-fill-hover, var(--radioButton-icon-fill));\n stroke: var(--saltRadioButton-icon-strokeColor-hover, var(--salt-selectable-borderColor-hover));\n}\n\n/* Styles applied to RadioButtonIcon border if checked */\n.saltRadioButtonIcon-checked .saltRadioButtonIcon-border {\n fill: var(--saltRadioButton-icon-fill-checked, var(--radioButton-icon-fill-checked));\n stroke: var(--saltRadioButton-icon-strokeColor-checked, var(--salt-selectable-borderColor-selected));\n stroke-width: var(--salt-size-border);\n}\n\n/* Styles applied to RadioButtonIcon border on hover if checked */\n.saltRadioButton:hover .saltRadioButtonIcon-checked .saltRadioButtonIcon-border {\n fill: var(--saltRadioButton-icon-fill-checked-hover, var(--radioButton-icon-fill-checked));\n stroke: var(--saltRadioButton-icon-strokeColor-checked-hover, var(--salt-selectable-borderColor-selected));\n}\n\n/* Styles applied to RadioButtonIcon border if disabled */\n.saltRadioButtonIcon-disabled .saltRadioButtonIcon-border,\n.saltRadioButton:hover .saltRadioButtonIcon-disabled .saltRadioButtonIcon-border {\n fill: var(--saltRadioButton-icon-fill-disabled, var(--radioButton-icon-fill));\n stroke: var(--saltRadioButton-icon-strokeColor-disabled, var(--salt-selectable-borderColor-disabled));\n}\n\n/* Styles applied to RadioButtonIcon border if checked and disabled */\n.saltRadioButtonIcon-disabled.saltRadioButtonIcon-checked .saltRadioButtonIcon-border,\n.saltRadioButton:hover .saltRadioButtonIcon-disabled.saltRadioButtonIcon-checked .saltRadioButtonIcon-border {\n fill: var(--saltRadioButton-icon-fill-checked-disabled, var(--radioButton-icon-fill-checked-disabled));\n stroke: var(--saltRadioButton-icon-strokeColor-checked-disabled, transparent);\n}\n\n/* Styles applied to inner circle when checked */\n.saltRadioButtonIcon-inner-checked {\n fill: var(--saltRadioButton-icon-inner-fill, var(--salt-selectable-primary-foreground-selected));\n}\n\n/* Styles applied to radio button icon with error */\n.saltRadioButton:hover .saltRadioButtonIcon-error .saltRadioButtonIcon-border,\n.saltRadioButtonIcon-error,\n.saltRadioButtonIcon-error .saltRadioButtonIcon-border {\n stroke: var(--saltRadioButton-icon-strokeColor-error, var(--salt-status-error-borderColor));\n}\n\n/* Styles applied to radio button icon when checked and with error */\n.saltRadioButton:hover .saltRadioButtonIcon-checked.saltRadioButtonIcon-error .saltRadioButtonIcon-border,\n.saltRadioButtonIcon-checked.saltRadioButtonIcon-error .saltRadioButtonIcon-border {\n fill: var(--saltRadioButton-icon-fill-error, var(--salt-status-error-borderColor));\n}\n\n/* Styles applied to radio button icon when checked and with error */\n/* TODO: replace with correct token */\n.saltRadioButton-disabled .saltRadioButtonIcon-error {\n opacity: var(--salt-palette-opacity-background);\n}\n";
4
4
  styleInject(css_248z);
5
5
 
6
6
  export { css_248z as default };
@@ -4,10 +4,16 @@ import { clsx } from 'clsx';
4
4
  import './RadioButtonIcon.css.js';
5
5
 
6
6
  const withBaseName = makePrefixer("saltRadioButtonIcon");
7
- const RadioButtonIcon = ({ checked }) => {
7
+ const RadioButtonIcon = ({
8
+ checked,
9
+ error,
10
+ disabled
11
+ }) => {
8
12
  return /* @__PURE__ */ jsxs("svg", {
9
13
  className: clsx(withBaseName(), {
10
- [withBaseName("checked")]: checked
14
+ [withBaseName("checked")]: checked,
15
+ [withBaseName("error")]: error,
16
+ [withBaseName("disabled")]: disabled
11
17
  }),
12
18
  height: "14",
13
19
  viewBox: "0 0 14 14",
@@ -23,12 +29,11 @@ const RadioButtonIcon = ({ checked }) => {
23
29
  className: withBaseName("inner-checked"),
24
30
  cx: "7",
25
31
  cy: "7",
26
- r: "3"
32
+ r: "3.2"
27
33
  })
28
34
  ]
29
35
  });
30
36
  };
31
- const makeRadioIcon = (iconChecked, iconUnchecked) => (props) => props.checked ? iconChecked : iconUnchecked;
32
37
 
33
- export { RadioButtonIcon, makeRadioIcon };
38
+ export { RadioButtonIcon };
34
39
  //# sourceMappingURL=RadioButtonIcon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RadioButtonIcon.js","sources":["../src/radio-button/RadioButtonIcon.tsx"],"sourcesContent":["import { ComponentType, ReactElement } from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport \"./RadioButtonIcon.css\";\n\nconst withBaseName = makePrefixer(\"saltRadioButtonIcon\");\n\nexport interface RadioButtonIconProps {\n checked?: boolean;\n}\n\n/**\n * Default radio icon\n */\nexport const RadioButtonIcon = ({ checked }: RadioButtonIconProps) => {\n return (\n <svg\n className={clsx(withBaseName(), {\n [withBaseName(\"checked\")]: checked,\n })}\n height=\"14\"\n viewBox=\"0 0 14 14\"\n width=\"14\"\n >\n <circle className={withBaseName(\"border\")} cx=\"7\" cy=\"7\" r=\"6.5\" />\n {checked && (\n <circle className={withBaseName(\"inner-checked\")} cx=\"7\" cy=\"7\" r=\"3\" />\n )}\n </svg>\n );\n};\n\n/**\n * Creates a component that can be given to Radio or RadioButton as the 'icon'\n */\nexport const makeRadioIcon =\n (\n iconChecked: ReactElement | null,\n iconUnchecked: ReactElement | null\n ): ComponentType<RadioButtonIconProps> =>\n (props: RadioButtonIconProps) =>\n props.checked ? iconChecked : iconUnchecked;\n"],"names":[],"mappings":";;;;;AAKA,MAAM,YAAA,GAAe,aAAa,qBAAqB,CAAA,CAAA;AAShD,MAAM,eAAkB,GAAA,CAAC,EAAE,OAAA,EAAoC,KAAA;AACpE,EAAA,uBACG,IAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EAAW,IAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,SAAS,CAAI,GAAA,OAAA;AAAA,KAC5B,CAAA;AAAA,IACD,MAAO,EAAA,IAAA;AAAA,IACP,OAAQ,EAAA,WAAA;AAAA,IACR,KAAM,EAAA,IAAA;AAAA,IAEN,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,QAAA,EAAA;AAAA,QAAO,SAAA,EAAW,aAAa,QAAQ,CAAA;AAAA,QAAG,EAAG,EAAA,GAAA;AAAA,QAAI,EAAG,EAAA,GAAA;AAAA,QAAI,CAAE,EAAA,KAAA;AAAA,OAAM,CAAA;AAAA,MAChE,2BACE,GAAA,CAAA,QAAA,EAAA;AAAA,QAAO,SAAA,EAAW,aAAa,eAAe,CAAA;AAAA,QAAG,EAAG,EAAA,GAAA;AAAA,QAAI,EAAG,EAAA,GAAA;AAAA,QAAI,CAAE,EAAA,GAAA;AAAA,OAAI,CAAA;AAAA,KAAA;AAAA,GAE1E,CAAA,CAAA;AAEJ,EAAA;AAKa,MAAA,aAAA,GACX,CACE,WACA,EAAA,aAAA,KAEF,CAAC,KACC,KAAA,KAAA,CAAM,UAAU,WAAc,GAAA;;;;"}
1
+ {"version":3,"file":"RadioButtonIcon.js","sources":["../src/radio-button/RadioButtonIcon.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport \"./RadioButtonIcon.css\";\n\nconst withBaseName = makePrefixer(\"saltRadioButtonIcon\");\n\nexport interface RadioButtonIconProps {\n checked?: boolean;\n error?: boolean;\n disabled?: boolean;\n}\n\n/**\n * Default radio icon\n */\nexport const RadioButtonIcon = ({\n checked,\n error,\n disabled,\n}: RadioButtonIconProps) => {\n return (\n <svg\n className={clsx(withBaseName(), {\n [withBaseName(\"checked\")]: checked,\n [withBaseName(\"error\")]: error,\n [withBaseName(\"disabled\")]: disabled,\n })}\n height=\"14\"\n viewBox=\"0 0 14 14\"\n width=\"14\"\n >\n <circle className={withBaseName(\"border\")} cx=\"7\" cy=\"7\" r=\"6.5\" />\n {checked && (\n <circle\n className={withBaseName(\"inner-checked\")}\n cx=\"7\"\n cy=\"7\"\n r=\"3.2\"\n />\n )}\n </svg>\n );\n};\n"],"names":[],"mappings":";;;;;AAIA,MAAM,YAAA,GAAe,aAAa,qBAAqB,CAAA,CAAA;AAWhD,MAAM,kBAAkB,CAAC;AAAA,EAC9B,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AACF,CAA4B,KAAA;AAC1B,EAAA,uBACG,IAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EAAW,IAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,SAAS,CAAI,GAAA,OAAA;AAAA,MAC3B,CAAC,YAAa,CAAA,OAAO,CAAI,GAAA,KAAA;AAAA,MACzB,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,KAC7B,CAAA;AAAA,IACD,MAAO,EAAA,IAAA;AAAA,IACP,OAAQ,EAAA,WAAA;AAAA,IACR,KAAM,EAAA,IAAA;AAAA,IAEN,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,QAAA,EAAA;AAAA,QAAO,SAAA,EAAW,aAAa,QAAQ,CAAA;AAAA,QAAG,EAAG,EAAA,GAAA;AAAA,QAAI,EAAG,EAAA,GAAA;AAAA,QAAI,CAAE,EAAA,KAAA;AAAA,OAAM,CAAA;AAAA,MAChE,2BACE,GAAA,CAAA,QAAA,EAAA;AAAA,QACC,SAAA,EAAW,aAAa,eAAe,CAAA;AAAA,QACvC,EAAG,EAAA,GAAA;AAAA,QACH,EAAG,EAAA,GAAA;AAAA,QACH,CAAE,EAAA,KAAA;AAAA,OACJ,CAAA;AAAA,KAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroupContext.js","sources":["../src/radio-button/internal/RadioGroupContext.tsx"],"sourcesContent":["import { ChangeEventHandler } from \"react\";\nimport { createContext } from \"@salt-ds/core\";\n\nexport interface RadioGroupContextValue {\n name?: string;\n value?: string;\n onChange?: ChangeEventHandler<HTMLElement>;\n}\n\nexport const RadioGroupContext = createContext(\n \"RadioGroupContext\",\n {} as RadioGroupContextValue\n);\n"],"names":[],"mappings":";;AASO,MAAM,iBAAoB,GAAA,aAAA;AAAA,EAC/B,mBAAA;AAAA,EACA,EAAC;AACH;;;;"}
1
+ {"version":3,"file":"RadioGroupContext.js","sources":["../src/radio-button/internal/RadioGroupContext.tsx"],"sourcesContent":["import { ChangeEventHandler } from \"react\";\nimport { createContext } from \"@salt-ds/core\";\n\nexport interface RadioGroupContextValue {\n name?: string;\n value?: string;\n onChange?: ChangeEventHandler<HTMLElement>;\n}\n\nexport const RadioGroupContext = createContext<RadioGroupContextValue>(\n \"RadioGroupContext\",\n {}\n);\n"],"names":[],"mappings":";;AASO,MAAM,iBAAoB,GAAA,aAAA;AAAA,EAC/B,mBAAA;AAAA,EACA,EAAC;AACH;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { useIsomorphicLayoutEffect } from '@salt-ds/core';
2
2
  import { useState, useCallback } from 'react';
3
- import { measureElementSize, getElementForItem, getRuntimePadding, measureContainerOverflow, isCollapsed, isCollapsible, byDescendingPriority } from './overflowUtils.js';
3
+ import { measureElementSize, getElementForItem, getRuntimePadding, measureContainerOverflow, isCollapsible, isCollapsed, byDescendingPriority } from './overflowUtils.js';
4
4
 
5
5
  const UNCOLLAPSED_DYNAMIC_ITEMS = '[data-collapsible="dynamic"]:not([data-collapsed="true"]):not([data-collapsing="true"])';
6
6
  const hasUncollapsedDynamicItems = (containerRef) => containerRef.current.querySelector(UNCOLLAPSED_DYNAMIC_ITEMS) !== null;
@@ -1,4 +1,4 @@
1
- import { useMemo, useState, useRef, useEffect } from 'react';
1
+ import { useState, useRef, useEffect, useMemo } from 'react';
2
2
 
3
3
  const FOCUS_TIMEOUT = 50;
4
4
  const useManageFocusOnTarget = ({
@@ -1,6 +1,6 @@
1
1
  import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
2
2
 
3
- var css_248z = ".salt-density-high {\n --slider-clickable-paddingTop: var(--saltSlider-clickable-paddingTop, 2px);\n --slider-clickable-paddingBottom: var(--saltSlider-clickable-paddingBottom, 2px);\n --slider-paddingTop: var(--saltSlider-paddingTop, 3px);\n --slider-paddingBottom: var(--saltSlider-paddingBottom, 0);\n}\n\n.salt-density-medium {\n --slider-clickable-paddingTop: var(--saltSlider-clickable-paddingTop, 4px);\n --slider-clickable-paddingBottom: var(--saltSlider-clickable-paddingBottom, 4px);\n --slider-paddingTop: var(--saltSlider-paddingTop, 6px);\n --slider-paddingBottom: var(--saltSlider-paddingBottom, 0);\n}\n\n.salt-density-low {\n --slider-clickable-paddingTop: var(--saltSlider-clickable-paddingTop, 8px);\n --slider-clickable-paddingBottom: var(--saltSlider-clickable-paddingBottom, 8px);\n --slider-paddingTop: var(--saltSlider-paddingTop, 9px);\n --slider-paddingBottom: var(--saltSlider-paddingBottom, 0);\n}\n\n.salt-density-touch {\n --slider-clickable-paddingTop: var(--saltSlider-clickable-paddingTop, 12px);\n --slider-clickable-paddingBottom: var(--saltSlider-clickable-paddingBottom, 12px);\n --slider-paddingTop: var(--saltSlider-paddingTop, 12px);\n --slider-paddingBottom: var(--saltSlider-paddingBottom, 0);\n}\n\n.saltSlider {\n --slider-rail-height: var(--saltSlider-rail-height, 8px);\n --slider-rail-color: var(--saltSlider-rail-color, var(--salt-measured-borderColor));\n\n --slider-rail-mark-height: var(--saltSlider-rail-mark-height, 7px);\n --slider-rail-mark-color: var(--saltSlider-rail-mark-color, var(--slider-rail-color));\n\n --slider-selection-color: var(--saltSlider-selection-color, var(--salt-measured-fill));\n --slider-selection-height: var(--saltSlider-selection-height, 2px);\n\n --slider-handle-size: var(--saltSlider-handle-size, calc(var(--salt-size-base) * 0.5));\n --slider-handle-outlineStyle: var(--saltSlider-handle-outlineStyle, var(--salt-focused-outlineStyle));\n --slider-handle-outlineWidth: var(--saltSlider-handle-outlineWidth, var(--salt-focused-outlineWidth));\n --slider-handle-outlineColor: var(--saltSlider-handle-outlineColor, var(--salt-focused-outlineColor));\n --slider-handle-outlineOffset: var(--saltSlider-handle-outlineOffset, var(--salt-focused-outlineOffset));\n\n --slider-arrow-height: var(--saltSlider-arrow-height, 6px);\n --slider-arrow-width: var(--saltSlider-arrow-width, 8px);\n --slider-arrow-color: var(--saltSlider-arrow-color, var(--slider-selection-color));\n\n --slider-borderStyle: var(--saltSlider-borderStyle, none);\n --slider-borderWidth: var(--saltSlider-borderWidth, 0);\n --slider-borderColor: var(--saltSlider-borderColor, transparent);\n --slider-width: var(--saltSlider-width, 300px);\n\n --slider-clickable-paddingLeft: var(--saltSlider-clickable-paddingLeft, calc(var(--salt-size-base) * 0.5));\n --slider-clickable-paddingRight: var(--saltSlider-clickable-paddingRight, calc(var(--salt-size-base) * 0.5));\n\n --slider-label-fontSize: var(--saltSlider-label-fontSize, var(--salt-text-label-fontSize));\n --slider-label-paddingLeft: var(--saltSlider-label-paddingLeft, 0);\n --slider-label-paddingRight: var(--saltSlider-label-paddingRight, 0);\n}\n\n.saltSlider {\n width: var(--slider-width);\n border-style: var(--slider-borderStyle);\n border-width: var(--slider-borderWidth);\n border-color: var(--slider-borderColor);\n\n display: flex;\n flex-direction: column;\n align-items: stretch;\n\n padding-top: var(--slider-paddingTop);\n padding-bottom: var(--slider-paddingBottom);\n}\n\n.saltSlider-disabled {\n}\n\n.saltSlider-clickable {\n padding: var(--slider-clickable-paddingTop) var(--slider-clickable-paddingRight) var(--slider-clickable-paddingBottom) var(--slider-clickable-paddingLeft);\n margin-right: calc(-1 * var(--slider-clickable-paddingRight));\n margin-left: calc(-1 * var(--slider-clickable-paddingLeft));\n\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n}\n\n.saltSlider-track {\n display: grid;\n grid-template-rows: auto auto auto;\n align-items: end;\n grid-template-columns: auto auto auto;\n row-gap: 0;\n transition: grid-template-columns 100ms ease;\n}\n\n.saltSliderRail {\n grid-row: 1;\n grid-column-start: 1;\n grid-column-end: -1;\n height: var(--slider-rail-height);\n border-style: solid;\n border-width: 0 1px 1px 1px;\n border-color: var(--slider-rail-color);\n}\n\n.saltSliderRailMarks {\n grid-row: 2;\n grid-column-start: 1;\n grid-column-end: -1;\n /*height: var(--markedRail-height);*/\n display: grid;\n grid-template-rows: auto;\n}\n\n.saltSliderRailMarks-mark {\n grid-row: 1;\n width: 0;\n height: var(--slider-rail-mark-height);\n border-left: 1px solid var(--slider-rail-mark-color);\n}\n\n.saltSliderRailMarks-max {\n margin-left: -1px;\n}\n\n.saltSliderMarkLabels {\n grid-row: 3;\n grid-column-start: 1;\n grid-column-end: -1;\n\n display: grid;\n grid-template-rows: auto;\n justify-items: center;\n}\n\n.saltSliderMarkLabels-label {\n color: var(--saltSlider-label-text-color, var(--salt-text-secondary-foreground));\n font-size: var(--slider-label-fontSize);\n margin-top: var(--saltSlider-label-marginTop);\n line-height: var(--saltSlider-label-lineHeight, var(--salt-text-lineHeight));\n\n white-space: nowrap;\n}\n\n.saltSliderSelection {\n grid-row: 1;\n grid-column-start: 1;\n grid-column-end: -2;\n height: var(--slider-selection-height);\n background: var(--slider-selection-color);\n}\n\n.saltSliderSelection-range {\n grid-row: 1;\n grid-column-start: 2;\n grid-column-end: -2;\n height: var(--slider-selection-height);\n background: var(--slider-selection-color);\n}\n\n.saltSliderHandle-box:focus-visible {\n outline-style: var(--slider-handle-outlineStyle);\n outline-width: var(--slider-handle-outlineWidth);\n outline-color: var(--slider-handle-outlineColor);\n outline-offset: var(--slider-handle-outlineOffset);\n}\n\n.saltSliderHandle {\n margin-left: calc(var(--slider-arrow-width) * -0.5);\n grid-row: 1;\n width: 0;\n height: 0;\n border-left: calc(var(--slider-arrow-width) * 0.5) solid transparent;\n border-right: calc(var(--slider-arrow-width) * 0.5) solid transparent;\n border-bottom: calc(var(--slider-arrow-height)) solid var(--slider-arrow-color);\n position: relative;\n}\n\n.saltSliderHandle-min {\n border-left: none;\n margin-left: 0;\n}\n\n.saltSliderHandle-max {\n border-right: none;\n}\n\n.saltSlider-label {\n color: var(--saltSlider-label-text-color, var(--salt-text-secondary-foreground));\n font-size: var(--slider-label-fontSize);\n margin-top: var(--saltSlider-label-marginTop);\n line-height: var(--saltSlider-label-lineHeight, var(--salt-text-lineHeight));\n\n padding-left: var(--slider-label-paddingLeft);\n padding-right: var(--slider-label-paddingRight);\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n";
3
+ var css_248z = ".salt-density-high {\n --slider-clickable-paddingTop: var(--saltSlider-clickable-paddingTop, 2px);\n --slider-clickable-paddingBottom: var(--saltSlider-clickable-paddingBottom, 2px);\n --slider-paddingTop: var(--saltSlider-paddingTop, 3px);\n --slider-paddingBottom: var(--saltSlider-paddingBottom, 0);\n}\n\n.salt-density-medium {\n --slider-clickable-paddingTop: var(--saltSlider-clickable-paddingTop, 4px);\n --slider-clickable-paddingBottom: var(--saltSlider-clickable-paddingBottom, 4px);\n --slider-paddingTop: var(--saltSlider-paddingTop, 6px);\n --slider-paddingBottom: var(--saltSlider-paddingBottom, 0);\n}\n\n.salt-density-low {\n --slider-clickable-paddingTop: var(--saltSlider-clickable-paddingTop, 8px);\n --slider-clickable-paddingBottom: var(--saltSlider-clickable-paddingBottom, 8px);\n --slider-paddingTop: var(--saltSlider-paddingTop, 9px);\n --slider-paddingBottom: var(--saltSlider-paddingBottom, 0);\n}\n\n.salt-density-touch {\n --slider-clickable-paddingTop: var(--saltSlider-clickable-paddingTop, 12px);\n --slider-clickable-paddingBottom: var(--saltSlider-clickable-paddingBottom, 12px);\n --slider-paddingTop: var(--saltSlider-paddingTop, 12px);\n --slider-paddingBottom: var(--saltSlider-paddingBottom, 0);\n}\n\n.saltSlider {\n --slider-rail-height: var(--saltSlider-rail-height, 8px);\n --slider-rail-color: var(--saltSlider-rail-color, var(--salt-track-borderColor));\n\n --slider-rail-mark-height: var(--saltSlider-rail-mark-height, 7px);\n --slider-rail-mark-color: var(--saltSlider-rail-mark-color, var(--slider-rail-color));\n\n --slider-selection-color: var(--saltSlider-selection-color, var(--salt-accent-background));\n --slider-selection-height: var(--saltSlider-selection-height, 2px);\n\n --slider-handle-size: var(--saltSlider-handle-size, calc(var(--salt-size-base) * 0.5));\n --slider-handle-outlineStyle: var(--saltSlider-handle-outlineStyle, var(--salt-focused-outlineStyle));\n --slider-handle-outlineWidth: var(--saltSlider-handle-outlineWidth, var(--salt-focused-outlineWidth));\n --slider-handle-outlineColor: var(--saltSlider-handle-outlineColor, var(--salt-focused-outlineColor));\n --slider-handle-outlineOffset: var(--saltSlider-handle-outlineOffset, var(--salt-focused-outlineOffset));\n\n --slider-arrow-height: var(--saltSlider-arrow-height, 6px);\n --slider-arrow-width: var(--saltSlider-arrow-width, 8px);\n --slider-arrow-color: var(--saltSlider-arrow-color, var(--slider-selection-color));\n\n --slider-borderStyle: var(--saltSlider-borderStyle, none);\n --slider-borderWidth: var(--saltSlider-borderWidth, 0);\n --slider-borderColor: var(--saltSlider-borderColor, transparent);\n --slider-width: var(--saltSlider-width, 300px);\n\n --slider-clickable-paddingLeft: var(--saltSlider-clickable-paddingLeft, calc(var(--salt-size-base) * 0.5));\n --slider-clickable-paddingRight: var(--saltSlider-clickable-paddingRight, calc(var(--salt-size-base) * 0.5));\n\n --slider-label-fontSize: var(--saltSlider-label-fontSize, var(--salt-text-label-fontSize));\n --slider-label-paddingLeft: var(--saltSlider-label-paddingLeft, 0);\n --slider-label-paddingRight: var(--saltSlider-label-paddingRight, 0);\n}\n\n.saltSlider {\n width: var(--slider-width);\n border-style: var(--slider-borderStyle);\n border-width: var(--slider-borderWidth);\n border-color: var(--slider-borderColor);\n\n display: flex;\n flex-direction: column;\n align-items: stretch;\n\n padding-top: var(--slider-paddingTop);\n padding-bottom: var(--slider-paddingBottom);\n}\n\n.saltSlider-disabled {\n}\n\n.saltSlider-clickable {\n padding: var(--slider-clickable-paddingTop) var(--slider-clickable-paddingRight) var(--slider-clickable-paddingBottom) var(--slider-clickable-paddingLeft);\n margin-right: calc(-1 * var(--slider-clickable-paddingRight));\n margin-left: calc(-1 * var(--slider-clickable-paddingLeft));\n\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n}\n\n.saltSlider-track {\n display: grid;\n grid-template-rows: auto auto auto;\n align-items: end;\n grid-template-columns: auto auto auto;\n row-gap: 0;\n transition: grid-template-columns 100ms ease;\n}\n\n.saltSliderRail {\n grid-row: 1;\n grid-column-start: 1;\n grid-column-end: -1;\n height: var(--slider-rail-height);\n border-style: solid;\n border-width: 0 1px 1px 1px;\n border-color: var(--slider-rail-color);\n}\n\n.saltSliderRailMarks {\n grid-row: 2;\n grid-column-start: 1;\n grid-column-end: -1;\n /*height: var(--markedRail-height);*/\n display: grid;\n grid-template-rows: auto;\n}\n\n.saltSliderRailMarks-mark {\n grid-row: 1;\n width: 0;\n height: var(--slider-rail-mark-height);\n border-left: 1px solid var(--slider-rail-mark-color);\n}\n\n.saltSliderRailMarks-max {\n margin-left: -1px;\n}\n\n.saltSliderMarkLabels {\n grid-row: 3;\n grid-column-start: 1;\n grid-column-end: -1;\n\n display: grid;\n grid-template-rows: auto;\n justify-items: center;\n}\n\n.saltSliderMarkLabels-label {\n color: var(--saltSlider-label-text-color, var(--salt-text-secondary-foreground));\n font-size: var(--slider-label-fontSize);\n margin-top: var(--saltSlider-label-marginTop);\n line-height: var(--saltSlider-label-lineHeight, var(--salt-text-lineHeight));\n\n white-space: nowrap;\n}\n\n.saltSliderSelection {\n grid-row: 1;\n grid-column-start: 1;\n grid-column-end: -2;\n height: var(--slider-selection-height);\n background: var(--slider-selection-color);\n}\n\n.saltSliderSelection-range {\n grid-row: 1;\n grid-column-start: 2;\n grid-column-end: -2;\n height: var(--slider-selection-height);\n background: var(--slider-selection-color);\n}\n\n.saltSliderHandle-box:focus-visible {\n outline-style: var(--slider-handle-outlineStyle);\n outline-width: var(--slider-handle-outlineWidth);\n outline-color: var(--slider-handle-outlineColor);\n outline-offset: var(--slider-handle-outlineOffset);\n}\n\n.saltSliderHandle {\n margin-left: calc(var(--slider-arrow-width) * -0.5);\n grid-row: 1;\n width: 0;\n height: 0;\n border-left: calc(var(--slider-arrow-width) * 0.5) solid transparent;\n border-right: calc(var(--slider-arrow-width) * 0.5) solid transparent;\n border-bottom: calc(var(--slider-arrow-height)) solid var(--slider-arrow-color);\n position: relative;\n}\n\n.saltSliderHandle-min {\n border-left: none;\n margin-left: 0;\n}\n\n.saltSliderHandle-max {\n border-right: none;\n}\n\n.saltSlider-label {\n color: var(--saltSlider-label-text-color, var(--salt-text-secondary-foreground));\n font-size: var(--slider-label-fontSize);\n margin-top: var(--saltSlider-label-marginTop);\n line-height: var(--saltSlider-label-lineHeight, var(--salt-text-lineHeight));\n\n padding-left: var(--slider-label-paddingLeft);\n padding-right: var(--slider-label-paddingRight);\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n";
4
4
  styleInject(css_248z);
5
5
 
6
6
  export { css_248z as default };
@@ -1,4 +1,4 @@
1
- import { useCallback, useRef, useEffect } from 'react';
1
+ import { useRef, useEffect, useCallback } from 'react';
2
2
  import { roundValue, clampValue } from './utils.js';
3
3
 
4
4
  const valueFromClientX = (context, x) => {
@@ -1,6 +1,6 @@
1
1
  import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
2
2
 
3
- var css_248z = ".salt-density-touch {\n --toggleButton-icon-padding: 11px;\n}\n\n.salt-density-low {\n --toggleButton-icon-padding: 7px;\n}\n\n.salt-density-medium {\n --toggleButton-icon-padding: 5px;\n}\n\n.salt-density-high {\n --toggleButton-icon-padding: 1px;\n}\n\n.saltToggleButton-horizontal.saltToggleButton-iconOnly {\n padding: var(--saltToggleButton-icon-padding, var(--toggleButton-icon-padding));\n}\n\n/* CTA */\n.saltToggleButton-cta {\n --saltButton-background: var(--salt-selectable-background);\n --saltButton-background-hover: var(--salt-selectable-cta-background-hover);\n --saltButton-background-active: var(--salt-selectable-cta-background-selected);\n --saltButton-background-disabled: var(--salt-selectable-background-disabled);\n\n --saltButton-text-color: var(--salt-selectable-cta-foreground);\n --saltButton-text-color-hover: var(--salt-selectable-cta-foreground-hover);\n --saltButton-text-color-active: var(--salt-selectable-cta-foreground-selected);\n --saltButton-text-color-disabled: var(--salt-selectable-cta-foreground-disabled);\n\n --saltIcon-color: var(--salt-selectable-cta-foreground);\n}\n.saltToggleButton-cta.saltToggleButton-disabled.saltButton-disabled {\n --saltButton-background-hover: var(--salt-selectable-background-disabled);\n --saltButton-background-active: var(--salt-selectable-cta-background-disabled);\n\n --saltButton-text-color-hover: var(--salt-selectable-cta-foreground-disabled);\n --saltButton-text-color-active: var(--salt-selectable-cta-foreground-disabled);\n\n --saltIcon-color: var(--salt-selectable-cta-foreground-disabled);\n}\n.saltToggleButton-cta.saltToggleButton-disabled {\n --saltButton-background-active: var(--salt-selectable-cta-background-selectedDisabled);\n --saltButton-text-color-active: var(--salt-selectable-cta-foreground-selectedDisabled);\n --saltIcon-color-active: var(--salt-selectable-cta-foreground-selectedDisabled);\n}\n.saltToggleButton-cta.saltToggleButton-toggled {\n --saltButton-background: var(--salt-selectable-cta-background-selected);\n --saltButton-background-hover: var(--salt-selectable-cta-background-selected);\n\n --saltButton-text-color: var(--salt-selectable-cta-foreground-selected);\n --saltButton-text-color-hover: var(--salt-selectable-cta-foreground-selected);\n\n --saltIcon-color: var(--salt-selectable-cta-foreground-selected);\n}\n.saltToggleButton-cta.saltToggleButton-toggled.saltToggleButton-disabled {\n --saltButton-background-disabled: var(--salt-selectable-cta-background-selectedDisabled);\n --saltButton-background-hover: var(--salt-selectable-cta-background-selectedDisabled);\n\n --saltButton-text-color-disabled: var(--salt-selectable-cta-foreground-selectedDisabled);\n --saltButton-text-color-hover: var(--salt-selectable-cta-foreground-selectedDisabled);\n\n --saltIcon-color: var(--salt-selectable-cta-foreground-selectedDisabled);\n}\n\n/* Primary */\n.saltToggleButton-primary {\n --saltButton-background: var(--salt-selectable-background);\n --saltButton-background-hover: var(--salt-selectable-primary-background-hover);\n --saltButton-background-active: var(--salt-selectable-primary-background-selected);\n --saltButton-background-disabled: var(--salt-selectable-primary-background-disabled);\n\n --saltButton-text-color: var(--salt-selectable-primary-foreground);\n --saltButton-text-color-hover: var(--salt-selectable-primary-foreground-hover);\n --saltButton-text-color-active: var(--salt-selectable-primary-foreground-selected);\n --saltButton-text-color-disabled: var(--salt-selectable-primary-foreground-disabled);\n\n --saltIcon-color: var(--salt-selectable-primary-foreground);\n}\n.saltToggleButton-primary.saltToggleButton-disabled.saltButton-disabled {\n --saltButton-background-active: var(--salt-selectable-primary-background-disabled);\n --saltButton-background-hover: var(--salt-selectable-background-disabled);\n\n --saltButton-text-color-hover: var(--salt-selectable-primary-foreground-disabled);\n --saltButton-text-color-active: var(--salt-selectable-primary-foreground-disabled);\n\n --saltIcon-color: var(--salt-selectable-primary-foreground-disabled);\n}\n.saltToggleButton-primary.saltToggleButton-disabled.saltButton-active {\n --saltButton-background-active: var(--salt-selectable-primary-background-selectedDisabled);\n --saltButton-text-color-active: var(--salt-selectable-primary-foreground-selectedDisabled);\n}\n.saltToggleButton-primary.saltToggleButton-toggled {\n --saltButton-background: var(--salt-selectable-primary-background-selected);\n --saltButton-background-hover: var(--salt-selectable-primary-background-selected);\n\n --saltButton-text-color: var(--salt-selectable-primary-foreground-selected);\n --saltButton-text-color-hover: var(--salt-selectable-primary-foreground-selected);\n\n --saltIcon-color: var(--salt-selectable-primary-foreground-selected);\n}\n.saltToggleButton-primary.saltToggleButton-toggled.saltToggleButton-disabled {\n --saltButton-background-disabled: var(--salt-selectable-primary-background-selectedDisabled);\n --saltButton-background-hover: var(--salt-selectable-primary-background-selectedDisabled);\n\n --saltButton-text-color-disabled: var(--salt-selectable-primary-foreground-selectedDisabled);\n --saltButton-text-color-hover: var(--salt-selectable-primary-foreground-selectedDisabled);\n\n --saltIcon-color: var(--salt-selectable-primary-foreground-selectedDisabled);\n}\n\n/* Secondary */\n.saltToggleButton-secondary {\n --saltButton-background: var(--salt-selectable-background);\n --saltButton-background-hover: var(--salt-selectable-secondary-background-hover);\n --saltButton-background-active: var(--salt-selectable-secondary-background-selected);\n --saltButton-background-disabled: var(--salt-selectable-background-disabled);\n\n --saltButton-text-color: var(--salt-selectable-secondary-foreground);\n --saltButton-text-color-hover: var(--salt-selectable-secondary-foreground-hover);\n --saltButton-text-color-active: var(--salt-selectable-secondary-foreground-selected);\n --saltButton-text-color-disabled: var(--salt-selectable-secondary-foreground-disabled);\n\n --saltIcon-color: var(--salt-selectable-secondary-foreground);\n}\n.saltToggleButton-secondary.saltToggleButton-disabled.saltButton-disabled {\n --saltButton-background-active: var(--salt-selectable-secondary-background-disabled);\n --saltButton-background-hover: var(--salt-selectable-background-disabled);\n\n --saltButton-text-color-active: var(--salt-selectable-secondary-foreground-disabled);\n --saltButton-text-color-hover: var(--salt-selectable-secondary-foreground-disabled);\n\n --saltIcon-color: var(--salt-selectable-secondary-foreground-disabled);\n}\n.saltToggleButton-secondary.saltToggleButton-disabled.saltButton-active {\n --saltButton-background-active: var(--salt-selectable-secondary-background-selectedDisabled);\n --saltButton-text-color-active: var(--salt-selectable-secondary-foreground-selectedDisabled);\n --saltIcon-color-active: var(--salt-selectable-secondary-foreground-selectedDisabled);\n}\n.saltToggleButton-secondary.saltToggleButton-toggled {\n --saltButton-background: var(--salt-selectable-secondary-background-selected);\n --saltButton-background-hover: var(--salt-selectable-secondary-background-selected);\n\n --saltButton-text-color: var(--salt-selectable-secondary-foreground-selected);\n --saltButton-text-color-hover: var(--salt-selectable-secondary-foreground-selected);\n\n --saltIcon-color: var(--salt-selectable-secondary-foreground-selected);\n}\n.saltToggleButton-secondary.saltToggleButton-toggled.saltToggleButton-disabled {\n --saltButton-background-disabled: var(--salt-selectable-secondary-background-selectedDisabled);\n --saltButton-background-hover: var(--salt-selectable-secondary-background-selectedDisabled);\n --saltButton-text-color-disabled: var(--salt-selectable-secondary-foreground-selectedDisabled);\n --saltButton-text-color-hover: var(--salt-selectable-secondary-foreground-selectedDisabled);\n --saltIcon-color: var(--salt-selectable-secondary-foreground-selectedDisabled);\n}\n";
3
+ var css_248z = ".salt-density-touch {\n --toggleButton-icon-padding: 11px;\n}\n\n.salt-density-low {\n --toggleButton-icon-padding: 7px;\n}\n\n.salt-density-medium {\n --toggleButton-icon-padding: 5px;\n}\n\n.salt-density-high {\n --toggleButton-icon-padding: 1px;\n}\n\n.saltToggleButton-horizontal.saltToggleButton-iconOnly {\n padding: var(--saltToggleButton-icon-padding, var(--toggleButton-icon-padding));\n}\n\n.saltToggleButton {\n --saltButton-text-color: var(--salt-text-primary-foreground);\n --saltButton-text-color-disabled: var(--salt-text-primary-foreground-disabled);\n\n --saltIcon-color: var(--salt-text-primary-foreground);\n}\n\n.saltToggleButton-disabled.saltButton-disabled {\n --saltButton-text-color-active: var(--salt-text-primary-foreground-disabled);\n --saltButton-text-color-hover: var(--salt-text-primary-foreground-disabled);\n\n --saltIcon-color: var(--salt-text-primary-foreground-disabled);\n}\n\n/* CTA */\n.saltToggleButton-cta {\n --saltButton-background: var(--salt-selectable-background);\n --saltButton-background-hover: var(--salt-selectable-cta-background-hover);\n --saltButton-background-active: var(--salt-selectable-cta-background-selected);\n --saltButton-background-disabled: var(--salt-selectable-background-disabled);\n --saltButton-text-color-hover: var(--salt-selectable-cta-foreground-hover);\n --saltButton-text-color-active: var(--salt-selectable-cta-foreground-selected);\n}\n.saltToggleButton-cta.saltToggleButton-disabled.saltButton-disabled {\n --saltButton-background-hover: var(--salt-selectable-background-disabled);\n --saltButton-background-active: var(--salt-selectable-cta-background-disabled);\n}\n.saltToggleButton-cta.saltToggleButton-disabled {\n --saltButton-background-active: var(--salt-selectable-cta-background-selectedDisabled);\n --saltButton-text-color-active: var(--salt-selectable-cta-foreground-selectedDisabled);\n\n --saltIcon-color-active: var(--salt-selectable-cta-foreground-selectedDisabled);\n}\n.saltToggleButton-cta.saltToggleButton-toggled {\n --saltButton-background: var(--salt-selectable-cta-background-selected);\n --saltButton-background-hover: var(--salt-selectable-cta-background-selected);\n --saltButton-text-color: var(--salt-selectable-cta-foreground-selected);\n --saltButton-text-color-hover: var(--salt-selectable-cta-foreground-selected);\n\n --saltIcon-color: var(--salt-selectable-cta-foreground-selected);\n}\n.saltToggleButton-cta.saltToggleButton-toggled.saltToggleButton-disabled {\n --saltButton-background-disabled: var(--salt-selectable-cta-background-selectedDisabled);\n --saltButton-background-hover: var(--salt-selectable-cta-background-selectedDisabled);\n --saltButton-text-color-disabled: var(--salt-selectable-cta-foreground-selectedDisabled);\n --saltButton-text-color-hover: var(--salt-selectable-cta-foreground-selectedDisabled);\n\n --saltIcon-color: var(--salt-selectable-cta-foreground-selectedDisabled);\n}\n\n/* Primary */\n.saltToggleButton-primary {\n --saltButton-background: var(--salt-selectable-background);\n --saltButton-background-hover: var(--salt-selectable-primary-background-hover);\n --saltButton-background-active: var(--salt-selectable-primary-background-selected);\n --saltButton-background-disabled: var(--salt-selectable-primary-background-disabled);\n --saltButton-text-color-hover: var(--salt-selectable-primary-foreground-hover);\n --saltButton-text-color-active: var(--salt-selectable-primary-foreground-selected);\n}\n.saltToggleButton-primary.saltToggleButton-disabled.saltButton-disabled {\n --saltButton-background-active: var(--salt-selectable-primary-background-disabled);\n --saltButton-background-hover: var(--salt-selectable-background-disabled);\n}\n.saltToggleButton-primary.saltToggleButton-disabled.saltButton-active {\n --saltButton-background-active: var(--salt-selectable-primary-background-selectedDisabled);\n --saltButton-text-color-active: var(--salt-selectable-primary-foreground-selectedDisabled);\n}\n.saltToggleButton-primary.saltToggleButton-toggled {\n --saltButton-background: var(--salt-selectable-primary-background-selected);\n --saltButton-background-hover: var(--salt-selectable-primary-background-selected);\n --saltButton-text-color: var(--salt-selectable-primary-foreground-selected);\n --saltButton-text-color-hover: var(--salt-selectable-primary-foreground-selected);\n\n --saltIcon-color: var(--salt-selectable-primary-foreground-selected);\n}\n.saltToggleButton-primary.saltToggleButton-toggled.saltToggleButton-disabled {\n --saltButton-background-disabled: var(--salt-selectable-primary-background-selectedDisabled);\n --saltButton-background-hover: var(--salt-selectable-primary-background-selectedDisabled);\n --saltButton-text-color-disabled: var(--salt-selectable-primary-foreground-selectedDisabled);\n --saltButton-text-color-hover: var(--salt-selectable-primary-foreground-selectedDisabled);\n\n --saltIcon-color: var(--salt-selectable-primary-foreground-selectedDisabled);\n}\n\n/* Secondary */\n.saltToggleButton-secondary {\n --saltButton-background: var(--salt-selectable-background);\n --saltButton-background-hover: var(--salt-selectable-secondary-background-hover);\n --saltButton-background-active: var(--salt-selectable-secondary-background-selected);\n --saltButton-background-disabled: var(--salt-selectable-background-disabled);\n --saltButton-text-color-hover: var(--salt-selectable-secondary-foreground-hover);\n --saltButton-text-color-active: var(--salt-selectable-secondary-foreground-selected);\n}\n.saltToggleButton-secondary.saltToggleButton-disabled.saltButton-disabled {\n --saltButton-background-active: var(--salt-selectable-secondary-background-disabled);\n --saltButton-background-hover: var(--salt-selectable-background-disabled);\n}\n.saltToggleButton-secondary.saltToggleButton-disabled.saltButton-active {\n --saltButton-background-active: var(--salt-selectable-secondary-background-selectedDisabled);\n --saltButton-text-color-active: var(--salt-selectable-secondary-foreground-selectedDisabled);\n\n --saltIcon-color-active: var(--salt-selectable-secondary-foreground-selectedDisabled);\n}\n.saltToggleButton-secondary.saltToggleButton-toggled {\n --saltButton-background: var(--salt-selectable-secondary-background-selected);\n --saltButton-background-hover: var(--salt-selectable-secondary-background-selected);\n --saltButton-text-color: var(--salt-selectable-secondary-foreground-selected);\n --saltButton-text-color-hover: var(--salt-selectable-secondary-foreground-selected);\n\n --saltIcon-color: var(--salt-selectable-secondary-foreground-selected);\n}\n.saltToggleButton-secondary.saltToggleButton-toggled.saltToggleButton-disabled {\n --saltButton-background-disabled: var(--salt-selectable-secondary-background-selectedDisabled);\n --saltButton-background-hover: var(--salt-selectable-secondary-background-selectedDisabled);\n --saltButton-text-color-disabled: var(--salt-selectable-secondary-foreground-selectedDisabled);\n --saltButton-text-color-hover: var(--salt-selectable-secondary-foreground-selectedDisabled);\n\n --saltIcon-color: var(--salt-selectable-secondary-foreground-selectedDisabled);\n}\n";
4
4
  styleInject(css_248z);
5
5
 
6
6
  export { css_248z as default };
@@ -1,5 +1,5 @@
1
1
  import { clsx } from 'clsx';
2
- import { isValidElement, useCallback } from 'react';
2
+ import { useCallback, isValidElement } from 'react';
3
3
  import { ToolbarButton } from '../ToolbarButton.js';
4
4
 
5
5
  const NullActivationIndicator = () => null;
@@ -1,4 +1,4 @@
1
- import { useCallback, useRef } from 'react';
1
+ import { useRef, useCallback } from 'react';
2
2
  import { useIsomorphicLayoutEffect } from '@salt-ds/core';
3
3
 
4
4
  function useEventCallback(fn) {
@@ -8,6 +8,8 @@ export declare class Color {
8
8
  private color;
9
9
  get hex(): string;
10
10
  get rgba(): RGBAValue;
11
+ /** E.g. Orange800 */
12
+ get colorName(): string | undefined;
11
13
  static makeColorFromHex(hexValue: string | undefined): Color | undefined;
12
14
  static makeColorFromRGB(r: number, g: number, b: number, a?: number): Color;
13
15
  setAlpha(alpha: number): Color;
@@ -1,4 +1,6 @@
1
- export declare function getColorNameByHexValue(hexValue: string | undefined, disableAlpha?: boolean, saltColorOverrides?: Record<string, string>): string | undefined;
1
+ export declare function getColorNameByHexValue(hexValue: string | undefined, disableAlpha?: boolean, saltColorOverrides?: Record<string, string>,
2
+ /** When disabled, color names not recognized will be undefined instead of hex values */
3
+ disableFallBackToHex?: boolean): string | undefined;
2
4
  export declare function hexValueWithoutAlpha(hexValue: string | undefined): string | undefined;
3
5
  export declare function getHexValue(hexValue: string | undefined, disableAlpha: boolean): string | undefined;
4
6
  export declare const isValidHex: (hex: string | undefined) => boolean;
@@ -1,22 +1,45 @@
1
- import { ChangeEventHandler, HTMLAttributes, ComponentType } from "react";
2
- import { ControlLabelProps } from "../control-label";
3
- import { RadioButtonIconProps } from "./RadioButtonIcon";
1
+ import { ChangeEventHandler, FocusEventHandler, HTMLAttributes, InputHTMLAttributes, ReactNode } from "react";
4
2
  import "./RadioButton.css";
5
- export interface RadioButtonProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
3
+ export interface RadioButtonProps extends Omit<HTMLAttributes<HTMLLabelElement>, "onChange" | "onBlur" | "onFocus"> {
4
+ /**
5
+ * Set the default selected radio button in the group
6
+ */
6
7
  checked?: boolean;
7
- className?: string;
8
+ /**
9
+ * Set the disabled state
10
+ */
8
11
  disabled?: boolean;
9
12
  /**
10
- * Custom icon component
13
+ * Set the error state
14
+ */
15
+ error?: boolean;
16
+ /**
17
+ * Props to be passed to the radio input
18
+ */
19
+ inputProps?: Partial<InputHTMLAttributes<HTMLInputElement>>;
20
+ /**
21
+ * The label to be shown next to the radio icon
11
22
  */
12
- icon?: ComponentType<RadioButtonIconProps>;
23
+ label?: ReactNode;
13
24
  /**
14
- * The label to be shown next to the radio
25
+ * Name of the radio group
15
26
  */
16
- label?: ControlLabelProps["label"];
17
- LabelProps?: Partial<ControlLabelProps>;
18
27
  name?: string;
28
+ /**
29
+ * Callback for blur event
30
+ */
31
+ onBlur?: FocusEventHandler<HTMLInputElement>;
32
+ /**
33
+ * Callback for change event
34
+ */
19
35
  onChange?: ChangeEventHandler<HTMLInputElement>;
36
+ /**
37
+ * Callback for focus event
38
+ */
39
+ onFocus?: FocusEventHandler<HTMLInputElement>;
40
+ /**
41
+ * Value of radio button
42
+ */
20
43
  value?: string;
21
44
  }
22
45
  export declare const RadioButton: import("react").ForwardRefExoticComponent<RadioButtonProps & import("react").RefAttributes<HTMLLabelElement>>;