@doneisbetter/gds-core 3.0.0 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server.js CHANGED
@@ -22,13 +22,18 @@ var server_exports = {};
22
22
  __export(server_exports, {
23
23
  AccentPanel: () => AccentPanel,
24
24
  AccessSummary: () => AccessSummary,
25
+ ActiveFilterChips: () => ActiveFilterChips,
25
26
  ArticleShell: () => ArticleShell,
27
+ AsyncSurface: () => AsyncSurface,
26
28
  AuthShell: () => AuthShell,
29
+ BannerNotice: () => BannerNotice,
27
30
  BrowseSurface: () => BrowseSurface,
31
+ BulkActionsBar: () => BulkActionsBar,
28
32
  ChartTokenPanel: () => ChartTokenPanel,
29
33
  ChoiceChip: () => ChoiceChip,
30
34
  ConsumerDashboardGrid: () => ConsumerDashboardGrid,
31
35
  ConsumerSection: () => ConsumerSection,
36
+ CountBadge: () => CountBadge,
32
37
  CtaButtonGroup: () => CtaButtonGroup,
33
38
  DataToolbar: () => DataToolbar,
34
39
  DetailProfileShell: () => DetailProfileShell,
@@ -41,13 +46,17 @@ __export(server_exports, {
41
46
  FilterDrawer: () => FilterDrawer,
42
47
  FoodMenuSection: () => FoodMenuSection,
43
48
  FormField: () => FormField,
49
+ GdsChart: () => GdsChart,
44
50
  GdsIcons: () => GdsIcons,
45
51
  GdsVocabulary: () => GdsVocabulary,
52
+ InlineAlert: () => InlineAlert,
53
+ LabelTag: () => LabelTag,
46
54
  ListingCard: () => ListingCard,
47
55
  MapPanel: () => MapPanel,
48
56
  MediaCard: () => MediaCard,
49
57
  MediaField: () => MediaField,
50
58
  MetricCard: () => MetricCard,
59
+ NotificationCenterView: () => NotificationCenterView,
51
60
  PROVIDER_IDENTITY_REGISTRY: () => PROVIDER_IDENTITY_REGISTRY,
52
61
  PageHeader: () => PageHeader,
53
62
  PeriodSelector: () => PeriodSelector,
@@ -68,9 +77,11 @@ __export(server_exports, {
68
77
  ReferenceLocaleNotice: () => ReferenceLocaleNotice,
69
78
  ReferenceSection: () => ReferenceSection,
70
79
  ReportingSection: () => ReportingSection,
80
+ ResultSummary: () => ResultSummary,
71
81
  SectionPanel: () => SectionPanel,
72
82
  SimpleDataTable: () => SimpleDataTable,
73
83
  SocialAuthButtons: () => SocialAuthButtons,
84
+ SortMenu: () => SortMenu,
74
85
  StateBlock: () => StateBlock,
75
86
  StatsSection: () => StatsSection,
76
87
  StatusBadge: () => StatusBadge,
@@ -80,6 +91,8 @@ __export(server_exports, {
80
91
  en: () => en,
81
92
  es: () => es,
82
93
  fr: () => fr,
94
+ gdsCardSizePaddingMap: () => gdsCardSizePaddingMap,
95
+ gdsCardTitleOrderMap: () => gdsCardTitleOrderMap,
83
96
  gdsLocales: () => gdsLocales,
84
97
  getGdsMessages: () => getGdsMessages,
85
98
  getProviderIdentityLabel: () => getProviderIdentityLabel,
@@ -92,6 +105,7 @@ __export(server_exports, {
92
105
  isPresentationMode: () => isPresentationMode,
93
106
  it: () => it,
94
107
  mergeGdsVocabularyPacks: () => mergeGdsVocabularyPacks,
108
+ renderGdsLayout: () => renderGdsLayout,
95
109
  resolveAccentPanelStyles: () => resolveAccentPanelStyles,
96
110
  resolveSemanticActionConfig: () => resolveSemanticActionConfig,
97
111
  resolveSurfacePresentationStyles: () => resolveSurfacePresentationStyles,
@@ -394,9 +408,24 @@ var statusColorMap = {
394
408
  info: "blue",
395
409
  neutral: "gray"
396
410
  };
411
+ var labelTagColorMap = {
412
+ neutral: "gray",
413
+ info: "blue",
414
+ warning: "yellow",
415
+ success: "green"
416
+ };
397
417
  function StatusBadge({ status, children, ...props }) {
398
418
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_core2.Badge, { color: statusColorMap[status], variant: "light", ...props, children });
399
419
  }
420
+ function LabelTag({ tone = "neutral", label, ...props }) {
421
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_core2.Badge, { color: labelTagColorMap[tone], variant: "outline", ...props, children: label });
422
+ }
423
+ function CountBadge({ value, cap = 99, srLabel, ...props }) {
424
+ const normalizedValue = Number.isFinite(value) ? Math.max(0, Math.floor(value)) : 0;
425
+ const normalizedCap = Math.max(1, Math.floor(cap));
426
+ const displayValue = normalizedValue > normalizedCap ? `${normalizedCap}+` : String(normalizedValue);
427
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_core2.Badge, { color: "violet", variant: "filled", "aria-label": srLabel, ...props, children: displayValue });
428
+ }
400
429
 
401
430
  // src/EmptyState.tsx
402
431
  var import_core3 = require("@mantine/core");
@@ -709,6 +738,24 @@ function ConsumerDashboardGrid({
709
738
 
710
739
  // src/ProductCard.tsx
711
740
  var import_core11 = require("@mantine/core");
741
+
742
+ // src/CardContracts.ts
743
+ var gdsCardSizePaddingMap = {
744
+ xs: "xs",
745
+ sm: "sm",
746
+ md: "md",
747
+ lg: "lg",
748
+ xl: "xl"
749
+ };
750
+ var gdsCardTitleOrderMap = {
751
+ xs: 6,
752
+ sm: 5,
753
+ md: 4,
754
+ lg: 4,
755
+ xl: 3
756
+ };
757
+
758
+ // src/ProductCard.tsx
712
759
  var import_jsx_runtime13 = require("react/jsx-runtime");
713
760
  function ProductCard({
714
761
  title,
@@ -719,16 +766,17 @@ function ProductCard({
719
766
  metadata = [],
720
767
  primaryAction,
721
768
  secondaryActions = [],
722
- footer
769
+ footer,
770
+ size = "md"
723
771
  }) {
724
772
  const MoreIcon = GdsIcons.Menu;
725
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_core11.Card, { withBorder: true, radius: "lg", padding: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_core11.Stack, { gap: "md", children: [
773
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_core11.Card, { withBorder: true, radius: "lg", padding: gdsCardSizePaddingMap[size], children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_core11.Stack, { gap: "md", children: [
726
774
  media,
727
775
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_core11.Group, { justify: "space-between", align: "flex-start", wrap: "nowrap", children: [
728
776
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_core11.Group, { align: "flex-start", gap: "sm", wrap: "nowrap", children: [
729
777
  icon ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_core11.ThemeIcon, { variant: "light", size: "xl", radius: "xl", "aria-hidden": true, children: icon }) : null,
730
778
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_core11.Stack, { gap: 4, children: [
731
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_core11.Title, { order: 4, children: title }),
779
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_core11.Title, { order: gdsCardTitleOrderMap[size], children: title }),
732
780
  description ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_core11.Text, { size: "sm", c: "dimmed", lineClamp: 3, children: description }) : null
733
781
  ] })
734
782
  ] }),
@@ -913,8 +961,11 @@ function PublicProductCard({
913
961
  secondaryAction,
914
962
  metadata = [],
915
963
  compact = false,
964
+ size = "md",
916
965
  loading = false,
917
- disabled = false
966
+ disabled = false,
967
+ interactiveMode = "none",
968
+ onSurfaceActivate
918
969
  }) {
919
970
  if (loading) {
920
971
  return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(LoadingCard, { compact });
@@ -930,11 +981,12 @@ function PublicProductCard({
930
981
  const pickupHelper = helperKind === "pickup" ? helperText : pickupNote;
931
982
  const inventoryHelper = helperKind === "inventory" ? helperText : inventoryNote;
932
983
  const hasSupportingRegion = Boolean(price || supportingHelper || pickupHelper || inventoryHelper);
933
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core13.Card, { withBorder: true, radius: "lg", padding: compact ? "md" : "lg", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core13.Stack, { gap: compact ? "sm" : "md", children: [
984
+ const interactiveProps = interactiveMode === "surface-button" ? { component: "button", type: "button", onClick: onSurfaceActivate } : {};
985
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core13.Card, { withBorder: true, radius: "lg", padding: compact ? "md" : gdsCardSizePaddingMap[size], ...interactiveProps, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core13.Stack, { gap: compact ? "sm" : "md", children: [
934
986
  image ?? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ImageFallback, { compact }),
935
987
  /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core13.Group, { justify: "space-between", align: "flex-start", wrap: "nowrap", gap: "sm", children: [
936
988
  /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core13.Stack, { gap: 4, style: { minWidth: 0, flex: 1 }, children: [
937
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core13.Title, { order: compact ? 5 : 4, lineClamp: 2, children: title }),
989
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core13.Title, { order: compact ? 5 : gdsCardTitleOrderMap[size], lineClamp: 2, children: title }),
938
990
  description ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core13.Text, { size: "sm", c: "dimmed", lineClamp: compact ? 2 : 3, children: description }) : null
939
991
  ] }),
940
992
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core13.Badge, { variant: "light", color: stateBadge.color, children: stateBadge.label })
@@ -1199,17 +1251,27 @@ function ListingCard({
1199
1251
  primaryAction,
1200
1252
  saveAction,
1201
1253
  shareAction,
1202
- compact = false
1254
+ compact = false,
1255
+ size = "md",
1256
+ interactiveMode = "none",
1257
+ revealContent,
1258
+ onSurfaceActivate,
1259
+ defaultFlipped = false
1203
1260
  }) {
1261
+ const cardPadding = compact ? "md" : gdsCardSizePaddingMap[size];
1204
1262
  const titleContent = href && typeof title === "string" ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core16.Text, { component: "a", href, inherit: true, td: "none", children: title }) : title;
1205
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core16.Card, { withBorder: true, radius: "lg", padding: compact ? "md" : "lg", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core16.Stack, { gap: compact ? "sm" : "md", children: [
1263
+ const interactiveProps = interactiveMode === "surface-link" && href ? { component: "a", href } : interactiveMode === "surface-button" ? { component: "button", type: "button", onClick: onSurfaceActivate } : {};
1264
+ if (interactiveMode === "flip" && defaultFlipped && revealContent) {
1265
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core16.Card, { withBorder: true, radius: "lg", padding: cardPadding, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core16.Stack, { gap: "sm", children: revealContent }) });
1266
+ }
1267
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core16.Card, { withBorder: true, radius: "lg", padding: cardPadding, ...interactiveProps, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core16.Stack, { gap: compact ? "sm" : "md", children: [
1206
1268
  image ?? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ListingImageFallback, { mediaRatio }),
1207
1269
  featured || sponsoredDisclosure ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core16.Group, { justify: "space-between", gap: "sm", wrap: "wrap", children: [
1208
1270
  featured ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core16.Badge, { variant: "light", color: "violet", children: "Featured" }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", {}),
1209
1271
  sponsoredDisclosure ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core16.Text, { size: "xs", c: "dimmed", children: sponsoredDisclosure }) : null
1210
1272
  ] }) : null,
1211
1273
  /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core16.Stack, { gap: 4, children: [
1212
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core16.Title, { order: compact ? 5 : 4, lineClamp: 2, children: titleContent }),
1274
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core16.Title, { order: compact ? 5 : gdsCardTitleOrderMap[size], lineClamp: 2, children: titleContent }),
1213
1275
  description ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core16.Text, { size: "sm", c: "dimmed", lineClamp: compact ? 2 : 3, children: description }) : null
1214
1276
  ] }),
1215
1277
  metadata.length ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core16.Stack, { gap: "xs", children: metadata.map((item) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core16.Group, { justify: "space-between", align: "flex-start", gap: "sm", wrap: "nowrap", children: [
@@ -1224,7 +1286,8 @@ function ListingCard({
1224
1286
  /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core16.Group, { gap: "xs", wrap: "nowrap", justify: "flex-end", style: { marginInlineStart: "auto" }, children: [
1225
1287
  saveAction ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ListingAffordance, { affordance: saveAction }) : null,
1226
1288
  shareAction ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ListingAffordance, { affordance: shareAction }) : null,
1227
- primaryAction
1289
+ primaryAction,
1290
+ interactiveMode === "flip" && revealContent ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core16.Text, { size: "xs", c: "dimmed", children: "Flip mode supports reveal surfaces." }) : null
1228
1291
  ] })
1229
1292
  ] })
1230
1293
  ] }) });
@@ -1465,20 +1528,209 @@ function DetailProfileShell({
1465
1528
  ] }) });
1466
1529
  }
1467
1530
 
1531
+ // src/AsyncSurface.tsx
1532
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1533
+ function getRetryAction(onRetry) {
1534
+ if (!onRetry) {
1535
+ return void 0;
1536
+ }
1537
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("button", { type: "button", onClick: onRetry, children: "Retry" });
1538
+ }
1539
+ function renderStateBlock({
1540
+ variant,
1541
+ title,
1542
+ description,
1543
+ compact,
1544
+ presentation,
1545
+ minHeight,
1546
+ contentAlign,
1547
+ contentJustify,
1548
+ action
1549
+ }) {
1550
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1551
+ StateBlock,
1552
+ {
1553
+ variant,
1554
+ title,
1555
+ description,
1556
+ action,
1557
+ compact,
1558
+ presentation,
1559
+ minHeight,
1560
+ contentAlign,
1561
+ contentJustify
1562
+ }
1563
+ );
1564
+ }
1565
+ function AsyncSurface({
1566
+ state,
1567
+ successContent,
1568
+ idleContent,
1569
+ loadingTitle = "Loading",
1570
+ loadingDescription = "This surface is still synchronizing.",
1571
+ emptyTitle = "No results",
1572
+ emptyDescription = "No data is available for this surface yet.",
1573
+ errorTitle = "Unable to load",
1574
+ errorDescription = "Something went wrong while preparing this surface.",
1575
+ refreshingTitle = "Refreshing",
1576
+ refreshingDescription = "The latest data is being fetched.",
1577
+ onRetry,
1578
+ retryAction,
1579
+ compact = false,
1580
+ presentation = "inline",
1581
+ minHeight,
1582
+ contentAlign,
1583
+ contentJustify
1584
+ }) {
1585
+ const fallbackRetryAction = retryAction ?? getRetryAction(onRetry);
1586
+ if (state === "success") {
1587
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, { children: successContent });
1588
+ }
1589
+ if (state === "idle") {
1590
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, { children: idleContent ?? successContent ?? null });
1591
+ }
1592
+ if (state === "loading") {
1593
+ return renderStateBlock({
1594
+ variant: "loading",
1595
+ title: loadingTitle,
1596
+ description: loadingDescription,
1597
+ compact,
1598
+ presentation,
1599
+ minHeight,
1600
+ contentAlign,
1601
+ contentJustify
1602
+ });
1603
+ }
1604
+ if (state === "empty") {
1605
+ return renderStateBlock({
1606
+ variant: "empty",
1607
+ title: emptyTitle,
1608
+ description: emptyDescription,
1609
+ compact,
1610
+ presentation,
1611
+ minHeight,
1612
+ contentAlign,
1613
+ contentJustify,
1614
+ action: fallbackRetryAction
1615
+ });
1616
+ }
1617
+ if (state === "error") {
1618
+ return renderStateBlock({
1619
+ variant: "error",
1620
+ title: errorTitle,
1621
+ description: errorDescription,
1622
+ compact,
1623
+ presentation,
1624
+ minHeight,
1625
+ contentAlign,
1626
+ contentJustify,
1627
+ action: fallbackRetryAction
1628
+ });
1629
+ }
1630
+ return renderStateBlock({
1631
+ variant: "info",
1632
+ title: refreshingTitle,
1633
+ description: refreshingDescription,
1634
+ compact,
1635
+ presentation,
1636
+ minHeight,
1637
+ contentAlign,
1638
+ contentJustify
1639
+ });
1640
+ }
1641
+
1642
+ // src/ListingPrimitives.tsx
1643
+ var import_core21 = require("@mantine/core");
1644
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1645
+ function ActiveFilterChips({
1646
+ filters,
1647
+ emptyLabel = "No active filters."
1648
+ }) {
1649
+ if (!filters.length) {
1650
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core21.Text, { size: "sm", c: "dimmed", children: emptyLabel });
1651
+ }
1652
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core21.Group, { gap: "xs", children: filters.map((filter) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1653
+ import_core21.Badge,
1654
+ {
1655
+ variant: "light",
1656
+ rightSection: filter.onRemove ? "\xD7" : void 0,
1657
+ style: filter.onRemove ? { cursor: "pointer" } : void 0,
1658
+ onClick: filter.onRemove,
1659
+ children: filter.label
1660
+ },
1661
+ filter.id
1662
+ )) });
1663
+ }
1664
+ function ResultSummary({
1665
+ resultCount,
1666
+ noun = "results",
1667
+ description
1668
+ }) {
1669
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_core21.Stack, { gap: 2, children: [
1670
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_core21.Text, { size: "sm", fw: 600, children: [
1671
+ resultCount,
1672
+ " ",
1673
+ noun
1674
+ ] }),
1675
+ description ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core21.Text, { size: "xs", c: "dimmed", children: description }) : null
1676
+ ] });
1677
+ }
1678
+ function SortMenu({
1679
+ value,
1680
+ options,
1681
+ onChange,
1682
+ label = "Sort"
1683
+ }) {
1684
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1685
+ import_core21.Select,
1686
+ {
1687
+ "aria-label": label,
1688
+ label,
1689
+ value,
1690
+ data: options,
1691
+ onChange: (next) => {
1692
+ if (next) {
1693
+ onChange?.(next);
1694
+ }
1695
+ },
1696
+ w: 220
1697
+ }
1698
+ );
1699
+ }
1700
+ function BulkActionsBar({
1701
+ selectedCount,
1702
+ actions,
1703
+ clearAction
1704
+ }) {
1705
+ if (selectedCount <= 0) {
1706
+ return null;
1707
+ }
1708
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_core21.Group, { justify: "space-between", align: "center", children: [
1709
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_core21.Text, { size: "sm", fw: 600, children: [
1710
+ selectedCount,
1711
+ " selected"
1712
+ ] }),
1713
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_core21.Group, { gap: "xs", children: [
1714
+ actions,
1715
+ clearAction ?? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core21.Button, { variant: "subtle", size: "xs", children: "Clear selection" })
1716
+ ] })
1717
+ ] });
1718
+ }
1719
+
1468
1720
  // src/PublicShell.tsx
1469
- var import_core22 = require("@mantine/core");
1721
+ var import_core23 = require("@mantine/core");
1470
1722
 
1471
1723
  // src/PublicNav.tsx
1472
- var import_core21 = require("@mantine/core");
1473
- var import_jsx_runtime23 = require("react/jsx-runtime");
1724
+ var import_core22 = require("@mantine/core");
1725
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1474
1726
  function PublicNav({ items, activeId, renderLink }) {
1475
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_core21.Group, { component: "nav", "aria-label": "Primary", gap: "lg", wrap: "nowrap", children: items.map((item) => {
1727
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_core22.Group, { component: "nav", "aria-label": "Primary", gap: "lg", wrap: "nowrap", children: items.map((item) => {
1476
1728
  const active = item.id === activeId;
1477
1729
  if (renderLink) {
1478
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { children: renderLink(item, active) }, item.id);
1730
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { children: renderLink(item, active) }, item.id);
1479
1731
  }
1480
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1481
- import_core21.Anchor,
1732
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1733
+ import_core22.Anchor,
1482
1734
  {
1483
1735
  href: item.href,
1484
1736
  "aria-current": active ? "page" : void 0,
@@ -1495,15 +1747,15 @@ function PublicNav({ items, activeId, renderLink }) {
1495
1747
  }
1496
1748
 
1497
1749
  // src/PublicShell.tsx
1498
- var import_jsx_runtime24 = require("react/jsx-runtime");
1750
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1499
1751
  function InlineMobileNavigation({
1500
1752
  mobileNavigation,
1501
1753
  className,
1502
1754
  mode
1503
1755
  }) {
1504
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_core22.Box, { component: "details", hiddenFrom: "sm", className, children: [
1505
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
1506
- import_core22.Box,
1756
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_core23.Box, { component: "details", hiddenFrom: "sm", className, children: [
1757
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
1758
+ import_core23.Box,
1507
1759
  {
1508
1760
  component: "summary",
1509
1761
  "aria-label": mode === "drawer" ? "Open site navigation drawer" : "Open site navigation",
@@ -1515,13 +1767,13 @@ function InlineMobileNavigation({
1515
1767
  gap: "0.5rem"
1516
1768
  },
1517
1769
  children: [
1518
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Burger, { opened: false, "aria-hidden": true }),
1519
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Text, { size: "sm", fw: 600, children: "Menu" })
1770
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Burger, { opened: false, "aria-hidden": true }),
1771
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Text, { size: "sm", fw: 600, children: "Menu" })
1520
1772
  ]
1521
1773
  }
1522
1774
  ),
1523
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1524
- import_core22.Box,
1775
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1776
+ import_core23.Box,
1525
1777
  {
1526
1778
  mt: "sm",
1527
1779
  p: "sm",
@@ -1530,7 +1782,7 @@ function InlineMobileNavigation({
1530
1782
  border: "1px solid var(--mantine-color-default-border)",
1531
1783
  background: mode === "drawer" ? "light-dark(var(--mantine-color-white), color-mix(in srgb, var(--mantine-color-dark-7) 92%, black))" : "var(--mantine-color-body)"
1532
1784
  },
1533
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Stack, { gap: "sm", children: mobileNavigation })
1785
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Stack, { gap: "sm", children: mobileNavigation })
1534
1786
  }
1535
1787
  )
1536
1788
  ] });
@@ -1551,30 +1803,30 @@ function PublicShell({
1551
1803
  mobileNavigationMode = "sheet",
1552
1804
  classNames
1553
1805
  }) {
1554
- const resolvedNavigation = navigation ?? (navItems ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(PublicNav, { items: navItems, activeId: activeNavId }) : null);
1806
+ const resolvedNavigation = navigation ?? (navItems ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(PublicNav, { items: navItems, activeId: activeNavId }) : null);
1555
1807
  const containerSize = maxContentWidth ?? (compact ? "md" : "lg");
1556
1808
  const headerHeight = headerVariant === "compact" ? 64 : headerVariant === "branded-quiet" ? 88 : 72;
1557
1809
  const mainPadding = headerVariant === "compact" ? "lg" : "xl";
1558
1810
  const usesInlineMobileNavigation = Boolean(mobileNavigation) && mobileNavigationMode !== "sheet";
1559
1811
  const usesSheetMobileNavigation = Boolean(mobileNavigation) && mobileNavigationMode === "sheet";
1560
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
1561
- import_core22.AppShell,
1812
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
1813
+ import_core23.AppShell,
1562
1814
  {
1563
1815
  className: classNames?.root,
1564
1816
  header: { height: headerHeight },
1565
1817
  footer: usesSheetMobileNavigation ? { height: 68 } : void 0,
1566
1818
  padding: 0,
1567
1819
  children: [
1568
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.AppShell.Header, { withBorder: headerBordered, className: classNames?.header, "data-header-variant": headerVariant, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Container, { size: containerSize, h: "100%", py: headerVariant === "branded-quiet" ? "sm" : 0, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
1569
- import_core22.Group,
1820
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.AppShell.Header, { withBorder: headerBordered, className: classNames?.header, "data-header-variant": headerVariant, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Container, { size: containerSize, h: "100%", py: headerVariant === "branded-quiet" ? "sm" : 0, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
1821
+ import_core23.Group,
1570
1822
  {
1571
1823
  h: "100%",
1572
1824
  justify: "space-between",
1573
1825
  wrap: "nowrap",
1574
1826
  gap: headerVariant === "compact" ? "sm" : "lg",
1575
1827
  children: [
1576
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_core22.Group, { wrap: "nowrap", gap: headerVariant === "compact" ? "xs" : "sm", className: classNames?.brand, children: [
1577
- usesInlineMobileNavigation ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1828
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_core23.Group, { wrap: "nowrap", gap: headerVariant === "compact" ? "xs" : "sm", className: classNames?.brand, children: [
1829
+ usesInlineMobileNavigation ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1578
1830
  InlineMobileNavigation,
1579
1831
  {
1580
1832
  mobileNavigation,
@@ -1582,17 +1834,17 @@ function PublicShell({
1582
1834
  mode: mobileNavigationMode
1583
1835
  }
1584
1836
  ) : null,
1585
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Box, { children: brand })
1837
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Box, { children: brand })
1586
1838
  ] }),
1587
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Group, { visibleFrom: "sm", gap: headerVariant === "compact" ? "md" : "lg", className: classNames?.navigation, children: resolvedNavigation }),
1588
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Group, { gap: "sm", className: classNames?.actions, children: actions })
1839
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Group, { visibleFrom: "sm", gap: headerVariant === "compact" ? "md" : "lg", className: classNames?.navigation, children: resolvedNavigation }),
1840
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Group, { gap: "sm", className: classNames?.actions, children: actions })
1589
1841
  ]
1590
1842
  }
1591
1843
  ) }) }),
1592
- usesSheetMobileNavigation ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.AppShell.Footer, { withBorder: true, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Container, { size: containerSize, h: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Group, { h: "100%", justify: "space-around", wrap: "nowrap", children: mobileNavigation }) }) }) : null,
1593
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_core22.AppShell.Main, { children: [
1594
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Container, { size: containerSize, py: mainPadding, className: classNames?.content, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Stack, { gap: "xl", children }) }),
1595
- footer ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Box, { component: typeof footer === "string" ? "footer" : "div", py: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Container, { size: containerSize, children: typeof footer === "string" ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core22.Text, { size: "sm", c: "dimmed", children: footer }) : footer }) }) : null
1844
+ usesSheetMobileNavigation ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.AppShell.Footer, { withBorder: true, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Container, { size: containerSize, h: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Group, { h: "100%", justify: "space-around", wrap: "nowrap", children: mobileNavigation }) }) }) : null,
1845
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_core23.AppShell.Main, { children: [
1846
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Container, { size: containerSize, py: mainPadding, className: classNames?.content, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Stack, { gap: "xl", children }) }),
1847
+ footer ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Box, { component: typeof footer === "string" ? "footer" : "div", py: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Container, { size: containerSize, children: typeof footer === "string" ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core23.Text, { size: "sm", c: "dimmed", children: footer }) : footer }) }) : null
1596
1848
  ] })
1597
1849
  ]
1598
1850
  }
@@ -1600,18 +1852,18 @@ function PublicShell({
1600
1852
  }
1601
1853
 
1602
1854
  // src/PublicSiteFooter.tsx
1603
- var import_core23 = require("@mantine/core");
1604
- var import_jsx_runtime25 = require("react/jsx-runtime");
1855
+ var import_core24 = require("@mantine/core");
1856
+ var import_jsx_runtime27 = require("react/jsx-runtime");
1605
1857
  function PublicSiteFooter({ children, meta }) {
1606
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_core23.Stack, { component: "footer", gap: "xs", children: [
1607
- children ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_core23.Text, { size: "sm", children }) : null,
1608
- meta ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_core23.Group, { gap: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_core23.Text, { size: "xs", c: "dimmed", children: meta }) }) : null
1858
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core24.Stack, { component: "footer", gap: "xs", children: [
1859
+ children ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core24.Text, { size: "sm", children }) : null,
1860
+ meta ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core24.Group, { gap: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core24.Text, { size: "xs", c: "dimmed", children: meta }) }) : null
1609
1861
  ] });
1610
1862
  }
1611
1863
 
1612
1864
  // src/PublicBrandFooter.tsx
1613
- var import_core24 = require("@mantine/core");
1614
- var import_jsx_runtime26 = require("react/jsx-runtime");
1865
+ var import_core25 = require("@mantine/core");
1866
+ var import_jsx_runtime28 = require("react/jsx-runtime");
1615
1867
  function PublicBrandFooter({
1616
1868
  media,
1617
1869
  brandTitle,
@@ -1626,8 +1878,8 @@ function PublicBrandFooter({
1626
1878
  const mediaSpan = layoutVariant === "immersive-media" ? 5 : 4;
1627
1879
  const primarySpan = media ? layoutVariant === "balanced-quote" ? 4 : 4 : secondary ? 6 : 12;
1628
1880
  const secondarySpan = media ? Math.max(3, 12 - mediaSpan - primarySpan) : Math.max(4, 12 - primarySpan);
1629
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1630
- import_core24.Paper,
1881
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1882
+ import_core25.Paper,
1631
1883
  {
1632
1884
  component: "footer",
1633
1885
  withBorder: true,
@@ -1635,19 +1887,19 @@ function PublicBrandFooter({
1635
1887
  p: compact ? "lg" : "xl",
1636
1888
  className: classNames?.root,
1637
1889
  "data-layout-variant": layoutVariant,
1638
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_core24.Stack, { gap: "lg", children: [
1639
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_core24.Grid, { gutter: compact ? "lg" : "xl", align: "flex-start", children: [
1640
- media ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core24.Grid.Col, { span: { base: 12, md: mediaSpan }, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core24.Box, { className: classNames?.media, children: media }) }) : null,
1641
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core24.Grid.Col, { span: { base: 12, md: primarySpan }, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_core24.Stack, { gap: compact ? "xs" : "sm", className: classNames?.primary, children: [
1642
- brandTitle ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core24.Title, { order: 4, children: brandTitle }) : null,
1643
- description ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core24.Text, { c: "dimmed", children: description }) : null,
1644
- actions ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core24.Box, { children: actions }) : null
1890
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_core25.Stack, { gap: "lg", children: [
1891
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_core25.Grid, { gutter: compact ? "lg" : "xl", align: "flex-start", children: [
1892
+ media ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core25.Grid.Col, { span: { base: 12, md: mediaSpan }, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core25.Box, { className: classNames?.media, children: media }) }) : null,
1893
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core25.Grid.Col, { span: { base: 12, md: primarySpan }, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_core25.Stack, { gap: compact ? "xs" : "sm", className: classNames?.primary, children: [
1894
+ brandTitle ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core25.Title, { order: 4, children: brandTitle }) : null,
1895
+ description ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core25.Text, { c: "dimmed", children: description }) : null,
1896
+ actions ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core25.Box, { children: actions }) : null
1645
1897
  ] }) }),
1646
- secondary ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core24.Grid.Col, { span: { base: 12, md: secondarySpan }, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core24.Stack, { gap: compact ? "xs" : "sm", className: classNames?.secondary, children: secondary }) }) : null
1898
+ secondary ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core25.Grid.Col, { span: { base: 12, md: secondarySpan }, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core25.Stack, { gap: compact ? "xs" : "sm", className: classNames?.secondary, children: secondary }) }) : null
1647
1899
  ] }),
1648
- legal ? /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
1649
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core24.Divider, {}),
1650
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core24.Group, { justify: "space-between", gap: "sm", wrap: "wrap", className: classNames?.legal, children: typeof legal === "string" ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core24.Text, { size: "sm", c: "dimmed", children: legal }) : legal })
1900
+ legal ? /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_jsx_runtime28.Fragment, { children: [
1901
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core25.Divider, {}),
1902
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core25.Group, { justify: "space-between", gap: "sm", wrap: "wrap", className: classNames?.legal, children: typeof legal === "string" ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core25.Text, { size: "sm", c: "dimmed", children: legal }) : legal })
1651
1903
  ] }) : null
1652
1904
  ] })
1653
1905
  }
@@ -1655,8 +1907,8 @@ function PublicBrandFooter({
1655
1907
  }
1656
1908
 
1657
1909
  // src/AuthShell.tsx
1658
- var import_core25 = require("@mantine/core");
1659
- var import_jsx_runtime27 = require("react/jsx-runtime");
1910
+ var import_core26 = require("@mantine/core");
1911
+ var import_jsx_runtime29 = require("react/jsx-runtime");
1660
1912
  function AuthShell({
1661
1913
  title,
1662
1914
  description,
@@ -1672,37 +1924,37 @@ function AuthShell({
1672
1924
  dividerLabel = "Or continue with your account",
1673
1925
  children
1674
1926
  }) {
1675
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Box, { py: { base: "xl", md: "4rem" }, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Container, { size: "xs", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core25.Stack, { gap: "xl", children: [
1676
- brand || headerActions ? /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core25.Group, { justify: brand && headerActions ? "space-between" : "center", align: "center", children: [
1677
- brand ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Box, { children: brand }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Box, {}),
1678
- headerActions ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Group, { gap: "sm", children: headerActions }) : null
1927
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Box, { py: { base: "xl", md: "4rem" }, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Container, { size: "xs", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core26.Stack, { gap: "xl", children: [
1928
+ brand || headerActions ? /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core26.Group, { justify: brand && headerActions ? "space-between" : "center", align: "center", children: [
1929
+ brand ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Box, { children: brand }) : /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Box, {}),
1930
+ headerActions ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Group, { gap: "sm", children: headerActions }) : null
1679
1931
  ] }) : null,
1680
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Card, { withBorder: true, radius: "lg", padding: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core25.Stack, { gap: "lg", children: [
1681
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core25.Stack, { gap: "xs", ta: "center", children: [
1682
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Group, { justify: "center", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Badge, { variant: "light", color: intent === "account-linking" ? "blue" : intent === "guest-entry" ? "gray" : "teal", children: intent.replace("-", " ") }) }),
1683
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Title, { order: 2, children: title }),
1684
- description ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Text, { c: "dimmed", size: "sm", children: description }) : null
1932
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Card, { withBorder: true, radius: "lg", padding: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core26.Stack, { gap: "lg", children: [
1933
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core26.Stack, { gap: "xs", ta: "center", children: [
1934
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Group, { justify: "center", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Badge, { variant: "light", color: intent === "account-linking" ? "blue" : intent === "guest-entry" ? "gray" : "teal", children: intent.replace("-", " ") }) }),
1935
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Title, { order: 2, children: title }),
1936
+ description ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Text, { c: "dimmed", size: "sm", children: description }) : null
1685
1937
  ] }),
1686
- error ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Alert, { color: "red", variant: "light", role: "alert", children: error }) : null,
1687
- socialAuth ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Box, { children: socialAuth }) : null,
1688
- socialAuth ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Divider, { label: dividerLabel, labelPosition: "center" }) : null,
1938
+ error ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Alert, { color: "red", variant: "light", role: "alert", children: error }) : null,
1939
+ socialAuth ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Box, { children: socialAuth }) : null,
1940
+ socialAuth ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Divider, { label: dividerLabel, labelPosition: "center" }) : null,
1689
1941
  children,
1690
- guestAction || supportAction ? /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core25.Group, { justify: "center", gap: "sm", children: [
1942
+ guestAction || supportAction ? /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core26.Group, { justify: "center", gap: "sm", children: [
1691
1943
  guestAction,
1692
1944
  supportAction
1693
1945
  ] }) : null,
1694
- helper ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Text, { size: "sm", c: "dimmed", ta: "center", children: helper }) : null
1946
+ helper ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Text, { size: "sm", c: "dimmed", ta: "center", children: helper }) : null
1695
1947
  ] }) }),
1696
- footer ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Text, { size: "sm", c: "dimmed", ta: "center", children: footer }) : null
1948
+ footer ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core26.Text, { size: "sm", c: "dimmed", ta: "center", children: footer }) : null
1697
1949
  ] }) }) });
1698
1950
  }
1699
1951
 
1700
1952
  // src/SocialAuthButtons.tsx
1701
- var import_core27 = require("@mantine/core");
1953
+ var import_core28 = require("@mantine/core");
1702
1954
 
1703
1955
  // src/ProviderIdentityButtons.tsx
1704
- var import_core26 = require("@mantine/core");
1705
- var import_jsx_runtime28 = require("react/jsx-runtime");
1956
+ var import_core27 = require("@mantine/core");
1957
+ var import_jsx_runtime30 = require("react/jsx-runtime");
1706
1958
  var PROVIDER_IDENTITY_REGISTRY = {
1707
1959
  google: {
1708
1960
  providerLabel: "Google",
@@ -1808,15 +2060,15 @@ function getProviderIdentityPolicy(provider) {
1808
2060
  }
1809
2061
  function ProviderIdentityMark({ provider }) {
1810
2062
  const meta = getProviderIdentityMeta(provider);
1811
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1812
- import_core26.ThemeIcon,
2063
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2064
+ import_core27.ThemeIcon,
1813
2065
  {
1814
2066
  variant: "light",
1815
2067
  color: meta.brandColor,
1816
2068
  radius: "xl",
1817
2069
  size: "md",
1818
2070
  "aria-hidden": "true",
1819
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Text, { size: "xs", fw: 700, c: "inherit", children: meta.markLabel })
2071
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core27.Text, { size: "xs", fw: 700, c: "inherit", children: meta.markLabel })
1820
2072
  }
1821
2073
  );
1822
2074
  }
@@ -1847,8 +2099,8 @@ function ProviderIdentityButton({
1847
2099
  } : {
1848
2100
  onClick
1849
2101
  };
1850
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1851
- import_core26.Button,
2102
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2103
+ import_core27.Button,
1852
2104
  {
1853
2105
  variant: mapVariant(variant),
1854
2106
  color: variant === "solid" ? meta.brandColor : void 0,
@@ -1857,17 +2109,17 @@ function ProviderIdentityButton({
1857
2109
  size,
1858
2110
  "aria-label": ariaLabel ?? (typeof buttonLabel === "string" ? buttonLabel : void 0),
1859
2111
  "aria-describedby": describedBy,
1860
- leftSection: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ProviderIdentityMark, { provider }),
2112
+ leftSection: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(ProviderIdentityMark, { provider }),
1861
2113
  disabled: resolvedDisabled,
1862
2114
  loading,
1863
2115
  styles: { root: { minHeight: minTouchTargetPx } },
1864
2116
  ...buttonProps,
1865
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_core26.Stack, { gap: 0, align: "flex-start", children: [
1866
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Text, { inherit: true, children: buttonLabel }),
1867
- description ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Text, { size: "xs", c: "dimmed", lh: 1.2, children: description }) : null,
1868
- policyNote ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Text, { size: "xs", c: "dimmed", lh: 1.2, children: policyNote }) : null,
1869
- tenantDisabledReason ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Text, { size: "xs", c: "orange.7", lh: 1.2, children: tenantDisabledReason }) : null,
1870
- error ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Text, { size: "xs", c: "red.7", lh: 1.2, role: "alert", children: error }) : null
2117
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_core27.Stack, { gap: 0, align: "flex-start", children: [
2118
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core27.Text, { inherit: true, children: buttonLabel }),
2119
+ description ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core27.Text, { size: "xs", c: "dimmed", lh: 1.2, children: description }) : null,
2120
+ policyNote ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core27.Text, { size: "xs", c: "dimmed", lh: 1.2, children: policyNote }) : null,
2121
+ tenantDisabledReason ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core27.Text, { size: "xs", c: "orange.7", lh: 1.2, children: tenantDisabledReason }) : null,
2122
+ error ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core27.Text, { size: "xs", c: "red.7", lh: 1.2, role: "alert", children: error }) : null
1871
2123
  ] })
1872
2124
  }
1873
2125
  );
@@ -1878,16 +2130,16 @@ function ProviderIdentityButtonGroup({ providers, layout = "stack" }) {
1878
2130
  }
1879
2131
  const content = providers.map((entry, index) => {
1880
2132
  const key = `${normalizeProviderId(String(entry.provider)) || "provider"}-${index}`;
1881
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ProviderIdentityButton, { ...entry }, key);
2133
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(ProviderIdentityButton, { ...entry }, key);
1882
2134
  });
1883
2135
  if (layout === "grid") {
1884
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: content });
2136
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core27.SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: content });
1885
2137
  }
1886
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Stack, { gap: "sm", children: content });
2138
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core27.Stack, { gap: "sm", children: content });
1887
2139
  }
1888
2140
 
1889
2141
  // src/SocialAuthButtons.tsx
1890
- var import_jsx_runtime29 = require("react/jsx-runtime");
2142
+ var import_jsx_runtime31 = require("react/jsx-runtime");
1891
2143
  function SocialAuthButtons({
1892
2144
  providers,
1893
2145
  title = "Continue with a trusted provider",
@@ -1912,53 +2164,53 @@ function SocialAuthButtons({
1912
2164
  size: provider.size ?? (compact ? "sm" : "md"),
1913
2165
  variant: provider.variant
1914
2166
  }));
1915
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core27.Stack, { gap: "md", children: [
1916
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core27.Stack, { gap: 4, ta: "center", children: [
1917
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core27.Group, { justify: "center", gap: "xs", children: [
1918
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(GdsIcons.Login, { size: "1rem" }),
1919
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core27.Text, { fw: 600, children: title })
2167
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core28.Stack, { gap: "md", children: [
2168
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core28.Stack, { gap: 4, ta: "center", children: [
2169
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core28.Group, { justify: "center", gap: "xs", children: [
2170
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(GdsIcons.Login, { size: "1rem" }),
2171
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core28.Text, { fw: 600, children: title })
1920
2172
  ] }),
1921
- description ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core27.Text, { size: "sm", c: "dimmed", children: description }) : null
2173
+ description ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core28.Text, { size: "sm", c: "dimmed", children: description }) : null
1922
2174
  ] }),
1923
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core27.Divider, {}),
1924
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(ProviderIdentityButtonGroup, { providers: buttons, layout })
2175
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core28.Divider, {}),
2176
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ProviderIdentityButtonGroup, { providers: buttons, layout })
1925
2177
  ] });
1926
2178
  }
1927
2179
 
1928
2180
  // src/ArticleShell.tsx
1929
- var import_core28 = require("@mantine/core");
1930
- var import_jsx_runtime30 = require("react/jsx-runtime");
2181
+ var import_core29 = require("@mantine/core");
2182
+ var import_jsx_runtime32 = require("react/jsx-runtime");
1931
2183
  function ArticleShell({ eyebrow, title, lead, meta, sideRail, children }) {
1932
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Container, { size: "lg", py: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_core28.Group, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
1933
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_core28.Stack, { gap: "lg", maw: 760, flex: 1, children: [
1934
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_core28.Stack, { gap: "sm", children: [
1935
- eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Text, { size: "sm", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
1936
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Title, { order: 1, children: title }),
1937
- lead ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Text, { size: "lg", c: "dimmed", children: lead }) : null,
1938
- meta ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Group, { gap: "md", children: meta }) : null
2184
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Container, { size: "lg", py: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Group, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
2185
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Stack, { gap: "lg", maw: 760, flex: 1, children: [
2186
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Stack, { gap: "sm", children: [
2187
+ eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Text, { size: "sm", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
2188
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Title, { order: 1, children: title }),
2189
+ lead ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Text, { size: "lg", c: "dimmed", children: lead }) : null,
2190
+ meta ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Group, { gap: "md", children: meta }) : null
1939
2191
  ] }),
1940
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Stack, { gap: "md", children })
2192
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Stack, { gap: "md", children })
1941
2193
  ] }),
1942
- sideRail ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Stack, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
2194
+ sideRail ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Stack, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
1943
2195
  ] }) });
1944
2196
  }
1945
2197
 
1946
2198
  // src/CtaButtonGroup.tsx
1947
- var import_core29 = require("@mantine/core");
1948
- var import_jsx_runtime31 = require("react/jsx-runtime");
2199
+ var import_core30 = require("@mantine/core");
2200
+ var import_jsx_runtime33 = require("react/jsx-runtime");
1949
2201
  function CtaButtonGroup({ primary, secondary, tertiary }) {
1950
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Stack, { gap: "sm", children: [
1951
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Group, { gap: "sm", align: "stretch", children: [
1952
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { children: primary }),
1953
- secondary ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { children: secondary }) : null
2202
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.Stack, { gap: "sm", children: [
2203
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.Group, { gap: "sm", align: "stretch", children: [
2204
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { children: primary }),
2205
+ secondary ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { children: secondary }) : null
1954
2206
  ] }),
1955
- tertiary ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { children: tertiary }) : null
2207
+ tertiary ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { children: tertiary }) : null
1956
2208
  ] });
1957
2209
  }
1958
2210
 
1959
2211
  // src/DocsPageShell.tsx
1960
- var import_core30 = require("@mantine/core");
1961
- var import_jsx_runtime32 = require("react/jsx-runtime");
2212
+ var import_core31 = require("@mantine/core");
2213
+ var import_jsx_runtime34 = require("react/jsx-runtime");
1962
2214
  function DocsPageShell({
1963
2215
  breadcrumbs = [],
1964
2216
  title,
@@ -1969,27 +2221,27 @@ function DocsPageShell({
1969
2221
  footerNext,
1970
2222
  children
1971
2223
  }) {
1972
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Container, { fluid: true, py: "xl", px: { base: "md", md: "lg", lg: "xl" }, w: "100%", maw: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.Group, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
1973
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.Stack, { component: "article", gap: "lg", flex: 1, miw: 0, children: [
1974
- breadcrumbs.length ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Breadcrumbs, { children: breadcrumbs.map(
1975
- (crumb) => crumb.href ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Anchor, { href: crumb.href, children: crumb.label }, `${crumb.label}-${crumb.href}`) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Text, { children: crumb.label }, crumb.label)
2224
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core31.Container, { fluid: true, py: "xl", px: { base: "md", md: "lg", lg: "xl" }, w: "100%", maw: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core31.Group, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
2225
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core31.Stack, { component: "article", gap: "lg", flex: 1, miw: 0, children: [
2226
+ breadcrumbs.length ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core31.Breadcrumbs, { children: breadcrumbs.map(
2227
+ (crumb) => crumb.href ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core31.Anchor, { href: crumb.href, children: crumb.label }, `${crumb.label}-${crumb.href}`) : /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core31.Text, { children: crumb.label }, crumb.label)
1976
2228
  ) }) : null,
1977
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.Stack, { gap: "sm", children: [
1978
- eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Text, { size: "sm", fw: 700, c: "dimmed", children: eyebrow }) : null,
1979
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Title, { order: 1, children: title }),
1980
- lead ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Text, { size: "lg", c: "dimmed", children: lead }) : null,
1981
- meta ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Group, { gap: "md", children: meta }) : null
2229
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core31.Stack, { gap: "sm", children: [
2230
+ eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core31.Text, { size: "sm", fw: 700, c: "dimmed", children: eyebrow }) : null,
2231
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core31.Title, { order: 1, children: title }),
2232
+ lead ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core31.Text, { size: "lg", c: "dimmed", children: lead }) : null,
2233
+ meta ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core31.Group, { gap: "md", children: meta }) : null
1982
2234
  ] }),
1983
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Stack, { gap: "md", children }),
1984
- footerNext ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Anchor, { href: footerNext.href, fw: 600, children: footerNext.label }) : null
2235
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core31.Stack, { gap: "md", children }),
2236
+ footerNext ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core31.Anchor, { href: footerNext.href, fw: 600, children: footerNext.label }) : null
1985
2237
  ] }),
1986
- sideRail ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Stack, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
2238
+ sideRail ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core31.Stack, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
1987
2239
  ] }) });
1988
2240
  }
1989
2241
 
1990
2242
  // src/EditorialHero.tsx
1991
- var import_core31 = require("@mantine/core");
1992
- var import_jsx_runtime33 = require("react/jsx-runtime");
2243
+ var import_core32 = require("@mantine/core");
2244
+ var import_jsx_runtime35 = require("react/jsx-runtime");
1993
2245
  function resolveActionVariant(action, index, seenPrimary) {
1994
2246
  const requested = action.variant ?? (index === 0 ? "primary" : "secondary");
1995
2247
  if (requested === "primary" && !seenPrimary) {
@@ -2001,8 +2253,8 @@ function resolveActionVariant(action, index, seenPrimary) {
2001
2253
  return { variant: "default", seenPrimary };
2002
2254
  }
2003
2255
  function HeroAction({ action, variant }) {
2004
- const content = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2005
- import_core31.Anchor,
2256
+ const content = /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2257
+ import_core32.Anchor,
2006
2258
  {
2007
2259
  href: action.href,
2008
2260
  onClick: action.onClick,
@@ -2026,8 +2278,8 @@ function HeroAction({ action, variant }) {
2026
2278
  }
2027
2279
  );
2028
2280
  if (!action.href) {
2029
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2030
- import_core31.Box,
2281
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2282
+ import_core32.Box,
2031
2283
  {
2032
2284
  component: "button",
2033
2285
  type: "button",
@@ -2054,30 +2306,30 @@ function HeroAction({ action, variant }) {
2054
2306
  return content;
2055
2307
  }
2056
2308
  function LoadingHero({ compact }) {
2057
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Paper, { withBorder: true, radius: "xl", p: compact ? "lg" : "xl", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Grid, { gutter: compact ? "lg" : "xl", align: "center", children: [
2058
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Stack, { gap: "md", children: [
2059
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { height: 16, width: 96, radius: "xl" }),
2060
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { height: 48, width: "90%", radius: "md" }),
2061
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { height: 18, width: "100%", radius: "md" }),
2062
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { height: 18, width: "82%", radius: "md" }),
2063
- /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Group, { children: [
2064
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { height: 40, width: 140, radius: "md" }),
2065
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { height: 40, width: 140, radius: "md" })
2309
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Paper, { withBorder: true, radius: "xl", p: compact ? "lg" : "xl", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core32.Grid, { gutter: compact ? "lg" : "xl", align: "center", children: [
2310
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core32.Stack, { gap: "md", children: [
2311
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Skeleton, { height: 16, width: 96, radius: "xl" }),
2312
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Skeleton, { height: 48, width: "90%", radius: "md" }),
2313
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Skeleton, { height: 18, width: "100%", radius: "md" }),
2314
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Skeleton, { height: 18, width: "82%", radius: "md" }),
2315
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core32.Group, { children: [
2316
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Skeleton, { height: 40, width: 140, radius: "md" }),
2317
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Skeleton, { height: 40, width: 140, radius: "md" })
2066
2318
  ] })
2067
2319
  ] }) }),
2068
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.AspectRatio, { ratio: 16 / 11, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { radius: "lg" }) }) })
2320
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.AspectRatio, { ratio: 16 / 11, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Skeleton, { radius: "lg" }) }) })
2069
2321
  ] }) });
2070
2322
  }
2071
2323
  function MediaFallback() {
2072
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.AspectRatio, { ratio: 16 / 11, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2073
- import_core31.ThemeIcon,
2324
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.AspectRatio, { ratio: 16 / 11, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2325
+ import_core32.ThemeIcon,
2074
2326
  {
2075
2327
  size: "100%",
2076
2328
  radius: "lg",
2077
2329
  color: "gray",
2078
2330
  variant: "light",
2079
2331
  "aria-label": "Hero media is unavailable",
2080
- children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GdsIcons.Gallery, { size: "2.5rem" })
2332
+ children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(GdsIcons.Gallery, { size: "2.5rem" })
2081
2333
  }
2082
2334
  ) });
2083
2335
  }
@@ -2097,8 +2349,8 @@ function MediaFrame({
2097
2349
  } else if (mediaFade === "soft-start") {
2098
2350
  overlayBackground = "linear-gradient(90deg, light-dark(rgba(255,255,255,0.9), rgba(17,24,39,0.72)) 0%, rgba(255,255,255,0) 28%)";
2099
2351
  }
2100
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2101
- import_core31.Box,
2352
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
2353
+ import_core32.Box,
2102
2354
  {
2103
2355
  component: "figure",
2104
2356
  m: 0,
@@ -2111,9 +2363,9 @@ function MediaFrame({
2111
2363
  },
2112
2364
  "aria-label": mediaAlt,
2113
2365
  children: [
2114
- media ?? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(MediaFallback, {}),
2115
- media && overlayBackground ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2116
- import_core31.Box,
2366
+ media ?? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(MediaFallback, {}),
2367
+ media && overlayBackground ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2368
+ import_core32.Box,
2117
2369
  {
2118
2370
  "aria-hidden": true,
2119
2371
  style: {
@@ -2146,7 +2398,7 @@ function EditorialHero({
2146
2398
  classNames
2147
2399
  }) {
2148
2400
  if (loading) {
2149
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(LoadingHero, { compact });
2401
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(LoadingHero, { compact });
2150
2402
  }
2151
2403
  const stackAlign = align === "center" ? "center" : "flex-start";
2152
2404
  const textAlign = align === "center" ? "center" : "left";
@@ -2154,15 +2406,15 @@ function EditorialHero({
2154
2406
  const renderedActions = actions.slice(0, 3).map((action, index) => {
2155
2407
  const resolved = resolveActionVariant(action, index, seenPrimary);
2156
2408
  seenPrimary = resolved.seenPrimary;
2157
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(HeroAction, { action, variant: resolved.variant }, `${action.label}-${index}`);
2409
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(HeroAction, { action, variant: resolved.variant }, `${action.label}-${index}`);
2158
2410
  });
2159
- const textSlot = /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Stack, { gap: compact ? "md" : "lg", justify: "center", h: "100%", className: classNames?.content, children: [
2160
- /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Stack, { gap: "sm", align: stackAlign, children: [
2161
- eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Text, { size: "sm", fw: 700, c: "dimmed", ta: textAlign, children: eyebrow }) : null,
2162
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Title, { order: 1, maw: 760, ta: textAlign, children: title }),
2163
- description ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Text, { size: compact ? "md" : "lg", c: "dimmed", maw: 720, ta: textAlign, children: description }) : null
2411
+ const textSlot = /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core32.Stack, { gap: compact ? "md" : "lg", justify: "center", h: "100%", className: classNames?.content, children: [
2412
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core32.Stack, { gap: "sm", align: stackAlign, children: [
2413
+ eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Text, { size: "sm", fw: 700, c: "dimmed", ta: textAlign, children: eyebrow }) : null,
2414
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Title, { order: 1, maw: 760, ta: textAlign, children: title }),
2415
+ description ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Text, { size: compact ? "md" : "lg", c: "dimmed", maw: 720, ta: textAlign, children: description }) : null
2164
2416
  ] }),
2165
- renderedActions.length ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Box, { className: classNames?.actions, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2417
+ renderedActions.length ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Box, { className: classNames?.actions, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2166
2418
  CtaButtonGroup,
2167
2419
  {
2168
2420
  primary: renderedActions[0],
@@ -2170,8 +2422,8 @@ function EditorialHero({
2170
2422
  tertiary: renderedActions[2]
2171
2423
  }
2172
2424
  ) }) : null,
2173
- meta.length ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Group, { gap: "sm", wrap: "wrap", "aria-label": "Supporting details", className: classNames?.meta, children: meta.map((item) => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2174
- import_core31.Group,
2425
+ meta.length ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Group, { gap: "sm", wrap: "wrap", "aria-label": "Supporting details", className: classNames?.meta, children: meta.map((item) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
2426
+ import_core32.Group,
2175
2427
  {
2176
2428
  gap: 6,
2177
2429
  px: "sm",
@@ -2182,17 +2434,17 @@ function EditorialHero({
2182
2434
  },
2183
2435
  children: [
2184
2436
  item.icon,
2185
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Text, { size: "sm", c: "dimmed", children: item.label })
2437
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Text, { size: "sm", c: "dimmed", children: item.label })
2186
2438
  ]
2187
2439
  },
2188
2440
  item.id
2189
2441
  )) }) : null
2190
2442
  ] });
2191
- const mediaSlot = error ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(AccentPanel, { tone: "red", variant: "soft-outline", title: "Media unavailable", children: error }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(MediaFrame, { media, mediaAlt, mediaFade, className: classNames?.media });
2192
- const textCol = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Grid.Col, { span: { base: 12, md: 6 }, order: { base: 1, md: mediaPosition === "left" ? 2 : 1 }, children: textSlot });
2193
- const mediaCol = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Grid.Col, { span: { base: 12, md: 6 }, order: { base: 2, md: mediaPosition === "left" ? 1 : 2 }, children: mediaSlot });
2194
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2195
- import_core31.Paper,
2443
+ const mediaSlot = error ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(AccentPanel, { tone: "red", variant: "soft-outline", title: "Media unavailable", children: error }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(MediaFrame, { media, mediaAlt, mediaFade, className: classNames?.media });
2444
+ const textCol = /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Grid.Col, { span: { base: 12, md: 6 }, order: { base: 1, md: mediaPosition === "left" ? 2 : 1 }, children: textSlot });
2445
+ const mediaCol = /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Grid.Col, { span: { base: 12, md: 6 }, order: { base: 2, md: mediaPosition === "left" ? 1 : 2 }, children: mediaSlot });
2446
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2447
+ import_core32.Paper,
2196
2448
  {
2197
2449
  component: "section",
2198
2450
  withBorder: true,
@@ -2200,7 +2452,7 @@ function EditorialHero({
2200
2452
  p: compact ? "lg" : "xl",
2201
2453
  className: classNames?.root,
2202
2454
  style: surfaceVariant === "flat-public" ? { boxShadow: "none" } : void 0,
2203
- children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Grid, { gutter: compact ? "lg" : "xl", align: "center", children: [
2455
+ children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core32.Grid, { gutter: compact ? "lg" : "xl", align: "center", children: [
2204
2456
  textCol,
2205
2457
  mediaCol
2206
2458
  ] })
@@ -2209,19 +2461,19 @@ function EditorialHero({
2209
2461
  }
2210
2462
 
2211
2463
  // src/FeatureBand.tsx
2212
- var import_core32 = require("@mantine/core");
2213
- var import_jsx_runtime34 = require("react/jsx-runtime");
2464
+ var import_core33 = require("@mantine/core");
2465
+ var import_jsx_runtime36 = require("react/jsx-runtime");
2214
2466
  function FeatureBandSkeleton({
2215
2467
  columns = 3,
2216
2468
  bordered = true,
2217
2469
  variant = "default"
2218
2470
  }) {
2219
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.SimpleGrid, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: Array.from({ length: columns }).map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Paper, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core32.Stack, { gap: "md", children: [
2220
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Skeleton, { height: variant === "process" ? 28 : 42, width: variant === "process" ? 72 : 42, radius: "xl" }),
2221
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core32.Stack, { gap: "xs", children: [
2222
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Skeleton, { height: 20, width: "75%", radius: "md" }),
2223
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Skeleton, { height: 14, width: "100%", radius: "md" }),
2224
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Skeleton, { height: 14, width: "82%", radius: "md" })
2471
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.SimpleGrid, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: Array.from({ length: columns }).map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.Paper, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core33.Stack, { gap: "md", children: [
2472
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.Skeleton, { height: variant === "process" ? 28 : 42, width: variant === "process" ? 72 : 42, radius: "xl" }),
2473
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core33.Stack, { gap: "xs", children: [
2474
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.Skeleton, { height: 20, width: "75%", radius: "md" }),
2475
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.Skeleton, { height: 14, width: "100%", radius: "md" }),
2476
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.Skeleton, { height: 14, width: "82%", radius: "md" })
2225
2477
  ] })
2226
2478
  ] }) }, index)) });
2227
2479
  }
@@ -2234,10 +2486,10 @@ function FeatureBand({
2234
2486
  variant = "default"
2235
2487
  }) {
2236
2488
  if (loading) {
2237
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(FeatureBandSkeleton, { columns, bordered, variant });
2489
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(FeatureBandSkeleton, { columns, bordered, variant });
2238
2490
  }
2239
2491
  if (!items.length) {
2240
- return emptyState ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_jsx_runtime34.Fragment, { children: emptyState }) : /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2492
+ return emptyState ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_jsx_runtime36.Fragment, { children: emptyState }) : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2241
2493
  EmptyState,
2242
2494
  {
2243
2495
  title: "No supporting details available",
@@ -2245,9 +2497,9 @@ function FeatureBand({
2245
2497
  }
2246
2498
  );
2247
2499
  }
2248
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Box, { component: "section", "aria-label": "Supporting features", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.SimpleGrid, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Paper, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core32.Stack, { gap: "md", children: [
2249
- variant === "process" ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2250
- import_core32.Text,
2500
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.Box, { component: "section", "aria-label": "Supporting features", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.SimpleGrid, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.Paper, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core33.Stack, { gap: "md", children: [
2501
+ variant === "process" ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2502
+ import_core33.Text,
2251
2503
  {
2252
2504
  fw: 800,
2253
2505
  size: "sm",
@@ -2259,31 +2511,31 @@ function FeatureBand({
2259
2511
  },
2260
2512
  children: item.stepLabel ?? `Step ${index + 1}`
2261
2513
  }
2262
- ) }) : item.media ? item.media : item.icon ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.ThemeIcon, { size: "xl", radius: "xl", variant: "light", color: "violet", children: item.icon }) }) : /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.ThemeIcon, { size: "xl", radius: "xl", variant: "light", color: "gray", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(GdsIcons.Info, { size: "1.25rem" }) }) }),
2263
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core32.Stack, { gap: "xs", children: [
2264
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Title, { order: 4, children: item.title }),
2265
- item.description ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Text, { c: "dimmed", children: item.description }) : null,
2266
- item.meta ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Text, { size: "sm", c: "dimmed", children: item.meta }) : null
2514
+ ) }) : item.media ? item.media : item.icon ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.ThemeIcon, { size: "xl", radius: "xl", variant: "light", color: "violet", children: item.icon }) }) : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.ThemeIcon, { size: "xl", radius: "xl", variant: "light", color: "gray", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(GdsIcons.Info, { size: "1.25rem" }) }) }),
2515
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core33.Stack, { gap: "xs", children: [
2516
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.Title, { order: 4, children: item.title }),
2517
+ item.description ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.Text, { c: "dimmed", children: item.description }) : null,
2518
+ item.meta ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core33.Text, { size: "sm", c: "dimmed", children: item.meta }) : null
2267
2519
  ] })
2268
2520
  ] }) }, item.id)) }) });
2269
2521
  }
2270
2522
 
2271
2523
  // src/MapPanel.tsx
2272
- var import_core34 = require("@mantine/core");
2524
+ var import_core35 = require("@mantine/core");
2273
2525
 
2274
2526
  // src/ActionBar.tsx
2275
- var import_core33 = require("@mantine/core");
2276
- var import_jsx_runtime35 = require("react/jsx-runtime");
2527
+ var import_core34 = require("@mantine/core");
2528
+ var import_jsx_runtime37 = require("react/jsx-runtime");
2277
2529
  function renderSemanticAction(action, slot, vocabularyPacks) {
2278
2530
  const { action: actionId, variant, ariaLabel, ...props } = action;
2279
2531
  const fallbackVariant = slot === "primary" ? "filled" : slot === "secondary" ? "default" : "subtle";
2280
2532
  const config = resolveSemanticActionConfig(actionId, vocabularyPacks);
2281
2533
  const Icon = config.icon;
2282
2534
  const label = getSemanticActionLabel(actionId, void 0, vocabularyPacks);
2283
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2284
- import_core33.Button,
2535
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2536
+ import_core34.Button,
2285
2537
  {
2286
- leftSection: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Icon, { size: "1rem", stroke: 1.75 }),
2538
+ leftSection: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Icon, { size: "1rem", stroke: 1.75 }),
2287
2539
  "aria-label": ariaLabel ?? label,
2288
2540
  variant: variant ?? fallbackVariant,
2289
2541
  ...props,
@@ -2300,23 +2552,23 @@ function ActionBar({
2300
2552
  gap = "sm",
2301
2553
  vocabularyPacks = []
2302
2554
  }) {
2303
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Stack, { gap, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Group, { justify: "space-between", align: "center", gap, wrap: "wrap", children: [
2304
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Group, { gap, wrap: "wrap", children: [
2555
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core34.Stack, { gap, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core34.Group, { justify: "space-between", align: "center", gap, wrap: "wrap", children: [
2556
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core34.Group, { gap, wrap: "wrap", children: [
2305
2557
  secondary.map((action) => renderSemanticAction(action, "secondary", vocabularyPacks)),
2306
2558
  tertiary.map((action) => renderSemanticAction(action, "tertiary", vocabularyPacks))
2307
2559
  ] }),
2308
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Group, { gap, wrap: "wrap", justify: "flex-end", style: { marginInlineStart: "auto" }, children: [
2560
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core34.Group, { gap, wrap: "wrap", justify: "flex-end", style: { marginInlineStart: "auto" }, children: [
2309
2561
  iconOnly.map(({ action, ariaLabel, ...props }) => {
2310
2562
  const config = resolveSemanticActionConfig(action, vocabularyPacks);
2311
2563
  const Icon = config.icon;
2312
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2313
- import_core33.ActionIcon,
2564
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2565
+ import_core34.ActionIcon,
2314
2566
  {
2315
2567
  variant: "subtle",
2316
2568
  size: "lg",
2317
2569
  "aria-label": ariaLabel ?? getSemanticActionLabel(action, void 0, vocabularyPacks),
2318
2570
  ...props,
2319
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Icon, { size: "1rem", stroke: 1.75 })
2571
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Icon, { size: "1rem", stroke: 1.75 })
2320
2572
  },
2321
2573
  `icon-${action}`
2322
2574
  );
@@ -2327,7 +2579,7 @@ function ActionBar({
2327
2579
  }
2328
2580
 
2329
2581
  // src/MapPanel.tsx
2330
- var import_jsx_runtime36 = require("react/jsx-runtime");
2582
+ var import_jsx_runtime38 = require("react/jsx-runtime");
2331
2583
  function MapPanel({
2332
2584
  title,
2333
2585
  description,
@@ -2343,7 +2595,7 @@ function MapPanel({
2343
2595
  }) {
2344
2596
  let body;
2345
2597
  if (loading) {
2346
- body = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2598
+ body = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2347
2599
  StateBlock,
2348
2600
  {
2349
2601
  variant: "loading",
@@ -2353,9 +2605,9 @@ function MapPanel({
2353
2605
  }
2354
2606
  );
2355
2607
  } else if (error) {
2356
- body = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(StateBlock, { variant: "error", title: "Map unavailable", description: error, compact: true });
2608
+ body = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(StateBlock, { variant: "error", title: "Map unavailable", description: error, compact: true });
2357
2609
  } else if (!iframeSrc && !renderMap) {
2358
- body = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2610
+ body = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2359
2611
  StateBlock,
2360
2612
  {
2361
2613
  variant: "empty",
@@ -2365,9 +2617,9 @@ function MapPanel({
2365
2617
  }
2366
2618
  );
2367
2619
  } else if (renderMap) {
2368
- body = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Box, { style: { minHeight }, children: renderMap() });
2620
+ body = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Box, { style: { minHeight }, children: renderMap() });
2369
2621
  } else {
2370
- body = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.AspectRatio, { ratio: 16 / 9, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2622
+ body = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.AspectRatio, { ratio: 16 / 9, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2371
2623
  "iframe",
2372
2624
  {
2373
2625
  src: iframeSrc,
@@ -2379,21 +2631,21 @@ function MapPanel({
2379
2631
  }
2380
2632
  ) });
2381
2633
  }
2382
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Stack, { gap: "md", children: [
2383
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2384
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Stack, { gap: 4, children: [
2385
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Title, { order: 3, children: title }),
2386
- description ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Text, { size: "sm", c: "dimmed", children: description }) : null
2634
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.Stack, { gap: "md", children: [
2635
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2636
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.Stack, { gap: 4, children: [
2637
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Title, { order: 3, children: title }),
2638
+ description ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Text, { size: "sm", c: "dimmed", children: description }) : null
2387
2639
  ] }),
2388
- actions ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ActionBar, { ...actions }) : null
2640
+ actions ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ActionBar, { ...actions }) : null
2389
2641
  ] }),
2390
2642
  body
2391
2643
  ] }) });
2392
2644
  }
2393
2645
 
2394
2646
  // src/PublicFlowShell.tsx
2395
- var import_core35 = require("@mantine/core");
2396
- var import_jsx_runtime37 = require("react/jsx-runtime");
2647
+ var import_core36 = require("@mantine/core");
2648
+ var import_jsx_runtime39 = require("react/jsx-runtime");
2397
2649
  var stageTone = {
2398
2650
  idle: { label: "Idle", color: "gray" },
2399
2651
  loading: { label: "Loading", color: "blue" },
@@ -2445,7 +2697,7 @@ function PublicFlowShell({
2445
2697
  const actionBar = toActionBar(stage.actions);
2446
2698
  let body = stage.body;
2447
2699
  if (stage.status === "loading") {
2448
- body = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2700
+ body = /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2449
2701
  StateBlock,
2450
2702
  {
2451
2703
  variant: "loading",
@@ -2454,7 +2706,7 @@ function PublicFlowShell({
2454
2706
  }
2455
2707
  );
2456
2708
  } else if (stage.status === "error") {
2457
- body = errorState ?? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2709
+ body = errorState ?? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2458
2710
  StateBlock,
2459
2711
  {
2460
2712
  variant: "error",
@@ -2463,7 +2715,7 @@ function PublicFlowShell({
2463
2715
  }
2464
2716
  );
2465
2717
  } else if (!stage.body && !hardwareSurface) {
2466
- body = emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2718
+ body = emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2467
2719
  EmptyState,
2468
2720
  {
2469
2721
  title: "No stage content available",
@@ -2471,29 +2723,29 @@ function PublicFlowShell({
2471
2723
  }
2472
2724
  );
2473
2725
  }
2474
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: "lg", children: [
2475
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2476
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: 4, children: [
2477
- eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { size: "xs", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
2478
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Group, { gap: "sm", wrap: "wrap", children: [
2479
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Title, { order: 2, children: stage.title }),
2480
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Badge, { variant: "light", color: tone.color, children: tone.label })
2726
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core36.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core36.Stack, { gap: "lg", children: [
2727
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core36.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2728
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core36.Stack, { gap: 4, children: [
2729
+ eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core36.Text, { size: "xs", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
2730
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core36.Group, { gap: "sm", wrap: "wrap", children: [
2731
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core36.Title, { order: 2, children: stage.title }),
2732
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core36.Badge, { variant: "light", color: tone.color, children: tone.label })
2481
2733
  ] }),
2482
- stage.description ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { size: "sm", c: "dimmed", children: stage.description }) : null
2734
+ stage.description ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core36.Text, { size: "sm", c: "dimmed", children: stage.description }) : null
2483
2735
  ] }),
2484
2736
  exitAction
2485
2737
  ] }),
2486
- stage.notice ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { size: "sm", c: "dimmed", children: stage.notice }) : null,
2738
+ stage.notice ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core36.Text, { size: "sm", c: "dimmed", children: stage.notice }) : null,
2487
2739
  body,
2488
2740
  hardwareSurface,
2489
2741
  stage.aside,
2490
- actionBar ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ActionBar, { ...actionBar }) : null
2742
+ actionBar ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(ActionBar, { ...actionBar }) : null
2491
2743
  ] }) });
2492
2744
  }
2493
2745
 
2494
2746
  // src/PlaybackSurface.tsx
2495
- var import_core36 = require("@mantine/core");
2496
- var import_jsx_runtime38 = require("react/jsx-runtime");
2747
+ var import_core37 = require("@mantine/core");
2748
+ var import_jsx_runtime40 = require("react/jsx-runtime");
2497
2749
  var stateTone = {
2498
2750
  loading: { label: "Loading", color: "blue" },
2499
2751
  ready: { label: "Ready", color: "teal" },
@@ -2516,7 +2768,7 @@ function PlaybackSurface({
2516
2768
  const tone = stateTone[state];
2517
2769
  let content;
2518
2770
  if (state === "loading") {
2519
- content = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2771
+ content = /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2520
2772
  StateBlock,
2521
2773
  {
2522
2774
  variant: "loading",
@@ -2525,7 +2777,7 @@ function PlaybackSurface({
2525
2777
  }
2526
2778
  );
2527
2779
  } else if (state === "empty") {
2528
- content = emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2780
+ content = emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2529
2781
  EmptyState,
2530
2782
  {
2531
2783
  title: "No playback content available",
@@ -2533,7 +2785,7 @@ function PlaybackSurface({
2533
2785
  }
2534
2786
  );
2535
2787
  } else if (state === "error") {
2536
- content = errorState ?? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2788
+ content = errorState ?? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2537
2789
  StateBlock,
2538
2790
  {
2539
2791
  variant: "error",
@@ -2542,23 +2794,23 @@ function PlaybackSurface({
2542
2794
  }
2543
2795
  );
2544
2796
  } else {
2545
- content = /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Stack, { gap: "md", children: [
2797
+ content = /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core37.Stack, { gap: "md", children: [
2546
2798
  media,
2547
2799
  overlays
2548
2800
  ] });
2549
2801
  }
2550
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Paper, { withBorder: true, radius: "xl", p: "lg", "data-playback-mode": mode, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Stack, { gap: "md", children: [
2551
- title || statusMessage || controls ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2552
- /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Stack, { gap: 4, children: [
2553
- title ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Title, { order: 3, children: title }) : null,
2554
- statusMessage ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Text, { size: "sm", c: "dimmed", children: statusMessage }) : null
2802
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core37.Paper, { withBorder: true, radius: "xl", p: "lg", "data-playback-mode": mode, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core37.Stack, { gap: "md", children: [
2803
+ title || statusMessage || controls ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core37.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2804
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core37.Stack, { gap: 4, children: [
2805
+ title ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core37.Title, { order: 3, children: title }) : null,
2806
+ statusMessage ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core37.Text, { size: "sm", c: "dimmed", children: statusMessage }) : null
2555
2807
  ] }),
2556
- /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Group, { gap: "sm", align: "center", wrap: "wrap", children: [
2557
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Badge, { variant: "light", color: tone.color, children: tone.label }),
2808
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core37.Group, { gap: "sm", align: "center", wrap: "wrap", children: [
2809
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core37.Badge, { variant: "light", color: tone.color, children: tone.label }),
2558
2810
  controls
2559
2811
  ] })
2560
2812
  ] }) : null,
2561
- state === "degraded" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2813
+ state === "degraded" ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2562
2814
  StateBlock,
2563
2815
  {
2564
2816
  variant: "info",
@@ -2572,22 +2824,22 @@ function PlaybackSurface({
2572
2824
  }
2573
2825
 
2574
2826
  // src/MediaField.tsx
2575
- var import_core38 = require("@mantine/core");
2827
+ var import_core39 = require("@mantine/core");
2576
2828
 
2577
2829
  // src/FormField.tsx
2578
- var import_core37 = require("@mantine/core");
2579
- var import_jsx_runtime39 = require("react/jsx-runtime");
2830
+ var import_core38 = require("@mantine/core");
2831
+ var import_jsx_runtime41 = require("react/jsx-runtime");
2580
2832
  function FormField({ label, description, error, children }) {
2581
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Box, { component: "label", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core37.Stack, { gap: 4, children: [
2582
- typeof label === "string" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Text, { size: "xs", fw: 600, c: "dimmed", children: label }) : label,
2583
- description ? typeof description === "string" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Text, { size: "xs", c: "dimmed", children: description }) : description : null,
2833
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core38.Box, { component: "label", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core38.Stack, { gap: 4, children: [
2834
+ typeof label === "string" ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core38.Text, { size: "xs", fw: 600, c: "dimmed", children: label }) : label,
2835
+ description ? typeof description === "string" ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core38.Text, { size: "xs", c: "dimmed", children: description }) : description : null,
2584
2836
  children,
2585
- error ? typeof error === "string" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Text, { size: "xs", c: "red.7", children: error }) : error : null
2837
+ error ? typeof error === "string" ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core38.Text, { size: "xs", c: "red.7", children: error }) : error : null
2586
2838
  ] }) });
2587
2839
  }
2588
2840
 
2589
2841
  // src/MediaField.tsx
2590
- var import_jsx_runtime40 = require("react/jsx-runtime");
2842
+ var import_jsx_runtime42 = require("react/jsx-runtime");
2591
2843
  var stateLabels = {
2592
2844
  empty: { label: "Empty", color: "gray" },
2593
2845
  "drag-active": { label: "Drop to select", color: "violet" },
@@ -2628,44 +2880,44 @@ function MediaField({
2628
2880
  }) {
2629
2881
  const resolvedState = readonly ? "readonly" : state;
2630
2882
  const stateBadge = stateLabels[resolvedState];
2631
- const resolvedRemoveAction = removeAction ?? (!readonly && onRemove ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Button, { type: "button", variant: "light", color: "red", onClick: onRemove, children: "Remove" }) : null);
2632
- const resolvedResetAction = resetAction ?? (!readonly && onReset ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Button, { type: "button", variant: "default", onClick: onReset, children: "Reset" }) : null);
2883
+ const resolvedRemoveAction = removeAction ?? (!readonly && onRemove ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core39.Button, { type: "button", variant: "light", color: "red", onClick: onRemove, children: "Remove" }) : null);
2884
+ const resolvedResetAction = resetAction ?? (!readonly && onReset ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core39.Button, { type: "button", variant: "default", onClick: onReset, children: "Reset" }) : null);
2633
2885
  const boundedProgress = typeof progress === "number" ? Math.max(0, Math.min(100, progress)) : void 0;
2634
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2886
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
2635
2887
  FormField,
2636
2888
  {
2637
2889
  label,
2638
2890
  description,
2639
2891
  error,
2640
- children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Stack, { gap: "md", children: [
2641
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Group, { justify: "flex-end", align: "center", gap: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Group, { gap: "xs", justify: "flex-end", children: [
2642
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Badge, { variant: "light", color: stateBadge.color, children: stateBadge.label }),
2892
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core39.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core39.Stack, { gap: "md", children: [
2893
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core39.Group, { justify: "flex-end", align: "center", gap: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core39.Group, { gap: "xs", justify: "flex-end", children: [
2894
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core39.Badge, { variant: "light", color: stateBadge.color, children: stateBadge.label }),
2643
2895
  statusAction
2644
2896
  ] }) }),
2645
2897
  preview ? preview : null,
2646
- typeof boundedProgress === "number" ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Stack, { gap: 4, children: [
2647
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Progress, { value: boundedProgress, "aria-label": "Upload progress" }),
2648
- /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Text, { size: "xs", c: "dimmed", children: [
2898
+ typeof boundedProgress === "number" ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core39.Stack, { gap: 4, children: [
2899
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core39.Progress, { value: boundedProgress, "aria-label": "Upload progress" }),
2900
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core39.Text, { size: "xs", c: "dimmed", children: [
2649
2901
  boundedProgress,
2650
2902
  "% complete"
2651
2903
  ] })
2652
2904
  ] }) : null,
2653
- (uploadControl || urlInput) && !readonly ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
2654
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Divider, {}),
2655
- /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Stack, { gap: "sm", style: mode === "split" ? { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))" } : void 0, children: [
2905
+ (uploadControl || urlInput) && !readonly ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
2906
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core39.Divider, {}),
2907
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core39.Stack, { gap: "sm", style: mode === "split" ? { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))" } : void 0, children: [
2656
2908
  uploadControl,
2657
2909
  urlInput
2658
2910
  ] })
2659
2911
  ] }) : null,
2660
- value ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Text, { size: "sm", c: "dimmed", style: { wordBreak: "break-all" }, children: value }) : null,
2661
- helpText ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Text, { size: "sm", c: "dimmed", children: helpText }) : null,
2662
- acceptedTypes || maxSize ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Group, { gap: "xs", wrap: "wrap", children: [
2663
- acceptedTypes ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Badge, { variant: "outline", color: "gray", children: acceptedTypes }) : null,
2664
- maxSize ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Badge, { variant: "outline", color: "gray", children: maxSize }) : null
2912
+ value ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core39.Text, { size: "sm", c: "dimmed", style: { wordBreak: "break-all" }, children: value }) : null,
2913
+ helpText ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core39.Text, { size: "sm", c: "dimmed", children: helpText }) : null,
2914
+ acceptedTypes || maxSize ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core39.Group, { gap: "xs", wrap: "wrap", children: [
2915
+ acceptedTypes ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core39.Badge, { variant: "outline", color: "gray", children: acceptedTypes }) : null,
2916
+ maxSize ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core39.Badge, { variant: "outline", color: "gray", children: maxSize }) : null
2665
2917
  ] }) : null,
2666
- policyText ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Text, { size: "sm", c: error ? "red.7" : "dimmed", children: policyText }) : null,
2918
+ policyText ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core39.Text, { size: "sm", c: error ? "red.7" : "dimmed", children: policyText }) : null,
2667
2919
  typeof error !== "string" && error ? error : null,
2668
- replaceAction || resolvedRemoveAction || resolvedResetAction || retryAction ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Group, { gap: "sm", children: [
2920
+ replaceAction || resolvedRemoveAction || resolvedResetAction || retryAction ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core39.Group, { gap: "sm", children: [
2669
2921
  replaceAction,
2670
2922
  resolvedResetAction,
2671
2923
  retryAction,
@@ -2677,31 +2929,31 @@ function MediaField({
2677
2929
  }
2678
2930
 
2679
2931
  // src/MediaCard.tsx
2680
- var import_core39 = require("@mantine/core");
2681
- var import_jsx_runtime41 = require("react/jsx-runtime");
2932
+ var import_core40 = require("@mantine/core");
2933
+ var import_jsx_runtime43 = require("react/jsx-runtime");
2682
2934
  function MediaCard({ title, image, description, status, overlay, actions = [] }) {
2683
2935
  const EyeIcon = GdsIcons.Eye;
2684
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Card, { withBorder: true, radius: "lg", padding: "md", children: [
2685
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Card.Section, { pos: "relative", children: [
2936
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core40.Card, { withBorder: true, radius: "lg", padding: "md", children: [
2937
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core40.Card.Section, { pos: "relative", children: [
2686
2938
  image,
2687
- overlay ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { style: { position: "absolute", inset: 12, display: "flex", justifyContent: "flex-end", alignItems: "flex-start" }, children: overlay }) : null
2939
+ overlay ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { style: { position: "absolute", inset: 12, display: "flex", justifyContent: "flex-end", alignItems: "flex-start" }, children: overlay }) : null
2688
2940
  ] }),
2689
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Stack, { gap: "sm", mt: "md", children: [
2690
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Group, { justify: "space-between", align: "flex-start", children: [
2691
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Stack, { gap: 4, children: [
2692
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Title, { order: 4, children: title }),
2693
- description ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Text, { size: "sm", c: "dimmed", lineClamp: 2, children: description }) : null
2941
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core40.Stack, { gap: "sm", mt: "md", children: [
2942
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core40.Group, { justify: "space-between", align: "flex-start", children: [
2943
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core40.Stack, { gap: 4, children: [
2944
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core40.Title, { order: 4, children: title }),
2945
+ description ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core40.Text, { size: "sm", c: "dimmed", lineClamp: 2, children: description }) : null
2694
2946
  ] }),
2695
- status ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Badge, { variant: "light", children: status }) : null
2947
+ status ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core40.Badge, { variant: "light", children: status }) : null
2696
2948
  ] }),
2697
- actions.length ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Group, { justify: "flex-end", gap: "xs", children: actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.ActionIcon, { variant: "light", "aria-label": action.label, onClick: action.onClick, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(EyeIcon, { size: "1rem" }) }, action.label)) }) : null
2949
+ actions.length ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core40.Group, { justify: "flex-end", gap: "xs", children: actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core40.ActionIcon, { variant: "light", "aria-label": action.label, onClick: action.onClick, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(EyeIcon, { size: "1rem" }) }, action.label)) }) : null
2698
2950
  ] })
2699
2951
  ] });
2700
2952
  }
2701
2953
 
2702
2954
  // src/AccessSummary.tsx
2703
- var import_core40 = require("@mantine/core");
2704
- var import_jsx_runtime42 = require("react/jsx-runtime");
2955
+ var import_core41 = require("@mantine/core");
2956
+ var import_jsx_runtime44 = require("react/jsx-runtime");
2705
2957
  var accessStateMeta = {
2706
2958
  allowed: { label: "Allowed", color: "teal" },
2707
2959
  blocked: { label: "Blocked", color: "red" },
@@ -2712,28 +2964,28 @@ var accessStateMeta = {
2712
2964
  function AccessSummary({ title, roles, scope, blocked = false, state, owner, recoveryHint, description }) {
2713
2965
  const resolvedState = state ?? (blocked ? "blocked" : "allowed");
2714
2966
  const meta = accessStateMeta[resolvedState];
2715
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Card, { withBorder: true, radius: "lg", padding: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Stack, { gap: "sm", children: [
2716
- /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Group, { justify: "space-between", align: "center", children: [
2717
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Title, { order: 4, children: title }),
2718
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Badge, { color: meta.color, variant: "light", children: meta.label })
2967
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core41.Card, { withBorder: true, radius: "lg", padding: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core41.Stack, { gap: "sm", children: [
2968
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core41.Group, { justify: "space-between", align: "center", children: [
2969
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core41.Title, { order: 4, children: title }),
2970
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core41.Badge, { color: meta.color, variant: "light", children: meta.label })
2719
2971
  ] }),
2720
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Group, { gap: "xs", children: roles.map((role) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Badge, { variant: "outline", children: role }, role)) }),
2721
- scope ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Text, { size: "sm", c: "dimmed", children: [
2972
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core41.Group, { gap: "xs", children: roles.map((role) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core41.Badge, { variant: "outline", children: role }, role)) }),
2973
+ scope ? /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core41.Text, { size: "sm", c: "dimmed", children: [
2722
2974
  "Scope: ",
2723
2975
  scope
2724
2976
  ] }) : null,
2725
- owner ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Text, { size: "sm", c: "dimmed", children: [
2977
+ owner ? /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core41.Text, { size: "sm", c: "dimmed", children: [
2726
2978
  "Owner: ",
2727
2979
  owner
2728
2980
  ] }) : null,
2729
- recoveryHint ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Text, { size: "sm", c: resolvedState === "allowed" ? "dimmed" : "red.7", children: recoveryHint }) : null,
2730
- description ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Text, { size: "sm", children: description }) : null
2981
+ recoveryHint ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core41.Text, { size: "sm", c: resolvedState === "allowed" ? "dimmed" : "red.7", children: recoveryHint }) : null,
2982
+ description ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core41.Text, { size: "sm", children: description }) : null
2731
2983
  ] }) });
2732
2984
  }
2733
2985
 
2734
2986
  // src/PageHeader.tsx
2735
- var import_core41 = require("@mantine/core");
2736
- var import_jsx_runtime43 = require("react/jsx-runtime");
2987
+ var import_core42 = require("@mantine/core");
2988
+ var import_jsx_runtime45 = require("react/jsx-runtime");
2737
2989
  function PageHeader({
2738
2990
  title,
2739
2991
  description,
@@ -2744,19 +2996,19 @@ function PageHeader({
2744
2996
  }) {
2745
2997
  const resolvedDescription = description ?? subtitle;
2746
2998
  const eyebrowProps = eyebrowVariant === "ornamental" ? { tt: "uppercase", style: { letterSpacing: "0.12em" } } : {};
2747
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core41.Group, { justify: "space-between", align: "flex-start", gap: "lg", wrap: "wrap", children: [
2748
- /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core41.Stack, { gap: "xs", children: [
2749
- eyebrow && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Text, { size: "xs", fw: 700, c: "dimmed", ...eyebrowProps, children: eyebrow }),
2750
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Title, { order: 1, children: title }),
2751
- resolvedDescription && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Text, { c: "dimmed", maw: 720, children: resolvedDescription })
2999
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core42.Group, { justify: "space-between", align: "flex-start", gap: "lg", wrap: "wrap", children: [
3000
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core42.Stack, { gap: "xs", children: [
3001
+ eyebrow && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core42.Text, { size: "xs", fw: 700, c: "dimmed", ...eyebrowProps, children: eyebrow }),
3002
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core42.Title, { order: 1, children: title }),
3003
+ resolvedDescription && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core42.Text, { c: "dimmed", maw: 720, children: resolvedDescription })
2752
3004
  ] }),
2753
- actions ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Box, { children: actions }) : null
3005
+ actions ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core42.Box, { children: actions }) : null
2754
3006
  ] });
2755
3007
  }
2756
3008
 
2757
3009
  // src/FilterDrawer.tsx
2758
- var import_core42 = require("@mantine/core");
2759
- var import_jsx_runtime44 = require("react/jsx-runtime");
3010
+ var import_core43 = require("@mantine/core");
3011
+ var import_jsx_runtime46 = require("react/jsx-runtime");
2760
3012
  function FilterDrawer({
2761
3013
  opened,
2762
3014
  onClose,
@@ -2772,8 +3024,8 @@ function FilterDrawer({
2772
3024
  }) {
2773
3025
  const resolvedPrimaryAction = applyAction ?? primaryAction;
2774
3026
  const resolvedSecondaryAction = resetAction ?? secondaryAction;
2775
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2776
- import_core42.Drawer,
3027
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
3028
+ import_core43.Drawer,
2777
3029
  {
2778
3030
  opened,
2779
3031
  onClose,
@@ -2781,11 +3033,11 @@ function FilterDrawer({
2781
3033
  position: mode === "bottom-sheet" ? "bottom" : "right",
2782
3034
  size: mode === "bottom-sheet" ? "auto" : "md",
2783
3035
  radius: mode === "bottom-sheet" ? "xl" : void 0,
2784
- children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Stack, { gap: "md", children: [
2785
- description ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Text, { size: "sm", c: "dimmed", children: description }) : null,
3036
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_core43.Stack, { gap: "md", children: [
3037
+ description ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core43.Text, { size: "sm", c: "dimmed", children: description }) : null,
2786
3038
  children,
2787
- resolvedPrimaryAction || resolvedSecondaryAction || closeAction ? /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Group, { justify: "space-between", mt: "md", children: [
2788
- /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Group, { gap: "sm", children: [
3039
+ resolvedPrimaryAction || resolvedSecondaryAction || closeAction ? /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_core43.Group, { justify: "space-between", mt: "md", children: [
3040
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_core43.Group, { gap: "sm", children: [
2789
3041
  closeAction,
2790
3042
  resolvedSecondaryAction
2791
3043
  ] }),
@@ -2797,8 +3049,8 @@ function FilterDrawer({
2797
3049
  }
2798
3050
 
2799
3051
  // src/PlaceholderPanel.tsx
2800
- var import_core43 = require("@mantine/core");
2801
- var import_jsx_runtime45 = require("react/jsx-runtime");
3052
+ var import_core44 = require("@mantine/core");
3053
+ var import_jsx_runtime47 = require("react/jsx-runtime");
2802
3054
  function PlaceholderPanel({
2803
3055
  title,
2804
3056
  description,
@@ -2808,16 +3060,16 @@ function PlaceholderPanel({
2808
3060
  mode
2809
3061
  }) {
2810
3062
  if (mode === "live" && children) {
2811
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, { children });
3063
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_jsx_runtime47.Fragment, { children });
2812
3064
  }
2813
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Card, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core43.Stack, { gap: "md", children: [
2814
- badge ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Badge, { variant: "light", color: "blue", w: "fit-content", children: badge }) : null,
2815
- /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core43.Stack, { gap: "xs", children: [
2816
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Title, { order: 4, children: title }),
2817
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Text, { c: "dimmed", children: description })
3065
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core44.Card, { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_core44.Stack, { gap: "md", children: [
3066
+ badge ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core44.Badge, { variant: "light", color: "blue", w: "fit-content", children: badge }) : null,
3067
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_core44.Stack, { gap: "xs", children: [
3068
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core44.Title, { order: 4, children: title }),
3069
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core44.Text, { c: "dimmed", children: description })
2818
3070
  ] }),
2819
- footer ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Text, { size: "sm", children: footer }) : null,
2820
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
3071
+ footer ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core44.Text, { size: "sm", children: footer }) : null,
3072
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2821
3073
  StateBlock,
2822
3074
  {
2823
3075
  variant: "not-enough-data",
@@ -2830,8 +3082,8 @@ function PlaceholderPanel({
2830
3082
  }
2831
3083
 
2832
3084
  // src/SimpleDataTable.tsx
2833
- var import_core44 = require("@mantine/core");
2834
- var import_jsx_runtime46 = require("react/jsx-runtime");
3085
+ var import_core45 = require("@mantine/core");
3086
+ var import_jsx_runtime48 = require("react/jsx-runtime");
2835
3087
  function SimpleDataTable({
2836
3088
  columns,
2837
3089
  rows,
@@ -2842,23 +3094,23 @@ function SimpleDataTable({
2842
3094
  getRowKey
2843
3095
  }) {
2844
3096
  if (error) {
2845
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(StateBlock, { variant: "error", title: "Unable to load data", description: error, compact: true });
3097
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(StateBlock, { variant: "error", title: "Unable to load data", description: error, compact: true });
2846
3098
  }
2847
3099
  if (loading) {
2848
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(StateBlock, { variant: "loading", title: "Loading data", description: "Please wait while the shared dataset is prepared.", compact: true });
3100
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(StateBlock, { variant: "loading", title: "Loading data", description: "Please wait while the shared dataset is prepared.", compact: true });
2849
3101
  }
2850
3102
  if (!rows.length) {
2851
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(StateBlock, { variant: "empty", title: emptyTitle, description: emptyDescription, compact: true });
3103
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(StateBlock, { variant: "empty", title: emptyTitle, description: emptyDescription, compact: true });
2852
3104
  }
2853
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.ScrollArea, { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_core44.Table, { striped: true, highlightOnHover: true, withTableBorder: true, withColumnBorders: true, children: [
2854
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Table.Thead, { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Table.Tr, { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Table.Th, { children: column.header }, String(column.key))) }) }),
2855
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Table.Tbody, { children: rows.map((row, index) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Table.Tr, { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Table.Td, { children: column.render ? column.render(row) : String(row[column.key] ?? "") }, String(column.key))) }, getRowKey ? getRowKey(row, index) : index)) })
3105
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core45.ScrollArea, { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_core45.Table, { striped: true, highlightOnHover: true, withTableBorder: true, withColumnBorders: true, children: [
3106
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core45.Table.Thead, { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core45.Table.Tr, { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core45.Table.Th, { children: column.header }, String(column.key))) }) }),
3107
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core45.Table.Tbody, { children: rows.map((row, index) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core45.Table.Tr, { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core45.Table.Td, { children: column.render ? column.render(row) : String(row[column.key] ?? "") }, String(column.key))) }, getRowKey ? getRowKey(row, index) : index)) })
2856
3108
  ] }) });
2857
3109
  }
2858
3110
 
2859
3111
  // src/StatsSection.tsx
2860
- var import_core45 = require("@mantine/core");
2861
- var import_jsx_runtime47 = require("react/jsx-runtime");
3112
+ var import_core46 = require("@mantine/core");
3113
+ var import_jsx_runtime49 = require("react/jsx-runtime");
2862
3114
  function StatsSection({
2863
3115
  title,
2864
3116
  loading = false,
@@ -2870,11 +3122,11 @@ function StatsSection({
2870
3122
  }) {
2871
3123
  let content = children;
2872
3124
  if (error) {
2873
- content = /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(StateBlock, { variant: "error", title: "Unable to load statistics", description: error, compact: true });
3125
+ content = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(StateBlock, { variant: "error", title: "Unable to load statistics", description: error, compact: true });
2874
3126
  } else if (loading) {
2875
- content = /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(StateBlock, { variant: "loading", title: "Loading statistics", description: "This shared data surface is still synchronizing.", compact: true });
3127
+ content = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(StateBlock, { variant: "loading", title: "Loading statistics", description: "This shared data surface is still synchronizing.", compact: true });
2876
3128
  } else if (belowThreshold) {
2877
- content = /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
3129
+ content = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2878
3130
  StateBlock,
2879
3131
  {
2880
3132
  variant: "not-enough-data",
@@ -2884,17 +3136,17 @@ function StatsSection({
2884
3136
  }
2885
3137
  );
2886
3138
  } else if (placeholder) {
2887
- content = /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(PlaceholderPanel, { ...placeholder, mode: "placeholder" });
3139
+ content = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(PlaceholderPanel, { ...placeholder, mode: "placeholder" });
2888
3140
  }
2889
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_core45.Stack, { gap: "md", children: [
2890
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Title, { order: 3, children: title }),
3141
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core46.Stack, { gap: "md", children: [
3142
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core46.Title, { order: 3, children: title }),
2891
3143
  content
2892
3144
  ] });
2893
3145
  }
2894
3146
 
2895
3147
  // src/PeriodSelector.tsx
2896
- var import_core46 = require("@mantine/core");
2897
- var import_jsx_runtime48 = require("react/jsx-runtime");
3148
+ var import_core47 = require("@mantine/core");
3149
+ var import_jsx_runtime50 = require("react/jsx-runtime");
2898
3150
  function PeriodSelector({
2899
3151
  label,
2900
3152
  description,
@@ -2910,34 +3162,34 @@ function PeriodSelector({
2910
3162
  disabled = false
2911
3163
  }) {
2912
3164
  const selectedOption = options.find((option) => option.value === value);
2913
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(FormField, { label, description, error, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_core46.Stack, { gap: "sm", children: [
2914
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3165
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(FormField, { label, description, error, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core47.Stack, { gap: "sm", children: [
3166
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
2915
3167
  "select",
2916
3168
  {
2917
3169
  "aria-label": typeof label === "string" ? label : "Reporting period",
2918
3170
  value,
2919
3171
  disabled,
2920
3172
  onChange: (event) => onChange?.(event.currentTarget.value),
2921
- children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("option", { value: option.value, children: option.label }, option.value))
3173
+ children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("option", { value: option.value, children: option.label }, option.value))
2922
3174
  }
2923
3175
  ),
2924
- /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_core46.Group, { gap: "xs", wrap: "wrap", children: [
2925
- timezone ? /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_core46.Badge, { variant: "outline", color: "gray", children: [
3176
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core47.Group, { gap: "xs", wrap: "wrap", children: [
3177
+ timezone ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core47.Badge, { variant: "outline", color: "gray", children: [
2926
3178
  "Timezone: ",
2927
3179
  timezone
2928
3180
  ] }) : null,
2929
- filtered ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Badge, { variant: "light", color: "blue", children: "Filtered" }) : null,
2930
- stale ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Badge, { variant: "light", color: "orange", children: "Stale data" }) : null,
2931
- scope ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Badge, { variant: "outline", color: "gray", children: scope }) : null
3181
+ filtered ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core47.Badge, { variant: "light", color: "blue", children: "Filtered" }) : null,
3182
+ stale ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core47.Badge, { variant: "light", color: "orange", children: "Stale data" }) : null,
3183
+ scope ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core47.Badge, { variant: "outline", color: "gray", children: scope }) : null
2932
3184
  ] }),
2933
- selectedOption?.description ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Text, { size: "sm", c: "dimmed", children: selectedOption.description }) : null,
2934
- helperText ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Text, { size: "sm", c: "dimmed", children: helperText }) : null
3185
+ selectedOption?.description ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core47.Text, { size: "sm", c: "dimmed", children: selectedOption.description }) : null,
3186
+ helperText ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core47.Text, { size: "sm", c: "dimmed", children: helperText }) : null
2935
3187
  ] }) });
2936
3188
  }
2937
3189
 
2938
3190
  // src/EvidencePanel.tsx
2939
- var import_core47 = require("@mantine/core");
2940
- var import_jsx_runtime49 = require("react/jsx-runtime");
3191
+ var import_core48 = require("@mantine/core");
3192
+ var import_jsx_runtime51 = require("react/jsx-runtime");
2941
3193
  var stateTone2 = {
2942
3194
  current: { label: "Current", color: "teal" },
2943
3195
  stale: { label: "Stale", color: "orange" },
@@ -2962,33 +3214,33 @@ function EvidencePanel({
2962
3214
  }) {
2963
3215
  const tone = stateTone2[state];
2964
3216
  const isProblem = state === "error" || state === "permission-limited" || state === "stale" || state === "partial";
2965
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Stack, { gap: "md", children: [
2966
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Group, { justify: "space-between", align: "flex-start", gap: "sm", children: [
2967
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Stack, { gap: 4, children: [
2968
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Title, { order: 4, children: title }),
2969
- description ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Text, { size: "sm", c: "dimmed", children: description }) : null
3217
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core48.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core48.Stack, { gap: "md", children: [
3218
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core48.Group, { justify: "space-between", align: "flex-start", gap: "sm", children: [
3219
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core48.Stack, { gap: 4, children: [
3220
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core48.Title, { order: 4, children: title }),
3221
+ description ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core48.Text, { size: "sm", c: "dimmed", children: description }) : null
2970
3222
  ] }),
2971
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Badge, { variant: "light", color: tone.color, children: tone.label })
3223
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core48.Badge, { variant: "light", color: tone.color, children: tone.label })
2972
3224
  ] }),
2973
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Group, { gap: "xs", wrap: "wrap", children: [
2974
- source ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Badge, { variant: "outline", color: "gray", children: [
3225
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core48.Group, { gap: "xs", wrap: "wrap", children: [
3226
+ source ? /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core48.Badge, { variant: "outline", color: "gray", children: [
2975
3227
  "Source: ",
2976
3228
  source
2977
3229
  ] }) : null,
2978
- freshness ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Badge, { variant: "outline", color: "gray", children: [
3230
+ freshness ? /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core48.Badge, { variant: "outline", color: "gray", children: [
2979
3231
  "Freshness: ",
2980
3232
  freshness
2981
3233
  ] }) : null,
2982
- confidence ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Badge, { variant: "outline", color: "gray", children: [
3234
+ confidence ? /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core48.Badge, { variant: "outline", color: "gray", children: [
2983
3235
  "Confidence: ",
2984
3236
  confidence
2985
3237
  ] }) : null,
2986
- typeof evidenceCount === "number" ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Badge, { variant: "outline", color: "gray", children: [
3238
+ typeof evidenceCount === "number" ? /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core48.Badge, { variant: "outline", color: "gray", children: [
2987
3239
  "Evidence: ",
2988
3240
  evidenceCount
2989
3241
  ] }) : null
2990
3242
  ] }),
2991
- permissionNote ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Alert, { color: isProblem ? tone.color : "gray", variant: "light", children: permissionNote }) : null,
3243
+ permissionNote ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core48.Alert, { color: isProblem ? tone.color : "gray", variant: "light", children: permissionNote }) : null,
2992
3244
  details,
2993
3245
  children,
2994
3246
  retryAction
@@ -2996,8 +3248,8 @@ function EvidencePanel({
2996
3248
  }
2997
3249
 
2998
3250
  // src/ChartTokenPanel.tsx
2999
- var import_core48 = require("@mantine/core");
3000
- var import_jsx_runtime50 = require("react/jsx-runtime");
3251
+ var import_core49 = require("@mantine/core");
3252
+ var import_jsx_runtime52 = require("react/jsx-runtime");
3001
3253
  function ChartTokenPanel({
3002
3254
  title,
3003
3255
  description,
@@ -3009,42 +3261,127 @@ function ChartTokenPanel({
3009
3261
  retryAction
3010
3262
  }) {
3011
3263
  if (state === "loading") {
3012
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(StateBlock, { variant: "loading", title: "Loading chart", description: summary, compact: true, action: retryAction });
3264
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(StateBlock, { variant: "loading", title: "Loading chart", description: summary, compact: true, action: retryAction });
3013
3265
  }
3014
3266
  if (state === "empty") {
3015
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(StateBlock, { variant: "empty", title: "No chart data", description: summary, compact: true, action: retryAction });
3267
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(StateBlock, { variant: "empty", title: "No chart data", description: summary, compact: true, action: retryAction });
3016
3268
  }
3017
3269
  if (state === "below-threshold") {
3018
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(StateBlock, { variant: "not-enough-data", title: "Not enough data for chart", description: summary, compact: true, action: retryAction });
3270
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(StateBlock, { variant: "not-enough-data", title: "Not enough data for chart", description: summary, compact: true, action: retryAction });
3019
3271
  }
3020
3272
  if (state === "error") {
3021
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(StateBlock, { variant: "error", title: "Unable to load chart", description: summary, compact: true, action: retryAction });
3273
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(StateBlock, { variant: "error", title: "Unable to load chart", description: summary, compact: true, action: retryAction });
3022
3274
  }
3023
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Stack, { gap: "md", children: [
3024
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Group, { justify: "space-between", align: "flex-start", gap: "sm", children: [
3025
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Stack, { gap: 4, children: [
3026
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Title, { order: 4, children: title }),
3027
- description ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Text, { size: "sm", c: "dimmed", children: description }) : null
3275
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_core49.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_core49.Stack, { gap: "md", children: [
3276
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_core49.Group, { justify: "space-between", align: "flex-start", gap: "sm", children: [
3277
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_core49.Stack, { gap: 4, children: [
3278
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_core49.Title, { order: 4, children: title }),
3279
+ description ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_core49.Text, { size: "sm", c: "dimmed", children: description }) : null
3028
3280
  ] }),
3029
- state !== "ready" ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Badge, { variant: "light", color: state === "permission-limited" ? "grape" : "yellow", children: state.replace("-", " ") }) : null
3281
+ state !== "ready" ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_core49.Badge, { variant: "light", color: state === "permission-limited" ? "grape" : "yellow", children: state.replace("-", " ") }) : null
3030
3282
  ] }),
3031
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Text, { size: "sm", children: summary }),
3032
- legend.length ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Group, { gap: "xs", wrap: "wrap", "aria-label": "Chart legend", children: legend.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Badge, { variant: "outline", color: "gray", title: typeof item.description === "string" ? item.description : void 0, children: [
3283
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_core49.Text, { size: "sm", children: summary }),
3284
+ legend.length ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_core49.Group, { gap: "xs", wrap: "wrap", "aria-label": "Chart legend", children: legend.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_core49.Badge, { variant: "outline", color: "gray", title: typeof item.description === "string" ? item.description : void 0, children: [
3033
3285
  item.label,
3034
3286
  ": ",
3035
3287
  item.token
3036
3288
  ] }, `${String(item.label)}-${index}`)) }) : null,
3037
3289
  children,
3038
- tableFallback ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Stack, { gap: "xs", children: [
3039
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Text, { size: "sm", fw: 600, children: "Accessible data fallback" }),
3290
+ tableFallback ? /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_core49.Stack, { gap: "xs", children: [
3291
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_core49.Text, { size: "sm", fw: 600, children: "Accessible data fallback" }),
3040
3292
  tableFallback
3041
3293
  ] }) : null
3042
3294
  ] }) });
3043
3295
  }
3044
3296
 
3297
+ // src/GdsChart.tsx
3298
+ var import_core50 = require("@mantine/core");
3299
+ var import_jsx_runtime53 = require("react/jsx-runtime");
3300
+ function GdsChart({ type, title, summary, data, state = "ready", retryAction }) {
3301
+ const tableRows = data.map((item) => ({ label: item.label, value: String(item.value), group: item.group ?? "-" }));
3302
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
3303
+ ChartTokenPanel,
3304
+ {
3305
+ title,
3306
+ summary,
3307
+ state,
3308
+ retryAction,
3309
+ legend: [
3310
+ { label: "Primary", token: "var(--mantine-color-blue-6)" },
3311
+ { label: "Secondary", token: "var(--mantine-color-teal-6)" }
3312
+ ],
3313
+ tableFallback: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
3314
+ SimpleDataTable,
3315
+ {
3316
+ columns: [
3317
+ { key: "label", header: "Label" },
3318
+ { key: "value", header: "Value" },
3319
+ { key: "group", header: "Group" }
3320
+ ],
3321
+ rows: tableRows
3322
+ }
3323
+ ),
3324
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core50.Paper, { withBorder: true, radius: "md", p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_core50.Stack, { gap: "sm", children: [
3325
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_core50.Group, { justify: "space-between", children: [
3326
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core50.Text, { fw: 700, children: title }),
3327
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core50.Badge, { variant: "light", children: type })
3328
+ ] }),
3329
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core50.Text, { size: "sm", c: "dimmed", children: summary }),
3330
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_core50.Text, { size: "xs", c: "dimmed", children: [
3331
+ "Type lane: ",
3332
+ type
3333
+ ] })
3334
+ ] }) })
3335
+ }
3336
+ );
3337
+ }
3338
+
3339
+ // src/LayoutBlocks.tsx
3340
+ var import_core51 = require("@mantine/core");
3341
+ var import_jsx_runtime54 = require("react/jsx-runtime");
3342
+ function renderBlock(block) {
3343
+ switch (block.type) {
3344
+ case "hero":
3345
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(SectionPanel, { title: String(block.props.title ?? "Hero"), description: String(block.props.description ?? "Hero block"), children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_core51.Text, { children: String(block.props.body ?? "Composable hero content") }) });
3346
+ case "stats":
3347
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_core51.SimpleGrid, { cols: { base: 1, md: 3 }, children: block.props.items?.map((item) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_core51.Card, { withBorder: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_core51.Stack, { gap: 2, children: [
3348
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_core51.Text, { size: "sm", c: "dimmed", children: item.label }),
3349
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_core51.Title, { order: 4, children: item.value })
3350
+ ] }) }, `${block.id}-${item.label}`)) ?? null });
3351
+ case "cards-grid":
3352
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_core51.SimpleGrid, { cols: { base: 1, md: 2 }, children: block.props.items?.map((item) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ListingCard, { title: item.title, description: item.description, size: "sm" }, `${block.id}-${item.title}`)) ?? null });
3353
+ case "chart":
3354
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3355
+ GdsChart,
3356
+ {
3357
+ type: block.props.chartType ?? "bar",
3358
+ title: String(block.props.title ?? "Chart block"),
3359
+ summary: String(block.props.summary ?? "Block-composed chart summary"),
3360
+ data: block.props.data ?? [{ label: "A", value: 10 }]
3361
+ }
3362
+ );
3363
+ case "cta":
3364
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3365
+ ActionBar,
3366
+ {
3367
+ primary: { action: "save" },
3368
+ secondary: [{ action: "cancel" }],
3369
+ tertiary: [{ action: "preview" }]
3370
+ }
3371
+ );
3372
+ case "footer":
3373
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_core51.Text, { size: "sm", c: "dimmed", children: String(block.props.text ?? "Footer block") });
3374
+ default:
3375
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_core51.Alert, { color: "red", children: "Unsupported block type." });
3376
+ }
3377
+ }
3378
+ function renderGdsLayout(schema) {
3379
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_core51.Stack, { gap: "lg", children: schema.blocks.map((block) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { children: renderBlock(block) }, block.id)) });
3380
+ }
3381
+
3045
3382
  // src/ReportingSection.tsx
3046
- var import_core49 = require("@mantine/core");
3047
- var import_jsx_runtime51 = require("react/jsx-runtime");
3383
+ var import_core52 = require("@mantine/core");
3384
+ var import_jsx_runtime55 = require("react/jsx-runtime");
3048
3385
  function ReportingSection({
3049
3386
  title,
3050
3387
  description,
@@ -3060,26 +3397,26 @@ function ReportingSection({
3060
3397
  }) {
3061
3398
  let stateBlock = null;
3062
3399
  if (state === "loading") {
3063
- stateBlock = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(StateBlock, { variant: "loading", title: "Loading report", description: stateMessage ?? "The reporting surface is synchronizing.", compact: true });
3400
+ stateBlock = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(StateBlock, { variant: "loading", title: "Loading report", description: stateMessage ?? "The reporting surface is synchronizing.", compact: true });
3064
3401
  } else if (state === "empty") {
3065
- stateBlock = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(StateBlock, { variant: "empty", title: "No report data", description: stateMessage ?? "No records match this reporting scope yet.", compact: true });
3402
+ stateBlock = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(StateBlock, { variant: "empty", title: "No report data", description: stateMessage ?? "No records match this reporting scope yet.", compact: true });
3066
3403
  } else if (state === "error") {
3067
- stateBlock = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(StateBlock, { variant: "error", title: "Unable to load report", description: stateMessage ?? "The report could not be prepared.", compact: true, action: retryAction });
3404
+ stateBlock = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(StateBlock, { variant: "error", title: "Unable to load report", description: stateMessage ?? "The report could not be prepared.", compact: true, action: retryAction });
3068
3405
  } else if (state === "below-threshold") {
3069
- stateBlock = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(StateBlock, { variant: "not-enough-data", title: "Not enough data", description: stateMessage ?? "This report is hidden until the threshold is met.", compact: true });
3406
+ stateBlock = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(StateBlock, { variant: "not-enough-data", title: "Not enough data", description: stateMessage ?? "This report is hidden until the threshold is met.", compact: true });
3070
3407
  } else if (state === "permission-limited") {
3071
- stateBlock = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(StateBlock, { variant: "permission", title: "Permission-limited report", description: stateMessage ?? "Some evidence is hidden by access rules.", compact: true, action: retryAction });
3408
+ stateBlock = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(StateBlock, { variant: "permission", title: "Permission-limited report", description: stateMessage ?? "Some evidence is hidden by access rules.", compact: true, action: retryAction });
3072
3409
  }
3073
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core49.Stack, { gap: "lg", children: [
3074
- /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core49.Group, { justify: "space-between", align: "flex-start", gap: "md", children: [
3075
- /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core49.Stack, { gap: 4, children: [
3076
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Title, { order: 3, children: title }),
3077
- description ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Text, { size: "sm", c: "dimmed", children: description }) : null
3410
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_core52.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_core52.Stack, { gap: "lg", children: [
3411
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_core52.Group, { justify: "space-between", align: "flex-start", gap: "md", children: [
3412
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_core52.Stack, { gap: 4, children: [
3413
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_core52.Title, { order: 3, children: title }),
3414
+ description ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_core52.Text, { size: "sm", c: "dimmed", children: description }) : null
3078
3415
  ] }),
3079
3416
  action
3080
3417
  ] }),
3081
3418
  periodControl,
3082
- (state === "partial" || state === "stale" || state === "filtered") && stateMessage ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(StateBlock, { variant: "info", title: state === "partial" ? "Partial report" : state === "stale" ? "Stale report" : "Filtered report", description: stateMessage, compact: true }) : null,
3419
+ (state === "partial" || state === "stale" || state === "filtered") && stateMessage ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(StateBlock, { variant: "info", title: state === "partial" ? "Partial report" : state === "stale" ? "Stale report" : "Filtered report", description: stateMessage, compact: true }) : null,
3083
3420
  stateBlock,
3084
3421
  metrics,
3085
3422
  chart,
@@ -3088,6 +3425,91 @@ function ReportingSection({
3088
3425
  ] }) });
3089
3426
  }
3090
3427
 
3428
+ // src/Notifications.tsx
3429
+ var import_core53 = require("@mantine/core");
3430
+ var import_jsx_runtime56 = require("react/jsx-runtime");
3431
+ var notificationColorMap = {
3432
+ success: "teal",
3433
+ error: "red",
3434
+ warning: "yellow",
3435
+ info: "blue",
3436
+ neutral: "gray"
3437
+ };
3438
+ function severityToStateVariant(severity) {
3439
+ if (severity === "success") return "success";
3440
+ if (severity === "error") return "error";
3441
+ if (severity === "warning") return "not-enough-data";
3442
+ if (severity === "neutral") return "disabled";
3443
+ return "info";
3444
+ }
3445
+ function InlineAlert({
3446
+ title,
3447
+ message,
3448
+ severity = "info",
3449
+ action
3450
+ }) {
3451
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
3452
+ import_core53.Alert,
3453
+ {
3454
+ variant: "light",
3455
+ color: notificationColorMap[severity],
3456
+ title,
3457
+ icon: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(GdsIcons.Info, { size: "1rem" }),
3458
+ role: severity === "error" ? "alert" : "status",
3459
+ children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_core53.Stack, { gap: "xs", children: [
3460
+ message ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core53.Text, { size: "sm", children: message }) : null,
3461
+ action
3462
+ ] })
3463
+ }
3464
+ );
3465
+ }
3466
+ function BannerNotice({
3467
+ eyebrow,
3468
+ title,
3469
+ message,
3470
+ severity = "info",
3471
+ action
3472
+ }) {
3473
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core53.Paper, { withBorder: true, radius: "lg", p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_core53.Stack, { gap: "xs", children: [
3474
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_core53.Group, { justify: "space-between", align: "center", children: [
3475
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_core53.Group, { gap: "xs", children: [
3476
+ eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core53.Badge, { variant: "light", children: eyebrow }) : null,
3477
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core53.Badge, { variant: "light", color: notificationColorMap[severity], children: severityToStateVariant(severity).replace("-", " ") })
3478
+ ] }),
3479
+ action
3480
+ ] }),
3481
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core53.Title, { order: 4, children: title }),
3482
+ message ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core53.Text, { size: "sm", c: "dimmed", children: message }) : null
3483
+ ] }) });
3484
+ }
3485
+ function NotificationCenterView({
3486
+ notifications,
3487
+ onDismiss,
3488
+ onClear,
3489
+ title = "Notifications",
3490
+ emptyMessage = "No active notifications."
3491
+ }) {
3492
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core53.Paper, { withBorder: true, radius: "lg", p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_core53.Stack, { gap: "md", children: [
3493
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_core53.Group, { justify: "space-between", align: "center", children: [
3494
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core53.Title, { order: 4, children: title }),
3495
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core53.Button, { size: "xs", variant: "subtle", onClick: onClear, disabled: notifications.length === 0 || !onClear, children: "Clear all" })
3496
+ ] }),
3497
+ notifications.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core53.Text, { size: "sm", c: "dimmed", children: emptyMessage }) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core53.Stack, { gap: "sm", children: notifications.map((item) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
3498
+ InlineAlert,
3499
+ {
3500
+ severity: item.severity,
3501
+ title: item.title,
3502
+ message: item.message,
3503
+ action: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_core53.Group, { gap: "xs", children: [
3504
+ item.actions?.map((action) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core53.Button, { size: "xs", variant: "default", onClick: action.onClick, children: action.label }, action.id)),
3505
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core53.Button, { size: "xs", variant: "subtle", onClick: () => onDismiss?.(item.id), disabled: !onDismiss, children: "Dismiss" })
3506
+ ] })
3507
+ },
3508
+ item.id
3509
+ )) })
3510
+ ] }) });
3511
+ }
3512
+
3091
3513
  // src/locales/ar.ts
3092
3514
  var ar = {
3093
3515
  "gds.action.settings": "\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A",
@@ -4394,13 +4816,18 @@ function getGdsMessages(locale) {
4394
4816
  0 && (module.exports = {
4395
4817
  AccentPanel,
4396
4818
  AccessSummary,
4819
+ ActiveFilterChips,
4397
4820
  ArticleShell,
4821
+ AsyncSurface,
4398
4822
  AuthShell,
4823
+ BannerNotice,
4399
4824
  BrowseSurface,
4825
+ BulkActionsBar,
4400
4826
  ChartTokenPanel,
4401
4827
  ChoiceChip,
4402
4828
  ConsumerDashboardGrid,
4403
4829
  ConsumerSection,
4830
+ CountBadge,
4404
4831
  CtaButtonGroup,
4405
4832
  DataToolbar,
4406
4833
  DetailProfileShell,
@@ -4413,13 +4840,17 @@ function getGdsMessages(locale) {
4413
4840
  FilterDrawer,
4414
4841
  FoodMenuSection,
4415
4842
  FormField,
4843
+ GdsChart,
4416
4844
  GdsIcons,
4417
4845
  GdsVocabulary,
4846
+ InlineAlert,
4847
+ LabelTag,
4418
4848
  ListingCard,
4419
4849
  MapPanel,
4420
4850
  MediaCard,
4421
4851
  MediaField,
4422
4852
  MetricCard,
4853
+ NotificationCenterView,
4423
4854
  PROVIDER_IDENTITY_REGISTRY,
4424
4855
  PageHeader,
4425
4856
  PeriodSelector,
@@ -4440,9 +4871,11 @@ function getGdsMessages(locale) {
4440
4871
  ReferenceLocaleNotice,
4441
4872
  ReferenceSection,
4442
4873
  ReportingSection,
4874
+ ResultSummary,
4443
4875
  SectionPanel,
4444
4876
  SimpleDataTable,
4445
4877
  SocialAuthButtons,
4878
+ SortMenu,
4446
4879
  StateBlock,
4447
4880
  StatsSection,
4448
4881
  StatusBadge,
@@ -4452,6 +4885,8 @@ function getGdsMessages(locale) {
4452
4885
  en,
4453
4886
  es,
4454
4887
  fr,
4888
+ gdsCardSizePaddingMap,
4889
+ gdsCardTitleOrderMap,
4455
4890
  gdsLocales,
4456
4891
  getGdsMessages,
4457
4892
  getProviderIdentityLabel,
@@ -4464,6 +4899,7 @@ function getGdsMessages(locale) {
4464
4899
  isPresentationMode,
4465
4900
  it,
4466
4901
  mergeGdsVocabularyPacks,
4902
+ renderGdsLayout,
4467
4903
  resolveAccentPanelStyles,
4468
4904
  resolveSemanticActionConfig,
4469
4905
  resolveSurfacePresentationStyles,