@doneisbetter/gds-core 3.0.0 → 3.0.1

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.
@@ -8,9 +8,24 @@ var statusColorMap = {
8
8
  info: "blue",
9
9
  neutral: "gray"
10
10
  };
11
+ var labelTagColorMap = {
12
+ neutral: "gray",
13
+ info: "blue",
14
+ warning: "yellow",
15
+ success: "green"
16
+ };
11
17
  function StatusBadge({ status, children, ...props }) {
12
18
  return /* @__PURE__ */ jsx(Badge, { color: statusColorMap[status], variant: "light", ...props, children });
13
19
  }
20
+ function LabelTag({ tone = "neutral", label, ...props }) {
21
+ return /* @__PURE__ */ jsx(Badge, { color: labelTagColorMap[tone], variant: "outline", ...props, children: label });
22
+ }
23
+ function CountBadge({ value, cap = 99, srLabel, ...props }) {
24
+ const normalizedValue = Number.isFinite(value) ? Math.max(0, Math.floor(value)) : 0;
25
+ const normalizedCap = Math.max(1, Math.floor(cap));
26
+ const displayValue = normalizedValue > normalizedCap ? `${normalizedCap}+` : String(normalizedValue);
27
+ return /* @__PURE__ */ jsx(Badge, { color: "violet", variant: "filled", "aria-label": srLabel, ...props, children: displayValue });
28
+ }
14
29
 
15
30
  // src/EmptyState.tsx
16
31
  import { Stack, Text, Title, Box } from "@mantine/core";
@@ -631,6 +646,22 @@ function FormField({ label, description, error, children }) {
631
646
  ] }) });
632
647
  }
633
648
 
649
+ // src/CardContracts.ts
650
+ var gdsCardSizePaddingMap = {
651
+ xs: "xs",
652
+ sm: "sm",
653
+ md: "md",
654
+ lg: "lg",
655
+ xl: "xl"
656
+ };
657
+ var gdsCardTitleOrderMap = {
658
+ xs: 6,
659
+ sm: 5,
660
+ md: 4,
661
+ lg: 4,
662
+ xl: 3
663
+ };
664
+
634
665
  // src/ListingCard.tsx
635
666
  import { ActionIcon as ActionIcon2, AspectRatio, Badge as Badge4, Card, Group as Group6, Stack as Stack8, Text as Text7, ThemeIcon, Title as Title5 } from "@mantine/core";
636
667
  import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
@@ -701,17 +732,27 @@ function ListingCard({
701
732
  primaryAction,
702
733
  saveAction,
703
734
  shareAction,
704
- compact = false
735
+ compact = false,
736
+ size = "md",
737
+ interactiveMode = "none",
738
+ revealContent,
739
+ onSurfaceActivate,
740
+ defaultFlipped = false
705
741
  }) {
742
+ const cardPadding = compact ? "md" : gdsCardSizePaddingMap[size];
706
743
  const titleContent = href && typeof title === "string" ? /* @__PURE__ */ jsx10(Text7, { component: "a", href, inherit: true, td: "none", children: title }) : title;
707
- return /* @__PURE__ */ jsx10(Card, { withBorder: true, radius: "lg", padding: compact ? "md" : "lg", children: /* @__PURE__ */ jsxs8(Stack8, { gap: compact ? "sm" : "md", children: [
744
+ const interactiveProps = interactiveMode === "surface-link" && href ? { component: "a", href } : interactiveMode === "surface-button" ? { component: "button", type: "button", onClick: onSurfaceActivate } : {};
745
+ if (interactiveMode === "flip" && defaultFlipped && revealContent) {
746
+ return /* @__PURE__ */ jsx10(Card, { withBorder: true, radius: "lg", padding: cardPadding, children: /* @__PURE__ */ jsx10(Stack8, { gap: "sm", children: revealContent }) });
747
+ }
748
+ return /* @__PURE__ */ jsx10(Card, { withBorder: true, radius: "lg", padding: cardPadding, ...interactiveProps, children: /* @__PURE__ */ jsxs8(Stack8, { gap: compact ? "sm" : "md", children: [
708
749
  image ?? /* @__PURE__ */ jsx10(ListingImageFallback, { mediaRatio }),
709
750
  featured || sponsoredDisclosure ? /* @__PURE__ */ jsxs8(Group6, { justify: "space-between", gap: "sm", wrap: "wrap", children: [
710
751
  featured ? /* @__PURE__ */ jsx10(Badge4, { variant: "light", color: "violet", children: "Featured" }) : /* @__PURE__ */ jsx10("span", {}),
711
752
  sponsoredDisclosure ? /* @__PURE__ */ jsx10(Text7, { size: "xs", c: "dimmed", children: sponsoredDisclosure }) : null
712
753
  ] }) : null,
713
754
  /* @__PURE__ */ jsxs8(Stack8, { gap: 4, children: [
714
- /* @__PURE__ */ jsx10(Title5, { order: compact ? 5 : 4, lineClamp: 2, children: titleContent }),
755
+ /* @__PURE__ */ jsx10(Title5, { order: compact ? 5 : gdsCardTitleOrderMap[size], lineClamp: 2, children: titleContent }),
715
756
  description ? /* @__PURE__ */ jsx10(Text7, { size: "sm", c: "dimmed", lineClamp: compact ? 2 : 3, children: description }) : null
716
757
  ] }),
717
758
  metadata.length ? /* @__PURE__ */ jsx10(Stack8, { gap: "xs", children: metadata.map((item) => /* @__PURE__ */ jsxs8(Group6, { justify: "space-between", align: "flex-start", gap: "sm", wrap: "nowrap", children: [
@@ -726,7 +767,8 @@ function ListingCard({
726
767
  /* @__PURE__ */ jsxs8(Group6, { gap: "xs", wrap: "nowrap", justify: "flex-end", style: { marginInlineStart: "auto" }, children: [
727
768
  saveAction ? /* @__PURE__ */ jsx10(ListingAffordance, { affordance: saveAction }) : null,
728
769
  shareAction ? /* @__PURE__ */ jsx10(ListingAffordance, { affordance: shareAction }) : null,
729
- primaryAction
770
+ primaryAction,
771
+ interactiveMode === "flip" && revealContent ? /* @__PURE__ */ jsx10(Text7, { size: "xs", c: "dimmed", children: "Flip mode supports reveal surfaces." }) : null
730
772
  ] })
731
773
  ] })
732
774
  ] }) });
@@ -1028,16 +1070,17 @@ function ProductCard({
1028
1070
  metadata = [],
1029
1071
  primaryAction,
1030
1072
  secondaryActions = [],
1031
- footer
1073
+ footer,
1074
+ size = "md"
1032
1075
  }) {
1033
1076
  const MoreIcon = GdsIcons.Menu;
1034
- return /* @__PURE__ */ jsx18(Card5, { withBorder: true, radius: "lg", padding: "lg", children: /* @__PURE__ */ jsxs13(Stack13, { gap: "md", children: [
1077
+ return /* @__PURE__ */ jsx18(Card5, { withBorder: true, radius: "lg", padding: gdsCardSizePaddingMap[size], children: /* @__PURE__ */ jsxs13(Stack13, { gap: "md", children: [
1035
1078
  media,
1036
1079
  /* @__PURE__ */ jsxs13(Group10, { justify: "space-between", align: "flex-start", wrap: "nowrap", children: [
1037
1080
  /* @__PURE__ */ jsxs13(Group10, { align: "flex-start", gap: "sm", wrap: "nowrap", children: [
1038
1081
  icon ? /* @__PURE__ */ jsx18(ThemeIcon4, { variant: "light", size: "xl", radius: "xl", "aria-hidden": true, children: icon }) : null,
1039
1082
  /* @__PURE__ */ jsxs13(Stack13, { gap: 4, children: [
1040
- /* @__PURE__ */ jsx18(Title10, { order: 4, children: title }),
1083
+ /* @__PURE__ */ jsx18(Title10, { order: gdsCardTitleOrderMap[size], children: title }),
1041
1084
  description ? /* @__PURE__ */ jsx18(Text12, { size: "sm", c: "dimmed", lineClamp: 3, children: description }) : null
1042
1085
  ] })
1043
1086
  ] }),
@@ -1121,8 +1164,11 @@ function PublicProductCard({
1121
1164
  secondaryAction,
1122
1165
  metadata = [],
1123
1166
  compact = false,
1167
+ size = "md",
1124
1168
  loading = false,
1125
- disabled = false
1169
+ disabled = false,
1170
+ interactiveMode = "none",
1171
+ onSurfaceActivate
1126
1172
  }) {
1127
1173
  if (loading) {
1128
1174
  return /* @__PURE__ */ jsx19(LoadingCard, { compact });
@@ -1138,11 +1184,12 @@ function PublicProductCard({
1138
1184
  const pickupHelper = helperKind === "pickup" ? helperText : pickupNote;
1139
1185
  const inventoryHelper = helperKind === "inventory" ? helperText : inventoryNote;
1140
1186
  const hasSupportingRegion = Boolean(price || supportingHelper || pickupHelper || inventoryHelper);
1141
- return /* @__PURE__ */ jsx19(Card6, { withBorder: true, radius: "lg", padding: compact ? "md" : "lg", children: /* @__PURE__ */ jsxs14(Stack14, { gap: compact ? "sm" : "md", children: [
1187
+ const interactiveProps = interactiveMode === "surface-button" ? { component: "button", type: "button", onClick: onSurfaceActivate } : {};
1188
+ return /* @__PURE__ */ jsx19(Card6, { withBorder: true, radius: "lg", padding: compact ? "md" : gdsCardSizePaddingMap[size], ...interactiveProps, children: /* @__PURE__ */ jsxs14(Stack14, { gap: compact ? "sm" : "md", children: [
1142
1189
  image ?? /* @__PURE__ */ jsx19(ImageFallback, { compact }),
1143
1190
  /* @__PURE__ */ jsxs14(Group11, { justify: "space-between", align: "flex-start", wrap: "nowrap", gap: "sm", children: [
1144
1191
  /* @__PURE__ */ jsxs14(Stack14, { gap: 4, style: { minWidth: 0, flex: 1 }, children: [
1145
- /* @__PURE__ */ jsx19(Title11, { order: compact ? 5 : 4, lineClamp: 2, children: title }),
1192
+ /* @__PURE__ */ jsx19(Title11, { order: compact ? 5 : gdsCardTitleOrderMap[size], lineClamp: 2, children: title }),
1146
1193
  description ? /* @__PURE__ */ jsx19(Text13, { size: "sm", c: "dimmed", lineClamp: compact ? 2 : 3, children: description }) : null
1147
1194
  ] }),
1148
1195
  /* @__PURE__ */ jsx19(Badge9, { variant: "light", color: stateBadge.color, children: stateBadge.label })
@@ -1514,16 +1561,205 @@ function DetailProfileShell({
1514
1561
  ] }) });
1515
1562
  }
1516
1563
 
1564
+ // src/AsyncSurface.tsx
1565
+ import { Fragment as Fragment4, jsx as jsx25 } from "react/jsx-runtime";
1566
+ function getRetryAction(onRetry) {
1567
+ if (!onRetry) {
1568
+ return void 0;
1569
+ }
1570
+ return /* @__PURE__ */ jsx25("button", { type: "button", onClick: onRetry, children: "Retry" });
1571
+ }
1572
+ function renderStateBlock({
1573
+ variant,
1574
+ title,
1575
+ description,
1576
+ compact,
1577
+ presentation,
1578
+ minHeight,
1579
+ contentAlign,
1580
+ contentJustify,
1581
+ action
1582
+ }) {
1583
+ return /* @__PURE__ */ jsx25(
1584
+ StateBlock,
1585
+ {
1586
+ variant,
1587
+ title,
1588
+ description,
1589
+ action,
1590
+ compact,
1591
+ presentation,
1592
+ minHeight,
1593
+ contentAlign,
1594
+ contentJustify
1595
+ }
1596
+ );
1597
+ }
1598
+ function AsyncSurface({
1599
+ state,
1600
+ successContent,
1601
+ idleContent,
1602
+ loadingTitle = "Loading",
1603
+ loadingDescription = "This surface is still synchronizing.",
1604
+ emptyTitle = "No results",
1605
+ emptyDescription = "No data is available for this surface yet.",
1606
+ errorTitle = "Unable to load",
1607
+ errorDescription = "Something went wrong while preparing this surface.",
1608
+ refreshingTitle = "Refreshing",
1609
+ refreshingDescription = "The latest data is being fetched.",
1610
+ onRetry,
1611
+ retryAction,
1612
+ compact = false,
1613
+ presentation = "inline",
1614
+ minHeight,
1615
+ contentAlign,
1616
+ contentJustify
1617
+ }) {
1618
+ const fallbackRetryAction = retryAction ?? getRetryAction(onRetry);
1619
+ if (state === "success") {
1620
+ return /* @__PURE__ */ jsx25(Fragment4, { children: successContent });
1621
+ }
1622
+ if (state === "idle") {
1623
+ return /* @__PURE__ */ jsx25(Fragment4, { children: idleContent ?? successContent ?? null });
1624
+ }
1625
+ if (state === "loading") {
1626
+ return renderStateBlock({
1627
+ variant: "loading",
1628
+ title: loadingTitle,
1629
+ description: loadingDescription,
1630
+ compact,
1631
+ presentation,
1632
+ minHeight,
1633
+ contentAlign,
1634
+ contentJustify
1635
+ });
1636
+ }
1637
+ if (state === "empty") {
1638
+ return renderStateBlock({
1639
+ variant: "empty",
1640
+ title: emptyTitle,
1641
+ description: emptyDescription,
1642
+ compact,
1643
+ presentation,
1644
+ minHeight,
1645
+ contentAlign,
1646
+ contentJustify,
1647
+ action: fallbackRetryAction
1648
+ });
1649
+ }
1650
+ if (state === "error") {
1651
+ return renderStateBlock({
1652
+ variant: "error",
1653
+ title: errorTitle,
1654
+ description: errorDescription,
1655
+ compact,
1656
+ presentation,
1657
+ minHeight,
1658
+ contentAlign,
1659
+ contentJustify,
1660
+ action: fallbackRetryAction
1661
+ });
1662
+ }
1663
+ return renderStateBlock({
1664
+ variant: "info",
1665
+ title: refreshingTitle,
1666
+ description: refreshingDescription,
1667
+ compact,
1668
+ presentation,
1669
+ minHeight,
1670
+ contentAlign,
1671
+ contentJustify
1672
+ });
1673
+ }
1674
+
1675
+ // src/ListingPrimitives.tsx
1676
+ import { Badge as Badge13, Button as Button3, Group as Group16, Select, Stack as Stack20, Text as Text17 } from "@mantine/core";
1677
+ import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
1678
+ function ActiveFilterChips({
1679
+ filters,
1680
+ emptyLabel = "No active filters."
1681
+ }) {
1682
+ if (!filters.length) {
1683
+ return /* @__PURE__ */ jsx26(Text17, { size: "sm", c: "dimmed", children: emptyLabel });
1684
+ }
1685
+ return /* @__PURE__ */ jsx26(Group16, { gap: "xs", children: filters.map((filter) => /* @__PURE__ */ jsx26(
1686
+ Badge13,
1687
+ {
1688
+ variant: "light",
1689
+ rightSection: filter.onRemove ? "\xD7" : void 0,
1690
+ style: filter.onRemove ? { cursor: "pointer" } : void 0,
1691
+ onClick: filter.onRemove,
1692
+ children: filter.label
1693
+ },
1694
+ filter.id
1695
+ )) });
1696
+ }
1697
+ function ResultSummary({
1698
+ resultCount,
1699
+ noun = "results",
1700
+ description
1701
+ }) {
1702
+ return /* @__PURE__ */ jsxs20(Stack20, { gap: 2, children: [
1703
+ /* @__PURE__ */ jsxs20(Text17, { size: "sm", fw: 600, children: [
1704
+ resultCount,
1705
+ " ",
1706
+ noun
1707
+ ] }),
1708
+ description ? /* @__PURE__ */ jsx26(Text17, { size: "xs", c: "dimmed", children: description }) : null
1709
+ ] });
1710
+ }
1711
+ function SortMenu({
1712
+ value,
1713
+ options,
1714
+ onChange,
1715
+ label = "Sort"
1716
+ }) {
1717
+ return /* @__PURE__ */ jsx26(
1718
+ Select,
1719
+ {
1720
+ "aria-label": label,
1721
+ label,
1722
+ value,
1723
+ data: options,
1724
+ onChange: (next) => {
1725
+ if (next) {
1726
+ onChange?.(next);
1727
+ }
1728
+ },
1729
+ w: 220
1730
+ }
1731
+ );
1732
+ }
1733
+ function BulkActionsBar({
1734
+ selectedCount,
1735
+ actions,
1736
+ clearAction
1737
+ }) {
1738
+ if (selectedCount <= 0) {
1739
+ return null;
1740
+ }
1741
+ return /* @__PURE__ */ jsxs20(Group16, { justify: "space-between", align: "center", children: [
1742
+ /* @__PURE__ */ jsxs20(Text17, { size: "sm", fw: 600, children: [
1743
+ selectedCount,
1744
+ " selected"
1745
+ ] }),
1746
+ /* @__PURE__ */ jsxs20(Group16, { gap: "xs", children: [
1747
+ actions,
1748
+ clearAction ?? /* @__PURE__ */ jsx26(Button3, { variant: "subtle", size: "xs", children: "Clear selection" })
1749
+ ] })
1750
+ ] });
1751
+ }
1752
+
1517
1753
  // src/PublicNav.tsx
1518
- import { Anchor as Anchor4, Group as Group16 } from "@mantine/core";
1519
- import { jsx as jsx25 } from "react/jsx-runtime";
1754
+ import { Anchor as Anchor4, Group as Group17 } from "@mantine/core";
1755
+ import { jsx as jsx27 } from "react/jsx-runtime";
1520
1756
  function PublicNav({ items, activeId, renderLink }) {
1521
- return /* @__PURE__ */ jsx25(Group16, { component: "nav", "aria-label": "Primary", gap: "lg", wrap: "nowrap", children: items.map((item) => {
1757
+ return /* @__PURE__ */ jsx27(Group17, { component: "nav", "aria-label": "Primary", gap: "lg", wrap: "nowrap", children: items.map((item) => {
1522
1758
  const active = item.id === activeId;
1523
1759
  if (renderLink) {
1524
- return /* @__PURE__ */ jsx25("span", { children: renderLink(item, active) }, item.id);
1760
+ return /* @__PURE__ */ jsx27("span", { children: renderLink(item, active) }, item.id);
1525
1761
  }
1526
- return /* @__PURE__ */ jsx25(
1762
+ return /* @__PURE__ */ jsx27(
1527
1763
  Anchor4,
1528
1764
  {
1529
1765
  href: item.href,
@@ -1541,15 +1777,15 @@ function PublicNav({ items, activeId, renderLink }) {
1541
1777
  }
1542
1778
 
1543
1779
  // src/PublicShell.tsx
1544
- import { AppShell, Box as Box8, Burger, Container, Group as Group17, Stack as Stack20, Text as Text17 } from "@mantine/core";
1545
- import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
1780
+ import { AppShell, Box as Box8, Burger, Container, Group as Group18, Stack as Stack21, Text as Text18 } from "@mantine/core";
1781
+ import { jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
1546
1782
  function InlineMobileNavigation({
1547
1783
  mobileNavigation,
1548
1784
  className,
1549
1785
  mode
1550
1786
  }) {
1551
- return /* @__PURE__ */ jsxs20(Box8, { component: "details", hiddenFrom: "sm", className, children: [
1552
- /* @__PURE__ */ jsxs20(
1787
+ return /* @__PURE__ */ jsxs21(Box8, { component: "details", hiddenFrom: "sm", className, children: [
1788
+ /* @__PURE__ */ jsxs21(
1553
1789
  Box8,
1554
1790
  {
1555
1791
  component: "summary",
@@ -1562,12 +1798,12 @@ function InlineMobileNavigation({
1562
1798
  gap: "0.5rem"
1563
1799
  },
1564
1800
  children: [
1565
- /* @__PURE__ */ jsx26(Burger, { opened: false, "aria-hidden": true }),
1566
- /* @__PURE__ */ jsx26(Text17, { size: "sm", fw: 600, children: "Menu" })
1801
+ /* @__PURE__ */ jsx28(Burger, { opened: false, "aria-hidden": true }),
1802
+ /* @__PURE__ */ jsx28(Text18, { size: "sm", fw: 600, children: "Menu" })
1567
1803
  ]
1568
1804
  }
1569
1805
  ),
1570
- /* @__PURE__ */ jsx26(
1806
+ /* @__PURE__ */ jsx28(
1571
1807
  Box8,
1572
1808
  {
1573
1809
  mt: "sm",
@@ -1577,7 +1813,7 @@ function InlineMobileNavigation({
1577
1813
  border: "1px solid var(--mantine-color-default-border)",
1578
1814
  background: mode === "drawer" ? "light-dark(var(--mantine-color-white), color-mix(in srgb, var(--mantine-color-dark-7) 92%, black))" : "var(--mantine-color-body)"
1579
1815
  },
1580
- children: /* @__PURE__ */ jsx26(Stack20, { gap: "sm", children: mobileNavigation })
1816
+ children: /* @__PURE__ */ jsx28(Stack21, { gap: "sm", children: mobileNavigation })
1581
1817
  }
1582
1818
  )
1583
1819
  ] });
@@ -1598,13 +1834,13 @@ function PublicShell({
1598
1834
  mobileNavigationMode = "sheet",
1599
1835
  classNames
1600
1836
  }) {
1601
- const resolvedNavigation = navigation ?? (navItems ? /* @__PURE__ */ jsx26(PublicNav, { items: navItems, activeId: activeNavId }) : null);
1837
+ const resolvedNavigation = navigation ?? (navItems ? /* @__PURE__ */ jsx28(PublicNav, { items: navItems, activeId: activeNavId }) : null);
1602
1838
  const containerSize = maxContentWidth ?? (compact ? "md" : "lg");
1603
1839
  const headerHeight = headerVariant === "compact" ? 64 : headerVariant === "branded-quiet" ? 88 : 72;
1604
1840
  const mainPadding = headerVariant === "compact" ? "lg" : "xl";
1605
1841
  const usesInlineMobileNavigation = Boolean(mobileNavigation) && mobileNavigationMode !== "sheet";
1606
1842
  const usesSheetMobileNavigation = Boolean(mobileNavigation) && mobileNavigationMode === "sheet";
1607
- return /* @__PURE__ */ jsxs20(
1843
+ return /* @__PURE__ */ jsxs21(
1608
1844
  AppShell,
1609
1845
  {
1610
1846
  className: classNames?.root,
@@ -1612,16 +1848,16 @@ function PublicShell({
1612
1848
  footer: usesSheetMobileNavigation ? { height: 68 } : void 0,
1613
1849
  padding: 0,
1614
1850
  children: [
1615
- /* @__PURE__ */ jsx26(AppShell.Header, { withBorder: headerBordered, className: classNames?.header, "data-header-variant": headerVariant, children: /* @__PURE__ */ jsx26(Container, { size: containerSize, h: "100%", py: headerVariant === "branded-quiet" ? "sm" : 0, children: /* @__PURE__ */ jsxs20(
1616
- Group17,
1851
+ /* @__PURE__ */ jsx28(AppShell.Header, { withBorder: headerBordered, className: classNames?.header, "data-header-variant": headerVariant, children: /* @__PURE__ */ jsx28(Container, { size: containerSize, h: "100%", py: headerVariant === "branded-quiet" ? "sm" : 0, children: /* @__PURE__ */ jsxs21(
1852
+ Group18,
1617
1853
  {
1618
1854
  h: "100%",
1619
1855
  justify: "space-between",
1620
1856
  wrap: "nowrap",
1621
1857
  gap: headerVariant === "compact" ? "sm" : "lg",
1622
1858
  children: [
1623
- /* @__PURE__ */ jsxs20(Group17, { wrap: "nowrap", gap: headerVariant === "compact" ? "xs" : "sm", className: classNames?.brand, children: [
1624
- usesInlineMobileNavigation ? /* @__PURE__ */ jsx26(
1859
+ /* @__PURE__ */ jsxs21(Group18, { wrap: "nowrap", gap: headerVariant === "compact" ? "xs" : "sm", className: classNames?.brand, children: [
1860
+ usesInlineMobileNavigation ? /* @__PURE__ */ jsx28(
1625
1861
  InlineMobileNavigation,
1626
1862
  {
1627
1863
  mobileNavigation,
@@ -1629,17 +1865,17 @@ function PublicShell({
1629
1865
  mode: mobileNavigationMode
1630
1866
  }
1631
1867
  ) : null,
1632
- /* @__PURE__ */ jsx26(Box8, { children: brand })
1868
+ /* @__PURE__ */ jsx28(Box8, { children: brand })
1633
1869
  ] }),
1634
- /* @__PURE__ */ jsx26(Group17, { visibleFrom: "sm", gap: headerVariant === "compact" ? "md" : "lg", className: classNames?.navigation, children: resolvedNavigation }),
1635
- /* @__PURE__ */ jsx26(Group17, { gap: "sm", className: classNames?.actions, children: actions })
1870
+ /* @__PURE__ */ jsx28(Group18, { visibleFrom: "sm", gap: headerVariant === "compact" ? "md" : "lg", className: classNames?.navigation, children: resolvedNavigation }),
1871
+ /* @__PURE__ */ jsx28(Group18, { gap: "sm", className: classNames?.actions, children: actions })
1636
1872
  ]
1637
1873
  }
1638
1874
  ) }) }),
1639
- usesSheetMobileNavigation ? /* @__PURE__ */ jsx26(AppShell.Footer, { withBorder: true, children: /* @__PURE__ */ jsx26(Container, { size: containerSize, h: "100%", children: /* @__PURE__ */ jsx26(Group17, { h: "100%", justify: "space-around", wrap: "nowrap", children: mobileNavigation }) }) }) : null,
1640
- /* @__PURE__ */ jsxs20(AppShell.Main, { children: [
1641
- /* @__PURE__ */ jsx26(Container, { size: containerSize, py: mainPadding, className: classNames?.content, children: /* @__PURE__ */ jsx26(Stack20, { gap: "xl", children }) }),
1642
- footer ? /* @__PURE__ */ jsx26(Box8, { component: typeof footer === "string" ? "footer" : "div", py: "xl", children: /* @__PURE__ */ jsx26(Container, { size: containerSize, children: typeof footer === "string" ? /* @__PURE__ */ jsx26(Text17, { size: "sm", c: "dimmed", children: footer }) : footer }) }) : null
1875
+ usesSheetMobileNavigation ? /* @__PURE__ */ jsx28(AppShell.Footer, { withBorder: true, children: /* @__PURE__ */ jsx28(Container, { size: containerSize, h: "100%", children: /* @__PURE__ */ jsx28(Group18, { h: "100%", justify: "space-around", wrap: "nowrap", children: mobileNavigation }) }) }) : null,
1876
+ /* @__PURE__ */ jsxs21(AppShell.Main, { children: [
1877
+ /* @__PURE__ */ jsx28(Container, { size: containerSize, py: mainPadding, className: classNames?.content, children: /* @__PURE__ */ jsx28(Stack21, { gap: "xl", children }) }),
1878
+ footer ? /* @__PURE__ */ jsx28(Box8, { component: typeof footer === "string" ? "footer" : "div", py: "xl", children: /* @__PURE__ */ jsx28(Container, { size: containerSize, children: typeof footer === "string" ? /* @__PURE__ */ jsx28(Text18, { size: "sm", c: "dimmed", children: footer }) : footer }) }) : null
1643
1879
  ] })
1644
1880
  ]
1645
1881
  }
@@ -1647,18 +1883,18 @@ function PublicShell({
1647
1883
  }
1648
1884
 
1649
1885
  // src/PublicSiteFooter.tsx
1650
- import { Group as Group18, Stack as Stack21, Text as Text18 } from "@mantine/core";
1651
- import { jsx as jsx27, jsxs as jsxs21 } from "react/jsx-runtime";
1886
+ import { Group as Group19, Stack as Stack22, Text as Text19 } from "@mantine/core";
1887
+ import { jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
1652
1888
  function PublicSiteFooter({ children, meta }) {
1653
- return /* @__PURE__ */ jsxs21(Stack21, { component: "footer", gap: "xs", children: [
1654
- children ? /* @__PURE__ */ jsx27(Text18, { size: "sm", children }) : null,
1655
- meta ? /* @__PURE__ */ jsx27(Group18, { gap: "sm", children: /* @__PURE__ */ jsx27(Text18, { size: "xs", c: "dimmed", children: meta }) }) : null
1889
+ return /* @__PURE__ */ jsxs22(Stack22, { component: "footer", gap: "xs", children: [
1890
+ children ? /* @__PURE__ */ jsx29(Text19, { size: "sm", children }) : null,
1891
+ meta ? /* @__PURE__ */ jsx29(Group19, { gap: "sm", children: /* @__PURE__ */ jsx29(Text19, { size: "xs", c: "dimmed", children: meta }) }) : null
1656
1892
  ] });
1657
1893
  }
1658
1894
 
1659
1895
  // src/PublicBrandFooter.tsx
1660
- import { Box as Box9, Divider as Divider3, Grid, Group as Group19, Paper as Paper6, Stack as Stack22, Text as Text19, Title as Title15 } from "@mantine/core";
1661
- import { Fragment as Fragment4, jsx as jsx28, jsxs as jsxs22 } from "react/jsx-runtime";
1896
+ import { Box as Box9, Divider as Divider3, Grid, Group as Group20, Paper as Paper6, Stack as Stack23, Text as Text20, Title as Title15 } from "@mantine/core";
1897
+ import { Fragment as Fragment5, jsx as jsx30, jsxs as jsxs23 } from "react/jsx-runtime";
1662
1898
  function PublicBrandFooter({
1663
1899
  media,
1664
1900
  brandTitle,
@@ -1673,7 +1909,7 @@ function PublicBrandFooter({
1673
1909
  const mediaSpan = layoutVariant === "immersive-media" ? 5 : 4;
1674
1910
  const primarySpan = media ? layoutVariant === "balanced-quote" ? 4 : 4 : secondary ? 6 : 12;
1675
1911
  const secondarySpan = media ? Math.max(3, 12 - mediaSpan - primarySpan) : Math.max(4, 12 - primarySpan);
1676
- return /* @__PURE__ */ jsx28(
1912
+ return /* @__PURE__ */ jsx30(
1677
1913
  Paper6,
1678
1914
  {
1679
1915
  component: "footer",
@@ -1682,19 +1918,19 @@ function PublicBrandFooter({
1682
1918
  p: compact ? "lg" : "xl",
1683
1919
  className: classNames?.root,
1684
1920
  "data-layout-variant": layoutVariant,
1685
- children: /* @__PURE__ */ jsxs22(Stack22, { gap: "lg", children: [
1686
- /* @__PURE__ */ jsxs22(Grid, { gutter: compact ? "lg" : "xl", align: "flex-start", children: [
1687
- media ? /* @__PURE__ */ jsx28(Grid.Col, { span: { base: 12, md: mediaSpan }, children: /* @__PURE__ */ jsx28(Box9, { className: classNames?.media, children: media }) }) : null,
1688
- /* @__PURE__ */ jsx28(Grid.Col, { span: { base: 12, md: primarySpan }, children: /* @__PURE__ */ jsxs22(Stack22, { gap: compact ? "xs" : "sm", className: classNames?.primary, children: [
1689
- brandTitle ? /* @__PURE__ */ jsx28(Title15, { order: 4, children: brandTitle }) : null,
1690
- description ? /* @__PURE__ */ jsx28(Text19, { c: "dimmed", children: description }) : null,
1691
- actions ? /* @__PURE__ */ jsx28(Box9, { children: actions }) : null
1921
+ children: /* @__PURE__ */ jsxs23(Stack23, { gap: "lg", children: [
1922
+ /* @__PURE__ */ jsxs23(Grid, { gutter: compact ? "lg" : "xl", align: "flex-start", children: [
1923
+ media ? /* @__PURE__ */ jsx30(Grid.Col, { span: { base: 12, md: mediaSpan }, children: /* @__PURE__ */ jsx30(Box9, { className: classNames?.media, children: media }) }) : null,
1924
+ /* @__PURE__ */ jsx30(Grid.Col, { span: { base: 12, md: primarySpan }, children: /* @__PURE__ */ jsxs23(Stack23, { gap: compact ? "xs" : "sm", className: classNames?.primary, children: [
1925
+ brandTitle ? /* @__PURE__ */ jsx30(Title15, { order: 4, children: brandTitle }) : null,
1926
+ description ? /* @__PURE__ */ jsx30(Text20, { c: "dimmed", children: description }) : null,
1927
+ actions ? /* @__PURE__ */ jsx30(Box9, { children: actions }) : null
1692
1928
  ] }) }),
1693
- secondary ? /* @__PURE__ */ jsx28(Grid.Col, { span: { base: 12, md: secondarySpan }, children: /* @__PURE__ */ jsx28(Stack22, { gap: compact ? "xs" : "sm", className: classNames?.secondary, children: secondary }) }) : null
1929
+ secondary ? /* @__PURE__ */ jsx30(Grid.Col, { span: { base: 12, md: secondarySpan }, children: /* @__PURE__ */ jsx30(Stack23, { gap: compact ? "xs" : "sm", className: classNames?.secondary, children: secondary }) }) : null
1694
1930
  ] }),
1695
- legal ? /* @__PURE__ */ jsxs22(Fragment4, { children: [
1696
- /* @__PURE__ */ jsx28(Divider3, {}),
1697
- /* @__PURE__ */ jsx28(Group19, { justify: "space-between", gap: "sm", wrap: "wrap", className: classNames?.legal, children: typeof legal === "string" ? /* @__PURE__ */ jsx28(Text19, { size: "sm", c: "dimmed", children: legal }) : legal })
1931
+ legal ? /* @__PURE__ */ jsxs23(Fragment5, { children: [
1932
+ /* @__PURE__ */ jsx30(Divider3, {}),
1933
+ /* @__PURE__ */ jsx30(Group20, { justify: "space-between", gap: "sm", wrap: "wrap", className: classNames?.legal, children: typeof legal === "string" ? /* @__PURE__ */ jsx30(Text20, { size: "sm", c: "dimmed", children: legal }) : legal })
1698
1934
  ] }) : null
1699
1935
  ] })
1700
1936
  }
@@ -1702,8 +1938,8 @@ function PublicBrandFooter({
1702
1938
  }
1703
1939
 
1704
1940
  // src/AuthShell.tsx
1705
- import { Alert, Badge as Badge13, Box as Box10, Card as Card8, Container as Container2, Divider as Divider4, Group as Group20, Stack as Stack23, Text as Text20, Title as Title16 } from "@mantine/core";
1706
- import { jsx as jsx29, jsxs as jsxs23 } from "react/jsx-runtime";
1941
+ import { Alert, Badge as Badge14, Box as Box10, Card as Card8, Container as Container2, Divider as Divider4, Group as Group21, Stack as Stack24, Text as Text21, Title as Title16 } from "@mantine/core";
1942
+ import { jsx as jsx31, jsxs as jsxs24 } from "react/jsx-runtime";
1707
1943
  function AuthShell({
1708
1944
  title,
1709
1945
  description,
@@ -1719,34 +1955,34 @@ function AuthShell({
1719
1955
  dividerLabel = "Or continue with your account",
1720
1956
  children
1721
1957
  }) {
1722
- return /* @__PURE__ */ jsx29(Box10, { py: { base: "xl", md: "4rem" }, children: /* @__PURE__ */ jsx29(Container2, { size: "xs", children: /* @__PURE__ */ jsxs23(Stack23, { gap: "xl", children: [
1723
- brand || headerActions ? /* @__PURE__ */ jsxs23(Group20, { justify: brand && headerActions ? "space-between" : "center", align: "center", children: [
1724
- brand ? /* @__PURE__ */ jsx29(Box10, { children: brand }) : /* @__PURE__ */ jsx29(Box10, {}),
1725
- headerActions ? /* @__PURE__ */ jsx29(Group20, { gap: "sm", children: headerActions }) : null
1958
+ return /* @__PURE__ */ jsx31(Box10, { py: { base: "xl", md: "4rem" }, children: /* @__PURE__ */ jsx31(Container2, { size: "xs", children: /* @__PURE__ */ jsxs24(Stack24, { gap: "xl", children: [
1959
+ brand || headerActions ? /* @__PURE__ */ jsxs24(Group21, { justify: brand && headerActions ? "space-between" : "center", align: "center", children: [
1960
+ brand ? /* @__PURE__ */ jsx31(Box10, { children: brand }) : /* @__PURE__ */ jsx31(Box10, {}),
1961
+ headerActions ? /* @__PURE__ */ jsx31(Group21, { gap: "sm", children: headerActions }) : null
1726
1962
  ] }) : null,
1727
- /* @__PURE__ */ jsx29(Card8, { withBorder: true, radius: "lg", padding: "xl", children: /* @__PURE__ */ jsxs23(Stack23, { gap: "lg", children: [
1728
- /* @__PURE__ */ jsxs23(Stack23, { gap: "xs", ta: "center", children: [
1729
- /* @__PURE__ */ jsx29(Group20, { justify: "center", children: /* @__PURE__ */ jsx29(Badge13, { variant: "light", color: intent === "account-linking" ? "blue" : intent === "guest-entry" ? "gray" : "teal", children: intent.replace("-", " ") }) }),
1730
- /* @__PURE__ */ jsx29(Title16, { order: 2, children: title }),
1731
- description ? /* @__PURE__ */ jsx29(Text20, { c: "dimmed", size: "sm", children: description }) : null
1963
+ /* @__PURE__ */ jsx31(Card8, { withBorder: true, radius: "lg", padding: "xl", children: /* @__PURE__ */ jsxs24(Stack24, { gap: "lg", children: [
1964
+ /* @__PURE__ */ jsxs24(Stack24, { gap: "xs", ta: "center", children: [
1965
+ /* @__PURE__ */ jsx31(Group21, { justify: "center", children: /* @__PURE__ */ jsx31(Badge14, { variant: "light", color: intent === "account-linking" ? "blue" : intent === "guest-entry" ? "gray" : "teal", children: intent.replace("-", " ") }) }),
1966
+ /* @__PURE__ */ jsx31(Title16, { order: 2, children: title }),
1967
+ description ? /* @__PURE__ */ jsx31(Text21, { c: "dimmed", size: "sm", children: description }) : null
1732
1968
  ] }),
1733
- error ? /* @__PURE__ */ jsx29(Alert, { color: "red", variant: "light", role: "alert", children: error }) : null,
1734
- socialAuth ? /* @__PURE__ */ jsx29(Box10, { children: socialAuth }) : null,
1735
- socialAuth ? /* @__PURE__ */ jsx29(Divider4, { label: dividerLabel, labelPosition: "center" }) : null,
1969
+ error ? /* @__PURE__ */ jsx31(Alert, { color: "red", variant: "light", role: "alert", children: error }) : null,
1970
+ socialAuth ? /* @__PURE__ */ jsx31(Box10, { children: socialAuth }) : null,
1971
+ socialAuth ? /* @__PURE__ */ jsx31(Divider4, { label: dividerLabel, labelPosition: "center" }) : null,
1736
1972
  children,
1737
- guestAction || supportAction ? /* @__PURE__ */ jsxs23(Group20, { justify: "center", gap: "sm", children: [
1973
+ guestAction || supportAction ? /* @__PURE__ */ jsxs24(Group21, { justify: "center", gap: "sm", children: [
1738
1974
  guestAction,
1739
1975
  supportAction
1740
1976
  ] }) : null,
1741
- helper ? /* @__PURE__ */ jsx29(Text20, { size: "sm", c: "dimmed", ta: "center", children: helper }) : null
1977
+ helper ? /* @__PURE__ */ jsx31(Text21, { size: "sm", c: "dimmed", ta: "center", children: helper }) : null
1742
1978
  ] }) }),
1743
- footer ? /* @__PURE__ */ jsx29(Text20, { size: "sm", c: "dimmed", ta: "center", children: footer }) : null
1979
+ footer ? /* @__PURE__ */ jsx31(Text21, { size: "sm", c: "dimmed", ta: "center", children: footer }) : null
1744
1980
  ] }) }) });
1745
1981
  }
1746
1982
 
1747
1983
  // src/ProviderIdentityButtons.tsx
1748
- import { Button as Button3, SimpleGrid as SimpleGrid5, Stack as Stack24, Text as Text21, ThemeIcon as ThemeIcon7 } from "@mantine/core";
1749
- import { jsx as jsx30, jsxs as jsxs24 } from "react/jsx-runtime";
1984
+ import { Button as Button4, SimpleGrid as SimpleGrid5, Stack as Stack25, Text as Text22, ThemeIcon as ThemeIcon7 } from "@mantine/core";
1985
+ import { jsx as jsx32, jsxs as jsxs25 } from "react/jsx-runtime";
1750
1986
  var PROVIDER_IDENTITY_REGISTRY = {
1751
1987
  google: {
1752
1988
  providerLabel: "Google",
@@ -1852,7 +2088,7 @@ function getProviderIdentityPolicy(provider) {
1852
2088
  }
1853
2089
  function ProviderIdentityMark({ provider }) {
1854
2090
  const meta = getProviderIdentityMeta(provider);
1855
- return /* @__PURE__ */ jsx30(
2091
+ return /* @__PURE__ */ jsx32(
1856
2092
  ThemeIcon7,
1857
2093
  {
1858
2094
  variant: "light",
@@ -1860,7 +2096,7 @@ function ProviderIdentityMark({ provider }) {
1860
2096
  radius: "xl",
1861
2097
  size: "md",
1862
2098
  "aria-hidden": "true",
1863
- children: /* @__PURE__ */ jsx30(Text21, { size: "xs", fw: 700, c: "inherit", children: meta.markLabel })
2099
+ children: /* @__PURE__ */ jsx32(Text22, { size: "xs", fw: 700, c: "inherit", children: meta.markLabel })
1864
2100
  }
1865
2101
  );
1866
2102
  }
@@ -1891,8 +2127,8 @@ function ProviderIdentityButton({
1891
2127
  } : {
1892
2128
  onClick
1893
2129
  };
1894
- return /* @__PURE__ */ jsx30(
1895
- Button3,
2130
+ return /* @__PURE__ */ jsx32(
2131
+ Button4,
1896
2132
  {
1897
2133
  variant: mapVariant(variant),
1898
2134
  color: variant === "solid" ? meta.brandColor : void 0,
@@ -1901,17 +2137,17 @@ function ProviderIdentityButton({
1901
2137
  size,
1902
2138
  "aria-label": ariaLabel ?? (typeof buttonLabel === "string" ? buttonLabel : void 0),
1903
2139
  "aria-describedby": describedBy,
1904
- leftSection: /* @__PURE__ */ jsx30(ProviderIdentityMark, { provider }),
2140
+ leftSection: /* @__PURE__ */ jsx32(ProviderIdentityMark, { provider }),
1905
2141
  disabled: resolvedDisabled,
1906
2142
  loading,
1907
2143
  styles: { root: { minHeight: minTouchTargetPx } },
1908
2144
  ...buttonProps,
1909
- children: /* @__PURE__ */ jsxs24(Stack24, { gap: 0, align: "flex-start", children: [
1910
- /* @__PURE__ */ jsx30(Text21, { inherit: true, children: buttonLabel }),
1911
- description ? /* @__PURE__ */ jsx30(Text21, { size: "xs", c: "dimmed", lh: 1.2, children: description }) : null,
1912
- policyNote ? /* @__PURE__ */ jsx30(Text21, { size: "xs", c: "dimmed", lh: 1.2, children: policyNote }) : null,
1913
- tenantDisabledReason ? /* @__PURE__ */ jsx30(Text21, { size: "xs", c: "orange.7", lh: 1.2, children: tenantDisabledReason }) : null,
1914
- error ? /* @__PURE__ */ jsx30(Text21, { size: "xs", c: "red.7", lh: 1.2, role: "alert", children: error }) : null
2145
+ children: /* @__PURE__ */ jsxs25(Stack25, { gap: 0, align: "flex-start", children: [
2146
+ /* @__PURE__ */ jsx32(Text22, { inherit: true, children: buttonLabel }),
2147
+ description ? /* @__PURE__ */ jsx32(Text22, { size: "xs", c: "dimmed", lh: 1.2, children: description }) : null,
2148
+ policyNote ? /* @__PURE__ */ jsx32(Text22, { size: "xs", c: "dimmed", lh: 1.2, children: policyNote }) : null,
2149
+ tenantDisabledReason ? /* @__PURE__ */ jsx32(Text22, { size: "xs", c: "orange.7", lh: 1.2, children: tenantDisabledReason }) : null,
2150
+ error ? /* @__PURE__ */ jsx32(Text22, { size: "xs", c: "red.7", lh: 1.2, role: "alert", children: error }) : null
1915
2151
  ] })
1916
2152
  }
1917
2153
  );
@@ -1922,17 +2158,17 @@ function ProviderIdentityButtonGroup({ providers, layout = "stack" }) {
1922
2158
  }
1923
2159
  const content = providers.map((entry, index) => {
1924
2160
  const key = `${normalizeProviderId(String(entry.provider)) || "provider"}-${index}`;
1925
- return /* @__PURE__ */ jsx30(ProviderIdentityButton, { ...entry }, key);
2161
+ return /* @__PURE__ */ jsx32(ProviderIdentityButton, { ...entry }, key);
1926
2162
  });
1927
2163
  if (layout === "grid") {
1928
- return /* @__PURE__ */ jsx30(SimpleGrid5, { cols: { base: 1, sm: 2 }, spacing: "sm", children: content });
2164
+ return /* @__PURE__ */ jsx32(SimpleGrid5, { cols: { base: 1, sm: 2 }, spacing: "sm", children: content });
1929
2165
  }
1930
- return /* @__PURE__ */ jsx30(Stack24, { gap: "sm", children: content });
2166
+ return /* @__PURE__ */ jsx32(Stack25, { gap: "sm", children: content });
1931
2167
  }
1932
2168
 
1933
2169
  // src/SocialAuthButtons.tsx
1934
- import { Divider as Divider5, Group as Group21, Stack as Stack25, Text as Text22 } from "@mantine/core";
1935
- import { jsx as jsx31, jsxs as jsxs25 } from "react/jsx-runtime";
2170
+ import { Divider as Divider5, Group as Group22, Stack as Stack26, Text as Text23 } from "@mantine/core";
2171
+ import { jsx as jsx33, jsxs as jsxs26 } from "react/jsx-runtime";
1936
2172
  function SocialAuthButtons({
1937
2173
  providers,
1938
2174
  title = "Continue with a trusted provider",
@@ -1957,53 +2193,53 @@ function SocialAuthButtons({
1957
2193
  size: provider.size ?? (compact ? "sm" : "md"),
1958
2194
  variant: provider.variant
1959
2195
  }));
1960
- return /* @__PURE__ */ jsxs25(Stack25, { gap: "md", children: [
1961
- /* @__PURE__ */ jsxs25(Stack25, { gap: 4, ta: "center", children: [
1962
- /* @__PURE__ */ jsxs25(Group21, { justify: "center", gap: "xs", children: [
1963
- /* @__PURE__ */ jsx31(GdsIcons.Login, { size: "1rem" }),
1964
- /* @__PURE__ */ jsx31(Text22, { fw: 600, children: title })
2196
+ return /* @__PURE__ */ jsxs26(Stack26, { gap: "md", children: [
2197
+ /* @__PURE__ */ jsxs26(Stack26, { gap: 4, ta: "center", children: [
2198
+ /* @__PURE__ */ jsxs26(Group22, { justify: "center", gap: "xs", children: [
2199
+ /* @__PURE__ */ jsx33(GdsIcons.Login, { size: "1rem" }),
2200
+ /* @__PURE__ */ jsx33(Text23, { fw: 600, children: title })
1965
2201
  ] }),
1966
- description ? /* @__PURE__ */ jsx31(Text22, { size: "sm", c: "dimmed", children: description }) : null
2202
+ description ? /* @__PURE__ */ jsx33(Text23, { size: "sm", c: "dimmed", children: description }) : null
1967
2203
  ] }),
1968
- /* @__PURE__ */ jsx31(Divider5, {}),
1969
- /* @__PURE__ */ jsx31(ProviderIdentityButtonGroup, { providers: buttons, layout })
2204
+ /* @__PURE__ */ jsx33(Divider5, {}),
2205
+ /* @__PURE__ */ jsx33(ProviderIdentityButtonGroup, { providers: buttons, layout })
1970
2206
  ] });
1971
2207
  }
1972
2208
 
1973
2209
  // src/ArticleShell.tsx
1974
- import { Container as Container3, Group as Group22, Stack as Stack26, Text as Text23, Title as Title17 } from "@mantine/core";
1975
- import { jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
2210
+ import { Container as Container3, Group as Group23, Stack as Stack27, Text as Text24, Title as Title17 } from "@mantine/core";
2211
+ import { jsx as jsx34, jsxs as jsxs27 } from "react/jsx-runtime";
1976
2212
  function ArticleShell({ eyebrow, title, lead, meta, sideRail, children }) {
1977
- return /* @__PURE__ */ jsx32(Container3, { size: "lg", py: "xl", children: /* @__PURE__ */ jsxs26(Group22, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
1978
- /* @__PURE__ */ jsxs26(Stack26, { gap: "lg", maw: 760, flex: 1, children: [
1979
- /* @__PURE__ */ jsxs26(Stack26, { gap: "sm", children: [
1980
- eyebrow ? /* @__PURE__ */ jsx32(Text23, { size: "sm", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
1981
- /* @__PURE__ */ jsx32(Title17, { order: 1, children: title }),
1982
- lead ? /* @__PURE__ */ jsx32(Text23, { size: "lg", c: "dimmed", children: lead }) : null,
1983
- meta ? /* @__PURE__ */ jsx32(Group22, { gap: "md", children: meta }) : null
2213
+ return /* @__PURE__ */ jsx34(Container3, { size: "lg", py: "xl", children: /* @__PURE__ */ jsxs27(Group23, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
2214
+ /* @__PURE__ */ jsxs27(Stack27, { gap: "lg", maw: 760, flex: 1, children: [
2215
+ /* @__PURE__ */ jsxs27(Stack27, { gap: "sm", children: [
2216
+ eyebrow ? /* @__PURE__ */ jsx34(Text24, { size: "sm", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
2217
+ /* @__PURE__ */ jsx34(Title17, { order: 1, children: title }),
2218
+ lead ? /* @__PURE__ */ jsx34(Text24, { size: "lg", c: "dimmed", children: lead }) : null,
2219
+ meta ? /* @__PURE__ */ jsx34(Group23, { gap: "md", children: meta }) : null
1984
2220
  ] }),
1985
- /* @__PURE__ */ jsx32(Stack26, { gap: "md", children })
2221
+ /* @__PURE__ */ jsx34(Stack27, { gap: "md", children })
1986
2222
  ] }),
1987
- sideRail ? /* @__PURE__ */ jsx32(Stack26, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
2223
+ sideRail ? /* @__PURE__ */ jsx34(Stack27, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
1988
2224
  ] }) });
1989
2225
  }
1990
2226
 
1991
2227
  // src/CtaButtonGroup.tsx
1992
- import { Group as Group23, Stack as Stack27 } from "@mantine/core";
1993
- import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
2228
+ import { Group as Group24, Stack as Stack28 } from "@mantine/core";
2229
+ import { jsx as jsx35, jsxs as jsxs28 } from "react/jsx-runtime";
1994
2230
  function CtaButtonGroup({ primary, secondary, tertiary }) {
1995
- return /* @__PURE__ */ jsxs27(Stack27, { gap: "sm", children: [
1996
- /* @__PURE__ */ jsxs27(Group23, { gap: "sm", align: "stretch", children: [
1997
- /* @__PURE__ */ jsx33("div", { children: primary }),
1998
- secondary ? /* @__PURE__ */ jsx33("div", { children: secondary }) : null
2231
+ return /* @__PURE__ */ jsxs28(Stack28, { gap: "sm", children: [
2232
+ /* @__PURE__ */ jsxs28(Group24, { gap: "sm", align: "stretch", children: [
2233
+ /* @__PURE__ */ jsx35("div", { children: primary }),
2234
+ secondary ? /* @__PURE__ */ jsx35("div", { children: secondary }) : null
1999
2235
  ] }),
2000
- tertiary ? /* @__PURE__ */ jsx33("div", { children: tertiary }) : null
2236
+ tertiary ? /* @__PURE__ */ jsx35("div", { children: tertiary }) : null
2001
2237
  ] });
2002
2238
  }
2003
2239
 
2004
2240
  // src/DocsPageShell.tsx
2005
- import { Anchor as Anchor5, Breadcrumbs, Container as Container4, Group as Group24, Stack as Stack28, Text as Text24, Title as Title18 } from "@mantine/core";
2006
- import { jsx as jsx34, jsxs as jsxs28 } from "react/jsx-runtime";
2241
+ import { Anchor as Anchor5, Breadcrumbs, Container as Container4, Group as Group25, Stack as Stack29, Text as Text25, Title as Title18 } from "@mantine/core";
2242
+ import { jsx as jsx36, jsxs as jsxs29 } from "react/jsx-runtime";
2007
2243
  function DocsPageShell({
2008
2244
  breadcrumbs = [],
2009
2245
  title,
@@ -2014,27 +2250,27 @@ function DocsPageShell({
2014
2250
  footerNext,
2015
2251
  children
2016
2252
  }) {
2017
- return /* @__PURE__ */ jsx34(Container4, { fluid: true, py: "xl", px: { base: "md", md: "lg", lg: "xl" }, w: "100%", maw: "100%", children: /* @__PURE__ */ jsxs28(Group24, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
2018
- /* @__PURE__ */ jsxs28(Stack28, { component: "article", gap: "lg", flex: 1, miw: 0, children: [
2019
- breadcrumbs.length ? /* @__PURE__ */ jsx34(Breadcrumbs, { children: breadcrumbs.map(
2020
- (crumb) => crumb.href ? /* @__PURE__ */ jsx34(Anchor5, { href: crumb.href, children: crumb.label }, `${crumb.label}-${crumb.href}`) : /* @__PURE__ */ jsx34(Text24, { children: crumb.label }, crumb.label)
2253
+ return /* @__PURE__ */ jsx36(Container4, { fluid: true, py: "xl", px: { base: "md", md: "lg", lg: "xl" }, w: "100%", maw: "100%", children: /* @__PURE__ */ jsxs29(Group25, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
2254
+ /* @__PURE__ */ jsxs29(Stack29, { component: "article", gap: "lg", flex: 1, miw: 0, children: [
2255
+ breadcrumbs.length ? /* @__PURE__ */ jsx36(Breadcrumbs, { children: breadcrumbs.map(
2256
+ (crumb) => crumb.href ? /* @__PURE__ */ jsx36(Anchor5, { href: crumb.href, children: crumb.label }, `${crumb.label}-${crumb.href}`) : /* @__PURE__ */ jsx36(Text25, { children: crumb.label }, crumb.label)
2021
2257
  ) }) : null,
2022
- /* @__PURE__ */ jsxs28(Stack28, { gap: "sm", children: [
2023
- eyebrow ? /* @__PURE__ */ jsx34(Text24, { size: "sm", fw: 700, c: "dimmed", children: eyebrow }) : null,
2024
- /* @__PURE__ */ jsx34(Title18, { order: 1, children: title }),
2025
- lead ? /* @__PURE__ */ jsx34(Text24, { size: "lg", c: "dimmed", children: lead }) : null,
2026
- meta ? /* @__PURE__ */ jsx34(Group24, { gap: "md", children: meta }) : null
2258
+ /* @__PURE__ */ jsxs29(Stack29, { gap: "sm", children: [
2259
+ eyebrow ? /* @__PURE__ */ jsx36(Text25, { size: "sm", fw: 700, c: "dimmed", children: eyebrow }) : null,
2260
+ /* @__PURE__ */ jsx36(Title18, { order: 1, children: title }),
2261
+ lead ? /* @__PURE__ */ jsx36(Text25, { size: "lg", c: "dimmed", children: lead }) : null,
2262
+ meta ? /* @__PURE__ */ jsx36(Group25, { gap: "md", children: meta }) : null
2027
2263
  ] }),
2028
- /* @__PURE__ */ jsx34(Stack28, { gap: "md", children }),
2029
- footerNext ? /* @__PURE__ */ jsx34(Anchor5, { href: footerNext.href, fw: 600, children: footerNext.label }) : null
2264
+ /* @__PURE__ */ jsx36(Stack29, { gap: "md", children }),
2265
+ footerNext ? /* @__PURE__ */ jsx36(Anchor5, { href: footerNext.href, fw: 600, children: footerNext.label }) : null
2030
2266
  ] }),
2031
- sideRail ? /* @__PURE__ */ jsx34(Stack28, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
2267
+ sideRail ? /* @__PURE__ */ jsx36(Stack29, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
2032
2268
  ] }) });
2033
2269
  }
2034
2270
 
2035
2271
  // src/EditorialHero.tsx
2036
- import { Anchor as Anchor6, AspectRatio as AspectRatio5, Box as Box11, Grid as Grid2, Group as Group25, Paper as Paper7, Skeleton as Skeleton3, Stack as Stack29, Text as Text25, ThemeIcon as ThemeIcon8, Title as Title19 } from "@mantine/core";
2037
- import { jsx as jsx35, jsxs as jsxs29 } from "react/jsx-runtime";
2272
+ import { Anchor as Anchor6, AspectRatio as AspectRatio5, Box as Box11, Grid as Grid2, Group as Group26, Paper as Paper7, Skeleton as Skeleton3, Stack as Stack30, Text as Text26, ThemeIcon as ThemeIcon8, Title as Title19 } from "@mantine/core";
2273
+ import { jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
2038
2274
  function resolveActionVariant(action, index, seenPrimary) {
2039
2275
  const requested = action.variant ?? (index === 0 ? "primary" : "secondary");
2040
2276
  if (requested === "primary" && !seenPrimary) {
@@ -2046,7 +2282,7 @@ function resolveActionVariant(action, index, seenPrimary) {
2046
2282
  return { variant: "default", seenPrimary };
2047
2283
  }
2048
2284
  function HeroAction({ action, variant }) {
2049
- const content = /* @__PURE__ */ jsx35(
2285
+ const content = /* @__PURE__ */ jsx37(
2050
2286
  Anchor6,
2051
2287
  {
2052
2288
  href: action.href,
@@ -2071,7 +2307,7 @@ function HeroAction({ action, variant }) {
2071
2307
  }
2072
2308
  );
2073
2309
  if (!action.href) {
2074
- return /* @__PURE__ */ jsx35(
2310
+ return /* @__PURE__ */ jsx37(
2075
2311
  Box11,
2076
2312
  {
2077
2313
  component: "button",
@@ -2099,22 +2335,22 @@ function HeroAction({ action, variant }) {
2099
2335
  return content;
2100
2336
  }
2101
2337
  function LoadingHero({ compact }) {
2102
- return /* @__PURE__ */ jsx35(Paper7, { withBorder: true, radius: "xl", p: compact ? "lg" : "xl", children: /* @__PURE__ */ jsxs29(Grid2, { gutter: compact ? "lg" : "xl", align: "center", children: [
2103
- /* @__PURE__ */ jsx35(Grid2.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsxs29(Stack29, { gap: "md", children: [
2104
- /* @__PURE__ */ jsx35(Skeleton3, { height: 16, width: 96, radius: "xl" }),
2105
- /* @__PURE__ */ jsx35(Skeleton3, { height: 48, width: "90%", radius: "md" }),
2106
- /* @__PURE__ */ jsx35(Skeleton3, { height: 18, width: "100%", radius: "md" }),
2107
- /* @__PURE__ */ jsx35(Skeleton3, { height: 18, width: "82%", radius: "md" }),
2108
- /* @__PURE__ */ jsxs29(Group25, { children: [
2109
- /* @__PURE__ */ jsx35(Skeleton3, { height: 40, width: 140, radius: "md" }),
2110
- /* @__PURE__ */ jsx35(Skeleton3, { height: 40, width: 140, radius: "md" })
2338
+ return /* @__PURE__ */ jsx37(Paper7, { withBorder: true, radius: "xl", p: compact ? "lg" : "xl", children: /* @__PURE__ */ jsxs30(Grid2, { gutter: compact ? "lg" : "xl", align: "center", children: [
2339
+ /* @__PURE__ */ jsx37(Grid2.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsxs30(Stack30, { gap: "md", children: [
2340
+ /* @__PURE__ */ jsx37(Skeleton3, { height: 16, width: 96, radius: "xl" }),
2341
+ /* @__PURE__ */ jsx37(Skeleton3, { height: 48, width: "90%", radius: "md" }),
2342
+ /* @__PURE__ */ jsx37(Skeleton3, { height: 18, width: "100%", radius: "md" }),
2343
+ /* @__PURE__ */ jsx37(Skeleton3, { height: 18, width: "82%", radius: "md" }),
2344
+ /* @__PURE__ */ jsxs30(Group26, { children: [
2345
+ /* @__PURE__ */ jsx37(Skeleton3, { height: 40, width: 140, radius: "md" }),
2346
+ /* @__PURE__ */ jsx37(Skeleton3, { height: 40, width: 140, radius: "md" })
2111
2347
  ] })
2112
2348
  ] }) }),
2113
- /* @__PURE__ */ jsx35(Grid2.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx35(AspectRatio5, { ratio: 16 / 11, children: /* @__PURE__ */ jsx35(Skeleton3, { radius: "lg" }) }) })
2349
+ /* @__PURE__ */ jsx37(Grid2.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx37(AspectRatio5, { ratio: 16 / 11, children: /* @__PURE__ */ jsx37(Skeleton3, { radius: "lg" }) }) })
2114
2350
  ] }) });
2115
2351
  }
2116
2352
  function MediaFallback() {
2117
- return /* @__PURE__ */ jsx35(AspectRatio5, { ratio: 16 / 11, children: /* @__PURE__ */ jsx35(
2353
+ return /* @__PURE__ */ jsx37(AspectRatio5, { ratio: 16 / 11, children: /* @__PURE__ */ jsx37(
2118
2354
  ThemeIcon8,
2119
2355
  {
2120
2356
  size: "100%",
@@ -2122,7 +2358,7 @@ function MediaFallback() {
2122
2358
  color: "gray",
2123
2359
  variant: "light",
2124
2360
  "aria-label": "Hero media is unavailable",
2125
- children: /* @__PURE__ */ jsx35(GdsIcons.Gallery, { size: "2.5rem" })
2361
+ children: /* @__PURE__ */ jsx37(GdsIcons.Gallery, { size: "2.5rem" })
2126
2362
  }
2127
2363
  ) });
2128
2364
  }
@@ -2142,7 +2378,7 @@ function MediaFrame({
2142
2378
  } else if (mediaFade === "soft-start") {
2143
2379
  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%)";
2144
2380
  }
2145
- return /* @__PURE__ */ jsxs29(
2381
+ return /* @__PURE__ */ jsxs30(
2146
2382
  Box11,
2147
2383
  {
2148
2384
  component: "figure",
@@ -2156,8 +2392,8 @@ function MediaFrame({
2156
2392
  },
2157
2393
  "aria-label": mediaAlt,
2158
2394
  children: [
2159
- media ?? /* @__PURE__ */ jsx35(MediaFallback, {}),
2160
- media && overlayBackground ? /* @__PURE__ */ jsx35(
2395
+ media ?? /* @__PURE__ */ jsx37(MediaFallback, {}),
2396
+ media && overlayBackground ? /* @__PURE__ */ jsx37(
2161
2397
  Box11,
2162
2398
  {
2163
2399
  "aria-hidden": true,
@@ -2191,7 +2427,7 @@ function EditorialHero({
2191
2427
  classNames
2192
2428
  }) {
2193
2429
  if (loading) {
2194
- return /* @__PURE__ */ jsx35(LoadingHero, { compact });
2430
+ return /* @__PURE__ */ jsx37(LoadingHero, { compact });
2195
2431
  }
2196
2432
  const stackAlign = align === "center" ? "center" : "flex-start";
2197
2433
  const textAlign = align === "center" ? "center" : "left";
@@ -2199,15 +2435,15 @@ function EditorialHero({
2199
2435
  const renderedActions = actions.slice(0, 3).map((action, index) => {
2200
2436
  const resolved = resolveActionVariant(action, index, seenPrimary);
2201
2437
  seenPrimary = resolved.seenPrimary;
2202
- return /* @__PURE__ */ jsx35(HeroAction, { action, variant: resolved.variant }, `${action.label}-${index}`);
2438
+ return /* @__PURE__ */ jsx37(HeroAction, { action, variant: resolved.variant }, `${action.label}-${index}`);
2203
2439
  });
2204
- const textSlot = /* @__PURE__ */ jsxs29(Stack29, { gap: compact ? "md" : "lg", justify: "center", h: "100%", className: classNames?.content, children: [
2205
- /* @__PURE__ */ jsxs29(Stack29, { gap: "sm", align: stackAlign, children: [
2206
- eyebrow ? /* @__PURE__ */ jsx35(Text25, { size: "sm", fw: 700, c: "dimmed", ta: textAlign, children: eyebrow }) : null,
2207
- /* @__PURE__ */ jsx35(Title19, { order: 1, maw: 760, ta: textAlign, children: title }),
2208
- description ? /* @__PURE__ */ jsx35(Text25, { size: compact ? "md" : "lg", c: "dimmed", maw: 720, ta: textAlign, children: description }) : null
2440
+ const textSlot = /* @__PURE__ */ jsxs30(Stack30, { gap: compact ? "md" : "lg", justify: "center", h: "100%", className: classNames?.content, children: [
2441
+ /* @__PURE__ */ jsxs30(Stack30, { gap: "sm", align: stackAlign, children: [
2442
+ eyebrow ? /* @__PURE__ */ jsx37(Text26, { size: "sm", fw: 700, c: "dimmed", ta: textAlign, children: eyebrow }) : null,
2443
+ /* @__PURE__ */ jsx37(Title19, { order: 1, maw: 760, ta: textAlign, children: title }),
2444
+ description ? /* @__PURE__ */ jsx37(Text26, { size: compact ? "md" : "lg", c: "dimmed", maw: 720, ta: textAlign, children: description }) : null
2209
2445
  ] }),
2210
- renderedActions.length ? /* @__PURE__ */ jsx35(Box11, { className: classNames?.actions, children: /* @__PURE__ */ jsx35(
2446
+ renderedActions.length ? /* @__PURE__ */ jsx37(Box11, { className: classNames?.actions, children: /* @__PURE__ */ jsx37(
2211
2447
  CtaButtonGroup,
2212
2448
  {
2213
2449
  primary: renderedActions[0],
@@ -2215,8 +2451,8 @@ function EditorialHero({
2215
2451
  tertiary: renderedActions[2]
2216
2452
  }
2217
2453
  ) }) : null,
2218
- meta.length ? /* @__PURE__ */ jsx35(Group25, { gap: "sm", wrap: "wrap", "aria-label": "Supporting details", className: classNames?.meta, children: meta.map((item) => /* @__PURE__ */ jsxs29(
2219
- Group25,
2454
+ meta.length ? /* @__PURE__ */ jsx37(Group26, { gap: "sm", wrap: "wrap", "aria-label": "Supporting details", className: classNames?.meta, children: meta.map((item) => /* @__PURE__ */ jsxs30(
2455
+ Group26,
2220
2456
  {
2221
2457
  gap: 6,
2222
2458
  px: "sm",
@@ -2227,16 +2463,16 @@ function EditorialHero({
2227
2463
  },
2228
2464
  children: [
2229
2465
  item.icon,
2230
- /* @__PURE__ */ jsx35(Text25, { size: "sm", c: "dimmed", children: item.label })
2466
+ /* @__PURE__ */ jsx37(Text26, { size: "sm", c: "dimmed", children: item.label })
2231
2467
  ]
2232
2468
  },
2233
2469
  item.id
2234
2470
  )) }) : null
2235
2471
  ] });
2236
- const mediaSlot = error ? /* @__PURE__ */ jsx35(AccentPanel, { tone: "red", variant: "soft-outline", title: "Media unavailable", children: error }) : /* @__PURE__ */ jsx35(MediaFrame, { media, mediaAlt, mediaFade, className: classNames?.media });
2237
- const textCol = /* @__PURE__ */ jsx35(Grid2.Col, { span: { base: 12, md: 6 }, order: { base: 1, md: mediaPosition === "left" ? 2 : 1 }, children: textSlot });
2238
- const mediaCol = /* @__PURE__ */ jsx35(Grid2.Col, { span: { base: 12, md: 6 }, order: { base: 2, md: mediaPosition === "left" ? 1 : 2 }, children: mediaSlot });
2239
- return /* @__PURE__ */ jsx35(
2472
+ const mediaSlot = error ? /* @__PURE__ */ jsx37(AccentPanel, { tone: "red", variant: "soft-outline", title: "Media unavailable", children: error }) : /* @__PURE__ */ jsx37(MediaFrame, { media, mediaAlt, mediaFade, className: classNames?.media });
2473
+ const textCol = /* @__PURE__ */ jsx37(Grid2.Col, { span: { base: 12, md: 6 }, order: { base: 1, md: mediaPosition === "left" ? 2 : 1 }, children: textSlot });
2474
+ const mediaCol = /* @__PURE__ */ jsx37(Grid2.Col, { span: { base: 12, md: 6 }, order: { base: 2, md: mediaPosition === "left" ? 1 : 2 }, children: mediaSlot });
2475
+ return /* @__PURE__ */ jsx37(
2240
2476
  Paper7,
2241
2477
  {
2242
2478
  component: "section",
@@ -2245,7 +2481,7 @@ function EditorialHero({
2245
2481
  p: compact ? "lg" : "xl",
2246
2482
  className: classNames?.root,
2247
2483
  style: surfaceVariant === "flat-public" ? { boxShadow: "none" } : void 0,
2248
- children: /* @__PURE__ */ jsxs29(Grid2, { gutter: compact ? "lg" : "xl", align: "center", children: [
2484
+ children: /* @__PURE__ */ jsxs30(Grid2, { gutter: compact ? "lg" : "xl", align: "center", children: [
2249
2485
  textCol,
2250
2486
  mediaCol
2251
2487
  ] })
@@ -2254,19 +2490,19 @@ function EditorialHero({
2254
2490
  }
2255
2491
 
2256
2492
  // src/FeatureBand.tsx
2257
- import { Box as Box12, Group as Group26, Paper as Paper8, SimpleGrid as SimpleGrid6, Skeleton as Skeleton4, Stack as Stack30, Text as Text26, ThemeIcon as ThemeIcon9, Title as Title20 } from "@mantine/core";
2258
- import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs30 } from "react/jsx-runtime";
2493
+ import { Box as Box12, Group as Group27, Paper as Paper8, SimpleGrid as SimpleGrid6, Skeleton as Skeleton4, Stack as Stack31, Text as Text27, ThemeIcon as ThemeIcon9, Title as Title20 } from "@mantine/core";
2494
+ import { Fragment as Fragment6, jsx as jsx38, jsxs as jsxs31 } from "react/jsx-runtime";
2259
2495
  function FeatureBandSkeleton({
2260
2496
  columns = 3,
2261
2497
  bordered = true,
2262
2498
  variant = "default"
2263
2499
  }) {
2264
- return /* @__PURE__ */ jsx36(SimpleGrid6, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: Array.from({ length: columns }).map((_, index) => /* @__PURE__ */ jsx36(Paper8, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ jsxs30(Stack30, { gap: "md", children: [
2265
- /* @__PURE__ */ jsx36(Skeleton4, { height: variant === "process" ? 28 : 42, width: variant === "process" ? 72 : 42, radius: "xl" }),
2266
- /* @__PURE__ */ jsxs30(Stack30, { gap: "xs", children: [
2267
- /* @__PURE__ */ jsx36(Skeleton4, { height: 20, width: "75%", radius: "md" }),
2268
- /* @__PURE__ */ jsx36(Skeleton4, { height: 14, width: "100%", radius: "md" }),
2269
- /* @__PURE__ */ jsx36(Skeleton4, { height: 14, width: "82%", radius: "md" })
2500
+ return /* @__PURE__ */ jsx38(SimpleGrid6, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: Array.from({ length: columns }).map((_, index) => /* @__PURE__ */ jsx38(Paper8, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ jsxs31(Stack31, { gap: "md", children: [
2501
+ /* @__PURE__ */ jsx38(Skeleton4, { height: variant === "process" ? 28 : 42, width: variant === "process" ? 72 : 42, radius: "xl" }),
2502
+ /* @__PURE__ */ jsxs31(Stack31, { gap: "xs", children: [
2503
+ /* @__PURE__ */ jsx38(Skeleton4, { height: 20, width: "75%", radius: "md" }),
2504
+ /* @__PURE__ */ jsx38(Skeleton4, { height: 14, width: "100%", radius: "md" }),
2505
+ /* @__PURE__ */ jsx38(Skeleton4, { height: 14, width: "82%", radius: "md" })
2270
2506
  ] })
2271
2507
  ] }) }, index)) });
2272
2508
  }
@@ -2279,10 +2515,10 @@ function FeatureBand({
2279
2515
  variant = "default"
2280
2516
  }) {
2281
2517
  if (loading) {
2282
- return /* @__PURE__ */ jsx36(FeatureBandSkeleton, { columns, bordered, variant });
2518
+ return /* @__PURE__ */ jsx38(FeatureBandSkeleton, { columns, bordered, variant });
2283
2519
  }
2284
2520
  if (!items.length) {
2285
- return emptyState ? /* @__PURE__ */ jsx36(Fragment5, { children: emptyState }) : /* @__PURE__ */ jsx36(
2521
+ return emptyState ? /* @__PURE__ */ jsx38(Fragment6, { children: emptyState }) : /* @__PURE__ */ jsx38(
2286
2522
  EmptyState,
2287
2523
  {
2288
2524
  title: "No supporting details available",
@@ -2290,9 +2526,9 @@ function FeatureBand({
2290
2526
  }
2291
2527
  );
2292
2528
  }
2293
- return /* @__PURE__ */ jsx36(Box12, { component: "section", "aria-label": "Supporting features", children: /* @__PURE__ */ jsx36(SimpleGrid6, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: items.map((item, index) => /* @__PURE__ */ jsx36(Paper8, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ jsxs30(Stack30, { gap: "md", children: [
2294
- variant === "process" ? /* @__PURE__ */ jsx36(Group26, { children: /* @__PURE__ */ jsx36(
2295
- Text26,
2529
+ return /* @__PURE__ */ jsx38(Box12, { component: "section", "aria-label": "Supporting features", children: /* @__PURE__ */ jsx38(SimpleGrid6, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: items.map((item, index) => /* @__PURE__ */ jsx38(Paper8, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ jsxs31(Stack31, { gap: "md", children: [
2530
+ variant === "process" ? /* @__PURE__ */ jsx38(Group27, { children: /* @__PURE__ */ jsx38(
2531
+ Text27,
2296
2532
  {
2297
2533
  fw: 800,
2298
2534
  size: "sm",
@@ -2304,18 +2540,18 @@ function FeatureBand({
2304
2540
  },
2305
2541
  children: item.stepLabel ?? `Step ${index + 1}`
2306
2542
  }
2307
- ) }) : item.media ? item.media : item.icon ? /* @__PURE__ */ jsx36(Group26, { children: /* @__PURE__ */ jsx36(ThemeIcon9, { size: "xl", radius: "xl", variant: "light", color: "violet", children: item.icon }) }) : /* @__PURE__ */ jsx36(Group26, { children: /* @__PURE__ */ jsx36(ThemeIcon9, { size: "xl", radius: "xl", variant: "light", color: "gray", "aria-hidden": true, children: /* @__PURE__ */ jsx36(GdsIcons.Info, { size: "1.25rem" }) }) }),
2308
- /* @__PURE__ */ jsxs30(Stack30, { gap: "xs", children: [
2309
- /* @__PURE__ */ jsx36(Title20, { order: 4, children: item.title }),
2310
- item.description ? /* @__PURE__ */ jsx36(Text26, { c: "dimmed", children: item.description }) : null,
2311
- item.meta ? /* @__PURE__ */ jsx36(Text26, { size: "sm", c: "dimmed", children: item.meta }) : null
2543
+ ) }) : item.media ? item.media : item.icon ? /* @__PURE__ */ jsx38(Group27, { children: /* @__PURE__ */ jsx38(ThemeIcon9, { size: "xl", radius: "xl", variant: "light", color: "violet", children: item.icon }) }) : /* @__PURE__ */ jsx38(Group27, { children: /* @__PURE__ */ jsx38(ThemeIcon9, { size: "xl", radius: "xl", variant: "light", color: "gray", "aria-hidden": true, children: /* @__PURE__ */ jsx38(GdsIcons.Info, { size: "1.25rem" }) }) }),
2544
+ /* @__PURE__ */ jsxs31(Stack31, { gap: "xs", children: [
2545
+ /* @__PURE__ */ jsx38(Title20, { order: 4, children: item.title }),
2546
+ item.description ? /* @__PURE__ */ jsx38(Text27, { c: "dimmed", children: item.description }) : null,
2547
+ item.meta ? /* @__PURE__ */ jsx38(Text27, { size: "sm", c: "dimmed", children: item.meta }) : null
2312
2548
  ] })
2313
2549
  ] }) }, item.id)) }) });
2314
2550
  }
2315
2551
 
2316
2552
  // src/MapPanel.tsx
2317
- import { AspectRatio as AspectRatio6, Box as Box13, Group as Group27, Paper as Paper9, Stack as Stack31, Text as Text27, Title as Title21 } from "@mantine/core";
2318
- import { jsx as jsx37, jsxs as jsxs31 } from "react/jsx-runtime";
2553
+ import { AspectRatio as AspectRatio6, Box as Box13, Group as Group28, Paper as Paper9, Stack as Stack32, Text as Text28, Title as Title21 } from "@mantine/core";
2554
+ import { jsx as jsx39, jsxs as jsxs32 } from "react/jsx-runtime";
2319
2555
  function MapPanel({
2320
2556
  title,
2321
2557
  description,
@@ -2331,7 +2567,7 @@ function MapPanel({
2331
2567
  }) {
2332
2568
  let body;
2333
2569
  if (loading) {
2334
- body = /* @__PURE__ */ jsx37(
2570
+ body = /* @__PURE__ */ jsx39(
2335
2571
  StateBlock,
2336
2572
  {
2337
2573
  variant: "loading",
@@ -2341,9 +2577,9 @@ function MapPanel({
2341
2577
  }
2342
2578
  );
2343
2579
  } else if (error) {
2344
- body = /* @__PURE__ */ jsx37(StateBlock, { variant: "error", title: "Map unavailable", description: error, compact: true });
2580
+ body = /* @__PURE__ */ jsx39(StateBlock, { variant: "error", title: "Map unavailable", description: error, compact: true });
2345
2581
  } else if (!iframeSrc && !renderMap) {
2346
- body = /* @__PURE__ */ jsx37(
2582
+ body = /* @__PURE__ */ jsx39(
2347
2583
  StateBlock,
2348
2584
  {
2349
2585
  variant: "empty",
@@ -2353,9 +2589,9 @@ function MapPanel({
2353
2589
  }
2354
2590
  );
2355
2591
  } else if (renderMap) {
2356
- body = /* @__PURE__ */ jsx37(Box13, { style: { minHeight }, children: renderMap() });
2592
+ body = /* @__PURE__ */ jsx39(Box13, { style: { minHeight }, children: renderMap() });
2357
2593
  } else {
2358
- body = /* @__PURE__ */ jsx37(AspectRatio6, { ratio: 16 / 9, children: /* @__PURE__ */ jsx37(
2594
+ body = /* @__PURE__ */ jsx39(AspectRatio6, { ratio: 16 / 9, children: /* @__PURE__ */ jsx39(
2359
2595
  "iframe",
2360
2596
  {
2361
2597
  src: iframeSrc,
@@ -2367,21 +2603,21 @@ function MapPanel({
2367
2603
  }
2368
2604
  ) });
2369
2605
  }
2370
- return /* @__PURE__ */ jsx37(Paper9, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs31(Stack31, { gap: "md", children: [
2371
- /* @__PURE__ */ jsxs31(Group27, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2372
- /* @__PURE__ */ jsxs31(Stack31, { gap: 4, children: [
2373
- /* @__PURE__ */ jsx37(Title21, { order: 3, children: title }),
2374
- description ? /* @__PURE__ */ jsx37(Text27, { size: "sm", c: "dimmed", children: description }) : null
2606
+ return /* @__PURE__ */ jsx39(Paper9, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs32(Stack32, { gap: "md", children: [
2607
+ /* @__PURE__ */ jsxs32(Group28, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2608
+ /* @__PURE__ */ jsxs32(Stack32, { gap: 4, children: [
2609
+ /* @__PURE__ */ jsx39(Title21, { order: 3, children: title }),
2610
+ description ? /* @__PURE__ */ jsx39(Text28, { size: "sm", c: "dimmed", children: description }) : null
2375
2611
  ] }),
2376
- actions ? /* @__PURE__ */ jsx37(ActionBar, { ...actions }) : null
2612
+ actions ? /* @__PURE__ */ jsx39(ActionBar, { ...actions }) : null
2377
2613
  ] }),
2378
2614
  body
2379
2615
  ] }) });
2380
2616
  }
2381
2617
 
2382
2618
  // src/PublicFlowShell.tsx
2383
- import { Badge as Badge14, Group as Group28, Paper as Paper10, Stack as Stack32, Text as Text28, Title as Title22 } from "@mantine/core";
2384
- import { jsx as jsx38, jsxs as jsxs32 } from "react/jsx-runtime";
2619
+ import { Badge as Badge15, Group as Group29, Paper as Paper10, Stack as Stack33, Text as Text29, Title as Title22 } from "@mantine/core";
2620
+ import { jsx as jsx40, jsxs as jsxs33 } from "react/jsx-runtime";
2385
2621
  var stageTone = {
2386
2622
  idle: { label: "Idle", color: "gray" },
2387
2623
  loading: { label: "Loading", color: "blue" },
@@ -2433,7 +2669,7 @@ function PublicFlowShell({
2433
2669
  const actionBar = toActionBar(stage.actions);
2434
2670
  let body = stage.body;
2435
2671
  if (stage.status === "loading") {
2436
- body = /* @__PURE__ */ jsx38(
2672
+ body = /* @__PURE__ */ jsx40(
2437
2673
  StateBlock,
2438
2674
  {
2439
2675
  variant: "loading",
@@ -2442,7 +2678,7 @@ function PublicFlowShell({
2442
2678
  }
2443
2679
  );
2444
2680
  } else if (stage.status === "error") {
2445
- body = errorState ?? /* @__PURE__ */ jsx38(
2681
+ body = errorState ?? /* @__PURE__ */ jsx40(
2446
2682
  StateBlock,
2447
2683
  {
2448
2684
  variant: "error",
@@ -2451,7 +2687,7 @@ function PublicFlowShell({
2451
2687
  }
2452
2688
  );
2453
2689
  } else if (!stage.body && !hardwareSurface) {
2454
- body = emptyState ?? /* @__PURE__ */ jsx38(
2690
+ body = emptyState ?? /* @__PURE__ */ jsx40(
2455
2691
  EmptyState,
2456
2692
  {
2457
2693
  title: "No stage content available",
@@ -2459,29 +2695,29 @@ function PublicFlowShell({
2459
2695
  }
2460
2696
  );
2461
2697
  }
2462
- return /* @__PURE__ */ jsx38(Paper10, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs32(Stack32, { gap: "lg", children: [
2463
- /* @__PURE__ */ jsxs32(Group28, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2464
- /* @__PURE__ */ jsxs32(Stack32, { gap: 4, children: [
2465
- eyebrow ? /* @__PURE__ */ jsx38(Text28, { size: "xs", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
2466
- /* @__PURE__ */ jsxs32(Group28, { gap: "sm", wrap: "wrap", children: [
2467
- /* @__PURE__ */ jsx38(Title22, { order: 2, children: stage.title }),
2468
- /* @__PURE__ */ jsx38(Badge14, { variant: "light", color: tone.color, children: tone.label })
2698
+ return /* @__PURE__ */ jsx40(Paper10, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs33(Stack33, { gap: "lg", children: [
2699
+ /* @__PURE__ */ jsxs33(Group29, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2700
+ /* @__PURE__ */ jsxs33(Stack33, { gap: 4, children: [
2701
+ eyebrow ? /* @__PURE__ */ jsx40(Text29, { size: "xs", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
2702
+ /* @__PURE__ */ jsxs33(Group29, { gap: "sm", wrap: "wrap", children: [
2703
+ /* @__PURE__ */ jsx40(Title22, { order: 2, children: stage.title }),
2704
+ /* @__PURE__ */ jsx40(Badge15, { variant: "light", color: tone.color, children: tone.label })
2469
2705
  ] }),
2470
- stage.description ? /* @__PURE__ */ jsx38(Text28, { size: "sm", c: "dimmed", children: stage.description }) : null
2706
+ stage.description ? /* @__PURE__ */ jsx40(Text29, { size: "sm", c: "dimmed", children: stage.description }) : null
2471
2707
  ] }),
2472
2708
  exitAction
2473
2709
  ] }),
2474
- stage.notice ? /* @__PURE__ */ jsx38(Text28, { size: "sm", c: "dimmed", children: stage.notice }) : null,
2710
+ stage.notice ? /* @__PURE__ */ jsx40(Text29, { size: "sm", c: "dimmed", children: stage.notice }) : null,
2475
2711
  body,
2476
2712
  hardwareSurface,
2477
2713
  stage.aside,
2478
- actionBar ? /* @__PURE__ */ jsx38(ActionBar, { ...actionBar }) : null
2714
+ actionBar ? /* @__PURE__ */ jsx40(ActionBar, { ...actionBar }) : null
2479
2715
  ] }) });
2480
2716
  }
2481
2717
 
2482
2718
  // src/PlaybackSurface.tsx
2483
- import { Badge as Badge15, Group as Group29, Paper as Paper11, Stack as Stack33, Text as Text29, Title as Title23 } from "@mantine/core";
2484
- import { jsx as jsx39, jsxs as jsxs33 } from "react/jsx-runtime";
2719
+ import { Badge as Badge16, Group as Group30, Paper as Paper11, Stack as Stack34, Text as Text30, Title as Title23 } from "@mantine/core";
2720
+ import { jsx as jsx41, jsxs as jsxs34 } from "react/jsx-runtime";
2485
2721
  var stateTone = {
2486
2722
  loading: { label: "Loading", color: "blue" },
2487
2723
  ready: { label: "Ready", color: "teal" },
@@ -2504,7 +2740,7 @@ function PlaybackSurface({
2504
2740
  const tone = stateTone[state];
2505
2741
  let content;
2506
2742
  if (state === "loading") {
2507
- content = /* @__PURE__ */ jsx39(
2743
+ content = /* @__PURE__ */ jsx41(
2508
2744
  StateBlock,
2509
2745
  {
2510
2746
  variant: "loading",
@@ -2513,7 +2749,7 @@ function PlaybackSurface({
2513
2749
  }
2514
2750
  );
2515
2751
  } else if (state === "empty") {
2516
- content = emptyState ?? /* @__PURE__ */ jsx39(
2752
+ content = emptyState ?? /* @__PURE__ */ jsx41(
2517
2753
  EmptyState,
2518
2754
  {
2519
2755
  title: "No playback content available",
@@ -2521,7 +2757,7 @@ function PlaybackSurface({
2521
2757
  }
2522
2758
  );
2523
2759
  } else if (state === "error") {
2524
- content = errorState ?? /* @__PURE__ */ jsx39(
2760
+ content = errorState ?? /* @__PURE__ */ jsx41(
2525
2761
  StateBlock,
2526
2762
  {
2527
2763
  variant: "error",
@@ -2530,23 +2766,23 @@ function PlaybackSurface({
2530
2766
  }
2531
2767
  );
2532
2768
  } else {
2533
- content = /* @__PURE__ */ jsxs33(Stack33, { gap: "md", children: [
2769
+ content = /* @__PURE__ */ jsxs34(Stack34, { gap: "md", children: [
2534
2770
  media,
2535
2771
  overlays
2536
2772
  ] });
2537
2773
  }
2538
- return /* @__PURE__ */ jsx39(Paper11, { withBorder: true, radius: "xl", p: "lg", "data-playback-mode": mode, children: /* @__PURE__ */ jsxs33(Stack33, { gap: "md", children: [
2539
- title || statusMessage || controls ? /* @__PURE__ */ jsxs33(Group29, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2540
- /* @__PURE__ */ jsxs33(Stack33, { gap: 4, children: [
2541
- title ? /* @__PURE__ */ jsx39(Title23, { order: 3, children: title }) : null,
2542
- statusMessage ? /* @__PURE__ */ jsx39(Text29, { size: "sm", c: "dimmed", children: statusMessage }) : null
2774
+ return /* @__PURE__ */ jsx41(Paper11, { withBorder: true, radius: "xl", p: "lg", "data-playback-mode": mode, children: /* @__PURE__ */ jsxs34(Stack34, { gap: "md", children: [
2775
+ title || statusMessage || controls ? /* @__PURE__ */ jsxs34(Group30, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2776
+ /* @__PURE__ */ jsxs34(Stack34, { gap: 4, children: [
2777
+ title ? /* @__PURE__ */ jsx41(Title23, { order: 3, children: title }) : null,
2778
+ statusMessage ? /* @__PURE__ */ jsx41(Text30, { size: "sm", c: "dimmed", children: statusMessage }) : null
2543
2779
  ] }),
2544
- /* @__PURE__ */ jsxs33(Group29, { gap: "sm", align: "center", wrap: "wrap", children: [
2545
- /* @__PURE__ */ jsx39(Badge15, { variant: "light", color: tone.color, children: tone.label }),
2780
+ /* @__PURE__ */ jsxs34(Group30, { gap: "sm", align: "center", wrap: "wrap", children: [
2781
+ /* @__PURE__ */ jsx41(Badge16, { variant: "light", color: tone.color, children: tone.label }),
2546
2782
  controls
2547
2783
  ] })
2548
2784
  ] }) : null,
2549
- state === "degraded" ? /* @__PURE__ */ jsx39(
2785
+ state === "degraded" ? /* @__PURE__ */ jsx41(
2550
2786
  StateBlock,
2551
2787
  {
2552
2788
  variant: "info",
@@ -2560,8 +2796,8 @@ function PlaybackSurface({
2560
2796
  }
2561
2797
 
2562
2798
  // src/MediaField.tsx
2563
- import { Badge as Badge16, Button as Button4, Divider as Divider6, Group as Group30, Paper as Paper12, Progress as Progress2, Stack as Stack34, Text as Text30 } from "@mantine/core";
2564
- import { Fragment as Fragment6, jsx as jsx40, jsxs as jsxs34 } from "react/jsx-runtime";
2799
+ import { Badge as Badge17, Button as Button5, Divider as Divider6, Group as Group31, Paper as Paper12, Progress as Progress2, Stack as Stack35, Text as Text31 } from "@mantine/core";
2800
+ import { Fragment as Fragment7, jsx as jsx42, jsxs as jsxs35 } from "react/jsx-runtime";
2565
2801
  var stateLabels = {
2566
2802
  empty: { label: "Empty", color: "gray" },
2567
2803
  "drag-active": { label: "Drop to select", color: "violet" },
@@ -2602,44 +2838,44 @@ function MediaField({
2602
2838
  }) {
2603
2839
  const resolvedState = readonly ? "readonly" : state;
2604
2840
  const stateBadge = stateLabels[resolvedState];
2605
- const resolvedRemoveAction = removeAction ?? (!readonly && onRemove ? /* @__PURE__ */ jsx40(Button4, { type: "button", variant: "light", color: "red", onClick: onRemove, children: "Remove" }) : null);
2606
- const resolvedResetAction = resetAction ?? (!readonly && onReset ? /* @__PURE__ */ jsx40(Button4, { type: "button", variant: "default", onClick: onReset, children: "Reset" }) : null);
2841
+ const resolvedRemoveAction = removeAction ?? (!readonly && onRemove ? /* @__PURE__ */ jsx42(Button5, { type: "button", variant: "light", color: "red", onClick: onRemove, children: "Remove" }) : null);
2842
+ const resolvedResetAction = resetAction ?? (!readonly && onReset ? /* @__PURE__ */ jsx42(Button5, { type: "button", variant: "default", onClick: onReset, children: "Reset" }) : null);
2607
2843
  const boundedProgress = typeof progress === "number" ? Math.max(0, Math.min(100, progress)) : void 0;
2608
- return /* @__PURE__ */ jsx40(
2844
+ return /* @__PURE__ */ jsx42(
2609
2845
  FormField,
2610
2846
  {
2611
2847
  label,
2612
2848
  description,
2613
2849
  error,
2614
- children: /* @__PURE__ */ jsx40(Paper12, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs34(Stack34, { gap: "md", children: [
2615
- /* @__PURE__ */ jsx40(Group30, { justify: "flex-end", align: "center", gap: "sm", children: /* @__PURE__ */ jsxs34(Group30, { gap: "xs", justify: "flex-end", children: [
2616
- /* @__PURE__ */ jsx40(Badge16, { variant: "light", color: stateBadge.color, children: stateBadge.label }),
2850
+ children: /* @__PURE__ */ jsx42(Paper12, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs35(Stack35, { gap: "md", children: [
2851
+ /* @__PURE__ */ jsx42(Group31, { justify: "flex-end", align: "center", gap: "sm", children: /* @__PURE__ */ jsxs35(Group31, { gap: "xs", justify: "flex-end", children: [
2852
+ /* @__PURE__ */ jsx42(Badge17, { variant: "light", color: stateBadge.color, children: stateBadge.label }),
2617
2853
  statusAction
2618
2854
  ] }) }),
2619
2855
  preview ? preview : null,
2620
- typeof boundedProgress === "number" ? /* @__PURE__ */ jsxs34(Stack34, { gap: 4, children: [
2621
- /* @__PURE__ */ jsx40(Progress2, { value: boundedProgress, "aria-label": "Upload progress" }),
2622
- /* @__PURE__ */ jsxs34(Text30, { size: "xs", c: "dimmed", children: [
2856
+ typeof boundedProgress === "number" ? /* @__PURE__ */ jsxs35(Stack35, { gap: 4, children: [
2857
+ /* @__PURE__ */ jsx42(Progress2, { value: boundedProgress, "aria-label": "Upload progress" }),
2858
+ /* @__PURE__ */ jsxs35(Text31, { size: "xs", c: "dimmed", children: [
2623
2859
  boundedProgress,
2624
2860
  "% complete"
2625
2861
  ] })
2626
2862
  ] }) : null,
2627
- (uploadControl || urlInput) && !readonly ? /* @__PURE__ */ jsxs34(Fragment6, { children: [
2628
- /* @__PURE__ */ jsx40(Divider6, {}),
2629
- /* @__PURE__ */ jsxs34(Stack34, { gap: "sm", style: mode === "split" ? { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))" } : void 0, children: [
2863
+ (uploadControl || urlInput) && !readonly ? /* @__PURE__ */ jsxs35(Fragment7, { children: [
2864
+ /* @__PURE__ */ jsx42(Divider6, {}),
2865
+ /* @__PURE__ */ jsxs35(Stack35, { gap: "sm", style: mode === "split" ? { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))" } : void 0, children: [
2630
2866
  uploadControl,
2631
2867
  urlInput
2632
2868
  ] })
2633
2869
  ] }) : null,
2634
- value ? /* @__PURE__ */ jsx40(Text30, { size: "sm", c: "dimmed", style: { wordBreak: "break-all" }, children: value }) : null,
2635
- helpText ? /* @__PURE__ */ jsx40(Text30, { size: "sm", c: "dimmed", children: helpText }) : null,
2636
- acceptedTypes || maxSize ? /* @__PURE__ */ jsxs34(Group30, { gap: "xs", wrap: "wrap", children: [
2637
- acceptedTypes ? /* @__PURE__ */ jsx40(Badge16, { variant: "outline", color: "gray", children: acceptedTypes }) : null,
2638
- maxSize ? /* @__PURE__ */ jsx40(Badge16, { variant: "outline", color: "gray", children: maxSize }) : null
2870
+ value ? /* @__PURE__ */ jsx42(Text31, { size: "sm", c: "dimmed", style: { wordBreak: "break-all" }, children: value }) : null,
2871
+ helpText ? /* @__PURE__ */ jsx42(Text31, { size: "sm", c: "dimmed", children: helpText }) : null,
2872
+ acceptedTypes || maxSize ? /* @__PURE__ */ jsxs35(Group31, { gap: "xs", wrap: "wrap", children: [
2873
+ acceptedTypes ? /* @__PURE__ */ jsx42(Badge17, { variant: "outline", color: "gray", children: acceptedTypes }) : null,
2874
+ maxSize ? /* @__PURE__ */ jsx42(Badge17, { variant: "outline", color: "gray", children: maxSize }) : null
2639
2875
  ] }) : null,
2640
- policyText ? /* @__PURE__ */ jsx40(Text30, { size: "sm", c: error ? "red.7" : "dimmed", children: policyText }) : null,
2876
+ policyText ? /* @__PURE__ */ jsx42(Text31, { size: "sm", c: error ? "red.7" : "dimmed", children: policyText }) : null,
2641
2877
  typeof error !== "string" && error ? error : null,
2642
- replaceAction || resolvedRemoveAction || resolvedResetAction || retryAction ? /* @__PURE__ */ jsxs34(Group30, { gap: "sm", children: [
2878
+ replaceAction || resolvedRemoveAction || resolvedResetAction || retryAction ? /* @__PURE__ */ jsxs35(Group31, { gap: "sm", children: [
2643
2879
  replaceAction,
2644
2880
  resolvedResetAction,
2645
2881
  retryAction,
@@ -2651,31 +2887,31 @@ function MediaField({
2651
2887
  }
2652
2888
 
2653
2889
  // src/MediaCard.tsx
2654
- import { ActionIcon as ActionIcon4, Badge as Badge17, Card as Card9, Group as Group31, Stack as Stack35, Text as Text31, Title as Title24 } from "@mantine/core";
2655
- import { jsx as jsx41, jsxs as jsxs35 } from "react/jsx-runtime";
2890
+ import { ActionIcon as ActionIcon4, Badge as Badge18, Card as Card9, Group as Group32, Stack as Stack36, Text as Text32, Title as Title24 } from "@mantine/core";
2891
+ import { jsx as jsx43, jsxs as jsxs36 } from "react/jsx-runtime";
2656
2892
  function MediaCard({ title, image, description, status, overlay, actions = [] }) {
2657
2893
  const EyeIcon = GdsIcons.Eye;
2658
- return /* @__PURE__ */ jsxs35(Card9, { withBorder: true, radius: "lg", padding: "md", children: [
2659
- /* @__PURE__ */ jsxs35(Card9.Section, { pos: "relative", children: [
2894
+ return /* @__PURE__ */ jsxs36(Card9, { withBorder: true, radius: "lg", padding: "md", children: [
2895
+ /* @__PURE__ */ jsxs36(Card9.Section, { pos: "relative", children: [
2660
2896
  image,
2661
- overlay ? /* @__PURE__ */ jsx41("div", { style: { position: "absolute", inset: 12, display: "flex", justifyContent: "flex-end", alignItems: "flex-start" }, children: overlay }) : null
2897
+ overlay ? /* @__PURE__ */ jsx43("div", { style: { position: "absolute", inset: 12, display: "flex", justifyContent: "flex-end", alignItems: "flex-start" }, children: overlay }) : null
2662
2898
  ] }),
2663
- /* @__PURE__ */ jsxs35(Stack35, { gap: "sm", mt: "md", children: [
2664
- /* @__PURE__ */ jsxs35(Group31, { justify: "space-between", align: "flex-start", children: [
2665
- /* @__PURE__ */ jsxs35(Stack35, { gap: 4, children: [
2666
- /* @__PURE__ */ jsx41(Title24, { order: 4, children: title }),
2667
- description ? /* @__PURE__ */ jsx41(Text31, { size: "sm", c: "dimmed", lineClamp: 2, children: description }) : null
2899
+ /* @__PURE__ */ jsxs36(Stack36, { gap: "sm", mt: "md", children: [
2900
+ /* @__PURE__ */ jsxs36(Group32, { justify: "space-between", align: "flex-start", children: [
2901
+ /* @__PURE__ */ jsxs36(Stack36, { gap: 4, children: [
2902
+ /* @__PURE__ */ jsx43(Title24, { order: 4, children: title }),
2903
+ description ? /* @__PURE__ */ jsx43(Text32, { size: "sm", c: "dimmed", lineClamp: 2, children: description }) : null
2668
2904
  ] }),
2669
- status ? /* @__PURE__ */ jsx41(Badge17, { variant: "light", children: status }) : null
2905
+ status ? /* @__PURE__ */ jsx43(Badge18, { variant: "light", children: status }) : null
2670
2906
  ] }),
2671
- actions.length ? /* @__PURE__ */ jsx41(Group31, { justify: "flex-end", gap: "xs", children: actions.map((action) => /* @__PURE__ */ jsx41(ActionIcon4, { variant: "light", "aria-label": action.label, onClick: action.onClick, children: /* @__PURE__ */ jsx41(EyeIcon, { size: "1rem" }) }, action.label)) }) : null
2907
+ actions.length ? /* @__PURE__ */ jsx43(Group32, { justify: "flex-end", gap: "xs", children: actions.map((action) => /* @__PURE__ */ jsx43(ActionIcon4, { variant: "light", "aria-label": action.label, onClick: action.onClick, children: /* @__PURE__ */ jsx43(EyeIcon, { size: "1rem" }) }, action.label)) }) : null
2672
2908
  ] })
2673
2909
  ] });
2674
2910
  }
2675
2911
 
2676
2912
  // src/AccessSummary.tsx
2677
- import { Badge as Badge18, Card as Card10, Group as Group32, Stack as Stack36, Text as Text32, Title as Title25 } from "@mantine/core";
2678
- import { jsx as jsx42, jsxs as jsxs36 } from "react/jsx-runtime";
2913
+ import { Badge as Badge19, Card as Card10, Group as Group33, Stack as Stack37, Text as Text33, Title as Title25 } from "@mantine/core";
2914
+ import { jsx as jsx44, jsxs as jsxs37 } from "react/jsx-runtime";
2679
2915
  var accessStateMeta = {
2680
2916
  allowed: { label: "Allowed", color: "teal" },
2681
2917
  blocked: { label: "Blocked", color: "red" },
@@ -2686,28 +2922,28 @@ var accessStateMeta = {
2686
2922
  function AccessSummary({ title, roles, scope, blocked = false, state, owner, recoveryHint, description }) {
2687
2923
  const resolvedState = state ?? (blocked ? "blocked" : "allowed");
2688
2924
  const meta = accessStateMeta[resolvedState];
2689
- return /* @__PURE__ */ jsx42(Card10, { withBorder: true, radius: "lg", padding: "lg", children: /* @__PURE__ */ jsxs36(Stack36, { gap: "sm", children: [
2690
- /* @__PURE__ */ jsxs36(Group32, { justify: "space-between", align: "center", children: [
2691
- /* @__PURE__ */ jsx42(Title25, { order: 4, children: title }),
2692
- /* @__PURE__ */ jsx42(Badge18, { color: meta.color, variant: "light", children: meta.label })
2925
+ return /* @__PURE__ */ jsx44(Card10, { withBorder: true, radius: "lg", padding: "lg", children: /* @__PURE__ */ jsxs37(Stack37, { gap: "sm", children: [
2926
+ /* @__PURE__ */ jsxs37(Group33, { justify: "space-between", align: "center", children: [
2927
+ /* @__PURE__ */ jsx44(Title25, { order: 4, children: title }),
2928
+ /* @__PURE__ */ jsx44(Badge19, { color: meta.color, variant: "light", children: meta.label })
2693
2929
  ] }),
2694
- /* @__PURE__ */ jsx42(Group32, { gap: "xs", children: roles.map((role) => /* @__PURE__ */ jsx42(Badge18, { variant: "outline", children: role }, role)) }),
2695
- scope ? /* @__PURE__ */ jsxs36(Text32, { size: "sm", c: "dimmed", children: [
2930
+ /* @__PURE__ */ jsx44(Group33, { gap: "xs", children: roles.map((role) => /* @__PURE__ */ jsx44(Badge19, { variant: "outline", children: role }, role)) }),
2931
+ scope ? /* @__PURE__ */ jsxs37(Text33, { size: "sm", c: "dimmed", children: [
2696
2932
  "Scope: ",
2697
2933
  scope
2698
2934
  ] }) : null,
2699
- owner ? /* @__PURE__ */ jsxs36(Text32, { size: "sm", c: "dimmed", children: [
2935
+ owner ? /* @__PURE__ */ jsxs37(Text33, { size: "sm", c: "dimmed", children: [
2700
2936
  "Owner: ",
2701
2937
  owner
2702
2938
  ] }) : null,
2703
- recoveryHint ? /* @__PURE__ */ jsx42(Text32, { size: "sm", c: resolvedState === "allowed" ? "dimmed" : "red.7", children: recoveryHint }) : null,
2704
- description ? /* @__PURE__ */ jsx42(Text32, { size: "sm", children: description }) : null
2939
+ recoveryHint ? /* @__PURE__ */ jsx44(Text33, { size: "sm", c: resolvedState === "allowed" ? "dimmed" : "red.7", children: recoveryHint }) : null,
2940
+ description ? /* @__PURE__ */ jsx44(Text33, { size: "sm", children: description }) : null
2705
2941
  ] }) });
2706
2942
  }
2707
2943
 
2708
2944
  // src/PageHeader.tsx
2709
- import { Box as Box14, Group as Group33, Stack as Stack37, Text as Text33, Title as Title26 } from "@mantine/core";
2710
- import { jsx as jsx43, jsxs as jsxs37 } from "react/jsx-runtime";
2945
+ import { Box as Box14, Group as Group34, Stack as Stack38, Text as Text34, Title as Title26 } from "@mantine/core";
2946
+ import { jsx as jsx45, jsxs as jsxs38 } from "react/jsx-runtime";
2711
2947
  function PageHeader({
2712
2948
  title,
2713
2949
  description,
@@ -2718,19 +2954,19 @@ function PageHeader({
2718
2954
  }) {
2719
2955
  const resolvedDescription = description ?? subtitle;
2720
2956
  const eyebrowProps = eyebrowVariant === "ornamental" ? { tt: "uppercase", style: { letterSpacing: "0.12em" } } : {};
2721
- return /* @__PURE__ */ jsxs37(Group33, { justify: "space-between", align: "flex-start", gap: "lg", wrap: "wrap", children: [
2722
- /* @__PURE__ */ jsxs37(Stack37, { gap: "xs", children: [
2723
- eyebrow && /* @__PURE__ */ jsx43(Text33, { size: "xs", fw: 700, c: "dimmed", ...eyebrowProps, children: eyebrow }),
2724
- /* @__PURE__ */ jsx43(Title26, { order: 1, children: title }),
2725
- resolvedDescription && /* @__PURE__ */ jsx43(Text33, { c: "dimmed", maw: 720, children: resolvedDescription })
2957
+ return /* @__PURE__ */ jsxs38(Group34, { justify: "space-between", align: "flex-start", gap: "lg", wrap: "wrap", children: [
2958
+ /* @__PURE__ */ jsxs38(Stack38, { gap: "xs", children: [
2959
+ eyebrow && /* @__PURE__ */ jsx45(Text34, { size: "xs", fw: 700, c: "dimmed", ...eyebrowProps, children: eyebrow }),
2960
+ /* @__PURE__ */ jsx45(Title26, { order: 1, children: title }),
2961
+ resolvedDescription && /* @__PURE__ */ jsx45(Text34, { c: "dimmed", maw: 720, children: resolvedDescription })
2726
2962
  ] }),
2727
- actions ? /* @__PURE__ */ jsx43(Box14, { children: actions }) : null
2963
+ actions ? /* @__PURE__ */ jsx45(Box14, { children: actions }) : null
2728
2964
  ] });
2729
2965
  }
2730
2966
 
2731
2967
  // src/FilterDrawer.tsx
2732
- import { Drawer, Group as Group34, Stack as Stack38, Text as Text34 } from "@mantine/core";
2733
- import { jsx as jsx44, jsxs as jsxs38 } from "react/jsx-runtime";
2968
+ import { Drawer, Group as Group35, Stack as Stack39, Text as Text35 } from "@mantine/core";
2969
+ import { jsx as jsx46, jsxs as jsxs39 } from "react/jsx-runtime";
2734
2970
  function FilterDrawer({
2735
2971
  opened,
2736
2972
  onClose,
@@ -2746,7 +2982,7 @@ function FilterDrawer({
2746
2982
  }) {
2747
2983
  const resolvedPrimaryAction = applyAction ?? primaryAction;
2748
2984
  const resolvedSecondaryAction = resetAction ?? secondaryAction;
2749
- return /* @__PURE__ */ jsx44(
2985
+ return /* @__PURE__ */ jsx46(
2750
2986
  Drawer,
2751
2987
  {
2752
2988
  opened,
@@ -2755,11 +2991,11 @@ function FilterDrawer({
2755
2991
  position: mode === "bottom-sheet" ? "bottom" : "right",
2756
2992
  size: mode === "bottom-sheet" ? "auto" : "md",
2757
2993
  radius: mode === "bottom-sheet" ? "xl" : void 0,
2758
- children: /* @__PURE__ */ jsxs38(Stack38, { gap: "md", children: [
2759
- description ? /* @__PURE__ */ jsx44(Text34, { size: "sm", c: "dimmed", children: description }) : null,
2994
+ children: /* @__PURE__ */ jsxs39(Stack39, { gap: "md", children: [
2995
+ description ? /* @__PURE__ */ jsx46(Text35, { size: "sm", c: "dimmed", children: description }) : null,
2760
2996
  children,
2761
- resolvedPrimaryAction || resolvedSecondaryAction || closeAction ? /* @__PURE__ */ jsxs38(Group34, { justify: "space-between", mt: "md", children: [
2762
- /* @__PURE__ */ jsxs38(Group34, { gap: "sm", children: [
2997
+ resolvedPrimaryAction || resolvedSecondaryAction || closeAction ? /* @__PURE__ */ jsxs39(Group35, { justify: "space-between", mt: "md", children: [
2998
+ /* @__PURE__ */ jsxs39(Group35, { gap: "sm", children: [
2763
2999
  closeAction,
2764
3000
  resolvedSecondaryAction
2765
3001
  ] }),
@@ -2771,8 +3007,8 @@ function FilterDrawer({
2771
3007
  }
2772
3008
 
2773
3009
  // src/PlaceholderPanel.tsx
2774
- import { Badge as Badge19, Card as Card11, Stack as Stack39, Text as Text35, Title as Title27 } from "@mantine/core";
2775
- import { Fragment as Fragment7, jsx as jsx45, jsxs as jsxs39 } from "react/jsx-runtime";
3010
+ import { Badge as Badge20, Card as Card11, Stack as Stack40, Text as Text36, Title as Title27 } from "@mantine/core";
3011
+ import { Fragment as Fragment8, jsx as jsx47, jsxs as jsxs40 } from "react/jsx-runtime";
2776
3012
  function PlaceholderPanel({
2777
3013
  title,
2778
3014
  description,
@@ -2782,16 +3018,16 @@ function PlaceholderPanel({
2782
3018
  mode
2783
3019
  }) {
2784
3020
  if (mode === "live" && children) {
2785
- return /* @__PURE__ */ jsx45(Fragment7, { children });
3021
+ return /* @__PURE__ */ jsx47(Fragment8, { children });
2786
3022
  }
2787
- return /* @__PURE__ */ jsx45(Card11, { children: /* @__PURE__ */ jsxs39(Stack39, { gap: "md", children: [
2788
- badge ? /* @__PURE__ */ jsx45(Badge19, { variant: "light", color: "blue", w: "fit-content", children: badge }) : null,
2789
- /* @__PURE__ */ jsxs39(Stack39, { gap: "xs", children: [
2790
- /* @__PURE__ */ jsx45(Title27, { order: 4, children: title }),
2791
- /* @__PURE__ */ jsx45(Text35, { c: "dimmed", children: description })
3023
+ return /* @__PURE__ */ jsx47(Card11, { children: /* @__PURE__ */ jsxs40(Stack40, { gap: "md", children: [
3024
+ badge ? /* @__PURE__ */ jsx47(Badge20, { variant: "light", color: "blue", w: "fit-content", children: badge }) : null,
3025
+ /* @__PURE__ */ jsxs40(Stack40, { gap: "xs", children: [
3026
+ /* @__PURE__ */ jsx47(Title27, { order: 4, children: title }),
3027
+ /* @__PURE__ */ jsx47(Text36, { c: "dimmed", children: description })
2792
3028
  ] }),
2793
- footer ? /* @__PURE__ */ jsx45(Text35, { size: "sm", children: footer }) : null,
2794
- /* @__PURE__ */ jsx45(
3029
+ footer ? /* @__PURE__ */ jsx47(Text36, { size: "sm", children: footer }) : null,
3030
+ /* @__PURE__ */ jsx47(
2795
3031
  StateBlock,
2796
3032
  {
2797
3033
  variant: "not-enough-data",
@@ -2805,7 +3041,7 @@ function PlaceholderPanel({
2805
3041
 
2806
3042
  // src/SimpleDataTable.tsx
2807
3043
  import { ScrollArea, Table } from "@mantine/core";
2808
- import { jsx as jsx46, jsxs as jsxs40 } from "react/jsx-runtime";
3044
+ import { jsx as jsx48, jsxs as jsxs41 } from "react/jsx-runtime";
2809
3045
  function SimpleDataTable({
2810
3046
  columns,
2811
3047
  rows,
@@ -2816,23 +3052,23 @@ function SimpleDataTable({
2816
3052
  getRowKey
2817
3053
  }) {
2818
3054
  if (error) {
2819
- return /* @__PURE__ */ jsx46(StateBlock, { variant: "error", title: "Unable to load data", description: error, compact: true });
3055
+ return /* @__PURE__ */ jsx48(StateBlock, { variant: "error", title: "Unable to load data", description: error, compact: true });
2820
3056
  }
2821
3057
  if (loading) {
2822
- return /* @__PURE__ */ jsx46(StateBlock, { variant: "loading", title: "Loading data", description: "Please wait while the shared dataset is prepared.", compact: true });
3058
+ return /* @__PURE__ */ jsx48(StateBlock, { variant: "loading", title: "Loading data", description: "Please wait while the shared dataset is prepared.", compact: true });
2823
3059
  }
2824
3060
  if (!rows.length) {
2825
- return /* @__PURE__ */ jsx46(StateBlock, { variant: "empty", title: emptyTitle, description: emptyDescription, compact: true });
3061
+ return /* @__PURE__ */ jsx48(StateBlock, { variant: "empty", title: emptyTitle, description: emptyDescription, compact: true });
2826
3062
  }
2827
- return /* @__PURE__ */ jsx46(ScrollArea, { children: /* @__PURE__ */ jsxs40(Table, { striped: true, highlightOnHover: true, withTableBorder: true, withColumnBorders: true, children: [
2828
- /* @__PURE__ */ jsx46(Table.Thead, { children: /* @__PURE__ */ jsx46(Table.Tr, { children: columns.map((column) => /* @__PURE__ */ jsx46(Table.Th, { children: column.header }, String(column.key))) }) }),
2829
- /* @__PURE__ */ jsx46(Table.Tbody, { children: rows.map((row, index) => /* @__PURE__ */ jsx46(Table.Tr, { children: columns.map((column) => /* @__PURE__ */ jsx46(Table.Td, { children: column.render ? column.render(row) : String(row[column.key] ?? "") }, String(column.key))) }, getRowKey ? getRowKey(row, index) : index)) })
3063
+ return /* @__PURE__ */ jsx48(ScrollArea, { children: /* @__PURE__ */ jsxs41(Table, { striped: true, highlightOnHover: true, withTableBorder: true, withColumnBorders: true, children: [
3064
+ /* @__PURE__ */ jsx48(Table.Thead, { children: /* @__PURE__ */ jsx48(Table.Tr, { children: columns.map((column) => /* @__PURE__ */ jsx48(Table.Th, { children: column.header }, String(column.key))) }) }),
3065
+ /* @__PURE__ */ jsx48(Table.Tbody, { children: rows.map((row, index) => /* @__PURE__ */ jsx48(Table.Tr, { children: columns.map((column) => /* @__PURE__ */ jsx48(Table.Td, { children: column.render ? column.render(row) : String(row[column.key] ?? "") }, String(column.key))) }, getRowKey ? getRowKey(row, index) : index)) })
2830
3066
  ] }) });
2831
3067
  }
2832
3068
 
2833
3069
  // src/StatsSection.tsx
2834
- import { Stack as Stack40, Title as Title28 } from "@mantine/core";
2835
- import { jsx as jsx47, jsxs as jsxs41 } from "react/jsx-runtime";
3070
+ import { Stack as Stack41, Title as Title28 } from "@mantine/core";
3071
+ import { jsx as jsx49, jsxs as jsxs42 } from "react/jsx-runtime";
2836
3072
  function StatsSection({
2837
3073
  title,
2838
3074
  loading = false,
@@ -2844,11 +3080,11 @@ function StatsSection({
2844
3080
  }) {
2845
3081
  let content = children;
2846
3082
  if (error) {
2847
- content = /* @__PURE__ */ jsx47(StateBlock, { variant: "error", title: "Unable to load statistics", description: error, compact: true });
3083
+ content = /* @__PURE__ */ jsx49(StateBlock, { variant: "error", title: "Unable to load statistics", description: error, compact: true });
2848
3084
  } else if (loading) {
2849
- content = /* @__PURE__ */ jsx47(StateBlock, { variant: "loading", title: "Loading statistics", description: "This shared data surface is still synchronizing.", compact: true });
3085
+ content = /* @__PURE__ */ jsx49(StateBlock, { variant: "loading", title: "Loading statistics", description: "This shared data surface is still synchronizing.", compact: true });
2850
3086
  } else if (belowThreshold) {
2851
- content = /* @__PURE__ */ jsx47(
3087
+ content = /* @__PURE__ */ jsx49(
2852
3088
  StateBlock,
2853
3089
  {
2854
3090
  variant: "not-enough-data",
@@ -2858,17 +3094,17 @@ function StatsSection({
2858
3094
  }
2859
3095
  );
2860
3096
  } else if (placeholder) {
2861
- content = /* @__PURE__ */ jsx47(PlaceholderPanel, { ...placeholder, mode: "placeholder" });
3097
+ content = /* @__PURE__ */ jsx49(PlaceholderPanel, { ...placeholder, mode: "placeholder" });
2862
3098
  }
2863
- return /* @__PURE__ */ jsxs41(Stack40, { gap: "md", children: [
2864
- /* @__PURE__ */ jsx47(Title28, { order: 3, children: title }),
3099
+ return /* @__PURE__ */ jsxs42(Stack41, { gap: "md", children: [
3100
+ /* @__PURE__ */ jsx49(Title28, { order: 3, children: title }),
2865
3101
  content
2866
3102
  ] });
2867
3103
  }
2868
3104
 
2869
3105
  // src/PeriodSelector.tsx
2870
- import { Badge as Badge20, Group as Group35, Stack as Stack41, Text as Text36 } from "@mantine/core";
2871
- import { jsx as jsx48, jsxs as jsxs42 } from "react/jsx-runtime";
3106
+ import { Badge as Badge21, Group as Group36, Stack as Stack42, Text as Text37 } from "@mantine/core";
3107
+ import { jsx as jsx50, jsxs as jsxs43 } from "react/jsx-runtime";
2872
3108
  function PeriodSelector({
2873
3109
  label,
2874
3110
  description,
@@ -2884,34 +3120,34 @@ function PeriodSelector({
2884
3120
  disabled = false
2885
3121
  }) {
2886
3122
  const selectedOption = options.find((option) => option.value === value);
2887
- return /* @__PURE__ */ jsx48(FormField, { label, description, error, children: /* @__PURE__ */ jsxs42(Stack41, { gap: "sm", children: [
2888
- /* @__PURE__ */ jsx48(
3123
+ return /* @__PURE__ */ jsx50(FormField, { label, description, error, children: /* @__PURE__ */ jsxs43(Stack42, { gap: "sm", children: [
3124
+ /* @__PURE__ */ jsx50(
2889
3125
  "select",
2890
3126
  {
2891
3127
  "aria-label": typeof label === "string" ? label : "Reporting period",
2892
3128
  value,
2893
3129
  disabled,
2894
3130
  onChange: (event) => onChange?.(event.currentTarget.value),
2895
- children: options.map((option) => /* @__PURE__ */ jsx48("option", { value: option.value, children: option.label }, option.value))
3131
+ children: options.map((option) => /* @__PURE__ */ jsx50("option", { value: option.value, children: option.label }, option.value))
2896
3132
  }
2897
3133
  ),
2898
- /* @__PURE__ */ jsxs42(Group35, { gap: "xs", wrap: "wrap", children: [
2899
- timezone ? /* @__PURE__ */ jsxs42(Badge20, { variant: "outline", color: "gray", children: [
3134
+ /* @__PURE__ */ jsxs43(Group36, { gap: "xs", wrap: "wrap", children: [
3135
+ timezone ? /* @__PURE__ */ jsxs43(Badge21, { variant: "outline", color: "gray", children: [
2900
3136
  "Timezone: ",
2901
3137
  timezone
2902
3138
  ] }) : null,
2903
- filtered ? /* @__PURE__ */ jsx48(Badge20, { variant: "light", color: "blue", children: "Filtered" }) : null,
2904
- stale ? /* @__PURE__ */ jsx48(Badge20, { variant: "light", color: "orange", children: "Stale data" }) : null,
2905
- scope ? /* @__PURE__ */ jsx48(Badge20, { variant: "outline", color: "gray", children: scope }) : null
3139
+ filtered ? /* @__PURE__ */ jsx50(Badge21, { variant: "light", color: "blue", children: "Filtered" }) : null,
3140
+ stale ? /* @__PURE__ */ jsx50(Badge21, { variant: "light", color: "orange", children: "Stale data" }) : null,
3141
+ scope ? /* @__PURE__ */ jsx50(Badge21, { variant: "outline", color: "gray", children: scope }) : null
2906
3142
  ] }),
2907
- selectedOption?.description ? /* @__PURE__ */ jsx48(Text36, { size: "sm", c: "dimmed", children: selectedOption.description }) : null,
2908
- helperText ? /* @__PURE__ */ jsx48(Text36, { size: "sm", c: "dimmed", children: helperText }) : null
3143
+ selectedOption?.description ? /* @__PURE__ */ jsx50(Text37, { size: "sm", c: "dimmed", children: selectedOption.description }) : null,
3144
+ helperText ? /* @__PURE__ */ jsx50(Text37, { size: "sm", c: "dimmed", children: helperText }) : null
2909
3145
  ] }) });
2910
3146
  }
2911
3147
 
2912
3148
  // src/EvidencePanel.tsx
2913
- import { Alert as Alert2, Badge as Badge21, Group as Group36, Paper as Paper13, Stack as Stack42, Text as Text37, Title as Title29 } from "@mantine/core";
2914
- import { jsx as jsx49, jsxs as jsxs43 } from "react/jsx-runtime";
3149
+ import { Alert as Alert2, Badge as Badge22, Group as Group37, Paper as Paper13, Stack as Stack43, Text as Text38, Title as Title29 } from "@mantine/core";
3150
+ import { jsx as jsx51, jsxs as jsxs44 } from "react/jsx-runtime";
2915
3151
  var stateTone2 = {
2916
3152
  current: { label: "Current", color: "teal" },
2917
3153
  stale: { label: "Stale", color: "orange" },
@@ -2936,33 +3172,33 @@ function EvidencePanel({
2936
3172
  }) {
2937
3173
  const tone = stateTone2[state];
2938
3174
  const isProblem = state === "error" || state === "permission-limited" || state === "stale" || state === "partial";
2939
- return /* @__PURE__ */ jsx49(Paper13, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs43(Stack42, { gap: "md", children: [
2940
- /* @__PURE__ */ jsxs43(Group36, { justify: "space-between", align: "flex-start", gap: "sm", children: [
2941
- /* @__PURE__ */ jsxs43(Stack42, { gap: 4, children: [
2942
- /* @__PURE__ */ jsx49(Title29, { order: 4, children: title }),
2943
- description ? /* @__PURE__ */ jsx49(Text37, { size: "sm", c: "dimmed", children: description }) : null
3175
+ return /* @__PURE__ */ jsx51(Paper13, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs44(Stack43, { gap: "md", children: [
3176
+ /* @__PURE__ */ jsxs44(Group37, { justify: "space-between", align: "flex-start", gap: "sm", children: [
3177
+ /* @__PURE__ */ jsxs44(Stack43, { gap: 4, children: [
3178
+ /* @__PURE__ */ jsx51(Title29, { order: 4, children: title }),
3179
+ description ? /* @__PURE__ */ jsx51(Text38, { size: "sm", c: "dimmed", children: description }) : null
2944
3180
  ] }),
2945
- /* @__PURE__ */ jsx49(Badge21, { variant: "light", color: tone.color, children: tone.label })
3181
+ /* @__PURE__ */ jsx51(Badge22, { variant: "light", color: tone.color, children: tone.label })
2946
3182
  ] }),
2947
- /* @__PURE__ */ jsxs43(Group36, { gap: "xs", wrap: "wrap", children: [
2948
- source ? /* @__PURE__ */ jsxs43(Badge21, { variant: "outline", color: "gray", children: [
3183
+ /* @__PURE__ */ jsxs44(Group37, { gap: "xs", wrap: "wrap", children: [
3184
+ source ? /* @__PURE__ */ jsxs44(Badge22, { variant: "outline", color: "gray", children: [
2949
3185
  "Source: ",
2950
3186
  source
2951
3187
  ] }) : null,
2952
- freshness ? /* @__PURE__ */ jsxs43(Badge21, { variant: "outline", color: "gray", children: [
3188
+ freshness ? /* @__PURE__ */ jsxs44(Badge22, { variant: "outline", color: "gray", children: [
2953
3189
  "Freshness: ",
2954
3190
  freshness
2955
3191
  ] }) : null,
2956
- confidence ? /* @__PURE__ */ jsxs43(Badge21, { variant: "outline", color: "gray", children: [
3192
+ confidence ? /* @__PURE__ */ jsxs44(Badge22, { variant: "outline", color: "gray", children: [
2957
3193
  "Confidence: ",
2958
3194
  confidence
2959
3195
  ] }) : null,
2960
- typeof evidenceCount === "number" ? /* @__PURE__ */ jsxs43(Badge21, { variant: "outline", color: "gray", children: [
3196
+ typeof evidenceCount === "number" ? /* @__PURE__ */ jsxs44(Badge22, { variant: "outline", color: "gray", children: [
2961
3197
  "Evidence: ",
2962
3198
  evidenceCount
2963
3199
  ] }) : null
2964
3200
  ] }),
2965
- permissionNote ? /* @__PURE__ */ jsx49(Alert2, { color: isProblem ? tone.color : "gray", variant: "light", children: permissionNote }) : null,
3201
+ permissionNote ? /* @__PURE__ */ jsx51(Alert2, { color: isProblem ? tone.color : "gray", variant: "light", children: permissionNote }) : null,
2966
3202
  details,
2967
3203
  children,
2968
3204
  retryAction
@@ -2970,8 +3206,8 @@ function EvidencePanel({
2970
3206
  }
2971
3207
 
2972
3208
  // src/ChartTokenPanel.tsx
2973
- import { Badge as Badge22, Group as Group37, Paper as Paper14, Stack as Stack43, Text as Text38, Title as Title30 } from "@mantine/core";
2974
- import { jsx as jsx50, jsxs as jsxs44 } from "react/jsx-runtime";
3209
+ import { Badge as Badge23, Group as Group38, Paper as Paper14, Stack as Stack44, Text as Text39, Title as Title30 } from "@mantine/core";
3210
+ import { jsx as jsx52, jsxs as jsxs45 } from "react/jsx-runtime";
2975
3211
  function ChartTokenPanel({
2976
3212
  title,
2977
3213
  description,
@@ -2983,42 +3219,127 @@ function ChartTokenPanel({
2983
3219
  retryAction
2984
3220
  }) {
2985
3221
  if (state === "loading") {
2986
- return /* @__PURE__ */ jsx50(StateBlock, { variant: "loading", title: "Loading chart", description: summary, compact: true, action: retryAction });
3222
+ return /* @__PURE__ */ jsx52(StateBlock, { variant: "loading", title: "Loading chart", description: summary, compact: true, action: retryAction });
2987
3223
  }
2988
3224
  if (state === "empty") {
2989
- return /* @__PURE__ */ jsx50(StateBlock, { variant: "empty", title: "No chart data", description: summary, compact: true, action: retryAction });
3225
+ return /* @__PURE__ */ jsx52(StateBlock, { variant: "empty", title: "No chart data", description: summary, compact: true, action: retryAction });
2990
3226
  }
2991
3227
  if (state === "below-threshold") {
2992
- return /* @__PURE__ */ jsx50(StateBlock, { variant: "not-enough-data", title: "Not enough data for chart", description: summary, compact: true, action: retryAction });
3228
+ return /* @__PURE__ */ jsx52(StateBlock, { variant: "not-enough-data", title: "Not enough data for chart", description: summary, compact: true, action: retryAction });
2993
3229
  }
2994
3230
  if (state === "error") {
2995
- return /* @__PURE__ */ jsx50(StateBlock, { variant: "error", title: "Unable to load chart", description: summary, compact: true, action: retryAction });
3231
+ return /* @__PURE__ */ jsx52(StateBlock, { variant: "error", title: "Unable to load chart", description: summary, compact: true, action: retryAction });
2996
3232
  }
2997
- return /* @__PURE__ */ jsx50(Paper14, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs44(Stack43, { gap: "md", children: [
2998
- /* @__PURE__ */ jsxs44(Group37, { justify: "space-between", align: "flex-start", gap: "sm", children: [
2999
- /* @__PURE__ */ jsxs44(Stack43, { gap: 4, children: [
3000
- /* @__PURE__ */ jsx50(Title30, { order: 4, children: title }),
3001
- description ? /* @__PURE__ */ jsx50(Text38, { size: "sm", c: "dimmed", children: description }) : null
3233
+ return /* @__PURE__ */ jsx52(Paper14, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs45(Stack44, { gap: "md", children: [
3234
+ /* @__PURE__ */ jsxs45(Group38, { justify: "space-between", align: "flex-start", gap: "sm", children: [
3235
+ /* @__PURE__ */ jsxs45(Stack44, { gap: 4, children: [
3236
+ /* @__PURE__ */ jsx52(Title30, { order: 4, children: title }),
3237
+ description ? /* @__PURE__ */ jsx52(Text39, { size: "sm", c: "dimmed", children: description }) : null
3002
3238
  ] }),
3003
- state !== "ready" ? /* @__PURE__ */ jsx50(Badge22, { variant: "light", color: state === "permission-limited" ? "grape" : "yellow", children: state.replace("-", " ") }) : null
3239
+ state !== "ready" ? /* @__PURE__ */ jsx52(Badge23, { variant: "light", color: state === "permission-limited" ? "grape" : "yellow", children: state.replace("-", " ") }) : null
3004
3240
  ] }),
3005
- /* @__PURE__ */ jsx50(Text38, { size: "sm", children: summary }),
3006
- legend.length ? /* @__PURE__ */ jsx50(Group37, { gap: "xs", wrap: "wrap", "aria-label": "Chart legend", children: legend.map((item, index) => /* @__PURE__ */ jsxs44(Badge22, { variant: "outline", color: "gray", title: typeof item.description === "string" ? item.description : void 0, children: [
3241
+ /* @__PURE__ */ jsx52(Text39, { size: "sm", children: summary }),
3242
+ legend.length ? /* @__PURE__ */ jsx52(Group38, { gap: "xs", wrap: "wrap", "aria-label": "Chart legend", children: legend.map((item, index) => /* @__PURE__ */ jsxs45(Badge23, { variant: "outline", color: "gray", title: typeof item.description === "string" ? item.description : void 0, children: [
3007
3243
  item.label,
3008
3244
  ": ",
3009
3245
  item.token
3010
3246
  ] }, `${String(item.label)}-${index}`)) }) : null,
3011
3247
  children,
3012
- tableFallback ? /* @__PURE__ */ jsxs44(Stack43, { gap: "xs", children: [
3013
- /* @__PURE__ */ jsx50(Text38, { size: "sm", fw: 600, children: "Accessible data fallback" }),
3248
+ tableFallback ? /* @__PURE__ */ jsxs45(Stack44, { gap: "xs", children: [
3249
+ /* @__PURE__ */ jsx52(Text39, { size: "sm", fw: 600, children: "Accessible data fallback" }),
3014
3250
  tableFallback
3015
3251
  ] }) : null
3016
3252
  ] }) });
3017
3253
  }
3018
3254
 
3255
+ // src/GdsChart.tsx
3256
+ import { Badge as Badge24, Group as Group39, Paper as Paper15, Stack as Stack45, Text as Text40 } from "@mantine/core";
3257
+ import { jsx as jsx53, jsxs as jsxs46 } from "react/jsx-runtime";
3258
+ function GdsChart({ type, title, summary, data, state = "ready", retryAction }) {
3259
+ const tableRows = data.map((item) => ({ label: item.label, value: String(item.value), group: item.group ?? "-" }));
3260
+ return /* @__PURE__ */ jsx53(
3261
+ ChartTokenPanel,
3262
+ {
3263
+ title,
3264
+ summary,
3265
+ state,
3266
+ retryAction,
3267
+ legend: [
3268
+ { label: "Primary", token: "var(--mantine-color-blue-6)" },
3269
+ { label: "Secondary", token: "var(--mantine-color-teal-6)" }
3270
+ ],
3271
+ tableFallback: /* @__PURE__ */ jsx53(
3272
+ SimpleDataTable,
3273
+ {
3274
+ columns: [
3275
+ { key: "label", header: "Label" },
3276
+ { key: "value", header: "Value" },
3277
+ { key: "group", header: "Group" }
3278
+ ],
3279
+ rows: tableRows
3280
+ }
3281
+ ),
3282
+ children: /* @__PURE__ */ jsx53(Paper15, { withBorder: true, radius: "md", p: "md", children: /* @__PURE__ */ jsxs46(Stack45, { gap: "sm", children: [
3283
+ /* @__PURE__ */ jsxs46(Group39, { justify: "space-between", children: [
3284
+ /* @__PURE__ */ jsx53(Text40, { fw: 700, children: title }),
3285
+ /* @__PURE__ */ jsx53(Badge24, { variant: "light", children: type })
3286
+ ] }),
3287
+ /* @__PURE__ */ jsx53(Text40, { size: "sm", c: "dimmed", children: summary }),
3288
+ /* @__PURE__ */ jsxs46(Text40, { size: "xs", c: "dimmed", children: [
3289
+ "Type lane: ",
3290
+ type
3291
+ ] })
3292
+ ] }) })
3293
+ }
3294
+ );
3295
+ }
3296
+
3297
+ // src/LayoutBlocks.tsx
3298
+ import { Alert as Alert3, Card as Card12, SimpleGrid as SimpleGrid7, Stack as Stack46, Text as Text41, Title as Title31 } from "@mantine/core";
3299
+ import { jsx as jsx54, jsxs as jsxs47 } from "react/jsx-runtime";
3300
+ function renderBlock(block) {
3301
+ switch (block.type) {
3302
+ case "hero":
3303
+ return /* @__PURE__ */ jsx54(SectionPanel, { title: String(block.props.title ?? "Hero"), description: String(block.props.description ?? "Hero block"), children: /* @__PURE__ */ jsx54(Text41, { children: String(block.props.body ?? "Composable hero content") }) });
3304
+ case "stats":
3305
+ return /* @__PURE__ */ jsx54(SimpleGrid7, { cols: { base: 1, md: 3 }, children: block.props.items?.map((item) => /* @__PURE__ */ jsx54(Card12, { withBorder: true, children: /* @__PURE__ */ jsxs47(Stack46, { gap: 2, children: [
3306
+ /* @__PURE__ */ jsx54(Text41, { size: "sm", c: "dimmed", children: item.label }),
3307
+ /* @__PURE__ */ jsx54(Title31, { order: 4, children: item.value })
3308
+ ] }) }, `${block.id}-${item.label}`)) ?? null });
3309
+ case "cards-grid":
3310
+ return /* @__PURE__ */ jsx54(SimpleGrid7, { cols: { base: 1, md: 2 }, children: block.props.items?.map((item) => /* @__PURE__ */ jsx54(ListingCard, { title: item.title, description: item.description, size: "sm" }, `${block.id}-${item.title}`)) ?? null });
3311
+ case "chart":
3312
+ return /* @__PURE__ */ jsx54(
3313
+ GdsChart,
3314
+ {
3315
+ type: block.props.chartType ?? "bar",
3316
+ title: String(block.props.title ?? "Chart block"),
3317
+ summary: String(block.props.summary ?? "Block-composed chart summary"),
3318
+ data: block.props.data ?? [{ label: "A", value: 10 }]
3319
+ }
3320
+ );
3321
+ case "cta":
3322
+ return /* @__PURE__ */ jsx54(
3323
+ ActionBar,
3324
+ {
3325
+ primary: { action: "save" },
3326
+ secondary: [{ action: "cancel" }],
3327
+ tertiary: [{ action: "preview" }]
3328
+ }
3329
+ );
3330
+ case "footer":
3331
+ return /* @__PURE__ */ jsx54(Text41, { size: "sm", c: "dimmed", children: String(block.props.text ?? "Footer block") });
3332
+ default:
3333
+ return /* @__PURE__ */ jsx54(Alert3, { color: "red", children: "Unsupported block type." });
3334
+ }
3335
+ }
3336
+ function renderGdsLayout(schema) {
3337
+ return /* @__PURE__ */ jsx54(Stack46, { gap: "lg", children: schema.blocks.map((block) => /* @__PURE__ */ jsx54("div", { children: renderBlock(block) }, block.id)) });
3338
+ }
3339
+
3019
3340
  // src/ReportingSection.tsx
3020
- import { Group as Group38, Paper as Paper15, Stack as Stack44, Text as Text39, Title as Title31 } from "@mantine/core";
3021
- import { jsx as jsx51, jsxs as jsxs45 } from "react/jsx-runtime";
3341
+ import { Group as Group40, Paper as Paper16, Stack as Stack47, Text as Text42, Title as Title32 } from "@mantine/core";
3342
+ import { jsx as jsx55, jsxs as jsxs48 } from "react/jsx-runtime";
3022
3343
  function ReportingSection({
3023
3344
  title,
3024
3345
  description,
@@ -3034,26 +3355,26 @@ function ReportingSection({
3034
3355
  }) {
3035
3356
  let stateBlock = null;
3036
3357
  if (state === "loading") {
3037
- stateBlock = /* @__PURE__ */ jsx51(StateBlock, { variant: "loading", title: "Loading report", description: stateMessage ?? "The reporting surface is synchronizing.", compact: true });
3358
+ stateBlock = /* @__PURE__ */ jsx55(StateBlock, { variant: "loading", title: "Loading report", description: stateMessage ?? "The reporting surface is synchronizing.", compact: true });
3038
3359
  } else if (state === "empty") {
3039
- stateBlock = /* @__PURE__ */ jsx51(StateBlock, { variant: "empty", title: "No report data", description: stateMessage ?? "No records match this reporting scope yet.", compact: true });
3360
+ stateBlock = /* @__PURE__ */ jsx55(StateBlock, { variant: "empty", title: "No report data", description: stateMessage ?? "No records match this reporting scope yet.", compact: true });
3040
3361
  } else if (state === "error") {
3041
- stateBlock = /* @__PURE__ */ jsx51(StateBlock, { variant: "error", title: "Unable to load report", description: stateMessage ?? "The report could not be prepared.", compact: true, action: retryAction });
3362
+ stateBlock = /* @__PURE__ */ jsx55(StateBlock, { variant: "error", title: "Unable to load report", description: stateMessage ?? "The report could not be prepared.", compact: true, action: retryAction });
3042
3363
  } else if (state === "below-threshold") {
3043
- stateBlock = /* @__PURE__ */ jsx51(StateBlock, { variant: "not-enough-data", title: "Not enough data", description: stateMessage ?? "This report is hidden until the threshold is met.", compact: true });
3364
+ stateBlock = /* @__PURE__ */ jsx55(StateBlock, { variant: "not-enough-data", title: "Not enough data", description: stateMessage ?? "This report is hidden until the threshold is met.", compact: true });
3044
3365
  } else if (state === "permission-limited") {
3045
- stateBlock = /* @__PURE__ */ jsx51(StateBlock, { variant: "permission", title: "Permission-limited report", description: stateMessage ?? "Some evidence is hidden by access rules.", compact: true, action: retryAction });
3366
+ stateBlock = /* @__PURE__ */ jsx55(StateBlock, { variant: "permission", title: "Permission-limited report", description: stateMessage ?? "Some evidence is hidden by access rules.", compact: true, action: retryAction });
3046
3367
  }
3047
- return /* @__PURE__ */ jsx51(Paper15, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs45(Stack44, { gap: "lg", children: [
3048
- /* @__PURE__ */ jsxs45(Group38, { justify: "space-between", align: "flex-start", gap: "md", children: [
3049
- /* @__PURE__ */ jsxs45(Stack44, { gap: 4, children: [
3050
- /* @__PURE__ */ jsx51(Title31, { order: 3, children: title }),
3051
- description ? /* @__PURE__ */ jsx51(Text39, { size: "sm", c: "dimmed", children: description }) : null
3368
+ return /* @__PURE__ */ jsx55(Paper16, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs48(Stack47, { gap: "lg", children: [
3369
+ /* @__PURE__ */ jsxs48(Group40, { justify: "space-between", align: "flex-start", gap: "md", children: [
3370
+ /* @__PURE__ */ jsxs48(Stack47, { gap: 4, children: [
3371
+ /* @__PURE__ */ jsx55(Title32, { order: 3, children: title }),
3372
+ description ? /* @__PURE__ */ jsx55(Text42, { size: "sm", c: "dimmed", children: description }) : null
3052
3373
  ] }),
3053
3374
  action
3054
3375
  ] }),
3055
3376
  periodControl,
3056
- (state === "partial" || state === "stale" || state === "filtered") && stateMessage ? /* @__PURE__ */ jsx51(StateBlock, { variant: "info", title: state === "partial" ? "Partial report" : state === "stale" ? "Stale report" : "Filtered report", description: stateMessage, compact: true }) : null,
3377
+ (state === "partial" || state === "stale" || state === "filtered") && stateMessage ? /* @__PURE__ */ jsx55(StateBlock, { variant: "info", title: state === "partial" ? "Partial report" : state === "stale" ? "Stale report" : "Filtered report", description: stateMessage, compact: true }) : null,
3057
3378
  stateBlock,
3058
3379
  metrics,
3059
3380
  chart,
@@ -3062,6 +3383,91 @@ function ReportingSection({
3062
3383
  ] }) });
3063
3384
  }
3064
3385
 
3386
+ // src/Notifications.tsx
3387
+ import { Alert as Alert4, Badge as Badge25, Button as Button6, Group as Group41, Paper as Paper17, Stack as Stack48, Text as Text43, Title as Title33 } from "@mantine/core";
3388
+ import { jsx as jsx56, jsxs as jsxs49 } from "react/jsx-runtime";
3389
+ var notificationColorMap = {
3390
+ success: "teal",
3391
+ error: "red",
3392
+ warning: "yellow",
3393
+ info: "blue",
3394
+ neutral: "gray"
3395
+ };
3396
+ function severityToStateVariant(severity) {
3397
+ if (severity === "success") return "success";
3398
+ if (severity === "error") return "error";
3399
+ if (severity === "warning") return "not-enough-data";
3400
+ if (severity === "neutral") return "disabled";
3401
+ return "info";
3402
+ }
3403
+ function InlineAlert({
3404
+ title,
3405
+ message,
3406
+ severity = "info",
3407
+ action
3408
+ }) {
3409
+ return /* @__PURE__ */ jsx56(
3410
+ Alert4,
3411
+ {
3412
+ variant: "light",
3413
+ color: notificationColorMap[severity],
3414
+ title,
3415
+ icon: /* @__PURE__ */ jsx56(GdsIcons.Info, { size: "1rem" }),
3416
+ role: severity === "error" ? "alert" : "status",
3417
+ children: /* @__PURE__ */ jsxs49(Stack48, { gap: "xs", children: [
3418
+ message ? /* @__PURE__ */ jsx56(Text43, { size: "sm", children: message }) : null,
3419
+ action
3420
+ ] })
3421
+ }
3422
+ );
3423
+ }
3424
+ function BannerNotice({
3425
+ eyebrow,
3426
+ title,
3427
+ message,
3428
+ severity = "info",
3429
+ action
3430
+ }) {
3431
+ return /* @__PURE__ */ jsx56(Paper17, { withBorder: true, radius: "lg", p: "md", children: /* @__PURE__ */ jsxs49(Stack48, { gap: "xs", children: [
3432
+ /* @__PURE__ */ jsxs49(Group41, { justify: "space-between", align: "center", children: [
3433
+ /* @__PURE__ */ jsxs49(Group41, { gap: "xs", children: [
3434
+ eyebrow ? /* @__PURE__ */ jsx56(Badge25, { variant: "light", children: eyebrow }) : null,
3435
+ /* @__PURE__ */ jsx56(Badge25, { variant: "light", color: notificationColorMap[severity], children: severityToStateVariant(severity).replace("-", " ") })
3436
+ ] }),
3437
+ action
3438
+ ] }),
3439
+ /* @__PURE__ */ jsx56(Title33, { order: 4, children: title }),
3440
+ message ? /* @__PURE__ */ jsx56(Text43, { size: "sm", c: "dimmed", children: message }) : null
3441
+ ] }) });
3442
+ }
3443
+ function NotificationCenterView({
3444
+ notifications,
3445
+ onDismiss,
3446
+ onClear,
3447
+ title = "Notifications",
3448
+ emptyMessage = "No active notifications."
3449
+ }) {
3450
+ return /* @__PURE__ */ jsx56(Paper17, { withBorder: true, radius: "lg", p: "md", children: /* @__PURE__ */ jsxs49(Stack48, { gap: "md", children: [
3451
+ /* @__PURE__ */ jsxs49(Group41, { justify: "space-between", align: "center", children: [
3452
+ /* @__PURE__ */ jsx56(Title33, { order: 4, children: title }),
3453
+ /* @__PURE__ */ jsx56(Button6, { size: "xs", variant: "subtle", onClick: onClear, disabled: notifications.length === 0 || !onClear, children: "Clear all" })
3454
+ ] }),
3455
+ notifications.length === 0 ? /* @__PURE__ */ jsx56(Text43, { size: "sm", c: "dimmed", children: emptyMessage }) : /* @__PURE__ */ jsx56(Stack48, { gap: "sm", children: notifications.map((item) => /* @__PURE__ */ jsx56(
3456
+ InlineAlert,
3457
+ {
3458
+ severity: item.severity,
3459
+ title: item.title,
3460
+ message: item.message,
3461
+ action: /* @__PURE__ */ jsxs49(Group41, { gap: "xs", children: [
3462
+ item.actions?.map((action) => /* @__PURE__ */ jsx56(Button6, { size: "xs", variant: "default", onClick: action.onClick, children: action.label }, action.id)),
3463
+ /* @__PURE__ */ jsx56(Button6, { size: "xs", variant: "subtle", onClick: () => onDismiss?.(item.id), disabled: !onDismiss, children: "Dismiss" })
3464
+ ] })
3465
+ },
3466
+ item.id
3467
+ )) })
3468
+ ] }) });
3469
+ }
3470
+
3065
3471
  // src/locales/ar.ts
3066
3472
  var ar = {
3067
3473
  "gds.action.settings": "\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A",
@@ -4367,6 +4773,8 @@ function getGdsMessages(locale) {
4367
4773
 
4368
4774
  export {
4369
4775
  StatusBadge,
4776
+ LabelTag,
4777
+ CountBadge,
4370
4778
  EmptyState,
4371
4779
  GdsIcons,
4372
4780
  GdsVocabulary,
@@ -4385,6 +4793,8 @@ export {
4385
4793
  ReferenceSection,
4386
4794
  ActionBar,
4387
4795
  FormField,
4796
+ gdsCardSizePaddingMap,
4797
+ gdsCardTitleOrderMap,
4388
4798
  ListingCard,
4389
4799
  StateBlock,
4390
4800
  ChoiceChip,
@@ -4400,6 +4810,11 @@ export {
4400
4810
  DataToolbar,
4401
4811
  BrowseSurface,
4402
4812
  DetailProfileShell,
4813
+ AsyncSurface,
4814
+ ActiveFilterChips,
4815
+ ResultSummary,
4816
+ SortMenu,
4817
+ BulkActionsBar,
4403
4818
  PublicNav,
4404
4819
  PublicShell,
4405
4820
  PublicSiteFooter,
@@ -4431,7 +4846,12 @@ export {
4431
4846
  PeriodSelector,
4432
4847
  EvidencePanel,
4433
4848
  ChartTokenPanel,
4849
+ GdsChart,
4850
+ renderGdsLayout,
4434
4851
  ReportingSection,
4852
+ InlineAlert,
4853
+ BannerNotice,
4854
+ NotificationCenterView,
4435
4855
  ar,
4436
4856
  de,
4437
4857
  en,