@jirawatpyk/aura-react 4.18.0 → 4.20.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/dist/styles.css CHANGED
@@ -82,16 +82,17 @@ a.aura-btn { text-decoration: none; }
82
82
  background: var(--aura-bg-surface);
83
83
  color: var(--aura-fg-primary);
84
84
  }
85
- .aura-table__scroll { position: relative; overflow: auto; overscroll-behavior: contain; }
85
+ .aura-table__scroll { position: relative; overflow: auto; overscroll-behavior: contain; height: var(--aura-table-h, auto); }
86
86
  .aura-table__head {
87
87
  position: sticky; top: 0; z-index: 3; box-sizing: border-box; /* the hairline is inside the row height */
88
- display: flex; height: var(--aura-table-row-height);
88
+ display: flex; height: var(--aura-table-row-height); min-width: var(--aura-row-min, 0);
89
89
  background: var(--aura-bg-canvas);
90
90
  border-bottom: 1px solid var(--aura-border-default);
91
91
  font-family: var(--font-mono); font-size: 12px; color: var(--aura-fg-secondary);
92
92
  }
93
93
  .aura-table__row {
94
94
  box-sizing: border-box; display: flex; height: var(--aura-table-row-height); /* exactly the virtual row height */
95
+ min-width: var(--aura-row-min, 0);
95
96
  background: var(--aura-bg-surface);
96
97
  border-bottom: 1px solid var(--aura-border-default);
97
98
  font-size: 13px;
@@ -110,15 +111,14 @@ a.aura-btn { text-decoration: none; }
110
111
  .aura-table__row--skeleton .aura-table__td.is-end { justify-content: flex-end; }
111
112
  /* Row links (getRowHref): the first cell's text is the link; the whole row is the click target */
112
113
  .aura-table__row-link { color: inherit; text-decoration: none; }
113
- .aura-table__row-link:hover, .aura-table__row:hover .aura-table__row-link, .aura-table__card:hover .aura-table__row-link { text-decoration: underline; text-underline-offset: 2px; }
114
+ .aura-table__row-link:hover, .aura-table__row:hover .aura-table__row-link { text-decoration: underline; text-underline-offset: 2px; }
114
115
  .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); }
115
116
  /* Server mode refresh: the previous page stays, inactive, under a progress bar until the next one arrives */
116
- .aura-table.is-refreshing .aura-table__row, .aura-table.is-refreshing .aura-table__card { opacity: 0.6; pointer-events: none; }
117
+ .aura-table.is-refreshing .aura-table__row { opacity: 0.6; pointer-events: none; }
117
118
  .aura-table__busy-bar {
118
119
  position: absolute; z-index: 6; top: calc(var(--aura-table-row-height) - 2px); left: 0; right: 0; height: 2px; overflow: hidden;
119
120
  border-radius: var(--aura-radius-full); pointer-events: none;
120
121
  }
121
- .aura-table--stacked .aura-table__busy-bar { top: 0; }
122
122
  .aura-table__busy-bar::after {
123
123
  content: ''; position: absolute; top: 0; bottom: 0; width: 35%; background: var(--aura-fg-accent);
124
124
  animation: aura-progress-slide var(--aura-duration-pulse) var(--aura-ease) infinite;
@@ -132,6 +132,9 @@ a.aura-btn { text-decoration: none; }
132
132
  }
133
133
  .aura-table__td .aura-pill, .aura-table__td .aura-dropdown, .aura-table__td > .aura-icon-btn, .aura-table__td > .aura-btn { vertical-align: middle; }
134
134
  .aura-table__th { position: relative; box-sizing: border-box; display: flex; align-items: center; padding-right: var(--aura-space-2); }
135
+ /* Column sizes come from custom properties set per cell (4.20), so the card layout can override them. */
136
+ .aura-table__th, .aura-table__td { flex: var(--aura-cell-flex, none); width: var(--aura-cell-w, auto); min-width: var(--aura-cell-min, 0); }
137
+ .aura-table__break, .aura-table__sel-text { display: none; }
135
138
  .aura-table__th-inner { display: flex; align-items: center; gap: var(--aura-space-1); min-width: 0; width: 100%; }
136
139
  .aura-table__th-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
137
140
  .aura-table__pin-icon { color: var(--aura-fg-secondary); }
@@ -153,7 +156,7 @@ a.aura-btn { text-decoration: none; }
153
156
  .aura-table__sel.is-pinned { position: sticky; left: var(--aura-space-6); z-index: 2; }
154
157
 
155
158
  /* Pinned columns */
156
- .aura-table__th.is-pinned, .aura-table__td.is-pinned { position: sticky; z-index: 2; background: inherit; }
159
+ .aura-table__th.is-pinned, .aura-table__td.is-pinned { position: sticky; left: var(--aura-cell-left, auto); z-index: 2; background: inherit; }
157
160
  .aura-table.is-scrolled-x .is-pin-edge { box-shadow: inset -1px 0 0 var(--aura-border-default); }
158
161
 
159
162
  /* Cell focus — the grid's single tab stop moves cell by cell */
@@ -234,6 +237,16 @@ a.aura-btn { text-decoration: none; }
234
237
  }
235
238
  .aura-menu__check.is-on { background: var(--aura-button-primary-bg); border-color: var(--aura-button-primary-bg); color: var(--aura-button-primary-fg); }
236
239
  .aura-menu__check.is-on .aura-icon { color: inherit; }
240
+ .aura-menu__item--danger, .aura-menu__item--danger .aura-icon { color: var(--aura-fg-danger); }
241
+ .aura-menu__item--danger:hover, .aura-menu__item--danger:focus { background: var(--aura-alert-danger-bg); color: var(--aura-alert-danger-fg); }
242
+ .aura-menu__item--danger:hover .aura-icon, .aura-menu__item--danger:focus .aura-icon { color: var(--aura-alert-danger-fg); }
243
+ a.aura-menu__item { text-decoration: none; box-sizing: border-box; }
244
+ .aura-menu__radio {
245
+ flex: none; box-sizing: border-box; width: 16px; height: 16px; border-radius: var(--aura-radius-full);
246
+ border: 1px solid var(--aura-border-control); display: inline-flex; align-items: center; justify-content: center;
247
+ }
248
+ .aura-menu__radio.is-on { border-color: var(--aura-button-primary-bg); }
249
+ .aura-menu__radio.is-on::after { content: ''; width: 8px; height: 8px; border-radius: var(--aura-radius-full); background: var(--aura-button-primary-bg); }
237
250
  .aura-menu__sep { height: 1px; margin: var(--aura-space-1) calc(-1 * var(--aura-space-1)); background: var(--aura-border-default); }
238
251
 
239
252
  /* Footer + pager */
@@ -564,7 +577,8 @@ a.aura-icon-btn { text-decoration: none; }
564
577
  }
565
578
  .aura-tab:hover { color: var(--aura-fg-primary); }
566
579
  .aura-tab.is-active { color: var(--aura-fg-primary); border-bottom-color: var(--aura-fg-primary); }
567
- .aura-tab:disabled { opacity: var(--aura-disabled-opacity); cursor: not-allowed; }
580
+ .aura-tab:disabled, .aura-tab.is-disabled { opacity: var(--aura-disabled-opacity); cursor: not-allowed; }
581
+ a.aura-tab { text-decoration: none; }
568
582
  .aura-tab:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: -4px; border-radius: var(--aura-radius-xs); }
569
583
  .aura-tab__count {
570
584
  min-width: 18px; padding: 0 6px; box-sizing: border-box; border-radius: var(--aura-radius-full);
@@ -839,25 +853,11 @@ a.aura-icon-btn { text-decoration: none; }
839
853
  /* The shell already pads its content: a Container directly inside only caps the width. */
840
854
  .aura-shell__content > .aura-container { padding-left: 0; padding-right: 0; }
841
855
 
842
- /* ---------- DataTable: stacked cards ---------- */
843
- .aura-table--stacked { background: transparent; border: 0; border-radius: 0; overflow: visible; }
844
- .aura-table__stack-bar { display: flex; align-items: center; gap: var(--aura-space-3); padding: 0 var(--aura-space-4) var(--aura-space-3); font-size: 13px; color: var(--aura-fg-secondary); }
845
- .aura-table__cards { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--aura-space-2); }
846
- .aura-table__card {
847
- display: flex; flex-direction: column; gap: var(--aura-space-3); padding: var(--aura-space-4);
848
- background: var(--aura-bg-surface); border: 1px solid var(--aura-border-default); border-radius: var(--aura-radius-lg); font-size: 13px;
849
- }
850
- .aura-table__card.is-selected { background: var(--aura-bg-selected); }
851
- .aura-table__card.is-actionable { cursor: pointer; }
852
- .aura-table__card:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: var(--aura-focus-ring-offset); }
853
- .aura-table__card-head { display: flex; align-items: center; gap: var(--aura-space-3); }
854
- .aura-table__card-title { flex: 1; min-width: 0; font-size: 14px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
855
- .aura-table__card-actions { display: inline-flex; margin: calc(-1 * var(--aura-space-1)) calc(-1 * var(--aura-space-2)) calc(-1 * var(--aura-space-1)) 0; }
856
- .aura-table__card-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--aura-space-2) var(--aura-space-4); margin: 0; }
857
- .aura-table__card-fields dt { font-family: var(--font-mono); font-size: 11px; color: var(--aura-fg-secondary); }
858
- .aura-table__card-fields dd { margin: 2px 0 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
859
- .aura-table--stacked .aura-table__foot { border: 1px solid var(--aura-border-default); border-radius: var(--aura-radius-lg); margin-top: var(--aura-space-2); }
860
- .aura-table--stacked .aura-table__empty { background: var(--aura-bg-surface); border: 1px solid var(--aura-border-default); border-radius: var(--aura-radius-lg); }
856
+ /* Totals row (4.19): under the body, a strong top edge; sticky at the bottom of a `height` table with stickyFooter. */
857
+ .aura-table__total { background: var(--aura-bg-canvas); border-top: 1px solid var(--aura-border-strong); font-weight: 600; }
858
+ .aura-table__total.is-sticky { position: sticky; bottom: 0; z-index: 3; }
859
+ .aura-table__total .aura-table__td.is-end { font-variant-numeric: tabular-nums; }
860
+ .aura-tooltip--above { transform: translateY(-100%); max-width: min(var(--aura-tooltip-max), 90vw); white-space: normal; }
861
861
 
862
862
  /* ---------- Stat ---------- */
863
863
  .aura-stat {
@@ -1320,32 +1320,161 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
1320
1320
  .aura-density { display: contents; }
1321
1321
 
1322
1322
 
1323
- /* DataTable: cards before hydration (4.16). While a stackBelow table hasn't measured itself yet (server HTML, first
1324
- * client render) it holds both layouts; these container queries show one, so a phone never sees the grid first. */
1325
- .aura-table-dual { container-type: inline-size; }
1326
- @container (min-width: 360px) { .aura-table-dual[data-stack-below='360'] > .aura-table--stacked { display: none; } }
1327
- @container (max-width: 359.98px) { .aura-table-dual[data-stack-below='360'] > .aura-table:not(.aura-table--stacked) { display: none; } }
1328
- @container (min-width: 400px) { .aura-table-dual[data-stack-below='400'] > .aura-table--stacked { display: none; } }
1329
- @container (max-width: 399.98px) { .aura-table-dual[data-stack-below='400'] > .aura-table:not(.aura-table--stacked) { display: none; } }
1330
- @container (min-width: 480px) { .aura-table-dual[data-stack-below='480'] > .aura-table--stacked { display: none; } }
1331
- @container (max-width: 479.98px) { .aura-table-dual[data-stack-below='480'] > .aura-table:not(.aura-table--stacked) { display: none; } }
1332
- @container (min-width: 520px) { .aura-table-dual[data-stack-below='520'] > .aura-table--stacked { display: none; } }
1333
- @container (max-width: 519.98px) { .aura-table-dual[data-stack-below='520'] > .aura-table:not(.aura-table--stacked) { display: none; } }
1334
- @container (min-width: 560px) { .aura-table-dual[data-stack-below='560'] > .aura-table--stacked { display: none; } }
1335
- @container (max-width: 559.98px) { .aura-table-dual[data-stack-below='560'] > .aura-table:not(.aura-table--stacked) { display: none; } }
1336
- @container (min-width: 600px) { .aura-table-dual[data-stack-below='600'] > .aura-table--stacked { display: none; } }
1337
- @container (max-width: 599.98px) { .aura-table-dual[data-stack-below='600'] > .aura-table:not(.aura-table--stacked) { display: none; } }
1338
- @container (min-width: 640px) { .aura-table-dual[data-stack-below='640'] > .aura-table--stacked { display: none; } }
1339
- @container (max-width: 639.98px) { .aura-table-dual[data-stack-below='640'] > .aura-table:not(.aura-table--stacked) { display: none; } }
1340
- @container (min-width: 720px) { .aura-table-dual[data-stack-below='720'] > .aura-table--stacked { display: none; } }
1341
- @container (max-width: 719.98px) { .aura-table-dual[data-stack-below='720'] > .aura-table:not(.aura-table--stacked) { display: none; } }
1342
- @container (min-width: 768px) { .aura-table-dual[data-stack-below='768'] > .aura-table--stacked { display: none; } }
1343
- @container (max-width: 767.98px) { .aura-table-dual[data-stack-below='768'] > .aura-table:not(.aura-table--stacked) { display: none; } }
1344
- @container (min-width: 800px) { .aura-table-dual[data-stack-below='800'] > .aura-table--stacked { display: none; } }
1345
- @container (max-width: 799.98px) { .aura-table-dual[data-stack-below='800'] > .aura-table:not(.aura-table--stacked) { display: none; } }
1346
- @container (min-width: 900px) { .aura-table-dual[data-stack-below='900'] > .aura-table--stacked { display: none; } }
1347
- @container (max-width: 899.98px) { .aura-table-dual[data-stack-below='900'] > .aura-table:not(.aura-table--stacked) { display: none; } }
1348
- @container (min-width: 960px) { .aura-table-dual[data-stack-below='960'] > .aura-table--stacked { display: none; } }
1349
- @container (max-width: 959.98px) { .aura-table-dual[data-stack-below='960'] > .aura-table:not(.aura-table--stacked) { display: none; } }
1350
- @container (min-width: 1024px) { .aura-table-dual[data-stack-below='1024'] > .aura-table--stacked { display: none; } }
1351
- @container (max-width: 1023.98px) { .aura-table-dual[data-stack-below='1024'] > .aura-table:not(.aura-table--stacked) { display: none; } }
1323
+ /* ---------- 4.19: BottomNav ---------- */
1324
+ /* Fixed to the bottom and padded for the home indicator; the spacer before it holds the same height in the flow.
1325
+ * Shown below its breakpoint in CSS, so the server's HTML is right before hydration. */
1326
+ .aura-bottomnav-spacer { height: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); flex: none; }
1327
+ .aura-bottomnav {
1328
+ position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--aura-z-bar); box-sizing: border-box;
1329
+ padding-bottom: env(safe-area-inset-bottom, 0px);
1330
+ background: var(--aura-bg-surface); border-top: 1px solid var(--aura-border-default); font-family: var(--font-sans);
1331
+ }
1332
+ .aura-bottomnav__list { display: flex; margin: 0; padding: 0; list-style: none; }
1333
+ .aura-bottomnav__cell { flex: 1 1 0; min-width: 0; }
1334
+ .aura-bottomnav__item {
1335
+ box-sizing: border-box; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
1336
+ width: 100%; height: var(--aura-bottomnav-height); padding: 0 2px; border: 0; background: transparent;
1337
+ color: var(--aura-fg-secondary); font: inherit; font-size: 11px; font-weight: 500; line-height: 14px;
1338
+ text-decoration: none; cursor: pointer; -webkit-tap-highlight-color: transparent;
1339
+ }
1340
+ .aura-bottomnav__item:hover { color: var(--aura-fg-primary); }
1341
+ .aura-bottomnav__item.is-active { color: var(--aura-fg-primary); font-weight: 600; }
1342
+ .aura-bottomnav__item.is-active .aura-icon { color: var(--aura-fg-accent); }
1343
+ .aura-bottomnav__item:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: -2px; border-radius: var(--aura-radius-sm); }
1344
+ .aura-bottomnav__icon {
1345
+ position: relative; display: inline-flex; align-items: center; justify-content: center;
1346
+ width: 48px; height: 28px; border-radius: var(--aura-radius-full);
1347
+ }
1348
+ .aura-bottomnav__item.is-active .aura-bottomnav__icon { background: var(--aura-bg-selected); }
1349
+ .aura-bottomnav__label { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1350
+ .aura-bottomnav__count {
1351
+ position: absolute; top: -2px; left: calc(50% + 4px); min-width: 16px; height: 16px; box-sizing: border-box; padding: 0 4px;
1352
+ border-radius: var(--aura-radius-full); background: var(--aura-bg-inverted); color: var(--aura-fg-inverted);
1353
+ font-size: 10px; font-weight: 600; line-height: 16px; text-align: center; font-variant-numeric: tabular-nums;
1354
+ box-shadow: 0 0 0 2px var(--aura-bg-surface);
1355
+ }
1356
+ .aura-bottomnav__dot {
1357
+ position: absolute; top: 2px; left: calc(50% + 6px); width: 8px; height: 8px; border-radius: var(--aura-radius-full);
1358
+ background: var(--aura-fg-accent); box-shadow: 0 0 0 2px var(--aura-bg-surface);
1359
+ }
1360
+ @media (min-width: 768px) { .aura-bottomnav.aura-bottomnav--below-md, .aura-bottomnav-spacer.aura-bottomnav--below-md { display: none; } }
1361
+ @media (min-width: 1024px) { .aura-bottomnav.aura-bottomnav--below-lg, .aura-bottomnav-spacer.aura-bottomnav--below-lg { display: none; } }
1362
+ @media (min-width: 1280px) { .aura-bottomnav.aura-bottomnav--below-xl, .aura-bottomnav-spacer.aura-bottomnav--below-xl { display: none; } }
1363
+ /* While a BottomNav shows, viewport ActionBars and phone toasts sit on top of it. */
1364
+ :root:has(.aura-bottomnav--always) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); }
1365
+ @media (max-width: 767.98px) { :root:has(.aura-bottomnav--below-md) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); } }
1366
+ @media (max-width: 1023.98px) { :root:has(.aura-bottomnav--below-lg) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); } }
1367
+ @media (max-width: 1279.98px) { :root:has(.aura-bottomnav--below-xl) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); } }
1368
+ @media (max-width: 639.98px) { .aura-toaster:not(.is-top) { bottom: calc(var(--aura-space-4) + var(--aura-bottomnav-offset, 0px)); } }
1369
+
1370
+ /* ---------- 4.19: ActionBar ---------- */
1371
+ /* Sticky, not fixed: it keeps its place at the end of its parent, so it never covers the last field. */
1372
+ .aura-actionbar { position: sticky; z-index: var(--aura-z-bar); box-sizing: border-box; background: var(--aura-bg-surface); color: var(--aura-fg-primary); font-family: var(--font-sans); }
1373
+ .aura-actionbar--viewport {
1374
+ bottom: calc(var(--aura-bottomnav-offset, 0px) + max(var(--aura-space-3), env(safe-area-inset-bottom, 0px)));
1375
+ margin-top: var(--aura-space-6);
1376
+ border: 1px solid var(--aura-border-default); border-radius: var(--aura-radius-lg); box-shadow: var(--aura-shadow-overlay);
1377
+ }
1378
+ .aura-actionbar--container { bottom: 0; border-top: 1px solid var(--aura-border-default); }
1379
+ .aura-actionbar__inner { display: flex; flex-wrap: wrap; align-items: center; gap: var(--aura-space-2) var(--aura-space-3); min-height: 60px; box-sizing: border-box; padding: var(--aura-space-2) var(--aura-space-3) var(--aura-space-2) var(--aura-space-4); }
1380
+ .aura-actionbar__status { flex: 1 1 8rem; min-width: 0; font-size: 14px; color: var(--aura-fg-secondary); font-variant-numeric: tabular-nums; }
1381
+ .aura-actionbar__status:empty { flex-basis: 0; }
1382
+ .aura-actionbar__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--aura-space-2); margin-left: auto; }
1383
+ /* Bulk bar with nothing selected: out of sight and out of the tab order, its live region still in the page. */
1384
+ .aura-actionbar.is-idle { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; box-shadow: none; }
1385
+ .aura-actionbar--container > .aura-actionbar__inner { padding-left: 0; padding-right: 0; }
1386
+
1387
+ /* ---------- 4.20: Separator ---------- */
1388
+ .aura-separator { flex: none; align-self: stretch; height: 1px; margin: var(--aura-separator-space, 0) 0; background: var(--aura-border-default); border: 0; }
1389
+ .aura-separator--vertical { width: 1px; height: auto; min-height: 1em; margin: 0 var(--aura-separator-space, 0); }
1390
+
1391
+ /* ---------- 4.20: Table (static) ---------- */
1392
+ /* DataTable's grid look — mono header band, hairlines, 20px outer radius — on plain <table> markup, with wrapping text. */
1393
+ .aura-tbl-wrap {
1394
+ overflow-x: auto; border: 1px solid var(--aura-border-default); border-radius: var(--aura-card-radius);
1395
+ background: var(--aura-bg-surface); color: var(--aura-fg-primary); font-family: var(--font-sans);
1396
+ }
1397
+ .aura-tbl { width: 100%; border-collapse: collapse; border-spacing: 0; font-size: 13px; line-height: 20px; }
1398
+ .aura-tbl__caption { caption-side: top; padding: var(--aura-space-4) var(--aura-space-6) 0; text-align: left; font-size: 14px; font-weight: 600; }
1399
+ .aura-tbl__th, .aura-tbl__td { padding: var(--aura-space-3) var(--aura-space-4); text-align: left; vertical-align: top; overflow-wrap: anywhere; }
1400
+ .aura-tbl__th:first-child, .aura-tbl__td:first-child { padding-left: var(--aura-space-6); }
1401
+ .aura-tbl__th:last-child, .aura-tbl__td:last-child { padding-right: var(--aura-space-6); }
1402
+ .aura-tbl__head .aura-tbl__th {
1403
+ background: var(--aura-bg-canvas); border-bottom: 1px solid var(--aura-border-default);
1404
+ font-family: var(--font-mono); font-size: 12px; font-weight: 400; color: var(--aura-fg-secondary); white-space: nowrap;
1405
+ }
1406
+ .aura-tbl__body .aura-tbl__row + .aura-tbl__row > * { border-top: 1px solid var(--aura-border-default); }
1407
+ .aura-tbl__body .aura-tbl__th { font-weight: 500; }
1408
+ .aura-tbl__foot > .aura-tbl__row > * { background: var(--aura-bg-canvas); font-weight: 600; }
1409
+ .aura-tbl__foot > .aura-tbl__row:first-child > * { border-top: 1px solid var(--aura-border-strong); }
1410
+ .aura-tbl__foot > .aura-tbl__row + .aura-tbl__row > * { border-top: 1px solid var(--aura-border-default); }
1411
+ .aura-tbl .is-end { text-align: right; }
1412
+ .aura-tbl .is-center { text-align: center; }
1413
+ .aura-tbl .is-numeric { font-variant-numeric: tabular-nums; white-space: nowrap; }
1414
+ .aura-tbl-wrap[data-density='compact'] .aura-tbl__th, .aura-tbl-wrap[data-density='compact'] .aura-tbl__td { padding-top: var(--aura-space-2); padding-bottom: var(--aura-space-2); }
1415
+ .aura-tbl-wrap:focus-visible { outline: var(--aura-focus-ring-width) solid var(--aura-focus-ring); outline-offset: 2px; }
1416
+
1417
+ /* ---------- 4.20: DataTable width queries and cards, one markup ---------- */
1418
+ /* Each .aura-table-q is the table's width × 10000 / its threshold (DataTable.tsx, Q), so `(width < 9999.5px)` is true
1419
+ * exactly when the table is narrower than stackBelow or a hideBelow width — before hydration, at any width. */
1420
+ .aura-table-box { overflow-x: clip; }
1421
+ .aura-table-q { width: calc(100% * var(--aura-q-scale)); container-type: inline-size; }
1422
+ .aura-table-q--stack { container-name: aura-stack; }
1423
+ .aura-table-q--h1 { container-name: aura-h1; }
1424
+ .aura-table-q--h2 { container-name: aura-h2; }
1425
+ .aura-table-q--h3 { container-name: aura-h3; }
1426
+ .aura-table-q .aura-table { width: calc(100% * var(--aura-q-back)); box-sizing: border-box; }
1427
+ @container aura-h1 (width < 9999.5px) { .aura-table { --aura-h1-on: 0; } .aura-table [data-hide='1'] { display: none; } }
1428
+ @container aura-h2 (width < 9999.5px) { .aura-table { --aura-h2-on: 0; } .aura-table [data-hide='2'] { display: none; } }
1429
+ @container aura-h3 (width < 9999.5px) { .aura-table { --aura-h3-on: 0; } .aura-table [data-hide='3'] { display: none; } }
1430
+
1431
+ /* Below stackBelow the same grid lays out as cards: the first column is the title, the first other pill column sits
1432
+ * beside it, `actions` columns go top-right, the rest are label/value fields two to a line. Column headers stay for
1433
+ * screen readers; the labels are generated content with empty alt text, so they aren't read twice. */
1434
+ @container aura-stack (width < 9999.5px) {
1435
+ .aura-table { background: transparent; border: 0; border-radius: 0; overflow: visible; }
1436
+ .aura-table__scroll { overflow: visible; height: auto; }
1437
+ .aura-table__busy-bar { top: 0; }
1438
+ .aura-table__picker { display: none; }
1439
+ .aura-table__head {
1440
+ position: static; height: auto; min-width: 0; padding: 0 0 var(--aura-space-3); border: 0; background: none;
1441
+ font-family: var(--font-sans); font-size: 13px;
1442
+ }
1443
+ .aura-table__head > .aura-table__th {
1444
+ position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
1445
+ }
1446
+ .aura-table__head:not(.has-select-all) { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); }
1447
+ .aura-table__head > .aura-table__sel { position: static; width: auto; gap: var(--aura-space-3); padding: 0 var(--aura-space-4); }
1448
+ .aura-table__sel-text { display: inline; color: var(--aura-fg-secondary); }
1449
+ .aura-table__gutter { display: none; }
1450
+ .aura-table__row, .aura-table__row:last-child {
1451
+ height: auto; min-width: 0; flex-wrap: wrap; align-items: center; gap: var(--aura-space-1) var(--aura-space-4);
1452
+ margin-bottom: var(--aura-space-2); padding: var(--aura-space-4);
1453
+ border: 1px solid var(--aura-border-default); border-radius: var(--aura-radius-lg);
1454
+ }
1455
+ .aura-table__sel, .aura-table__th.is-pinned, .aura-table__td.is-pinned, .aura-table__total.is-sticky { position: static; box-shadow: none; }
1456
+ .aura-table__row > .aura-table__sel { order: 0; width: auto; margin-right: calc(-1 * var(--aura-space-1)); }
1457
+ .aura-table__td {
1458
+ order: 5; flex: 0 0 calc(50% - var(--aura-space-4) / 2); align-self: flex-start; width: auto; min-width: 0; height: auto;
1459
+ margin-bottom: var(--aura-space-1);
1460
+ padding: 0; line-height: normal;
1461
+ }
1462
+ .aura-table__td[data-hide] { display: block; }
1463
+ .aura-table__td[data-label]::before {
1464
+ content: attr(data-label); content: attr(data-label) / '';
1465
+ display: block; margin-bottom: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: start;
1466
+ font-family: var(--font-mono); font-size: 11px; line-height: normal; font-weight: 400; color: var(--aura-fg-secondary);
1467
+ }
1468
+ .aura-table__td[data-card='title'], .aura-table__td[data-card='pill'], .aura-table__td[data-card='actions'] { align-self: center; margin-bottom: 0; }
1469
+ .aura-table__td[data-card='title'] { order: 1; flex: 1 1 0; font-size: 14px; font-weight: 600; }
1470
+ .aura-table__td[data-card='pill'] { order: 2; flex: none; }
1471
+ .aura-table__td[data-card='actions'] { order: 3; flex: none; margin: calc(-1 * var(--aura-space-1)) calc(-1 * var(--aura-space-2)) calc(-1 * var(--aura-space-1)) 0; }
1472
+ /* Spacing: 12px under the title line, 8px between field lines (row gap 4 + the break's 4 + each field's 4 below). */
1473
+ .aura-table__break { display: block; order: 4; flex: 0 0 100%; height: var(--aura-space-1); }
1474
+ .aura-table__row:has(> .aura-table__break) { padding-bottom: calc(var(--aura-space-4) - var(--aura-space-1)); }
1475
+ .aura-table__row--skeleton .aura-table__td { display: flex; }
1476
+ .aura-table__total { background: var(--aura-bg-canvas); }
1477
+ .aura-table__total > .is-blank { display: none; }
1478
+ .aura-table__foot { border: 1px solid var(--aura-border-default); border-radius: var(--aura-radius-lg); margin-top: var(--aura-space-2); background: var(--aura-bg-surface); }
1479
+ .aura-table__empty { background: var(--aura-bg-surface); border: 1px solid var(--aura-border-default); border-radius: var(--aura-radius-lg); }
1480
+ }