@fayz-ai/admin 0.27.0 → 0.28.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 (32) hide show
  1. package/dist/{CommandPalette-ANZWU27U.js → CommandPalette-B5PMQFDG.js} +28 -4
  2. package/dist/CommandPalette-B5PMQFDG.js.map +1 -0
  3. package/dist/SubscriptionPage-2JPALG53.js +9 -0
  4. package/dist/{SubscriptionPage-4EJCCS4I.js.map → SubscriptionPage-2JPALG53.js.map} +1 -1
  5. package/dist/billing/index.js +2 -1
  6. package/dist/chunk-OD7P4L3D.js +74 -0
  7. package/dist/chunk-OD7P4L3D.js.map +1 -0
  8. package/dist/{chunk-LB5SV4ZZ.js → chunk-OVVTLRDD.js} +3 -3
  9. package/dist/{chunk-LB5SV4ZZ.js.map → chunk-OVVTLRDD.js.map} +1 -1
  10. package/dist/chunk-P5UIGQFY.js +57 -0
  11. package/dist/chunk-P5UIGQFY.js.map +1 -0
  12. package/dist/chunk-VX3WJLKK.js +54 -0
  13. package/dist/chunk-VX3WJLKK.js.map +1 -0
  14. package/dist/{chunk-U3VX52SE.js → chunk-ZOUIXHKI.js} +5 -50
  15. package/dist/chunk-ZOUIXHKI.js.map +1 -0
  16. package/dist/components/layout/CommandPalette.d.ts.map +1 -1
  17. package/dist/crud/archetype-lookup.d.ts +10 -0
  18. package/dist/crud/archetype-lookup.d.ts.map +1 -1
  19. package/dist/entity-routes-LXOBW5IB.js +4 -0
  20. package/dist/entity-routes-LXOBW5IB.js.map +1 -0
  21. package/dist/hooks/useRecentRecords.d.ts +16 -0
  22. package/dist/hooks/useRecentRecords.d.ts.map +1 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +46 -81
  26. package/dist/index.js.map +1 -1
  27. package/dist/lib/recent-records.d.ts +53 -0
  28. package/dist/lib/recent-records.d.ts.map +1 -0
  29. package/package.json +6 -6
  30. package/dist/CommandPalette-ANZWU27U.js.map +0 -1
  31. package/dist/SubscriptionPage-4EJCCS4I.js +0 -8
  32. package/dist/chunk-U3VX52SE.js.map +0 -1
@@ -0,0 +1,57 @@
1
+ import { navigateTo } from './chunk-VX3WJLKK.js';
2
+
3
+ // src/lib/entity-routes.ts
4
+ var routeMap = /* @__PURE__ */ new Map();
5
+ function setEntityRouteMap(map) {
6
+ const next = /* @__PURE__ */ new Map();
7
+ for (const [key, value] of map) {
8
+ next.set(key, typeof value === "string" ? { path: value, detail: true } : value);
9
+ }
10
+ routeMap = next;
11
+ }
12
+ function lookup(archetype, kind, entityKey) {
13
+ if (archetype && kind) {
14
+ const specific = routeMap.get(`${archetype}:${kind}`);
15
+ if (specific) return specific;
16
+ }
17
+ if (archetype) {
18
+ const general = routeMap.get(archetype);
19
+ if (general) return general;
20
+ }
21
+ if (entityKey) {
22
+ const byKey = routeMap.get(entityKey);
23
+ if (byKey) return byKey;
24
+ }
25
+ return null;
26
+ }
27
+ function resolveEntityRoute(archetype, kind, entityKey) {
28
+ return lookup(archetype, kind, entityKey)?.path ?? null;
29
+ }
30
+ function entityRouteHasDetail(archetype, kind, entityKey) {
31
+ return lookup(archetype, kind, entityKey)?.detail ?? false;
32
+ }
33
+ function resolveEntityHref(id, archetype, kind, tab, entityKey) {
34
+ const entry = lookup(archetype, kind, entityKey);
35
+ if (entry && !entry.detail) return entry.path;
36
+ let href;
37
+ if (entry) {
38
+ href = `${entry.path}/${id}`;
39
+ } else if (kind) {
40
+ const plural = kind.endsWith("s") ? kind : kind + "s";
41
+ href = `/${plural}/${id}`;
42
+ } else {
43
+ href = `/${id}`;
44
+ }
45
+ if (tab) href += `/${tab}`;
46
+ return href;
47
+ }
48
+ function resolveEntityAnchor(id, archetype, kind, tab, entityKey) {
49
+ return `#${resolveEntityHref(id, archetype, kind, tab, entityKey)}`;
50
+ }
51
+ function openEntity(id, archetype, kind, tab, entityKey) {
52
+ navigateTo(resolveEntityHref(id, archetype, kind, tab, entityKey));
53
+ }
54
+
55
+ export { entityRouteHasDetail, openEntity, resolveEntityAnchor, resolveEntityHref, resolveEntityRoute, setEntityRouteMap };
56
+ //# sourceMappingURL=chunk-P5UIGQFY.js.map
57
+ //# sourceMappingURL=chunk-P5UIGQFY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/entity-routes.ts"],"names":[],"mappings":"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","file":"chunk-P5UIGQFY.js","sourcesContent":["/**\n * Global entity route registry.\n *\n * Populated once during buildNavigation() with mappings from\n * \"archetype:kind\" (e.g. \"person:staff\") to the registered route path\n * (e.g. \"/registry/staff\"). Used by PersonLink, command palette, and\n * any component that needs to resolve an entity detail URL.\n *\n * An entry records whether the route can take an id: a CRUD page owns\n * `/path/:id`, a hand-built page (the agenda) only has its list.\n */\n\nimport { navigateTo } from '../app/routing'\n\nexport interface EntityRouteEntry {\n path: string\n /** The route renders `${path}/${id}` as a detail view. */\n detail: boolean\n}\n\nlet routeMap = new Map<string, EntityRouteEntry>()\n\n/** Replace the entity route map (called once at app init by buildNavigation).\n * Accepts the legacy `Map<string, string>` shape (all detail-capable). */\nexport function setEntityRouteMap(map: Map<string, EntityRouteEntry | string>): void {\n const next = new Map<string, EntityRouteEntry>()\n for (const [key, value] of map) {\n next.set(key, typeof value === 'string' ? { path: value, detail: true } : value)\n }\n routeMap = next\n}\n\nfunction lookup(archetype?: string, kind?: string, entityKey?: string): EntityRouteEntry | null {\n if (archetype && kind) {\n const specific = routeMap.get(`${archetype}:${kind}`)\n if (specific) return specific\n }\n if (archetype) {\n const general = routeMap.get(archetype)\n if (general) return general\n }\n // The only route a non-archetype entity has — without it a plugin registry\n // is findable by search and unopenable.\n if (entityKey) {\n const byKey = routeMap.get(entityKey)\n if (byKey) return byKey\n }\n return null\n}\n\n/**\n * Resolve the route path for an entity given its archetype and kind.\n * Returns the registered path (e.g. \"/registry/staff\") or null if not found.\n *\n * Tries \"archetype:kind\", then \"archetype\", then the entity key.\n */\nexport function resolveEntityRoute(archetype?: string, kind?: string, entityKey?: string): string | null {\n return lookup(archetype, kind, entityKey)?.path ?? null\n}\n\n/** Whether the resolved route can show a single record, or only its list. */\nexport function entityRouteHasDetail(archetype?: string, kind?: string, entityKey?: string): boolean {\n return lookup(archetype, kind, entityKey)?.detail ?? false\n}\n\n/**\n * Build a full URL path for an entity detail page.\n * Returns e.g. \"/registry/staff/uuid\" or \"/registry/staff/uuid/schedule\".\n * Falls back to \"/kind/uuid\" if no route registered.\n *\n * A list-only route (a plugin page that shows these records but has no detail\n * view) returns the bare path — appending an id there is a dead end.\n */\nexport function resolveEntityHref(id: string, archetype?: string, kind?: string, tab?: string, entityKey?: string): string {\n const entry = lookup(archetype, kind, entityKey)\n if (entry && !entry.detail) return entry.path\n\n let href: string\n if (entry) {\n href = `${entry.path}/${id}`\n } else if (kind) {\n const plural = kind.endsWith('s') ? kind : kind + 's'\n href = `/${plural}/${id}`\n } else {\n href = `/${id}`\n }\n if (tab) href += `/${tab}`\n return href\n}\n\n/** The href form — hash-prefixed, because the admin is a hash router. Use this\n * for links, `openEntity` for clicks. */\nexport function resolveEntityAnchor(\n id: string,\n archetype?: string,\n kind?: string,\n tab?: string,\n entityKey?: string,\n): string {\n return `#${resolveEntityHref(id, archetype, kind, tab, entityKey)}`\n}\n\n/**\n * Resolve a record's URL and go there — the only way a surface should open one.\n * `resolveEntityHref` returns a plain admin path, and handing that to a generic\n * router adapter assigns `location.href`: a full page load to a URL the app does\n * not serve. The palette and the chat chips both got that wrong independently.\n */\nexport function openEntity(\n id: string,\n archetype?: string,\n kind?: string,\n tab?: string,\n entityKey?: string,\n): void {\n navigateTo(resolveEntityHref(id, archetype, kind, tab, entityKey))\n}\n"]}
@@ -0,0 +1,54 @@
1
+ import * as React from 'react';
2
+ import { hashRouterAdapter } from '@fayz-ai/core';
3
+
4
+ // src/app/routing.tsx
5
+ var adapter = hashRouterAdapter();
6
+ function normalizeAdminPath(path) {
7
+ const clean = `/${path}`.replace(/\/+/g, "/");
8
+ return clean.length > 1 ? clean.replace(/\/+$/, "") : clean;
9
+ }
10
+ function navigateTo(to) {
11
+ adapter.navigate(normalizeAdminPath(to));
12
+ }
13
+ function useAdminPath() {
14
+ const [path, setPath] = React.useState(() => normalizeAdminPath(adapter.getCurrentPath() || "/"));
15
+ React.useEffect(() => {
16
+ return adapter.onPathChange((p) => {
17
+ setPath(normalizeAdminPath(p || "/"));
18
+ if (typeof window !== "undefined") window.scrollTo(0, 0);
19
+ });
20
+ }, []);
21
+ return path;
22
+ }
23
+ function matchRoute(pattern, path) {
24
+ const cleanPath = (path.split("?")[0] ?? "").replace(/\/+$/, "") || "/";
25
+ if (pattern.endsWith("/*")) {
26
+ const base = pattern.slice(0, -2);
27
+ if (cleanPath === base || cleanPath.startsWith(`${base}/`)) return {};
28
+ return null;
29
+ }
30
+ const patternParts = pattern.split("/").filter(Boolean);
31
+ const pathParts = cleanPath.split("/").filter(Boolean);
32
+ if (patternParts.length !== pathParts.length) return null;
33
+ const params = {};
34
+ for (let i = 0; i < patternParts.length; i++) {
35
+ const pat = patternParts[i];
36
+ const part = pathParts[i];
37
+ if (pat.startsWith(":")) params[pat.slice(1)] = decodeURIComponent(part);
38
+ else if (pat !== part) return null;
39
+ }
40
+ return params;
41
+ }
42
+ function routeScore(pattern) {
43
+ const isWildcard = pattern.endsWith("/*");
44
+ const routePattern = isWildcard ? pattern.slice(0, -2) : pattern;
45
+ const parts = routePattern.split("/").filter(Boolean);
46
+ let score = parts.length * 10;
47
+ for (const p of parts) if (!p.startsWith(":")) score += 5;
48
+ if (isWildcard) score -= 1;
49
+ return score;
50
+ }
51
+
52
+ export { matchRoute, navigateTo, normalizeAdminPath, routeScore, useAdminPath };
53
+ //# sourceMappingURL=chunk-VX3WJLKK.js.map
54
+ //# sourceMappingURL=chunk-VX3WJLKK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/app/routing.tsx"],"names":[],"mappings":"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","file":"chunk-VX3WJLKK.js","sourcesContent":["import * as React from 'react'\nimport { hashRouterAdapter } from '@fayz-ai/core'\n\n// ---------------------------------------------------------------------------\n// Admin hash router — the same lightweight approach the storefront uses. The\n// admin shell collects routes from the plugin runtime + manifest pages and\n// switches on the current hash path. Deliberately not react-router: an SDK\n// shell shipping a router creates singleton hazards under source-alias dev.\n// ---------------------------------------------------------------------------\n\nconst adapter = hashRouterAdapter()\n\nexport function normalizeAdminPath(path: string): string {\n const clean = `/${path}`.replace(/\\/+/g, '/')\n return clean.length > 1 ? clean.replace(/\\/+$/, '') : clean\n}\n\nexport function navigateTo(to: string): void {\n adapter.navigate(normalizeAdminPath(to))\n}\n\nexport function useAdminPath(): string {\n const [path, setPath] = React.useState(() => normalizeAdminPath(adapter.getCurrentPath() || '/'))\n React.useEffect(() => {\n return adapter.onPathChange((p) => {\n setPath(normalizeAdminPath(p || '/'))\n if (typeof window !== 'undefined') window.scrollTo(0, 0)\n })\n }, [])\n return path\n}\n\n/** Match '/courses/:id' against '/courses/abc' → { id: 'abc' }; supports a\n * trailing '/*' wildcard (matches the base and any deeper path). */\nexport function matchRoute(pattern: string, path: string): Record<string, string> | null {\n const cleanPath = (path.split('?')[0] ?? '').replace(/\\/+$/, '') || '/'\n if (pattern.endsWith('/*')) {\n const base = pattern.slice(0, -2)\n if (cleanPath === base || cleanPath.startsWith(`${base}/`)) return {}\n return null\n }\n const patternParts = pattern.split('/').filter(Boolean)\n const pathParts = cleanPath.split('/').filter(Boolean)\n if (patternParts.length !== pathParts.length) return null\n const params: Record<string, string> = {}\n for (let i = 0; i < patternParts.length; i++) {\n const pat = patternParts[i]!\n const part = pathParts[i]!\n if (pat.startsWith(':')) params[pat.slice(1)] = decodeURIComponent(part)\n else if (pat !== part) return null\n }\n return params\n}\n\n/** Score a route pattern for specificity so the most specific match wins\n * (static segments beat params; longer beats shorter; wildcard loses). */\nexport function routeScore(pattern: string): number {\n const isWildcard = pattern.endsWith('/*')\n const routePattern = isWildcard ? pattern.slice(0, -2) : pattern\n const parts = routePattern.split('/').filter(Boolean)\n let score = parts.length * 10\n for (const p of parts) if (!p.startsWith(':')) score += 5\n if (isWildcard) score -= 1\n return score\n}\n"]}
@@ -1,8 +1,9 @@
1
+ import { navigateTo } from './chunk-VX3WJLKK.js';
1
2
  import { useOrganizationStore, cn } from './chunk-W5IBKM3K.js';
2
3
  import { create } from 'zustand';
3
4
  import * as React from 'react';
4
5
  import { Crown, Clock } from 'lucide-react';
5
- import { hashRouterAdapter, tl } from '@fayz-ai/core';
6
+ import { tl } from '@fayz-ai/core';
6
7
  import { useLayoutStore } from '@fayz-ai/ui';
7
8
  import { jsx, jsxs } from 'react/jsx-runtime';
8
9
 
@@ -86,52 +87,6 @@ function useTrial() {
86
87
  [org?.plan, org?.trialEndsAt, plans, now]
87
88
  );
88
89
  }
89
- var adapter = hashRouterAdapter();
90
- function normalizeAdminPath(path) {
91
- const clean = `/${path}`.replace(/\/+/g, "/");
92
- return clean.length > 1 ? clean.replace(/\/+$/, "") : clean;
93
- }
94
- function navigateTo(to) {
95
- adapter.navigate(normalizeAdminPath(to));
96
- }
97
- function useAdminPath() {
98
- const [path, setPath] = React.useState(() => normalizeAdminPath(adapter.getCurrentPath() || "/"));
99
- React.useEffect(() => {
100
- return adapter.onPathChange((p) => {
101
- setPath(normalizeAdminPath(p || "/"));
102
- if (typeof window !== "undefined") window.scrollTo(0, 0);
103
- });
104
- }, []);
105
- return path;
106
- }
107
- function matchRoute(pattern, path) {
108
- const cleanPath = (path.split("?")[0] ?? "").replace(/\/+$/, "") || "/";
109
- if (pattern.endsWith("/*")) {
110
- const base = pattern.slice(0, -2);
111
- if (cleanPath === base || cleanPath.startsWith(`${base}/`)) return {};
112
- return null;
113
- }
114
- const patternParts = pattern.split("/").filter(Boolean);
115
- const pathParts = cleanPath.split("/").filter(Boolean);
116
- if (patternParts.length !== pathParts.length) return null;
117
- const params = {};
118
- for (let i = 0; i < patternParts.length; i++) {
119
- const pat = patternParts[i];
120
- const part = pathParts[i];
121
- if (pat.startsWith(":")) params[pat.slice(1)] = decodeURIComponent(part);
122
- else if (pat !== part) return null;
123
- }
124
- return params;
125
- }
126
- function routeScore(pattern) {
127
- const isWildcard = pattern.endsWith("/*");
128
- const routePattern = isWildcard ? pattern.slice(0, -2) : pattern;
129
- const parts = routePattern.split("/").filter(Boolean);
130
- let score = parts.length * 10;
131
- for (const p of parts) if (!p.startsWith(":")) score += 5;
132
- if (isWildcard) score -= 1;
133
- return score;
134
- }
135
90
  function TrialWidget({ totalDays = 30, route = "/settings/subscription", className }) {
136
91
  const trial = useTrial();
137
92
  const collapsed = useLayoutStore((s) => s.sidebarCollapsed);
@@ -197,6 +152,6 @@ function TrialWidget({ totalDays = 30, route = "/settings/subscription", classNa
197
152
  );
198
153
  }
199
154
 
200
- export { NO_TRIAL, TrialWidget, effectivePlan, matchRoute, navigateTo, normalizeAdminPath, paidPlanIds, resolvePlanBadge, resolveTrial, routeScore, useAdminPath, useBillingStore, useTrial };
201
- //# sourceMappingURL=chunk-U3VX52SE.js.map
202
- //# sourceMappingURL=chunk-U3VX52SE.js.map
155
+ export { NO_TRIAL, TrialWidget, effectivePlan, paidPlanIds, resolvePlanBadge, resolveTrial, useBillingStore, useTrial };
156
+ //# sourceMappingURL=chunk-ZOUIXHKI.js.map
157
+ //# sourceMappingURL=chunk-ZOUIXHKI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/billing/store.ts","../src/billing/plan-badge.ts","../src/billing/trial.ts","../src/billing/TrialWidget.tsx"],"names":["paidPlanIds","named"],"mappings":";;;;;;;;;AAoDA,IAAM,YAAA,GAA6B;AAAA,EACjC,YAAA,EAAc,IAAA;AAAA,EACd,UAAU,EAAC;AAAA,EACX,OAAO,EAAC;AAAA,EACR,OAAA,EAAS,KAAA;AAAA,EACT,QAAA,EAAU;AACZ,CAAA;AAEO,IAAM,eAAA,GAAkB,MAAA,CAAqB,CAAC,GAAA,MAAS;AAAA,EAC5D,GAAG,YAAA;AAAA,EACH,iBAAiB,CAAC,YAAA,KAAiB,GAAA,CAAI,EAAE,cAAc,CAAA;AAAA,EACvD,aAAa,CAAC,QAAA,KAAa,GAAA,CAAI,EAAE,UAAU,CAAA;AAAA,EAC3C,UAAU,CAAC,KAAA,KAAU,GAAA,CAAI,EAAE,OAAO,CAAA;AAAA,EAClC,YAAY,CAAC,OAAA,KAAY,GAAA,CAAI,EAAE,SAAS,CAAA;AAAA,EACxC,aAAa,CAAC,QAAA,KAAa,GAAA,CAAI,EAAE,UAAU,CAAA;AAAA,EAC3C,KAAA,EAAO,MAAM,GAAA,CAAI,YAAY;AAC/B,CAAA,CAAE;;;ACzDF,SAAS,WAAW,CAAA,EAAmB;AACrC,EAAA,OAAO,CAAA,GAAI,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,aAAY,GAAI,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AACtD;AAQO,SAAS,gBAAA,CACd,QACA,KAAA,EACe;AACf,EAAA,MAAM,KAAK,MAAA,IAAU,MAAA;AACrB,EAAA,MAAM,QAAQ,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AAC3C,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,OAAO,EAAE,KAAA,EAAO,KAAA,CAAM,IAAA,EAAM,MAAA,EAAQ,MAAM,EAAA,EAAI,IAAA,EAAM,KAAA,CAAM,KAAA,GAAQ,CAAA,EAAE;AAAA,EACtE;AACA,EAAA,OAAO,EAAE,OAAO,UAAA,CAAW,EAAE,GAAG,MAAA,EAAQ,EAAA,EAAI,MAAM,KAAA,EAAM;AAC1D;ACCO,IAAM,WAAuB,EAAE,MAAA,EAAQ,QAAQ,QAAA,EAAU,CAAA,EAAG,YAAY,KAAA;AAE/E,IAAM,MAAA,GAAS,KAAA;AAGR,SAAS,aACd,GAAA,EACAA,YAAAA,EACA,GAAA,GAAc,IAAA,CAAK,KAAI,EACX;AACZ,EAAA,IAAI,CAAC,GAAA,EAAK,WAAA,EAAa,OAAO,QAAA;AAE9B,EAAA,IAAI,IAAI,IAAA,IAAQA,YAAAA,CAAY,IAAI,GAAA,CAAI,IAAI,GAAG,OAAO,QAAA;AAElD,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,WAAW,CAAA;AACvC,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA,EAAG,OAAO,QAAA;AAE/B,EAAA,MAAM,YAAY,IAAA,GAAO,GAAA;AACzB,EAAA,IAAI,SAAA,IAAa,CAAA,EAAG,OAAO,EAAE,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQ,GAAA,CAAI,WAAA,EAAa,QAAA,EAAU,CAAA,EAAG,UAAA,EAAY,KAAA,EAAM;AAExG,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,MAAM,CAAA;AAC7C,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,QAAA;AAAA,IACR,QAAQ,GAAA,CAAI,WAAA;AAAA,IACZ,QAAA;AAAA,IACA,UAAA,EAAY,aAAa,CAAA,GAAI;AAAA,GAC/B;AACF;AAwBO,SAAS,aAAA,CACd,GAAA,EACA,KAAA,EACA,KAAA,EACA,WAAA,EACa;AACb,EAAA,IAAI,KAAA,CAAM,WAAW,QAAA,EAAU;AAC7B,IAAA,MAAMC,MAAAA,GAAQ,cAAc,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,WAAW,CAAA,GAAI,MAAA;AACtE,IAAA,IAAIA,QAAO,OAAOA,MAAAA;AAClB,IAAA,MAAM,OAAO,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,QAAQ,CAAC,CAAA;AAC5C,IAAA,IAAI,IAAA,CAAK,MAAA,EAAQ,OAAO,IAAA,CAAK,MAAA,CAAO,CAAC,IAAA,EAAM,CAAA,KAAO,CAAA,CAAE,KAAA,GAAQ,IAAA,CAAK,KAAA,GAAQ,IAAI,IAAK,CAAA;AAAA,EACpF;AACA,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAE/B,EAAA,MAAM,KAAA,GAAQ,GAAA,EAAK,IAAA,GAAO,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,GAAA,CAAI,IAAI,CAAA,GAAI,MAAA;AACjE,EAAA,IAAI,OAAO,OAAO,KAAA;AAElB,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,QAAA,EAAU,CAAA,KAAO,CAAA,CAAE,KAAA,GAAQ,QAAA,CAAS,KAAA,GAAQ,CAAA,GAAI,QAAS,CAAA;AACrF,EAAA,IAAI,KAAK,IAAA,EAAM;AAGb,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN,0BAA0B,GAAA,CAAI,IAAI,CAAA,mCAAA,EAAgC,KAAA,CAAM,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,EAAE,EAAE,IAAA,CAAK,IAAI,CAAC,CAAA,2BAAA,EAAyB,MAAM,EAAE,CAAA,CAAA;AAAA,KACtI;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT;AAGO,SAAS,YAAY,KAAA,EAA4B;AACtD,EAAA,OAAO,IAAI,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,CAAC,EAAE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,EAAE,CAAC,CAAA;AAClE;AASO,SAAS,QAAA,GAAuB;AACrC,EAAA,MAAM,GAAA,GAAM,oBAAA,CAAqB,CAAC,CAAA,KAAM,EAAE,UAAU,CAAA;AACpD,EAAA,MAAM,KAAA,GAAQ,eAAA,CAAgB,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAK,MAAM,CAAA,GAAU,eAAS,MAAM,IAAA,CAAK,KAAK,CAAA;AAErD,EAAM,gBAAU,MAAM;AACpB,IAAA,MAAM,EAAA,GAAK,OAAO,WAAA,CAAY,MAAM,OAAO,IAAA,CAAK,GAAA,EAAK,CAAA,EAAG,IAAS,CAAA;AACjE,IAAA,OAAO,MAAM,MAAA,CAAO,aAAA,CAAc,EAAE,CAAA;AAAA,EACtC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAa,KAAA,CAAA,OAAA;AAAA,IACX,MAAM,YAAA,CAAa,GAAA,EAAK,WAAA,CAAY,KAAK,GAAG,GAAG,CAAA;AAAA,IAC/C,CAAC,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,WAAA,EAAa,OAAO,GAAG;AAAA,GAC1C;AACF;AC1GO,SAAS,YAAY,EAAE,SAAA,GAAY,IAAI,KAAA,GAAQ,wBAAA,EAA0B,WAAU,EAAqB;AAC7G,EAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,EAAA,MAAM,SAAA,GAAY,cAAA,CAAe,CAAC,CAAA,KAAM,EAAE,gBAAgB,CAAA;AAE1D,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,MAAA,EAAQ,OAAO,IAAA;AAEpC,EAAA,MAAM,OAAA,GAAU,MAAM,MAAA,KAAW,SAAA;AACjC,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,GAAA,EAAM,KAAA,CAAM,QAAA,GAAW,SAAA,GAAa,GAAG,CAAC,CAAA;AAEzE,EAAA,MAAM,KAAA,GAAQ,UACV,EAAA,CAAG,aAAA,EAAe,oBAAoB,CAAA,GACtC,KAAA,CAAM,YAAY,CAAA,GAChB,EAAA,CAAG,0BAA0B,wBAAqB,CAAA,GAClD,GAAG,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,mBAAA,CAAA,EAAuB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,cAAA,CAAgB,CAAA;AAElF,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,QAC/B,KAAA,EAAO,KAAA;AAAA,QACP,YAAA,EAAY,KAAA;AAAA,QACZ,WAAA,EAAU,eAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACT,gFAAA;AAAA,UACA,UACI,gDAAA,GACA,uDAAA;AAAA,UACJ;AAAA,SACF;AAAA,QAEC,QAAA,EAAA,OAAA,uBAAW,KAAA,EAAA,EAAM,SAAA,EAAU,WAAU,CAAA,mBAAK,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,KACxE;AAAA,EAEJ;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,OAAA,EAAS,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,MAC/B,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,iEAAA;AAAA,QACA,UAAU,mCAAA,GAAsC,4BAAA;AAAA,QAChD;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,UAAA,OAAA,mBACG,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,mCAAA,EAAoC,oBACrD,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAW,EAAA,CAAG,sBAAA,EAAwB,KAAA,CAAM,UAAA,GAAa,cAAA,GAAiB,oBAAoB,CAAA,EAAG,CAAA;AAAA,0BAC5G,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,iDAAA;AAAA,gBACA,UAAU,yBAAA,GAA4B;AAAA,eACxC;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA;AACH,SAAA,EACF,CAAA;AAAA,QACC,OAAA,mBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kEAAA,EACb,QAAA,EAAA,EAAA,CAAG,qCAAA,EAAuC,2CAA2C,CAAA,EACxF,CAAA,mBAEA,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,iEAAA,EACd,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,0CAAA;AAAA,cACA,KAAA,CAAM,aAAa,YAAA,GAAe;AAAA,aACpC;AAAA,YACA,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,GAAG,CAAA,CAAA,CAAA;AAAI;AAAA,SAC5B,EACF;AAAA;AAAA;AAAA,GAEJ;AAEJ","file":"chunk-ZOUIXHKI.js","sourcesContent":["import { create } from 'zustand'\nimport type { Plan, BillingCheckoutFn } from '@fayz-ai/core'\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface Subscription {\n id: string\n orgId: string\n planId: string\n status: 'active' | 'trialing' | 'past_due' | 'canceled' | 'incomplete'\n currentPeriodStart: string\n currentPeriodEnd: string\n cancelAtPeriodEnd?: boolean\n stripeSubscriptionId?: string\n}\n\nexport interface Invoice {\n id: string\n orgId: string\n amount: number\n currency: string\n status: 'paid' | 'open' | 'void' | 'uncollectible'\n pdfUrl?: string\n createdAt: string\n}\n\nexport interface BillingState {\n subscription: Subscription | null\n invoices: Invoice[]\n plans: Plan[]\n loading: boolean\n /** Payment-gateway seam seeded from `config.billing.onCheckout` (see core\n * BillingConfig). When set, the Subscription page routes plan changes through\n * it instead of writing `plan` straight onto the org. */\n checkout: BillingCheckoutFn | null\n}\n\n// ---------------------------------------------------------------------------\n// Store\n// ---------------------------------------------------------------------------\n\nexport interface BillingStore extends BillingState {\n setSubscription: (subscription: Subscription | null) => void\n setInvoices: (invoices: Invoice[]) => void\n setPlans: (plans: Plan[]) => void\n setLoading: (loading: boolean) => void\n setCheckout: (checkout: BillingCheckoutFn | null) => void\n reset: () => void\n}\n\nconst initialState: BillingState = {\n subscription: null,\n invoices: [],\n plans: [],\n loading: false,\n checkout: null,\n}\n\nexport const useBillingStore = create<BillingStore>((set) => ({\n ...initialState,\n setSubscription: (subscription) => set({ subscription }),\n setInvoices: (invoices) => set({ invoices }),\n setPlans: (plans) => set({ plans }),\n setLoading: (loading) => set({ loading }),\n setCheckout: (checkout) => set({ checkout }),\n reset: () => set(initialState),\n}))\n","import type { Plan } from '@fayz-ai/core'\n\nexport interface PlanBadgeInfo {\n /** Display label, e.g. 'Free' or 'Pro'. */\n label: string\n /** Resolved plan id (falls back to the raw org.plan string). */\n planId: string\n /** Paid plan (price > 0) — drives the Crown icon + gold styling in the menus. */\n paid: boolean\n}\n\nfunction capitalize(s: string): string {\n return s ? s.charAt(0).toUpperCase() + s.slice(1) : s\n}\n\n/**\n * Resolve an org's `plan` string against the configured billing plans into the\n * badge shown next to the user in both menus. Falls back to a capitalized\n * version of the raw string when the id isn't in config (defensive — e.g. a\n * legacy 'free' tenant before billing was wired).\n */\nexport function resolvePlanBadge(\n planId: string | undefined | null,\n plans: Plan[],\n): PlanBadgeInfo {\n const id = planId || 'free'\n const match = plans.find((p) => p.id === id)\n if (match) {\n return { label: match.name, planId: match.id, paid: match.price > 0 }\n }\n return { label: capitalize(id), planId: id, paid: false }\n}\n","import * as React from 'react'\nimport type { Organization, Plan } from '@fayz-ai/core'\nimport { useOrganizationStore } from '../org/store'\nimport { useBillingStore } from './store'\n\n/**\n * The free trial, as one derived fact.\n *\n * A trial is not a fourth plan or a state machine — it is a WINDOW during which\n * a tenant on the free plan is entitled to a paid one. Modelling it that way is\n * what keeps it out of every gate in the product: the access provider resolves\n * the effective plan once, and the nav crowns, the entitlement gates, the limit\n * caps and the assistant's lock all follow without knowing a trial exists.\n *\n * `trialEndsAt` is written by the database when the tenant is created (see\n * migration 147) and is never written by the client — a trial the browser could\n * extend is not a trial. A tenant with no `trialEndsAt` predates the column and\n * is left alone: status `none`, plan exactly as stored.\n */\n\nexport type TrialStatus = 'none' | 'active' | 'expired'\n\nexport interface TrialState {\n status: TrialStatus\n /** ISO date the window closes. */\n endsAt?: string\n /** Whole days remaining, floored at 0. `0` on the last day, not a negative. */\n daysLeft: number\n /** The last 48 hours, when the banner stops being informational. */\n endingSoon: boolean\n}\n\nexport const NO_TRIAL: TrialState = { status: 'none', daysLeft: 0, endingSoon: false }\n\nconst DAY_MS = 86_400_000\n\n/** Pure — the part worth testing, and it needs neither React nor a clock. */\nexport function resolveTrial(\n org: Pick<Organization, 'plan' | 'trialEndsAt'> | null | undefined,\n paidPlanIds: ReadonlySet<string>,\n now: number = Date.now(),\n): TrialState {\n if (!org?.trialEndsAt) return NO_TRIAL\n // Somebody who is paying is not on a trial, whatever the column still says.\n if (org.plan && paidPlanIds.has(org.plan)) return NO_TRIAL\n\n const ends = Date.parse(org.trialEndsAt)\n if (Number.isNaN(ends)) return NO_TRIAL\n\n const remaining = ends - now\n if (remaining <= 0) return { status: 'expired', endsAt: org.trialEndsAt, daysLeft: 0, endingSoon: false }\n\n const daysLeft = Math.ceil(remaining / DAY_MS)\n return {\n status: 'active',\n endsAt: org.trialEndsAt,\n daysLeft,\n endingSoon: remaining <= 2 * DAY_MS,\n }\n}\n\n/**\n * The plan whose entitlements apply RIGHT NOW.\n *\n * During the trial that is the trial plan — by default the most expensive one\n * configured, because the point of a trial is to be worth losing. After it, the\n * tenant's own plan, which for a free tenant is the free one: that fall is the\n * paywall, and it needs no separate enforcement path.\n *\n * ── Por que um plano desconhecido cai no piso, e não em `null` ──────────────\n * A frase acima (\"essa queda é o paywall\") só era verdade quando o id gravado\n * em `tenants.plan` existia no catálogo do app. Quando não existia — o\n * ChefControl vendia `starter/professional/enterprise` enquanto o pool grava\n * `free/pro/business` — isto devolvia `null`, e `null` não é \"sem plano\": é SEM\n * TETO. `resolveLimit` lê teto ausente como ilimitado e `isEntitledByPlan` só\n * nega com um `false` explícito. O resultado é que vencer o trial LIBERAVA em\n * vez de travar, que é o oposto do paywall.\n *\n * Então um id que o catálogo não conhece cai no plano mais barato — o piso é a\n * resposta segura para \"não sei em que plano esta conta está\". `null` fica\n * reservado para o único caso em que ilimitado é a leitura certa: o app que não\n * vende plano nenhum e portanto não tem o que travar.\n */\nexport function effectivePlan(\n org: Pick<Organization, 'plan'> | null | undefined,\n plans: Plan[],\n trial: TrialState,\n trialPlanId?: string,\n): Plan | null {\n if (trial.status === 'active') {\n const named = trialPlanId ? plans.find((p) => p.id === trialPlanId) : undefined\n if (named) return named\n const paid = plans.filter((p) => p.price > 0)\n if (paid.length) return paid.reduce((best, p) => (p.price > best.price ? p : best))\n }\n if (plans.length === 0) return null\n\n const named = org?.plan ? plans.find((p) => p.id === org.plan) : undefined\n if (named) return named\n\n const floor = plans.reduce((cheapest, p) => (p.price < cheapest.price ? p : cheapest))\n if (org?.plan) {\n // Avisa alto: é um defeito de dados (catálogo e pool discordando), e quem\n // vê primeiro é quem estiver com o console aberto.\n console.warn(\n `[billing] tenant plan \"${org.plan}\" não existe neste catálogo (${plans.map((p) => p.id).join(', ')}) — aplicando o piso \"${floor.id}\"`,\n )\n }\n return floor\n}\n\n/** Ids of the plans somebody actually pays for. */\nexport function paidPlanIds(plans: Plan[]): Set<string> {\n return new Set(plans.filter((p) => p.price > 0).map((p) => p.id))\n}\n\n/**\n * Live trial state for the current workspace.\n *\n * Ticks once an hour rather than on a timer per second: nothing on screen\n * counts down in real time, and a banner that says \"2 days left\" only has to be\n * right the next time somebody looks at it.\n */\nexport function useTrial(): TrialState {\n const org = useOrganizationStore((s) => s.currentOrg)\n const plans = useBillingStore((s) => s.plans)\n const [now, setNow] = React.useState(() => Date.now())\n\n React.useEffect(() => {\n const id = window.setInterval(() => setNow(Date.now()), 3_600_000)\n return () => window.clearInterval(id)\n }, [])\n\n return React.useMemo(\n () => resolveTrial(org, paidPlanIds(plans), now),\n [org?.plan, org?.trialEndsAt, plans, now],\n )\n}\n","import * as React from 'react'\nimport { Clock, Crown } from 'lucide-react'\nimport { tl } from '@fayz-ai/core'\nimport { cn } from '../lib/cn'\nimport { navigateTo } from '../app/routing'\nimport { useLayoutStore } from '@fayz-ai/ui'\nimport { useTrial } from './trial'\n\nexport interface TrialWidgetProps {\n /** Length of the window, for the progress bar. Matches the DB column default (migration 044). */\n totalDays?: number\n /** Where \"see the plans\" goes. */\n route?: string\n className?: string\n}\n\n/**\n * The trial, in the rail.\n *\n * A countdown is a promise about the future, so it belongs where somebody looks\n * at their own progress — one line under the getting-started checklist, in the\n * menu's own colours, not a banner across the app. Two states only:\n *\n * • RUNNING — informational, and quiet until the last two days.\n * • ENDED — the paywall's face. It stops being a note and becomes a button,\n * because at that point every gated feature in the product is already\n * answering \"not on your plan\" and this is the one place that says why.\n *\n * There is no third state: a paying tenant, or one that predates trials, gets\n * nothing at all.\n */\nexport function TrialWidget({ totalDays = 30, route = '/settings/subscription', className }: TrialWidgetProps) {\n const trial = useTrial()\n const collapsed = useLayoutStore((s) => s.sidebarCollapsed)\n\n if (trial.status === 'none') return null\n\n const expired = trial.status === 'expired'\n const pct = Math.max(0, Math.min(100, (trial.daysLeft / totalDays) * 100))\n\n const label = expired\n ? tl('Trial ended', 'Seu teste terminou')\n : trial.daysLeft <= 1\n ? tl('Last day of your trial', 'Último dia do teste')\n : tl(`${trial.daysLeft} days of trial left`, `${trial.daysLeft} dias de teste`)\n\n if (collapsed) {\n return (\n <button\n type=\"button\"\n onClick={() => navigateTo(route)}\n title={label}\n aria-label={label}\n data-tour=\"billing.trial\"\n className={cn(\n 'flex w-full items-center justify-center rounded-button p-1.5 transition-colors',\n expired\n ? 'bg-primary/15 text-primary hover:bg-primary/25'\n : 'text-sidebar-foreground/70 hover:bg-sidebar-accent/60',\n className,\n )}\n >\n {expired ? <Crown className=\"h-4 w-4\" /> : <Clock className=\"h-4 w-4\" />}\n </button>\n )\n }\n\n return (\n <button\n type=\"button\"\n onClick={() => navigateTo(route)}\n data-tour=\"billing.trial\"\n className={cn(\n 'w-full rounded-button px-1.5 py-1.5 text-left transition-colors',\n expired ? 'bg-primary/15 hover:bg-primary/25' : 'hover:bg-sidebar-accent/50',\n className,\n )}\n >\n <span className=\"flex items-center gap-2\">\n {expired\n ? <Crown className=\"h-3.5 w-3.5 shrink-0 text-primary\" />\n : <Clock className={cn('h-3.5 w-3.5 shrink-0', trial.endingSoon ? 'text-warning' : 'text-sidebar-muted')} />}\n <span\n className={cn(\n 'min-w-0 flex-1 truncate text-[12px] font-medium',\n expired ? 'text-sidebar-foreground' : 'text-sidebar-foreground/90',\n )}\n >\n {label}\n </span>\n </span>\n {expired ? (\n <span className=\"mt-1 block pl-[22px] text-[11px] leading-snug text-sidebar-muted\">\n {tl('Choose a plan to keep the assistant', 'Escolha um plano para manter o assistente')}\n </span>\n ) : (\n <span className=\"mt-1.5 block h-1 overflow-hidden rounded-full bg-sidebar-accent\">\n <span\n className={cn(\n 'block h-full rounded-full transition-all',\n trial.endingSoon ? 'bg-warning' : 'bg-sidebar-foreground/70',\n )}\n style={{ width: `${pct}%` }}\n />\n </span>\n )}\n </button>\n )\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../../src/components/layout/CommandPalette.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAe9B,OAAO,EAEL,KAAK,kBAAkB,EAAE,KAAK,SAAS,EACxC,MAAM,eAAe,CAAA;AAItB,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;+EAC+E;AAC/E,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,EAChD,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,KACvB,OAAO,CAAC,kBAAkB,CAAC,CAAA;AAEhC,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;IACxB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAA;IACzC;;oCAEgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAoID,wBAAgB,cAAc,CAAC,EAAE,QAAa,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,YAAiB,EAAE,EAAE,mBAAmB,qBA8K3I"}
1
+ {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../../src/components/layout/CommandPalette.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAe9B,OAAO,EAEL,KAAK,kBAAkB,EAAE,KAAK,SAAS,EACxC,MAAM,eAAe,CAAA;AAKtB,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;+EAC+E;AAC/E,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,EAChD,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,KACvB,OAAO,CAAC,kBAAkB,CAAC,CAAA;AAEhC,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;IACxB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAA;IACzC;;oCAEgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAoID,wBAAgB,cAAc,CAAC,EAAE,QAAa,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,YAAiB,EAAE,EAAE,mBAAmB,qBA8M3I"}
@@ -43,6 +43,16 @@ interface ArchetypeLookupConfig {
43
43
  kindLabels?: Record<string, string>;
44
44
  limit?: number;
45
45
  subtitleFields?: string[];
46
+ /** De onde ler, quando a tabela do arquétipo não tem o que a tela precisa.
47
+ *
48
+ * `people` não guarda a empresa — ela mora na ligação com `plg_crm_companies`
49
+ * ou no `metadata`. Uma tela que precisa procurar POR empresa tem de ler de
50
+ * uma view que já a carrega (`v_leads`), e é só isso que esta opção faz:
51
+ * trocar a origem, mantendo os mesmos campos de rótulo e subtítulo. */
52
+ table?: string;
53
+ /** Em que colunas a busca procura. O padrão é só o rótulo — procurar em mais
54
+ * colunas por padrão mudaria o resultado de toda tela que já usa isto. */
55
+ searchFields?: string[];
46
56
  /** The quick-create form. Defaults to the archetype's (above); `null` falls
47
57
  * back to name-only, with no dialog at all. */
48
58
  entityDef?: EntityDef | null;
@@ -1 +1 @@
1
- {"version":3,"file":"archetype-lookup.d.ts","sourceRoot":"","sources":["../../src/crud/archetype-lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAQ9C,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AAE1D;oFACoF;AACpF,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE1E,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAA;IACvD,IAAI,CAAC,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;IACtC;;;;;OAKG;IACH,MAAM,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC9D;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;AAYzE,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;AAI9D,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAEnF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAEvE;AAuED,UAAU,qBAAqB;IAC7B,SAAS,EAAE,aAAa,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB;oDACgD;IAChD,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAC7B;AAgCD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,YAAY,CAuIjF"}
1
+ {"version":3,"file":"archetype-lookup.d.ts","sourceRoot":"","sources":["../../src/crud/archetype-lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAQ9C,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AAE1D;oFACoF;AACpF,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE1E,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAA;IACvD,IAAI,CAAC,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;IACtC;;;;;OAKG;IACH,MAAM,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC9D;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;AAYzE,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;AAI9D,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAEnF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAEvE;AAuED,UAAU,qBAAqB;IAC7B,SAAS,EAAE,aAAa,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;4EAKwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;+EAC2E;IAC3E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;oDACgD;IAChD,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAC7B;AAgCD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,YAAY,CAoJjF"}
@@ -0,0 +1,4 @@
1
+ export { entityRouteHasDetail, openEntity, resolveEntityAnchor, resolveEntityHref, resolveEntityRoute, setEntityRouteMap } from './chunk-P5UIGQFY.js';
2
+ import './chunk-VX3WJLKK.js';
3
+ //# sourceMappingURL=entity-routes-LXOBW5IB.js.map
4
+ //# sourceMappingURL=entity-routes-LXOBW5IB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"entity-routes-LXOBW5IB.js"}
@@ -0,0 +1,16 @@
1
+ import { type RecentRecord } from '../lib/recent-records';
2
+ /** A lista de visitados, que se atualiza sozinha quando outra tela grava. */
3
+ export declare function useRecentRecords(): RecentRecord[];
4
+ /**
5
+ * Registra a visita quando a tela de detalhe terminou de carregar.
6
+ *
7
+ * Recebe `null` enquanto o registro não chegou — e é justamente esse o
8
+ * contrato: gravar antes do nome existir poria um UUID na lista, e gravar uma
9
+ * tela que falhou em carregar poria na lista de "recentes" um lugar onde a
10
+ * pessoa não conseguiu entrar.
11
+ */
12
+ export declare function useRecordVisit(entrada: Omit<RecentRecord, 'uid' | 'at'> | null): void;
13
+ /** Reabrir um item da lista. */
14
+ export declare function useOpenRecent(): (r: RecentRecord) => void;
15
+ export type { RecentRecord };
16
+ //# sourceMappingURL=useRecentRecords.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRecentRecords.d.ts","sourceRoot":"","sources":["../../src/hooks/useRecentRecords.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAA;AAE9B,6EAA6E;AAC7E,wBAAgB,gBAAgB,IAAI,YAAY,EAAE,CASjD;AAID;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAWrF;AAED,gCAAgC;AAChC,wBAAgB,aAAa,IAAI,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,CAOzD;AAED,YAAY,EAAE,YAAY,EAAE,CAAA"}
package/dist/index.d.ts CHANGED
@@ -121,6 +121,9 @@ export type { RecordPickerModalProps, RecordPickerRow } from './components/share
121
121
  export { ContactPicker } from './components/shared/ContactPicker';
122
122
  export type { ContactPickerProps, ContactPickerValue } from './components/shared/ContactPicker';
123
123
  export { resolveEntityHref, resolveEntityAnchor, openEntity, resolveEntityRoute } from './lib/entity-routes';
124
+ export { useRecentRecords, useRecordVisit, useOpenRecent } from './hooks/useRecentRecords';
125
+ export { rememberVisit, listRecentRecords, clearRecentRecords, subscribeRecentRecords } from './lib/recent-records';
126
+ export type { RecentRecord } from './lib/recent-records';
124
127
  export { usePluginPrefs } from './hooks/usePluginPrefs';
125
128
  export { useAppConfig } from './hooks/useAppConfig';
126
129
  export type { UseAppConfigResult } from './hooks/useAppConfig';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}