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