@jirawatpyk/aura-react 5.32.0 → 5.33.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 +8 -0
- package/dist/aura.bundle.js +34 -14
- package/dist/cjs/index.cjs +34 -14
- package/dist/esm/AppShell.js +33 -14
- package/dist/esm/PageHeader.js +1 -0
- package/dist/index.d.cts +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/server/index.cjs +1 -0
- package/dist/server/index.d.cts +4 -0
- package/dist/server/index.d.ts +4 -0
- package/dist/server/index.js +1 -0
- package/dist/styles.css +41 -24
- package/dist/styles.layer.css +41 -24
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -186,6 +186,14 @@ DataTable with sort and page in the URL (4.17): `onStateChange={({ sort, page })
|
|
|
186
186
|
- **Time zone**: `timeZone` on AuraProvider, DatePicker, DateRangePicker and Calendar decides "today" (the marker, `min`/`max="today"`, the first month shown); or pass `today` as an ISO date. `todayIn('Asia/Bangkok')` is exported from the root and `/server`.
|
|
187
187
|
- **Toasts** queue past three instead of dropping: six in a row all show, in order, three at a time.
|
|
188
188
|
|
|
189
|
+
## 5.33 — DxT Monitor requests 5–8
|
|
190
|
+
|
|
191
|
+
- **Hover shows on the canvas** (request 5): in light, `aura-bg-surface-hover` is zinc-50 — the canvas itself — so SideNav's rows, an IconButton or ghost Button in its header or footer (Sign out), and the same on the page's canvas (PageHeader actions, Pagination, a selectable Tag) showed no hover. A new token, `aura-bg-canvas-hover` (zinc-100 light, zinc-800 dark), is the hover inside AppShell and SideNav; cards, tables, inputs, the top bar, dialogs, drawers and popovers inside them keep `aura-bg-surface-hover`. Hover fills now read `--aura-hover`, falling back to the surface hover: outside AppShell, set `--aura-hover: var(--aura-bg-canvas-hover)` on your own canvas-coloured area.
|
|
192
|
+
- **AppShell `headerHideFrom="lg"`** (request 6): the top bar, `header` and all, shows only below 1024px — where the menu button is — as a header-less bar does: from lg up it is hidden and `--aura-shell-bar-height` is 0. For apps whose phone pages draw a top bar (brand, avatar) and whose desktop pages don't. Default: the bar shows at every width.
|
|
193
|
+
- **PageHeader `breadcrumb`** (request 7): a `<Breadcrumb>` above the title, 4px from it like the eyebrow, in its own `div` — a `nav` can't sit in the eyebrow's `p` (invalid HTML, a hydration error) — with Breadcrumb's own 13px sans. With an eyebrow too, the breadcrumb comes first.
|
|
194
|
+
- **Phone drawer header = bar height** (request 8): in AppShell's phone drawer, a SideNav with `headerDivider` takes the top bar's height (56px, or more when the bar's header wraps), content centred, so its line meets the bar's line beside it; the close button is centred on it. The fixed desktop sidebar keeps 72px.
|
|
195
|
+
- **Also:** the nav drawer's close button is a 44px target on phones and touch screens (the header leaves it 60px); the divided header's layout no longer needs `:has()` (older Safari and Firefox centre the close button too); a DatePicker's or read-only Select's toggle shows its hover on the grey read-only ground.
|
|
196
|
+
|
|
189
197
|
## 5.32 — Icon tips, PageHeader, SideNav header divider, pill skeletons (DxT Monitor requests 1–4)
|
|
190
198
|
|
|
191
199
|
### DxT Monitor requests 1, 3, 4
|
package/dist/aura.bundle.js
CHANGED
|
@@ -7637,6 +7637,7 @@ window.Aura = (() => {
|
|
|
7637
7637
|
h8(
|
|
7638
7638
|
"div",
|
|
7639
7639
|
{ className: "aura-page-header__text" },
|
|
7640
|
+
props.breadcrumb != null && props.breadcrumb !== false ? h8("div", { className: "aura-page-header__breadcrumb" }, props.breadcrumb) : null,
|
|
7640
7641
|
props.eyebrow != null && props.eyebrow !== false ? h8("p", { className: "aura-page-header__eyebrow" }, props.eyebrow) : null,
|
|
7641
7642
|
h8("h" + level, { className: "aura-page-header__title", id: props.titleId }, props.title),
|
|
7642
7643
|
props.meta != null && props.meta !== false ? h8("div", { className: "aura-page-header__meta" }, props.meta) : null
|
|
@@ -7669,12 +7670,15 @@ window.Aura = (() => {
|
|
|
7669
7670
|
const barRef = React44.useRef(null);
|
|
7670
7671
|
const mergedRef = useMergedRef(ref, rootRef);
|
|
7671
7672
|
const hasBar = !!(props.header || props.nav);
|
|
7673
|
+
const barH = React44.useState(null);
|
|
7672
7674
|
useIsoLayoutEffect(
|
|
7673
7675
|
function() {
|
|
7674
7676
|
const root = rootRef.current, bar = barRef.current;
|
|
7675
7677
|
if (!root || !bar) return;
|
|
7676
7678
|
function sync() {
|
|
7677
|
-
|
|
7679
|
+
const h10 = bar.getBoundingClientRect().height;
|
|
7680
|
+
root.style.setProperty("--aura-shell-bar-height", h10 + "px");
|
|
7681
|
+
if (h10 > 0) barH[1](Math.round(h10));
|
|
7678
7682
|
}
|
|
7679
7683
|
sync();
|
|
7680
7684
|
const ro = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(sync);
|
|
@@ -7712,6 +7716,8 @@ window.Aura = (() => {
|
|
|
7712
7716
|
/* 5.14: no top bar at all, or one that only holds the menu button (gone from lg up): the bar-height token is 0. */
|
|
7713
7717
|
!props.header && !props.nav && "aura-shell--no-bar",
|
|
7714
7718
|
!props.header && props.nav && "aura-shell--menu-bar",
|
|
7719
|
+
/* 5.33 (DxT Monitor #6): a header bar for phones only. */
|
|
7720
|
+
props.header && props.headerHideFrom === "lg" && "aura-shell--menu-bar",
|
|
7715
7721
|
props.className
|
|
7716
7722
|
)
|
|
7717
7723
|
},
|
|
@@ -7726,23 +7732,37 @@ window.Aura = (() => {
|
|
|
7726
7732
|
side: "left",
|
|
7727
7733
|
size: "nav",
|
|
7728
7734
|
"aria-label": props.navLabel || t.navigation,
|
|
7729
|
-
dismissible: true
|
|
7735
|
+
dismissible: true,
|
|
7736
|
+
closeProps: { touchHeight: true },
|
|
7737
|
+
className: navEl && navEl.props.headerDivider && navEl.props.header ? "aura-drawer--nav-divided" : void 0,
|
|
7738
|
+
style: barH[0] ? { "--aura-shell-bar-height": barH[0] + "px" } : void 0
|
|
7730
7739
|
},
|
|
7731
7740
|
drawerNav
|
|
7732
7741
|
) : null,
|
|
7733
|
-
/* @__PURE__ */ React44.createElement("div", { className: "aura-shell__main" }, props.header || props.nav ? /* @__PURE__ */ React44.createElement(
|
|
7734
|
-
|
|
7742
|
+
/* @__PURE__ */ React44.createElement("div", { className: "aura-shell__main" }, props.header || props.nav ? /* @__PURE__ */ React44.createElement(
|
|
7743
|
+
"header",
|
|
7735
7744
|
{
|
|
7736
|
-
|
|
7737
|
-
|
|
7738
|
-
|
|
7739
|
-
|
|
7740
|
-
|
|
7741
|
-
|
|
7742
|
-
|
|
7743
|
-
|
|
7744
|
-
|
|
7745
|
-
|
|
7745
|
+
ref: barRef,
|
|
7746
|
+
className: cx(
|
|
7747
|
+
"aura-shell__bar",
|
|
7748
|
+
(!props.header || props.headerHideFrom === "lg") && "aura-shell__bar--menu-only"
|
|
7749
|
+
)
|
|
7750
|
+
},
|
|
7751
|
+
props.nav ? /* @__PURE__ */ React44.createElement(
|
|
7752
|
+
IconButton,
|
|
7753
|
+
{
|
|
7754
|
+
className: "aura-shell__menu",
|
|
7755
|
+
icon: /* @__PURE__ */ React44.createElement(IconMenu, null),
|
|
7756
|
+
label: props.menuLabel || t.openNav,
|
|
7757
|
+
size: "md",
|
|
7758
|
+
onClick: function() {
|
|
7759
|
+
setOpen(true);
|
|
7760
|
+
},
|
|
7761
|
+
"aria-expanded": open
|
|
7762
|
+
}
|
|
7763
|
+
) : null,
|
|
7764
|
+
/* @__PURE__ */ React44.createElement("div", { className: "aura-shell__bar-content" }, props.header)
|
|
7765
|
+
) : null, /* @__PURE__ */ React44.createElement(
|
|
7746
7766
|
"main",
|
|
7747
7767
|
{
|
|
7748
7768
|
className: cx("aura-shell__content", props.contentPadding === false && "is-flush"),
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -7619,6 +7619,7 @@ var PageHeader = React43.forwardRef(function PageHeader2(props, ref) {
|
|
|
7619
7619
|
h8(
|
|
7620
7620
|
"div",
|
|
7621
7621
|
{ className: "aura-page-header__text" },
|
|
7622
|
+
props.breadcrumb != null && props.breadcrumb !== false ? h8("div", { className: "aura-page-header__breadcrumb" }, props.breadcrumb) : null,
|
|
7622
7623
|
props.eyebrow != null && props.eyebrow !== false ? h8("p", { className: "aura-page-header__eyebrow" }, props.eyebrow) : null,
|
|
7623
7624
|
h8("h" + level, { className: "aura-page-header__title", id: props.titleId }, props.title),
|
|
7624
7625
|
props.meta != null && props.meta !== false ? h8("div", { className: "aura-page-header__meta" }, props.meta) : null
|
|
@@ -7651,12 +7652,15 @@ var AppShell = React44.forwardRef(function AppShell2(props, ref) {
|
|
|
7651
7652
|
const barRef = React44.useRef(null);
|
|
7652
7653
|
const mergedRef = useMergedRef(ref, rootRef);
|
|
7653
7654
|
const hasBar = !!(props.header || props.nav);
|
|
7655
|
+
const barH = React44.useState(null);
|
|
7654
7656
|
useIsoLayoutEffect(
|
|
7655
7657
|
function() {
|
|
7656
7658
|
const root = rootRef.current, bar = barRef.current;
|
|
7657
7659
|
if (!root || !bar) return;
|
|
7658
7660
|
function sync() {
|
|
7659
|
-
|
|
7661
|
+
const h10 = bar.getBoundingClientRect().height;
|
|
7662
|
+
root.style.setProperty("--aura-shell-bar-height", h10 + "px");
|
|
7663
|
+
if (h10 > 0) barH[1](Math.round(h10));
|
|
7660
7664
|
}
|
|
7661
7665
|
sync();
|
|
7662
7666
|
const ro = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(sync);
|
|
@@ -7694,6 +7698,8 @@ var AppShell = React44.forwardRef(function AppShell2(props, ref) {
|
|
|
7694
7698
|
/* 5.14: no top bar at all, or one that only holds the menu button (gone from lg up): the bar-height token is 0. */
|
|
7695
7699
|
!props.header && !props.nav && "aura-shell--no-bar",
|
|
7696
7700
|
!props.header && props.nav && "aura-shell--menu-bar",
|
|
7701
|
+
/* 5.33 (DxT Monitor #6): a header bar for phones only. */
|
|
7702
|
+
props.header && props.headerHideFrom === "lg" && "aura-shell--menu-bar",
|
|
7697
7703
|
props.className
|
|
7698
7704
|
)
|
|
7699
7705
|
},
|
|
@@ -7708,23 +7714,37 @@ var AppShell = React44.forwardRef(function AppShell2(props, ref) {
|
|
|
7708
7714
|
side: "left",
|
|
7709
7715
|
size: "nav",
|
|
7710
7716
|
"aria-label": props.navLabel || t.navigation,
|
|
7711
|
-
dismissible: true
|
|
7717
|
+
dismissible: true,
|
|
7718
|
+
closeProps: { touchHeight: true },
|
|
7719
|
+
className: navEl && navEl.props.headerDivider && navEl.props.header ? "aura-drawer--nav-divided" : void 0,
|
|
7720
|
+
style: barH[0] ? { "--aura-shell-bar-height": barH[0] + "px" } : void 0
|
|
7712
7721
|
},
|
|
7713
7722
|
drawerNav
|
|
7714
7723
|
) : null,
|
|
7715
|
-
/* @__PURE__ */ React44.createElement("div", { className: "aura-shell__main" }, props.header || props.nav ? /* @__PURE__ */ React44.createElement(
|
|
7716
|
-
|
|
7724
|
+
/* @__PURE__ */ React44.createElement("div", { className: "aura-shell__main" }, props.header || props.nav ? /* @__PURE__ */ React44.createElement(
|
|
7725
|
+
"header",
|
|
7717
7726
|
{
|
|
7718
|
-
|
|
7719
|
-
|
|
7720
|
-
|
|
7721
|
-
|
|
7722
|
-
|
|
7723
|
-
|
|
7724
|
-
|
|
7725
|
-
|
|
7726
|
-
|
|
7727
|
-
|
|
7727
|
+
ref: barRef,
|
|
7728
|
+
className: cx(
|
|
7729
|
+
"aura-shell__bar",
|
|
7730
|
+
(!props.header || props.headerHideFrom === "lg") && "aura-shell__bar--menu-only"
|
|
7731
|
+
)
|
|
7732
|
+
},
|
|
7733
|
+
props.nav ? /* @__PURE__ */ React44.createElement(
|
|
7734
|
+
IconButton,
|
|
7735
|
+
{
|
|
7736
|
+
className: "aura-shell__menu",
|
|
7737
|
+
icon: /* @__PURE__ */ React44.createElement(IconMenu, null),
|
|
7738
|
+
label: props.menuLabel || t.openNav,
|
|
7739
|
+
size: "md",
|
|
7740
|
+
onClick: function() {
|
|
7741
|
+
setOpen(true);
|
|
7742
|
+
},
|
|
7743
|
+
"aria-expanded": open
|
|
7744
|
+
}
|
|
7745
|
+
) : null,
|
|
7746
|
+
/* @__PURE__ */ React44.createElement("div", { className: "aura-shell__bar-content" }, props.header)
|
|
7747
|
+
) : null, /* @__PURE__ */ React44.createElement(
|
|
7728
7748
|
"main",
|
|
7729
7749
|
{
|
|
7730
7750
|
className: cx("aura-shell__content", props.contentPadding === false && "is-flush"),
|
package/dist/esm/AppShell.js
CHANGED
|
@@ -28,12 +28,15 @@ const AppShell = React.forwardRef(function AppShell2(props, ref) {
|
|
|
28
28
|
const barRef = React.useRef(null);
|
|
29
29
|
const mergedRef = useMergedRef(ref, rootRef);
|
|
30
30
|
const hasBar = !!(props.header || props.nav);
|
|
31
|
+
const barH = React.useState(null);
|
|
31
32
|
useIsoLayoutEffect(
|
|
32
33
|
function() {
|
|
33
34
|
const root = rootRef.current, bar = barRef.current;
|
|
34
35
|
if (!root || !bar) return;
|
|
35
36
|
function sync() {
|
|
36
|
-
|
|
37
|
+
const h = bar.getBoundingClientRect().height;
|
|
38
|
+
root.style.setProperty("--aura-shell-bar-height", h + "px");
|
|
39
|
+
if (h > 0) barH[1](Math.round(h));
|
|
37
40
|
}
|
|
38
41
|
sync();
|
|
39
42
|
const ro = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(sync);
|
|
@@ -71,6 +74,8 @@ const AppShell = React.forwardRef(function AppShell2(props, ref) {
|
|
|
71
74
|
/* 5.14: no top bar at all, or one that only holds the menu button (gone from lg up): the bar-height token is 0. */
|
|
72
75
|
!props.header && !props.nav && "aura-shell--no-bar",
|
|
73
76
|
!props.header && props.nav && "aura-shell--menu-bar",
|
|
77
|
+
/* 5.33 (DxT Monitor #6): a header bar for phones only. */
|
|
78
|
+
props.header && props.headerHideFrom === "lg" && "aura-shell--menu-bar",
|
|
74
79
|
props.className
|
|
75
80
|
)
|
|
76
81
|
},
|
|
@@ -85,23 +90,37 @@ const AppShell = React.forwardRef(function AppShell2(props, ref) {
|
|
|
85
90
|
side: "left",
|
|
86
91
|
size: "nav",
|
|
87
92
|
"aria-label": props.navLabel || t.navigation,
|
|
88
|
-
dismissible: true
|
|
93
|
+
dismissible: true,
|
|
94
|
+
closeProps: { touchHeight: true },
|
|
95
|
+
className: navEl && navEl.props.headerDivider && navEl.props.header ? "aura-drawer--nav-divided" : void 0,
|
|
96
|
+
style: barH[0] ? { "--aura-shell-bar-height": barH[0] + "px" } : void 0
|
|
89
97
|
},
|
|
90
98
|
drawerNav
|
|
91
99
|
) : null,
|
|
92
|
-
/* @__PURE__ */ React.createElement("div", { className: "aura-shell__main" }, props.header || props.nav ? /* @__PURE__ */ React.createElement(
|
|
93
|
-
|
|
100
|
+
/* @__PURE__ */ React.createElement("div", { className: "aura-shell__main" }, props.header || props.nav ? /* @__PURE__ */ React.createElement(
|
|
101
|
+
"header",
|
|
94
102
|
{
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
ref: barRef,
|
|
104
|
+
className: cx(
|
|
105
|
+
"aura-shell__bar",
|
|
106
|
+
(!props.header || props.headerHideFrom === "lg") && "aura-shell__bar--menu-only"
|
|
107
|
+
)
|
|
108
|
+
},
|
|
109
|
+
props.nav ? /* @__PURE__ */ React.createElement(
|
|
110
|
+
IconButton,
|
|
111
|
+
{
|
|
112
|
+
className: "aura-shell__menu",
|
|
113
|
+
icon: /* @__PURE__ */ React.createElement(IconMenu, null),
|
|
114
|
+
label: props.menuLabel || t.openNav,
|
|
115
|
+
size: "md",
|
|
116
|
+
onClick: function() {
|
|
117
|
+
setOpen(true);
|
|
118
|
+
},
|
|
119
|
+
"aria-expanded": open
|
|
120
|
+
}
|
|
121
|
+
) : null,
|
|
122
|
+
/* @__PURE__ */ React.createElement("div", { className: "aura-shell__bar-content" }, props.header)
|
|
123
|
+
) : null, /* @__PURE__ */ React.createElement(
|
|
105
124
|
"main",
|
|
106
125
|
{
|
|
107
126
|
className: cx("aura-shell__content", props.contentPadding === false && "is-flush"),
|
package/dist/esm/PageHeader.js
CHANGED
|
@@ -15,6 +15,7 @@ const PageHeader = React.forwardRef(function PageHeader2(props, ref) {
|
|
|
15
15
|
h(
|
|
16
16
|
"div",
|
|
17
17
|
{ className: "aura-page-header__text" },
|
|
18
|
+
props.breadcrumb != null && props.breadcrumb !== false ? h("div", { className: "aura-page-header__breadcrumb" }, props.breadcrumb) : null,
|
|
18
19
|
props.eyebrow != null && props.eyebrow !== false ? h("p", { className: "aura-page-header__eyebrow" }, props.eyebrow) : null,
|
|
19
20
|
h("h" + level, { className: "aura-page-header__title", id: props.titleId }, props.title),
|
|
20
21
|
props.meta != null && props.meta !== false ? h("div", { className: "aura-page-header__meta" }, props.meta) : null
|
package/dist/index.d.cts
CHANGED
|
@@ -1210,6 +1210,10 @@ export interface AppShellProps {
|
|
|
1210
1210
|
nav?: React$1.ReactElement | undefined;
|
|
1211
1211
|
/** Top bar content (title, search, account menu). */
|
|
1212
1212
|
header?: React$1.ReactNode | undefined;
|
|
1213
|
+
/** 5.33 (DxT Monitor #6): `'lg'` shows the top bar, `header` and all, only below 1024px — where the menu button is —
|
|
1214
|
+
* as when there is no `header`: from lg up it is hidden and `--aura-shell-bar-height` is 0. For apps whose phone
|
|
1215
|
+
* pages have a top bar (brand, avatar) and whose desktop pages don't. Default: the bar shows at every width. */
|
|
1216
|
+
headerHideFrom?: "lg" | undefined;
|
|
1213
1217
|
children?: React$1.ReactNode | undefined;
|
|
1214
1218
|
navLabel?: string | undefined;
|
|
1215
1219
|
menuLabel?: string | undefined;
|
|
@@ -1802,6 +1806,10 @@ export declare const Container: React$1.ForwardRefExoticComponent<ContainerProps
|
|
|
1802
1806
|
export interface PageHeaderProps extends Pick<React$1.HTMLAttributes<HTMLElement>, "id" | "lang" | "dir" | "role">, React$1.AriaAttributes, DataAttributes {
|
|
1803
1807
|
/** Small mono line above the title — a section or breadcrumb-like context ("Monitor / Sites"). */
|
|
1804
1808
|
eyebrow?: React$1.ReactNode | undefined;
|
|
1809
|
+
/** 5.33 (DxT Monitor #7): a `<Breadcrumb>` above the title, 4px from it like the eyebrow, in its own `div` (a `nav`
|
|
1810
|
+
* can't sit in the eyebrow's `p`) and its own 13px sans. Detail pages show a breadcrumb or an eyebrow; with both,
|
|
1811
|
+
* the breadcrumb comes first. */
|
|
1812
|
+
breadcrumb?: React$1.ReactNode | undefined;
|
|
1805
1813
|
/** The page's heading. */
|
|
1806
1814
|
title: React$1.ReactNode;
|
|
1807
1815
|
/** A line under the title — counts, last update, owner. */
|
package/dist/index.d.ts
CHANGED
|
@@ -1210,6 +1210,10 @@ export interface AppShellProps {
|
|
|
1210
1210
|
nav?: React$1.ReactElement | undefined;
|
|
1211
1211
|
/** Top bar content (title, search, account menu). */
|
|
1212
1212
|
header?: React$1.ReactNode | undefined;
|
|
1213
|
+
/** 5.33 (DxT Monitor #6): `'lg'` shows the top bar, `header` and all, only below 1024px — where the menu button is —
|
|
1214
|
+
* as when there is no `header`: from lg up it is hidden and `--aura-shell-bar-height` is 0. For apps whose phone
|
|
1215
|
+
* pages have a top bar (brand, avatar) and whose desktop pages don't. Default: the bar shows at every width. */
|
|
1216
|
+
headerHideFrom?: "lg" | undefined;
|
|
1213
1217
|
children?: React$1.ReactNode | undefined;
|
|
1214
1218
|
navLabel?: string | undefined;
|
|
1215
1219
|
menuLabel?: string | undefined;
|
|
@@ -1802,6 +1806,10 @@ export declare const Container: React$1.ForwardRefExoticComponent<ContainerProps
|
|
|
1802
1806
|
export interface PageHeaderProps extends Pick<React$1.HTMLAttributes<HTMLElement>, "id" | "lang" | "dir" | "role">, React$1.AriaAttributes, DataAttributes {
|
|
1803
1807
|
/** Small mono line above the title — a section or breadcrumb-like context ("Monitor / Sites"). */
|
|
1804
1808
|
eyebrow?: React$1.ReactNode | undefined;
|
|
1809
|
+
/** 5.33 (DxT Monitor #7): a `<Breadcrumb>` above the title, 4px from it like the eyebrow, in its own `div` (a `nav`
|
|
1810
|
+
* can't sit in the eyebrow's `p`) and its own 13px sans. Detail pages show a breadcrumb or an eyebrow; with both,
|
|
1811
|
+
* the breadcrumb comes first. */
|
|
1812
|
+
breadcrumb?: React$1.ReactNode | undefined;
|
|
1805
1813
|
/** The page's heading. */
|
|
1806
1814
|
title: React$1.ReactNode;
|
|
1807
1815
|
/** A line under the title — counts, last update, owner. */
|
package/dist/server/index.cjs
CHANGED
|
@@ -1393,6 +1393,7 @@ var PageHeader = React5.forwardRef(function PageHeader2(props, ref) {
|
|
|
1393
1393
|
h4(
|
|
1394
1394
|
"div",
|
|
1395
1395
|
{ className: "aura-page-header__text" },
|
|
1396
|
+
props.breadcrumb != null && props.breadcrumb !== false ? h4("div", { className: "aura-page-header__breadcrumb" }, props.breadcrumb) : null,
|
|
1396
1397
|
props.eyebrow != null && props.eyebrow !== false ? h4("p", { className: "aura-page-header__eyebrow" }, props.eyebrow) : null,
|
|
1397
1398
|
h4("h" + level, { className: "aura-page-header__title", id: props.titleId }, props.title),
|
|
1398
1399
|
props.meta != null && props.meta !== false ? h4("div", { className: "aura-page-header__meta" }, props.meta) : null
|
package/dist/server/index.d.cts
CHANGED
|
@@ -412,6 +412,10 @@ export declare const Container: React$1.ForwardRefExoticComponent<ContainerProps
|
|
|
412
412
|
export interface PageHeaderProps extends Pick<React$1.HTMLAttributes<HTMLElement>, "id" | "lang" | "dir" | "role">, React$1.AriaAttributes, DataAttributes {
|
|
413
413
|
/** Small mono line above the title — a section or breadcrumb-like context ("Monitor / Sites"). */
|
|
414
414
|
eyebrow?: React$1.ReactNode | undefined;
|
|
415
|
+
/** 5.33 (DxT Monitor #7): a `<Breadcrumb>` above the title, 4px from it like the eyebrow, in its own `div` (a `nav`
|
|
416
|
+
* can't sit in the eyebrow's `p`) and its own 13px sans. Detail pages show a breadcrumb or an eyebrow; with both,
|
|
417
|
+
* the breadcrumb comes first. */
|
|
418
|
+
breadcrumb?: React$1.ReactNode | undefined;
|
|
415
419
|
/** The page's heading. */
|
|
416
420
|
title: React$1.ReactNode;
|
|
417
421
|
/** A line under the title — counts, last update, owner. */
|
package/dist/server/index.d.ts
CHANGED
|
@@ -412,6 +412,10 @@ export declare const Container: React$1.ForwardRefExoticComponent<ContainerProps
|
|
|
412
412
|
export interface PageHeaderProps extends Pick<React$1.HTMLAttributes<HTMLElement>, "id" | "lang" | "dir" | "role">, React$1.AriaAttributes, DataAttributes {
|
|
413
413
|
/** Small mono line above the title — a section or breadcrumb-like context ("Monitor / Sites"). */
|
|
414
414
|
eyebrow?: React$1.ReactNode | undefined;
|
|
415
|
+
/** 5.33 (DxT Monitor #7): a `<Breadcrumb>` above the title, 4px from it like the eyebrow, in its own `div` (a `nav`
|
|
416
|
+
* can't sit in the eyebrow's `p`) and its own 13px sans. Detail pages show a breadcrumb or an eyebrow; with both,
|
|
417
|
+
* the breadcrumb comes first. */
|
|
418
|
+
breadcrumb?: React$1.ReactNode | undefined;
|
|
415
419
|
/** The page's heading. */
|
|
416
420
|
title: React$1.ReactNode;
|
|
417
421
|
/** A line under the title — counts, last update, owner. */
|
package/dist/server/index.js
CHANGED
|
@@ -1332,6 +1332,7 @@ var PageHeader = React5.forwardRef(function PageHeader2(props, ref) {
|
|
|
1332
1332
|
h4(
|
|
1333
1333
|
"div",
|
|
1334
1334
|
{ className: "aura-page-header__text" },
|
|
1335
|
+
props.breadcrumb != null && props.breadcrumb !== false ? h4("div", { className: "aura-page-header__breadcrumb" }, props.breadcrumb) : null,
|
|
1335
1336
|
props.eyebrow != null && props.eyebrow !== false ? h4("p", { className: "aura-page-header__eyebrow" }, props.eyebrow) : null,
|
|
1336
1337
|
h4("h" + level, { className: "aura-page-header__title", id: props.titleId }, props.title),
|
|
1337
1338
|
props.meta != null && props.meta !== false ? h4("div", { className: "aura-page-header__meta" }, props.meta) : null
|
package/dist/styles.css
CHANGED
|
@@ -70,10 +70,10 @@ button.aura-btn--creative[aria-disabled='true']:hover { box-shadow: var(--aura-s
|
|
|
70
70
|
.aura-btn--primary:hover { background: var(--aura-button-primary-bg-hover); }
|
|
71
71
|
|
|
72
72
|
.aura-btn--secondary { border: 1px solid var(--aura-button-secondary-border); color: var(--aura-fg-primary); }
|
|
73
|
-
.aura-btn--secondary:hover { background: var(--aura-bg-surface-hover); }
|
|
73
|
+
.aura-btn--secondary:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
74
74
|
/* Destructive: filled for the confirm step, outline beside other actions. Loading keeps the colour (busy, not unavailable). */
|
|
75
75
|
.aura-btn--ghost { color: var(--aura-fg-primary); }
|
|
76
|
-
.aura-btn--ghost:hover { background: var(--aura-bg-surface-hover); }
|
|
76
|
+
.aura-btn--ghost:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
77
77
|
/* size="sm" (4.16): 32px for toolbars, table rows and card footers. On touch the pill stays 32px and a transparent
|
|
78
78
|
* ::after grows the hit area to 44px, as IconButton does. */
|
|
79
79
|
.aura-btn--sm { height: var(--aura-button-height-sm); padding: 0 var(--aura-space-3); gap: 6px; }
|
|
@@ -128,7 +128,7 @@ button.aura-btn--creative[aria-disabled='true']:hover { box-shadow: var(--aura-s
|
|
|
128
128
|
font-size: 13px;
|
|
129
129
|
}
|
|
130
130
|
.aura-table__row:last-child { border-bottom: 0; }
|
|
131
|
-
.aura-table__row:hover { background: var(--aura-bg-surface-hover); }
|
|
131
|
+
.aura-table__row:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
132
132
|
.aura-table__row.is-actionable { cursor: pointer; }
|
|
133
133
|
.aura-table__row--skeleton:hover { background: var(--aura-bg-surface); }
|
|
134
134
|
.aura-table__row--skeleton .aura-table__td { display: flex; align-items: center; }
|
|
@@ -236,7 +236,7 @@ button.aura-btn--creative[aria-disabled='true']:hover { box-shadow: var(--aura-s
|
|
|
236
236
|
}
|
|
237
237
|
.aura-table__th:hover .aura-table__menu-btn, .aura-table__th:focus-within .aura-table__menu-btn,
|
|
238
238
|
.aura-table__th:focus .aura-table__menu-btn, .aura-table__menu-btn[aria-expanded="true"] { opacity: 1; }
|
|
239
|
-
.aura-table__menu-btn:hover { background: var(--aura-bg-surface-hover); color: var(--aura-fg-primary); }
|
|
239
|
+
.aura-table__menu-btn:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); color: var(--aura-fg-primary); }
|
|
240
240
|
@media (hover: none) { .aura-table__menu-btn { opacity: 1; } }
|
|
241
241
|
|
|
242
242
|
/* Drag to reorder */
|
|
@@ -273,7 +273,7 @@ button.aura-btn--creative[aria-disabled='true']:hover { box-shadow: var(--aura-s
|
|
|
273
273
|
border: 0; border-radius: var(--aura-radius-sm); background: transparent;
|
|
274
274
|
color: inherit; font: inherit; text-align: left; cursor: pointer; white-space: nowrap;
|
|
275
275
|
}
|
|
276
|
-
.aura-menu__item:hover, .aura-menu__item:focus { background: var(--aura-bg-surface-hover); outline: none; }
|
|
276
|
+
.aura-menu__item:hover, .aura-menu__item:focus { background: var(--aura-hover, var(--aura-bg-surface-hover)); outline: none; }
|
|
277
277
|
.aura-menu__item:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: calc(-1 * var(--aura-focus-ring-width)); }
|
|
278
278
|
.aura-menu__item:disabled { opacity: var(--aura-disabled-opacity); cursor: default; }
|
|
279
279
|
/* 5.10: a disabled item is dimmed but focusable; its reason stays at full strength (it is the information). */
|
|
@@ -328,7 +328,7 @@ a.aura-icon-btn { text-decoration: none; }
|
|
|
328
328
|
border: 0; border-radius: var(--aura-radius-full); background: transparent; color: var(--aura-fg-primary);
|
|
329
329
|
cursor: pointer; transition: background var(--aura-duration-fast) var(--aura-ease);
|
|
330
330
|
}
|
|
331
|
-
.aura-icon-btn:hover { background: var(--aura-bg-surface-hover); }
|
|
331
|
+
.aura-icon-btn:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
332
332
|
.aura-icon-btn--danger { color: var(--aura-fg-danger); }
|
|
333
333
|
.aura-icon-btn--danger:hover { background: var(--aura-alert-danger-bg); }
|
|
334
334
|
.aura-icon-btn:disabled { opacity: var(--aura-disabled-opacity); pointer-events: none; }
|
|
@@ -507,7 +507,7 @@ a.aura-icon-btn { text-decoration: none; }
|
|
|
507
507
|
.aura-field.is-disabled .aura-input__control { cursor: not-allowed; }
|
|
508
508
|
/* A read-only text field. Only an input: `:read-only` also matches any element that isn't editable — a
|
|
509
509
|
* Select's trigger <button> — which painted every custom Select with the disabled ground (5.16.1, Chamber-OS 109). */
|
|
510
|
-
.aura-input:has(input.aura-input__control:read-only) { background: var(--aura-bg-input-disabled); }
|
|
510
|
+
.aura-input:has(input.aura-input__control:read-only) { background: var(--aura-bg-input-disabled); --aura-hover: var(--aura-bg-canvas-hover); } /* 5.33: a DatePicker's toggle shows its hover on the grey ground */
|
|
511
511
|
/* A read-only Textarea looks like a read-only TextField (it is its own .aura-input, so the rule above can't reach it). */
|
|
512
512
|
.aura-textarea:read-only:not(:disabled) { background: var(--aura-bg-input-disabled); }
|
|
513
513
|
|
|
@@ -530,7 +530,7 @@ a.aura-icon-btn { text-decoration: none; }
|
|
|
530
530
|
.aura-select.is-open .aura-select__chevron { transform: rotate(180deg); }
|
|
531
531
|
/* 5.19 (Chamber-OS 114): a read-only Select looks like a read-only TextField — the same ground, no chevron (it doesn't
|
|
532
532
|
* open), no pointer; the value keeps full contrast. */
|
|
533
|
-
.aura-select.is-readonly { background: var(--aura-bg-input-disabled); }
|
|
533
|
+
.aura-select.is-readonly { background: var(--aura-bg-input-disabled); --aura-hover: var(--aura-bg-canvas-hover); }
|
|
534
534
|
.aura-select.is-readonly .aura-input__control { cursor: default; padding-right: var(--aura-space-3); }
|
|
535
535
|
|
|
536
536
|
.aura-radio-group > legend { margin-bottom: 6px; }
|
|
@@ -644,7 +644,7 @@ a.aura-icon-btn { text-decoration: none; }
|
|
|
644
644
|
.aura-toast__action::after { content: ''; position: absolute; top: 50%; left: 50%; width: max(100%, var(--aura-touch-target)); height: max(100%, var(--aura-touch-target)); transform: translate(-50%, -50%); }
|
|
645
645
|
.aura-toast__text a { padding-block: 2px; }
|
|
646
646
|
}
|
|
647
|
-
.aura-toast__action:hover { background: var(--aura-bg-surface-hover); }
|
|
647
|
+
.aura-toast__action:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
648
648
|
.aura-toast__action:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: 0; }
|
|
649
649
|
.aura-toast__close { margin-top: -6px; margin-bottom: -6px; }
|
|
650
650
|
|
|
@@ -784,7 +784,17 @@ a.aura-tab { text-decoration: none; }
|
|
|
784
784
|
text-decoration: none; text-align: left; cursor: pointer;
|
|
785
785
|
transition: background var(--aura-duration-fast) var(--aura-ease), color var(--aura-duration-fast) var(--aura-ease);
|
|
786
786
|
}
|
|
787
|
-
.aura-nav__item:hover { background: var(--aura-bg-surface-hover); color: var(--aura-fg-primary); }
|
|
787
|
+
.aura-nav__item:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); color: var(--aura-fg-primary); }
|
|
788
|
+
/* 5.33 (DxT Monitor #5): hover fills read --aura-hover, else aura-bg-surface-hover. On the canvas — AppShell, which
|
|
789
|
+
* is canvas, and SideNav — the surface hover (zinc-50 in light, the canvas itself) didn't show, so there it is
|
|
790
|
+
* aura-bg-canvas-hover; white surfaces inside set it back. A :root override of aura-bg-surface-hover still applies
|
|
791
|
+
* on surfaces; override aura-bg-canvas-hover for the canvas. */
|
|
792
|
+
.aura-shell, .aura-nav { --aura-hover: var(--aura-bg-canvas-hover); }
|
|
793
|
+
.aura-card, .aura-surface, .aura-stat, .aura-tbl-wrap, .aura-table, .aura-shell__bar, .aura-bottomnav, .aura-actionbar,
|
|
794
|
+
.aura-input, .aura-upload, .aura-upload__list, .aura-tag, .aura-dialog, .aura-drawer, .aura-popover, .aura-combo__popover,
|
|
795
|
+
.aura-cal__popover, .aura-menu, .aura-toast, .aura-command { --aura-hover: var(--aura-bg-surface-hover); }
|
|
796
|
+
/* Canvas-coloured bands inside those surfaces: SideNav in the drawer, the DataTable header, picker corner and totals. */
|
|
797
|
+
.aura-drawer .aura-nav, .aura-table__head, .aura-table__picker, .aura-table__total { --aura-hover: var(--aura-bg-canvas-hover); }
|
|
788
798
|
.aura-nav__item.is-active { background: var(--aura-bg-selected); color: var(--aura-fg-primary); }
|
|
789
799
|
.aura-nav__item.is-active .aura-icon { color: var(--aura-fg-accent); }
|
|
790
800
|
.aura-nav__item:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: -2px; }
|
|
@@ -896,7 +906,7 @@ a.aura-tab { text-decoration: none; }
|
|
|
896
906
|
}
|
|
897
907
|
.aura-combo__toggle { right: 6px; }
|
|
898
908
|
.aura-combo__clear { right: calc(6px + var(--aura-control-sm) - 4px); }
|
|
899
|
-
.aura-combo__clear:hover, .aura-combo__toggle:hover, .aura-date__toggle:hover { background: var(--aura-bg-surface-hover); color: var(--aura-fg-primary); }
|
|
909
|
+
.aura-combo__clear:hover, .aura-combo__toggle:hover, .aura-date__toggle:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); color: var(--aura-fg-primary); }
|
|
900
910
|
.aura-combo__toggle .aura-icon { transition: transform var(--aura-duration-fast) var(--aura-ease); }
|
|
901
911
|
.aura-combo.is-open .aura-combo__toggle .aura-icon { transform: rotate(180deg); }
|
|
902
912
|
.aura-date__toggle:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: 0; }
|
|
@@ -912,7 +922,7 @@ a.aura-tab { text-decoration: none; }
|
|
|
912
922
|
border-radius: var(--aura-radius-sm); cursor: pointer;
|
|
913
923
|
}
|
|
914
924
|
.aura-combo__option > .aura-icon { color: var(--aura-fg-secondary); }
|
|
915
|
-
.aura-combo__option.is-active { background: var(--aura-bg-surface-hover); outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: calc(-1 * var(--aura-focus-ring-width)); }
|
|
925
|
+
.aura-combo__option.is-active { background: var(--aura-hover, var(--aura-bg-surface-hover)); outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: calc(-1 * var(--aura-focus-ring-width)); }
|
|
916
926
|
.aura-combo__option.is-selected { font-weight: 500; }
|
|
917
927
|
.aura-combo__option.is-disabled { opacity: var(--aura-disabled-opacity); cursor: default; }
|
|
918
928
|
.aura-combo__text { flex: 1; min-width: 0; display: flex; flex-direction: column; }
|
|
@@ -945,7 +955,7 @@ a.aura-tab { text-decoration: none; }
|
|
|
945
955
|
border: 0; border-radius: var(--aura-radius-sm); background: transparent; color: var(--aura-fg-primary);
|
|
946
956
|
font: inherit; font-size: 14px; font-weight: 600; cursor: pointer;
|
|
947
957
|
}
|
|
948
|
-
.aura-cal__title:hover { background: var(--aura-bg-surface-hover); }
|
|
958
|
+
.aura-cal__title:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
949
959
|
.aura-cal__title:focus-visible, .aura-cal__link:focus-visible, .aura-cal__year:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: 0; }
|
|
950
960
|
.aura-cal__grid { border-collapse: separate; border-spacing: 0 2px; width: 100%; }
|
|
951
961
|
.aura-cal__grid th { height: 28px; padding: 0; font-size: 12px; font-weight: 500; color: var(--aura-fg-secondary); }
|
|
@@ -954,7 +964,7 @@ a.aura-tab { text-decoration: none; }
|
|
|
954
964
|
width: var(--aura-cal-cell); height: var(--aura-cal-cell); padding: 0; border: 0; border-radius: var(--aura-radius-full);
|
|
955
965
|
background: transparent; color: var(--aura-fg-primary); font: inherit; font-size: 13px; font-variant-numeric: tabular-nums; cursor: pointer;
|
|
956
966
|
}
|
|
957
|
-
.aura-cal__day:hover { background: var(--aura-bg-surface-hover); }
|
|
967
|
+
.aura-cal__day:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
958
968
|
.aura-cal__day.is-outside { color: var(--aura-fg-tertiary); }
|
|
959
969
|
.aura-cal__day.is-today { box-shadow: inset 0 0 0 1px var(--aura-border-control); font-weight: 600; }
|
|
960
970
|
.aura-cal__day.is-selected { background: var(--aura-control-checked-bg); color: var(--aura-control-checked-fg); box-shadow: none; }
|
|
@@ -969,14 +979,14 @@ a.aura-tab { text-decoration: none; }
|
|
|
969
979
|
height: 40px; border: 0; border-radius: var(--aura-radius-sm); background: transparent; color: var(--aura-fg-primary);
|
|
970
980
|
font: inherit; font-size: 13px; font-variant-numeric: tabular-nums; cursor: pointer;
|
|
971
981
|
}
|
|
972
|
-
.aura-cal__year:hover { background: var(--aura-bg-surface-hover); }
|
|
982
|
+
.aura-cal__year:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
973
983
|
.aura-cal__year.is-selected { background: var(--aura-control-checked-bg); color: var(--aura-control-checked-fg); }
|
|
974
984
|
.aura-cal__foot { display: flex; justify-content: space-between; margin-top: var(--aura-space-2); padding-top: var(--aura-space-2); border-top: 1px solid var(--aura-border-subtle); }
|
|
975
985
|
.aura-cal__link {
|
|
976
986
|
height: var(--aura-control-sm); padding: 0 var(--aura-space-2); border: 0; border-radius: var(--aura-radius-sm);
|
|
977
987
|
background: transparent; color: var(--aura-fg-accent); font: inherit; font-size: 13px; font-weight: 500; cursor: pointer;
|
|
978
988
|
}
|
|
979
|
-
.aura-cal__link:hover { background: var(--aura-bg-surface-hover); }
|
|
989
|
+
.aura-cal__link:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
980
990
|
.aura-cal__link:disabled { opacity: var(--aura-disabled-opacity); cursor: not-allowed; }
|
|
981
991
|
|
|
982
992
|
/* ---------- Drawer ---------- */
|
|
@@ -1008,6 +1018,12 @@ a.aura-tab { text-decoration: none; }
|
|
|
1008
1018
|
.aura-drawer--nav .aura-nav { width: 100%; border-right: 0; }
|
|
1009
1019
|
/* 5.32: the phone drawer's close button (32px, 8px in) sits over the header's end: keep the brand clear of it. */
|
|
1010
1020
|
.aura-drawer--nav .aura-nav__header { padding-inline-end: 48px; }
|
|
1021
|
+
/* 5.33: the drawer's close button is 44px on phones and touch screens (touchHeight), so the header leaves 60px. */
|
|
1022
|
+
@media (max-width: 639.98px), (pointer: coarse) { .aura-drawer--nav .aura-nav__header { padding-inline-end: 60px; } }
|
|
1023
|
+
/* 5.33 (DxT Monitor #8): in the phone drawer a divided header takes the top bar's height (its line meets the bar's
|
|
1024
|
+
* line beside it), its content centred; the close button is centred on it. The desktop sidebar keeps 72px. */
|
|
1025
|
+
.aura-drawer--nav .aura-nav--header-divider > .aura-nav__header { box-sizing: border-box; min-height: var(--aura-shell-bar-height, 56px); padding-top: 0; padding-bottom: 0; display: flex; align-items: center; }
|
|
1026
|
+
.aura-drawer--nav-divided .aura-drawer__head { top: 0; height: var(--aura-shell-bar-height, 56px); } /* a class from AppShell, not :has(), so older browsers centre it too */
|
|
1011
1027
|
.aura-drawer__foot { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: var(--aura-space-3); padding: var(--aura-space-4) var(--aura-space-6); border-top: 1px solid var(--aura-border-default); }
|
|
1012
1028
|
@media (prefers-reduced-motion: reduce) { .aura-drawer { animation: none; } }
|
|
1013
1029
|
|
|
@@ -1093,6 +1109,7 @@ a.aura-tab { text-decoration: none; }
|
|
|
1093
1109
|
.aura-page-header__text { display: flex; flex-direction: column; gap: var(--aura-space-1); flex: 1 1 320px; min-width: 0; }
|
|
1094
1110
|
.aura-page-header__eyebrow { margin: 0; font-family: var(--font-mono); font-size: 12px; line-height: 1.7; color: var(--aura-fg-secondary); overflow-wrap: anywhere; }
|
|
1095
1111
|
.aura-page-header__title { margin: 0; font-family: var(--font-display); font-size: 28px; line-height: 1.15; font-weight: 600; letter-spacing: -0.01em; color: var(--aura-fg-primary); overflow-wrap: anywhere; }
|
|
1112
|
+
.aura-page-header__breadcrumb { min-width: 0; } /* 5.33 (DxT Monitor #7): Breadcrumb keeps its own type */
|
|
1096
1113
|
.aura-page-header__meta { min-width: 0; font-size: 13px; line-height: 1.5; color: var(--aura-fg-secondary); overflow-wrap: anywhere; }
|
|
1097
1114
|
.aura-page-header__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--aura-space-2); }
|
|
1098
1115
|
@media (min-width: 640px) { .aura-page-header__title { font-size: 36px; } }
|
|
@@ -1216,7 +1233,7 @@ a.aura-upload__name:focus-visible { outline: var(--aura-focus-ring-width) solid
|
|
|
1216
1233
|
}
|
|
1217
1234
|
.aura-tag__text { overflow: hidden; text-overflow: ellipsis; max-width: 24ch; }
|
|
1218
1235
|
.aura-tag.is-selectable { cursor: pointer; transition: background var(--aura-duration-fast) var(--aura-ease), border-color var(--aura-duration-fast) var(--aura-ease); }
|
|
1219
|
-
.aura-tag.is-selectable:hover { background: var(--aura-bg-surface-hover); }
|
|
1236
|
+
.aura-tag.is-selectable:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
1220
1237
|
.aura-tag.is-selected { background: var(--aura-bg-selected); border-color: var(--aura-fg-accent); color: var(--aura-fg-primary); }
|
|
1221
1238
|
.aura-tag.is-selectable:focus-visible, .aura-tag__remove:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: var(--aura-focus-ring-offset); }
|
|
1222
1239
|
.aura-tag.is-selectable:disabled, .aura-tag.is-disabled { opacity: var(--aura-disabled-opacity); cursor: default; }
|
|
@@ -1224,7 +1241,7 @@ a.aura-upload__name:focus-visible { outline: var(--aura-focus-ring-width) solid
|
|
|
1224
1241
|
display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; margin-right: -6px; padding: 0; border: 0; border-radius: var(--aura-radius-full);
|
|
1225
1242
|
background: transparent; color: var(--aura-fg-secondary); cursor: pointer;
|
|
1226
1243
|
}
|
|
1227
|
-
.aura-tag__remove:hover { background: var(--aura-bg-surface-hover); color: var(--aura-fg-primary); }
|
|
1244
|
+
.aura-tag__remove:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); color: var(--aura-fg-primary); }
|
|
1228
1245
|
|
|
1229
1246
|
/* ---------- Progress ---------- */
|
|
1230
1247
|
.aura-progress { display: flex; flex-direction: column; gap: 6px; font-family: var(--font-sans); }
|
|
@@ -1277,7 +1294,7 @@ a.aura-upload__name:focus-visible { outline: var(--aura-focus-ring-width) solid
|
|
|
1277
1294
|
display: inline-flex; align-items: center; justify-content: center; min-width: 36px; height: 36px; padding: 0 var(--aura-space-2); box-sizing: border-box;
|
|
1278
1295
|
border: 0; border-radius: var(--aura-radius-full); background: transparent; color: var(--aura-fg-primary); font: inherit; font-variant-numeric: tabular-nums; text-decoration: none; cursor: pointer;
|
|
1279
1296
|
}
|
|
1280
|
-
.aura-page:hover { background: var(--aura-bg-surface-hover); }
|
|
1297
|
+
.aura-page:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
1281
1298
|
.aura-page.is-current { background: var(--aura-control-checked-bg); color: var(--aura-control-checked-fg); font-weight: 600; }
|
|
1282
1299
|
.aura-page:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: var(--aura-focus-ring-offset); }
|
|
1283
1300
|
.aura-pagination__gap { min-width: 24px; text-align: center; color: var(--aura-fg-secondary); }
|
|
@@ -1295,7 +1312,7 @@ a.aura-upload__name:focus-visible { outline: var(--aura-focus-ring-width) solid
|
|
|
1295
1312
|
display: flex; align-items: center; gap: var(--aura-space-3); width: 100%; min-height: 48px; padding: var(--aura-space-3) var(--aura-space-1); box-sizing: border-box;
|
|
1296
1313
|
border: 0; background: transparent; color: var(--aura-fg-primary); font: inherit; text-align: left; cursor: pointer;
|
|
1297
1314
|
}
|
|
1298
|
-
.aura-accordion__heading > button:hover { background: var(--aura-bg-surface-hover); }
|
|
1315
|
+
.aura-accordion__heading > button:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
1299
1316
|
.aura-accordion__heading > button:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: calc(-1 * var(--aura-focus-ring-width)); border-radius: var(--aura-radius-sm); }
|
|
1300
1317
|
.aura-accordion__heading > button:disabled { opacity: var(--aura-disabled-opacity); cursor: default; }
|
|
1301
1318
|
.aura-accordion__title { flex: 1; display: flex; flex-direction: column; gap: 2px; }
|
|
@@ -1336,7 +1353,7 @@ a.aura-upload__name:focus-visible { outline: var(--aura-focus-ring-width) solid
|
|
|
1336
1353
|
display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0;
|
|
1337
1354
|
border: 0; border-radius: var(--aura-radius-full); background: transparent; color: var(--aura-fg-secondary); cursor: pointer;
|
|
1338
1355
|
}
|
|
1339
|
-
.aura-combo__chip-remove:hover { background: var(--aura-bg-surface-hover); color: var(--aura-fg-primary); }
|
|
1356
|
+
.aura-combo__chip-remove:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); color: var(--aura-fg-primary); }
|
|
1340
1357
|
.aura-combo__chip-remove .aura-icon { width: 14px; height: 14px; }
|
|
1341
1358
|
|
|
1342
1359
|
/* ---------- NumberField ---------- */
|
|
@@ -1352,7 +1369,7 @@ a.aura-upload__name:focus-visible { outline: var(--aura-focus-ring-width) solid
|
|
|
1352
1369
|
}
|
|
1353
1370
|
.aura-number__step + .aura-number__step { border-left: 1px solid var(--aura-border-default); }
|
|
1354
1371
|
.aura-number__step:last-child { border-radius: 0 calc(var(--aura-radius-md) - 1px) calc(var(--aura-radius-md) - 1px) 0; }
|
|
1355
|
-
.aura-number__step:hover:not(:disabled) { background: var(--aura-bg-surface-hover); color: var(--aura-fg-primary); }
|
|
1372
|
+
.aura-number__step:hover:not(:disabled) { background: var(--aura-hover, var(--aura-bg-surface-hover)); color: var(--aura-fg-primary); }
|
|
1356
1373
|
.aura-number__step:disabled { opacity: var(--aura-disabled-opacity); cursor: default; }
|
|
1357
1374
|
|
|
1358
1375
|
/* ---------- Stepper ---------- */
|
|
@@ -1599,7 +1616,7 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1599
1616
|
border: 0; background: transparent; padding: 4px var(--aura-space-2); border-radius: var(--aura-radius-sm);
|
|
1600
1617
|
font: inherit; font-size: 13px; font-weight: 500; color: var(--aura-fg-accent); cursor: pointer; text-decoration: underline; text-underline-offset: 2px;
|
|
1601
1618
|
}
|
|
1602
|
-
.aura-filterbar__clear:hover { background: var(--aura-bg-surface-hover); }
|
|
1619
|
+
.aura-filterbar__clear:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
1603
1620
|
.aura-filterbar__clear:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: var(--aura-focus-ring-offset); }
|
|
1604
1621
|
@media (max-width: 767.98px) {
|
|
1605
1622
|
.aura-filterbar__search { flex-basis: 100%; max-width: none; }
|
|
@@ -1684,7 +1701,7 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1684
1701
|
.aura-command__heading { padding: var(--aura-space-2) var(--aura-space-2) var(--aura-space-1); font-family: var(--font-mono); font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--aura-fg-secondary); }
|
|
1685
1702
|
.aura-command__item { display: flex; align-items: center; gap: var(--aura-space-3); min-height: 40px; padding: 6px var(--aura-space-2); border-radius: var(--aura-radius-sm); cursor: pointer; font-size: 14px; }
|
|
1686
1703
|
.aura-command__item > .aura-icon { color: var(--aura-fg-secondary); }
|
|
1687
|
-
.aura-command__item.is-active { background: var(--aura-bg-surface-hover); outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: calc(-1 * var(--aura-focus-ring-width)); }
|
|
1704
|
+
.aura-command__item.is-active { background: var(--aura-hover, var(--aura-bg-surface-hover)); outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: calc(-1 * var(--aura-focus-ring-width)); }
|
|
1688
1705
|
.aura-command__item.is-disabled { opacity: var(--aura-disabled-opacity); cursor: default; }
|
|
1689
1706
|
.aura-command__text { flex: 1; min-width: 0; display: flex; flex-direction: column; }
|
|
1690
1707
|
.aura-command__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
package/dist/styles.layer.css
CHANGED
|
@@ -72,10 +72,10 @@ button.aura-btn--creative[aria-disabled='true']:hover { box-shadow: var(--aura-s
|
|
|
72
72
|
.aura-btn--primary:hover { background: var(--aura-button-primary-bg-hover); }
|
|
73
73
|
|
|
74
74
|
.aura-btn--secondary { border: 1px solid var(--aura-button-secondary-border); color: var(--aura-fg-primary); }
|
|
75
|
-
.aura-btn--secondary:hover { background: var(--aura-bg-surface-hover); }
|
|
75
|
+
.aura-btn--secondary:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
76
76
|
/* Destructive: filled for the confirm step, outline beside other actions. Loading keeps the colour (busy, not unavailable). */
|
|
77
77
|
.aura-btn--ghost { color: var(--aura-fg-primary); }
|
|
78
|
-
.aura-btn--ghost:hover { background: var(--aura-bg-surface-hover); }
|
|
78
|
+
.aura-btn--ghost:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
79
79
|
/* size="sm" (4.16): 32px for toolbars, table rows and card footers. On touch the pill stays 32px and a transparent
|
|
80
80
|
* ::after grows the hit area to 44px, as IconButton does. */
|
|
81
81
|
.aura-btn--sm { height: var(--aura-button-height-sm); padding: 0 var(--aura-space-3); gap: 6px; }
|
|
@@ -130,7 +130,7 @@ button.aura-btn--creative[aria-disabled='true']:hover { box-shadow: var(--aura-s
|
|
|
130
130
|
font-size: 13px;
|
|
131
131
|
}
|
|
132
132
|
.aura-table__row:last-child { border-bottom: 0; }
|
|
133
|
-
.aura-table__row:hover { background: var(--aura-bg-surface-hover); }
|
|
133
|
+
.aura-table__row:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
134
134
|
.aura-table__row.is-actionable { cursor: pointer; }
|
|
135
135
|
.aura-table__row--skeleton:hover { background: var(--aura-bg-surface); }
|
|
136
136
|
.aura-table__row--skeleton .aura-table__td { display: flex; align-items: center; }
|
|
@@ -238,7 +238,7 @@ button.aura-btn--creative[aria-disabled='true']:hover { box-shadow: var(--aura-s
|
|
|
238
238
|
}
|
|
239
239
|
.aura-table__th:hover .aura-table__menu-btn, .aura-table__th:focus-within .aura-table__menu-btn,
|
|
240
240
|
.aura-table__th:focus .aura-table__menu-btn, .aura-table__menu-btn[aria-expanded="true"] { opacity: 1; }
|
|
241
|
-
.aura-table__menu-btn:hover { background: var(--aura-bg-surface-hover); color: var(--aura-fg-primary); }
|
|
241
|
+
.aura-table__menu-btn:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); color: var(--aura-fg-primary); }
|
|
242
242
|
@media (hover: none) { .aura-table__menu-btn { opacity: 1; } }
|
|
243
243
|
|
|
244
244
|
/* Drag to reorder */
|
|
@@ -275,7 +275,7 @@ button.aura-btn--creative[aria-disabled='true']:hover { box-shadow: var(--aura-s
|
|
|
275
275
|
border: 0; border-radius: var(--aura-radius-sm); background: transparent;
|
|
276
276
|
color: inherit; font: inherit; text-align: left; cursor: pointer; white-space: nowrap;
|
|
277
277
|
}
|
|
278
|
-
.aura-menu__item:hover, .aura-menu__item:focus { background: var(--aura-bg-surface-hover); outline: none; }
|
|
278
|
+
.aura-menu__item:hover, .aura-menu__item:focus { background: var(--aura-hover, var(--aura-bg-surface-hover)); outline: none; }
|
|
279
279
|
.aura-menu__item:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: calc(-1 * var(--aura-focus-ring-width)); }
|
|
280
280
|
.aura-menu__item:disabled { opacity: var(--aura-disabled-opacity); cursor: default; }
|
|
281
281
|
/* 5.10: a disabled item is dimmed but focusable; its reason stays at full strength (it is the information). */
|
|
@@ -330,7 +330,7 @@ a.aura-icon-btn { text-decoration: none; }
|
|
|
330
330
|
border: 0; border-radius: var(--aura-radius-full); background: transparent; color: var(--aura-fg-primary);
|
|
331
331
|
cursor: pointer; transition: background var(--aura-duration-fast) var(--aura-ease);
|
|
332
332
|
}
|
|
333
|
-
.aura-icon-btn:hover { background: var(--aura-bg-surface-hover); }
|
|
333
|
+
.aura-icon-btn:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
334
334
|
.aura-icon-btn--danger { color: var(--aura-fg-danger); }
|
|
335
335
|
.aura-icon-btn--danger:hover { background: var(--aura-alert-danger-bg); }
|
|
336
336
|
.aura-icon-btn:disabled { opacity: var(--aura-disabled-opacity); pointer-events: none; }
|
|
@@ -509,7 +509,7 @@ a.aura-icon-btn { text-decoration: none; }
|
|
|
509
509
|
.aura-field.is-disabled .aura-input__control { cursor: not-allowed; }
|
|
510
510
|
/* A read-only text field. Only an input: `:read-only` also matches any element that isn't editable — a
|
|
511
511
|
* Select's trigger <button> — which painted every custom Select with the disabled ground (5.16.1, Chamber-OS 109). */
|
|
512
|
-
.aura-input:has(input.aura-input__control:read-only) { background: var(--aura-bg-input-disabled); }
|
|
512
|
+
.aura-input:has(input.aura-input__control:read-only) { background: var(--aura-bg-input-disabled); --aura-hover: var(--aura-bg-canvas-hover); } /* 5.33: a DatePicker's toggle shows its hover on the grey ground */
|
|
513
513
|
/* A read-only Textarea looks like a read-only TextField (it is its own .aura-input, so the rule above can't reach it). */
|
|
514
514
|
.aura-textarea:read-only:not(:disabled) { background: var(--aura-bg-input-disabled); }
|
|
515
515
|
|
|
@@ -532,7 +532,7 @@ a.aura-icon-btn { text-decoration: none; }
|
|
|
532
532
|
.aura-select.is-open .aura-select__chevron { transform: rotate(180deg); }
|
|
533
533
|
/* 5.19 (Chamber-OS 114): a read-only Select looks like a read-only TextField — the same ground, no chevron (it doesn't
|
|
534
534
|
* open), no pointer; the value keeps full contrast. */
|
|
535
|
-
.aura-select.is-readonly { background: var(--aura-bg-input-disabled); }
|
|
535
|
+
.aura-select.is-readonly { background: var(--aura-bg-input-disabled); --aura-hover: var(--aura-bg-canvas-hover); }
|
|
536
536
|
.aura-select.is-readonly .aura-input__control { cursor: default; padding-right: var(--aura-space-3); }
|
|
537
537
|
|
|
538
538
|
.aura-radio-group > legend { margin-bottom: 6px; }
|
|
@@ -646,7 +646,7 @@ a.aura-icon-btn { text-decoration: none; }
|
|
|
646
646
|
.aura-toast__action::after { content: ''; position: absolute; top: 50%; left: 50%; width: max(100%, var(--aura-touch-target)); height: max(100%, var(--aura-touch-target)); transform: translate(-50%, -50%); }
|
|
647
647
|
.aura-toast__text a { padding-block: 2px; }
|
|
648
648
|
}
|
|
649
|
-
.aura-toast__action:hover { background: var(--aura-bg-surface-hover); }
|
|
649
|
+
.aura-toast__action:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
650
650
|
.aura-toast__action:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: 0; }
|
|
651
651
|
.aura-toast__close { margin-top: -6px; margin-bottom: -6px; }
|
|
652
652
|
|
|
@@ -786,7 +786,17 @@ a.aura-tab { text-decoration: none; }
|
|
|
786
786
|
text-decoration: none; text-align: left; cursor: pointer;
|
|
787
787
|
transition: background var(--aura-duration-fast) var(--aura-ease), color var(--aura-duration-fast) var(--aura-ease);
|
|
788
788
|
}
|
|
789
|
-
.aura-nav__item:hover { background: var(--aura-bg-surface-hover); color: var(--aura-fg-primary); }
|
|
789
|
+
.aura-nav__item:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); color: var(--aura-fg-primary); }
|
|
790
|
+
/* 5.33 (DxT Monitor #5): hover fills read --aura-hover, else aura-bg-surface-hover. On the canvas — AppShell, which
|
|
791
|
+
* is canvas, and SideNav — the surface hover (zinc-50 in light, the canvas itself) didn't show, so there it is
|
|
792
|
+
* aura-bg-canvas-hover; white surfaces inside set it back. A :root override of aura-bg-surface-hover still applies
|
|
793
|
+
* on surfaces; override aura-bg-canvas-hover for the canvas. */
|
|
794
|
+
.aura-shell, .aura-nav { --aura-hover: var(--aura-bg-canvas-hover); }
|
|
795
|
+
.aura-card, .aura-surface, .aura-stat, .aura-tbl-wrap, .aura-table, .aura-shell__bar, .aura-bottomnav, .aura-actionbar,
|
|
796
|
+
.aura-input, .aura-upload, .aura-upload__list, .aura-tag, .aura-dialog, .aura-drawer, .aura-popover, .aura-combo__popover,
|
|
797
|
+
.aura-cal__popover, .aura-menu, .aura-toast, .aura-command { --aura-hover: var(--aura-bg-surface-hover); }
|
|
798
|
+
/* Canvas-coloured bands inside those surfaces: SideNav in the drawer, the DataTable header, picker corner and totals. */
|
|
799
|
+
.aura-drawer .aura-nav, .aura-table__head, .aura-table__picker, .aura-table__total { --aura-hover: var(--aura-bg-canvas-hover); }
|
|
790
800
|
.aura-nav__item.is-active { background: var(--aura-bg-selected); color: var(--aura-fg-primary); }
|
|
791
801
|
.aura-nav__item.is-active .aura-icon { color: var(--aura-fg-accent); }
|
|
792
802
|
.aura-nav__item:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: -2px; }
|
|
@@ -898,7 +908,7 @@ a.aura-tab { text-decoration: none; }
|
|
|
898
908
|
}
|
|
899
909
|
.aura-combo__toggle { right: 6px; }
|
|
900
910
|
.aura-combo__clear { right: calc(6px + var(--aura-control-sm) - 4px); }
|
|
901
|
-
.aura-combo__clear:hover, .aura-combo__toggle:hover, .aura-date__toggle:hover { background: var(--aura-bg-surface-hover); color: var(--aura-fg-primary); }
|
|
911
|
+
.aura-combo__clear:hover, .aura-combo__toggle:hover, .aura-date__toggle:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); color: var(--aura-fg-primary); }
|
|
902
912
|
.aura-combo__toggle .aura-icon { transition: transform var(--aura-duration-fast) var(--aura-ease); }
|
|
903
913
|
.aura-combo.is-open .aura-combo__toggle .aura-icon { transform: rotate(180deg); }
|
|
904
914
|
.aura-date__toggle:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: 0; }
|
|
@@ -914,7 +924,7 @@ a.aura-tab { text-decoration: none; }
|
|
|
914
924
|
border-radius: var(--aura-radius-sm); cursor: pointer;
|
|
915
925
|
}
|
|
916
926
|
.aura-combo__option > .aura-icon { color: var(--aura-fg-secondary); }
|
|
917
|
-
.aura-combo__option.is-active { background: var(--aura-bg-surface-hover); outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: calc(-1 * var(--aura-focus-ring-width)); }
|
|
927
|
+
.aura-combo__option.is-active { background: var(--aura-hover, var(--aura-bg-surface-hover)); outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: calc(-1 * var(--aura-focus-ring-width)); }
|
|
918
928
|
.aura-combo__option.is-selected { font-weight: 500; }
|
|
919
929
|
.aura-combo__option.is-disabled { opacity: var(--aura-disabled-opacity); cursor: default; }
|
|
920
930
|
.aura-combo__text { flex: 1; min-width: 0; display: flex; flex-direction: column; }
|
|
@@ -947,7 +957,7 @@ a.aura-tab { text-decoration: none; }
|
|
|
947
957
|
border: 0; border-radius: var(--aura-radius-sm); background: transparent; color: var(--aura-fg-primary);
|
|
948
958
|
font: inherit; font-size: 14px; font-weight: 600; cursor: pointer;
|
|
949
959
|
}
|
|
950
|
-
.aura-cal__title:hover { background: var(--aura-bg-surface-hover); }
|
|
960
|
+
.aura-cal__title:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
951
961
|
.aura-cal__title:focus-visible, .aura-cal__link:focus-visible, .aura-cal__year:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: 0; }
|
|
952
962
|
.aura-cal__grid { border-collapse: separate; border-spacing: 0 2px; width: 100%; }
|
|
953
963
|
.aura-cal__grid th { height: 28px; padding: 0; font-size: 12px; font-weight: 500; color: var(--aura-fg-secondary); }
|
|
@@ -956,7 +966,7 @@ a.aura-tab { text-decoration: none; }
|
|
|
956
966
|
width: var(--aura-cal-cell); height: var(--aura-cal-cell); padding: 0; border: 0; border-radius: var(--aura-radius-full);
|
|
957
967
|
background: transparent; color: var(--aura-fg-primary); font: inherit; font-size: 13px; font-variant-numeric: tabular-nums; cursor: pointer;
|
|
958
968
|
}
|
|
959
|
-
.aura-cal__day:hover { background: var(--aura-bg-surface-hover); }
|
|
969
|
+
.aura-cal__day:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
960
970
|
.aura-cal__day.is-outside { color: var(--aura-fg-tertiary); }
|
|
961
971
|
.aura-cal__day.is-today { box-shadow: inset 0 0 0 1px var(--aura-border-control); font-weight: 600; }
|
|
962
972
|
.aura-cal__day.is-selected { background: var(--aura-control-checked-bg); color: var(--aura-control-checked-fg); box-shadow: none; }
|
|
@@ -971,14 +981,14 @@ a.aura-tab { text-decoration: none; }
|
|
|
971
981
|
height: 40px; border: 0; border-radius: var(--aura-radius-sm); background: transparent; color: var(--aura-fg-primary);
|
|
972
982
|
font: inherit; font-size: 13px; font-variant-numeric: tabular-nums; cursor: pointer;
|
|
973
983
|
}
|
|
974
|
-
.aura-cal__year:hover { background: var(--aura-bg-surface-hover); }
|
|
984
|
+
.aura-cal__year:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
975
985
|
.aura-cal__year.is-selected { background: var(--aura-control-checked-bg); color: var(--aura-control-checked-fg); }
|
|
976
986
|
.aura-cal__foot { display: flex; justify-content: space-between; margin-top: var(--aura-space-2); padding-top: var(--aura-space-2); border-top: 1px solid var(--aura-border-subtle); }
|
|
977
987
|
.aura-cal__link {
|
|
978
988
|
height: var(--aura-control-sm); padding: 0 var(--aura-space-2); border: 0; border-radius: var(--aura-radius-sm);
|
|
979
989
|
background: transparent; color: var(--aura-fg-accent); font: inherit; font-size: 13px; font-weight: 500; cursor: pointer;
|
|
980
990
|
}
|
|
981
|
-
.aura-cal__link:hover { background: var(--aura-bg-surface-hover); }
|
|
991
|
+
.aura-cal__link:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
982
992
|
.aura-cal__link:disabled { opacity: var(--aura-disabled-opacity); cursor: not-allowed; }
|
|
983
993
|
|
|
984
994
|
/* ---------- Drawer ---------- */
|
|
@@ -1010,6 +1020,12 @@ a.aura-tab { text-decoration: none; }
|
|
|
1010
1020
|
.aura-drawer--nav .aura-nav { width: 100%; border-right: 0; }
|
|
1011
1021
|
/* 5.32: the phone drawer's close button (32px, 8px in) sits over the header's end: keep the brand clear of it. */
|
|
1012
1022
|
.aura-drawer--nav .aura-nav__header { padding-inline-end: 48px; }
|
|
1023
|
+
/* 5.33: the drawer's close button is 44px on phones and touch screens (touchHeight), so the header leaves 60px. */
|
|
1024
|
+
@media (max-width: 639.98px), (pointer: coarse) { .aura-drawer--nav .aura-nav__header { padding-inline-end: 60px; } }
|
|
1025
|
+
/* 5.33 (DxT Monitor #8): in the phone drawer a divided header takes the top bar's height (its line meets the bar's
|
|
1026
|
+
* line beside it), its content centred; the close button is centred on it. The desktop sidebar keeps 72px. */
|
|
1027
|
+
.aura-drawer--nav .aura-nav--header-divider > .aura-nav__header { box-sizing: border-box; min-height: var(--aura-shell-bar-height, 56px); padding-top: 0; padding-bottom: 0; display: flex; align-items: center; }
|
|
1028
|
+
.aura-drawer--nav-divided .aura-drawer__head { top: 0; height: var(--aura-shell-bar-height, 56px); } /* a class from AppShell, not :has(), so older browsers centre it too */
|
|
1013
1029
|
.aura-drawer__foot { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: var(--aura-space-3); padding: var(--aura-space-4) var(--aura-space-6); border-top: 1px solid var(--aura-border-default); }
|
|
1014
1030
|
@media (prefers-reduced-motion: reduce) { .aura-drawer { animation: none; } }
|
|
1015
1031
|
|
|
@@ -1095,6 +1111,7 @@ a.aura-tab { text-decoration: none; }
|
|
|
1095
1111
|
.aura-page-header__text { display: flex; flex-direction: column; gap: var(--aura-space-1); flex: 1 1 320px; min-width: 0; }
|
|
1096
1112
|
.aura-page-header__eyebrow { margin: 0; font-family: var(--font-mono); font-size: 12px; line-height: 1.7; color: var(--aura-fg-secondary); overflow-wrap: anywhere; }
|
|
1097
1113
|
.aura-page-header__title { margin: 0; font-family: var(--font-display); font-size: 28px; line-height: 1.15; font-weight: 600; letter-spacing: -0.01em; color: var(--aura-fg-primary); overflow-wrap: anywhere; }
|
|
1114
|
+
.aura-page-header__breadcrumb { min-width: 0; } /* 5.33 (DxT Monitor #7): Breadcrumb keeps its own type */
|
|
1098
1115
|
.aura-page-header__meta { min-width: 0; font-size: 13px; line-height: 1.5; color: var(--aura-fg-secondary); overflow-wrap: anywhere; }
|
|
1099
1116
|
.aura-page-header__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--aura-space-2); }
|
|
1100
1117
|
@media (min-width: 640px) { .aura-page-header__title { font-size: 36px; } }
|
|
@@ -1218,7 +1235,7 @@ a.aura-upload__name:focus-visible { outline: var(--aura-focus-ring-width) solid
|
|
|
1218
1235
|
}
|
|
1219
1236
|
.aura-tag__text { overflow: hidden; text-overflow: ellipsis; max-width: 24ch; }
|
|
1220
1237
|
.aura-tag.is-selectable { cursor: pointer; transition: background var(--aura-duration-fast) var(--aura-ease), border-color var(--aura-duration-fast) var(--aura-ease); }
|
|
1221
|
-
.aura-tag.is-selectable:hover { background: var(--aura-bg-surface-hover); }
|
|
1238
|
+
.aura-tag.is-selectable:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
1222
1239
|
.aura-tag.is-selected { background: var(--aura-bg-selected); border-color: var(--aura-fg-accent); color: var(--aura-fg-primary); }
|
|
1223
1240
|
.aura-tag.is-selectable:focus-visible, .aura-tag__remove:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: var(--aura-focus-ring-offset); }
|
|
1224
1241
|
.aura-tag.is-selectable:disabled, .aura-tag.is-disabled { opacity: var(--aura-disabled-opacity); cursor: default; }
|
|
@@ -1226,7 +1243,7 @@ a.aura-upload__name:focus-visible { outline: var(--aura-focus-ring-width) solid
|
|
|
1226
1243
|
display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; margin-right: -6px; padding: 0; border: 0; border-radius: var(--aura-radius-full);
|
|
1227
1244
|
background: transparent; color: var(--aura-fg-secondary); cursor: pointer;
|
|
1228
1245
|
}
|
|
1229
|
-
.aura-tag__remove:hover { background: var(--aura-bg-surface-hover); color: var(--aura-fg-primary); }
|
|
1246
|
+
.aura-tag__remove:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); color: var(--aura-fg-primary); }
|
|
1230
1247
|
|
|
1231
1248
|
/* ---------- Progress ---------- */
|
|
1232
1249
|
.aura-progress { display: flex; flex-direction: column; gap: 6px; font-family: var(--font-sans); }
|
|
@@ -1279,7 +1296,7 @@ a.aura-upload__name:focus-visible { outline: var(--aura-focus-ring-width) solid
|
|
|
1279
1296
|
display: inline-flex; align-items: center; justify-content: center; min-width: 36px; height: 36px; padding: 0 var(--aura-space-2); box-sizing: border-box;
|
|
1280
1297
|
border: 0; border-radius: var(--aura-radius-full); background: transparent; color: var(--aura-fg-primary); font: inherit; font-variant-numeric: tabular-nums; text-decoration: none; cursor: pointer;
|
|
1281
1298
|
}
|
|
1282
|
-
.aura-page:hover { background: var(--aura-bg-surface-hover); }
|
|
1299
|
+
.aura-page:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
1283
1300
|
.aura-page.is-current { background: var(--aura-control-checked-bg); color: var(--aura-control-checked-fg); font-weight: 600; }
|
|
1284
1301
|
.aura-page:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: var(--aura-focus-ring-offset); }
|
|
1285
1302
|
.aura-pagination__gap { min-width: 24px; text-align: center; color: var(--aura-fg-secondary); }
|
|
@@ -1297,7 +1314,7 @@ a.aura-upload__name:focus-visible { outline: var(--aura-focus-ring-width) solid
|
|
|
1297
1314
|
display: flex; align-items: center; gap: var(--aura-space-3); width: 100%; min-height: 48px; padding: var(--aura-space-3) var(--aura-space-1); box-sizing: border-box;
|
|
1298
1315
|
border: 0; background: transparent; color: var(--aura-fg-primary); font: inherit; text-align: left; cursor: pointer;
|
|
1299
1316
|
}
|
|
1300
|
-
.aura-accordion__heading > button:hover { background: var(--aura-bg-surface-hover); }
|
|
1317
|
+
.aura-accordion__heading > button:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
1301
1318
|
.aura-accordion__heading > button:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: calc(-1 * var(--aura-focus-ring-width)); border-radius: var(--aura-radius-sm); }
|
|
1302
1319
|
.aura-accordion__heading > button:disabled { opacity: var(--aura-disabled-opacity); cursor: default; }
|
|
1303
1320
|
.aura-accordion__title { flex: 1; display: flex; flex-direction: column; gap: 2px; }
|
|
@@ -1338,7 +1355,7 @@ a.aura-upload__name:focus-visible { outline: var(--aura-focus-ring-width) solid
|
|
|
1338
1355
|
display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0;
|
|
1339
1356
|
border: 0; border-radius: var(--aura-radius-full); background: transparent; color: var(--aura-fg-secondary); cursor: pointer;
|
|
1340
1357
|
}
|
|
1341
|
-
.aura-combo__chip-remove:hover { background: var(--aura-bg-surface-hover); color: var(--aura-fg-primary); }
|
|
1358
|
+
.aura-combo__chip-remove:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); color: var(--aura-fg-primary); }
|
|
1342
1359
|
.aura-combo__chip-remove .aura-icon { width: 14px; height: 14px; }
|
|
1343
1360
|
|
|
1344
1361
|
/* ---------- NumberField ---------- */
|
|
@@ -1354,7 +1371,7 @@ a.aura-upload__name:focus-visible { outline: var(--aura-focus-ring-width) solid
|
|
|
1354
1371
|
}
|
|
1355
1372
|
.aura-number__step + .aura-number__step { border-left: 1px solid var(--aura-border-default); }
|
|
1356
1373
|
.aura-number__step:last-child { border-radius: 0 calc(var(--aura-radius-md) - 1px) calc(var(--aura-radius-md) - 1px) 0; }
|
|
1357
|
-
.aura-number__step:hover:not(:disabled) { background: var(--aura-bg-surface-hover); color: var(--aura-fg-primary); }
|
|
1374
|
+
.aura-number__step:hover:not(:disabled) { background: var(--aura-hover, var(--aura-bg-surface-hover)); color: var(--aura-fg-primary); }
|
|
1358
1375
|
.aura-number__step:disabled { opacity: var(--aura-disabled-opacity); cursor: default; }
|
|
1359
1376
|
|
|
1360
1377
|
/* ---------- Stepper ---------- */
|
|
@@ -1601,7 +1618,7 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1601
1618
|
border: 0; background: transparent; padding: 4px var(--aura-space-2); border-radius: var(--aura-radius-sm);
|
|
1602
1619
|
font: inherit; font-size: 13px; font-weight: 500; color: var(--aura-fg-accent); cursor: pointer; text-decoration: underline; text-underline-offset: 2px;
|
|
1603
1620
|
}
|
|
1604
|
-
.aura-filterbar__clear:hover { background: var(--aura-bg-surface-hover); }
|
|
1621
|
+
.aura-filterbar__clear:hover { background: var(--aura-hover, var(--aura-bg-surface-hover)); }
|
|
1605
1622
|
.aura-filterbar__clear:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: var(--aura-focus-ring-offset); }
|
|
1606
1623
|
@media (max-width: 767.98px) {
|
|
1607
1624
|
.aura-filterbar__search { flex-basis: 100%; max-width: none; }
|
|
@@ -1686,7 +1703,7 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
|
|
|
1686
1703
|
.aura-command__heading { padding: var(--aura-space-2) var(--aura-space-2) var(--aura-space-1); font-family: var(--font-mono); font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--aura-fg-secondary); }
|
|
1687
1704
|
.aura-command__item { display: flex; align-items: center; gap: var(--aura-space-3); min-height: 40px; padding: 6px var(--aura-space-2); border-radius: var(--aura-radius-sm); cursor: pointer; font-size: 14px; }
|
|
1688
1705
|
.aura-command__item > .aura-icon { color: var(--aura-fg-secondary); }
|
|
1689
|
-
.aura-command__item.is-active { background: var(--aura-bg-surface-hover); outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: calc(-1 * var(--aura-focus-ring-width)); }
|
|
1706
|
+
.aura-command__item.is-active { background: var(--aura-hover, var(--aura-bg-surface-hover)); outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: calc(-1 * var(--aura-focus-ring-width)); }
|
|
1690
1707
|
.aura-command__item.is-disabled { opacity: var(--aura-disabled-opacity); cursor: default; }
|
|
1691
1708
|
.aura-command__text { flex: 1; min-width: 0; display: flex; flex-direction: column; }
|
|
1692
1709
|
.aura-command__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jirawatpyk/aura-react",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.33.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",
|