@doneisbetter/gds-core 2.6.7 → 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.
@@ -1702,15 +1702,19 @@ function PublicBrandFooter({
1702
1702
  }
1703
1703
 
1704
1704
  // src/AuthShell.tsx
1705
- import { 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";
1705
+ import { Alert, Badge as Badge13, Box as Box10, Card as Card8, Container as Container2, Divider as Divider4, Group as Group20, Stack as Stack23, Text as Text20, Title as Title16 } from "@mantine/core";
1706
1706
  import { jsx as jsx29, jsxs as jsxs23 } from "react/jsx-runtime";
1707
1707
  function AuthShell({
1708
1708
  title,
1709
1709
  description,
1710
+ intent = "sign-in",
1710
1711
  brand,
1711
1712
  headerActions,
1712
1713
  footer,
1713
1714
  helper,
1715
+ error,
1716
+ guestAction,
1717
+ supportAction,
1714
1718
  socialAuth,
1715
1719
  dividerLabel = "Or continue with your account",
1716
1720
  children
@@ -1722,12 +1726,18 @@ function AuthShell({
1722
1726
  ] }) : null,
1723
1727
  /* @__PURE__ */ jsx29(Card8, { withBorder: true, radius: "lg", padding: "xl", children: /* @__PURE__ */ jsxs23(Stack23, { gap: "lg", children: [
1724
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("-", " ") }) }),
1725
1730
  /* @__PURE__ */ jsx29(Title16, { order: 2, children: title }),
1726
1731
  description ? /* @__PURE__ */ jsx29(Text20, { c: "dimmed", size: "sm", children: description }) : null
1727
1732
  ] }),
1733
+ error ? /* @__PURE__ */ jsx29(Alert, { color: "red", variant: "light", role: "alert", children: error }) : null,
1728
1734
  socialAuth ? /* @__PURE__ */ jsx29(Box10, { children: socialAuth }) : null,
1729
1735
  socialAuth ? /* @__PURE__ */ jsx29(Divider4, { label: dividerLabel, labelPosition: "center" }) : null,
1730
1736
  children,
1737
+ guestAction || supportAction ? /* @__PURE__ */ jsxs23(Group20, { justify: "center", gap: "sm", children: [
1738
+ guestAction,
1739
+ supportAction
1740
+ ] }) : null,
1731
1741
  helper ? /* @__PURE__ */ jsx29(Text20, { size: "sm", c: "dimmed", ta: "center", children: helper }) : null
1732
1742
  ] }) }),
1733
1743
  footer ? /* @__PURE__ */ jsx29(Text20, { size: "sm", c: "dimmed", ta: "center", children: footer }) : null
@@ -1826,6 +1836,20 @@ function mapVariant(variant = "neutral") {
1826
1836
  function getProviderIdentityLabel(provider, fallbackOverride) {
1827
1837
  return resolveProviderLabel(provider, fallbackOverride);
1828
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
+ }
1829
1853
  function ProviderIdentityMark({ provider }) {
1830
1854
  const meta = getProviderIdentityMeta(provider);
1831
1855
  return /* @__PURE__ */ jsx30(
@@ -1844,10 +1868,13 @@ function ProviderIdentityButton({
1844
1868
  provider,
1845
1869
  label,
1846
1870
  description,
1871
+ policyNote,
1872
+ error,
1847
1873
  href,
1848
1874
  onClick,
1849
1875
  disabled,
1850
1876
  loading,
1877
+ tenantDisabledReason,
1851
1878
  fullWidth = true,
1852
1879
  size = "md",
1853
1880
  variant = "neutral",
@@ -1857,6 +1884,7 @@ function ProviderIdentityButton({
1857
1884
  }) {
1858
1885
  const meta = getProviderIdentityMeta(provider);
1859
1886
  const buttonLabel = resolveProviderLabel(provider, label);
1887
+ const resolvedDisabled = disabled || Boolean(tenantDisabledReason);
1860
1888
  const buttonProps = href ? {
1861
1889
  component: "a",
1862
1890
  href
@@ -1874,13 +1902,16 @@ function ProviderIdentityButton({
1874
1902
  "aria-label": ariaLabel ?? (typeof buttonLabel === "string" ? buttonLabel : void 0),
1875
1903
  "aria-describedby": describedBy,
1876
1904
  leftSection: /* @__PURE__ */ jsx30(ProviderIdentityMark, { provider }),
1877
- disabled,
1905
+ disabled: resolvedDisabled,
1878
1906
  loading,
1879
1907
  styles: { root: { minHeight: minTouchTargetPx } },
1880
1908
  ...buttonProps,
1881
1909
  children: /* @__PURE__ */ jsxs24(Stack24, { gap: 0, align: "flex-start", children: [
1882
1910
  /* @__PURE__ */ jsx30(Text21, { inherit: true, children: buttonLabel }),
1883
- description ? /* @__PURE__ */ jsx30(Text21, { size: "xs", c: "dimmed", lh: 1.2, children: description }) : null
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
1884
1915
  ] })
1885
1916
  }
1886
1917
  );
@@ -1916,10 +1947,13 @@ function SocialAuthButtons({
1916
1947
  provider: provider.id,
1917
1948
  label: provider.label,
1918
1949
  description: provider.description,
1950
+ policyNote: provider.policyNote,
1951
+ error: provider.error,
1919
1952
  href: provider.href,
1920
1953
  onClick: provider.onClick,
1921
1954
  disabled: provider.disabled,
1922
1955
  loading: provider.loading,
1956
+ tenantDisabledReason: provider.tenantDisabledReason,
1923
1957
  size: provider.size ?? (compact ? "sm" : "md"),
1924
1958
  variant: provider.variant
1925
1959
  }));
@@ -2346,7 +2380,7 @@ function MapPanel({
2346
2380
  }
2347
2381
 
2348
2382
  // src/PublicFlowShell.tsx
2349
- import { Badge as Badge13, Group as Group28, Paper as Paper10, Stack as Stack32, Text as Text28, Title as Title22 } from "@mantine/core";
2383
+ import { Badge as Badge14, Group as Group28, Paper as Paper10, Stack as Stack32, Text as Text28, Title as Title22 } from "@mantine/core";
2350
2384
  import { jsx as jsx38, jsxs as jsxs32 } from "react/jsx-runtime";
2351
2385
  var stageTone = {
2352
2386
  idle: { label: "Idle", color: "gray" },
@@ -2431,7 +2465,7 @@ function PublicFlowShell({
2431
2465
  eyebrow ? /* @__PURE__ */ jsx38(Text28, { size: "xs", fw: 700, c: "dimmed", tt: "uppercase", children: eyebrow }) : null,
2432
2466
  /* @__PURE__ */ jsxs32(Group28, { gap: "sm", wrap: "wrap", children: [
2433
2467
  /* @__PURE__ */ jsx38(Title22, { order: 2, children: stage.title }),
2434
- /* @__PURE__ */ jsx38(Badge13, { variant: "light", color: tone.color, children: tone.label })
2468
+ /* @__PURE__ */ jsx38(Badge14, { variant: "light", color: tone.color, children: tone.label })
2435
2469
  ] }),
2436
2470
  stage.description ? /* @__PURE__ */ jsx38(Text28, { size: "sm", c: "dimmed", children: stage.description }) : null
2437
2471
  ] }),
@@ -2446,7 +2480,7 @@ function PublicFlowShell({
2446
2480
  }
2447
2481
 
2448
2482
  // src/PlaybackSurface.tsx
2449
- import { Badge as Badge14, Group as Group29, Paper as Paper11, Stack as Stack33, Text as Text29, Title as Title23 } from "@mantine/core";
2483
+ import { Badge as Badge15, Group as Group29, Paper as Paper11, Stack as Stack33, Text as Text29, Title as Title23 } from "@mantine/core";
2450
2484
  import { jsx as jsx39, jsxs as jsxs33 } from "react/jsx-runtime";
2451
2485
  var stateTone = {
2452
2486
  loading: { label: "Loading", color: "blue" },
@@ -2508,7 +2542,7 @@ function PlaybackSurface({
2508
2542
  statusMessage ? /* @__PURE__ */ jsx39(Text29, { size: "sm", c: "dimmed", children: statusMessage }) : null
2509
2543
  ] }),
2510
2544
  /* @__PURE__ */ jsxs33(Group29, { gap: "sm", align: "center", wrap: "wrap", children: [
2511
- /* @__PURE__ */ jsx39(Badge14, { variant: "light", color: tone.color, children: tone.label }),
2545
+ /* @__PURE__ */ jsx39(Badge15, { variant: "light", color: tone.color, children: tone.label }),
2512
2546
  controls
2513
2547
  ] })
2514
2548
  ] }) : null,
@@ -2526,14 +2560,21 @@ function PlaybackSurface({
2526
2560
  }
2527
2561
 
2528
2562
  // src/MediaField.tsx
2529
- import { Badge as Badge15, Button as Button4, Divider as Divider6, Group as Group30, Paper as Paper12, Stack as Stack34, Text as Text30 } from "@mantine/core";
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";
2530
2564
  import { Fragment as Fragment6, jsx as jsx40, jsxs as jsxs34 } from "react/jsx-runtime";
2531
2565
  var stateLabels = {
2532
2566
  empty: { label: "Empty", color: "gray" },
2567
+ "drag-active": { label: "Drop to select", color: "violet" },
2533
2568
  selected: { label: "Selected", color: "blue" },
2569
+ "preview-loading": { label: "Preview loading", color: "violet" },
2534
2570
  saved: { label: "Saved", color: "teal" },
2535
2571
  invalid: { label: "Needs attention", color: "red" },
2536
- 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" }
2537
2578
  };
2538
2579
  function MediaField({
2539
2580
  label,
@@ -2546,17 +2587,24 @@ function MediaField({
2546
2587
  policyText,
2547
2588
  error,
2548
2589
  retryAction,
2590
+ replaceAction,
2549
2591
  onRemove,
2550
2592
  onReset,
2551
2593
  removeAction,
2552
2594
  resetAction,
2553
2595
  statusAction,
2596
+ acceptedTypes,
2597
+ maxSize,
2598
+ progress,
2599
+ readonly = false,
2554
2600
  state = "empty",
2555
2601
  mode = "stacked"
2556
2602
  }) {
2557
- const stateBadge = stateLabels[state];
2558
- const resolvedRemoveAction = removeAction ?? (onRemove ? /* @__PURE__ */ jsx40(Button4, { type: "button", variant: "light", color: "red", onClick: onRemove, children: "Remove" }) : null);
2559
- const resolvedResetAction = resetAction ?? (onReset ? /* @__PURE__ */ jsx40(Button4, { type: "button", variant: "default", onClick: onReset, children: "Reset" }) : null);
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;
2560
2608
  return /* @__PURE__ */ jsx40(
2561
2609
  FormField,
2562
2610
  {
@@ -2565,11 +2613,18 @@ function MediaField({
2565
2613
  error,
2566
2614
  children: /* @__PURE__ */ jsx40(Paper12, { withBorder: true, radius: "xl", p: "lg", children: /* @__PURE__ */ jsxs34(Stack34, { gap: "md", children: [
2567
2615
  /* @__PURE__ */ jsx40(Group30, { justify: "flex-end", align: "center", gap: "sm", children: /* @__PURE__ */ jsxs34(Group30, { gap: "xs", justify: "flex-end", children: [
2568
- /* @__PURE__ */ jsx40(Badge15, { variant: "light", color: stateBadge.color, children: stateBadge.label }),
2616
+ /* @__PURE__ */ jsx40(Badge16, { variant: "light", color: stateBadge.color, children: stateBadge.label }),
2569
2617
  statusAction
2570
2618
  ] }) }),
2571
2619
  preview ? preview : null,
2572
- uploadControl || urlInput ? /* @__PURE__ */ jsxs34(Fragment6, { children: [
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: [
2573
2628
  /* @__PURE__ */ jsx40(Divider6, {}),
2574
2629
  /* @__PURE__ */ jsxs34(Stack34, { gap: "sm", style: mode === "split" ? { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))" } : void 0, children: [
2575
2630
  uploadControl,
@@ -2578,9 +2633,14 @@ function MediaField({
2578
2633
  ] }) : null,
2579
2634
  value ? /* @__PURE__ */ jsx40(Text30, { size: "sm", c: "dimmed", style: { wordBreak: "break-all" }, children: value }) : null,
2580
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,
2581
2640
  policyText ? /* @__PURE__ */ jsx40(Text30, { size: "sm", c: error ? "red.7" : "dimmed", children: policyText }) : null,
2582
2641
  typeof error !== "string" && error ? error : null,
2583
- resolvedRemoveAction || resolvedResetAction ? /* @__PURE__ */ jsxs34(Group30, { gap: "sm", children: [
2642
+ replaceAction || resolvedRemoveAction || resolvedResetAction || retryAction ? /* @__PURE__ */ jsxs34(Group30, { gap: "sm", children: [
2643
+ replaceAction,
2584
2644
  resolvedResetAction,
2585
2645
  retryAction,
2586
2646
  resolvedRemoveAction
@@ -2591,7 +2651,7 @@ function MediaField({
2591
2651
  }
2592
2652
 
2593
2653
  // src/MediaCard.tsx
2594
- import { ActionIcon as ActionIcon4, Badge as Badge16, Card as Card9, Group as Group31, Stack as Stack35, Text as Text31, Title as Title24 } from "@mantine/core";
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";
2595
2655
  import { jsx as jsx41, jsxs as jsxs35 } from "react/jsx-runtime";
2596
2656
  function MediaCard({ title, image, description, status, overlay, actions = [] }) {
2597
2657
  const EyeIcon = GdsIcons.Eye;
@@ -2606,7 +2666,7 @@ function MediaCard({ title, image, description, status, overlay, actions = [] })
2606
2666
  /* @__PURE__ */ jsx41(Title24, { order: 4, children: title }),
2607
2667
  description ? /* @__PURE__ */ jsx41(Text31, { size: "sm", c: "dimmed", lineClamp: 2, children: description }) : null
2608
2668
  ] }),
2609
- status ? /* @__PURE__ */ jsx41(Badge16, { variant: "light", children: status }) : null
2669
+ status ? /* @__PURE__ */ jsx41(Badge17, { variant: "light", children: status }) : null
2610
2670
  ] }),
2611
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
2612
2672
  ] })
@@ -2614,19 +2674,33 @@ function MediaCard({ title, image, description, status, overlay, actions = [] })
2614
2674
  }
2615
2675
 
2616
2676
  // src/AccessSummary.tsx
2617
- import { Badge as Badge17, Card as Card10, Group as Group32, Stack as Stack36, Text as Text32, Title as Title25 } from "@mantine/core";
2677
+ import { Badge as Badge18, Card as Card10, Group as Group32, Stack as Stack36, Text as Text32, Title as Title25 } from "@mantine/core";
2618
2678
  import { jsx as jsx42, jsxs as jsxs36 } from "react/jsx-runtime";
2619
- function AccessSummary({ title, roles, scope, blocked = false, description }) {
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];
2620
2689
  return /* @__PURE__ */ jsx42(Card10, { withBorder: true, radius: "lg", padding: "lg", children: /* @__PURE__ */ jsxs36(Stack36, { gap: "sm", children: [
2621
2690
  /* @__PURE__ */ jsxs36(Group32, { justify: "space-between", align: "center", children: [
2622
2691
  /* @__PURE__ */ jsx42(Title25, { order: 4, children: title }),
2623
- /* @__PURE__ */ jsx42(Badge17, { color: blocked ? "red" : "teal", variant: "light", children: blocked ? "Blocked" : "Allowed" })
2692
+ /* @__PURE__ */ jsx42(Badge18, { color: meta.color, variant: "light", children: meta.label })
2624
2693
  ] }),
2625
- /* @__PURE__ */ jsx42(Group32, { gap: "xs", children: roles.map((role) => /* @__PURE__ */ jsx42(Badge17, { variant: "outline", children: role }, role)) }),
2694
+ /* @__PURE__ */ jsx42(Group32, { gap: "xs", children: roles.map((role) => /* @__PURE__ */ jsx42(Badge18, { variant: "outline", children: role }, role)) }),
2626
2695
  scope ? /* @__PURE__ */ jsxs36(Text32, { size: "sm", c: "dimmed", children: [
2627
2696
  "Scope: ",
2628
2697
  scope
2629
2698
  ] }) : null,
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,
2630
2704
  description ? /* @__PURE__ */ jsx42(Text32, { size: "sm", children: description }) : null
2631
2705
  ] }) });
2632
2706
  }
@@ -2697,7 +2771,7 @@ function FilterDrawer({
2697
2771
  }
2698
2772
 
2699
2773
  // src/PlaceholderPanel.tsx
2700
- import { Badge as Badge18, Card as Card11, Stack as Stack39, Text as Text35, Title as Title27 } from "@mantine/core";
2774
+ import { Badge as Badge19, Card as Card11, Stack as Stack39, Text as Text35, Title as Title27 } from "@mantine/core";
2701
2775
  import { Fragment as Fragment7, jsx as jsx45, jsxs as jsxs39 } from "react/jsx-runtime";
2702
2776
  function PlaceholderPanel({
2703
2777
  title,
@@ -2711,7 +2785,7 @@ function PlaceholderPanel({
2711
2785
  return /* @__PURE__ */ jsx45(Fragment7, { children });
2712
2786
  }
2713
2787
  return /* @__PURE__ */ jsx45(Card11, { children: /* @__PURE__ */ jsxs39(Stack39, { gap: "md", children: [
2714
- badge ? /* @__PURE__ */ jsx45(Badge18, { variant: "light", color: "blue", w: "fit-content", children: badge }) : null,
2788
+ badge ? /* @__PURE__ */ jsx45(Badge19, { variant: "light", color: "blue", w: "fit-content", children: badge }) : null,
2715
2789
  /* @__PURE__ */ jsxs39(Stack39, { gap: "xs", children: [
2716
2790
  /* @__PURE__ */ jsx45(Title27, { order: 4, children: title }),
2717
2791
  /* @__PURE__ */ jsx45(Text35, { c: "dimmed", children: description })
@@ -2792,6 +2866,202 @@ function StatsSection({
2792
2866
  ] });
2793
2867
  }
2794
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
+
2795
3065
  // src/locales/ar.ts
2796
3066
  var ar = {
2797
3067
  "gds.action.settings": "\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A",
@@ -4137,6 +4407,8 @@ export {
4137
4407
  AuthShell,
4138
4408
  PROVIDER_IDENTITY_REGISTRY,
4139
4409
  getProviderIdentityLabel,
4410
+ getSupportedProviderIdentityIds,
4411
+ getProviderIdentityPolicy,
4140
4412
  ProviderIdentityButton,
4141
4413
  ProviderIdentityButtonGroup,
4142
4414
  SocialAuthButtons,
@@ -4156,6 +4428,10 @@ export {
4156
4428
  PlaceholderPanel,
4157
4429
  SimpleDataTable,
4158
4430
  StatsSection,
4431
+ PeriodSelector,
4432
+ EvidencePanel,
4433
+ ChartTokenPanel,
4434
+ ReportingSection,
4159
4435
  ar,
4160
4436
  de,
4161
4437
  en,
package/dist/client.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { bg as SemanticAction, bi as SemanticActionId, a7 as GdsVocabularyPack } from './server-BSuY9Qx6.mjs';
2
- export { A as AccentPanel, a as AccentPanelProps, b as AccentPanelVariant, c as AccentTone, d as AccessSummary, e as AccessSummaryProps, f as ActionBar, g as ActionBarAction, h as ActionBarIconAction, i as ActionBarProps, j as ArticleShell, k as ArticleShellProps, l as AuthShell, m as AuthShellProps, B as BreadcrumbItem, n as BrowseSurface, o as BrowseSurfaceFilterChip, p as BrowseSurfaceProps, q as BrowseSurfaceScopeOption, C as ChoiceChip, r as ChoiceChipProps, s as ConsumerDashboardGrid, t as ConsumerDashboardGridProps, u as ConsumerSection, v as ConsumerSectionProps, w as CtaButtonGroup, x as CtaButtonGroupProps, D as DataToolbar, y as DataToolbarFilterChip, z as DataToolbarProps, E as DetailProfileShell, F as DetailProfileShellProps, G as DocsPageShell, H as DocsPageShellProps, I as EditorialCard, J as EditorialCardProps, K as EditorialHero, L as EditorialHeroAction, M as EditorialHeroMetaItem, N as EditorialHeroProps, O as EmptyState, P as EmptyStateProps, Q as FeatureBand, R as FeatureBandItem, S as FeatureBandProps, T as FilterDrawer, U as FilterDrawerMode, V as FilterDrawerProps, W as FoodCardAvailabilityState, X as FoodCardMarker, Y as FoodCardMediaRatio, Z as FoodCardMetadata, _ as FoodMenuCategory, $ as FoodMenuItem, a0 as FoodMenuSection, a1 as FoodMenuSectionProps, a2 as FormField, a3 as FormFieldProps, a4 as GdsIcons, a5 as GdsLocale, a6 as GdsVocabulary, a8 as ListingCard, a9 as ListingCardAffordance, aa as ListingCardMediaRatio, ab as ListingCardProps, ac as ListingMetadataRow, ad as MapPanel, ae as MapPanelProps, af as MediaCard, ag as MediaCardAction, ah as MediaCardProps, ai as MediaField, aj as MediaFieldProps, ak as MetricCard, al as MetricCardProps, am as PROVIDER_IDENTITY_REGISTRY, an as PageHeader, ao as PageHeaderEyebrowVariant, ap as PageHeaderProps, aq as PlaceholderPanel, ar as PlaceholderPanelProps, as as PlaybackSurface, at as PlaybackSurfaceProps, au as PlaybackSurfaceState, av as ProductCard, aw as ProductCardAction, ax as ProductCardMetaItem, ay as ProductCardProps, az as ProgressCard, aA as ProgressCardProps, aB as ProviderIdentity, aC as ProviderIdentityButton, aD as ProviderIdentityButtonGroup, aE as ProviderIdentityButtonGroupProps, aF as ProviderIdentityButtonProps, aG as ProviderIdentityVariant, aH as PublicBrandFooter, aI as PublicBrandFooterClassNames, aJ as PublicBrandFooterLayoutVariant, aK as PublicBrandFooterProps, aL as PublicFlowAction, aM as PublicFlowActionPriority, aN as PublicFlowShell, aO as PublicFlowShellProps, aP as PublicFlowStage, aQ as PublicFlowStageStatus, aR as PublicFoodCard, aS as PublicFoodCardProps, aT as PublicNav, aU as PublicNavItem, aV as PublicNavProps, aW as PublicProductCard, aX as PublicProductCardHelperKind, aY as PublicProductCardMetaItem, aZ as PublicProductCardProps, a_ as PublicProductCardState, a$ as PublicShell, b0 as PublicShellClassNames, b1 as PublicShellHeaderVariant, b2 as PublicShellMobileNavigationMode, b3 as PublicShellProps, b4 as PublicSiteFooter, b5 as PublicSiteFooterProps, b6 as ReferenceLinkGrid, b7 as ReferenceLinkGridItem, b8 as ReferenceLinkGridProps, b9 as ReferenceLocaleNotice, ba as ReferenceLocaleNoticeProps, bb as ReferenceSection, bc as ReferenceSectionProps, bd as SectionPanel, be as SectionPanelProps, bf as SectionPanelTone, bh as SemanticActionDefinition, bj as SimpleDataTable, bk as SimpleDataTableProps, bl as SimpleTableColumn, bm as SocialAuthButtons, bn as SocialAuthButtonsProps, bo as SocialAuthProviderId, bp as SocialAuthProviderOption, bq as StateBlock, br as StateBlockProps, bs as StateBlockVariant, bt as StatsSection, bu as StatsSectionProps, bv as StatusBadge, bw as StatusBadgeProps, bx as StatusVariant, by as SurfaceContentAlign, bz as SurfaceContentJustify, bA as SurfacePresentation, bB as SurfacePresentationProps, bC as VocabularyResolver, bD as ar, bE as createGdsVocabularyPack, bF as de, bG as en, bH as es, bI as fr, bJ as gdsLocales, bK as getGdsMessages, bL as getProviderIdentityLabel, bM as getSemanticActionConfig, bN as getSemanticActionLabel, bO as he, bP as hu, bQ as isPresentationMode, bR as it, bS as mergeGdsVocabularyPacks, bT as resolveAccentPanelStyles, bU as resolveSemanticActionConfig, bV as resolveSurfacePresentationStyles, bW as ru } from './server-BSuY9Qx6.mjs';
1
+ import { bu as SemanticAction, bw as SemanticActionId, ae as GdsVocabularyPack } from './server-woziKWie.mjs';
2
+ export { A as AccentPanel, a as AccentPanelProps, b as AccentPanelVariant, c as AccentTone, d as AccessSummary, e as AccessSummaryProps, f as ActionBar, g as ActionBarAction, h as ActionBarIconAction, i as ActionBarProps, j as ArticleShell, k as ArticleShellProps, l as AuthShell, m as AuthShellProps, B as BreadcrumbItem, n as BrowseSurface, o as BrowseSurfaceFilterChip, p as BrowseSurfaceProps, q as BrowseSurfaceScopeOption, C as ChartLegendItem, r as ChartTokenPanel, s as ChartTokenPanelProps, t as ChartTokenPanelState, u as ChoiceChip, v as ChoiceChipProps, w as ConsumerDashboardGrid, x as ConsumerDashboardGridProps, y as ConsumerSection, z as ConsumerSectionProps, D as CtaButtonGroup, E as CtaButtonGroupProps, F as DataToolbar, G as DataToolbarFilterChip, H as DataToolbarProps, I as DetailProfileShell, J as DetailProfileShellProps, K as DocsPageShell, L as DocsPageShellProps, M as EditorialCard, N as EditorialCardProps, O as EditorialHero, P as EditorialHeroAction, Q as EditorialHeroMetaItem, R as EditorialHeroProps, S as EmptyState, T as EmptyStateProps, U as EvidencePanel, V as EvidencePanelProps, W as EvidencePanelState, X as FeatureBand, Y as FeatureBandItem, Z as FeatureBandProps, _ as FilterDrawer, $ as FilterDrawerMode, a0 as FilterDrawerProps, a1 as FoodCardAvailabilityState, a2 as FoodCardMarker, a3 as FoodCardMediaRatio, a4 as FoodCardMetadata, a5 as FoodMenuCategory, a6 as FoodMenuItem, a7 as FoodMenuSection, a8 as FoodMenuSectionProps, a9 as FormField, aa as FormFieldProps, ab as GdsIcons, ac as GdsLocale, ad as GdsVocabulary, af as ListingCard, ag as ListingCardAffordance, ah as ListingCardMediaRatio, ai as ListingCardProps, aj as ListingMetadataRow, ak as MapPanel, al as MapPanelProps, am as MediaCard, an as MediaCardAction, ao as MediaCardProps, ap as MediaField, aq as MediaFieldProps, ar as MediaFieldState, as as MetricCard, at as MetricCardProps, au as PROVIDER_IDENTITY_REGISTRY, av as PageHeader, aw as PageHeaderEyebrowVariant, ax as PageHeaderProps, ay as PeriodSelector, az as PeriodSelectorOption, aA as PeriodSelectorProps, aB as PlaceholderPanel, aC as PlaceholderPanelProps, aD as PlaybackSurface, aE as PlaybackSurfaceProps, aF as PlaybackSurfaceState, aG as ProductCard, aH as ProductCardAction, aI as ProductCardMetaItem, aJ as ProductCardProps, aK as ProgressCard, aL as ProgressCardProps, aM as ProviderIdentity, aN as ProviderIdentityButton, aO as ProviderIdentityButtonGroup, aP as ProviderIdentityButtonGroupProps, aQ as ProviderIdentityButtonProps, aR as ProviderIdentityVariant, aS as PublicBrandFooter, aT as PublicBrandFooterClassNames, aU as PublicBrandFooterLayoutVariant, aV as PublicBrandFooterProps, aW as PublicFlowAction, aX as PublicFlowActionPriority, aY as PublicFlowShell, aZ as PublicFlowShellProps, a_ as PublicFlowStage, a$ as PublicFlowStageStatus, b0 as PublicFoodCard, b1 as PublicFoodCardProps, b2 as PublicNav, b3 as PublicNavItem, b4 as PublicNavProps, b5 as PublicProductCard, b6 as PublicProductCardHelperKind, b7 as PublicProductCardMetaItem, b8 as PublicProductCardProps, b9 as PublicProductCardState, ba as PublicShell, bb as PublicShellClassNames, bc as PublicShellHeaderVariant, bd as PublicShellMobileNavigationMode, be as PublicShellProps, bf as PublicSiteFooter, bg as PublicSiteFooterProps, bh as ReferenceLinkGrid, bi as ReferenceLinkGridItem, bj as ReferenceLinkGridProps, bk as ReferenceLocaleNotice, bl as ReferenceLocaleNoticeProps, bm as ReferenceSection, bn as ReferenceSectionProps, bo as ReportingSection, bp as ReportingSectionProps, bq as ReportingSectionState, br as SectionPanel, bs as SectionPanelProps, bt as SectionPanelTone, bv as SemanticActionDefinition, bx as SimpleDataTable, by as SimpleDataTableProps, bz as SimpleTableColumn, bA as SocialAuthButtons, bB as SocialAuthButtonsProps, bC as SocialAuthProviderId, bD as SocialAuthProviderOption, bE as StateBlock, bF as StateBlockProps, bG as StateBlockVariant, bH as StatsSection, bI as StatsSectionProps, bJ as StatusBadge, bK as StatusBadgeProps, bL as StatusVariant, bM as SurfaceContentAlign, bN as SurfaceContentJustify, bO as SurfacePresentation, bP as SurfacePresentationProps, bQ as VocabularyResolver, bR as ar, bS as createGdsVocabularyPack, bT as de, bU as en, bV as es, bW as fr, bX as gdsLocales, bY as getGdsMessages, bZ as getProviderIdentityLabel, b_ as getProviderIdentityPolicy, b$ as getSemanticActionConfig, c0 as getSemanticActionLabel, c1 as getSupportedProviderIdentityIds, c2 as he, c3 as hu, c4 as isPresentationMode, c5 as it, c6 as mergeGdsVocabularyPacks, c7 as resolveAccentPanelStyles, c8 as resolveSemanticActionConfig, c9 as resolveSurfacePresentationStyles, ca as ru } from './server-woziKWie.mjs';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as react from 'react';
5
5
  import react__default, { ReactNode } from 'react';
@@ -146,18 +146,28 @@ interface ShareButtonGroupProps {
146
146
  }
147
147
  declare function ShareButtonGroup({ url, title, text, channels, compact, label, description, }: ShareButtonGroupProps): react_jsx_runtime.JSX.Element;
148
148
 
149
+ type UploadDropzoneState = 'idle' | 'drag-active' | 'selected' | 'upload-pending' | 'upload-failed' | 'unsupported-type' | 'too-large' | 'removed' | 'readonly';
149
150
  interface UploadDropzoneProps {
150
151
  title: string;
151
152
  description?: string;
152
153
  onFilesSelected?: (files: File[]) => void;
153
154
  accept?: string;
155
+ acceptedTypesLabel?: string;
156
+ maxSizeLabel?: string;
154
157
  multiple?: boolean;
155
158
  actionLabel?: string;
156
159
  mode?: 'panel' | 'inline';
160
+ state?: UploadDropzoneState;
161
+ selectedFiles?: string[];
162
+ error?: string;
163
+ policyText?: string;
164
+ retryAction?: ReactNode;
165
+ removeAction?: ReactNode;
166
+ readonly?: boolean;
157
167
  }
158
- declare function UploadDropzone({ title, description, onFilesSelected, accept, multiple, actionLabel, mode, }: UploadDropzoneProps): react_jsx_runtime.JSX.Element;
168
+ declare function UploadDropzone({ title, description, onFilesSelected, accept, acceptedTypesLabel, maxSizeLabel, multiple, actionLabel, mode, state, selectedFiles, error, policyText, retryAction, removeAction, readonly, }: UploadDropzoneProps): react_jsx_runtime.JSX.Element;
159
169
 
160
- type AccessRecoveryState = 'unauthenticated' | 'expired-session' | 'forbidden' | 'missing' | 'unavailable';
170
+ type AccessRecoveryState = 'unauthenticated' | 'expired-session' | 'timeout' | 'forbidden' | 'missing' | 'unavailable';
161
171
  interface AccessRecoveryAction {
162
172
  action: SemanticAction;
163
173
  onClick?: () => void;
@@ -181,4 +191,4 @@ interface AccessRecoveryPanelProps {
181
191
  }
182
192
  declare function AccessRecoveryPanel({ state, title, description, primaryAction, secondaryAction, tertiaryAction, onRetry, onSignIn, onBack, supportAction, compact, }: AccessRecoveryPanelProps): react_jsx_runtime.JSX.Element;
183
193
 
184
- export { type AccessRecoveryAction, AccessRecoveryPanel, type AccessRecoveryPanelProps, type AccessRecoveryState, ConfirmDialog, type ConfirmDialogProps, DiscoveryShell, type DiscoveryShellProps, DocsCodeBlock, type DocsCodeBlockProps, DocsShell, type DocsShellProps, GameBoardTile, type GameBoardTileProps, GdsVocabularyPack, ReferenceThemeExplorer, SemanticAction, SemanticActionId, SemanticButton, type SemanticButtonProps, ShareButtonGroup, type ShareButtonGroupProps, type ShareChannel, SidebarNav, SidebarNavItem, type SidebarNavItemProps, type SidebarNavProps, SidebarNavSection, type SidebarNavSectionProps, type ThemePresetId, type ThemeSchemeId, ThemeToggle, type ThemeToggleProps, UploadDropzone, type UploadDropzoneProps };
194
+ export { type AccessRecoveryAction, AccessRecoveryPanel, type AccessRecoveryPanelProps, type AccessRecoveryState, ConfirmDialog, type ConfirmDialogProps, DiscoveryShell, type DiscoveryShellProps, DocsCodeBlock, type DocsCodeBlockProps, DocsShell, type DocsShellProps, GameBoardTile, type GameBoardTileProps, GdsVocabularyPack, ReferenceThemeExplorer, SemanticAction, SemanticActionId, SemanticButton, type SemanticButtonProps, ShareButtonGroup, type ShareButtonGroupProps, type ShareChannel, SidebarNav, SidebarNavItem, type SidebarNavItemProps, type SidebarNavProps, SidebarNavSection, type SidebarNavSectionProps, type ThemePresetId, type ThemeSchemeId, ThemeToggle, type ThemeToggleProps, UploadDropzone, type UploadDropzoneProps, type UploadDropzoneState };