@burdenoff/microfe-store 2026.805.1 → 2026.819.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/StoreAdminRoutes.js +27 -27
  2. package/dist/StoreRoot.js +78 -45
  3. package/dist/StoreRoot.js.map +1 -1
  4. package/dist/StoreRoutes.js +163 -85
  5. package/dist/StoreRoutes.js.map +1 -1
  6. package/dist/components/sourcing/SourcingConfirmationDialog.d.ts +15 -0
  7. package/dist/components/sourcing/SourcingConfirmationDialog.js +61 -0
  8. package/dist/components/sourcing/SourcingConfirmationDialog.js.map +1 -0
  9. package/dist/components/sourcing/SourcingUi.d.ts +51 -0
  10. package/dist/components/sourcing/SourcingUi.js +176 -0
  11. package/dist/components/sourcing/SourcingUi.js.map +1 -0
  12. package/dist/generated/global-operations.d.ts +713 -0
  13. package/dist/generated/global-operations.js +557 -175
  14. package/dist/generated/global-operations.js.map +1 -1
  15. package/dist/generated/global-types.d.ts +2152 -2159
  16. package/dist/generated/global-types.js +8 -2
  17. package/dist/generated/global-types.js.map +1 -1
  18. package/dist/hooks/useBackendCart.js +17 -17
  19. package/dist/hooks/useInstallations.js +32 -32
  20. package/dist/hooks/useOrders.js +7 -7
  21. package/dist/hooks/useSourcing.d.ts +319 -0
  22. package/dist/hooks/useSourcing.js +87 -0
  23. package/dist/hooks/useSourcing.js.map +1 -0
  24. package/dist/hooks/useStoreGraphQL.js +163 -163
  25. package/dist/index.js +12 -12
  26. package/dist/pages/AdminDashboardPage.js +132 -132
  27. package/dist/pages/AdminReviewModerationPage.js +55 -55
  28. package/dist/pages/AdminStoresPage.js +95 -95
  29. package/dist/pages/AdminSubmissionsQueuePage.js +297 -297
  30. package/dist/pages/AdminSubmissionsQueuePage.js.map +1 -1
  31. package/dist/pages/AppDetailPage.js +65 -65
  32. package/dist/pages/AppSettingsPage.js +32 -32
  33. package/dist/pages/CartPage.js +66 -66
  34. package/dist/pages/CreateSourcingRequestPage.d.ts +3 -0
  35. package/dist/pages/CreateSourcingRequestPage.js +439 -0
  36. package/dist/pages/CreateSourcingRequestPage.js.map +1 -0
  37. package/dist/pages/InstalledAppsPage.js +15 -15
  38. package/dist/pages/InstalledAppsPage.js.map +1 -1
  39. package/dist/pages/MarketplaceHomePage.js +384 -384
  40. package/dist/pages/MarketplaceHomePage.js.map +1 -1
  41. package/dist/pages/MyLicensesPage.js +39 -39
  42. package/dist/pages/OrderConfirmationPage.js +57 -57
  43. package/dist/pages/OrdersPage.js +3 -3
  44. package/dist/pages/OrdersPage.js.map +1 -1
  45. package/dist/pages/ProductDetailPage.js +6 -6
  46. package/dist/pages/SellerSourcingOffersPage.d.ts +3 -0
  47. package/dist/pages/SellerSourcingOffersPage.js +284 -0
  48. package/dist/pages/SellerSourcingOffersPage.js.map +1 -0
  49. package/dist/pages/SellerSourcingOpportunitiesPage.d.ts +3 -0
  50. package/dist/pages/SellerSourcingOpportunitiesPage.js +272 -0
  51. package/dist/pages/SellerSourcingOpportunitiesPage.js.map +1 -0
  52. package/dist/pages/SellerSourcingOpportunityDetailPage.d.ts +3 -0
  53. package/dist/pages/SellerSourcingOpportunityDetailPage.js +465 -0
  54. package/dist/pages/SellerSourcingOpportunityDetailPage.js.map +1 -0
  55. package/dist/pages/SourcingRequestDetailPage.d.ts +3 -0
  56. package/dist/pages/SourcingRequestDetailPage.js +447 -0
  57. package/dist/pages/SourcingRequestDetailPage.js.map +1 -0
  58. package/dist/pages/SourcingRequestsPage.d.ts +3 -0
  59. package/dist/pages/SourcingRequestsPage.js +272 -0
  60. package/dist/pages/SourcingRequestsPage.js.map +1 -0
  61. package/dist/providers/SourcingAccessProvider.d.ts +21 -0
  62. package/dist/providers/SourcingAccessProvider.js +95 -0
  63. package/dist/providers/SourcingAccessProvider.js.map +1 -0
  64. package/dist/translations/en.d.ts +3 -0
  65. package/dist/translations/en.js +3 -0
  66. package/dist/translations/en.js.map +1 -1
  67. package/package.json +1 -1
@@ -0,0 +1,176 @@
1
+ import { SourcingUnit as e } from "../../generated/global-types.js";
2
+ import { AlertCircle as t, ArrowLeft as n, Loader2 as r } from "lucide-react";
3
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
4
+ import { formatDate as o, formatDateTime as s } from "@burdenoff/fe-libs/shared/utils";
5
+ import { Badge as c, IllustratedEmptyState as l, buttonVariants as u } from "@burdenoff/fe-libs/ui";
6
+ import { PageHeader as d } from "@burdenoff/fe-libs/chrome";
7
+ //#region src/components/sourcing/SourcingUi.tsx
8
+ var f = [
9
+ e.Unit,
10
+ e.Gram,
11
+ e.Kilogram,
12
+ e.Milliliter,
13
+ e.Liter,
14
+ e.MetricTon,
15
+ e.Box,
16
+ e.Bag,
17
+ e.Pallet
18
+ ], p = {
19
+ [e.Unit]: "Unit",
20
+ [e.Gram]: "Gram",
21
+ [e.Kilogram]: "Kilogram",
22
+ [e.Milliliter]: "Milliliter",
23
+ [e.Liter]: "Liter",
24
+ [e.MetricTon]: "Metric ton",
25
+ [e.Box]: "Box",
26
+ [e.Bag]: "Bag",
27
+ [e.Pallet]: "Pallet"
28
+ }, m = "mt-1.5 w-full rounded-lg border border-border-default bg-surface-default px-3 py-2.5 text-sm text-text-primary shadow-sm outline-none transition placeholder:text-text-tertiary focus:border-action-primary-bg focus:ring-2 focus:ring-action-primary-bg/20 disabled:cursor-not-allowed disabled:bg-surface-muted disabled:text-text-tertiary", h = "block text-sm font-medium text-text-primary", g = "mt-1 text-xs text-text-tertiary", _ = u({ size: "lg" }), v = u({
29
+ variant: "outline",
30
+ size: "lg"
31
+ }), y = u({
32
+ variant: "destructive",
33
+ size: "lg"
34
+ });
35
+ function b(e, t) {
36
+ return `${e === "/" ? "" : e.replace(/\/$/, "")}${t.startsWith("/") ? t : `/${t}`}` || "/";
37
+ }
38
+ function x(e) {
39
+ return p[e] ?? e.replaceAll("_", " ").toLowerCase();
40
+ }
41
+ function S(e) {
42
+ let t = new Date(e);
43
+ return Number.isNaN(t.getTime()) ? "Not available" : o(t);
44
+ }
45
+ function C(e) {
46
+ let t = new Date(e);
47
+ return Number.isNaN(t.getTime()) ? "Not available" : s(t);
48
+ }
49
+ function w(e, t) {
50
+ return !e || !t ? "Not specified" : `${t.toUpperCase()} ${e}`;
51
+ }
52
+ function T({ country: e, region: t, city: n }) {
53
+ return [
54
+ n,
55
+ t,
56
+ e
57
+ ].filter(Boolean).join(", ");
58
+ }
59
+ function E(e) {
60
+ let t = new Date(e);
61
+ return Number.isNaN(t.getTime()) ? "" : (/* @__PURE__ */ new Date(t.getTime() - t.getTimezoneOffset() * 6e4)).toISOString().slice(0, 16);
62
+ }
63
+ function D(e, t) {
64
+ return e instanceof Error && e.message.trim() ? e.message : t;
65
+ }
66
+ function O({ title: e, description: t, icon: r, onBack: o, actions: s }) {
67
+ return /* @__PURE__ */ i("div", {
68
+ className: "border-b border-border-seam bg-surface-raised",
69
+ children: /* @__PURE__ */ i("div", {
70
+ className: "mx-auto max-w-6xl px-4 py-5 sm:px-6",
71
+ children: /* @__PURE__ */ i(d, {
72
+ className: "mb-0",
73
+ title: e,
74
+ description: t,
75
+ icon: o ? /* @__PURE__ */ a("div", {
76
+ className: "flex items-center gap-2",
77
+ children: [/* @__PURE__ */ i("button", {
78
+ type: "button",
79
+ onClick: o,
80
+ "aria-label": "Go back",
81
+ className: "inline-flex size-10 shrink-0 items-center justify-center rounded-lg text-text-secondary transition hover:bg-surface-hover hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-bg",
82
+ children: /* @__PURE__ */ i(n, {
83
+ className: "size-5",
84
+ "aria-hidden": "true"
85
+ })
86
+ }), /* @__PURE__ */ i("span", {
87
+ className: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-surface-accent-muted text-text-accent",
88
+ children: r
89
+ })]
90
+ }) : /* @__PURE__ */ i("span", {
91
+ className: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-surface-accent-muted text-text-accent",
92
+ children: r
93
+ }),
94
+ actions: s
95
+ })
96
+ })
97
+ });
98
+ }
99
+ function k({ label: e }) {
100
+ return /* @__PURE__ */ a("div", {
101
+ role: "status",
102
+ "aria-live": "polite",
103
+ className: "flex flex-col items-center py-20 text-center",
104
+ children: [/* @__PURE__ */ i(r, {
105
+ className: "mb-3 size-8 animate-spin text-text-accent",
106
+ "aria-hidden": "true"
107
+ }), /* @__PURE__ */ i("p", {
108
+ className: "text-sm text-text-secondary",
109
+ children: e
110
+ })]
111
+ });
112
+ }
113
+ function A({ title: e, message: n, onRetry: r }) {
114
+ return /* @__PURE__ */ a("div", {
115
+ role: "alert",
116
+ className: "rounded-xl border border-border-danger bg-surface-danger-muted p-6 text-center",
117
+ children: [
118
+ /* @__PURE__ */ i(t, {
119
+ className: "mx-auto size-8 text-text-danger",
120
+ "aria-hidden": "true"
121
+ }),
122
+ /* @__PURE__ */ i("h2", {
123
+ className: "mt-3 text-lg font-semibold text-text-primary",
124
+ children: e
125
+ }),
126
+ /* @__PURE__ */ i("p", {
127
+ className: "mx-auto mt-1 max-w-xl text-sm text-text-secondary",
128
+ children: n
129
+ }),
130
+ r ? /* @__PURE__ */ i("button", {
131
+ type: "button",
132
+ onClick: r,
133
+ className: `${v} mt-4`,
134
+ children: "Try again"
135
+ }) : null
136
+ ]
137
+ });
138
+ }
139
+ function j({ title: e, description: t, action: n }) {
140
+ return /* @__PURE__ */ i(l, {
141
+ illustration: "empty-data",
142
+ title: e,
143
+ description: t,
144
+ action: n
145
+ });
146
+ }
147
+ function M({ status: e }) {
148
+ let t = e.toUpperCase();
149
+ return /* @__PURE__ */ i(c, {
150
+ variant: t === "OPEN" || t === "ACTIVE" ? "success" : t === "MATCHED" || t === "ACCEPTED" ? "info" : t === "CANCELED" || t === "REJECTED" ? "secondary" : "warning",
151
+ children: t.replaceAll("_", " ")
152
+ });
153
+ }
154
+ function N({ title: e, description: n }) {
155
+ return /* @__PURE__ */ i("div", {
156
+ role: "status",
157
+ className: "rounded-xl border border-status-warning-border bg-status-warning-bg-subtle p-5",
158
+ children: /* @__PURE__ */ a("div", {
159
+ className: "flex items-start gap-3",
160
+ children: [/* @__PURE__ */ i(t, {
161
+ className: "mt-0.5 size-5 shrink-0 text-status-warning-text",
162
+ "aria-hidden": "true"
163
+ }), /* @__PURE__ */ a("div", { children: [/* @__PURE__ */ i("h2", {
164
+ className: "font-semibold text-text-primary",
165
+ children: e
166
+ }), /* @__PURE__ */ i("p", {
167
+ className: "mt-1 text-sm text-text-secondary",
168
+ children: n
169
+ })] })]
170
+ })
171
+ });
172
+ }
173
+ //#endregion
174
+ export { N as ContextRequiredPanel, f as SOURCING_UNITS, j as SourcingEmptyState, A as SourcingErrorState, k as SourcingLoadingState, O as SourcingPageHeader, M as SourcingStatusBadge, y as dangerButtonClassName, S as formatDate, C as formatDateTime, T as formatLocation, w as formatMoney, x as formatSourcingUnit, g as helpClassName, m as inputClassName, b as joinStorePath, h as labelClassName, _ as primaryButtonClassName, v as secondaryButtonClassName, E as toDateTimeLocal, D as toErrorMessage };
175
+
176
+ //# sourceMappingURL=SourcingUi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SourcingUi.js","names":[],"sources":["../../../src/components/sourcing/SourcingUi.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { AlertCircle, ArrowLeft, Loader2 } from 'lucide-react';\nimport { PageHeader as CanonicalPageHeader } from '@burdenoff/fe-libs/chrome';\nimport {\n formatDate as formatSharedDate,\n formatDateTime as formatSharedDateTime,\n} from '@burdenoff/fe-libs/shared/utils';\nimport { Badge, IllustratedEmptyState, buttonVariants } from '@burdenoff/fe-libs/ui';\nimport { SourcingUnit } from '../../generated/global-types';\n\nexport const SOURCING_UNITS = [\n SourcingUnit.Unit,\n SourcingUnit.Gram,\n SourcingUnit.Kilogram,\n SourcingUnit.Milliliter,\n SourcingUnit.Liter,\n SourcingUnit.MetricTon,\n SourcingUnit.Box,\n SourcingUnit.Bag,\n SourcingUnit.Pallet,\n] as const;\n\nconst UNIT_LABELS: Record<SourcingUnit, string> = {\n [SourcingUnit.Unit]: 'Unit',\n [SourcingUnit.Gram]: 'Gram',\n [SourcingUnit.Kilogram]: 'Kilogram',\n [SourcingUnit.Milliliter]: 'Milliliter',\n [SourcingUnit.Liter]: 'Liter',\n [SourcingUnit.MetricTon]: 'Metric ton',\n [SourcingUnit.Box]: 'Box',\n [SourcingUnit.Bag]: 'Bag',\n [SourcingUnit.Pallet]: 'Pallet',\n};\n\nexport const inputClassName =\n 'mt-1.5 w-full rounded-lg border border-border-default bg-surface-default px-3 py-2.5 text-sm text-text-primary shadow-sm outline-none transition placeholder:text-text-tertiary focus:border-action-primary-bg focus:ring-2 focus:ring-action-primary-bg/20 disabled:cursor-not-allowed disabled:bg-surface-muted disabled:text-text-tertiary';\nexport const labelClassName = 'block text-sm font-medium text-text-primary';\nexport const helpClassName = 'mt-1 text-xs text-text-tertiary';\nexport const primaryButtonClassName = buttonVariants({ size: 'lg' });\nexport const secondaryButtonClassName = buttonVariants({ variant: 'outline', size: 'lg' });\nexport const dangerButtonClassName = buttonVariants({ variant: 'destructive', size: 'lg' });\n\nexport function joinStorePath(basePath: string, path: string): string {\n const base = basePath === '/' ? '' : basePath.replace(/\\/$/, '');\n const suffix = path.startsWith('/') ? path : `/${path}`;\n return `${base}${suffix}` || '/';\n}\n\nexport function formatSourcingUnit(unit: SourcingUnit | string): string {\n return UNIT_LABELS[unit as SourcingUnit] ?? unit.replaceAll('_', ' ').toLowerCase();\n}\n\nexport function formatDate(value: string): string {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? 'Not available' : formatSharedDate(date);\n}\n\nexport function formatDateTime(value: string): string {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? 'Not available' : formatSharedDateTime(date);\n}\n\nexport function formatMoney(value: string | null | undefined, currency: string | null | undefined) {\n if (!value || !currency) return 'Not specified';\n return `${currency.toUpperCase()} ${value}`;\n}\n\nexport function formatLocation({\n country,\n region,\n city,\n}: {\n country: string;\n region?: string | null;\n city?: string | null;\n}): string {\n return [city, region, country].filter(Boolean).join(', ');\n}\n\nexport function toDateTimeLocal(value: string): string {\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return '';\n const local = new Date(date.getTime() - date.getTimezoneOffset() * 60_000);\n return local.toISOString().slice(0, 16);\n}\n\nexport function toErrorMessage(error: unknown, fallback: string): string {\n if (error instanceof Error && error.message.trim()) return error.message;\n return fallback;\n}\n\ninterface SourcingPageHeaderProps {\n title: string;\n description: string;\n icon: ReactNode;\n onBack?: () => void;\n actions?: ReactNode;\n}\n\nexport function SourcingPageHeader({\n title,\n description,\n icon,\n onBack,\n actions,\n}: SourcingPageHeaderProps) {\n const headerIcon = onBack ? (\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={onBack}\n aria-label=\"Go back\"\n className=\"inline-flex size-10 shrink-0 items-center justify-center rounded-lg text-text-secondary transition hover:bg-surface-hover hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-bg\"\n >\n <ArrowLeft className=\"size-5\" aria-hidden=\"true\" />\n </button>\n <span className=\"flex size-10 shrink-0 items-center justify-center rounded-lg bg-surface-accent-muted text-text-accent\">\n {icon}\n </span>\n </div>\n ) : (\n <span className=\"flex size-10 shrink-0 items-center justify-center rounded-lg bg-surface-accent-muted text-text-accent\">\n {icon}\n </span>\n );\n\n return (\n <div className=\"border-b border-border-seam bg-surface-raised\">\n <div className=\"mx-auto max-w-6xl px-4 py-5 sm:px-6\">\n <CanonicalPageHeader\n className=\"mb-0\"\n title={title}\n description={description}\n icon={headerIcon}\n actions={actions}\n />\n </div>\n </div>\n );\n}\n\nexport function SourcingLoadingState({ label }: { label: string }) {\n return (\n <div role=\"status\" aria-live=\"polite\" className=\"flex flex-col items-center py-20 text-center\">\n <Loader2 className=\"mb-3 size-8 animate-spin text-text-accent\" aria-hidden=\"true\" />\n <p className=\"text-sm text-text-secondary\">{label}</p>\n </div>\n );\n}\n\nexport function SourcingErrorState({\n title,\n message,\n onRetry,\n}: {\n title: string;\n message: string;\n onRetry?: () => void;\n}) {\n return (\n <div\n role=\"alert\"\n className=\"rounded-xl border border-border-danger bg-surface-danger-muted p-6 text-center\"\n >\n <AlertCircle className=\"mx-auto size-8 text-text-danger\" aria-hidden=\"true\" />\n <h2 className=\"mt-3 text-lg font-semibold text-text-primary\">{title}</h2>\n <p className=\"mx-auto mt-1 max-w-xl text-sm text-text-secondary\">{message}</p>\n {onRetry ? (\n <button type=\"button\" onClick={onRetry} className={`${secondaryButtonClassName} mt-4`}>\n Try again\n </button>\n ) : null}\n </div>\n );\n}\n\nexport function SourcingEmptyState({\n title,\n description,\n action,\n}: {\n title: string;\n description: string;\n action?: ReactNode;\n}) {\n return (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={title}\n description={description}\n action={action}\n />\n );\n}\n\nexport function SourcingStatusBadge({ status }: { status: string }) {\n const normalized = status.toUpperCase();\n const variant =\n normalized === 'OPEN' || normalized === 'ACTIVE'\n ? 'success'\n : normalized === 'MATCHED' || normalized === 'ACCEPTED'\n ? 'info'\n : normalized === 'CANCELED' || normalized === 'REJECTED'\n ? 'secondary'\n : 'warning';\n\n return <Badge variant={variant}>{normalized.replaceAll('_', ' ')}</Badge>;\n}\n\nexport function ContextRequiredPanel({\n title,\n description,\n}: {\n title: string;\n description: string;\n}) {\n return (\n <div\n role=\"status\"\n className=\"rounded-xl border border-status-warning-border bg-status-warning-bg-subtle p-5\"\n >\n <div className=\"flex items-start gap-3\">\n <AlertCircle\n className=\"mt-0.5 size-5 shrink-0 text-status-warning-text\"\n aria-hidden=\"true\"\n />\n <div>\n <h2 className=\"font-semibold text-text-primary\">{title}</h2>\n <p className=\"mt-1 text-sm text-text-secondary\">{description}</p>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}