@jirawatpyk/aura-react 5.25.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 +37 -2
- package/dist/aura.bundle.js +1953 -1730
- package/dist/cjs/index.cjs +1952 -1729
- 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/dates.js +14 -0
- package/dist/esm/index.js +2 -0
- package/dist/index.d.cts +77 -4
- package/dist/index.d.ts +77 -4
- package/dist/styles.css +63 -4
- package/dist/styles.layer.css +63 -4
- package/package.json +1 -1
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`). */
|
|
@@ -1421,6 +1483,7 @@ export interface PaginationProps {
|
|
|
1421
1483
|
export interface AccordionItem {
|
|
1422
1484
|
id: string;
|
|
1423
1485
|
title: React$1.ReactNode;
|
|
1486
|
+
/** A second line under the title; read as the header button's description, not its name (5.26). */
|
|
1424
1487
|
description?: React$1.ReactNode | undefined;
|
|
1425
1488
|
content: React$1.ReactNode;
|
|
1426
1489
|
icon?: IconInput | undefined;
|
|
@@ -1548,6 +1611,10 @@ export declare const Select: React$1.ForwardRefExoticComponent<SelectProps & Rea
|
|
|
1548
1611
|
/** A compact filter for FilterBar (5.12): a small button reading "Status All ▾" that opens Select's list. The name
|
|
1549
1612
|
* is the accessible name, the chosen option its value; forms, refs and the keyboard work as in Select. */
|
|
1550
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>>;
|
|
1551
1618
|
export declare const RadioGroup: React$1.ForwardRefExoticComponent<RadioGroupProps & React$1.RefAttributes<HTMLFieldSetElement>>;
|
|
1552
1619
|
export declare const Switch: React$1.ForwardRefExoticComponent<SwitchProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1553
1620
|
/** One value, or with `multiple` any number (chips). Two call signatures so value/onChange are typed for each. */
|
|
@@ -1644,11 +1711,17 @@ export declare const Avatar: React$1.ForwardRefExoticComponent<AvatarProps & Rea
|
|
|
1644
1711
|
export declare const Stack: React$1.ForwardRefExoticComponent<StackProps & React$1.RefAttributes<HTMLElement>>;
|
|
1645
1712
|
/** Grid — equal columns. columns may be responsive ({ base: 1, md: 2, lg: 3 }), or use minItemWidth to fit as many as fit. */
|
|
1646
1713
|
export declare const Grid: React$1.ForwardRefExoticComponent<GridProps & React$1.RefAttributes<HTMLElement>>;
|
|
1647
|
-
/** Centred page column.
|
|
1648
|
-
|
|
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 {
|
|
1649
1717
|
/** `narrow` caps it at aura-container-narrow (720px). Default `default` (1280px). */
|
|
1650
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;
|
|
1651
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). */
|
|
1652
1725
|
className?: string | undefined;
|
|
1653
1726
|
style?: React$1.CSSProperties | undefined;
|
|
1654
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;
|
|
@@ -653,13 +654,33 @@ a.aura-icon-btn { text-decoration: none; }
|
|
|
653
654
|
padding: var(--aura-card-padding); background: var(--aura-bg-surface); color: var(--aura-fg-primary);
|
|
654
655
|
border: 1px solid var(--aura-border-default); border-radius: var(--aura-card-radius); box-shadow: var(--aura-shadow-enterprise);
|
|
655
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 */
|
|
656
658
|
}
|
|
657
659
|
.aura-card.is-interactive { cursor: pointer; transition: border-color var(--aura-duration-fast) var(--aura-ease); }
|
|
658
660
|
.aura-card.is-interactive:hover { border-color: var(--aura-border-control); }
|
|
659
661
|
/* 5.15 (Chamber-OS 93): frameless below a width — the rows inside become cards of their own. */
|
|
660
|
-
@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; } }
|
|
661
|
-
@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; } }
|
|
662
|
-
@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
|
+
}
|
|
663
684
|
.aura-card--creative { border: 2px solid var(--aura-border-strong); box-shadow: var(--aura-card-shadow-creative); }
|
|
664
685
|
.aura-card__head { display: flex; align-items: flex-start; gap: var(--aura-space-3); }
|
|
665
686
|
.aura-card__heading { flex: 1; min-width: 0; }
|
|
@@ -960,6 +981,7 @@ a.aura-tab { text-decoration: none; }
|
|
|
960
981
|
}
|
|
961
982
|
.aura-container { box-sizing: border-box; width: 100%; max-width: var(--aura-container-max); margin: 0 auto; padding: 0 var(--aura-space-4); }
|
|
962
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" */
|
|
963
985
|
/* Breakpoints: sm 640 · md 768 · lg 1024 · xl 1280 (aura-bp-* tokens; media queries can't read variables) */
|
|
964
986
|
@media (min-width: 640px) {
|
|
965
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))); }
|
|
@@ -1412,7 +1434,7 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1412
1434
|
.aura-toaster { left: var(--aura-space-4); right: var(--aura-space-4); bottom: var(--aura-space-4); width: auto; }
|
|
1413
1435
|
.aura-toaster.is-center { left: var(--aura-space-4); right: var(--aura-space-4); transform: none; }
|
|
1414
1436
|
.aura-toaster.is-top { top: calc(var(--aura-toaster-offset, var(--aura-space-4)) + env(safe-area-inset-top, 0px)); }
|
|
1415
|
-
.aura-card { padding: var(--aura-space-4); }
|
|
1437
|
+
.aura-card { padding: var(--aura-space-4); --aura-card-bleed: var(--aura-space-4); }
|
|
1416
1438
|
.aura-stat { padding: var(--aura-space-4); }
|
|
1417
1439
|
.aura-stat__value { font-size: 24px; }
|
|
1418
1440
|
.aura-tabs__list { gap: var(--aura-space-4); }
|
|
@@ -1531,6 +1553,16 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1531
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; }
|
|
1532
1554
|
.aura-filterselect.is-disabled .aura-filterselect__native { cursor: not-allowed; }
|
|
1533
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
|
+
}
|
|
1534
1566
|
|
|
1535
1567
|
/* Command palette: a search field over a grouped list, above everything else (it can open from a Dialog) */
|
|
1536
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); }
|
|
@@ -1698,6 +1730,22 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1698
1730
|
.aura-tbl .is-end { text-align: right; }
|
|
1699
1731
|
.aura-tbl .is-center { text-align: center; }
|
|
1700
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; }
|
|
1701
1749
|
.aura-tbl-wrap:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: 2px; }
|
|
1702
1750
|
/* 5.13 (Chamber-OS 81): align="middle" centres body and footer cells on their row; bordered={false} drops the frame and
|
|
1703
1751
|
* the outer cells' side padding, so the table lines up with what's around it (a Card's heading). */
|
|
@@ -1739,6 +1787,8 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1739
1787
|
content: attr(data-label); content: attr(data-label) / '';
|
|
1740
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);
|
|
1741
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); }
|
|
1742
1792
|
}
|
|
1743
1793
|
@container aura-tbl (width < 640px) {
|
|
1744
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; }
|
|
@@ -1761,6 +1811,8 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1761
1811
|
content: attr(data-label); content: attr(data-label) / '';
|
|
1762
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);
|
|
1763
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); }
|
|
1764
1816
|
}
|
|
1765
1817
|
|
|
1766
1818
|
/* 5.15 (Chamber-OS 85): stackStyle="cards" — each stacked row its own card (DataTable's card spacing), no outer frame.
|
|
@@ -1768,6 +1820,8 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1768
1820
|
.aura-tbl-cards { container: aura-tbl / inline-size; width: 100%; }
|
|
1769
1821
|
@container aura-tbl (width < 768px) {
|
|
1770
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); }
|
|
1771
1825
|
.aura-tbl--cards.aura-tbl--stack-md > .aura-tbl__caption { padding: 0 0 var(--aura-space-3); }
|
|
1772
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 {
|
|
1773
1827
|
margin-bottom: var(--aura-space-2); padding: var(--aura-tbl-card-py, var(--aura-space-4)) var(--aura-space-4);
|
|
@@ -1779,6 +1833,8 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1779
1833
|
}
|
|
1780
1834
|
@container aura-tbl (width < 640px) {
|
|
1781
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); }
|
|
1782
1838
|
.aura-tbl--cards.aura-tbl--stack-sm > .aura-tbl__caption { padding: 0 0 var(--aura-space-3); }
|
|
1783
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 {
|
|
1784
1840
|
margin-bottom: var(--aura-space-2); padding: var(--aura-tbl-card-py, var(--aura-space-4)) var(--aura-space-4);
|
|
@@ -1808,6 +1864,9 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1808
1864
|
* screen readers; the labels are generated content with empty alt text, so they aren't read twice. */
|
|
1809
1865
|
@container aura-stack (width < 9999.5px) {
|
|
1810
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); }
|
|
1811
1870
|
.aura-table__scroll { overflow: visible; height: auto; }
|
|
1812
1871
|
.aura-table__busy-bar { top: 0; }
|
|
1813
1872
|
.aura-table__picker { display: none; }
|
package/dist/styles.layer.css
CHANGED
|
@@ -127,6 +127,7 @@ button.aura-btn--creative[aria-disabled='true']:hover { box-shadow: var(--aura-s
|
|
|
127
127
|
.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); }
|
|
128
128
|
/* Server mode refresh: the previous page stays, inactive, under a progress bar until the next one arrives */
|
|
129
129
|
.aura-table.is-refreshing .aura-table__row { opacity: 0.6; pointer-events: none; }
|
|
130
|
+
.aura-table.aura-table--borderless { border: 0; border-radius: 0; } /* 5.26: bordered={false} */
|
|
130
131
|
.aura-table__busy-bar {
|
|
131
132
|
position: absolute; z-index: 6; top: calc(var(--aura-table-row-height) - 2px); left: 0; right: 0; height: 2px; overflow: hidden;
|
|
132
133
|
border-radius: var(--aura-radius-full); pointer-events: none;
|
|
@@ -655,13 +656,33 @@ a.aura-icon-btn { text-decoration: none; }
|
|
|
655
656
|
padding: var(--aura-card-padding); background: var(--aura-bg-surface); color: var(--aura-fg-primary);
|
|
656
657
|
border: 1px solid var(--aura-border-default); border-radius: var(--aura-card-radius); box-shadow: var(--aura-shadow-enterprise);
|
|
657
658
|
font-family: var(--font-sans); font-size: 14px;
|
|
659
|
+
--aura-card-bleed: var(--aura-card-padding); /* 5.26: how far a bleeding table reaches out; 0 where the card is flush */
|
|
658
660
|
}
|
|
659
661
|
.aura-card.is-interactive { cursor: pointer; transition: border-color var(--aura-duration-fast) var(--aura-ease); }
|
|
660
662
|
.aura-card.is-interactive:hover { border-color: var(--aura-border-control); }
|
|
661
663
|
/* 5.15 (Chamber-OS 93): frameless below a width — the rows inside become cards of their own. */
|
|
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; } }
|
|
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; } }
|
|
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; } }
|
|
664
|
+
@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; } }
|
|
665
|
+
@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; } }
|
|
666
|
+
@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; } }
|
|
667
|
+
/* 5.26 (Chamber-OS 127): bleed — a table that is a direct child of a Card's content spans its inner width; the side
|
|
668
|
+
* borders and radius go (a 0px bleed — a flush card — keeps them: 1px - min(1px, 0) = 1px). As the card's last content
|
|
669
|
+
* it also drops its bottom rule and the card's radius closes it. */
|
|
670
|
+
/* Two classes deep so it beats a stackable Table's width: 100%. `* 1000` turns any bleed into a 0 radius; 0 keeps it. */
|
|
671
|
+
.aura-card .aura-card__body > .aura-bleed { margin-inline: calc(-1 * var(--aura-card-bleed)); width: auto; }
|
|
672
|
+
/* A Table with bordered={false} too: its outer cells take the bleed (0 where the card is flush, as before). */
|
|
673
|
+
.aura-card__body > .aura-bleed .aura-tbl-wrap.is-flush > .aura-tbl > * > .aura-tbl__row > :first-child,
|
|
674
|
+
.aura-card__body > .aura-bleed.aura-tbl-wrap.is-flush > .aura-tbl > * > .aura-tbl__row > :first-child { padding-inline-start: var(--aura-card-bleed); }
|
|
675
|
+
.aura-card__body > .aura-bleed .aura-tbl-wrap.is-flush > .aura-tbl > * > .aura-tbl__row > :last-child,
|
|
676
|
+
.aura-card__body > .aura-bleed.aura-tbl-wrap.is-flush > .aura-tbl > * > .aura-tbl__row > :last-child { padding-inline-end: var(--aura-card-bleed); }
|
|
677
|
+
.aura-card__body > .aura-bleed.aura-bleed-frame, .aura-card__body > .aura-bleed .aura-bleed-frame {
|
|
678
|
+
border-inline-width: calc(1px - min(1px, var(--aura-card-bleed))); border-radius: max(0px, var(--aura-card-radius) - var(--aura-card-bleed) * 1000);
|
|
679
|
+
}
|
|
680
|
+
.aura-card__body:last-child > .aura-bleed:last-child { margin-bottom: calc(-1 * var(--aura-card-bleed)); }
|
|
681
|
+
.aura-card__body:last-child > .aura-bleed:last-child.aura-bleed-frame, .aura-card__body:last-child > .aura-bleed:last-child .aura-bleed-frame {
|
|
682
|
+
border-bottom-width: calc(1px - min(1px, var(--aura-card-bleed)));
|
|
683
|
+
border-bottom-left-radius: calc(var(--aura-card-radius) - min(1px, var(--aura-card-bleed)));
|
|
684
|
+
border-bottom-right-radius: calc(var(--aura-card-radius) - min(1px, var(--aura-card-bleed)));
|
|
685
|
+
}
|
|
665
686
|
.aura-card--creative { border: 2px solid var(--aura-border-strong); box-shadow: var(--aura-card-shadow-creative); }
|
|
666
687
|
.aura-card__head { display: flex; align-items: flex-start; gap: var(--aura-space-3); }
|
|
667
688
|
.aura-card__heading { flex: 1; min-width: 0; }
|
|
@@ -962,6 +983,7 @@ a.aura-tab { text-decoration: none; }
|
|
|
962
983
|
}
|
|
963
984
|
.aura-container { box-sizing: border-box; width: 100%; max-width: var(--aura-container-max); margin: 0 auto; padding: 0 var(--aura-space-4); }
|
|
964
985
|
.aura-container.is-narrow { max-width: var(--aura-container-narrow); }
|
|
986
|
+
.aura-container.is-start { margin-inline: 0; } /* 5.26 (Chamber-OS 126): align="start" */
|
|
965
987
|
/* Breakpoints: sm 640 · md 768 · lg 1024 · xl 1280 (aura-bp-* tokens; media queries can't read variables) */
|
|
966
988
|
@media (min-width: 640px) {
|
|
967
989
|
.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))); }
|
|
@@ -1414,7 +1436,7 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1414
1436
|
.aura-toaster { left: var(--aura-space-4); right: var(--aura-space-4); bottom: var(--aura-space-4); width: auto; }
|
|
1415
1437
|
.aura-toaster.is-center { left: var(--aura-space-4); right: var(--aura-space-4); transform: none; }
|
|
1416
1438
|
.aura-toaster.is-top { top: calc(var(--aura-toaster-offset, var(--aura-space-4)) + env(safe-area-inset-top, 0px)); }
|
|
1417
|
-
.aura-card { padding: var(--aura-space-4); }
|
|
1439
|
+
.aura-card { padding: var(--aura-space-4); --aura-card-bleed: var(--aura-space-4); }
|
|
1418
1440
|
.aura-stat { padding: var(--aura-space-4); }
|
|
1419
1441
|
.aura-stat__value { font-size: 24px; }
|
|
1420
1442
|
.aura-tabs__list { gap: var(--aura-space-4); }
|
|
@@ -1533,6 +1555,16 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1533
1555
|
.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; }
|
|
1534
1556
|
.aura-filterselect.is-disabled .aura-filterselect__native { cursor: not-allowed; }
|
|
1535
1557
|
@media (forced-colors: active) { .aura-filterselect__face { border-color: ButtonText; } }
|
|
1558
|
+
/* 5.26 (Chamber-OS 128) FilterDateRange: presets beside the range calendar; above it on phones. */
|
|
1559
|
+
.aura-filterdate__pop { display: flex; gap: var(--aura-space-3); overflow-y: auto; }
|
|
1560
|
+
.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); }
|
|
1561
|
+
.aura-filterdate__preset { justify-content: flex-start; }
|
|
1562
|
+
.aura-filterdate__preset.is-selected { background: var(--aura-bg-selected); }
|
|
1563
|
+
@media (forced-colors: active) { .aura-filterdate__preset.is-selected { outline: 2px solid Highlight; outline-offset: -2px; } }
|
|
1564
|
+
@media (max-width: 639.98px) {
|
|
1565
|
+
.aura-filterdate__pop { flex-direction: column; }
|
|
1566
|
+
.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); }
|
|
1567
|
+
}
|
|
1536
1568
|
|
|
1537
1569
|
/* Command palette: a search field over a grouped list, above everything else (it can open from a Dialog) */
|
|
1538
1570
|
.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); }
|
|
@@ -1700,6 +1732,22 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1700
1732
|
.aura-tbl .is-end { text-align: right; }
|
|
1701
1733
|
.aura-tbl .is-center { text-align: center; }
|
|
1702
1734
|
.aura-tbl .is-numeric { font-variant-numeric: tabular-nums; white-space: nowrap; }
|
|
1735
|
+
/* 5.26 (Chamber-OS 129) stickyHeader. To the page: the box must not be a scroll container, so it clips sideways
|
|
1736
|
+
* instead (nothing overflows while it fits; JavaScript marks a table that doesn't, which scrolls as before). In a
|
|
1737
|
+
* maxHeight box: the box scrolls both ways and the header pins to its top. The rule under the band moves with it. */
|
|
1738
|
+
.aura-tbl-wrap.is-sticky-page:not(.is-wide) { overflow-x: clip; }
|
|
1739
|
+
.aura-tbl-wrap.has-max, .aura-tbl-cards > .aura-tbl-wrap.has-max { overflow: auto; box-sizing: border-box; }
|
|
1740
|
+
.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 {
|
|
1741
|
+
position: sticky; top: var(--aura-table-sticky-top, var(--aura-shell-bar-height, 0px)); z-index: 2;
|
|
1742
|
+
border-bottom-width: 0; box-shadow: inset 0 -1px 0 var(--aura-border-default); /* one rule, at rest and pinned */
|
|
1743
|
+
}
|
|
1744
|
+
/* Forced colours drop the shadow; a pseudo-element line moves with the pinned cell (a collapsed border doesn't). */
|
|
1745
|
+
@media (forced-colors: active) {
|
|
1746
|
+
.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 {
|
|
1747
|
+
content: ''; position: absolute; inset: auto 0 0 0; border-bottom: 1px solid CanvasText;
|
|
1748
|
+
}
|
|
1749
|
+
}
|
|
1750
|
+
.aura-tbl-wrap.is-sticky-box > .aura-tbl > .aura-tbl__head .aura-tbl__th { top: 0; }
|
|
1703
1751
|
.aura-tbl-wrap:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: 2px; }
|
|
1704
1752
|
/* 5.13 (Chamber-OS 81): align="middle" centres body and footer cells on their row; bordered={false} drops the frame and
|
|
1705
1753
|
* the outer cells' side padding, so the table lines up with what's around it (a Card's heading). */
|
|
@@ -1741,6 +1789,8 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1741
1789
|
content: attr(data-label); content: attr(data-label) / '';
|
|
1742
1790
|
display: block; margin-bottom: 2px; font-family: var(--font-mono); font-size: 11px; line-height: 16px; font-weight: 400; color: var(--aura-fg-secondary);
|
|
1743
1791
|
}
|
|
1792
|
+
/* 5.26: a bleeding list keeps its rows' text level with the Card's content (16px where it doesn't bleed). */
|
|
1793
|
+
.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); }
|
|
1744
1794
|
}
|
|
1745
1795
|
@container aura-tbl (width < 640px) {
|
|
1746
1796
|
.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; }
|
|
@@ -1763,6 +1813,8 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1763
1813
|
content: attr(data-label); content: attr(data-label) / '';
|
|
1764
1814
|
display: block; margin-bottom: 2px; font-family: var(--font-mono); font-size: 11px; line-height: 16px; font-weight: 400; color: var(--aura-fg-secondary);
|
|
1765
1815
|
}
|
|
1816
|
+
/* 5.26: a bleeding list keeps its rows' text level with the Card's content (16px where it doesn't bleed). */
|
|
1817
|
+
.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); }
|
|
1766
1818
|
}
|
|
1767
1819
|
|
|
1768
1820
|
/* 5.15 (Chamber-OS 85): stackStyle="cards" — each stacked row its own card (DataTable's card spacing), no outer frame.
|
|
@@ -1770,6 +1822,8 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1770
1822
|
.aura-tbl-cards { container: aura-tbl / inline-size; width: 100%; }
|
|
1771
1823
|
@container aura-tbl (width < 768px) {
|
|
1772
1824
|
.aura-tbl-cards--md > .aura-tbl-wrap { border: 0; border-radius: 0; background: transparent; overflow: visible; }
|
|
1825
|
+
.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); }
|
|
1826
|
+
.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); }
|
|
1773
1827
|
.aura-tbl--cards.aura-tbl--stack-md > .aura-tbl__caption { padding: 0 0 var(--aura-space-3); }
|
|
1774
1828
|
.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 {
|
|
1775
1829
|
margin-bottom: var(--aura-space-2); padding: var(--aura-tbl-card-py, var(--aura-space-4)) var(--aura-space-4);
|
|
@@ -1781,6 +1835,8 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1781
1835
|
}
|
|
1782
1836
|
@container aura-tbl (width < 640px) {
|
|
1783
1837
|
.aura-tbl-cards--sm > .aura-tbl-wrap { border: 0; border-radius: 0; background: transparent; overflow: visible; }
|
|
1838
|
+
.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); }
|
|
1839
|
+
.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); }
|
|
1784
1840
|
.aura-tbl--cards.aura-tbl--stack-sm > .aura-tbl__caption { padding: 0 0 var(--aura-space-3); }
|
|
1785
1841
|
.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 {
|
|
1786
1842
|
margin-bottom: var(--aura-space-2); padding: var(--aura-tbl-card-py, var(--aura-space-4)) var(--aura-space-4);
|
|
@@ -1810,6 +1866,9 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1810
1866
|
* screen readers; the labels are generated content with empty alt text, so they aren't read twice. */
|
|
1811
1867
|
@container aura-stack (width < 9999.5px) {
|
|
1812
1868
|
.aura-table { background: transparent; border: 0; border-radius: 0; overflow: visible; }
|
|
1869
|
+
/* 5.26: stacked cards inside a framed Card keep its padding (0 where the Card is flush). */
|
|
1870
|
+
.aura-card__body > .aura-bleed .aura-bleed-frame { padding-inline: var(--aura-card-bleed); }
|
|
1871
|
+
.aura-card__body:last-child > .aura-bleed:last-child .aura-bleed-frame { padding-bottom: var(--aura-card-bleed); }
|
|
1813
1872
|
.aura-table__scroll { overflow: visible; height: auto; }
|
|
1814
1873
|
.aura-table__busy-bar { top: 0; }
|
|
1815
1874
|
.aura-table__picker { display: none; }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jirawatpyk/aura-react",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.26.0",
|
|
4
4
|
"description": "AURA Design System — React components (Enterprise Standard, Human Creative). Thai-first: Buddhist-era dates, Thai collation.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|