@salt-ds/core 1.30.0 → 1.31.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 (51) hide show
  1. package/css/salt-core.css +119 -28
  2. package/dist-cjs/accordion/Accordion.js +2 -0
  3. package/dist-cjs/accordion/Accordion.js.map +1 -1
  4. package/dist-cjs/accordion/AccordionContext.js +1 -0
  5. package/dist-cjs/accordion/AccordionContext.js.map +1 -1
  6. package/dist-cjs/accordion/AccordionHeader.css.js +1 -1
  7. package/dist-cjs/accordion/AccordionHeader.js +19 -5
  8. package/dist-cjs/accordion/AccordionHeader.js.map +1 -1
  9. package/dist-cjs/accordion/AccordionPanel.css.js +1 -1
  10. package/dist-cjs/accordion/AccordionPanel.js +4 -2
  11. package/dist-cjs/accordion/AccordionPanel.js.map +1 -1
  12. package/dist-cjs/combo-box/ComboBox.js +2 -0
  13. package/dist-cjs/combo-box/ComboBox.js.map +1 -1
  14. package/dist-cjs/dropdown/Dropdown.css.js +1 -1
  15. package/dist-cjs/dropdown/Dropdown.js +6 -1
  16. package/dist-cjs/dropdown/Dropdown.js.map +1 -1
  17. package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js +1 -0
  18. package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js.map +1 -1
  19. package/dist-cjs/menu/MenuPanel.css.js +1 -1
  20. package/dist-cjs/option/OptionList.css.js +1 -1
  21. package/dist-cjs/pill-input/PillInput.css.js +1 -1
  22. package/dist-cjs/pill-input/PillInput.js +4 -2
  23. package/dist-cjs/pill-input/PillInput.js.map +1 -1
  24. package/dist-es/accordion/Accordion.js +2 -0
  25. package/dist-es/accordion/Accordion.js.map +1 -1
  26. package/dist-es/accordion/AccordionContext.js +1 -0
  27. package/dist-es/accordion/AccordionContext.js.map +1 -1
  28. package/dist-es/accordion/AccordionHeader.css.js +1 -1
  29. package/dist-es/accordion/AccordionHeader.js +20 -6
  30. package/dist-es/accordion/AccordionHeader.js.map +1 -1
  31. package/dist-es/accordion/AccordionPanel.css.js +1 -1
  32. package/dist-es/accordion/AccordionPanel.js +4 -2
  33. package/dist-es/accordion/AccordionPanel.js.map +1 -1
  34. package/dist-es/combo-box/ComboBox.js +2 -0
  35. package/dist-es/combo-box/ComboBox.js.map +1 -1
  36. package/dist-es/dropdown/Dropdown.css.js +1 -1
  37. package/dist-es/dropdown/Dropdown.js +6 -1
  38. package/dist-es/dropdown/Dropdown.js.map +1 -1
  39. package/dist-es/file-drop-zone/FileDropZoneTrigger.js +1 -0
  40. package/dist-es/file-drop-zone/FileDropZoneTrigger.js.map +1 -1
  41. package/dist-es/menu/MenuPanel.css.js +1 -1
  42. package/dist-es/option/OptionList.css.js +1 -1
  43. package/dist-es/pill-input/PillInput.css.js +1 -1
  44. package/dist-es/pill-input/PillInput.js +4 -2
  45. package/dist-es/pill-input/PillInput.js.map +1 -1
  46. package/dist-types/accordion/Accordion.d.ts +4 -0
  47. package/dist-types/accordion/AccordionContext.d.ts +1 -0
  48. package/dist-types/dropdown/Dropdown.d.ts +6 -0
  49. package/dist-types/file-drop-zone/FileDropZoneTrigger.d.ts +2 -2
  50. package/dist-types/pill-input/PillInput.d.ts +3 -0
  51. package/package.json +1 -1
package/css/salt-core.css CHANGED
@@ -51,10 +51,6 @@
51
51
  }
52
52
  .saltAccordionHeader .saltAccordionHeader-icon {
53
53
  height: var(--salt-size-base);
54
- transition: transform var(--salt-duration-perceptible) ease-in-out;
55
- }
56
- .saltAccordionHeader[aria-expanded=true] > .saltAccordionHeader-icon {
57
- transform: rotate(90deg);
58
54
  }
59
55
  .saltAccordionHeader-error {
60
56
  background: var(--salt-status-error-background);
@@ -101,11 +97,14 @@
101
97
  overflow: hidden;
102
98
  }
103
99
  .saltAccordionPanel-content {
104
- padding-left: calc(var(--salt-spacing-200) + var(--salt-size-icon));
100
+ padding-left: var(--salt-spacing-100);
105
101
  padding-right: var(--salt-spacing-100);
106
102
  padding-top: var(--salt-spacing-300);
107
103
  padding-bottom: var(--salt-spacing-300);
108
104
  }
105
+ .saltAccordionPanel-indentedContent {
106
+ padding-left: calc(var(--salt-spacing-200) + var(--salt-size-icon));
107
+ }
109
108
  @media (prefers-reduced-motion: reduce) {
110
109
  .saltAccordionPanel {
111
110
  transition: none;
@@ -898,9 +897,13 @@ a:focus .saltCard-interactable.saltCard-disabled {
898
897
 
899
898
  /* src/dropdown/Dropdown.css */
900
899
  .saltDropdown {
900
+ --dropdown-border: none;
901
901
  --dropdown-borderColor: var(--salt-editable-borderColor);
902
902
  --dropdown-color: var(--salt-content-primary-foreground);
903
903
  --dropdown-cursor: var(--salt-selectable-cursor-hover);
904
+ --dropdown-borderStyle: var(--salt-editable-borderStyle);
905
+ --dropdown-outlineColor: var(--salt-focused-outlineColor);
906
+ --dropdown-borderWidth: var(--salt-size-border);
904
907
  }
905
908
  .saltDropdown {
906
909
  all: unset;
@@ -910,8 +913,9 @@ a:focus .saltCard-interactable.saltCard-disabled {
910
913
  background: var(--dropdown-background);
911
914
  cursor: var(--dropdown-cursor);
912
915
  min-height: var(--salt-size-base);
913
- border-bottom: var(--salt-size-border) var(--salt-editable-borderStyle) var(--dropdown-borderColor);
914
- display: flex;
916
+ border: var(--dropdown-border);
917
+ border-radius: var(--salt-palette-corner-weak, 0);
918
+ display: inline-flex;
915
919
  align-items: center;
916
920
  padding: 0 var(--salt-spacing-100);
917
921
  gap: var(--salt-spacing-100);
@@ -921,13 +925,25 @@ a:focus .saltCard-interactable.saltCard-disabled {
921
925
  font-weight: var(--salt-text-fontWeight);
922
926
  line-height: var(--salt-text-lineHeight);
923
927
  letter-spacing: var(--salt-text-letterSpacing);
928
+ position: relative;
929
+ overflow: hidden;
924
930
  }
925
931
  .saltDropdown:hover {
926
932
  --dropdown-borderColor: var(--salt-editable-borderColor-hover);
933
+ --dropdown-borderStyle: var(--salt-editable-borderStyle-hover);
934
+ --dropdown-background: var(--saltDropdown-background-hover, var(--dropdown-background-hover));
935
+ }
936
+ .saltDropdown:active {
937
+ --dropdown-background: var(--saltDropdown-background-active, var(--dropdown-background-active));
938
+ --dropdown-borderColor: var(--salt-editable-borderColor-active);
939
+ --dropdown-borderWidth: var(--salt-editable-borderWidth-active);
940
+ --dropdown-borderStyle: var(--salt-editable-borderStyle-active);
927
941
  }
928
- .saltDropdown:focus-visible {
942
+ .saltDropdown:focus {
929
943
  outline: var(--salt-focused-outline);
930
- --dropdown-borderColor: var(--salt-editable-borderColor-hover);
944
+ --dropdown-borderColor: var(--salt-editable-borderColor-active);
945
+ --dropdown-borderWidth: var(--salt-editable-borderWidth-active);
946
+ --dropdown-borderStyle: var(--salt-editable-borderStyle-active);
931
947
  }
932
948
  .saltDropdown-content {
933
949
  flex: 1;
@@ -942,45 +958,91 @@ a:focus .saltCard-interactable.saltCard-disabled {
942
958
  }
943
959
  .saltDropdown-primary {
944
960
  --dropdown-background: var(--salt-editable-primary-background);
961
+ --dropdown-background-active: var(--salt-editable-primary-background-active);
962
+ --dropdown-background-hover: var(--salt-editable-primary-background-hover);
963
+ --dropdown-background-disabled: var(--salt-editable-primary-background-disabled);
964
+ --dropdown-background-readonly: var(--salt-editable-primary-background-readonly);
945
965
  }
946
966
  .saltDropdown-secondary {
947
967
  --dropdown-background: var(--salt-editable-secondary-background);
948
- }
949
- .saltDropdown:disabled {
950
- --dropdown-background: var(--salt-editable-primary-background-disabled);
968
+ --dropdown-background-active: var(--salt-editable-secondary-background-active);
969
+ --dropdown-background-hover: var(--salt-editable-secondary-background-active);
970
+ --dropdown-background-disabled: var(--salt-editable-secondary-background-disabled);
971
+ --dropdown-background-readonly: var(--salt-editable-secondary-background-readonly);
972
+ }
973
+ .saltDropdown:disabled,
974
+ .saltDropdown:disabled:active,
975
+ .saltDropdown:disabled:hover,
976
+ .saltDropdown:disabled:focus {
977
+ --dropdown-background: var(--dropdown-background-disabled);
951
978
  --dropdown-borderColor: var(--salt-editable-borderColor-disabled);
952
979
  --dropdown-color: var(--salt-content-primary-foreground-disabled);
953
980
  --dropdown-cursor: var(--salt-selectable-cursor-disabled);
981
+ --dropdown-borderWidth: var(--salt-size-border);
954
982
  }
955
983
  .saltDropdown[aria-readonly=true] {
956
- --dropdown-background: var(--salt-editable-primary-background-readonly);
957
984
  --dropdown-borderColor: var(--salt-editable-borderColor-readonly);
958
985
  --dropdown-color: var(--salt-content-primary-foreground);
959
986
  --dropdown-cursor: var(--salt-selectable-cursor-readonly);
987
+ --dropdown-background: var(--dropdown-background-readonly);
988
+ --dropdown-borderWidth: var(--salt-size-border);
989
+ }
990
+ .saltDropdown[aria-readonly=true]:hover,
991
+ .saltDropdown[aria-readonly=true]:focus {
992
+ --dropdown-background: var(--dropdown-background-readonly);
993
+ --dropdown-borderColor: var(--salt-editable-borderColor-readonly);
960
994
  }
961
- .saltDropdown-error {
995
+ .saltDropdown-error,
996
+ .saltDropdown-error:hover,
997
+ .saltDropdown-error:focus {
962
998
  --dropdown-background: var(--salt-status-error-background);
963
999
  --dropdown-borderColor: var(--salt-status-error-borderColor);
964
- }
965
- .saltDropdown-error .saltDropdown:focus-visible {
1000
+ --dropdown-background-active: var(--salt-status-error-background);
1001
+ --dropdown-background-hover: var(--salt-status-error-background);
1002
+ --dropdown-background-readonly: var(--salt-status-error-background);
966
1003
  outline-color: var(--salt-status-error-borderColor);
967
- --dropdown-borderColor: var(--salt-status-error-borderColor);
968
1004
  }
969
- .saltDropdown-warning {
1005
+ .saltDropdown-warning,
1006
+ .saltDropdown-warning:hover,
1007
+ .saltDropdown-warning:focus {
970
1008
  --dropdown-background: var(--salt-status-warning-background);
971
1009
  --dropdown-borderColor: var(--salt-status-warning-borderColor);
972
- }
973
- .saltDropdown-warning .saltDropdown:focus-visible {
1010
+ --dropdown-background-active: var(--salt-status-warning-background);
1011
+ --dropdown-background-hover: var(--salt-status-warning-background);
1012
+ --dropdown-background-readonly: var(--salt-status-warning-background);
974
1013
  outline-color: var(--salt-status-warning-borderColor);
975
- --dropdown-borderColor: var(--salt-status-warning-borderColor);
976
1014
  }
977
- .saltDropdown-success {
1015
+ .saltDropdown-success,
1016
+ .saltDropdown-success:hover,
1017
+ .saltDropdown-success:focus {
978
1018
  --dropdown-background: var(--salt-status-success-background);
979
1019
  --dropdown-borderColor: var(--salt-status-success-borderColor);
980
- }
981
- .saltDropdown-success .saltDropdown:focus-visible {
1020
+ --dropdown-background-active: var(--salt-status-success-background);
1021
+ --dropdown-background-hover: var(--salt-status-success-background);
1022
+ --dropdown-background-readonly: var(--salt-status-success-background);
982
1023
  outline-color: var(--salt-status-success-borderColor);
983
- --dropdown-borderColor: var(--salt-status-success-borderColor);
1024
+ }
1025
+ .saltDropdown-activationIndicator {
1026
+ left: 0;
1027
+ bottom: 0;
1028
+ width: 100%;
1029
+ position: absolute;
1030
+ border-bottom: var(--dropdown-borderWidth) var(--dropdown-borderStyle) var(--dropdown-borderColor);
1031
+ }
1032
+ .saltDropdown-bordered {
1033
+ --dropdown-border: var(--salt-size-border) var(--salt-container-borderStyle) var(--dropdown-borderColor);
1034
+ --dropdown-borderWidth: 0;
1035
+ }
1036
+ .saltDropdown-bordered.saltDropdown:focus,
1037
+ .saltDropdown-bordered:active {
1038
+ --dropdown-borderWidth: var(--salt-editable-borderWidth-active);
1039
+ }
1040
+ .saltDropdown-bordered[aria-readonly=true],
1041
+ .saltDropdown-bordered[aria-readonly=true]:hover,
1042
+ .saltDropdown[aria-readonly=true]:focus,
1043
+ .saltDropdown-bordered.saltDropdown:disabled,
1044
+ .saltDropdown-bordered.saltDropdown:disabled:hover {
1045
+ --dropdown-borderWidth: 0;
984
1046
  }
985
1047
 
986
1048
  /* src/file-drop-zone/FileDropZone.css */
@@ -1765,7 +1827,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
1765
1827
  overflow-y: auto;
1766
1828
  min-width: 10em;
1767
1829
  position: relative;
1768
- z-index: var(--salt-zIndex-popout);
1830
+ z-index: var(--salt-zIndex-flyover);
1769
1831
  box-shadow: var(--salt-overlayable-shadow-popout);
1770
1832
  box-sizing: border-box;
1771
1833
  }
@@ -2165,6 +2227,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
2165
2227
  .saltOptionList {
2166
2228
  background: var(--salt-container-primary-background);
2167
2229
  border: var(--salt-size-border) var(--salt-selectable-borderStyle-selected) var(--salt-selectable-borderColor-selected);
2230
+ border-radius: var(--salt-palette-corner-weak, 0);
2168
2231
  overflow: hidden;
2169
2232
  overflow-y: auto;
2170
2233
  position: relative;
@@ -2413,6 +2476,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
2413
2476
 
2414
2477
  /* src/pill-input/PillInput.css */
2415
2478
  .saltPillInput {
2479
+ --input-border: none;
2416
2480
  --input-borderColor: var(--salt-editable-borderColor);
2417
2481
  --input-borderStyle: var(--salt-editable-borderStyle);
2418
2482
  --input-outlineColor: var(--salt-focused-outlineColor);
@@ -2431,6 +2495,9 @@ a:focus .saltCard-interactable.saltCard-disabled {
2431
2495
  position: relative;
2432
2496
  width: 100%;
2433
2497
  box-sizing: border-box;
2498
+ border-radius: var(--salt-palette-corner-weak, 0);
2499
+ border: var(--input-border);
2500
+ overflow: hidden;
2434
2501
  }
2435
2502
  .saltPillInput-truncate {
2436
2503
  height: var(--salt-size-base);
@@ -2472,6 +2539,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
2472
2539
  --input-background-hover: var(--salt-status-error-background);
2473
2540
  --input-borderColor: var(--salt-status-error-borderColor);
2474
2541
  --input-outlineColor: var(--salt-status-error-borderColor);
2542
+ --input-background-readonly: var(--salt-status-error-background);
2475
2543
  }
2476
2544
  .saltPillInput-warning,
2477
2545
  .saltPillInput-warning:hover {
@@ -2480,6 +2548,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
2480
2548
  --input-background-hover: var(--salt-status-warning-background);
2481
2549
  --input-borderColor: var(--salt-status-warning-borderColor);
2482
2550
  --input-outlineColor: var(--salt-status-warning-borderColor);
2551
+ --input-background-readonly: var(--salt-status-warning-background);
2483
2552
  }
2484
2553
  .saltPillInput-success,
2485
2554
  .saltPillInput-success:hover {
@@ -2488,6 +2557,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
2488
2557
  --input-background-hover: var(--salt-status-success-background);
2489
2558
  --input-borderColor: var(--salt-status-success-borderColor);
2490
2559
  --input-outlineColor: var(--salt-status-success-borderColor);
2560
+ --input-background-readonly: var(--salt-status-success-background);
2491
2561
  }
2492
2562
  .saltPillInput-input {
2493
2563
  background: none;
@@ -2517,7 +2587,8 @@ a:focus .saltCard-interactable.saltCard-disabled {
2517
2587
  color: var(--salt-content-secondary-foreground);
2518
2588
  font-weight: var(--salt-text-fontWeight-small);
2519
2589
  }
2520
- .saltPillInput-focused {
2590
+ .saltPillInput-focused,
2591
+ .saltPillInput-focused:hover {
2521
2592
  --input-borderColor: var(--input-outlineColor);
2522
2593
  --input-borderWidth: var(--salt-editable-borderWidth-active);
2523
2594
  outline: var(--saltInput-outline, var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--input-outlineColor));
@@ -2556,6 +2627,19 @@ a:focus .saltCard-interactable.saltCard-disabled {
2556
2627
  position: absolute;
2557
2628
  border-bottom: var(--input-borderWidth) var(--input-borderStyle) var(--input-borderColor);
2558
2629
  }
2630
+ .saltPillInput.saltPillInput-bordered {
2631
+ --input-border: var(--salt-size-border) var(--salt-container-borderStyle) var(--input-borderColor);
2632
+ --input-borderWidth: 0;
2633
+ }
2634
+ .saltPillInput-bordered.saltPillInput-focused,
2635
+ .saltPillInput-bordered:active {
2636
+ --input-borderWidth: var(--salt-editable-borderWidth-active);
2637
+ }
2638
+ .saltPillInput-bordered.saltPillInput-readOnly,
2639
+ .saltPillInput-bordered.saltPillInput-disabled:hover,
2640
+ .saltPillInput-bordered.saltPillInput-disabled.saltPillInput-focused {
2641
+ --input-borderWidth: 0;
2642
+ }
2559
2643
  .saltPillInput-startAdornmentContainer {
2560
2644
  align-items: center;
2561
2645
  display: inline-flex;
@@ -2589,6 +2673,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
2589
2673
  .saltPillInput-endAdornmentContainer > .saltButton {
2590
2674
  --saltButton-padding: calc(var(--salt-spacing-50) - var(--salt-size-border));
2591
2675
  --saltButton-height: calc(var(--salt-size-base) - var(--salt-spacing-100));
2676
+ --saltButton-borderRadius: var(--salt-palette-corner-weaker);
2592
2677
  }
2593
2678
  .saltPillInput-inputWrapper {
2594
2679
  display: flex;
@@ -2602,6 +2687,12 @@ a:focus .saltCard-interactable.saltCard-disabled {
2602
2687
  overflow-y: auto;
2603
2688
  box-sizing: border-box;
2604
2689
  }
2690
+ .saltPillInput-bordered > .saltPillInput-endAdornmentContainer {
2691
+ padding-top: calc(var(--salt-spacing-50) - var(--salt-size-border));
2692
+ }
2693
+ .saltPillInput-bordered > .saltPillInput-inputWrapper {
2694
+ padding: calc(var(--salt-spacing-50) - var(--salt-size-border)) 0;
2695
+ }
2605
2696
  .saltPillInput-pillList {
2606
2697
  display: contents;
2607
2698
  }
@@ -3780,4 +3871,4 @@ label.saltText small,
3780
3871
  padding-left: var(--salt-spacing-100);
3781
3872
  }
3782
3873
 
3783
- /* src/bc041f09-367d-4fd6-976a-333ff67e34d8.css */
3874
+ /* src/d617c351-7466-4472-a746-ef8092b8c14c.css */
@@ -119,6 +119,7 @@ const Accordion = React.forwardRef(
119
119
  defaultExpanded,
120
120
  expanded: expandedProp,
121
121
  disabled,
122
+ indicatorSide = "left",
122
123
  id: idProp,
123
124
  onToggle,
124
125
  status,
@@ -147,6 +148,7 @@ const Accordion = React.forwardRef(
147
148
  value,
148
149
  toggle,
149
150
  expanded,
151
+ indicatorSide,
150
152
  disabled: Boolean(disabled),
151
153
  id: id != null ? id : "",
152
154
  status
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.js","sources":["../src/accordion/Accordion.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, SyntheticEvent } from \"react\";\nimport { clsx } from \"clsx\";\nimport { AccordionContext } from \"./AccordionContext\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { makePrefixer, useControlled, useId } from \"../utils\";\nimport accordionCss from \"./Accordion.css\";\nexport interface AccordionProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * AccordionGroup value.\n */\n value: string;\n /**\n * Whether the accordion is expanded.\n */\n expanded?: boolean;\n /**\n * Whether the accordion is expanded by default.\n */\n defaultExpanded?: boolean;\n /**\n * Callback fired when the accordion is toggled.\n */\n onToggle?: (event: SyntheticEvent<HTMLButtonElement>) => void;\n /**\n * Whether the accordion is disabled.\n */\n disabled?: boolean;\n /**\n * The status of the accordion.\n */\n status?: \"error\" | \"warning\" | \"success\";\n}\n\nconst withBaseName = makePrefixer(\"saltAccordion\");\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(\n function Accordion(props, ref) {\n const {\n className,\n defaultExpanded,\n expanded: expandedProp,\n disabled,\n id: idProp,\n onToggle,\n status,\n value,\n ...rest\n } = props;\n\n const id = useId(idProp);\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-accordion\",\n css: accordionCss,\n window: targetWindow,\n });\n\n const [expanded, setExpanded] = useControlled({\n controlled: expandedProp,\n default: Boolean(defaultExpanded),\n name: \"Accordion\",\n state: \"expanded\",\n });\n\n const toggle = (event: SyntheticEvent<HTMLButtonElement>) => {\n setExpanded((prev) => !prev);\n onToggle?.(event);\n };\n\n return (\n <AccordionContext.Provider\n value={{\n value,\n toggle,\n expanded,\n disabled: Boolean(disabled),\n id: id ?? \"\",\n status,\n }}\n >\n <div\n ref={ref}\n className={clsx(\n withBaseName(),\n { [withBaseName(status ?? \"\")]: status },\n className\n )}\n {...rest}\n />\n </AccordionContext.Provider>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","Accordion","useId","useWindow","useComponentCssInjection","accordionCss","useControlled","jsx","AccordionContext","clsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAM,YAAA,GAAeA,0BAAa,eAAe,CAAA,CAAA;AAE1C,MAAM,SAAY,GAAAC,gBAAA;AAAA,EACvB,SAASC,UAAU,CAAA,KAAA,EAAO,GAAK,EAAA;AAC7B,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,eAAA;AAAA,MACA,QAAU,EAAA,YAAA;AAAA,MACV,QAAA;AAAA,MACA,EAAI,EAAA,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACG,GAAA,IAAA;AAAA,KACD,GAAA,KAAA,CAAA;AAEJ,IAAM,MAAA,EAAA,GAAKC,YAAM,MAAM,CAAA,CAAA;AACvB,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,gBAAA;AAAA,MACR,GAAK,EAAAC,WAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,2BAAc,CAAA;AAAA,MAC5C,UAAY,EAAA,YAAA;AAAA,MACZ,OAAA,EAAS,QAAQ,eAAe,CAAA;AAAA,MAChC,IAAM,EAAA,WAAA;AAAA,MACN,KAAO,EAAA,UAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,MAAA,GAAS,CAAC,KAA6C,KAAA;AAC3D,MAAY,WAAA,CAAA,CAAC,IAAS,KAAA,CAAC,IAAI,CAAA,CAAA;AAC3B,MAAW,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KACb,CAAA;AAEA,IACE,uBAAAC,cAAA,CAACC,kCAAiB,QAAjB,EAAA;AAAA,MACC,KAAO,EAAA;AAAA,QACL,KAAA;AAAA,QACA,MAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA,EAAU,QAAQ,QAAQ,CAAA;AAAA,QAC1B,IAAI,EAAM,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA;AAAA,QACV,MAAA;AAAA,OACF;AAAA,MAEA,QAAC,kBAAAD,cAAA,CAAA,KAAA,EAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAW,EAAAE,SAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb,EAAE,CAAC,YAAA,CAAa,MAAU,IAAA,IAAA,GAAA,MAAA,GAAA,EAAE,IAAI,MAAO,EAAA;AAAA,UACvC,SAAA;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,OACN,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"Accordion.js","sources":["../src/accordion/Accordion.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, SyntheticEvent } from \"react\";\nimport { clsx } from \"clsx\";\nimport { AccordionContext } from \"./AccordionContext\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { makePrefixer, useControlled, useId } from \"../utils\";\nimport accordionCss from \"./Accordion.css\";\nexport interface AccordionProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * AccordionGroup value.\n */\n value: string;\n /**\n * Whether the accordion is expanded.\n */\n expanded?: boolean;\n /**\n * Whether the accordion is expanded by default.\n */\n defaultExpanded?: boolean;\n /**\n * Side to align the Accordion's indicator. Defaults to `left`.\n */\n indicatorSide?: \"left\" | \"right\";\n /**\n * Callback fired when the accordion is toggled.\n */\n onToggle?: (event: SyntheticEvent<HTMLButtonElement>) => void;\n /**\n * Whether the accordion is disabled.\n */\n disabled?: boolean;\n /**\n * The status of the accordion.\n */\n status?: \"error\" | \"warning\" | \"success\";\n}\n\nconst withBaseName = makePrefixer(\"saltAccordion\");\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(\n function Accordion(props, ref) {\n const {\n className,\n defaultExpanded,\n expanded: expandedProp,\n disabled,\n indicatorSide = \"left\",\n id: idProp,\n onToggle,\n status,\n value,\n ...rest\n } = props;\n\n const id = useId(idProp);\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-accordion\",\n css: accordionCss,\n window: targetWindow,\n });\n\n const [expanded, setExpanded] = useControlled({\n controlled: expandedProp,\n default: Boolean(defaultExpanded),\n name: \"Accordion\",\n state: \"expanded\",\n });\n\n const toggle = (event: SyntheticEvent<HTMLButtonElement>) => {\n setExpanded((prev) => !prev);\n onToggle?.(event);\n };\n\n return (\n <AccordionContext.Provider\n value={{\n value,\n toggle,\n expanded,\n indicatorSide,\n disabled: Boolean(disabled),\n id: id ?? \"\",\n status,\n }}\n >\n <div\n ref={ref}\n className={clsx(\n withBaseName(),\n { [withBaseName(status ?? \"\")]: status },\n className\n )}\n {...rest}\n />\n </AccordionContext.Provider>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","Accordion","useId","useWindow","useComponentCssInjection","accordionCss","useControlled","jsx","AccordionContext","clsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,MAAM,YAAA,GAAeA,0BAAa,eAAe,CAAA,CAAA;AAE1C,MAAM,SAAY,GAAAC,gBAAA;AAAA,EACvB,SAASC,UAAU,CAAA,KAAA,EAAO,GAAK,EAAA;AAC7B,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,eAAA;AAAA,MACA,QAAU,EAAA,YAAA;AAAA,MACV,QAAA;AAAA,MACA,aAAgB,GAAA,MAAA;AAAA,MAChB,EAAI,EAAA,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACG,GAAA,IAAA;AAAA,KACD,GAAA,KAAA,CAAA;AAEJ,IAAM,MAAA,EAAA,GAAKC,YAAM,MAAM,CAAA,CAAA;AACvB,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,gBAAA;AAAA,MACR,GAAK,EAAAC,WAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,2BAAc,CAAA;AAAA,MAC5C,UAAY,EAAA,YAAA;AAAA,MACZ,OAAA,EAAS,QAAQ,eAAe,CAAA;AAAA,MAChC,IAAM,EAAA,WAAA;AAAA,MACN,KAAO,EAAA,UAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,MAAA,GAAS,CAAC,KAA6C,KAAA;AAC3D,MAAY,WAAA,CAAA,CAAC,IAAS,KAAA,CAAC,IAAI,CAAA,CAAA;AAC3B,MAAW,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KACb,CAAA;AAEA,IACE,uBAAAC,cAAA,CAACC,kCAAiB,QAAjB,EAAA;AAAA,MACC,KAAO,EAAA;AAAA,QACL,KAAA;AAAA,QACA,MAAA;AAAA,QACA,QAAA;AAAA,QACA,aAAA;AAAA,QACA,QAAA,EAAU,QAAQ,QAAQ,CAAA;AAAA,QAC1B,IAAI,EAAM,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA;AAAA,QACV,MAAA;AAAA,OACF;AAAA,MAEA,QAAC,kBAAAD,cAAA,CAAA,KAAA,EAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAW,EAAAE,SAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb,EAAE,CAAC,YAAA,CAAa,MAAU,IAAA,IAAA,GAAA,MAAA,GAAA,EAAE,IAAI,MAAO,EAAA;AAAA,UACvC,SAAA;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,OACN,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -116,6 +116,7 @@ const AccordionContext = createContext.createContext(
116
116
  expanded: false,
117
117
  toggle: () => void 0,
118
118
  disabled: false,
119
+ indicatorSide: "left",
119
120
  id: ""
120
121
  }
121
122
  );
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionContext.js","sources":["../src/accordion/AccordionContext.ts"],"sourcesContent":["import { SyntheticEvent, useContext } from \"react\";\nimport { createContext } from \"../utils\";\n\nexport interface AccordionContextValue {\n value: string;\n expanded: boolean;\n toggle: (event: SyntheticEvent<HTMLButtonElement>) => void;\n disabled: boolean;\n id: string;\n status?: \"error\" | \"warning\" | \"success\";\n}\n\nexport const AccordionContext = createContext<AccordionContextValue>(\n \"AccordionContext\",\n {\n value: \"\",\n expanded: false,\n toggle: () => undefined,\n disabled: false,\n id: \"\",\n }\n);\n\nexport function useAccordion() {\n return useContext(AccordionContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,gBAAmB,GAAAA,2BAAA;AAAA,EAC9B,kBAAA;AAAA,EACA;AAAA,IACE,KAAO,EAAA,EAAA;AAAA,IACP,QAAU,EAAA,KAAA;AAAA,IACV,QAAQ,MAAM,KAAA,CAAA;AAAA,IACd,QAAU,EAAA,KAAA;AAAA,IACV,EAAI,EAAA,EAAA;AAAA,GACN;AACF,EAAA;AAEO,SAAS,YAAe,GAAA;AAC7B,EAAA,OAAOC,iBAAW,gBAAgB,CAAA,CAAA;AACpC;;;;;"}
1
+ {"version":3,"file":"AccordionContext.js","sources":["../src/accordion/AccordionContext.ts"],"sourcesContent":["import { SyntheticEvent, useContext } from \"react\";\nimport { createContext } from \"../utils\";\n\nexport interface AccordionContextValue {\n value: string;\n expanded: boolean;\n toggle: (event: SyntheticEvent<HTMLButtonElement>) => void;\n disabled: boolean;\n indicatorSide: \"left\" | \"right\";\n id: string;\n status?: \"error\" | \"warning\" | \"success\";\n}\n\nexport const AccordionContext = createContext<AccordionContextValue>(\n \"AccordionContext\",\n {\n value: \"\",\n expanded: false,\n toggle: () => undefined,\n disabled: false,\n indicatorSide: \"left\",\n id: \"\",\n }\n);\n\nexport function useAccordion() {\n return useContext(AccordionContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,MAAM,gBAAmB,GAAAA,2BAAA;AAAA,EAC9B,kBAAA;AAAA,EACA;AAAA,IACE,KAAO,EAAA,EAAA;AAAA,IACP,QAAU,EAAA,KAAA;AAAA,IACV,QAAQ,MAAM,KAAA,CAAA;AAAA,IACd,QAAU,EAAA,KAAA;AAAA,IACV,aAAe,EAAA,MAAA;AAAA,IACf,EAAI,EAAA,EAAA;AAAA,GACN;AACF,EAAA;AAEO,SAAS,YAAe,GAAA;AAC7B,EAAA,OAAOC,iBAAW,gBAAgB,CAAA,CAAA;AACpC;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltAccordionHeader {\n display: flex;\n gap: var(--salt-spacing-100);\n padding: var(--salt-spacing-50) var(--salt-spacing-100);\n border: 0;\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n background: var(--salt-actionable-secondary-background);\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n font-family: var(--salt-text-fontFamily);\n color: var(--salt-content-primary-foreground);\n font-weight: var(--salt-text-fontWeight-strong);\n text-align: left;\n cursor: var(--salt-actionable-cursor-hover);\n box-sizing: border-box;\n}\n\n.saltAccordionHeader:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(-1 * var(--salt-focused-outlineWidth));\n}\n\n.saltAccordionHeader:disabled {\n background: var(--salt-actionable-secondary-background);\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-actionable-cursor-disabled);\n}\n\n.saltAccordionHeader-content {\n padding: var(--salt-spacing-75) 0;\n width: 100%;\n box-sizing: border-box;\n}\n\n.saltAccordionHeader .saltAccordionHeader-icon {\n height: var(--salt-size-base);\n transition: transform var(--salt-duration-perceptible) ease-in-out;\n}\n\n.saltAccordionHeader[aria-expanded=\"true\"] > .saltAccordionHeader-icon {\n transform: rotate(90deg);\n}\n\n.saltAccordionHeader-error {\n background: var(--salt-status-error-background);\n}\n\n.saltAccordionHeader-error:focus-visible {\n outline-color: var(--salt-status-error-borderColor);\n}\n\n.saltAccordionHeader-warning {\n background: var(--salt-status-warning-background);\n}\n\n.saltAccordionHeader-warning:focus-visible {\n outline-color: var(--salt-status-warning-borderColor);\n}\n\n.saltAccordionHeader-success {\n background: var(--salt-status-success-background);\n}\n\n.saltAccordionHeader-success:focus-visible {\n outline-color: var(--salt-status-error-borderColor);\n}\n\n.saltAccordionHeader .saltAccordionHeader-statusIndicator {\n height: var(--salt-size-base);\n margin-left: auto;\n}\n";
3
+ var css_248z = ".saltAccordionHeader {\n display: flex;\n gap: var(--salt-spacing-100);\n padding: var(--salt-spacing-50) var(--salt-spacing-100);\n border: 0;\n width: 100%;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n background: var(--salt-actionable-secondary-background);\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n font-family: var(--salt-text-fontFamily);\n color: var(--salt-content-primary-foreground);\n font-weight: var(--salt-text-fontWeight-strong);\n text-align: left;\n cursor: var(--salt-actionable-cursor-hover);\n box-sizing: border-box;\n}\n\n.saltAccordionHeader:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(-1 * var(--salt-focused-outlineWidth));\n}\n\n.saltAccordionHeader:disabled {\n background: var(--salt-actionable-secondary-background);\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-actionable-cursor-disabled);\n}\n\n.saltAccordionHeader-content {\n padding: var(--salt-spacing-75) 0;\n width: 100%;\n box-sizing: border-box;\n}\n\n.saltAccordionHeader .saltAccordionHeader-icon {\n height: var(--salt-size-base);\n}\n\n.saltAccordionHeader-error {\n background: var(--salt-status-error-background);\n}\n\n.saltAccordionHeader-error:focus-visible {\n outline-color: var(--salt-status-error-borderColor);\n}\n\n.saltAccordionHeader-warning {\n background: var(--salt-status-warning-background);\n}\n\n.saltAccordionHeader-warning:focus-visible {\n outline-color: var(--salt-status-warning-borderColor);\n}\n\n.saltAccordionHeader-success {\n background: var(--salt-status-success-background);\n}\n\n.saltAccordionHeader-success:focus-visible {\n outline-color: var(--salt-status-error-borderColor);\n}\n\n.saltAccordionHeader .saltAccordionHeader-statusIndicator {\n height: var(--salt-size-base);\n margin-left: auto;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=AccordionHeader.css.js.map
@@ -111,9 +111,21 @@ var AccordionContext = require('./AccordionContext.js');
111
111
  var AccordionHeader$1 = require('./AccordionHeader.css.js');
112
112
 
113
113
  const withBaseName = makePrefixer.makePrefixer("saltAccordionHeader");
114
+ function ExpansionIcon({ expanded }) {
115
+ if (expanded) {
116
+ return /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronUpIcon, {
117
+ "aria-hidden": true,
118
+ className: withBaseName("icon")
119
+ });
120
+ }
121
+ return /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronDownIcon, {
122
+ "aria-hidden": true,
123
+ className: withBaseName("icon")
124
+ });
125
+ }
114
126
  const AccordionHeader = React.forwardRef(function AccordionHeader2(props, ref) {
115
127
  const { children, className, onClick, ...rest } = props;
116
- const { value, expanded, toggle, disabled, id, status } = AccordionContext.useAccordion();
128
+ const { value, expanded, toggle, indicatorSide, disabled, id, status } = AccordionContext.useAccordion();
117
129
  const targetWindow = window.useWindow();
118
130
  styles.useComponentCssInjection({
119
131
  testId: "salt-accordion-header",
@@ -140,17 +152,19 @@ const AccordionHeader = React.forwardRef(function AccordionHeader2(props, ref) {
140
152
  type: "button",
141
153
  ...rest,
142
154
  children: [
143
- /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronRightIcon, {
144
- "aria-hidden": "true",
145
- className: withBaseName("icon")
155
+ indicatorSide === "left" && /* @__PURE__ */ jsxRuntime.jsx(ExpansionIcon, {
156
+ expanded
146
157
  }),
147
- /* @__PURE__ */ jsxRuntime.jsx("div", {
158
+ /* @__PURE__ */ jsxRuntime.jsx("span", {
148
159
  className: withBaseName("content"),
149
160
  children
150
161
  }),
151
162
  status && /* @__PURE__ */ jsxRuntime.jsx(StatusIndicator.StatusIndicator, {
152
163
  className: withBaseName("statusIndicator"),
153
164
  status
165
+ }),
166
+ indicatorSide === "right" && /* @__PURE__ */ jsxRuntime.jsx(ExpansionIcon, {
167
+ expanded
154
168
  })
155
169
  ]
156
170
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionHeader.js","sources":["../src/accordion/AccordionHeader.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n forwardRef,\n MouseEvent,\n ReactNode,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { StatusIndicator } from \"../status-indicator\";\nimport { ChevronRightIcon } from \"@salt-ds/icons\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport { makePrefixer } from \"../utils\";\n\nimport { useAccordion } from \"./AccordionContext\";\nimport accordionHeaderCss from \"./AccordionHeader.css\";\n\nexport interface AccordionHeaderProps\n extends ComponentPropsWithoutRef<\"button\"> {\n /**\n * The content of the Accordion Header\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltAccordionHeader\");\n\nexport const AccordionHeader = forwardRef<\n HTMLButtonElement,\n AccordionHeaderProps\n>(function AccordionHeader(props, ref) {\n const { children, className, onClick, ...rest } = props;\n const { value, expanded, toggle, disabled, id, status } = useAccordion();\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-accordion-header\",\n css: accordionHeaderCss,\n window: targetWindow,\n });\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n toggle(event);\n onClick?.(event);\n };\n\n return (\n <button\n ref={ref}\n className={clsx(\n withBaseName(),\n { [withBaseName(status ?? \"\")]: status },\n className\n )}\n disabled={disabled}\n onClick={handleClick}\n aria-expanded={expanded}\n id={`${id}-header`}\n aria-controls={`${id}-panel`}\n value={value}\n type=\"button\"\n {...rest}\n >\n <ChevronRightIcon aria-hidden=\"true\" className={withBaseName(\"icon\")} />\n <div className={withBaseName(\"content\")}>{children}</div>\n {status && (\n <StatusIndicator\n className={withBaseName(\"statusIndicator\")}\n status={status}\n />\n )}\n </button>\n );\n});\n"],"names":["makePrefixer","forwardRef","AccordionHeader","useAccordion","useWindow","useComponentCssInjection","accordionHeaderCss","jsxs","clsx","jsx","ChevronRightIcon","StatusIndicator"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAM,YAAA,GAAeA,0BAAa,qBAAqB,CAAA,CAAA;AAEhD,MAAM,eAAkB,GAAAC,gBAAA,CAG7B,SAASC,gBAAAA,CAAgB,OAAO,GAAK,EAAA;AACrC,EAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,OAAA,EAAA,GAAY,MAAS,GAAA,KAAA,CAAA;AAClD,EAAM,MAAA,EAAE,OAAO,QAAU,EAAA,MAAA,EAAQ,UAAU,EAAI,EAAA,MAAA,KAAWC,6BAAa,EAAA,CAAA;AAEvE,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,uBAAA;AAAA,IACR,GAAK,EAAAC,iBAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAM,MAAA,WAAA,GAAc,CAAC,KAAyC,KAAA;AAC5D,IAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AACZ,IAAU,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACZ,CAAA;AAEA,EAAA,uBACGC,eAAA,CAAA,QAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAW,EAAAC,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb,EAAE,CAAC,YAAA,CAAa,MAAU,IAAA,IAAA,GAAA,MAAA,GAAA,EAAE,IAAI,MAAO,EAAA;AAAA,MACvC,SAAA;AAAA,KACF;AAAA,IACA,QAAA;AAAA,IACA,OAAS,EAAA,WAAA;AAAA,IACT,eAAe,EAAA,QAAA;AAAA,IACf,IAAI,CAAG,EAAA,EAAA,CAAA,OAAA,CAAA;AAAA,IACP,iBAAe,CAAG,EAAA,EAAA,CAAA,MAAA,CAAA;AAAA,IAClB,KAAA;AAAA,IACA,IAAK,EAAA,QAAA;AAAA,IACJ,GAAG,IAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAACC,cAAA,CAAAC,sBAAA,EAAA;AAAA,QAAiB,aAAY,EAAA,MAAA;AAAA,QAAO,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,OAAG,CAAA;AAAA,sBACrED,cAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,QAAI,QAAA;AAAA,OAAS,CAAA;AAAA,MAClD,0BACEA,cAAA,CAAAE,+BAAA,EAAA;AAAA,QACC,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,QACzC,MAAA;AAAA,OACF,CAAA;AAAA,KAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"AccordionHeader.js","sources":["../src/accordion/AccordionHeader.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n forwardRef,\n MouseEvent,\n ReactNode,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { StatusIndicator } from \"../status-indicator\";\nimport { ChevronDownIcon, ChevronUpIcon } from \"@salt-ds/icons\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport { makePrefixer } from \"../utils\";\n\nimport { useAccordion } from \"./AccordionContext\";\nimport accordionHeaderCss from \"./AccordionHeader.css\";\n\nexport interface AccordionHeaderProps\n extends ComponentPropsWithoutRef<\"button\"> {\n /**\n * The content of the Accordion Header\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltAccordionHeader\");\n\nfunction ExpansionIcon({ expanded }: { expanded: boolean }) {\n if (expanded) {\n return <ChevronUpIcon aria-hidden className={withBaseName(\"icon\")} />;\n }\n\n return <ChevronDownIcon aria-hidden className={withBaseName(\"icon\")} />;\n}\n\nexport const AccordionHeader = forwardRef<\n HTMLButtonElement,\n AccordionHeaderProps\n>(function AccordionHeader(props, ref) {\n const { children, className, onClick, ...rest } = props;\n const { value, expanded, toggle, indicatorSide, disabled, id, status } =\n useAccordion();\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-accordion-header\",\n css: accordionHeaderCss,\n window: targetWindow,\n });\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n toggle(event);\n onClick?.(event);\n };\n\n return (\n <button\n ref={ref}\n className={clsx(\n withBaseName(),\n { [withBaseName(status ?? \"\")]: status },\n className\n )}\n disabled={disabled}\n onClick={handleClick}\n aria-expanded={expanded}\n id={`${id}-header`}\n aria-controls={`${id}-panel`}\n value={value}\n type=\"button\"\n {...rest}\n >\n {indicatorSide === \"left\" && <ExpansionIcon expanded={expanded} />}\n <span className={withBaseName(\"content\")}>{children}</span>\n {status && (\n <StatusIndicator\n className={withBaseName(\"statusIndicator\")}\n status={status}\n />\n )}\n {indicatorSide === \"right\" && <ExpansionIcon expanded={expanded} />}\n </button>\n );\n});\n"],"names":["makePrefixer","jsx","ChevronUpIcon","ChevronDownIcon","forwardRef","AccordionHeader","useAccordion","useWindow","useComponentCssInjection","accordionHeaderCss","jsxs","clsx","StatusIndicator"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAM,YAAA,GAAeA,0BAAa,qBAAqB,CAAA,CAAA;AAEvD,SAAS,aAAA,CAAc,EAAE,QAAA,EAAmC,EAAA;AAC1D,EAAA,IAAI,QAAU,EAAA;AACZ,IAAA,uBAAQC,cAAA,CAAAC,mBAAA,EAAA;AAAA,MAAc,aAAW,EAAA,IAAA;AAAA,MAAC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,KAAG,CAAA,CAAA;AAAA,GACrE;AAEA,EAAA,uBAAQD,cAAA,CAAAE,qBAAA,EAAA;AAAA,IAAgB,aAAW,EAAA,IAAA;AAAA,IAAC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,GAAG,CAAA,CAAA;AACvE,CAAA;AAEO,MAAM,eAAkB,GAAAC,gBAAA,CAG7B,SAASC,gBAAAA,CAAgB,OAAO,GAAK,EAAA;AACrC,EAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,OAAA,EAAA,GAAY,MAAS,GAAA,KAAA,CAAA;AAClD,EAAM,MAAA,EAAE,OAAO,QAAU,EAAA,MAAA,EAAQ,eAAe,QAAU,EAAA,EAAA,EAAI,MAAO,EAAA,GACnEC,6BAAa,EAAA,CAAA;AAEf,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,uBAAA;AAAA,IACR,GAAK,EAAAC,iBAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAM,MAAA,WAAA,GAAc,CAAC,KAAyC,KAAA;AAC5D,IAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AACZ,IAAU,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACZ,CAAA;AAEA,EAAA,uBACGC,eAAA,CAAA,QAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAW,EAAAC,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb,EAAE,CAAC,YAAA,CAAa,MAAU,IAAA,IAAA,GAAA,MAAA,GAAA,EAAE,IAAI,MAAO,EAAA;AAAA,MACvC,SAAA;AAAA,KACF;AAAA,IACA,QAAA;AAAA,IACA,OAAS,EAAA,WAAA;AAAA,IACT,eAAe,EAAA,QAAA;AAAA,IACf,IAAI,CAAG,EAAA,EAAA,CAAA,OAAA,CAAA;AAAA,IACP,iBAAe,CAAG,EAAA,EAAA,CAAA,MAAA,CAAA;AAAA,IAClB,KAAA;AAAA,IACA,IAAK,EAAA,QAAA;AAAA,IACJ,GAAG,IAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,aAAA,KAAkB,0BAAWV,cAAA,CAAA,aAAA,EAAA;AAAA,QAAc,QAAA;AAAA,OAAoB,CAAA;AAAA,sBAC/DA,cAAA,CAAA,MAAA,EAAA;AAAA,QAAK,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,QAAI,QAAA;AAAA,OAAS,CAAA;AAAA,MACnD,0BACEA,cAAA,CAAAW,+BAAA,EAAA;AAAA,QACC,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,QACzC,MAAA;AAAA,OACF,CAAA;AAAA,MAED,aAAA,KAAkB,2BAAYX,cAAA,CAAA,aAAA,EAAA;AAAA,QAAc,QAAA;AAAA,OAAoB,CAAA;AAAA,KAAA;AAAA,GACnE,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltAccordionPanel {\n display: grid;\n transition: grid-template-rows var(--salt-duration-perceptible) ease-in-out, opacity var(--salt-duration-perceptible) ease-in-out, visibility var(--salt-duration-perceptible) ease-in-out;\n}\n\n.saltAccordionPanel[aria-hidden=\"true\"] {\n grid-template-rows: 0fr;\n opacity: 0;\n visibility: hidden;\n}\n\n.saltAccordionPanel {\n grid-template-rows: 1fr;\n opacity: 1;\n visibility: visible;\n}\n\n.saltAccordionPanel-inner {\n overflow: hidden;\n}\n\n.saltAccordionPanel-content {\n padding-left: calc(var(--salt-spacing-200) + var(--salt-size-icon));\n padding-right: var(--salt-spacing-100);\n padding-top: var(--salt-spacing-300);\n padding-bottom: var(--salt-spacing-300);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .saltAccordionPanel {\n transition: none;\n }\n}\n";
3
+ var css_248z = ".saltAccordionPanel {\n display: grid;\n transition: grid-template-rows var(--salt-duration-perceptible) ease-in-out, opacity var(--salt-duration-perceptible) ease-in-out, visibility var(--salt-duration-perceptible) ease-in-out;\n}\n\n.saltAccordionPanel[aria-hidden=\"true\"] {\n grid-template-rows: 0fr;\n opacity: 0;\n visibility: hidden;\n}\n\n.saltAccordionPanel {\n grid-template-rows: 1fr;\n opacity: 1;\n visibility: visible;\n}\n\n.saltAccordionPanel-inner {\n overflow: hidden;\n}\n\n.saltAccordionPanel-content {\n padding-left: var(--salt-spacing-100);\n padding-right: var(--salt-spacing-100);\n padding-top: var(--salt-spacing-300);\n padding-bottom: var(--salt-spacing-300);\n}\n\n.saltAccordionPanel-indentedContent {\n padding-left: calc(var(--salt-spacing-200) + var(--salt-size-icon));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .saltAccordionPanel {\n transition: none;\n }\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=AccordionPanel.css.js.map
@@ -120,7 +120,7 @@ const AccordionPanel = React.forwardRef(
120
120
  css: AccordionPanel$1,
121
121
  window: targetWindow
122
122
  });
123
- const { id, expanded } = AccordionContext.useAccordion();
123
+ const { id, expanded, indicatorSide } = AccordionContext.useAccordion();
124
124
  return /* @__PURE__ */ jsxRuntime.jsx("div", {
125
125
  ref,
126
126
  className: clsx.clsx(withBaseName(), className),
@@ -133,7 +133,9 @@ const AccordionPanel = React.forwardRef(
133
133
  children: /* @__PURE__ */ jsxRuntime.jsx("div", {
134
134
  className: withBaseName("inner"),
135
135
  children: /* @__PURE__ */ jsxRuntime.jsx("div", {
136
- className: withBaseName("content"),
136
+ className: clsx.clsx(withBaseName("content"), {
137
+ [withBaseName("indentedContent")]: indicatorSide === "left"
138
+ }),
137
139
  children
138
140
  })
139
141
  })
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionPanel.js","sources":["../src/accordion/AccordionPanel.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, ReactNode } from \"react\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { clsx } from \"clsx\";\n\nimport { makePrefixer } from \"../utils\";\nimport { useAccordion } from \"./AccordionContext\";\nimport accordionPanelCss from \"./AccordionPanel.css\";\n\nexport interface AccordionPanelProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the Accordion Panel\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltAccordionPanel\");\n\nexport const AccordionPanel = forwardRef<HTMLDivElement, AccordionPanelProps>(\n function AccordionPanel(props, ref) {\n const { children, className, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-accordion-panel\",\n css: accordionPanelCss,\n window: targetWindow,\n });\n\n const { id, expanded } = useAccordion();\n\n return (\n <div\n ref={ref}\n className={clsx(withBaseName(), className)}\n role=\"region\"\n id={`${id}-panel`}\n aria-labelledby={`${id}-header`}\n aria-hidden={!expanded ? \"true\" : undefined}\n hidden={!expanded}\n {...rest}\n >\n <div className={withBaseName(\"inner\")}>\n <div className={withBaseName(\"content\")}>{children}</div>\n </div>\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","AccordionPanel","useWindow","useComponentCssInjection","accordionPanelCss","useAccordion","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,YAAA,GAAeA,0BAAa,oBAAoB,CAAA,CAAA;AAE/C,MAAM,cAAiB,GAAAC,gBAAA;AAAA,EAC5B,SAASC,eAAe,CAAA,KAAA,EAAO,GAAK,EAAA;AAClC,IAAA,MAAM,EAAE,QAAA,EAAU,SAAc,EAAA,GAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AAEzC,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,sBAAA;AAAA,MACR,GAAK,EAAAC,gBAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,MAAM,EAAE,EAAA,EAAI,QAAS,EAAA,GAAIC,6BAAa,EAAA,CAAA;AAEtC,IAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,IAAK,EAAA,QAAA;AAAA,MACL,IAAI,CAAG,EAAA,EAAA,CAAA,MAAA,CAAA;AAAA,MACP,mBAAiB,CAAG,EAAA,EAAA,CAAA,OAAA,CAAA;AAAA,MACpB,aAAA,EAAa,CAAC,QAAA,GAAW,MAAS,GAAA,KAAA,CAAA;AAAA,MAClC,QAAQ,CAAC,QAAA;AAAA,MACR,GAAG,IAAA;AAAA,MAEJ,QAAC,kBAAAD,cAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,QAClC,QAAC,kBAAAA,cAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,UAAI,QAAA;AAAA,SAAS,CAAA;AAAA,OACrD,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"AccordionPanel.js","sources":["../src/accordion/AccordionPanel.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, ReactNode } from \"react\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { clsx } from \"clsx\";\n\nimport { makePrefixer } from \"../utils\";\nimport { useAccordion } from \"./AccordionContext\";\nimport accordionPanelCss from \"./AccordionPanel.css\";\n\nexport interface AccordionPanelProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the Accordion Panel\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltAccordionPanel\");\n\nexport const AccordionPanel = forwardRef<HTMLDivElement, AccordionPanelProps>(\n function AccordionPanel(props, ref) {\n const { children, className, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-accordion-panel\",\n css: accordionPanelCss,\n window: targetWindow,\n });\n\n const { id, expanded, indicatorSide } = useAccordion();\n\n return (\n <div\n ref={ref}\n className={clsx(withBaseName(), className)}\n role=\"region\"\n id={`${id}-panel`}\n aria-labelledby={`${id}-header`}\n aria-hidden={!expanded ? \"true\" : undefined}\n hidden={!expanded}\n {...rest}\n >\n <div className={withBaseName(\"inner\")}>\n <div\n className={clsx(withBaseName(\"content\"), {\n [withBaseName(\"indentedContent\")]: indicatorSide === \"left\",\n })}\n >\n {children}\n </div>\n </div>\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","AccordionPanel","useWindow","useComponentCssInjection","accordionPanelCss","useAccordion","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,YAAA,GAAeA,0BAAa,oBAAoB,CAAA,CAAA;AAE/C,MAAM,cAAiB,GAAAC,gBAAA;AAAA,EAC5B,SAASC,eAAe,CAAA,KAAA,EAAO,GAAK,EAAA;AAClC,IAAA,MAAM,EAAE,QAAA,EAAU,SAAc,EAAA,GAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AAEzC,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,sBAAA;AAAA,MACR,GAAK,EAAAC,gBAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,MAAM,EAAE,EAAA,EAAI,QAAU,EAAA,aAAA,KAAkBC,6BAAa,EAAA,CAAA;AAErD,IAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,IAAK,EAAA,QAAA;AAAA,MACL,IAAI,CAAG,EAAA,EAAA,CAAA,MAAA,CAAA;AAAA,MACP,mBAAiB,CAAG,EAAA,EAAA,CAAA,OAAA,CAAA;AAAA,MACpB,aAAA,EAAa,CAAC,QAAA,GAAW,MAAS,GAAA,KAAA,CAAA;AAAA,MAClC,QAAQ,CAAC,QAAA;AAAA,MACR,GAAG,IAAA;AAAA,MAEJ,QAAC,kBAAAD,cAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,QAClC,QAAC,kBAAAA,cAAA,CAAA,KAAA,EAAA;AAAA,UACC,SAAW,EAAAC,SAAA,CAAK,YAAa,CAAA,SAAS,CAAG,EAAA;AAAA,YACvC,CAAC,YAAA,CAAa,iBAAiB,CAAA,GAAI,aAAkB,KAAA,MAAA;AAAA,WACtD,CAAA;AAAA,UAEA,QAAA;AAAA,SACH,CAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -142,6 +142,7 @@ const ComboBox = React.forwardRef(function ComboBox2(props, ref) {
142
142
  defaultValue,
143
143
  valueToString = ListControlState.defaultValueToString,
144
144
  truncate,
145
+ bordered = false,
145
146
  ...rest
146
147
  } = props;
147
148
  const targetWindow = window.useWindow();
@@ -436,6 +437,7 @@ const ComboBox = React.forwardRef(function ComboBox2(props, ref) {
436
437
  inputRef,
437
438
  value: valueState,
438
439
  ref: handleRef,
440
+ bordered,
439
441
  ...getReferenceProps({
440
442
  onBlur: handleBlur,
441
443
  onFocus: handleFocus,