@doneisbetter/gds-core 2.6.6 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-4YTMKBGW.mjs → chunk-NBCULITN.mjs} +303 -87
- package/dist/{chunk-IAP3JU55.mjs → chunk-P7ICTEEB.mjs} +762 -275
- package/dist/client.d.mts +29 -5
- package/dist/client.d.ts +29 -5
- package/dist/client.js +1105 -385
- package/dist/client.mjs +28 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1105 -385
- package/dist/index.mjs +28 -2
- package/dist/{server-CF4gCYQ-.d.mts → server-woziKWie.d.mts} +195 -10
- package/dist/{server-CF4gCYQ-.d.ts → server-woziKWie.d.ts} +195 -10
- package/dist/server.d.mts +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +776 -273
- package/dist/server.mjs +25 -1
- package/package.json +2 -2
|
@@ -444,8 +444,51 @@ function ReferenceLinkGrid({
|
|
|
444
444
|
] }) }, item.id)) });
|
|
445
445
|
}
|
|
446
446
|
|
|
447
|
+
// src/SurfacePresentation.ts
|
|
448
|
+
var toCssLength = (value) => {
|
|
449
|
+
if (typeof value === "number") {
|
|
450
|
+
return `${value}px`;
|
|
451
|
+
}
|
|
452
|
+
return value;
|
|
453
|
+
};
|
|
454
|
+
function resolveSurfacePresentationStyles(props) {
|
|
455
|
+
const {
|
|
456
|
+
presentation = "inline",
|
|
457
|
+
minHeight,
|
|
458
|
+
contentAlign,
|
|
459
|
+
contentJustify
|
|
460
|
+
} = props;
|
|
461
|
+
if (presentation === "inline") {
|
|
462
|
+
return {
|
|
463
|
+
minHeight: toCssLength(minHeight)
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
const align = contentAlign ?? "center";
|
|
467
|
+
const justify = contentJustify ?? (presentation === "centered" ? "center" : "start");
|
|
468
|
+
if (presentation === "fill") {
|
|
469
|
+
return {
|
|
470
|
+
minHeight: toCssLength(minHeight),
|
|
471
|
+
display: "flex",
|
|
472
|
+
flex: 1,
|
|
473
|
+
flexDirection: "column",
|
|
474
|
+
alignItems: align === "center" ? "center" : "flex-start",
|
|
475
|
+
justifyContent: justify === "center" ? "center" : "flex-start"
|
|
476
|
+
};
|
|
477
|
+
}
|
|
478
|
+
return {
|
|
479
|
+
minHeight: toCssLength(minHeight),
|
|
480
|
+
display: "flex",
|
|
481
|
+
flexDirection: "column",
|
|
482
|
+
alignItems: align === "center" ? "center" : "flex-start",
|
|
483
|
+
justifyContent: justify === "center" ? "center" : "flex-start"
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
function isPresentationMode(value) {
|
|
487
|
+
return value === "inline" || value === "centered" || value === "fill";
|
|
488
|
+
}
|
|
489
|
+
|
|
447
490
|
// src/SectionPanel.tsx
|
|
448
|
-
import { Divider, Group as Group3, Paper as Paper3, Stack as Stack4, Text as Text4, Title as Title4 } from "@mantine/core";
|
|
491
|
+
import { Box as Box3, Divider, Group as Group3, Paper as Paper3, Stack as Stack4, Text as Text4, Title as Title4 } from "@mantine/core";
|
|
449
492
|
import { Fragment, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
450
493
|
var toneBackgrounds = {
|
|
451
494
|
default: "var(--mantine-color-body)",
|
|
@@ -460,8 +503,18 @@ function SectionPanel({
|
|
|
460
503
|
children,
|
|
461
504
|
tone = "default",
|
|
462
505
|
id,
|
|
463
|
-
divided = true
|
|
506
|
+
divided = true,
|
|
507
|
+
presentation = "inline",
|
|
508
|
+
minHeight,
|
|
509
|
+
contentAlign,
|
|
510
|
+
contentJustify
|
|
464
511
|
}) {
|
|
512
|
+
const bodyLayout = resolveSurfacePresentationStyles({
|
|
513
|
+
presentation,
|
|
514
|
+
minHeight,
|
|
515
|
+
contentAlign,
|
|
516
|
+
contentJustify
|
|
517
|
+
});
|
|
465
518
|
return /* @__PURE__ */ jsx6(Paper3, { id, withBorder: true, radius: "xl", p: "lg", style: { background: toneBackgrounds[tone] }, children: /* @__PURE__ */ jsxs4(Stack4, { gap: "md", children: [
|
|
466
519
|
title || description || action ? /* @__PURE__ */ jsxs4(Fragment, { children: [
|
|
467
520
|
/* @__PURE__ */ jsxs4(Group3, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
|
|
@@ -473,7 +526,7 @@ function SectionPanel({
|
|
|
473
526
|
] }),
|
|
474
527
|
divided ? /* @__PURE__ */ jsx6(Divider, {}) : null
|
|
475
528
|
] }) : null,
|
|
476
|
-
children
|
|
529
|
+
/* @__PURE__ */ jsx6(Box3, { style: bodyLayout, children })
|
|
477
530
|
] }) });
|
|
478
531
|
}
|
|
479
532
|
|
|
@@ -567,10 +620,10 @@ function ActionBar({
|
|
|
567
620
|
}
|
|
568
621
|
|
|
569
622
|
// src/FormField.tsx
|
|
570
|
-
import { Box as
|
|
623
|
+
import { Box as Box4, Stack as Stack7, Text as Text6 } from "@mantine/core";
|
|
571
624
|
import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
572
625
|
function FormField({ label, description, error, children }) {
|
|
573
|
-
return /* @__PURE__ */ jsx9(
|
|
626
|
+
return /* @__PURE__ */ jsx9(Box4, { component: "label", children: /* @__PURE__ */ jsxs7(Stack7, { gap: 4, children: [
|
|
574
627
|
typeof label === "string" ? /* @__PURE__ */ jsx9(Text6, { size: "xs", fw: 600, c: "dimmed", children: label }) : label,
|
|
575
628
|
description ? typeof description === "string" ? /* @__PURE__ */ jsx9(Text6, { size: "xs", c: "dimmed", children: description }) : description : null,
|
|
576
629
|
children,
|
|
@@ -698,20 +751,34 @@ function StateBlock({
|
|
|
698
751
|
description,
|
|
699
752
|
action,
|
|
700
753
|
icon,
|
|
701
|
-
compact = false
|
|
754
|
+
compact = false,
|
|
755
|
+
presentation = "inline",
|
|
756
|
+
minHeight,
|
|
757
|
+
contentAlign,
|
|
758
|
+
contentJustify
|
|
702
759
|
}) {
|
|
703
760
|
const config = variantConfig[variant];
|
|
761
|
+
const layout = resolveSurfacePresentationStyles({
|
|
762
|
+
presentation,
|
|
763
|
+
minHeight,
|
|
764
|
+
contentAlign,
|
|
765
|
+
contentJustify
|
|
766
|
+
});
|
|
767
|
+
const centeredText = presentation !== "inline" ? (contentAlign ?? "center") === "center" : !compact;
|
|
768
|
+
const centeredAlign = presentation !== "inline" ? contentAlign ?? "center" : "start";
|
|
769
|
+
const headingAlign = presentation === "inline" ? compact ? "flex-start" : "center" : centeredAlign === "center" ? "center" : "flex-start";
|
|
704
770
|
return /* @__PURE__ */ jsxs9(
|
|
705
771
|
Stack9,
|
|
706
772
|
{
|
|
707
|
-
align:
|
|
708
|
-
justify: "center",
|
|
773
|
+
align: headingAlign,
|
|
774
|
+
justify: presentation === "inline" ? "center" : void 0,
|
|
709
775
|
gap: "md",
|
|
710
776
|
py: compact ? "md" : "xl",
|
|
711
|
-
ta:
|
|
777
|
+
ta: centeredText ? "center" : "left",
|
|
778
|
+
style: layout,
|
|
712
779
|
children: [
|
|
713
780
|
/* @__PURE__ */ jsx11(ThemeIcon2, { variant: "light", color: config.color, size: compact ? "lg" : "xl", radius: "xl", children: icon ?? config.icon }),
|
|
714
|
-
/* @__PURE__ */ jsxs9(Stack9, { gap: 6, align:
|
|
781
|
+
/* @__PURE__ */ jsxs9(Stack9, { gap: 6, align: headingAlign, children: [
|
|
715
782
|
/* @__PURE__ */ jsx11(Title6, { order: compact ? 4 : 3, children: title }),
|
|
716
783
|
description ? /* @__PURE__ */ jsx11(Text8, { c: "dimmed", maw: compact ? void 0 : 480, children: description }) : null
|
|
717
784
|
] }),
|
|
@@ -849,7 +916,7 @@ function ConsumerDashboardGrid({
|
|
|
849
916
|
}
|
|
850
917
|
|
|
851
918
|
// src/EditorialCard.tsx
|
|
852
|
-
import { Anchor as Anchor3, AspectRatio as AspectRatio2, Badge as Badge7, Box as
|
|
919
|
+
import { Anchor as Anchor3, AspectRatio as AspectRatio2, Badge as Badge7, Box as Box5, Card as Card4, Group as Group9, Stack as Stack12, Text as Text11, Title as Title9 } from "@mantine/core";
|
|
853
920
|
import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
854
921
|
var tonePalette = {
|
|
855
922
|
default: {
|
|
@@ -871,7 +938,7 @@ var tonePalette = {
|
|
|
871
938
|
};
|
|
872
939
|
function EditorialMediaFallback({ compact }) {
|
|
873
940
|
return /* @__PURE__ */ jsx17(AspectRatio2, { ratio: compact ? 16 / 10 : 4 / 3, children: /* @__PURE__ */ jsx17(
|
|
874
|
-
|
|
941
|
+
Box5,
|
|
875
942
|
{
|
|
876
943
|
style: {
|
|
877
944
|
display: "grid",
|
|
@@ -1219,7 +1286,7 @@ function PublicFoodCard({
|
|
|
1219
1286
|
}
|
|
1220
1287
|
|
|
1221
1288
|
// src/FoodMenuSection.tsx
|
|
1222
|
-
import { Box as
|
|
1289
|
+
import { Box as Box6, Group as Group13, SimpleGrid as SimpleGrid3, Stack as Stack16, Text as Text15, Title as Title13 } from "@mantine/core";
|
|
1223
1290
|
import { Fragment as Fragment2, jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1224
1291
|
function FoodMenuSection({
|
|
1225
1292
|
title,
|
|
@@ -1243,7 +1310,7 @@ function FoodMenuSection({
|
|
|
1243
1310
|
}
|
|
1244
1311
|
);
|
|
1245
1312
|
}
|
|
1246
|
-
return /* @__PURE__ */ jsx21(
|
|
1313
|
+
return /* @__PURE__ */ jsx21(Box6, { component: "section", "aria-label": typeof title === "string" ? title : "Food menu section", children: /* @__PURE__ */ jsxs16(Stack16, { gap: "xl", children: [
|
|
1247
1314
|
/* @__PURE__ */ jsxs16(Group13, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
|
|
1248
1315
|
/* @__PURE__ */ jsxs16(Stack16, { gap: 4, children: [
|
|
1249
1316
|
eyebrow ? /* @__PURE__ */ jsx21(Text15, { size: "xs", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
|
|
@@ -1308,7 +1375,7 @@ function DataToolbar({
|
|
|
1308
1375
|
}
|
|
1309
1376
|
|
|
1310
1377
|
// src/BrowseSurface.tsx
|
|
1311
|
-
import { Badge as Badge12, Box as
|
|
1378
|
+
import { Badge as Badge12, Box as Box7, Button as Button2, Group as Group15, Paper as Paper4, SimpleGrid as SimpleGrid4, Stack as Stack18, Text as Text16, Title as Title14 } from "@mantine/core";
|
|
1312
1379
|
import { jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1313
1380
|
function BrowseSurface({
|
|
1314
1381
|
eyebrow,
|
|
@@ -1392,7 +1459,7 @@ function BrowseSurface({
|
|
|
1392
1459
|
...toolbar,
|
|
1393
1460
|
activeFilters: toolbarFilters.length ? toolbarFilters : toolbar.fallbackActiveFilters
|
|
1394
1461
|
}
|
|
1395
|
-
) : /* @__PURE__ */ jsx23(
|
|
1462
|
+
) : /* @__PURE__ */ jsx23(Box7, {}),
|
|
1396
1463
|
sortControl ? /* @__PURE__ */ jsxs18(Stack18, { gap: "xs", align: "stretch", children: [
|
|
1397
1464
|
/* @__PURE__ */ jsx23(Text16, { size: "sm", fw: 600, c: "dimmed", children: "Sort" }),
|
|
1398
1465
|
sortControl
|
|
@@ -1402,7 +1469,7 @@ function BrowseSurface({
|
|
|
1402
1469
|
/* @__PURE__ */ jsx23(Text16, { size: "sm", fw: 600, c: "dimmed", children: "Filters" }),
|
|
1403
1470
|
mobileFilters
|
|
1404
1471
|
] }) : null,
|
|
1405
|
-
filterDrawer ? /* @__PURE__ */ jsx23(
|
|
1472
|
+
filterDrawer ? /* @__PURE__ */ jsx23(Box7, { hiddenFrom: "lg", children: filterDrawer }) : null,
|
|
1406
1473
|
activeFilters.length ? /* @__PURE__ */ jsx23(Group15, { gap: "xs", wrap: "wrap", children: activeFilters.map((filter) => /* @__PURE__ */ jsx23(
|
|
1407
1474
|
Badge12,
|
|
1408
1475
|
{
|
|
@@ -1474,16 +1541,16 @@ function PublicNav({ items, activeId, renderLink }) {
|
|
|
1474
1541
|
}
|
|
1475
1542
|
|
|
1476
1543
|
// src/PublicShell.tsx
|
|
1477
|
-
import { AppShell, Box as
|
|
1544
|
+
import { AppShell, Box as Box8, Burger, Container, Group as Group17, Stack as Stack20, Text as Text17 } from "@mantine/core";
|
|
1478
1545
|
import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1479
1546
|
function InlineMobileNavigation({
|
|
1480
1547
|
mobileNavigation,
|
|
1481
1548
|
className,
|
|
1482
1549
|
mode
|
|
1483
1550
|
}) {
|
|
1484
|
-
return /* @__PURE__ */ jsxs20(
|
|
1551
|
+
return /* @__PURE__ */ jsxs20(Box8, { component: "details", hiddenFrom: "sm", className, children: [
|
|
1485
1552
|
/* @__PURE__ */ jsxs20(
|
|
1486
|
-
|
|
1553
|
+
Box8,
|
|
1487
1554
|
{
|
|
1488
1555
|
component: "summary",
|
|
1489
1556
|
"aria-label": mode === "drawer" ? "Open site navigation drawer" : "Open site navigation",
|
|
@@ -1501,7 +1568,7 @@ function InlineMobileNavigation({
|
|
|
1501
1568
|
}
|
|
1502
1569
|
),
|
|
1503
1570
|
/* @__PURE__ */ jsx26(
|
|
1504
|
-
|
|
1571
|
+
Box8,
|
|
1505
1572
|
{
|
|
1506
1573
|
mt: "sm",
|
|
1507
1574
|
p: "sm",
|
|
@@ -1562,7 +1629,7 @@ function PublicShell({
|
|
|
1562
1629
|
mode: mobileNavigationMode
|
|
1563
1630
|
}
|
|
1564
1631
|
) : null,
|
|
1565
|
-
/* @__PURE__ */ jsx26(
|
|
1632
|
+
/* @__PURE__ */ jsx26(Box8, { children: brand })
|
|
1566
1633
|
] }),
|
|
1567
1634
|
/* @__PURE__ */ jsx26(Group17, { visibleFrom: "sm", gap: headerVariant === "compact" ? "md" : "lg", className: classNames?.navigation, children: resolvedNavigation }),
|
|
1568
1635
|
/* @__PURE__ */ jsx26(Group17, { gap: "sm", className: classNames?.actions, children: actions })
|
|
@@ -1572,7 +1639,7 @@ function PublicShell({
|
|
|
1572
1639
|
usesSheetMobileNavigation ? /* @__PURE__ */ jsx26(AppShell.Footer, { withBorder: true, children: /* @__PURE__ */ jsx26(Container, { size: containerSize, h: "100%", children: /* @__PURE__ */ jsx26(Group17, { h: "100%", justify: "space-around", wrap: "nowrap", children: mobileNavigation }) }) }) : null,
|
|
1573
1640
|
/* @__PURE__ */ jsxs20(AppShell.Main, { children: [
|
|
1574
1641
|
/* @__PURE__ */ jsx26(Container, { size: containerSize, py: mainPadding, className: classNames?.content, children: /* @__PURE__ */ jsx26(Stack20, { gap: "xl", children }) }),
|
|
1575
|
-
footer ? /* @__PURE__ */ jsx26(
|
|
1642
|
+
footer ? /* @__PURE__ */ jsx26(Box8, { component: typeof footer === "string" ? "footer" : "div", py: "xl", children: /* @__PURE__ */ jsx26(Container, { size: containerSize, children: typeof footer === "string" ? /* @__PURE__ */ jsx26(Text17, { size: "sm", c: "dimmed", children: footer }) : footer }) }) : null
|
|
1576
1643
|
] })
|
|
1577
1644
|
]
|
|
1578
1645
|
}
|
|
@@ -1590,7 +1657,7 @@ function PublicSiteFooter({ children, meta }) {
|
|
|
1590
1657
|
}
|
|
1591
1658
|
|
|
1592
1659
|
// src/PublicBrandFooter.tsx
|
|
1593
|
-
import { Box as
|
|
1660
|
+
import { Box as Box9, Divider as Divider3, Grid, Group as Group19, Paper as Paper6, Stack as Stack22, Text as Text19, Title as Title15 } from "@mantine/core";
|
|
1594
1661
|
import { Fragment as Fragment4, jsx as jsx28, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
1595
1662
|
function PublicBrandFooter({
|
|
1596
1663
|
media,
|
|
@@ -1617,11 +1684,11 @@ function PublicBrandFooter({
|
|
|
1617
1684
|
"data-layout-variant": layoutVariant,
|
|
1618
1685
|
children: /* @__PURE__ */ jsxs22(Stack22, { gap: "lg", children: [
|
|
1619
1686
|
/* @__PURE__ */ jsxs22(Grid, { gutter: compact ? "lg" : "xl", align: "flex-start", children: [
|
|
1620
|
-
media ? /* @__PURE__ */ jsx28(Grid.Col, { span: { base: 12, md: mediaSpan }, children: /* @__PURE__ */ jsx28(
|
|
1687
|
+
media ? /* @__PURE__ */ jsx28(Grid.Col, { span: { base: 12, md: mediaSpan }, children: /* @__PURE__ */ jsx28(Box9, { className: classNames?.media, children: media }) }) : null,
|
|
1621
1688
|
/* @__PURE__ */ jsx28(Grid.Col, { span: { base: 12, md: primarySpan }, children: /* @__PURE__ */ jsxs22(Stack22, { gap: compact ? "xs" : "sm", className: classNames?.primary, children: [
|
|
1622
1689
|
brandTitle ? /* @__PURE__ */ jsx28(Title15, { order: 4, children: brandTitle }) : null,
|
|
1623
1690
|
description ? /* @__PURE__ */ jsx28(Text19, { c: "dimmed", children: description }) : null,
|
|
1624
|
-
actions ? /* @__PURE__ */ jsx28(
|
|
1691
|
+
actions ? /* @__PURE__ */ jsx28(Box9, { children: actions }) : null
|
|
1625
1692
|
] }) }),
|
|
1626
1693
|
secondary ? /* @__PURE__ */ jsx28(Grid.Col, { span: { base: 12, md: secondarySpan }, children: /* @__PURE__ */ jsx28(Stack22, { gap: compact ? "xs" : "sm", className: classNames?.secondary, children: secondary }) }) : null
|
|
1627
1694
|
] }),
|
|
@@ -1635,78 +1702,237 @@ function PublicBrandFooter({
|
|
|
1635
1702
|
}
|
|
1636
1703
|
|
|
1637
1704
|
// src/AuthShell.tsx
|
|
1638
|
-
import { Box as
|
|
1705
|
+
import { Alert, Badge as Badge13, Box as Box10, Card as Card8, Container as Container2, Divider as Divider4, Group as Group20, Stack as Stack23, Text as Text20, Title as Title16 } from "@mantine/core";
|
|
1639
1706
|
import { jsx as jsx29, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
1640
1707
|
function AuthShell({
|
|
1641
1708
|
title,
|
|
1642
1709
|
description,
|
|
1710
|
+
intent = "sign-in",
|
|
1643
1711
|
brand,
|
|
1644
1712
|
headerActions,
|
|
1645
1713
|
footer,
|
|
1646
1714
|
helper,
|
|
1715
|
+
error,
|
|
1716
|
+
guestAction,
|
|
1717
|
+
supportAction,
|
|
1647
1718
|
socialAuth,
|
|
1648
1719
|
dividerLabel = "Or continue with your account",
|
|
1649
1720
|
children
|
|
1650
1721
|
}) {
|
|
1651
|
-
return /* @__PURE__ */ jsx29(
|
|
1722
|
+
return /* @__PURE__ */ jsx29(Box10, { py: { base: "xl", md: "4rem" }, children: /* @__PURE__ */ jsx29(Container2, { size: "xs", children: /* @__PURE__ */ jsxs23(Stack23, { gap: "xl", children: [
|
|
1652
1723
|
brand || headerActions ? /* @__PURE__ */ jsxs23(Group20, { justify: brand && headerActions ? "space-between" : "center", align: "center", children: [
|
|
1653
|
-
brand ? /* @__PURE__ */ jsx29(
|
|
1724
|
+
brand ? /* @__PURE__ */ jsx29(Box10, { children: brand }) : /* @__PURE__ */ jsx29(Box10, {}),
|
|
1654
1725
|
headerActions ? /* @__PURE__ */ jsx29(Group20, { gap: "sm", children: headerActions }) : null
|
|
1655
1726
|
] }) : null,
|
|
1656
1727
|
/* @__PURE__ */ jsx29(Card8, { withBorder: true, radius: "lg", padding: "xl", children: /* @__PURE__ */ jsxs23(Stack23, { gap: "lg", children: [
|
|
1657
1728
|
/* @__PURE__ */ jsxs23(Stack23, { gap: "xs", ta: "center", children: [
|
|
1729
|
+
/* @__PURE__ */ jsx29(Group20, { justify: "center", children: /* @__PURE__ */ jsx29(Badge13, { variant: "light", color: intent === "account-linking" ? "blue" : intent === "guest-entry" ? "gray" : "teal", children: intent.replace("-", " ") }) }),
|
|
1658
1730
|
/* @__PURE__ */ jsx29(Title16, { order: 2, children: title }),
|
|
1659
1731
|
description ? /* @__PURE__ */ jsx29(Text20, { c: "dimmed", size: "sm", children: description }) : null
|
|
1660
1732
|
] }),
|
|
1661
|
-
|
|
1733
|
+
error ? /* @__PURE__ */ jsx29(Alert, { color: "red", variant: "light", role: "alert", children: error }) : null,
|
|
1734
|
+
socialAuth ? /* @__PURE__ */ jsx29(Box10, { children: socialAuth }) : null,
|
|
1662
1735
|
socialAuth ? /* @__PURE__ */ jsx29(Divider4, { label: dividerLabel, labelPosition: "center" }) : null,
|
|
1663
1736
|
children,
|
|
1737
|
+
guestAction || supportAction ? /* @__PURE__ */ jsxs23(Group20, { justify: "center", gap: "sm", children: [
|
|
1738
|
+
guestAction,
|
|
1739
|
+
supportAction
|
|
1740
|
+
] }) : null,
|
|
1664
1741
|
helper ? /* @__PURE__ */ jsx29(Text20, { size: "sm", c: "dimmed", ta: "center", children: helper }) : null
|
|
1665
1742
|
] }) }),
|
|
1666
1743
|
footer ? /* @__PURE__ */ jsx29(Text20, { size: "sm", c: "dimmed", ta: "center", children: footer }) : null
|
|
1667
1744
|
] }) }) });
|
|
1668
1745
|
}
|
|
1669
1746
|
|
|
1670
|
-
// src/
|
|
1671
|
-
import { Button as Button3,
|
|
1747
|
+
// src/ProviderIdentityButtons.tsx
|
|
1748
|
+
import { Button as Button3, SimpleGrid as SimpleGrid5, Stack as Stack24, Text as Text21, ThemeIcon as ThemeIcon7 } from "@mantine/core";
|
|
1672
1749
|
import { jsx as jsx30, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
1673
|
-
var
|
|
1674
|
-
google: {
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1750
|
+
var PROVIDER_IDENTITY_REGISTRY = {
|
|
1751
|
+
google: {
|
|
1752
|
+
providerLabel: "Google",
|
|
1753
|
+
markLabel: "G",
|
|
1754
|
+
brandColor: "red"
|
|
1755
|
+
},
|
|
1756
|
+
apple: {
|
|
1757
|
+
providerLabel: "Apple",
|
|
1758
|
+
markLabel: "A",
|
|
1759
|
+
brandColor: "dark"
|
|
1760
|
+
},
|
|
1761
|
+
github: {
|
|
1762
|
+
providerLabel: "GitHub",
|
|
1763
|
+
markLabel: "GH",
|
|
1764
|
+
brandColor: "gray"
|
|
1765
|
+
},
|
|
1766
|
+
facebook: {
|
|
1767
|
+
providerLabel: "Facebook",
|
|
1768
|
+
markLabel: "F",
|
|
1769
|
+
brandColor: "blue"
|
|
1770
|
+
},
|
|
1771
|
+
microsoft: {
|
|
1772
|
+
providerLabel: "Microsoft",
|
|
1773
|
+
markLabel: "M",
|
|
1774
|
+
brandColor: "cyan"
|
|
1775
|
+
},
|
|
1776
|
+
linkedin: {
|
|
1777
|
+
providerLabel: "LinkedIn",
|
|
1778
|
+
markLabel: "in",
|
|
1779
|
+
brandColor: "blue"
|
|
1780
|
+
},
|
|
1781
|
+
discord: {
|
|
1782
|
+
providerLabel: "Discord",
|
|
1783
|
+
markLabel: "D",
|
|
1784
|
+
brandColor: "indigo"
|
|
1785
|
+
},
|
|
1786
|
+
x: {
|
|
1787
|
+
providerLabel: "X",
|
|
1788
|
+
markLabel: "X",
|
|
1789
|
+
brandColor: "dark"
|
|
1790
|
+
},
|
|
1791
|
+
email: {
|
|
1792
|
+
providerLabel: "Email",
|
|
1793
|
+
markLabel: "@",
|
|
1794
|
+
brandColor: "gray"
|
|
1795
|
+
}
|
|
1683
1796
|
};
|
|
1684
|
-
function
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
const
|
|
1797
|
+
function normalizeProviderId(provider) {
|
|
1798
|
+
return (provider ?? "").trim().toLowerCase();
|
|
1799
|
+
}
|
|
1800
|
+
function isSupportedProviderId(provider) {
|
|
1801
|
+
return provider in PROVIDER_IDENTITY_REGISTRY;
|
|
1802
|
+
}
|
|
1803
|
+
function getProviderIdentityMeta(provider) {
|
|
1804
|
+
const normalized = normalizeProviderId(provider);
|
|
1805
|
+
if (isSupportedProviderId(normalized)) {
|
|
1806
|
+
return {
|
|
1807
|
+
id: normalized,
|
|
1808
|
+
supported: true,
|
|
1809
|
+
...PROVIDER_IDENTITY_REGISTRY[normalized]
|
|
1810
|
+
};
|
|
1811
|
+
}
|
|
1812
|
+
return {
|
|
1813
|
+
id: normalized || "provider",
|
|
1814
|
+
supported: false,
|
|
1815
|
+
providerLabel: provider ? provider : "Provider",
|
|
1816
|
+
markLabel: (provider ?? "PR").slice(0, 2).toUpperCase(),
|
|
1817
|
+
brandColor: "gray"
|
|
1818
|
+
};
|
|
1819
|
+
}
|
|
1820
|
+
function resolveProviderLabel(provider, customLabel) {
|
|
1821
|
+
const meta = getProviderIdentityMeta(provider);
|
|
1822
|
+
if (customLabel != null) {
|
|
1823
|
+
return customLabel;
|
|
1824
|
+
}
|
|
1825
|
+
return `Continue with ${meta.providerLabel}`;
|
|
1826
|
+
}
|
|
1827
|
+
function mapVariant(variant = "neutral") {
|
|
1828
|
+
if (variant === "solid") {
|
|
1829
|
+
return "filled";
|
|
1830
|
+
}
|
|
1831
|
+
if (variant === "outline") {
|
|
1832
|
+
return "outline";
|
|
1833
|
+
}
|
|
1834
|
+
return "default";
|
|
1835
|
+
}
|
|
1836
|
+
function getProviderIdentityLabel(provider, fallbackOverride) {
|
|
1837
|
+
return resolveProviderLabel(provider, fallbackOverride);
|
|
1838
|
+
}
|
|
1839
|
+
function getSupportedProviderIdentityIds() {
|
|
1840
|
+
return Object.keys(PROVIDER_IDENTITY_REGISTRY);
|
|
1841
|
+
}
|
|
1842
|
+
function getProviderIdentityPolicy(provider) {
|
|
1843
|
+
const meta = getProviderIdentityMeta(provider);
|
|
1844
|
+
return {
|
|
1845
|
+
id: meta.id,
|
|
1846
|
+
supported: meta.supported,
|
|
1847
|
+
providerLabel: meta.providerLabel,
|
|
1848
|
+
colorAuthority: meta.supported ? "provider" : "gds-neutral",
|
|
1849
|
+
minTouchTargetPx: 44,
|
|
1850
|
+
allowedVariants: ["solid", "outline", "neutral"]
|
|
1851
|
+
};
|
|
1852
|
+
}
|
|
1853
|
+
function ProviderIdentityMark({ provider }) {
|
|
1854
|
+
const meta = getProviderIdentityMeta(provider);
|
|
1855
|
+
return /* @__PURE__ */ jsx30(
|
|
1856
|
+
ThemeIcon7,
|
|
1857
|
+
{
|
|
1858
|
+
variant: "light",
|
|
1859
|
+
color: meta.brandColor,
|
|
1860
|
+
radius: "xl",
|
|
1861
|
+
size: "md",
|
|
1862
|
+
"aria-hidden": "true",
|
|
1863
|
+
children: /* @__PURE__ */ jsx30(Text21, { size: "xs", fw: 700, c: "inherit", children: meta.markLabel })
|
|
1864
|
+
}
|
|
1865
|
+
);
|
|
1866
|
+
}
|
|
1867
|
+
function ProviderIdentityButton({
|
|
1868
|
+
provider,
|
|
1869
|
+
label,
|
|
1870
|
+
description,
|
|
1871
|
+
policyNote,
|
|
1872
|
+
error,
|
|
1873
|
+
href,
|
|
1874
|
+
onClick,
|
|
1875
|
+
disabled,
|
|
1876
|
+
loading,
|
|
1877
|
+
tenantDisabledReason,
|
|
1878
|
+
fullWidth = true,
|
|
1879
|
+
size = "md",
|
|
1880
|
+
variant = "neutral",
|
|
1881
|
+
ariaLabel,
|
|
1882
|
+
describedBy,
|
|
1883
|
+
minTouchTargetPx = 44
|
|
1884
|
+
}) {
|
|
1885
|
+
const meta = getProviderIdentityMeta(provider);
|
|
1886
|
+
const buttonLabel = resolveProviderLabel(provider, label);
|
|
1887
|
+
const resolvedDisabled = disabled || Boolean(tenantDisabledReason);
|
|
1888
|
+
const buttonProps = href ? {
|
|
1889
|
+
component: "a",
|
|
1890
|
+
href
|
|
1891
|
+
} : {
|
|
1892
|
+
onClick
|
|
1893
|
+
};
|
|
1692
1894
|
return /* @__PURE__ */ jsx30(
|
|
1693
1895
|
Button3,
|
|
1694
1896
|
{
|
|
1695
|
-
variant:
|
|
1897
|
+
variant: mapVariant(variant),
|
|
1898
|
+
color: variant === "solid" ? meta.brandColor : void 0,
|
|
1696
1899
|
justify: "space-between",
|
|
1697
|
-
fullWidth
|
|
1698
|
-
size
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1900
|
+
fullWidth,
|
|
1901
|
+
size,
|
|
1902
|
+
"aria-label": ariaLabel ?? (typeof buttonLabel === "string" ? buttonLabel : void 0),
|
|
1903
|
+
"aria-describedby": describedBy,
|
|
1904
|
+
leftSection: /* @__PURE__ */ jsx30(ProviderIdentityMark, { provider }),
|
|
1905
|
+
disabled: resolvedDisabled,
|
|
1906
|
+
loading,
|
|
1907
|
+
styles: { root: { minHeight: minTouchTargetPx } },
|
|
1702
1908
|
...buttonProps,
|
|
1703
1909
|
children: /* @__PURE__ */ jsxs24(Stack24, { gap: 0, align: "flex-start", children: [
|
|
1704
|
-
/* @__PURE__ */ jsx30(Text21, { inherit: true, children:
|
|
1705
|
-
|
|
1910
|
+
/* @__PURE__ */ jsx30(Text21, { inherit: true, children: buttonLabel }),
|
|
1911
|
+
description ? /* @__PURE__ */ jsx30(Text21, { size: "xs", c: "dimmed", lh: 1.2, children: description }) : null,
|
|
1912
|
+
policyNote ? /* @__PURE__ */ jsx30(Text21, { size: "xs", c: "dimmed", lh: 1.2, children: policyNote }) : null,
|
|
1913
|
+
tenantDisabledReason ? /* @__PURE__ */ jsx30(Text21, { size: "xs", c: "orange.7", lh: 1.2, children: tenantDisabledReason }) : null,
|
|
1914
|
+
error ? /* @__PURE__ */ jsx30(Text21, { size: "xs", c: "red.7", lh: 1.2, role: "alert", children: error }) : null
|
|
1706
1915
|
] })
|
|
1707
1916
|
}
|
|
1708
1917
|
);
|
|
1709
1918
|
}
|
|
1919
|
+
function ProviderIdentityButtonGroup({ providers, layout = "stack" }) {
|
|
1920
|
+
if (!providers.length) {
|
|
1921
|
+
return null;
|
|
1922
|
+
}
|
|
1923
|
+
const content = providers.map((entry, index) => {
|
|
1924
|
+
const key = `${normalizeProviderId(String(entry.provider)) || "provider"}-${index}`;
|
|
1925
|
+
return /* @__PURE__ */ jsx30(ProviderIdentityButton, { ...entry }, key);
|
|
1926
|
+
});
|
|
1927
|
+
if (layout === "grid") {
|
|
1928
|
+
return /* @__PURE__ */ jsx30(SimpleGrid5, { cols: { base: 1, sm: 2 }, spacing: "sm", children: content });
|
|
1929
|
+
}
|
|
1930
|
+
return /* @__PURE__ */ jsx30(Stack24, { gap: "sm", children: content });
|
|
1931
|
+
}
|
|
1932
|
+
|
|
1933
|
+
// src/SocialAuthButtons.tsx
|
|
1934
|
+
import { Divider as Divider5, Group as Group21, Stack as Stack25, Text as Text22 } from "@mantine/core";
|
|
1935
|
+
import { jsx as jsx31, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
1710
1936
|
function SocialAuthButtons({
|
|
1711
1937
|
providers,
|
|
1712
1938
|
title = "Continue with a trusted provider",
|
|
@@ -1717,54 +1943,67 @@ function SocialAuthButtons({
|
|
|
1717
1943
|
if (!providers.length) {
|
|
1718
1944
|
return null;
|
|
1719
1945
|
}
|
|
1720
|
-
const
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1946
|
+
const buttons = providers.map((provider) => ({
|
|
1947
|
+
provider: provider.id,
|
|
1948
|
+
label: provider.label,
|
|
1949
|
+
description: provider.description,
|
|
1950
|
+
policyNote: provider.policyNote,
|
|
1951
|
+
error: provider.error,
|
|
1952
|
+
href: provider.href,
|
|
1953
|
+
onClick: provider.onClick,
|
|
1954
|
+
disabled: provider.disabled,
|
|
1955
|
+
loading: provider.loading,
|
|
1956
|
+
tenantDisabledReason: provider.tenantDisabledReason,
|
|
1957
|
+
size: provider.size ?? (compact ? "sm" : "md"),
|
|
1958
|
+
variant: provider.variant
|
|
1959
|
+
}));
|
|
1960
|
+
return /* @__PURE__ */ jsxs25(Stack25, { gap: "md", children: [
|
|
1961
|
+
/* @__PURE__ */ jsxs25(Stack25, { gap: 4, ta: "center", children: [
|
|
1962
|
+
/* @__PURE__ */ jsxs25(Group21, { justify: "center", gap: "xs", children: [
|
|
1963
|
+
/* @__PURE__ */ jsx31(GdsIcons.Login, { size: "1rem" }),
|
|
1964
|
+
/* @__PURE__ */ jsx31(Text22, { fw: 600, children: title })
|
|
1726
1965
|
] }),
|
|
1727
|
-
description ? /* @__PURE__ */
|
|
1966
|
+
description ? /* @__PURE__ */ jsx31(Text22, { size: "sm", c: "dimmed", children: description }) : null
|
|
1728
1967
|
] }),
|
|
1729
|
-
/* @__PURE__ */
|
|
1730
|
-
|
|
1968
|
+
/* @__PURE__ */ jsx31(Divider5, {}),
|
|
1969
|
+
/* @__PURE__ */ jsx31(ProviderIdentityButtonGroup, { providers: buttons, layout })
|
|
1731
1970
|
] });
|
|
1732
1971
|
}
|
|
1733
1972
|
|
|
1734
1973
|
// src/ArticleShell.tsx
|
|
1735
|
-
import { Container as Container3, Group as Group22, Stack as
|
|
1736
|
-
import { jsx as
|
|
1974
|
+
import { Container as Container3, Group as Group22, Stack as Stack26, Text as Text23, Title as Title17 } from "@mantine/core";
|
|
1975
|
+
import { jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
1737
1976
|
function ArticleShell({ eyebrow, title, lead, meta, sideRail, children }) {
|
|
1738
|
-
return /* @__PURE__ */
|
|
1739
|
-
/* @__PURE__ */
|
|
1740
|
-
/* @__PURE__ */
|
|
1741
|
-
eyebrow ? /* @__PURE__ */
|
|
1742
|
-
/* @__PURE__ */
|
|
1743
|
-
lead ? /* @__PURE__ */
|
|
1744
|
-
meta ? /* @__PURE__ */
|
|
1977
|
+
return /* @__PURE__ */ jsx32(Container3, { size: "lg", py: "xl", children: /* @__PURE__ */ jsxs26(Group22, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
|
|
1978
|
+
/* @__PURE__ */ jsxs26(Stack26, { gap: "lg", maw: 760, flex: 1, children: [
|
|
1979
|
+
/* @__PURE__ */ jsxs26(Stack26, { gap: "sm", children: [
|
|
1980
|
+
eyebrow ? /* @__PURE__ */ jsx32(Text23, { size: "sm", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
|
|
1981
|
+
/* @__PURE__ */ jsx32(Title17, { order: 1, children: title }),
|
|
1982
|
+
lead ? /* @__PURE__ */ jsx32(Text23, { size: "lg", c: "dimmed", children: lead }) : null,
|
|
1983
|
+
meta ? /* @__PURE__ */ jsx32(Group22, { gap: "md", children: meta }) : null
|
|
1745
1984
|
] }),
|
|
1746
|
-
/* @__PURE__ */
|
|
1985
|
+
/* @__PURE__ */ jsx32(Stack26, { gap: "md", children })
|
|
1747
1986
|
] }),
|
|
1748
|
-
sideRail ? /* @__PURE__ */
|
|
1987
|
+
sideRail ? /* @__PURE__ */ jsx32(Stack26, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
|
|
1749
1988
|
] }) });
|
|
1750
1989
|
}
|
|
1751
1990
|
|
|
1752
1991
|
// src/CtaButtonGroup.tsx
|
|
1753
|
-
import { Group as Group23, Stack as
|
|
1754
|
-
import { jsx as
|
|
1992
|
+
import { Group as Group23, Stack as Stack27 } from "@mantine/core";
|
|
1993
|
+
import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
1755
1994
|
function CtaButtonGroup({ primary, secondary, tertiary }) {
|
|
1756
|
-
return /* @__PURE__ */
|
|
1757
|
-
/* @__PURE__ */
|
|
1758
|
-
/* @__PURE__ */
|
|
1759
|
-
secondary ? /* @__PURE__ */
|
|
1995
|
+
return /* @__PURE__ */ jsxs27(Stack27, { gap: "sm", children: [
|
|
1996
|
+
/* @__PURE__ */ jsxs27(Group23, { gap: "sm", align: "stretch", children: [
|
|
1997
|
+
/* @__PURE__ */ jsx33("div", { children: primary }),
|
|
1998
|
+
secondary ? /* @__PURE__ */ jsx33("div", { children: secondary }) : null
|
|
1760
1999
|
] }),
|
|
1761
|
-
tertiary ? /* @__PURE__ */
|
|
2000
|
+
tertiary ? /* @__PURE__ */ jsx33("div", { children: tertiary }) : null
|
|
1762
2001
|
] });
|
|
1763
2002
|
}
|
|
1764
2003
|
|
|
1765
2004
|
// src/DocsPageShell.tsx
|
|
1766
|
-
import { Anchor as Anchor5, Breadcrumbs, Container as Container4, Group as Group24, Stack as
|
|
1767
|
-
import { jsx as
|
|
2005
|
+
import { Anchor as Anchor5, Breadcrumbs, Container as Container4, Group as Group24, Stack as Stack28, Text as Text24, Title as Title18 } from "@mantine/core";
|
|
2006
|
+
import { jsx as jsx34, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
1768
2007
|
function DocsPageShell({
|
|
1769
2008
|
breadcrumbs = [],
|
|
1770
2009
|
title,
|
|
@@ -1775,27 +2014,27 @@ function DocsPageShell({
|
|
|
1775
2014
|
footerNext,
|
|
1776
2015
|
children
|
|
1777
2016
|
}) {
|
|
1778
|
-
return /* @__PURE__ */
|
|
1779
|
-
/* @__PURE__ */
|
|
1780
|
-
breadcrumbs.length ? /* @__PURE__ */
|
|
1781
|
-
(crumb) => crumb.href ? /* @__PURE__ */
|
|
2017
|
+
return /* @__PURE__ */ jsx34(Container4, { fluid: true, py: "xl", px: { base: "md", md: "lg", lg: "xl" }, w: "100%", maw: "100%", children: /* @__PURE__ */ jsxs28(Group24, { align: "flex-start", gap: "xl", wrap: "nowrap", children: [
|
|
2018
|
+
/* @__PURE__ */ jsxs28(Stack28, { component: "article", gap: "lg", flex: 1, miw: 0, children: [
|
|
2019
|
+
breadcrumbs.length ? /* @__PURE__ */ jsx34(Breadcrumbs, { children: breadcrumbs.map(
|
|
2020
|
+
(crumb) => crumb.href ? /* @__PURE__ */ jsx34(Anchor5, { href: crumb.href, children: crumb.label }, `${crumb.label}-${crumb.href}`) : /* @__PURE__ */ jsx34(Text24, { children: crumb.label }, crumb.label)
|
|
1782
2021
|
) }) : null,
|
|
1783
|
-
/* @__PURE__ */
|
|
1784
|
-
eyebrow ? /* @__PURE__ */
|
|
1785
|
-
/* @__PURE__ */
|
|
1786
|
-
lead ? /* @__PURE__ */
|
|
1787
|
-
meta ? /* @__PURE__ */
|
|
2022
|
+
/* @__PURE__ */ jsxs28(Stack28, { gap: "sm", children: [
|
|
2023
|
+
eyebrow ? /* @__PURE__ */ jsx34(Text24, { size: "sm", fw: 700, c: "dimmed", children: eyebrow }) : null,
|
|
2024
|
+
/* @__PURE__ */ jsx34(Title18, { order: 1, children: title }),
|
|
2025
|
+
lead ? /* @__PURE__ */ jsx34(Text24, { size: "lg", c: "dimmed", children: lead }) : null,
|
|
2026
|
+
meta ? /* @__PURE__ */ jsx34(Group24, { gap: "md", children: meta }) : null
|
|
1788
2027
|
] }),
|
|
1789
|
-
/* @__PURE__ */
|
|
1790
|
-
footerNext ? /* @__PURE__ */
|
|
2028
|
+
/* @__PURE__ */ jsx34(Stack28, { gap: "md", children }),
|
|
2029
|
+
footerNext ? /* @__PURE__ */ jsx34(Anchor5, { href: footerNext.href, fw: 600, children: footerNext.label }) : null
|
|
1791
2030
|
] }),
|
|
1792
|
-
sideRail ? /* @__PURE__ */
|
|
2031
|
+
sideRail ? /* @__PURE__ */ jsx34(Stack28, { visibleFrom: "lg", gap: "md", w: 240, children: sideRail }) : null
|
|
1793
2032
|
] }) });
|
|
1794
2033
|
}
|
|
1795
2034
|
|
|
1796
2035
|
// src/EditorialHero.tsx
|
|
1797
|
-
import { Anchor as Anchor6, AspectRatio as AspectRatio5, Box as
|
|
1798
|
-
import { jsx as
|
|
2036
|
+
import { Anchor as Anchor6, AspectRatio as AspectRatio5, Box as Box11, Grid as Grid2, Group as Group25, Paper as Paper7, Skeleton as Skeleton3, Stack as Stack29, Text as Text25, ThemeIcon as ThemeIcon8, Title as Title19 } from "@mantine/core";
|
|
2037
|
+
import { jsx as jsx35, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
1799
2038
|
function resolveActionVariant(action, index, seenPrimary) {
|
|
1800
2039
|
const requested = action.variant ?? (index === 0 ? "primary" : "secondary");
|
|
1801
2040
|
if (requested === "primary" && !seenPrimary) {
|
|
@@ -1807,7 +2046,7 @@ function resolveActionVariant(action, index, seenPrimary) {
|
|
|
1807
2046
|
return { variant: "default", seenPrimary };
|
|
1808
2047
|
}
|
|
1809
2048
|
function HeroAction({ action, variant }) {
|
|
1810
|
-
const content = /* @__PURE__ */
|
|
2049
|
+
const content = /* @__PURE__ */ jsx35(
|
|
1811
2050
|
Anchor6,
|
|
1812
2051
|
{
|
|
1813
2052
|
href: action.href,
|
|
@@ -1832,8 +2071,8 @@ function HeroAction({ action, variant }) {
|
|
|
1832
2071
|
}
|
|
1833
2072
|
);
|
|
1834
2073
|
if (!action.href) {
|
|
1835
|
-
return /* @__PURE__ */
|
|
1836
|
-
|
|
2074
|
+
return /* @__PURE__ */ jsx35(
|
|
2075
|
+
Box11,
|
|
1837
2076
|
{
|
|
1838
2077
|
component: "button",
|
|
1839
2078
|
type: "button",
|
|
@@ -1860,22 +2099,22 @@ function HeroAction({ action, variant }) {
|
|
|
1860
2099
|
return content;
|
|
1861
2100
|
}
|
|
1862
2101
|
function LoadingHero({ compact }) {
|
|
1863
|
-
return /* @__PURE__ */
|
|
1864
|
-
/* @__PURE__ */
|
|
1865
|
-
/* @__PURE__ */
|
|
1866
|
-
/* @__PURE__ */
|
|
1867
|
-
/* @__PURE__ */
|
|
1868
|
-
/* @__PURE__ */
|
|
1869
|
-
/* @__PURE__ */
|
|
1870
|
-
/* @__PURE__ */
|
|
1871
|
-
/* @__PURE__ */
|
|
2102
|
+
return /* @__PURE__ */ jsx35(Paper7, { withBorder: true, radius: "xl", p: compact ? "lg" : "xl", children: /* @__PURE__ */ jsxs29(Grid2, { gutter: compact ? "lg" : "xl", align: "center", children: [
|
|
2103
|
+
/* @__PURE__ */ jsx35(Grid2.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsxs29(Stack29, { gap: "md", children: [
|
|
2104
|
+
/* @__PURE__ */ jsx35(Skeleton3, { height: 16, width: 96, radius: "xl" }),
|
|
2105
|
+
/* @__PURE__ */ jsx35(Skeleton3, { height: 48, width: "90%", radius: "md" }),
|
|
2106
|
+
/* @__PURE__ */ jsx35(Skeleton3, { height: 18, width: "100%", radius: "md" }),
|
|
2107
|
+
/* @__PURE__ */ jsx35(Skeleton3, { height: 18, width: "82%", radius: "md" }),
|
|
2108
|
+
/* @__PURE__ */ jsxs29(Group25, { children: [
|
|
2109
|
+
/* @__PURE__ */ jsx35(Skeleton3, { height: 40, width: 140, radius: "md" }),
|
|
2110
|
+
/* @__PURE__ */ jsx35(Skeleton3, { height: 40, width: 140, radius: "md" })
|
|
1872
2111
|
] })
|
|
1873
2112
|
] }) }),
|
|
1874
|
-
/* @__PURE__ */
|
|
2113
|
+
/* @__PURE__ */ jsx35(Grid2.Col, { span: { base: 12, md: 6 }, children: /* @__PURE__ */ jsx35(AspectRatio5, { ratio: 16 / 11, children: /* @__PURE__ */ jsx35(Skeleton3, { radius: "lg" }) }) })
|
|
1875
2114
|
] }) });
|
|
1876
2115
|
}
|
|
1877
2116
|
function MediaFallback() {
|
|
1878
|
-
return /* @__PURE__ */
|
|
2117
|
+
return /* @__PURE__ */ jsx35(AspectRatio5, { ratio: 16 / 11, children: /* @__PURE__ */ jsx35(
|
|
1879
2118
|
ThemeIcon8,
|
|
1880
2119
|
{
|
|
1881
2120
|
size: "100%",
|
|
@@ -1883,7 +2122,7 @@ function MediaFallback() {
|
|
|
1883
2122
|
color: "gray",
|
|
1884
2123
|
variant: "light",
|
|
1885
2124
|
"aria-label": "Hero media is unavailable",
|
|
1886
|
-
children: /* @__PURE__ */
|
|
2125
|
+
children: /* @__PURE__ */ jsx35(GdsIcons.Gallery, { size: "2.5rem" })
|
|
1887
2126
|
}
|
|
1888
2127
|
) });
|
|
1889
2128
|
}
|
|
@@ -1903,8 +2142,8 @@ function MediaFrame({
|
|
|
1903
2142
|
} else if (mediaFade === "soft-start") {
|
|
1904
2143
|
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%)";
|
|
1905
2144
|
}
|
|
1906
|
-
return /* @__PURE__ */
|
|
1907
|
-
|
|
2145
|
+
return /* @__PURE__ */ jsxs29(
|
|
2146
|
+
Box11,
|
|
1908
2147
|
{
|
|
1909
2148
|
component: "figure",
|
|
1910
2149
|
m: 0,
|
|
@@ -1917,9 +2156,9 @@ function MediaFrame({
|
|
|
1917
2156
|
},
|
|
1918
2157
|
"aria-label": mediaAlt,
|
|
1919
2158
|
children: [
|
|
1920
|
-
media ?? /* @__PURE__ */
|
|
1921
|
-
media && overlayBackground ? /* @__PURE__ */
|
|
1922
|
-
|
|
2159
|
+
media ?? /* @__PURE__ */ jsx35(MediaFallback, {}),
|
|
2160
|
+
media && overlayBackground ? /* @__PURE__ */ jsx35(
|
|
2161
|
+
Box11,
|
|
1923
2162
|
{
|
|
1924
2163
|
"aria-hidden": true,
|
|
1925
2164
|
style: {
|
|
@@ -1952,7 +2191,7 @@ function EditorialHero({
|
|
|
1952
2191
|
classNames
|
|
1953
2192
|
}) {
|
|
1954
2193
|
if (loading) {
|
|
1955
|
-
return /* @__PURE__ */
|
|
2194
|
+
return /* @__PURE__ */ jsx35(LoadingHero, { compact });
|
|
1956
2195
|
}
|
|
1957
2196
|
const stackAlign = align === "center" ? "center" : "flex-start";
|
|
1958
2197
|
const textAlign = align === "center" ? "center" : "left";
|
|
@@ -1960,15 +2199,15 @@ function EditorialHero({
|
|
|
1960
2199
|
const renderedActions = actions.slice(0, 3).map((action, index) => {
|
|
1961
2200
|
const resolved = resolveActionVariant(action, index, seenPrimary);
|
|
1962
2201
|
seenPrimary = resolved.seenPrimary;
|
|
1963
|
-
return /* @__PURE__ */
|
|
2202
|
+
return /* @__PURE__ */ jsx35(HeroAction, { action, variant: resolved.variant }, `${action.label}-${index}`);
|
|
1964
2203
|
});
|
|
1965
|
-
const textSlot = /* @__PURE__ */
|
|
1966
|
-
/* @__PURE__ */
|
|
1967
|
-
eyebrow ? /* @__PURE__ */
|
|
1968
|
-
/* @__PURE__ */
|
|
1969
|
-
description ? /* @__PURE__ */
|
|
2204
|
+
const textSlot = /* @__PURE__ */ jsxs29(Stack29, { gap: compact ? "md" : "lg", justify: "center", h: "100%", className: classNames?.content, children: [
|
|
2205
|
+
/* @__PURE__ */ jsxs29(Stack29, { gap: "sm", align: stackAlign, children: [
|
|
2206
|
+
eyebrow ? /* @__PURE__ */ jsx35(Text25, { size: "sm", fw: 700, c: "dimmed", ta: textAlign, children: eyebrow }) : null,
|
|
2207
|
+
/* @__PURE__ */ jsx35(Title19, { order: 1, maw: 760, ta: textAlign, children: title }),
|
|
2208
|
+
description ? /* @__PURE__ */ jsx35(Text25, { size: compact ? "md" : "lg", c: "dimmed", maw: 720, ta: textAlign, children: description }) : null
|
|
1970
2209
|
] }),
|
|
1971
|
-
renderedActions.length ? /* @__PURE__ */
|
|
2210
|
+
renderedActions.length ? /* @__PURE__ */ jsx35(Box11, { className: classNames?.actions, children: /* @__PURE__ */ jsx35(
|
|
1972
2211
|
CtaButtonGroup,
|
|
1973
2212
|
{
|
|
1974
2213
|
primary: renderedActions[0],
|
|
@@ -1976,7 +2215,7 @@ function EditorialHero({
|
|
|
1976
2215
|
tertiary: renderedActions[2]
|
|
1977
2216
|
}
|
|
1978
2217
|
) }) : null,
|
|
1979
|
-
meta.length ? /* @__PURE__ */
|
|
2218
|
+
meta.length ? /* @__PURE__ */ jsx35(Group25, { gap: "sm", wrap: "wrap", "aria-label": "Supporting details", className: classNames?.meta, children: meta.map((item) => /* @__PURE__ */ jsxs29(
|
|
1980
2219
|
Group25,
|
|
1981
2220
|
{
|
|
1982
2221
|
gap: 6,
|
|
@@ -1988,16 +2227,16 @@ function EditorialHero({
|
|
|
1988
2227
|
},
|
|
1989
2228
|
children: [
|
|
1990
2229
|
item.icon,
|
|
1991
|
-
/* @__PURE__ */
|
|
2230
|
+
/* @__PURE__ */ jsx35(Text25, { size: "sm", c: "dimmed", children: item.label })
|
|
1992
2231
|
]
|
|
1993
2232
|
},
|
|
1994
2233
|
item.id
|
|
1995
2234
|
)) }) : null
|
|
1996
2235
|
] });
|
|
1997
|
-
const mediaSlot = error ? /* @__PURE__ */
|
|
1998
|
-
const textCol = /* @__PURE__ */
|
|
1999
|
-
const mediaCol = /* @__PURE__ */
|
|
2000
|
-
return /* @__PURE__ */
|
|
2236
|
+
const mediaSlot = error ? /* @__PURE__ */ jsx35(AccentPanel, { tone: "red", variant: "soft-outline", title: "Media unavailable", children: error }) : /* @__PURE__ */ jsx35(MediaFrame, { media, mediaAlt, mediaFade, className: classNames?.media });
|
|
2237
|
+
const textCol = /* @__PURE__ */ jsx35(Grid2.Col, { span: { base: 12, md: 6 }, order: { base: 1, md: mediaPosition === "left" ? 2 : 1 }, children: textSlot });
|
|
2238
|
+
const mediaCol = /* @__PURE__ */ jsx35(Grid2.Col, { span: { base: 12, md: 6 }, order: { base: 2, md: mediaPosition === "left" ? 1 : 2 }, children: mediaSlot });
|
|
2239
|
+
return /* @__PURE__ */ jsx35(
|
|
2001
2240
|
Paper7,
|
|
2002
2241
|
{
|
|
2003
2242
|
component: "section",
|
|
@@ -2006,7 +2245,7 @@ function EditorialHero({
|
|
|
2006
2245
|
p: compact ? "lg" : "xl",
|
|
2007
2246
|
className: classNames?.root,
|
|
2008
2247
|
style: surfaceVariant === "flat-public" ? { boxShadow: "none" } : void 0,
|
|
2009
|
-
children: /* @__PURE__ */
|
|
2248
|
+
children: /* @__PURE__ */ jsxs29(Grid2, { gutter: compact ? "lg" : "xl", align: "center", children: [
|
|
2010
2249
|
textCol,
|
|
2011
2250
|
mediaCol
|
|
2012
2251
|
] })
|
|
@@ -2015,19 +2254,19 @@ function EditorialHero({
|
|
|
2015
2254
|
}
|
|
2016
2255
|
|
|
2017
2256
|
// src/FeatureBand.tsx
|
|
2018
|
-
import { Box as
|
|
2019
|
-
import { Fragment as Fragment5, jsx as
|
|
2257
|
+
import { Box as Box12, Group as Group26, Paper as Paper8, SimpleGrid as SimpleGrid6, Skeleton as Skeleton4, Stack as Stack30, Text as Text26, ThemeIcon as ThemeIcon9, Title as Title20 } from "@mantine/core";
|
|
2258
|
+
import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
2020
2259
|
function FeatureBandSkeleton({
|
|
2021
2260
|
columns = 3,
|
|
2022
2261
|
bordered = true,
|
|
2023
2262
|
variant = "default"
|
|
2024
2263
|
}) {
|
|
2025
|
-
return /* @__PURE__ */
|
|
2026
|
-
/* @__PURE__ */
|
|
2027
|
-
/* @__PURE__ */
|
|
2028
|
-
/* @__PURE__ */
|
|
2029
|
-
/* @__PURE__ */
|
|
2030
|
-
/* @__PURE__ */
|
|
2264
|
+
return /* @__PURE__ */ jsx36(SimpleGrid6, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: Array.from({ length: columns }).map((_, index) => /* @__PURE__ */ jsx36(Paper8, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ jsxs30(Stack30, { gap: "md", children: [
|
|
2265
|
+
/* @__PURE__ */ jsx36(Skeleton4, { height: variant === "process" ? 28 : 42, width: variant === "process" ? 72 : 42, radius: "xl" }),
|
|
2266
|
+
/* @__PURE__ */ jsxs30(Stack30, { gap: "xs", children: [
|
|
2267
|
+
/* @__PURE__ */ jsx36(Skeleton4, { height: 20, width: "75%", radius: "md" }),
|
|
2268
|
+
/* @__PURE__ */ jsx36(Skeleton4, { height: 14, width: "100%", radius: "md" }),
|
|
2269
|
+
/* @__PURE__ */ jsx36(Skeleton4, { height: 14, width: "82%", radius: "md" })
|
|
2031
2270
|
] })
|
|
2032
2271
|
] }) }, index)) });
|
|
2033
2272
|
}
|
|
@@ -2040,10 +2279,10 @@ function FeatureBand({
|
|
|
2040
2279
|
variant = "default"
|
|
2041
2280
|
}) {
|
|
2042
2281
|
if (loading) {
|
|
2043
|
-
return /* @__PURE__ */
|
|
2282
|
+
return /* @__PURE__ */ jsx36(FeatureBandSkeleton, { columns, bordered, variant });
|
|
2044
2283
|
}
|
|
2045
2284
|
if (!items.length) {
|
|
2046
|
-
return emptyState ? /* @__PURE__ */
|
|
2285
|
+
return emptyState ? /* @__PURE__ */ jsx36(Fragment5, { children: emptyState }) : /* @__PURE__ */ jsx36(
|
|
2047
2286
|
EmptyState,
|
|
2048
2287
|
{
|
|
2049
2288
|
title: "No supporting details available",
|
|
@@ -2051,9 +2290,9 @@ function FeatureBand({
|
|
|
2051
2290
|
}
|
|
2052
2291
|
);
|
|
2053
2292
|
}
|
|
2054
|
-
return /* @__PURE__ */
|
|
2055
|
-
variant === "process" ? /* @__PURE__ */
|
|
2056
|
-
|
|
2293
|
+
return /* @__PURE__ */ jsx36(Box12, { component: "section", "aria-label": "Supporting features", children: /* @__PURE__ */ jsx36(SimpleGrid6, { cols: { base: 1, sm: Math.min(columns, 2), lg: columns }, spacing: "lg", children: items.map((item, index) => /* @__PURE__ */ jsx36(Paper8, { withBorder: bordered, radius: "lg", p: variant === "compact" ? "md" : "lg", children: /* @__PURE__ */ jsxs30(Stack30, { gap: "md", children: [
|
|
2294
|
+
variant === "process" ? /* @__PURE__ */ jsx36(Group26, { children: /* @__PURE__ */ jsx36(
|
|
2295
|
+
Text26,
|
|
2057
2296
|
{
|
|
2058
2297
|
fw: 800,
|
|
2059
2298
|
size: "sm",
|
|
@@ -2065,18 +2304,18 @@ function FeatureBand({
|
|
|
2065
2304
|
},
|
|
2066
2305
|
children: item.stepLabel ?? `Step ${index + 1}`
|
|
2067
2306
|
}
|
|
2068
|
-
) }) : item.media ? item.media : item.icon ? /* @__PURE__ */
|
|
2069
|
-
/* @__PURE__ */
|
|
2070
|
-
/* @__PURE__ */
|
|
2071
|
-
item.description ? /* @__PURE__ */
|
|
2072
|
-
item.meta ? /* @__PURE__ */
|
|
2307
|
+
) }) : item.media ? item.media : item.icon ? /* @__PURE__ */ jsx36(Group26, { children: /* @__PURE__ */ jsx36(ThemeIcon9, { size: "xl", radius: "xl", variant: "light", color: "violet", children: item.icon }) }) : /* @__PURE__ */ jsx36(Group26, { children: /* @__PURE__ */ jsx36(ThemeIcon9, { size: "xl", radius: "xl", variant: "light", color: "gray", "aria-hidden": true, children: /* @__PURE__ */ jsx36(GdsIcons.Info, { size: "1.25rem" }) }) }),
|
|
2308
|
+
/* @__PURE__ */ jsxs30(Stack30, { gap: "xs", children: [
|
|
2309
|
+
/* @__PURE__ */ jsx36(Title20, { order: 4, children: item.title }),
|
|
2310
|
+
item.description ? /* @__PURE__ */ jsx36(Text26, { c: "dimmed", children: item.description }) : null,
|
|
2311
|
+
item.meta ? /* @__PURE__ */ jsx36(Text26, { size: "sm", c: "dimmed", children: item.meta }) : null
|
|
2073
2312
|
] })
|
|
2074
2313
|
] }) }, item.id)) }) });
|
|
2075
2314
|
}
|
|
2076
2315
|
|
|
2077
2316
|
// src/MapPanel.tsx
|
|
2078
|
-
import { AspectRatio as AspectRatio6, Box as
|
|
2079
|
-
import { jsx as
|
|
2317
|
+
import { AspectRatio as AspectRatio6, Box as Box13, Group as Group27, Paper as Paper9, Stack as Stack31, Text as Text27, Title as Title21 } from "@mantine/core";
|
|
2318
|
+
import { jsx as jsx37, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
2080
2319
|
function MapPanel({
|
|
2081
2320
|
title,
|
|
2082
2321
|
description,
|
|
@@ -2092,7 +2331,7 @@ function MapPanel({
|
|
|
2092
2331
|
}) {
|
|
2093
2332
|
let body;
|
|
2094
2333
|
if (loading) {
|
|
2095
|
-
body = /* @__PURE__ */
|
|
2334
|
+
body = /* @__PURE__ */ jsx37(
|
|
2096
2335
|
StateBlock,
|
|
2097
2336
|
{
|
|
2098
2337
|
variant: "loading",
|
|
@@ -2102,9 +2341,9 @@ function MapPanel({
|
|
|
2102
2341
|
}
|
|
2103
2342
|
);
|
|
2104
2343
|
} else if (error) {
|
|
2105
|
-
body = /* @__PURE__ */
|
|
2344
|
+
body = /* @__PURE__ */ jsx37(StateBlock, { variant: "error", title: "Map unavailable", description: error, compact: true });
|
|
2106
2345
|
} else if (!iframeSrc && !renderMap) {
|
|
2107
|
-
body = /* @__PURE__ */
|
|
2346
|
+
body = /* @__PURE__ */ jsx37(
|
|
2108
2347
|
StateBlock,
|
|
2109
2348
|
{
|
|
2110
2349
|
variant: "empty",
|
|
@@ -2114,9 +2353,9 @@ function MapPanel({
|
|
|
2114
2353
|
}
|
|
2115
2354
|
);
|
|
2116
2355
|
} else if (renderMap) {
|
|
2117
|
-
body = /* @__PURE__ */
|
|
2356
|
+
body = /* @__PURE__ */ jsx37(Box13, { style: { minHeight }, children: renderMap() });
|
|
2118
2357
|
} else {
|
|
2119
|
-
body = /* @__PURE__ */
|
|
2358
|
+
body = /* @__PURE__ */ jsx37(AspectRatio6, { ratio: 16 / 9, children: /* @__PURE__ */ jsx37(
|
|
2120
2359
|
"iframe",
|
|
2121
2360
|
{
|
|
2122
2361
|
src: iframeSrc,
|
|
@@ -2128,21 +2367,21 @@ function MapPanel({
|
|
|
2128
2367
|
}
|
|
2129
2368
|
) });
|
|
2130
2369
|
}
|
|
2131
|
-
return /* @__PURE__ */
|
|
2132
|
-
/* @__PURE__ */
|
|
2133
|
-
/* @__PURE__ */
|
|
2134
|
-
/* @__PURE__ */
|
|
2135
|
-
description ? /* @__PURE__ */
|
|
2370
|
+
return /* @__PURE__ */ jsx37(Paper9, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs31(Stack31, { gap: "md", children: [
|
|
2371
|
+
/* @__PURE__ */ jsxs31(Group27, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
|
|
2372
|
+
/* @__PURE__ */ jsxs31(Stack31, { gap: 4, children: [
|
|
2373
|
+
/* @__PURE__ */ jsx37(Title21, { order: 3, children: title }),
|
|
2374
|
+
description ? /* @__PURE__ */ jsx37(Text27, { size: "sm", c: "dimmed", children: description }) : null
|
|
2136
2375
|
] }),
|
|
2137
|
-
actions ? /* @__PURE__ */
|
|
2376
|
+
actions ? /* @__PURE__ */ jsx37(ActionBar, { ...actions }) : null
|
|
2138
2377
|
] }),
|
|
2139
2378
|
body
|
|
2140
2379
|
] }) });
|
|
2141
2380
|
}
|
|
2142
2381
|
|
|
2143
2382
|
// src/PublicFlowShell.tsx
|
|
2144
|
-
import { Badge as
|
|
2145
|
-
import { jsx as
|
|
2383
|
+
import { Badge as Badge14, Group as Group28, Paper as Paper10, Stack as Stack32, Text as Text28, Title as Title22 } from "@mantine/core";
|
|
2384
|
+
import { jsx as jsx38, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
2146
2385
|
var stageTone = {
|
|
2147
2386
|
idle: { label: "Idle", color: "gray" },
|
|
2148
2387
|
loading: { label: "Loading", color: "blue" },
|
|
@@ -2194,7 +2433,7 @@ function PublicFlowShell({
|
|
|
2194
2433
|
const actionBar = toActionBar(stage.actions);
|
|
2195
2434
|
let body = stage.body;
|
|
2196
2435
|
if (stage.status === "loading") {
|
|
2197
|
-
body = /* @__PURE__ */
|
|
2436
|
+
body = /* @__PURE__ */ jsx38(
|
|
2198
2437
|
StateBlock,
|
|
2199
2438
|
{
|
|
2200
2439
|
variant: "loading",
|
|
@@ -2203,7 +2442,7 @@ function PublicFlowShell({
|
|
|
2203
2442
|
}
|
|
2204
2443
|
);
|
|
2205
2444
|
} else if (stage.status === "error") {
|
|
2206
|
-
body = errorState ?? /* @__PURE__ */
|
|
2445
|
+
body = errorState ?? /* @__PURE__ */ jsx38(
|
|
2207
2446
|
StateBlock,
|
|
2208
2447
|
{
|
|
2209
2448
|
variant: "error",
|
|
@@ -2212,7 +2451,7 @@ function PublicFlowShell({
|
|
|
2212
2451
|
}
|
|
2213
2452
|
);
|
|
2214
2453
|
} else if (!stage.body && !hardwareSurface) {
|
|
2215
|
-
body = emptyState ?? /* @__PURE__ */
|
|
2454
|
+
body = emptyState ?? /* @__PURE__ */ jsx38(
|
|
2216
2455
|
EmptyState,
|
|
2217
2456
|
{
|
|
2218
2457
|
title: "No stage content available",
|
|
@@ -2220,29 +2459,29 @@ function PublicFlowShell({
|
|
|
2220
2459
|
}
|
|
2221
2460
|
);
|
|
2222
2461
|
}
|
|
2223
|
-
return /* @__PURE__ */
|
|
2224
|
-
/* @__PURE__ */
|
|
2225
|
-
/* @__PURE__ */
|
|
2226
|
-
eyebrow ? /* @__PURE__ */
|
|
2227
|
-
/* @__PURE__ */
|
|
2228
|
-
/* @__PURE__ */
|
|
2229
|
-
/* @__PURE__ */
|
|
2462
|
+
return /* @__PURE__ */ jsx38(Paper10, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs32(Stack32, { gap: "lg", children: [
|
|
2463
|
+
/* @__PURE__ */ jsxs32(Group28, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
|
|
2464
|
+
/* @__PURE__ */ jsxs32(Stack32, { gap: 4, children: [
|
|
2465
|
+
eyebrow ? /* @__PURE__ */ jsx38(Text28, { size: "xs", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
|
|
2466
|
+
/* @__PURE__ */ jsxs32(Group28, { gap: "sm", wrap: "wrap", children: [
|
|
2467
|
+
/* @__PURE__ */ jsx38(Title22, { order: 2, children: stage.title }),
|
|
2468
|
+
/* @__PURE__ */ jsx38(Badge14, { variant: "light", color: tone.color, children: tone.label })
|
|
2230
2469
|
] }),
|
|
2231
|
-
stage.description ? /* @__PURE__ */
|
|
2470
|
+
stage.description ? /* @__PURE__ */ jsx38(Text28, { size: "sm", c: "dimmed", children: stage.description }) : null
|
|
2232
2471
|
] }),
|
|
2233
2472
|
exitAction
|
|
2234
2473
|
] }),
|
|
2235
|
-
stage.notice ? /* @__PURE__ */
|
|
2474
|
+
stage.notice ? /* @__PURE__ */ jsx38(Text28, { size: "sm", c: "dimmed", children: stage.notice }) : null,
|
|
2236
2475
|
body,
|
|
2237
2476
|
hardwareSurface,
|
|
2238
2477
|
stage.aside,
|
|
2239
|
-
actionBar ? /* @__PURE__ */
|
|
2478
|
+
actionBar ? /* @__PURE__ */ jsx38(ActionBar, { ...actionBar }) : null
|
|
2240
2479
|
] }) });
|
|
2241
2480
|
}
|
|
2242
2481
|
|
|
2243
2482
|
// src/PlaybackSurface.tsx
|
|
2244
|
-
import { Badge as
|
|
2245
|
-
import { jsx as
|
|
2483
|
+
import { Badge as Badge15, Group as Group29, Paper as Paper11, Stack as Stack33, Text as Text29, Title as Title23 } from "@mantine/core";
|
|
2484
|
+
import { jsx as jsx39, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
2246
2485
|
var stateTone = {
|
|
2247
2486
|
loading: { label: "Loading", color: "blue" },
|
|
2248
2487
|
ready: { label: "Ready", color: "teal" },
|
|
@@ -2265,7 +2504,7 @@ function PlaybackSurface({
|
|
|
2265
2504
|
const tone = stateTone[state];
|
|
2266
2505
|
let content;
|
|
2267
2506
|
if (state === "loading") {
|
|
2268
|
-
content = /* @__PURE__ */
|
|
2507
|
+
content = /* @__PURE__ */ jsx39(
|
|
2269
2508
|
StateBlock,
|
|
2270
2509
|
{
|
|
2271
2510
|
variant: "loading",
|
|
@@ -2274,7 +2513,7 @@ function PlaybackSurface({
|
|
|
2274
2513
|
}
|
|
2275
2514
|
);
|
|
2276
2515
|
} else if (state === "empty") {
|
|
2277
|
-
content = emptyState ?? /* @__PURE__ */
|
|
2516
|
+
content = emptyState ?? /* @__PURE__ */ jsx39(
|
|
2278
2517
|
EmptyState,
|
|
2279
2518
|
{
|
|
2280
2519
|
title: "No playback content available",
|
|
@@ -2282,7 +2521,7 @@ function PlaybackSurface({
|
|
|
2282
2521
|
}
|
|
2283
2522
|
);
|
|
2284
2523
|
} else if (state === "error") {
|
|
2285
|
-
content = errorState ?? /* @__PURE__ */
|
|
2524
|
+
content = errorState ?? /* @__PURE__ */ jsx39(
|
|
2286
2525
|
StateBlock,
|
|
2287
2526
|
{
|
|
2288
2527
|
variant: "error",
|
|
@@ -2291,23 +2530,23 @@ function PlaybackSurface({
|
|
|
2291
2530
|
}
|
|
2292
2531
|
);
|
|
2293
2532
|
} else {
|
|
2294
|
-
content = /* @__PURE__ */
|
|
2533
|
+
content = /* @__PURE__ */ jsxs33(Stack33, { gap: "md", children: [
|
|
2295
2534
|
media,
|
|
2296
2535
|
overlays
|
|
2297
2536
|
] });
|
|
2298
2537
|
}
|
|
2299
|
-
return /* @__PURE__ */
|
|
2300
|
-
title || statusMessage || controls ? /* @__PURE__ */
|
|
2301
|
-
/* @__PURE__ */
|
|
2302
|
-
title ? /* @__PURE__ */
|
|
2303
|
-
statusMessage ? /* @__PURE__ */
|
|
2538
|
+
return /* @__PURE__ */ jsx39(Paper11, { withBorder: true, radius: "xl", p: "lg", "data-playback-mode": mode, children: /* @__PURE__ */ jsxs33(Stack33, { gap: "md", children: [
|
|
2539
|
+
title || statusMessage || controls ? /* @__PURE__ */ jsxs33(Group29, { justify: "space-between", align: "flex-start", gap: "md", wrap: "wrap", children: [
|
|
2540
|
+
/* @__PURE__ */ jsxs33(Stack33, { gap: 4, children: [
|
|
2541
|
+
title ? /* @__PURE__ */ jsx39(Title23, { order: 3, children: title }) : null,
|
|
2542
|
+
statusMessage ? /* @__PURE__ */ jsx39(Text29, { size: "sm", c: "dimmed", children: statusMessage }) : null
|
|
2304
2543
|
] }),
|
|
2305
|
-
/* @__PURE__ */
|
|
2306
|
-
/* @__PURE__ */
|
|
2544
|
+
/* @__PURE__ */ jsxs33(Group29, { gap: "sm", align: "center", wrap: "wrap", children: [
|
|
2545
|
+
/* @__PURE__ */ jsx39(Badge15, { variant: "light", color: tone.color, children: tone.label }),
|
|
2307
2546
|
controls
|
|
2308
2547
|
] })
|
|
2309
2548
|
] }) : null,
|
|
2310
|
-
state === "degraded" ? /* @__PURE__ */
|
|
2549
|
+
state === "degraded" ? /* @__PURE__ */ jsx39(
|
|
2311
2550
|
StateBlock,
|
|
2312
2551
|
{
|
|
2313
2552
|
variant: "info",
|
|
@@ -2321,14 +2560,21 @@ function PlaybackSurface({
|
|
|
2321
2560
|
}
|
|
2322
2561
|
|
|
2323
2562
|
// src/MediaField.tsx
|
|
2324
|
-
import { Badge as
|
|
2325
|
-
import { Fragment as Fragment6, jsx as
|
|
2563
|
+
import { Badge as Badge16, Button as Button4, Divider as Divider6, Group as Group30, Paper as Paper12, Progress as Progress2, Stack as Stack34, Text as Text30 } from "@mantine/core";
|
|
2564
|
+
import { Fragment as Fragment6, jsx as jsx40, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
2326
2565
|
var stateLabels = {
|
|
2327
2566
|
empty: { label: "Empty", color: "gray" },
|
|
2567
|
+
"drag-active": { label: "Drop to select", color: "violet" },
|
|
2328
2568
|
selected: { label: "Selected", color: "blue" },
|
|
2569
|
+
"preview-loading": { label: "Preview loading", color: "violet" },
|
|
2329
2570
|
saved: { label: "Saved", color: "teal" },
|
|
2330
2571
|
invalid: { label: "Needs attention", color: "red" },
|
|
2331
|
-
uploading: { label: "Uploading", color: "violet" }
|
|
2572
|
+
uploading: { label: "Uploading", color: "violet" },
|
|
2573
|
+
"upload-failed": { label: "Upload failed", color: "red" },
|
|
2574
|
+
"unsupported-type": { label: "Unsupported type", color: "red" },
|
|
2575
|
+
"too-large": { label: "Too large", color: "red" },
|
|
2576
|
+
removed: { label: "Removed", color: "gray" },
|
|
2577
|
+
readonly: { label: "Read only", color: "gray" }
|
|
2332
2578
|
};
|
|
2333
2579
|
function MediaField({
|
|
2334
2580
|
label,
|
|
@@ -2341,41 +2587,60 @@ function MediaField({
|
|
|
2341
2587
|
policyText,
|
|
2342
2588
|
error,
|
|
2343
2589
|
retryAction,
|
|
2590
|
+
replaceAction,
|
|
2344
2591
|
onRemove,
|
|
2345
2592
|
onReset,
|
|
2346
2593
|
removeAction,
|
|
2347
2594
|
resetAction,
|
|
2348
2595
|
statusAction,
|
|
2596
|
+
acceptedTypes,
|
|
2597
|
+
maxSize,
|
|
2598
|
+
progress,
|
|
2599
|
+
readonly = false,
|
|
2349
2600
|
state = "empty",
|
|
2350
2601
|
mode = "stacked"
|
|
2351
2602
|
}) {
|
|
2352
|
-
const
|
|
2353
|
-
const
|
|
2354
|
-
const
|
|
2355
|
-
|
|
2603
|
+
const resolvedState = readonly ? "readonly" : state;
|
|
2604
|
+
const stateBadge = stateLabels[resolvedState];
|
|
2605
|
+
const resolvedRemoveAction = removeAction ?? (!readonly && onRemove ? /* @__PURE__ */ jsx40(Button4, { type: "button", variant: "light", color: "red", onClick: onRemove, children: "Remove" }) : null);
|
|
2606
|
+
const resolvedResetAction = resetAction ?? (!readonly && onReset ? /* @__PURE__ */ jsx40(Button4, { type: "button", variant: "default", onClick: onReset, children: "Reset" }) : null);
|
|
2607
|
+
const boundedProgress = typeof progress === "number" ? Math.max(0, Math.min(100, progress)) : void 0;
|
|
2608
|
+
return /* @__PURE__ */ jsx40(
|
|
2356
2609
|
FormField,
|
|
2357
2610
|
{
|
|
2358
2611
|
label,
|
|
2359
2612
|
description,
|
|
2360
2613
|
error,
|
|
2361
|
-
children: /* @__PURE__ */
|
|
2362
|
-
/* @__PURE__ */
|
|
2363
|
-
/* @__PURE__ */
|
|
2614
|
+
children: /* @__PURE__ */ jsx40(Paper12, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs34(Stack34, { gap: "md", children: [
|
|
2615
|
+
/* @__PURE__ */ jsx40(Group30, { justify: "flex-end", align: "center", gap: "sm", children: /* @__PURE__ */ jsxs34(Group30, { gap: "xs", justify: "flex-end", children: [
|
|
2616
|
+
/* @__PURE__ */ jsx40(Badge16, { variant: "light", color: stateBadge.color, children: stateBadge.label }),
|
|
2364
2617
|
statusAction
|
|
2365
2618
|
] }) }),
|
|
2366
2619
|
preview ? preview : null,
|
|
2367
|
-
|
|
2368
|
-
/* @__PURE__ */
|
|
2369
|
-
/* @__PURE__ */
|
|
2620
|
+
typeof boundedProgress === "number" ? /* @__PURE__ */ jsxs34(Stack34, { gap: 4, children: [
|
|
2621
|
+
/* @__PURE__ */ jsx40(Progress2, { value: boundedProgress, "aria-label": "Upload progress" }),
|
|
2622
|
+
/* @__PURE__ */ jsxs34(Text30, { size: "xs", c: "dimmed", children: [
|
|
2623
|
+
boundedProgress,
|
|
2624
|
+
"% complete"
|
|
2625
|
+
] })
|
|
2626
|
+
] }) : null,
|
|
2627
|
+
(uploadControl || urlInput) && !readonly ? /* @__PURE__ */ jsxs34(Fragment6, { children: [
|
|
2628
|
+
/* @__PURE__ */ jsx40(Divider6, {}),
|
|
2629
|
+
/* @__PURE__ */ jsxs34(Stack34, { gap: "sm", style: mode === "split" ? { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))" } : void 0, children: [
|
|
2370
2630
|
uploadControl,
|
|
2371
2631
|
urlInput
|
|
2372
2632
|
] })
|
|
2373
2633
|
] }) : null,
|
|
2374
|
-
value ? /* @__PURE__ */
|
|
2375
|
-
helpText ? /* @__PURE__ */
|
|
2376
|
-
|
|
2634
|
+
value ? /* @__PURE__ */ jsx40(Text30, { size: "sm", c: "dimmed", style: { wordBreak: "break-all" }, children: value }) : null,
|
|
2635
|
+
helpText ? /* @__PURE__ */ jsx40(Text30, { size: "sm", c: "dimmed", children: helpText }) : null,
|
|
2636
|
+
acceptedTypes || maxSize ? /* @__PURE__ */ jsxs34(Group30, { gap: "xs", wrap: "wrap", children: [
|
|
2637
|
+
acceptedTypes ? /* @__PURE__ */ jsx40(Badge16, { variant: "outline", color: "gray", children: acceptedTypes }) : null,
|
|
2638
|
+
maxSize ? /* @__PURE__ */ jsx40(Badge16, { variant: "outline", color: "gray", children: maxSize }) : null
|
|
2639
|
+
] }) : null,
|
|
2640
|
+
policyText ? /* @__PURE__ */ jsx40(Text30, { size: "sm", c: error ? "red.7" : "dimmed", children: policyText }) : null,
|
|
2377
2641
|
typeof error !== "string" && error ? error : null,
|
|
2378
|
-
resolvedRemoveAction || resolvedResetAction ? /* @__PURE__ */
|
|
2642
|
+
replaceAction || resolvedRemoveAction || resolvedResetAction || retryAction ? /* @__PURE__ */ jsxs34(Group30, { gap: "sm", children: [
|
|
2643
|
+
replaceAction,
|
|
2379
2644
|
resolvedResetAction,
|
|
2380
2645
|
retryAction,
|
|
2381
2646
|
resolvedRemoveAction
|
|
@@ -2386,49 +2651,63 @@ function MediaField({
|
|
|
2386
2651
|
}
|
|
2387
2652
|
|
|
2388
2653
|
// src/MediaCard.tsx
|
|
2389
|
-
import { ActionIcon as ActionIcon4, Badge as
|
|
2390
|
-
import { jsx as
|
|
2654
|
+
import { ActionIcon as ActionIcon4, Badge as Badge17, Card as Card9, Group as Group31, Stack as Stack35, Text as Text31, Title as Title24 } from "@mantine/core";
|
|
2655
|
+
import { jsx as jsx41, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
2391
2656
|
function MediaCard({ title, image, description, status, overlay, actions = [] }) {
|
|
2392
2657
|
const EyeIcon = GdsIcons.Eye;
|
|
2393
|
-
return /* @__PURE__ */
|
|
2394
|
-
/* @__PURE__ */
|
|
2658
|
+
return /* @__PURE__ */ jsxs35(Card9, { withBorder: true, radius: "lg", padding: "md", children: [
|
|
2659
|
+
/* @__PURE__ */ jsxs35(Card9.Section, { pos: "relative", children: [
|
|
2395
2660
|
image,
|
|
2396
|
-
overlay ? /* @__PURE__ */
|
|
2661
|
+
overlay ? /* @__PURE__ */ jsx41("div", { style: { position: "absolute", inset: 12, display: "flex", justifyContent: "flex-end", alignItems: "flex-start" }, children: overlay }) : null
|
|
2397
2662
|
] }),
|
|
2398
|
-
/* @__PURE__ */
|
|
2399
|
-
/* @__PURE__ */
|
|
2400
|
-
/* @__PURE__ */
|
|
2401
|
-
/* @__PURE__ */
|
|
2402
|
-
description ? /* @__PURE__ */
|
|
2663
|
+
/* @__PURE__ */ jsxs35(Stack35, { gap: "sm", mt: "md", children: [
|
|
2664
|
+
/* @__PURE__ */ jsxs35(Group31, { justify: "space-between", align: "flex-start", children: [
|
|
2665
|
+
/* @__PURE__ */ jsxs35(Stack35, { gap: 4, children: [
|
|
2666
|
+
/* @__PURE__ */ jsx41(Title24, { order: 4, children: title }),
|
|
2667
|
+
description ? /* @__PURE__ */ jsx41(Text31, { size: "sm", c: "dimmed", lineClamp: 2, children: description }) : null
|
|
2403
2668
|
] }),
|
|
2404
|
-
status ? /* @__PURE__ */
|
|
2669
|
+
status ? /* @__PURE__ */ jsx41(Badge17, { variant: "light", children: status }) : null
|
|
2405
2670
|
] }),
|
|
2406
|
-
actions.length ? /* @__PURE__ */
|
|
2671
|
+
actions.length ? /* @__PURE__ */ jsx41(Group31, { justify: "flex-end", gap: "xs", children: actions.map((action) => /* @__PURE__ */ jsx41(ActionIcon4, { variant: "light", "aria-label": action.label, onClick: action.onClick, children: /* @__PURE__ */ jsx41(EyeIcon, { size: "1rem" }) }, action.label)) }) : null
|
|
2407
2672
|
] })
|
|
2408
2673
|
] });
|
|
2409
2674
|
}
|
|
2410
2675
|
|
|
2411
2676
|
// src/AccessSummary.tsx
|
|
2412
|
-
import { Badge as
|
|
2413
|
-
import { jsx as
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2677
|
+
import { Badge as Badge18, Card as Card10, Group as Group32, Stack as Stack36, Text as Text32, Title as Title25 } from "@mantine/core";
|
|
2678
|
+
import { jsx as jsx42, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
2679
|
+
var accessStateMeta = {
|
|
2680
|
+
allowed: { label: "Allowed", color: "teal" },
|
|
2681
|
+
blocked: { label: "Blocked", color: "red" },
|
|
2682
|
+
forbidden: { label: "Forbidden", color: "red" },
|
|
2683
|
+
expired: { label: "Expired", color: "orange" },
|
|
2684
|
+
"permission-limited": { label: "Permission limited", color: "grape" }
|
|
2685
|
+
};
|
|
2686
|
+
function AccessSummary({ title, roles, scope, blocked = false, state, owner, recoveryHint, description }) {
|
|
2687
|
+
const resolvedState = state ?? (blocked ? "blocked" : "allowed");
|
|
2688
|
+
const meta = accessStateMeta[resolvedState];
|
|
2689
|
+
return /* @__PURE__ */ jsx42(Card10, { withBorder: true, radius: "lg", padding: "lg", children: /* @__PURE__ */ jsxs36(Stack36, { gap: "sm", children: [
|
|
2690
|
+
/* @__PURE__ */ jsxs36(Group32, { justify: "space-between", align: "center", children: [
|
|
2691
|
+
/* @__PURE__ */ jsx42(Title25, { order: 4, children: title }),
|
|
2692
|
+
/* @__PURE__ */ jsx42(Badge18, { color: meta.color, variant: "light", children: meta.label })
|
|
2419
2693
|
] }),
|
|
2420
|
-
/* @__PURE__ */
|
|
2421
|
-
scope ? /* @__PURE__ */
|
|
2694
|
+
/* @__PURE__ */ jsx42(Group32, { gap: "xs", children: roles.map((role) => /* @__PURE__ */ jsx42(Badge18, { variant: "outline", children: role }, role)) }),
|
|
2695
|
+
scope ? /* @__PURE__ */ jsxs36(Text32, { size: "sm", c: "dimmed", children: [
|
|
2422
2696
|
"Scope: ",
|
|
2423
2697
|
scope
|
|
2424
2698
|
] }) : null,
|
|
2425
|
-
|
|
2699
|
+
owner ? /* @__PURE__ */ jsxs36(Text32, { size: "sm", c: "dimmed", children: [
|
|
2700
|
+
"Owner: ",
|
|
2701
|
+
owner
|
|
2702
|
+
] }) : null,
|
|
2703
|
+
recoveryHint ? /* @__PURE__ */ jsx42(Text32, { size: "sm", c: resolvedState === "allowed" ? "dimmed" : "red.7", children: recoveryHint }) : null,
|
|
2704
|
+
description ? /* @__PURE__ */ jsx42(Text32, { size: "sm", children: description }) : null
|
|
2426
2705
|
] }) });
|
|
2427
2706
|
}
|
|
2428
2707
|
|
|
2429
2708
|
// src/PageHeader.tsx
|
|
2430
|
-
import { Box as
|
|
2431
|
-
import { jsx as
|
|
2709
|
+
import { Box as Box14, Group as Group33, Stack as Stack37, Text as Text33, Title as Title26 } from "@mantine/core";
|
|
2710
|
+
import { jsx as jsx43, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
2432
2711
|
function PageHeader({
|
|
2433
2712
|
title,
|
|
2434
2713
|
description,
|
|
@@ -2439,19 +2718,19 @@ function PageHeader({
|
|
|
2439
2718
|
}) {
|
|
2440
2719
|
const resolvedDescription = description ?? subtitle;
|
|
2441
2720
|
const eyebrowProps = eyebrowVariant === "ornamental" ? { tt: "uppercase", style: { letterSpacing: "0.12em" } } : {};
|
|
2442
|
-
return /* @__PURE__ */
|
|
2443
|
-
/* @__PURE__ */
|
|
2444
|
-
eyebrow && /* @__PURE__ */
|
|
2445
|
-
/* @__PURE__ */
|
|
2446
|
-
resolvedDescription && /* @__PURE__ */
|
|
2721
|
+
return /* @__PURE__ */ jsxs37(Group33, { justify: "space-between", align: "flex-start", gap: "lg", wrap: "wrap", children: [
|
|
2722
|
+
/* @__PURE__ */ jsxs37(Stack37, { gap: "xs", children: [
|
|
2723
|
+
eyebrow && /* @__PURE__ */ jsx43(Text33, { size: "xs", fw: 700, c: "dimmed", ...eyebrowProps, children: eyebrow }),
|
|
2724
|
+
/* @__PURE__ */ jsx43(Title26, { order: 1, children: title }),
|
|
2725
|
+
resolvedDescription && /* @__PURE__ */ jsx43(Text33, { c: "dimmed", maw: 720, children: resolvedDescription })
|
|
2447
2726
|
] }),
|
|
2448
|
-
actions ? /* @__PURE__ */
|
|
2727
|
+
actions ? /* @__PURE__ */ jsx43(Box14, { children: actions }) : null
|
|
2449
2728
|
] });
|
|
2450
2729
|
}
|
|
2451
2730
|
|
|
2452
2731
|
// src/FilterDrawer.tsx
|
|
2453
|
-
import { Drawer, Group as Group34, Stack as
|
|
2454
|
-
import { jsx as
|
|
2732
|
+
import { Drawer, Group as Group34, Stack as Stack38, Text as Text34 } from "@mantine/core";
|
|
2733
|
+
import { jsx as jsx44, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
2455
2734
|
function FilterDrawer({
|
|
2456
2735
|
opened,
|
|
2457
2736
|
onClose,
|
|
@@ -2467,7 +2746,7 @@ function FilterDrawer({
|
|
|
2467
2746
|
}) {
|
|
2468
2747
|
const resolvedPrimaryAction = applyAction ?? primaryAction;
|
|
2469
2748
|
const resolvedSecondaryAction = resetAction ?? secondaryAction;
|
|
2470
|
-
return /* @__PURE__ */
|
|
2749
|
+
return /* @__PURE__ */ jsx44(
|
|
2471
2750
|
Drawer,
|
|
2472
2751
|
{
|
|
2473
2752
|
opened,
|
|
@@ -2476,11 +2755,11 @@ function FilterDrawer({
|
|
|
2476
2755
|
position: mode === "bottom-sheet" ? "bottom" : "right",
|
|
2477
2756
|
size: mode === "bottom-sheet" ? "auto" : "md",
|
|
2478
2757
|
radius: mode === "bottom-sheet" ? "xl" : void 0,
|
|
2479
|
-
children: /* @__PURE__ */
|
|
2480
|
-
description ? /* @__PURE__ */
|
|
2758
|
+
children: /* @__PURE__ */ jsxs38(Stack38, { gap: "md", children: [
|
|
2759
|
+
description ? /* @__PURE__ */ jsx44(Text34, { size: "sm", c: "dimmed", children: description }) : null,
|
|
2481
2760
|
children,
|
|
2482
|
-
resolvedPrimaryAction || resolvedSecondaryAction || closeAction ? /* @__PURE__ */
|
|
2483
|
-
/* @__PURE__ */
|
|
2761
|
+
resolvedPrimaryAction || resolvedSecondaryAction || closeAction ? /* @__PURE__ */ jsxs38(Group34, { justify: "space-between", mt: "md", children: [
|
|
2762
|
+
/* @__PURE__ */ jsxs38(Group34, { gap: "sm", children: [
|
|
2484
2763
|
closeAction,
|
|
2485
2764
|
resolvedSecondaryAction
|
|
2486
2765
|
] }),
|
|
@@ -2492,8 +2771,8 @@ function FilterDrawer({
|
|
|
2492
2771
|
}
|
|
2493
2772
|
|
|
2494
2773
|
// src/PlaceholderPanel.tsx
|
|
2495
|
-
import { Badge as
|
|
2496
|
-
import { Fragment as Fragment7, jsx as
|
|
2774
|
+
import { Badge as Badge19, Card as Card11, Stack as Stack39, Text as Text35, Title as Title27 } from "@mantine/core";
|
|
2775
|
+
import { Fragment as Fragment7, jsx as jsx45, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
2497
2776
|
function PlaceholderPanel({
|
|
2498
2777
|
title,
|
|
2499
2778
|
description,
|
|
@@ -2503,16 +2782,16 @@ function PlaceholderPanel({
|
|
|
2503
2782
|
mode
|
|
2504
2783
|
}) {
|
|
2505
2784
|
if (mode === "live" && children) {
|
|
2506
|
-
return /* @__PURE__ */
|
|
2785
|
+
return /* @__PURE__ */ jsx45(Fragment7, { children });
|
|
2507
2786
|
}
|
|
2508
|
-
return /* @__PURE__ */
|
|
2509
|
-
badge ? /* @__PURE__ */
|
|
2510
|
-
/* @__PURE__ */
|
|
2511
|
-
/* @__PURE__ */
|
|
2512
|
-
/* @__PURE__ */
|
|
2787
|
+
return /* @__PURE__ */ jsx45(Card11, { children: /* @__PURE__ */ jsxs39(Stack39, { gap: "md", children: [
|
|
2788
|
+
badge ? /* @__PURE__ */ jsx45(Badge19, { variant: "light", color: "blue", w: "fit-content", children: badge }) : null,
|
|
2789
|
+
/* @__PURE__ */ jsxs39(Stack39, { gap: "xs", children: [
|
|
2790
|
+
/* @__PURE__ */ jsx45(Title27, { order: 4, children: title }),
|
|
2791
|
+
/* @__PURE__ */ jsx45(Text35, { c: "dimmed", children: description })
|
|
2513
2792
|
] }),
|
|
2514
|
-
footer ? /* @__PURE__ */
|
|
2515
|
-
/* @__PURE__ */
|
|
2793
|
+
footer ? /* @__PURE__ */ jsx45(Text35, { size: "sm", children: footer }) : null,
|
|
2794
|
+
/* @__PURE__ */ jsx45(
|
|
2516
2795
|
StateBlock,
|
|
2517
2796
|
{
|
|
2518
2797
|
variant: "not-enough-data",
|
|
@@ -2526,7 +2805,7 @@ function PlaceholderPanel({
|
|
|
2526
2805
|
|
|
2527
2806
|
// src/SimpleDataTable.tsx
|
|
2528
2807
|
import { ScrollArea, Table } from "@mantine/core";
|
|
2529
|
-
import { jsx as
|
|
2808
|
+
import { jsx as jsx46, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
2530
2809
|
function SimpleDataTable({
|
|
2531
2810
|
columns,
|
|
2532
2811
|
rows,
|
|
@@ -2537,23 +2816,23 @@ function SimpleDataTable({
|
|
|
2537
2816
|
getRowKey
|
|
2538
2817
|
}) {
|
|
2539
2818
|
if (error) {
|
|
2540
|
-
return /* @__PURE__ */
|
|
2819
|
+
return /* @__PURE__ */ jsx46(StateBlock, { variant: "error", title: "Unable to load data", description: error, compact: true });
|
|
2541
2820
|
}
|
|
2542
2821
|
if (loading) {
|
|
2543
|
-
return /* @__PURE__ */
|
|
2822
|
+
return /* @__PURE__ */ jsx46(StateBlock, { variant: "loading", title: "Loading data", description: "Please wait while the shared dataset is prepared.", compact: true });
|
|
2544
2823
|
}
|
|
2545
2824
|
if (!rows.length) {
|
|
2546
|
-
return /* @__PURE__ */
|
|
2825
|
+
return /* @__PURE__ */ jsx46(StateBlock, { variant: "empty", title: emptyTitle, description: emptyDescription, compact: true });
|
|
2547
2826
|
}
|
|
2548
|
-
return /* @__PURE__ */
|
|
2549
|
-
/* @__PURE__ */
|
|
2550
|
-
/* @__PURE__ */
|
|
2827
|
+
return /* @__PURE__ */ jsx46(ScrollArea, { children: /* @__PURE__ */ jsxs40(Table, { striped: true, highlightOnHover: true, withTableBorder: true, withColumnBorders: true, children: [
|
|
2828
|
+
/* @__PURE__ */ jsx46(Table.Thead, { children: /* @__PURE__ */ jsx46(Table.Tr, { children: columns.map((column) => /* @__PURE__ */ jsx46(Table.Th, { children: column.header }, String(column.key))) }) }),
|
|
2829
|
+
/* @__PURE__ */ jsx46(Table.Tbody, { children: rows.map((row, index) => /* @__PURE__ */ jsx46(Table.Tr, { children: columns.map((column) => /* @__PURE__ */ jsx46(Table.Td, { children: column.render ? column.render(row) : String(row[column.key] ?? "") }, String(column.key))) }, getRowKey ? getRowKey(row, index) : index)) })
|
|
2551
2830
|
] }) });
|
|
2552
2831
|
}
|
|
2553
2832
|
|
|
2554
2833
|
// src/StatsSection.tsx
|
|
2555
|
-
import { Stack as
|
|
2556
|
-
import { jsx as
|
|
2834
|
+
import { Stack as Stack40, Title as Title28 } from "@mantine/core";
|
|
2835
|
+
import { jsx as jsx47, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
2557
2836
|
function StatsSection({
|
|
2558
2837
|
title,
|
|
2559
2838
|
loading = false,
|
|
@@ -2565,11 +2844,11 @@ function StatsSection({
|
|
|
2565
2844
|
}) {
|
|
2566
2845
|
let content = children;
|
|
2567
2846
|
if (error) {
|
|
2568
|
-
content = /* @__PURE__ */
|
|
2847
|
+
content = /* @__PURE__ */ jsx47(StateBlock, { variant: "error", title: "Unable to load statistics", description: error, compact: true });
|
|
2569
2848
|
} else if (loading) {
|
|
2570
|
-
content = /* @__PURE__ */
|
|
2849
|
+
content = /* @__PURE__ */ jsx47(StateBlock, { variant: "loading", title: "Loading statistics", description: "This shared data surface is still synchronizing.", compact: true });
|
|
2571
2850
|
} else if (belowThreshold) {
|
|
2572
|
-
content = /* @__PURE__ */
|
|
2851
|
+
content = /* @__PURE__ */ jsx47(
|
|
2573
2852
|
StateBlock,
|
|
2574
2853
|
{
|
|
2575
2854
|
variant: "not-enough-data",
|
|
@@ -2579,14 +2858,210 @@ function StatsSection({
|
|
|
2579
2858
|
}
|
|
2580
2859
|
);
|
|
2581
2860
|
} else if (placeholder) {
|
|
2582
|
-
content = /* @__PURE__ */
|
|
2861
|
+
content = /* @__PURE__ */ jsx47(PlaceholderPanel, { ...placeholder, mode: "placeholder" });
|
|
2583
2862
|
}
|
|
2584
|
-
return /* @__PURE__ */
|
|
2585
|
-
/* @__PURE__ */
|
|
2863
|
+
return /* @__PURE__ */ jsxs41(Stack40, { gap: "md", children: [
|
|
2864
|
+
/* @__PURE__ */ jsx47(Title28, { order: 3, children: title }),
|
|
2586
2865
|
content
|
|
2587
2866
|
] });
|
|
2588
2867
|
}
|
|
2589
2868
|
|
|
2869
|
+
// src/PeriodSelector.tsx
|
|
2870
|
+
import { Badge as Badge20, Group as Group35, Stack as Stack41, Text as Text36 } from "@mantine/core";
|
|
2871
|
+
import { jsx as jsx48, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
2872
|
+
function PeriodSelector({
|
|
2873
|
+
label,
|
|
2874
|
+
description,
|
|
2875
|
+
value,
|
|
2876
|
+
options,
|
|
2877
|
+
onChange,
|
|
2878
|
+
timezone,
|
|
2879
|
+
scope,
|
|
2880
|
+
helperText,
|
|
2881
|
+
error,
|
|
2882
|
+
stale = false,
|
|
2883
|
+
filtered = false,
|
|
2884
|
+
disabled = false
|
|
2885
|
+
}) {
|
|
2886
|
+
const selectedOption = options.find((option) => option.value === value);
|
|
2887
|
+
return /* @__PURE__ */ jsx48(FormField, { label, description, error, children: /* @__PURE__ */ jsxs42(Stack41, { gap: "sm", children: [
|
|
2888
|
+
/* @__PURE__ */ jsx48(
|
|
2889
|
+
"select",
|
|
2890
|
+
{
|
|
2891
|
+
"aria-label": typeof label === "string" ? label : "Reporting period",
|
|
2892
|
+
value,
|
|
2893
|
+
disabled,
|
|
2894
|
+
onChange: (event) => onChange?.(event.currentTarget.value),
|
|
2895
|
+
children: options.map((option) => /* @__PURE__ */ jsx48("option", { value: option.value, children: option.label }, option.value))
|
|
2896
|
+
}
|
|
2897
|
+
),
|
|
2898
|
+
/* @__PURE__ */ jsxs42(Group35, { gap: "xs", wrap: "wrap", children: [
|
|
2899
|
+
timezone ? /* @__PURE__ */ jsxs42(Badge20, { variant: "outline", color: "gray", children: [
|
|
2900
|
+
"Timezone: ",
|
|
2901
|
+
timezone
|
|
2902
|
+
] }) : null,
|
|
2903
|
+
filtered ? /* @__PURE__ */ jsx48(Badge20, { variant: "light", color: "blue", children: "Filtered" }) : null,
|
|
2904
|
+
stale ? /* @__PURE__ */ jsx48(Badge20, { variant: "light", color: "orange", children: "Stale data" }) : null,
|
|
2905
|
+
scope ? /* @__PURE__ */ jsx48(Badge20, { variant: "outline", color: "gray", children: scope }) : null
|
|
2906
|
+
] }),
|
|
2907
|
+
selectedOption?.description ? /* @__PURE__ */ jsx48(Text36, { size: "sm", c: "dimmed", children: selectedOption.description }) : null,
|
|
2908
|
+
helperText ? /* @__PURE__ */ jsx48(Text36, { size: "sm", c: "dimmed", children: helperText }) : null
|
|
2909
|
+
] }) });
|
|
2910
|
+
}
|
|
2911
|
+
|
|
2912
|
+
// src/EvidencePanel.tsx
|
|
2913
|
+
import { Alert as Alert2, Badge as Badge21, Group as Group36, Paper as Paper13, Stack as Stack42, Text as Text37, Title as Title29 } from "@mantine/core";
|
|
2914
|
+
import { jsx as jsx49, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
2915
|
+
var stateTone2 = {
|
|
2916
|
+
current: { label: "Current", color: "teal" },
|
|
2917
|
+
stale: { label: "Stale", color: "orange" },
|
|
2918
|
+
partial: { label: "Partial data", color: "yellow" },
|
|
2919
|
+
"permission-limited": { label: "Permission limited", color: "grape" },
|
|
2920
|
+
loading: { label: "Loading", color: "blue" },
|
|
2921
|
+
empty: { label: "No evidence", color: "gray" },
|
|
2922
|
+
error: { label: "Needs attention", color: "red" }
|
|
2923
|
+
};
|
|
2924
|
+
function EvidencePanel({
|
|
2925
|
+
title,
|
|
2926
|
+
description,
|
|
2927
|
+
source,
|
|
2928
|
+
freshness,
|
|
2929
|
+
confidence,
|
|
2930
|
+
state = "current",
|
|
2931
|
+
evidenceCount,
|
|
2932
|
+
permissionNote,
|
|
2933
|
+
retryAction,
|
|
2934
|
+
details,
|
|
2935
|
+
children
|
|
2936
|
+
}) {
|
|
2937
|
+
const tone = stateTone2[state];
|
|
2938
|
+
const isProblem = state === "error" || state === "permission-limited" || state === "stale" || state === "partial";
|
|
2939
|
+
return /* @__PURE__ */ jsx49(Paper13, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs43(Stack42, { gap: "md", children: [
|
|
2940
|
+
/* @__PURE__ */ jsxs43(Group36, { justify: "space-between", align: "flex-start", gap: "sm", children: [
|
|
2941
|
+
/* @__PURE__ */ jsxs43(Stack42, { gap: 4, children: [
|
|
2942
|
+
/* @__PURE__ */ jsx49(Title29, { order: 4, children: title }),
|
|
2943
|
+
description ? /* @__PURE__ */ jsx49(Text37, { size: "sm", c: "dimmed", children: description }) : null
|
|
2944
|
+
] }),
|
|
2945
|
+
/* @__PURE__ */ jsx49(Badge21, { variant: "light", color: tone.color, children: tone.label })
|
|
2946
|
+
] }),
|
|
2947
|
+
/* @__PURE__ */ jsxs43(Group36, { gap: "xs", wrap: "wrap", children: [
|
|
2948
|
+
source ? /* @__PURE__ */ jsxs43(Badge21, { variant: "outline", color: "gray", children: [
|
|
2949
|
+
"Source: ",
|
|
2950
|
+
source
|
|
2951
|
+
] }) : null,
|
|
2952
|
+
freshness ? /* @__PURE__ */ jsxs43(Badge21, { variant: "outline", color: "gray", children: [
|
|
2953
|
+
"Freshness: ",
|
|
2954
|
+
freshness
|
|
2955
|
+
] }) : null,
|
|
2956
|
+
confidence ? /* @__PURE__ */ jsxs43(Badge21, { variant: "outline", color: "gray", children: [
|
|
2957
|
+
"Confidence: ",
|
|
2958
|
+
confidence
|
|
2959
|
+
] }) : null,
|
|
2960
|
+
typeof evidenceCount === "number" ? /* @__PURE__ */ jsxs43(Badge21, { variant: "outline", color: "gray", children: [
|
|
2961
|
+
"Evidence: ",
|
|
2962
|
+
evidenceCount
|
|
2963
|
+
] }) : null
|
|
2964
|
+
] }),
|
|
2965
|
+
permissionNote ? /* @__PURE__ */ jsx49(Alert2, { color: isProblem ? tone.color : "gray", variant: "light", children: permissionNote }) : null,
|
|
2966
|
+
details,
|
|
2967
|
+
children,
|
|
2968
|
+
retryAction
|
|
2969
|
+
] }) });
|
|
2970
|
+
}
|
|
2971
|
+
|
|
2972
|
+
// src/ChartTokenPanel.tsx
|
|
2973
|
+
import { Badge as Badge22, Group as Group37, Paper as Paper14, Stack as Stack43, Text as Text38, Title as Title30 } from "@mantine/core";
|
|
2974
|
+
import { jsx as jsx50, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
2975
|
+
function ChartTokenPanel({
|
|
2976
|
+
title,
|
|
2977
|
+
description,
|
|
2978
|
+
summary,
|
|
2979
|
+
state = "ready",
|
|
2980
|
+
legend = [],
|
|
2981
|
+
children,
|
|
2982
|
+
tableFallback,
|
|
2983
|
+
retryAction
|
|
2984
|
+
}) {
|
|
2985
|
+
if (state === "loading") {
|
|
2986
|
+
return /* @__PURE__ */ jsx50(StateBlock, { variant: "loading", title: "Loading chart", description: summary, compact: true, action: retryAction });
|
|
2987
|
+
}
|
|
2988
|
+
if (state === "empty") {
|
|
2989
|
+
return /* @__PURE__ */ jsx50(StateBlock, { variant: "empty", title: "No chart data", description: summary, compact: true, action: retryAction });
|
|
2990
|
+
}
|
|
2991
|
+
if (state === "below-threshold") {
|
|
2992
|
+
return /* @__PURE__ */ jsx50(StateBlock, { variant: "not-enough-data", title: "Not enough data for chart", description: summary, compact: true, action: retryAction });
|
|
2993
|
+
}
|
|
2994
|
+
if (state === "error") {
|
|
2995
|
+
return /* @__PURE__ */ jsx50(StateBlock, { variant: "error", title: "Unable to load chart", description: summary, compact: true, action: retryAction });
|
|
2996
|
+
}
|
|
2997
|
+
return /* @__PURE__ */ jsx50(Paper14, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs44(Stack43, { gap: "md", children: [
|
|
2998
|
+
/* @__PURE__ */ jsxs44(Group37, { justify: "space-between", align: "flex-start", gap: "sm", children: [
|
|
2999
|
+
/* @__PURE__ */ jsxs44(Stack43, { gap: 4, children: [
|
|
3000
|
+
/* @__PURE__ */ jsx50(Title30, { order: 4, children: title }),
|
|
3001
|
+
description ? /* @__PURE__ */ jsx50(Text38, { size: "sm", c: "dimmed", children: description }) : null
|
|
3002
|
+
] }),
|
|
3003
|
+
state !== "ready" ? /* @__PURE__ */ jsx50(Badge22, { variant: "light", color: state === "permission-limited" ? "grape" : "yellow", children: state.replace("-", " ") }) : null
|
|
3004
|
+
] }),
|
|
3005
|
+
/* @__PURE__ */ jsx50(Text38, { size: "sm", children: summary }),
|
|
3006
|
+
legend.length ? /* @__PURE__ */ jsx50(Group37, { gap: "xs", wrap: "wrap", "aria-label": "Chart legend", children: legend.map((item, index) => /* @__PURE__ */ jsxs44(Badge22, { variant: "outline", color: "gray", title: typeof item.description === "string" ? item.description : void 0, children: [
|
|
3007
|
+
item.label,
|
|
3008
|
+
": ",
|
|
3009
|
+
item.token
|
|
3010
|
+
] }, `${String(item.label)}-${index}`)) }) : null,
|
|
3011
|
+
children,
|
|
3012
|
+
tableFallback ? /* @__PURE__ */ jsxs44(Stack43, { gap: "xs", children: [
|
|
3013
|
+
/* @__PURE__ */ jsx50(Text38, { size: "sm", fw: 600, children: "Accessible data fallback" }),
|
|
3014
|
+
tableFallback
|
|
3015
|
+
] }) : null
|
|
3016
|
+
] }) });
|
|
3017
|
+
}
|
|
3018
|
+
|
|
3019
|
+
// src/ReportingSection.tsx
|
|
3020
|
+
import { Group as Group38, Paper as Paper15, Stack as Stack44, Text as Text39, Title as Title31 } from "@mantine/core";
|
|
3021
|
+
import { jsx as jsx51, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
3022
|
+
function ReportingSection({
|
|
3023
|
+
title,
|
|
3024
|
+
description,
|
|
3025
|
+
state = "ready",
|
|
3026
|
+
periodControl,
|
|
3027
|
+
evidence,
|
|
3028
|
+
metrics,
|
|
3029
|
+
chart,
|
|
3030
|
+
table,
|
|
3031
|
+
action,
|
|
3032
|
+
stateMessage,
|
|
3033
|
+
retryAction
|
|
3034
|
+
}) {
|
|
3035
|
+
let stateBlock = null;
|
|
3036
|
+
if (state === "loading") {
|
|
3037
|
+
stateBlock = /* @__PURE__ */ jsx51(StateBlock, { variant: "loading", title: "Loading report", description: stateMessage ?? "The reporting surface is synchronizing.", compact: true });
|
|
3038
|
+
} else if (state === "empty") {
|
|
3039
|
+
stateBlock = /* @__PURE__ */ jsx51(StateBlock, { variant: "empty", title: "No report data", description: stateMessage ?? "No records match this reporting scope yet.", compact: true });
|
|
3040
|
+
} else if (state === "error") {
|
|
3041
|
+
stateBlock = /* @__PURE__ */ jsx51(StateBlock, { variant: "error", title: "Unable to load report", description: stateMessage ?? "The report could not be prepared.", compact: true, action: retryAction });
|
|
3042
|
+
} else if (state === "below-threshold") {
|
|
3043
|
+
stateBlock = /* @__PURE__ */ jsx51(StateBlock, { variant: "not-enough-data", title: "Not enough data", description: stateMessage ?? "This report is hidden until the threshold is met.", compact: true });
|
|
3044
|
+
} else if (state === "permission-limited") {
|
|
3045
|
+
stateBlock = /* @__PURE__ */ jsx51(StateBlock, { variant: "permission", title: "Permission-limited report", description: stateMessage ?? "Some evidence is hidden by access rules.", compact: true, action: retryAction });
|
|
3046
|
+
}
|
|
3047
|
+
return /* @__PURE__ */ jsx51(Paper15, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs45(Stack44, { gap: "lg", children: [
|
|
3048
|
+
/* @__PURE__ */ jsxs45(Group38, { justify: "space-between", align: "flex-start", gap: "md", children: [
|
|
3049
|
+
/* @__PURE__ */ jsxs45(Stack44, { gap: 4, children: [
|
|
3050
|
+
/* @__PURE__ */ jsx51(Title31, { order: 3, children: title }),
|
|
3051
|
+
description ? /* @__PURE__ */ jsx51(Text39, { size: "sm", c: "dimmed", children: description }) : null
|
|
3052
|
+
] }),
|
|
3053
|
+
action
|
|
3054
|
+
] }),
|
|
3055
|
+
periodControl,
|
|
3056
|
+
(state === "partial" || state === "stale" || state === "filtered") && stateMessage ? /* @__PURE__ */ jsx51(StateBlock, { variant: "info", title: state === "partial" ? "Partial report" : state === "stale" ? "Stale report" : "Filtered report", description: stateMessage, compact: true }) : null,
|
|
3057
|
+
stateBlock,
|
|
3058
|
+
metrics,
|
|
3059
|
+
chart,
|
|
3060
|
+
table,
|
|
3061
|
+
evidence
|
|
3062
|
+
] }) });
|
|
3063
|
+
}
|
|
3064
|
+
|
|
2590
3065
|
// src/locales/ar.ts
|
|
2591
3066
|
var ar = {
|
|
2592
3067
|
"gds.action.settings": "\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A",
|
|
@@ -3904,6 +4379,8 @@ export {
|
|
|
3904
4379
|
AccentPanel,
|
|
3905
4380
|
ReferenceLocaleNotice,
|
|
3906
4381
|
ReferenceLinkGrid,
|
|
4382
|
+
resolveSurfacePresentationStyles,
|
|
4383
|
+
isPresentationMode,
|
|
3907
4384
|
SectionPanel,
|
|
3908
4385
|
ReferenceSection,
|
|
3909
4386
|
ActionBar,
|
|
@@ -3928,6 +4405,12 @@ export {
|
|
|
3928
4405
|
PublicSiteFooter,
|
|
3929
4406
|
PublicBrandFooter,
|
|
3930
4407
|
AuthShell,
|
|
4408
|
+
PROVIDER_IDENTITY_REGISTRY,
|
|
4409
|
+
getProviderIdentityLabel,
|
|
4410
|
+
getSupportedProviderIdentityIds,
|
|
4411
|
+
getProviderIdentityPolicy,
|
|
4412
|
+
ProviderIdentityButton,
|
|
4413
|
+
ProviderIdentityButtonGroup,
|
|
3931
4414
|
SocialAuthButtons,
|
|
3932
4415
|
ArticleShell,
|
|
3933
4416
|
CtaButtonGroup,
|
|
@@ -3945,6 +4428,10 @@ export {
|
|
|
3945
4428
|
PlaceholderPanel,
|
|
3946
4429
|
SimpleDataTable,
|
|
3947
4430
|
StatsSection,
|
|
4431
|
+
PeriodSelector,
|
|
4432
|
+
EvidencePanel,
|
|
4433
|
+
ChartTokenPanel,
|
|
4434
|
+
ReportingSection,
|
|
3948
4435
|
ar,
|
|
3949
4436
|
de,
|
|
3950
4437
|
en,
|