@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.
@@ -1,4 +1,4 @@
1
- /* @ds-bundle: {"format":4,"namespace":"Aura","components":[{"name":"Icon"},{"name":"Button"},{"name":"IconButton"},{"name":"Menu"},{"name":"DropdownMenu"},{"name":"Checkbox"},{"name":"StatusPill"},{"name":"TextField"},{"name":"Textarea"},{"name":"Select"},{"name":"RadioGroup"},{"name":"Switch"},{"name":"Combobox"},{"name":"DatePicker"},{"name":"DateRangePicker"},{"name":"Calendar"},{"name":"Alert"},{"name":"Toaster"},{"name":"PasswordField"},{"name":"FormErrorSummary"},{"name":"FilterBar"},{"name":"Command"},{"name":"Tooltip"},{"name":"Dialog"},{"name":"Drawer"},{"name":"DataTable"},{"name":"Card"},{"name":"Tabs"},{"name":"SideNav"},{"name":"Breadcrumb"},{"name":"Avatar"},{"name":"Stack"},{"name":"Grid"},{"name":"Container"},{"name":"AppShell"},{"name":"Surface"},{"name":"Stat"},{"name":"TimePicker"},{"name":"FileUpload"},{"name":"ColorSchemeScript"},{"name":"ColorSchemeToggle"},{"name":"Badge"},{"name":"Tag"},{"name":"Progress"},{"name":"Skeleton"},{"name":"EmptyState"},{"name":"Pagination"},{"name":"Accordion"},{"name":"Popover"},{"name":"NumberField"},{"name":"Stepper"},{"name":"SegmentedControl"}]} */
1
+ /* @ds-bundle: {"format":4,"namespace":"Aura","components":[{"name":"Icon"},{"name":"Button"},{"name":"IconButton"},{"name":"Menu"},{"name":"DropdownMenu"},{"name":"Checkbox"},{"name":"StatusPill"},{"name":"TextField"},{"name":"Textarea"},{"name":"Select"},{"name":"RadioGroup"},{"name":"Switch"},{"name":"Combobox"},{"name":"DatePicker"},{"name":"DateRangePicker"},{"name":"Calendar"},{"name":"Alert"},{"name":"Toaster"},{"name":"PasswordField"},{"name":"FormErrorSummary"},{"name":"FilterBar"},{"name":"Command"},{"name":"Tooltip"},{"name":"Dialog"},{"name":"Drawer"},{"name":"DataTable"},{"name":"Card"},{"name":"Tabs"},{"name":"SideNav"},{"name":"Breadcrumb"},{"name":"Avatar"},{"name":"Stack"},{"name":"Grid"},{"name":"Container"},{"name":"AppShell"},{"name":"ActionBar"},{"name":"Separator"},{"name":"Table"},{"name":"Tr"},{"name":"Th"},{"name":"Td"},{"name":"BottomNav"},{"name":"Surface"},{"name":"Stat"},{"name":"TimePicker"},{"name":"FileUpload"},{"name":"ColorSchemeScript"},{"name":"ColorSchemeToggle"},{"name":"Badge"},{"name":"Tag"},{"name":"Progress"},{"name":"Skeleton"},{"name":"EmptyState"},{"name":"Pagination"},{"name":"Accordion"},{"name":"Popover"},{"name":"NumberField"},{"name":"Stepper"},{"name":"SegmentedControl"}]} */
2
2
  window.Aura = (() => {
3
3
  var __create = Object.create;
4
4
  var __defProp = Object.defineProperty;
@@ -51,11 +51,13 @@ window.Aura = (() => {
51
51
  var index_exports = {};
52
52
  __export(index_exports, {
53
53
  Accordion: () => Accordion,
54
+ ActionBar: () => ActionBar,
54
55
  Alert: () => Alert,
55
56
  AppShell: () => AppShell,
56
57
  AuraProvider: () => AuraProvider,
57
58
  Avatar: () => Avatar,
58
59
  Badge: () => Badge,
60
+ BottomNav: () => BottomNav,
59
61
  Breadcrumb: () => Breadcrumb,
60
62
  Button: () => Button,
61
63
  Calendar: () => Calendar,
@@ -91,6 +93,7 @@ window.Aura = (() => {
91
93
  STRINGS: () => STRINGS,
92
94
  SegmentedControl: () => SegmentedControl,
93
95
  Select: () => Select,
96
+ Separator: () => Separator,
94
97
  SideNav: () => SideNav,
95
98
  Skeleton: () => Skeleton,
96
99
  Stack: () => Stack,
@@ -99,14 +102,21 @@ window.Aura = (() => {
99
102
  Stepper: () => Stepper,
100
103
  Surface: () => Surface,
101
104
  Switch: () => Switch,
105
+ TBody: () => TBody,
106
+ TFoot: () => TFoot,
107
+ THead: () => THead,
108
+ Table: () => Table,
102
109
  Tabs: () => Tabs,
103
110
  Tag: () => Tag,
111
+ Td: () => Td,
104
112
  TextField: () => TextField,
105
113
  Textarea: () => Textarea,
114
+ Th: () => Th,
106
115
  ThemeStyle: () => ThemeStyle,
107
116
  TimePicker: () => TimePicker,
108
117
  Toaster: () => Toaster,
109
118
  Tooltip: () => Tooltip,
119
+ Tr: () => Tr,
110
120
  brandScale: () => scale,
111
121
  breakpoints: () => breakpoints,
112
122
  colorSchemeScript: () => colorSchemeScript,
@@ -114,12 +124,13 @@ window.Aura = (() => {
114
124
  contrast: () => contrast,
115
125
  createTheme: () => createTheme,
116
126
  formatBytes: () => formatBytes,
117
- formatDate: () => formatDate,
127
+ formatDate: () => formatDate2,
118
128
  iconNames: () => iconNames,
119
129
  parseDate: () => parseDate,
120
130
  parseTime: () => parseTime,
121
131
  statusTone: () => toneFor,
122
132
  toast: () => toast,
133
+ todayIn: () => todayIn,
123
134
  useAuraLocale: () => useAuraLocale,
124
135
  useBreakpoint: () => useBreakpoint,
125
136
  useColorScheme: () => useColorScheme,
@@ -346,6 +357,7 @@ window.Aura = (() => {
346
357
  },
347
358
  prevPage: "Previous page",
348
359
  nextPage: "Next page",
360
+ totals: "Totals",
349
361
  rowCount: function(c) {
350
362
  return n(c) + " rows";
351
363
  },
@@ -459,6 +471,7 @@ window.Aura = (() => {
459
471
  },
460
472
  prevPage: "\u0E2B\u0E19\u0E49\u0E32\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32",
461
473
  nextPage: "\u0E2B\u0E19\u0E49\u0E32\u0E16\u0E31\u0E14\u0E44\u0E1B",
474
+ totals: "\u0E23\u0E27\u0E21",
462
475
  rowCount: function(c) {
463
476
  return n(c) + " \u0E41\u0E16\u0E27";
464
477
  },
@@ -572,6 +585,7 @@ window.Aura = (() => {
572
585
  },
573
586
  prevPage: "F\xF6reg\xE5ende sida",
574
587
  nextPage: "N\xE4sta sida",
588
+ totals: "Summa",
575
589
  rowCount: function(c) {
576
590
  return nsv(c) + " rader";
577
591
  },
@@ -622,6 +636,7 @@ window.Aura = (() => {
622
636
  function AuraProvider(props) {
623
637
  const outer = React3.useContext(LocaleContext);
624
638
  const density = props.density || outer && outer.density || null;
639
+ const timeZone = props.timeZone || outer && outer.timeZone || null;
625
640
  const value = React3.useMemo(
626
641
  function() {
627
642
  const base = props.locale && STRINGS[props.locale] || STRINGS.en;
@@ -630,10 +645,11 @@ window.Aura = (() => {
630
645
  calendar: props.calendar || null,
631
646
  strings: props.strings ? Object.assign({}, base, props.strings) : base,
632
647
  linkComponent: props.linkComponent || null,
633
- density
648
+ density,
649
+ timeZone
634
650
  };
635
651
  },
636
- [props.locale, props.calendar, props.strings, props.linkComponent, density]
652
+ [props.locale, props.calendar, props.strings, props.linkComponent, density, timeZone]
637
653
  );
638
654
  return /* @__PURE__ */ React3.createElement(LocaleContext.Provider, { value }, props.density ? /* @__PURE__ */ React3.createElement("div", { className: "aura-density", "data-density": props.density }, props.children) : props.children);
639
655
  }
@@ -767,6 +783,7 @@ window.Aura = (() => {
767
783
  const pos = posState[0], setPos = posState[1];
768
784
  const items2 = props.items || [];
769
785
  const mounted = useMounted();
786
+ const Link = useLinkComponent(props.linkComponent);
770
787
  useIsoLayoutEffect(
771
788
  function() {
772
789
  const a = props.anchor, m = own.current;
@@ -827,6 +844,63 @@ window.Aura = (() => {
827
844
  }
828
845
  e.stopPropagation();
829
846
  }
847
+ function groupItems(list) {
848
+ const out = [];
849
+ list.forEach(function(it, i) {
850
+ const g = it.type === "radio" && it.group ? it.group : null;
851
+ const last = out[out.length - 1];
852
+ if (last && last.group === g && g !== null) last.items.push({ it, i });
853
+ else out.push({ group: g, items: [{ it, i }] });
854
+ });
855
+ return out;
856
+ }
857
+ function renderItem(it, i) {
858
+ if (it.separator) return /* @__PURE__ */ React6.createElement("div", { key: "s" + i, role: "separator", className: "aura-menu__sep" });
859
+ const isRadio = it.type === "radio";
860
+ const isCheck = !isRadio && it.checked !== void 0;
861
+ const lead = isRadio ? /* @__PURE__ */ React6.createElement("span", { className: cx("aura-menu__radio", it.checked && "is-on") }) : isCheck ? /* @__PURE__ */ React6.createElement("span", { className: cx("aura-menu__check", it.checked && "is-on") }, it.checked ? /* @__PURE__ */ React6.createElement(Icon, { name: "check", size: 12, strokeWidth: 3 }) : null) : it.icon ? /* @__PURE__ */ React6.createElement(Icon, { name: it.icon }) : /* @__PURE__ */ React6.createElement("span", { className: "aura-menu__blank" });
862
+ const body = [
863
+ /* @__PURE__ */ React6.createElement(React6.Fragment, { key: "l" }, lead),
864
+ /* @__PURE__ */ React6.createElement("span", { key: "t", className: "aura-menu__label" }, it.label),
865
+ it.hint ? /* @__PURE__ */ React6.createElement("span", { key: "h", className: "aura-menu__hint" }, it.hint) : null
866
+ ];
867
+ const cls = cx("aura-menu__item", it.tone === "danger" && "aura-menu__item--danger");
868
+ if (it.href && !it.disabled)
869
+ return /* @__PURE__ */ React6.createElement(
870
+ Link,
871
+ {
872
+ key: i,
873
+ href: it.href,
874
+ target: it.target,
875
+ rel: it.target === "_blank" ? "noreferrer" : void 0,
876
+ tabIndex: -1,
877
+ role: "menuitem",
878
+ className: cls,
879
+ onClick: function() {
880
+ if (it.onSelect) it.onSelect();
881
+ props.onClose(false);
882
+ }
883
+ },
884
+ body
885
+ );
886
+ return /* @__PURE__ */ React6.createElement(
887
+ "button",
888
+ {
889
+ key: i,
890
+ type: "button",
891
+ tabIndex: -1,
892
+ disabled: it.disabled,
893
+ role: isRadio ? "menuitemradio" : isCheck ? "menuitemcheckbox" : "menuitem",
894
+ "aria-checked": isRadio || isCheck ? !!it.checked : void 0,
895
+ className: cls,
896
+ onClick: function() {
897
+ if (it.onSelect) it.onSelect();
898
+ if (!it.keepOpen) props.onClose(true);
899
+ }
900
+ },
901
+ body
902
+ );
903
+ }
830
904
  const el = /* @__PURE__ */ React6.createElement(
831
905
  "div",
832
906
  {
@@ -837,28 +911,11 @@ window.Aura = (() => {
837
911
  onKeyDown,
838
912
  style: { top: pos ? pos.top : -9999, left: pos ? pos.left : -9999 }
839
913
  },
840
- items2.map(function(it, i) {
841
- if (it.separator) return /* @__PURE__ */ React6.createElement("div", { key: "s" + i, role: "separator", className: "aura-menu__sep" });
842
- const isCheck = it.checked !== void 0;
843
- return /* @__PURE__ */ React6.createElement(
844
- "button",
845
- {
846
- key: i,
847
- type: "button",
848
- tabIndex: -1,
849
- disabled: it.disabled,
850
- role: isCheck ? "menuitemcheckbox" : "menuitem",
851
- "aria-checked": isCheck ? !!it.checked : void 0,
852
- className: "aura-menu__item",
853
- onClick: function() {
854
- it.onSelect();
855
- if (!it.keepOpen) props.onClose(true);
856
- }
857
- },
858
- isCheck ? /* @__PURE__ */ React6.createElement("span", { className: cx("aura-menu__check", it.checked && "is-on") }, it.checked ? /* @__PURE__ */ React6.createElement(Icon, { name: "check", size: 12, strokeWidth: 3 }) : null) : it.icon ? /* @__PURE__ */ React6.createElement(Icon, { name: it.icon }) : /* @__PURE__ */ React6.createElement("span", { className: "aura-menu__blank" }),
859
- /* @__PURE__ */ React6.createElement("span", { className: "aura-menu__label" }, it.label),
860
- it.hint ? /* @__PURE__ */ React6.createElement("span", { className: "aura-menu__hint" }, it.hint) : null
861
- );
914
+ groupItems(items2).map(function(block, bi) {
915
+ const rendered = block.items.map(function(x) {
916
+ return renderItem(x.it, x.i);
917
+ });
918
+ return block.group ? /* @__PURE__ */ React6.createElement("div", { key: "g" + bi, role: "group", "aria-label": block.group, className: "aura-menu__group" }, rendered) : /* @__PURE__ */ React6.createElement(React6.Fragment, { key: "f" + bi }, rendered);
862
919
  })
863
920
  );
864
921
  return mounted ? (0, import_react_dom.createPortal)(el, document.body) : null;
@@ -887,6 +944,7 @@ window.Aura = (() => {
887
944
  anchor,
888
945
  label: props.label,
889
946
  items: props.items,
947
+ linkComponent: props.linkComponent,
890
948
  onClose: function(restore) {
891
949
  setAnchor(null);
892
950
  if (restore && typeof anchor.focus === "function") anchor.focus();
@@ -1273,13 +1331,13 @@ window.Aura = (() => {
1273
1331
  function place() {
1274
1332
  if (!boxRef.current) return;
1275
1333
  const r = boxRef.current.getBoundingClientRect();
1276
- const maxH = 320, below = window.innerHeight - r.bottom - 8, up = below < 200 && r.top > below;
1334
+ const maxH = 320, below2 = window.innerHeight - r.bottom - 8, up = below2 < 200 && r.top > below2;
1277
1335
  posState[1]({
1278
1336
  left: r.left,
1279
1337
  width: r.width,
1280
1338
  top: up ? void 0 : r.bottom + 4,
1281
1339
  bottom: up ? window.innerHeight - r.top + 4 : void 0,
1282
- maxHeight: Math.min(maxH, (up ? r.top : below) - 8)
1340
+ maxHeight: Math.min(maxH, (up ? r.top : below2) - 8)
1283
1341
  });
1284
1342
  }
1285
1343
  useIsoLayoutEffect(
@@ -1696,8 +1754,35 @@ window.Aura = (() => {
1696
1754
  const dt = new Date(y, mo - 1, d);
1697
1755
  return dt.getMonth() === mo - 1 && dt.getDate() === d ? toISO(dt) : null;
1698
1756
  }
1757
+ function todayIn(timeZone) {
1758
+ const now = /* @__PURE__ */ new Date();
1759
+ if (!timeZone) return toISO(now);
1760
+ return new Intl.DateTimeFormat("en-CA", {
1761
+ timeZone,
1762
+ year: "numeric",
1763
+ month: "2-digit",
1764
+ day: "2-digit"
1765
+ }).format(now);
1766
+ }
1699
1767
 
1700
1768
  // src/DatePicker.tsx
1769
+ var warnedNoLocale = false;
1770
+ function isDev() {
1771
+ try {
1772
+ return true;
1773
+ } catch (e) {
1774
+ return false;
1775
+ }
1776
+ }
1777
+ function formatDate2(iso, opts) {
1778
+ if (!warnedNoLocale && !(opts && opts.locale) && isDev()) {
1779
+ warnedNoLocale = true;
1780
+ console.warn(
1781
+ "[AURA] formatDate() was called without a locale. It shows Thai with Buddhist-era years today; in 5.0 it will show English with Gregorian years, like '@jirawatpyk/aura-react/server'. Pass { locale: 'th' } to keep Thai, or use useFormatDate() in components."
1782
+ );
1783
+ }
1784
+ return formatDate(iso, opts);
1785
+ }
1701
1786
  function useFormatDate() {
1702
1787
  const ctx = useAuraLocale(), locale = ctx.locale || "en", calendar = ctx.calendar;
1703
1788
  return React17.useCallback(
@@ -1717,9 +1802,9 @@ window.Aura = (() => {
1717
1802
  var Calendar = React17.forwardRef(function Calendar2(props, ref) {
1718
1803
  const ctx = useAuraLocale(), locale = props.locale || ctx.locale || "en", calendar = props.calendar || ctx.calendar || defaultCalendar(locale), tag = localeTag(locale, calendar);
1719
1804
  const weekStart = props.weekStartsOn == null ? locale === "sv" ? 1 : 0 : props.weekStartsOn;
1720
- let today = /* @__PURE__ */ new Date();
1721
- today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
1722
- const min = fromISO(props.min), max = fromISO(props.max);
1805
+ const todayISO = props.today || todayIn(props.timeZone || ctx.timeZone);
1806
+ const today = fromISO(todayISO);
1807
+ const min = fromISO(props.min === "today" ? todayISO : props.min), max = fromISO(props.max === "today" ? todayISO : props.max);
1723
1808
  const start = fromISO(props.start), end = fromISO(props.end);
1724
1809
  const focusState = React17.useState(fromISO(props.focus) || start || today);
1725
1810
  const focusDate = focusState[0], setFocus = focusState[1];
@@ -2105,6 +2190,8 @@ window.Aura = (() => {
2105
2190
  weekStartsOn: props.weekStartsOn,
2106
2191
  min: props.min,
2107
2192
  max: props.max,
2193
+ timeZone: props.timeZone,
2194
+ today: props.today,
2108
2195
  isDateDisabled: props.isDateDisabled,
2109
2196
  start: st[0],
2110
2197
  focus: st[0],
@@ -2221,6 +2308,8 @@ window.Aura = (() => {
2221
2308
  weekStartsOn: props.weekStartsOn,
2222
2309
  min: props.min,
2223
2310
  max: props.max,
2311
+ timeZone: props.timeZone,
2312
+ today: props.today,
2224
2313
  isDateDisabled: props.isDateDisabled,
2225
2314
  start: draft[0] || v.start,
2226
2315
  end: draft[0] ? null : v.end,
@@ -2295,11 +2384,19 @@ window.Aura = (() => {
2295
2384
  // src/Toaster.tsx
2296
2385
  var React19 = __toESM(require_react(), 1);
2297
2386
  var import_react_dom4 = __toESM(require_react_dom(), 1);
2387
+ var MAX_VISIBLE = 3;
2298
2388
  var toastState = {
2299
2389
  list: [],
2390
+ queue: [],
2300
2391
  subs: [],
2301
2392
  n: 0
2302
2393
  };
2394
+ function promote() {
2395
+ while (toastState.list.length < MAX_VISIBLE && toastState.queue.length) {
2396
+ toastState.list = toastState.list.concat([toastState.queue[0]]);
2397
+ toastState.queue = toastState.queue.slice(1);
2398
+ }
2399
+ }
2303
2400
  function emitToasts() {
2304
2401
  toastState.subs.forEach(function(f) {
2305
2402
  f(toastState.list.slice());
@@ -2307,18 +2404,24 @@ window.Aura = (() => {
2307
2404
  }
2308
2405
  function show(opts) {
2309
2406
  const id = opts.id || "t" + ++toastState.n;
2310
- const at = toastState.list.findIndex(function(t) {
2407
+ const byId = function(t) {
2311
2408
  return t.id === id;
2312
- });
2409
+ };
2410
+ const at = toastState.list.findIndex(byId), queued = toastState.queue.findIndex(byId);
2411
+ const prev = at >= 0 ? toastState.list[at] : queued >= 0 ? toastState.queue[queued] : null;
2313
2412
  const entry = Object.assign({ tone: "info" }, opts, {
2314
2413
  id,
2315
2414
  loading: !!opts.loading,
2316
- rev: at >= 0 ? toastState.list[at].rev + 1 : 0
2415
+ rev: prev ? prev.rev + 1 : 0
2317
2416
  });
2318
2417
  if (at >= 0) {
2319
2418
  toastState.list = toastState.list.slice();
2320
2419
  toastState.list[at] = entry;
2321
- } else toastState.list = toastState.list.concat([entry]).slice(-3);
2420
+ } else if (queued >= 0) {
2421
+ toastState.queue = toastState.queue.slice();
2422
+ toastState.queue[queued] = entry;
2423
+ } else if (toastState.list.length < MAX_VISIBLE) toastState.list = toastState.list.concat([entry]);
2424
+ else toastState.queue = toastState.queue.concat([entry]);
2322
2425
  emitToasts();
2323
2426
  return id;
2324
2427
  }
@@ -2340,9 +2443,12 @@ window.Aura = (() => {
2340
2443
  );
2341
2444
  };
2342
2445
  toast.dismiss = function(id) {
2343
- toastState.list = toastState.list.filter(function(t) {
2446
+ const keep = function(t) {
2344
2447
  return t.id !== id;
2345
- });
2448
+ };
2449
+ toastState.list = toastState.list.filter(keep);
2450
+ toastState.queue = toastState.queue.filter(keep);
2451
+ promote();
2346
2452
  emitToasts();
2347
2453
  };
2348
2454
  function ToastItem(props) {
@@ -3003,9 +3109,27 @@ window.Aura = (() => {
3003
3109
  function() {
3004
3110
  if (!open || !anchor.current || !tip.current) return;
3005
3111
  const r = anchor.current.getBoundingClientRect(), t = tip.current.getBoundingClientRect();
3006
- let side = props.side || "top", top = side === "top" ? r.top - t.height - 8 : r.bottom + 8;
3007
- if (side === "top" && top < 8) top = r.bottom + 8;
3008
- const left = Math.max(8, Math.min(r.left + r.width / 2 - t.width / 2, window.innerWidth - t.width - 8));
3112
+ const vw = window.innerWidth, vh = window.innerHeight, gap = 8, m = 8;
3113
+ let side = props.side || "top";
3114
+ if (side === "top" && r.top - t.height - gap < m && r.bottom + gap + t.height <= vh - m) side = "bottom";
3115
+ else if (side === "bottom" && r.bottom + gap + t.height > vh - m && r.top - t.height - gap >= m) side = "top";
3116
+ else if (side === "left" && r.left - t.width - gap < m && r.right + gap + t.width <= vw - m) side = "right";
3117
+ else if (side === "right" && r.right + gap + t.width > vw - m && r.left - t.width - gap >= m) side = "left";
3118
+ const clampX = function(x) {
3119
+ return Math.max(m, Math.min(x, vw - t.width - m));
3120
+ };
3121
+ const clampY = function(y) {
3122
+ return Math.max(m, Math.min(y, vh - t.height - m));
3123
+ };
3124
+ let top, left;
3125
+ if (side === "top" || side === "bottom") {
3126
+ top = side === "top" ? r.top - t.height - gap : r.bottom + gap;
3127
+ left = clampX(r.left + r.width / 2 - t.width / 2);
3128
+ } else {
3129
+ left = side === "left" ? r.left - t.width - gap : r.right + gap;
3130
+ left = clampX(left);
3131
+ top = clampY(r.top + r.height / 2 - t.height / 2);
3132
+ }
3009
3133
  pos[1]({ top, left });
3010
3134
  },
3011
3135
  [open]
@@ -3132,6 +3256,7 @@ window.Aura = (() => {
3132
3256
 
3133
3257
  // src/DataTable.tsx
3134
3258
  var React28 = __toESM(require_react(), 1);
3259
+ var import_react_dom8 = __toESM(require_react_dom(), 1);
3135
3260
  var BP = { sm: 640, md: 768, lg: 1024, xl: 1280 };
3136
3261
  var DEFAULT_COLUMNS = [
3137
3262
  { key: "id", label: "ID", width: 96, mono: true },
@@ -3140,7 +3265,16 @@ window.Aura = (() => {
3140
3265
  { key: "owner", label: "OWNER" }
3141
3266
  ];
3142
3267
  var SKELETON_WIDTHS = ["72%", "56%", "84%", "44%", "64%"];
3143
- var STACK_WIDTHS = [360, 400, 480, 520, 560, 600, 640, 720, 768, 800, 900, 960, 1024];
3268
+ var Q = 1e4;
3269
+ var MAX_HIDE_LEVELS = 3;
3270
+ function below(w, threshold) {
3271
+ return w < threshold * (1 - 0.5 / Q);
3272
+ }
3273
+ function hidePx(c) {
3274
+ if (c.hideBelow == null) return void 0;
3275
+ const px = typeof c.hideBelow === "number" ? c.hideBelow : BP[c.hideBelow];
3276
+ return px != null && px > 0 ? px : void 0;
3277
+ }
3144
3278
  var ROW_H_DEFAULT = 48;
3145
3279
  var OVERSCAN = 8;
3146
3280
  var FLEX_MIN = 160;
@@ -3216,33 +3350,75 @@ window.Aura = (() => {
3216
3350
  const measure = !!props.stackBelow || columns.some(function(c) {
3217
3351
  return c.hideBelow != null;
3218
3352
  });
3219
- const dual = !!props.stackBelow && boxWidth[0] == null && STACK_WIDTHS.indexOf(props.stackBelow) >= 0;
3220
3353
  React28.useEffect(
3221
3354
  function() {
3222
3355
  if (!measure || !wrapRef.current || typeof ResizeObserver === "undefined") return;
3223
3356
  const ro = new ResizeObserver(function(en) {
3224
- boxWidth[1](en[0].contentRect.width);
3357
+ const bb = en[0].borderBoxSize && en[0].borderBoxSize[0];
3358
+ boxWidth[1](bb ? bb.inlineSize : en[0].target.getBoundingClientRect().width);
3225
3359
  });
3226
3360
  ro.observe(wrapRef.current);
3227
3361
  return function() {
3228
3362
  ro.disconnect();
3229
3363
  };
3230
3364
  },
3231
- [measure, dual]
3365
+ [measure]
3232
3366
  );
3233
- const stacked = !!props.stackBelow && boxWidth[0] != null && boxWidth[0] < props.stackBelow;
3367
+ const stacked = !!props.stackBelow && boxWidth[0] != null && below(boxWidth[0], props.stackBelow);
3234
3368
  useIsoLayoutEffect(
3235
3369
  function() {
3236
3370
  if (measure && boxWidth[0] == null && wrapRef.current) boxWidth[1](wrapRef.current.getBoundingClientRect().width);
3237
3371
  },
3238
3372
  [measure]
3239
3373
  );
3374
+ const hideLevels = [];
3375
+ columns.forEach(function(c) {
3376
+ const px = hidePx(c);
3377
+ if (px != null && hideLevels.indexOf(px) < 0) hideLevels.push(px);
3378
+ });
3379
+ hideLevels.sort(function(a, b) {
3380
+ return b - a;
3381
+ });
3382
+ hideLevels.length = Math.min(hideLevels.length, MAX_HIDE_LEVELS);
3383
+ const levels = [];
3384
+ if (props.stackBelow && props.stackBelow > 0) levels.push({ name: "stack", px: props.stackBelow });
3385
+ hideLevels.forEach(function(px, i) {
3386
+ levels.push({ name: "h" + (i + 1), px });
3387
+ });
3388
+ function hideLevel(c) {
3389
+ const px = hidePx(c);
3390
+ const i = px == null ? -1 : hideLevels.indexOf(px);
3391
+ return i < 0 ? void 0 : i + 1;
3392
+ }
3240
3393
  function tooNarrow(c) {
3241
3394
  if (c.hideBelow == null || boxWidth[0] == null || stacked) return false;
3242
- const px = typeof c.hideBelow === "number" ? c.hideBelow : BP[c.hideBelow];
3243
- return px != null && boxWidth[0] < px;
3395
+ const px = hidePx(c);
3396
+ return px != null && below(boxWidth[0], px);
3244
3397
  }
3245
3398
  const scrollRef = React28.useRef(null);
3399
+ const tipState = React28.useState(null), tip = tipState[0], setTip = tipState[1];
3400
+ function showFull(e) {
3401
+ const el = e.target.closest ? e.target.closest(".aura-table__td") : null;
3402
+ if (!el || el.scrollWidth <= el.clientWidth + 1 || el.querySelector("button, input, .aura-pill"))
3403
+ return setTip(null);
3404
+ const r = el.getBoundingClientRect();
3405
+ setTip({ text: (el.textContent || "").trim(), left: r.left, top: r.top });
3406
+ }
3407
+ function hideFull() {
3408
+ setTip(null);
3409
+ }
3410
+ const tipEl = tip && typeof document !== "undefined" ? (0, import_react_dom8.createPortal)(
3411
+ /* @__PURE__ */ React28.createElement(
3412
+ "div",
3413
+ {
3414
+ className: "aura-tooltip aura-tooltip--above",
3415
+ "aria-hidden": "true",
3416
+ style: { left: tip.left, top: tip.top - 6 }
3417
+ },
3418
+ tip.text
3419
+ ),
3420
+ document.body
3421
+ ) : null;
3246
3422
  const rowH = React28.useState(ROW_H_DEFAULT);
3247
3423
  const ROW_H = rowH[0];
3248
3424
  useIsoLayoutEffect(function() {
@@ -3254,7 +3430,7 @@ window.Aura = (() => {
3254
3430
  const pending = React28.useRef(null);
3255
3431
  const resizing = React28.useRef(false);
3256
3432
  useIsoLayoutEffect(function() {
3257
- if (stacked || !gridRef.current) return;
3433
+ if (!gridRef.current) return;
3258
3434
  const els = gridRef.current.querySelectorAll(
3259
3435
  '.aura-table__td button, .aura-table__td a[href], .aura-table__td input, .aura-table__td select, .aura-table__td textarea, .aura-table__td [tabindex="0"]'
3260
3436
  );
@@ -3286,12 +3462,31 @@ window.Aura = (() => {
3286
3462
  })
3287
3463
  );
3288
3464
  const nPinned = vis.filter(isPinned).length;
3465
+ const pillKey = (vis.filter(function(c, i) {
3466
+ return i > 0 && c.pill;
3467
+ })[0] || { key: "" }).key;
3468
+ function cardPart(c, i) {
3469
+ return i === 0 ? "title" : c.key === pillKey ? "pill" : c.actions ? "actions" : "field";
3470
+ }
3471
+ function cardAttrs(c, i) {
3472
+ const part = cardPart(c, i), lv = hideLevel(c);
3473
+ return {
3474
+ "data-card": part,
3475
+ "data-label": part === "field" ? c.label || void 0 : void 0,
3476
+ "data-hide": lv ? String(lv) : void 0
3477
+ };
3478
+ }
3479
+ const hasFields = vis.some(function(c, i) {
3480
+ return cardPart(c, i) === "field";
3481
+ });
3289
3482
  const hasFlex = vis.some(function(c) {
3290
3483
  return widthOf(c) == null;
3291
3484
  });
3292
- let fixedSum = 0;
3485
+ let fixedSum = 0, hideTerms = "";
3293
3486
  vis.forEach(function(c) {
3294
- fixedSum += widthOf(c) != null ? widthOf(c) : FLEX_MIN;
3487
+ const w = widthOf(c) != null ? widthOf(c) : FLEX_MIN, lv = hideLevel(c);
3488
+ if (lv && boxWidth[0] == null) hideTerms += " + " + w + "px * var(--aura-h" + lv + "-on, 1)";
3489
+ else fixedSum += w;
3295
3490
  });
3296
3491
  let pinOffsets = {}, acc = 0;
3297
3492
  vis.forEach(function(c) {
@@ -3302,13 +3497,17 @@ window.Aura = (() => {
3302
3497
  });
3303
3498
  const selW = selectable ? " + var(--aura-table-select-width)" : "";
3304
3499
  const gutterR = controls ? "var(--aura-space-12)" : "var(--aura-space-6)";
3305
- const rowMinWidth = "calc(" + fixedSum + "px + var(--aura-space-6) + " + gutterR + selW + ")";
3500
+ const rowMinWidth = "calc(" + fixedSum + "px" + hideTerms + " + var(--aura-space-6) + " + gutterR + selW + ")";
3306
3501
  function cellStyle(c, i) {
3307
- let w = widthOf(c), s;
3308
- if (w == null) s = { flex: "1 1 0", minWidth: (c.minWidth || FLEX_MIN) + "px" };
3309
- else if (!hasFlex && i === vis.length - 1) s = { flex: "1 0 auto", width: w + "px" };
3310
- else s = { width: w + "px", flex: "none" };
3311
- if (isPinned(c)) s.left = "calc(var(--aura-space-6)" + selW + " + " + pinOffsets[c.key] + "px)";
3502
+ const w = widthOf(c), s = {};
3503
+ if (w == null) {
3504
+ s["--aura-cell-flex"] = "1 1 0";
3505
+ s["--aura-cell-min"] = (c.minWidth || FLEX_MIN) + "px";
3506
+ } else {
3507
+ s["--aura-cell-flex"] = !hasFlex && i === vis.length - 1 ? "1 0 auto" : "none";
3508
+ s["--aura-cell-w"] = w + "px";
3509
+ }
3510
+ if (isPinned(c)) s["--aura-cell-left"] = "calc(var(--aura-space-6)" + selW + " + " + pinOffsets[c.key] + "px)";
3312
3511
  return s;
3313
3512
  }
3314
3513
  const view = React28.useMemo(
@@ -3391,7 +3590,7 @@ window.Aura = (() => {
3391
3590
  return rowHref ? /* @__PURE__ */ React28.createElement(Link, { href: rowHref(r), className: "aura-table__row-link" }, content) : content;
3392
3591
  }
3393
3592
  const height = props.height || 0;
3394
- const virtual = !!height && !loading && pageRows.length > 0;
3593
+ const virtual = !!height && !loading && pageRows.length > 0 && !stacked;
3395
3594
  const bodyH = Math.max(ROW_H, height - ROW_H);
3396
3595
  let start = 0, end = pageRows.length;
3397
3596
  if (virtual) {
@@ -3746,7 +3945,8 @@ window.Aura = (() => {
3746
3945
  label: all ? t.deselectAllRows : t.selectAllRows,
3747
3946
  onChange: toggleAll
3748
3947
  }
3749
- ) : null
3948
+ ) : null,
3949
+ nRows ? /* @__PURE__ */ React28.createElement("span", { className: "aura-table__sel-text" }, nSel ? t.selectedCount(nSel) : t.selectAll) : /* @__PURE__ */ React28.createElement("span", { className: "aura-sr-only" }, t.selectRows)
3750
3950
  )
3751
3951
  );
3752
3952
  vis.forEach(function(c, i) {
@@ -3764,6 +3964,7 @@ window.Aura = (() => {
3764
3964
  "aria-sort": ariaSort,
3765
3965
  "aria-colindex": ci + 1,
3766
3966
  style: cellStyle(c, i),
3967
+ "data-hide": hideLevel(c) ? String(hideLevel(c)) : void 0,
3767
3968
  tabIndex: tabFor(0, ci),
3768
3969
  "data-rc": "0:" + ci,
3769
3970
  className: cx(
@@ -3920,6 +4121,7 @@ window.Aura = (() => {
3920
4121
  pin && j === nPinned - 1 && "is-pin-edge"
3921
4122
  ),
3922
4123
  style: cellStyle(c, j),
4124
+ ...cardAttrs(c, j),
3923
4125
  onFocus: function() {
3924
4126
  if (activeState[0].r !== ri || activeState[0].c !== ci) activeState[1]({ r: ri, c: ci });
3925
4127
  }
@@ -3928,6 +4130,7 @@ window.Aura = (() => {
3928
4130
  )
3929
4131
  );
3930
4132
  });
4133
+ if (hasFields) cells.push(/* @__PURE__ */ React28.createElement("span", { key: "__br", className: "aura-table__break", "aria-hidden": true }));
3931
4134
  cells.push(
3932
4135
  /* @__PURE__ */ React28.createElement(
3933
4136
  "span",
@@ -3941,7 +4144,7 @@ window.Aura = (() => {
3941
4144
  return cells;
3942
4145
  }
3943
4146
  let body;
3944
- const rowStyle = { minWidth: rowMinWidth };
4147
+ const rowStyle = { ["--aura-row-min"]: rowMinWidth };
3945
4148
  if (loading) {
3946
4149
  const n2 = pageSize || props.skeletonRows || 5;
3947
4150
  const skRows = body = [];
@@ -3958,7 +4161,9 @@ window.Aura = (() => {
3958
4161
  {
3959
4162
  key: c.key,
3960
4163
  className: cx("aura-table__td", c.align === "end" && "is-end", isPinned(c) && "is-pinned"),
3961
- style: cellStyle(c, j)
4164
+ style: cellStyle(c, j),
4165
+ ...cardAttrs(c, j),
4166
+ "data-label": void 0
3962
4167
  },
3963
4168
  /* @__PURE__ */ React28.createElement(
3964
4169
  "span",
@@ -3970,6 +4175,7 @@ window.Aura = (() => {
3970
4175
  )
3971
4176
  );
3972
4177
  });
4178
+ if (hasFields) sk.push(/* @__PURE__ */ React28.createElement("span", { key: "__br", className: "aura-table__break" }));
3973
4179
  sk.push(
3974
4180
  /* @__PURE__ */ React28.createElement("span", { key: "__gr", className: cx("aura-table__gutter aura-table__gutter--end", controls && "has-picker") })
3975
4181
  );
@@ -4055,103 +4261,67 @@ window.Aura = (() => {
4055
4261
  } else if (height && rows.length && !loading) {
4056
4262
  foot = /* @__PURE__ */ React28.createElement("div", { className: "aura-table__foot" }, /* @__PURE__ */ React28.createElement("span", null, t.rowCount(shownTotal)), selectable && selected.length ? /* @__PURE__ */ React28.createElement("span", null, t.selectedCount(selected.length)) : /* @__PURE__ */ React28.createElement("span", null));
4057
4263
  }
4058
- function renderStacked(wrapRefArg) {
4059
- const titleCol = vis[0], pillCol = vis.filter(function(c) {
4060
- return c.pill && c !== titleCol;
4061
- })[0];
4062
- const actionCols = vis.filter(function(c) {
4063
- return c.actions && c !== titleCol;
4064
- });
4065
- const rest = vis.filter(function(c) {
4066
- return c !== titleCol && c !== pillCol && !c.actions;
4067
- });
4068
- let cardBody;
4069
- if (loading) {
4070
- cardBody = /* @__PURE__ */ React28.createElement("ul", { className: "aura-table__cards", "aria-busy": true }, [0, 1, 2].map(function(i) {
4071
- return /* @__PURE__ */ React28.createElement("li", { key: i, className: "aura-table__card", "aria-hidden": true }, /* @__PURE__ */ React28.createElement("span", { className: "aura-skel", style: { width: "50%", height: "14px" } }), /* @__PURE__ */ React28.createElement("span", { className: "aura-skel", style: { width: "80%" } }), /* @__PURE__ */ React28.createElement("span", { className: "aura-skel", style: { width: "64%" } }));
4072
- }));
4073
- } else if (!rows.length) {
4074
- const em2 = props.empty || {};
4075
- cardBody = /* @__PURE__ */ React28.createElement("div", { className: "aura-table__empty" }, /* @__PURE__ */ React28.createElement("div", null, /* @__PURE__ */ React28.createElement("span", { className: "aura-table__empty-icon" }, /* @__PURE__ */ React28.createElement(Icon, { name: em2.icon || "inbox", size: "lg" })), /* @__PURE__ */ React28.createElement("p", { className: "aura-table__empty-title" }, em2.title || t.empty), em2.description ? /* @__PURE__ */ React28.createElement("p", { className: "aura-table__empty-text" }, em2.description) : null, em2.action ? /* @__PURE__ */ React28.createElement("div", { className: "aura-table__empty-action" }, em2.action) : null));
4076
- } else {
4077
- const cellVal = cellContent;
4078
- cardBody = /* @__PURE__ */ React28.createElement("ul", { className: "aura-table__cards", "aria-label": props.label }, pageRows.map(function(r) {
4079
- const k = r[rowKey], isSel = !!selSet[k];
4080
- return /* @__PURE__ */ React28.createElement(
4081
- "li",
4082
- {
4083
- key: k,
4084
- className: cx(
4085
- "aura-table__card",
4086
- isSel && "is-selected",
4087
- (props.onRowActivate || rowHref) && "is-actionable"
4088
- ),
4089
- tabIndex: props.onRowActivate && !rowHref ? 0 : void 0,
4090
- onClick: function(e) {
4091
- const el = e.target;
4092
- if (el.closest && el.closest(".aura-check, button, a, input")) return;
4093
- if (rowHref) followRow(e.currentTarget, e);
4094
- else if (props.onRowActivate) props.onRowActivate(r);
4095
- },
4096
- onKeyDown: function(e) {
4097
- if (e.target === e.currentTarget && e.key === "Enter" && props.onRowActivate && !rowHref)
4098
- props.onRowActivate(r);
4099
- }
4100
- },
4101
- /* @__PURE__ */ React28.createElement("div", { className: "aura-table__card-head" }, selectable ? /* @__PURE__ */ React28.createElement(
4102
- Checkbox,
4103
- {
4104
- checked: isSel,
4105
- label: t.selectRow(k),
4106
- onChange: function(on) {
4107
- toggle(k, on);
4108
- }
4109
- }
4110
- ) : null, /* @__PURE__ */ React28.createElement("span", { className: cx("aura-table__card-title", titleCol.mono && "aura-table__mono") }, rowLinkWrap(r, cellVal(titleCol, r))), pillCol ? cellVal(pillCol, r) : null, actionCols.map(function(c) {
4111
- return /* @__PURE__ */ React28.createElement("span", { key: c.key, className: "aura-table__card-actions" }, cellVal(c, r));
4112
- })),
4113
- rest.length ? /* @__PURE__ */ React28.createElement("dl", { className: "aura-table__card-fields" }, rest.map(function(c) {
4114
- return /* @__PURE__ */ React28.createElement("div", { key: c.key }, /* @__PURE__ */ React28.createElement("dt", null, c.label), /* @__PURE__ */ React28.createElement("dd", { className: c.mono ? "aura-table__mono" : void 0 }, cellVal(c, r)));
4115
- })) : null
4116
- );
4117
- }));
4118
- }
4119
- return /* @__PURE__ */ React28.createElement(
4120
- "div",
4121
- {
4122
- ref: wrapRefArg,
4123
- "data-density": props.density,
4124
- className: cx("aura-table aura-table--stacked", refreshing && "is-refreshing", props.className),
4125
- role: "region",
4126
- "aria-label": props.label,
4127
- "aria-busy": busy || void 0
4128
- },
4129
- refreshing ? /* @__PURE__ */ React28.createElement("span", { className: "aura-table__busy-bar", "aria-hidden": true }) : null,
4130
- selectable && pageRows.length && !busy ? /* @__PURE__ */ React28.createElement("div", { className: "aura-table__stack-bar" }, /* @__PURE__ */ React28.createElement(
4131
- Checkbox,
4264
+ const totalRow = props.footer && rows.length && !loading ? /* @__PURE__ */ React28.createElement(
4265
+ "div",
4266
+ {
4267
+ role: "row",
4268
+ "aria-rowindex": shownTotal + 2,
4269
+ "aria-label": t.totals,
4270
+ className: cx("aura-table__row aura-table__total", props.stickyFooter && "is-sticky"),
4271
+ style: rowStyle
4272
+ },
4273
+ /* @__PURE__ */ React28.createElement("span", { className: "aura-table__gutter", "aria-hidden": true }),
4274
+ selectable ? /* @__PURE__ */ React28.createElement("span", { className: cx("aura-table__sel", nPinned && "is-pinned"), "aria-hidden": true }) : null,
4275
+ vis.map(function(c, j) {
4276
+ const pin = isPinned(c);
4277
+ return /* @__PURE__ */ React28.createElement(
4278
+ "span",
4132
4279
  {
4133
- checked: all,
4134
- indeterminate: nSel > 0 && !all,
4135
- label: all ? t.deselectAllRows : t.selectAllRows,
4136
- onChange: toggleAll
4137
- }
4138
- ), /* @__PURE__ */ React28.createElement("span", null, nSel ? t.selectedCount(nSel) : t.selectAll)) : null,
4139
- cardBody,
4140
- foot
4141
- );
4142
- }
4143
- if (stacked) return renderStacked(wrapMerged);
4280
+ key: c.key,
4281
+ role: "gridcell",
4282
+ "aria-colindex": j + (selectable ? 2 : 1),
4283
+ className: cx(
4284
+ "aura-table__td",
4285
+ c.mono && "aura-table__mono",
4286
+ c.align === "end" && "is-end",
4287
+ pin && "is-pinned",
4288
+ pin && j === nPinned - 1 && "is-pin-edge",
4289
+ props.footer[c.key] == null && "is-blank"
4290
+ ),
4291
+ style: cellStyle(c, j),
4292
+ ...cardAttrs(c, j),
4293
+ "data-label": j === 0 ? void 0 : c.label || t.totals
4294
+ },
4295
+ props.footer[c.key]
4296
+ );
4297
+ }),
4298
+ hasFields ? /* @__PURE__ */ React28.createElement("span", { className: "aura-table__break", "aria-hidden": true }) : null,
4299
+ /* @__PURE__ */ React28.createElement(
4300
+ "span",
4301
+ {
4302
+ className: cx("aura-table__gutter aura-table__gutter--end", controls && "has-picker"),
4303
+ "aria-hidden": true
4304
+ }
4305
+ )
4306
+ ) : null;
4144
4307
  const scrollStyle = {
4145
4308
  scrollPaddingLeft: "calc(var(--aura-space-6)" + selW + " + " + acc + "px)",
4146
4309
  scrollPaddingTop: ROW_H + "px"
4147
4310
  };
4148
- if (height) scrollStyle.height = height + "px";
4311
+ if (height) scrollStyle["--aura-table-h"] = height + "px";
4149
4312
  const gridEl = /* @__PURE__ */ React28.createElement(
4150
4313
  "div",
4151
4314
  {
4152
- ref: dual ? void 0 : wrapMerged,
4315
+ ref: levels.length ? wrapRef : wrapMerged,
4153
4316
  "data-density": props.density,
4154
- className: cx("aura-table", scrolledX[0] && "is-scrolled-x", refreshing && "is-refreshing", props.className)
4317
+ className: cx(
4318
+ "aura-table",
4319
+ stacked && "aura-table--stacked",
4320
+ scrolledX[0] && "is-scrolled-x",
4321
+ refreshing && "is-refreshing",
4322
+ !levels.length && props.className
4323
+ ),
4324
+ style: levels.length ? { ["--aura-q-back"]: String(levels[levels.length - 1].px / Q) } : void 0
4155
4325
  },
4156
4326
  refreshing ? /* @__PURE__ */ React28.createElement("span", { className: "aura-table__busy-bar", "aria-hidden": true }) : null,
4157
4327
  /* @__PURE__ */ React28.createElement(
@@ -4162,11 +4332,15 @@ window.Aura = (() => {
4162
4332
  gridRef.current = el;
4163
4333
  },
4164
4334
  className: "aura-table__scroll",
4335
+ onMouseOver: showFull,
4336
+ onMouseLeave: hideFull,
4337
+ onFocus: showFull,
4338
+ onBlur: hideFull,
4165
4339
  style: scrollStyle,
4166
4340
  role: "grid",
4167
4341
  "aria-label": props.label,
4168
4342
  "aria-busy": busy || void 0,
4169
- "aria-rowcount": loading ? -1 : shownTotal + 1,
4343
+ "aria-rowcount": loading ? -1 : shownTotal + 1 + (totalRow ? 1 : 0),
4170
4344
  "aria-colcount": nCols,
4171
4345
  "aria-multiselectable": selectable || void 0,
4172
4346
  onKeyDown: onGridKey,
@@ -4179,8 +4353,18 @@ window.Aura = (() => {
4179
4353
  if (sx !== scrolledX[0]) scrolledX[1](sx);
4180
4354
  }
4181
4355
  },
4182
- /* @__PURE__ */ React28.createElement("div", { className: "aura-table__head", role: "row", "aria-rowindex": 1, style: rowStyle }, head),
4183
- body
4356
+ /* @__PURE__ */ React28.createElement(
4357
+ "div",
4358
+ {
4359
+ className: cx("aura-table__head", selectable && nRows > 0 && !busy && "has-select-all"),
4360
+ role: "row",
4361
+ "aria-rowindex": 1,
4362
+ style: rowStyle
4363
+ },
4364
+ head
4365
+ ),
4366
+ body,
4367
+ totalRow
4184
4368
  ),
4185
4369
  busy ? /* @__PURE__ */ React28.createElement("span", { className: "aura-sr-only", role: "status" }, t.loadingRows) : null,
4186
4370
  controls ? /* @__PURE__ */ React28.createElement("div", { className: "aura-table__picker" }, /* @__PURE__ */ React28.createElement(
@@ -4203,10 +4387,23 @@ window.Aura = (() => {
4203
4387
  label: menu.kind === "picker" ? t.columns : t.column(byKey[menu.key] && byKey[menu.key].label),
4204
4388
  items: menu.kind === "picker" ? pickerItems() : byKey[menu.key] ? columnMenuItems(byKey[menu.key]) : []
4205
4389
  }
4206
- ) : null
4390
+ ) : null,
4391
+ tipEl
4207
4392
  );
4208
- if (!dual) return gridEl;
4209
- return /* @__PURE__ */ React28.createElement("div", { ref: wrapMerged, className: "aura-table-dual", "data-stack-below": props.stackBelow }, renderStacked(void 0), gridEl);
4393
+ if (!levels.length) return gridEl;
4394
+ let out = gridEl;
4395
+ for (let i = levels.length - 1; i >= 0; i--) {
4396
+ const prev = i === 0 ? Q : levels[i - 1].px;
4397
+ out = /* @__PURE__ */ React28.createElement(
4398
+ "div",
4399
+ {
4400
+ className: cx("aura-table-q", "aura-table-q--" + levels[i].name),
4401
+ style: { ["--aura-q-scale"]: String(prev / levels[i].px) }
4402
+ },
4403
+ out
4404
+ );
4405
+ }
4406
+ return /* @__PURE__ */ React28.createElement("div", { ref, className: cx("aura-table-box", props.className) }, out);
4210
4407
  });
4211
4408
 
4212
4409
  // src/Card.tsx
@@ -4245,6 +4442,40 @@ window.Aura = (() => {
4245
4442
  const current2 = items2.filter(function(t) {
4246
4443
  return t.id === st[0];
4247
4444
  })[0] || items2[0];
4445
+ const Link = useLinkComponent(props.linkComponent);
4446
+ const asLinks = items2.length > 0 && items2.every(function(t) {
4447
+ return !!t.href;
4448
+ });
4449
+ if (asLinks)
4450
+ return /* @__PURE__ */ React30.createElement(
4451
+ "nav",
4452
+ {
4453
+ ref,
4454
+ "aria-label": props.label,
4455
+ className: cx("aura-tabs aura-tabs--links", props.className)
4456
+ },
4457
+ /* @__PURE__ */ React30.createElement("div", { className: "aura-tabs__list" }, items2.map(function(t) {
4458
+ const on = current2 && t.id === current2.id;
4459
+ const inner = [
4460
+ t.icon ? /* @__PURE__ */ React30.createElement(Icon, { key: "i", name: t.icon }) : null,
4461
+ t.label,
4462
+ t.count != null ? /* @__PURE__ */ React30.createElement("span", { key: "c", className: "aura-tab__count" }, t.count) : null
4463
+ ];
4464
+ return t.disabled ? /* @__PURE__ */ React30.createElement("span", { key: t.id, className: "aura-tab is-disabled", "aria-disabled": true }, inner) : /* @__PURE__ */ React30.createElement(
4465
+ Link,
4466
+ {
4467
+ key: t.id,
4468
+ href: t.href,
4469
+ className: cx("aura-tab", on && "is-active"),
4470
+ "aria-current": on ? "page" : void 0,
4471
+ onClick: function() {
4472
+ st[1](t.id);
4473
+ }
4474
+ },
4475
+ inner
4476
+ );
4477
+ }))
4478
+ );
4248
4479
  function go(i) {
4249
4480
  const enabled = items2.filter(function(t2) {
4250
4481
  return !t2.disabled;
@@ -4319,7 +4550,7 @@ window.Aura = (() => {
4319
4550
 
4320
4551
  // src/SideNav.tsx
4321
4552
  var React31 = __toESM(require_react(), 1);
4322
- var import_react_dom8 = __toESM(require_react_dom(), 1);
4553
+ var import_react_dom9 = __toESM(require_react_dom(), 1);
4323
4554
  function contains(it, id) {
4324
4555
  return !!id && !!it.children && it.children.some(function(c) {
4325
4556
  return c.id === id || contains(c, id);
@@ -4506,7 +4737,7 @@ window.Aura = (() => {
4506
4737
  }
4507
4738
  }
4508
4739
  )) : null,
4509
- tip && typeof document !== "undefined" ? (0, import_react_dom8.createPortal)(
4740
+ tip && typeof document !== "undefined" ? (0, import_react_dom9.createPortal)(
4510
4741
  /* @__PURE__ */ React31.createElement(
4511
4742
  "div",
4512
4743
  {
@@ -4690,7 +4921,7 @@ window.Aura = (() => {
4690
4921
  collapsed: false,
4691
4922
  collapsible: false
4692
4923
  }) : props.nav;
4693
- return /* @__PURE__ */ React38.createElement("div", { ref, className: cx("aura-shell", props.className) }, props.nav ? /* @__PURE__ */ React38.createElement("div", { className: "aura-shell__nav" }, props.nav) : null, props.nav ? /* @__PURE__ */ React38.createElement(
4924
+ return /* @__PURE__ */ React38.createElement("div", { ref, className: cx("aura-shell", props.bottomNav && "aura-shell--bottomnav", props.className) }, props.nav ? /* @__PURE__ */ React38.createElement("div", { className: "aura-shell__nav" }, props.nav) : null, props.nav ? /* @__PURE__ */ React38.createElement(
4694
4925
  Drawer,
4695
4926
  {
4696
4927
  open,
@@ -4715,13 +4946,182 @@ window.Aura = (() => {
4715
4946
  },
4716
4947
  "aria-expanded": open
4717
4948
  }
4718
- ) : null, /* @__PURE__ */ React38.createElement("div", { className: "aura-shell__bar-content" }, props.header)) : null, /* @__PURE__ */ React38.createElement("main", { className: "aura-shell__content", id: props.mainId || "main" }, props.children)));
4949
+ ) : null, /* @__PURE__ */ React38.createElement("div", { className: "aura-shell__bar-content" }, props.header)) : null, /* @__PURE__ */ React38.createElement("main", { className: "aura-shell__content", id: props.mainId || "main" }, props.children), props.bottomNav || null));
4719
4950
  });
4720
4951
 
4721
- // src/Surface.tsx
4952
+ // src/ActionBar.tsx
4722
4953
  var React39 = __toESM(require_react(), 1);
4723
- var h8 = React39.createElement;
4724
- var Surface = React39.forwardRef(function Surface2(props, ref) {
4954
+ var ActionBar = React39.forwardRef(function ActionBar2(props, ref) {
4955
+ const t = useStrings();
4956
+ const bulk = props.selected != null;
4957
+ const idle = bulk && !props.selected;
4958
+ const count = bulk && props.selected ? t.selectedCount(props.selected) : null;
4959
+ const cameFrom = React39.useRef(null);
4960
+ const own = React39.useRef(null);
4961
+ function clear() {
4962
+ props.onClearSelection();
4963
+ setTimeout(function() {
4964
+ const back = cameFrom.current;
4965
+ const a = document.activeElement;
4966
+ if ((!a || a === document.body || !a.isConnected) && back && back.isConnected) back.focus();
4967
+ }, 0);
4968
+ }
4969
+ return /* @__PURE__ */ React39.createElement(
4970
+ "div",
4971
+ {
4972
+ ref: function(el) {
4973
+ own.current = el;
4974
+ if (typeof ref === "function") ref(el);
4975
+ else if (ref) ref.current = el;
4976
+ },
4977
+ onFocus: function(e) {
4978
+ const from = e.relatedTarget;
4979
+ if (from && own.current && !own.current.contains(from)) cameFrom.current = from;
4980
+ },
4981
+ role: "region",
4982
+ "aria-label": props.label || t.actions,
4983
+ className: cx(
4984
+ "aura-actionbar",
4985
+ "aura-actionbar--" + (props.position || "viewport"),
4986
+ idle && "is-idle",
4987
+ props.className
4988
+ )
4989
+ },
4990
+ /* @__PURE__ */ React39.createElement("div", { className: "aura-actionbar__inner" }, /* @__PURE__ */ React39.createElement("div", { className: "aura-actionbar__status", role: "status" }, count, count && props.status ? " \xB7 " : null, props.status), !idle ? /* @__PURE__ */ React39.createElement("div", { className: "aura-actionbar__actions" }, count && props.onClearSelection ? /* @__PURE__ */ React39.createElement(Button, { variant: "ghost", size: "sm", onClick: clear }, t.clear()) : null, props.children) : null)
4991
+ );
4992
+ });
4993
+
4994
+ // src/Separator.tsx
4995
+ var React40 = __toESM(require_react(), 1);
4996
+ var Separator = React40.forwardRef(function Separator2(props, ref) {
4997
+ const vertical = props.orientation === "vertical";
4998
+ const decorative = props.decorative !== false;
4999
+ return /* @__PURE__ */ React40.createElement(
5000
+ "div",
5001
+ {
5002
+ ref,
5003
+ className: cx("aura-separator", vertical && "aura-separator--vertical", props.className),
5004
+ role: decorative ? "none" : "separator",
5005
+ "aria-orientation": !decorative && vertical ? "vertical" : void 0,
5006
+ style: props.spacing != null ? { ["--aura-separator-space"]: "var(--aura-space-" + props.spacing + ")" } : void 0
5007
+ }
5008
+ );
5009
+ });
5010
+
5011
+ // src/Table.tsx
5012
+ var React41 = __toESM(require_react(), 1);
5013
+ var Table = React41.forwardRef(function Table2(props, ref) {
5014
+ const { caption, captionHidden, density, className, children, ...rest } = props;
5015
+ const capId = uid();
5016
+ const wrap = React41.useRef(null);
5017
+ const sc = React41.useState(false), scrolls = sc[0];
5018
+ useIsoLayoutEffect(function() {
5019
+ const el = wrap.current;
5020
+ if (!el || typeof ResizeObserver === "undefined") return;
5021
+ function check() {
5022
+ sc[1](el.scrollWidth > el.clientWidth + 1);
5023
+ }
5024
+ check();
5025
+ const ro = new ResizeObserver(check);
5026
+ ro.observe(el);
5027
+ return function() {
5028
+ ro.disconnect();
5029
+ };
5030
+ }, []);
5031
+ return /* @__PURE__ */ React41.createElement(
5032
+ "div",
5033
+ {
5034
+ ref: wrap,
5035
+ className: "aura-tbl-wrap",
5036
+ "data-density": density,
5037
+ tabIndex: scrolls ? 0 : void 0,
5038
+ role: scrolls ? "region" : void 0,
5039
+ "aria-labelledby": scrolls && caption != null ? capId : void 0
5040
+ },
5041
+ /* @__PURE__ */ React41.createElement("table", { ref, className: cx("aura-tbl", className), ...rest }, caption != null ? /* @__PURE__ */ React41.createElement("caption", { id: capId, className: cx("aura-tbl__caption", captionHidden && "aura-sr-only") }, caption) : null, children)
5042
+ );
5043
+ });
5044
+ function section(tag, cls) {
5045
+ const C = React41.forwardRef(function TableSection(props, ref) {
5046
+ const { className, ...rest } = props;
5047
+ return React41.createElement(tag, Object.assign({ ref, className: cx(cls, className) }, rest));
5048
+ });
5049
+ return C;
5050
+ }
5051
+ var THead = section("thead", "aura-tbl__head");
5052
+ THead.displayName = "THead";
5053
+ var TBody = section("tbody", "aura-tbl__body");
5054
+ TBody.displayName = "TBody";
5055
+ var TFoot = section("tfoot", "aura-tbl__foot");
5056
+ TFoot.displayName = "TFoot";
5057
+ var Tr = React41.forwardRef(function Tr2(props, ref) {
5058
+ const { className, ...rest } = props;
5059
+ return /* @__PURE__ */ React41.createElement("tr", { ref, className: cx("aura-tbl__row", className), ...rest });
5060
+ });
5061
+ function cellClass(base, p) {
5062
+ const align = p.align || (p.numeric ? "end" : void 0);
5063
+ return cx(
5064
+ base,
5065
+ align === "end" && "is-end",
5066
+ align === "center" && "is-center",
5067
+ p.numeric && "is-numeric",
5068
+ p.mono && "aura-table__mono",
5069
+ p.className
5070
+ );
5071
+ }
5072
+ var Th = React41.forwardRef(function Th2(props, ref) {
5073
+ const { align, numeric, mono, className, scope, ...rest } = props;
5074
+ return /* @__PURE__ */ React41.createElement("th", { ref, scope: scope || "col", className: cellClass("aura-tbl__th", props), ...rest });
5075
+ });
5076
+ var Td = React41.forwardRef(function Td2(props, ref) {
5077
+ const { align, numeric, mono, className, scope, ...rest } = props;
5078
+ return /* @__PURE__ */ React41.createElement("td", { ref, className: cellClass("aura-tbl__td", props), ...rest });
5079
+ });
5080
+
5081
+ // src/BottomNav.tsx
5082
+ var React42 = __toESM(require_react(), 1);
5083
+ var BottomNav = React42.forwardRef(function BottomNav2(props, ref) {
5084
+ const t = useStrings();
5085
+ const Link = useLinkComponent(props.linkComponent);
5086
+ const st = useMaybeControlled(
5087
+ props.value,
5088
+ props.defaultValue,
5089
+ props.onChange
5090
+ );
5091
+ const active = st[0];
5092
+ const hide = props.hideFrom === false ? "always" : "below-" + (props.hideFrom || "lg");
5093
+ return /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement("div", { className: cx("aura-bottomnav-spacer", "aura-bottomnav--" + hide), "aria-hidden": "true" }), /* @__PURE__ */ React42.createElement(
5094
+ "nav",
5095
+ {
5096
+ ref,
5097
+ className: cx("aura-bottomnav", "aura-bottomnav--" + hide, props.className),
5098
+ "aria-label": props.label || t.mainNav
5099
+ },
5100
+ /* @__PURE__ */ React42.createElement("ul", { className: "aura-bottomnav__list" }, props.items.map(function(it) {
5101
+ const on = active === it.id;
5102
+ const count = it.count != null && it.count > 0 ? it.count > 99 ? "99+" : String(it.count) : null;
5103
+ const common = {
5104
+ className: cx("aura-bottomnav__item", on && "is-active"),
5105
+ "aria-current": on ? "page" : void 0,
5106
+ onClick: function(e) {
5107
+ if (!it.href) e.preventDefault();
5108
+ st[1](it.id);
5109
+ }
5110
+ };
5111
+ const inner = [
5112
+ /* @__PURE__ */ React42.createElement("span", { key: "i", className: "aura-bottomnav__icon" }, /* @__PURE__ */ React42.createElement(Icon, { name: it.icon, size: "md" }), count ? /* @__PURE__ */ React42.createElement("span", { className: "aura-bottomnav__count", "aria-hidden": "true" }, count) : it.badge ? /* @__PURE__ */ React42.createElement("span", { className: "aura-bottomnav__dot", "aria-hidden": "true" }) : null),
5113
+ /* @__PURE__ */ React42.createElement("span", { key: "l", className: "aura-bottomnav__label" }, it.label),
5114
+ count || it.badge && it.badgeLabel ? /* @__PURE__ */ React42.createElement("span", { key: "s", className: "aura-sr-only" }, " (" + (count || it.badgeLabel) + ")") : null
5115
+ ];
5116
+ return /* @__PURE__ */ React42.createElement("li", { key: it.id, className: "aura-bottomnav__cell" }, it.href ? /* @__PURE__ */ React42.createElement(Link, { href: it.href, ...common }, inner) : /* @__PURE__ */ React42.createElement("button", { type: "button", ...common }, inner));
5117
+ }))
5118
+ ));
5119
+ });
5120
+
5121
+ // src/Surface.tsx
5122
+ var React43 = __toESM(require_react(), 1);
5123
+ var h8 = React43.createElement;
5124
+ var Surface = React43.forwardRef(function Surface2(props, ref) {
4725
5125
  const t = props.texture || "mesh";
4726
5126
  const rest = omit(props, ["texture", "className", "children", "as"]);
4727
5127
  return h8(
@@ -4742,8 +5142,8 @@ window.Aura = (() => {
4742
5142
  });
4743
5143
 
4744
5144
  // src/Stat.tsx
4745
- var React40 = __toESM(require_react(), 1);
4746
- var Stat = React40.forwardRef(function Stat2(props, ref) {
5145
+ var React44 = __toESM(require_react(), 1);
5146
+ var Stat = React44.forwardRef(function Stat2(props, ref) {
4747
5147
  const ch = props.change;
4748
5148
  const dir = ch && (ch.direction || "flat");
4749
5149
  const tone2 = ch && (ch.tone || (dir === "up" ? "positive" : dir === "down" ? "negative" : "neutral"));
@@ -4752,7 +5152,7 @@ window.Aura = (() => {
4752
5152
  const numeric = typeof v === "number" || typeof v === "string" && /\d/.test(v) && /^[\s\d.,:+\-\u2212%()\u0E3F$\u20AC\u00A3\u00A5kKmMbB]+$/.test(v.replace(/\b[A-Z]{3}\b/g, ""));
4753
5153
  const Tag3 = props.href ? Link : props.onClick ? "button" : "div";
4754
5154
  const interactive = !!(props.href || props.onClick);
4755
- return /* @__PURE__ */ React40.createElement(
5155
+ return /* @__PURE__ */ React44.createElement(
4756
5156
  Tag3,
4757
5157
  {
4758
5158
  ref,
@@ -4762,15 +5162,15 @@ window.Aura = (() => {
4762
5162
  type: Tag3 === "button" ? "button" : void 0,
4763
5163
  "aria-busy": props.loading || void 0
4764
5164
  },
4765
- /* @__PURE__ */ React40.createElement("span", { className: "aura-stat__head" }, /* @__PURE__ */ React40.createElement("span", { className: "aura-stat__label" }, props.label), props.icon ? /* @__PURE__ */ React40.createElement("span", { className: "aura-stat__icon" }, /* @__PURE__ */ React40.createElement(Icon, { name: props.icon })) : null),
4766
- props.loading ? /* @__PURE__ */ React40.createElement("span", { className: "aura-stat__value" }, /* @__PURE__ */ React40.createElement("span", { className: "aura-skel aura-stat__skel" })) : /* @__PURE__ */ React40.createElement("span", { className: cx("aura-stat__value", numeric && "is-numeric") }, props.value, props.unit ? /* @__PURE__ */ React40.createElement("span", { className: "aura-stat__unit" }, props.unit) : null),
4767
- ch && !props.loading || props.caption ? /* @__PURE__ */ React40.createElement("span", { className: "aura-stat__foot" }, ch && !props.loading ? /* @__PURE__ */ React40.createElement("span", { className: cx("aura-stat__change", "is-" + tone2) }, /* @__PURE__ */ React40.createElement(Icon, { name: dir === "up" ? "trending-up" : dir === "down" ? "trending-down" : "minus", size: 14 }), /* @__PURE__ */ React40.createElement("span", null, ch.value)) : null, ch && ch.label && !props.loading ? /* @__PURE__ */ React40.createElement("span", { className: "aura-stat__caption" }, ch.label) : null, props.caption ? /* @__PURE__ */ React40.createElement("span", { className: "aura-stat__caption" }, props.caption) : null) : null
5165
+ /* @__PURE__ */ React44.createElement("span", { className: "aura-stat__head" }, /* @__PURE__ */ React44.createElement("span", { className: "aura-stat__label" }, props.label), props.icon ? /* @__PURE__ */ React44.createElement("span", { className: "aura-stat__icon" }, /* @__PURE__ */ React44.createElement(Icon, { name: props.icon })) : null),
5166
+ props.loading ? /* @__PURE__ */ React44.createElement("span", { className: "aura-stat__value" }, /* @__PURE__ */ React44.createElement("span", { className: "aura-skel aura-stat__skel" })) : /* @__PURE__ */ React44.createElement("span", { className: cx("aura-stat__value", numeric && "is-numeric") }, props.value, props.unit ? /* @__PURE__ */ React44.createElement("span", { className: "aura-stat__unit" }, props.unit) : null),
5167
+ ch && !props.loading || props.caption ? /* @__PURE__ */ React44.createElement("span", { className: "aura-stat__foot" }, ch && !props.loading ? /* @__PURE__ */ React44.createElement("span", { className: cx("aura-stat__change", "is-" + tone2) }, /* @__PURE__ */ React44.createElement(Icon, { name: dir === "up" ? "trending-up" : dir === "down" ? "trending-down" : "minus", size: 14 }), /* @__PURE__ */ React44.createElement("span", null, ch.value)) : null, ch && ch.label && !props.loading ? /* @__PURE__ */ React44.createElement("span", { className: "aura-stat__caption" }, ch.label) : null, props.caption ? /* @__PURE__ */ React44.createElement("span", { className: "aura-stat__caption" }, props.caption) : null) : null
4768
5168
  );
4769
5169
  });
4770
5170
 
4771
5171
  // src/TimePicker.tsx
4772
- var React41 = __toESM(require_react(), 1);
4773
- var import_react_dom9 = __toESM(require_react_dom(), 1);
5172
+ var React45 = __toESM(require_react(), 1);
5173
+ var import_react_dom10 = __toESM(require_react_dom(), 1);
4774
5174
 
4775
5175
  // src/text.ts
4776
5176
  function formatBytes(n2) {
@@ -4810,7 +5210,7 @@ window.Aura = (() => {
4810
5210
  function fromMin(n2) {
4811
5211
  return pad3(Math.floor(n2 / 60)) + ":" + pad3(n2 % 60);
4812
5212
  }
4813
- var TimePicker = React41.forwardRef(function TimePicker2(props, ref) {
5213
+ var TimePicker = React45.forwardRef(function TimePicker2(props, ref) {
4814
5214
  const t = useStrings();
4815
5215
  const auto = uid(), id = props.id || auto, listId = id + "-list";
4816
5216
  const st = useMaybeControlled(
@@ -4820,7 +5220,7 @@ window.Aura = (() => {
4820
5220
  );
4821
5221
  const value = st[0];
4822
5222
  const step = props.step || 30, lo = toMin(props.min) != null ? toMin(props.min) : 0, hi = toMin(props.max) != null ? toMin(props.max) : 24 * 60 - 1;
4823
- const slots = React41.useMemo(
5223
+ const slots = React45.useMemo(
4824
5224
  function() {
4825
5225
  const out = [];
4826
5226
  for (let m = lo; m <= hi; m += step) out.push(fromMin(m));
@@ -4832,12 +5232,12 @@ window.Aura = (() => {
4832
5232
  const n2 = toMin(v);
4833
5233
  return n2 == null || n2 < lo || n2 > hi || props.isTimeDisabled && props.isTimeDisabled(v);
4834
5234
  }
4835
- const openState = React41.useState(false), open = openState[0], setOpen = openState[1];
4836
- const editState = React41.useState(null), editing = editState[0], setEditing = editState[1];
4837
- const aState = React41.useState(0), active = aState[0], setActive = aState[1];
4838
- const errState = React41.useState(null);
4839
- const pos = React41.useState(null);
4840
- const boxRef = React41.useRef(null), inputRef = React41.useRef(null), listRef = React41.useRef(null), inputMerged = useMergedRef(ref, inputRef);
5235
+ const openState = React45.useState(false), open = openState[0], setOpen = openState[1];
5236
+ const editState = React45.useState(null), editing = editState[0], setEditing = editState[1];
5237
+ const aState = React45.useState(0), active = aState[0], setActive = aState[1];
5238
+ const errState = React45.useState(null);
5239
+ const pos = React45.useState(null);
5240
+ const boxRef = React45.useRef(null), inputRef = React45.useRef(null), listRef = React45.useRef(null), inputMerged = useMergedRef(ref, inputRef);
4841
5241
  const mounted = useMounted();
4842
5242
  function nearest(v) {
4843
5243
  const n2 = toMin(v);
@@ -4850,13 +5250,13 @@ window.Aura = (() => {
4850
5250
  }
4851
5251
  function place() {
4852
5252
  if (!boxRef.current) return;
4853
- const r = boxRef.current.getBoundingClientRect(), below = window.innerHeight - r.bottom - 8, up = below < 200 && r.top > below;
5253
+ const r = boxRef.current.getBoundingClientRect(), below2 = window.innerHeight - r.bottom - 8, up = below2 < 200 && r.top > below2;
4854
5254
  pos[1]({
4855
5255
  left: r.left,
4856
5256
  width: Math.max(r.width, 160),
4857
5257
  top: up ? void 0 : r.bottom + 4,
4858
5258
  bottom: up ? window.innerHeight - r.top + 4 : void 0,
4859
- maxHeight: Math.min(280, (up ? r.top : below) - 8)
5259
+ maxHeight: Math.min(280, (up ? r.top : below2) - 8)
4860
5260
  });
4861
5261
  }
4862
5262
  useIsoLayoutEffect(
@@ -4865,7 +5265,7 @@ window.Aura = (() => {
4865
5265
  },
4866
5266
  [open]
4867
5267
  );
4868
- React41.useEffect(
5268
+ React45.useEffect(
4869
5269
  function() {
4870
5270
  if (!open) return;
4871
5271
  function outside(e) {
@@ -4887,7 +5287,7 @@ window.Aura = (() => {
4887
5287
  },
4888
5288
  [open]
4889
5289
  );
4890
- React41.useEffect(
5290
+ React45.useEffect(
4891
5291
  function() {
4892
5292
  if (!open || !listRef.current) return;
4893
5293
  const el = listRef.current.querySelector('[data-idx="' + active + '"]');
@@ -4984,10 +5384,10 @@ window.Aura = (() => {
4984
5384
  }
4985
5385
  }
4986
5386
  const error = errState[0] || props.error;
4987
- const list = open && mounted && pos[0] ? (0, import_react_dom9.createPortal)(
4988
- /* @__PURE__ */ React41.createElement("div", { ref: listRef, className: "aura-combo__popover aura-time__popover", style: pos[0] }, /* @__PURE__ */ React41.createElement("ul", { id: listId, role: "listbox", "aria-label": props.label, className: "aura-combo__list" }, slots.map(function(s, i) {
5387
+ const list = open && mounted && pos[0] ? (0, import_react_dom10.createPortal)(
5388
+ /* @__PURE__ */ React45.createElement("div", { ref: listRef, className: "aura-combo__popover aura-time__popover", style: pos[0] }, /* @__PURE__ */ React45.createElement("ul", { id: listId, role: "listbox", "aria-label": props.label, className: "aura-combo__list" }, slots.map(function(s, i) {
4989
5389
  const dis = blocked(s), sel = s === value;
4990
- return /* @__PURE__ */ React41.createElement(
5390
+ return /* @__PURE__ */ React45.createElement(
4991
5391
  "li",
4992
5392
  {
4993
5393
  key: s,
@@ -5012,13 +5412,13 @@ window.Aura = (() => {
5012
5412
  if (active !== i) setActive(i);
5013
5413
  }
5014
5414
  },
5015
- /* @__PURE__ */ React41.createElement("span", { className: "aura-combo__label" }, s),
5016
- sel ? /* @__PURE__ */ React41.createElement(Icon, { name: "check", className: "aura-combo__check" }) : null
5415
+ /* @__PURE__ */ React45.createElement("span", { className: "aura-combo__label" }, s),
5416
+ sel ? /* @__PURE__ */ React45.createElement(Icon, { name: "check", className: "aura-combo__check" }) : null
5017
5417
  );
5018
5418
  }))),
5019
5419
  document.body
5020
5420
  ) : null;
5021
- return /* @__PURE__ */ React41.createElement(
5421
+ return /* @__PURE__ */ React45.createElement(
5022
5422
  Field,
5023
5423
  {
5024
5424
  id,
@@ -5030,7 +5430,7 @@ window.Aura = (() => {
5030
5430
  disabled: props.disabled,
5031
5431
  className: props.className
5032
5432
  },
5033
- /* @__PURE__ */ React41.createElement("div", { ref: boxRef, className: cx("aura-input aura-combo aura-time has-icon", open && "is-open") }, /* @__PURE__ */ React41.createElement(Icon, { name: "clock", className: "aura-input__icon" }), /* @__PURE__ */ React41.createElement(
5433
+ /* @__PURE__ */ React45.createElement("div", { ref: boxRef, className: cx("aura-input aura-combo aura-time has-icon", open && "is-open") }, /* @__PURE__ */ React45.createElement(Icon, { name: "clock", className: "aura-input__icon" }), /* @__PURE__ */ React45.createElement(
5034
5434
  "input",
5035
5435
  {
5036
5436
  ref: inputMerged,
@@ -5070,7 +5470,7 @@ window.Aura = (() => {
5070
5470
  }, 0);
5071
5471
  }
5072
5472
  }
5073
- ), props.clearable !== false && value != null && !props.disabled ? /* @__PURE__ */ React41.createElement(
5473
+ ), props.clearable !== false && value != null && !props.disabled ? /* @__PURE__ */ React45.createElement(
5074
5474
  "button",
5075
5475
  {
5076
5476
  type: "button",
@@ -5083,8 +5483,8 @@ window.Aura = (() => {
5083
5483
  if (inputRef.current) inputRef.current.focus();
5084
5484
  }
5085
5485
  },
5086
- /* @__PURE__ */ React41.createElement(Icon, { name: "x" })
5087
- ) : null, /* @__PURE__ */ React41.createElement(
5486
+ /* @__PURE__ */ React45.createElement(Icon, { name: "x" })
5487
+ ) : null, /* @__PURE__ */ React45.createElement(
5088
5488
  "button",
5089
5489
  {
5090
5490
  type: "button",
@@ -5102,14 +5502,14 @@ window.Aura = (() => {
5102
5502
  }
5103
5503
  }
5104
5504
  },
5105
- /* @__PURE__ */ React41.createElement(Icon, { name: "chevron-down" })
5505
+ /* @__PURE__ */ React45.createElement(Icon, { name: "chevron-down" })
5106
5506
  )),
5107
5507
  list
5108
5508
  );
5109
5509
  });
5110
5510
 
5111
5511
  // src/FileUpload.tsx
5112
- var React42 = __toESM(require_react(), 1);
5512
+ var React46 = __toESM(require_react(), 1);
5113
5513
  function matches(file, accept) {
5114
5514
  if (!accept) return true;
5115
5515
  const name = (file.name || "").toLowerCase(), type = (file.type || "").toLowerCase();
@@ -5133,17 +5533,17 @@ window.Aura = (() => {
5133
5533
  }).join(", ");
5134
5534
  }
5135
5535
  var seq = 0;
5136
- var FileUpload = React42.forwardRef(function FileUpload2(props, ref) {
5536
+ var FileUpload = React46.forwardRef(function FileUpload2(props, ref) {
5137
5537
  const t = useStrings();
5138
5538
  const auto = uid(), id = props.id || auto;
5139
5539
  const st = useMaybeControlled(props.value, props.defaultValue || [], props.onChange);
5140
5540
  const items2 = st[0] || [];
5141
- const dragState = React42.useState(false), over = dragState[0];
5142
- const inputRef = React42.useRef(null), inputMerged = useMergedRef(ref, inputRef);
5143
- const urls = React42.useRef({});
5541
+ const dragState = React46.useState(false), over = dragState[0];
5542
+ const inputRef = React46.useRef(null), inputMerged = useMergedRef(ref, inputRef);
5543
+ const urls = React46.useRef({});
5144
5544
  const maxFiles = props.multiple ? props.maxFiles : 1;
5145
5545
  const note = t.accepts(describeAccept(props.accept, t), props.maxSize ? formatBytes(props.maxSize) : "");
5146
- React42.useEffect(function() {
5546
+ React46.useEffect(function() {
5147
5547
  return function() {
5148
5548
  Object.keys(urls.current).forEach(function(k) {
5149
5549
  URL.revokeObjectURL(urls.current[k]);
@@ -5194,7 +5594,7 @@ window.Aura = (() => {
5194
5594
  if (inputRef.current) inputRef.current.focus();
5195
5595
  }
5196
5596
  const error = props.error;
5197
- return /* @__PURE__ */ React42.createElement(
5597
+ return /* @__PURE__ */ React46.createElement(
5198
5598
  Field,
5199
5599
  {
5200
5600
  id,
@@ -5206,7 +5606,7 @@ window.Aura = (() => {
5206
5606
  disabled: props.disabled,
5207
5607
  className: props.className
5208
5608
  },
5209
- /* @__PURE__ */ React42.createElement(
5609
+ /* @__PURE__ */ React46.createElement(
5210
5610
  "div",
5211
5611
  {
5212
5612
  className: cx("aura-upload", over && "is-over", props.disabled && "is-disabled", error && "is-invalid"),
@@ -5227,9 +5627,9 @@ window.Aura = (() => {
5227
5627
  add(e.dataTransfer && e.dataTransfer.files);
5228
5628
  }
5229
5629
  },
5230
- /* @__PURE__ */ React42.createElement(Icon, { name: "cloud-upload", size: "lg", className: "aura-upload__icon" }),
5231
- /* @__PURE__ */ React42.createElement("span", { className: "aura-upload__text" }, t.dropFiles, " "),
5232
- /* @__PURE__ */ React42.createElement(
5630
+ /* @__PURE__ */ React46.createElement(Icon, { name: "cloud-upload", size: "lg", className: "aura-upload__icon" }),
5631
+ /* @__PURE__ */ React46.createElement("span", { className: "aura-upload__text" }, t.dropFiles, " "),
5632
+ /* @__PURE__ */ React46.createElement(
5233
5633
  "input",
5234
5634
  {
5235
5635
  ref: inputMerged,
@@ -5251,12 +5651,12 @@ window.Aura = (() => {
5251
5651
  }
5252
5652
  }
5253
5653
  ),
5254
- /* @__PURE__ */ React42.createElement("span", { className: "aura-upload__browse", "aria-hidden": true }, props.multiple ? t.browse : t.browseOne),
5255
- note ? /* @__PURE__ */ React42.createElement("span", { className: "aura-upload__note", id: id + "-note" }, note) : null
5654
+ /* @__PURE__ */ React46.createElement("span", { className: "aura-upload__browse", "aria-hidden": true }, props.multiple ? t.browse : t.browseOne),
5655
+ note ? /* @__PURE__ */ React46.createElement("span", { className: "aura-upload__note", id: id + "-note" }, note) : null
5256
5656
  ),
5257
- items2.length ? /* @__PURE__ */ React42.createElement("ul", { className: "aura-upload__list", "aria-live": "polite" }, items2.map(function(it) {
5657
+ items2.length ? /* @__PURE__ */ React46.createElement("ul", { className: "aura-upload__list", "aria-live": "polite" }, items2.map(function(it) {
5258
5658
  const src = thumb(it);
5259
- return /* @__PURE__ */ React42.createElement("li", { key: it.id, className: cx("aura-upload__item", it.error && "is-error") }, src ? /* @__PURE__ */ React42.createElement("img", { className: "aura-upload__thumb", src, alt: "" }) : /* @__PURE__ */ React42.createElement("span", { className: "aura-upload__thumb is-icon", "aria-hidden": true }, /* @__PURE__ */ React42.createElement(Icon, { name: /^image\//.test(it.type || "") ? "image" : "file", size: "md" })), /* @__PURE__ */ React42.createElement("span", { className: "aura-upload__meta" }, /* @__PURE__ */ React42.createElement("span", { className: "aura-upload__name" }, it.name), /* @__PURE__ */ React42.createElement("span", { className: "aura-upload__sub" }, it.error ? /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(Icon, { name: "circle-alert", size: 12 }), it.error) : it.status === "uploading" ? t.uploading + (it.progress != null ? " " + Math.round(it.progress) + "%" : "") : it.status === "done" ? /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(Icon, { name: "circle-check", size: 12 }), formatBytes(it.size)) : formatBytes(it.size)), it.status === "uploading" ? /* @__PURE__ */ React42.createElement(
5659
+ return /* @__PURE__ */ React46.createElement("li", { key: it.id, className: cx("aura-upload__item", it.error && "is-error") }, src ? /* @__PURE__ */ React46.createElement("img", { className: "aura-upload__thumb", src, alt: "" }) : /* @__PURE__ */ React46.createElement("span", { className: "aura-upload__thumb is-icon", "aria-hidden": true }, /* @__PURE__ */ React46.createElement(Icon, { name: /^image\//.test(it.type || "") ? "image" : "file", size: "md" })), /* @__PURE__ */ React46.createElement("span", { className: "aura-upload__meta" }, /* @__PURE__ */ React46.createElement("span", { className: "aura-upload__name" }, it.name), /* @__PURE__ */ React46.createElement("span", { className: "aura-upload__sub" }, it.error ? /* @__PURE__ */ React46.createElement(React46.Fragment, null, /* @__PURE__ */ React46.createElement(Icon, { name: "circle-alert", size: 12 }), it.error) : it.status === "uploading" ? t.uploading + (it.progress != null ? " " + Math.round(it.progress) + "%" : "") : it.status === "done" ? /* @__PURE__ */ React46.createElement(React46.Fragment, null, /* @__PURE__ */ React46.createElement(Icon, { name: "circle-check", size: 12 }), formatBytes(it.size)) : formatBytes(it.size)), it.status === "uploading" ? /* @__PURE__ */ React46.createElement(
5260
5660
  "span",
5261
5661
  {
5262
5662
  className: "aura-upload__bar",
@@ -5266,8 +5666,8 @@ window.Aura = (() => {
5266
5666
  "aria-valuemax": 100,
5267
5667
  "aria-valuenow": it.progress != null ? Math.round(it.progress) : void 0
5268
5668
  },
5269
- /* @__PURE__ */ React42.createElement("span", { style: { width: (it.progress || 0) + "%" } })
5270
- ) : null), /* @__PURE__ */ React42.createElement(
5669
+ /* @__PURE__ */ React46.createElement("span", { style: { width: (it.progress || 0) + "%" } })
5670
+ ) : null), /* @__PURE__ */ React46.createElement(
5271
5671
  IconButton,
5272
5672
  {
5273
5673
  icon: "x",
@@ -5553,9 +5953,9 @@ window.Aura = (() => {
5553
5953
  }
5554
5954
 
5555
5955
  // src/ThemeStyle.tsx
5556
- var React43 = __toESM(require_react(), 1);
5956
+ var React47 = __toESM(require_react(), 1);
5557
5957
  function ThemeStyle(props) {
5558
- const css = React43.useMemo(
5958
+ const css = React47.useMemo(
5559
5959
  function() {
5560
5960
  return createTheme({ brand: props.brand, signal: props.signal, primary: props.primary, name: props.name }).css(
5561
5961
  props.selector
@@ -5563,11 +5963,11 @@ window.Aura = (() => {
5563
5963
  },
5564
5964
  [props.brand, props.signal, props.primary, props.name, props.selector]
5565
5965
  );
5566
- return /* @__PURE__ */ React43.createElement("style", { "data-aura-theme": props.name || props.brand, dangerouslySetInnerHTML: { __html: css } });
5966
+ return /* @__PURE__ */ React47.createElement("style", { "data-aura-theme": props.name || props.brand, dangerouslySetInnerHTML: { __html: css } });
5567
5967
  }
5568
5968
 
5569
5969
  // src/colorScheme.tsx
5570
- var React44 = __toESM(require_react(), 1);
5970
+ var React48 = __toESM(require_react(), 1);
5571
5971
 
5572
5972
  // src/colorSchemeScript.ts
5573
5973
  var DEFAULT_KEY = "aura-color-scheme";
@@ -5584,7 +5984,7 @@ window.Aura = (() => {
5584
5984
 
5585
5985
  // src/colorScheme.tsx
5586
5986
  function ColorSchemeScript(props) {
5587
- return /* @__PURE__ */ React44.createElement(
5987
+ return /* @__PURE__ */ React48.createElement(
5588
5988
  "script",
5589
5989
  {
5590
5990
  "data-aura-color-scheme": "",
@@ -5609,7 +6009,7 @@ window.Aura = (() => {
5609
6009
  function useColorScheme(options) {
5610
6010
  const key = options && options.storageKey || DEFAULT_KEY;
5611
6011
  const fallback = options && options.defaultScheme || "system";
5612
- const subscribe2 = React44.useCallback(
6012
+ const subscribe2 = React48.useCallback(
5613
6013
  function(cb) {
5614
6014
  const mq = window.matchMedia ? window.matchMedia("(prefers-color-scheme: dark)") : null;
5615
6015
  function onSystem() {
@@ -5627,7 +6027,7 @@ window.Aura = (() => {
5627
6027
  },
5628
6028
  [fallback]
5629
6029
  );
5630
- const snapshot = React44.useSyncExternalStore(
6030
+ const snapshot = React48.useSyncExternalStore(
5631
6031
  subscribe2,
5632
6032
  function() {
5633
6033
  const s = readScheme(fallback);
@@ -5638,7 +6038,7 @@ window.Aura = (() => {
5638
6038
  }
5639
6039
  );
5640
6040
  const parts = snapshot.split("|");
5641
- const setScheme = React44.useCallback(
6041
+ const setScheme = React48.useCallback(
5642
6042
  function(next) {
5643
6043
  if (!valid(next)) return;
5644
6044
  try {
@@ -5657,11 +6057,11 @@ window.Aura = (() => {
5657
6057
  const cs = useColorScheme(props);
5658
6058
  const names = { light: t.schemeLight, dark: t.schemeDark, system: t.schemeSystem };
5659
6059
  const label = props.label || t.colorScheme;
5660
- return /* @__PURE__ */ React44.createElement(
6060
+ return /* @__PURE__ */ React48.createElement(
5661
6061
  DropdownMenu,
5662
6062
  {
5663
6063
  label,
5664
- trigger: /* @__PURE__ */ React44.createElement(IconButton, { icon: cs.resolved === "dark" ? "moon" : "sun", label: label + ": " + names[cs.scheme] }),
6064
+ trigger: /* @__PURE__ */ React48.createElement(IconButton, { icon: cs.resolved === "dark" ? "moon" : "sun", label: label + ": " + names[cs.scheme] }),
5665
6065
  items: SCHEMES.map(function(s) {
5666
6066
  return {
5667
6067
  label: names[s],
@@ -5676,10 +6076,10 @@ window.Aura = (() => {
5676
6076
  }
5677
6077
 
5678
6078
  // src/Badge.tsx
5679
- var React45 = __toESM(require_react(), 1);
5680
- var Badge = React45.forwardRef(function Badge2(props, ref) {
6079
+ var React49 = __toESM(require_react(), 1);
6080
+ var Badge = React49.forwardRef(function Badge2(props, ref) {
5681
6081
  const rest = omit(props, ["tone", "variant", "icon", "className", "children"]);
5682
- return /* @__PURE__ */ React45.createElement(
6082
+ return /* @__PURE__ */ React49.createElement(
5683
6083
  "span",
5684
6084
  {
5685
6085
  ...rest,
@@ -5692,19 +6092,19 @@ window.Aura = (() => {
5692
6092
  props.className
5693
6093
  )
5694
6094
  },
5695
- props.icon ? /* @__PURE__ */ React45.createElement(Icon, { name: props.icon, size: 12 }) : null,
6095
+ props.icon ? /* @__PURE__ */ React49.createElement(Icon, { name: props.icon, size: 12 }) : null,
5696
6096
  props.children
5697
6097
  );
5698
6098
  });
5699
6099
 
5700
6100
  // src/Progress.tsx
5701
- var React46 = __toESM(require_react(), 1);
5702
- var Progress = React46.forwardRef(function Progress2(props, ref) {
6101
+ var React50 = __toESM(require_react(), 1);
6102
+ var Progress = React50.forwardRef(function Progress2(props, ref) {
5703
6103
  const auto = uid(), id = props.id || auto;
5704
6104
  const max = props.max || 100, det = props.value != null;
5705
6105
  const pct = det ? Math.max(0, Math.min(100, props.value / max * 100)) : 0;
5706
6106
  const shown = props.valueLabel != null ? props.valueLabel : det ? Math.round(pct) + "%" : null;
5707
- return /* @__PURE__ */ React46.createElement(
6107
+ return /* @__PURE__ */ React50.createElement(
5708
6108
  "div",
5709
6109
  {
5710
6110
  ref,
@@ -5715,8 +6115,8 @@ window.Aura = (() => {
5715
6115
  props.className
5716
6116
  )
5717
6117
  },
5718
- props.label || props.showValue && shown ? /* @__PURE__ */ React46.createElement("div", { className: "aura-progress__head" }, props.label ? /* @__PURE__ */ React46.createElement("span", { className: "aura-progress__label", id: id + "-label" }, props.label) : /* @__PURE__ */ React46.createElement("span", null), props.showValue && shown ? /* @__PURE__ */ React46.createElement("span", { className: "aura-progress__value" }, shown) : null) : null,
5719
- /* @__PURE__ */ React46.createElement(
6118
+ props.label || props.showValue && shown ? /* @__PURE__ */ React50.createElement("div", { className: "aura-progress__head" }, props.label ? /* @__PURE__ */ React50.createElement("span", { className: "aura-progress__label", id: id + "-label" }, props.label) : /* @__PURE__ */ React50.createElement("span", null), props.showValue && shown ? /* @__PURE__ */ React50.createElement("span", { className: "aura-progress__value" }, shown) : null) : null,
6119
+ /* @__PURE__ */ React50.createElement(
5720
6120
  "div",
5721
6121
  {
5722
6122
  className: cx("aura-progress__track", !det && "is-indeterminate"),
@@ -5728,21 +6128,21 @@ window.Aura = (() => {
5728
6128
  "aria-valuenow": det ? props.value : void 0,
5729
6129
  "aria-valuetext": det && props.valueLabel != null ? String(props.valueLabel) : void 0
5730
6130
  },
5731
- /* @__PURE__ */ React46.createElement("span", { className: "aura-progress__bar", style: det ? { width: pct + "%" } : void 0 })
6131
+ /* @__PURE__ */ React50.createElement("span", { className: "aura-progress__bar", style: det ? { width: pct + "%" } : void 0 })
5732
6132
  ),
5733
- props.hint ? /* @__PURE__ */ React46.createElement("p", { className: "aura-progress__hint" }, props.hint) : null
6133
+ props.hint ? /* @__PURE__ */ React50.createElement("p", { className: "aura-progress__hint" }, props.hint) : null
5734
6134
  );
5735
6135
  });
5736
6136
 
5737
6137
  // src/Skeleton.tsx
5738
- var React47 = __toESM(require_react(), 1);
5739
- var Skeleton = React47.forwardRef(function Skeleton2(props, ref) {
6138
+ var React51 = __toESM(require_react(), 1);
6139
+ var Skeleton = React51.forwardRef(function Skeleton2(props, ref) {
5740
6140
  const v = props.variant || "text";
5741
6141
  if (v === "text" && (props.lines || 1) > 1) {
5742
6142
  const n2 = props.lines, rows = [];
5743
6143
  for (let i = 0; i < n2; i++)
5744
- rows.push(/* @__PURE__ */ React47.createElement("span", { key: i, className: "aura-skel aura-skel--text", style: { width: i === n2 - 1 ? "60%" : "100%" } }));
5745
- return /* @__PURE__ */ React47.createElement(
6144
+ rows.push(/* @__PURE__ */ React51.createElement("span", { key: i, className: "aura-skel aura-skel--text", style: { width: i === n2 - 1 ? "60%" : "100%" } }));
6145
+ return /* @__PURE__ */ React51.createElement(
5746
6146
  "span",
5747
6147
  {
5748
6148
  ref,
@@ -5760,28 +6160,28 @@ window.Aura = (() => {
5760
6160
  if (v === "circle") {
5761
6161
  style.width = style.height = props.size || props.width || 40;
5762
6162
  }
5763
- return /* @__PURE__ */ React47.createElement("span", { ref, "aria-hidden": true, className: cx("aura-skel", "aura-skel--" + v, props.className), style });
6163
+ return /* @__PURE__ */ React51.createElement("span", { ref, "aria-hidden": true, className: cx("aura-skel", "aura-skel--" + v, props.className), style });
5764
6164
  });
5765
6165
 
5766
6166
  // src/EmptyState.tsx
5767
- var React48 = __toESM(require_react(), 1);
5768
- var EmptyState = React48.forwardRef(function EmptyState2(props, ref) {
6167
+ var React52 = __toESM(require_react(), 1);
6168
+ var EmptyState = React52.forwardRef(function EmptyState2(props, ref) {
5769
6169
  const HT = "h" + (props.headingLevel || 3);
5770
- return /* @__PURE__ */ React48.createElement(
6170
+ return /* @__PURE__ */ React52.createElement(
5771
6171
  "div",
5772
6172
  {
5773
6173
  ref,
5774
6174
  className: cx("aura-empty", props.size === "sm" && "is-sm", props.bordered && "is-bordered", props.className)
5775
6175
  },
5776
- /* @__PURE__ */ React48.createElement("span", { className: "aura-empty__icon", "aria-hidden": true }, /* @__PURE__ */ React48.createElement(Icon, { name: props.icon || "inbox", size: props.size === "sm" ? "md" : "lg" })),
5777
- /* @__PURE__ */ React48.createElement(HT, { className: "aura-empty__title" }, props.title),
5778
- props.description ? /* @__PURE__ */ React48.createElement("p", { className: "aura-empty__text" }, props.description) : null,
5779
- props.action ? /* @__PURE__ */ React48.createElement("div", { className: "aura-empty__action" }, props.action) : null
6176
+ /* @__PURE__ */ React52.createElement("span", { className: "aura-empty__icon", "aria-hidden": true }, /* @__PURE__ */ React52.createElement(Icon, { name: props.icon || "inbox", size: props.size === "sm" ? "md" : "lg" })),
6177
+ /* @__PURE__ */ React52.createElement(HT, { className: "aura-empty__title" }, props.title),
6178
+ props.description ? /* @__PURE__ */ React52.createElement("p", { className: "aura-empty__text" }, props.description) : null,
6179
+ props.action ? /* @__PURE__ */ React52.createElement("div", { className: "aura-empty__action" }, props.action) : null
5780
6180
  );
5781
6181
  });
5782
6182
 
5783
6183
  // src/Pagination.tsx
5784
- var React49 = __toESM(require_react(), 1);
6184
+ var React53 = __toESM(require_react(), 1);
5785
6185
  function pageList(page, count, sib) {
5786
6186
  let out = [], lo = Math.max(2, page - sib), hi = Math.min(count - 1, page + sib);
5787
6187
  if (page - sib <= 3) {
@@ -5801,7 +6201,7 @@ window.Aura = (() => {
5801
6201
  if (count > 1) out.push(count);
5802
6202
  return out;
5803
6203
  }
5804
- var Pagination = React49.forwardRef(function Pagination2(props, ref) {
6204
+ var Pagination = React53.forwardRef(function Pagination2(props, ref) {
5805
6205
  const t = useStrings();
5806
6206
  const count = Math.max(1, props.pageCount || 1);
5807
6207
  const st = useMaybeControlled(props.page, props.defaultPage || 1, props.onChange);
@@ -5820,7 +6220,7 @@ window.Aura = (() => {
5820
6220
  },
5821
6221
  extra
5822
6222
  );
5823
- return link ? /* @__PURE__ */ React49.createElement(
6223
+ return link ? /* @__PURE__ */ React53.createElement(
5824
6224
  Link,
5825
6225
  {
5826
6226
  href: link(p),
@@ -5833,7 +6233,7 @@ window.Aura = (() => {
5833
6233
  ...common
5834
6234
  },
5835
6235
  label
5836
- ) : /* @__PURE__ */ React49.createElement(
6236
+ ) : /* @__PURE__ */ React53.createElement(
5837
6237
  "button",
5838
6238
  {
5839
6239
  type: "button",
@@ -5847,7 +6247,7 @@ window.Aura = (() => {
5847
6247
  }
5848
6248
  function arrow(p, icon, label, rel, disabled) {
5849
6249
  if (!link || disabled)
5850
- return /* @__PURE__ */ React49.createElement(
6250
+ return /* @__PURE__ */ React53.createElement(
5851
6251
  IconButton,
5852
6252
  {
5853
6253
  icon,
@@ -5858,7 +6258,7 @@ window.Aura = (() => {
5858
6258
  }
5859
6259
  }
5860
6260
  );
5861
- return /* @__PURE__ */ React49.createElement(
6261
+ return /* @__PURE__ */ React53.createElement(
5862
6262
  Link,
5863
6263
  {
5864
6264
  href: link(p),
@@ -5873,17 +6273,17 @@ window.Aura = (() => {
5873
6273
  }
5874
6274
  }
5875
6275
  },
5876
- /* @__PURE__ */ React49.createElement(Icon, { name: icon, size: "sm" })
6276
+ /* @__PURE__ */ React53.createElement(Icon, { name: icon, size: "sm" })
5877
6277
  );
5878
6278
  }
5879
- return /* @__PURE__ */ React49.createElement("nav", { ref, className: cx("aura-pagination", props.className), "aria-label": props.label || t.pagination }, arrow(page - 1, "chevron-left", t.prevPage, "prev", page <= 1), /* @__PURE__ */ React49.createElement("ol", { className: "aura-pagination__list" }, pageList(page, count, props.siblingCount == null ? 1 : props.siblingCount).map(function(p) {
5880
- return typeof p === "number" ? /* @__PURE__ */ React49.createElement("li", { key: p }, item(p, p)) : /* @__PURE__ */ React49.createElement("li", { key: p, className: "aura-pagination__gap", "aria-hidden": true }, "\u2026");
5881
- })), /* @__PURE__ */ React49.createElement("span", { className: "aura-pagination__compact", "aria-hidden": true }, t.page(page, count)), arrow(page + 1, "chevron-right", t.nextPage, "next", page >= count));
6279
+ return /* @__PURE__ */ React53.createElement("nav", { ref, className: cx("aura-pagination", props.className), "aria-label": props.label || t.pagination }, arrow(page - 1, "chevron-left", t.prevPage, "prev", page <= 1), /* @__PURE__ */ React53.createElement("ol", { className: "aura-pagination__list" }, pageList(page, count, props.siblingCount == null ? 1 : props.siblingCount).map(function(p) {
6280
+ return typeof p === "number" ? /* @__PURE__ */ React53.createElement("li", { key: p }, item(p, p)) : /* @__PURE__ */ React53.createElement("li", { key: p, className: "aura-pagination__gap", "aria-hidden": true }, "\u2026");
6281
+ })), /* @__PURE__ */ React53.createElement("span", { className: "aura-pagination__compact", "aria-hidden": true }, t.page(page, count)), arrow(page + 1, "chevron-right", t.nextPage, "next", page >= count));
5882
6282
  });
5883
6283
 
5884
6284
  // src/Accordion.tsx
5885
- var React50 = __toESM(require_react(), 1);
5886
- var Accordion = React50.forwardRef(function Accordion2(props, ref) {
6285
+ var React54 = __toESM(require_react(), 1);
6286
+ var Accordion = React54.forwardRef(function Accordion2(props, ref) {
5887
6287
  const auto = uid(), base = props.id || auto;
5888
6288
  const multiple = props.type === "multiple";
5889
6289
  const st = useMaybeControlled(
@@ -5921,9 +6321,9 @@ window.Aura = (() => {
5921
6321
  n2.focus();
5922
6322
  }
5923
6323
  }
5924
- return /* @__PURE__ */ React50.createElement("div", { ref, className: cx("aura-accordion", props.className), onKeyDown: onKey }, items2.map(function(it) {
6324
+ return /* @__PURE__ */ React54.createElement("div", { ref, className: cx("aura-accordion", props.className), onKeyDown: onKey }, items2.map(function(it) {
5925
6325
  const on = open.indexOf(it.id) >= 0, bid = base + "-btn-" + it.id, pid = base + "-panel-" + it.id;
5926
- return /* @__PURE__ */ React50.createElement("div", { key: it.id, className: cx("aura-accordion__item", on && "is-open") }, /* @__PURE__ */ React50.createElement(HT, { className: "aura-accordion__heading" }, /* @__PURE__ */ React50.createElement(
6326
+ return /* @__PURE__ */ React54.createElement("div", { key: it.id, className: cx("aura-accordion__item", on && "is-open") }, /* @__PURE__ */ React54.createElement(HT, { className: "aura-accordion__heading" }, /* @__PURE__ */ React54.createElement(
5927
6327
  "button",
5928
6328
  {
5929
6329
  type: "button",
@@ -5935,16 +6335,16 @@ window.Aura = (() => {
5935
6335
  toggle(it.id);
5936
6336
  }
5937
6337
  },
5938
- it.icon ? /* @__PURE__ */ React50.createElement(Icon, { name: it.icon, className: "aura-accordion__lead" }) : null,
5939
- /* @__PURE__ */ React50.createElement("span", { className: "aura-accordion__title" }, it.title, it.description ? /* @__PURE__ */ React50.createElement("span", { className: "aura-accordion__desc" }, it.description) : null),
5940
- /* @__PURE__ */ React50.createElement(Icon, { name: "chevron-down", className: "aura-accordion__chevron" })
5941
- )), /* @__PURE__ */ React50.createElement("div", { id: pid, role: "region", "aria-labelledby": bid, className: "aura-accordion__panel", hidden: !on }, it.content));
6338
+ it.icon ? /* @__PURE__ */ React54.createElement(Icon, { name: it.icon, className: "aura-accordion__lead" }) : null,
6339
+ /* @__PURE__ */ React54.createElement("span", { className: "aura-accordion__title" }, it.title, it.description ? /* @__PURE__ */ React54.createElement("span", { className: "aura-accordion__desc" }, it.description) : null),
6340
+ /* @__PURE__ */ React54.createElement(Icon, { name: "chevron-down", className: "aura-accordion__chevron" })
6341
+ )), /* @__PURE__ */ React54.createElement("div", { id: pid, role: "region", "aria-labelledby": bid, className: "aura-accordion__panel", hidden: !on }, it.content));
5942
6342
  }));
5943
6343
  });
5944
6344
 
5945
6345
  // src/Popover.tsx
5946
- var React51 = __toESM(require_react(), 1);
5947
- var import_react_dom10 = __toESM(require_react_dom(), 1);
6346
+ var React55 = __toESM(require_react(), 1);
6347
+ var import_react_dom11 = __toESM(require_react_dom(), 1);
5948
6348
  function position(anchor, pop, placement) {
5949
6349
  const r = anchor.getBoundingClientRect(), pw = pop.offsetWidth, ph = pop.offsetHeight, vw = window.innerWidth, vh = window.innerHeight, gap = 6;
5950
6350
  let side = (placement || "bottom-start").split("-")[0], align = (placement || "bottom-start").split("-")[1] || "start";
@@ -5954,14 +6354,14 @@ window.Aura = (() => {
5954
6354
  const left = align === "end" ? r.right - pw : align === "center" ? r.left + r.width / 2 - pw / 2 : r.left;
5955
6355
  return { top: Math.max(8, top), left: Math.max(8, Math.min(left, vw - pw - 8)), side };
5956
6356
  }
5957
- var Popover = React51.forwardRef(function Popover2(props, ref) {
6357
+ var Popover = React55.forwardRef(function Popover2(props, ref) {
5958
6358
  const t = useStrings();
5959
6359
  const density = useDensity();
5960
6360
  const auto = uid(), id = props.id || auto;
5961
6361
  const st = useMaybeControlled(props.open, !!props.defaultOpen, props.onOpenChange);
5962
6362
  const open = !!st[0];
5963
- const wrap = React51.useRef(null), pop = React51.useRef(null), popMerged = useMergedRef(ref, pop);
5964
- const pos = React51.useState(null), mounted = useMounted();
6363
+ const wrap = React55.useRef(null), pop = React55.useRef(null), popMerged = useMergedRef(ref, pop);
6364
+ const pos = React55.useState(null), mounted = useMounted();
5965
6365
  function trigger() {
5966
6366
  return wrap.current && (wrap.current.querySelector('button, [role="button"], a, input') || wrap.current.firstElementChild);
5967
6367
  }
@@ -5988,7 +6388,7 @@ window.Aura = (() => {
5988
6388
  },
5989
6389
  [open, mounted, props.placement]
5990
6390
  );
5991
- React51.useEffect(
6391
+ React55.useEffect(
5992
6392
  function() {
5993
6393
  if (!open || !mounted) return;
5994
6394
  if (props.autoFocus !== false && pop.current) {
@@ -6007,9 +6407,9 @@ window.Aura = (() => {
6007
6407
  },
6008
6408
  [open, mounted]
6009
6409
  );
6010
- const child = React51.Children.only(props.trigger);
6011
- const panel = open && mounted ? (0, import_react_dom10.createPortal)(
6012
- /* @__PURE__ */ React51.createElement(
6410
+ const child = React55.Children.only(props.trigger);
6411
+ const panel = open && mounted ? (0, import_react_dom11.createPortal)(
6412
+ /* @__PURE__ */ React55.createElement(
6013
6413
  "div",
6014
6414
  {
6015
6415
  ref: popMerged,
@@ -6032,7 +6432,7 @@ window.Aura = (() => {
6032
6432
  } else trapTab(e, pop.current);
6033
6433
  }
6034
6434
  },
6035
- props.title ? /* @__PURE__ */ React51.createElement("div", { className: "aura-popover__head" }, /* @__PURE__ */ React51.createElement("p", { className: "aura-popover__title", id: id + "-title" }, props.title), /* @__PURE__ */ React51.createElement(
6435
+ props.title ? /* @__PURE__ */ React55.createElement("div", { className: "aura-popover__head" }, /* @__PURE__ */ React55.createElement("p", { className: "aura-popover__title", id: id + "-title" }, props.title), /* @__PURE__ */ React55.createElement(
6036
6436
  IconButton,
6037
6437
  {
6038
6438
  icon: "x",
@@ -6042,7 +6442,7 @@ window.Aura = (() => {
6042
6442
  }
6043
6443
  }
6044
6444
  )) : null,
6045
- /* @__PURE__ */ React51.createElement("div", { className: "aura-popover__body" }, typeof props.children === "function" ? props.children({
6445
+ /* @__PURE__ */ React55.createElement("div", { className: "aura-popover__body" }, typeof props.children === "function" ? props.children({
6046
6446
  close: function() {
6047
6447
  close(true);
6048
6448
  }
@@ -6050,7 +6450,7 @@ window.Aura = (() => {
6050
6450
  ),
6051
6451
  document.body
6052
6452
  ) : null;
6053
- return /* @__PURE__ */ React51.createElement("span", { ref: wrap, className: "aura-popover-anchor" }, React51.cloneElement(child, {
6453
+ return /* @__PURE__ */ React55.createElement("span", { ref: wrap, className: "aura-popover-anchor" }, React55.cloneElement(child, {
6054
6454
  onClick: function(e) {
6055
6455
  if (child.props.onClick) child.props.onClick(e);
6056
6456
  st[1](!open);
@@ -6062,7 +6462,7 @@ window.Aura = (() => {
6062
6462
  });
6063
6463
 
6064
6464
  // src/NumberField.tsx
6065
- var React52 = __toESM(require_react(), 1);
6465
+ var React56 = __toESM(require_react(), 1);
6066
6466
  function decimalsOf(n2) {
6067
6467
  const s = String(n2);
6068
6468
  const i = s.indexOf(".");
@@ -6073,7 +6473,7 @@ window.Aura = (() => {
6073
6473
  if (!/^-?(\d+\.?\d*|\.\d+)$/.test(s)) return NaN;
6074
6474
  return Number(s);
6075
6475
  }
6076
- var NumberField = React52.forwardRef(function NumberField2(props, ref) {
6476
+ var NumberField = React56.forwardRef(function NumberField2(props, ref) {
6077
6477
  const t = useStrings();
6078
6478
  const auto = uid(), id = props.id || auto;
6079
6479
  const step = props.step || 1;
@@ -6084,7 +6484,7 @@ window.Aura = (() => {
6084
6484
  props.onChange
6085
6485
  );
6086
6486
  const value = st[0], setValue = st[1];
6087
- const draftState = React52.useState(null), draft = draftState[0], setDraft = draftState[1];
6487
+ const draftState = React56.useState(null), draft = draftState[0], setDraft = draftState[1];
6088
6488
  function fmt2(n2) {
6089
6489
  if (n2 == null || isNaN(n2)) return "";
6090
6490
  return n2.toLocaleString("en", { minimumFractionDigits: decimals, maximumFractionDigits: decimals });
@@ -6133,7 +6533,7 @@ window.Aura = (() => {
6133
6533
  };
6134
6534
  const valueText = value == null ? void 0 : [affixText(props.prefix), fmt2(value), affixText(props.suffix)].join(" ").trim();
6135
6535
  const stepper = props.stepper !== false && !props.readOnly;
6136
- return /* @__PURE__ */ React52.createElement(
6536
+ return /* @__PURE__ */ React56.createElement(
6137
6537
  Field,
6138
6538
  {
6139
6539
  id,
@@ -6145,7 +6545,7 @@ window.Aura = (() => {
6145
6545
  disabled: props.disabled,
6146
6546
  className: props.className
6147
6547
  },
6148
- /* @__PURE__ */ React52.createElement("div", { className: cx("aura-input aura-number", stepper && "has-stepper") }, props.prefix != null ? /* @__PURE__ */ React52.createElement("span", { className: "aura-number__affix", "aria-hidden": true }, props.prefix) : null, /* @__PURE__ */ React52.createElement(
6548
+ /* @__PURE__ */ React56.createElement("div", { className: cx("aura-input aura-number", stepper && "has-stepper") }, props.prefix != null ? /* @__PURE__ */ React56.createElement("span", { className: "aura-number__affix", "aria-hidden": true }, props.prefix) : null, /* @__PURE__ */ React56.createElement(
6149
6549
  "input",
6150
6550
  {
6151
6551
  ref,
@@ -6192,7 +6592,7 @@ window.Aura = (() => {
6192
6592
  },
6193
6593
  onKeyDown
6194
6594
  }
6195
- ), props.suffix != null ? /* @__PURE__ */ React52.createElement("span", { className: "aura-number__affix", "aria-hidden": true }, props.suffix) : null, stepper ? /* @__PURE__ */ React52.createElement("span", { className: "aura-number__steps" }, /* @__PURE__ */ React52.createElement(
6595
+ ), props.suffix != null ? /* @__PURE__ */ React56.createElement("span", { className: "aura-number__affix", "aria-hidden": true }, props.suffix) : null, stepper ? /* @__PURE__ */ React56.createElement("span", { className: "aura-number__steps" }, /* @__PURE__ */ React56.createElement(
6196
6596
  "button",
6197
6597
  {
6198
6598
  type: "button",
@@ -6208,8 +6608,8 @@ window.Aura = (() => {
6208
6608
  nudge(-step);
6209
6609
  }
6210
6610
  },
6211
- /* @__PURE__ */ React52.createElement(Icon, { name: "minus" })
6212
- ), /* @__PURE__ */ React52.createElement(
6611
+ /* @__PURE__ */ React56.createElement(Icon, { name: "minus" })
6612
+ ), /* @__PURE__ */ React56.createElement(
6213
6613
  "button",
6214
6614
  {
6215
6615
  type: "button",
@@ -6225,14 +6625,14 @@ window.Aura = (() => {
6225
6625
  nudge(step);
6226
6626
  }
6227
6627
  },
6228
- /* @__PURE__ */ React52.createElement(Icon, { name: "plus" })
6628
+ /* @__PURE__ */ React56.createElement(Icon, { name: "plus" })
6229
6629
  )) : null)
6230
6630
  );
6231
6631
  });
6232
6632
 
6233
6633
  // src/Stepper.tsx
6234
- var React53 = __toESM(require_react(), 1);
6235
- var Stepper = React53.forwardRef(function Stepper2(props, ref) {
6634
+ var React57 = __toESM(require_react(), 1);
6635
+ var Stepper = React57.forwardRef(function Stepper2(props, ref) {
6236
6636
  const t = useStrings();
6237
6637
  const steps = props.steps || [];
6238
6638
  let at = -1;
@@ -6242,26 +6642,26 @@ window.Aura = (() => {
6242
6642
  if (at < 0) at = 0;
6243
6643
  const vertical = props.orientation === "vertical";
6244
6644
  const cur = steps[at];
6245
- return /* @__PURE__ */ React53.createElement(
6645
+ return /* @__PURE__ */ React57.createElement(
6246
6646
  "nav",
6247
6647
  {
6248
6648
  ref,
6249
6649
  "aria-label": props.label,
6250
6650
  className: cx("aura-stepper", vertical ? "aura-stepper--vertical" : "aura-stepper--horizontal", props.className)
6251
6651
  },
6252
- /* @__PURE__ */ React53.createElement("ol", { className: "aura-stepper__list" }, steps.map(function(s, i) {
6652
+ /* @__PURE__ */ React57.createElement("ol", { className: "aura-stepper__list" }, steps.map(function(s, i) {
6253
6653
  const state = i < at ? "done" : i === at ? "current" : "upcoming";
6254
- const marker = /* @__PURE__ */ React53.createElement("span", { className: "aura-stepper__marker", "aria-hidden": true }, state === "done" ? /* @__PURE__ */ React53.createElement(Icon, { name: "check" }) : i + 1);
6255
- const text = /* @__PURE__ */ React53.createElement("span", { className: "aura-stepper__text" }, /* @__PURE__ */ React53.createElement("span", { className: "aura-stepper__label" }, s.label, state === "done" ? /* @__PURE__ */ React53.createElement("span", { className: "aura-sr-only" }, ", " + t.stepDone) : null), s.description ? /* @__PURE__ */ React53.createElement("span", { className: "aura-stepper__desc" }, s.description) : null);
6654
+ const marker = /* @__PURE__ */ React57.createElement("span", { className: "aura-stepper__marker", "aria-hidden": true }, state === "done" ? /* @__PURE__ */ React57.createElement(Icon, { name: "check" }) : i + 1);
6655
+ const text = /* @__PURE__ */ React57.createElement("span", { className: "aura-stepper__text" }, /* @__PURE__ */ React57.createElement("span", { className: "aura-stepper__label" }, s.label, state === "done" ? /* @__PURE__ */ React57.createElement("span", { className: "aura-sr-only" }, ", " + t.stepDone) : null), s.description ? /* @__PURE__ */ React57.createElement("span", { className: "aura-stepper__desc" }, s.description) : null);
6256
6656
  const clickable = state === "done" && !!props.onStepClick;
6257
- return /* @__PURE__ */ React53.createElement(
6657
+ return /* @__PURE__ */ React57.createElement(
6258
6658
  "li",
6259
6659
  {
6260
6660
  key: s.id,
6261
6661
  className: cx("aura-stepper__item", "is-" + state),
6262
6662
  "aria-current": state === "current" ? "step" : void 0
6263
6663
  },
6264
- clickable ? /* @__PURE__ */ React53.createElement(
6664
+ clickable ? /* @__PURE__ */ React57.createElement(
6265
6665
  "button",
6266
6666
  {
6267
6667
  type: "button",
@@ -6272,19 +6672,19 @@ window.Aura = (() => {
6272
6672
  },
6273
6673
  marker,
6274
6674
  text
6275
- ) : /* @__PURE__ */ React53.createElement("span", { className: "aura-stepper__step" }, marker, text)
6675
+ ) : /* @__PURE__ */ React57.createElement("span", { className: "aura-stepper__step" }, marker, text)
6276
6676
  );
6277
6677
  })),
6278
- !vertical && cur ? /* @__PURE__ */ React53.createElement("p", { className: "aura-stepper__compact", "aria-hidden": true }, /* @__PURE__ */ React53.createElement("span", { className: "aura-stepper__count" }, t.stepOf(at + 1, steps.length)), /* @__PURE__ */ React53.createElement("span", { className: "aura-stepper__compact-label" }, cur.label)) : null
6678
+ !vertical && cur ? /* @__PURE__ */ React57.createElement("p", { className: "aura-stepper__compact", "aria-hidden": true }, /* @__PURE__ */ React57.createElement("span", { className: "aura-stepper__count" }, t.stepOf(at + 1, steps.length)), /* @__PURE__ */ React57.createElement("span", { className: "aura-stepper__compact-label" }, cur.label)) : null
6279
6679
  );
6280
6680
  });
6281
6681
 
6282
6682
  // src/SegmentedControl.tsx
6283
- var React54 = __toESM(require_react(), 1);
6683
+ var React58 = __toESM(require_react(), 1);
6284
6684
  function toOpt2(o) {
6285
6685
  return typeof o === "object" ? o : { value: o, label: o };
6286
6686
  }
6287
- var SegmentedControl = React54.forwardRef(
6687
+ var SegmentedControl = React58.forwardRef(
6288
6688
  function SegmentedControl2(props, ref) {
6289
6689
  const options = (props.options || []).map(toOpt2);
6290
6690
  const firstEnabled = options.filter(function(o) {
@@ -6297,7 +6697,7 @@ window.Aura = (() => {
6297
6697
  );
6298
6698
  const value = st[0], setValue = st[1];
6299
6699
  const auto = uid(), id = props.id || auto;
6300
- const refs = React54.useRef([]);
6700
+ const refs = React58.useRef([]);
6301
6701
  const selIdx = options.findIndex(function(o) {
6302
6702
  return o.value === value;
6303
6703
  });
@@ -6330,7 +6730,7 @@ window.Aura = (() => {
6330
6730
  move(options.length, -1);
6331
6731
  }
6332
6732
  }
6333
- return /* @__PURE__ */ React54.createElement(
6733
+ return /* @__PURE__ */ React58.createElement(
6334
6734
  "div",
6335
6735
  {
6336
6736
  ref,
@@ -6349,7 +6749,7 @@ window.Aura = (() => {
6349
6749
  options.map(function(o, i) {
6350
6750
  const on = o.value === value;
6351
6751
  const off = props.disabled || o.disabled;
6352
- return /* @__PURE__ */ React54.createElement(
6752
+ return /* @__PURE__ */ React58.createElement(
6353
6753
  "button",
6354
6754
  {
6355
6755
  key: o.value,
@@ -6371,8 +6771,8 @@ window.Aura = (() => {
6371
6771
  onKeyDown(e, i);
6372
6772
  }
6373
6773
  },
6374
- o.icon ? /* @__PURE__ */ React54.createElement(Icon, { name: o.icon }) : null,
6375
- o.iconOnly ? null : /* @__PURE__ */ React54.createElement("span", null, o.label)
6774
+ o.icon ? /* @__PURE__ */ React58.createElement(Icon, { name: o.icon }) : null,
6775
+ o.iconOnly ? null : /* @__PURE__ */ React58.createElement("span", null, o.label)
6376
6776
  );
6377
6777
  })
6378
6778
  );