@doneisbetter/gds-core 2.6.6 → 2.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.js CHANGED
@@ -37,6 +37,7 @@ __export(client_exports, {
37
37
  DiscoveryShell: () => DiscoveryShell,
38
38
  DocsCodeBlock: () => DocsCodeBlock,
39
39
  DocsPageShell: () => DocsPageShell,
40
+ DocsShell: () => DocsShell,
40
41
  EditorialCard: () => EditorialCard,
41
42
  EditorialHero: () => EditorialHero,
42
43
  EmptyState: () => EmptyState,
@@ -52,11 +53,14 @@ __export(client_exports, {
52
53
  MediaCard: () => MediaCard,
53
54
  MediaField: () => MediaField,
54
55
  MetricCard: () => MetricCard,
56
+ PROVIDER_IDENTITY_REGISTRY: () => PROVIDER_IDENTITY_REGISTRY,
55
57
  PageHeader: () => PageHeader,
56
58
  PlaceholderPanel: () => PlaceholderPanel,
57
59
  PlaybackSurface: () => PlaybackSurface,
58
60
  ProductCard: () => ProductCard,
59
61
  ProgressCard: () => ProgressCard,
62
+ ProviderIdentityButton: () => ProviderIdentityButton,
63
+ ProviderIdentityButtonGroup: () => ProviderIdentityButtonGroup,
60
64
  PublicBrandFooter: () => PublicBrandFooter,
61
65
  PublicFlowShell: () => PublicFlowShell,
62
66
  PublicFoodCard: () => PublicFoodCard,
@@ -89,14 +93,17 @@ __export(client_exports, {
89
93
  fr: () => fr,
90
94
  gdsLocales: () => gdsLocales,
91
95
  getGdsMessages: () => getGdsMessages,
96
+ getProviderIdentityLabel: () => getProviderIdentityLabel,
92
97
  getSemanticActionConfig: () => getSemanticActionConfig,
93
98
  getSemanticActionLabel: () => getSemanticActionLabel,
94
99
  he: () => he,
95
100
  hu: () => hu,
101
+ isPresentationMode: () => isPresentationMode,
96
102
  it: () => it,
97
103
  mergeGdsVocabularyPacks: () => mergeGdsVocabularyPacks,
98
104
  resolveAccentPanelStyles: () => resolveAccentPanelStyles,
99
105
  resolveSemanticActionConfig: () => resolveSemanticActionConfig,
106
+ resolveSurfacePresentationStyles: () => resolveSurfacePresentationStyles,
100
107
  ru: () => ru
101
108
  });
102
109
  module.exports = __toCommonJS(client_exports);
@@ -574,6 +581,51 @@ var import_core9 = require("@mantine/core");
574
581
 
575
582
  // src/SectionPanel.tsx
576
583
  var import_core8 = require("@mantine/core");
584
+
585
+ // src/SurfacePresentation.ts
586
+ var toCssLength = (value) => {
587
+ if (typeof value === "number") {
588
+ return `${value}px`;
589
+ }
590
+ return value;
591
+ };
592
+ function resolveSurfacePresentationStyles(props) {
593
+ const {
594
+ presentation = "inline",
595
+ minHeight,
596
+ contentAlign,
597
+ contentJustify
598
+ } = props;
599
+ if (presentation === "inline") {
600
+ return {
601
+ minHeight: toCssLength(minHeight)
602
+ };
603
+ }
604
+ const align = contentAlign ?? "center";
605
+ const justify = contentJustify ?? (presentation === "centered" ? "center" : "start");
606
+ if (presentation === "fill") {
607
+ return {
608
+ minHeight: toCssLength(minHeight),
609
+ display: "flex",
610
+ flex: 1,
611
+ flexDirection: "column",
612
+ alignItems: align === "center" ? "center" : "flex-start",
613
+ justifyContent: justify === "center" ? "center" : "flex-start"
614
+ };
615
+ }
616
+ return {
617
+ minHeight: toCssLength(minHeight),
618
+ display: "flex",
619
+ flexDirection: "column",
620
+ alignItems: align === "center" ? "center" : "flex-start",
621
+ justifyContent: justify === "center" ? "center" : "flex-start"
622
+ };
623
+ }
624
+ function isPresentationMode(value) {
625
+ return value === "inline" || value === "centered" || value === "fill";
626
+ }
627
+
628
+ // src/SectionPanel.tsx
577
629
  var import_jsx_runtime9 = require("react/jsx-runtime");
578
630
  var toneBackgrounds = {
579
631
  default: "var(--mantine-color-body)",
@@ -588,8 +640,18 @@ function SectionPanel({
588
640
  children,
589
641
  tone = "default",
590
642
  id,
591
- divided = true
643
+ divided = true,
644
+ presentation = "inline",
645
+ minHeight,
646
+ contentAlign,
647
+ contentJustify
592
648
  }) {
649
+ const bodyLayout = resolveSurfacePresentationStyles({
650
+ presentation,
651
+ minHeight,
652
+ contentAlign,
653
+ contentJustify
654
+ });
593
655
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_core8.Paper, { id, withBorder: true, radius: "xl", p: "lg", style: { background: toneBackgrounds[tone] }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_core8.Stack, { gap: "md", children: [
594
656
  title || description || action ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
595
657
  /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_core8.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
@@ -601,7 +663,7 @@ function SectionPanel({
601
663
  ] }),
602
664
  divided ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_core8.Divider, {}) : null
603
665
  ] }) : null,
604
- children
666
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_core8.Box, { style: bodyLayout, children })
605
667
  ] }) });
606
668
  }
607
669
 
@@ -829,20 +891,34 @@ function StateBlock({
829
891
  description,
830
892
  action,
831
893
  icon,
832
- compact = false
894
+ compact = false,
895
+ presentation = "inline",
896
+ minHeight,
897
+ contentAlign,
898
+ contentJustify
833
899
  }) {
834
900
  const config = variantConfig[variant];
901
+ const layout = resolveSurfacePresentationStyles({
902
+ presentation,
903
+ minHeight,
904
+ contentAlign,
905
+ contentJustify
906
+ });
907
+ const centeredText = presentation !== "inline" ? (contentAlign ?? "center") === "center" : !compact;
908
+ const centeredAlign = presentation !== "inline" ? contentAlign ?? "center" : "start";
909
+ const headingAlign = presentation === "inline" ? compact ? "flex-start" : "center" : centeredAlign === "center" ? "center" : "flex-start";
835
910
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
836
911
  import_core13.Stack,
837
912
  {
838
- align: compact ? "flex-start" : "center",
839
- justify: "center",
913
+ align: headingAlign,
914
+ justify: presentation === "inline" ? "center" : void 0,
840
915
  gap: "md",
841
916
  py: compact ? "md" : "xl",
842
- ta: compact ? "left" : "center",
917
+ ta: centeredText ? "center" : "left",
918
+ style: layout,
843
919
  children: [
844
920
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_core13.ThemeIcon, { variant: "light", color: config.color, size: compact ? "lg" : "xl", radius: "xl", children: icon ?? config.icon }),
845
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_core13.Stack, { gap: 6, align: compact ? "flex-start" : "center", children: [
921
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_core13.Stack, { gap: 6, align: headingAlign, children: [
846
922
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_core13.Title, { order: compact ? 4 : 3, children: title }),
847
923
  description ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_core13.Text, { c: "dimmed", maw: compact ? void 0 : 480, children: description }) : null
848
924
  ] }),
@@ -855,42 +931,60 @@ function StateBlock({
855
931
  // src/ReferenceThemeExplorer.tsx
856
932
  var import_gds_theme3 = require("@doneisbetter/gds-theme");
857
933
  var import_jsx_runtime15 = require("react/jsx-runtime");
934
+ function resolvePreviewColorScheme(presetId, requestedScheme) {
935
+ if (presetId === "dark-public") {
936
+ return "dark";
937
+ }
938
+ return requestedScheme;
939
+ }
858
940
  var themePresetCatalog = {
859
941
  default: {
860
942
  label: "Default runtime theme",
861
943
  bestFor: "Balanced multi-surface products that need the baseline GDS system.",
862
944
  summary: "The default shared runtime lane for most adopters.",
863
- themeKey: "gdsTheme"
945
+ themeKey: "gdsTheme",
946
+ supportedUse: "Starter products, hybrid public/admin apps, and teams adopting all canonical contracts.",
947
+ avoidFor: "Avoid for products requiring a distinct editorial voice or guaranteed dark-first brand contrast."
864
948
  },
865
949
  "dark-public": {
866
950
  label: "Dark public theme",
867
951
  bestFor: "Dark-first public experiences and campaign-style landing surfaces.",
868
952
  summary: "A darker public presentation lane with the shipped runtime rhythm intact.",
869
- themeKey: "gdsDarkPublicTheme"
953
+ themeKey: "gdsDarkPublicTheme",
954
+ supportedUse: "Products with a deliberate dark visual baseline, low-light UX, or premium media-first surfaces.",
955
+ avoidFor: "Avoid when mixed mode and editorial readability are core requirements."
870
956
  },
871
957
  "flat-surface": {
872
958
  label: "Flat surface theme",
873
959
  bestFor: "Operational products that prefer quieter elevation and flatter surface contrast.",
874
960
  summary: "Removes some visual weight without creating a second token authority.",
875
- themeKey: "gdsFlatSurfaceTheme"
961
+ themeKey: "gdsFlatSurfaceTheme",
962
+ supportedUse: "Dashboards, admin surfaces, and dense content where elevation becomes distracting.",
963
+ avoidFor: "Avoid for brand-first storytelling or high-expressiveness hero-first pages."
876
964
  },
877
965
  editorial: {
878
966
  label: "Editorial serif theme",
879
967
  bestFor: "Documentation, editorial, and content-led experiences.",
880
968
  summary: "Adds a more expressive public reading tone while staying inside GDS contracts.",
881
- themeKey: "gdsEditorialPublicTheme"
969
+ themeKey: "gdsEditorialPublicTheme",
970
+ supportedUse: "Guides, docs, and catalog content where reading comfort matters more than impact.",
971
+ avoidFor: "Avoid for dense transactional or data-first workflows with strict minimal contrast."
882
972
  },
883
973
  brand: {
884
974
  label: "Brand theme generator",
885
975
  bestFor: "Consumer teams that need controlled brand expression without forking the system.",
886
976
  summary: "Composes the shipped helpers into a governed product-authored theme lane.",
887
- themeKey: "createPublicBrandTheme(...)"
977
+ themeKey: "createPublicBrandTheme(...)",
978
+ supportedUse: "Whitelisted public branding programs with narrow product-authored intent and policy guardrails.",
979
+ avoidFor: "Avoid for local style experiments or temporary visual fixes without compliance approval."
888
980
  }
889
981
  };
890
982
  function ThemePreviewSurface({
891
983
  preset,
892
- colorScheme
984
+ colorScheme,
985
+ requestedColorScheme
893
986
  }) {
987
+ const forcedScheme = requestedColorScheme && requestedColorScheme !== colorScheme;
894
988
  return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core14.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core14.Stack, { gap: "lg", children: [
895
989
  /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core14.Group, { justify: "space-between", align: "flex-start", wrap: "wrap", children: [
896
990
  /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core14.Stack, { gap: 4, children: [
@@ -905,7 +999,8 @@ function ThemePreviewSurface({
905
999
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { children: "Color scheme:" }),
906
1000
  " ",
907
1001
  colorScheme
908
- ] })
1002
+ ] }),
1003
+ forcedScheme ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core14.Text, { size: "sm", c: "dimmed", children: "This lane always previews in dark mode so the runtime stays inside its sanctioned contrast contract." }) : null
909
1004
  ] }),
910
1005
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ThemeToggle, {})
911
1006
  ] }),
@@ -972,8 +1067,10 @@ function ReferenceThemeExplorer() {
972
1067
  const comparisonSummary = themePresetCatalog[comparisonPreset];
973
1068
  const selectedTheme = (0, import_react2.useMemo)(() => resolveTheme(preset), [preset, brandPrimary, brandFlatSurfaces, brandEditorialSerif]);
974
1069
  const comparedTheme = (0, import_react2.useMemo)(() => resolveTheme(comparisonPreset), [comparisonPreset, brandPrimary, brandFlatSurfaces, brandEditorialSerif]);
975
- const previewKey = `${preset}-${colorScheme}-${brandPrimary}-${brandFlatSurfaces}-${brandEditorialSerif}`;
976
- const comparisonPreviewKey = `${comparisonPreset}-${colorScheme}-${brandPrimary}-${brandFlatSurfaces}-${brandEditorialSerif}`;
1070
+ const effectiveColorScheme = resolvePreviewColorScheme(preset, colorScheme);
1071
+ const effectiveComparisonScheme = resolvePreviewColorScheme(comparisonPreset, colorScheme);
1072
+ const previewKey = `${preset}-${effectiveColorScheme}-${brandPrimary}-${brandFlatSurfaces}-${brandEditorialSerif}`;
1073
+ const comparisonPreviewKey = `${comparisonPreset}-${effectiveComparisonScheme}-${brandPrimary}-${brandFlatSurfaces}-${brandEditorialSerif}`;
977
1074
  const reset = () => {
978
1075
  setPreset("default");
979
1076
  setColorScheme("light");
@@ -1068,7 +1165,8 @@ function ReferenceThemeExplorer() {
1068
1165
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { children: "Color scheme:" }),
1069
1166
  " ",
1070
1167
  colorScheme
1071
- ] })
1168
+ ] }),
1169
+ preset === "dark-public" && colorScheme !== effectiveColorScheme ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core14.Text, { size: "sm", c: "dimmed", children: "gdsDarkPublicTheme always renders in dark mode inside the live preview." }) : null
1072
1170
  ] }),
1073
1171
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1074
1172
  import_core14.Checkbox,
@@ -1101,7 +1199,17 @@ function ReferenceThemeExplorer() {
1101
1199
  children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core14.SimpleGrid, { cols: { base: 1, md: 2, xl: 5 }, spacing: "md", children: Object.values(themePresetCatalog).map((lane) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core14.Paper, { withBorder: true, radius: "lg", p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core14.Stack, { gap: 6, children: [
1102
1200
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core14.Text, { fw: 700, size: "sm", children: lane.label }),
1103
1201
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core14.Text, { size: "sm", c: "dimmed", children: lane.summary }),
1104
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core14.Code, { block: true, fz: "10px", children: lane.themeKey })
1202
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core14.Text, { size: "xs", children: [
1203
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { children: "Best for:" }),
1204
+ " ",
1205
+ lane.supportedUse
1206
+ ] }),
1207
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core14.Code, { block: true, fz: "10px", children: lane.themeKey }),
1208
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core14.Text, { size: "xs", c: "dimmed", children: [
1209
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { children: "Avoid for:" }),
1210
+ " ",
1211
+ lane.avoidFor ?? "No special exclusion noted for this lane."
1212
+ ] })
1105
1213
  ] }) }, lane.themeKey)) })
1106
1214
  }
1107
1215
  ),
@@ -1111,8 +1219,15 @@ function ReferenceThemeExplorer() {
1111
1219
  title: "Live Theme Preview",
1112
1220
  description: "Visitors can test the shipped presets, compare lanes, and inspect actual GDS surfaces under each theme.",
1113
1221
  children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core14.SimpleGrid, { cols: { base: 1, xl: comparisonEnabled ? 2 : 1 }, spacing: "lg", children: [
1114
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_gds_theme3.GdsProvider, { theme: selectedTheme, defaultColorScheme: colorScheme, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ThemePreviewSurface, { preset: selectionSummary, colorScheme }) }, previewKey),
1115
- comparisonEnabled ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_gds_theme3.GdsProvider, { theme: comparedTheme, defaultColorScheme: colorScheme, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core14.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core14.Stack, { gap: "md", children: [
1222
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_gds_theme3.GdsProvider, { theme: selectedTheme, defaultColorScheme: effectiveColorScheme, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1223
+ ThemePreviewSurface,
1224
+ {
1225
+ preset: selectionSummary,
1226
+ colorScheme: effectiveColorScheme,
1227
+ requestedColorScheme: colorScheme
1228
+ }
1229
+ ) }, previewKey),
1230
+ comparisonEnabled ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_gds_theme3.GdsProvider, { theme: comparedTheme, defaultColorScheme: effectiveComparisonScheme, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core14.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core14.Stack, { gap: "md", children: [
1116
1231
  /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core14.Group, { justify: "space-between", align: "flex-start", wrap: "wrap", children: [
1117
1232
  /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core14.Stack, { gap: 4, children: [
1118
1233
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core14.Text, { fw: 700, children: "Comparison Preview Surface" }),
@@ -1120,7 +1235,14 @@ function ReferenceThemeExplorer() {
1120
1235
  ] }),
1121
1236
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core14.Badge, { color: "violet", variant: "light", children: comparisonSummary.label })
1122
1237
  ] }),
1123
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ThemePreviewSurface, { preset: comparisonSummary, colorScheme })
1238
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1239
+ ThemePreviewSurface,
1240
+ {
1241
+ preset: comparisonSummary,
1242
+ colorScheme: effectiveComparisonScheme,
1243
+ requestedColorScheme: colorScheme
1244
+ }
1245
+ )
1124
1246
  ] }) }) }, comparisonPreviewKey) : null
1125
1247
  ] })
1126
1248
  }
@@ -2105,21 +2227,97 @@ function DiscoveryShell({
2105
2227
  );
2106
2228
  }
2107
2229
 
2108
- // src/SidebarNav.tsx
2230
+ // src/DocsShell.tsx
2109
2231
  var import_react5 = require("react");
2110
2232
  var import_core31 = require("@mantine/core");
2111
- var import_gds_theme4 = require("@doneisbetter/gds-theme");
2112
2233
  var import_jsx_runtime33 = require("react/jsx-runtime");
2234
+ function DocsShellSidebar({ primaryNavigation, secondaryNavigation }) {
2235
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Stack, { gap: "md", h: "100%", children: [
2236
+ primaryNavigation ? /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Stack, { gap: "xs", children: [
2237
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Text, { size: "xs", fw: 700, c: "dimmed", children: "Primary" }),
2238
+ primaryNavigation
2239
+ ] }) : null,
2240
+ secondaryNavigation ? /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
2241
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Divider, {}),
2242
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Stack, { gap: "xs", children: [
2243
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Text, { size: "xs", fw: 700, c: "dimmed", children: "More" }),
2244
+ secondaryNavigation
2245
+ ] })
2246
+ ] }) : null
2247
+ ] });
2248
+ }
2249
+ function resolveContentContainerSize(value) {
2250
+ if (value === "full") {
2251
+ return "100%";
2252
+ }
2253
+ return value ?? "lg";
2254
+ }
2255
+ function DocsShell({
2256
+ brand,
2257
+ primaryNavigation,
2258
+ secondaryNavigation,
2259
+ headerContext,
2260
+ actions,
2261
+ mobileNavigation,
2262
+ mobileNavigationMode = "drawer",
2263
+ footer,
2264
+ children,
2265
+ contentWidth = "full"
2266
+ }) {
2267
+ const [mobileNavOpen, setMobileNavOpen] = (0, import_react5.useState)(false);
2268
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2269
+ DiscoveryShell,
2270
+ {
2271
+ header: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Group, { h: "100%", justify: "space-between", align: "center", wrap: "nowrap", gap: "md", children: [
2272
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Group, { gap: "sm", align: "center", wrap: "nowrap", style: { minWidth: 0 }, children: [
2273
+ mobileNavigationMode === "inline-collapse" && mobileNavigation ? /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
2274
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2275
+ import_core31.Burger,
2276
+ {
2277
+ opened: mobileNavOpen,
2278
+ onClick: () => setMobileNavOpen((value) => !value),
2279
+ hiddenFrom: "sm",
2280
+ size: "sm",
2281
+ "aria-label": "Toggle docs navigation"
2282
+ }
2283
+ ),
2284
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Transition, { mounted: mobileNavOpen, transition: "pop", duration: 120, children: (styles) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Box, { style: styles, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Box, { mt: "xs", p: "sm", style: { borderRadius: 8, border: "1px solid var(--mantine-color-default-border)" }, children: mobileNavigation }) }) })
2285
+ ] }) : null,
2286
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Box, { style: { minWidth: 0 }, children: brand }),
2287
+ headerContext ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Text, { size: "sm", c: "dimmed", lineClamp: 1, children: headerContext }) : null
2288
+ ] }),
2289
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Group, { gap: "sm", wrap: "nowrap", style: { minWidth: 0 }, children: actions })
2290
+ ] }),
2291
+ sidebar: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2292
+ DocsShellSidebar,
2293
+ {
2294
+ primaryNavigation,
2295
+ secondaryNavigation
2296
+ }
2297
+ ),
2298
+ footer,
2299
+ mobileNavigationLabel: "Open docs navigation",
2300
+ headerHeight: 72,
2301
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Container, { size: resolveContentContainerSize(contentWidth), px: "md", py: "lg", w: "100%", children })
2302
+ }
2303
+ );
2304
+ }
2305
+
2306
+ // src/SidebarNav.tsx
2307
+ var import_react6 = require("react");
2308
+ var import_core32 = require("@mantine/core");
2309
+ var import_gds_theme4 = require("@doneisbetter/gds-theme");
2310
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2113
2311
  function SidebarNav({ children, ariaLabel = "Primary navigation", gap = "md" }) {
2114
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Stack, { component: "nav", "aria-label": ariaLabel, gap, h: "100%", children });
2312
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Stack, { component: "nav", "aria-label": ariaLabel, gap, h: "100%", children });
2115
2313
  }
2116
2314
  function SidebarNavSection({ label, children, pushToBottom = false }) {
2117
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Stack, { gap: "xs", mt: pushToBottom ? "auto" : void 0, children: [
2118
- label ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Text, { size: "xs", fw: 700, c: "dimmed", children: label }) : null,
2119
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Stack, { gap: 4, children })
2315
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core32.Stack, { gap: "xs", mt: pushToBottom ? "auto" : void 0, children: [
2316
+ label ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Text, { size: "xs", fw: 700, c: "dimmed", children: label }) : null,
2317
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Stack, { gap: 4, children })
2120
2318
  ] });
2121
2319
  }
2122
- var _SidebarNavItem = (0, import_react5.forwardRef)(
2320
+ var _SidebarNavItem = (0, import_react6.forwardRef)(
2123
2321
  ({
2124
2322
  action,
2125
2323
  label,
@@ -2135,14 +2333,14 @@ var _SidebarNavItem = (0, import_react5.forwardRef)(
2135
2333
  const config = action ? resolveSemanticActionConfig(action, vocabularyPacks) : null;
2136
2334
  const Icon = config?.icon;
2137
2335
  const resolvedLabel = label ?? (action ? getSemanticActionLabel(action, t, vocabularyPacks) : void 0);
2138
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2139
- import_core31.NavLink,
2336
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2337
+ import_core32.NavLink,
2140
2338
  {
2141
2339
  ref,
2142
2340
  label: resolvedLabel,
2143
2341
  description,
2144
- leftSection: icon ?? (Icon ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Icon, { size: "1rem", stroke: 1.5 }) : void 0),
2145
- rightSection: badge ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Box, { children: badge }) : props.rightSection,
2342
+ leftSection: icon ?? (Icon ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Icon, { size: "1rem", stroke: 1.5 }) : void 0),
2343
+ rightSection: badge ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Box, { children: badge }) : props.rightSection,
2146
2344
  "aria-label": ariaLabel ?? (typeof resolvedLabel === "string" ? resolvedLabel : void 0),
2147
2345
  "aria-current": props.active ? "page" : ariaCurrent,
2148
2346
  ...props
@@ -2150,21 +2348,21 @@ var _SidebarNavItem = (0, import_react5.forwardRef)(
2150
2348
  );
2151
2349
  }
2152
2350
  );
2153
- var SidebarNavItem = (0, import_core31.createPolymorphicComponent)(_SidebarNavItem);
2351
+ var SidebarNavItem = (0, import_core32.createPolymorphicComponent)(_SidebarNavItem);
2154
2352
 
2155
2353
  // src/PublicSiteFooter.tsx
2156
- var import_core32 = require("@mantine/core");
2157
- var import_jsx_runtime34 = require("react/jsx-runtime");
2354
+ var import_core33 = require("@mantine/core");
2355
+ var import_jsx_runtime35 = require("react/jsx-runtime");
2158
2356
  function PublicSiteFooter({ children, meta }) {
2159
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core32.Stack, { component: "footer", gap: "xs", children: [
2160
- children ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Text, { size: "sm", children }) : null,
2161
- meta ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Group, { gap: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Text, { size: "xs", c: "dimmed", children: meta }) }) : null
2357
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Stack, { component: "footer", gap: "xs", children: [
2358
+ children ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Text, { size: "sm", children }) : null,
2359
+ meta ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Group, { gap: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Text, { size: "xs", c: "dimmed", children: meta }) }) : null
2162
2360
  ] });
2163
2361
  }
2164
2362
 
2165
2363
  // src/PublicBrandFooter.tsx
2166
- var import_core33 = require("@mantine/core");
2167
- var import_jsx_runtime35 = require("react/jsx-runtime");
2364
+ var import_core34 = require("@mantine/core");
2365
+ var import_jsx_runtime36 = require("react/jsx-runtime");
2168
2366
  function PublicBrandFooter({
2169
2367
  media,
2170
2368
  brandTitle,
@@ -2179,8 +2377,8 @@ function PublicBrandFooter({
2179
2377
  const mediaSpan = layoutVariant === "immersive-media" ? 5 : 4;
2180
2378
  const primarySpan = media ? layoutVariant === "balanced-quote" ? 4 : 4 : secondary ? 6 : 12;
2181
2379
  const secondarySpan = media ? Math.max(3, 12 - mediaSpan - primarySpan) : Math.max(4, 12 - primarySpan);
2182
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2183
- import_core33.Paper,
2380
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2381
+ import_core34.Paper,
2184
2382
  {
2185
2383
  component: "footer",
2186
2384
  withBorder: true,
@@ -2188,19 +2386,19 @@ function PublicBrandFooter({
2188
2386
  p: compact ? "lg" : "xl",
2189
2387
  className: classNames?.root,
2190
2388
  "data-layout-variant": layoutVariant,
2191
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Stack, { gap: "lg", children: [
2192
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Grid, { gutter: compact ? "lg" : "xl", align: "flex-start", children: [
2193
- media ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Grid.Col, { span: { base: 12, md: mediaSpan }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Box, { className: classNames?.media, children: media }) }) : null,
2194
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Grid.Col, { span: { base: 12, md: primarySpan }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Stack, { gap: compact ? "xs" : "sm", className: classNames?.primary, children: [
2195
- brandTitle ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Title, { order: 4, children: brandTitle }) : null,
2196
- description ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Text, { c: "dimmed", children: description }) : null,
2197
- actions ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Box, { children: actions }) : null
2389
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Stack, { gap: "lg", children: [
2390
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Grid, { gutter: compact ? "lg" : "xl", align: "flex-start", children: [
2391
+ media ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Grid.Col, { span: { base: 12, md: mediaSpan }, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Box, { className: classNames?.media, children: media }) }) : null,
2392
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Grid.Col, { span: { base: 12, md: primarySpan }, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Stack, { gap: compact ? "xs" : "sm", className: classNames?.primary, children: [
2393
+ brandTitle ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Title, { order: 4, children: brandTitle }) : null,
2394
+ description ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Text, { c: "dimmed", children: description }) : null,
2395
+ actions ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Box, { children: actions }) : null
2198
2396
  ] }) }),
2199
- secondary ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Grid.Col, { span: { base: 12, md: secondarySpan }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Stack, { gap: compact ? "xs" : "sm", className: classNames?.secondary, children: secondary }) }) : null
2397
+ secondary ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Grid.Col, { span: { base: 12, md: secondarySpan }, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Stack, { gap: compact ? "xs" : "sm", className: classNames?.secondary, children: secondary }) }) : null
2200
2398
  ] }),
2201
- legal ? /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
2202
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Divider, {}),
2203
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Group, { justify: "space-between", gap: "sm", wrap: "wrap", className: classNames?.legal, children: typeof legal === "string" ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Text, { size: "sm", c: "dimmed", children: legal }) : legal })
2399
+ legal ? /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
2400
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Divider, {}),
2401
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Group, { justify: "space-between", gap: "sm", wrap: "wrap", className: classNames?.legal, children: typeof legal === "string" ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Text, { size: "sm", c: "dimmed", children: legal }) : legal })
2204
2402
  ] }) : null
2205
2403
  ] })
2206
2404
  }
@@ -2208,8 +2406,8 @@ function PublicBrandFooter({
2208
2406
  }
2209
2407
 
2210
2408
  // src/AuthShell.tsx
2211
- var import_core34 = require("@mantine/core");
2212
- var import_jsx_runtime36 = require("react/jsx-runtime");
2409
+ var import_core35 = require("@mantine/core");
2410
+ var import_jsx_runtime37 = require("react/jsx-runtime");
2213
2411
  function AuthShell({
2214
2412
  title,
2215
2413
  description,
@@ -2221,65 +2419,195 @@ function AuthShell({
2221
2419
  dividerLabel = "Or continue with your account",
2222
2420
  children
2223
2421
  }) {
2224
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Box, { py: { base: "xl", md: "4rem" }, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Container, { size: "xs", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Stack, { gap: "xl", children: [
2225
- brand || headerActions ? /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Group, { justify: brand && headerActions ? "space-between" : "center", align: "center", children: [
2226
- brand ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Box, { children: brand }) : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Box, {}),
2227
- headerActions ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Group, { gap: "sm", children: headerActions }) : null
2422
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Box, { py: { base: "xl", md: "4rem" }, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Container, { size: "xs", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: "xl", children: [
2423
+ brand || headerActions ? /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Group, { justify: brand && headerActions ? "space-between" : "center", align: "center", children: [
2424
+ brand ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Box, { children: brand }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Box, {}),
2425
+ headerActions ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Group, { gap: "sm", children: headerActions }) : null
2228
2426
  ] }) : null,
2229
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Card, { withBorder: true, radius: "lg", padding: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Stack, { gap: "lg", children: [
2230
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Stack, { gap: "xs", ta: "center", children: [
2231
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Title, { order: 2, children: title }),
2232
- description ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Text, { c: "dimmed", size: "sm", children: description }) : null
2427
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Card, { withBorder: true, radius: "lg", padding: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: "lg", children: [
2428
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: "xs", ta: "center", children: [
2429
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Title, { order: 2, children: title }),
2430
+ description ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { c: "dimmed", size: "sm", children: description }) : null
2233
2431
  ] }),
2234
- socialAuth ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Box, { children: socialAuth }) : null,
2235
- socialAuth ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Divider, { label: dividerLabel, labelPosition: "center" }) : null,
2432
+ socialAuth ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Box, { children: socialAuth }) : null,
2433
+ socialAuth ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Divider, { label: dividerLabel, labelPosition: "center" }) : null,
2236
2434
  children,
2237
- helper ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Text, { size: "sm", c: "dimmed", ta: "center", children: helper }) : null
2435
+ helper ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { size: "sm", c: "dimmed", ta: "center", children: helper }) : null
2238
2436
  ] }) }),
2239
- footer ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Text, { size: "sm", c: "dimmed", ta: "center", children: footer }) : null
2437
+ footer ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { size: "sm", c: "dimmed", ta: "center", children: footer }) : null
2240
2438
  ] }) }) });
2241
2439
  }
2242
2440
 
2243
2441
  // src/SocialAuthButtons.tsx
2244
- var import_core35 = require("@mantine/core");
2245
- var import_jsx_runtime37 = require("react/jsx-runtime");
2246
- var providerConfig = {
2247
- google: { label: "Google", mark: "G", color: "red" },
2248
- apple: { label: "Apple", mark: "A", color: "dark" },
2249
- github: { label: "GitHub", mark: "GH", color: "gray" },
2250
- facebook: { label: "Facebook", mark: "F", color: "blue" },
2251
- microsoft: { label: "Microsoft", mark: "M", color: "cyan" },
2252
- linkedin: { label: "LinkedIn", mark: "in", color: "blue" },
2253
- discord: { label: "Discord", mark: "D", color: "indigo" },
2254
- x: { label: "X", mark: "X", color: "dark" },
2255
- email: { label: "Email", mark: "@", color: "gray" }
2442
+ var import_core37 = require("@mantine/core");
2443
+
2444
+ // src/ProviderIdentityButtons.tsx
2445
+ var import_core36 = require("@mantine/core");
2446
+ var import_jsx_runtime38 = require("react/jsx-runtime");
2447
+ var PROVIDER_IDENTITY_REGISTRY = {
2448
+ google: {
2449
+ providerLabel: "Google",
2450
+ markLabel: "G",
2451
+ brandColor: "red"
2452
+ },
2453
+ apple: {
2454
+ providerLabel: "Apple",
2455
+ markLabel: "A",
2456
+ brandColor: "dark"
2457
+ },
2458
+ github: {
2459
+ providerLabel: "GitHub",
2460
+ markLabel: "GH",
2461
+ brandColor: "gray"
2462
+ },
2463
+ facebook: {
2464
+ providerLabel: "Facebook",
2465
+ markLabel: "F",
2466
+ brandColor: "blue"
2467
+ },
2468
+ microsoft: {
2469
+ providerLabel: "Microsoft",
2470
+ markLabel: "M",
2471
+ brandColor: "cyan"
2472
+ },
2473
+ linkedin: {
2474
+ providerLabel: "LinkedIn",
2475
+ markLabel: "in",
2476
+ brandColor: "blue"
2477
+ },
2478
+ discord: {
2479
+ providerLabel: "Discord",
2480
+ markLabel: "D",
2481
+ brandColor: "indigo"
2482
+ },
2483
+ x: {
2484
+ providerLabel: "X",
2485
+ markLabel: "X",
2486
+ brandColor: "dark"
2487
+ },
2488
+ email: {
2489
+ providerLabel: "Email",
2490
+ markLabel: "@",
2491
+ brandColor: "gray"
2492
+ }
2256
2493
  };
2257
- function ProviderMark({ id }) {
2258
- const config = providerConfig[id] ?? { label: id, mark: id.slice(0, 2).toUpperCase(), color: "gray" };
2259
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.ThemeIcon, { variant: "light", color: config.color, radius: "xl", size: "md", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { size: "xs", fw: 700, children: config.mark }) });
2494
+ function normalizeProviderId(provider) {
2495
+ return (provider ?? "").trim().toLowerCase();
2496
+ }
2497
+ function isSupportedProviderId(provider) {
2498
+ return provider in PROVIDER_IDENTITY_REGISTRY;
2499
+ }
2500
+ function getProviderIdentityMeta(provider) {
2501
+ const normalized = normalizeProviderId(provider);
2502
+ if (isSupportedProviderId(normalized)) {
2503
+ return {
2504
+ id: normalized,
2505
+ supported: true,
2506
+ ...PROVIDER_IDENTITY_REGISTRY[normalized]
2507
+ };
2508
+ }
2509
+ return {
2510
+ id: normalized || "provider",
2511
+ supported: false,
2512
+ providerLabel: provider ? provider : "Provider",
2513
+ markLabel: (provider ?? "PR").slice(0, 2).toUpperCase(),
2514
+ brandColor: "gray"
2515
+ };
2516
+ }
2517
+ function resolveProviderLabel(provider, customLabel) {
2518
+ const meta = getProviderIdentityMeta(provider);
2519
+ if (customLabel != null) {
2520
+ return customLabel;
2521
+ }
2522
+ return `Continue with ${meta.providerLabel}`;
2523
+ }
2524
+ function mapVariant(variant = "neutral") {
2525
+ if (variant === "solid") {
2526
+ return "filled";
2527
+ }
2528
+ if (variant === "outline") {
2529
+ return "outline";
2530
+ }
2531
+ return "default";
2532
+ }
2533
+ function getProviderIdentityLabel(provider, fallbackOverride) {
2534
+ return resolveProviderLabel(provider, fallbackOverride);
2260
2535
  }
2261
- function SocialAuthButton({ provider, compact = false }) {
2262
- const config = providerConfig[provider.id] ?? { label: provider.id, mark: provider.id.slice(0, 2).toUpperCase(), color: "gray" };
2263
- const label = provider.label ?? `Continue with ${config.label}`;
2264
- const buttonProps = provider.href ? { component: "a", href: provider.href } : { onClick: provider.onClick };
2265
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2266
- import_core35.Button,
2536
+ function ProviderIdentityMark({ provider }) {
2537
+ const meta = getProviderIdentityMeta(provider);
2538
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2539
+ import_core36.ThemeIcon,
2267
2540
  {
2268
- variant: "default",
2541
+ variant: "light",
2542
+ color: meta.brandColor,
2543
+ radius: "xl",
2544
+ size: "md",
2545
+ "aria-hidden": "true",
2546
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Text, { size: "xs", fw: 700, c: "inherit", children: meta.markLabel })
2547
+ }
2548
+ );
2549
+ }
2550
+ function ProviderIdentityButton({
2551
+ provider,
2552
+ label,
2553
+ description,
2554
+ href,
2555
+ onClick,
2556
+ disabled,
2557
+ loading,
2558
+ fullWidth = true,
2559
+ size = "md",
2560
+ variant = "neutral",
2561
+ ariaLabel,
2562
+ describedBy,
2563
+ minTouchTargetPx = 44
2564
+ }) {
2565
+ const meta = getProviderIdentityMeta(provider);
2566
+ const buttonLabel = resolveProviderLabel(provider, label);
2567
+ const buttonProps = href ? {
2568
+ component: "a",
2569
+ href
2570
+ } : {
2571
+ onClick
2572
+ };
2573
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2574
+ import_core36.Button,
2575
+ {
2576
+ variant: mapVariant(variant),
2577
+ color: variant === "solid" ? meta.brandColor : void 0,
2269
2578
  justify: "space-between",
2270
- fullWidth: true,
2271
- size: compact ? "sm" : "md",
2272
- leftSection: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ProviderMark, { id: provider.id }),
2273
- disabled: provider.disabled,
2274
- loading: provider.loading,
2579
+ fullWidth,
2580
+ size,
2581
+ "aria-label": ariaLabel ?? (typeof buttonLabel === "string" ? buttonLabel : void 0),
2582
+ "aria-describedby": describedBy,
2583
+ leftSection: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ProviderIdentityMark, { provider }),
2584
+ disabled,
2585
+ loading,
2586
+ styles: { root: { minHeight: minTouchTargetPx } },
2275
2587
  ...buttonProps,
2276
- children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: 0, align: "flex-start", children: [
2277
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { inherit: true, children: label }),
2278
- provider.description ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { size: "xs", c: "dimmed", lh: 1.2, children: provider.description }) : null
2588
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Stack, { gap: 0, align: "flex-start", children: [
2589
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Text, { inherit: true, children: buttonLabel }),
2590
+ description ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Text, { size: "xs", c: "dimmed", lh: 1.2, children: description }) : null
2279
2591
  ] })
2280
2592
  }
2281
2593
  );
2282
2594
  }
2595
+ function ProviderIdentityButtonGroup({ providers, layout = "stack" }) {
2596
+ if (!providers.length) {
2597
+ return null;
2598
+ }
2599
+ const content = providers.map((entry, index) => {
2600
+ const key = `${normalizeProviderId(String(entry.provider)) || "provider"}-${index}`;
2601
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ProviderIdentityButton, { ...entry }, key);
2602
+ });
2603
+ if (layout === "grid") {
2604
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: content });
2605
+ }
2606
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Stack, { gap: "sm", children: content });
2607
+ }
2608
+
2609
+ // src/SocialAuthButtons.tsx
2610
+ var import_jsx_runtime39 = require("react/jsx-runtime");
2283
2611
  function SocialAuthButtons({
2284
2612
  providers,
2285
2613
  title = "Continue with a trusted provider",
@@ -2290,44 +2618,54 @@ function SocialAuthButtons({
2290
2618
  if (!providers.length) {
2291
2619
  return null;
2292
2620
  }
2293
- const content = providers.map((provider) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SocialAuthButton, { provider, compact }, provider.id));
2294
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: "md", children: [
2295
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: 4, ta: "center", children: [
2296
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Group, { justify: "center", gap: "xs", children: [
2297
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(GdsIcons.Login, { size: "1rem" }),
2298
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { fw: 600, children: title })
2621
+ const buttons = providers.map((provider) => ({
2622
+ provider: provider.id,
2623
+ label: provider.label,
2624
+ description: provider.description,
2625
+ href: provider.href,
2626
+ onClick: provider.onClick,
2627
+ disabled: provider.disabled,
2628
+ loading: provider.loading,
2629
+ size: provider.size ?? (compact ? "sm" : "md"),
2630
+ variant: provider.variant
2631
+ }));
2632
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core37.Stack, { gap: "md", children: [
2633
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core37.Stack, { gap: 4, ta: "center", children: [
2634
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core37.Group, { justify: "center", gap: "xs", children: [
2635
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(GdsIcons.Login, { size: "1rem" }),
2636
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Text, { fw: 600, children: title })
2299
2637
  ] }),
2300
- description ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { size: "sm", c: "dimmed", children: description }) : null
2638
+ description ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Text, { size: "sm", c: "dimmed", children: description }) : null
2301
2639
  ] }),
2302
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Divider, {}),
2303
- layout === "grid" ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: content }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Stack, { gap: "sm", children: content })
2640
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Divider, {}),
2641
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(ProviderIdentityButtonGroup, { providers: buttons, layout })
2304
2642
  ] });
2305
2643
  }
2306
2644
 
2307
2645
  // src/ArticleShell.tsx
2308
- var import_core36 = require("@mantine/core");
2309
- var import_jsx_runtime38 = require("react/jsx-runtime");
2646
+ var import_core38 = require("@mantine/core");
2647
+ var import_jsx_runtime40 = require("react/jsx-runtime");
2310
2648
  function ArticleShell({ eyebrow, title, lead, meta, sideRail, children }) {
2311
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Container, { size: "lg", py: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Group, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
2312
- /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Stack, { gap: "lg", maw: 760, flex: 1, children: [
2313
- /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Stack, { gap: "sm", children: [
2314
- eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Text, { size: "sm", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
2315
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Title, { order: 1, children: title }),
2316
- lead ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Text, { size: "lg", c: "dimmed", children: lead }) : null,
2317
- meta ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Group, { gap: "md", children: meta }) : null
2649
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Container, { size: "lg", py: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Group, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
2650
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Stack, { gap: "lg", maw: 760, flex: 1, children: [
2651
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Stack, { gap: "sm", children: [
2652
+ eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Text, { size: "sm", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
2653
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Title, { order: 1, children: title }),
2654
+ lead ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Text, { size: "lg", c: "dimmed", children: lead }) : null,
2655
+ meta ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Group, { gap: "md", children: meta }) : null
2318
2656
  ] }),
2319
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Stack, { gap: "md", children })
2657
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Stack, { gap: "md", children })
2320
2658
  ] }),
2321
- sideRail ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Stack, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
2659
+ sideRail ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Stack, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
2322
2660
  ] }) });
2323
2661
  }
2324
2662
 
2325
2663
  // src/DocsCodeBlock.tsx
2326
- var import_react6 = require("react");
2327
- var import_core37 = require("@mantine/core");
2328
- var import_jsx_runtime39 = require("react/jsx-runtime");
2664
+ var import_react7 = require("react");
2665
+ var import_core39 = require("@mantine/core");
2666
+ var import_jsx_runtime41 = require("react/jsx-runtime");
2329
2667
  function DocsCodeBlock({ code, language, title, withCopy = true }) {
2330
- const [copied, setCopied] = (0, import_react6.useState)(false);
2668
+ const [copied, setCopied] = (0, import_react7.useState)(false);
2331
2669
  const handleCopy = async () => {
2332
2670
  if (!navigator?.clipboard) {
2333
2671
  return;
@@ -2336,44 +2674,44 @@ function DocsCodeBlock({ code, language, title, withCopy = true }) {
2336
2674
  setCopied(true);
2337
2675
  window.setTimeout(() => setCopied(false), 1200);
2338
2676
  };
2339
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Paper, { withBorder: true, radius: "lg", p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core37.Stack, { gap: "sm", children: [
2340
- title || withCopy ? /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core37.Group, { justify: "space-between", align: "center", children: [
2341
- /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core37.Stack, { gap: 0, children: [
2342
- title ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Text, { fw: 600, children: title }) : null,
2343
- language ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Text, { size: "xs", c: "dimmed", children: language }) : null
2677
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Paper, { withBorder: true, radius: "lg", p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Stack, { gap: "sm", children: [
2678
+ title || withCopy ? /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Group, { justify: "space-between", align: "center", children: [
2679
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Stack, { gap: 0, children: [
2680
+ title ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Text, { fw: 600, children: title }) : null,
2681
+ language ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Text, { size: "xs", c: "dimmed", children: language }) : null
2344
2682
  ] }),
2345
- withCopy ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2346
- import_core37.ActionIcon,
2683
+ withCopy ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
2684
+ import_core39.ActionIcon,
2347
2685
  {
2348
2686
  variant: "subtle",
2349
2687
  "aria-label": copied ? "Copied code block" : "Copy code block",
2350
2688
  onClick: () => {
2351
2689
  void handleCopy();
2352
2690
  },
2353
- children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(GdsIcons.Copy, { size: "1rem" })
2691
+ children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(GdsIcons.Copy, { size: "1rem" })
2354
2692
  }
2355
2693
  ) : null
2356
2694
  ] }) : null,
2357
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Code, { block: true, children: code })
2695
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Code, { block: true, children: code })
2358
2696
  ] }) });
2359
2697
  }
2360
2698
 
2361
2699
  // src/CtaButtonGroup.tsx
2362
- var import_core38 = require("@mantine/core");
2363
- var import_jsx_runtime40 = require("react/jsx-runtime");
2700
+ var import_core40 = require("@mantine/core");
2701
+ var import_jsx_runtime42 = require("react/jsx-runtime");
2364
2702
  function CtaButtonGroup({ primary, secondary, tertiary }) {
2365
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Stack, { gap: "sm", children: [
2366
- /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Group, { gap: "sm", align: "stretch", children: [
2367
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { children: primary }),
2368
- secondary ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { children: secondary }) : null
2703
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Stack, { gap: "sm", children: [
2704
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Group, { gap: "sm", align: "stretch", children: [
2705
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: primary }),
2706
+ secondary ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: secondary }) : null
2369
2707
  ] }),
2370
- tertiary ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { children: tertiary }) : null
2708
+ tertiary ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: tertiary }) : null
2371
2709
  ] });
2372
2710
  }
2373
2711
 
2374
2712
  // src/DocsPageShell.tsx
2375
- var import_core39 = require("@mantine/core");
2376
- var import_jsx_runtime41 = require("react/jsx-runtime");
2713
+ var import_core41 = require("@mantine/core");
2714
+ var import_jsx_runtime43 = require("react/jsx-runtime");
2377
2715
  function DocsPageShell({
2378
2716
  breadcrumbs = [],
2379
2717
  title,
@@ -2384,27 +2722,27 @@ function DocsPageShell({
2384
2722
  footerNext,
2385
2723
  children
2386
2724
  }) {
2387
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Container, { fluid: true, py: "xl", px: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Group, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
2388
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Stack, { component: "article", gap: "lg", flex: 1, miw: 0, children: [
2389
- breadcrumbs.length ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Breadcrumbs, { children: breadcrumbs.map(
2390
- (crumb) => crumb.href ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Anchor, { href: crumb.href, children: crumb.label }, `${crumb.label}-${crumb.href}`) : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Text, { children: crumb.label }, crumb.label)
2725
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Container, { fluid: true, py: "xl", px: { base: "md", md: "lg", lg: "xl" }, w: "100%", maw: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core41.Group, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
2726
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core41.Stack, { component: "article", gap: "lg", flex: 1, miw: 0, children: [
2727
+ breadcrumbs.length ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Breadcrumbs, { children: breadcrumbs.map(
2728
+ (crumb) => crumb.href ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Anchor, { href: crumb.href, children: crumb.label }, `${crumb.label}-${crumb.href}`) : /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Text, { children: crumb.label }, crumb.label)
2391
2729
  ) }) : null,
2392
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Stack, { gap: "sm", children: [
2393
- eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Text, { size: "sm", fw: 700, c: "dimmed", children: eyebrow }) : null,
2394
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Title, { order: 1, children: title }),
2395
- lead ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Text, { size: "lg", c: "dimmed", maw: 920, children: lead }) : null,
2396
- meta ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Group, { gap: "md", children: meta }) : null
2730
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core41.Stack, { gap: "sm", children: [
2731
+ eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Text, { size: "sm", fw: 700, c: "dimmed", children: eyebrow }) : null,
2732
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Title, { order: 1, children: title }),
2733
+ lead ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Text, { size: "lg", c: "dimmed", children: lead }) : null,
2734
+ meta ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Group, { gap: "md", children: meta }) : null
2397
2735
  ] }),
2398
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Stack, { gap: "md", children }),
2399
- footerNext ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Anchor, { href: footerNext.href, fw: 600, children: footerNext.label }) : null
2736
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Stack, { gap: "md", children }),
2737
+ footerNext ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Anchor, { href: footerNext.href, fw: 600, children: footerNext.label }) : null
2400
2738
  ] }),
2401
- sideRail ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Stack, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
2739
+ sideRail ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Stack, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
2402
2740
  ] }) });
2403
2741
  }
2404
2742
 
2405
2743
  // src/EditorialHero.tsx
2406
- var import_core40 = require("@mantine/core");
2407
- var import_jsx_runtime42 = require("react/jsx-runtime");
2744
+ var import_core42 = require("@mantine/core");
2745
+ var import_jsx_runtime44 = require("react/jsx-runtime");
2408
2746
  function resolveActionVariant(action, index, seenPrimary) {
2409
2747
  const requested = action.variant ?? (index === 0 ? "primary" : "secondary");
2410
2748
  if (requested === "primary" && !seenPrimary) {
@@ -2416,8 +2754,8 @@ function resolveActionVariant(action, index, seenPrimary) {
2416
2754
  return { variant: "default", seenPrimary };
2417
2755
  }
2418
2756
  function HeroAction({ action, variant }) {
2419
- const content = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
2420
- import_core40.Anchor,
2757
+ const content = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2758
+ import_core42.Anchor,
2421
2759
  {
2422
2760
  href: action.href,
2423
2761
  onClick: action.onClick,
@@ -2441,8 +2779,8 @@ function HeroAction({ action, variant }) {
2441
2779
  }
2442
2780
  );
2443
2781
  if (!action.href) {
2444
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
2445
- import_core40.Box,
2782
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2783
+ import_core42.Box,
2446
2784
  {
2447
2785
  component: "button",
2448
2786
  type: "button",
@@ -2469,30 +2807,30 @@ function HeroAction({ action, variant }) {
2469
2807
  return content;
2470
2808
  }
2471
2809
  function LoadingHero({ compact }) {
2472
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Paper, { withBorder: true, radius: "xl", p: compact ? "lg" : "xl", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Grid, { gutter: compact ? "lg" : "xl", align: "center", children: [
2473
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Stack, { gap: "md", children: [
2474
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Skeleton, { height: 16, width: 96, radius: "xl" }),
2475
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Skeleton, { height: 48, width: "90%", radius: "md" }),
2476
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Skeleton, { height: 18, width: "100%", radius: "md" }),
2477
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Skeleton, { height: 18, width: "82%", radius: "md" }),
2478
- /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Group, { children: [
2479
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Skeleton, { height: 40, width: 140, radius: "md" }),
2480
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Skeleton, { height: 40, width: 140, radius: "md" })
2810
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Paper, { withBorder: true, radius: "xl", p: compact ? "lg" : "xl", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Grid, { gutter: compact ? "lg" : "xl", align: "center", children: [
2811
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Stack, { gap: "md", children: [
2812
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Skeleton, { height: 16, width: 96, radius: "xl" }),
2813
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Skeleton, { height: 48, width: "90%", radius: "md" }),
2814
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Skeleton, { height: 18, width: "100%", radius: "md" }),
2815
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Skeleton, { height: 18, width: "82%", radius: "md" }),
2816
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Group, { children: [
2817
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Skeleton, { height: 40, width: 140, radius: "md" }),
2818
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Skeleton, { height: 40, width: 140, radius: "md" })
2481
2819
  ] })
2482
2820
  ] }) }),
2483
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.AspectRatio, { ratio: 16 / 11, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Skeleton, { radius: "lg" }) }) })
2821
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.AspectRatio, { ratio: 16 / 11, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Skeleton, { radius: "lg" }) }) })
2484
2822
  ] }) });
2485
2823
  }
2486
2824
  function MediaFallback() {
2487
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.AspectRatio, { ratio: 16 / 11, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
2488
- import_core40.ThemeIcon,
2825
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.AspectRatio, { ratio: 16 / 11, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2826
+ import_core42.ThemeIcon,
2489
2827
  {
2490
2828
  size: "100%",
2491
2829
  radius: "lg",
2492
2830
  color: "gray",
2493
2831
  variant: "light",
2494
2832
  "aria-label": "Hero media is unavailable",
2495
- children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(GdsIcons.Gallery, { size: "2.5rem" })
2833
+ children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(GdsIcons.Gallery, { size: "2.5rem" })
2496
2834
  }
2497
2835
  ) });
2498
2836
  }
@@ -2512,8 +2850,8 @@ function MediaFrame({
2512
2850
  } else if (mediaFade === "soft-start") {
2513
2851
  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%)";
2514
2852
  }
2515
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
2516
- import_core40.Box,
2853
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
2854
+ import_core42.Box,
2517
2855
  {
2518
2856
  component: "figure",
2519
2857
  m: 0,
@@ -2526,9 +2864,9 @@ function MediaFrame({
2526
2864
  },
2527
2865
  "aria-label": mediaAlt,
2528
2866
  children: [
2529
- media ?? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(MediaFallback, {}),
2530
- media && overlayBackground ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
2531
- import_core40.Box,
2867
+ media ?? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(MediaFallback, {}),
2868
+ media && overlayBackground ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2869
+ import_core42.Box,
2532
2870
  {
2533
2871
  "aria-hidden": true,
2534
2872
  style: {
@@ -2561,7 +2899,7 @@ function EditorialHero({
2561
2899
  classNames
2562
2900
  }) {
2563
2901
  if (loading) {
2564
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(LoadingHero, { compact });
2902
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(LoadingHero, { compact });
2565
2903
  }
2566
2904
  const stackAlign = align === "center" ? "center" : "flex-start";
2567
2905
  const textAlign = align === "center" ? "center" : "left";
@@ -2569,15 +2907,15 @@ function EditorialHero({
2569
2907
  const renderedActions = actions.slice(0, 3).map((action, index) => {
2570
2908
  const resolved = resolveActionVariant(action, index, seenPrimary);
2571
2909
  seenPrimary = resolved.seenPrimary;
2572
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(HeroAction, { action, variant: resolved.variant }, `${action.label}-${index}`);
2910
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(HeroAction, { action, variant: resolved.variant }, `${action.label}-${index}`);
2573
2911
  });
2574
- const textSlot = /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Stack, { gap: compact ? "md" : "lg", justify: "center", h: "100%", className: classNames?.content, children: [
2575
- /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Stack, { gap: "sm", align: stackAlign, children: [
2576
- eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Text, { size: "sm", fw: 700, c: "dimmed", ta: textAlign, children: eyebrow }) : null,
2577
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Title, { order: 1, maw: 760, ta: textAlign, children: title }),
2578
- description ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Text, { size: compact ? "md" : "lg", c: "dimmed", maw: 720, ta: textAlign, children: description }) : null
2912
+ const textSlot = /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Stack, { gap: compact ? "md" : "lg", justify: "center", h: "100%", className: classNames?.content, children: [
2913
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Stack, { gap: "sm", align: stackAlign, children: [
2914
+ eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Text, { size: "sm", fw: 700, c: "dimmed", ta: textAlign, children: eyebrow }) : null,
2915
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Title, { order: 1, maw: 760, ta: textAlign, children: title }),
2916
+ description ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Text, { size: compact ? "md" : "lg", c: "dimmed", maw: 720, ta: textAlign, children: description }) : null
2579
2917
  ] }),
2580
- renderedActions.length ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Box, { className: classNames?.actions, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
2918
+ renderedActions.length ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Box, { className: classNames?.actions, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2581
2919
  CtaButtonGroup,
2582
2920
  {
2583
2921
  primary: renderedActions[0],
@@ -2585,8 +2923,8 @@ function EditorialHero({
2585
2923
  tertiary: renderedActions[2]
2586
2924
  }
2587
2925
  ) }) : null,
2588
- meta.length ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Group, { gap: "sm", wrap: "wrap", "aria-label": "Supporting details", className: classNames?.meta, children: meta.map((item) => /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
2589
- import_core40.Group,
2926
+ meta.length ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Group, { gap: "sm", wrap: "wrap", "aria-label": "Supporting details", className: classNames?.meta, children: meta.map((item) => /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
2927
+ import_core42.Group,
2590
2928
  {
2591
2929
  gap: 6,
2592
2930
  px: "sm",
@@ -2597,17 +2935,17 @@ function EditorialHero({
2597
2935
  },
2598
2936
  children: [
2599
2937
  item.icon,
2600
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Text, { size: "sm", c: "dimmed", children: item.label })
2938
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Text, { size: "sm", c: "dimmed", children: item.label })
2601
2939
  ]
2602
2940
  },
2603
2941
  item.id
2604
2942
  )) }) : null
2605
2943
  ] });
2606
- const mediaSlot = error ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(AccentPanel, { tone: "red", variant: "soft-outline", title: "Media unavailable", children: error }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(MediaFrame, { media, mediaAlt, mediaFade, className: classNames?.media });
2607
- const textCol = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Grid.Col, { span: { base: 12, md: 6 }, order: { base: 1, md: mediaPosition === "left" ? 2 : 1 }, children: textSlot });
2608
- const mediaCol = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Grid.Col, { span: { base: 12, md: 6 }, order: { base: 2, md: mediaPosition === "left" ? 1 : 2 }, children: mediaSlot });
2609
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
2610
- import_core40.Paper,
2944
+ const mediaSlot = error ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(AccentPanel, { tone: "red", variant: "soft-outline", title: "Media unavailable", children: error }) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(MediaFrame, { media, mediaAlt, mediaFade, className: classNames?.media });
2945
+ const textCol = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Grid.Col, { span: { base: 12, md: 6 }, order: { base: 1, md: mediaPosition === "left" ? 2 : 1 }, children: textSlot });
2946
+ const mediaCol = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Grid.Col, { span: { base: 12, md: 6 }, order: { base: 2, md: mediaPosition === "left" ? 1 : 2 }, children: mediaSlot });
2947
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2948
+ import_core42.Paper,
2611
2949
  {
2612
2950
  component: "section",
2613
2951
  withBorder: true,
@@ -2615,7 +2953,7 @@ function EditorialHero({
2615
2953
  p: compact ? "lg" : "xl",
2616
2954
  className: classNames?.root,
2617
2955
  style: surfaceVariant === "flat-public" ? { boxShadow: "none" } : void 0,
2618
- children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Grid, { gutter: compact ? "lg" : "xl", align: "center", children: [
2956
+ children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Grid, { gutter: compact ? "lg" : "xl", align: "center", children: [
2619
2957
  textCol,
2620
2958
  mediaCol
2621
2959
  ] })
@@ -2624,19 +2962,19 @@ function EditorialHero({
2624
2962
  }
2625
2963
 
2626
2964
  // src/FeatureBand.tsx
2627
- var import_core41 = require("@mantine/core");
2628
- var import_jsx_runtime43 = require("react/jsx-runtime");
2965
+ var import_core43 = require("@mantine/core");
2966
+ var import_jsx_runtime45 = require("react/jsx-runtime");
2629
2967
  function FeatureBandSkeleton({
2630
2968
  columns = 3,
2631
2969
  bordered = true,
2632
2970
  variant = "default"
2633
2971
  }) {
2634
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.SimpleGrid, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: Array.from({ length: columns }).map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Paper, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core41.Stack, { gap: "md", children: [
2635
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Skeleton, { height: variant === "process" ? 28 : 42, width: variant === "process" ? 72 : 42, radius: "xl" }),
2636
- /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core41.Stack, { gap: "xs", children: [
2637
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Skeleton, { height: 20, width: "75%", radius: "md" }),
2638
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Skeleton, { height: 14, width: "100%", radius: "md" }),
2639
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Skeleton, { height: 14, width: "82%", radius: "md" })
2972
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.SimpleGrid, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: Array.from({ length: columns }).map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Paper, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core43.Stack, { gap: "md", children: [
2973
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Skeleton, { height: variant === "process" ? 28 : 42, width: variant === "process" ? 72 : 42, radius: "xl" }),
2974
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core43.Stack, { gap: "xs", children: [
2975
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Skeleton, { height: 20, width: "75%", radius: "md" }),
2976
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Skeleton, { height: 14, width: "100%", radius: "md" }),
2977
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Skeleton, { height: 14, width: "82%", radius: "md" })
2640
2978
  ] })
2641
2979
  ] }) }, index)) });
2642
2980
  }
@@ -2649,10 +2987,10 @@ function FeatureBand({
2649
2987
  variant = "default"
2650
2988
  }) {
2651
2989
  if (loading) {
2652
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(FeatureBandSkeleton, { columns, bordered, variant });
2990
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(FeatureBandSkeleton, { columns, bordered, variant });
2653
2991
  }
2654
2992
  if (!items.length) {
2655
- return emptyState ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_jsx_runtime43.Fragment, { children: emptyState }) : /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2993
+ return emptyState ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, { children: emptyState }) : /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
2656
2994
  EmptyState,
2657
2995
  {
2658
2996
  title: "No supporting details available",
@@ -2660,9 +2998,9 @@ function FeatureBand({
2660
2998
  }
2661
2999
  );
2662
3000
  }
2663
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Box, { component: "section", "aria-label": "Supporting features", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.SimpleGrid, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Paper, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core41.Stack, { gap: "md", children: [
2664
- variant === "process" ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2665
- import_core41.Text,
3001
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Box, { component: "section", "aria-label": "Supporting features", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.SimpleGrid, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Paper, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core43.Stack, { gap: "md", children: [
3002
+ variant === "process" ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
3003
+ import_core43.Text,
2666
3004
  {
2667
3005
  fw: 800,
2668
3006
  size: "sm",
@@ -2674,18 +3012,18 @@ function FeatureBand({
2674
3012
  },
2675
3013
  children: item.stepLabel ?? `Step ${index + 1}`
2676
3014
  }
2677
- ) }) : item.media ? item.media : item.icon ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.ThemeIcon, { size: "xl", radius: "xl", variant: "light", color: "violet", children: item.icon }) }) : /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.ThemeIcon, { size: "xl", radius: "xl", variant: "light", color: "gray", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(GdsIcons.Info, { size: "1.25rem" }) }) }),
2678
- /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core41.Stack, { gap: "xs", children: [
2679
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Title, { order: 4, children: item.title }),
2680
- item.description ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Text, { c: "dimmed", children: item.description }) : null,
2681
- item.meta ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Text, { size: "sm", c: "dimmed", children: item.meta }) : null
3015
+ ) }) : item.media ? item.media : item.icon ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.ThemeIcon, { size: "xl", radius: "xl", variant: "light", color: "violet", children: item.icon }) }) : /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.ThemeIcon, { size: "xl", radius: "xl", variant: "light", color: "gray", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(GdsIcons.Info, { size: "1.25rem" }) }) }),
3016
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core43.Stack, { gap: "xs", children: [
3017
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Title, { order: 4, children: item.title }),
3018
+ item.description ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Text, { c: "dimmed", children: item.description }) : null,
3019
+ item.meta ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Text, { size: "sm", c: "dimmed", children: item.meta }) : null
2682
3020
  ] })
2683
3021
  ] }) }, item.id)) }) });
2684
3022
  }
2685
3023
 
2686
3024
  // src/MapPanel.tsx
2687
- var import_core42 = require("@mantine/core");
2688
- var import_jsx_runtime44 = require("react/jsx-runtime");
3025
+ var import_core44 = require("@mantine/core");
3026
+ var import_jsx_runtime46 = require("react/jsx-runtime");
2689
3027
  function MapPanel({
2690
3028
  title,
2691
3029
  description,
@@ -2701,7 +3039,7 @@ function MapPanel({
2701
3039
  }) {
2702
3040
  let body;
2703
3041
  if (loading) {
2704
- body = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
3042
+ body = /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2705
3043
  StateBlock,
2706
3044
  {
2707
3045
  variant: "loading",
@@ -2711,9 +3049,9 @@ function MapPanel({
2711
3049
  }
2712
3050
  );
2713
3051
  } else if (error) {
2714
- body = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(StateBlock, { variant: "error", title: "Map unavailable", description: error, compact: true });
3052
+ body = /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(StateBlock, { variant: "error", title: "Map unavailable", description: error, compact: true });
2715
3053
  } else if (!iframeSrc && !renderMap) {
2716
- body = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
3054
+ body = /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2717
3055
  StateBlock,
2718
3056
  {
2719
3057
  variant: "empty",
@@ -2723,9 +3061,9 @@ function MapPanel({
2723
3061
  }
2724
3062
  );
2725
3063
  } else if (renderMap) {
2726
- body = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Box, { style: { minHeight }, children: renderMap() });
3064
+ body = /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Box, { style: { minHeight }, children: renderMap() });
2727
3065
  } else {
2728
- body = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.AspectRatio, { ratio: 16 / 9, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
3066
+ body = /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.AspectRatio, { ratio: 16 / 9, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2729
3067
  "iframe",
2730
3068
  {
2731
3069
  src: iframeSrc,
@@ -2737,21 +3075,21 @@ function MapPanel({
2737
3075
  }
2738
3076
  ) });
2739
3077
  }
2740
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Stack, { gap: "md", children: [
2741
- /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2742
- /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Stack, { gap: 4, children: [
2743
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Title, { order: 3, children: title }),
2744
- description ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Text, { size: "sm", c: "dimmed", children: description }) : null
3078
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_core44.Stack, { gap: "md", children: [
3079
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_core44.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
3080
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_core44.Stack, { gap: 4, children: [
3081
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Title, { order: 3, children: title }),
3082
+ description ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Text, { size: "sm", c: "dimmed", children: description }) : null
2745
3083
  ] }),
2746
- actions ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(ActionBar, { ...actions }) : null
3084
+ actions ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ActionBar, { ...actions }) : null
2747
3085
  ] }),
2748
3086
  body
2749
3087
  ] }) });
2750
3088
  }
2751
3089
 
2752
3090
  // src/PublicFlowShell.tsx
2753
- var import_core43 = require("@mantine/core");
2754
- var import_jsx_runtime45 = require("react/jsx-runtime");
3091
+ var import_core45 = require("@mantine/core");
3092
+ var import_jsx_runtime47 = require("react/jsx-runtime");
2755
3093
  var stageTone = {
2756
3094
  idle: { label: "Idle", color: "gray" },
2757
3095
  loading: { label: "Loading", color: "blue" },
@@ -2803,7 +3141,7 @@ function PublicFlowShell({
2803
3141
  const actionBar = toActionBar(stage.actions);
2804
3142
  let body = stage.body;
2805
3143
  if (stage.status === "loading") {
2806
- body = /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
3144
+ body = /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2807
3145
  StateBlock,
2808
3146
  {
2809
3147
  variant: "loading",
@@ -2812,7 +3150,7 @@ function PublicFlowShell({
2812
3150
  }
2813
3151
  );
2814
3152
  } else if (stage.status === "error") {
2815
- body = errorState ?? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
3153
+ body = errorState ?? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2816
3154
  StateBlock,
2817
3155
  {
2818
3156
  variant: "error",
@@ -2821,7 +3159,7 @@ function PublicFlowShell({
2821
3159
  }
2822
3160
  );
2823
3161
  } else if (!stage.body && !hardwareSurface) {
2824
- body = emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
3162
+ body = emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2825
3163
  EmptyState,
2826
3164
  {
2827
3165
  title: "No stage content available",
@@ -2829,29 +3167,29 @@ function PublicFlowShell({
2829
3167
  }
2830
3168
  );
2831
3169
  }
2832
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core43.Stack, { gap: "lg", children: [
2833
- /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core43.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2834
- /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core43.Stack, { gap: 4, children: [
2835
- eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Text, { size: "xs", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
2836
- /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core43.Group, { gap: "sm", wrap: "wrap", children: [
2837
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Title, { order: 2, children: stage.title }),
2838
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Badge, { variant: "light", color: tone.color, children: tone.label })
3170
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_core45.Stack, { gap: "lg", children: [
3171
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_core45.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
3172
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_core45.Stack, { gap: 4, children: [
3173
+ eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Text, { size: "xs", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
3174
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_core45.Group, { gap: "sm", wrap: "wrap", children: [
3175
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Title, { order: 2, children: stage.title }),
3176
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Badge, { variant: "light", color: tone.color, children: tone.label })
2839
3177
  ] }),
2840
- stage.description ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Text, { size: "sm", c: "dimmed", children: stage.description }) : null
3178
+ stage.description ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Text, { size: "sm", c: "dimmed", children: stage.description }) : null
2841
3179
  ] }),
2842
3180
  exitAction
2843
3181
  ] }),
2844
- stage.notice ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Text, { size: "sm", c: "dimmed", children: stage.notice }) : null,
3182
+ stage.notice ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Text, { size: "sm", c: "dimmed", children: stage.notice }) : null,
2845
3183
  body,
2846
3184
  hardwareSurface,
2847
3185
  stage.aside,
2848
- actionBar ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(ActionBar, { ...actionBar }) : null
3186
+ actionBar ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ActionBar, { ...actionBar }) : null
2849
3187
  ] }) });
2850
3188
  }
2851
3189
 
2852
3190
  // src/PlaybackSurface.tsx
2853
- var import_core44 = require("@mantine/core");
2854
- var import_jsx_runtime46 = require("react/jsx-runtime");
3191
+ var import_core46 = require("@mantine/core");
3192
+ var import_jsx_runtime48 = require("react/jsx-runtime");
2855
3193
  var stateTone = {
2856
3194
  loading: { label: "Loading", color: "blue" },
2857
3195
  ready: { label: "Ready", color: "teal" },
@@ -2874,7 +3212,7 @@ function PlaybackSurface({
2874
3212
  const tone = stateTone[state];
2875
3213
  let content;
2876
3214
  if (state === "loading") {
2877
- content = /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
3215
+ content = /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
2878
3216
  StateBlock,
2879
3217
  {
2880
3218
  variant: "loading",
@@ -2883,7 +3221,7 @@ function PlaybackSurface({
2883
3221
  }
2884
3222
  );
2885
3223
  } else if (state === "empty") {
2886
- content = emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
3224
+ content = emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
2887
3225
  EmptyState,
2888
3226
  {
2889
3227
  title: "No playback content available",
@@ -2891,7 +3229,7 @@ function PlaybackSurface({
2891
3229
  }
2892
3230
  );
2893
3231
  } else if (state === "error") {
2894
- content = errorState ?? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
3232
+ content = errorState ?? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
2895
3233
  StateBlock,
2896
3234
  {
2897
3235
  variant: "error",
@@ -2900,23 +3238,23 @@ function PlaybackSurface({
2900
3238
  }
2901
3239
  );
2902
3240
  } else {
2903
- content = /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_core44.Stack, { gap: "md", children: [
3241
+ content = /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_core46.Stack, { gap: "md", children: [
2904
3242
  media,
2905
3243
  overlays
2906
3244
  ] });
2907
3245
  }
2908
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Paper, { withBorder: true, radius: "xl", p: "lg", "data-playback-mode": mode, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_core44.Stack, { gap: "md", children: [
2909
- title || statusMessage || controls ? /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_core44.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
2910
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_core44.Stack, { gap: 4, children: [
2911
- title ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Title, { order: 3, children: title }) : null,
2912
- statusMessage ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Text, { size: "sm", c: "dimmed", children: statusMessage }) : null
3246
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Paper, { withBorder: true, radius: "xl", p: "lg", "data-playback-mode": mode, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_core46.Stack, { gap: "md", children: [
3247
+ title || statusMessage || controls ? /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_core46.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
3248
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_core46.Stack, { gap: 4, children: [
3249
+ title ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Title, { order: 3, children: title }) : null,
3250
+ statusMessage ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Text, { size: "sm", c: "dimmed", children: statusMessage }) : null
2913
3251
  ] }),
2914
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_core44.Group, { gap: "sm", align: "center", wrap: "wrap", children: [
2915
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Badge, { variant: "light", color: tone.color, children: tone.label }),
3252
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_core46.Group, { gap: "sm", align: "center", wrap: "wrap", children: [
3253
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Badge, { variant: "light", color: tone.color, children: tone.label }),
2916
3254
  controls
2917
3255
  ] })
2918
3256
  ] }) : null,
2919
- state === "degraded" ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
3257
+ state === "degraded" ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
2920
3258
  StateBlock,
2921
3259
  {
2922
3260
  variant: "info",
@@ -2930,9 +3268,9 @@ function PlaybackSurface({
2930
3268
  }
2931
3269
 
2932
3270
  // src/ShareButtonGroup.tsx
2933
- var import_react7 = require("react");
2934
- var import_core45 = require("@mantine/core");
2935
- var import_jsx_runtime47 = require("react/jsx-runtime");
3271
+ var import_react8 = require("react");
3272
+ var import_core47 = require("@mantine/core");
3273
+ var import_jsx_runtime49 = require("react/jsx-runtime");
2936
3274
  var channelLabels = {
2937
3275
  native: "Share",
2938
3276
  copy: "Copy link",
@@ -2967,9 +3305,9 @@ function ShareAction({
2967
3305
  const label = channelLabels[channel];
2968
3306
  const Icon = channel === "copy" ? GdsIcons.Copy : channel === "mail" ? GdsIcons.Mail : channel === "message" ? GdsIcons.Message : GdsIcons.Refer;
2969
3307
  if (compact) {
2970
- return href ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.ActionIcon, { component: "a", href, target: "_blank", rel: "noreferrer", variant: "subtle", size: "lg", "aria-label": label, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Icon, { size: "1rem", stroke: 1.75 }) }) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.ActionIcon, { variant: "subtle", size: "lg", "aria-label": label, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Icon, { size: "1rem", stroke: 1.75 }) });
3308
+ return href ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.ActionIcon, { component: "a", href, target: "_blank", rel: "noreferrer", variant: "subtle", size: "lg", "aria-label": label, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Icon, { size: "1rem", stroke: 1.75 }) }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.ActionIcon, { variant: "subtle", size: "lg", "aria-label": label, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Icon, { size: "1rem", stroke: 1.75 }) });
2971
3309
  }
2972
- return href ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Button, { component: "a", href, target: "_blank", rel: "noreferrer", variant: "default", leftSection: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Icon, { size: "1rem", stroke: 1.75 }), children: label }) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Button, { variant: "default", leftSection: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Icon, { size: "1rem", stroke: 1.75 }), onClick, children: label });
3310
+ return href ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Button, { component: "a", href, target: "_blank", rel: "noreferrer", variant: "default", leftSection: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Icon, { size: "1rem", stroke: 1.75 }), children: label }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Button, { variant: "default", leftSection: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Icon, { size: "1rem", stroke: 1.75 }), onClick, children: label });
2973
3311
  }
2974
3312
  function ShareButtonGroup({
2975
3313
  url,
@@ -2980,8 +3318,8 @@ function ShareButtonGroup({
2980
3318
  label = "Share this",
2981
3319
  description
2982
3320
  }) {
2983
- const [copied, setCopied] = (0, import_react7.useState)(false);
2984
- const [shared, setShared] = (0, import_react7.useState)(false);
3321
+ const [copied, setCopied] = (0, import_react8.useState)(false);
3322
+ const [shared, setShared] = (0, import_react8.useState)(false);
2985
3323
  const hrefs = encodeShare(url, title, text);
2986
3324
  async function handleCopy() {
2987
3325
  await navigator.clipboard?.writeText?.(url);
@@ -2997,29 +3335,29 @@ function ShareButtonGroup({
2997
3335
  }
2998
3336
  await handleCopy();
2999
3337
  }
3000
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_core45.Stack, { gap: "sm", children: [
3001
- /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_core45.Stack, { gap: 2, children: [
3002
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Text, { fw: 600, children: label }),
3003
- description ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Text, { size: "sm", c: "dimmed", children: description }) : null
3338
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Stack, { gap: "sm", children: [
3339
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Stack, { gap: 2, children: [
3340
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Text, { fw: 600, children: label }),
3341
+ description ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Text, { size: "sm", c: "dimmed", children: description }) : null
3004
3342
  ] }),
3005
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Group, { gap: "sm", wrap: "wrap", children: channels.map((channel) => {
3343
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Group, { gap: "sm", wrap: "wrap", children: channels.map((channel) => {
3006
3344
  if (channel === "copy") {
3007
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ShareAction, { channel, compact, onClick: () => void handleCopy() }, channel);
3345
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ShareAction, { channel, compact, onClick: () => void handleCopy() }, channel);
3008
3346
  }
3009
3347
  if (channel === "native") {
3010
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ShareAction, { channel, compact, onClick: () => void handleNativeShare() }, channel);
3348
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ShareAction, { channel, compact, onClick: () => void handleNativeShare() }, channel);
3011
3349
  }
3012
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ShareAction, { channel, compact, href: hrefs[channel] }, channel);
3350
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ShareAction, { channel, compact, href: hrefs[channel] }, channel);
3013
3351
  }) }),
3014
- copied ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Text, { size: "sm", c: "teal", children: "Link copied." }) : null,
3015
- shared ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Text, { size: "sm", c: "teal", children: "Share sheet opened." }) : null
3352
+ copied ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Text, { size: "sm", c: "teal", children: "Link copied." }) : null,
3353
+ shared ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Text, { size: "sm", c: "teal", children: "Share sheet opened." }) : null
3016
3354
  ] });
3017
3355
  }
3018
3356
 
3019
3357
  // src/UploadDropzone.tsx
3020
- var import_react8 = require("react");
3021
- var import_core46 = require("@mantine/core");
3022
- var import_jsx_runtime48 = require("react/jsx-runtime");
3358
+ var import_react9 = require("react");
3359
+ var import_core48 = require("@mantine/core");
3360
+ var import_jsx_runtime50 = require("react/jsx-runtime");
3023
3361
  function UploadDropzone({
3024
3362
  title,
3025
3363
  description,
@@ -3029,8 +3367,8 @@ function UploadDropzone({
3029
3367
  actionLabel = "Choose files",
3030
3368
  mode = "panel"
3031
3369
  }) {
3032
- const inputRef = (0, import_react8.useRef)(null);
3033
- const [dragging, setDragging] = (0, import_react8.useState)(false);
3370
+ const inputRef = (0, import_react9.useRef)(null);
3371
+ const [dragging, setDragging] = (0, import_react9.useState)(false);
3034
3372
  const UploadIcon = GdsIcons.Upload;
3035
3373
  const forwardFiles = (files) => {
3036
3374
  if (!files?.length || !onFilesSelected) {
@@ -3038,8 +3376,8 @@ function UploadDropzone({
3038
3376
  }
3039
3377
  onFilesSelected(Array.from(files));
3040
3378
  };
3041
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
3042
- import_core46.Box,
3379
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
3380
+ import_core48.Box,
3043
3381
  {
3044
3382
  onDragOver: (event) => {
3045
3383
  event.preventDefault();
@@ -3058,7 +3396,7 @@ function UploadDropzone({
3058
3396
  background: dragging ? "var(--mantine-color-violet-light)" : "transparent"
3059
3397
  },
3060
3398
  children: [
3061
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3399
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
3062
3400
  "input",
3063
3401
  {
3064
3402
  ref: inputRef,
@@ -3069,11 +3407,11 @@ function UploadDropzone({
3069
3407
  onChange: (event) => forwardFiles(event.currentTarget.files)
3070
3408
  }
3071
3409
  ),
3072
- /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_core46.Stack, { align: mode === "inline" ? "flex-start" : "center", ta: mode === "inline" ? "left" : "center", gap: "sm", children: [
3073
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(UploadIcon, { size: "1.5rem" }),
3074
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Text, { fw: 600, children: title }),
3075
- description ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Text, { size: "sm", c: "dimmed", children: description }) : null,
3076
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Button, { variant: "light", onClick: () => inputRef.current?.click(), children: actionLabel }) })
3410
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Stack, { align: mode === "inline" ? "flex-start" : "center", ta: mode === "inline" ? "left" : "center", gap: "sm", children: [
3411
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(UploadIcon, { size: "1.5rem" }),
3412
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Text, { fw: 600, children: title }),
3413
+ description ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Text, { size: "sm", c: "dimmed", children: description }) : null,
3414
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Button, { variant: "light", onClick: () => inputRef.current?.click(), children: actionLabel }) })
3077
3415
  ] })
3078
3416
  ]
3079
3417
  }
@@ -3081,8 +3419,8 @@ function UploadDropzone({
3081
3419
  }
3082
3420
 
3083
3421
  // src/MediaField.tsx
3084
- var import_core47 = require("@mantine/core");
3085
- var import_jsx_runtime49 = require("react/jsx-runtime");
3422
+ var import_core49 = require("@mantine/core");
3423
+ var import_jsx_runtime51 = require("react/jsx-runtime");
3086
3424
  var stateLabels = {
3087
3425
  empty: { label: "Empty", color: "gray" },
3088
3426
  selected: { label: "Selected", color: "blue" },
@@ -3110,32 +3448,32 @@ function MediaField({
3110
3448
  mode = "stacked"
3111
3449
  }) {
3112
3450
  const stateBadge = stateLabels[state];
3113
- const resolvedRemoveAction = removeAction ?? (onRemove ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Button, { type: "button", variant: "light", color: "red", onClick: onRemove, children: "Remove" }) : null);
3114
- const resolvedResetAction = resetAction ?? (onReset ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Button, { type: "button", variant: "default", onClick: onReset, children: "Reset" }) : null);
3115
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
3451
+ const resolvedRemoveAction = removeAction ?? (onRemove ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Button, { type: "button", variant: "light", color: "red", onClick: onRemove, children: "Remove" }) : null);
3452
+ const resolvedResetAction = resetAction ?? (onReset ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Button, { type: "button", variant: "default", onClick: onReset, children: "Reset" }) : null);
3453
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
3116
3454
  FormField,
3117
3455
  {
3118
3456
  label,
3119
3457
  description,
3120
3458
  error,
3121
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Stack, { gap: "md", children: [
3122
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Group, { justify: "flex-end", align: "center", gap: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Group, { gap: "xs", justify: "flex-end", children: [
3123
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Badge, { variant: "light", color: stateBadge.color, children: stateBadge.label }),
3459
+ children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core49.Stack, { gap: "md", children: [
3460
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Group, { justify: "flex-end", align: "center", gap: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core49.Group, { gap: "xs", justify: "flex-end", children: [
3461
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Badge, { variant: "light", color: stateBadge.color, children: stateBadge.label }),
3124
3462
  statusAction
3125
3463
  ] }) }),
3126
3464
  preview ? preview : null,
3127
- uploadControl || urlInput ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [
3128
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Divider, {}),
3129
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Stack, { gap: "sm", style: mode === "split" ? { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))" } : void 0, children: [
3465
+ uploadControl || urlInput ? /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_jsx_runtime51.Fragment, { children: [
3466
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Divider, {}),
3467
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core49.Stack, { gap: "sm", style: mode === "split" ? { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))" } : void 0, children: [
3130
3468
  uploadControl,
3131
3469
  urlInput
3132
3470
  ] })
3133
3471
  ] }) : null,
3134
- value ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Text, { size: "sm", c: "dimmed", style: { wordBreak: "break-all" }, children: value }) : null,
3135
- helpText ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Text, { size: "sm", c: "dimmed", children: helpText }) : null,
3136
- policyText ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Text, { size: "sm", c: error ? "red.7" : "dimmed", children: policyText }) : null,
3472
+ value ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Text, { size: "sm", c: "dimmed", style: { wordBreak: "break-all" }, children: value }) : null,
3473
+ helpText ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Text, { size: "sm", c: "dimmed", children: helpText }) : null,
3474
+ policyText ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Text, { size: "sm", c: error ? "red.7" : "dimmed", children: policyText }) : null,
3137
3475
  typeof error !== "string" && error ? error : null,
3138
- resolvedRemoveAction || resolvedResetAction ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Group, { gap: "sm", children: [
3476
+ resolvedRemoveAction || resolvedResetAction ? /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core49.Group, { gap: "sm", children: [
3139
3477
  resolvedResetAction,
3140
3478
  retryAction,
3141
3479
  resolvedRemoveAction
@@ -3146,50 +3484,50 @@ function MediaField({
3146
3484
  }
3147
3485
 
3148
3486
  // src/MediaCard.tsx
3149
- var import_core48 = require("@mantine/core");
3150
- var import_jsx_runtime50 = require("react/jsx-runtime");
3487
+ var import_core50 = require("@mantine/core");
3488
+ var import_jsx_runtime52 = require("react/jsx-runtime");
3151
3489
  function MediaCard({ title, image, description, status, overlay, actions = [] }) {
3152
3490
  const EyeIcon = GdsIcons.Eye;
3153
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Card, { withBorder: true, radius: "lg", padding: "md", children: [
3154
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Card.Section, { pos: "relative", children: [
3491
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_core50.Card, { withBorder: true, radius: "lg", padding: "md", children: [
3492
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_core50.Card.Section, { pos: "relative", children: [
3155
3493
  image,
3156
- overlay ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { style: { position: "absolute", inset: 12, display: "flex", justifyContent: "flex-end", alignItems: "flex-start" }, children: overlay }) : null
3494
+ overlay ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { style: { position: "absolute", inset: 12, display: "flex", justifyContent: "flex-end", alignItems: "flex-start" }, children: overlay }) : null
3157
3495
  ] }),
3158
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Stack, { gap: "sm", mt: "md", children: [
3159
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Group, { justify: "space-between", align: "flex-start", children: [
3160
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Stack, { gap: 4, children: [
3161
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Title, { order: 4, children: title }),
3162
- description ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Text, { size: "sm", c: "dimmed", lineClamp: 2, children: description }) : null
3496
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_core50.Stack, { gap: "sm", mt: "md", children: [
3497
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_core50.Group, { justify: "space-between", align: "flex-start", children: [
3498
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_core50.Stack, { gap: 4, children: [
3499
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_core50.Title, { order: 4, children: title }),
3500
+ description ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_core50.Text, { size: "sm", c: "dimmed", lineClamp: 2, children: description }) : null
3163
3501
  ] }),
3164
- status ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Badge, { variant: "light", children: status }) : null
3502
+ status ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_core50.Badge, { variant: "light", children: status }) : null
3165
3503
  ] }),
3166
- actions.length ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Group, { justify: "flex-end", gap: "xs", children: actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.ActionIcon, { variant: "light", "aria-label": action.label, onClick: action.onClick, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(EyeIcon, { size: "1rem" }) }, action.label)) }) : null
3504
+ actions.length ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_core50.Group, { justify: "flex-end", gap: "xs", children: actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_core50.ActionIcon, { variant: "light", "aria-label": action.label, onClick: action.onClick, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(EyeIcon, { size: "1rem" }) }, action.label)) }) : null
3167
3505
  ] })
3168
3506
  ] });
3169
3507
  }
3170
3508
 
3171
3509
  // src/AccessSummary.tsx
3172
- var import_core49 = require("@mantine/core");
3173
- var import_jsx_runtime51 = require("react/jsx-runtime");
3510
+ var import_core51 = require("@mantine/core");
3511
+ var import_jsx_runtime53 = require("react/jsx-runtime");
3174
3512
  function AccessSummary({ title, roles, scope, blocked = false, description }) {
3175
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Card, { withBorder: true, radius: "lg", padding: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core49.Stack, { gap: "sm", children: [
3176
- /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core49.Group, { justify: "space-between", align: "center", children: [
3177
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Title, { order: 4, children: title }),
3178
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Badge, { color: blocked ? "red" : "teal", variant: "light", children: blocked ? "Blocked" : "Allowed" })
3513
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core51.Card, { withBorder: true, radius: "lg", padding: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_core51.Stack, { gap: "sm", children: [
3514
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_core51.Group, { justify: "space-between", align: "center", children: [
3515
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core51.Title, { order: 4, children: title }),
3516
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core51.Badge, { color: blocked ? "red" : "teal", variant: "light", children: blocked ? "Blocked" : "Allowed" })
3179
3517
  ] }),
3180
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Group, { gap: "xs", children: roles.map((role) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Badge, { variant: "outline", children: role }, role)) }),
3181
- scope ? /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core49.Text, { size: "sm", c: "dimmed", children: [
3518
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core51.Group, { gap: "xs", children: roles.map((role) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core51.Badge, { variant: "outline", children: role }, role)) }),
3519
+ scope ? /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_core51.Text, { size: "sm", c: "dimmed", children: [
3182
3520
  "Scope: ",
3183
3521
  scope
3184
3522
  ] }) : null,
3185
- description ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Text, { size: "sm", children: description }) : null
3523
+ description ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core51.Text, { size: "sm", children: description }) : null
3186
3524
  ] }) });
3187
3525
  }
3188
3526
 
3189
3527
  // src/AccessRecoveryPanel.tsx
3190
- var import_core50 = require("@mantine/core");
3528
+ var import_core52 = require("@mantine/core");
3191
3529
  var import_gds_theme5 = require("@doneisbetter/gds-theme");
3192
- var import_jsx_runtime52 = require("react/jsx-runtime");
3530
+ var import_jsx_runtime54 = require("react/jsx-runtime");
3193
3531
  var stateBlockVariantByState = {
3194
3532
  unauthenticated: "permission",
3195
3533
  "expired-session": "info",
@@ -3258,7 +3596,7 @@ function ActionGroup({
3258
3596
  if (actions.length === 0) {
3259
3597
  return null;
3260
3598
  }
3261
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_core50.Group, { gap: "sm", justify: "center", wrap: "wrap", children: actions.map((actionConfig, index) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
3599
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_core52.Group, { gap: "sm", justify: "center", wrap: "wrap", children: actions.map((actionConfig, index) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3262
3600
  SemanticButton,
3263
3601
  {
3264
3602
  action: actionConfig.action,
@@ -3292,14 +3630,14 @@ function AccessRecoveryPanel({
3292
3630
  onBack,
3293
3631
  supportAction
3294
3632
  });
3295
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
3633
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3296
3634
  StateBlock,
3297
3635
  {
3298
3636
  variant: stateBlockVariantByState[state],
3299
3637
  compact,
3300
3638
  title: title ?? t(`gds.accessRecovery.${state}.title`, defaultCopy.title),
3301
3639
  description: description ?? t(`gds.accessRecovery.${state}.description`, defaultCopy.description),
3302
- action: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
3640
+ action: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3303
3641
  ActionGroup,
3304
3642
  {
3305
3643
  primaryAction: primaryAction ?? defaults.primary,
@@ -3312,8 +3650,8 @@ function AccessRecoveryPanel({
3312
3650
  }
3313
3651
 
3314
3652
  // src/PageHeader.tsx
3315
- var import_core51 = require("@mantine/core");
3316
- var import_jsx_runtime53 = require("react/jsx-runtime");
3653
+ var import_core53 = require("@mantine/core");
3654
+ var import_jsx_runtime55 = require("react/jsx-runtime");
3317
3655
  function PageHeader({
3318
3656
  title,
3319
3657
  description,
@@ -3324,19 +3662,19 @@ function PageHeader({
3324
3662
  }) {
3325
3663
  const resolvedDescription = description ?? subtitle;
3326
3664
  const eyebrowProps = eyebrowVariant === "ornamental" ? { tt: "uppercase", style: { letterSpacing: "0.12em" } } : {};
3327
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_core51.Group, { justify: "space-between", align: "flex-start", gap: "lg", wrap: "wrap", children: [
3328
- /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_core51.Stack, { gap: "xs", children: [
3329
- eyebrow && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core51.Text, { size: "xs", fw: 700, c: "dimmed", ...eyebrowProps, children: eyebrow }),
3330
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core51.Title, { order: 1, children: title }),
3331
- resolvedDescription && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core51.Text, { c: "dimmed", maw: 720, children: resolvedDescription })
3665
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_core53.Group, { justify: "space-between", align: "flex-start", gap: "lg", wrap: "wrap", children: [
3666
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_core53.Stack, { gap: "xs", children: [
3667
+ eyebrow && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_core53.Text, { size: "xs", fw: 700, c: "dimmed", ...eyebrowProps, children: eyebrow }),
3668
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_core53.Title, { order: 1, children: title }),
3669
+ resolvedDescription && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_core53.Text, { c: "dimmed", maw: 720, children: resolvedDescription })
3332
3670
  ] }),
3333
- actions ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_core51.Box, { children: actions }) : null
3671
+ actions ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_core53.Box, { children: actions }) : null
3334
3672
  ] });
3335
3673
  }
3336
3674
 
3337
3675
  // src/FilterDrawer.tsx
3338
- var import_core52 = require("@mantine/core");
3339
- var import_jsx_runtime54 = require("react/jsx-runtime");
3676
+ var import_core54 = require("@mantine/core");
3677
+ var import_jsx_runtime56 = require("react/jsx-runtime");
3340
3678
  function FilterDrawer({
3341
3679
  opened,
3342
3680
  onClose,
@@ -3352,8 +3690,8 @@ function FilterDrawer({
3352
3690
  }) {
3353
3691
  const resolvedPrimaryAction = applyAction ?? primaryAction;
3354
3692
  const resolvedSecondaryAction = resetAction ?? secondaryAction;
3355
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3356
- import_core52.Drawer,
3693
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
3694
+ import_core54.Drawer,
3357
3695
  {
3358
3696
  opened,
3359
3697
  onClose,
@@ -3361,11 +3699,11 @@ function FilterDrawer({
3361
3699
  position: mode === "bottom-sheet" ? "bottom" : "right",
3362
3700
  size: mode === "bottom-sheet" ? "auto" : "md",
3363
3701
  radius: mode === "bottom-sheet" ? "xl" : void 0,
3364
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_core52.Stack, { gap: "md", children: [
3365
- description ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_core52.Text, { size: "sm", c: "dimmed", children: description }) : null,
3702
+ children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_core54.Stack, { gap: "md", children: [
3703
+ description ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core54.Text, { size: "sm", c: "dimmed", children: description }) : null,
3366
3704
  children,
3367
- resolvedPrimaryAction || resolvedSecondaryAction || closeAction ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_core52.Group, { justify: "space-between", mt: "md", children: [
3368
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_core52.Group, { gap: "sm", children: [
3705
+ resolvedPrimaryAction || resolvedSecondaryAction || closeAction ? /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_core54.Group, { justify: "space-between", mt: "md", children: [
3706
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_core54.Group, { gap: "sm", children: [
3369
3707
  closeAction,
3370
3708
  resolvedSecondaryAction
3371
3709
  ] }),
@@ -3377,8 +3715,8 @@ function FilterDrawer({
3377
3715
  }
3378
3716
 
3379
3717
  // src/PlaceholderPanel.tsx
3380
- var import_core53 = require("@mantine/core");
3381
- var import_jsx_runtime55 = require("react/jsx-runtime");
3718
+ var import_core55 = require("@mantine/core");
3719
+ var import_jsx_runtime57 = require("react/jsx-runtime");
3382
3720
  function PlaceholderPanel({
3383
3721
  title,
3384
3722
  description,
@@ -3388,16 +3726,16 @@ function PlaceholderPanel({
3388
3726
  mode
3389
3727
  }) {
3390
3728
  if (mode === "live" && children) {
3391
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_jsx_runtime55.Fragment, { children });
3729
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment, { children });
3392
3730
  }
3393
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_core53.Card, { children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_core53.Stack, { gap: "md", children: [
3394
- badge ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_core53.Badge, { variant: "light", color: "blue", w: "fit-content", children: badge }) : null,
3395
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_core53.Stack, { gap: "xs", children: [
3396
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_core53.Title, { order: 4, children: title }),
3397
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_core53.Text, { c: "dimmed", children: description })
3731
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_core55.Card, { children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_core55.Stack, { gap: "md", children: [
3732
+ badge ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_core55.Badge, { variant: "light", color: "blue", w: "fit-content", children: badge }) : null,
3733
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_core55.Stack, { gap: "xs", children: [
3734
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_core55.Title, { order: 4, children: title }),
3735
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_core55.Text, { c: "dimmed", children: description })
3398
3736
  ] }),
3399
- footer ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_core53.Text, { size: "sm", children: footer }) : null,
3400
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3737
+ footer ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_core55.Text, { size: "sm", children: footer }) : null,
3738
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
3401
3739
  StateBlock,
3402
3740
  {
3403
3741
  variant: "not-enough-data",
@@ -3410,8 +3748,8 @@ function PlaceholderPanel({
3410
3748
  }
3411
3749
 
3412
3750
  // src/SimpleDataTable.tsx
3413
- var import_core54 = require("@mantine/core");
3414
- var import_jsx_runtime56 = require("react/jsx-runtime");
3751
+ var import_core56 = require("@mantine/core");
3752
+ var import_jsx_runtime58 = require("react/jsx-runtime");
3415
3753
  function SimpleDataTable({
3416
3754
  columns,
3417
3755
  rows,
@@ -3422,23 +3760,23 @@ function SimpleDataTable({
3422
3760
  getRowKey
3423
3761
  }) {
3424
3762
  if (error) {
3425
- return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(StateBlock, { variant: "error", title: "Unable to load data", description: error, compact: true });
3763
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(StateBlock, { variant: "error", title: "Unable to load data", description: error, compact: true });
3426
3764
  }
3427
3765
  if (loading) {
3428
- return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(StateBlock, { variant: "loading", title: "Loading data", description: "Please wait while the shared dataset is prepared.", compact: true });
3766
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(StateBlock, { variant: "loading", title: "Loading data", description: "Please wait while the shared dataset is prepared.", compact: true });
3429
3767
  }
3430
3768
  if (!rows.length) {
3431
- return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(StateBlock, { variant: "empty", title: emptyTitle, description: emptyDescription, compact: true });
3769
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(StateBlock, { variant: "empty", title: emptyTitle, description: emptyDescription, compact: true });
3432
3770
  }
3433
- return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core54.ScrollArea, { children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_core54.Table, { striped: true, highlightOnHover: true, withTableBorder: true, withColumnBorders: true, children: [
3434
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core54.Table.Thead, { children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core54.Table.Tr, { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core54.Table.Th, { children: column.header }, String(column.key))) }) }),
3435
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core54.Table.Tbody, { children: rows.map((row, index) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core54.Table.Tr, { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_core54.Table.Td, { children: column.render ? column.render(row) : String(row[column.key] ?? "") }, String(column.key))) }, getRowKey ? getRowKey(row, index) : index)) })
3771
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_core56.ScrollArea, { children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_core56.Table, { striped: true, highlightOnHover: true, withTableBorder: true, withColumnBorders: true, children: [
3772
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_core56.Table.Thead, { children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_core56.Table.Tr, { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_core56.Table.Th, { children: column.header }, String(column.key))) }) }),
3773
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_core56.Table.Tbody, { children: rows.map((row, index) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_core56.Table.Tr, { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_core56.Table.Td, { children: column.render ? column.render(row) : String(row[column.key] ?? "") }, String(column.key))) }, getRowKey ? getRowKey(row, index) : index)) })
3436
3774
  ] }) });
3437
3775
  }
3438
3776
 
3439
3777
  // src/StatsSection.tsx
3440
- var import_core55 = require("@mantine/core");
3441
- var import_jsx_runtime57 = require("react/jsx-runtime");
3778
+ var import_core57 = require("@mantine/core");
3779
+ var import_jsx_runtime59 = require("react/jsx-runtime");
3442
3780
  function StatsSection({
3443
3781
  title,
3444
3782
  loading = false,
@@ -3450,11 +3788,11 @@ function StatsSection({
3450
3788
  }) {
3451
3789
  let content = children;
3452
3790
  if (error) {
3453
- content = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(StateBlock, { variant: "error", title: "Unable to load statistics", description: error, compact: true });
3791
+ content = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(StateBlock, { variant: "error", title: "Unable to load statistics", description: error, compact: true });
3454
3792
  } else if (loading) {
3455
- content = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(StateBlock, { variant: "loading", title: "Loading statistics", description: "This shared data surface is still synchronizing.", compact: true });
3793
+ content = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(StateBlock, { variant: "loading", title: "Loading statistics", description: "This shared data surface is still synchronizing.", compact: true });
3456
3794
  } else if (belowThreshold) {
3457
- content = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
3795
+ content = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
3458
3796
  StateBlock,
3459
3797
  {
3460
3798
  variant: "not-enough-data",
@@ -3464,10 +3802,10 @@ function StatsSection({
3464
3802
  }
3465
3803
  );
3466
3804
  } else if (placeholder) {
3467
- content = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(PlaceholderPanel, { ...placeholder, mode: "placeholder" });
3805
+ content = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(PlaceholderPanel, { ...placeholder, mode: "placeholder" });
3468
3806
  }
3469
- return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_core55.Stack, { gap: "md", children: [
3470
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_core55.Title, { order: 3, children: title }),
3807
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_core57.Stack, { gap: "md", children: [
3808
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_core57.Title, { order: 3, children: title }),
3471
3809
  content
3472
3810
  ] });
3473
3811
  }
@@ -4793,6 +5131,7 @@ function getGdsMessages(locale) {
4793
5131
  DiscoveryShell,
4794
5132
  DocsCodeBlock,
4795
5133
  DocsPageShell,
5134
+ DocsShell,
4796
5135
  EditorialCard,
4797
5136
  EditorialHero,
4798
5137
  EmptyState,
@@ -4808,11 +5147,14 @@ function getGdsMessages(locale) {
4808
5147
  MediaCard,
4809
5148
  MediaField,
4810
5149
  MetricCard,
5150
+ PROVIDER_IDENTITY_REGISTRY,
4811
5151
  PageHeader,
4812
5152
  PlaceholderPanel,
4813
5153
  PlaybackSurface,
4814
5154
  ProductCard,
4815
5155
  ProgressCard,
5156
+ ProviderIdentityButton,
5157
+ ProviderIdentityButtonGroup,
4816
5158
  PublicBrandFooter,
4817
5159
  PublicFlowShell,
4818
5160
  PublicFoodCard,
@@ -4845,13 +5187,16 @@ function getGdsMessages(locale) {
4845
5187
  fr,
4846
5188
  gdsLocales,
4847
5189
  getGdsMessages,
5190
+ getProviderIdentityLabel,
4848
5191
  getSemanticActionConfig,
4849
5192
  getSemanticActionLabel,
4850
5193
  he,
4851
5194
  hu,
5195
+ isPresentationMode,
4852
5196
  it,
4853
5197
  mergeGdsVocabularyPacks,
4854
5198
  resolveAccentPanelStyles,
4855
5199
  resolveSemanticActionConfig,
5200
+ resolveSurfacePresentationStyles,
4856
5201
  ru
4857
5202
  });