@jirawatpyk/aura-react 5.24.0 → 5.26.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/README.md +41 -2
- package/dist/aura.bundle.js +1969 -1732
- package/dist/cjs/index.cjs +1968 -1731
- package/dist/esm/Accordion.js +14 -2
- package/dist/esm/Checkbox.js +4 -2
- package/dist/esm/Combobox.js +3 -1
- package/dist/esm/Command.js +4 -2
- package/dist/esm/Container.js +13 -3
- package/dist/esm/DataTable.js +5 -1
- package/dist/esm/DatePicker.js +2 -0
- package/dist/esm/FilterDateRange.js +157 -0
- package/dist/esm/RadioGroup.js +5 -2
- package/dist/esm/Table.js +29 -5
- package/dist/esm/Tag.js +16 -2
- package/dist/esm/dates.js +14 -0
- package/dist/esm/index.js +2 -0
- package/dist/index.d.cts +81 -4
- package/dist/index.d.ts +81 -4
- package/dist/styles.css +65 -5
- package/dist/styles.layer.css +65 -5
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -236,6 +236,14 @@ export interface DataTableProps<Row extends Record<string, any> = Record<string,
|
|
|
236
236
|
density?: "comfortable" | "compact" | undefined;
|
|
237
237
|
/** Table width in px below which rows render as stacked cards (phones). Try 640. It follows the table's own width, not the window. Since 4.20 the cards are the same markup as the grid, laid out by a container query, so any width is right before hydration and each row is in the HTML once. With `height` (virtual rows) the server can only send the first screenful; the rest of the cards arrive on hydration. */
|
|
238
238
|
stackBelow?: number | undefined;
|
|
239
|
+
/** Edge to edge inside a Card (5.26, Chamber-OS 127): as a direct child of a Card's content, the table spans the
|
|
240
|
+
* card's full inner width — no side borders, no radius — keeping its header band and top rule; as the card's last
|
|
241
|
+
* content (no footer, nothing after it) it drops its bottom rule and the card's radius closes it. Below the Card's
|
|
242
|
+
* `flushBelow` width, and outside a Card, it does nothing. */
|
|
243
|
+
bleed?: boolean | undefined;
|
|
244
|
+
/** `false` drops the frame — border and radius — keeping the header band and the 24px gutter, for a table that sits
|
|
245
|
+
* in a section without bleeding (5.26). Default `true`. */
|
|
246
|
+
bordered?: boolean | undefined;
|
|
239
247
|
className?: string | undefined;
|
|
240
248
|
}
|
|
241
249
|
/** An AURA icon name, or any icon element (e.g. `<Building />` from lucide-react). AURA sizes it and hides it from screen readers. */
|
|
@@ -300,7 +308,9 @@ export interface CheckboxProps extends Omit<React$1.InputHTMLAttributes<HTMLInpu
|
|
|
300
308
|
hideLabel?: boolean | undefined;
|
|
301
309
|
/** The visible label beside the box. */
|
|
302
310
|
children?: React$1.ReactNode | undefined;
|
|
303
|
-
/** Second line under the visible label, linked by `aria-describedby` after any id you pass there (5.11).
|
|
311
|
+
/** Second line under the visible label, linked by `aria-describedby` after any id you pass there (5.11). Since 5.26
|
|
312
|
+
* it is not part of the name: the box is named by the visible label alone, or by your `aria-label` /
|
|
313
|
+
* `aria-labelledby` (Chamber-OS 125). */
|
|
304
314
|
description?: React$1.ReactNode | undefined;
|
|
305
315
|
onChange?: ((checked: boolean) => void) | undefined;
|
|
306
316
|
disabled?: boolean | undefined;
|
|
@@ -468,6 +478,7 @@ export interface CommandItem {
|
|
|
468
478
|
/** Items with the same group are listed together under its heading, in first-seen order. */
|
|
469
479
|
group?: string | undefined;
|
|
470
480
|
icon?: IconInput | undefined;
|
|
481
|
+
/** A second line; read after the item's name (label and shortcut), not as part of it (5.26). */
|
|
471
482
|
description?: string | undefined;
|
|
472
483
|
/** Extra words that find it ("invoice" → Billing). */
|
|
473
484
|
keywords?: string[] | undefined;
|
|
@@ -542,6 +553,8 @@ export interface FilterSelectProps extends Omit<React$1.SelectHTMLAttributes<HTM
|
|
|
542
553
|
* readers keep the option's own text. */
|
|
543
554
|
allLabel?: string | undefined;
|
|
544
555
|
}
|
|
556
|
+
/** A RadioGroup option. `description` is a second line under the label; since 5.26 the radio is named by `label`
|
|
557
|
+
* alone and the description is read after it (`aria-describedby`), also when the option is disabled (Chamber-OS 125). */
|
|
545
558
|
export type ChoiceOption = string | {
|
|
546
559
|
value: string;
|
|
547
560
|
label: string;
|
|
@@ -841,7 +854,7 @@ export interface DropdownMenuProps {
|
|
|
841
854
|
export interface ComboboxOption {
|
|
842
855
|
value: string;
|
|
843
856
|
label: string;
|
|
844
|
-
/** Second line in the list; also searched. */
|
|
857
|
+
/** Second line in the list; also searched. Read after the option's name, not as part of it (5.26). */
|
|
845
858
|
description?: string | undefined;
|
|
846
859
|
/** Extra search terms (English name, phone, code…). */
|
|
847
860
|
keywords?: string[] | undefined;
|
|
@@ -1035,6 +1048,39 @@ export interface DateRange {
|
|
|
1035
1048
|
start: ISODate | null;
|
|
1036
1049
|
end: ISODate | null;
|
|
1037
1050
|
}
|
|
1051
|
+
/** A FilterDateRange preset: a name and the range it sets (5.26). */
|
|
1052
|
+
export interface DateRangePreset {
|
|
1053
|
+
label: string;
|
|
1054
|
+
range: DateRange;
|
|
1055
|
+
}
|
|
1056
|
+
/** A compact date-range filter for FilterBar (5.26, Chamber-OS 128): "Submitted Any time ▾", one click to the range
|
|
1057
|
+
* calendar. Dates as DateRangePicker: `locale` / `calendar` from the provider (Thai shows Buddhist-era years), `min`,
|
|
1058
|
+
* `max`, `timeZone`, `weekStartsOn`. */
|
|
1059
|
+
export interface FilterDateRangeProps extends DateDisplayOptions, Pick<React$1.HTMLAttributes<HTMLButtonElement>, "style">, React$1.AriaAttributes, DataAttributes {
|
|
1060
|
+
/** The filter's name: first on the face ("Submitted"), the popover's name, and the start of the face's accessible
|
|
1061
|
+
* name ("Submitted: Any time"). */
|
|
1062
|
+
label: string;
|
|
1063
|
+
value?: DateRange | undefined;
|
|
1064
|
+
defaultValue?: DateRange | undefined;
|
|
1065
|
+
/** Runs once a range is complete, a preset is picked, or "Any time" clears it — never on a lone start day, and
|
|
1066
|
+
* not when the same range is picked again. There is no form field: write the range to the URL or state here. */
|
|
1067
|
+
onChange?: ((value: DateRange) => void) | undefined;
|
|
1068
|
+
/** Choices beside the calendar (Last 7 days, This month…), each setting a whole range; one that reaches past
|
|
1069
|
+
* `min` / `max` or onto an `isDateDisabled` day is shown disabled. */
|
|
1070
|
+
presets?: DateRangePreset[] | undefined;
|
|
1071
|
+
/** The empty value and the choice that clears it. Default "Any time" in the date locale. */
|
|
1072
|
+
anyLabel?: string | undefined;
|
|
1073
|
+
min?: ISODate | "today" | undefined;
|
|
1074
|
+
max?: ISODate | "today" | undefined;
|
|
1075
|
+
isDateDisabled?: ((iso: ISODate) => boolean) | undefined;
|
|
1076
|
+
weekStartsOn?: 0 | 1 | undefined;
|
|
1077
|
+
timeZone?: string | undefined;
|
|
1078
|
+
/** Today, given outright (ISO); wins over `timeZone`. */
|
|
1079
|
+
today?: ISODate | undefined;
|
|
1080
|
+
disabled?: boolean | undefined;
|
|
1081
|
+
id?: string | undefined;
|
|
1082
|
+
className?: string | undefined;
|
|
1083
|
+
}
|
|
1038
1084
|
export interface DateRangePickerProps extends DateFieldProps {
|
|
1039
1085
|
value?: DateRange | undefined;
|
|
1040
1086
|
defaultValue?: DateRange | undefined;
|
|
@@ -1149,6 +1195,22 @@ export interface TableProps extends Omit<React$1.TableHTMLAttributes<HTMLTableEl
|
|
|
1149
1195
|
/** `false` (5.13) drops the frame — border, radius, background — and the outer cells' side padding, so the table
|
|
1150
1196
|
* lines up with the content around it, e.g. flush inside a Card under its heading. Default `true`. */
|
|
1151
1197
|
bordered?: boolean | undefined;
|
|
1198
|
+
/** Edge to edge inside a Card (5.26, Chamber-OS 127): as a direct child of a Card's content, the table spans the
|
|
1199
|
+
* card's full inner width — no side borders, no radius — keeping its header band and top rule, and its outer
|
|
1200
|
+
* cells' 24px padding keeps the text level with the card's content. As the card's last content it drops its
|
|
1201
|
+
* bottom rule and the card's radius closes it. Below the Card's `flushBelow` width, and outside a Card, it does
|
|
1202
|
+
* nothing. With `bordered={false}` too, the outer cells take the card's padding while it bleeds. */
|
|
1203
|
+
bleed?: boolean | undefined;
|
|
1204
|
+
/** Keep the header row in view while the rows scroll (5.26, Chamber-OS 129), with its band, its bottom rule and
|
|
1205
|
+
* above the body. Without `maxHeight` it pins to the page's scroll, under an AppShell's top bar
|
|
1206
|
+
* (`--aura-shell-bar-height`; set `--aura-table-sticky-top` for another offset). A table wider than its box
|
|
1207
|
+
* scrolls sideways instead and its header can't pin to the page then: give it `maxHeight`. Inside your own scroll
|
|
1208
|
+
* container within an AppShell set `--aura-table-sticky-top: 0px` or use `maxHeight`. With `maxHeight` the box
|
|
1209
|
+
* scrolls both ways and the header pins to its top. One header row. Stacked rows (`stackBelow`) have no visible header, so it
|
|
1210
|
+
* does nothing there. Default off. */
|
|
1211
|
+
stickyHeader?: boolean | undefined;
|
|
1212
|
+
/** Caps the table's box (px, or any CSS length such as `60vh`); the rows scroll inside it. (5.26) */
|
|
1213
|
+
maxHeight?: number | string | undefined;
|
|
1152
1214
|
/** How stacked rows look (5.15, Chamber-OS 85): `list` (default) — one frame, rows divided by rules; `cards` —
|
|
1153
1215
|
* each row its own framed card, spaced like DataTable's cards, with no frame around them. From the `stackBelow`
|
|
1154
1216
|
* width up the table is unchanged. The table then sits in one more `div` (`.aura-tbl-cards`). */
|
|
@@ -1350,6 +1412,10 @@ export interface TagProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "onC
|
|
|
1350
1412
|
selected?: boolean | undefined;
|
|
1351
1413
|
onClick?: ((e: React$1.MouseEvent<HTMLButtonElement>) => void) | undefined;
|
|
1352
1414
|
disabled?: boolean | undefined;
|
|
1415
|
+
/** A toggle chip (`selected` / `onClick`) at least 44px tall below 640px or wherever the primary pointer is coarse
|
|
1416
|
+
* — filter chips tapped with a finger (5.25, Chamber-OS 124); with a mouse from 640px up it keeps 32px, as Button's
|
|
1417
|
+
* `touchHeight`. A plain or removable Tag ignores it. */
|
|
1418
|
+
touchHeight?: boolean | undefined;
|
|
1353
1419
|
}
|
|
1354
1420
|
export interface ProgressProps {
|
|
1355
1421
|
/** Omit for indeterminate. */
|
|
@@ -1417,6 +1483,7 @@ export interface PaginationProps {
|
|
|
1417
1483
|
export interface AccordionItem {
|
|
1418
1484
|
id: string;
|
|
1419
1485
|
title: React$1.ReactNode;
|
|
1486
|
+
/** A second line under the title; read as the header button's description, not its name (5.26). */
|
|
1420
1487
|
description?: React$1.ReactNode | undefined;
|
|
1421
1488
|
content: React$1.ReactNode;
|
|
1422
1489
|
icon?: IconInput | undefined;
|
|
@@ -1544,6 +1611,10 @@ export declare const Select: React$1.ForwardRefExoticComponent<SelectProps & Rea
|
|
|
1544
1611
|
/** A compact filter for FilterBar (5.12): a small button reading "Status All ▾" that opens Select's list. The name
|
|
1545
1612
|
* is the accessible name, the chosen option its value; forms, refs and the keyboard work as in Select. */
|
|
1546
1613
|
export declare const FilterSelect: React$1.ForwardRefExoticComponent<FilterSelectProps & React$1.RefAttributes<HTMLSelectElement>>;
|
|
1614
|
+
/** A compact date-range filter for FilterBar (5.26, Chamber-OS 128): a face like FilterSelect's — "Submitted Any
|
|
1615
|
+
* time ▾" — that opens the range calendar, with optional presets, in one click. `onChange` runs once a range is
|
|
1616
|
+
* complete, a preset is picked or the range is cleared; never on a lone start day. */
|
|
1617
|
+
export declare const FilterDateRange: React$1.ForwardRefExoticComponent<FilterDateRangeProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1547
1618
|
export declare const RadioGroup: React$1.ForwardRefExoticComponent<RadioGroupProps & React$1.RefAttributes<HTMLFieldSetElement>>;
|
|
1548
1619
|
export declare const Switch: React$1.ForwardRefExoticComponent<SwitchProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1549
1620
|
/** One value, or with `multiple` any number (chips). Two call signatures so value/onChange are typed for each. */
|
|
@@ -1640,11 +1711,17 @@ export declare const Avatar: React$1.ForwardRefExoticComponent<AvatarProps & Rea
|
|
|
1640
1711
|
export declare const Stack: React$1.ForwardRefExoticComponent<StackProps & React$1.RefAttributes<HTMLElement>>;
|
|
1641
1712
|
/** Grid — equal columns. columns may be responsive ({ base: 1, md: 2, lg: 3 }), or use minItemWidth to fit as many as fit. */
|
|
1642
1713
|
export declare const Grid: React$1.ForwardRefExoticComponent<GridProps & React$1.RefAttributes<HTMLElement>>;
|
|
1643
|
-
/** Centred page column.
|
|
1644
|
-
|
|
1714
|
+
/** Centred page column. To name it (`aria-label`), render a landmark with `as="section"` (or `main`, `nav`): a
|
|
1715
|
+
* plain `div` may not carry a name. */
|
|
1716
|
+
export interface ContainerProps extends Pick<React$1.HTMLAttributes<HTMLElement>, "id" | "lang" | "dir">, React$1.AriaAttributes, DataAttributes {
|
|
1645
1717
|
/** `narrow` caps it at aura-container-narrow (720px). Default `default` (1280px). */
|
|
1646
1718
|
size?: "default" | "narrow" | undefined;
|
|
1719
|
+
/** `start` puts the column at the start edge (left; right in RTL) instead of centring it — a form board beside
|
|
1720
|
+
* the page's start (5.26, Chamber-OS 126). Default `center`. */
|
|
1721
|
+
align?: "center" | "start" | undefined;
|
|
1647
1722
|
as?: keyof React$1.JSX.IntrinsicElements | undefined;
|
|
1723
|
+
/** Utilities that set `max-width` or `margin` (e.g. `max-w-[672px] mx-0`) are supported with `styles.layer.css`,
|
|
1724
|
+
* where a utility beats `.aura-container` (5.26). */
|
|
1648
1725
|
className?: string | undefined;
|
|
1649
1726
|
style?: React$1.CSSProperties | undefined;
|
|
1650
1727
|
children?: React$1.ReactNode | undefined;
|
package/dist/index.d.ts
CHANGED
|
@@ -236,6 +236,14 @@ export interface DataTableProps<Row extends Record<string, any> = Record<string,
|
|
|
236
236
|
density?: "comfortable" | "compact" | undefined;
|
|
237
237
|
/** Table width in px below which rows render as stacked cards (phones). Try 640. It follows the table's own width, not the window. Since 4.20 the cards are the same markup as the grid, laid out by a container query, so any width is right before hydration and each row is in the HTML once. With `height` (virtual rows) the server can only send the first screenful; the rest of the cards arrive on hydration. */
|
|
238
238
|
stackBelow?: number | undefined;
|
|
239
|
+
/** Edge to edge inside a Card (5.26, Chamber-OS 127): as a direct child of a Card's content, the table spans the
|
|
240
|
+
* card's full inner width — no side borders, no radius — keeping its header band and top rule; as the card's last
|
|
241
|
+
* content (no footer, nothing after it) it drops its bottom rule and the card's radius closes it. Below the Card's
|
|
242
|
+
* `flushBelow` width, and outside a Card, it does nothing. */
|
|
243
|
+
bleed?: boolean | undefined;
|
|
244
|
+
/** `false` drops the frame — border and radius — keeping the header band and the 24px gutter, for a table that sits
|
|
245
|
+
* in a section without bleeding (5.26). Default `true`. */
|
|
246
|
+
bordered?: boolean | undefined;
|
|
239
247
|
className?: string | undefined;
|
|
240
248
|
}
|
|
241
249
|
/** An AURA icon name, or any icon element (e.g. `<Building />` from lucide-react). AURA sizes it and hides it from screen readers. */
|
|
@@ -300,7 +308,9 @@ export interface CheckboxProps extends Omit<React$1.InputHTMLAttributes<HTMLInpu
|
|
|
300
308
|
hideLabel?: boolean | undefined;
|
|
301
309
|
/** The visible label beside the box. */
|
|
302
310
|
children?: React$1.ReactNode | undefined;
|
|
303
|
-
/** Second line under the visible label, linked by `aria-describedby` after any id you pass there (5.11).
|
|
311
|
+
/** Second line under the visible label, linked by `aria-describedby` after any id you pass there (5.11). Since 5.26
|
|
312
|
+
* it is not part of the name: the box is named by the visible label alone, or by your `aria-label` /
|
|
313
|
+
* `aria-labelledby` (Chamber-OS 125). */
|
|
304
314
|
description?: React$1.ReactNode | undefined;
|
|
305
315
|
onChange?: ((checked: boolean) => void) | undefined;
|
|
306
316
|
disabled?: boolean | undefined;
|
|
@@ -468,6 +478,7 @@ export interface CommandItem {
|
|
|
468
478
|
/** Items with the same group are listed together under its heading, in first-seen order. */
|
|
469
479
|
group?: string | undefined;
|
|
470
480
|
icon?: IconInput | undefined;
|
|
481
|
+
/** A second line; read after the item's name (label and shortcut), not as part of it (5.26). */
|
|
471
482
|
description?: string | undefined;
|
|
472
483
|
/** Extra words that find it ("invoice" → Billing). */
|
|
473
484
|
keywords?: string[] | undefined;
|
|
@@ -542,6 +553,8 @@ export interface FilterSelectProps extends Omit<React$1.SelectHTMLAttributes<HTM
|
|
|
542
553
|
* readers keep the option's own text. */
|
|
543
554
|
allLabel?: string | undefined;
|
|
544
555
|
}
|
|
556
|
+
/** A RadioGroup option. `description` is a second line under the label; since 5.26 the radio is named by `label`
|
|
557
|
+
* alone and the description is read after it (`aria-describedby`), also when the option is disabled (Chamber-OS 125). */
|
|
545
558
|
export type ChoiceOption = string | {
|
|
546
559
|
value: string;
|
|
547
560
|
label: string;
|
|
@@ -841,7 +854,7 @@ export interface DropdownMenuProps {
|
|
|
841
854
|
export interface ComboboxOption {
|
|
842
855
|
value: string;
|
|
843
856
|
label: string;
|
|
844
|
-
/** Second line in the list; also searched. */
|
|
857
|
+
/** Second line in the list; also searched. Read after the option's name, not as part of it (5.26). */
|
|
845
858
|
description?: string | undefined;
|
|
846
859
|
/** Extra search terms (English name, phone, code…). */
|
|
847
860
|
keywords?: string[] | undefined;
|
|
@@ -1035,6 +1048,39 @@ export interface DateRange {
|
|
|
1035
1048
|
start: ISODate | null;
|
|
1036
1049
|
end: ISODate | null;
|
|
1037
1050
|
}
|
|
1051
|
+
/** A FilterDateRange preset: a name and the range it sets (5.26). */
|
|
1052
|
+
export interface DateRangePreset {
|
|
1053
|
+
label: string;
|
|
1054
|
+
range: DateRange;
|
|
1055
|
+
}
|
|
1056
|
+
/** A compact date-range filter for FilterBar (5.26, Chamber-OS 128): "Submitted Any time ▾", one click to the range
|
|
1057
|
+
* calendar. Dates as DateRangePicker: `locale` / `calendar` from the provider (Thai shows Buddhist-era years), `min`,
|
|
1058
|
+
* `max`, `timeZone`, `weekStartsOn`. */
|
|
1059
|
+
export interface FilterDateRangeProps extends DateDisplayOptions, Pick<React$1.HTMLAttributes<HTMLButtonElement>, "style">, React$1.AriaAttributes, DataAttributes {
|
|
1060
|
+
/** The filter's name: first on the face ("Submitted"), the popover's name, and the start of the face's accessible
|
|
1061
|
+
* name ("Submitted: Any time"). */
|
|
1062
|
+
label: string;
|
|
1063
|
+
value?: DateRange | undefined;
|
|
1064
|
+
defaultValue?: DateRange | undefined;
|
|
1065
|
+
/** Runs once a range is complete, a preset is picked, or "Any time" clears it — never on a lone start day, and
|
|
1066
|
+
* not when the same range is picked again. There is no form field: write the range to the URL or state here. */
|
|
1067
|
+
onChange?: ((value: DateRange) => void) | undefined;
|
|
1068
|
+
/** Choices beside the calendar (Last 7 days, This month…), each setting a whole range; one that reaches past
|
|
1069
|
+
* `min` / `max` or onto an `isDateDisabled` day is shown disabled. */
|
|
1070
|
+
presets?: DateRangePreset[] | undefined;
|
|
1071
|
+
/** The empty value and the choice that clears it. Default "Any time" in the date locale. */
|
|
1072
|
+
anyLabel?: string | undefined;
|
|
1073
|
+
min?: ISODate | "today" | undefined;
|
|
1074
|
+
max?: ISODate | "today" | undefined;
|
|
1075
|
+
isDateDisabled?: ((iso: ISODate) => boolean) | undefined;
|
|
1076
|
+
weekStartsOn?: 0 | 1 | undefined;
|
|
1077
|
+
timeZone?: string | undefined;
|
|
1078
|
+
/** Today, given outright (ISO); wins over `timeZone`. */
|
|
1079
|
+
today?: ISODate | undefined;
|
|
1080
|
+
disabled?: boolean | undefined;
|
|
1081
|
+
id?: string | undefined;
|
|
1082
|
+
className?: string | undefined;
|
|
1083
|
+
}
|
|
1038
1084
|
export interface DateRangePickerProps extends DateFieldProps {
|
|
1039
1085
|
value?: DateRange | undefined;
|
|
1040
1086
|
defaultValue?: DateRange | undefined;
|
|
@@ -1149,6 +1195,22 @@ export interface TableProps extends Omit<React$1.TableHTMLAttributes<HTMLTableEl
|
|
|
1149
1195
|
/** `false` (5.13) drops the frame — border, radius, background — and the outer cells' side padding, so the table
|
|
1150
1196
|
* lines up with the content around it, e.g. flush inside a Card under its heading. Default `true`. */
|
|
1151
1197
|
bordered?: boolean | undefined;
|
|
1198
|
+
/** Edge to edge inside a Card (5.26, Chamber-OS 127): as a direct child of a Card's content, the table spans the
|
|
1199
|
+
* card's full inner width — no side borders, no radius — keeping its header band and top rule, and its outer
|
|
1200
|
+
* cells' 24px padding keeps the text level with the card's content. As the card's last content it drops its
|
|
1201
|
+
* bottom rule and the card's radius closes it. Below the Card's `flushBelow` width, and outside a Card, it does
|
|
1202
|
+
* nothing. With `bordered={false}` too, the outer cells take the card's padding while it bleeds. */
|
|
1203
|
+
bleed?: boolean | undefined;
|
|
1204
|
+
/** Keep the header row in view while the rows scroll (5.26, Chamber-OS 129), with its band, its bottom rule and
|
|
1205
|
+
* above the body. Without `maxHeight` it pins to the page's scroll, under an AppShell's top bar
|
|
1206
|
+
* (`--aura-shell-bar-height`; set `--aura-table-sticky-top` for another offset). A table wider than its box
|
|
1207
|
+
* scrolls sideways instead and its header can't pin to the page then: give it `maxHeight`. Inside your own scroll
|
|
1208
|
+
* container within an AppShell set `--aura-table-sticky-top: 0px` or use `maxHeight`. With `maxHeight` the box
|
|
1209
|
+
* scrolls both ways and the header pins to its top. One header row. Stacked rows (`stackBelow`) have no visible header, so it
|
|
1210
|
+
* does nothing there. Default off. */
|
|
1211
|
+
stickyHeader?: boolean | undefined;
|
|
1212
|
+
/** Caps the table's box (px, or any CSS length such as `60vh`); the rows scroll inside it. (5.26) */
|
|
1213
|
+
maxHeight?: number | string | undefined;
|
|
1152
1214
|
/** How stacked rows look (5.15, Chamber-OS 85): `list` (default) — one frame, rows divided by rules; `cards` —
|
|
1153
1215
|
* each row its own framed card, spaced like DataTable's cards, with no frame around them. From the `stackBelow`
|
|
1154
1216
|
* width up the table is unchanged. The table then sits in one more `div` (`.aura-tbl-cards`). */
|
|
@@ -1350,6 +1412,10 @@ export interface TagProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "onC
|
|
|
1350
1412
|
selected?: boolean | undefined;
|
|
1351
1413
|
onClick?: ((e: React$1.MouseEvent<HTMLButtonElement>) => void) | undefined;
|
|
1352
1414
|
disabled?: boolean | undefined;
|
|
1415
|
+
/** A toggle chip (`selected` / `onClick`) at least 44px tall below 640px or wherever the primary pointer is coarse
|
|
1416
|
+
* — filter chips tapped with a finger (5.25, Chamber-OS 124); with a mouse from 640px up it keeps 32px, as Button's
|
|
1417
|
+
* `touchHeight`. A plain or removable Tag ignores it. */
|
|
1418
|
+
touchHeight?: boolean | undefined;
|
|
1353
1419
|
}
|
|
1354
1420
|
export interface ProgressProps {
|
|
1355
1421
|
/** Omit for indeterminate. */
|
|
@@ -1417,6 +1483,7 @@ export interface PaginationProps {
|
|
|
1417
1483
|
export interface AccordionItem {
|
|
1418
1484
|
id: string;
|
|
1419
1485
|
title: React$1.ReactNode;
|
|
1486
|
+
/** A second line under the title; read as the header button's description, not its name (5.26). */
|
|
1420
1487
|
description?: React$1.ReactNode | undefined;
|
|
1421
1488
|
content: React$1.ReactNode;
|
|
1422
1489
|
icon?: IconInput | undefined;
|
|
@@ -1544,6 +1611,10 @@ export declare const Select: React$1.ForwardRefExoticComponent<SelectProps & Rea
|
|
|
1544
1611
|
/** A compact filter for FilterBar (5.12): a small button reading "Status All ▾" that opens Select's list. The name
|
|
1545
1612
|
* is the accessible name, the chosen option its value; forms, refs and the keyboard work as in Select. */
|
|
1546
1613
|
export declare const FilterSelect: React$1.ForwardRefExoticComponent<FilterSelectProps & React$1.RefAttributes<HTMLSelectElement>>;
|
|
1614
|
+
/** A compact date-range filter for FilterBar (5.26, Chamber-OS 128): a face like FilterSelect's — "Submitted Any
|
|
1615
|
+
* time ▾" — that opens the range calendar, with optional presets, in one click. `onChange` runs once a range is
|
|
1616
|
+
* complete, a preset is picked or the range is cleared; never on a lone start day. */
|
|
1617
|
+
export declare const FilterDateRange: React$1.ForwardRefExoticComponent<FilterDateRangeProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1547
1618
|
export declare const RadioGroup: React$1.ForwardRefExoticComponent<RadioGroupProps & React$1.RefAttributes<HTMLFieldSetElement>>;
|
|
1548
1619
|
export declare const Switch: React$1.ForwardRefExoticComponent<SwitchProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1549
1620
|
/** One value, or with `multiple` any number (chips). Two call signatures so value/onChange are typed for each. */
|
|
@@ -1640,11 +1711,17 @@ export declare const Avatar: React$1.ForwardRefExoticComponent<AvatarProps & Rea
|
|
|
1640
1711
|
export declare const Stack: React$1.ForwardRefExoticComponent<StackProps & React$1.RefAttributes<HTMLElement>>;
|
|
1641
1712
|
/** Grid — equal columns. columns may be responsive ({ base: 1, md: 2, lg: 3 }), or use minItemWidth to fit as many as fit. */
|
|
1642
1713
|
export declare const Grid: React$1.ForwardRefExoticComponent<GridProps & React$1.RefAttributes<HTMLElement>>;
|
|
1643
|
-
/** Centred page column.
|
|
1644
|
-
|
|
1714
|
+
/** Centred page column. To name it (`aria-label`), render a landmark with `as="section"` (or `main`, `nav`): a
|
|
1715
|
+
* plain `div` may not carry a name. */
|
|
1716
|
+
export interface ContainerProps extends Pick<React$1.HTMLAttributes<HTMLElement>, "id" | "lang" | "dir">, React$1.AriaAttributes, DataAttributes {
|
|
1645
1717
|
/** `narrow` caps it at aura-container-narrow (720px). Default `default` (1280px). */
|
|
1646
1718
|
size?: "default" | "narrow" | undefined;
|
|
1719
|
+
/** `start` puts the column at the start edge (left; right in RTL) instead of centring it — a form board beside
|
|
1720
|
+
* the page's start (5.26, Chamber-OS 126). Default `center`. */
|
|
1721
|
+
align?: "center" | "start" | undefined;
|
|
1647
1722
|
as?: keyof React$1.JSX.IntrinsicElements | undefined;
|
|
1723
|
+
/** Utilities that set `max-width` or `margin` (e.g. `max-w-[672px] mx-0`) are supported with `styles.layer.css`,
|
|
1724
|
+
* where a utility beats `.aura-container` (5.26). */
|
|
1648
1725
|
className?: string | undefined;
|
|
1649
1726
|
style?: React$1.CSSProperties | undefined;
|
|
1650
1727
|
children?: React$1.ReactNode | undefined;
|
package/dist/styles.css
CHANGED
|
@@ -125,6 +125,7 @@ button.aura-btn--creative[aria-disabled='true']:hover { box-shadow: var(--aura-s
|
|
|
125
125
|
.aura-table__row-link:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: 2px; border-radius: var(--aura-radius-xs); }
|
|
126
126
|
/* Server mode refresh: the previous page stays, inactive, under a progress bar until the next one arrives */
|
|
127
127
|
.aura-table.is-refreshing .aura-table__row { opacity: 0.6; pointer-events: none; }
|
|
128
|
+
.aura-table.aura-table--borderless { border: 0; border-radius: 0; } /* 5.26: bordered={false} */
|
|
128
129
|
.aura-table__busy-bar {
|
|
129
130
|
position: absolute; z-index: 6; top: calc(var(--aura-table-row-height) - 2px); left: 0; right: 0; height: 2px; overflow: hidden;
|
|
130
131
|
border-radius: var(--aura-radius-full); pointer-events: none;
|
|
@@ -314,11 +315,12 @@ a.aura-icon-btn { text-decoration: none; }
|
|
|
314
315
|
.aura-icon-btn:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: var(--aura-focus-ring-offset); }
|
|
315
316
|
/* 5.15 (Chamber-OS 100): touchHeight — visibly 44px on phones, for buttons and icon buttons a phone design wants full size.
|
|
316
317
|
* 5.24 (Chamber-OS 123): also wherever the primary pointer is coarse — a tablet at 768–1366px is a finger, not a mouse.
|
|
317
|
-
* A mouse on a wide screen (pointer: fine) keeps the compact size. */
|
|
318
|
+
* A mouse on a wide screen (pointer: fine) keeps the compact size. 5.25 (Chamber-OS 124): toggle Tags too. */
|
|
318
319
|
@media (max-width: 639.98px), (pointer: coarse) {
|
|
319
320
|
.aura-btn.aura-btn--touch { height: var(--aura-touch-target); }
|
|
320
321
|
.aura-btn.aura-btn--touch.aura-btn--full { height: auto; min-height: var(--aura-touch-target); }
|
|
321
322
|
.aura-icon-btn.aura-icon-btn--touch { width: var(--aura-touch-target); height: var(--aura-touch-target); }
|
|
323
|
+
.aura-tag.aura-tag--touch { min-height: var(--aura-touch-target); }
|
|
322
324
|
}
|
|
323
325
|
/* Touch: same 32px look, a 44px hit area around it (WCAG 2.5.5). */
|
|
324
326
|
@media (pointer: coarse) {
|
|
@@ -652,13 +654,33 @@ a.aura-icon-btn { text-decoration: none; }
|
|
|
652
654
|
padding: var(--aura-card-padding); background: var(--aura-bg-surface); color: var(--aura-fg-primary);
|
|
653
655
|
border: 1px solid var(--aura-border-default); border-radius: var(--aura-card-radius); box-shadow: var(--aura-shadow-enterprise);
|
|
654
656
|
font-family: var(--font-sans); font-size: 14px;
|
|
657
|
+
--aura-card-bleed: var(--aura-card-padding); /* 5.26: how far a bleeding table reaches out; 0 where the card is flush */
|
|
655
658
|
}
|
|
656
659
|
.aura-card.is-interactive { cursor: pointer; transition: border-color var(--aura-duration-fast) var(--aura-ease); }
|
|
657
660
|
.aura-card.is-interactive:hover { border-color: var(--aura-border-control); }
|
|
658
661
|
/* 5.15 (Chamber-OS 93): frameless below a width — the rows inside become cards of their own. */
|
|
659
|
-
@media (max-width: 639.98px) { .aura-card.aura-card--flush-below-sm, .aura-card.aura-card--flush-below-sm:hover { border-color: transparent; background: transparent; box-shadow: none; } }
|
|
660
|
-
@media (max-width: 767.98px) { .aura-card.aura-card--flush-below-md, .aura-card.aura-card--flush-below-md:hover { border-color: transparent; background: transparent; box-shadow: none; } }
|
|
661
|
-
@media (max-width: 1023.98px) { .aura-card.aura-card--flush-below-lg, .aura-card.aura-card--flush-below-lg:hover { border-color: transparent; background: transparent; box-shadow: none; } }
|
|
662
|
+
@media (max-width: 639.98px) { .aura-card.aura-card--flush-below-sm, .aura-card.aura-card--flush-below-sm:hover { border-color: transparent; background: transparent; box-shadow: none; --aura-card-bleed: 0px; } }
|
|
663
|
+
@media (max-width: 767.98px) { .aura-card.aura-card--flush-below-md, .aura-card.aura-card--flush-below-md:hover { border-color: transparent; background: transparent; box-shadow: none; --aura-card-bleed: 0px; } }
|
|
664
|
+
@media (max-width: 1023.98px) { .aura-card.aura-card--flush-below-lg, .aura-card.aura-card--flush-below-lg:hover { border-color: transparent; background: transparent; box-shadow: none; --aura-card-bleed: 0px; } }
|
|
665
|
+
/* 5.26 (Chamber-OS 127): bleed — a table that is a direct child of a Card's content spans its inner width; the side
|
|
666
|
+
* borders and radius go (a 0px bleed — a flush card — keeps them: 1px - min(1px, 0) = 1px). As the card's last content
|
|
667
|
+
* it also drops its bottom rule and the card's radius closes it. */
|
|
668
|
+
/* Two classes deep so it beats a stackable Table's width: 100%. `* 1000` turns any bleed into a 0 radius; 0 keeps it. */
|
|
669
|
+
.aura-card .aura-card__body > .aura-bleed { margin-inline: calc(-1 * var(--aura-card-bleed)); width: auto; }
|
|
670
|
+
/* A Table with bordered={false} too: its outer cells take the bleed (0 where the card is flush, as before). */
|
|
671
|
+
.aura-card__body > .aura-bleed .aura-tbl-wrap.is-flush > .aura-tbl > * > .aura-tbl__row > :first-child,
|
|
672
|
+
.aura-card__body > .aura-bleed.aura-tbl-wrap.is-flush > .aura-tbl > * > .aura-tbl__row > :first-child { padding-inline-start: var(--aura-card-bleed); }
|
|
673
|
+
.aura-card__body > .aura-bleed .aura-tbl-wrap.is-flush > .aura-tbl > * > .aura-tbl__row > :last-child,
|
|
674
|
+
.aura-card__body > .aura-bleed.aura-tbl-wrap.is-flush > .aura-tbl > * > .aura-tbl__row > :last-child { padding-inline-end: var(--aura-card-bleed); }
|
|
675
|
+
.aura-card__body > .aura-bleed.aura-bleed-frame, .aura-card__body > .aura-bleed .aura-bleed-frame {
|
|
676
|
+
border-inline-width: calc(1px - min(1px, var(--aura-card-bleed))); border-radius: max(0px, var(--aura-card-radius) - var(--aura-card-bleed) * 1000);
|
|
677
|
+
}
|
|
678
|
+
.aura-card__body:last-child > .aura-bleed:last-child { margin-bottom: calc(-1 * var(--aura-card-bleed)); }
|
|
679
|
+
.aura-card__body:last-child > .aura-bleed:last-child.aura-bleed-frame, .aura-card__body:last-child > .aura-bleed:last-child .aura-bleed-frame {
|
|
680
|
+
border-bottom-width: calc(1px - min(1px, var(--aura-card-bleed)));
|
|
681
|
+
border-bottom-left-radius: calc(var(--aura-card-radius) - min(1px, var(--aura-card-bleed)));
|
|
682
|
+
border-bottom-right-radius: calc(var(--aura-card-radius) - min(1px, var(--aura-card-bleed)));
|
|
683
|
+
}
|
|
662
684
|
.aura-card--creative { border: 2px solid var(--aura-border-strong); box-shadow: var(--aura-card-shadow-creative); }
|
|
663
685
|
.aura-card__head { display: flex; align-items: flex-start; gap: var(--aura-space-3); }
|
|
664
686
|
.aura-card__heading { flex: 1; min-width: 0; }
|
|
@@ -959,6 +981,7 @@ a.aura-tab { text-decoration: none; }
|
|
|
959
981
|
}
|
|
960
982
|
.aura-container { box-sizing: border-box; width: 100%; max-width: var(--aura-container-max); margin: 0 auto; padding: 0 var(--aura-space-4); }
|
|
961
983
|
.aura-container.is-narrow { max-width: var(--aura-container-narrow); }
|
|
984
|
+
.aura-container.is-start { margin-inline: 0; } /* 5.26 (Chamber-OS 126): align="start" */
|
|
962
985
|
/* Breakpoints: sm 640 · md 768 · lg 1024 · xl 1280 (aura-bp-* tokens; media queries can't read variables) */
|
|
963
986
|
@media (min-width: 640px) {
|
|
964
987
|
.aura-stack { flex-direction: var(--aura-stack-dir-sm, var(--aura-stack-dir-base, column)); align-items: var(--aura-stack-align-sm, stretch); gap: var(--aura-stack-gap-sm, var(--aura-stack-gap-base, var(--aura-space-4))); }
|
|
@@ -1411,7 +1434,7 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1411
1434
|
.aura-toaster { left: var(--aura-space-4); right: var(--aura-space-4); bottom: var(--aura-space-4); width: auto; }
|
|
1412
1435
|
.aura-toaster.is-center { left: var(--aura-space-4); right: var(--aura-space-4); transform: none; }
|
|
1413
1436
|
.aura-toaster.is-top { top: calc(var(--aura-toaster-offset, var(--aura-space-4)) + env(safe-area-inset-top, 0px)); }
|
|
1414
|
-
.aura-card { padding: var(--aura-space-4); }
|
|
1437
|
+
.aura-card { padding: var(--aura-space-4); --aura-card-bleed: var(--aura-space-4); }
|
|
1415
1438
|
.aura-stat { padding: var(--aura-space-4); }
|
|
1416
1439
|
.aura-stat__value { font-size: 24px; }
|
|
1417
1440
|
.aura-tabs__list { gap: var(--aura-space-4); }
|
|
@@ -1530,6 +1553,16 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1530
1553
|
.aura-filterselect.is-disabled .aura-filterselect__face { background: var(--aura-bg-input-disabled); color: var(--aura-fg-secondary); border-color: var(--aura-border-default); cursor: not-allowed; }
|
|
1531
1554
|
.aura-filterselect.is-disabled .aura-filterselect__native { cursor: not-allowed; }
|
|
1532
1555
|
@media (forced-colors: active) { .aura-filterselect__face { border-color: ButtonText; } }
|
|
1556
|
+
/* 5.26 (Chamber-OS 128) FilterDateRange: presets beside the range calendar; above it on phones. */
|
|
1557
|
+
.aura-filterdate__pop { display: flex; gap: var(--aura-space-3); overflow-y: auto; }
|
|
1558
|
+
.aura-filterdate__presets { display: flex; flex-direction: column; gap: 2px; min-width: 8rem; padding-inline-end: var(--aura-space-3); border-inline-end: 1px solid var(--aura-border-subtle); }
|
|
1559
|
+
.aura-filterdate__preset { justify-content: flex-start; }
|
|
1560
|
+
.aura-filterdate__preset.is-selected { background: var(--aura-bg-selected); }
|
|
1561
|
+
@media (forced-colors: active) { .aura-filterdate__preset.is-selected { outline: 2px solid Highlight; outline-offset: -2px; } }
|
|
1562
|
+
@media (max-width: 639.98px) {
|
|
1563
|
+
.aura-filterdate__pop { flex-direction: column; }
|
|
1564
|
+
.aura-filterdate__presets { flex-direction: row; flex-wrap: wrap; min-width: 0; padding: 0 0 var(--aura-space-2); border: 0; border-bottom: 1px solid var(--aura-border-subtle); }
|
|
1565
|
+
}
|
|
1533
1566
|
|
|
1534
1567
|
/* Command palette: a search field over a grouped list, above everything else (it can open from a Dialog) */
|
|
1535
1568
|
.aura-dialog-layer.aura-command-layer { z-index: var(--aura-z-menu); align-items: flex-start; padding: 12vh var(--aura-space-4) var(--aura-space-4); }
|
|
@@ -1697,6 +1730,22 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1697
1730
|
.aura-tbl .is-end { text-align: right; }
|
|
1698
1731
|
.aura-tbl .is-center { text-align: center; }
|
|
1699
1732
|
.aura-tbl .is-numeric { font-variant-numeric: tabular-nums; white-space: nowrap; }
|
|
1733
|
+
/* 5.26 (Chamber-OS 129) stickyHeader. To the page: the box must not be a scroll container, so it clips sideways
|
|
1734
|
+
* instead (nothing overflows while it fits; JavaScript marks a table that doesn't, which scrolls as before). In a
|
|
1735
|
+
* maxHeight box: the box scrolls both ways and the header pins to its top. The rule under the band moves with it. */
|
|
1736
|
+
.aura-tbl-wrap.is-sticky-page:not(.is-wide) { overflow-x: clip; }
|
|
1737
|
+
.aura-tbl-wrap.has-max, .aura-tbl-cards > .aura-tbl-wrap.has-max { overflow: auto; box-sizing: border-box; }
|
|
1738
|
+
.aura-tbl-wrap.is-sticky-page > .aura-tbl > .aura-tbl__head .aura-tbl__th, .aura-tbl-wrap.is-sticky-box > .aura-tbl > .aura-tbl__head .aura-tbl__th {
|
|
1739
|
+
position: sticky; top: var(--aura-table-sticky-top, var(--aura-shell-bar-height, 0px)); z-index: 2;
|
|
1740
|
+
border-bottom-width: 0; box-shadow: inset 0 -1px 0 var(--aura-border-default); /* one rule, at rest and pinned */
|
|
1741
|
+
}
|
|
1742
|
+
/* Forced colours drop the shadow; a pseudo-element line moves with the pinned cell (a collapsed border doesn't). */
|
|
1743
|
+
@media (forced-colors: active) {
|
|
1744
|
+
.aura-tbl-wrap.is-sticky-page > .aura-tbl > .aura-tbl__head .aura-tbl__th::after, .aura-tbl-wrap.is-sticky-box > .aura-tbl > .aura-tbl__head .aura-tbl__th::after {
|
|
1745
|
+
content: ''; position: absolute; inset: auto 0 0 0; border-bottom: 1px solid CanvasText;
|
|
1746
|
+
}
|
|
1747
|
+
}
|
|
1748
|
+
.aura-tbl-wrap.is-sticky-box > .aura-tbl > .aura-tbl__head .aura-tbl__th { top: 0; }
|
|
1700
1749
|
.aura-tbl-wrap:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: 2px; }
|
|
1701
1750
|
/* 5.13 (Chamber-OS 81): align="middle" centres body and footer cells on their row; bordered={false} drops the frame and
|
|
1702
1751
|
* the outer cells' side padding, so the table lines up with what's around it (a Card's heading). */
|
|
@@ -1738,6 +1787,8 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1738
1787
|
content: attr(data-label); content: attr(data-label) / '';
|
|
1739
1788
|
display: block; margin-bottom: 2px; font-family: var(--font-mono); font-size: 11px; line-height: 16px; font-weight: 400; color: var(--aura-fg-secondary);
|
|
1740
1789
|
}
|
|
1790
|
+
/* 5.26: a bleeding list keeps its rows' text level with the Card's content (16px where it doesn't bleed). */
|
|
1791
|
+
.aura-card__body > .aura-bleed.aura-bleed-frame > .aura-tbl--stack-md:not(.aura-tbl--cards) > * > .aura-tbl__row, .aura-card__body > .aura-bleed > .aura-bleed-frame > .aura-tbl--stack-md:not(.aura-tbl--cards) > * > .aura-tbl__row { padding-inline: max(var(--aura-card-bleed), var(--aura-space-4) - var(--aura-card-bleed) * 1000); }
|
|
1741
1792
|
}
|
|
1742
1793
|
@container aura-tbl (width < 640px) {
|
|
1743
1794
|
.aura-tbl--stack-sm, .aura-tbl--stack-sm > .aura-tbl__body, .aura-tbl--stack-sm > .aura-tbl__foot, .aura-tbl--stack-sm > .aura-tbl__body > .aura-tbl__row, .aura-tbl--stack-sm > .aura-tbl__foot > .aura-tbl__row, .aura-tbl--stack-sm > * > .aura-tbl__row > .aura-tbl__th, .aura-tbl--stack-sm > * > .aura-tbl__row > .aura-tbl__td { display: block; }
|
|
@@ -1760,6 +1811,8 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1760
1811
|
content: attr(data-label); content: attr(data-label) / '';
|
|
1761
1812
|
display: block; margin-bottom: 2px; font-family: var(--font-mono); font-size: 11px; line-height: 16px; font-weight: 400; color: var(--aura-fg-secondary);
|
|
1762
1813
|
}
|
|
1814
|
+
/* 5.26: a bleeding list keeps its rows' text level with the Card's content (16px where it doesn't bleed). */
|
|
1815
|
+
.aura-card__body > .aura-bleed.aura-bleed-frame > .aura-tbl--stack-sm:not(.aura-tbl--cards) > * > .aura-tbl__row, .aura-card__body > .aura-bleed > .aura-bleed-frame > .aura-tbl--stack-sm:not(.aura-tbl--cards) > * > .aura-tbl__row { padding-inline: max(var(--aura-card-bleed), var(--aura-space-4) - var(--aura-card-bleed) * 1000); }
|
|
1763
1816
|
}
|
|
1764
1817
|
|
|
1765
1818
|
/* 5.15 (Chamber-OS 85): stackStyle="cards" — each stacked row its own card (DataTable's card spacing), no outer frame.
|
|
@@ -1767,6 +1820,8 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1767
1820
|
.aura-tbl-cards { container: aura-tbl / inline-size; width: 100%; }
|
|
1768
1821
|
@container aura-tbl (width < 768px) {
|
|
1769
1822
|
.aura-tbl-cards--md > .aura-tbl-wrap { border: 0; border-radius: 0; background: transparent; overflow: visible; }
|
|
1823
|
+
.aura-card__body > .aura-bleed.aura-bleed-frame > .aura-tbl--cards.aura-tbl--stack-md, .aura-card__body > .aura-bleed > .aura-bleed-frame > .aura-tbl--cards.aura-tbl--stack-md { padding-inline: var(--aura-card-bleed); }
|
|
1824
|
+
.aura-card__body:last-child > .aura-bleed:last-child .aura-bleed-frame > .aura-tbl--cards.aura-tbl--stack-md { padding-bottom: var(--aura-card-bleed); }
|
|
1770
1825
|
.aura-tbl--cards.aura-tbl--stack-md > .aura-tbl__caption { padding: 0 0 var(--aura-space-3); }
|
|
1771
1826
|
.aura-tbl--cards.aura-tbl--stack-md > .aura-tbl__body > .aura-tbl__row, .aura-tbl--cards.aura-tbl--stack-md > .aura-tbl__foot > .aura-tbl__row {
|
|
1772
1827
|
margin-bottom: var(--aura-space-2); padding: var(--aura-tbl-card-py, var(--aura-space-4)) var(--aura-space-4);
|
|
@@ -1778,6 +1833,8 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1778
1833
|
}
|
|
1779
1834
|
@container aura-tbl (width < 640px) {
|
|
1780
1835
|
.aura-tbl-cards--sm > .aura-tbl-wrap { border: 0; border-radius: 0; background: transparent; overflow: visible; }
|
|
1836
|
+
.aura-card__body > .aura-bleed.aura-bleed-frame > .aura-tbl--cards.aura-tbl--stack-sm, .aura-card__body > .aura-bleed > .aura-bleed-frame > .aura-tbl--cards.aura-tbl--stack-sm { padding-inline: var(--aura-card-bleed); }
|
|
1837
|
+
.aura-card__body:last-child > .aura-bleed:last-child .aura-bleed-frame > .aura-tbl--cards.aura-tbl--stack-sm { padding-bottom: var(--aura-card-bleed); }
|
|
1781
1838
|
.aura-tbl--cards.aura-tbl--stack-sm > .aura-tbl__caption { padding: 0 0 var(--aura-space-3); }
|
|
1782
1839
|
.aura-tbl--cards.aura-tbl--stack-sm > .aura-tbl__body > .aura-tbl__row, .aura-tbl--cards.aura-tbl--stack-sm > .aura-tbl__foot > .aura-tbl__row {
|
|
1783
1840
|
margin-bottom: var(--aura-space-2); padding: var(--aura-tbl-card-py, var(--aura-space-4)) var(--aura-space-4);
|
|
@@ -1807,6 +1864,9 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1807
1864
|
* screen readers; the labels are generated content with empty alt text, so they aren't read twice. */
|
|
1808
1865
|
@container aura-stack (width < 9999.5px) {
|
|
1809
1866
|
.aura-table { background: transparent; border: 0; border-radius: 0; overflow: visible; }
|
|
1867
|
+
/* 5.26: stacked cards inside a framed Card keep its padding (0 where the Card is flush). */
|
|
1868
|
+
.aura-card__body > .aura-bleed .aura-bleed-frame { padding-inline: var(--aura-card-bleed); }
|
|
1869
|
+
.aura-card__body:last-child > .aura-bleed:last-child .aura-bleed-frame { padding-bottom: var(--aura-card-bleed); }
|
|
1810
1870
|
.aura-table__scroll { overflow: visible; height: auto; }
|
|
1811
1871
|
.aura-table__busy-bar { top: 0; }
|
|
1812
1872
|
.aura-table__picker { display: none; }
|