@salt-ds/core 1.47.3 → 1.47.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/css/salt-core.css +60 -50
- package/dist-cjs/aria-announcer/AriaAnnounce.js.map +1 -1
- package/dist-cjs/avatar/Avatar.js +5 -2
- package/dist-cjs/avatar/Avatar.js.map +1 -1
- package/dist-cjs/breakpoints/BreakpointProvider.js +10 -7
- package/dist-cjs/breakpoints/BreakpointProvider.js.map +1 -1
- package/dist-cjs/button/useButton.js +3 -3
- package/dist-cjs/button/useButton.js.map +1 -1
- package/dist-cjs/checkbox/Checkbox.css.js +1 -1
- package/dist-cjs/checkbox/CheckboxIcon.css.js +1 -1
- package/dist-cjs/dialog/Dialog.js +1 -1
- package/dist-cjs/dialog/Dialog.js.map +1 -1
- package/dist-cjs/dialog/DialogContent.css.js +1 -1
- package/dist-cjs/dialog/DialogHeader.css.js +1 -1
- package/dist-cjs/divider/Divider.js.map +1 -1
- package/dist-cjs/input/Input.css.js +1 -1
- package/dist-cjs/interactable-card/InteractableCard.js +29 -26
- package/dist-cjs/interactable-card/InteractableCard.js.map +1 -1
- package/dist-cjs/interactable-card/InteractableCardGroup.js +3 -3
- package/dist-cjs/interactable-card/InteractableCardGroup.js.map +1 -1
- package/dist-cjs/multiline-input/MultilineInput.css.js +1 -1
- package/dist-cjs/multiline-input/MultilineInput.js +12 -6
- package/dist-cjs/multiline-input/MultilineInput.js.map +1 -1
- package/dist-cjs/navigation-item/ExpansionIcon.js.map +1 -1
- package/dist-cjs/pagination/PageButton.css.js +1 -1
- package/dist-cjs/pill/Pill.js +1 -1
- package/dist-cjs/pill/Pill.js.map +1 -1
- package/dist-cjs/pill-input/PillInput.css.js +1 -1
- package/dist-cjs/pill-input/useTruncatePills.js +2 -1
- package/dist-cjs/pill-input/useTruncatePills.js.map +1 -1
- package/dist-cjs/radio-button/RadioButton.css.js +1 -1
- package/dist-cjs/radio-button/RadioButtonIcon.css.js +1 -1
- package/dist-cjs/salt-provider/SaltProvider.js +2 -2
- package/dist-cjs/salt-provider/SaltProvider.js.map +1 -1
- package/dist-cjs/spinner/Spinner.js +3 -4
- package/dist-cjs/spinner/Spinner.js.map +1 -1
- package/dist-cjs/status-indicator/StatusIndicator.js +3 -0
- package/dist-cjs/status-indicator/StatusIndicator.js.map +1 -1
- package/dist-cjs/stepper/Step.css.js +1 -1
- package/dist-cjs/stepper/Step.js +1 -1
- package/dist-cjs/stepper/Step.js.map +1 -1
- package/dist-cjs/stepper/internal/StepIcon.css.js +1 -1
- package/dist-cjs/stepper/internal/StepText.css.js +1 -1
- package/dist-cjs/stepper/internal/StepText.js +0 -1
- package/dist-cjs/stepper/internal/StepText.js.map +1 -1
- package/dist-cjs/switch/Switch.js.map +1 -1
- package/dist-cjs/text/Text.css.js +1 -1
- package/dist-cjs/toggle-button-group/ToggleButtonGroup.js +3 -3
- package/dist-cjs/toggle-button-group/ToggleButtonGroup.js.map +1 -1
- package/dist-cjs/tooltip/Tooltip.js +1 -1
- package/dist-cjs/tooltip/Tooltip.js.map +1 -1
- package/dist-cjs/tooltip/useTooltip.js +1 -1
- package/dist-cjs/tooltip/useTooltip.js.map +1 -1
- package/dist-cjs/utils/mergeProps.js +2 -2
- package/dist-cjs/utils/mergeProps.js.map +1 -1
- package/dist-cjs/utils/useControlled.js +1 -1
- package/dist-cjs/utils/useControlled.js.map +1 -1
- package/dist-cjs/utils/useFloatingUI/useFloatingUI.js +2 -2
- package/dist-cjs/utils/useFloatingUI/useFloatingUI.js.map +1 -1
- package/dist-cjs/utils/useIsFocusVisible.js +1 -1
- package/dist-cjs/utils/useIsFocusVisible.js.map +1 -1
- package/dist-cjs/utils/usePreventScroll.js.map +1 -1
- package/dist-cjs/utils/usePrevious.js.map +1 -1
- package/dist-es/aria-announcer/AriaAnnounce.js.map +1 -1
- package/dist-es/avatar/Avatar.js +5 -2
- package/dist-es/avatar/Avatar.js.map +1 -1
- package/dist-es/breakpoints/BreakpointProvider.js +11 -8
- package/dist-es/breakpoints/BreakpointProvider.js.map +1 -1
- package/dist-es/button/useButton.js +3 -3
- package/dist-es/button/useButton.js.map +1 -1
- package/dist-es/checkbox/Checkbox.css.js +1 -1
- package/dist-es/checkbox/CheckboxIcon.css.js +1 -1
- package/dist-es/dialog/Dialog.js +1 -1
- package/dist-es/dialog/Dialog.js.map +1 -1
- package/dist-es/dialog/DialogContent.css.js +1 -1
- package/dist-es/dialog/DialogHeader.css.js +1 -1
- package/dist-es/divider/Divider.js.map +1 -1
- package/dist-es/input/Input.css.js +1 -1
- package/dist-es/interactable-card/InteractableCard.js +29 -26
- package/dist-es/interactable-card/InteractableCard.js.map +1 -1
- package/dist-es/interactable-card/InteractableCardGroup.js +3 -3
- package/dist-es/interactable-card/InteractableCardGroup.js.map +1 -1
- package/dist-es/multiline-input/MultilineInput.css.js +1 -1
- package/dist-es/multiline-input/MultilineInput.js +13 -7
- package/dist-es/multiline-input/MultilineInput.js.map +1 -1
- package/dist-es/navigation-item/ExpansionIcon.js.map +1 -1
- package/dist-es/pagination/PageButton.css.js +1 -1
- package/dist-es/pill/Pill.js +1 -1
- package/dist-es/pill/Pill.js.map +1 -1
- package/dist-es/pill-input/PillInput.css.js +1 -1
- package/dist-es/pill-input/useTruncatePills.js +2 -1
- package/dist-es/pill-input/useTruncatePills.js.map +1 -1
- package/dist-es/radio-button/RadioButton.css.js +1 -1
- package/dist-es/radio-button/RadioButtonIcon.css.js +1 -1
- package/dist-es/salt-provider/SaltProvider.js +2 -2
- package/dist-es/salt-provider/SaltProvider.js.map +1 -1
- package/dist-es/spinner/Spinner.js +3 -4
- package/dist-es/spinner/Spinner.js.map +1 -1
- package/dist-es/status-indicator/StatusIndicator.js +3 -0
- package/dist-es/status-indicator/StatusIndicator.js.map +1 -1
- package/dist-es/stepper/Step.css.js +1 -1
- package/dist-es/stepper/Step.js +1 -1
- package/dist-es/stepper/Step.js.map +1 -1
- package/dist-es/stepper/internal/StepIcon.css.js +1 -1
- package/dist-es/stepper/internal/StepText.css.js +1 -1
- package/dist-es/stepper/internal/StepText.js +0 -1
- package/dist-es/stepper/internal/StepText.js.map +1 -1
- package/dist-es/switch/Switch.js.map +1 -1
- package/dist-es/text/Text.css.js +1 -1
- package/dist-es/toggle-button-group/ToggleButtonGroup.js +3 -3
- package/dist-es/toggle-button-group/ToggleButtonGroup.js.map +1 -1
- package/dist-es/tooltip/Tooltip.js +1 -1
- package/dist-es/tooltip/Tooltip.js.map +1 -1
- package/dist-es/tooltip/useTooltip.js +1 -1
- package/dist-es/tooltip/useTooltip.js.map +1 -1
- package/dist-es/utils/mergeProps.js +2 -2
- package/dist-es/utils/mergeProps.js.map +1 -1
- package/dist-es/utils/useControlled.js +1 -1
- package/dist-es/utils/useControlled.js.map +1 -1
- package/dist-es/utils/useFloatingUI/useFloatingUI.js +2 -2
- package/dist-es/utils/useFloatingUI/useFloatingUI.js.map +1 -1
- package/dist-es/utils/useIsFocusVisible.js +1 -1
- package/dist-es/utils/useIsFocusVisible.js.map +1 -1
- package/dist-es/utils/usePreventScroll.js.map +1 -1
- package/dist-es/utils/usePrevious.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @salt-ds/core
|
|
2
2
|
|
|
3
|
+
## 1.47.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 846d975: Fixed Pagination active border color.
|
|
8
|
+
- 8538730: Removed text selection background color override.
|
|
9
|
+
- 8261887: Fixed Tooltip showing when content is null.
|
|
10
|
+
- e6445dc: Fixed Stepper using incorrect font styles in steps.
|
|
11
|
+
- ff646e2: Fixed Dialog having an unnecessary scrollbar.
|
|
12
|
+
- 9a25824: Updated `DialogHeader`'s responsive behaviour to meet WCAG 2.1 Reflow success criterion.
|
|
13
|
+
- 64ef723: Updated read-only style for RadioButton and Checkbox to meet color contrast requirements.
|
|
14
|
+
|
|
15
|
+
## 1.47.4
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- c58279f: Fixed `Step` description's color being incorrect.
|
|
20
|
+
- 239d20c: - Fixed MutilineInput's end adornments scrolling off-screen when a max-height is applied.
|
|
21
|
+
- Fixed MultilineInput's start adornments appearing at the top of the field when its width is reduced.
|
|
22
|
+
- fe8da62: Fixed `StatusIndicator` crashing if given invalid `status` prop.
|
|
23
|
+
|
|
3
24
|
## 1.47.3
|
|
4
25
|
|
|
5
26
|
### Patch Changes
|
package/css/salt-core.css
CHANGED
|
@@ -860,7 +860,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
860
860
|
box-sizing: border-box;
|
|
861
861
|
}
|
|
862
862
|
.saltCheckbox-input:focus-visible + .saltCheckboxIcon {
|
|
863
|
-
outline-offset: var(--salt-
|
|
863
|
+
outline-offset: var(--salt-spacing-fixed-100);
|
|
864
864
|
outline: var(--saltCheckbox-outline, var(--salt-focused-outline));
|
|
865
865
|
border-color: var(--salt-selectable-borderColor-hover);
|
|
866
866
|
color: var(--salt-selectable-foreground-hover);
|
|
@@ -983,8 +983,10 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
983
983
|
outline-color: var(--salt-status-warning-foreground-decorative);
|
|
984
984
|
}
|
|
985
985
|
.saltCheckboxIcon-readOnly,
|
|
986
|
-
.saltCheckbox:hover .saltCheckboxIcon-readOnly
|
|
986
|
+
.saltCheckbox:hover .saltCheckboxIcon-readOnly,
|
|
987
|
+
.saltCheckbox-input:focus-visible + .saltCheckboxIcon-readOnly {
|
|
987
988
|
border-color: var(--salt-selectable-borderColor-readonly);
|
|
989
|
+
border-style: var(--salt-borderStyle-dashed);
|
|
988
990
|
color: var(--salt-content-primary-foreground);
|
|
989
991
|
}
|
|
990
992
|
.saltCheckboxIcon > svg {
|
|
@@ -1124,6 +1126,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
1124
1126
|
flex: 1 1 auto;
|
|
1125
1127
|
position: relative;
|
|
1126
1128
|
display: flex;
|
|
1129
|
+
box-sizing: border-box;
|
|
1127
1130
|
}
|
|
1128
1131
|
.saltDialogContent-inner {
|
|
1129
1132
|
overflow-y: auto;
|
|
@@ -1131,6 +1134,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
1131
1134
|
border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) transparent;
|
|
1132
1135
|
max-height: inherit;
|
|
1133
1136
|
flex: 1;
|
|
1137
|
+
box-sizing: border-box;
|
|
1134
1138
|
}
|
|
1135
1139
|
.saltDialogContent-overflow {
|
|
1136
1140
|
padding-right: var(--salt-spacing-100);
|
|
@@ -1141,6 +1145,11 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
1141
1145
|
.saltDialogContent-scrollBottom.saltDialogContent-inner {
|
|
1142
1146
|
border-bottom-color: var(--salt-separable-tertiary-borderColor);
|
|
1143
1147
|
}
|
|
1148
|
+
@supports selector(:has(*)) {
|
|
1149
|
+
.saltDialogContent:has(.saltDialogContent-overflow) {
|
|
1150
|
+
min-height: calc(var(--salt-text-lineHeight) * 4);
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
1144
1153
|
|
|
1145
1154
|
/* src/dialog/DialogHeader.css */
|
|
1146
1155
|
.saltDialogHeader {
|
|
@@ -1163,6 +1172,8 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
1163
1172
|
gap: var(--salt-spacing-50);
|
|
1164
1173
|
padding-top: calc((var(--salt-size-base) - var(--salt-text-h2-lineHeight)) / 2);
|
|
1165
1174
|
align-items: flex-start;
|
|
1175
|
+
min-width: 0;
|
|
1176
|
+
word-break: break-word;
|
|
1166
1177
|
}
|
|
1167
1178
|
.saltDialogHeader-header > .saltText {
|
|
1168
1179
|
margin: 0;
|
|
@@ -1922,9 +1933,6 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
1922
1933
|
.saltInput-input:focus {
|
|
1923
1934
|
outline: none;
|
|
1924
1935
|
}
|
|
1925
|
-
.saltInput-input::selection {
|
|
1926
|
-
background: var(--salt-content-foreground-highlight);
|
|
1927
|
-
}
|
|
1928
1936
|
.saltInput-input::placeholder {
|
|
1929
1937
|
color: var(--salt-content-secondary-foreground);
|
|
1930
1938
|
font-weight: var(--salt-text-fontWeight-small);
|
|
@@ -2343,24 +2351,30 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
2343
2351
|
|
|
2344
2352
|
/* src/multiline-input/MultilineInput.css */
|
|
2345
2353
|
.saltMultilineInput {
|
|
2346
|
-
|
|
2354
|
+
display: inline-grid;
|
|
2355
|
+
grid-template-areas: "start-adornment textarea end-adornment";
|
|
2356
|
+
grid-template-columns: min-content 1fr min-content;
|
|
2357
|
+
grid-template-rows: 1fr;
|
|
2347
2358
|
background: var(--multilineInput-background);
|
|
2348
2359
|
border-radius: var(--salt-palette-corner-weak, 0);
|
|
2349
2360
|
color: var(--salt-content-primary-foreground);
|
|
2350
|
-
display: inline-flex;
|
|
2351
2361
|
font-family: var(--salt-text-fontFamily);
|
|
2352
2362
|
font-size: var(--salt-text-fontSize);
|
|
2353
2363
|
line-height: var(--salt-text-lineHeight);
|
|
2354
2364
|
letter-spacing: var(--salt-text-letterSpacing);
|
|
2355
|
-
height: auto;
|
|
2356
2365
|
min-height: var(--salt-size-base);
|
|
2357
2366
|
min-width: 4em;
|
|
2358
|
-
padding-left: var(--salt-spacing-100);
|
|
2359
|
-
padding-right: var(--salt-spacing-100);
|
|
2360
2367
|
position: relative;
|
|
2361
2368
|
width: 100%;
|
|
2362
2369
|
box-sizing: border-box;
|
|
2363
2370
|
overflow: hidden;
|
|
2371
|
+
padding: 0 var(--salt-spacing-100);
|
|
2372
|
+
}
|
|
2373
|
+
.saltMultilineInput-wrapper {
|
|
2374
|
+
grid-area: textarea;
|
|
2375
|
+
overflow: hidden;
|
|
2376
|
+
margin: var(--salt-spacing-75) 0;
|
|
2377
|
+
display: flex;
|
|
2364
2378
|
}
|
|
2365
2379
|
.saltMultilineInput:hover {
|
|
2366
2380
|
background: var(--multilineInput-background-hover);
|
|
@@ -2490,8 +2504,9 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
2490
2504
|
color: var(--salt-content-primary-foreground-disabled);
|
|
2491
2505
|
}
|
|
2492
2506
|
.saltMultilineInput.saltMultilineInput-withAdornmentRow {
|
|
2493
|
-
|
|
2494
|
-
|
|
2507
|
+
grid-template-areas: "start-adornment textarea" "end-adornment end-adornment";
|
|
2508
|
+
grid-template-columns: min-content 1fr;
|
|
2509
|
+
grid-template-rows: 1fr auto;
|
|
2495
2510
|
}
|
|
2496
2511
|
.saltMultilineInput-endAdornmentContainer,
|
|
2497
2512
|
.saltMultilineInput-startAdornmentContainer {
|
|
@@ -2503,9 +2518,11 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
2503
2518
|
.saltMultilineInput-startAdornmentContainer {
|
|
2504
2519
|
align-self: self-start;
|
|
2505
2520
|
padding-right: var(--salt-spacing-100);
|
|
2521
|
+
grid-area: start-adornment;
|
|
2506
2522
|
}
|
|
2507
2523
|
.saltMultilineInput-suffixAdornments {
|
|
2508
2524
|
align-self: self-end;
|
|
2525
|
+
grid-area: end-adornment;
|
|
2509
2526
|
}
|
|
2510
2527
|
.saltMultilineInput-withAdornmentRow .saltMultilineInput-suffixAdornments {
|
|
2511
2528
|
display: inline-flex;
|
|
@@ -2536,21 +2553,19 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
2536
2553
|
--saltButton-borderRadius: var(--salt-palette-corner-weaker);
|
|
2537
2554
|
}
|
|
2538
2555
|
.saltMultilineInput-textarea {
|
|
2556
|
+
appearance: none;
|
|
2539
2557
|
background: none;
|
|
2540
|
-
border:
|
|
2541
|
-
box-sizing: border-box;
|
|
2558
|
+
border: 0;
|
|
2542
2559
|
color: inherit;
|
|
2543
|
-
cursor: inherit;
|
|
2544
|
-
flex-grow: 1;
|
|
2545
2560
|
font: inherit;
|
|
2546
|
-
letter-spacing: 0;
|
|
2547
|
-
line-height: var(--salt-text-lineHeight);
|
|
2548
|
-
margin: var(--salt-spacing-75) 0;
|
|
2549
|
-
min-width: 0;
|
|
2550
|
-
min-height: 0;
|
|
2551
|
-
max-height: inherit;
|
|
2552
2561
|
resize: vertical;
|
|
2562
|
+
width: 100%;
|
|
2553
2563
|
padding: 0;
|
|
2564
|
+
box-sizing: border-box;
|
|
2565
|
+
min-height: 0;
|
|
2566
|
+
min-width: 0;
|
|
2567
|
+
max-height: 100%;
|
|
2568
|
+
overflow: auto;
|
|
2554
2569
|
}
|
|
2555
2570
|
.saltMultilineInput-textarea::placeholder {
|
|
2556
2571
|
font-weight: var(--salt-text-fontWeight-small);
|
|
@@ -2558,9 +2573,6 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
2558
2573
|
.saltMultilineInput-textarea:focus {
|
|
2559
2574
|
outline: none;
|
|
2560
2575
|
}
|
|
2561
|
-
.saltMultilineInput-textarea::selection {
|
|
2562
|
-
background: var(--salt-content-foreground-highlight);
|
|
2563
|
-
}
|
|
2564
2576
|
.saltMultilineInput-disabled .saltMultilineInput-textarea::selection {
|
|
2565
2577
|
background: none;
|
|
2566
2578
|
}
|
|
@@ -2896,7 +2908,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
2896
2908
|
line-height: var(--salt-text-lineHeight);
|
|
2897
2909
|
letter-spacing: var(--salt-text-letterSpacing);
|
|
2898
2910
|
cursor: var(--salt-cursor-hover);
|
|
2899
|
-
border-radius: var(--salt-palette-corner-weak
|
|
2911
|
+
border-radius: var(--salt-palette-corner-weak);
|
|
2900
2912
|
}
|
|
2901
2913
|
.saltPageButton:hover,
|
|
2902
2914
|
.saltPageButton:focus-visible {
|
|
@@ -2914,7 +2926,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
2914
2926
|
cursor: var(--salt-cursor-readonly);
|
|
2915
2927
|
}
|
|
2916
2928
|
.saltPageButton[aria-current=page] {
|
|
2917
|
-
border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor);
|
|
2929
|
+
border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor-selected);
|
|
2918
2930
|
background: var(--salt-selectable-background-selected);
|
|
2919
2931
|
}
|
|
2920
2932
|
.saltPageButton-fixed {
|
|
@@ -3311,9 +3323,6 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
3311
3323
|
.saltPillInput-input:focus {
|
|
3312
3324
|
outline: none;
|
|
3313
3325
|
}
|
|
3314
|
-
.saltPillInput-input::selection {
|
|
3315
|
-
background: var(--salt-content-foreground-highlight);
|
|
3316
|
-
}
|
|
3317
3326
|
.saltPillInput-disabled .saltPillInput-input::selection {
|
|
3318
3327
|
background: none;
|
|
3319
3328
|
}
|
|
@@ -3358,7 +3367,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
3358
3367
|
}
|
|
3359
3368
|
.saltRadioButton-input:focus-visible + .saltRadioButtonIcon {
|
|
3360
3369
|
outline: var(--saltRadioButton-outline, var(--salt-focused-outline));
|
|
3361
|
-
outline-offset: var(--salt-
|
|
3370
|
+
outline-offset: var(--salt-spacing-fixed-100);
|
|
3362
3371
|
border-color: var(--salt-selectable-borderColor-hover);
|
|
3363
3372
|
color: var(--salt-selectable-foreground-hover);
|
|
3364
3373
|
clip-path: unset;
|
|
@@ -3456,8 +3465,10 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
3456
3465
|
outline-color: var(--salt-status-warning-foreground-decorative);
|
|
3457
3466
|
}
|
|
3458
3467
|
.saltRadioButtonIcon-readOnly,
|
|
3459
|
-
.saltRadioButton:hover .saltRadioButtonIcon-readOnly
|
|
3468
|
+
.saltRadioButton:hover .saltRadioButtonIcon-readOnly,
|
|
3469
|
+
.saltRadioButton-input:focus-visible + .saltRadioButtonIcon-readOnly {
|
|
3460
3470
|
border-color: var(--salt-selectable-borderColor-readonly);
|
|
3471
|
+
border-style: var(--salt-borderStyle-dashed);
|
|
3461
3472
|
color: var(--salt-content-primary-foreground);
|
|
3462
3473
|
}
|
|
3463
3474
|
.saltRadioButtonIcon > svg {
|
|
@@ -3698,7 +3709,7 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
3698
3709
|
|
|
3699
3710
|
/* src/stepper/Step.css */
|
|
3700
3711
|
.saltStep {
|
|
3701
|
-
--step-icon-base-size: var(--salt-size-icon
|
|
3712
|
+
--step-icon-base-size: var(--salt-size-icon);
|
|
3702
3713
|
--step-icon-size-multiplier: var(--saltIcon-size-multiplier, 1.5);
|
|
3703
3714
|
--step-icon-size: calc(var(--step-icon-base-size) * var(--step-icon-size-multiplier));
|
|
3704
3715
|
--step-depth: var(--saltStep-depth, 0);
|
|
@@ -4066,9 +4077,6 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
4066
4077
|
font-weight: var(--saltText-fontWeight, var(--salt-text-fontWeight));
|
|
4067
4078
|
letter-spacing: var(--salt-text-letterSpacing);
|
|
4068
4079
|
}
|
|
4069
|
-
.saltText::selection {
|
|
4070
|
-
background: var(--saltText-highlight, var(--salt-content-foreground-highlight));
|
|
4071
|
-
}
|
|
4072
4080
|
.saltText-lineClamp {
|
|
4073
4081
|
display: -webkit-box;
|
|
4074
4082
|
-webkit-box-orient: vertical;
|
|
@@ -5219,15 +5227,11 @@ label.saltText small,
|
|
|
5219
5227
|
.saltStepper-vertical .saltStepIcon {
|
|
5220
5228
|
height: var(--salt-size-base);
|
|
5221
5229
|
}
|
|
5222
|
-
.saltStep-stage-pending > .saltStepIcon
|
|
5223
|
-
--saltIcon-color: var(--salt-content-secondary-foreground);
|
|
5224
|
-
}
|
|
5230
|
+
.saltStep-stage-pending > .saltStepIcon,
|
|
5225
5231
|
.saltStep-stage-locked > .saltStepIcon {
|
|
5226
5232
|
--saltIcon-color: var(--salt-content-secondary-foreground);
|
|
5227
5233
|
}
|
|
5228
|
-
.saltStep-stage-inprogress > .saltStepIcon
|
|
5229
|
-
--saltIcon-color: var(--salt-status-info-foreground-decorative);
|
|
5230
|
-
}
|
|
5234
|
+
.saltStep-stage-inprogress > .saltStepIcon,
|
|
5231
5235
|
.saltStep-stage-active > .saltStepIcon {
|
|
5232
5236
|
--saltIcon-color: var(--salt-status-info-foreground-decorative);
|
|
5233
5237
|
}
|
|
@@ -5241,11 +5245,14 @@ label.saltText small,
|
|
|
5241
5245
|
--saltIcon-color: var(--salt-status-error-foreground-decorative);
|
|
5242
5246
|
}
|
|
5243
5247
|
|
|
5244
|
-
/* src/stepper/internal/StepScreenReaderOnly.css */
|
|
5245
|
-
|
|
5246
5248
|
/* src/stepper/internal/StepText.css */
|
|
5247
5249
|
.saltStepText-label {
|
|
5248
5250
|
grid-area: label;
|
|
5251
|
+
font-size: var(--salt-text-fontSize);
|
|
5252
|
+
line-height: var(--salt-text-lineHeight);
|
|
5253
|
+
font-family: var(--salt-text-fontFamily);
|
|
5254
|
+
color: var(--salt-content-primary-foreground);
|
|
5255
|
+
font-weight: var(--salt-text-fontWeight);
|
|
5249
5256
|
}
|
|
5250
5257
|
.saltStepper-horizontal .saltStepText-label {
|
|
5251
5258
|
margin-top: var(--salt-spacing-50);
|
|
@@ -5253,20 +5260,23 @@ label.saltText small,
|
|
|
5253
5260
|
.saltStepper-vertical .saltStepText-label {
|
|
5254
5261
|
padding-top: calc((var(--salt-size-base) - var(--salt-text-label-lineHeight)) / 2);
|
|
5255
5262
|
padding-bottom: calc((var(--salt-size-base) - var(--salt-text-label-lineHeight)) / 2);
|
|
5256
|
-
padding-left: calc(
|
|
5257
|
-
}
|
|
5258
|
-
.saltStep-depth-0 > .saltText.saltStepText-label {
|
|
5259
|
-
font-weight: var(--salt-text-fontWeight-strong);
|
|
5263
|
+
padding-left: calc(var(--step-depth) * var(--salt-spacing-100));
|
|
5260
5264
|
}
|
|
5261
5265
|
.saltStep-depth-0 > .saltText.saltStepText-label {
|
|
5262
5266
|
font-weight: var(--salt-text-fontWeight-strong);
|
|
5263
5267
|
}
|
|
5264
5268
|
.saltStepText-description {
|
|
5265
5269
|
grid-area: description;
|
|
5270
|
+
color: var(--salt-content-secondary-foreground);
|
|
5271
|
+
font-size: var(--salt-text-label-fontSize);
|
|
5272
|
+
font-weight: var(--salt-text-label-fontWeight-strong);
|
|
5273
|
+
font-family: var(--salt-text-label-fontFamily);
|
|
5274
|
+
line-height: var(--salt-text-label-lineHeight);
|
|
5275
|
+
letter-spacing: var(--salt-text-letterSpacing);
|
|
5266
5276
|
}
|
|
5267
5277
|
.saltStepper-vertical .saltStepText-description {
|
|
5268
5278
|
padding-bottom: var(--salt-spacing-300);
|
|
5269
|
-
padding-left: calc(
|
|
5279
|
+
padding-left: calc(var(--step-depth) * var(--salt-spacing-100));
|
|
5270
5280
|
}
|
|
5271
5281
|
.saltStep-status-warning > .saltStepText-description {
|
|
5272
5282
|
color: var(--salt-status-warning-foreground-informative);
|
|
@@ -5275,4 +5285,4 @@ label.saltText small,
|
|
|
5275
5285
|
color: var(--salt-status-error-foreground-informative);
|
|
5276
5286
|
}
|
|
5277
5287
|
|
|
5278
|
-
/* src/
|
|
5288
|
+
/* src/4a0f5cbc-a0a0-42f9-8be1-8d5615fbd745.css */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AriaAnnounce.js","sources":["../src/aria-announcer/AriaAnnounce.tsx"],"sourcesContent":["import { type ComponentType, useEffect } from \"react\";\n\nimport { useAriaAnnouncer } from \"./useAriaAnnouncer\";\n\nexport interface AriaAnnounceProps {\n /**\n * String which will be announced by screen readers on change\n */\n announcement?: string;\n}\n\nexport const AriaAnnounce: ComponentType<AriaAnnounceProps> = ({\n announcement,\n}) => {\n const { announce } = useAriaAnnouncer();\n\n useEffect(() => {\n if (announcement) {\n announce(announcement);\n }\n }, [announce, announcement]);\n\n // If we return null here, react-docgen wouldn't be able to locate the component
|
|
1
|
+
{"version":3,"file":"AriaAnnounce.js","sources":["../src/aria-announcer/AriaAnnounce.tsx"],"sourcesContent":["import { type ComponentType, useEffect } from \"react\";\n\nimport { useAriaAnnouncer } from \"./useAriaAnnouncer\";\n\nexport interface AriaAnnounceProps {\n /**\n * String which will be announced by screen readers on change\n */\n announcement?: string;\n}\n\nexport const AriaAnnounce: ComponentType<AriaAnnounceProps> = ({\n announcement,\n}) => {\n const { announce } = useAriaAnnouncer();\n\n useEffect(() => {\n if (announcement) {\n announce(announcement);\n }\n }, [announce, announcement]);\n\n // biome-ignore lint/complexity/noUselessFragments: If we return null here, react-docgen wouldn't be able to locate the component.\n return <></>;\n};\n"],"names":["useAriaAnnouncer","useEffect","jsx","Fragment"],"mappings":";;;;;;AAWO,MAAM,eAAiD,CAAC;AAAA,EAC7D;AACF,CAAM,KAAA;AACJ,EAAM,MAAA,EAAE,QAAS,EAAA,GAAIA,iCAAiB,EAAA;AAEtC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAc,EAAA;AAChB,MAAA,QAAA,CAAS,YAAY,CAAA;AAAA;AACvB,GACC,EAAA,CAAC,QAAU,EAAA,YAAY,CAAC,CAAA;AAG3B,EAAA,uBAASC,cAAA,CAAAC,mBAAA,EAAA,EAAA,CAAA;AACX;;;;"}
|
|
@@ -50,6 +50,10 @@ const Avatar = React.forwardRef(function Avatar2({
|
|
|
50
50
|
children = childrenProp;
|
|
51
51
|
}
|
|
52
52
|
const avatarInitials = nameToInitials(name);
|
|
53
|
+
const ariaProps = name ? {
|
|
54
|
+
role: "img",
|
|
55
|
+
"aria-label": name
|
|
56
|
+
} : {};
|
|
53
57
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
54
58
|
"div",
|
|
55
59
|
{
|
|
@@ -63,8 +67,7 @@ const Avatar = React.forwardRef(function Avatar2({
|
|
|
63
67
|
},
|
|
64
68
|
className
|
|
65
69
|
),
|
|
66
|
-
|
|
67
|
-
"aria-label": name,
|
|
70
|
+
...ariaProps,
|
|
68
71
|
...rest,
|
|
69
72
|
children: children || avatarInitials || fallbackIcon
|
|
70
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.js","sources":["../src/avatar/Avatar.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { useIcon } from \"../semantic-icon-provider\";\nimport { makePrefixer } from \"../utils\";\nimport avatarCss from \"./Avatar.css\";\nimport { useAvatarImage } from \"./useAvatarImage\";\n\nexport type NameToInitials = (name?: string) => string;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The name that Avatar represents.\n */\n name?: string;\n /**\n * Defines the function that gets initials. Default is capital first letter of each separate word in name.\n * If a function is not passed or returns undefined, Avatar will default to Icon.\n */\n nameToInitials?: NameToInitials;\n /**\n * Image src of Avatar.\n */\n src?: string;\n /**\n * Multiplier for the base avatar.\n */\n size?: number;\n /**\n * Icon to be used as a default item. Defaults to `UserIcon`.\n */\n fallbackIcon?: ReactNode;\n /**\n * Changes Avatar's color.\n */\n color?:\n | \"accent\"\n | \"category-1\"\n | \"category-2\"\n | \"category-3\"\n | \"category-4\"\n | \"category-5\"\n | \"category-6\"\n | \"category-7\"\n | \"category-8\"\n | \"category-9\"\n | \"category-10\"\n | \"category-11\"\n | \"category-12\"\n | \"category-13\"\n | \"category-14\"\n | \"category-15\"\n | \"category-16\"\n | \"category-17\"\n | \"category-18\"\n | \"category-19\"\n | \"category-20\";\n}\n\nconst withBaseName = makePrefixer(\"saltAvatar\");\nconst DEFAULT_AVATAR_SIZE = 2; // medium\n\nconst defaultNameToInitials = (name?: string) =>\n name\n ?.split(\" \")\n .slice(0, 2)\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase();\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n className,\n children: childrenProp,\n color = \"accent\",\n name,\n nameToInitials = defaultNameToInitials,\n src,\n size = DEFAULT_AVATAR_SIZE,\n style: styleProp,\n fallbackIcon: fallbackIconProp,\n ...rest\n },\n ref,\n) {\n const targetWindow = useWindow();\n const { UserIcon } = useIcon();\n\n const fallbackIcon =\n fallbackIconProp === undefined ? (\n <UserIcon aria-hidden />\n ) : (\n fallbackIconProp\n );\n\n useComponentCssInjection({\n testId: \"salt-avatar\",\n css: avatarCss,\n window: targetWindow,\n });\n\n let children: ReactNode;\n\n const style = {\n ...styleProp,\n \"--saltAvatar-size-multiplier\": `${size}`,\n };\n\n const status = useAvatarImage({ src });\n const hasImgNotFailing = status === \"loaded\";\n if (hasImgNotFailing) {\n children = <img alt=\"\" src={src} />;\n } else if (childrenProp != null) {\n children = childrenProp;\n }\n\n const avatarInitials = nameToInitials(name);\n\n return (\n <div\n ref={ref}\n style={style}\n className={clsx(\n withBaseName(),\n withBaseName(color),\n {\n [withBaseName(\"withImage\")]: hasImgNotFailing,\n },\n className,\n )}\n
|
|
1
|
+
{"version":3,"file":"Avatar.js","sources":["../src/avatar/Avatar.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { useIcon } from \"../semantic-icon-provider\";\nimport { makePrefixer } from \"../utils\";\nimport avatarCss from \"./Avatar.css\";\nimport { useAvatarImage } from \"./useAvatarImage\";\n\nexport type NameToInitials = (name?: string) => string;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The name that Avatar represents.\n */\n name?: string;\n /**\n * Defines the function that gets initials. Default is capital first letter of each separate word in name.\n * If a function is not passed or returns undefined, Avatar will default to Icon.\n */\n nameToInitials?: NameToInitials;\n /**\n * Image src of Avatar.\n */\n src?: string;\n /**\n * Multiplier for the base avatar.\n */\n size?: number;\n /**\n * Icon to be used as a default item. Defaults to `UserIcon`.\n */\n fallbackIcon?: ReactNode;\n /**\n * Changes Avatar's color.\n */\n color?:\n | \"accent\"\n | \"category-1\"\n | \"category-2\"\n | \"category-3\"\n | \"category-4\"\n | \"category-5\"\n | \"category-6\"\n | \"category-7\"\n | \"category-8\"\n | \"category-9\"\n | \"category-10\"\n | \"category-11\"\n | \"category-12\"\n | \"category-13\"\n | \"category-14\"\n | \"category-15\"\n | \"category-16\"\n | \"category-17\"\n | \"category-18\"\n | \"category-19\"\n | \"category-20\";\n}\n\nconst withBaseName = makePrefixer(\"saltAvatar\");\nconst DEFAULT_AVATAR_SIZE = 2; // medium\n\nconst defaultNameToInitials = (name?: string) =>\n name\n ?.split(\" \")\n .slice(0, 2)\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase();\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n className,\n children: childrenProp,\n color = \"accent\",\n name,\n nameToInitials = defaultNameToInitials,\n src,\n size = DEFAULT_AVATAR_SIZE,\n style: styleProp,\n fallbackIcon: fallbackIconProp,\n ...rest\n },\n ref,\n) {\n const targetWindow = useWindow();\n const { UserIcon } = useIcon();\n\n const fallbackIcon =\n fallbackIconProp === undefined ? (\n <UserIcon aria-hidden />\n ) : (\n fallbackIconProp\n );\n\n useComponentCssInjection({\n testId: \"salt-avatar\",\n css: avatarCss,\n window: targetWindow,\n });\n\n let children: ReactNode;\n\n const style = {\n ...styleProp,\n \"--saltAvatar-size-multiplier\": `${size}`,\n };\n\n const status = useAvatarImage({ src });\n const hasImgNotFailing = status === \"loaded\";\n if (hasImgNotFailing) {\n children = <img alt=\"\" src={src} />;\n } else if (childrenProp != null) {\n children = childrenProp;\n }\n\n const avatarInitials = nameToInitials(name);\n\n const ariaProps = name\n ? {\n role: \"img\",\n \"aria-label\": name,\n }\n : {};\n\n return (\n <div\n ref={ref}\n style={style}\n className={clsx(\n withBaseName(),\n withBaseName(color),\n {\n [withBaseName(\"withImage\")]: hasImgNotFailing,\n },\n className,\n )}\n {...ariaProps}\n {...rest}\n >\n {children || avatarInitials || fallbackIcon}\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","Avatar","useWindow","useIcon","useComponentCssInjection","avatarCss","useAvatarImage","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;;AA4DA,MAAM,YAAA,GAAeA,0BAAa,YAAY,CAAA;AAC9C,MAAM,mBAAsB,GAAA,CAAA;AAE5B,MAAM,wBAAwB,CAAC,IAAA,KAC7B,IACI,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,KAAA,CAAM,KACP,KAAM,CAAA,CAAA,EAAG,CACT,CAAA,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAA,CAAA,CACd,KAAK,EACL,CAAA,CAAA,WAAA,EAAA;AAEQ,MAAA,MAAA,GAASC,gBAAwC,CAAA,SAASC,OACrE,CAAA;AAAA,EACE,SAAA;AAAA,EACA,QAAU,EAAA,YAAA;AAAA,EACV,KAAQ,GAAA,QAAA;AAAA,EACR,IAAA;AAAA,EACA,cAAiB,GAAA,qBAAA;AAAA,EACjB,GAAA;AAAA,EACA,IAAO,GAAA,mBAAA;AAAA,EACP,KAAO,EAAA,SAAA;AAAA,EACP,YAAc,EAAA,gBAAA;AAAA,EACd,GAAG;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAM,MAAA,EAAE,QAAS,EAAA,GAAIC,4BAAQ,EAAA;AAE7B,EAAA,MAAM,eACJ,gBAAqB,KAAA,MAAA,kCAClB,QAAS,EAAA,EAAA,aAAA,EAAW,MAAC,CAEtB,GAAA,gBAAA;AAGJ,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,aAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAI,IAAA,QAAA;AAEJ,EAAA,MAAM,KAAQ,GAAA;AAAA,IACZ,GAAG,SAAA;AAAA,IACH,8BAAA,EAAgC,GAAG,IAAI,CAAA;AAAA,GACzC;AAEA,EAAA,MAAM,MAAS,GAAAC,6BAAA,CAAe,EAAE,GAAA,EAAK,CAAA;AACrC,EAAA,MAAM,mBAAmB,MAAW,KAAA,QAAA;AACpC,EAAA,IAAI,gBAAkB,EAAA;AACpB,IAAA,QAAA,mBAAYC,cAAA,CAAA,KAAA,EAAA,EAAI,GAAI,EAAA,EAAA,EAAG,GAAU,EAAA,CAAA;AAAA,GACnC,MAAA,IAAW,gBAAgB,IAAM,EAAA;AAC/B,IAAW,QAAA,GAAA,YAAA;AAAA;AAGb,EAAM,MAAA,cAAA,GAAiB,eAAe,IAAI,CAAA;AAE1C,EAAA,MAAM,YAAY,IACd,GAAA;AAAA,IACE,IAAM,EAAA,KAAA;AAAA,IACN,YAAc,EAAA;AAAA,MAEhB,EAAC;AAEL,EACE,uBAAAA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAW,EAAAC,SAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb,aAAa,KAAK,CAAA;AAAA,QAClB;AAAA,UACE,CAAC,YAAA,CAAa,WAAW,CAAC,GAAG;AAAA,SAC/B;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,SAAA;AAAA,MACH,GAAG,IAAA;AAAA,MAEH,sBAAY,cAAkB,IAAA;AAAA;AAAA,GACjC;AAEJ,CAAC;;;;"}
|
|
@@ -13,14 +13,17 @@ function BreakpointProvider(props) {
|
|
|
13
13
|
return /* @__PURE__ */ jsxRuntime.jsx(Context.Provider, { value: { matchedBreakpoints }, children });
|
|
14
14
|
}
|
|
15
15
|
function useMatchedBreakpoints(breakpoints) {
|
|
16
|
-
const entries =
|
|
17
|
-
|
|
16
|
+
const entries = React.useMemo(
|
|
17
|
+
() => Object.entries(breakpoints).sort(([, a], [, b]) => b - a),
|
|
18
|
+
[breakpoints]
|
|
19
|
+
);
|
|
18
20
|
const supportsMatchMedia = typeof window !== "undefined" && typeof window.matchMedia === "function";
|
|
19
21
|
const [matchedBreakpoints, setMatchedBreakpoints] = React.useState(Object.fromEntries(entries.map(([bp]) => [bp, false])));
|
|
20
22
|
useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
|
|
21
23
|
if (!supportsMatchMedia) {
|
|
22
24
|
return;
|
|
23
25
|
}
|
|
26
|
+
const queries = entries.map(([, value]) => `(min-width: ${value}px)`);
|
|
24
27
|
const matchers = queries.map((query, index) => {
|
|
25
28
|
const mq = window.matchMedia(query);
|
|
26
29
|
const bp = entries[index][0];
|
|
@@ -36,16 +39,16 @@ function useMatchedBreakpoints(breakpoints) {
|
|
|
36
39
|
}
|
|
37
40
|
};
|
|
38
41
|
});
|
|
39
|
-
|
|
42
|
+
for (const { mq, handler } of matchers) {
|
|
40
43
|
handler();
|
|
41
44
|
mq.addEventListener("change", handler);
|
|
42
|
-
}
|
|
45
|
+
}
|
|
43
46
|
return () => {
|
|
44
|
-
|
|
47
|
+
for (const { mq, handler } of matchers) {
|
|
45
48
|
mq.removeEventListener("change", handler);
|
|
46
|
-
}
|
|
49
|
+
}
|
|
47
50
|
};
|
|
48
|
-
}, [supportsMatchMedia]);
|
|
51
|
+
}, [supportsMatchMedia, entries]);
|
|
49
52
|
return Object.keys(matchedBreakpoints).filter(
|
|
50
53
|
(bp) => matchedBreakpoints[bp]
|
|
51
54
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreakpointProvider.js","sources":["../src/breakpoints/BreakpointProvider.tsx"],"sourcesContent":["import { type ReactNode, useContext, useState } from \"react\";\nimport { createContext } from \"../utils/createContext\";\nimport { useIsomorphicLayoutEffect } from \"../utils/useIsomorphicLayoutEffect\";\nimport type { Breakpoints } from \"./Breakpoints\";\n\ntype Breakpoint = keyof Breakpoints;\n\ninterface BreakpointContext {\n matchedBreakpoints: Breakpoint[];\n}\n\nconst Context = createContext<BreakpointContext>(\"BreakpointContext\", {\n matchedBreakpoints: [],\n});\n\ninterface BreakpointProviderProps {\n children?: ReactNode;\n matchedBreakpoints: Breakpoint[];\n}\n\nexport function BreakpointProvider(props: BreakpointProviderProps) {\n const { children, matchedBreakpoints } = props;\n\n return (\n <Context.Provider value={{ matchedBreakpoints }}>\n {children}\n </Context.Provider>\n );\n}\n\nexport function useMatchedBreakpoints(breakpoints: Breakpoints): Breakpoint[] {\n const entries = Object.entries(breakpoints).sort(([, a], [, b]) => b - a)
|
|
1
|
+
{"version":3,"file":"BreakpointProvider.js","sources":["../src/breakpoints/BreakpointProvider.tsx"],"sourcesContent":["import { type ReactNode, useContext, useMemo, useState } from \"react\";\nimport { createContext } from \"../utils/createContext\";\nimport { useIsomorphicLayoutEffect } from \"../utils/useIsomorphicLayoutEffect\";\nimport type { Breakpoints } from \"./Breakpoints\";\n\ntype Breakpoint = keyof Breakpoints;\n\ninterface BreakpointContext {\n matchedBreakpoints: Breakpoint[];\n}\n\nconst Context = createContext<BreakpointContext>(\"BreakpointContext\", {\n matchedBreakpoints: [],\n});\n\ninterface BreakpointProviderProps {\n children?: ReactNode;\n matchedBreakpoints: Breakpoint[];\n}\n\nexport function BreakpointProvider(props: BreakpointProviderProps) {\n const { children, matchedBreakpoints } = props;\n\n return (\n <Context.Provider value={{ matchedBreakpoints }}>\n {children}\n </Context.Provider>\n );\n}\n\nexport function useMatchedBreakpoints(breakpoints: Breakpoints): Breakpoint[] {\n const entries = useMemo(\n () => Object.entries(breakpoints).sort(([, a], [, b]) => b - a),\n [breakpoints],\n );\n\n const supportsMatchMedia =\n typeof window !== \"undefined\" && typeof window.matchMedia === \"function\";\n\n const [matchedBreakpoints, setMatchedBreakpoints] = useState<\n Partial<Record<Breakpoint, boolean>>\n >(Object.fromEntries(entries.map(([bp]) => [bp as Breakpoint, false])));\n\n useIsomorphicLayoutEffect(() => {\n if (!supportsMatchMedia) {\n return;\n }\n\n const queries = entries.map(([, value]) => `(min-width: ${value}px)`);\n\n const matchers = queries.map((query, index) => {\n const mq = window.matchMedia(query);\n const bp = entries[index][0] as Breakpoint;\n\n return {\n mq,\n handler: () => {\n setMatchedBreakpoints((prev) => {\n return {\n ...prev,\n [bp]: mq.matches,\n };\n });\n },\n };\n });\n\n for (const { mq, handler } of matchers) {\n handler();\n mq.addEventListener(\"change\", handler);\n }\n\n return () => {\n for (const { mq, handler } of matchers) {\n mq.removeEventListener(\"change\", handler);\n }\n };\n }, [supportsMatchMedia, entries]);\n\n return Object.keys(matchedBreakpoints).filter(\n (bp) => matchedBreakpoints[bp as Breakpoint],\n ) as Breakpoint[];\n}\n\nexport function useBreakpoint(): BreakpointContext & {\n breakpoint: Breakpoint | null;\n} {\n const { matchedBreakpoints } = useContext(Context);\n\n return {\n matchedBreakpoints,\n breakpoint: matchedBreakpoints[0] ?? null,\n };\n}\n"],"names":["createContext","jsx","useMemo","useState","useIsomorphicLayoutEffect","useContext"],"mappings":";;;;;;;AAWA,MAAM,OAAA,GAAUA,4BAAiC,mBAAqB,EAAA;AAAA,EACpE,oBAAoB;AACtB,CAAC,CAAA;AAOM,SAAS,mBAAmB,KAAgC,EAAA;AACjE,EAAM,MAAA,EAAE,QAAU,EAAA,kBAAA,EAAuB,GAAA,KAAA;AAEzC,EACE,uBAAAC,cAAA,CAAC,QAAQ,QAAR,EAAA,EAAiB,OAAO,EAAE,kBAAA,IACxB,QACH,EAAA,CAAA;AAEJ;AAEO,SAAS,sBAAsB,WAAwC,EAAA;AAC5E,EAAA,MAAM,OAAU,GAAAC,aAAA;AAAA,IACd,MAAM,MAAO,CAAA,OAAA,CAAQ,WAAW,CAAA,CAAE,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA,KAAM,IAAI,CAAC,CAAA;AAAA,IAC9D,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,MAAM,qBACJ,OAAO,MAAA,KAAW,WAAe,IAAA,OAAO,OAAO,UAAe,KAAA,UAAA;AAEhE,EAAA,MAAM,CAAC,kBAAoB,EAAA,qBAAqB,IAAIC,cAElD,CAAA,MAAA,CAAO,YAAY,OAAQ,CAAA,GAAA,CAAI,CAAC,CAAC,EAAE,CAAM,KAAA,CAAC,IAAkB,KAAK,CAAC,CAAC,CAAC,CAAA;AAEtE,EAAAC,mDAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,MAAA;AAAA;AAGF,IAAM,MAAA,OAAA,GAAU,OAAQ,CAAA,GAAA,CAAI,CAAC,GAAG,KAAK,CAAA,KAAM,CAAe,YAAA,EAAA,KAAK,CAAK,GAAA,CAAA,CAAA;AAEpE,IAAA,MAAM,QAAW,GAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,OAAO,KAAU,KAAA;AAC7C,MAAM,MAAA,EAAA,GAAK,MAAO,CAAA,UAAA,CAAW,KAAK,CAAA;AAClC,MAAA,MAAM,EAAK,GAAA,OAAA,CAAQ,KAAK,CAAA,CAAE,CAAC,CAAA;AAE3B,MAAO,OAAA;AAAA,QACL,EAAA;AAAA,QACA,SAAS,MAAM;AACb,UAAA,qBAAA,CAAsB,CAAC,IAAS,KAAA;AAC9B,YAAO,OAAA;AAAA,cACL,GAAG,IAAA;AAAA,cACH,CAAC,EAAE,GAAG,EAAG,CAAA;AAAA,aACX;AAAA,WACD,CAAA;AAAA;AACH,OACF;AAAA,KACD,CAAA;AAED,IAAA,KAAA,MAAW,EAAE,EAAA,EAAI,OAAQ,EAAA,IAAK,QAAU,EAAA;AACtC,MAAQ,OAAA,EAAA;AACR,MAAG,EAAA,CAAA,gBAAA,CAAiB,UAAU,OAAO,CAAA;AAAA;AAGvC,IAAA,OAAO,MAAM;AACX,MAAA,KAAA,MAAW,EAAE,EAAA,EAAI,OAAQ,EAAA,IAAK,QAAU,EAAA;AACtC,QAAG,EAAA,CAAA,mBAAA,CAAoB,UAAU,OAAO,CAAA;AAAA;AAC1C,KACF;AAAA,GACC,EAAA,CAAC,kBAAoB,EAAA,OAAO,CAAC,CAAA;AAEhC,EAAO,OAAA,MAAA,CAAO,IAAK,CAAA,kBAAkB,CAAE,CAAA,MAAA;AAAA,IACrC,CAAC,EAAO,KAAA,kBAAA,CAAmB,EAAgB;AAAA,GAC7C;AACF;AAEO,SAAS,aAEd,GAAA;AACA,EAAA,MAAM,EAAE,kBAAA,EAAuB,GAAAC,gBAAA,CAAW,OAAO,CAAA;AAEjD,EAAO,OAAA;AAAA,IACL,kBAAA;AAAA,IACA,UAAA,EAAY,kBAAmB,CAAA,CAAC,CAAK,IAAA;AAAA,GACvC;AACF;;;;;;"}
|
|
@@ -11,7 +11,7 @@ const useButton = ({
|
|
|
11
11
|
onClick,
|
|
12
12
|
onBlur
|
|
13
13
|
}) => {
|
|
14
|
-
const [keyIsDown,
|
|
14
|
+
const [keyIsDown, setKeyIsDown] = React.useState("");
|
|
15
15
|
const [active, setActive] = React.useState(false);
|
|
16
16
|
const enter = "Enter";
|
|
17
17
|
const space = " ";
|
|
@@ -26,7 +26,7 @@ const useButton = ({
|
|
|
26
26
|
};
|
|
27
27
|
}, [active, keyIsDown]);
|
|
28
28
|
const handleKeyUp = (event) => {
|
|
29
|
-
|
|
29
|
+
setKeyIsDown("");
|
|
30
30
|
setActive(false);
|
|
31
31
|
onKeyUp == null ? void 0 : onKeyUp(event);
|
|
32
32
|
};
|
|
@@ -40,7 +40,7 @@ const useButton = ({
|
|
|
40
40
|
};
|
|
41
41
|
const handleKeyDown = (event) => {
|
|
42
42
|
if (event.key === enter || event.key === space) {
|
|
43
|
-
|
|
43
|
+
setKeyIsDown(event.key);
|
|
44
44
|
setActive(true);
|
|
45
45
|
}
|
|
46
46
|
onKeyDown == null ? void 0 : onKeyDown(event);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useButton.js","sources":["../src/button/useButton.ts"],"sourcesContent":["import {\n type FocusEvent,\n type KeyboardEvent,\n type MouseEvent,\n useEffect,\n useState,\n} from \"react\";\n\nexport interface ButtonHookProps<T extends Element> {\n loading?: boolean;\n disabled?: boolean;\n focusableWhenDisabled?: boolean;\n onKeyUp?: (event: KeyboardEvent<T>) => void;\n onKeyDown?: (event: KeyboardEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onBlur?: (event: FocusEvent<T>) => void;\n}\n\nexport interface ButtonHookResult<T extends Element> {\n active: boolean;\n buttonProps: {\n \"aria-disabled\"?: boolean;\n \"data-loading\"?: boolean;\n disabled?: boolean;\n tabIndex: number;\n onBlur: (event: FocusEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onKeyDown: (event: KeyboardEvent<T>) => void;\n onKeyUp: (event: KeyboardEvent<T>) => void;\n };\n}\n\nexport const useButton = <T extends Element>({\n loading,\n disabled,\n focusableWhenDisabled,\n onKeyUp,\n onKeyDown,\n onClick,\n onBlur,\n}: ButtonHookProps<T>): ButtonHookResult<T> => {\n const [keyIsDown,
|
|
1
|
+
{"version":3,"file":"useButton.js","sources":["../src/button/useButton.ts"],"sourcesContent":["import {\n type FocusEvent,\n type KeyboardEvent,\n type MouseEvent,\n useEffect,\n useState,\n} from \"react\";\n\nexport interface ButtonHookProps<T extends Element> {\n loading?: boolean;\n disabled?: boolean;\n focusableWhenDisabled?: boolean;\n onKeyUp?: (event: KeyboardEvent<T>) => void;\n onKeyDown?: (event: KeyboardEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onBlur?: (event: FocusEvent<T>) => void;\n}\n\nexport interface ButtonHookResult<T extends Element> {\n active: boolean;\n buttonProps: {\n \"aria-disabled\"?: boolean;\n \"data-loading\"?: boolean;\n disabled?: boolean;\n tabIndex: number;\n onBlur: (event: FocusEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onKeyDown: (event: KeyboardEvent<T>) => void;\n onKeyUp: (event: KeyboardEvent<T>) => void;\n };\n}\n\nexport const useButton = <T extends Element>({\n loading,\n disabled,\n focusableWhenDisabled,\n onKeyUp,\n onKeyDown,\n onClick,\n onBlur,\n}: ButtonHookProps<T>): ButtonHookResult<T> => {\n const [keyIsDown, setKeyIsDown] = useState(\"\");\n const [active, setActive] = useState(false);\n\n const enter = \"Enter\";\n const space = \" \";\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: active is needed to remove the active styling on mouse up\n useEffect(() => {\n const t = setTimeout(() => {\n // This key state check is to stop continual visual state change when using Enter Key, which the browser treats as both key and click events on a Button\n // This key state check also fixes Firefox Button where Space key is pressed but button fails to be in active state\n if (keyIsDown !== enter && keyIsDown !== space) {\n setActive(false);\n }\n }, 0);\n\n return () => {\n clearTimeout(t);\n };\n }, [active, keyIsDown]);\n\n const handleKeyUp = (event: KeyboardEvent<T>) => {\n setKeyIsDown(\"\");\n setActive(false);\n onKeyUp?.(event);\n };\n\n const handleClick = (event: MouseEvent<T>) => {\n setActive(true);\n onClick?.(event);\n };\n\n const handleBlur = (event: FocusEvent<T>) => {\n setActive(false);\n onBlur?.(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<T>) => {\n if (event.key === enter || event.key === space) {\n setKeyIsDown(event.key);\n setActive(true);\n }\n\n onKeyDown?.(event);\n };\n\n const buttonProps = {\n \"aria-disabled\": disabled && focusableWhenDisabled ? true : undefined,\n \"data-loading\": loading,\n disabled: disabled && !focusableWhenDisabled,\n tabIndex: disabled && !focusableWhenDisabled ? -1 : 0,\n onBlur: handleBlur,\n onClick: !loading && !disabled ? handleClick : undefined,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n };\n\n return {\n active,\n buttonProps,\n };\n};\n"],"names":["useState","useEffect"],"mappings":";;;;AAgCO,MAAM,YAAY,CAAoB;AAAA,EAC3C,OAAA;AAAA,EACA,QAAA;AAAA,EACA,qBAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAA+C,KAAA;AAC7C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAS,KAAK,CAAA;AAE1C,EAAA,MAAM,KAAQ,GAAA,OAAA;AACd,EAAA,MAAM,KAAQ,GAAA,GAAA;AAGd,EAAAC,eAAA,CAAU,MAAM;AACd,IAAM,MAAA,CAAA,GAAI,WAAW,MAAM;AAGzB,MAAI,IAAA,SAAA,KAAc,KAAS,IAAA,SAAA,KAAc,KAAO,EAAA;AAC9C,QAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AACjB,OACC,CAAC,CAAA;AAEJ,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,CAAC,CAAA;AAAA,KAChB;AAAA,GACC,EAAA,CAAC,MAAQ,EAAA,SAAS,CAAC,CAAA;AAEtB,EAAM,MAAA,WAAA,GAAc,CAAC,KAA4B,KAAA;AAC/C,IAAA,YAAA,CAAa,EAAE,CAAA;AACf,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AAAA,GACZ;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,KAAyB,KAAA;AAC5C,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AAAA,GACZ;AAEA,EAAM,MAAA,UAAA,GAAa,CAAC,KAAyB,KAAA;AAC3C,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAS,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAA,KAAA,CAAA;AAAA,GACX;AAEA,EAAM,MAAA,aAAA,GAAgB,CAAC,KAA4B,KAAA;AACjD,IAAA,IAAI,KAAM,CAAA,GAAA,KAAQ,KAAS,IAAA,KAAA,CAAM,QAAQ,KAAO,EAAA;AAC9C,MAAA,YAAA,CAAa,MAAM,GAAG,CAAA;AACtB,MAAA,SAAA,CAAU,IAAI,CAAA;AAAA;AAGhB,IAAY,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAA,KAAA,CAAA;AAAA,GACd;AAEA,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB,eAAA,EAAiB,QAAY,IAAA,qBAAA,GAAwB,IAAO,GAAA,MAAA;AAAA,IAC5D,cAAgB,EAAA,OAAA;AAAA,IAChB,QAAA,EAAU,YAAY,CAAC,qBAAA;AAAA,IACvB,QAAU,EAAA,QAAA,IAAY,CAAC,qBAAA,GAAwB,EAAK,GAAA,CAAA;AAAA,IACpD,MAAQ,EAAA,UAAA;AAAA,IACR,OAAS,EAAA,CAAC,OAAW,IAAA,CAAC,WAAW,WAAc,GAAA,MAAA;AAAA,IAC/C,SAAW,EAAA,aAAA;AAAA,IACX,OAAS,EAAA;AAAA,GACX;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = "/* Styles applied to root component */\n.saltCheckbox {\n display: inline-flex;\n gap: var(--salt-spacing-100);\n position: relative;\n cursor: var(--salt-cursor-hover);\n\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n font-family: var(--salt-text-fontFamily);\n font-weight: var(--salt-text-fontWeight);\n}\n\n/* Styles applied to root component if `disabled={true}` */\n.saltCheckbox-disabled {\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-cursor-disabled);\n}\n\n/* Styles applied to root component if `readOnly={true}` */\n.saltCheckbox-readOnly {\n color: var(--salt-content-primary-foreground);\n cursor: var(--salt-cursor-readonly);\n}\n\n.saltCheckbox-input,\n.saltCheckboxIcon {\n margin: calc((var(--salt-text-lineHeight) - var(--salt-size-selectable)) / 2) 0;\n box-sizing: border-box;\n}\n\n/* Styles applied to the icon component if focused */\n.saltCheckbox-input:focus-visible + .saltCheckboxIcon {\n outline-offset: var(--salt-
|
|
3
|
+
var css_248z = "/* Styles applied to root component */\n.saltCheckbox {\n display: inline-flex;\n gap: var(--salt-spacing-100);\n position: relative;\n cursor: var(--salt-cursor-hover);\n\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n font-family: var(--salt-text-fontFamily);\n font-weight: var(--salt-text-fontWeight);\n}\n\n/* Styles applied to root component if `disabled={true}` */\n.saltCheckbox-disabled {\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-cursor-disabled);\n}\n\n/* Styles applied to root component if `readOnly={true}` */\n.saltCheckbox-readOnly {\n color: var(--salt-content-primary-foreground);\n cursor: var(--salt-cursor-readonly);\n}\n\n.saltCheckbox-input,\n.saltCheckboxIcon {\n margin: calc((var(--salt-text-lineHeight) - var(--salt-size-selectable)) / 2) 0;\n box-sizing: border-box;\n}\n\n/* Styles applied to the icon component if focused */\n.saltCheckbox-input:focus-visible + .saltCheckboxIcon {\n outline-offset: var(--salt-spacing-fixed-100);\n outline: var(--saltCheckbox-outline, var(--salt-focused-outline));\n border-color: var(--salt-selectable-borderColor-hover);\n color: var(--salt-selectable-foreground-hover);\n clip-path: unset;\n}\n\n.saltCheckbox-input:focus-visible + .saltCheckboxIcon-checked {\n border-color: var(--salt-selectable-borderColor-selected);\n color: var(--salt-selectable-foreground-selected);\n}\n\n.saltCheckbox-error .saltCheckbox-input:focus-visible + .saltCheckboxIcon {\n outline-color: var(--salt-status-error-foreground-decorative);\n border-color: var(--salt-status-error-borderColor);\n color: var(--salt-status-error-foreground-decorative);\n}\n\n.saltCheckbox-warning .saltCheckbox-input:focus-visible + .saltCheckboxIcon {\n outline-color: var(--salt-status-warning-foreground-decorative);\n border-color: var(--salt-status-warning-borderColor);\n color: var(--salt-status-warning-foreground-decorative);\n}\n\n/* Styles applied to input element */\n.saltCheckbox-input {\n cursor: inherit;\n opacity: 0;\n padding: 0;\n position: absolute;\n z-index: var(--salt-zIndex-default);\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=Checkbox.css.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".saltCheckboxIcon {\n --checkbox-size: var(--salt-size-selectable);\n width: var(--checkbox-size);\n min-width: var(--checkbox-size);\n height: var(--checkbox-size);\n min-height: var(--checkbox-size);\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor);\n border-radius: var(--salt-palette-corner-weaker, 0);\n color: var(--salt-selectable-foreground);\n background: var(--salt-container-primary-background);\n position: relative;\n --saltIcon-size: 100%;\n display: flex;\n /* Using overflow:hidden here causes a thin white line */\n clip-path: border-box;\n box-sizing: border-box;\n}\n\n.saltCheckboxIcon-checked,\n.saltCheckbox:hover .saltCheckboxIcon-checked {\n border-color: var(--salt-selectable-borderColor-selected);\n color: var(--salt-selectable-foreground-selected);\n}\n\n.saltCheckbox:hover .saltCheckboxIcon,\n.saltCheckbox:hover .saltCheckboxIcon-indeterminate {\n border-color: var(--salt-selectable-borderColor-hover);\n color: var(--salt-selectable-foreground-hover);\n}\n\n.saltCheckboxIcon-checked.saltCheckboxIcon-indeterminate {\n border-color: var(--salt-selectable-borderColor);\n color: var(--salt-selectable-foreground);\n}\n\n.saltCheckboxIcon-disabled,\n.saltCheckbox:hover .saltCheckboxIcon-disabled,\n.saltCheckboxIcon-disabled.saltCheckboxIcon-indeterminate,\n.saltCheckbox:hover .saltCheckboxIcon-disabled.saltCheckboxIcon-indeterminate {\n border-color: var(--salt-selectable-borderColor-disabled);\n background: var(--salt-container-primary-background-disabled);\n color: var(--salt-selectable-foreground-disabled);\n}\n\n.saltCheckboxIcon-checked.saltCheckboxIcon-disabled,\n.saltCheckbox:hover .saltCheckboxIcon-checked.saltCheckboxIcon-disabled {\n border-color: var(--salt-selectable-borderColor-selectedDisabled);\n color: var(--salt-selectable-foreground-selectedDisabled);\n}\n\n.saltCheckboxIcon-indeterminate::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n width: calc(var(--checkbox-size) - 6px);\n height: 2px;\n background: currentColor;\n transform: translate(-50%, -50%);\n}\n\n.saltCheckboxIcon-error,\n.saltCheckbox:hover .saltCheckboxIcon-error {\n color: var(--salt-status-error-foreground-decorative);\n border-color: var(--salt-status-error-borderColor);\n outline-color: var(--salt-status-error-foreground-decorative);\n}\n\n.saltCheckboxIcon-warning,\n.saltCheckbox:hover .saltCheckboxIcon-warning {\n color: var(--salt-status-warning-foreground-decorative);\n border-color: var(--salt-status-warning-borderColor);\n outline-color: var(--salt-status-warning-foreground-decorative);\n}\n\n.saltCheckboxIcon-readOnly,\n.saltCheckbox:hover .saltCheckboxIcon-readOnly {\n border-color: var(--salt-selectable-borderColor-readonly);\n color: var(--salt-content-primary-foreground);\n}\n\n.saltCheckboxIcon > svg {\n position: absolute;\n /* Ensure a gap doesn't appear when device scaling is used */\n transform: scale(1.01);\n}\n";
|
|
3
|
+
var css_248z = ".saltCheckboxIcon {\n --checkbox-size: var(--salt-size-selectable);\n width: var(--checkbox-size);\n min-width: var(--checkbox-size);\n height: var(--checkbox-size);\n min-height: var(--checkbox-size);\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor);\n border-radius: var(--salt-palette-corner-weaker, 0);\n color: var(--salt-selectable-foreground);\n background: var(--salt-container-primary-background);\n position: relative;\n --saltIcon-size: 100%;\n display: flex;\n /* Using overflow:hidden here causes a thin white line */\n clip-path: border-box;\n box-sizing: border-box;\n}\n\n.saltCheckboxIcon-checked,\n.saltCheckbox:hover .saltCheckboxIcon-checked {\n border-color: var(--salt-selectable-borderColor-selected);\n color: var(--salt-selectable-foreground-selected);\n}\n\n.saltCheckbox:hover .saltCheckboxIcon,\n.saltCheckbox:hover .saltCheckboxIcon-indeterminate {\n border-color: var(--salt-selectable-borderColor-hover);\n color: var(--salt-selectable-foreground-hover);\n}\n\n.saltCheckboxIcon-checked.saltCheckboxIcon-indeterminate {\n border-color: var(--salt-selectable-borderColor);\n color: var(--salt-selectable-foreground);\n}\n\n.saltCheckboxIcon-disabled,\n.saltCheckbox:hover .saltCheckboxIcon-disabled,\n.saltCheckboxIcon-disabled.saltCheckboxIcon-indeterminate,\n.saltCheckbox:hover .saltCheckboxIcon-disabled.saltCheckboxIcon-indeterminate {\n border-color: var(--salt-selectable-borderColor-disabled);\n background: var(--salt-container-primary-background-disabled);\n color: var(--salt-selectable-foreground-disabled);\n}\n\n.saltCheckboxIcon-checked.saltCheckboxIcon-disabled,\n.saltCheckbox:hover .saltCheckboxIcon-checked.saltCheckboxIcon-disabled {\n border-color: var(--salt-selectable-borderColor-selectedDisabled);\n color: var(--salt-selectable-foreground-selectedDisabled);\n}\n\n.saltCheckboxIcon-indeterminate::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n width: calc(var(--checkbox-size) - 6px);\n height: 2px;\n background: currentColor;\n transform: translate(-50%, -50%);\n}\n\n.saltCheckboxIcon-error,\n.saltCheckbox:hover .saltCheckboxIcon-error {\n color: var(--salt-status-error-foreground-decorative);\n border-color: var(--salt-status-error-borderColor);\n outline-color: var(--salt-status-error-foreground-decorative);\n}\n\n.saltCheckboxIcon-warning,\n.saltCheckbox:hover .saltCheckboxIcon-warning {\n color: var(--salt-status-warning-foreground-decorative);\n border-color: var(--salt-status-warning-borderColor);\n outline-color: var(--salt-status-warning-foreground-decorative);\n}\n\n.saltCheckboxIcon-readOnly,\n.saltCheckbox:hover .saltCheckboxIcon-readOnly,\n.saltCheckbox-input:focus-visible + .saltCheckboxIcon-readOnly {\n border-color: var(--salt-selectable-borderColor-readonly);\n border-style: var(--salt-borderStyle-dashed);\n color: var(--salt-content-primary-foreground);\n}\n\n.saltCheckboxIcon > svg {\n position: absolute;\n /* Ensure a gap doesn't appear when device scaling is used */\n transform: scale(1.01);\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=CheckboxIcon.css.js.map
|
|
@@ -70,7 +70,7 @@ const Dialog = React.forwardRef(
|
|
|
70
70
|
}, 300);
|
|
71
71
|
return () => clearTimeout(animate);
|
|
72
72
|
}
|
|
73
|
-
}, [open, showComponent
|
|
73
|
+
}, [open, showComponent]);
|
|
74
74
|
const contextValue = React.useMemo(() => ({ status, id }), [status, id]);
|
|
75
75
|
return /* @__PURE__ */ jsxRuntime.jsx(DialogContext.DialogContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(ConditionalScrimWrapper, { condition: showComponent && !disableScrim, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
76
76
|
FloatingComponent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","sources":["../src/dialog/Dialog.tsx"],"sourcesContent":["import {\n type FloatingFocusManager,\n useClick,\n useDismiss,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentProps,\n forwardRef,\n type HTMLAttributes,\n type ReactNode,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Scrim } from \"../scrim\";\nimport type { ValidationStatus } from \"../status-indicator\";\nimport {\n makePrefixer,\n useCurrentBreakpoint,\n useFloatingComponent,\n useFloatingUI,\n useForkRef,\n useId,\n} from \"../utils\";\nimport dialogCss from \"./Dialog.css\";\nimport { DialogContext } from \"./DialogContext\";\n\ninterface ConditionalScrimWrapperProps {\n children?: ReactNode;\n condition: boolean;\n}\n\nexport const ConditionalScrimWrapper = ({\n condition,\n children,\n}: ConditionalScrimWrapperProps) => {\n return condition ? <Scrim fixed>{children}</Scrim> : <>{children} </>;\n};\n\nexport interface DialogProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Display or hide the component.\n */\n open?: boolean;\n /**\n * Callback function triggered when open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * The status of the Dialog\n * */\n status?: ValidationStatus;\n /**\n * Which element to initially focus. Can be either a number (tabbable index as specified by the order) or a ref.\n * Default value is 0 (first tabbable element).\n * */\n initialFocus?: ComponentProps<typeof FloatingFocusManager>[\"initialFocus\"];\n /**\n * Size of the Dialog\n * */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Prevent the dialog closing on click away\n * */\n disableDismiss?: boolean;\n /**\n * Prevent Scrim from rendering\n * */\n disableScrim?: boolean;\n /**\n * Optional id prop\n * Used for accessibility purposes to announce the title and subtitle when using a screen reader\n * */\n idProp?: string;\n}\n\nconst withBaseName = makePrefixer(\"saltDialog\");\n\nexport const Dialog = forwardRef<HTMLDivElement, DialogProps>(\n function Dialog(props, ref) {\n const {\n children,\n className,\n open = false,\n onOpenChange,\n status,\n disableDismiss,\n size = \"medium\",\n disableScrim,\n idProp,\n initialFocus,\n ...rest\n } = props;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dialog\",\n css: dialogCss,\n window: targetWindow,\n });\n\n const id = useId(idProp);\n\n const currentBreakpoint = useCurrentBreakpoint();\n\n const [showComponent, setShowComponent] = useState(false);\n\n const { context, floating, elements } = useFloatingUI({\n open: showComponent,\n onOpenChange,\n });\n\n const { getFloatingProps } = useInteractions([\n useClick(context),\n useDismiss(context, { enabled: !disableDismiss }),\n ]);\n\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const floatingRef = useForkRef<HTMLDivElement>(floating, ref);\n\n useEffect(() => {\n if (open && !showComponent) {\n setShowComponent(true);\n }\n\n if (!open && showComponent) {\n const animate = setTimeout(() => {\n setShowComponent(false);\n }, 300); // var(--salt-duration-perceptible)\n return () => clearTimeout(animate);\n }\n }, [open, showComponent
|
|
1
|
+
{"version":3,"file":"Dialog.js","sources":["../src/dialog/Dialog.tsx"],"sourcesContent":["import {\n type FloatingFocusManager,\n useClick,\n useDismiss,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentProps,\n forwardRef,\n type HTMLAttributes,\n type ReactNode,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Scrim } from \"../scrim\";\nimport type { ValidationStatus } from \"../status-indicator\";\nimport {\n makePrefixer,\n useCurrentBreakpoint,\n useFloatingComponent,\n useFloatingUI,\n useForkRef,\n useId,\n} from \"../utils\";\nimport dialogCss from \"./Dialog.css\";\nimport { DialogContext } from \"./DialogContext\";\n\ninterface ConditionalScrimWrapperProps {\n children?: ReactNode;\n condition: boolean;\n}\n\nexport const ConditionalScrimWrapper = ({\n condition,\n children,\n}: ConditionalScrimWrapperProps) => {\n return condition ? <Scrim fixed>{children}</Scrim> : <>{children} </>;\n};\n\nexport interface DialogProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Display or hide the component.\n */\n open?: boolean;\n /**\n * Callback function triggered when open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * The status of the Dialog\n * */\n status?: ValidationStatus;\n /**\n * Which element to initially focus. Can be either a number (tabbable index as specified by the order) or a ref.\n * Default value is 0 (first tabbable element).\n * */\n initialFocus?: ComponentProps<typeof FloatingFocusManager>[\"initialFocus\"];\n /**\n * Size of the Dialog\n * */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Prevent the dialog closing on click away\n * */\n disableDismiss?: boolean;\n /**\n * Prevent Scrim from rendering\n * */\n disableScrim?: boolean;\n /**\n * Optional id prop\n * Used for accessibility purposes to announce the title and subtitle when using a screen reader\n * */\n idProp?: string;\n}\n\nconst withBaseName = makePrefixer(\"saltDialog\");\n\nexport const Dialog = forwardRef<HTMLDivElement, DialogProps>(\n function Dialog(props, ref) {\n const {\n children,\n className,\n open = false,\n onOpenChange,\n status,\n disableDismiss,\n size = \"medium\",\n disableScrim,\n idProp,\n initialFocus,\n ...rest\n } = props;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dialog\",\n css: dialogCss,\n window: targetWindow,\n });\n\n const id = useId(idProp);\n\n const currentBreakpoint = useCurrentBreakpoint();\n\n const [showComponent, setShowComponent] = useState(false);\n\n const { context, floating, elements } = useFloatingUI({\n open: showComponent,\n onOpenChange,\n });\n\n const { getFloatingProps } = useInteractions([\n useClick(context),\n useDismiss(context, { enabled: !disableDismiss }),\n ]);\n\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const floatingRef = useForkRef<HTMLDivElement>(floating, ref);\n\n useEffect(() => {\n if (open && !showComponent) {\n setShowComponent(true);\n }\n\n if (!open && showComponent) {\n const animate = setTimeout(() => {\n setShowComponent(false);\n }, 300); // var(--salt-duration-perceptible)\n return () => clearTimeout(animate);\n }\n }, [open, showComponent]);\n\n const contextValue = useMemo(() => ({ status, id }), [status, id]);\n\n return (\n <DialogContext.Provider value={contextValue}>\n <ConditionalScrimWrapper condition={showComponent && !disableScrim}>\n <FloatingComponent\n open={showComponent}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={id}\n ref={floatingRef}\n width={elements.floating?.offsetWidth}\n height={elements.floating?.offsetHeight}\n lockScroll\n focusManagerProps={{\n context: context,\n initialFocus,\n }}\n className={clsx(\n withBaseName(),\n withBaseName(size, currentBreakpoint),\n {\n [withBaseName(\"enterAnimation\")]: open,\n [withBaseName(\"exitAnimation\")]: !open,\n [withBaseName(status as string)]: status,\n },\n className,\n )}\n onAnimationEnd={() => {\n if (!open && showComponent) {\n setShowComponent(false);\n }\n }}\n {...getFloatingProps()}\n {...rest}\n >\n {children}\n </FloatingComponent>\n </ConditionalScrimWrapper>\n </DialogContext.Provider>\n );\n },\n);\n"],"names":["jsx","Scrim","jsxs","Fragment","makePrefixer","forwardRef","Dialog","useWindow","useComponentCssInjection","dialogCss","useId","useCurrentBreakpoint","useState","useFloatingUI","useInteractions","useClick","useDismiss","useFloatingComponent","useForkRef","useEffect","useMemo","DialogContext","clsx"],"mappings":";;;;;;;;;;;;;;;;;AAoCO,MAAM,0BAA0B,CAAC;AAAA,EACtC,SAAA;AAAA,EACA;AACF,CAAoC,KAAA;AAClC,EAAA,OAAO,4BAAaA,cAAA,CAAAC,WAAA,EAAA,EAAM,OAAK,IAAE,EAAA,QAAA,EAAS,oBAAcC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IAAS;AAAA,GAAC,EAAA,CAAA;AACpE;AAuCA,MAAM,YAAA,GAAeC,0BAAa,YAAY,CAAA;AAEvC,MAAM,MAAS,GAAAC,gBAAA;AAAA,EACpB,SAASC,OAAO,CAAA,KAAA,EAAO,GAAK,EAAA;AAnF9B,IAAA,IAAA,EAAA,EAAA,EAAA;AAoFI,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAO,GAAA,KAAA;AAAA,MACP,YAAA;AAAA,MACA,MAAA;AAAA,MACA,cAAA;AAAA,MACA,IAAO,GAAA,QAAA;AAAA,MACP,YAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,KAAA;AACJ,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,aAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA,EAAA,GAAKC,YAAM,MAAM,CAAA;AAEvB,IAAA,MAAM,oBAAoBC,sCAAqB,EAAA;AAE/C,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIC,eAAS,KAAK,CAAA;AAExD,IAAA,MAAM,EAAE,OAAA,EAAS,QAAU,EAAA,QAAA,KAAaC,2BAAc,CAAA;AAAA,MACpD,IAAM,EAAA,aAAA;AAAA,MACN;AAAA,KACD,CAAA;AAED,IAAM,MAAA,EAAE,gBAAiB,EAAA,GAAIC,qBAAgB,CAAA;AAAA,MAC3CC,eAAS,OAAO,CAAA;AAAA,MAChBC,iBAAW,OAAS,EAAA,EAAE,OAAS,EAAA,CAAC,gBAAgB;AAAA,KACjD,CAAA;AAED,IAAA,MAAM,EAAE,SAAA,EAAW,iBAAkB,EAAA,GAAIC,kCAAqB,EAAA;AAE9D,IAAM,MAAA,WAAA,GAAcC,qBAA2B,CAAA,QAAA,EAAU,GAAG,CAAA;AAE5D,IAAAC,eAAA,CAAU,MAAM;AACd,MAAI,IAAA,IAAA,IAAQ,CAAC,aAAe,EAAA;AAC1B,QAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA;AAGvB,MAAI,IAAA,CAAC,QAAQ,aAAe,EAAA;AAC1B,QAAM,MAAA,OAAA,GAAU,WAAW,MAAM;AAC/B,UAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,WACrB,GAAG,CAAA;AACN,QAAO,OAAA,MAAM,aAAa,OAAO,CAAA;AAAA;AACnC,KACC,EAAA,CAAC,IAAM,EAAA,aAAa,CAAC,CAAA;AAExB,IAAM,MAAA,YAAA,GAAeC,aAAQ,CAAA,OAAO,EAAE,MAAA,EAAQ,IAAO,CAAA,EAAA,CAAC,MAAQ,EAAA,EAAE,CAAC,CAAA;AAEjE,IACE,uBAAApB,cAAA,CAACqB,2BAAc,CAAA,QAAA,EAAd,EAAuB,KAAA,EAAO,YAC7B,EAAA,QAAA,kBAAArB,cAAA,CAAC,uBAAwB,EAAA,EAAA,SAAA,EAAW,aAAiB,IAAA,CAAC,YACpD,EAAA,QAAA,kBAAAA,cAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAM,EAAA,aAAA;AAAA,QACN,IAAK,EAAA,QAAA;AAAA,QACL,YAAW,EAAA,MAAA;AAAA,QACX,iBAAiB,EAAA,EAAA;AAAA,QACjB,GAAK,EAAA,WAAA;AAAA,QACL,KAAA,EAAA,CAAO,EAAS,GAAA,QAAA,CAAA,QAAA,KAAT,IAAmB,GAAA,MAAA,GAAA,EAAA,CAAA,WAAA;AAAA,QAC1B,MAAA,EAAA,CAAQ,EAAS,GAAA,QAAA,CAAA,QAAA,KAAT,IAAmB,GAAA,MAAA,GAAA,EAAA,CAAA,YAAA;AAAA,QAC3B,UAAU,EAAA,IAAA;AAAA,QACV,iBAAmB,EAAA;AAAA,UACjB,OAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,SAAW,EAAAsB,SAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb,YAAA,CAAa,MAAM,iBAAiB,CAAA;AAAA,UACpC;AAAA,YACE,CAAC,YAAA,CAAa,gBAAgB,CAAC,GAAG,IAAA;AAAA,YAClC,CAAC,YAAA,CAAa,eAAe,CAAC,GAAG,CAAC,IAAA;AAAA,YAClC,CAAC,YAAA,CAAa,MAAgB,CAAC,GAAG;AAAA,WACpC;AAAA,UACA;AAAA,SACF;AAAA,QACA,gBAAgB,MAAM;AACpB,UAAI,IAAA,CAAC,QAAQ,aAAe,EAAA;AAC1B,YAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA;AACxB,SACF;AAAA,QACC,GAAG,gBAAiB,EAAA;AAAA,QACpB,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,OAEL,CACF,EAAA,CAAA;AAAA;AAGN;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".saltDialogContent {\n color: var(--salt-content-primary-foreground);\n min-height: var(--salt-text-lineHeight);\n background: var(--salt-container-primary-background);\n\n margin-left: var(--salt-spacing-200);\n margin-right: var(--salt-spacing-300);\n padding-left: var(--salt-spacing-100);\n /* auto is needed for support on Safari, due to webkit bugs with flex */\n flex: 1 1 auto;\n position: relative;\n display: flex;\n}\n\n.saltDialogContent-inner {\n overflow-y: auto;\n border-top: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) transparent;\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) transparent;\n max-height: inherit;\n flex: 1;\n}\n\n.saltDialogContent-overflow {\n padding-right: var(--salt-spacing-100);\n}\n\n.saltDialogContent-scrollTop.saltDialogContent-inner {\n border-top-color: var(--salt-separable-tertiary-borderColor);\n}\n\n.saltDialogContent-scrollBottom.saltDialogContent-inner {\n border-bottom-color: var(--salt-separable-tertiary-borderColor);\n}\n";
|
|
3
|
+
var css_248z = ".saltDialogContent {\n color: var(--salt-content-primary-foreground);\n min-height: var(--salt-text-lineHeight);\n background: var(--salt-container-primary-background);\n\n margin-left: var(--salt-spacing-200);\n margin-right: var(--salt-spacing-300);\n padding-left: var(--salt-spacing-100);\n /* auto is needed for support on Safari, due to webkit bugs with flex */\n flex: 1 1 auto;\n position: relative;\n display: flex;\n box-sizing: border-box;\n}\n\n.saltDialogContent-inner {\n overflow-y: auto;\n border-top: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) transparent;\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) transparent;\n max-height: inherit;\n flex: 1;\n box-sizing: border-box;\n}\n\n.saltDialogContent-overflow {\n padding-right: var(--salt-spacing-100);\n}\n\n.saltDialogContent-scrollTop.saltDialogContent-inner {\n border-top-color: var(--salt-separable-tertiary-borderColor);\n}\n\n.saltDialogContent-scrollBottom.saltDialogContent-inner {\n border-bottom-color: var(--salt-separable-tertiary-borderColor);\n}\n\n@supports selector(:has(*)) {\n .saltDialogContent:has(.saltDialogContent-overflow) {\n min-height: calc(var(--salt-text-lineHeight) * 4);\n }\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=DialogContent.css.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = "/* Styles applied to the root element */\n.saltDialogHeader {\n padding-bottom: var(--salt-spacing-300);\n padding-left: var(--salt-spacing-300);\n padding-right: var(--salt-spacing-300);\n display: flex;\n flex-direction: row;\n gap: var(--salt-spacing-100);\n box-sizing: border-box;\n}\n.saltDialogHeader-header {\n margin: 0;\n}\n\n.saltDialogHeader-container {\n flex-grow: 1;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-50);\n padding-top: calc((var(--salt-size-base) - var(--salt-text-h2-lineHeight)) / 2);\n align-items: flex-start;\n}\n\n.saltDialogHeader-header > .saltText {\n margin: 0;\n}\n\n.saltDialogHeader-actionsContainer {\n align-self: flex-start;\n}\n\n/* Styles applied to the status indicator icon overriding its default size */\n.saltDialogHeader .saltStatusIndicator.saltIcon {\n --icon-size: var(--salt-text-h2-lineHeight);\n padding-top: calc((var(--salt-size-base) - var(--salt-text-h2-lineHeight)) / 2);\n}\n\n/* Styles applied to DialogHeader when accent={true} */\n.saltDialogHeader-withAccent {\n position: relative;\n}\n\n.saltDialogHeader-withAccent::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n bottom: var(--salt-spacing-300);\n width: var(--salt-size-bar);\n background: var(--salt-accent-background);\n}\n";
|
|
3
|
+
var css_248z = "/* Styles applied to the root element */\n.saltDialogHeader {\n padding-bottom: var(--salt-spacing-300);\n padding-left: var(--salt-spacing-300);\n padding-right: var(--salt-spacing-300);\n display: flex;\n flex-direction: row;\n gap: var(--salt-spacing-100);\n box-sizing: border-box;\n}\n.saltDialogHeader-header {\n margin: 0;\n}\n\n.saltDialogHeader-container {\n flex-grow: 1;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-50);\n padding-top: calc((var(--salt-size-base) - var(--salt-text-h2-lineHeight)) / 2);\n align-items: flex-start;\n min-width: 0;\n word-break: break-word;\n}\n\n.saltDialogHeader-header > .saltText {\n margin: 0;\n}\n\n.saltDialogHeader-actionsContainer {\n align-self: flex-start;\n}\n\n/* Styles applied to the status indicator icon overriding its default size */\n.saltDialogHeader .saltStatusIndicator.saltIcon {\n --icon-size: var(--salt-text-h2-lineHeight);\n padding-top: calc((var(--salt-size-base) - var(--salt-text-h2-lineHeight)) / 2);\n}\n\n/* Styles applied to DialogHeader when accent={true} */\n.saltDialogHeader-withAccent {\n position: relative;\n}\n\n.saltDialogHeader-withAccent::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n bottom: var(--salt-spacing-300);\n width: var(--salt-size-bar);\n background: var(--salt-accent-background);\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=DialogHeader.css.js.map
|