@doneisbetter/gds-core 2.6.6 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-4YTMKBGW.mjs → chunk-NBCULITN.mjs} +303 -87
- package/dist/{chunk-IAP3JU55.mjs → chunk-P7ICTEEB.mjs} +762 -275
- package/dist/client.d.mts +29 -5
- package/dist/client.d.ts +29 -5
- package/dist/client.js +1105 -385
- package/dist/client.mjs +28 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1105 -385
- package/dist/index.mjs +28 -2
- package/dist/{server-CF4gCYQ-.d.mts → server-woziKWie.d.mts} +195 -10
- package/dist/{server-CF4gCYQ-.d.ts → server-woziKWie.d.ts} +195 -10
- package/dist/server.d.mts +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +776 -273
- package/dist/server.mjs +25 -1
- package/package.json +2 -2
package/dist/server.js
CHANGED
|
@@ -25,6 +25,7 @@ __export(server_exports, {
|
|
|
25
25
|
ArticleShell: () => ArticleShell,
|
|
26
26
|
AuthShell: () => AuthShell,
|
|
27
27
|
BrowseSurface: () => BrowseSurface,
|
|
28
|
+
ChartTokenPanel: () => ChartTokenPanel,
|
|
28
29
|
ChoiceChip: () => ChoiceChip,
|
|
29
30
|
ConsumerDashboardGrid: () => ConsumerDashboardGrid,
|
|
30
31
|
ConsumerSection: () => ConsumerSection,
|
|
@@ -35,6 +36,7 @@ __export(server_exports, {
|
|
|
35
36
|
EditorialCard: () => EditorialCard,
|
|
36
37
|
EditorialHero: () => EditorialHero,
|
|
37
38
|
EmptyState: () => EmptyState,
|
|
39
|
+
EvidencePanel: () => EvidencePanel,
|
|
38
40
|
FeatureBand: () => FeatureBand,
|
|
39
41
|
FilterDrawer: () => FilterDrawer,
|
|
40
42
|
FoodMenuSection: () => FoodMenuSection,
|
|
@@ -46,11 +48,15 @@ __export(server_exports, {
|
|
|
46
48
|
MediaCard: () => MediaCard,
|
|
47
49
|
MediaField: () => MediaField,
|
|
48
50
|
MetricCard: () => MetricCard,
|
|
51
|
+
PROVIDER_IDENTITY_REGISTRY: () => PROVIDER_IDENTITY_REGISTRY,
|
|
49
52
|
PageHeader: () => PageHeader,
|
|
53
|
+
PeriodSelector: () => PeriodSelector,
|
|
50
54
|
PlaceholderPanel: () => PlaceholderPanel,
|
|
51
55
|
PlaybackSurface: () => PlaybackSurface,
|
|
52
56
|
ProductCard: () => ProductCard,
|
|
53
57
|
ProgressCard: () => ProgressCard,
|
|
58
|
+
ProviderIdentityButton: () => ProviderIdentityButton,
|
|
59
|
+
ProviderIdentityButtonGroup: () => ProviderIdentityButtonGroup,
|
|
54
60
|
PublicBrandFooter: () => PublicBrandFooter,
|
|
55
61
|
PublicFlowShell: () => PublicFlowShell,
|
|
56
62
|
PublicFoodCard: () => PublicFoodCard,
|
|
@@ -61,6 +67,7 @@ __export(server_exports, {
|
|
|
61
67
|
ReferenceLinkGrid: () => ReferenceLinkGrid,
|
|
62
68
|
ReferenceLocaleNotice: () => ReferenceLocaleNotice,
|
|
63
69
|
ReferenceSection: () => ReferenceSection,
|
|
70
|
+
ReportingSection: () => ReportingSection,
|
|
64
71
|
SectionPanel: () => SectionPanel,
|
|
65
72
|
SimpleDataTable: () => SimpleDataTable,
|
|
66
73
|
SocialAuthButtons: () => SocialAuthButtons,
|
|
@@ -75,14 +82,19 @@ __export(server_exports, {
|
|
|
75
82
|
fr: () => fr,
|
|
76
83
|
gdsLocales: () => gdsLocales,
|
|
77
84
|
getGdsMessages: () => getGdsMessages,
|
|
85
|
+
getProviderIdentityLabel: () => getProviderIdentityLabel,
|
|
86
|
+
getProviderIdentityPolicy: () => getProviderIdentityPolicy,
|
|
78
87
|
getSemanticActionConfig: () => getSemanticActionConfig,
|
|
79
88
|
getSemanticActionLabel: () => getSemanticActionLabel,
|
|
89
|
+
getSupportedProviderIdentityIds: () => getSupportedProviderIdentityIds,
|
|
80
90
|
he: () => he,
|
|
81
91
|
hu: () => hu,
|
|
92
|
+
isPresentationMode: () => isPresentationMode,
|
|
82
93
|
it: () => it,
|
|
83
94
|
mergeGdsVocabularyPacks: () => mergeGdsVocabularyPacks,
|
|
84
95
|
resolveAccentPanelStyles: () => resolveAccentPanelStyles,
|
|
85
96
|
resolveSemanticActionConfig: () => resolveSemanticActionConfig,
|
|
97
|
+
resolveSurfacePresentationStyles: () => resolveSurfacePresentationStyles,
|
|
86
98
|
ru: () => ru
|
|
87
99
|
});
|
|
88
100
|
module.exports = __toCommonJS(server_exports);
|
|
@@ -554,6 +566,51 @@ var import_core9 = require("@mantine/core");
|
|
|
554
566
|
|
|
555
567
|
// src/SectionPanel.tsx
|
|
556
568
|
var import_core8 = require("@mantine/core");
|
|
569
|
+
|
|
570
|
+
// src/SurfacePresentation.ts
|
|
571
|
+
var toCssLength = (value) => {
|
|
572
|
+
if (typeof value === "number") {
|
|
573
|
+
return `${value}px`;
|
|
574
|
+
}
|
|
575
|
+
return value;
|
|
576
|
+
};
|
|
577
|
+
function resolveSurfacePresentationStyles(props) {
|
|
578
|
+
const {
|
|
579
|
+
presentation = "inline",
|
|
580
|
+
minHeight,
|
|
581
|
+
contentAlign,
|
|
582
|
+
contentJustify
|
|
583
|
+
} = props;
|
|
584
|
+
if (presentation === "inline") {
|
|
585
|
+
return {
|
|
586
|
+
minHeight: toCssLength(minHeight)
|
|
587
|
+
};
|
|
588
|
+
}
|
|
589
|
+
const align = contentAlign ?? "center";
|
|
590
|
+
const justify = contentJustify ?? (presentation === "centered" ? "center" : "start");
|
|
591
|
+
if (presentation === "fill") {
|
|
592
|
+
return {
|
|
593
|
+
minHeight: toCssLength(minHeight),
|
|
594
|
+
display: "flex",
|
|
595
|
+
flex: 1,
|
|
596
|
+
flexDirection: "column",
|
|
597
|
+
alignItems: align === "center" ? "center" : "flex-start",
|
|
598
|
+
justifyContent: justify === "center" ? "center" : "flex-start"
|
|
599
|
+
};
|
|
600
|
+
}
|
|
601
|
+
return {
|
|
602
|
+
minHeight: toCssLength(minHeight),
|
|
603
|
+
display: "flex",
|
|
604
|
+
flexDirection: "column",
|
|
605
|
+
alignItems: align === "center" ? "center" : "flex-start",
|
|
606
|
+
justifyContent: justify === "center" ? "center" : "flex-start"
|
|
607
|
+
};
|
|
608
|
+
}
|
|
609
|
+
function isPresentationMode(value) {
|
|
610
|
+
return value === "inline" || value === "centered" || value === "fill";
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
// src/SectionPanel.tsx
|
|
557
614
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
558
615
|
var toneBackgrounds = {
|
|
559
616
|
default: "var(--mantine-color-body)",
|
|
@@ -568,8 +625,18 @@ function SectionPanel({
|
|
|
568
625
|
children,
|
|
569
626
|
tone = "default",
|
|
570
627
|
id,
|
|
571
|
-
divided = true
|
|
628
|
+
divided = true,
|
|
629
|
+
presentation = "inline",
|
|
630
|
+
minHeight,
|
|
631
|
+
contentAlign,
|
|
632
|
+
contentJustify
|
|
572
633
|
}) {
|
|
634
|
+
const bodyLayout = resolveSurfacePresentationStyles({
|
|
635
|
+
presentation,
|
|
636
|
+
minHeight,
|
|
637
|
+
contentAlign,
|
|
638
|
+
contentJustify
|
|
639
|
+
});
|
|
573
640
|
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: [
|
|
574
641
|
title || description || action ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
575
642
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_core8.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
|
|
@@ -581,7 +648,7 @@ function SectionPanel({
|
|
|
581
648
|
] }),
|
|
582
649
|
divided ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_core8.Divider, {}) : null
|
|
583
650
|
] }) : null,
|
|
584
|
-
children
|
|
651
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_core8.Box, { style: bodyLayout, children })
|
|
585
652
|
] }) });
|
|
586
653
|
}
|
|
587
654
|
|
|
@@ -1222,20 +1289,34 @@ function StateBlock({
|
|
|
1222
1289
|
description,
|
|
1223
1290
|
action,
|
|
1224
1291
|
icon,
|
|
1225
|
-
compact = false
|
|
1292
|
+
compact = false,
|
|
1293
|
+
presentation = "inline",
|
|
1294
|
+
minHeight,
|
|
1295
|
+
contentAlign,
|
|
1296
|
+
contentJustify
|
|
1226
1297
|
}) {
|
|
1227
1298
|
const config = variantConfig[variant];
|
|
1299
|
+
const layout = resolveSurfacePresentationStyles({
|
|
1300
|
+
presentation,
|
|
1301
|
+
minHeight,
|
|
1302
|
+
contentAlign,
|
|
1303
|
+
contentJustify
|
|
1304
|
+
});
|
|
1305
|
+
const centeredText = presentation !== "inline" ? (contentAlign ?? "center") === "center" : !compact;
|
|
1306
|
+
const centeredAlign = presentation !== "inline" ? contentAlign ?? "center" : "start";
|
|
1307
|
+
const headingAlign = presentation === "inline" ? compact ? "flex-start" : "center" : centeredAlign === "center" ? "center" : "flex-start";
|
|
1228
1308
|
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1229
1309
|
import_core18.Stack,
|
|
1230
1310
|
{
|
|
1231
|
-
align:
|
|
1232
|
-
justify: "center",
|
|
1311
|
+
align: headingAlign,
|
|
1312
|
+
justify: presentation === "inline" ? "center" : void 0,
|
|
1233
1313
|
gap: "md",
|
|
1234
1314
|
py: compact ? "md" : "xl",
|
|
1235
|
-
ta:
|
|
1315
|
+
ta: centeredText ? "center" : "left",
|
|
1316
|
+
style: layout,
|
|
1236
1317
|
children: [
|
|
1237
1318
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core18.ThemeIcon, { variant: "light", color: config.color, size: compact ? "lg" : "xl", radius: "xl", children: icon ?? config.icon }),
|
|
1238
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core18.Stack, { gap: 6, align:
|
|
1319
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core18.Stack, { gap: 6, align: headingAlign, children: [
|
|
1239
1320
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core18.Title, { order: compact ? 4 : 3, children: title }),
|
|
1240
1321
|
description ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core18.Text, { c: "dimmed", maw: compact ? void 0 : 480, children: description }) : null
|
|
1241
1322
|
] }),
|
|
@@ -1579,10 +1660,14 @@ var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
|
1579
1660
|
function AuthShell({
|
|
1580
1661
|
title,
|
|
1581
1662
|
description,
|
|
1663
|
+
intent = "sign-in",
|
|
1582
1664
|
brand,
|
|
1583
1665
|
headerActions,
|
|
1584
1666
|
footer,
|
|
1585
1667
|
helper,
|
|
1668
|
+
error,
|
|
1669
|
+
guestAction,
|
|
1670
|
+
supportAction,
|
|
1586
1671
|
socialAuth,
|
|
1587
1672
|
dividerLabel = "Or continue with your account",
|
|
1588
1673
|
children
|
|
@@ -1594,12 +1679,18 @@ function AuthShell({
|
|
|
1594
1679
|
] }) : null,
|
|
1595
1680
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Card, { withBorder: true, radius: "lg", padding: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core25.Stack, { gap: "lg", children: [
|
|
1596
1681
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core25.Stack, { gap: "xs", ta: "center", children: [
|
|
1682
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Group, { justify: "center", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Badge, { variant: "light", color: intent === "account-linking" ? "blue" : intent === "guest-entry" ? "gray" : "teal", children: intent.replace("-", " ") }) }),
|
|
1597
1683
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Title, { order: 2, children: title }),
|
|
1598
1684
|
description ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Text, { c: "dimmed", size: "sm", children: description }) : null
|
|
1599
1685
|
] }),
|
|
1686
|
+
error ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Alert, { color: "red", variant: "light", role: "alert", children: error }) : null,
|
|
1600
1687
|
socialAuth ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Box, { children: socialAuth }) : null,
|
|
1601
1688
|
socialAuth ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Divider, { label: dividerLabel, labelPosition: "center" }) : null,
|
|
1602
1689
|
children,
|
|
1690
|
+
guestAction || supportAction ? /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core25.Group, { justify: "center", gap: "sm", children: [
|
|
1691
|
+
guestAction,
|
|
1692
|
+
supportAction
|
|
1693
|
+
] }) : null,
|
|
1603
1694
|
helper ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Text, { size: "sm", c: "dimmed", ta: "center", children: helper }) : null
|
|
1604
1695
|
] }) }),
|
|
1605
1696
|
footer ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core25.Text, { size: "sm", c: "dimmed", ta: "center", children: footer }) : null
|
|
@@ -1607,45 +1698,196 @@ function AuthShell({
|
|
|
1607
1698
|
}
|
|
1608
1699
|
|
|
1609
1700
|
// src/SocialAuthButtons.tsx
|
|
1701
|
+
var import_core27 = require("@mantine/core");
|
|
1702
|
+
|
|
1703
|
+
// src/ProviderIdentityButtons.tsx
|
|
1610
1704
|
var import_core26 = require("@mantine/core");
|
|
1611
1705
|
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
1612
|
-
var
|
|
1613
|
-
google: {
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1706
|
+
var PROVIDER_IDENTITY_REGISTRY = {
|
|
1707
|
+
google: {
|
|
1708
|
+
providerLabel: "Google",
|
|
1709
|
+
markLabel: "G",
|
|
1710
|
+
brandColor: "red"
|
|
1711
|
+
},
|
|
1712
|
+
apple: {
|
|
1713
|
+
providerLabel: "Apple",
|
|
1714
|
+
markLabel: "A",
|
|
1715
|
+
brandColor: "dark"
|
|
1716
|
+
},
|
|
1717
|
+
github: {
|
|
1718
|
+
providerLabel: "GitHub",
|
|
1719
|
+
markLabel: "GH",
|
|
1720
|
+
brandColor: "gray"
|
|
1721
|
+
},
|
|
1722
|
+
facebook: {
|
|
1723
|
+
providerLabel: "Facebook",
|
|
1724
|
+
markLabel: "F",
|
|
1725
|
+
brandColor: "blue"
|
|
1726
|
+
},
|
|
1727
|
+
microsoft: {
|
|
1728
|
+
providerLabel: "Microsoft",
|
|
1729
|
+
markLabel: "M",
|
|
1730
|
+
brandColor: "cyan"
|
|
1731
|
+
},
|
|
1732
|
+
linkedin: {
|
|
1733
|
+
providerLabel: "LinkedIn",
|
|
1734
|
+
markLabel: "in",
|
|
1735
|
+
brandColor: "blue"
|
|
1736
|
+
},
|
|
1737
|
+
discord: {
|
|
1738
|
+
providerLabel: "Discord",
|
|
1739
|
+
markLabel: "D",
|
|
1740
|
+
brandColor: "indigo"
|
|
1741
|
+
},
|
|
1742
|
+
x: {
|
|
1743
|
+
providerLabel: "X",
|
|
1744
|
+
markLabel: "X",
|
|
1745
|
+
brandColor: "dark"
|
|
1746
|
+
},
|
|
1747
|
+
email: {
|
|
1748
|
+
providerLabel: "Email",
|
|
1749
|
+
markLabel: "@",
|
|
1750
|
+
brandColor: "gray"
|
|
1751
|
+
}
|
|
1622
1752
|
};
|
|
1623
|
-
function
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
const
|
|
1753
|
+
function normalizeProviderId(provider) {
|
|
1754
|
+
return (provider ?? "").trim().toLowerCase();
|
|
1755
|
+
}
|
|
1756
|
+
function isSupportedProviderId(provider) {
|
|
1757
|
+
return provider in PROVIDER_IDENTITY_REGISTRY;
|
|
1758
|
+
}
|
|
1759
|
+
function getProviderIdentityMeta(provider) {
|
|
1760
|
+
const normalized = normalizeProviderId(provider);
|
|
1761
|
+
if (isSupportedProviderId(normalized)) {
|
|
1762
|
+
return {
|
|
1763
|
+
id: normalized,
|
|
1764
|
+
supported: true,
|
|
1765
|
+
...PROVIDER_IDENTITY_REGISTRY[normalized]
|
|
1766
|
+
};
|
|
1767
|
+
}
|
|
1768
|
+
return {
|
|
1769
|
+
id: normalized || "provider",
|
|
1770
|
+
supported: false,
|
|
1771
|
+
providerLabel: provider ? provider : "Provider",
|
|
1772
|
+
markLabel: (provider ?? "PR").slice(0, 2).toUpperCase(),
|
|
1773
|
+
brandColor: "gray"
|
|
1774
|
+
};
|
|
1775
|
+
}
|
|
1776
|
+
function resolveProviderLabel(provider, customLabel) {
|
|
1777
|
+
const meta = getProviderIdentityMeta(provider);
|
|
1778
|
+
if (customLabel != null) {
|
|
1779
|
+
return customLabel;
|
|
1780
|
+
}
|
|
1781
|
+
return `Continue with ${meta.providerLabel}`;
|
|
1782
|
+
}
|
|
1783
|
+
function mapVariant(variant = "neutral") {
|
|
1784
|
+
if (variant === "solid") {
|
|
1785
|
+
return "filled";
|
|
1786
|
+
}
|
|
1787
|
+
if (variant === "outline") {
|
|
1788
|
+
return "outline";
|
|
1789
|
+
}
|
|
1790
|
+
return "default";
|
|
1791
|
+
}
|
|
1792
|
+
function getProviderIdentityLabel(provider, fallbackOverride) {
|
|
1793
|
+
return resolveProviderLabel(provider, fallbackOverride);
|
|
1794
|
+
}
|
|
1795
|
+
function getSupportedProviderIdentityIds() {
|
|
1796
|
+
return Object.keys(PROVIDER_IDENTITY_REGISTRY);
|
|
1797
|
+
}
|
|
1798
|
+
function getProviderIdentityPolicy(provider) {
|
|
1799
|
+
const meta = getProviderIdentityMeta(provider);
|
|
1800
|
+
return {
|
|
1801
|
+
id: meta.id,
|
|
1802
|
+
supported: meta.supported,
|
|
1803
|
+
providerLabel: meta.providerLabel,
|
|
1804
|
+
colorAuthority: meta.supported ? "provider" : "gds-neutral",
|
|
1805
|
+
minTouchTargetPx: 44,
|
|
1806
|
+
allowedVariants: ["solid", "outline", "neutral"]
|
|
1807
|
+
};
|
|
1808
|
+
}
|
|
1809
|
+
function ProviderIdentityMark({ provider }) {
|
|
1810
|
+
const meta = getProviderIdentityMeta(provider);
|
|
1811
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1812
|
+
import_core26.ThemeIcon,
|
|
1813
|
+
{
|
|
1814
|
+
variant: "light",
|
|
1815
|
+
color: meta.brandColor,
|
|
1816
|
+
radius: "xl",
|
|
1817
|
+
size: "md",
|
|
1818
|
+
"aria-hidden": "true",
|
|
1819
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Text, { size: "xs", fw: 700, c: "inherit", children: meta.markLabel })
|
|
1820
|
+
}
|
|
1821
|
+
);
|
|
1822
|
+
}
|
|
1823
|
+
function ProviderIdentityButton({
|
|
1824
|
+
provider,
|
|
1825
|
+
label,
|
|
1826
|
+
description,
|
|
1827
|
+
policyNote,
|
|
1828
|
+
error,
|
|
1829
|
+
href,
|
|
1830
|
+
onClick,
|
|
1831
|
+
disabled,
|
|
1832
|
+
loading,
|
|
1833
|
+
tenantDisabledReason,
|
|
1834
|
+
fullWidth = true,
|
|
1835
|
+
size = "md",
|
|
1836
|
+
variant = "neutral",
|
|
1837
|
+
ariaLabel,
|
|
1838
|
+
describedBy,
|
|
1839
|
+
minTouchTargetPx = 44
|
|
1840
|
+
}) {
|
|
1841
|
+
const meta = getProviderIdentityMeta(provider);
|
|
1842
|
+
const buttonLabel = resolveProviderLabel(provider, label);
|
|
1843
|
+
const resolvedDisabled = disabled || Boolean(tenantDisabledReason);
|
|
1844
|
+
const buttonProps = href ? {
|
|
1845
|
+
component: "a",
|
|
1846
|
+
href
|
|
1847
|
+
} : {
|
|
1848
|
+
onClick
|
|
1849
|
+
};
|
|
1631
1850
|
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1632
1851
|
import_core26.Button,
|
|
1633
1852
|
{
|
|
1634
|
-
variant:
|
|
1853
|
+
variant: mapVariant(variant),
|
|
1854
|
+
color: variant === "solid" ? meta.brandColor : void 0,
|
|
1635
1855
|
justify: "space-between",
|
|
1636
|
-
fullWidth
|
|
1637
|
-
size
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1856
|
+
fullWidth,
|
|
1857
|
+
size,
|
|
1858
|
+
"aria-label": ariaLabel ?? (typeof buttonLabel === "string" ? buttonLabel : void 0),
|
|
1859
|
+
"aria-describedby": describedBy,
|
|
1860
|
+
leftSection: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ProviderIdentityMark, { provider }),
|
|
1861
|
+
disabled: resolvedDisabled,
|
|
1862
|
+
loading,
|
|
1863
|
+
styles: { root: { minHeight: minTouchTargetPx } },
|
|
1641
1864
|
...buttonProps,
|
|
1642
1865
|
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_core26.Stack, { gap: 0, align: "flex-start", children: [
|
|
1643
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Text, { inherit: true, children:
|
|
1644
|
-
|
|
1866
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Text, { inherit: true, children: buttonLabel }),
|
|
1867
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Text, { size: "xs", c: "dimmed", lh: 1.2, children: description }) : null,
|
|
1868
|
+
policyNote ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Text, { size: "xs", c: "dimmed", lh: 1.2, children: policyNote }) : null,
|
|
1869
|
+
tenantDisabledReason ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Text, { size: "xs", c: "orange.7", lh: 1.2, children: tenantDisabledReason }) : null,
|
|
1870
|
+
error ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Text, { size: "xs", c: "red.7", lh: 1.2, role: "alert", children: error }) : null
|
|
1645
1871
|
] })
|
|
1646
1872
|
}
|
|
1647
1873
|
);
|
|
1648
1874
|
}
|
|
1875
|
+
function ProviderIdentityButtonGroup({ providers, layout = "stack" }) {
|
|
1876
|
+
if (!providers.length) {
|
|
1877
|
+
return null;
|
|
1878
|
+
}
|
|
1879
|
+
const content = providers.map((entry, index) => {
|
|
1880
|
+
const key = `${normalizeProviderId(String(entry.provider)) || "provider"}-${index}`;
|
|
1881
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ProviderIdentityButton, { ...entry }, key);
|
|
1882
|
+
});
|
|
1883
|
+
if (layout === "grid") {
|
|
1884
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: content });
|
|
1885
|
+
}
|
|
1886
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core26.Stack, { gap: "sm", children: content });
|
|
1887
|
+
}
|
|
1888
|
+
|
|
1889
|
+
// src/SocialAuthButtons.tsx
|
|
1890
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
1649
1891
|
function SocialAuthButtons({
|
|
1650
1892
|
providers,
|
|
1651
1893
|
title = "Continue with a trusted provider",
|
|
@@ -1656,54 +1898,67 @@ function SocialAuthButtons({
|
|
|
1656
1898
|
if (!providers.length) {
|
|
1657
1899
|
return null;
|
|
1658
1900
|
}
|
|
1659
|
-
const
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1901
|
+
const buttons = providers.map((provider) => ({
|
|
1902
|
+
provider: provider.id,
|
|
1903
|
+
label: provider.label,
|
|
1904
|
+
description: provider.description,
|
|
1905
|
+
policyNote: provider.policyNote,
|
|
1906
|
+
error: provider.error,
|
|
1907
|
+
href: provider.href,
|
|
1908
|
+
onClick: provider.onClick,
|
|
1909
|
+
disabled: provider.disabled,
|
|
1910
|
+
loading: provider.loading,
|
|
1911
|
+
tenantDisabledReason: provider.tenantDisabledReason,
|
|
1912
|
+
size: provider.size ?? (compact ? "sm" : "md"),
|
|
1913
|
+
variant: provider.variant
|
|
1914
|
+
}));
|
|
1915
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core27.Stack, { gap: "md", children: [
|
|
1916
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core27.Stack, { gap: 4, ta: "center", children: [
|
|
1917
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core27.Group, { justify: "center", gap: "xs", children: [
|
|
1918
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(GdsIcons.Login, { size: "1rem" }),
|
|
1919
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core27.Text, { fw: 600, children: title })
|
|
1665
1920
|
] }),
|
|
1666
|
-
description ? /* @__PURE__ */ (0,
|
|
1921
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core27.Text, { size: "sm", c: "dimmed", children: description }) : null
|
|
1667
1922
|
] }),
|
|
1668
|
-
/* @__PURE__ */ (0,
|
|
1669
|
-
|
|
1923
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core27.Divider, {}),
|
|
1924
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(ProviderIdentityButtonGroup, { providers: buttons, layout })
|
|
1670
1925
|
] });
|
|
1671
1926
|
}
|
|
1672
1927
|
|
|
1673
1928
|
// src/ArticleShell.tsx
|
|
1674
|
-
var
|
|
1675
|
-
var
|
|
1929
|
+
var import_core28 = require("@mantine/core");
|
|
1930
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
1676
1931
|
function ArticleShell({ eyebrow, title, lead, meta, sideRail, children }) {
|
|
1677
|
-
return /* @__PURE__ */ (0,
|
|
1678
|
-
/* @__PURE__ */ (0,
|
|
1679
|
-
/* @__PURE__ */ (0,
|
|
1680
|
-
eyebrow ? /* @__PURE__ */ (0,
|
|
1681
|
-
/* @__PURE__ */ (0,
|
|
1682
|
-
lead ? /* @__PURE__ */ (0,
|
|
1683
|
-
meta ? /* @__PURE__ */ (0,
|
|
1932
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Container, { size: "lg", py: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_core28.Group, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
|
|
1933
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_core28.Stack, { gap: "lg", maw: 760, flex: 1, children: [
|
|
1934
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_core28.Stack, { gap: "sm", children: [
|
|
1935
|
+
eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Text, { size: "sm", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
|
|
1936
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Title, { order: 1, children: title }),
|
|
1937
|
+
lead ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Text, { size: "lg", c: "dimmed", children: lead }) : null,
|
|
1938
|
+
meta ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Group, { gap: "md", children: meta }) : null
|
|
1684
1939
|
] }),
|
|
1685
|
-
/* @__PURE__ */ (0,
|
|
1940
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Stack, { gap: "md", children })
|
|
1686
1941
|
] }),
|
|
1687
|
-
sideRail ? /* @__PURE__ */ (0,
|
|
1942
|
+
sideRail ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Stack, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
|
|
1688
1943
|
] }) });
|
|
1689
1944
|
}
|
|
1690
1945
|
|
|
1691
1946
|
// src/CtaButtonGroup.tsx
|
|
1692
|
-
var
|
|
1693
|
-
var
|
|
1947
|
+
var import_core29 = require("@mantine/core");
|
|
1948
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1694
1949
|
function CtaButtonGroup({ primary, secondary, tertiary }) {
|
|
1695
|
-
return /* @__PURE__ */ (0,
|
|
1696
|
-
/* @__PURE__ */ (0,
|
|
1697
|
-
/* @__PURE__ */ (0,
|
|
1698
|
-
secondary ? /* @__PURE__ */ (0,
|
|
1950
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Stack, { gap: "sm", children: [
|
|
1951
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Group, { gap: "sm", align: "stretch", children: [
|
|
1952
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { children: primary }),
|
|
1953
|
+
secondary ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { children: secondary }) : null
|
|
1699
1954
|
] }),
|
|
1700
|
-
tertiary ? /* @__PURE__ */ (0,
|
|
1955
|
+
tertiary ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { children: tertiary }) : null
|
|
1701
1956
|
] });
|
|
1702
1957
|
}
|
|
1703
1958
|
|
|
1704
1959
|
// src/DocsPageShell.tsx
|
|
1705
|
-
var
|
|
1706
|
-
var
|
|
1960
|
+
var import_core30 = require("@mantine/core");
|
|
1961
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
1707
1962
|
function DocsPageShell({
|
|
1708
1963
|
breadcrumbs = [],
|
|
1709
1964
|
title,
|
|
@@ -1714,27 +1969,27 @@ function DocsPageShell({
|
|
|
1714
1969
|
footerNext,
|
|
1715
1970
|
children
|
|
1716
1971
|
}) {
|
|
1717
|
-
return /* @__PURE__ */ (0,
|
|
1718
|
-
/* @__PURE__ */ (0,
|
|
1719
|
-
breadcrumbs.length ? /* @__PURE__ */ (0,
|
|
1720
|
-
(crumb) => crumb.href ? /* @__PURE__ */ (0,
|
|
1972
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Container, { fluid: true, py: "xl", px: { base: "md", md: "lg", lg: "xl" }, w: "100%", maw: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.Group, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
|
|
1973
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.Stack, { component: "article", gap: "lg", flex: 1, miw: 0, children: [
|
|
1974
|
+
breadcrumbs.length ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Breadcrumbs, { children: breadcrumbs.map(
|
|
1975
|
+
(crumb) => crumb.href ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Anchor, { href: crumb.href, children: crumb.label }, `${crumb.label}-${crumb.href}`) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Text, { children: crumb.label }, crumb.label)
|
|
1721
1976
|
) }) : null,
|
|
1722
|
-
/* @__PURE__ */ (0,
|
|
1723
|
-
eyebrow ? /* @__PURE__ */ (0,
|
|
1724
|
-
/* @__PURE__ */ (0,
|
|
1725
|
-
lead ? /* @__PURE__ */ (0,
|
|
1726
|
-
meta ? /* @__PURE__ */ (0,
|
|
1977
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.Stack, { gap: "sm", children: [
|
|
1978
|
+
eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Text, { size: "sm", fw: 700, c: "dimmed", children: eyebrow }) : null,
|
|
1979
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Title, { order: 1, children: title }),
|
|
1980
|
+
lead ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Text, { size: "lg", c: "dimmed", children: lead }) : null,
|
|
1981
|
+
meta ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Group, { gap: "md", children: meta }) : null
|
|
1727
1982
|
] }),
|
|
1728
|
-
/* @__PURE__ */ (0,
|
|
1729
|
-
footerNext ? /* @__PURE__ */ (0,
|
|
1983
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Stack, { gap: "md", children }),
|
|
1984
|
+
footerNext ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Anchor, { href: footerNext.href, fw: 600, children: footerNext.label }) : null
|
|
1730
1985
|
] }),
|
|
1731
|
-
sideRail ? /* @__PURE__ */ (0,
|
|
1986
|
+
sideRail ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Stack, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
|
|
1732
1987
|
] }) });
|
|
1733
1988
|
}
|
|
1734
1989
|
|
|
1735
1990
|
// src/EditorialHero.tsx
|
|
1736
|
-
var
|
|
1737
|
-
var
|
|
1991
|
+
var import_core31 = require("@mantine/core");
|
|
1992
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
1738
1993
|
function resolveActionVariant(action, index, seenPrimary) {
|
|
1739
1994
|
const requested = action.variant ?? (index === 0 ? "primary" : "secondary");
|
|
1740
1995
|
if (requested === "primary" && !seenPrimary) {
|
|
@@ -1746,8 +2001,8 @@ function resolveActionVariant(action, index, seenPrimary) {
|
|
|
1746
2001
|
return { variant: "default", seenPrimary };
|
|
1747
2002
|
}
|
|
1748
2003
|
function HeroAction({ action, variant }) {
|
|
1749
|
-
const content = /* @__PURE__ */ (0,
|
|
1750
|
-
|
|
2004
|
+
const content = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2005
|
+
import_core31.Anchor,
|
|
1751
2006
|
{
|
|
1752
2007
|
href: action.href,
|
|
1753
2008
|
onClick: action.onClick,
|
|
@@ -1771,8 +2026,8 @@ function HeroAction({ action, variant }) {
|
|
|
1771
2026
|
}
|
|
1772
2027
|
);
|
|
1773
2028
|
if (!action.href) {
|
|
1774
|
-
return /* @__PURE__ */ (0,
|
|
1775
|
-
|
|
2029
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2030
|
+
import_core31.Box,
|
|
1776
2031
|
{
|
|
1777
2032
|
component: "button",
|
|
1778
2033
|
type: "button",
|
|
@@ -1799,30 +2054,30 @@ function HeroAction({ action, variant }) {
|
|
|
1799
2054
|
return content;
|
|
1800
2055
|
}
|
|
1801
2056
|
function LoadingHero({ compact }) {
|
|
1802
|
-
return /* @__PURE__ */ (0,
|
|
1803
|
-
/* @__PURE__ */ (0,
|
|
1804
|
-
/* @__PURE__ */ (0,
|
|
1805
|
-
/* @__PURE__ */ (0,
|
|
1806
|
-
/* @__PURE__ */ (0,
|
|
1807
|
-
/* @__PURE__ */ (0,
|
|
1808
|
-
/* @__PURE__ */ (0,
|
|
1809
|
-
/* @__PURE__ */ (0,
|
|
1810
|
-
/* @__PURE__ */ (0,
|
|
2057
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Paper, { withBorder: true, radius: "xl", p: compact ? "lg" : "xl", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Grid, { gutter: compact ? "lg" : "xl", align: "center", children: [
|
|
2058
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Stack, { gap: "md", children: [
|
|
2059
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { height: 16, width: 96, radius: "xl" }),
|
|
2060
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { height: 48, width: "90%", radius: "md" }),
|
|
2061
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { height: 18, width: "100%", radius: "md" }),
|
|
2062
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { height: 18, width: "82%", radius: "md" }),
|
|
2063
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Group, { children: [
|
|
2064
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { height: 40, width: 140, radius: "md" }),
|
|
2065
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { height: 40, width: 140, radius: "md" })
|
|
1811
2066
|
] })
|
|
1812
2067
|
] }) }),
|
|
1813
|
-
/* @__PURE__ */ (0,
|
|
2068
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Grid.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.AspectRatio, { ratio: 16 / 11, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Skeleton, { radius: "lg" }) }) })
|
|
1814
2069
|
] }) });
|
|
1815
2070
|
}
|
|
1816
2071
|
function MediaFallback() {
|
|
1817
|
-
return /* @__PURE__ */ (0,
|
|
1818
|
-
|
|
2072
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.AspectRatio, { ratio: 16 / 11, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2073
|
+
import_core31.ThemeIcon,
|
|
1819
2074
|
{
|
|
1820
2075
|
size: "100%",
|
|
1821
2076
|
radius: "lg",
|
|
1822
2077
|
color: "gray",
|
|
1823
2078
|
variant: "light",
|
|
1824
2079
|
"aria-label": "Hero media is unavailable",
|
|
1825
|
-
children: /* @__PURE__ */ (0,
|
|
2080
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GdsIcons.Gallery, { size: "2.5rem" })
|
|
1826
2081
|
}
|
|
1827
2082
|
) });
|
|
1828
2083
|
}
|
|
@@ -1842,8 +2097,8 @@ function MediaFrame({
|
|
|
1842
2097
|
} else if (mediaFade === "soft-start") {
|
|
1843
2098
|
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%)";
|
|
1844
2099
|
}
|
|
1845
|
-
return /* @__PURE__ */ (0,
|
|
1846
|
-
|
|
2100
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
2101
|
+
import_core31.Box,
|
|
1847
2102
|
{
|
|
1848
2103
|
component: "figure",
|
|
1849
2104
|
m: 0,
|
|
@@ -1856,9 +2111,9 @@ function MediaFrame({
|
|
|
1856
2111
|
},
|
|
1857
2112
|
"aria-label": mediaAlt,
|
|
1858
2113
|
children: [
|
|
1859
|
-
media ?? /* @__PURE__ */ (0,
|
|
1860
|
-
media && overlayBackground ? /* @__PURE__ */ (0,
|
|
1861
|
-
|
|
2114
|
+
media ?? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(MediaFallback, {}),
|
|
2115
|
+
media && overlayBackground ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2116
|
+
import_core31.Box,
|
|
1862
2117
|
{
|
|
1863
2118
|
"aria-hidden": true,
|
|
1864
2119
|
style: {
|
|
@@ -1891,7 +2146,7 @@ function EditorialHero({
|
|
|
1891
2146
|
classNames
|
|
1892
2147
|
}) {
|
|
1893
2148
|
if (loading) {
|
|
1894
|
-
return /* @__PURE__ */ (0,
|
|
2149
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(LoadingHero, { compact });
|
|
1895
2150
|
}
|
|
1896
2151
|
const stackAlign = align === "center" ? "center" : "flex-start";
|
|
1897
2152
|
const textAlign = align === "center" ? "center" : "left";
|
|
@@ -1899,15 +2154,15 @@ function EditorialHero({
|
|
|
1899
2154
|
const renderedActions = actions.slice(0, 3).map((action, index) => {
|
|
1900
2155
|
const resolved = resolveActionVariant(action, index, seenPrimary);
|
|
1901
2156
|
seenPrimary = resolved.seenPrimary;
|
|
1902
|
-
return /* @__PURE__ */ (0,
|
|
2157
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(HeroAction, { action, variant: resolved.variant }, `${action.label}-${index}`);
|
|
1903
2158
|
});
|
|
1904
|
-
const textSlot = /* @__PURE__ */ (0,
|
|
1905
|
-
/* @__PURE__ */ (0,
|
|
1906
|
-
eyebrow ? /* @__PURE__ */ (0,
|
|
1907
|
-
/* @__PURE__ */ (0,
|
|
1908
|
-
description ? /* @__PURE__ */ (0,
|
|
2159
|
+
const textSlot = /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Stack, { gap: compact ? "md" : "lg", justify: "center", h: "100%", className: classNames?.content, children: [
|
|
2160
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Stack, { gap: "sm", align: stackAlign, children: [
|
|
2161
|
+
eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Text, { size: "sm", fw: 700, c: "dimmed", ta: textAlign, children: eyebrow }) : null,
|
|
2162
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Title, { order: 1, maw: 760, ta: textAlign, children: title }),
|
|
2163
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Text, { size: compact ? "md" : "lg", c: "dimmed", maw: 720, ta: textAlign, children: description }) : null
|
|
1909
2164
|
] }),
|
|
1910
|
-
renderedActions.length ? /* @__PURE__ */ (0,
|
|
2165
|
+
renderedActions.length ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Box, { className: classNames?.actions, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
1911
2166
|
CtaButtonGroup,
|
|
1912
2167
|
{
|
|
1913
2168
|
primary: renderedActions[0],
|
|
@@ -1915,8 +2170,8 @@ function EditorialHero({
|
|
|
1915
2170
|
tertiary: renderedActions[2]
|
|
1916
2171
|
}
|
|
1917
2172
|
) }) : null,
|
|
1918
|
-
meta.length ? /* @__PURE__ */ (0,
|
|
1919
|
-
|
|
2173
|
+
meta.length ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Group, { gap: "sm", wrap: "wrap", "aria-label": "Supporting details", className: classNames?.meta, children: meta.map((item) => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
2174
|
+
import_core31.Group,
|
|
1920
2175
|
{
|
|
1921
2176
|
gap: 6,
|
|
1922
2177
|
px: "sm",
|
|
@@ -1927,17 +2182,17 @@ function EditorialHero({
|
|
|
1927
2182
|
},
|
|
1928
2183
|
children: [
|
|
1929
2184
|
item.icon,
|
|
1930
|
-
/* @__PURE__ */ (0,
|
|
2185
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Text, { size: "sm", c: "dimmed", children: item.label })
|
|
1931
2186
|
]
|
|
1932
2187
|
},
|
|
1933
2188
|
item.id
|
|
1934
2189
|
)) }) : null
|
|
1935
2190
|
] });
|
|
1936
|
-
const mediaSlot = error ? /* @__PURE__ */ (0,
|
|
1937
|
-
const textCol = /* @__PURE__ */ (0,
|
|
1938
|
-
const mediaCol = /* @__PURE__ */ (0,
|
|
1939
|
-
return /* @__PURE__ */ (0,
|
|
1940
|
-
|
|
2191
|
+
const mediaSlot = error ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(AccentPanel, { tone: "red", variant: "soft-outline", title: "Media unavailable", children: error }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(MediaFrame, { media, mediaAlt, mediaFade, className: classNames?.media });
|
|
2192
|
+
const textCol = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Grid.Col, { span: { base: 12, md: 6 }, order: { base: 1, md: mediaPosition === "left" ? 2 : 1 }, children: textSlot });
|
|
2193
|
+
const mediaCol = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Grid.Col, { span: { base: 12, md: 6 }, order: { base: 2, md: mediaPosition === "left" ? 1 : 2 }, children: mediaSlot });
|
|
2194
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2195
|
+
import_core31.Paper,
|
|
1941
2196
|
{
|
|
1942
2197
|
component: "section",
|
|
1943
2198
|
withBorder: true,
|
|
@@ -1945,7 +2200,7 @@ function EditorialHero({
|
|
|
1945
2200
|
p: compact ? "lg" : "xl",
|
|
1946
2201
|
className: classNames?.root,
|
|
1947
2202
|
style: surfaceVariant === "flat-public" ? { boxShadow: "none" } : void 0,
|
|
1948
|
-
children: /* @__PURE__ */ (0,
|
|
2203
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Grid, { gutter: compact ? "lg" : "xl", align: "center", children: [
|
|
1949
2204
|
textCol,
|
|
1950
2205
|
mediaCol
|
|
1951
2206
|
] })
|
|
@@ -1954,19 +2209,19 @@ function EditorialHero({
|
|
|
1954
2209
|
}
|
|
1955
2210
|
|
|
1956
2211
|
// src/FeatureBand.tsx
|
|
1957
|
-
var
|
|
1958
|
-
var
|
|
2212
|
+
var import_core32 = require("@mantine/core");
|
|
2213
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
1959
2214
|
function FeatureBandSkeleton({
|
|
1960
2215
|
columns = 3,
|
|
1961
2216
|
bordered = true,
|
|
1962
2217
|
variant = "default"
|
|
1963
2218
|
}) {
|
|
1964
|
-
return /* @__PURE__ */ (0,
|
|
1965
|
-
/* @__PURE__ */ (0,
|
|
1966
|
-
/* @__PURE__ */ (0,
|
|
1967
|
-
/* @__PURE__ */ (0,
|
|
1968
|
-
/* @__PURE__ */ (0,
|
|
1969
|
-
/* @__PURE__ */ (0,
|
|
2219
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.SimpleGrid, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: Array.from({ length: columns }).map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Paper, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core32.Stack, { gap: "md", children: [
|
|
2220
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Skeleton, { height: variant === "process" ? 28 : 42, width: variant === "process" ? 72 : 42, radius: "xl" }),
|
|
2221
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core32.Stack, { gap: "xs", children: [
|
|
2222
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Skeleton, { height: 20, width: "75%", radius: "md" }),
|
|
2223
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Skeleton, { height: 14, width: "100%", radius: "md" }),
|
|
2224
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Skeleton, { height: 14, width: "82%", radius: "md" })
|
|
1970
2225
|
] })
|
|
1971
2226
|
] }) }, index)) });
|
|
1972
2227
|
}
|
|
@@ -1979,10 +2234,10 @@ function FeatureBand({
|
|
|
1979
2234
|
variant = "default"
|
|
1980
2235
|
}) {
|
|
1981
2236
|
if (loading) {
|
|
1982
|
-
return /* @__PURE__ */ (0,
|
|
2237
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(FeatureBandSkeleton, { columns, bordered, variant });
|
|
1983
2238
|
}
|
|
1984
2239
|
if (!items.length) {
|
|
1985
|
-
return emptyState ? /* @__PURE__ */ (0,
|
|
2240
|
+
return emptyState ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_jsx_runtime34.Fragment, { children: emptyState }) : /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
1986
2241
|
EmptyState,
|
|
1987
2242
|
{
|
|
1988
2243
|
title: "No supporting details available",
|
|
@@ -1990,9 +2245,9 @@ function FeatureBand({
|
|
|
1990
2245
|
}
|
|
1991
2246
|
);
|
|
1992
2247
|
}
|
|
1993
|
-
return /* @__PURE__ */ (0,
|
|
1994
|
-
variant === "process" ? /* @__PURE__ */ (0,
|
|
1995
|
-
|
|
2248
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Box, { component: "section", "aria-label": "Supporting features", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.SimpleGrid, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Paper, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core32.Stack, { gap: "md", children: [
|
|
2249
|
+
variant === "process" ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
2250
|
+
import_core32.Text,
|
|
1996
2251
|
{
|
|
1997
2252
|
fw: 800,
|
|
1998
2253
|
size: "sm",
|
|
@@ -2004,31 +2259,31 @@ function FeatureBand({
|
|
|
2004
2259
|
},
|
|
2005
2260
|
children: item.stepLabel ?? `Step ${index + 1}`
|
|
2006
2261
|
}
|
|
2007
|
-
) }) : item.media ? item.media : item.icon ? /* @__PURE__ */ (0,
|
|
2008
|
-
/* @__PURE__ */ (0,
|
|
2009
|
-
/* @__PURE__ */ (0,
|
|
2010
|
-
item.description ? /* @__PURE__ */ (0,
|
|
2011
|
-
item.meta ? /* @__PURE__ */ (0,
|
|
2262
|
+
) }) : item.media ? item.media : item.icon ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.ThemeIcon, { size: "xl", radius: "xl", variant: "light", color: "violet", children: item.icon }) }) : /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.ThemeIcon, { size: "xl", radius: "xl", variant: "light", color: "gray", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(GdsIcons.Info, { size: "1.25rem" }) }) }),
|
|
2263
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core32.Stack, { gap: "xs", children: [
|
|
2264
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Title, { order: 4, children: item.title }),
|
|
2265
|
+
item.description ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Text, { c: "dimmed", children: item.description }) : null,
|
|
2266
|
+
item.meta ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Text, { size: "sm", c: "dimmed", children: item.meta }) : null
|
|
2012
2267
|
] })
|
|
2013
2268
|
] }) }, item.id)) }) });
|
|
2014
2269
|
}
|
|
2015
2270
|
|
|
2016
2271
|
// src/MapPanel.tsx
|
|
2017
|
-
var
|
|
2272
|
+
var import_core34 = require("@mantine/core");
|
|
2018
2273
|
|
|
2019
2274
|
// src/ActionBar.tsx
|
|
2020
|
-
var
|
|
2021
|
-
var
|
|
2275
|
+
var import_core33 = require("@mantine/core");
|
|
2276
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
2022
2277
|
function renderSemanticAction(action, slot, vocabularyPacks) {
|
|
2023
2278
|
const { action: actionId, variant, ariaLabel, ...props } = action;
|
|
2024
2279
|
const fallbackVariant = slot === "primary" ? "filled" : slot === "secondary" ? "default" : "subtle";
|
|
2025
2280
|
const config = resolveSemanticActionConfig(actionId, vocabularyPacks);
|
|
2026
2281
|
const Icon = config.icon;
|
|
2027
2282
|
const label = getSemanticActionLabel(actionId, void 0, vocabularyPacks);
|
|
2028
|
-
return /* @__PURE__ */ (0,
|
|
2029
|
-
|
|
2283
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2284
|
+
import_core33.Button,
|
|
2030
2285
|
{
|
|
2031
|
-
leftSection: /* @__PURE__ */ (0,
|
|
2286
|
+
leftSection: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Icon, { size: "1rem", stroke: 1.75 }),
|
|
2032
2287
|
"aria-label": ariaLabel ?? label,
|
|
2033
2288
|
variant: variant ?? fallbackVariant,
|
|
2034
2289
|
...props,
|
|
@@ -2045,23 +2300,23 @@ function ActionBar({
|
|
|
2045
2300
|
gap = "sm",
|
|
2046
2301
|
vocabularyPacks = []
|
|
2047
2302
|
}) {
|
|
2048
|
-
return /* @__PURE__ */ (0,
|
|
2049
|
-
/* @__PURE__ */ (0,
|
|
2303
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Stack, { gap, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Group, { justify: "space-between", align: "center", gap, wrap: "wrap", children: [
|
|
2304
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Group, { gap, wrap: "wrap", children: [
|
|
2050
2305
|
secondary.map((action) => renderSemanticAction(action, "secondary", vocabularyPacks)),
|
|
2051
2306
|
tertiary.map((action) => renderSemanticAction(action, "tertiary", vocabularyPacks))
|
|
2052
2307
|
] }),
|
|
2053
|
-
/* @__PURE__ */ (0,
|
|
2308
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Group, { gap, wrap: "wrap", justify: "flex-end", style: { marginInlineStart: "auto" }, children: [
|
|
2054
2309
|
iconOnly.map(({ action, ariaLabel, ...props }) => {
|
|
2055
2310
|
const config = resolveSemanticActionConfig(action, vocabularyPacks);
|
|
2056
2311
|
const Icon = config.icon;
|
|
2057
|
-
return /* @__PURE__ */ (0,
|
|
2058
|
-
|
|
2312
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2313
|
+
import_core33.ActionIcon,
|
|
2059
2314
|
{
|
|
2060
2315
|
variant: "subtle",
|
|
2061
2316
|
size: "lg",
|
|
2062
2317
|
"aria-label": ariaLabel ?? getSemanticActionLabel(action, void 0, vocabularyPacks),
|
|
2063
2318
|
...props,
|
|
2064
|
-
children: /* @__PURE__ */ (0,
|
|
2319
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Icon, { size: "1rem", stroke: 1.75 })
|
|
2065
2320
|
},
|
|
2066
2321
|
`icon-${action}`
|
|
2067
2322
|
);
|
|
@@ -2072,7 +2327,7 @@ function ActionBar({
|
|
|
2072
2327
|
}
|
|
2073
2328
|
|
|
2074
2329
|
// src/MapPanel.tsx
|
|
2075
|
-
var
|
|
2330
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
2076
2331
|
function MapPanel({
|
|
2077
2332
|
title,
|
|
2078
2333
|
description,
|
|
@@ -2088,7 +2343,7 @@ function MapPanel({
|
|
|
2088
2343
|
}) {
|
|
2089
2344
|
let body;
|
|
2090
2345
|
if (loading) {
|
|
2091
|
-
body = /* @__PURE__ */ (0,
|
|
2346
|
+
body = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
2092
2347
|
StateBlock,
|
|
2093
2348
|
{
|
|
2094
2349
|
variant: "loading",
|
|
@@ -2098,9 +2353,9 @@ function MapPanel({
|
|
|
2098
2353
|
}
|
|
2099
2354
|
);
|
|
2100
2355
|
} else if (error) {
|
|
2101
|
-
body = /* @__PURE__ */ (0,
|
|
2356
|
+
body = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(StateBlock, { variant: "error", title: "Map unavailable", description: error, compact: true });
|
|
2102
2357
|
} else if (!iframeSrc && !renderMap) {
|
|
2103
|
-
body = /* @__PURE__ */ (0,
|
|
2358
|
+
body = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
2104
2359
|
StateBlock,
|
|
2105
2360
|
{
|
|
2106
2361
|
variant: "empty",
|
|
@@ -2110,9 +2365,9 @@ function MapPanel({
|
|
|
2110
2365
|
}
|
|
2111
2366
|
);
|
|
2112
2367
|
} else if (renderMap) {
|
|
2113
|
-
body = /* @__PURE__ */ (0,
|
|
2368
|
+
body = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Box, { style: { minHeight }, children: renderMap() });
|
|
2114
2369
|
} else {
|
|
2115
|
-
body = /* @__PURE__ */ (0,
|
|
2370
|
+
body = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.AspectRatio, { ratio: 16 / 9, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
2116
2371
|
"iframe",
|
|
2117
2372
|
{
|
|
2118
2373
|
src: iframeSrc,
|
|
@@ -2124,21 +2379,21 @@ function MapPanel({
|
|
|
2124
2379
|
}
|
|
2125
2380
|
) });
|
|
2126
2381
|
}
|
|
2127
|
-
return /* @__PURE__ */ (0,
|
|
2128
|
-
/* @__PURE__ */ (0,
|
|
2129
|
-
/* @__PURE__ */ (0,
|
|
2130
|
-
/* @__PURE__ */ (0,
|
|
2131
|
-
description ? /* @__PURE__ */ (0,
|
|
2382
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Stack, { gap: "md", children: [
|
|
2383
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
|
|
2384
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Stack, { gap: 4, children: [
|
|
2385
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Title, { order: 3, children: title }),
|
|
2386
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Text, { size: "sm", c: "dimmed", children: description }) : null
|
|
2132
2387
|
] }),
|
|
2133
|
-
actions ? /* @__PURE__ */ (0,
|
|
2388
|
+
actions ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ActionBar, { ...actions }) : null
|
|
2134
2389
|
] }),
|
|
2135
2390
|
body
|
|
2136
2391
|
] }) });
|
|
2137
2392
|
}
|
|
2138
2393
|
|
|
2139
2394
|
// src/PublicFlowShell.tsx
|
|
2140
|
-
var
|
|
2141
|
-
var
|
|
2395
|
+
var import_core35 = require("@mantine/core");
|
|
2396
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
2142
2397
|
var stageTone = {
|
|
2143
2398
|
idle: { label: "Idle", color: "gray" },
|
|
2144
2399
|
loading: { label: "Loading", color: "blue" },
|
|
@@ -2190,7 +2445,7 @@ function PublicFlowShell({
|
|
|
2190
2445
|
const actionBar = toActionBar(stage.actions);
|
|
2191
2446
|
let body = stage.body;
|
|
2192
2447
|
if (stage.status === "loading") {
|
|
2193
|
-
body = /* @__PURE__ */ (0,
|
|
2448
|
+
body = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
2194
2449
|
StateBlock,
|
|
2195
2450
|
{
|
|
2196
2451
|
variant: "loading",
|
|
@@ -2199,7 +2454,7 @@ function PublicFlowShell({
|
|
|
2199
2454
|
}
|
|
2200
2455
|
);
|
|
2201
2456
|
} else if (stage.status === "error") {
|
|
2202
|
-
body = errorState ?? /* @__PURE__ */ (0,
|
|
2457
|
+
body = errorState ?? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
2203
2458
|
StateBlock,
|
|
2204
2459
|
{
|
|
2205
2460
|
variant: "error",
|
|
@@ -2208,7 +2463,7 @@ function PublicFlowShell({
|
|
|
2208
2463
|
}
|
|
2209
2464
|
);
|
|
2210
2465
|
} else if (!stage.body && !hardwareSurface) {
|
|
2211
|
-
body = emptyState ?? /* @__PURE__ */ (0,
|
|
2466
|
+
body = emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
2212
2467
|
EmptyState,
|
|
2213
2468
|
{
|
|
2214
2469
|
title: "No stage content available",
|
|
@@ -2216,29 +2471,29 @@ function PublicFlowShell({
|
|
|
2216
2471
|
}
|
|
2217
2472
|
);
|
|
2218
2473
|
}
|
|
2219
|
-
return /* @__PURE__ */ (0,
|
|
2220
|
-
/* @__PURE__ */ (0,
|
|
2221
|
-
/* @__PURE__ */ (0,
|
|
2222
|
-
eyebrow ? /* @__PURE__ */ (0,
|
|
2223
|
-
/* @__PURE__ */ (0,
|
|
2224
|
-
/* @__PURE__ */ (0,
|
|
2225
|
-
/* @__PURE__ */ (0,
|
|
2474
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: "lg", children: [
|
|
2475
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
|
|
2476
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: 4, children: [
|
|
2477
|
+
eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { size: "xs", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
|
|
2478
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Group, { gap: "sm", wrap: "wrap", children: [
|
|
2479
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Title, { order: 2, children: stage.title }),
|
|
2480
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Badge, { variant: "light", color: tone.color, children: tone.label })
|
|
2226
2481
|
] }),
|
|
2227
|
-
stage.description ? /* @__PURE__ */ (0,
|
|
2482
|
+
stage.description ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { size: "sm", c: "dimmed", children: stage.description }) : null
|
|
2228
2483
|
] }),
|
|
2229
2484
|
exitAction
|
|
2230
2485
|
] }),
|
|
2231
|
-
stage.notice ? /* @__PURE__ */ (0,
|
|
2486
|
+
stage.notice ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Text, { size: "sm", c: "dimmed", children: stage.notice }) : null,
|
|
2232
2487
|
body,
|
|
2233
2488
|
hardwareSurface,
|
|
2234
2489
|
stage.aside,
|
|
2235
|
-
actionBar ? /* @__PURE__ */ (0,
|
|
2490
|
+
actionBar ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ActionBar, { ...actionBar }) : null
|
|
2236
2491
|
] }) });
|
|
2237
2492
|
}
|
|
2238
2493
|
|
|
2239
2494
|
// src/PlaybackSurface.tsx
|
|
2240
|
-
var
|
|
2241
|
-
var
|
|
2495
|
+
var import_core36 = require("@mantine/core");
|
|
2496
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
2242
2497
|
var stateTone = {
|
|
2243
2498
|
loading: { label: "Loading", color: "blue" },
|
|
2244
2499
|
ready: { label: "Ready", color: "teal" },
|
|
@@ -2261,7 +2516,7 @@ function PlaybackSurface({
|
|
|
2261
2516
|
const tone = stateTone[state];
|
|
2262
2517
|
let content;
|
|
2263
2518
|
if (state === "loading") {
|
|
2264
|
-
content = /* @__PURE__ */ (0,
|
|
2519
|
+
content = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
2265
2520
|
StateBlock,
|
|
2266
2521
|
{
|
|
2267
2522
|
variant: "loading",
|
|
@@ -2270,7 +2525,7 @@ function PlaybackSurface({
|
|
|
2270
2525
|
}
|
|
2271
2526
|
);
|
|
2272
2527
|
} else if (state === "empty") {
|
|
2273
|
-
content = emptyState ?? /* @__PURE__ */ (0,
|
|
2528
|
+
content = emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
2274
2529
|
EmptyState,
|
|
2275
2530
|
{
|
|
2276
2531
|
title: "No playback content available",
|
|
@@ -2278,7 +2533,7 @@ function PlaybackSurface({
|
|
|
2278
2533
|
}
|
|
2279
2534
|
);
|
|
2280
2535
|
} else if (state === "error") {
|
|
2281
|
-
content = errorState ?? /* @__PURE__ */ (0,
|
|
2536
|
+
content = errorState ?? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
2282
2537
|
StateBlock,
|
|
2283
2538
|
{
|
|
2284
2539
|
variant: "error",
|
|
@@ -2287,23 +2542,23 @@ function PlaybackSurface({
|
|
|
2287
2542
|
}
|
|
2288
2543
|
);
|
|
2289
2544
|
} else {
|
|
2290
|
-
content = /* @__PURE__ */ (0,
|
|
2545
|
+
content = /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Stack, { gap: "md", children: [
|
|
2291
2546
|
media,
|
|
2292
2547
|
overlays
|
|
2293
2548
|
] });
|
|
2294
2549
|
}
|
|
2295
|
-
return /* @__PURE__ */ (0,
|
|
2296
|
-
title || statusMessage || controls ? /* @__PURE__ */ (0,
|
|
2297
|
-
/* @__PURE__ */ (0,
|
|
2298
|
-
title ? /* @__PURE__ */ (0,
|
|
2299
|
-
statusMessage ? /* @__PURE__ */ (0,
|
|
2550
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Paper, { withBorder: true, radius: "xl", p: "lg", "data-playback-mode": mode, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Stack, { gap: "md", children: [
|
|
2551
|
+
title || statusMessage || controls ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
|
|
2552
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Stack, { gap: 4, children: [
|
|
2553
|
+
title ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Title, { order: 3, children: title }) : null,
|
|
2554
|
+
statusMessage ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Text, { size: "sm", c: "dimmed", children: statusMessage }) : null
|
|
2300
2555
|
] }),
|
|
2301
|
-
/* @__PURE__ */ (0,
|
|
2302
|
-
/* @__PURE__ */ (0,
|
|
2556
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Group, { gap: "sm", align: "center", wrap: "wrap", children: [
|
|
2557
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Badge, { variant: "light", color: tone.color, children: tone.label }),
|
|
2303
2558
|
controls
|
|
2304
2559
|
] })
|
|
2305
2560
|
] }) : null,
|
|
2306
|
-
state === "degraded" ? /* @__PURE__ */ (0,
|
|
2561
|
+
state === "degraded" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
2307
2562
|
StateBlock,
|
|
2308
2563
|
{
|
|
2309
2564
|
variant: "info",
|
|
@@ -2317,28 +2572,35 @@ function PlaybackSurface({
|
|
|
2317
2572
|
}
|
|
2318
2573
|
|
|
2319
2574
|
// src/MediaField.tsx
|
|
2320
|
-
var
|
|
2575
|
+
var import_core38 = require("@mantine/core");
|
|
2321
2576
|
|
|
2322
2577
|
// src/FormField.tsx
|
|
2323
|
-
var
|
|
2324
|
-
var
|
|
2578
|
+
var import_core37 = require("@mantine/core");
|
|
2579
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
2325
2580
|
function FormField({ label, description, error, children }) {
|
|
2326
|
-
return /* @__PURE__ */ (0,
|
|
2327
|
-
typeof label === "string" ? /* @__PURE__ */ (0,
|
|
2328
|
-
description ? typeof description === "string" ? /* @__PURE__ */ (0,
|
|
2581
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Box, { component: "label", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core37.Stack, { gap: 4, children: [
|
|
2582
|
+
typeof label === "string" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Text, { size: "xs", fw: 600, c: "dimmed", children: label }) : label,
|
|
2583
|
+
description ? typeof description === "string" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Text, { size: "xs", c: "dimmed", children: description }) : description : null,
|
|
2329
2584
|
children,
|
|
2330
|
-
error ? typeof error === "string" ? /* @__PURE__ */ (0,
|
|
2585
|
+
error ? typeof error === "string" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.Text, { size: "xs", c: "red.7", children: error }) : error : null
|
|
2331
2586
|
] }) });
|
|
2332
2587
|
}
|
|
2333
2588
|
|
|
2334
2589
|
// src/MediaField.tsx
|
|
2335
|
-
var
|
|
2590
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
2336
2591
|
var stateLabels = {
|
|
2337
2592
|
empty: { label: "Empty", color: "gray" },
|
|
2593
|
+
"drag-active": { label: "Drop to select", color: "violet" },
|
|
2338
2594
|
selected: { label: "Selected", color: "blue" },
|
|
2595
|
+
"preview-loading": { label: "Preview loading", color: "violet" },
|
|
2339
2596
|
saved: { label: "Saved", color: "teal" },
|
|
2340
2597
|
invalid: { label: "Needs attention", color: "red" },
|
|
2341
|
-
uploading: { label: "Uploading", color: "violet" }
|
|
2598
|
+
uploading: { label: "Uploading", color: "violet" },
|
|
2599
|
+
"upload-failed": { label: "Upload failed", color: "red" },
|
|
2600
|
+
"unsupported-type": { label: "Unsupported type", color: "red" },
|
|
2601
|
+
"too-large": { label: "Too large", color: "red" },
|
|
2602
|
+
removed: { label: "Removed", color: "gray" },
|
|
2603
|
+
readonly: { label: "Read only", color: "gray" }
|
|
2342
2604
|
};
|
|
2343
2605
|
function MediaField({
|
|
2344
2606
|
label,
|
|
@@ -2351,41 +2613,60 @@ function MediaField({
|
|
|
2351
2613
|
policyText,
|
|
2352
2614
|
error,
|
|
2353
2615
|
retryAction,
|
|
2616
|
+
replaceAction,
|
|
2354
2617
|
onRemove,
|
|
2355
2618
|
onReset,
|
|
2356
2619
|
removeAction,
|
|
2357
2620
|
resetAction,
|
|
2358
2621
|
statusAction,
|
|
2622
|
+
acceptedTypes,
|
|
2623
|
+
maxSize,
|
|
2624
|
+
progress,
|
|
2625
|
+
readonly = false,
|
|
2359
2626
|
state = "empty",
|
|
2360
2627
|
mode = "stacked"
|
|
2361
2628
|
}) {
|
|
2362
|
-
const
|
|
2363
|
-
const
|
|
2364
|
-
const
|
|
2365
|
-
|
|
2629
|
+
const resolvedState = readonly ? "readonly" : state;
|
|
2630
|
+
const stateBadge = stateLabels[resolvedState];
|
|
2631
|
+
const resolvedRemoveAction = removeAction ?? (!readonly && onRemove ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Button, { type: "button", variant: "light", color: "red", onClick: onRemove, children: "Remove" }) : null);
|
|
2632
|
+
const resolvedResetAction = resetAction ?? (!readonly && onReset ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Button, { type: "button", variant: "default", onClick: onReset, children: "Reset" }) : null);
|
|
2633
|
+
const boundedProgress = typeof progress === "number" ? Math.max(0, Math.min(100, progress)) : void 0;
|
|
2634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2366
2635
|
FormField,
|
|
2367
2636
|
{
|
|
2368
2637
|
label,
|
|
2369
2638
|
description,
|
|
2370
2639
|
error,
|
|
2371
|
-
children: /* @__PURE__ */ (0,
|
|
2372
|
-
/* @__PURE__ */ (0,
|
|
2373
|
-
/* @__PURE__ */ (0,
|
|
2640
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Stack, { gap: "md", children: [
|
|
2641
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Group, { justify: "flex-end", align: "center", gap: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Group, { gap: "xs", justify: "flex-end", children: [
|
|
2642
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Badge, { variant: "light", color: stateBadge.color, children: stateBadge.label }),
|
|
2374
2643
|
statusAction
|
|
2375
2644
|
] }) }),
|
|
2376
2645
|
preview ? preview : null,
|
|
2377
|
-
|
|
2378
|
-
/* @__PURE__ */ (0,
|
|
2379
|
-
/* @__PURE__ */ (0,
|
|
2646
|
+
typeof boundedProgress === "number" ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Stack, { gap: 4, children: [
|
|
2647
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Progress, { value: boundedProgress, "aria-label": "Upload progress" }),
|
|
2648
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Text, { size: "xs", c: "dimmed", children: [
|
|
2649
|
+
boundedProgress,
|
|
2650
|
+
"% complete"
|
|
2651
|
+
] })
|
|
2652
|
+
] }) : null,
|
|
2653
|
+
(uploadControl || urlInput) && !readonly ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
|
|
2654
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Divider, {}),
|
|
2655
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Stack, { gap: "sm", style: mode === "split" ? { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))" } : void 0, children: [
|
|
2380
2656
|
uploadControl,
|
|
2381
2657
|
urlInput
|
|
2382
2658
|
] })
|
|
2383
2659
|
] }) : null,
|
|
2384
|
-
value ? /* @__PURE__ */ (0,
|
|
2385
|
-
helpText ? /* @__PURE__ */ (0,
|
|
2386
|
-
|
|
2660
|
+
value ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Text, { size: "sm", c: "dimmed", style: { wordBreak: "break-all" }, children: value }) : null,
|
|
2661
|
+
helpText ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Text, { size: "sm", c: "dimmed", children: helpText }) : null,
|
|
2662
|
+
acceptedTypes || maxSize ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Group, { gap: "xs", wrap: "wrap", children: [
|
|
2663
|
+
acceptedTypes ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Badge, { variant: "outline", color: "gray", children: acceptedTypes }) : null,
|
|
2664
|
+
maxSize ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Badge, { variant: "outline", color: "gray", children: maxSize }) : null
|
|
2665
|
+
] }) : null,
|
|
2666
|
+
policyText ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Text, { size: "sm", c: error ? "red.7" : "dimmed", children: policyText }) : null,
|
|
2387
2667
|
typeof error !== "string" && error ? error : null,
|
|
2388
|
-
resolvedRemoveAction || resolvedResetAction ? /* @__PURE__ */ (0,
|
|
2668
|
+
replaceAction || resolvedRemoveAction || resolvedResetAction || retryAction ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Group, { gap: "sm", children: [
|
|
2669
|
+
replaceAction,
|
|
2389
2670
|
resolvedResetAction,
|
|
2390
2671
|
retryAction,
|
|
2391
2672
|
resolvedRemoveAction
|
|
@@ -2396,49 +2677,63 @@ function MediaField({
|
|
|
2396
2677
|
}
|
|
2397
2678
|
|
|
2398
2679
|
// src/MediaCard.tsx
|
|
2399
|
-
var
|
|
2400
|
-
var
|
|
2680
|
+
var import_core39 = require("@mantine/core");
|
|
2681
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
2401
2682
|
function MediaCard({ title, image, description, status, overlay, actions = [] }) {
|
|
2402
2683
|
const EyeIcon = GdsIcons.Eye;
|
|
2403
|
-
return /* @__PURE__ */ (0,
|
|
2404
|
-
/* @__PURE__ */ (0,
|
|
2684
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Card, { withBorder: true, radius: "lg", padding: "md", children: [
|
|
2685
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Card.Section, { pos: "relative", children: [
|
|
2405
2686
|
image,
|
|
2406
|
-
overlay ? /* @__PURE__ */ (0,
|
|
2687
|
+
overlay ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { style: { position: "absolute", inset: 12, display: "flex", justifyContent: "flex-end", alignItems: "flex-start" }, children: overlay }) : null
|
|
2407
2688
|
] }),
|
|
2408
|
-
/* @__PURE__ */ (0,
|
|
2409
|
-
/* @__PURE__ */ (0,
|
|
2410
|
-
/* @__PURE__ */ (0,
|
|
2411
|
-
/* @__PURE__ */ (0,
|
|
2412
|
-
description ? /* @__PURE__ */ (0,
|
|
2689
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Stack, { gap: "sm", mt: "md", children: [
|
|
2690
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Group, { justify: "space-between", align: "flex-start", children: [
|
|
2691
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core39.Stack, { gap: 4, children: [
|
|
2692
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Title, { order: 4, children: title }),
|
|
2693
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Text, { size: "sm", c: "dimmed", lineClamp: 2, children: description }) : null
|
|
2413
2694
|
] }),
|
|
2414
|
-
status ? /* @__PURE__ */ (0,
|
|
2695
|
+
status ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Badge, { variant: "light", children: status }) : null
|
|
2415
2696
|
] }),
|
|
2416
|
-
actions.length ? /* @__PURE__ */ (0,
|
|
2697
|
+
actions.length ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.Group, { justify: "flex-end", gap: "xs", children: actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core39.ActionIcon, { variant: "light", "aria-label": action.label, onClick: action.onClick, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(EyeIcon, { size: "1rem" }) }, action.label)) }) : null
|
|
2417
2698
|
] })
|
|
2418
2699
|
] });
|
|
2419
2700
|
}
|
|
2420
2701
|
|
|
2421
2702
|
// src/AccessSummary.tsx
|
|
2422
|
-
var
|
|
2423
|
-
var
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2703
|
+
var import_core40 = require("@mantine/core");
|
|
2704
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
2705
|
+
var accessStateMeta = {
|
|
2706
|
+
allowed: { label: "Allowed", color: "teal" },
|
|
2707
|
+
blocked: { label: "Blocked", color: "red" },
|
|
2708
|
+
forbidden: { label: "Forbidden", color: "red" },
|
|
2709
|
+
expired: { label: "Expired", color: "orange" },
|
|
2710
|
+
"permission-limited": { label: "Permission limited", color: "grape" }
|
|
2711
|
+
};
|
|
2712
|
+
function AccessSummary({ title, roles, scope, blocked = false, state, owner, recoveryHint, description }) {
|
|
2713
|
+
const resolvedState = state ?? (blocked ? "blocked" : "allowed");
|
|
2714
|
+
const meta = accessStateMeta[resolvedState];
|
|
2715
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Card, { withBorder: true, radius: "lg", padding: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Stack, { gap: "sm", children: [
|
|
2716
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Group, { justify: "space-between", align: "center", children: [
|
|
2717
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Title, { order: 4, children: title }),
|
|
2718
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Badge, { color: meta.color, variant: "light", children: meta.label })
|
|
2429
2719
|
] }),
|
|
2430
|
-
/* @__PURE__ */ (0,
|
|
2431
|
-
scope ? /* @__PURE__ */ (0,
|
|
2720
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Group, { gap: "xs", children: roles.map((role) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Badge, { variant: "outline", children: role }, role)) }),
|
|
2721
|
+
scope ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Text, { size: "sm", c: "dimmed", children: [
|
|
2432
2722
|
"Scope: ",
|
|
2433
2723
|
scope
|
|
2434
2724
|
] }) : null,
|
|
2435
|
-
|
|
2725
|
+
owner ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.Text, { size: "sm", c: "dimmed", children: [
|
|
2726
|
+
"Owner: ",
|
|
2727
|
+
owner
|
|
2728
|
+
] }) : null,
|
|
2729
|
+
recoveryHint ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Text, { size: "sm", c: resolvedState === "allowed" ? "dimmed" : "red.7", children: recoveryHint }) : null,
|
|
2730
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_core40.Text, { size: "sm", children: description }) : null
|
|
2436
2731
|
] }) });
|
|
2437
2732
|
}
|
|
2438
2733
|
|
|
2439
2734
|
// src/PageHeader.tsx
|
|
2440
|
-
var
|
|
2441
|
-
var
|
|
2735
|
+
var import_core41 = require("@mantine/core");
|
|
2736
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
2442
2737
|
function PageHeader({
|
|
2443
2738
|
title,
|
|
2444
2739
|
description,
|
|
@@ -2449,19 +2744,19 @@ function PageHeader({
|
|
|
2449
2744
|
}) {
|
|
2450
2745
|
const resolvedDescription = description ?? subtitle;
|
|
2451
2746
|
const eyebrowProps = eyebrowVariant === "ornamental" ? { tt: "uppercase", style: { letterSpacing: "0.12em" } } : {};
|
|
2452
|
-
return /* @__PURE__ */ (0,
|
|
2453
|
-
/* @__PURE__ */ (0,
|
|
2454
|
-
eyebrow && /* @__PURE__ */ (0,
|
|
2455
|
-
/* @__PURE__ */ (0,
|
|
2456
|
-
resolvedDescription && /* @__PURE__ */ (0,
|
|
2747
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core41.Group, { justify: "space-between", align: "flex-start", gap: "lg", wrap: "wrap", children: [
|
|
2748
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_core41.Stack, { gap: "xs", children: [
|
|
2749
|
+
eyebrow && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Text, { size: "xs", fw: 700, c: "dimmed", ...eyebrowProps, children: eyebrow }),
|
|
2750
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Title, { order: 1, children: title }),
|
|
2751
|
+
resolvedDescription && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Text, { c: "dimmed", maw: 720, children: resolvedDescription })
|
|
2457
2752
|
] }),
|
|
2458
|
-
actions ? /* @__PURE__ */ (0,
|
|
2753
|
+
actions ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_core41.Box, { children: actions }) : null
|
|
2459
2754
|
] });
|
|
2460
2755
|
}
|
|
2461
2756
|
|
|
2462
2757
|
// src/FilterDrawer.tsx
|
|
2463
|
-
var
|
|
2464
|
-
var
|
|
2758
|
+
var import_core42 = require("@mantine/core");
|
|
2759
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
2465
2760
|
function FilterDrawer({
|
|
2466
2761
|
opened,
|
|
2467
2762
|
onClose,
|
|
@@ -2477,8 +2772,8 @@ function FilterDrawer({
|
|
|
2477
2772
|
}) {
|
|
2478
2773
|
const resolvedPrimaryAction = applyAction ?? primaryAction;
|
|
2479
2774
|
const resolvedSecondaryAction = resetAction ?? secondaryAction;
|
|
2480
|
-
return /* @__PURE__ */ (0,
|
|
2481
|
-
|
|
2775
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
2776
|
+
import_core42.Drawer,
|
|
2482
2777
|
{
|
|
2483
2778
|
opened,
|
|
2484
2779
|
onClose,
|
|
@@ -2486,11 +2781,11 @@ function FilterDrawer({
|
|
|
2486
2781
|
position: mode === "bottom-sheet" ? "bottom" : "right",
|
|
2487
2782
|
size: mode === "bottom-sheet" ? "auto" : "md",
|
|
2488
2783
|
radius: mode === "bottom-sheet" ? "xl" : void 0,
|
|
2489
|
-
children: /* @__PURE__ */ (0,
|
|
2490
|
-
description ? /* @__PURE__ */ (0,
|
|
2784
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Stack, { gap: "md", children: [
|
|
2785
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_core42.Text, { size: "sm", c: "dimmed", children: description }) : null,
|
|
2491
2786
|
children,
|
|
2492
|
-
resolvedPrimaryAction || resolvedSecondaryAction || closeAction ? /* @__PURE__ */ (0,
|
|
2493
|
-
/* @__PURE__ */ (0,
|
|
2787
|
+
resolvedPrimaryAction || resolvedSecondaryAction || closeAction ? /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Group, { justify: "space-between", mt: "md", children: [
|
|
2788
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_core42.Group, { gap: "sm", children: [
|
|
2494
2789
|
closeAction,
|
|
2495
2790
|
resolvedSecondaryAction
|
|
2496
2791
|
] }),
|
|
@@ -2502,8 +2797,8 @@ function FilterDrawer({
|
|
|
2502
2797
|
}
|
|
2503
2798
|
|
|
2504
2799
|
// src/PlaceholderPanel.tsx
|
|
2505
|
-
var
|
|
2506
|
-
var
|
|
2800
|
+
var import_core43 = require("@mantine/core");
|
|
2801
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
2507
2802
|
function PlaceholderPanel({
|
|
2508
2803
|
title,
|
|
2509
2804
|
description,
|
|
@@ -2513,16 +2808,16 @@ function PlaceholderPanel({
|
|
|
2513
2808
|
mode
|
|
2514
2809
|
}) {
|
|
2515
2810
|
if (mode === "live" && children) {
|
|
2516
|
-
return /* @__PURE__ */ (0,
|
|
2811
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, { children });
|
|
2517
2812
|
}
|
|
2518
|
-
return /* @__PURE__ */ (0,
|
|
2519
|
-
badge ? /* @__PURE__ */ (0,
|
|
2520
|
-
/* @__PURE__ */ (0,
|
|
2521
|
-
/* @__PURE__ */ (0,
|
|
2522
|
-
/* @__PURE__ */ (0,
|
|
2813
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Card, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core43.Stack, { gap: "md", children: [
|
|
2814
|
+
badge ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Badge, { variant: "light", color: "blue", w: "fit-content", children: badge }) : null,
|
|
2815
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_core43.Stack, { gap: "xs", children: [
|
|
2816
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Title, { order: 4, children: title }),
|
|
2817
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Text, { c: "dimmed", children: description })
|
|
2523
2818
|
] }),
|
|
2524
|
-
footer ? /* @__PURE__ */ (0,
|
|
2525
|
-
/* @__PURE__ */ (0,
|
|
2819
|
+
footer ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_core43.Text, { size: "sm", children: footer }) : null,
|
|
2820
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
2526
2821
|
StateBlock,
|
|
2527
2822
|
{
|
|
2528
2823
|
variant: "not-enough-data",
|
|
@@ -2535,8 +2830,8 @@ function PlaceholderPanel({
|
|
|
2535
2830
|
}
|
|
2536
2831
|
|
|
2537
2832
|
// src/SimpleDataTable.tsx
|
|
2538
|
-
var
|
|
2539
|
-
var
|
|
2833
|
+
var import_core44 = require("@mantine/core");
|
|
2834
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
2540
2835
|
function SimpleDataTable({
|
|
2541
2836
|
columns,
|
|
2542
2837
|
rows,
|
|
@@ -2547,23 +2842,23 @@ function SimpleDataTable({
|
|
|
2547
2842
|
getRowKey
|
|
2548
2843
|
}) {
|
|
2549
2844
|
if (error) {
|
|
2550
|
-
return /* @__PURE__ */ (0,
|
|
2845
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(StateBlock, { variant: "error", title: "Unable to load data", description: error, compact: true });
|
|
2551
2846
|
}
|
|
2552
2847
|
if (loading) {
|
|
2553
|
-
return /* @__PURE__ */ (0,
|
|
2848
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(StateBlock, { variant: "loading", title: "Loading data", description: "Please wait while the shared dataset is prepared.", compact: true });
|
|
2554
2849
|
}
|
|
2555
2850
|
if (!rows.length) {
|
|
2556
|
-
return /* @__PURE__ */ (0,
|
|
2851
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(StateBlock, { variant: "empty", title: emptyTitle, description: emptyDescription, compact: true });
|
|
2557
2852
|
}
|
|
2558
|
-
return /* @__PURE__ */ (0,
|
|
2559
|
-
/* @__PURE__ */ (0,
|
|
2560
|
-
/* @__PURE__ */ (0,
|
|
2853
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.ScrollArea, { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_core44.Table, { striped: true, highlightOnHover: true, withTableBorder: true, withColumnBorders: true, children: [
|
|
2854
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Table.Thead, { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Table.Tr, { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Table.Th, { children: column.header }, String(column.key))) }) }),
|
|
2855
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Table.Tbody, { children: rows.map((row, index) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Table.Tr, { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_core44.Table.Td, { children: column.render ? column.render(row) : String(row[column.key] ?? "") }, String(column.key))) }, getRowKey ? getRowKey(row, index) : index)) })
|
|
2561
2856
|
] }) });
|
|
2562
2857
|
}
|
|
2563
2858
|
|
|
2564
2859
|
// src/StatsSection.tsx
|
|
2565
|
-
var
|
|
2566
|
-
var
|
|
2860
|
+
var import_core45 = require("@mantine/core");
|
|
2861
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
2567
2862
|
function StatsSection({
|
|
2568
2863
|
title,
|
|
2569
2864
|
loading = false,
|
|
@@ -2575,11 +2870,11 @@ function StatsSection({
|
|
|
2575
2870
|
}) {
|
|
2576
2871
|
let content = children;
|
|
2577
2872
|
if (error) {
|
|
2578
|
-
content = /* @__PURE__ */ (0,
|
|
2873
|
+
content = /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(StateBlock, { variant: "error", title: "Unable to load statistics", description: error, compact: true });
|
|
2579
2874
|
} else if (loading) {
|
|
2580
|
-
content = /* @__PURE__ */ (0,
|
|
2875
|
+
content = /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(StateBlock, { variant: "loading", title: "Loading statistics", description: "This shared data surface is still synchronizing.", compact: true });
|
|
2581
2876
|
} else if (belowThreshold) {
|
|
2582
|
-
content = /* @__PURE__ */ (0,
|
|
2877
|
+
content = /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
2583
2878
|
StateBlock,
|
|
2584
2879
|
{
|
|
2585
2880
|
variant: "not-enough-data",
|
|
@@ -2589,14 +2884,210 @@ function StatsSection({
|
|
|
2589
2884
|
}
|
|
2590
2885
|
);
|
|
2591
2886
|
} else if (placeholder) {
|
|
2592
|
-
content = /* @__PURE__ */ (0,
|
|
2887
|
+
content = /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(PlaceholderPanel, { ...placeholder, mode: "placeholder" });
|
|
2593
2888
|
}
|
|
2594
|
-
return /* @__PURE__ */ (0,
|
|
2595
|
-
/* @__PURE__ */ (0,
|
|
2889
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_core45.Stack, { gap: "md", children: [
|
|
2890
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_core45.Title, { order: 3, children: title }),
|
|
2596
2891
|
content
|
|
2597
2892
|
] });
|
|
2598
2893
|
}
|
|
2599
2894
|
|
|
2895
|
+
// src/PeriodSelector.tsx
|
|
2896
|
+
var import_core46 = require("@mantine/core");
|
|
2897
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
2898
|
+
function PeriodSelector({
|
|
2899
|
+
label,
|
|
2900
|
+
description,
|
|
2901
|
+
value,
|
|
2902
|
+
options,
|
|
2903
|
+
onChange,
|
|
2904
|
+
timezone,
|
|
2905
|
+
scope,
|
|
2906
|
+
helperText,
|
|
2907
|
+
error,
|
|
2908
|
+
stale = false,
|
|
2909
|
+
filtered = false,
|
|
2910
|
+
disabled = false
|
|
2911
|
+
}) {
|
|
2912
|
+
const selectedOption = options.find((option) => option.value === value);
|
|
2913
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(FormField, { label, description, error, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_core46.Stack, { gap: "sm", children: [
|
|
2914
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
2915
|
+
"select",
|
|
2916
|
+
{
|
|
2917
|
+
"aria-label": typeof label === "string" ? label : "Reporting period",
|
|
2918
|
+
value,
|
|
2919
|
+
disabled,
|
|
2920
|
+
onChange: (event) => onChange?.(event.currentTarget.value),
|
|
2921
|
+
children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("option", { value: option.value, children: option.label }, option.value))
|
|
2922
|
+
}
|
|
2923
|
+
),
|
|
2924
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_core46.Group, { gap: "xs", wrap: "wrap", children: [
|
|
2925
|
+
timezone ? /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_core46.Badge, { variant: "outline", color: "gray", children: [
|
|
2926
|
+
"Timezone: ",
|
|
2927
|
+
timezone
|
|
2928
|
+
] }) : null,
|
|
2929
|
+
filtered ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Badge, { variant: "light", color: "blue", children: "Filtered" }) : null,
|
|
2930
|
+
stale ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Badge, { variant: "light", color: "orange", children: "Stale data" }) : null,
|
|
2931
|
+
scope ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Badge, { variant: "outline", color: "gray", children: scope }) : null
|
|
2932
|
+
] }),
|
|
2933
|
+
selectedOption?.description ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Text, { size: "sm", c: "dimmed", children: selectedOption.description }) : null,
|
|
2934
|
+
helperText ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_core46.Text, { size: "sm", c: "dimmed", children: helperText }) : null
|
|
2935
|
+
] }) });
|
|
2936
|
+
}
|
|
2937
|
+
|
|
2938
|
+
// src/EvidencePanel.tsx
|
|
2939
|
+
var import_core47 = require("@mantine/core");
|
|
2940
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
2941
|
+
var stateTone2 = {
|
|
2942
|
+
current: { label: "Current", color: "teal" },
|
|
2943
|
+
stale: { label: "Stale", color: "orange" },
|
|
2944
|
+
partial: { label: "Partial data", color: "yellow" },
|
|
2945
|
+
"permission-limited": { label: "Permission limited", color: "grape" },
|
|
2946
|
+
loading: { label: "Loading", color: "blue" },
|
|
2947
|
+
empty: { label: "No evidence", color: "gray" },
|
|
2948
|
+
error: { label: "Needs attention", color: "red" }
|
|
2949
|
+
};
|
|
2950
|
+
function EvidencePanel({
|
|
2951
|
+
title,
|
|
2952
|
+
description,
|
|
2953
|
+
source,
|
|
2954
|
+
freshness,
|
|
2955
|
+
confidence,
|
|
2956
|
+
state = "current",
|
|
2957
|
+
evidenceCount,
|
|
2958
|
+
permissionNote,
|
|
2959
|
+
retryAction,
|
|
2960
|
+
details,
|
|
2961
|
+
children
|
|
2962
|
+
}) {
|
|
2963
|
+
const tone = stateTone2[state];
|
|
2964
|
+
const isProblem = state === "error" || state === "permission-limited" || state === "stale" || state === "partial";
|
|
2965
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Stack, { gap: "md", children: [
|
|
2966
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Group, { justify: "space-between", align: "flex-start", gap: "sm", children: [
|
|
2967
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Stack, { gap: 4, children: [
|
|
2968
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Title, { order: 4, children: title }),
|
|
2969
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Text, { size: "sm", c: "dimmed", children: description }) : null
|
|
2970
|
+
] }),
|
|
2971
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Badge, { variant: "light", color: tone.color, children: tone.label })
|
|
2972
|
+
] }),
|
|
2973
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Group, { gap: "xs", wrap: "wrap", children: [
|
|
2974
|
+
source ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Badge, { variant: "outline", color: "gray", children: [
|
|
2975
|
+
"Source: ",
|
|
2976
|
+
source
|
|
2977
|
+
] }) : null,
|
|
2978
|
+
freshness ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Badge, { variant: "outline", color: "gray", children: [
|
|
2979
|
+
"Freshness: ",
|
|
2980
|
+
freshness
|
|
2981
|
+
] }) : null,
|
|
2982
|
+
confidence ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Badge, { variant: "outline", color: "gray", children: [
|
|
2983
|
+
"Confidence: ",
|
|
2984
|
+
confidence
|
|
2985
|
+
] }) : null,
|
|
2986
|
+
typeof evidenceCount === "number" ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_core47.Badge, { variant: "outline", color: "gray", children: [
|
|
2987
|
+
"Evidence: ",
|
|
2988
|
+
evidenceCount
|
|
2989
|
+
] }) : null
|
|
2990
|
+
] }),
|
|
2991
|
+
permissionNote ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_core47.Alert, { color: isProblem ? tone.color : "gray", variant: "light", children: permissionNote }) : null,
|
|
2992
|
+
details,
|
|
2993
|
+
children,
|
|
2994
|
+
retryAction
|
|
2995
|
+
] }) });
|
|
2996
|
+
}
|
|
2997
|
+
|
|
2998
|
+
// src/ChartTokenPanel.tsx
|
|
2999
|
+
var import_core48 = require("@mantine/core");
|
|
3000
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
3001
|
+
function ChartTokenPanel({
|
|
3002
|
+
title,
|
|
3003
|
+
description,
|
|
3004
|
+
summary,
|
|
3005
|
+
state = "ready",
|
|
3006
|
+
legend = [],
|
|
3007
|
+
children,
|
|
3008
|
+
tableFallback,
|
|
3009
|
+
retryAction
|
|
3010
|
+
}) {
|
|
3011
|
+
if (state === "loading") {
|
|
3012
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(StateBlock, { variant: "loading", title: "Loading chart", description: summary, compact: true, action: retryAction });
|
|
3013
|
+
}
|
|
3014
|
+
if (state === "empty") {
|
|
3015
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(StateBlock, { variant: "empty", title: "No chart data", description: summary, compact: true, action: retryAction });
|
|
3016
|
+
}
|
|
3017
|
+
if (state === "below-threshold") {
|
|
3018
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(StateBlock, { variant: "not-enough-data", title: "Not enough data for chart", description: summary, compact: true, action: retryAction });
|
|
3019
|
+
}
|
|
3020
|
+
if (state === "error") {
|
|
3021
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(StateBlock, { variant: "error", title: "Unable to load chart", description: summary, compact: true, action: retryAction });
|
|
3022
|
+
}
|
|
3023
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Stack, { gap: "md", children: [
|
|
3024
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Group, { justify: "space-between", align: "flex-start", gap: "sm", children: [
|
|
3025
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Stack, { gap: 4, children: [
|
|
3026
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Title, { order: 4, children: title }),
|
|
3027
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Text, { size: "sm", c: "dimmed", children: description }) : null
|
|
3028
|
+
] }),
|
|
3029
|
+
state !== "ready" ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Badge, { variant: "light", color: state === "permission-limited" ? "grape" : "yellow", children: state.replace("-", " ") }) : null
|
|
3030
|
+
] }),
|
|
3031
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Text, { size: "sm", children: summary }),
|
|
3032
|
+
legend.length ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Group, { gap: "xs", wrap: "wrap", "aria-label": "Chart legend", children: legend.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Badge, { variant: "outline", color: "gray", title: typeof item.description === "string" ? item.description : void 0, children: [
|
|
3033
|
+
item.label,
|
|
3034
|
+
": ",
|
|
3035
|
+
item.token
|
|
3036
|
+
] }, `${String(item.label)}-${index}`)) }) : null,
|
|
3037
|
+
children,
|
|
3038
|
+
tableFallback ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_core48.Stack, { gap: "xs", children: [
|
|
3039
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_core48.Text, { size: "sm", fw: 600, children: "Accessible data fallback" }),
|
|
3040
|
+
tableFallback
|
|
3041
|
+
] }) : null
|
|
3042
|
+
] }) });
|
|
3043
|
+
}
|
|
3044
|
+
|
|
3045
|
+
// src/ReportingSection.tsx
|
|
3046
|
+
var import_core49 = require("@mantine/core");
|
|
3047
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
3048
|
+
function ReportingSection({
|
|
3049
|
+
title,
|
|
3050
|
+
description,
|
|
3051
|
+
state = "ready",
|
|
3052
|
+
periodControl,
|
|
3053
|
+
evidence,
|
|
3054
|
+
metrics,
|
|
3055
|
+
chart,
|
|
3056
|
+
table,
|
|
3057
|
+
action,
|
|
3058
|
+
stateMessage,
|
|
3059
|
+
retryAction
|
|
3060
|
+
}) {
|
|
3061
|
+
let stateBlock = null;
|
|
3062
|
+
if (state === "loading") {
|
|
3063
|
+
stateBlock = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(StateBlock, { variant: "loading", title: "Loading report", description: stateMessage ?? "The reporting surface is synchronizing.", compact: true });
|
|
3064
|
+
} else if (state === "empty") {
|
|
3065
|
+
stateBlock = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(StateBlock, { variant: "empty", title: "No report data", description: stateMessage ?? "No records match this reporting scope yet.", compact: true });
|
|
3066
|
+
} else if (state === "error") {
|
|
3067
|
+
stateBlock = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(StateBlock, { variant: "error", title: "Unable to load report", description: stateMessage ?? "The report could not be prepared.", compact: true, action: retryAction });
|
|
3068
|
+
} else if (state === "below-threshold") {
|
|
3069
|
+
stateBlock = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(StateBlock, { variant: "not-enough-data", title: "Not enough data", description: stateMessage ?? "This report is hidden until the threshold is met.", compact: true });
|
|
3070
|
+
} else if (state === "permission-limited") {
|
|
3071
|
+
stateBlock = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(StateBlock, { variant: "permission", title: "Permission-limited report", description: stateMessage ?? "Some evidence is hidden by access rules.", compact: true, action: retryAction });
|
|
3072
|
+
}
|
|
3073
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Paper, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core49.Stack, { gap: "lg", children: [
|
|
3074
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core49.Group, { justify: "space-between", align: "flex-start", gap: "md", children: [
|
|
3075
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_core49.Stack, { gap: 4, children: [
|
|
3076
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Title, { order: 3, children: title }),
|
|
3077
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_core49.Text, { size: "sm", c: "dimmed", children: description }) : null
|
|
3078
|
+
] }),
|
|
3079
|
+
action
|
|
3080
|
+
] }),
|
|
3081
|
+
periodControl,
|
|
3082
|
+
(state === "partial" || state === "stale" || state === "filtered") && stateMessage ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(StateBlock, { variant: "info", title: state === "partial" ? "Partial report" : state === "stale" ? "Stale report" : "Filtered report", description: stateMessage, compact: true }) : null,
|
|
3083
|
+
stateBlock,
|
|
3084
|
+
metrics,
|
|
3085
|
+
chart,
|
|
3086
|
+
table,
|
|
3087
|
+
evidence
|
|
3088
|
+
] }) });
|
|
3089
|
+
}
|
|
3090
|
+
|
|
2600
3091
|
// src/locales/ar.ts
|
|
2601
3092
|
var ar = {
|
|
2602
3093
|
"gds.action.settings": "\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A",
|
|
@@ -3906,6 +4397,7 @@ function getGdsMessages(locale) {
|
|
|
3906
4397
|
ArticleShell,
|
|
3907
4398
|
AuthShell,
|
|
3908
4399
|
BrowseSurface,
|
|
4400
|
+
ChartTokenPanel,
|
|
3909
4401
|
ChoiceChip,
|
|
3910
4402
|
ConsumerDashboardGrid,
|
|
3911
4403
|
ConsumerSection,
|
|
@@ -3916,6 +4408,7 @@ function getGdsMessages(locale) {
|
|
|
3916
4408
|
EditorialCard,
|
|
3917
4409
|
EditorialHero,
|
|
3918
4410
|
EmptyState,
|
|
4411
|
+
EvidencePanel,
|
|
3919
4412
|
FeatureBand,
|
|
3920
4413
|
FilterDrawer,
|
|
3921
4414
|
FoodMenuSection,
|
|
@@ -3927,11 +4420,15 @@ function getGdsMessages(locale) {
|
|
|
3927
4420
|
MediaCard,
|
|
3928
4421
|
MediaField,
|
|
3929
4422
|
MetricCard,
|
|
4423
|
+
PROVIDER_IDENTITY_REGISTRY,
|
|
3930
4424
|
PageHeader,
|
|
4425
|
+
PeriodSelector,
|
|
3931
4426
|
PlaceholderPanel,
|
|
3932
4427
|
PlaybackSurface,
|
|
3933
4428
|
ProductCard,
|
|
3934
4429
|
ProgressCard,
|
|
4430
|
+
ProviderIdentityButton,
|
|
4431
|
+
ProviderIdentityButtonGroup,
|
|
3935
4432
|
PublicBrandFooter,
|
|
3936
4433
|
PublicFlowShell,
|
|
3937
4434
|
PublicFoodCard,
|
|
@@ -3942,6 +4439,7 @@ function getGdsMessages(locale) {
|
|
|
3942
4439
|
ReferenceLinkGrid,
|
|
3943
4440
|
ReferenceLocaleNotice,
|
|
3944
4441
|
ReferenceSection,
|
|
4442
|
+
ReportingSection,
|
|
3945
4443
|
SectionPanel,
|
|
3946
4444
|
SimpleDataTable,
|
|
3947
4445
|
SocialAuthButtons,
|
|
@@ -3956,13 +4454,18 @@ function getGdsMessages(locale) {
|
|
|
3956
4454
|
fr,
|
|
3957
4455
|
gdsLocales,
|
|
3958
4456
|
getGdsMessages,
|
|
4457
|
+
getProviderIdentityLabel,
|
|
4458
|
+
getProviderIdentityPolicy,
|
|
3959
4459
|
getSemanticActionConfig,
|
|
3960
4460
|
getSemanticActionLabel,
|
|
4461
|
+
getSupportedProviderIdentityIds,
|
|
3961
4462
|
he,
|
|
3962
4463
|
hu,
|
|
4464
|
+
isPresentationMode,
|
|
3963
4465
|
it,
|
|
3964
4466
|
mergeGdsVocabularyPacks,
|
|
3965
4467
|
resolveAccentPanelStyles,
|
|
3966
4468
|
resolveSemanticActionConfig,
|
|
4469
|
+
resolveSurfacePresentationStyles,
|
|
3967
4470
|
ru
|
|
3968
4471
|
});
|