@scalewing/react 1.51.0 → 1.53.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 -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/SiteHeader.d.ts +6 -3
- package/dist/components/SiteHeader.js +8 -4
- package/dist/components/Table.d.ts +1 -0
- package/dist/components/Table.js +1 -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/site-header/types.d.ts +16 -1
- package/dist/components/site-header/validate.d.ts +4 -3
- package/dist/components/site-header/validate.js +12 -3
- package/dist/components/table/TableSelectCell.d.ts +26 -0
- package/dist/components/table/TableSelectCell.js +19 -0
- 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-site-footer.js +11 -1
- package/dist/css/css-site-header-anchors.d.ts +1 -0
- package/dist/css/css-site-header-anchors.js +22 -0
- package/dist/css/css-site-header-skip-link.d.ts +1 -0
- package/dist/css/css-site-header-skip-link.js +49 -0
- package/dist/css/css-site-header.js +26 -11
- 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/site-header-geometry.d.ts +21 -0
- package/dist/css/site-header-geometry.js +28 -0
- package/dist/css/stylesheet.js +2 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.js +4 -2
- package/dist/styles.css +165 -3
- package/package.json +1 -1
|
@@ -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
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** The bar's height below `lg`: 56 px. */
|
|
2
|
+
export declare const siteHeaderCompactHeight = "calc(var(--sw-control-md-min-height) + var(--sw-space-3))";
|
|
3
|
+
/** The bar's height from `lg`: 72 px. */
|
|
4
|
+
export declare const siteHeaderWideHeight = "calc(var(--sw-control-md-min-height) + var(--sw-space-5) + var(--sw-space-1))";
|
|
5
|
+
/** The bar's content: the page container plus the page gutter each side. */
|
|
6
|
+
export declare const siteHeaderBarMaxWidth = "calc(var(--sw-container-max) + 2 * var(--sw-space-5))";
|
|
7
|
+
/** From here the bar is the wide one with its row of destinations. */
|
|
8
|
+
export declare const siteHeaderWideQuery: string;
|
|
9
|
+
/** From here the bar's gutter is the wider one. */
|
|
10
|
+
export declare const siteHeaderGutterQuery: string;
|
|
11
|
+
/** The bar's gutter below `md` (`compact`) and from it (`wide`). */
|
|
12
|
+
export declare const siteHeaderGutter: {
|
|
13
|
+
readonly compact: "var(--sw-space-4)";
|
|
14
|
+
readonly wide: "var(--sw-space-5)";
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Where the bar's content starts, measured from the header's start: the
|
|
18
|
+
* centred bar's margin (none on a window narrower than the bar) plus its
|
|
19
|
+
* gutter, so something laid over the bar lines up with the brand.
|
|
20
|
+
*/
|
|
21
|
+
export declare function siteHeaderContentStart(gutter: string): string;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { breakpointQuery } from './breakpoints.js';
|
|
2
|
+
/*
|
|
3
|
+
* The site header's measures, shared by the bar, its skip link and the
|
|
4
|
+
* document's scroll padding so all three agree on where the bar ends.
|
|
5
|
+
*/
|
|
6
|
+
/** The bar's height below `lg`: 56 px. */
|
|
7
|
+
export const siteHeaderCompactHeight = 'calc(var(--sw-control-md-min-height) + var(--sw-space-3))';
|
|
8
|
+
/** The bar's height from `lg`: 72 px. */
|
|
9
|
+
export const siteHeaderWideHeight = 'calc(var(--sw-control-md-min-height) + var(--sw-space-5) + var(--sw-space-1))';
|
|
10
|
+
/** The bar's content: the page container plus the page gutter each side. */
|
|
11
|
+
export const siteHeaderBarMaxWidth = 'calc(var(--sw-container-max) + 2 * var(--sw-space-5))';
|
|
12
|
+
/** From here the bar is the wide one with its row of destinations. */
|
|
13
|
+
export const siteHeaderWideQuery = breakpointQuery('from', 'lg');
|
|
14
|
+
/** From here the bar's gutter is the wider one. */
|
|
15
|
+
export const siteHeaderGutterQuery = breakpointQuery('from', 'md');
|
|
16
|
+
/** The bar's gutter below `md` (`compact`) and from it (`wide`). */
|
|
17
|
+
export const siteHeaderGutter = {
|
|
18
|
+
compact: 'var(--sw-space-4)',
|
|
19
|
+
wide: 'var(--sw-space-5)',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Where the bar's content starts, measured from the header's start: the
|
|
23
|
+
* centred bar's margin (none on a window narrower than the bar) plus its
|
|
24
|
+
* gutter, so something laid over the bar lines up with the brand.
|
|
25
|
+
*/
|
|
26
|
+
export function siteHeaderContentStart(gutter) {
|
|
27
|
+
return `calc(max(0px, (100% - ${siteHeaderBarMaxWidth}) / 2) + ${gutter})`;
|
|
28
|
+
}
|
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';
|
|
@@ -81,7 +83,7 @@ export { breakpointQuery } from './css/breakpoints.js';
|
|
|
81
83
|
export { Band, bandElements, bandTones, bandWidths, } from './components/Band.js';
|
|
82
84
|
export type { BandElement, BandProps, BandTone, BandWidth, } from './components/Band.js';
|
|
83
85
|
export { SiteHeader } from './components/SiteHeader.js';
|
|
84
|
-
export type { SiteHeaderItem, SiteHeaderLabels, SiteHeaderProps, } from './components/SiteHeader.js';
|
|
86
|
+
export type { SiteHeaderItem, SiteHeaderLabels, SiteHeaderProps, SiteHeaderSkipLink, } from './components/SiteHeader.js';
|
|
85
87
|
export { ScreenPreview, screenPreviewFrames, } from './components/ScreenPreview.js';
|
|
86
88
|
export type { ScreenPreviewFrame, ScreenPreviewProps, } from './components/ScreenPreview.js';
|
|
87
89
|
export { PreviewGroup } from './components/screen-preview/PreviewGroup.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
|
@@ -1185,6 +1185,38 @@ body {
|
|
|
1185
1185
|
|
|
1186
1186
|
.sw-checkbox-input:checked + .sw-checkbox-mark::after { display: block; }
|
|
1187
1187
|
|
|
1188
|
+
/* The mixed state: the accent fill with a dash in place of the check. */
|
|
1189
|
+
.sw-checkbox-input:indeterminate + .sw-checkbox-mark {
|
|
1190
|
+
background: var(--sw-color-accent);
|
|
1191
|
+
border-color: var(--sw-color-accent);
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
.sw-checkbox-input:indeterminate + .sw-checkbox-mark::after {
|
|
1195
|
+
border-right: 0;
|
|
1196
|
+
display: block;
|
|
1197
|
+
height: 0;
|
|
1198
|
+
inset-block-start: calc(50% - 1px);
|
|
1199
|
+
inset-inline-start: calc(50% - var(--sw-space-3) / 2);
|
|
1200
|
+
transform: none;
|
|
1201
|
+
width: var(--sw-space-3);
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
/* A visually hidden label: the box alone is the target, its own size on a
|
|
1205
|
+
fine pointer (so a compact table row keeps its height), the 44 px touch
|
|
1206
|
+
target both ways on a coarse one. */
|
|
1207
|
+
.sw-checkbox-label-hidden {
|
|
1208
|
+
justify-content: center;
|
|
1209
|
+
min-height: 0;
|
|
1210
|
+
position: relative;
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
@media (pointer: coarse) {
|
|
1214
|
+
.sw-checkbox-label-hidden {
|
|
1215
|
+
min-height: var(--sw-control-md-min-height);
|
|
1216
|
+
min-width: var(--sw-control-md-min-height);
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1188
1220
|
.sw-checkbox-input:focus-visible + .sw-checkbox-mark {
|
|
1189
1221
|
outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
|
|
1190
1222
|
outline-offset: var(--sw-focus-ring-offset);
|
|
@@ -1221,13 +1253,13 @@ body {
|
|
|
1221
1253
|
|
|
1222
1254
|
@media (prefers-reduced-transparency: reduce) {
|
|
1223
1255
|
.sw-checkbox-mark { background: var(--sw-color-surface); }
|
|
1224
|
-
.sw-checkbox-input:checked + .sw-checkbox-mark { background: var(--sw-color-accent); }
|
|
1256
|
+
.sw-checkbox-input:is(:checked, :indeterminate) + .sw-checkbox-mark { background: var(--sw-color-accent); }
|
|
1225
1257
|
}
|
|
1226
1258
|
|
|
1227
1259
|
@media (forced-colors: active) {
|
|
1228
1260
|
.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; }
|
|
1261
|
+
.sw-checkbox-input:is(:checked, :indeterminate) + .sw-checkbox-mark { background: Highlight; border-color: Highlight; }
|
|
1262
|
+
.sw-checkbox-input:is(:checked, :indeterminate) + .sw-checkbox-mark::after { border-color: HighlightText; }
|
|
1231
1263
|
.sw-checkbox-input[aria-invalid='true'] + .sw-checkbox-mark { border-color: CanvasText; }
|
|
1232
1264
|
}
|
|
1233
1265
|
|
|
@@ -2174,6 +2206,18 @@ body {
|
|
|
2174
2206
|
.sw-table-action { color: ButtonText; }
|
|
2175
2207
|
}
|
|
2176
2208
|
|
|
2209
|
+
.sw-table .sw-table-select {
|
|
2210
|
+
width: var(--sw-space-5);
|
|
2211
|
+
}
|
|
2212
|
+
|
|
2213
|
+
.sw-table .sw-table-select .sw-checkbox {
|
|
2214
|
+
align-items: center;
|
|
2215
|
+
}
|
|
2216
|
+
|
|
2217
|
+
@media (pointer: coarse) {
|
|
2218
|
+
.sw-table .sw-table-select { width: var(--sw-control-md-min-height); }
|
|
2219
|
+
}
|
|
2220
|
+
|
|
2177
2221
|
.sw-table-row-selected > :first-child {
|
|
2178
2222
|
position: relative;
|
|
2179
2223
|
}
|
|
@@ -4939,6 +4983,13 @@ body {
|
|
|
4939
4983
|
min-height: var(--sw-control-md-min-height);
|
|
4940
4984
|
}
|
|
4941
4985
|
|
|
4986
|
+
[data-theme] .sw-band-inverse :is(.sw-site-footer-legal, .sw-site-footer-end) > a:not(.sw-button) {
|
|
4987
|
+
align-items: center;
|
|
4988
|
+
display: inline-flex;
|
|
4989
|
+
justify-content: center;
|
|
4990
|
+
min-height: var(--sw-control-md-min-height);
|
|
4991
|
+
}
|
|
4992
|
+
|
|
4942
4993
|
.sw-site-footer-links {
|
|
4943
4994
|
gap: 0;
|
|
4944
4995
|
}
|
|
@@ -4998,6 +5049,10 @@ body {
|
|
|
4998
5049
|
gap: var(--sw-space-1);
|
|
4999
5050
|
}
|
|
5000
5051
|
|
|
5052
|
+
.sw-site-header-compact-actions {
|
|
5053
|
+
display: contents;
|
|
5054
|
+
}
|
|
5055
|
+
|
|
5001
5056
|
.sw-site-header-list {
|
|
5002
5057
|
list-style: none;
|
|
5003
5058
|
margin: 0;
|
|
@@ -5054,6 +5109,10 @@ body {
|
|
|
5054
5109
|
list-style: none;
|
|
5055
5110
|
}
|
|
5056
5111
|
|
|
5112
|
+
.sw-site-header-compact:has(> .sw-site-header-menu[open]) > .sw-site-header-compact-actions {
|
|
5113
|
+
display: none;
|
|
5114
|
+
}
|
|
5115
|
+
|
|
5057
5116
|
.sw-site-header-menu > summary::-webkit-details-marker {
|
|
5058
5117
|
display: none;
|
|
5059
5118
|
}
|
|
@@ -5138,6 +5197,52 @@ body {
|
|
|
5138
5197
|
padding-top: var(--sw-space-5);
|
|
5139
5198
|
}
|
|
5140
5199
|
|
|
5200
|
+
.sw-site-header-skip-link {
|
|
5201
|
+
align-items: center;
|
|
5202
|
+
background: var(--sw-color-surface);
|
|
5203
|
+
border-radius: var(--sw-radius-pill);
|
|
5204
|
+
box-sizing: border-box;
|
|
5205
|
+
display: inline-flex;
|
|
5206
|
+
font-family: var(--sw-font-sans);
|
|
5207
|
+
font-size: 15px;
|
|
5208
|
+
font-weight: 600;
|
|
5209
|
+
inset-block-start: 50%;
|
|
5210
|
+
inset-inline-start: calc(max(0px, (100% - calc(var(--sw-container-max) + 2 * var(--sw-space-5))) / 2) + var(--sw-space-4));
|
|
5211
|
+
letter-spacing: -0.2px;
|
|
5212
|
+
line-height: 20px;
|
|
5213
|
+
padding-inline: var(--sw-space-4);
|
|
5214
|
+
position: absolute;
|
|
5215
|
+
transform: translateY(-50%);
|
|
5216
|
+
white-space: nowrap;
|
|
5217
|
+
}
|
|
5218
|
+
|
|
5219
|
+
[data-theme] .sw-site-header-skip-link {
|
|
5220
|
+
color: var(--sw-color-text);
|
|
5221
|
+
text-decoration: none;
|
|
5222
|
+
}
|
|
5223
|
+
|
|
5224
|
+
[data-theme] .sw-site-header-skip-link:focus {
|
|
5225
|
+
min-height: var(--sw-control-md-min-height);
|
|
5226
|
+
outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
|
|
5227
|
+
outline-offset: calc(-1 * var(--sw-focus-ring-width));
|
|
5228
|
+
}
|
|
5229
|
+
|
|
5230
|
+
.sw-site-header-skip-link:not(:focus) { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
|
|
5231
|
+
|
|
5232
|
+
@media (min-width: 48rem) {
|
|
5233
|
+
.sw-site-header-skip-link { inset-inline-start: calc(max(0px, (100% - calc(var(--sw-container-max) + 2 * var(--sw-space-5))) / 2) + var(--sw-space-5)); }
|
|
5234
|
+
}
|
|
5235
|
+
|
|
5236
|
+
html:has(.sw-site-header-sticky) {
|
|
5237
|
+
scroll-padding-top: calc(calc(var(--sw-control-md-min-height) + var(--sw-space-3)) + 1px + var(--sw-space-3));
|
|
5238
|
+
}
|
|
5239
|
+
|
|
5240
|
+
@media (min-width: 64rem) {
|
|
5241
|
+
html:has(.sw-site-header-sticky) {
|
|
5242
|
+
scroll-padding-top: calc(calc(var(--sw-control-md-min-height) + var(--sw-space-5) + var(--sw-space-1)) + 1px + var(--sw-space-3));
|
|
5243
|
+
}
|
|
5244
|
+
}
|
|
5245
|
+
|
|
5141
5246
|
/*
|
|
5142
5247
|
* Forced colours drop box shadows, so the current destination's bar is a
|
|
5143
5248
|
* thick underline there.
|
|
@@ -5776,6 +5881,54 @@ body {
|
|
|
5776
5881
|
}
|
|
5777
5882
|
}
|
|
5778
5883
|
|
|
5884
|
+
@media (min-width: 48rem) {
|
|
5885
|
+
.sw-dialog-end {
|
|
5886
|
+
border-color: var(--sw-color-border);
|
|
5887
|
+
border-radius: 0;
|
|
5888
|
+
border-width: 0;
|
|
5889
|
+
border-inline-start-width: 1px;
|
|
5890
|
+
height: 100%;
|
|
5891
|
+
inset-block: 0;
|
|
5892
|
+
margin: 0;
|
|
5893
|
+
margin-inline-start: auto;
|
|
5894
|
+
max-height: none;
|
|
5895
|
+
}
|
|
5896
|
+
|
|
5897
|
+
.sw-dialog-end[open] {
|
|
5898
|
+
animation: sw-dialog-end-in var(--sw-motion-default) var(--sw-motion-easing);
|
|
5899
|
+
display: flex;
|
|
5900
|
+
flex-direction: column;
|
|
5901
|
+
}
|
|
5902
|
+
|
|
5903
|
+
.sw-dialog-end[open]:dir(rtl) {
|
|
5904
|
+
animation-name: sw-dialog-end-in-rtl;
|
|
5905
|
+
}
|
|
5906
|
+
|
|
5907
|
+
.sw-dialog-end > .sw-stack {
|
|
5908
|
+
flex: 1 0 auto;
|
|
5909
|
+
}
|
|
5910
|
+
|
|
5911
|
+
.sw-dialog-end .sw-dialog-footer {
|
|
5912
|
+
margin-top: auto;
|
|
5913
|
+
}
|
|
5914
|
+
}
|
|
5915
|
+
|
|
5916
|
+
@keyframes sw-dialog-end-in {
|
|
5917
|
+
from { translate: 100% 0; }
|
|
5918
|
+
}
|
|
5919
|
+
|
|
5920
|
+
@keyframes sw-dialog-end-in-rtl {
|
|
5921
|
+
from { translate: -100% 0; }
|
|
5922
|
+
}
|
|
5923
|
+
|
|
5924
|
+
@media (prefers-reduced-motion: reduce) {
|
|
5925
|
+
.sw-dialog-end[open] { animation: none; }
|
|
5926
|
+
}
|
|
5927
|
+
|
|
5928
|
+
@media (forced-colors: active) {
|
|
5929
|
+
.sw-dialog-end { border-inline-start-color: CanvasText; }
|
|
5930
|
+
}
|
|
5931
|
+
|
|
5779
5932
|
.sw-accordion {
|
|
5780
5933
|
background: var(--sw-glass-fill);
|
|
5781
5934
|
border: 1px solid var(--sw-glass-border);
|
|
@@ -6030,6 +6183,15 @@ body {
|
|
|
6030
6183
|
margin-top: var(--sw-space-1);
|
|
6031
6184
|
}
|
|
6032
6185
|
|
|
6186
|
+
/* The comfortable touch target on a coarse pointer, at every size: the
|
|
6187
|
+
trigger and each option are at least 44 px high (the md control height),
|
|
6188
|
+
as every Button is. Type and padding keep the size's; the rule follows
|
|
6189
|
+
the size rules, which it outranks only by order. */
|
|
6190
|
+
@media (pointer: coarse) {
|
|
6191
|
+
.sw-select .sw-select-trigger,
|
|
6192
|
+
.sw-select .sw-select-option { min-height: var(--sw-control-md-min-height); }
|
|
6193
|
+
}
|
|
6194
|
+
|
|
6033
6195
|
.sw-action-menu {
|
|
6034
6196
|
display: inline-flex;
|
|
6035
6197
|
position: relative;
|