@fayz-ai/saas 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access/context.d.ts +47 -0
- package/dist/access/context.d.ts.map +1 -0
- package/dist/access/headless.d.ts +21 -0
- package/dist/access/headless.d.ts.map +1 -0
- package/dist/access/index.d.ts +12 -0
- package/dist/access/index.d.ts.map +1 -0
- package/dist/access/limits-registry.d.ts +33 -0
- package/dist/access/limits-registry.d.ts.map +1 -0
- package/dist/access/module-nav.d.ts +15 -0
- package/dist/access/module-nav.d.ts.map +1 -0
- package/dist/access/resolver.d.ts +2 -0
- package/dist/access/resolver.d.ts.map +1 -0
- package/dist/access/types.d.ts +43 -0
- package/dist/access/types.d.ts.map +1 -0
- package/dist/access/upgrade-modal-store.d.ts +23 -0
- package/dist/access/upgrade-modal-store.d.ts.map +1 -0
- package/dist/app/AdminShell.d.ts +3 -0
- package/dist/app/AdminShell.d.ts.map +1 -1
- package/dist/app/admin-app.d.ts +3 -1
- package/dist/app/admin-app.d.ts.map +1 -1
- package/dist/app/config.d.ts +47 -2
- package/dist/app/config.d.ts.map +1 -1
- package/dist/app/core-entities.d.ts +25 -0
- package/dist/app/core-entities.d.ts.map +1 -0
- package/dist/app/derive-contract.d.ts +8 -0
- package/dist/app/derive-contract.d.ts.map +1 -0
- package/dist/app/scaffold.d.ts.map +1 -1
- package/dist/archetype-lookup.d.ts.map +1 -1
- package/dist/billing/index.cjs +6 -2
- package/dist/billing/index.d.ts +2 -0
- package/dist/billing/index.d.ts.map +1 -1
- package/dist/billing/index.js +1 -1
- package/dist/billing/plan-badge.d.ts +17 -0
- package/dist/billing/plan-badge.d.ts.map +1 -0
- package/dist/billing/store.d.ts +6 -1
- package/dist/billing/store.d.ts.map +1 -1
- package/dist/{chunk-3M25GRRU.js → chunk-I3DY47N5.js} +3 -4
- package/dist/chunk-I3DY47N5.js.map +1 -0
- package/dist/chunk-NNFGMUF2.cjs +39 -0
- package/dist/chunk-NNFGMUF2.cjs.map +1 -0
- package/dist/{chunk-4XTQ4V5L.cjs → chunk-SAZLW54Y.cjs} +16 -12
- package/dist/chunk-SAZLW54Y.cjs.map +1 -0
- package/dist/{chunk-IPWCHJPE.cjs → chunk-VKYZACG5.cjs} +5 -6
- package/dist/chunk-VKYZACG5.cjs.map +1 -0
- package/dist/chunk-VN5NTK26.js +36 -0
- package/dist/chunk-VN5NTK26.js.map +1 -0
- package/dist/{chunk-XNWCGJYH.js → chunk-VTEP2AQX.js} +15 -11
- package/dist/chunk-VTEP2AQX.js.map +1 -0
- package/dist/components/shared/ContactPicker.d.ts +92 -0
- package/dist/components/shared/ContactPicker.d.ts.map +1 -0
- package/dist/components/shared/PersonLink.d.ts +12 -1
- package/dist/components/shared/PersonLink.d.ts.map +1 -1
- package/dist/components/shared/create-person.d.ts +20 -0
- package/dist/components/shared/create-person.d.ts.map +1 -0
- package/dist/crud/CrudDetailPage.d.ts.map +1 -1
- package/dist/crud/CrudFormPage.d.ts.map +1 -1
- package/dist/crud/CrudListView.d.ts.map +1 -1
- package/dist/crud/CrudPage.d.ts.map +1 -1
- package/dist/crud/archetypes/AddressesTab.d.ts +21 -0
- package/dist/crud/archetypes/AddressesTab.d.ts.map +1 -0
- package/dist/crud/archetypes/PersonDetailTabs.d.ts +2 -1
- package/dist/crud/archetypes/PersonDetailTabs.d.ts.map +1 -1
- package/dist/crud/createCrudPage.d.ts.map +1 -1
- package/dist/crud/index.d.ts +1 -0
- package/dist/crud/index.d.ts.map +1 -1
- package/dist/index.cjs +4300 -722
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +17 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4080 -542
- package/dist/index.js.map +1 -1
- package/dist/org/index.cjs +11 -11
- package/dist/org/index.js +2 -2
- package/dist/org/store.d.ts.map +1 -1
- package/dist/permissions/context.d.ts +2 -0
- package/dist/permissions/context.d.ts.map +1 -1
- package/dist/permissions/index.cjs +7 -7
- package/dist/permissions/index.js +1 -1
- package/dist/shell/components/auth/ProtectedRoute.d.ts.map +1 -1
- package/dist/shell/components/billing/SoftLimitBanner.d.ts +5 -0
- package/dist/shell/components/billing/SoftLimitBanner.d.ts.map +1 -0
- package/dist/shell/components/billing/SubscriptionPage.d.ts +5 -0
- package/dist/shell/components/billing/SubscriptionPage.d.ts.map +1 -0
- package/dist/shell/components/billing/UpgradeModal.d.ts +3 -0
- package/dist/shell/components/billing/UpgradeModal.d.ts.map +1 -0
- package/dist/shell/components/billing/UpgradePrompt.d.ts +10 -0
- package/dist/shell/components/billing/UpgradePrompt.d.ts.map +1 -0
- package/dist/shell/components/billing/access-contract.d.ts +18 -0
- package/dist/shell/components/billing/access-contract.d.ts.map +1 -0
- package/dist/shell/components/billing/gates.d.ts +14 -0
- package/dist/shell/components/billing/gates.d.ts.map +1 -0
- package/dist/shell/components/billing/index.d.ts +9 -2
- package/dist/shell/components/billing/index.d.ts.map +1 -1
- package/dist/shell/components/chat/ChatFab.d.ts +3 -1
- package/dist/shell/components/chat/ChatFab.d.ts.map +1 -1
- package/dist/shell/components/chat/ChatPanel.d.ts +3 -1
- package/dist/shell/components/chat/ChatPanel.d.ts.map +1 -1
- package/dist/shell/components/chat/ConfirmActionCard.d.ts +13 -0
- package/dist/shell/components/chat/ConfirmActionCard.d.ts.map +1 -0
- package/dist/shell/components/chat/markdown.d.ts +5 -0
- package/dist/shell/components/chat/markdown.d.ts.map +1 -0
- package/dist/shell/components/organization/TeamTab.d.ts.map +1 -1
- package/dist/shell/components/organization/TenantOnboarding.d.ts.map +1 -1
- package/dist/shell/components/organization/index.d.ts +0 -1
- package/dist/shell/components/organization/index.d.ts.map +1 -1
- package/dist/shell/components/settings/ConnectedCompanySettings.d.ts.map +1 -1
- package/dist/shell/components/settings/ConnectedFieldRulesSettings.d.ts.map +1 -1
- package/dist/shell/components/settings/ConnectedSecuritySettings.d.ts.map +1 -1
- package/dist/shell/components/settings/LocationsCrudPage.d.ts +1 -1
- package/dist/shell/components/settings/LocationsCrudPage.d.ts.map +1 -1
- package/dist/shell/components/settings/SettingsPage.d.ts +23 -2
- package/dist/shell/components/settings/SettingsPage.d.ts.map +1 -1
- package/dist/shell/hooks/index.d.ts +3 -2
- package/dist/shell/hooks/index.d.ts.map +1 -1
- package/dist/shell/hooks/useAITools.d.ts +2 -0
- package/dist/shell/hooks/useAITools.d.ts.map +1 -1
- package/dist/shell/hooks/useChat.d.ts +22 -0
- package/dist/shell/hooks/useChat.d.ts.map +1 -1
- package/dist/shell/hooks/useSystemPermission.d.ts +3 -0
- package/dist/shell/hooks/useSystemPermission.d.ts.map +1 -0
- package/dist/shell/hooks/useTenantPluginSettings.d.ts +12 -0
- package/dist/shell/hooks/useTenantPluginSettings.d.ts.map +1 -0
- package/dist/shell/lib/ai-tool-handlers.d.ts +119 -0
- package/dist/shell/lib/ai-tool-handlers.d.ts.map +1 -0
- package/dist/shell/lib/core-ai-tools.d.ts +14 -0
- package/dist/shell/lib/core-ai-tools.d.ts.map +1 -1
- package/dist/shell/lib/create-client-orders-provider.d.ts.map +1 -1
- package/dist/shell/lib/fayz-agent.d.ts +23 -0
- package/dist/shell/lib/fayz-agent.d.ts.map +1 -0
- package/dist/shell/lib/i18n.d.ts.map +1 -1
- package/dist/shell/stores/chat.store.d.ts +69 -0
- package/dist/shell/stores/chat.store.d.ts.map +1 -1
- package/dist/shell/types/billing.d.ts +7 -0
- package/dist/shell/types/billing.d.ts.map +1 -1
- package/dist/shell/types/crud.d.ts +1 -1
- package/dist/shell/types/crud.d.ts.map +1 -1
- package/dist/shell/types/plugins.d.ts +2 -45
- package/dist/shell/types/plugins.d.ts.map +1 -1
- package/dist/stores/createCrudStore.d.ts.map +1 -1
- package/package.json +15 -12
- package/src/access/context.tsx +228 -0
- package/src/access/headless.ts +71 -0
- package/src/access/index.ts +27 -0
- package/src/access/limits-registry.ts +86 -0
- package/src/access/module-nav.test.ts +78 -0
- package/src/access/module-nav.ts +82 -0
- package/src/access/resolver.test.ts +143 -0
- package/src/access/resolver.ts +5 -0
- package/src/access/types.ts +47 -0
- package/src/access/upgrade-modal-store.ts +30 -0
- package/src/app/AdminShell.tsx +451 -68
- package/src/app/admin-app.tsx +46 -9
- package/src/app/config.ts +54 -1
- package/src/app/core-entities.ts +110 -0
- package/src/app/derive-contract.test.ts +155 -0
- package/src/app/derive-contract.ts +214 -0
- package/src/app/scaffold.tsx +4 -0
- package/src/archetype-lookup.ts +8 -2
- package/src/billing/index.ts +2 -0
- package/src/billing/plan-badge.ts +32 -0
- package/src/billing/store.ts +8 -1
- package/src/components/shared/ContactPicker.tsx +394 -0
- package/src/components/shared/PersonLink.tsx +11 -3
- package/src/components/shared/create-person.ts +74 -0
- package/src/crud/CrudDetailPage.tsx +8 -1
- package/src/crud/CrudFormPage.tsx +124 -6
- package/src/crud/CrudListView.tsx +16 -1
- package/src/crud/CrudPage.tsx +27 -5
- package/src/crud/DeleteConfirmDialog.tsx +1 -1
- package/src/crud/archetypes/AddressesTab.tsx +387 -0
- package/src/crud/archetypes/PersonDetailTabs.tsx +5 -0
- package/src/crud/createCrudPage.tsx +2 -0
- package/src/crud/index.ts +6 -0
- package/src/env.d.ts +7 -0
- package/src/index.ts +49 -1
- package/src/org/store.ts +9 -1
- package/src/permissions/context.tsx +29 -15
- package/src/shell/components/auth/ProtectedRoute.tsx +12 -2
- package/src/shell/components/billing/SoftLimitBanner.tsx +81 -0
- package/src/shell/components/billing/SubscriptionPage.tsx +372 -0
- package/src/shell/components/billing/UpgradeModal.tsx +102 -0
- package/src/shell/components/billing/UpgradePrompt.tsx +229 -0
- package/src/shell/components/billing/access-contract.ts +64 -0
- package/src/shell/components/billing/gates.tsx +62 -0
- package/src/shell/components/billing/index.ts +18 -2
- package/src/shell/components/chat/ChatFab.tsx +4 -2
- package/src/shell/components/chat/ChatPanel.tsx +174 -23
- package/src/shell/components/chat/ConfirmActionCard.tsx +57 -0
- package/src/shell/components/chat/markdown.tsx +102 -0
- package/src/shell/components/organization/TeamTab.tsx +21 -4
- package/src/shell/components/organization/TenantOnboarding.tsx +3 -1
- package/src/shell/components/organization/index.ts +0 -1
- package/src/shell/components/settings/ConnectedCompanySettings.tsx +4 -1
- package/src/shell/components/settings/ConnectedFieldRulesSettings.tsx +3 -1
- package/src/shell/components/settings/ConnectedSecuritySettings.tsx +3 -1
- package/src/shell/components/settings/LocationsCrudPage.ts +6 -1
- package/src/shell/components/settings/SettingsPage.tsx +63 -21
- package/src/shell/hooks/index.ts +3 -2
- package/src/shell/hooks/useAITools.ts +27 -23
- package/src/shell/hooks/useChat.ts +381 -16
- package/src/shell/hooks/useSystemPermission.ts +23 -0
- package/src/shell/hooks/useTenantPluginSettings.ts +127 -0
- package/src/shell/lib/ai-tool-handlers.ts +910 -0
- package/src/shell/lib/core-ai-tools.ts +234 -2
- package/src/shell/lib/create-client-orders-provider.ts +24 -2
- package/src/shell/lib/fayz-agent.ts +56 -0
- package/src/shell/lib/i18n.ts +71 -0
- package/src/shell/stores/chat.store.ts +118 -1
- package/src/shell/styles.css +30 -0
- package/src/shell/types/billing.ts +8 -0
- package/src/shell/types/crud.ts +1 -1
- package/src/shell/types/plugins.ts +13 -50
- package/src/stores/createCrudStore.ts +9 -0
- package/dist/chunk-3M25GRRU.js.map +0 -1
- package/dist/chunk-4XTQ4V5L.cjs.map +0 -1
- package/dist/chunk-5GYQK5IW.js +0 -21
- package/dist/chunk-5GYQK5IW.js.map +0 -1
- package/dist/chunk-IPWCHJPE.cjs.map +0 -1
- package/dist/chunk-KYID2MR6.cjs +0 -23
- package/dist/chunk-KYID2MR6.cjs.map +0 -1
- package/dist/chunk-XNWCGJYH.js.map +0 -1
- package/dist/shell/components/billing/BillingPage.d.ts +0 -7
- package/dist/shell/components/billing/BillingPage.d.ts.map +0 -1
- package/dist/shell/components/billing/PaywallGate.d.ts +0 -11
- package/dist/shell/components/billing/PaywallGate.d.ts.map +0 -1
- package/dist/shell/components/organization/PermissionGate.d.ts +0 -11
- package/dist/shell/components/organization/PermissionGate.d.ts.map +0 -1
- package/dist/shell/hooks/useBilling.d.ts +0 -14
- package/dist/shell/hooks/useBilling.d.ts.map +0 -1
- package/dist/shell/hooks/usePermission.d.ts +0 -16
- package/dist/shell/hooks/usePermission.d.ts.map +0 -1
- package/src/shell/components/billing/BillingPage.tsx +0 -56
- package/src/shell/components/billing/PaywallGate.tsx +0 -80
- package/src/shell/components/organization/PermissionGate.tsx +0 -16
- package/src/shell/hooks/useBilling.ts +0 -151
- package/src/shell/hooks/usePermission.ts +0 -101
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/billing/store.ts","../src/billing/plan-badge.ts"],"names":[],"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","file":"chunk-VN5NTK26.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"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { create } from 'zustand';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import { usePluginRuntimeOptional } from '@fayz-ai/core';
|
|
4
|
+
import { profileHasPermission } from '@fayz-ai/core/access';
|
|
3
5
|
import { jsx } from 'react/jsx-runtime';
|
|
4
6
|
|
|
5
7
|
// src/permissions/store.ts
|
|
@@ -40,21 +42,23 @@ var usePermissionsStore = create((set, get) => ({
|
|
|
40
42
|
isImpersonating: false
|
|
41
43
|
})
|
|
42
44
|
}));
|
|
43
|
-
function
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return actions.includes(action) || actions.includes("manage");
|
|
45
|
+
function mergeFeatures(pluginFeatures, appFeatures) {
|
|
46
|
+
const byId = /* @__PURE__ */ new Map();
|
|
47
|
+
for (const f of pluginFeatures ?? []) byId.set(f.id, f);
|
|
48
|
+
for (const f of appFeatures ?? []) byId.set(f.id, f);
|
|
49
|
+
return Array.from(byId.values());
|
|
49
50
|
}
|
|
50
51
|
var PermissionsContext = React.createContext(null);
|
|
51
52
|
function PermissionsProvider({ config, children }) {
|
|
52
53
|
const { setFeatures, startImpersonation, stopImpersonation, currentProfile, isImpersonating } = usePermissionsStore();
|
|
54
|
+
const runtime = usePluginRuntimeOptional();
|
|
55
|
+
const pluginFeatures = runtime?.pluginFeatures;
|
|
53
56
|
React.useEffect(() => {
|
|
54
|
-
|
|
55
|
-
|
|
57
|
+
const merged = mergeFeatures(pluginFeatures, config?.features);
|
|
58
|
+
if (merged.length > 0) {
|
|
59
|
+
setFeatures(merged);
|
|
56
60
|
}
|
|
57
|
-
}, [config, setFeatures]);
|
|
61
|
+
}, [config, pluginFeatures, setFeatures]);
|
|
58
62
|
function hasPermission(feature, action) {
|
|
59
63
|
return profileHasPermission(currentProfile, feature, action);
|
|
60
64
|
}
|
|
@@ -93,5 +97,5 @@ function usePermissions() {
|
|
|
93
97
|
}
|
|
94
98
|
|
|
95
99
|
export { PermissionsProvider, useHasPermission, usePermission, usePermissionOptional, usePermissions, usePermissionsStore };
|
|
96
|
-
//# sourceMappingURL=chunk-
|
|
97
|
-
//# sourceMappingURL=chunk-
|
|
100
|
+
//# sourceMappingURL=chunk-VTEP2AQX.js.map
|
|
101
|
+
//# sourceMappingURL=chunk-VTEP2AQX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/permissions/store.ts","../src/permissions/context.tsx"],"names":[],"mappings":";;;;;;;AA2BO,IAAM,mBAAA,GAAsB,MAAA,CAAyB,CAAC,GAAA,EAAK,GAAA,MAAS;AAAA,EACzE,UAAU,EAAC;AAAA,EACX,UAAU,EAAC;AAAA,EACX,cAAA,EAAgB,IAAA;AAAA,EAChB,WAAA,EAAa,IAAA;AAAA,EACb,mBAAA,EAAqB,IAAA;AAAA,EACrB,eAAA,EAAiB,KAAA;AAAA,EAEjB,aAAa,CAAC,QAAA,KAAa,GAAA,CAAI,EAAE,UAAU,CAAA;AAAA,EAC3C,aAAa,CAAC,QAAA,KAAa,GAAA,CAAI,EAAE,UAAU,CAAA;AAAA,EAC3C,iBAAA,EAAmB,CAAC,OAAA,KAClB,GAAA,CAAI;AAAA,IACF,cAAA,EAAgB,OAAA;AAAA,IAChB,WAAA,EAAa,OAAA;AAAA,IACb,mBAAA,EAAqB,IAAA;AAAA,IACrB,eAAA,EAAiB;AAAA,GAClB,CAAA;AAAA,EACH,kBAAA,EAAoB,CAAC,OAAA,KACnB,GAAA,CAAI;AAAA,IACF,cAAA,EAAgB,OAAA;AAAA,IAChB,mBAAA,EAAqB,OAAA;AAAA,IACrB,eAAA,EAAiB;AAAA,GAClB,CAAA;AAAA,EACH,mBAAmB,MAAM;AACvB,IAAA,MAAM,EAAE,WAAA,EAAY,GAAI,GAAA,EAAI;AAC5B,IAAA,GAAA,CAAI;AAAA,MACF,cAAA,EAAgB,WAAA;AAAA,MAChB,mBAAA,EAAqB,IAAA;AAAA,MACrB,eAAA,EAAiB;AAAA,KAClB,CAAA;AAAA,EACH,CAAA;AAAA,EACA,KAAA,EAAO,MACL,GAAA,CAAI;AAAA,IACF,UAAU,EAAC;AAAA,IACX,UAAU,EAAC;AAAA,IACX,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa,IAAA;AAAA,IACb,mBAAA,EAAqB,IAAA;AAAA,IACrB,eAAA,EAAiB;AAAA,GAClB;AACL,CAAA,CAAE;ACjDF,SAAS,aAAA,CACP,gBACA,WAAA,EACsB;AACtB,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAgC;AACjD,EAAA,KAAA,MAAW,CAAA,IAAK,kBAAkB,EAAC,OAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AACtD,EAAA,KAAA,MAAW,CAAA,IAAK,eAAe,EAAC,OAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AACnD,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,CAAA;AACjC;AAaA,IAAM,kBAAA,GAA2B,oBAA8C,IAAI,CAAA;AAW5E,SAAS,mBAAA,CAAoB,EAAE,MAAA,EAAQ,QAAA,EAAS,EAA6B;AAClF,EAAA,MAAM,EAAE,WAAA,EAAa,kBAAA,EAAoB,mBAAmB,cAAA,EAAgB,eAAA,KAC1E,mBAAA,EAAoB;AAOtB,EAAA,MAAM,UAAU,wBAAA,EAAyB;AACzC,EAAA,MAAM,iBAAiB,OAAA,EAAS,cAAA;AAEhC,EAAM,gBAAU,MAAM;AACpB,IAAA,MAAM,MAAA,GAAS,aAAA,CAAc,cAAA,EAAgB,MAAA,EAAQ,QAAQ,CAAA;AAC7D,IAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,cAAA,EAAgB,WAAW,CAAC,CAAA;AAExC,EAAA,SAAS,aAAA,CAAc,SAAiB,MAAA,EAA0B;AAChE,IAAA,OAAO,oBAAA,CAAqB,cAAA,EAAgB,OAAA,EAAS,MAAM,CAAA;AAAA,EAC7D;AAEA,EAAA,MAAM,KAAA,GAAiC;AAAA,IACrC,aAAA;AAAA,IACA,gBAAgB,CAAC,eAAA;AAAA,IACjB,kBAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,uBACE,GAAA,CAAC,kBAAA,CAAmB,QAAA,EAAnB,EAA4B,OAC1B,QAAA,EACH,CAAA;AAEJ;AAUO,SAAS,aAAA,GAA+D;AAC7E,EAAA,MAAM,GAAA,GAAY,iBAAW,kBAAkB,CAAA;AAC/C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,yDAAyD,CAAA;AAAA,EAC3E;AACA,EAAA,OAAO,GAAA,CAAI,aAAA;AACb;AAQO,SAAS,qBAAA,GAAuE;AACrF,EAAA,MAAM,GAAA,GAAY,iBAAW,kBAAkB,CAAA;AAC/C,EAAA,OAAO,GAAA,EAAK,kBAAkB,MAAM,IAAA,CAAA;AACtC;AAMO,SAAS,gBAAA,CAAiB,SAAiB,MAAA,EAA0B;AAC1E,EAAA,MAAM,GAAA,GAAY,iBAAW,kBAAkB,CAAA;AAC/C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,4DAA4D,CAAA;AAAA,EAC9E;AACA,EAAA,OAAO,GAAA,CAAI,aAAA,CAAc,OAAA,EAAS,MAAM,CAAA;AAC1C;AAMO,SAAS,cAAA,GAA0C;AACxD,EAAA,MAAM,GAAA,GAAY,iBAAW,kBAAkB,CAAA;AAC/C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,0DAA0D,CAAA;AAAA,EAC5E;AACA,EAAA,OAAO,GAAA;AACT","file":"chunk-VTEP2AQX.js","sourcesContent":["import { create } from 'zustand'\nimport type { FeatureDeclaration, PermissionProfile } from '@fayz-ai/core'\n\n// ---------------------------------------------------------------------------\n// Store interface\n// ---------------------------------------------------------------------------\n\nexport interface PermissionsStore {\n features: FeatureDeclaration[]\n profiles: PermissionProfile[]\n /** The effective profile used for permission checks (may be impersonated) */\n currentProfile: PermissionProfile | null\n /** The user's actual profile (preserved during impersonation) */\n realProfile: PermissionProfile | null\n /** The profile being previewed, if any */\n impersonatedProfile: PermissionProfile | null\n /** Whether impersonation is active */\n isImpersonating: boolean\n\n setFeatures: (features: FeatureDeclaration[]) => void\n setProfiles: (profiles: PermissionProfile[]) => void\n setCurrentProfile: (profile: PermissionProfile | null) => void\n startImpersonation: (profile: PermissionProfile) => void\n stopImpersonation: () => void\n reset: () => void\n}\n\nexport const usePermissionsStore = create<PermissionsStore>((set, get) => ({\n features: [],\n profiles: [],\n currentProfile: null,\n realProfile: null,\n impersonatedProfile: null,\n isImpersonating: false,\n\n setFeatures: (features) => set({ features }),\n setProfiles: (profiles) => set({ profiles }),\n setCurrentProfile: (profile) =>\n set({\n currentProfile: profile,\n realProfile: profile,\n impersonatedProfile: null,\n isImpersonating: false,\n }),\n startImpersonation: (profile) =>\n set({\n currentProfile: profile,\n impersonatedProfile: profile,\n isImpersonating: true,\n }),\n stopImpersonation: () => {\n const { realProfile } = get()\n set({\n currentProfile: realProfile,\n impersonatedProfile: null,\n isImpersonating: false,\n })\n },\n reset: () =>\n set({\n features: [],\n profiles: [],\n currentProfile: null,\n realProfile: null,\n impersonatedProfile: null,\n isImpersonating: false,\n }),\n}))\n","import * as React from 'react'\nimport type { FeatureDeclaration, PermissionsConfig, PermissionProfile } from '@fayz-ai/core'\nimport { usePluginRuntimeOptional } from '@fayz-ai/core'\nimport { usePermissionsStore } from './store'\n\n// ---------------------------------------------------------------------------\n// Permission check helpers\n// ---------------------------------------------------------------------------\n\n// The role-side check moved to @fayz-ai/core/access (single implementation for\n// browser, headless and the Fayz broker). Re-exported to keep call-sites stable.\nimport { profileHasPermission } from '@fayz-ai/core/access'\nexport { profileHasPermission }\n\n/**\n * Merge plugin-declared features with the app's own, deduped by id. The app's\n * declaration wins on collision (it can override a plugin's label/actions).\n */\nfunction mergeFeatures(\n pluginFeatures: FeatureDeclaration[] | undefined,\n appFeatures: FeatureDeclaration[] | undefined,\n): FeatureDeclaration[] {\n const byId = new Map<string, FeatureDeclaration>()\n for (const f of pluginFeatures ?? []) byId.set(f.id, f)\n for (const f of appFeatures ?? []) byId.set(f.id, f) // app override wins\n return Array.from(byId.values())\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface PermissionsContextValue {\n hasPermission: (feature: string, action?: string) => boolean\n canImpersonate: boolean\n startImpersonation: (profile: PermissionProfile) => void\n stopImpersonation: () => void\n}\n\nconst PermissionsContext = React.createContext<PermissionsContextValue | null>(null)\n\n// ---------------------------------------------------------------------------\n// Provider\n// ---------------------------------------------------------------------------\n\nexport interface PermissionsProviderProps {\n config?: PermissionsConfig\n children: React.ReactNode\n}\n\nexport function PermissionsProvider({ config, children }: PermissionsProviderProps) {\n const { setFeatures, startImpersonation, stopImpersonation, currentProfile, isImpersonating } =\n usePermissionsStore()\n\n // Plugins declare their own permission features via `declaredFeatures`, which the\n // plugin runtime aggregates into `pluginFeatures`. Merging them here is what makes\n // a plugin \"born compatible\" — its features show up in the RBAC matrix and gate\n // checks without the app re-declaring them. The app's own `config.features` wins\n // on id collisions (app override), so an app can refine a plugin's declaration.\n const runtime = usePluginRuntimeOptional()\n const pluginFeatures = runtime?.pluginFeatures\n\n React.useEffect(() => {\n const merged = mergeFeatures(pluginFeatures, config?.features)\n if (merged.length > 0) {\n setFeatures(merged)\n }\n }, [config, pluginFeatures, setFeatures])\n\n function hasPermission(feature: string, action?: string): boolean {\n return profileHasPermission(currentProfile, feature, action)\n }\n\n const value: PermissionsContextValue = {\n hasPermission,\n canImpersonate: !isImpersonating,\n startImpersonation,\n stopImpersonation,\n }\n\n return (\n <PermissionsContext.Provider value={value}>\n {children}\n </PermissionsContext.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Hooks\n// ---------------------------------------------------------------------------\n\n/**\n * Returns a function that checks whether the current user has a given\n * permission. Throws if used outside <PermissionsProvider>.\n */\nexport function usePermission(): (feature: string, action?: string) => boolean {\n const ctx = React.useContext(PermissionsContext)\n if (!ctx) {\n throw new Error('usePermission must be used inside <PermissionsProvider>')\n }\n return ctx.hasPermission\n}\n\n/**\n * Like usePermission, but degrades to allow-all when no <PermissionsProvider>\n * is mounted — so SDK components (e.g. the CRUD engine's PermissionGate) work\n * under any host shell instead of throwing. Gating is an enhancement, not a\n * hard requirement at the component level.\n */\nexport function usePermissionOptional(): (feature: string, action?: string) => boolean {\n const ctx = React.useContext(PermissionsContext)\n return ctx?.hasPermission ?? (() => true)\n}\n\n/**\n * Convenience hook — returns true/false for a specific feature + action.\n * Example: `const canEdit = useHasPermission('clients', 'write')`\n */\nexport function useHasPermission(feature: string, action?: string): boolean {\n const ctx = React.useContext(PermissionsContext)\n if (!ctx) {\n throw new Error('useHasPermission must be used inside <PermissionsProvider>')\n }\n return ctx.hasPermission(feature, action)\n}\n\n/**\n * Convenience hook that surfaces the full permissions context, including\n * impersonation controls.\n */\nexport function usePermissions(): PermissionsContextValue {\n const ctx = React.useContext(PermissionsContext)\n if (!ctx) {\n throw new Error('usePermissions must be used inside <PermissionsProvider>')\n }\n return ctx\n}\n\n// Re-export feature declarations for use in feature flag checks\nexport type { FeatureDeclaration }\n"]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type EntityLookup } from '../../archetype-lookup';
|
|
3
|
+
export interface ContactPickerValue {
|
|
4
|
+
/** Person id — undefined while the user has only typed a name. */
|
|
5
|
+
id?: string;
|
|
6
|
+
name: string;
|
|
7
|
+
phone?: string;
|
|
8
|
+
email?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ContactPickerProps {
|
|
11
|
+
value: ContactPickerValue | null;
|
|
12
|
+
onChange: (value: ContactPickerValue | null) => void;
|
|
13
|
+
/**
|
|
14
|
+
* `people.kind` for records created here (e.g. 'client', 'lead', 'contact').
|
|
15
|
+
* Also narrows the default lookup, so a vertical only searches its own people.
|
|
16
|
+
*/
|
|
17
|
+
kind?: string;
|
|
18
|
+
/** Per-vertical extension table linked by `person_id` — skipped when absent from the pool. */
|
|
19
|
+
extensionTable?: string;
|
|
20
|
+
/** Search source. Defaults to the `person` archetype lookup narrowed by `kind`. */
|
|
21
|
+
lookup?: EntityLookup;
|
|
22
|
+
/**
|
|
23
|
+
* Allow committing a typed name with NO person record (`{ name }` and no id).
|
|
24
|
+
* Off by default: the point of the picker is to end up with a real contact.
|
|
25
|
+
* Conversations turns it on so an ad-hoc handle can still start a thread.
|
|
26
|
+
*/
|
|
27
|
+
allowFreeText?: boolean;
|
|
28
|
+
/** Hide the clear button (agenda locks the client on a paid booking). */
|
|
29
|
+
clearable?: boolean;
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
autoFocus?: boolean;
|
|
32
|
+
placeholder?: string;
|
|
33
|
+
/**
|
|
34
|
+
* How much chrome the field carries. The BEHAVIOUR — search, chip, inline
|
|
35
|
+
* create, handle capture — is identical either way; only the input's skin
|
|
36
|
+
* changes, so it can sit in whichever layout grammar the host already uses.
|
|
37
|
+
*
|
|
38
|
+
* • 'field' (default) — label above + bordered input. For form-shaped modals
|
|
39
|
+
* (the conversations composer), where every control is a labelled field.
|
|
40
|
+
* • 'inline' — no label, borderless input that underlines on focus. For the
|
|
41
|
+
* appointment modal's icon rows, where a bordered box next to "Scheduled"
|
|
42
|
+
* and "Add notes" is the thing that looks out of place.
|
|
43
|
+
*/
|
|
44
|
+
variant?: 'field' | 'inline';
|
|
45
|
+
/** Field label, rendered BY the component so every host gets the same one. Ignored when `variant='inline'`. */
|
|
46
|
+
label?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Right-hand detail on the selected chip. Defaults to the person's phone; a
|
|
49
|
+
* host that cares about a different datum (the conversations composer shows
|
|
50
|
+
* the handle for the ACTIVE channel) passes its own.
|
|
51
|
+
*/
|
|
52
|
+
secondaryText?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Optional second datum captured alongside the contact — the address to reach
|
|
55
|
+
* them at in this context (a channel handle, a delivery phone…). Lives HERE,
|
|
56
|
+
* not in the host, because it is contact data and hosts were rendering their
|
|
57
|
+
* own field around the picker, which is exactly what made the same flow look
|
|
58
|
+
* like two different features.
|
|
59
|
+
*
|
|
60
|
+
* `derived` is what we already know from the picked person: when set it rides
|
|
61
|
+
* on the chip and no field is offered. Otherwise the picker shows a discreet
|
|
62
|
+
* "+ Add {label}" that expands into the input.
|
|
63
|
+
*/
|
|
64
|
+
handleField?: {
|
|
65
|
+
/** Human name of the datum, interpolated into "+ Add {label}". */
|
|
66
|
+
label: string;
|
|
67
|
+
/** Known from the contact — suppresses the field entirely. */
|
|
68
|
+
derived?: string;
|
|
69
|
+
value: string;
|
|
70
|
+
onChange: (value: string) => void;
|
|
71
|
+
/** Label above the input once open. Defaults to `label`. */
|
|
72
|
+
fieldLabel?: string;
|
|
73
|
+
placeholder?: string;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Copy for the "+ Create …" row. Defaults to the shared "New contact"; a
|
|
77
|
+
* plugin whose vertical calls them something else (the agenda says "client")
|
|
78
|
+
* passes its own label so the wording doesn't regress into generic SDK copy.
|
|
79
|
+
*/
|
|
80
|
+
createLabel?: string;
|
|
81
|
+
/**
|
|
82
|
+
* Fires when the inline create form opens/closes. The create form owns phone
|
|
83
|
+
* and email while it is open, so a host that ALSO renders a phone/handle field
|
|
84
|
+
* (the conversations composer does) hides its own to avoid asking twice.
|
|
85
|
+
*/
|
|
86
|
+
onCreatingChange?: (creating: boolean) => void;
|
|
87
|
+
className?: string;
|
|
88
|
+
/** Extra hint under the input while a name is typed but nothing is selected. */
|
|
89
|
+
hint?: React.ReactNode;
|
|
90
|
+
}
|
|
91
|
+
export declare function ContactPicker({ value, onChange, kind, extensionTable, lookup, allowFreeText, clearable, disabled, autoFocus, placeholder, variant, label, secondaryText, handleField, createLabel, onCreatingChange, className, hint, }: ContactPickerProps): React.JSX.Element;
|
|
92
|
+
//# sourceMappingURL=ContactPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContactPicker.d.ts","sourceRoot":"","sources":["../../../src/components/shared/ContactPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAA;AAInE,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAA;AA+BjF,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,CAAA;IACpD;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8FAA8F;IAC9F,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mFAAmF;IACnF,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC5B,+GAA+G;IAC/G,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE;QACZ,kEAAkE;QAClE,KAAK,EAAE,MAAM,CAAA;QACb,8DAA8D;QAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;QACjC,4DAA4D;QAC5D,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IACD;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,cAAc,EACd,MAAM,EACN,aAAqB,EACrB,SAAgB,EAChB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,OAAiB,EACjB,KAAK,EACL,aAAa,EACb,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,IAAI,GACL,EAAE,kBAAkB,qBAyPpB"}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { EntityLookupResult } from '../../archetype-lookup';
|
|
2
3
|
interface PersonLinkProps {
|
|
3
4
|
/** Person UUID — required for fetching details */
|
|
4
5
|
personId?: string | null;
|
|
6
|
+
/**
|
|
7
|
+
* Where to load the details from. Defaults to the `person` archetype lookup
|
|
8
|
+
* (the `people` table). Modules whose "person" lives elsewhere pass their own
|
|
9
|
+
* loader — a shop customer, for instance, is a plg_shop_customers row and the
|
|
10
|
+
* default lookup would never find it. Without this the popover silently shows
|
|
11
|
+
* an empty card, which reads as a bug rather than as a wrong data source.
|
|
12
|
+
*/
|
|
13
|
+
lookup?: {
|
|
14
|
+
getById: (id: string) => Promise<EntityLookupResult | null>;
|
|
15
|
+
};
|
|
5
16
|
/** Display name (shown as the clickable text) */
|
|
6
17
|
name: string;
|
|
7
18
|
/** Optional href to navigate to the person's profile */
|
|
@@ -13,6 +24,6 @@ interface PersonLinkProps {
|
|
|
13
24
|
/** Additional className for the trigger */
|
|
14
25
|
className?: string;
|
|
15
26
|
}
|
|
16
|
-
export declare function PersonLink({ personId, name, profileHref, tab, size, className }: PersonLinkProps): React.JSX.Element;
|
|
27
|
+
export declare function PersonLink({ personId, name, lookup, profileHref, tab, size, className }: PersonLinkProps): React.JSX.Element;
|
|
17
28
|
export {};
|
|
18
29
|
//# sourceMappingURL=PersonLink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonLink.d.ts","sourceRoot":"","sources":["../../../src/components/shared/PersonLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"PersonLink.d.ts","sourceRoot":"","sources":["../../../src/components/shared/PersonLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAA;AAI5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAOhE,UAAU,eAAe;IACvB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAA;KAAE,CAAA;IACxE,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAA;IACZ,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;IACvB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAYD,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,IAAgB,EAAE,SAAS,EAAE,EAAE,eAAe,qBAkKpH"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface CreatePersonInput {
|
|
2
|
+
name: string;
|
|
3
|
+
phone?: string;
|
|
4
|
+
email?: string;
|
|
5
|
+
/** `people.kind` discriminator for this vertical (e.g. 'client', 'lead'). */
|
|
6
|
+
kind: string;
|
|
7
|
+
/**
|
|
8
|
+
* Optional per-vertical extension table linked by `person_id`. Absent in the
|
|
9
|
+
* pool → silently skipped (see above).
|
|
10
|
+
*/
|
|
11
|
+
extensionTable?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CreatedPerson {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
phone?: string;
|
|
17
|
+
email?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function createPerson(input: CreatePersonInput): Promise<CreatedPerson>;
|
|
20
|
+
//# sourceMappingURL=create-person.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-person.d.ts","sourceRoot":"","sources":["../../../src/components/shared/create-person.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CAoCnF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrudDetailPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudDetailPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"CrudDetailPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudDetailPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAmB/D,OAAO,KAAK,EAAE,SAAS,EAA+C,MAAM,eAAe,CAAA;AAE3F,UAAU,mBAAmB;IAC3B,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAkOD,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,UAAU,EACV,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB,qBA6IrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrudFormPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudFormPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"CrudFormPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudFormPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAiBlD,OAAO,KAAK,EAAwB,SAAS,EAAE,MAAM,eAAe,CAAA;AAKpE,UAAU,iBAAiB;IACzB,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;iFAC6E;IAC7E,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AA4WD,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,iBAAiB,qBAsMzI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrudListView.d.ts","sourceRoot":"","sources":["../../src/crud/CrudListView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"CrudListView.d.ts","sourceRoot":"","sources":["../../src/crud/CrudListView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAU9C,iEAAiE;AACjE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IACzD,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IACvB,yFAAyF;IACzF,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;IACrC,wDAAwD;IACxD,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAC3B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,wCAAwC;IACxC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAClD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IAClE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAWD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EACrD,SAAS,EACT,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAiB,EACjB,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,aAAa,EACb,aAAa,EACb,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,YAAY,GACb,EAAE,iBAAiB,CAAC,CAAC,CAAC,qBAwJtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrudPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"CrudPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAoBhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAG1D,KAAK,WAAW,GAAG,OAAO,GAAG,OAAO,CAAA;AAEpC,UAAU,aAAa,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IAC9C,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IACvB,QAAQ,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAqHD,wBAAgB,QAAQ,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,qBAyW/I"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface AddressRow {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string | null;
|
|
5
|
+
recipient: string | null;
|
|
6
|
+
phone: string | null;
|
|
7
|
+
postal_code: string;
|
|
8
|
+
street: string;
|
|
9
|
+
number: string | null;
|
|
10
|
+
complement: string | null;
|
|
11
|
+
district: string | null;
|
|
12
|
+
city: string;
|
|
13
|
+
state: string;
|
|
14
|
+
country: string;
|
|
15
|
+
is_default: boolean;
|
|
16
|
+
kind: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function AddressesTab({ item }: {
|
|
19
|
+
item?: unknown;
|
|
20
|
+
}): React.JSX.Element;
|
|
21
|
+
//# sourceMappingURL=AddressesTab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddressesTab.d.ts","sourceRoot":"","sources":["../../../src/crud/archetypes/AddressesTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAuB/D,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;CACb;AAkED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,qBA0RxD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { AddressesTab } from './AddressesTab';
|
|
2
3
|
export declare function ActivityTab(): React.JSX.Element;
|
|
3
4
|
export declare function DocumentsTab({ item }: {
|
|
4
5
|
item?: any;
|
|
@@ -20,7 +21,7 @@ export declare const PERSON_DETAIL_TABS: ({
|
|
|
20
21
|
id: string;
|
|
21
22
|
label: string;
|
|
22
23
|
icon: string;
|
|
23
|
-
component: typeof
|
|
24
|
+
component: typeof AddressesTab;
|
|
24
25
|
visibleFor?: undefined;
|
|
25
26
|
requiresWidgetZone?: undefined;
|
|
26
27
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonDetailTabs.d.ts","sourceRoot":"","sources":["../../../src/crud/archetypes/PersonDetailTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"PersonDetailTabs.d.ts","sourceRoot":"","sources":["../../../src/crud/archetypes/PersonDetailTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAuB7C,wBAAgB,WAAW,sBAS1B;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,GAAG,CAAA;CAAE,qBA4BpD;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,GAAG,CAAA;CAAE,4BAiBpD;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,qBAYlD;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;IAW9B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCrudPage.d.ts","sourceRoot":"","sources":["../../src/crud/createCrudPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAKtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD,UAAU,qBAAqB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IACtD,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;IACd,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;IAC9B,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAC3B,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACrD,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EACvB,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACjC,KAAK,CAAC,aAAa,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"createCrudPage.d.ts","sourceRoot":"","sources":["../../src/crud/createCrudPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAKtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD,UAAU,qBAAqB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IACtD,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;IACd,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;IAC9B,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAC3B,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACrD,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EACvB,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACjC,KAAK,CAAC,aAAa,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CA8CnD"}
|
package/dist/crud/index.d.ts
CHANGED
|
@@ -10,4 +10,5 @@ export { ImportWizard } from './ImportWizard';
|
|
|
10
10
|
export type { ImportRowError } from './ImportWizard';
|
|
11
11
|
export { exportToCSV } from './csv-export';
|
|
12
12
|
export { RelationSelect, RelationCell, useRelationOptions, loadRelationOptions, invalidateRelationOptions } from './relation-field';
|
|
13
|
+
export { EntityLink, registerEntityPath, getPersonPath } from './archetypes/EntityLink';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/crud/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/crud/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/crud/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAMnI,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA"}
|