@burdenoff/microfe-proserviceworld 2026.1013.1 → 2026.1014.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated/wspace-types.d.ts +98750 -26838
- package/dist/generated/wspace-types.d.ts.map +1 -1
- package/dist/proserviceworld/ProServiceWorldRoot.d.ts.map +1 -1
- package/dist/proserviceworld/ProServiceWorldRoot.js +6 -0
- package/dist/proserviceworld/ProServiceWorldRoot.js.map +1 -1
- package/dist/proserviceworld/ProServiceWorldRoutes.d.ts.map +1 -1
- package/dist/proserviceworld/ProServiceWorldRoutes.js +42 -35
- package/dist/proserviceworld/ProServiceWorldRoutes.js.map +1 -1
- package/dist/proserviceworld/components/CredentialDirectory.d.ts +3 -0
- package/dist/proserviceworld/components/CredentialDirectory.d.ts.map +1 -0
- package/dist/proserviceworld/components/CredentialDirectory.js +253 -0
- package/dist/proserviceworld/components/CredentialDirectory.js.map +1 -0
- package/dist/proserviceworld/components/CredentialEvidencePicker.d.ts +9 -0
- package/dist/proserviceworld/components/CredentialEvidencePicker.d.ts.map +1 -0
- package/dist/proserviceworld/components/CredentialEvidencePicker.js +161 -0
- package/dist/proserviceworld/components/CredentialEvidencePicker.js.map +1 -0
- package/dist/proserviceworld/components/CredentialRecordForm.d.ts +24 -0
- package/dist/proserviceworld/components/CredentialRecordForm.d.ts.map +1 -0
- package/dist/proserviceworld/components/CredentialRecordForm.js +251 -0
- package/dist/proserviceworld/components/CredentialRecordForm.js.map +1 -0
- package/dist/proserviceworld/components/CredentialReferencePicker.d.ts +22 -0
- package/dist/proserviceworld/components/CredentialReferencePicker.d.ts.map +1 -0
- package/dist/proserviceworld/components/CredentialReferencePicker.js +122 -0
- package/dist/proserviceworld/components/CredentialReferencePicker.js.map +1 -0
- package/dist/proserviceworld/components/CredentialReminderPanel.d.ts +5 -0
- package/dist/proserviceworld/components/CredentialReminderPanel.d.ts.map +1 -0
- package/dist/proserviceworld/components/CredentialReminderPanel.js +141 -0
- package/dist/proserviceworld/components/CredentialReminderPanel.js.map +1 -0
- package/dist/proserviceworld/components/credentialFormDefinitions.d.ts +4 -0
- package/dist/proserviceworld/components/credentialFormDefinitions.d.ts.map +1 -0
- package/dist/proserviceworld/components/credentialFormDefinitions.js +344 -0
- package/dist/proserviceworld/components/credentialFormDefinitions.js.map +1 -0
- package/dist/proserviceworld/hooks/credentialWrites.d.ts +16 -0
- package/dist/proserviceworld/hooks/credentialWrites.d.ts.map +1 -0
- package/dist/proserviceworld/hooks/credentialWrites.js +38 -0
- package/dist/proserviceworld/hooks/credentialWrites.js.map +1 -0
- package/dist/proserviceworld/hooks/usePractitionerCredentials.d.ts +41 -0
- package/dist/proserviceworld/hooks/usePractitionerCredentials.d.ts.map +1 -0
- package/dist/proserviceworld/hooks/usePractitionerCredentials.js +105 -0
- package/dist/proserviceworld/hooks/usePractitionerCredentials.js.map +1 -0
- package/dist/proserviceworld/hooks/useProServiceWorldApi.d.ts +1 -0
- package/dist/proserviceworld/hooks/useProServiceWorldApi.d.ts.map +1 -1
- package/dist/proserviceworld/hooks/useProServiceWorldApi.js +3 -2
- package/dist/proserviceworld/hooks/useProServiceWorldApi.js.map +1 -1
- package/dist/proserviceworld/pages/PractitionerCredentialsPage.d.ts +2 -0
- package/dist/proserviceworld/pages/PractitionerCredentialsPage.d.ts.map +1 -0
- package/dist/proserviceworld/pages/PractitionerCredentialsPage.js +268 -0
- package/dist/proserviceworld/pages/PractitionerCredentialsPage.js.map +1 -0
- package/dist/proserviceworld/utils/credentialSourceLink.d.ts +3 -0
- package/dist/proserviceworld/utils/credentialSourceLink.d.ts.map +1 -0
- package/dist/proserviceworld/utils/credentialSourceLink.js +17 -0
- package/dist/proserviceworld/utils/credentialSourceLink.js.map +1 -0
- package/package.json +21 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProServiceWorldRoot.d.ts","sourceRoot":"","sources":["../../src/proserviceworld/ProServiceWorldRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAqBhC,OAAO,KAAK,EAAW,wBAAwB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ProServiceWorldRoot.d.ts","sourceRoot":"","sources":["../../src/proserviceworld/ProServiceWorldRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAqBhC,OAAO,KAAK,EAAW,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAwCjE,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CA8B5D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProServiceWorldRoot.js","names":[],"sources":["../../src/proserviceworld/ProServiceWorldRoot.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useEffect } from 'react';\nimport {\n LayoutDashboard,\n Building2,\n Briefcase,\n FolderKanban,\n Clock,\n Receipt,\n Wallet,\n ShieldCheck,\n GitBranch,\n FileText,\n LayoutGrid,\n BarChart2,\n FileSignature,\n PenTool,\n Contact,\n} from 'lucide-react';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { ProServiceWorldProvider } from './providers/ProServiceWorldProvider';\nimport type { NavItem, ProServiceWorldRootProps } from './types';\nimport { ProServiceWorldRoutes } from './ProServiceWorldRoutes';\nimport { joinPath } from './utils/navigation';\n\n/**\n * The authoritative sidebar navigation is registered by the host app shell\n * (proserviceworld-app NavRegistration). These items are only used when the MFE\n * is mounted standalone with `registerNavItems` provided — they mirror the\n * shell's canonical professional-services routes exactly.\n */\nconst NAV: { id: string; label: string; path: string; icon: FC<{ size?: number }> }[] = [\n { id: 'dashboard', label: 'Dashboard', path: '', icon: LayoutDashboard },\n { id: 'clients', label: 'Clients', path: 'clients', icon: Building2 },\n { id: 'engagements', label: 'Engagements', path: 'engagements', icon: Briefcase },\n { id: 'matters', label: 'Matters', path: 'matters', icon: FolderKanban },\n { id: 'time', label: 'Time', path: 'time', icon: Clock },\n { id: 'invoices', label: 'Invoices', path: 'invoices', icon: Receipt },\n { id: 'trust', label: 'Trust Accounting', path: 'trust', icon: Wallet },\n { id: 'compliance', label: 'Compliance', path: 'compliance', icon: ShieldCheck },\n { id: 'conflicts', label: 'Conflict Checks', path: 'conflicts', icon: GitBranch },\n { id: 'documents', label: 'Documents', path: 'documents', icon: FileText },\n { id: 'signatures', label: 'Signatures', path: 'signatures', icon: FileSignature },\n { id: 'my-signatures', label: 'My Signatures', path: 'my-signatures', icon: PenTool },\n { id: 'practice-areas', label: 'Practice Areas', path: 'practice-areas', icon: LayoutGrid },\n { id: 'analytics', label: 'Analytics', path: 'analytics', icon: BarChart2 },\n {\n id: 'client-portal-access',\n label: 'Client Portal Access',\n path: 'client-portal-access',\n icon: Contact,\n },\n { id: 'portal', label: 'My Portal', path: 'portal', icon: Contact },\n];\n\nexport const ProServiceWorldRoot: FC<ProServiceWorldRootProps> = (props) => {\n const { registerNavItems, basePath = '/' } = props;\n\n useEffect(() => {\n if (!registerNavItems) return;\n const navItem: NavItem = {\n id: 'proserviceworld',\n label: 'ProServiceWorld',\n path: basePath,\n icon: <LayoutDashboard size={20} />,\n order: 80,\n group: 'products',\n children: NAV.map((n, i) => ({\n id: `proserviceworld-${n.id}`,\n label: n.label,\n path: joinPath(basePath, n.path),\n icon: <n.icon size={16} />,\n order: i,\n })),\n };\n return registerNavItems(navItem);\n }, [registerNavItems, basePath]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <ProServiceWorldProvider {...props}>\n <ProServiceWorldRoutes />\n </ProServiceWorldProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":";;;;;;;;AA+BA,IAAM,IAAkF;CACtF;EAAE,IAAI;EAAa,OAAO;EAAa,MAAM;EAAI,MAAM;CAAgB;CACvE;EAAE,IAAI;EAAW,OAAO;EAAW,MAAM;EAAW,MAAM;CAAU;CACpE;EAAE,IAAI;EAAe,OAAO;EAAe,MAAM;EAAe,MAAM;CAAU;CAChF;EAAE,IAAI;EAAW,OAAO;EAAW,MAAM;EAAW,MAAM;CAAa;CACvE;EAAE,IAAI;EAAQ,OAAO;EAAQ,MAAM;EAAQ,MAAM;CAAM;CACvD;EAAE,IAAI;EAAY,OAAO;EAAY,MAAM;EAAY,MAAM;CAAQ;CACrE;EAAE,IAAI;EAAS,OAAO;EAAoB,MAAM;EAAS,MAAM;CAAO;CACtE;EAAE,IAAI;EAAc,OAAO;EAAc,MAAM;EAAc,MAAM;CAAY;CAC/E;EAAE,IAAI;EAAa,OAAO;EAAmB,MAAM;EAAa,MAAM;CAAU;CAChF;EAAE,IAAI;EAAa,OAAO;EAAa,MAAM;EAAa,MAAM;CAAS;CACzE;EAAE,IAAI;EAAc,OAAO;EAAc,MAAM;EAAc,MAAM;CAAc;CACjF;EAAE,IAAI;EAAiB,OAAO;EAAiB,MAAM;EAAiB,MAAM;CAAQ;CACpF;EAAE,IAAI;EAAkB,OAAO;EAAkB,MAAM;EAAkB,MAAM;CAAW;CAC1F;EAAE,IAAI;EAAa,OAAO;EAAa,MAAM;EAAa,MAAM;CAAU;CAC1E;EACE,IAAI;EACJ,OAAO;EACP,MAAM;EACN,MAAM;CACR;CACA;EAAE,IAAI;EAAU,OAAO;EAAa,MAAM;EAAU,MAAM;CAAQ;AACpE,GAEa,KAAqD,MAAU;CAC1E,IAAM,EAAE,qBAAkB,cAAW,QAAQ;CAsB7C,OApBA,QAAgB;EACd,IAAI,CAAC,GAAkB;EACvB,IAAM,IAAmB;GACvB,IAAI;GACJ,OAAO;GACP,MAAM;GACN,MAAM,kBAAC,GAAD,EAAiB,MAAM,GAAK,CAAA;GAClC,OAAO;GACP,OAAO;GACP,UAAU,EAAI,KAAK,GAAG,OAAO;IAC3B,IAAI,mBAAmB,EAAE;IACzB,OAAO,EAAE;IACT,MAAM,EAAS,GAAU,EAAE,IAAI;IAC/B,MAAM,kBAAC,EAAE,MAAH,EAAQ,MAAM,GAAK,CAAA;IACzB,OAAO;GACT,EAAE;EACJ;EACA,OAAO,EAAiB,CAAO;CACjC,GAAG,CAAC,GAAkB,CAAQ,CAAC,GAG7B,kBAAC,GAAD;EAAqB,aAAa;EAAM,SAAQ;EAAS,gBAAgB;YACvE,kBAAC,GAAD;GAAyB,GAAI;aAC3B,kBAAC,GAAD,CAAwB,CAAA;EACD,CAAA;CACN,CAAA;AAEzB"}
|
|
1
|
+
{"version":3,"file":"ProServiceWorldRoot.js","names":[],"sources":["../../src/proserviceworld/ProServiceWorldRoot.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useEffect } from 'react';\nimport {\n LayoutDashboard,\n Building2,\n Briefcase,\n FolderKanban,\n Clock,\n Receipt,\n Wallet,\n ShieldCheck,\n GitBranch,\n FileText,\n LayoutGrid,\n BarChart2,\n FileSignature,\n PenTool,\n Contact,\n} from 'lucide-react';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { ProServiceWorldProvider } from './providers/ProServiceWorldProvider';\nimport type { NavItem, ProServiceWorldRootProps } from './types';\nimport { ProServiceWorldRoutes } from './ProServiceWorldRoutes';\nimport { joinPath } from './utils/navigation';\n\n/**\n * The authoritative sidebar navigation is registered by the host app shell\n * (proserviceworld-app NavRegistration). These items are only used when the MFE\n * is mounted standalone with `registerNavItems` provided — they mirror the\n * shell's canonical professional-services routes exactly.\n */\nconst NAV: { id: string; label: string; path: string; icon: FC<{ size?: number }> }[] = [\n { id: 'dashboard', label: 'Dashboard', path: '', icon: LayoutDashboard },\n { id: 'clients', label: 'Clients', path: 'clients', icon: Building2 },\n { id: 'engagements', label: 'Engagements', path: 'engagements', icon: Briefcase },\n { id: 'matters', label: 'Matters', path: 'matters', icon: FolderKanban },\n { id: 'time', label: 'Time', path: 'time', icon: Clock },\n { id: 'invoices', label: 'Invoices', path: 'invoices', icon: Receipt },\n { id: 'trust', label: 'Trust Accounting', path: 'trust', icon: Wallet },\n { id: 'compliance', label: 'Compliance', path: 'compliance', icon: ShieldCheck },\n {\n id: 'practitioner-credentials',\n label: 'Practitioner Credentials',\n path: 'compliance/credentials',\n icon: ShieldCheck,\n },\n { id: 'conflicts', label: 'Conflict Checks', path: 'conflicts', icon: GitBranch },\n { id: 'documents', label: 'Documents', path: 'documents', icon: FileText },\n { id: 'signatures', label: 'Signatures', path: 'signatures', icon: FileSignature },\n { id: 'my-signatures', label: 'My Signatures', path: 'my-signatures', icon: PenTool },\n { id: 'practice-areas', label: 'Practice Areas', path: 'practice-areas', icon: LayoutGrid },\n { id: 'analytics', label: 'Analytics', path: 'analytics', icon: BarChart2 },\n {\n id: 'client-portal-access',\n label: 'Client Portal Access',\n path: 'client-portal-access',\n icon: Contact,\n },\n { id: 'portal', label: 'My Portal', path: 'portal', icon: Contact },\n];\n\nexport const ProServiceWorldRoot: FC<ProServiceWorldRootProps> = (props) => {\n const { registerNavItems, basePath = '/' } = props;\n\n useEffect(() => {\n if (!registerNavItems) return;\n const navItem: NavItem = {\n id: 'proserviceworld',\n label: 'ProServiceWorld',\n path: basePath,\n icon: <LayoutDashboard size={20} />,\n order: 80,\n group: 'products',\n children: NAV.map((n, i) => ({\n id: `proserviceworld-${n.id}`,\n label: n.label,\n path: joinPath(basePath, n.path),\n icon: <n.icon size={16} />,\n order: i,\n })),\n };\n return registerNavItems(navItem);\n }, [registerNavItems, basePath]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <ProServiceWorldProvider {...props}>\n <ProServiceWorldRoutes />\n </ProServiceWorldProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":";;;;;;;;AA+BA,IAAM,IAAkF;CACtF;EAAE,IAAI;EAAa,OAAO;EAAa,MAAM;EAAI,MAAM;CAAgB;CACvE;EAAE,IAAI;EAAW,OAAO;EAAW,MAAM;EAAW,MAAM;CAAU;CACpE;EAAE,IAAI;EAAe,OAAO;EAAe,MAAM;EAAe,MAAM;CAAU;CAChF;EAAE,IAAI;EAAW,OAAO;EAAW,MAAM;EAAW,MAAM;CAAa;CACvE;EAAE,IAAI;EAAQ,OAAO;EAAQ,MAAM;EAAQ,MAAM;CAAM;CACvD;EAAE,IAAI;EAAY,OAAO;EAAY,MAAM;EAAY,MAAM;CAAQ;CACrE;EAAE,IAAI;EAAS,OAAO;EAAoB,MAAM;EAAS,MAAM;CAAO;CACtE;EAAE,IAAI;EAAc,OAAO;EAAc,MAAM;EAAc,MAAM;CAAY;CAC/E;EACE,IAAI;EACJ,OAAO;EACP,MAAM;EACN,MAAM;CACR;CACA;EAAE,IAAI;EAAa,OAAO;EAAmB,MAAM;EAAa,MAAM;CAAU;CAChF;EAAE,IAAI;EAAa,OAAO;EAAa,MAAM;EAAa,MAAM;CAAS;CACzE;EAAE,IAAI;EAAc,OAAO;EAAc,MAAM;EAAc,MAAM;CAAc;CACjF;EAAE,IAAI;EAAiB,OAAO;EAAiB,MAAM;EAAiB,MAAM;CAAQ;CACpF;EAAE,IAAI;EAAkB,OAAO;EAAkB,MAAM;EAAkB,MAAM;CAAW;CAC1F;EAAE,IAAI;EAAa,OAAO;EAAa,MAAM;EAAa,MAAM;CAAU;CAC1E;EACE,IAAI;EACJ,OAAO;EACP,MAAM;EACN,MAAM;CACR;CACA;EAAE,IAAI;EAAU,OAAO;EAAa,MAAM;EAAU,MAAM;CAAQ;AACpE,GAEa,KAAqD,MAAU;CAC1E,IAAM,EAAE,qBAAkB,cAAW,QAAQ;CAsB7C,OApBA,QAAgB;EACd,IAAI,CAAC,GAAkB;EACvB,IAAM,IAAmB;GACvB,IAAI;GACJ,OAAO;GACP,MAAM;GACN,MAAM,kBAAC,GAAD,EAAiB,MAAM,GAAK,CAAA;GAClC,OAAO;GACP,OAAO;GACP,UAAU,EAAI,KAAK,GAAG,OAAO;IAC3B,IAAI,mBAAmB,EAAE;IACzB,OAAO,EAAE;IACT,MAAM,EAAS,GAAU,EAAE,IAAI;IAC/B,MAAM,kBAAC,EAAE,MAAH,EAAQ,MAAM,GAAK,CAAA;IACzB,OAAO;GACT,EAAE;EACJ;EACA,OAAO,EAAiB,CAAO;CACjC,GAAG,CAAC,GAAkB,CAAQ,CAAC,GAG7B,kBAAC,GAAD;EAAqB,aAAa;EAAM,SAAQ;EAAS,gBAAgB;YACvE,kBAAC,GAAD;GAAyB,GAAI;aAC3B,kBAAC,GAAD,CAAwB,CAAA;EACD,CAAA;CACN,CAAA;AAEzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProServiceWorldRoutes.d.ts","sourceRoot":"","sources":["../../src/proserviceworld/ProServiceWorldRoutes.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProServiceWorldRoutes.d.ts","sourceRoot":"","sources":["../../src/proserviceworld/ProServiceWorldRoutes.tsx"],"names":[],"mappings":"AAiFA,wBAAgB,qBAAqB,gCAiKpC"}
|
|
@@ -6,153 +6,160 @@ import { Loader2 as a } from "lucide-react";
|
|
|
6
6
|
import { Navigate as o, Route as s, Routes as c } from "react-router";
|
|
7
7
|
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
8
8
|
//#region src/proserviceworld/ProServiceWorldRoutes.tsx
|
|
9
|
-
var d = i(() => import("./pages/ClientsPage.js").then((e) => ({ default: e.ClientsPage }))), f = i(() => import("./pages/ClientDetailPage.js").then((e) => ({ default: e.ClientDetailPage }))), p = i(() => import("./pages/EngagementsPage.js").then((e) => ({ default: e.EngagementsPage }))), m = i(() => import("./pages/EngagementDetailPage.js").then((e) => ({ default: e.EngagementDetailPage }))), h = i(() => import("./pages/MattersPage.js").then((e) => ({ default: e.MattersPage }))), g = i(() => import("./pages/TimePage.js").then((e) => ({ default: e.TimePage }))), _ = i(() => import("./pages/InvoicesPage.js").then((e) => ({ default: e.InvoicesPage }))), v = i(() => import("./pages/TrustPage.js").then((e) => ({ default: e.TrustPage }))), y = i(() => import("./pages/CompliancePage.js").then((e) => ({ default: e.CompliancePage }))), b = i(() => import("./pages/ConflictsPage.js").then((e) => ({ default: e.ConflictsPage }))),
|
|
10
|
-
function
|
|
9
|
+
var d = i(() => import("./pages/ClientsPage.js").then((e) => ({ default: e.ClientsPage }))), f = i(() => import("./pages/ClientDetailPage.js").then((e) => ({ default: e.ClientDetailPage }))), p = i(() => import("./pages/EngagementsPage.js").then((e) => ({ default: e.EngagementsPage }))), m = i(() => import("./pages/EngagementDetailPage.js").then((e) => ({ default: e.EngagementDetailPage }))), h = i(() => import("./pages/MattersPage.js").then((e) => ({ default: e.MattersPage }))), g = i(() => import("./pages/TimePage.js").then((e) => ({ default: e.TimePage }))), _ = i(() => import("./pages/InvoicesPage.js").then((e) => ({ default: e.InvoicesPage }))), v = i(() => import("./pages/TrustPage.js").then((e) => ({ default: e.TrustPage }))), y = i(() => import("./pages/CompliancePage.js").then((e) => ({ default: e.CompliancePage }))), b = i(() => import("./pages/PractitionerCredentialsPage.js").then((e) => ({ default: e.PractitionerCredentialsPage }))), x = i(() => import("./pages/ConflictsPage.js").then((e) => ({ default: e.ConflictsPage }))), S = i(() => import("./pages/DocumentsPage.js").then((e) => ({ default: e.DocumentsPage }))), C = i(() => import("./pages/PracticeAreasPage.js").then((e) => ({ default: e.PracticeAreasPage }))), w = i(() => import("./pages/AnalyticsPage.js").then((e) => ({ default: e.AnalyticsPage }))), T = i(() => import("./pages/SignaturesPage.js").then((e) => ({ default: e.SignaturesPage }))), E = i(() => import("./pages/MySignaturesPage.js").then((e) => ({ default: e.MySignaturesPage }))), D = i(() => import("./pages/ClientPortalAccessPage.js").then((e) => ({ default: e.ClientPortalAccessPage }))), O = i(() => import("./pages/MyPortalPage.js").then((e) => ({ default: e.MyPortalPage })));
|
|
10
|
+
function k() {
|
|
11
11
|
return /* @__PURE__ */ l("div", {
|
|
12
12
|
className: "flex min-h-[320px] items-center justify-center",
|
|
13
13
|
children: /* @__PURE__ */ l(a, { className: "h-8 w-8 animate-spin text-accent" })
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
|
-
function
|
|
16
|
+
function A() {
|
|
17
17
|
return t(), null;
|
|
18
18
|
}
|
|
19
|
-
function
|
|
19
|
+
function j({ pageId: e, children: t }) {
|
|
20
20
|
return /* @__PURE__ */ l(n, {
|
|
21
21
|
pageId: e,
|
|
22
22
|
children: /* @__PURE__ */ l(r, {
|
|
23
|
-
fallback: /* @__PURE__ */ l(
|
|
23
|
+
fallback: /* @__PURE__ */ l(k, {}),
|
|
24
24
|
children: t
|
|
25
25
|
})
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
|
-
function
|
|
28
|
+
function M() {
|
|
29
29
|
return /* @__PURE__ */ u(r, {
|
|
30
|
-
fallback: /* @__PURE__ */ l(
|
|
31
|
-
children: [/* @__PURE__ */ l(
|
|
30
|
+
fallback: /* @__PURE__ */ l(k, {}),
|
|
31
|
+
children: [/* @__PURE__ */ l(A, {}), /* @__PURE__ */ u(c, { children: [
|
|
32
32
|
/* @__PURE__ */ l(s, {
|
|
33
33
|
index: !0,
|
|
34
|
-
element: /* @__PURE__ */ l(
|
|
34
|
+
element: /* @__PURE__ */ l(j, {
|
|
35
35
|
pageId: "dashboard",
|
|
36
36
|
children: /* @__PURE__ */ l(e, {})
|
|
37
37
|
})
|
|
38
38
|
}),
|
|
39
39
|
/* @__PURE__ */ l(s, {
|
|
40
40
|
path: "clients",
|
|
41
|
-
element: /* @__PURE__ */ l(
|
|
41
|
+
element: /* @__PURE__ */ l(j, {
|
|
42
42
|
pageId: "clients",
|
|
43
43
|
children: /* @__PURE__ */ l(d, {})
|
|
44
44
|
})
|
|
45
45
|
}),
|
|
46
46
|
/* @__PURE__ */ l(s, {
|
|
47
47
|
path: "clients/:id",
|
|
48
|
-
element: /* @__PURE__ */ l(
|
|
48
|
+
element: /* @__PURE__ */ l(j, {
|
|
49
49
|
pageId: "client-detail",
|
|
50
50
|
children: /* @__PURE__ */ l(f, {})
|
|
51
51
|
})
|
|
52
52
|
}),
|
|
53
53
|
/* @__PURE__ */ l(s, {
|
|
54
54
|
path: "engagements",
|
|
55
|
-
element: /* @__PURE__ */ l(
|
|
55
|
+
element: /* @__PURE__ */ l(j, {
|
|
56
56
|
pageId: "engagements",
|
|
57
57
|
children: /* @__PURE__ */ l(p, {})
|
|
58
58
|
})
|
|
59
59
|
}),
|
|
60
60
|
/* @__PURE__ */ l(s, {
|
|
61
61
|
path: "engagements/:id",
|
|
62
|
-
element: /* @__PURE__ */ l(
|
|
62
|
+
element: /* @__PURE__ */ l(j, {
|
|
63
63
|
pageId: "engagement-detail",
|
|
64
64
|
children: /* @__PURE__ */ l(m, {})
|
|
65
65
|
})
|
|
66
66
|
}),
|
|
67
67
|
/* @__PURE__ */ l(s, {
|
|
68
68
|
path: "matters",
|
|
69
|
-
element: /* @__PURE__ */ l(
|
|
69
|
+
element: /* @__PURE__ */ l(j, {
|
|
70
70
|
pageId: "matters",
|
|
71
71
|
children: /* @__PURE__ */ l(h, {})
|
|
72
72
|
})
|
|
73
73
|
}),
|
|
74
74
|
/* @__PURE__ */ l(s, {
|
|
75
75
|
path: "time",
|
|
76
|
-
element: /* @__PURE__ */ l(
|
|
76
|
+
element: /* @__PURE__ */ l(j, {
|
|
77
77
|
pageId: "time",
|
|
78
78
|
children: /* @__PURE__ */ l(g, {})
|
|
79
79
|
})
|
|
80
80
|
}),
|
|
81
81
|
/* @__PURE__ */ l(s, {
|
|
82
82
|
path: "invoices",
|
|
83
|
-
element: /* @__PURE__ */ l(
|
|
83
|
+
element: /* @__PURE__ */ l(j, {
|
|
84
84
|
pageId: "invoices",
|
|
85
85
|
children: /* @__PURE__ */ l(_, {})
|
|
86
86
|
})
|
|
87
87
|
}),
|
|
88
88
|
/* @__PURE__ */ l(s, {
|
|
89
89
|
path: "trust",
|
|
90
|
-
element: /* @__PURE__ */ l(
|
|
90
|
+
element: /* @__PURE__ */ l(j, {
|
|
91
91
|
pageId: "trust",
|
|
92
92
|
children: /* @__PURE__ */ l(v, {})
|
|
93
93
|
})
|
|
94
94
|
}),
|
|
95
95
|
/* @__PURE__ */ l(s, {
|
|
96
96
|
path: "compliance",
|
|
97
|
-
element: /* @__PURE__ */ l(
|
|
97
|
+
element: /* @__PURE__ */ l(j, {
|
|
98
98
|
pageId: "compliance",
|
|
99
99
|
children: /* @__PURE__ */ l(y, {})
|
|
100
100
|
})
|
|
101
101
|
}),
|
|
102
|
+
/* @__PURE__ */ l(s, {
|
|
103
|
+
path: "compliance/credentials",
|
|
104
|
+
element: /* @__PURE__ */ l(j, {
|
|
105
|
+
pageId: "compliance",
|
|
106
|
+
children: /* @__PURE__ */ l(b, {})
|
|
107
|
+
})
|
|
108
|
+
}),
|
|
102
109
|
/* @__PURE__ */ l(s, {
|
|
103
110
|
path: "conflicts",
|
|
104
|
-
element: /* @__PURE__ */ l(
|
|
111
|
+
element: /* @__PURE__ */ l(j, {
|
|
105
112
|
pageId: "conflicts",
|
|
106
|
-
children: /* @__PURE__ */ l(
|
|
113
|
+
children: /* @__PURE__ */ l(x, {})
|
|
107
114
|
})
|
|
108
115
|
}),
|
|
109
116
|
/* @__PURE__ */ l(s, {
|
|
110
117
|
path: "documents",
|
|
111
|
-
element: /* @__PURE__ */ l(
|
|
118
|
+
element: /* @__PURE__ */ l(j, {
|
|
112
119
|
pageId: "documents",
|
|
113
|
-
children: /* @__PURE__ */ l(
|
|
120
|
+
children: /* @__PURE__ */ l(S, {})
|
|
114
121
|
})
|
|
115
122
|
}),
|
|
116
123
|
/* @__PURE__ */ l(s, {
|
|
117
124
|
path: "practice-areas",
|
|
118
|
-
element: /* @__PURE__ */ l(
|
|
125
|
+
element: /* @__PURE__ */ l(j, {
|
|
119
126
|
pageId: "practice-areas",
|
|
120
|
-
children: /* @__PURE__ */ l(
|
|
127
|
+
children: /* @__PURE__ */ l(C, {})
|
|
121
128
|
})
|
|
122
129
|
}),
|
|
123
130
|
/* @__PURE__ */ l(s, {
|
|
124
131
|
path: "analytics",
|
|
125
|
-
element: /* @__PURE__ */ l(
|
|
132
|
+
element: /* @__PURE__ */ l(j, {
|
|
126
133
|
pageId: "analytics",
|
|
127
|
-
children: /* @__PURE__ */ l(
|
|
134
|
+
children: /* @__PURE__ */ l(w, {})
|
|
128
135
|
})
|
|
129
136
|
}),
|
|
130
137
|
/* @__PURE__ */ l(s, {
|
|
131
138
|
path: "signatures",
|
|
132
|
-
element: /* @__PURE__ */ l(
|
|
139
|
+
element: /* @__PURE__ */ l(j, {
|
|
133
140
|
pageId: "signatures",
|
|
134
|
-
children: /* @__PURE__ */ l(
|
|
141
|
+
children: /* @__PURE__ */ l(T, {})
|
|
135
142
|
})
|
|
136
143
|
}),
|
|
137
144
|
/* @__PURE__ */ l(s, {
|
|
138
145
|
path: "my-signatures",
|
|
139
|
-
element: /* @__PURE__ */ l(
|
|
146
|
+
element: /* @__PURE__ */ l(j, {
|
|
140
147
|
pageId: "my-signatures",
|
|
141
|
-
children: /* @__PURE__ */ l(
|
|
148
|
+
children: /* @__PURE__ */ l(E, {})
|
|
142
149
|
})
|
|
143
150
|
}),
|
|
144
151
|
/* @__PURE__ */ l(s, {
|
|
145
152
|
path: "client-portal-access",
|
|
146
|
-
element: /* @__PURE__ */ l(
|
|
153
|
+
element: /* @__PURE__ */ l(j, {
|
|
147
154
|
pageId: "client-portal-access",
|
|
148
|
-
children: /* @__PURE__ */ l(
|
|
155
|
+
children: /* @__PURE__ */ l(D, {})
|
|
149
156
|
})
|
|
150
157
|
}),
|
|
151
158
|
/* @__PURE__ */ l(s, {
|
|
152
159
|
path: "portal",
|
|
153
|
-
element: /* @__PURE__ */ l(
|
|
160
|
+
element: /* @__PURE__ */ l(j, {
|
|
154
161
|
pageId: "portal",
|
|
155
|
-
children: /* @__PURE__ */ l(
|
|
162
|
+
children: /* @__PURE__ */ l(O, {})
|
|
156
163
|
})
|
|
157
164
|
}),
|
|
158
165
|
/* @__PURE__ */ l(s, {
|
|
@@ -166,6 +173,6 @@ function j() {
|
|
|
166
173
|
});
|
|
167
174
|
}
|
|
168
175
|
//#endregion
|
|
169
|
-
export {
|
|
176
|
+
export { M as ProServiceWorldRoutes };
|
|
170
177
|
|
|
171
178
|
//# sourceMappingURL=ProServiceWorldRoutes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProServiceWorldRoutes.js","names":[],"sources":["../../src/proserviceworld/ProServiceWorldRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, type ReactNode } from 'react';\nimport { Navigate, Route, Routes } from 'react-router';\nimport { Loader2 } from 'lucide-react';\nimport { DashboardPage } from './pages/DashboardPage';\nimport { usePageViewAnalytics } from './hooks/usePageViewAnalytics';\nimport { FeatureFlaggedPage } from './components/FeatureFlaggedPage';\n\nconst ClientsPage = lazy(() =>\n import('./pages/ClientsPage').then((m) => ({ default: m.ClientsPage }))\n);\nconst ClientDetailPage = lazy(() =>\n import('./pages/ClientDetailPage').then((m) => ({ default: m.ClientDetailPage }))\n);\nconst EngagementsPage = lazy(() =>\n import('./pages/EngagementsPage').then((m) => ({ default: m.EngagementsPage }))\n);\nconst EngagementDetailPage = lazy(() =>\n import('./pages/EngagementDetailPage').then((m) => ({ default: m.EngagementDetailPage }))\n);\nconst MattersPage = lazy(() =>\n import('./pages/MattersPage').then((m) => ({ default: m.MattersPage }))\n);\nconst TimePage = lazy(() => import('./pages/TimePage').then((m) => ({ default: m.TimePage })));\nconst InvoicesPage = lazy(() =>\n import('./pages/InvoicesPage').then((m) => ({ default: m.InvoicesPage }))\n);\nconst TrustPage = lazy(() => import('./pages/TrustPage').then((m) => ({ default: m.TrustPage })));\nconst CompliancePage = lazy(() =>\n import('./pages/CompliancePage').then((m) => ({ default: m.CompliancePage }))\n);\nconst ConflictsPage = lazy(() =>\n import('./pages/ConflictsPage').then((m) => ({ default: m.ConflictsPage }))\n);\nconst DocumentsPage = lazy(() =>\n import('./pages/DocumentsPage').then((m) => ({ default: m.DocumentsPage }))\n);\nconst PracticeAreasPage = lazy(() =>\n import('./pages/PracticeAreasPage').then((m) => ({ default: m.PracticeAreasPage }))\n);\nconst AnalyticsPage = lazy(() =>\n import('./pages/AnalyticsPage').then((m) => ({ default: m.AnalyticsPage }))\n);\nconst SignaturesPage = lazy(() =>\n import('./pages/SignaturesPage').then((m) => ({ default: m.SignaturesPage }))\n);\nconst MySignaturesPage = lazy(() =>\n import('./pages/MySignaturesPage').then((m) => ({ default: m.MySignaturesPage }))\n);\nconst ClientPortalAccessPage = lazy(() =>\n import('./pages/ClientPortalAccessPage').then((m) => ({ default: m.ClientPortalAccessPage }))\n);\nconst MyPortalPage = lazy(() =>\n import('./pages/MyPortalPage').then((m) => ({ default: m.MyPortalPage }))\n);\n\nfunction PageLoader() {\n return (\n <div className=\"flex min-h-[320px] items-center justify-center\">\n <Loader2 className=\"h-8 w-8 animate-spin text-accent\" />\n </div>\n );\n}\n\nfunction PageViewTracker() {\n usePageViewAnalytics();\n return null;\n}\n\nfunction Gate({ pageId, children }: { pageId: string; children: ReactNode }) {\n return (\n <FeatureFlaggedPage pageId={pageId}>\n <Suspense fallback={<PageLoader />}>{children}</Suspense>\n </FeatureFlaggedPage>\n );\n}\n\nexport function ProServiceWorldRoutes() {\n return (\n <Suspense fallback={<PageLoader />}>\n <PageViewTracker />\n <Routes>\n <Route\n index\n element={\n <Gate pageId=\"dashboard\">\n <DashboardPage />\n </Gate>\n }\n />\n <Route\n path=\"clients\"\n element={\n <Gate pageId=\"clients\">\n <ClientsPage />\n </Gate>\n }\n />\n <Route\n path=\"clients/:id\"\n element={\n <Gate pageId=\"client-detail\">\n <ClientDetailPage />\n </Gate>\n }\n />\n <Route\n path=\"engagements\"\n element={\n <Gate pageId=\"engagements\">\n <EngagementsPage />\n </Gate>\n }\n />\n <Route\n path=\"engagements/:id\"\n element={\n <Gate pageId=\"engagement-detail\">\n <EngagementDetailPage />\n </Gate>\n }\n />\n <Route\n path=\"matters\"\n element={\n <Gate pageId=\"matters\">\n <MattersPage />\n </Gate>\n }\n />\n <Route\n path=\"time\"\n element={\n <Gate pageId=\"time\">\n <TimePage />\n </Gate>\n }\n />\n <Route\n path=\"invoices\"\n element={\n <Gate pageId=\"invoices\">\n <InvoicesPage />\n </Gate>\n }\n />\n <Route\n path=\"trust\"\n element={\n <Gate pageId=\"trust\">\n <TrustPage />\n </Gate>\n }\n />\n <Route\n path=\"compliance\"\n element={\n <Gate pageId=\"compliance\">\n <CompliancePage />\n </Gate>\n }\n />\n <Route\n path=\"conflicts\"\n element={\n <Gate pageId=\"conflicts\">\n <ConflictsPage />\n </Gate>\n }\n />\n <Route\n path=\"documents\"\n element={\n <Gate pageId=\"documents\">\n <DocumentsPage />\n </Gate>\n }\n />\n <Route\n path=\"practice-areas\"\n element={\n <Gate pageId=\"practice-areas\">\n <PracticeAreasPage />\n </Gate>\n }\n />\n <Route\n path=\"analytics\"\n element={\n <Gate pageId=\"analytics\">\n <AnalyticsPage />\n </Gate>\n }\n />\n <Route\n path=\"signatures\"\n element={\n <Gate pageId=\"signatures\">\n <SignaturesPage />\n </Gate>\n }\n />\n <Route\n path=\"my-signatures\"\n element={\n <Gate pageId=\"my-signatures\">\n <MySignaturesPage />\n </Gate>\n }\n />\n <Route\n path=\"client-portal-access\"\n element={\n <Gate pageId=\"client-portal-access\">\n <ClientPortalAccessPage />\n </Gate>\n }\n />\n <Route\n path=\"portal\"\n element={\n <Gate pageId=\"portal\">\n <MyPortalPage />\n </Gate>\n }\n />\n <Route path=\"*\" element={<Navigate to=\"\" replace />} />\n </Routes>\n </Suspense>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProServiceWorldRoutes.js","names":[],"sources":["../../src/proserviceworld/ProServiceWorldRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, type ReactNode } from 'react';\nimport { Navigate, Route, Routes } from 'react-router';\nimport { Loader2 } from 'lucide-react';\nimport { DashboardPage } from './pages/DashboardPage';\nimport { usePageViewAnalytics } from './hooks/usePageViewAnalytics';\nimport { FeatureFlaggedPage } from './components/FeatureFlaggedPage';\n\nconst ClientsPage = lazy(() =>\n import('./pages/ClientsPage').then((m) => ({ default: m.ClientsPage }))\n);\nconst ClientDetailPage = lazy(() =>\n import('./pages/ClientDetailPage').then((m) => ({ default: m.ClientDetailPage }))\n);\nconst EngagementsPage = lazy(() =>\n import('./pages/EngagementsPage').then((m) => ({ default: m.EngagementsPage }))\n);\nconst EngagementDetailPage = lazy(() =>\n import('./pages/EngagementDetailPage').then((m) => ({ default: m.EngagementDetailPage }))\n);\nconst MattersPage = lazy(() =>\n import('./pages/MattersPage').then((m) => ({ default: m.MattersPage }))\n);\nconst TimePage = lazy(() => import('./pages/TimePage').then((m) => ({ default: m.TimePage })));\nconst InvoicesPage = lazy(() =>\n import('./pages/InvoicesPage').then((m) => ({ default: m.InvoicesPage }))\n);\nconst TrustPage = lazy(() => import('./pages/TrustPage').then((m) => ({ default: m.TrustPage })));\nconst CompliancePage = lazy(() =>\n import('./pages/CompliancePage').then((m) => ({ default: m.CompliancePage }))\n);\nconst PractitionerCredentialsPage = lazy(() =>\n import('./pages/PractitionerCredentialsPage').then((m) => ({\n default: m.PractitionerCredentialsPage,\n }))\n);\nconst ConflictsPage = lazy(() =>\n import('./pages/ConflictsPage').then((m) => ({ default: m.ConflictsPage }))\n);\nconst DocumentsPage = lazy(() =>\n import('./pages/DocumentsPage').then((m) => ({ default: m.DocumentsPage }))\n);\nconst PracticeAreasPage = lazy(() =>\n import('./pages/PracticeAreasPage').then((m) => ({ default: m.PracticeAreasPage }))\n);\nconst AnalyticsPage = lazy(() =>\n import('./pages/AnalyticsPage').then((m) => ({ default: m.AnalyticsPage }))\n);\nconst SignaturesPage = lazy(() =>\n import('./pages/SignaturesPage').then((m) => ({ default: m.SignaturesPage }))\n);\nconst MySignaturesPage = lazy(() =>\n import('./pages/MySignaturesPage').then((m) => ({ default: m.MySignaturesPage }))\n);\nconst ClientPortalAccessPage = lazy(() =>\n import('./pages/ClientPortalAccessPage').then((m) => ({ default: m.ClientPortalAccessPage }))\n);\nconst MyPortalPage = lazy(() =>\n import('./pages/MyPortalPage').then((m) => ({ default: m.MyPortalPage }))\n);\n\nfunction PageLoader() {\n return (\n <div className=\"flex min-h-[320px] items-center justify-center\">\n <Loader2 className=\"h-8 w-8 animate-spin text-accent\" />\n </div>\n );\n}\n\nfunction PageViewTracker() {\n usePageViewAnalytics();\n return null;\n}\n\nfunction Gate({ pageId, children }: { pageId: string; children: ReactNode }) {\n return (\n <FeatureFlaggedPage pageId={pageId}>\n <Suspense fallback={<PageLoader />}>{children}</Suspense>\n </FeatureFlaggedPage>\n );\n}\n\nexport function ProServiceWorldRoutes() {\n return (\n <Suspense fallback={<PageLoader />}>\n <PageViewTracker />\n <Routes>\n <Route\n index\n element={\n <Gate pageId=\"dashboard\">\n <DashboardPage />\n </Gate>\n }\n />\n <Route\n path=\"clients\"\n element={\n <Gate pageId=\"clients\">\n <ClientsPage />\n </Gate>\n }\n />\n <Route\n path=\"clients/:id\"\n element={\n <Gate pageId=\"client-detail\">\n <ClientDetailPage />\n </Gate>\n }\n />\n <Route\n path=\"engagements\"\n element={\n <Gate pageId=\"engagements\">\n <EngagementsPage />\n </Gate>\n }\n />\n <Route\n path=\"engagements/:id\"\n element={\n <Gate pageId=\"engagement-detail\">\n <EngagementDetailPage />\n </Gate>\n }\n />\n <Route\n path=\"matters\"\n element={\n <Gate pageId=\"matters\">\n <MattersPage />\n </Gate>\n }\n />\n <Route\n path=\"time\"\n element={\n <Gate pageId=\"time\">\n <TimePage />\n </Gate>\n }\n />\n <Route\n path=\"invoices\"\n element={\n <Gate pageId=\"invoices\">\n <InvoicesPage />\n </Gate>\n }\n />\n <Route\n path=\"trust\"\n element={\n <Gate pageId=\"trust\">\n <TrustPage />\n </Gate>\n }\n />\n <Route\n path=\"compliance\"\n element={\n <Gate pageId=\"compliance\">\n <CompliancePage />\n </Gate>\n }\n />\n <Route\n path=\"compliance/credentials\"\n element={\n <Gate pageId=\"compliance\">\n <PractitionerCredentialsPage />\n </Gate>\n }\n />\n <Route\n path=\"conflicts\"\n element={\n <Gate pageId=\"conflicts\">\n <ConflictsPage />\n </Gate>\n }\n />\n <Route\n path=\"documents\"\n element={\n <Gate pageId=\"documents\">\n <DocumentsPage />\n </Gate>\n }\n />\n <Route\n path=\"practice-areas\"\n element={\n <Gate pageId=\"practice-areas\">\n <PracticeAreasPage />\n </Gate>\n }\n />\n <Route\n path=\"analytics\"\n element={\n <Gate pageId=\"analytics\">\n <AnalyticsPage />\n </Gate>\n }\n />\n <Route\n path=\"signatures\"\n element={\n <Gate pageId=\"signatures\">\n <SignaturesPage />\n </Gate>\n }\n />\n <Route\n path=\"my-signatures\"\n element={\n <Gate pageId=\"my-signatures\">\n <MySignaturesPage />\n </Gate>\n }\n />\n <Route\n path=\"client-portal-access\"\n element={\n <Gate pageId=\"client-portal-access\">\n <ClientPortalAccessPage />\n </Gate>\n }\n />\n <Route\n path=\"portal\"\n element={\n <Gate pageId=\"portal\">\n <MyPortalPage />\n </Gate>\n }\n />\n <Route path=\"*\" element={<Navigate to=\"\" replace />} />\n </Routes>\n </Suspense>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CredentialDirectory.d.ts","sourceRoot":"","sources":["../../../src/proserviceworld/components/CredentialDirectory.tsx"],"names":[],"mappings":"AAMA,0EAA0E;AAC1E,wBAAgB,mBAAmB,gCAkLlC"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { Empty as e, ErrorState as t, LoadingBlock as n, SectionCard as r, humanize as i } from "./ui.js";
|
|
2
|
+
import { useCredentialDirectory as a, useEducationCredits as o } from "../hooks/usePractitionerCredentials.js";
|
|
3
|
+
import { credentialSourceLink as s } from "../utils/credentialSourceLink.js";
|
|
4
|
+
import { useState as c } from "react";
|
|
5
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
6
|
+
import { Button as d } from "@burdenoff/fe-libs/ui";
|
|
7
|
+
//#region src/proserviceworld/components/CredentialDirectory.tsx
|
|
8
|
+
function f() {
|
|
9
|
+
let [f, p] = c(0), [m, h] = c(), [g, _] = c(0), v = a(f), y = o(m, g), b = v.data;
|
|
10
|
+
if (v.isLoading) return /* @__PURE__ */ l(n, {});
|
|
11
|
+
if (v.error) return /* @__PURE__ */ l(t, {
|
|
12
|
+
error: v.error,
|
|
13
|
+
onRetry: () => void v.refetch()
|
|
14
|
+
});
|
|
15
|
+
if (!b) return /* @__PURE__ */ l(e, {
|
|
16
|
+
title: "Choose a workspace",
|
|
17
|
+
description: "Sign in to read firm records."
|
|
18
|
+
});
|
|
19
|
+
let x = b.pswPractitioners.hasMore || b.pswIssuingBodies.hasMore || b.pswComplianceObligations.hasMore;
|
|
20
|
+
return /* @__PURE__ */ u("div", {
|
|
21
|
+
className: "space-y-4",
|
|
22
|
+
children: [
|
|
23
|
+
/* @__PURE__ */ l(r, {
|
|
24
|
+
title: "Practitioners and issuing bodies",
|
|
25
|
+
children: /* @__PURE__ */ u("div", {
|
|
26
|
+
className: "grid gap-4 sm:grid-cols-2",
|
|
27
|
+
children: [/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ u("h3", {
|
|
28
|
+
className: "font-medium",
|
|
29
|
+
children: [
|
|
30
|
+
"Practitioners (",
|
|
31
|
+
b.pswPractitioners.totalCount,
|
|
32
|
+
")"
|
|
33
|
+
]
|
|
34
|
+
}), b.pswPractitioners.items.map((e) => /* @__PURE__ */ u("p", {
|
|
35
|
+
className: "my-2 break-all",
|
|
36
|
+
children: [e.displayName, /* @__PURE__ */ u("span", {
|
|
37
|
+
className: "block text-xs",
|
|
38
|
+
children: [
|
|
39
|
+
"ID: ",
|
|
40
|
+
e.id,
|
|
41
|
+
" · Revision ",
|
|
42
|
+
e.revision
|
|
43
|
+
]
|
|
44
|
+
})]
|
|
45
|
+
}, e.id))] }), /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ u("h3", {
|
|
46
|
+
className: "font-medium",
|
|
47
|
+
children: [
|
|
48
|
+
"Issuing bodies (",
|
|
49
|
+
b.pswIssuingBodies.totalCount,
|
|
50
|
+
")"
|
|
51
|
+
]
|
|
52
|
+
}), b.pswIssuingBodies.items.map((e) => /* @__PURE__ */ u("p", {
|
|
53
|
+
className: "my-2 break-all",
|
|
54
|
+
children: [
|
|
55
|
+
e.displayName,
|
|
56
|
+
" · ",
|
|
57
|
+
e.jurisdiction,
|
|
58
|
+
/* @__PURE__ */ u("span", {
|
|
59
|
+
className: "block text-xs",
|
|
60
|
+
children: [
|
|
61
|
+
e.credentialCategory ?? "Category unknown",
|
|
62
|
+
" · ID: ",
|
|
63
|
+
e.id,
|
|
64
|
+
" · Revision",
|
|
65
|
+
" ",
|
|
66
|
+
e.revision
|
|
67
|
+
]
|
|
68
|
+
})
|
|
69
|
+
]
|
|
70
|
+
}, e.id))] })]
|
|
71
|
+
})
|
|
72
|
+
}),
|
|
73
|
+
/* @__PURE__ */ u(r, {
|
|
74
|
+
title: `Sourced obligations (${b.pswComplianceObligations.totalCount})`,
|
|
75
|
+
children: [b.pswComplianceObligations.items.length === 0 && /* @__PURE__ */ l("p", { children: "No sourced obligations on this page." }), /* @__PURE__ */ l("div", {
|
|
76
|
+
className: "space-y-3",
|
|
77
|
+
children: b.pswComplianceObligations.items.map((e) => /* @__PURE__ */ u("article", {
|
|
78
|
+
className: "min-w-0 rounded border border-border p-3",
|
|
79
|
+
children: [
|
|
80
|
+
/* @__PURE__ */ l("h3", {
|
|
81
|
+
className: "font-semibold",
|
|
82
|
+
children: e.title
|
|
83
|
+
}),
|
|
84
|
+
/* @__PURE__ */ u("p", {
|
|
85
|
+
className: "break-all text-xs",
|
|
86
|
+
children: [
|
|
87
|
+
"ID: ",
|
|
88
|
+
e.id,
|
|
89
|
+
" · Revision ",
|
|
90
|
+
e.revision
|
|
91
|
+
]
|
|
92
|
+
}),
|
|
93
|
+
/* @__PURE__ */ l("p", { children: e.category === null ? "Category unknown; completion cannot be inferred." : `${e.acceptedUnits} accepted / ${e.requiredUnits} required ${e.unitLabel} · ${e.category}` }),
|
|
94
|
+
/* @__PURE__ */ l("p", {
|
|
95
|
+
className: "break-words",
|
|
96
|
+
children: e.policyDescription
|
|
97
|
+
}),
|
|
98
|
+
s(e.policySourceUrl) && /* @__PURE__ */ u("a", {
|
|
99
|
+
href: s(e.policySourceUrl) ?? void 0,
|
|
100
|
+
target: "_blank",
|
|
101
|
+
rel: "noopener noreferrer",
|
|
102
|
+
className: "block underline",
|
|
103
|
+
children: [
|
|
104
|
+
"Policy source reference:",
|
|
105
|
+
" ",
|
|
106
|
+
new URL(s(e.policySourceUrl) ?? e.policySourceUrl).hostname
|
|
107
|
+
]
|
|
108
|
+
}),
|
|
109
|
+
/* @__PURE__ */ u("p", {
|
|
110
|
+
className: "text-sm",
|
|
111
|
+
children: [
|
|
112
|
+
"Period ",
|
|
113
|
+
e.periodStart,
|
|
114
|
+
" to ",
|
|
115
|
+
e.periodEnd,
|
|
116
|
+
" (exclusive). Due ",
|
|
117
|
+
e.dueAt,
|
|
118
|
+
". Source zone ",
|
|
119
|
+
e.sourceTimezone,
|
|
120
|
+
"."
|
|
121
|
+
]
|
|
122
|
+
}),
|
|
123
|
+
/* @__PURE__ */ u("p", {
|
|
124
|
+
className: "text-sm",
|
|
125
|
+
children: [
|
|
126
|
+
i(e.state),
|
|
127
|
+
" · Reminder: ",
|
|
128
|
+
i(e.reminderState)
|
|
129
|
+
]
|
|
130
|
+
}),
|
|
131
|
+
/* @__PURE__ */ l(d, {
|
|
132
|
+
variant: "outline",
|
|
133
|
+
size: "sm",
|
|
134
|
+
onClick: () => {
|
|
135
|
+
h(e.id), _(0);
|
|
136
|
+
},
|
|
137
|
+
children: "Education credits"
|
|
138
|
+
})
|
|
139
|
+
]
|
|
140
|
+
}, e.id))
|
|
141
|
+
})]
|
|
142
|
+
}),
|
|
143
|
+
/* @__PURE__ */ u("div", {
|
|
144
|
+
className: "flex flex-wrap items-center justify-between gap-2",
|
|
145
|
+
children: [
|
|
146
|
+
/* @__PURE__ */ l(d, {
|
|
147
|
+
variant: "outline",
|
|
148
|
+
disabled: !f || v.isFetching,
|
|
149
|
+
onClick: () => {
|
|
150
|
+
p(Math.max(0, f - 25)), h(void 0);
|
|
151
|
+
},
|
|
152
|
+
children: "Previous records"
|
|
153
|
+
}),
|
|
154
|
+
/* @__PURE__ */ u("span", { children: ["Page ", Math.floor(f / 25) + 1] }),
|
|
155
|
+
/* @__PURE__ */ l(d, {
|
|
156
|
+
variant: "outline",
|
|
157
|
+
disabled: !x || v.isFetching,
|
|
158
|
+
onClick: () => {
|
|
159
|
+
p(f + 25), h(void 0);
|
|
160
|
+
},
|
|
161
|
+
children: "Next records"
|
|
162
|
+
})
|
|
163
|
+
]
|
|
164
|
+
}),
|
|
165
|
+
m && /* @__PURE__ */ u(r, {
|
|
166
|
+
title: "Education credit history",
|
|
167
|
+
children: [y.isLoading ? /* @__PURE__ */ l(n, {}) : y.error ? /* @__PURE__ */ l(t, {
|
|
168
|
+
error: y.error,
|
|
169
|
+
onRetry: () => void y.refetch()
|
|
170
|
+
}) : /* @__PURE__ */ u("div", {
|
|
171
|
+
className: "space-y-3",
|
|
172
|
+
children: [y.data?.items.length === 0 && /* @__PURE__ */ l("p", { children: "No education credits recorded." }), y.data?.items.map((e) => /* @__PURE__ */ u("article", {
|
|
173
|
+
className: "min-w-0 rounded border border-border p-3",
|
|
174
|
+
children: [
|
|
175
|
+
/* @__PURE__ */ u("h3", {
|
|
176
|
+
className: "font-semibold",
|
|
177
|
+
children: [
|
|
178
|
+
e.provider,
|
|
179
|
+
" · ",
|
|
180
|
+
e.amount,
|
|
181
|
+
" ",
|
|
182
|
+
e.unitLabel
|
|
183
|
+
]
|
|
184
|
+
}),
|
|
185
|
+
/* @__PURE__ */ u("p", { children: [
|
|
186
|
+
e.category ?? "Category unknown",
|
|
187
|
+
" · ",
|
|
188
|
+
i(e.reviewState)
|
|
189
|
+
] }),
|
|
190
|
+
/* @__PURE__ */ u("p", {
|
|
191
|
+
className: "break-all text-xs",
|
|
192
|
+
children: [
|
|
193
|
+
"ID: ",
|
|
194
|
+
e.id,
|
|
195
|
+
" · Revision ",
|
|
196
|
+
e.revision,
|
|
197
|
+
" · Policy revision",
|
|
198
|
+
" ",
|
|
199
|
+
e.obligationRevision
|
|
200
|
+
]
|
|
201
|
+
}),
|
|
202
|
+
/* @__PURE__ */ u("p", {
|
|
203
|
+
className: "break-words",
|
|
204
|
+
children: [
|
|
205
|
+
"Activity: ",
|
|
206
|
+
e.activityReference ?? "Unknown",
|
|
207
|
+
" · Completed",
|
|
208
|
+
" ",
|
|
209
|
+
e.completedAt
|
|
210
|
+
]
|
|
211
|
+
}),
|
|
212
|
+
e.duplicateReviewRequired && /* @__PURE__ */ l("p", { children: "Possible duplicate: review required before counting." }),
|
|
213
|
+
e.predecessorId && /* @__PURE__ */ u("p", {
|
|
214
|
+
className: "break-all text-xs",
|
|
215
|
+
children: ["Corrects credit ", e.predecessorId]
|
|
216
|
+
}),
|
|
217
|
+
/* @__PURE__ */ l("p", {
|
|
218
|
+
className: "break-words",
|
|
219
|
+
children: e.reviewNote
|
|
220
|
+
}),
|
|
221
|
+
/* @__PURE__ */ u("p", {
|
|
222
|
+
className: "break-all text-xs",
|
|
223
|
+
children: [
|
|
224
|
+
"Evidence version ",
|
|
225
|
+
e.evidenceVersionId,
|
|
226
|
+
" · SHA-256 ",
|
|
227
|
+
e.evidenceSha256
|
|
228
|
+
]
|
|
229
|
+
})
|
|
230
|
+
]
|
|
231
|
+
}, e.id))]
|
|
232
|
+
}), /* @__PURE__ */ u("div", {
|
|
233
|
+
className: "mt-4 flex flex-wrap justify-between gap-2",
|
|
234
|
+
children: [/* @__PURE__ */ l(d, {
|
|
235
|
+
variant: "outline",
|
|
236
|
+
disabled: !g || y.isFetching,
|
|
237
|
+
onClick: () => _(Math.max(0, g - 25)),
|
|
238
|
+
children: "Previous credits"
|
|
239
|
+
}), /* @__PURE__ */ l(d, {
|
|
240
|
+
variant: "outline",
|
|
241
|
+
disabled: !y.data?.hasMore || y.isFetching,
|
|
242
|
+
onClick: () => _(g + 25),
|
|
243
|
+
children: "Next credits"
|
|
244
|
+
})]
|
|
245
|
+
})]
|
|
246
|
+
})
|
|
247
|
+
]
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
//#endregion
|
|
251
|
+
export { f as CredentialDirectory };
|
|
252
|
+
|
|
253
|
+
//# sourceMappingURL=CredentialDirectory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CredentialDirectory.js","names":[],"sources":["../../../src/proserviceworld/components/CredentialDirectory.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { useCredentialDirectory, useEducationCredits } from '../hooks/usePractitionerCredentials';\nimport { credentialSourceLink } from '../utils/credentialSourceLink';\nimport { Empty, ErrorState, LoadingBlock, SectionCard, humanize } from './ui';\n\n/** Parent keys this view by the complete actor/workspace/tenant tuple. */\nexport function CredentialDirectory() {\n const [offset, setOffset] = useState(0);\n const [obligationId, setObligationId] = useState<string>();\n const [creditOffset, setCreditOffset] = useState(0);\n const query = useCredentialDirectory(offset);\n const credits = useEducationCredits(obligationId, creditOffset);\n const data = query.data;\n if (query.isLoading) return <LoadingBlock />;\n if (query.error) return <ErrorState error={query.error} onRetry={() => void query.refetch()} />;\n if (!data)\n return <Empty title=\"Choose a workspace\" description=\"Sign in to read firm records.\" />;\n const more =\n data.pswPractitioners.hasMore ||\n data.pswIssuingBodies.hasMore ||\n data.pswComplianceObligations.hasMore;\n return (\n <div className=\"space-y-4\">\n <SectionCard title=\"Practitioners and issuing bodies\">\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div>\n <h3 className=\"font-medium\">Practitioners ({data.pswPractitioners.totalCount})</h3>\n {data.pswPractitioners.items.map((record) => (\n <p key={record.id} className=\"my-2 break-all\">\n {record.displayName}\n <span className=\"block text-xs\">\n ID: {record.id} · Revision {record.revision}\n </span>\n </p>\n ))}\n </div>\n <div>\n <h3 className=\"font-medium\">Issuing bodies ({data.pswIssuingBodies.totalCount})</h3>\n {data.pswIssuingBodies.items.map((record) => (\n <p key={record.id} className=\"my-2 break-all\">\n {record.displayName} · {record.jurisdiction}\n <span className=\"block text-xs\">\n {record.credentialCategory ?? 'Category unknown'} · ID: {record.id} · Revision{' '}\n {record.revision}\n </span>\n </p>\n ))}\n </div>\n </div>\n </SectionCard>\n <SectionCard title={`Sourced obligations (${data.pswComplianceObligations.totalCount})`}>\n {data.pswComplianceObligations.items.length === 0 && (\n <p>No sourced obligations on this page.</p>\n )}\n <div className=\"space-y-3\">\n {data.pswComplianceObligations.items.map((record) => (\n <article key={record.id} className=\"min-w-0 rounded border border-border p-3\">\n <h3 className=\"font-semibold\">{record.title}</h3>\n <p className=\"break-all text-xs\">\n ID: {record.id} · Revision {record.revision}\n </p>\n <p>\n {record.category === null\n ? 'Category unknown; completion cannot be inferred.'\n : `${record.acceptedUnits} accepted / ${record.requiredUnits} required ${record.unitLabel} · ${record.category}`}\n </p>\n <p className=\"break-words\">{record.policyDescription}</p>\n {credentialSourceLink(record.policySourceUrl) && (\n <a\n href={credentialSourceLink(record.policySourceUrl) ?? undefined}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"block underline\"\n >\n Policy source reference:{' '}\n {\n new URL(credentialSourceLink(record.policySourceUrl) ?? record.policySourceUrl)\n .hostname\n }\n </a>\n )}\n <p className=\"text-sm\">\n Period {record.periodStart} to {record.periodEnd} (exclusive). Due {record.dueAt}.\n Source zone {record.sourceTimezone}.\n </p>\n <p className=\"text-sm\">\n {humanize(record.state)} · Reminder: {humanize(record.reminderState)}\n </p>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setObligationId(record.id);\n setCreditOffset(0);\n }}\n >\n Education credits\n </Button>\n </article>\n ))}\n </div>\n </SectionCard>\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <Button\n variant=\"outline\"\n disabled={!offset || query.isFetching}\n onClick={() => {\n setOffset(Math.max(0, offset - 25));\n setObligationId(undefined);\n }}\n >\n Previous records\n </Button>\n <span>Page {Math.floor(offset / 25) + 1}</span>\n <Button\n variant=\"outline\"\n disabled={!more || query.isFetching}\n onClick={() => {\n setOffset(offset + 25);\n setObligationId(undefined);\n }}\n >\n Next records\n </Button>\n </div>\n {obligationId && (\n <SectionCard title=\"Education credit history\">\n {credits.isLoading ? (\n <LoadingBlock />\n ) : credits.error ? (\n <ErrorState error={credits.error} onRetry={() => void credits.refetch()} />\n ) : (\n <div className=\"space-y-3\">\n {credits.data?.items.length === 0 && <p>No education credits recorded.</p>}\n {credits.data?.items.map((credit) => (\n <article key={credit.id} className=\"min-w-0 rounded border border-border p-3\">\n <h3 className=\"font-semibold\">\n {credit.provider} · {credit.amount} {credit.unitLabel}\n </h3>\n <p>\n {credit.category ?? 'Category unknown'} · {humanize(credit.reviewState)}\n </p>\n <p className=\"break-all text-xs\">\n ID: {credit.id} · Revision {credit.revision} · Policy revision{' '}\n {credit.obligationRevision}\n </p>\n <p className=\"break-words\">\n Activity: {credit.activityReference ?? 'Unknown'} · Completed{' '}\n {credit.completedAt}\n </p>\n {credit.duplicateReviewRequired && (\n <p>Possible duplicate: review required before counting.</p>\n )}\n {credit.predecessorId && (\n <p className=\"break-all text-xs\">Corrects credit {credit.predecessorId}</p>\n )}\n <p className=\"break-words\">{credit.reviewNote}</p>\n <p className=\"break-all text-xs\">\n Evidence version {credit.evidenceVersionId} · SHA-256 {credit.evidenceSha256}\n </p>\n </article>\n ))}\n </div>\n )}\n <div className=\"mt-4 flex flex-wrap justify-between gap-2\">\n <Button\n variant=\"outline\"\n disabled={!creditOffset || credits.isFetching}\n onClick={() => setCreditOffset(Math.max(0, creditOffset - 25))}\n >\n Previous credits\n </Button>\n <Button\n variant=\"outline\"\n disabled={!credits.data?.hasMore || credits.isFetching}\n onClick={() => setCreditOffset(creditOffset + 25)}\n >\n Next credits\n </Button>\n </div>\n </SectionCard>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function CredentialEvidencePicker({ disabled, onChange, }: {
|
|
2
|
+
disabled: boolean;
|
|
3
|
+
onChange: (evidence: {
|
|
4
|
+
fileId: string;
|
|
5
|
+
versionId: string;
|
|
6
|
+
sha256: string;
|
|
7
|
+
}) => void;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=CredentialEvidencePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CredentialEvidencePicker.d.ts","sourceRoot":"","sources":["../../../src/proserviceworld/components/CredentialEvidencePicker.tsx"],"names":[],"mappings":"AAeA,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACrF,+BAuLA"}
|