@endora-commerce/admin-shell 0.103.1 → 0.105.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.
Files changed (45) hide show
  1. package/dist/components/AppShell.d.ts.map +1 -1
  2. package/dist/components/AppShell.js +59 -11
  3. package/dist/components/AppShell.js.map +1 -1
  4. package/dist/components/IdleLogout.d.ts.map +1 -1
  5. package/dist/components/IdleLogout.js +19 -40
  6. package/dist/components/IdleLogout.js.map +1 -1
  7. package/dist/components/RoleRequiredNotice.d.ts +16 -0
  8. package/dist/components/RoleRequiredNotice.d.ts.map +1 -0
  9. package/dist/components/RoleRequiredNotice.js +22 -0
  10. package/dist/components/RoleRequiredNotice.js.map +1 -0
  11. package/dist/components/VersionBadge.d.ts +28 -0
  12. package/dist/components/VersionBadge.d.ts.map +1 -0
  13. package/dist/components/VersionBadge.js +35 -0
  14. package/dist/components/VersionBadge.js.map +1 -0
  15. package/dist/components/notifications/NotificationBell.d.ts +4 -0
  16. package/dist/components/notifications/NotificationBell.d.ts.map +1 -1
  17. package/dist/components/notifications/NotificationBell.js +11 -1
  18. package/dist/components/notifications/NotificationBell.js.map +1 -1
  19. package/dist/components/notifications/index.d.ts +1 -0
  20. package/dist/components/notifications/index.d.ts.map +1 -1
  21. package/dist/components/notifications/index.js +1 -0
  22. package/dist/components/notifications/index.js.map +1 -1
  23. package/dist/components/notifications/notification-text.d.ts +42 -0
  24. package/dist/components/notifications/notification-text.d.ts.map +1 -0
  25. package/dist/components/notifications/notification-text.js +65 -0
  26. package/dist/components/notifications/notification-text.js.map +1 -0
  27. package/dist/components/notifications/useAdminNotifications.d.ts +7 -0
  28. package/dist/components/notifications/useAdminNotifications.d.ts.map +1 -1
  29. package/dist/components/notifications/useAdminNotifications.js.map +1 -1
  30. package/dist/lib/platform-info/api.d.ts +10 -0
  31. package/dist/lib/platform-info/api.d.ts.map +1 -0
  32. package/dist/lib/platform-info/api.js +12 -0
  33. package/dist/lib/platform-info/api.js.map +1 -0
  34. package/dist/lib/platform-info/usePlatformVersion.d.ts +24 -0
  35. package/dist/lib/platform-info/usePlatformVersion.d.ts.map +1 -0
  36. package/dist/lib/platform-info/usePlatformVersion.js +49 -0
  37. package/dist/lib/platform-info/usePlatformVersion.js.map +1 -0
  38. package/dist/modules/home/HomePage.d.ts.map +1 -1
  39. package/dist/modules/home/HomePage.js +142 -97
  40. package/dist/modules/home/HomePage.js.map +1 -1
  41. package/dist/modules/profile/ProfilePage.d.ts +8 -0
  42. package/dist/modules/profile/ProfilePage.d.ts.map +1 -1
  43. package/dist/modules/profile/ProfilePage.js +38 -5
  44. package/dist/modules/profile/ProfilePage.js.map +1 -1
  45. package/package.json +5 -5
@@ -1,5 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from 'react';
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from 'react';
3
3
  import { Link, useNavigate } from 'react-router-dom';
4
4
  import { CircleDollarSign, FileText, Plus, Upload } from 'lucide-react';
5
5
  import { ApiError, apiClient } from '../../lib/api-client.js';
@@ -7,13 +7,55 @@ import { useAuth } from '../../lib/auth.js';
7
7
  import { useSurfaceVisibility } from '../../lib/surface-visibility.js';
8
8
  import { useTranslation } from '../../i18n/useTranslation.js';
9
9
  import { RecentActivityCard } from './RecentActivityCard.js';
10
- const INITIAL_KPIS = [
11
- { labelKey: 'home.kpi.activeProducts', value: '—', to: '/catalog/products?status=active', requiredPermission: 'catalog:read', module: 'catalog' },
12
- { labelKey: 'home.kpi.pendingQuotes', value: '—', tone: 'warn', to: '/quote-requests?status=Pending&scope=all', requiredPermission: 'rfqs:handle', module: 'quote_requests' },
13
- { labelKey: 'home.kpi.openOrders', value: '—', to: '/orders?status=new', requiredPermission: 'orders:read', module: 'orders' },
14
- // `orders:read` is not a copy of the tile above it: the inventory endpoints
15
- // really are gated by it (`inventory/routes.admin.ts:103`).
16
- { labelKey: 'home.kpi.outOfStock', value: '—', tone: 'danger', to: '/inventory?stock=out', requiredPermission: 'orders:read', module: 'inventory' },
10
+ const KPIS = [
11
+ {
12
+ labelKey: 'home.kpi.activeProducts',
13
+ to: '/catalog/products?status=active',
14
+ requiredPermission: 'catalog:read',
15
+ module: 'catalog',
16
+ // The list endpoint paginates server-side; ask for one row so the network
17
+ // payload is tiny and read the live `counts.active` field (which the
18
+ // endpoint computes across the full product set).
19
+ path: () => '/api/v1/admin/catalog/products?pageSize=1',
20
+ read: (data) => {
21
+ const active = data.counts?.active;
22
+ return active === undefined ? null : String(active);
23
+ },
24
+ },
25
+ {
26
+ labelKey: 'home.kpi.pendingQuotes',
27
+ tone: 'warn',
28
+ to: '/quote-requests?status=Pending&scope=all',
29
+ requiredPermission: 'rfqs:handle',
30
+ module: 'quote_requests',
31
+ // Count only Pending requests (matching this KPI's drill-down link).
32
+ // `submitted` is not a valid RFQ status, so the backend rejected the
33
+ // filter and returned every request — Canceled/Approved/etc. included.
34
+ path: ({ platformAdmin }) => `/api/v1/admin/quote-requests?status=Pending${platformAdmin ? '&assignmentScope=all' : ''}`,
35
+ read: (data) => String((data.data ?? []).length),
36
+ },
37
+ {
38
+ labelKey: 'home.kpi.openOrders',
39
+ to: '/orders?status=new',
40
+ requiredPermission: 'orders:read',
41
+ module: 'orders',
42
+ path: () => '/api/v1/admin/orders?status=new',
43
+ read: (data) => String((data.data ?? []).length),
44
+ },
45
+ {
46
+ labelKey: 'home.kpi.outOfStock',
47
+ tone: 'danger',
48
+ to: '/inventory?stock=out',
49
+ // `orders:read` is not a copy of the tile above it: the inventory endpoints
50
+ // really are gated by it (`inventory/routes.admin.ts:103`).
51
+ requiredPermission: 'orders:read',
52
+ module: 'inventory',
53
+ path: () => '/api/v1/admin/inventory',
54
+ read: (data) => {
55
+ const count = data.data?.outOfStockCount;
56
+ return count === undefined ? null : String(count);
57
+ },
58
+ },
17
59
  ];
18
60
  const QUICK_ACTIONS = [
19
61
  { labelKey: 'home.quickActions.newProduct', icon: Plus, to: '/catalog/products/new', requiredPermission: 'catalog:write', module: 'catalog' },
@@ -30,108 +72,111 @@ const STOCK_ALERTS_SURFACE = {
30
72
  module: 'inventory',
31
73
  requiredPermission: 'orders:read',
32
74
  };
75
+ const STOCK_ALERTS_PATH = '/api/v1/admin/inventory/low-stock';
76
+ const STOCK_ALERTS_SHOWN = 5;
77
+ function readStockAlerts(data) {
78
+ const items = data.items ?? [];
79
+ return items.slice(0, STOCK_ALERTS_SHOWN).map((item) => ({
80
+ productId: item.productId,
81
+ sku: item.productSku,
82
+ name: item.productName,
83
+ qty: item.cumulativeOnHand,
84
+ threshold: item.lowStockThreshold,
85
+ }));
86
+ }
33
87
  export function HomePage() {
34
88
  const t = useTranslation('core');
35
89
  const { me } = useAuth();
36
90
  const isVisible = useSurfaceVisibility();
37
91
  const navigate = useNavigate();
38
92
  const firstName = me?.adminUser.firstName?.trim() || t('home.defaultName');
39
- const [kpis, setKpis] = useState(INITIAL_KPIS);
40
- const [stockAlerts, setStockAlerts] = useState([]);
93
+ const kpiContext = { platformAdmin: me?.role?.code === 'platform_admin' };
94
+ return (_jsxs("div", { className: "b2b-page b2b-page--wide", children: [_jsx("div", { className: "b2b-page-head", children: _jsxs("div", { className: "b2b-grow", children: [_jsxs("div", { className: "b2b-page-head__title", children: [t('home.welcomeBack'), ", ", _jsx("span", { style: { color: 'var(--fg-muted)', fontWeight: 500 }, children: firstName })] }), _jsx("div", { className: "b2b-page-head__sub", children: t('home.subtitle') })] }) }), _jsx("div", { className: "b2b-row b2b-kpi-grid", style: { gap: 16, marginBottom: 20 }, children: KPIS.filter(isVisible).map((kpi) => (_jsx(KpiTile, { kpi: kpi, path: kpi.path(kpiContext) }, kpi.labelKey))) }), _jsxs("div", { className: "b2b-home-dashboard-grid", style: { display: 'grid', gridTemplateColumns: 'minmax(0, 2fr) minmax(0, 1fr)', gap: 16 }, children: [_jsx(RecentActivityCard, {}), _jsxs("div", { className: "b2b-col", style: { gap: 16 }, children: [QUICK_ACTIONS.some(isVisible) && (_jsxs("div", { className: "b2b-card", children: [_jsx("div", { className: "b2b-card__head", children: _jsx("div", { className: "b2b-card__title", children: t('home.quickActions.title') }) }), _jsx("div", { className: "b2b-card__body", children: _jsx("div", { className: "b2b-col", style: { gap: 8 }, children: QUICK_ACTIONS.filter(isVisible).map((action) => {
95
+ const Icon = action.icon;
96
+ return (_jsxs("button", { type: "button", className: "b2b-btn b2b-btn--default", style: { justifyContent: 'flex-start' }, onClick: () => { navigate(action.to); }, children: [_jsx(Icon, { size: 14 }), " ", t(action.labelKey)] }, action.to));
97
+ }) }) })] })), isVisible(STOCK_ALERTS_SURFACE) && _jsx(StockAlertsCard, {})] })] })] }));
98
+ }
99
+ function useRemote(path, read) {
100
+ const [state, setState] = useState({ status: 'loading' });
101
+ const [attempt, setAttempt] = useState(0);
41
102
  useEffect(() => {
42
103
  let cancelled = false;
43
- void (async () => {
44
- const next = INITIAL_KPIS.map((k) => ({ ...k }));
45
- // Best-effort KPI fetches. Each one is independent — if any
46
- // endpoint isn't wired or returns 4xx/5xx, we leave a "—".
47
- //
48
- // Feature 073: a tile whose module is absent is not rendered, so its
49
- // fetch is skipped too. Firing it anyway would spend a request per page
50
- // load to collect a 503 for a number nobody will see.
51
- //
52
- // Issue #230 widens that from module presence to the whole visibility
53
- // predicate: the same argument holds verbatim for a 403, and the fetch
54
- // and the tile now answer to one rule rather than two.
55
- const forSurface = (surface, fetcher) => (isVisible(surface) ? fetcher() : Promise.resolve());
56
- await Promise.all([
57
- // The list endpoint paginates server-side; ask for one row so the
58
- // network payload is tiny and read the live `counts.active` field
59
- // (which the endpoint computes across the full product set).
60
- forSurface(INITIAL_KPIS[0], () => fetchKpi('/api/v1/admin/catalog/products?pageSize=1', (data) => {
61
- const counts = data.counts;
62
- if (counts?.active !== undefined) {
63
- next[0].value = String(counts.active);
64
- }
65
- })),
66
- // Count only Pending requests (matching this KPI's drill-down link).
67
- // `submitted` is not a valid RFQ status, so the backend rejected the
68
- // filter and returned every request — Canceled/Approved/etc. included.
69
- // A platform admin owns no per-user assignments, so scope the count to
70
- // "all" for them (parity with the list's default Visibility filter);
71
- // otherwise the tile would read 0 even with pending requests waiting.
72
- forSurface(INITIAL_KPIS[1], () => fetchKpi(`/api/v1/admin/quote-requests?status=Pending${me?.role?.code === 'platform_admin' ? '&assignmentScope=all' : ''}`, (data) => {
73
- const arr = data.data ?? [];
74
- next[1].value = String(arr.length);
75
- })),
76
- forSurface(INITIAL_KPIS[2], () => fetchKpi('/api/v1/admin/orders?status=new', (data) => {
77
- const arr = data.data ?? [];
78
- next[2].value = String(arr.length);
79
- })),
80
- forSurface(INITIAL_KPIS[3], () => fetchKpi('/api/v1/admin/inventory', (data) => {
81
- const k = data.data;
82
- if (k?.outOfStockCount !== undefined) {
83
- next[3].value = String(k.outOfStockCount);
84
- }
85
- })),
86
- forSurface(STOCK_ALERTS_SURFACE, () => fetchKpi('/api/v1/admin/inventory/low-stock', (data) => {
87
- const items = data.items ?? [];
88
- if (!cancelled) {
89
- setStockAlerts(items.slice(0, 5).map((i) => ({
90
- productId: i.productId,
91
- sku: i.productSku,
92
- name: i.productName,
93
- qty: i.cumulativeOnHand,
94
- threshold: i.lowStockThreshold,
95
- })));
96
- }
97
- })),
98
- ]);
104
+ apiClient.get(path).then((data) => {
99
105
  if (!cancelled)
100
- setKpis(next);
101
- })();
106
+ setState({ status: 'ready', data: read(data) });
107
+ }, (err) => {
108
+ if (cancelled)
109
+ return;
110
+ if (!(err instanceof ApiError)) {
111
+ // eslint-disable-next-line no-console
112
+ console.warn(`Dashboard fetch ${path} failed`, err);
113
+ }
114
+ setState({ status: 'error' });
115
+ });
102
116
  return () => {
103
117
  cancelled = true;
104
118
  };
105
- // One fetch pass per mount, as before. `isVisible` is deliberately not a
106
- // dependency: re-running on its identity would refire every KPI request the
107
- // moment module presence or the permission set re-resolves, and the tiles
108
- // are a page-load snapshot, not a live feed.
109
- // eslint-disable-next-line react-hooks/exhaustive-deps
119
+ }, [path, read, attempt]);
120
+ const retry = useCallback(() => {
121
+ setState({ status: 'loading' });
122
+ setAttempt((n) => n + 1);
110
123
  }, []);
111
- return (_jsxs("div", { className: "b2b-page b2b-page--wide", children: [_jsx("div", { className: "b2b-page-head", children: _jsxs("div", { className: "b2b-grow", children: [_jsxs("div", { className: "b2b-page-head__title", children: [t('home.welcomeBack'), ", ", _jsx("span", { style: { color: 'var(--fg-muted)', fontWeight: 500 }, children: firstName })] }), _jsx("div", { className: "b2b-page-head__sub", children: t('home.subtitle') })] }) }), _jsx("div", { className: "b2b-row b2b-kpi-grid", style: { gap: 16, marginBottom: 20 }, children: kpis.filter(isVisible).map((k) => (_jsx(Stat, { label: t(k.labelKey), value: k.value, to: k.to, ...(k.tone !== undefined ? { tone: k.tone } : {}) }, k.labelKey))) }), _jsxs("div", { className: "b2b-home-dashboard-grid", style: { display: 'grid', gridTemplateColumns: 'minmax(0, 2fr) minmax(0, 1fr)', gap: 16 }, children: [_jsx(RecentActivityCard, {}), _jsxs("div", { className: "b2b-col", style: { gap: 16 }, children: [QUICK_ACTIONS.some(isVisible) && (_jsxs("div", { className: "b2b-card", children: [_jsx("div", { className: "b2b-card__head", children: _jsx("div", { className: "b2b-card__title", children: t('home.quickActions.title') }) }), _jsx("div", { className: "b2b-card__body", children: _jsx("div", { className: "b2b-col", style: { gap: 8 }, children: QUICK_ACTIONS.filter(isVisible).map((action) => {
112
- const Icon = action.icon;
113
- return (_jsxs("button", { type: "button", className: "b2b-btn b2b-btn--default", style: { justifyContent: 'flex-start' }, onClick: () => { navigate(action.to); }, children: [_jsx(Icon, { size: 14 }), " ", t(action.labelKey)] }, action.to));
114
- }) }) })] })), isVisible(STOCK_ALERTS_SURFACE) && (_jsxs("div", { className: "b2b-card", children: [_jsxs("div", { className: "b2b-card__head", children: [_jsxs("div", { children: [_jsx("div", { className: "b2b-card__title", children: t('home.stockAlerts.title') }), _jsx("div", { className: "b2b-card__sub", children: t('home.stockAlerts.subtitle') })] }), _jsx(Link, { to: "/inventory/low-stock", className: "b2b-btn b2b-btn--ghost b2b-btn--sm", children: t('home.stockAlerts.seeAll') })] }), _jsx("div", { className: "b2b-card__body b2b-card__body--flush", children: stockAlerts.length === 0 ? (_jsx("div", { className: "b2b-help", style: { padding: 16 }, children: t('home.stockAlerts.empty') })) : (_jsx("div", { className: "b2b-minilist", style: { padding: 4 }, children: stockAlerts.map((alert) => (_jsxs(Link, { to: `/catalog/products/${alert.productId}`, className: "b2b-minirow", style: { textDecoration: 'none', color: 'inherit' }, children: [_jsx("div", { className: "b2b-thumb", style: {
115
- width: 28,
116
- height: 28,
117
- background: 'linear-gradient(135deg, #94a3b8cc, #94a3b888)',
118
- } }), _jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [_jsx("div", { style: { fontSize: 12, fontWeight: 500 }, children: alert.name }), _jsx("div", { className: "b2b-mono b2b-muted", style: { fontSize: 10 }, children: alert.sku })] }), _jsx("span", { className: alert.qty === 0 ? 'b2b-badge b2b-badge--danger' : 'b2b-badge b2b-badge--warn', children: alert.qty === 0 ? t('home.stockAlerts.out') : t('home.stockAlerts.left', { qty: alert.qty }) })] }, alert.productId))) })) })] }))] })] })] }));
124
+ return { state, retry };
119
125
  }
120
- function Stat({ label, value, tone, to, }) {
121
- const color = tone === 'danger' ? 'var(--danger)' : tone === 'warn' ? 'var(--warn)' : 'var(--fg)';
122
- return (_jsxs(Link, { to: to, className: "b2b-card b2b-card--clickable", style: { flex: 1, padding: 16, textDecoration: 'none', color: 'inherit' }, children: [_jsx("div", { className: "b2b-muted", style: { fontSize: 11, textTransform: 'uppercase', letterSpacing: '0.06em' }, children: label }), _jsx("div", { style: { fontSize: 26, fontWeight: 600, marginTop: 4, color }, children: value })] }));
123
- }
124
- async function fetchKpi(path, set) {
125
- try {
126
- const data = await apiClient.get(path);
127
- set(data);
128
- }
129
- catch (err) {
130
- if (!(err instanceof ApiError)) {
131
- // eslint-disable-next-line no-console
132
- console.warn(`KPI fetch ${path} failed`, err);
133
- }
134
- /* swallow — leave the placeholder */
126
+ const KPI_LABEL_STYLE = {
127
+ fontSize: 11,
128
+ textTransform: 'uppercase',
129
+ letterSpacing: '0.06em',
130
+ };
131
+ const SKELETON_STYLE = {
132
+ background: 'var(--surface-sunken)',
133
+ borderRadius: 4,
134
+ };
135
+ function KpiTile({ kpi, path }) {
136
+ const t = useTranslation('core');
137
+ const { state, retry } = useRemote(path, kpi.read);
138
+ const label = t(kpi.labelKey);
139
+ // A failed request is not a number. The tile used to keep its "—" here,
140
+ // which reads as "no data" and is the same glyph a pending tile showed, so
141
+ // an operator could not tell a dead endpoint from a slow one from an empty
142
+ // shop. The card stops being one big link in this state because a retry
143
+ // button cannot be nested inside one; the label keeps the drill-down.
144
+ if (state.status === 'error') {
145
+ return (_jsxs("div", { className: "b2b-card", style: { flex: 1, padding: 16 }, "data-testid": `kpi-${kpi.labelKey}-error`, children: [_jsx(Link, { to: kpi.to, className: "b2b-muted", style: { ...KPI_LABEL_STYLE, display: 'block', textDecoration: 'none' }, children: label }), _jsxs("div", { style: {
146
+ display: 'flex',
147
+ justifyContent: 'space-between',
148
+ alignItems: 'center',
149
+ gap: 8,
150
+ marginTop: 4,
151
+ }, children: [_jsx("span", { className: "b2b-help", style: { marginTop: 0 }, role: "alert", children: t('home.kpi.error') }), _jsx("button", { type: "button", className: "b2b-btn b2b-btn--default b2b-btn--sm", "aria-label": t('home.kpi.retryLabel', { label }), onClick: retry, children: t('home.kpi.retry') })] })] }));
135
152
  }
153
+ const color = kpi.tone === 'danger' ? 'var(--danger)' : kpi.tone === 'warn' ? 'var(--warn)' : 'var(--fg)';
154
+ const loading = state.status === 'loading';
155
+ return (_jsxs(Link, { to: kpi.to, className: "b2b-card b2b-card--clickable", style: { flex: 1, padding: 16, textDecoration: 'none', color: 'inherit' }, "data-testid": `kpi-${kpi.labelKey}`, ...(loading ? { 'aria-busy': true } : {}), children: [_jsx("div", { className: "b2b-muted", style: KPI_LABEL_STYLE, children: label }), _jsx("div", { style: { fontSize: 26, fontWeight: 600, marginTop: 4, color }, children: loading ? (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": "true", style: { ...SKELETON_STYLE, display: 'inline-block', width: '2.5ch', height: '0.7em' } }), _jsx("span", { className: "sr-only", children: t('home.kpi.loading') })] })) : ((state.data ?? '—')) })] }));
156
+ }
157
+ const STOCK_ALERT_PLACEHOLDER_COUNT = 3;
158
+ /**
159
+ * Stock alerts — wholly owned by `inventory`; the card is the module's
160
+ * contribution to the dashboard, so it goes with it.
161
+ *
162
+ * It distinguishes four states because three of them used to be one: an empty
163
+ * list was the initial state, so "still loading" and "the request failed" both
164
+ * read "No products are currently low on stock" — a statement about the
165
+ * warehouse that nothing had established.
166
+ */
167
+ function StockAlertsCard() {
168
+ const t = useTranslation('core');
169
+ const { state, retry } = useRemote(STOCK_ALERTS_PATH, readStockAlerts);
170
+ return (_jsxs("div", { className: "b2b-card", children: [_jsxs("div", { className: "b2b-card__head", children: [_jsxs("div", { children: [_jsx("div", { className: "b2b-card__title", children: t('home.stockAlerts.title') }), _jsx("div", { className: "b2b-card__sub", children: t('home.stockAlerts.subtitle') })] }), _jsx(Link, { to: "/inventory/low-stock", className: "b2b-btn b2b-btn--ghost b2b-btn--sm", children: t('home.stockAlerts.seeAll') })] }), _jsxs("div", { className: "b2b-card__body b2b-card__body--flush", children: [state.status === 'loading' && (_jsxs("div", { className: "b2b-minilist", style: { padding: 4 }, "data-testid": "stock-alerts-loading", "aria-busy": "true", children: [_jsx("span", { className: "sr-only", children: t('home.stockAlerts.loading') }), Array.from({ length: STOCK_ALERT_PLACEHOLDER_COUNT }).map((_, idx) => (_jsxs("div", { className: "b2b-minirow", style: { opacity: 0.6 }, "aria-hidden": "true", children: [_jsx("div", { style: { ...SKELETON_STYLE, width: 28, height: 28, flexShrink: 0 } }), _jsxs("div", { style: { flex: 1 }, children: [_jsx("div", { style: { ...SKELETON_STYLE, height: 10, width: '70%' } }), _jsx("div", { style: { ...SKELETON_STYLE, height: 8, width: '40%', marginTop: 6 } })] }), _jsx("span", { style: { ...SKELETON_STYLE, width: 36, height: 10, flexShrink: 0 } })] }, idx)))] })), state.status === 'error' && (_jsxs("div", { className: "b2b-help", style: {
171
+ padding: 16,
172
+ display: 'flex',
173
+ justifyContent: 'space-between',
174
+ alignItems: 'center',
175
+ gap: 12,
176
+ }, role: "alert", children: [_jsx("span", { children: t('home.stockAlerts.error') }), _jsx("button", { type: "button", className: "b2b-btn b2b-btn--default b2b-btn--sm", onClick: retry, children: t('home.stockAlerts.retry') })] })), state.status === 'ready' && state.data.length === 0 && (_jsx("div", { className: "b2b-help", style: { padding: 16 }, children: t('home.stockAlerts.empty') })), state.status === 'ready' && state.data.length > 0 && (_jsx("div", { className: "b2b-minilist", style: { padding: 4 }, children: state.data.map((alert) => (_jsxs(Link, { to: `/catalog/products/${alert.productId}`, className: "b2b-minirow", style: { textDecoration: 'none', color: 'inherit' }, children: [_jsx("div", { className: "b2b-thumb", style: {
177
+ width: 28,
178
+ height: 28,
179
+ background: 'linear-gradient(135deg, #94a3b8cc, #94a3b888)',
180
+ } }), _jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [_jsx("div", { style: { fontSize: 12, fontWeight: 500 }, children: alert.name }), _jsx("div", { className: "b2b-mono b2b-muted", style: { fontSize: 10 }, children: alert.sku })] }), _jsx("span", { className: alert.qty === 0 ? 'b2b-badge b2b-badge--danger' : 'b2b-badge b2b-badge--warn', children: alert.qty === 0 ? t('home.stockAlerts.out') : t('home.stockAlerts.left', { qty: alert.qty }) })] }, alert.productId))) }))] })] }));
136
181
  }
137
182
  //# sourceMappingURL=HomePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage.js","sourceRoot":"","sources":["../../../src/modules/home/HomePage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HomePage.js","sourceRoot":"","sources":["../../../src/modules/home/HomePage.tsx"],"names":[],"mappings":"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"}
@@ -6,6 +6,14 @@ import { type ReactNode } from 'react';
6
6
  * `PATCH /api/v1/admin/me`, which any authenticated admin can call
7
7
  * without holding `admin_users:manage`. Linked from the avatar in the
8
8
  * top-right corner of the AppShell.
9
+ *
10
+ * A new password travels with the current one: the route refuses a `password`
11
+ * without `currentPassword`, so the screen asks for it before it sends
12
+ * anything, and shows a wrong one on that field rather than in the page
13
+ * banner.
14
+ *
15
+ * A password change revokes the account's other sessions and keeps the one it
16
+ * was made from, so the screen stays where it is and says so.
9
17
  */
10
18
  export declare function ProfilePage(): ReactNode;
11
19
  //# sourceMappingURL=ProfilePage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProfilePage.d.ts","sourceRoot":"","sources":["../../../src/modules/profile/ProfilePage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ5E;;;;;;;GAOG;AACH,wBAAgB,WAAW,IAAI,SAAS,CAwKvC"}
1
+ {"version":3,"file":"ProfilePage.d.ts","sourceRoot":"","sources":["../../../src/modules/profile/ProfilePage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ5E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,IAAI,SAAS,CA2NvC"}
@@ -12,6 +12,14 @@ import { useTranslation } from '../../i18n/useTranslation.js';
12
12
  * `PATCH /api/v1/admin/me`, which any authenticated admin can call
13
13
  * without holding `admin_users:manage`. Linked from the avatar in the
14
14
  * top-right corner of the AppShell.
15
+ *
16
+ * A new password travels with the current one: the route refuses a `password`
17
+ * without `currentPassword`, so the screen asks for it before it sends
18
+ * anything, and shows a wrong one on that field rather than in the page
19
+ * banner.
20
+ *
21
+ * A password change revokes the account's other sessions and keeps the one it
22
+ * was made from, so the screen stays where it is and says so.
15
23
  */
16
24
  export function ProfilePage() {
17
25
  const t = useTranslation('core');
@@ -19,6 +27,8 @@ export function ProfilePage() {
19
27
  const [firstName, setFirstName] = useState('');
20
28
  const [lastName, setLastName] = useState('');
21
29
  const [password, setPassword] = useState('');
30
+ const [currentPassword, setCurrentPassword] = useState('');
31
+ const [currentPasswordError, setCurrentPasswordError] = useState(null);
22
32
  const [submitting, setSubmitting] = useState(false);
23
33
  const [error, setError] = useState(null);
24
34
  const [info, setInfo] = useState(null);
@@ -33,17 +43,25 @@ export function ProfilePage() {
33
43
  }
34
44
  const handleSubmit = async (e) => {
35
45
  e.preventDefault();
36
- setSubmitting(true);
37
46
  setError(null);
38
47
  setInfo(null);
48
+ setCurrentPasswordError(null);
49
+ const changingPassword = password.trim().length > 0;
50
+ if (changingPassword && currentPassword.length === 0) {
51
+ setCurrentPasswordError(t('profile.error.currentPasswordRequired'));
52
+ return;
53
+ }
54
+ setSubmitting(true);
39
55
  try {
40
56
  const body = {};
41
57
  if (firstName !== me.adminUser.firstName)
42
58
  body['firstName'] = firstName;
43
59
  if (lastName !== me.adminUser.lastName)
44
60
  body['lastName'] = lastName;
45
- if (password.trim().length > 0)
61
+ if (changingPassword) {
46
62
  body['password'] = password;
63
+ body['currentPassword'] = currentPassword;
64
+ }
47
65
  if (Object.keys(body).length === 0) {
48
66
  setInfo(t('profile.info.nothingToSave'));
49
67
  setSubmitting(false);
@@ -51,11 +69,23 @@ export function ProfilePage() {
51
69
  }
52
70
  await apiClient.patch('/api/v1/admin/me', body);
53
71
  setPassword('');
54
- setInfo(t('profile.info.updated'));
72
+ setCurrentPassword('');
73
+ // A password change signs every other session of the account out and
74
+ // leaves this one alone, so there is nothing to recover from here — only
75
+ // something to tell the administrator.
76
+ setInfo(t(changingPassword ? 'profile.info.passwordChanged' : 'profile.info.updated'));
55
77
  await refresh();
56
78
  }
57
79
  catch (err) {
58
- setError(err instanceof ApiError ? err.envelope.error.message : t('profile.error.save'));
80
+ if (err instanceof ApiError && err.envelope.error.code === 'CURRENT_PASSWORD_INVALID') {
81
+ // The refusal is about one field, so it is shown there. The new
82
+ // password is kept: only the wrong field needs retyping.
83
+ setCurrentPasswordError(err.envelope.error.message);
84
+ setCurrentPassword('');
85
+ }
86
+ else {
87
+ setError(err instanceof ApiError ? err.envelope.error.message : t('profile.error.save'));
88
+ }
59
89
  }
60
90
  finally {
61
91
  setSubmitting(false);
@@ -73,7 +103,10 @@ export function ProfilePage() {
73
103
  padding: 12,
74
104
  marginBottom: 16,
75
105
  border: '1px solid hsl(142 50% 80%)',
76
- }, children: info })) : null, _jsxs("form", { onSubmit: (e) => { void handleSubmit(e); }, children: [_jsxs("div", { className: "b2b-card", style: { marginBottom: 16 }, children: [_jsx("div", { className: "b2b-card__head", children: _jsx("h2", { children: t('profile.identityTitle') }) }), _jsx("div", { className: "b2b-card__body", children: _jsxs("div", { className: "b2b-grid b2b-grid--cols-2", children: [_jsxs("div", { children: [_jsx("label", { className: "b2b-label", htmlFor: "me-email", children: t('profile.field.email') }), _jsx("input", { id: "me-email", className: "b2b-field", value: me.adminUser.email, disabled: true }), _jsx("div", { className: "b2b-help", children: t('profile.emailHelp') })] }), _jsxs("div", { children: [_jsx("label", { className: "b2b-label", htmlFor: "me-role", children: t('profile.field.role') }), _jsx("input", { id: "me-role", className: "b2b-field", value: me.role?.name ?? '—', disabled: true })] }), _jsxs("div", { children: [_jsx("label", { className: "b2b-label", htmlFor: "me-first", children: t('profile.field.firstName') }), _jsx("input", { id: "me-first", className: "b2b-field", value: firstName, onChange: (e) => setFirstName(e.target.value), required: true, maxLength: 120 })] }), _jsxs("div", { children: [_jsx("label", { className: "b2b-label", htmlFor: "me-last", children: t('profile.field.lastName') }), _jsx("input", { id: "me-last", className: "b2b-field", value: lastName, onChange: (e) => setLastName(e.target.value), required: true, maxLength: 120 })] })] }) })] }), _jsxs("div", { className: "b2b-card", style: { marginBottom: 16 }, children: [_jsx("div", { className: "b2b-card__head", children: _jsx("h2", { children: t('profile.changePassword') }) }), _jsx("div", { className: "b2b-card__body", children: _jsxs("div", { children: [_jsx("label", { className: "b2b-label", htmlFor: "me-pwd", children: t('profile.field.newPassword') }), _jsx("input", { id: "me-pwd", className: "b2b-field", type: "password", value: password, onChange: (e) => setPassword(e.target.value), minLength: 12, maxLength: 120, autoComplete: "new-password", placeholder: t('profile.field.newPasswordPlaceholder') }), _jsx("div", { className: "b2b-help", children: t('profile.field.newPasswordHelp') })] }) })] }), _jsx("div", { className: "b2b-row", style: { gap: 8, justifyContent: 'flex-end' }, children: _jsx("button", { type: "submit", className: "b2b-btn b2b-btn--primary", disabled: submitting, children: submitting ? t('profile.saving') : t('profile.saveChanges') }) })] }), _jsx(LanguageSection, {})] }));
106
+ }, children: info })) : null, _jsxs("form", { onSubmit: (e) => { void handleSubmit(e); }, children: [_jsxs("div", { className: "b2b-card", style: { marginBottom: 16 }, children: [_jsx("div", { className: "b2b-card__head", children: _jsx("h2", { children: t('profile.identityTitle') }) }), _jsx("div", { className: "b2b-card__body", children: _jsxs("div", { className: "b2b-grid b2b-grid--cols-2", children: [_jsxs("div", { children: [_jsx("label", { className: "b2b-label", htmlFor: "me-email", children: t('profile.field.email') }), _jsx("input", { id: "me-email", className: "b2b-field", value: me.adminUser.email, disabled: true }), _jsx("div", { className: "b2b-help", children: t('profile.emailHelp') })] }), _jsxs("div", { children: [_jsx("label", { className: "b2b-label", htmlFor: "me-role", children: t('profile.field.role') }), _jsx("input", { id: "me-role", className: "b2b-field", value: me.role?.name ?? '—', disabled: true })] }), _jsxs("div", { children: [_jsx("label", { className: "b2b-label", htmlFor: "me-first", children: t('profile.field.firstName') }), _jsx("input", { id: "me-first", className: "b2b-field", value: firstName, onChange: (e) => setFirstName(e.target.value), required: true, maxLength: 120 })] }), _jsxs("div", { children: [_jsx("label", { className: "b2b-label", htmlFor: "me-last", children: t('profile.field.lastName') }), _jsx("input", { id: "me-last", className: "b2b-field", value: lastName, onChange: (e) => setLastName(e.target.value), required: true, maxLength: 120 })] })] }) })] }), _jsxs("div", { className: "b2b-card", style: { marginBottom: 16 }, children: [_jsx("div", { className: "b2b-card__head", children: _jsx("h2", { children: t('profile.changePassword') }) }), _jsxs("div", { className: "b2b-card__body", children: [_jsxs("div", { style: { marginBottom: 16 }, children: [_jsx("label", { className: "b2b-label", htmlFor: "me-current-pwd", children: t('profile.field.currentPassword') }), _jsx("input", { id: "me-current-pwd", className: "b2b-field", type: "password", value: currentPassword, onChange: (e) => {
107
+ setCurrentPassword(e.target.value);
108
+ setCurrentPasswordError(null);
109
+ }, maxLength: 256, autoComplete: "current-password", "aria-invalid": currentPasswordError ? true : undefined, "aria-describedby": currentPasswordError ? 'me-current-pwd-error' : 'me-current-pwd-help' }), currentPasswordError ? (_jsx("div", { id: "me-current-pwd-error", className: "b2b-help", role: "alert", style: { color: 'var(--danger-soft-fg)' }, children: currentPasswordError })) : (_jsx("div", { id: "me-current-pwd-help", className: "b2b-help", children: t('profile.field.currentPasswordHelp') }))] }), _jsxs("div", { children: [_jsx("label", { className: "b2b-label", htmlFor: "me-pwd", children: t('profile.field.newPassword') }), _jsx("input", { id: "me-pwd", className: "b2b-field", type: "password", value: password, onChange: (e) => setPassword(e.target.value), minLength: 12, maxLength: 120, autoComplete: "new-password", placeholder: t('profile.field.newPasswordPlaceholder') }), _jsx("div", { className: "b2b-help", children: t('profile.field.newPasswordHelp') })] })] })] }), _jsx("div", { className: "b2b-row", style: { gap: 8, justifyContent: 'flex-end' }, children: _jsx("button", { type: "submit", className: "b2b-btn b2b-btn--primary", disabled: submitting, children: submitting ? t('profile.saving') : t('profile.saveChanges') }) })] }), _jsx(LanguageSection, {})] }));
77
110
  }
78
111
  /**
79
112
  * Language section — feature 019 / FR-002, FR-004, FR-005, FR-006.
@@ -1 +1 @@
1
- {"version":3,"file":"ProfilePage.js","sourceRoot":"","sources":["../../../src/modules/profile/ProfilePage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAkC,MAAM,OAAO,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IAClC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,EAAE,EAAE,CAAC;YACP,YAAY,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACrC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAET,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,cAAK,SAAS,EAAC,UAAU,YAAE,CAAC,CAAC,iBAAiB,CAAC,GAAO,CAAC;IAChE,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,EAAE,CAAY,EAAiB,EAAE;QACzD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,IAAI,CAAC;YACH,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,IAAI,SAAS,KAAK,EAAE,CAAC,SAAS,CAAC,SAAS;gBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;YACxE,IAAI,QAAQ,KAAK,EAAE,CAAC,SAAS,CAAC,QAAQ;gBAAE,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;YACpE,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;YAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBACzC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,MAAM,SAAS,CAAC,KAAK,CAAU,kBAAkB,EAAE,IAAI,CAAC,CAAC;YACzD,WAAW,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACnC,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC3F,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aACvB,cAAK,SAAS,EAAC,eAAe,YAC5B,eAAK,SAAS,EAAC,UAAU,aACvB,cAAK,SAAS,EAAC,sBAAsB,YAAE,CAAC,CAAC,oBAAoB,CAAC,GAAO,EACrE,eAAK,SAAS,EAAC,oBAAoB,aAChC,CAAC,CAAC,gCAAgC,CAAC,OAAE,eAAM,SAAS,EAAC,UAAU,mCAA0B,OAAE,CAAC,CAAC,gCAAgC,CAAC,IAC3H,IACF,GACF,EAEL,KAAK,CAAC,CAAC,CAAC,CACP,cACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE;oBACL,UAAU,EAAE,oBAAoB;oBAChC,KAAK,EAAE,uBAAuB;oBAC9B,OAAO,EAAE,EAAE;oBACX,YAAY,EAAE,EAAE;oBAChB,MAAM,EAAE,0BAA0B;iBACnC,YAEA,KAAK,GACF,CACP,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,CAAC,CAAC,CAAC,CACN,cACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE;oBACL,UAAU,EAAE,qBAAqB;oBACjC,KAAK,EAAE,wBAAwB;oBAC/B,OAAO,EAAE,EAAE;oBACX,YAAY,EAAE,EAAE;oBAChB,MAAM,EAAE,4BAA4B;iBACrC,YAEA,IAAI,GACD,CACP,CAAC,CAAC,CAAC,IAAI,EAER,gBAAM,QAAQ,EAAE,CAAC,CAAC,EAAQ,EAAE,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aACpD,eAAK,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aACnD,cAAK,SAAS,EAAC,gBAAgB,YAAC,uBAAK,CAAC,CAAC,uBAAuB,CAAC,GAAM,GAAM,EAC3E,cAAK,SAAS,EAAC,gBAAgB,YAC7B,eAAK,SAAS,EAAC,2BAA2B,aACxC,0BACE,gBAAO,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,UAAU,YAAE,CAAC,CAAC,qBAAqB,CAAC,GAAS,EAClF,gBACE,EAAE,EAAC,UAAU,EACb,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EACzB,QAAQ,SACR,EACF,cAAK,SAAS,EAAC,UAAU,YAAE,CAAC,CAAC,mBAAmB,CAAC,GAAO,IACpD,EACN,0BACE,gBAAO,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,SAAS,YAAE,CAAC,CAAC,oBAAoB,CAAC,GAAS,EAChF,gBACE,EAAE,EAAC,SAAS,EACZ,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,EAC3B,QAAQ,SACR,IACE,EACN,0BACE,gBAAO,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,UAAU,YAAE,CAAC,CAAC,yBAAyB,CAAC,GAAS,EACtF,gBACE,EAAE,EAAC,UAAU,EACb,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAQ,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACnD,QAAQ,QACR,SAAS,EAAE,GAAG,GACd,IACE,EACN,0BACE,gBAAO,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,SAAS,YAAE,CAAC,CAAC,wBAAwB,CAAC,GAAS,EACpF,gBACE,EAAE,EAAC,SAAS,EACZ,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,CAAC,EAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAClD,QAAQ,QACR,SAAS,EAAE,GAAG,GACd,IACE,IACF,GACF,IACF,EAEN,eAAK,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aACnD,cAAK,SAAS,EAAC,gBAAgB,YAAC,uBAAK,CAAC,CAAC,wBAAwB,CAAC,GAAM,GAAM,EAC5E,cAAK,SAAS,EAAC,gBAAgB,YAC7B,0BACE,gBAAO,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,QAAQ,YAAE,CAAC,CAAC,2BAA2B,CAAC,GAAS,EACtF,gBACE,EAAE,EAAC,QAAQ,EACX,SAAS,EAAC,WAAW,EACrB,IAAI,EAAC,UAAU,EACf,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,CAAC,EAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAClD,SAAS,EAAE,EAAE,EACb,SAAS,EAAE,GAAG,EACd,YAAY,EAAC,cAAc,EAC3B,WAAW,EAAE,CAAC,CAAC,sCAAsC,CAAC,GACtD,EACF,cAAK,SAAS,EAAC,UAAU,YAAE,CAAC,CAAC,+BAA+B,CAAC,GAAO,IAChE,GACF,IACF,EAEN,cAAK,SAAS,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,YACpE,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,0BAA0B,EAAC,QAAQ,EAAE,UAAU,YAC5E,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,GACrD,GACL,IACD,EAEP,KAAC,eAAe,KAAG,IACf,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe;IACtB,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,CAAC;IACnD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IAC9B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAyB,QAAQ,CAAC,CAAC;IACzE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;QAC3C,IAAI,OAAO,KAAK,QAAQ;YAAE,OAAO;QACjC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,QAAQ,GAAG,QAAQ,CAAC;QAC1B,WAAW,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,OAAO,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtB,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrB,MAAM,OAAO,GACX,GAAG,YAAY,QAAQ;gBACrB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO;gBAC5B,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC;YACvC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aAChD,cAAK,SAAS,EAAC,gBAAgB,YAC7B,uBAAK,CAAC,CAAC,8BAA8B,CAAC,GAAM,GACxC,EACN,eAAK,SAAS,EAAC,gBAAgB,aAC7B,YAAG,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,YAChD,CAAC,CAAC,mCAAmC,CAAC,GACrC,EACH,KAAK,CAAC,CAAC,CAAC,CACP,cACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE;4BACL,UAAU,EAAE,oBAAoB;4BAChC,KAAK,EAAE,uBAAuB;4BAC9B,OAAO,EAAE,EAAE;4BACX,YAAY,EAAE,EAAE;4BAChB,MAAM,EAAE,0BAA0B;yBACnC,YAEA,KAAK,GACF,CACP,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,CAAC,CAAC,CAAC,CACN,cACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE;4BACL,UAAU,EAAE,qBAAqB;4BACjC,KAAK,EAAE,wBAAwB;4BAC/B,OAAO,EAAE,EAAE;4BACX,YAAY,EAAE,EAAE;4BAChB,MAAM,EAAE,4BAA4B;yBACrC,YAEA,IAAI,GACD,CACP,CAAC,CAAC,CAAC,IAAI,EACR,eAAK,SAAS,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,aAC/D,kBACE,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,CAAC,EAAQ,EAAE,CACpB,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAA+B,CAAC,EAEtD,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,aAExB,iBAAQ,KAAK,EAAC,IAAI,YAAE,CAAC,CAAC,gCAAgC,CAAC,GAAU,EACjE,iBAAQ,KAAK,EAAC,IAAI,YAAE,CAAC,CAAC,gCAAgC,CAAC,GAAU,IAC1D,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0BAA0B,EACpC,QAAQ,EAAE,UAAU,IAAI,OAAO,KAAK,QAAQ,EAC5C,OAAO,EAAE,GAAS,EAAE;oCAClB,KAAK,UAAU,EAAE,CAAC;gCACpB,CAAC,YAEA,UAAU;oCACT,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC;oCAC3B,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,GAClC,IACL,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ProfilePage.js","sourceRoot":"","sources":["../../../src/modules/profile/ProfilePage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAkC,MAAM,OAAO,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IAClC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACtF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,EAAE,EAAE,CAAC;YACP,YAAY,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACrC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAET,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,cAAK,SAAS,EAAC,UAAU,YAAE,CAAC,CAAC,iBAAiB,CAAC,GAAO,CAAC;IAChE,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,EAAE,CAAY,EAAiB,EAAE;QACzD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACpD,IAAI,gBAAgB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,uBAAuB,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,IAAI,SAAS,KAAK,EAAE,CAAC,SAAS,CAAC,SAAS;gBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;YACxE,IAAI,QAAQ,KAAK,EAAE,CAAC,SAAS,CAAC,QAAQ;gBAAE,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;YACpE,IAAI,gBAAgB,EAAE,CAAC;gBACrB,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;gBAC5B,IAAI,CAAC,iBAAiB,CAAC,GAAG,eAAe,CAAC;YAC5C,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBACzC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,MAAM,SAAS,CAAC,KAAK,CAAU,kBAAkB,EAAE,IAAI,CAAC,CAAC;YACzD,WAAW,CAAC,EAAE,CAAC,CAAC;YAChB,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACvB,qEAAqE;YACrE,yEAAyE;YACzE,uCAAuC;YACvC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACvF,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;gBACtF,gEAAgE;gBAChE,yDAAyD;gBACzD,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACpD,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aACvB,cAAK,SAAS,EAAC,eAAe,YAC5B,eAAK,SAAS,EAAC,UAAU,aACvB,cAAK,SAAS,EAAC,sBAAsB,YAAE,CAAC,CAAC,oBAAoB,CAAC,GAAO,EACrE,eAAK,SAAS,EAAC,oBAAoB,aAChC,CAAC,CAAC,gCAAgC,CAAC,OAAE,eAAM,SAAS,EAAC,UAAU,mCAA0B,OAAE,CAAC,CAAC,gCAAgC,CAAC,IAC3H,IACF,GACF,EAEL,KAAK,CAAC,CAAC,CAAC,CACP,cACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE;oBACL,UAAU,EAAE,oBAAoB;oBAChC,KAAK,EAAE,uBAAuB;oBAC9B,OAAO,EAAE,EAAE;oBACX,YAAY,EAAE,EAAE;oBAChB,MAAM,EAAE,0BAA0B;iBACnC,YAEA,KAAK,GACF,CACP,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,CAAC,CAAC,CAAC,CACN,cACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE;oBACL,UAAU,EAAE,qBAAqB;oBACjC,KAAK,EAAE,wBAAwB;oBAC/B,OAAO,EAAE,EAAE;oBACX,YAAY,EAAE,EAAE;oBAChB,MAAM,EAAE,4BAA4B;iBACrC,YAEA,IAAI,GACD,CACP,CAAC,CAAC,CAAC,IAAI,EAER,gBAAM,QAAQ,EAAE,CAAC,CAAC,EAAQ,EAAE,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aACpD,eAAK,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aACnD,cAAK,SAAS,EAAC,gBAAgB,YAAC,uBAAK,CAAC,CAAC,uBAAuB,CAAC,GAAM,GAAM,EAC3E,cAAK,SAAS,EAAC,gBAAgB,YAC7B,eAAK,SAAS,EAAC,2BAA2B,aACxC,0BACE,gBAAO,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,UAAU,YAAE,CAAC,CAAC,qBAAqB,CAAC,GAAS,EAClF,gBACE,EAAE,EAAC,UAAU,EACb,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EACzB,QAAQ,SACR,EACF,cAAK,SAAS,EAAC,UAAU,YAAE,CAAC,CAAC,mBAAmB,CAAC,GAAO,IACpD,EACN,0BACE,gBAAO,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,SAAS,YAAE,CAAC,CAAC,oBAAoB,CAAC,GAAS,EAChF,gBACE,EAAE,EAAC,SAAS,EACZ,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,EAC3B,QAAQ,SACR,IACE,EACN,0BACE,gBAAO,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,UAAU,YAAE,CAAC,CAAC,yBAAyB,CAAC,GAAS,EACtF,gBACE,EAAE,EAAC,UAAU,EACb,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAQ,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACnD,QAAQ,QACR,SAAS,EAAE,GAAG,GACd,IACE,EACN,0BACE,gBAAO,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,SAAS,YAAE,CAAC,CAAC,wBAAwB,CAAC,GAAS,EACpF,gBACE,EAAE,EAAC,SAAS,EACZ,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,CAAC,EAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAClD,QAAQ,QACR,SAAS,EAAE,GAAG,GACd,IACE,IACF,GACF,IACF,EAEN,eAAK,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aACnD,cAAK,SAAS,EAAC,gBAAgB,YAAC,uBAAK,CAAC,CAAC,wBAAwB,CAAC,GAAM,GAAM,EAC5E,eAAK,SAAS,EAAC,gBAAgB,aAC7B,eAAK,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aAC9B,gBAAO,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,gBAAgB,YAAE,CAAC,CAAC,+BAA+B,CAAC,GAAS,EAClG,gBACE,EAAE,EAAC,gBAAgB,EACnB,SAAS,EAAC,WAAW,EACrB,IAAI,EAAC,UAAU,EACf,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,CAAC,CAAC,EAAQ,EAAE;oDACpB,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oDACnC,uBAAuB,CAAC,IAAI,CAAC,CAAC;gDAChC,CAAC,EACD,SAAS,EAAE,GAAG,EACd,YAAY,EAAC,kBAAkB,kBACjB,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,sBACnC,oBAAoB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,qBAAqB,GACvF,EACD,oBAAoB,CAAC,CAAC,CAAC,CACtB,cACE,EAAE,EAAC,sBAAsB,EACzB,SAAS,EAAC,UAAU,EACpB,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,YAExC,oBAAoB,GACjB,CACP,CAAC,CAAC,CAAC,CACF,cAAK,EAAE,EAAC,qBAAqB,EAAC,SAAS,EAAC,UAAU,YAAE,CAAC,CAAC,mCAAmC,CAAC,GAAO,CAClG,IACG,EACN,0BACE,gBAAO,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,QAAQ,YAAE,CAAC,CAAC,2BAA2B,CAAC,GAAS,EACtF,gBACE,EAAE,EAAC,QAAQ,EACX,SAAS,EAAC,WAAW,EACrB,IAAI,EAAC,UAAU,EACf,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,CAAC,EAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAClD,SAAS,EAAE,EAAE,EACb,SAAS,EAAE,GAAG,EACd,YAAY,EAAC,cAAc,EAC3B,WAAW,EAAE,CAAC,CAAC,sCAAsC,CAAC,GACtD,EACF,cAAK,SAAS,EAAC,UAAU,YAAE,CAAC,CAAC,+BAA+B,CAAC,GAAO,IAChE,IACF,IACF,EAEN,cAAK,SAAS,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,YACpE,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,0BAA0B,EAAC,QAAQ,EAAE,UAAU,YAC5E,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,GACrD,GACL,IACD,EAEP,KAAC,eAAe,KAAG,IACf,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe;IACtB,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,CAAC;IACnD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IAC9B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAyB,QAAQ,CAAC,CAAC;IACzE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;QAC3C,IAAI,OAAO,KAAK,QAAQ;YAAE,OAAO;QACjC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,QAAQ,GAAG,QAAQ,CAAC;QAC1B,WAAW,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,OAAO,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtB,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrB,MAAM,OAAO,GACX,GAAG,YAAY,QAAQ;gBACrB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO;gBAC5B,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC;YACvC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aAChD,cAAK,SAAS,EAAC,gBAAgB,YAC7B,uBAAK,CAAC,CAAC,8BAA8B,CAAC,GAAM,GACxC,EACN,eAAK,SAAS,EAAC,gBAAgB,aAC7B,YAAG,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,YAChD,CAAC,CAAC,mCAAmC,CAAC,GACrC,EACH,KAAK,CAAC,CAAC,CAAC,CACP,cACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE;4BACL,UAAU,EAAE,oBAAoB;4BAChC,KAAK,EAAE,uBAAuB;4BAC9B,OAAO,EAAE,EAAE;4BACX,YAAY,EAAE,EAAE;4BAChB,MAAM,EAAE,0BAA0B;yBACnC,YAEA,KAAK,GACF,CACP,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,CAAC,CAAC,CAAC,CACN,cACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE;4BACL,UAAU,EAAE,qBAAqB;4BACjC,KAAK,EAAE,wBAAwB;4BAC/B,OAAO,EAAE,EAAE;4BACX,YAAY,EAAE,EAAE;4BAChB,MAAM,EAAE,4BAA4B;yBACrC,YAEA,IAAI,GACD,CACP,CAAC,CAAC,CAAC,IAAI,EACR,eAAK,SAAS,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,aAC/D,kBACE,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,CAAC,EAAQ,EAAE,CACpB,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAA+B,CAAC,EAEtD,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,aAExB,iBAAQ,KAAK,EAAC,IAAI,YAAE,CAAC,CAAC,gCAAgC,CAAC,GAAU,EACjE,iBAAQ,KAAK,EAAC,IAAI,YAAE,CAAC,CAAC,gCAAgC,CAAC,GAAU,IAC1D,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0BAA0B,EACpC,QAAQ,EAAE,UAAU,IAAI,OAAO,KAAK,QAAQ,EAC5C,OAAO,EAAE,GAAS,EAAE;oCAClB,KAAK,UAAU,EAAE,CAAC;gCACpB,CAAC,YAEA,UAAU;oCACT,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC;oCAC3B,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,GAClC,IACL,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@endora-commerce/admin-shell",
3
- "version": "0.103.1",
3
+ "version": "0.105.0",
4
4
  "type": "module",
5
5
  "description": "The admin application itself (feature 110, FR-016) — the router, the sidebar and palette shell, the sign-in screen and the host's own screens. An instance depends on it and holds only index.html, main.tsx, the configuration, the brand assets, the theme overrides and the generated contribution registry.",
6
6
  "license": "MIT",
@@ -37,8 +37,8 @@
37
37
  "react-router-dom": "^7.18.2",
38
38
  "tailwindcss": "^4.2.4",
39
39
  "vite": "^7.3.2",
40
- "@endora-commerce/admin-kit": "0.103.1",
41
- "@endora-commerce/contracts": "0.103.1"
40
+ "@endora-commerce/admin-kit": "0.105.0",
41
+ "@endora-commerce/contracts": "0.105.0"
42
42
  },
43
43
  "peerDependenciesMeta": {
44
44
  "@tailwindcss/vite": {
@@ -66,8 +66,8 @@
66
66
  "react-router-dom": "^7.18.2",
67
67
  "typescript": "^5.9.3",
68
68
  "vite": "^7.3.2",
69
- "@endora-commerce/admin-kit": "0.103.1",
70
- "@endora-commerce/contracts": "0.103.1"
69
+ "@endora-commerce/admin-kit": "0.105.0",
70
+ "@endora-commerce/contracts": "0.105.0"
71
71
  },
72
72
  "scripts": {
73
73
  "build": "tsc -p tsconfig.build.json",