@scalewing/react 1.52.0 → 1.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/README.md +14 -1
- package/dist/components/Box.d.ts +26 -0
- package/dist/components/Box.js +6 -2
- package/dist/components/Checkbox.d.ts +18 -1
- package/dist/components/Checkbox.js +15 -5
- package/dist/components/Dialog.d.ts +14 -1
- package/dist/components/Dialog.js +5 -2
- package/dist/components/PasteRows.d.ts +55 -0
- package/dist/components/PasteRows.js +55 -0
- package/dist/components/Stepper.d.ts +2 -66
- package/dist/components/Stepper.js +18 -5
- package/dist/components/Table.d.ts +1 -0
- package/dist/components/Table.js +1 -0
- package/dist/components/box/external-link.d.ts +20 -0
- package/dist/components/box/external-link.js +37 -0
- package/dist/components/checkbox/CheckboxControl.d.ts +1 -1
- package/dist/components/checkbox/CheckboxControl.js +4 -3
- package/dist/components/dialog/validate.d.ts +3 -1
- package/dist/components/dialog/validate.js +3 -1
- package/dist/components/paste-rows/parse-pasted-rows.d.ts +26 -0
- package/dist/components/paste-rows/parse-pasted-rows.js +123 -0
- package/dist/components/stepper/stepper-props.d.ts +78 -0
- package/dist/components/stepper/stepper-props.js +1 -0
- package/dist/components/stepper/use-stepper-commit.d.ts +22 -0
- package/dist/components/stepper/use-stepper-commit.js +66 -0
- package/dist/components/table/TableSelectCell.d.ts +26 -0
- package/dist/components/table/TableSelectCell.js +19 -0
- package/dist/css/css-box-link.d.ts +3 -0
- package/dist/css/css-box-link.js +41 -2
- package/dist/css/css-checkbox.js +37 -3
- package/dist/css/css-components.js +3 -0
- package/dist/css/css-dialog-end.d.ts +13 -0
- package/dist/css/css-dialog-end.js +75 -0
- package/dist/css/css-select.js +10 -0
- package/dist/css/css-table-select.d.ts +3 -0
- package/dist/css/css-table-select.js +24 -0
- package/dist/css/css-table.js +4 -0
- package/dist/css/stylesheet.js +2 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -2
- package/dist/styles.css +128 -3
- package/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Breakpoint } from './breakpoints.js';
|
|
2
|
+
/**
|
|
3
|
+
* Where a Dialog sits from the layout breakpoint up: `center` (the
|
|
4
|
+
* default) in the middle of the window, `end` as a side panel docked to
|
|
5
|
+
* the inline end (the right, the left in right-to-left).
|
|
6
|
+
*/
|
|
7
|
+
export declare const dialogPlacements: readonly ["center", "end"];
|
|
8
|
+
export type DialogPlacement = (typeof dialogPlacements)[number];
|
|
9
|
+
export declare const dialogEndClass = "sw-dialog-end";
|
|
10
|
+
/** The side panel takes its place from this breakpoint up. */
|
|
11
|
+
export declare const dialogEndFrom: Breakpoint;
|
|
12
|
+
export declare function cssDialogEndClasses(): string;
|
|
13
|
+
export declare function dialogEndClassCatalog(): string[];
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { breakpointQuery } from './breakpoints.js';
|
|
2
|
+
/**
|
|
3
|
+
* Where a Dialog sits from the layout breakpoint up: `center` (the
|
|
4
|
+
* default) in the middle of the window, `end` as a side panel docked to
|
|
5
|
+
* the inline end (the right, the left in right-to-left).
|
|
6
|
+
*/
|
|
7
|
+
export const dialogPlacements = ['center', 'end'];
|
|
8
|
+
export const dialogEndClass = 'sw-dialog-end';
|
|
9
|
+
/** The side panel takes its place from this breakpoint up. */
|
|
10
|
+
export const dialogEndFrom = 'md';
|
|
11
|
+
const end = `.${dialogEndClass}`;
|
|
12
|
+
/*
|
|
13
|
+
* From md up, `placement="end"` is a side panel: the window's full height
|
|
14
|
+
* at the inline end, square corners, one hairline on its inline-start
|
|
15
|
+
* edge, the size's width (md 32rem, lg 56rem, xl 65rem) with a space-8
|
|
16
|
+
* strip of backdrop always in view. Its column grows to the full height so
|
|
17
|
+
* the pinned footer sits on the bottom edge even when the content is short;
|
|
18
|
+
* longer content scrolls inside the panel under the sticky footer, as in
|
|
19
|
+
* the centred dialog. It slides in from its edge unless reduced motion is
|
|
20
|
+
* asked for. Below md the class draws nothing: the dialog is centred, or a
|
|
21
|
+
* bottom sheet with `sheetBelow`. Emitted after the banded and grabber
|
|
22
|
+
* rules so its edges win at equal specificity.
|
|
23
|
+
*/
|
|
24
|
+
export function cssDialogEndClasses() {
|
|
25
|
+
return `@media ${breakpointQuery('from', dialogEndFrom)} {
|
|
26
|
+
${end} {
|
|
27
|
+
border-color: var(--sw-color-border);
|
|
28
|
+
border-radius: 0;
|
|
29
|
+
border-width: 0;
|
|
30
|
+
border-inline-start-width: 1px;
|
|
31
|
+
height: 100%;
|
|
32
|
+
inset-block: 0;
|
|
33
|
+
margin: 0;
|
|
34
|
+
margin-inline-start: auto;
|
|
35
|
+
max-height: none;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
${end}[open] {
|
|
39
|
+
animation: sw-dialog-end-in var(--sw-motion-default) var(--sw-motion-easing);
|
|
40
|
+
display: flex;
|
|
41
|
+
flex-direction: column;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
${end}[open]:dir(rtl) {
|
|
45
|
+
animation-name: sw-dialog-end-in-rtl;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
${end} > .sw-stack {
|
|
49
|
+
flex: 1 0 auto;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
${end} .sw-dialog-footer {
|
|
53
|
+
margin-top: auto;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@keyframes sw-dialog-end-in {
|
|
58
|
+
from { translate: 100% 0; }
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@keyframes sw-dialog-end-in-rtl {
|
|
62
|
+
from { translate: -100% 0; }
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@media (prefers-reduced-motion: reduce) {
|
|
66
|
+
${end}[open] { animation: none; }
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@media (forced-colors: active) {
|
|
70
|
+
${end} { border-inline-start-color: CanvasText; }
|
|
71
|
+
}`;
|
|
72
|
+
}
|
|
73
|
+
export function dialogEndClassCatalog() {
|
|
74
|
+
return [dialogEndClass];
|
|
75
|
+
}
|
package/dist/css/css-select.js
CHANGED
|
@@ -2,6 +2,7 @@ import { typographyVariants } from '@scalewing/tokens';
|
|
|
2
2
|
import { chevronStroke } from './chevron.js';
|
|
3
3
|
import { zIndex } from './stacking.js';
|
|
4
4
|
import { quietFill } from './quiet-fill.js';
|
|
5
|
+
import { coarsePointerQuery, touchTarget } from './touch-target.js';
|
|
5
6
|
const caption = typographyVariants.caption;
|
|
6
7
|
const label = typographyVariants.label;
|
|
7
8
|
export function cssSelectClasses() {
|
|
@@ -186,6 +187,15 @@ export function cssSelectClasses() {
|
|
|
186
187
|
border-top: 1px solid var(--sw-color-border);
|
|
187
188
|
color: var(--sw-color-accent);
|
|
188
189
|
margin-top: var(--sw-space-1);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/* The comfortable touch target on a coarse pointer, at every size: the
|
|
193
|
+
trigger and each option are at least 44 px high (the md control height),
|
|
194
|
+
as every Button is. Type and padding keep the size's; the rule follows
|
|
195
|
+
the size rules, which it outranks only by order. */
|
|
196
|
+
@media ${coarsePointerQuery} {
|
|
197
|
+
.sw-select .sw-select-trigger,
|
|
198
|
+
.sw-select .sw-select-option { min-height: ${touchTarget}; }
|
|
189
199
|
}`;
|
|
190
200
|
}
|
|
191
201
|
export function selectClassCatalog() {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { coarsePointerQuery, touchTarget } from './touch-target.js';
|
|
2
|
+
export const tableSelectCellClass = 'sw-table-select';
|
|
3
|
+
/*
|
|
4
|
+
* TableSelectCell's column: as wide as the checkbox (its padding outside),
|
|
5
|
+
* in an auto or a fixed table alike; the box centred in the cell. On a
|
|
6
|
+
* coarse pointer the column widens to the box's 44 px target
|
|
7
|
+
* (`sw-checkbox-label-hidden`, css-checkbox.ts).
|
|
8
|
+
*/
|
|
9
|
+
export function cssTableSelectClasses() {
|
|
10
|
+
return `.sw-table .${tableSelectCellClass} {
|
|
11
|
+
width: var(--sw-space-5);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.sw-table .${tableSelectCellClass} .sw-checkbox {
|
|
15
|
+
align-items: center;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@media ${coarsePointerQuery} {
|
|
19
|
+
.sw-table .${tableSelectCellClass} { width: ${touchTarget}; }
|
|
20
|
+
}`;
|
|
21
|
+
}
|
|
22
|
+
export function tableSelectClassCatalog() {
|
|
23
|
+
return [tableSelectCellClass];
|
|
24
|
+
}
|
package/dist/css/css-table.js
CHANGED
|
@@ -7,6 +7,7 @@ import { cssTableLedgerClasses, tableLedgerClassCatalog, } from './css-table-led
|
|
|
7
7
|
import { cssTableFooterClasses, tableFooterClassCatalog, } from './css-table-footer.js';
|
|
8
8
|
import { cssTablePagePinClasses, tablePagePinClassCatalog, } from './css-table-page-pin.js';
|
|
9
9
|
import { cssTableTotalRowClasses, tableTotalRowClassCatalog, } from './css-table-total-row.js';
|
|
10
|
+
import { cssTableSelectClasses, tableSelectClassCatalog, } from './css-table-select.js';
|
|
10
11
|
import { cssTablePressClasses, tablePressClassCatalog, } from './css-table-press.js';
|
|
11
12
|
import { cssTableStickyHeaderClasses, tableStickyHeaderClassCatalog, } from './css-table-sticky-header.js';
|
|
12
13
|
import { cssTableSortClasses, tableSortClassCatalog, } from './css-table-sort.js';
|
|
@@ -103,6 +104,8 @@ ${cssTableBoundedClasses()}
|
|
|
103
104
|
|
|
104
105
|
${cssTablePressClasses()}
|
|
105
106
|
|
|
107
|
+
${cssTableSelectClasses()}
|
|
108
|
+
|
|
106
109
|
${selectedRowRules()}`;
|
|
107
110
|
}
|
|
108
111
|
export function tableClassCatalog() {
|
|
@@ -123,5 +126,6 @@ export function tableClassCatalog() {
|
|
|
123
126
|
...tablePagePinClassCatalog(),
|
|
124
127
|
...tableBoundedClassCatalog(),
|
|
125
128
|
...tablePressClassCatalog(),
|
|
129
|
+
...tableSelectClassCatalog(),
|
|
126
130
|
];
|
|
127
131
|
}
|
package/dist/css/stylesheet.js
CHANGED
|
@@ -68,6 +68,7 @@ import { dialogBandedClassCatalog } from './css-dialog-banded.js';
|
|
|
68
68
|
import { dialogFrameClassCatalog } from './css-dialog-frame.js';
|
|
69
69
|
import { dialogCanvasClassCatalog } from './css-dialog-canvas.js';
|
|
70
70
|
import { dialogGrabberClassCatalog } from './css-dialog-grabber.js';
|
|
71
|
+
import { dialogEndClassCatalog } from './css-dialog-end.js';
|
|
71
72
|
import { selectClassCatalog } from './css-select.js';
|
|
72
73
|
import { multiSelectClassCatalog } from './css-multi-select.js';
|
|
73
74
|
import { comboboxClassCatalog } from './css-combobox.js';
|
|
@@ -113,6 +114,7 @@ export function utilityClassCatalog() {
|
|
|
113
114
|
...dialogBandedClassCatalog(),
|
|
114
115
|
...dialogCanvasClassCatalog(),
|
|
115
116
|
...dialogGrabberClassCatalog(),
|
|
117
|
+
...dialogEndClassCatalog(),
|
|
116
118
|
...accordionClassCatalog(),
|
|
117
119
|
...selectClassCatalog(),
|
|
118
120
|
...actionMenuClassCatalog(),
|
package/dist/index.d.ts
CHANGED
|
@@ -15,6 +15,8 @@ export { ListRow, type ListRowProps } from './components/ListRow.js';
|
|
|
15
15
|
export { listGroupVariants, listRowTitleAppearances, listRowTones, listRowValueTones, type ListGroupMaxHeight, type ListGroupVariant, type ListRowTitleAppearance, type ListRowTone, type ListRowValueTone, } from './list-options.js';
|
|
16
16
|
export { listTileColumnCounts, type ListGroupTileColumns, } from './css/css-list-tiles.js';
|
|
17
17
|
export { Checkbox, type CheckboxProps } from './components/Checkbox.js';
|
|
18
|
+
export { PasteRows, type PasteRowsColumn, type PasteRowsProps, } from './components/PasteRows.js';
|
|
19
|
+
export { parsePastedRows, type PastedRows, type PastedRowsDelimiter, pastedRowsDelimiters, } from './components/paste-rows/parse-pasted-rows.js';
|
|
18
20
|
export { Spinner, type SpinnerProps, type SpinnerSize, } from './components/Spinner.js';
|
|
19
21
|
export { Skeleton, skeletonVariants, type SkeletonProps, type SkeletonVariant, } from './components/Skeleton.js';
|
|
20
22
|
export { EmptyState, emptyStateTitleElements, type EmptyStateProps, type EmptyStateTitleElement, } from './components/EmptyState.js';
|
|
@@ -40,7 +42,7 @@ export { Box, type BoxBorder, type BoxElement, type BoxLink, type BoxProps, } fr
|
|
|
40
42
|
export { boxLinkAppearances } from './css/css-box-link.js';
|
|
41
43
|
export { ButtonGroup, buttonGroupAppearances, type ButtonGroupAppearance, type ButtonGroupJustify, type ButtonGroupProps, } from './components/ButtonGroup.js';
|
|
42
44
|
export { Card, type CardProps, type CardVariant } from './components/Card.js';
|
|
43
|
-
export { Dialog, dialogAppearances, dialogSizes, type DialogAppearance, type DialogProps, type DialogRole, type DialogSize, type DialogTitleLevel, } from './components/Dialog.js';
|
|
45
|
+
export { Dialog, dialogAppearances, dialogPlacements, dialogSizes, type DialogAppearance, type DialogPlacement, type DialogProps, type DialogRole, type DialogSize, type DialogTitleLevel, } from './components/Dialog.js';
|
|
44
46
|
export { StatTile, type StatTileAppearance, statTileAppearances, type StatTileEmphasis, type StatTileProps, type StatTileTone, statTileTones, } from './components/StatTile.js';
|
|
45
47
|
export { TabPanel, type TabItem, type TabPanelProps, Tabs, type TabsProps, tabId, tabPanelId, } from './components/Tabs.js';
|
|
46
48
|
export { Toast, toastPlacements, toastTones, type ToastAction, type ToastPlacement, } from './components/Toast.js';
|
|
@@ -69,7 +71,7 @@ export { Select } from './components/Select.js';
|
|
|
69
71
|
export type { SelectAction, SelectOption, SelectProps, SelectWidth, } from './components/Select.js';
|
|
70
72
|
export { MultiSelect, type MultiSelectAlign, type MultiSelectOption, type MultiSelectProps, } from './components/MultiSelect.js';
|
|
71
73
|
export { Stack, type Align, type Justify, type StackProps, } from './components/Stack.js';
|
|
72
|
-
export { Table, TableBody, TableCell, TableFooter, TableHeader, TableRow, tableCellTones, tableRowVariants, type TableBodyProps, type TableCellProps, type TableCellTone, type TableColumnWidth, type TableDensity, type TableFooterProps, type TableHeaderProps, type TableLayout, type TableMaxHeight, type TableProps, type TableRowProps, type TableRowVariant, type TableSort, type TableStickyHeader, type TableVerticalAlign, } from './components/Table.js';
|
|
74
|
+
export { Table, TableBody, TableCell, TableFooter, TableHeader, TableRow, TableSelectCell, tableCellTones, tableRowVariants, type TableBodyProps, type TableCellProps, type TableCellTone, type TableColumnWidth, type TableDensity, type TableFooterProps, type TableHeaderProps, type TableLayout, type TableMaxHeight, type TableProps, type TableRowProps, type TableRowVariant, type TableSelectCellProps, type TableSort, type TableStickyHeader, type TableVerticalAlign, } from './components/Table.js';
|
|
73
75
|
export { Text, type TextAlign, type TextElement, type TextProps, } from './components/Text.js';
|
|
74
76
|
export { ThemeProvider, useTheme, type ThemeProviderProps, } from './theme/ThemeProvider.js';
|
|
75
77
|
export { themeCanvases, type ThemeCanvas } from './css/css-canvas-grouped.js';
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,8 @@ export { ListRow } from './components/ListRow.js';
|
|
|
14
14
|
export { listGroupVariants, listRowTitleAppearances, listRowTones, listRowValueTones, } from './list-options.js';
|
|
15
15
|
export { listTileColumnCounts, } from './css/css-list-tiles.js';
|
|
16
16
|
export { Checkbox } from './components/Checkbox.js';
|
|
17
|
+
export { PasteRows, } from './components/PasteRows.js';
|
|
18
|
+
export { parsePastedRows, pastedRowsDelimiters, } from './components/paste-rows/parse-pasted-rows.js';
|
|
17
19
|
export { Spinner, } from './components/Spinner.js';
|
|
18
20
|
export { Skeleton, skeletonVariants, } from './components/Skeleton.js';
|
|
19
21
|
export { EmptyState, emptyStateTitleElements, } from './components/EmptyState.js';
|
|
@@ -39,7 +41,7 @@ export { Box, } from './components/Box.js';
|
|
|
39
41
|
export { boxLinkAppearances } from './css/css-box-link.js';
|
|
40
42
|
export { ButtonGroup, buttonGroupAppearances, } from './components/ButtonGroup.js';
|
|
41
43
|
export { Card } from './components/Card.js';
|
|
42
|
-
export { Dialog, dialogAppearances, dialogSizes, } from './components/Dialog.js';
|
|
44
|
+
export { Dialog, dialogAppearances, dialogPlacements, dialogSizes, } from './components/Dialog.js';
|
|
43
45
|
export { StatTile, statTileAppearances, statTileTones, } from './components/StatTile.js';
|
|
44
46
|
export { TabPanel, Tabs, tabId, tabPanelId, } from './components/Tabs.js';
|
|
45
47
|
export { Toast, toastPlacements, toastTones, } from './components/Toast.js';
|
|
@@ -65,7 +67,7 @@ export { Combobox, comboboxSizes, } from './components/Combobox.js';
|
|
|
65
67
|
export { Select } from './components/Select.js';
|
|
66
68
|
export { MultiSelect, } from './components/MultiSelect.js';
|
|
67
69
|
export { Stack, } from './components/Stack.js';
|
|
68
|
-
export { Table, TableBody, TableCell, TableFooter, TableHeader, TableRow, tableCellTones, tableRowVariants, } from './components/Table.js';
|
|
70
|
+
export { Table, TableBody, TableCell, TableFooter, TableHeader, TableRow, TableSelectCell, tableCellTones, tableRowVariants, } from './components/Table.js';
|
|
69
71
|
export { Text, } from './components/Text.js';
|
|
70
72
|
export { ThemeProvider, useTheme, } from './theme/ThemeProvider.js';
|
|
71
73
|
export { themeCanvases } from './css/css-canvas-grouped.js';
|
package/dist/styles.css
CHANGED
|
@@ -666,6 +666,30 @@ body {
|
|
|
666
666
|
text-decoration-line: underline;
|
|
667
667
|
}
|
|
668
668
|
|
|
669
|
+
.sw-link-external-mark {
|
|
670
|
+
border-right: 2px solid currentColor;
|
|
671
|
+
border-top: 2px solid currentColor;
|
|
672
|
+
box-sizing: border-box;
|
|
673
|
+
display: inline-block;
|
|
674
|
+
height: var(--sw-space-2);
|
|
675
|
+
margin-inline-start: var(--sw-space-1);
|
|
676
|
+
position: relative;
|
|
677
|
+
vertical-align: middle;
|
|
678
|
+
width: var(--sw-space-2);
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
.sw-link-external-mark::after {
|
|
682
|
+
border-left: 2px solid currentColor;
|
|
683
|
+
content: '';
|
|
684
|
+
height: calc(var(--sw-space-2) * 1.25);
|
|
685
|
+
left: 50%;
|
|
686
|
+
position: absolute;
|
|
687
|
+
top: 50%;
|
|
688
|
+
transform: translate(-50%, -50%) rotate(45deg);
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
.sw-link-external-mark:dir(rtl) { transform: scaleX(-1); }
|
|
692
|
+
|
|
669
693
|
/*
|
|
670
694
|
* A programmatic focus target (tabindex="-1": a notice, a card or a heading
|
|
671
695
|
* that a script focuses after a save) takes the accent ring past the ring
|
|
@@ -1185,6 +1209,38 @@ body {
|
|
|
1185
1209
|
|
|
1186
1210
|
.sw-checkbox-input:checked + .sw-checkbox-mark::after { display: block; }
|
|
1187
1211
|
|
|
1212
|
+
/* The mixed state: the accent fill with a dash in place of the check. */
|
|
1213
|
+
.sw-checkbox-input:indeterminate + .sw-checkbox-mark {
|
|
1214
|
+
background: var(--sw-color-accent);
|
|
1215
|
+
border-color: var(--sw-color-accent);
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
.sw-checkbox-input:indeterminate + .sw-checkbox-mark::after {
|
|
1219
|
+
border-right: 0;
|
|
1220
|
+
display: block;
|
|
1221
|
+
height: 0;
|
|
1222
|
+
inset-block-start: calc(50% - 1px);
|
|
1223
|
+
inset-inline-start: calc(50% - var(--sw-space-3) / 2);
|
|
1224
|
+
transform: none;
|
|
1225
|
+
width: var(--sw-space-3);
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
/* A visually hidden label: the box alone is the target, its own size on a
|
|
1229
|
+
fine pointer (so a compact table row keeps its height), the 44 px touch
|
|
1230
|
+
target both ways on a coarse one. */
|
|
1231
|
+
.sw-checkbox-label-hidden {
|
|
1232
|
+
justify-content: center;
|
|
1233
|
+
min-height: 0;
|
|
1234
|
+
position: relative;
|
|
1235
|
+
}
|
|
1236
|
+
|
|
1237
|
+
@media (pointer: coarse) {
|
|
1238
|
+
.sw-checkbox-label-hidden {
|
|
1239
|
+
min-height: var(--sw-control-md-min-height);
|
|
1240
|
+
min-width: var(--sw-control-md-min-height);
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1188
1244
|
.sw-checkbox-input:focus-visible + .sw-checkbox-mark {
|
|
1189
1245
|
outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
|
|
1190
1246
|
outline-offset: var(--sw-focus-ring-offset);
|
|
@@ -1221,13 +1277,13 @@ body {
|
|
|
1221
1277
|
|
|
1222
1278
|
@media (prefers-reduced-transparency: reduce) {
|
|
1223
1279
|
.sw-checkbox-mark { background: var(--sw-color-surface); }
|
|
1224
|
-
.sw-checkbox-input:checked + .sw-checkbox-mark { background: var(--sw-color-accent); }
|
|
1280
|
+
.sw-checkbox-input:is(:checked, :indeterminate) + .sw-checkbox-mark { background: var(--sw-color-accent); }
|
|
1225
1281
|
}
|
|
1226
1282
|
|
|
1227
1283
|
@media (forced-colors: active) {
|
|
1228
1284
|
.sw-checkbox-mark { background: Canvas; border-color: CanvasText; }
|
|
1229
|
-
.sw-checkbox-input:checked + .sw-checkbox-mark { background: Highlight; border-color: Highlight; }
|
|
1230
|
-
.sw-checkbox-input:checked + .sw-checkbox-mark::after { border-color: HighlightText; }
|
|
1285
|
+
.sw-checkbox-input:is(:checked, :indeterminate) + .sw-checkbox-mark { background: Highlight; border-color: Highlight; }
|
|
1286
|
+
.sw-checkbox-input:is(:checked, :indeterminate) + .sw-checkbox-mark::after { border-color: HighlightText; }
|
|
1231
1287
|
.sw-checkbox-input[aria-invalid='true'] + .sw-checkbox-mark { border-color: CanvasText; }
|
|
1232
1288
|
}
|
|
1233
1289
|
|
|
@@ -2174,6 +2230,18 @@ body {
|
|
|
2174
2230
|
.sw-table-action { color: ButtonText; }
|
|
2175
2231
|
}
|
|
2176
2232
|
|
|
2233
|
+
.sw-table .sw-table-select {
|
|
2234
|
+
width: var(--sw-space-5);
|
|
2235
|
+
}
|
|
2236
|
+
|
|
2237
|
+
.sw-table .sw-table-select .sw-checkbox {
|
|
2238
|
+
align-items: center;
|
|
2239
|
+
}
|
|
2240
|
+
|
|
2241
|
+
@media (pointer: coarse) {
|
|
2242
|
+
.sw-table .sw-table-select { width: var(--sw-control-md-min-height); }
|
|
2243
|
+
}
|
|
2244
|
+
|
|
2177
2245
|
.sw-table-row-selected > :first-child {
|
|
2178
2246
|
position: relative;
|
|
2179
2247
|
}
|
|
@@ -5837,6 +5905,54 @@ html:has(.sw-site-header-sticky) {
|
|
|
5837
5905
|
}
|
|
5838
5906
|
}
|
|
5839
5907
|
|
|
5908
|
+
@media (min-width: 48rem) {
|
|
5909
|
+
.sw-dialog-end {
|
|
5910
|
+
border-color: var(--sw-color-border);
|
|
5911
|
+
border-radius: 0;
|
|
5912
|
+
border-width: 0;
|
|
5913
|
+
border-inline-start-width: 1px;
|
|
5914
|
+
height: 100%;
|
|
5915
|
+
inset-block: 0;
|
|
5916
|
+
margin: 0;
|
|
5917
|
+
margin-inline-start: auto;
|
|
5918
|
+
max-height: none;
|
|
5919
|
+
}
|
|
5920
|
+
|
|
5921
|
+
.sw-dialog-end[open] {
|
|
5922
|
+
animation: sw-dialog-end-in var(--sw-motion-default) var(--sw-motion-easing);
|
|
5923
|
+
display: flex;
|
|
5924
|
+
flex-direction: column;
|
|
5925
|
+
}
|
|
5926
|
+
|
|
5927
|
+
.sw-dialog-end[open]:dir(rtl) {
|
|
5928
|
+
animation-name: sw-dialog-end-in-rtl;
|
|
5929
|
+
}
|
|
5930
|
+
|
|
5931
|
+
.sw-dialog-end > .sw-stack {
|
|
5932
|
+
flex: 1 0 auto;
|
|
5933
|
+
}
|
|
5934
|
+
|
|
5935
|
+
.sw-dialog-end .sw-dialog-footer {
|
|
5936
|
+
margin-top: auto;
|
|
5937
|
+
}
|
|
5938
|
+
}
|
|
5939
|
+
|
|
5940
|
+
@keyframes sw-dialog-end-in {
|
|
5941
|
+
from { translate: 100% 0; }
|
|
5942
|
+
}
|
|
5943
|
+
|
|
5944
|
+
@keyframes sw-dialog-end-in-rtl {
|
|
5945
|
+
from { translate: -100% 0; }
|
|
5946
|
+
}
|
|
5947
|
+
|
|
5948
|
+
@media (prefers-reduced-motion: reduce) {
|
|
5949
|
+
.sw-dialog-end[open] { animation: none; }
|
|
5950
|
+
}
|
|
5951
|
+
|
|
5952
|
+
@media (forced-colors: active) {
|
|
5953
|
+
.sw-dialog-end { border-inline-start-color: CanvasText; }
|
|
5954
|
+
}
|
|
5955
|
+
|
|
5840
5956
|
.sw-accordion {
|
|
5841
5957
|
background: var(--sw-glass-fill);
|
|
5842
5958
|
border: 1px solid var(--sw-glass-border);
|
|
@@ -6091,6 +6207,15 @@ html:has(.sw-site-header-sticky) {
|
|
|
6091
6207
|
margin-top: var(--sw-space-1);
|
|
6092
6208
|
}
|
|
6093
6209
|
|
|
6210
|
+
/* The comfortable touch target on a coarse pointer, at every size: the
|
|
6211
|
+
trigger and each option are at least 44 px high (the md control height),
|
|
6212
|
+
as every Button is. Type and padding keep the size's; the rule follows
|
|
6213
|
+
the size rules, which it outranks only by order. */
|
|
6214
|
+
@media (pointer: coarse) {
|
|
6215
|
+
.sw-select .sw-select-trigger,
|
|
6216
|
+
.sw-select .sw-select-option { min-height: var(--sw-control-md-min-height); }
|
|
6217
|
+
}
|
|
6218
|
+
|
|
6094
6219
|
.sw-action-menu {
|
|
6095
6220
|
display: inline-flex;
|
|
6096
6221
|
position: relative;
|