@jirawatpyk/aura-react 5.34.0 → 5.35.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.
@@ -277,6 +277,7 @@ var th = {
277
277
  statusProblem: "\u0E21\u0E35\u0E1B\u0E31\u0E0D\u0E2B\u0E32",
278
278
  statusMaintenance: "\u0E1B\u0E34\u0E14\u0E1B\u0E23\u0E31\u0E1A\u0E1B\u0E23\u0E38\u0E07",
279
279
  statusOk: "\u0E1B\u0E01\u0E15\u0E34",
280
+ statusUnknown: "\u0E22\u0E31\u0E07\u0E44\u0E21\u0E48\u0E21\u0E35\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25",
280
281
  accepts: function(list, max) {
281
282
  return [list, max && "\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19 " + max + " \u0E15\u0E48\u0E2D\u0E44\u0E1F\u0E25\u0E4C"].filter(Boolean).join(" \xB7 ");
282
283
  }
@@ -412,6 +413,7 @@ var sv = {
412
413
  statusProblem: "Problem",
413
414
  statusMaintenance: "Underh\xE5ll",
414
415
  statusOk: "OK",
416
+ statusUnknown: "Ingen data",
415
417
  accepts: function(list, max) {
416
418
  return [list, max && "h\xF6gst " + max + " per fil"].filter(Boolean).join(", ");
417
419
  }
@@ -548,6 +550,7 @@ var STRINGS = {
548
550
  statusProblem: "Problem",
549
551
  statusMaintenance: "Maintenance",
550
552
  statusOk: "OK",
553
+ statusUnknown: "No data",
551
554
  accepts: function(list, max) {
552
555
  return [list, max && "up to " + max + " each"].filter(Boolean).join(", ");
553
556
  }
@@ -1380,19 +1383,22 @@ var STATUS_ICON = {
1380
1383
  down: IconCircleAlert,
1381
1384
  problem: IconTriangleAlert,
1382
1385
  maintenance: IconWrench,
1383
- ok: IconCircleCheck
1386
+ ok: IconCircleCheck,
1387
+ unknown: IconCircleDotDashed
1384
1388
  };
1385
1389
  var STATUS_TONE = {
1386
1390
  down: "danger",
1387
1391
  problem: "warning",
1388
1392
  maintenance: "accent",
1389
- ok: "default"
1393
+ ok: "default",
1394
+ unknown: "default"
1390
1395
  };
1391
1396
  var STATUS_WORD = {
1392
1397
  down: "statusDown",
1393
1398
  problem: "statusProblem",
1394
1399
  maintenance: "statusMaintenance",
1395
- ok: "statusOk"
1400
+ ok: "statusOk",
1401
+ unknown: "statusUnknown"
1396
1402
  };
1397
1403
  function statusWord(status, t) {
1398
1404
  return String(t[STATUS_WORD[status]] || STATUS_WORD[status]);
@@ -1407,7 +1413,12 @@ function attrs(props) {
1407
1413
  }
1408
1414
  var comma = h5("span", { className: "aura-status-tile__sep" }, ",");
1409
1415
  function statusTileElement(props, ref, Link, t, titleRef) {
1410
- const status = STATUS_ICON[props.status] ? props.status : "ok";
1416
+ const status = STATUS_ICON[props.status] ? props.status : "unknown";
1417
+ if (status !== props.status)
1418
+ devWarnOnce(
1419
+ "status-tile-status-" + String(props.status),
1420
+ 'StatusTile status="' + String(props.status) + '" is not down, problem, maintenance, ok or unknown: it shows as unknown ("No data"). Map your value first.'
1421
+ );
1411
1422
  const valueTone = props.valueTone || STATUS_TONE[status];
1412
1423
  const word = props.statusLabel || statusWord(status, t);
1413
1424
  const markers = (props.markers || []).filter(Boolean);
package/dist/styles.css CHANGED
@@ -864,8 +864,14 @@ a.aura-tab { text-decoration: none; }
864
864
  .aura-crumbs li.aura-crumbs__more { display: none; }
865
865
  /* "…" is the only way to the hidden items: a 24px target, 44px on touch screens. */
866
866
  .aura-crumbs__more > button { position: relative; min-width: 24px; min-height: 24px; display: inline-flex; align-items: center; justify-content: center; }
867
+ /* 5.35 (DxT Monitor 11): on a touch screen every crumb link and button (and "…") gets a 44px-tall hit area; the text
868
+ * doesn't move. The area reaches 12px into the gutter on each side (the gutter is 28px, so neighbours never overlap)
869
+ * and only 4px below the text, so it stops short of a PageHeader title 4px under the crumbs; the rest of the 44px is
870
+ * above. Wrapped rows sit 24px apart on touch screens so one row's areas never cover the next. */
867
871
  @media (pointer: coarse) {
868
- .aura-crumbs__more > button::after { content: ''; position: absolute; top: 50%; left: 50%; width: var(--aura-touch-target); height: var(--aura-touch-target); transform: translate(-50%, -50%); }
872
+ .aura-crumbs ol { row-gap: 24px; }
873
+ .aura-crumbs li > a, .aura-crumbs li > button { position: relative; }
874
+ .aura-crumbs li > a::after, .aura-crumbs li > button::after { content: ''; position: absolute; left: -12px; right: -12px; bottom: -4px; height: max(100% + 4px, var(--aura-touch-target)); }
869
875
  }
870
876
  @media (max-width: 639.98px) {
871
877
  .aura-crumbs--collapse-sm li.aura-crumbs__more { display: inline-flex; }
@@ -1072,6 +1078,10 @@ a.aura-tab { text-decoration: none; }
1072
1078
  --aura-shell-bar-height: 56px; /* 5.14 (Chamber-OS 104): the top bar's height, for sticky offsets under it */
1073
1079
  }
1074
1080
  .aura-shell--no-bar { --aura-shell-bar-height: 0px; }
1081
+ /* 5.35 (DxT Monitor 13): headerHideOnScroll — below lg the bar slides up out of view while the page scrolls down (its
1082
+ * shadow too); AppShell sets the bar-height token to 0 meanwhile. */
1083
+ .aura-shell__bar--hides { transition: transform var(--aura-duration-base) var(--aura-ease); }
1084
+ @media (max-width: 1023.98px) { .aura-shell__bar.is-away { transform: translateY(calc(-100% - 8px)); } }
1075
1085
  @media (min-width: 1024px) { .aura-shell--menu-bar { --aura-shell-bar-height: 0px; } }
1076
1086
  .aura-shell__nav { position: sticky; top: 0; height: 100vh; height: 100dvh; flex: none; }
1077
1087
  .aura-shell__main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
@@ -1187,6 +1197,7 @@ button.aura-stat { font: inherit; width: 100%; cursor: pointer; }
1187
1197
  .aura-status-tile--down .aura-status-tile__icon { color: var(--aura-alert-danger-fg); }
1188
1198
  .aura-status-tile--problem .aura-status-tile__icon { color: var(--aura-alert-warning-fg); }
1189
1199
  .aura-status-tile--maintenance .aura-status-tile__icon { color: var(--aura-alert-info-fg); }
1200
+ .aura-status-tile--unknown .aura-status-tile__icon { color: var(--aura-fg-tertiary); } /* 5.35: no data yet */
1190
1201
  /* Two lines at most: similar names stay apart. */
1191
1202
  .aura-status-tile__title {
1192
1203
  flex: 1 1 0; min-width: 0; font-weight: 600; overflow-wrap: break-word;
@@ -1845,10 +1856,18 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
1845
1856
  @media (min-width: 1024px) { .aura-bottomnav.aura-bottomnav--below-lg, .aura-bottomnav-spacer.aura-bottomnav--below-lg { display: none; } }
1846
1857
  @media (min-width: 1280px) { .aura-bottomnav.aura-bottomnav--below-xl, .aura-bottomnav-spacer.aura-bottomnav--below-xl { display: none; } }
1847
1858
  /* While a BottomNav shows, viewport ActionBars and phone toasts sit on top of it. */
1848
- :root:has(.aura-bottomnav--always) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); }
1849
- @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)); } }
1850
- @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)); } }
1851
- @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)); } }
1859
+ /* 5.35: not while it has slid away on scroll, nor on a page that hides it (data-aura-hide-bottomnav). */
1860
+ :root:has(nav.aura-bottomnav--always:not(.is-away)):not(:has([data-aura-hide-bottomnav])) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); }
1861
+ @media (max-width: 767.98px) { :root:has(nav.aura-bottomnav--below-md:not(.is-away)):not(:has([data-aura-hide-bottomnav])) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); } }
1862
+ @media (max-width: 1023.98px) { :root:has(nav.aura-bottomnav--below-lg:not(.is-away)):not(:has([data-aura-hide-bottomnav])) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); } }
1863
+ @media (max-width: 1279.98px) { :root:has(nav.aura-bottomnav--below-xl:not(.is-away)):not(:has([data-aura-hide-bottomnav])) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); } }
1864
+ /* 5.35 (DxT Monitor 14): hideOnScroll slides it down out of view (the spacer stays, so nothing shifts); a page with its
1865
+ * own bottom bar (ActionBar hidesBottomNav, or data-aura-hide-bottomnav on any element) has no BottomNav or spacer. */
1866
+ .aura-bottomnav--hides { transition: transform var(--aura-duration-base) var(--aura-ease); }
1867
+ .aura-bottomnav.is-away { transform: translateY(100%); }
1868
+ :root:has([data-aura-hide-bottomnav]) .aura-bottomnav, :root:has([data-aura-hide-bottomnav]) .aura-bottomnav-spacer { display: none; }
1869
+ .aura-actionbar--viewport { transition: bottom var(--aura-duration-base) var(--aura-ease); }
1870
+ @media (prefers-reduced-motion: reduce) { .aura-bottomnav--hides, .aura-actionbar--viewport, .aura-shell__bar--hides { transition: none; } }
1852
1871
  /* Toasts clear a BottomNav wherever it shows (phones and tablets), else the bottom safe-area inset (5.6). */
1853
1872
  .aura-toaster:not(.is-top) { bottom: calc(var(--aura-toaster-offset, var(--aura-space-6)) + var(--aura-bottomnav-offset, env(safe-area-inset-bottom, 0px))); }
1854
1873
  @media (max-width: 639.98px) { .aura-toaster:not(.is-top) { bottom: calc(var(--aura-toaster-offset, var(--aura-space-4)) + var(--aura-bottomnav-offset, env(safe-area-inset-bottom, 0px))); } }
@@ -866,8 +866,14 @@ a.aura-tab { text-decoration: none; }
866
866
  .aura-crumbs li.aura-crumbs__more { display: none; }
867
867
  /* "…" is the only way to the hidden items: a 24px target, 44px on touch screens. */
868
868
  .aura-crumbs__more > button { position: relative; min-width: 24px; min-height: 24px; display: inline-flex; align-items: center; justify-content: center; }
869
+ /* 5.35 (DxT Monitor 11): on a touch screen every crumb link and button (and "…") gets a 44px-tall hit area; the text
870
+ * doesn't move. The area reaches 12px into the gutter on each side (the gutter is 28px, so neighbours never overlap)
871
+ * and only 4px below the text, so it stops short of a PageHeader title 4px under the crumbs; the rest of the 44px is
872
+ * above. Wrapped rows sit 24px apart on touch screens so one row's areas never cover the next. */
869
873
  @media (pointer: coarse) {
870
- .aura-crumbs__more > button::after { content: ''; position: absolute; top: 50%; left: 50%; width: var(--aura-touch-target); height: var(--aura-touch-target); transform: translate(-50%, -50%); }
874
+ .aura-crumbs ol { row-gap: 24px; }
875
+ .aura-crumbs li > a, .aura-crumbs li > button { position: relative; }
876
+ .aura-crumbs li > a::after, .aura-crumbs li > button::after { content: ''; position: absolute; left: -12px; right: -12px; bottom: -4px; height: max(100% + 4px, var(--aura-touch-target)); }
871
877
  }
872
878
  @media (max-width: 639.98px) {
873
879
  .aura-crumbs--collapse-sm li.aura-crumbs__more { display: inline-flex; }
@@ -1074,6 +1080,10 @@ a.aura-tab { text-decoration: none; }
1074
1080
  --aura-shell-bar-height: 56px; /* 5.14 (Chamber-OS 104): the top bar's height, for sticky offsets under it */
1075
1081
  }
1076
1082
  .aura-shell--no-bar { --aura-shell-bar-height: 0px; }
1083
+ /* 5.35 (DxT Monitor 13): headerHideOnScroll — below lg the bar slides up out of view while the page scrolls down (its
1084
+ * shadow too); AppShell sets the bar-height token to 0 meanwhile. */
1085
+ .aura-shell__bar--hides { transition: transform var(--aura-duration-base) var(--aura-ease); }
1086
+ @media (max-width: 1023.98px) { .aura-shell__bar.is-away { transform: translateY(calc(-100% - 8px)); } }
1077
1087
  @media (min-width: 1024px) { .aura-shell--menu-bar { --aura-shell-bar-height: 0px; } }
1078
1088
  .aura-shell__nav { position: sticky; top: 0; height: 100vh; height: 100dvh; flex: none; }
1079
1089
  .aura-shell__main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
@@ -1189,6 +1199,7 @@ button.aura-stat { font: inherit; width: 100%; cursor: pointer; }
1189
1199
  .aura-status-tile--down .aura-status-tile__icon { color: var(--aura-alert-danger-fg); }
1190
1200
  .aura-status-tile--problem .aura-status-tile__icon { color: var(--aura-alert-warning-fg); }
1191
1201
  .aura-status-tile--maintenance .aura-status-tile__icon { color: var(--aura-alert-info-fg); }
1202
+ .aura-status-tile--unknown .aura-status-tile__icon { color: var(--aura-fg-tertiary); } /* 5.35: no data yet */
1192
1203
  /* Two lines at most: similar names stay apart. */
1193
1204
  .aura-status-tile__title {
1194
1205
  flex: 1 1 0; min-width: 0; font-weight: 600; overflow-wrap: break-word;
@@ -1847,10 +1858,18 @@ button.aura-stepper__step:hover .aura-stepper__label { text-decoration: underlin
1847
1858
  @media (min-width: 1024px) { .aura-bottomnav.aura-bottomnav--below-lg, .aura-bottomnav-spacer.aura-bottomnav--below-lg { display: none; } }
1848
1859
  @media (min-width: 1280px) { .aura-bottomnav.aura-bottomnav--below-xl, .aura-bottomnav-spacer.aura-bottomnav--below-xl { display: none; } }
1849
1860
  /* While a BottomNav shows, viewport ActionBars and phone toasts sit on top of it. */
1850
- :root:has(.aura-bottomnav--always) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); }
1851
- @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)); } }
1852
- @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)); } }
1853
- @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)); } }
1861
+ /* 5.35: not while it has slid away on scroll, nor on a page that hides it (data-aura-hide-bottomnav). */
1862
+ :root:has(nav.aura-bottomnav--always:not(.is-away)):not(:has([data-aura-hide-bottomnav])) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); }
1863
+ @media (max-width: 767.98px) { :root:has(nav.aura-bottomnav--below-md:not(.is-away)):not(:has([data-aura-hide-bottomnav])) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); } }
1864
+ @media (max-width: 1023.98px) { :root:has(nav.aura-bottomnav--below-lg:not(.is-away)):not(:has([data-aura-hide-bottomnav])) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); } }
1865
+ @media (max-width: 1279.98px) { :root:has(nav.aura-bottomnav--below-xl:not(.is-away)):not(:has([data-aura-hide-bottomnav])) { --aura-bottomnav-offset: calc(var(--aura-bottomnav-height) + env(safe-area-inset-bottom, 0px)); } }
1866
+ /* 5.35 (DxT Monitor 14): hideOnScroll slides it down out of view (the spacer stays, so nothing shifts); a page with its
1867
+ * own bottom bar (ActionBar hidesBottomNav, or data-aura-hide-bottomnav on any element) has no BottomNav or spacer. */
1868
+ .aura-bottomnav--hides { transition: transform var(--aura-duration-base) var(--aura-ease); }
1869
+ .aura-bottomnav.is-away { transform: translateY(100%); }
1870
+ :root:has([data-aura-hide-bottomnav]) .aura-bottomnav, :root:has([data-aura-hide-bottomnav]) .aura-bottomnav-spacer { display: none; }
1871
+ .aura-actionbar--viewport { transition: bottom var(--aura-duration-base) var(--aura-ease); }
1872
+ @media (prefers-reduced-motion: reduce) { .aura-bottomnav--hides, .aura-actionbar--viewport, .aura-shell__bar--hides { transition: none; } }
1854
1873
  /* Toasts clear a BottomNav wherever it shows (phones and tablets), else the bottom safe-area inset (5.6). */
1855
1874
  .aura-toaster:not(.is-top) { bottom: calc(var(--aura-toaster-offset, var(--aura-space-6)) + var(--aura-bottomnav-offset, env(safe-area-inset-bottom, 0px))); }
1856
1875
  @media (max-width: 639.98px) { .aura-toaster:not(.is-top) { bottom: calc(var(--aura-toaster-offset, var(--aura-space-4)) + var(--aura-bottomnav-offset, env(safe-area-inset-bottom, 0px))); } }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jirawatpyk/aura-react",
3
- "version": "5.34.0",
3
+ "version": "5.35.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",