@kelpie/ui 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/app/KelpieApp.d.ts.map +1 -1
  2. package/dist/app/KelpieApp.js +16 -1
  3. package/dist/app/KelpieApp.js.map +1 -1
  4. package/dist/components/Shell.d.ts.map +1 -1
  5. package/dist/components/Shell.js +3 -16
  6. package/dist/components/Shell.js.map +1 -1
  7. package/dist/index.d.ts +3 -3
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +2 -2
  10. package/dist/index.js.map +1 -1
  11. package/dist/pages/account/AccountLayout.d.ts.map +1 -1
  12. package/dist/pages/account/AccountLayout.js +15 -7
  13. package/dist/pages/account/AccountLayout.js.map +1 -1
  14. package/dist/registry/context.d.ts +1 -2
  15. package/dist/registry/context.d.ts.map +1 -1
  16. package/dist/registry/context.js +0 -3
  17. package/dist/registry/context.js.map +1 -1
  18. package/dist/registry/contributions.d.ts +1 -12
  19. package/dist/registry/contributions.d.ts.map +1 -1
  20. package/dist/registry/contributions.js +0 -7
  21. package/dist/registry/contributions.js.map +1 -1
  22. package/dist/registry/registry.d.ts +1 -3
  23. package/dist/registry/registry.d.ts.map +1 -1
  24. package/dist/registry/registry.js +0 -6
  25. package/dist/registry/registry.js.map +1 -1
  26. package/dist/registry/visibleNav.d.ts +3 -0
  27. package/dist/registry/visibleNav.d.ts.map +1 -0
  28. package/dist/registry/visibleNav.js +27 -0
  29. package/dist/registry/visibleNav.js.map +1 -0
  30. package/package.json +2 -2
  31. package/src/app/KelpieApp.tsx +26 -1
  32. package/src/components/Shell.tsx +3 -22
  33. package/src/index.ts +1 -4
  34. package/src/pages/account/AccountLayout.tsx +20 -9
  35. package/src/registry/context.ts +0 -5
  36. package/src/registry/contributions.ts +1 -20
  37. package/src/registry/registry.ts +0 -11
  38. package/src/registry/visibleNav.ts +38 -0
@@ -1 +1 @@
1
- {"version":3,"file":"KelpieApp.d.ts","sourceRoot":"","sources":["../../src/app/KelpieApp.tsx"],"names":[],"mappings":"AAkDA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAG3D;;;;;;;;;GASG;AAEH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAA;IACjC,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAUpF"}
1
+ {"version":3,"file":"KelpieApp.d.ts","sourceRoot":"","sources":["../../src/app/KelpieApp.tsx"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAG3D;;;;;;;;;GASG;AAEH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAA;IACjC,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAUpF"}
@@ -52,8 +52,23 @@ import { SessionGate } from './SessionGate.js';
52
52
  export function KelpieApp({ extensions, baseUrl }) {
53
53
  return (_jsx(ApiProvider, { baseUrl: baseUrl, children: _jsx(UiExtensionProvider, { extensions: extensions, children: _jsx(BrowserRouter, { children: _jsx(AppRoutes, {}) }) }) }));
54
54
  }
55
+ /**
56
+ * A module route under `account/` renders inside `AccountLayout`, everything
57
+ * else directly under the shell.
58
+ *
59
+ * The prefix is the whole rule, and it is what makes `nav.account` mean
60
+ * anything: a module contributing a tab there needs its page to keep the tab
61
+ * strip, and a route mounted as a sibling of `account` would lose it the moment
62
+ * the tab was clicked. Core's own account pages are nested for the same reason.
63
+ */
64
+ const ACCOUNT_PREFIX = 'account/';
65
+ function isAccountRoute(route) {
66
+ return route.path.startsWith(ACCOUNT_PREFIX);
67
+ }
55
68
  function AppRoutes() {
56
69
  const moduleRoutes = useModuleRoutes();
57
- return (_jsxs(Routes, { children: [_jsx(Route, { path: "/login", element: _jsx(SignInPage, {}) }), _jsx(Route, { path: "/signup", element: _jsx(SignUpPage, {}) }), _jsx(Route, { path: "/forgot-password", element: _jsx(ForgotPasswordPage, {}) }), _jsx(Route, { path: "/reset-password", element: _jsx(ResetPasswordPage, {}) }), _jsx(Route, { path: "/join", element: _jsx(JoinPage, {}) }), _jsx(Route, { path: "/onboarding/workspace", element: _jsx(WorkspaceStepPage, {}) }), _jsxs(Route, { element: _jsx(SessionGate, {}), children: [_jsx(Route, { path: "/onboarding/invites", element: _jsx(InvitesStepPage, {}) }), _jsx(Route, { path: "/onboarding/handbook", element: _jsx(HandbookStepPage, {}) }), _jsxs(Route, { element: _jsx(Shell, {}), children: [_jsx(Route, { index: true, element: _jsx(Navigate, { to: "/dashboard", replace: true }) }), _jsx(Route, { path: "dashboard", element: _jsx(DashboardPage, {}) }), _jsx(Route, { path: "search", element: _jsx(SearchPage, {}) }), _jsx(Route, { path: "people", element: _jsx(PeoplePage, {}) }), _jsx(Route, { path: "people/:id", element: _jsx(PersonDetail, {}) }), _jsx(Route, { path: "hiring", element: _jsx(HiringPage, {}) }), _jsx(Route, { path: "hiring/:id", element: _jsx(RoleDetail, {}) }), _jsx(Route, { path: "companies", element: _jsx(CompaniesPage, {}) }), _jsx(Route, { path: "companies/:id", element: _jsx(CompanyDetail, {}) }), _jsx(Route, { path: "deals", element: _jsx(DealsPage, {}) }), _jsx(Route, { path: "deals/settings", element: _jsx(DealStageSettingsPage, {}) }), _jsx(Route, { path: "deals/:id", element: _jsx(DealDetail, {}) }), _jsx(Route, { path: "opportunities", element: _jsx(OpportunitiesPage, {}) }), _jsx(Route, { path: "opportunities/settings", element: _jsx(OpportunityStageSettingsPage, {}) }), _jsx(Route, { path: "opportunities/:id", element: _jsx(OpportunityDetail, {}) }), _jsx(Route, { path: "fundraising", element: _jsx(FundraisingPage, {}) }), _jsx(Route, { path: "fundraising/settings", element: _jsx(RaiseStageSettingsPage, {}) }), _jsx(Route, { path: "fundraising/:id", element: _jsx(RaiseDetail, {}) }), _jsx(Route, { path: "partnerships", element: _jsx(PartnershipsPage, {}) }), _jsx(Route, { path: "partnerships/settings", element: _jsx(PartnershipStageSettingsPage, {}) }), _jsx(Route, { path: "partnerships/:id", element: _jsx(PartnershipDetail, {}) }), _jsx(Route, { path: "planning", element: _jsx(PlanningPage, {}) }), _jsx(Route, { path: "decisions", element: _jsx(DecisionsPage, {}) }), _jsx(Route, { path: "forms", element: _jsx(FormsPage, {}) }), _jsx(Route, { path: "forms/:id", element: _jsx(FormDetail, {}) }), _jsx(Route, { path: "handbook", element: _jsx(HandbookLayout, {}) }), _jsx(Route, { path: "handbook/:pageId", element: _jsx(HandbookLayout, {}) }), _jsx(Route, { path: "admin/workspace", element: _jsx(WorkspaceSettingsPage, {}) }), _jsx(Route, { path: "admin/team", element: _jsx(TeamPage, {}) }), _jsx(Route, { path: "admin/data", element: _jsx(DataPage, {}) }), _jsx(Route, { path: "admin/mcp", element: _jsx(McpPage, {}) }), _jsx(Route, { path: "admin/webhooks", element: _jsx(WebhooksPage, {}) }), _jsx(Route, { path: "admin/modules", element: _jsx(ModulesPage, {}) }), _jsxs(Route, { path: "account", element: _jsx(AccountLayout, {}), children: [_jsx(Route, { index: true, element: _jsx(Navigate, { to: "/account/profile", replace: true }) }), _jsx(Route, { path: "profile", element: _jsx(ProfilePage, {}) }), _jsx(Route, { path: "security", element: _jsx(SecurityPage, {}) }), _jsx(Route, { path: "preferences", element: _jsx(PreferencesPage, {}) })] }), moduleRoutes.map((route) => (_jsx(Route, { path: route.path, element: route.element }, route.path))), _jsx(Route, { path: "*", element: _jsx(NotFoundPage, {}) })] })] })] }));
70
+ const accountRoutes = moduleRoutes.filter(isAccountRoute);
71
+ const shellRoutes = moduleRoutes.filter((route) => !isAccountRoute(route));
72
+ return (_jsxs(Routes, { children: [_jsx(Route, { path: "/login", element: _jsx(SignInPage, {}) }), _jsx(Route, { path: "/signup", element: _jsx(SignUpPage, {}) }), _jsx(Route, { path: "/forgot-password", element: _jsx(ForgotPasswordPage, {}) }), _jsx(Route, { path: "/reset-password", element: _jsx(ResetPasswordPage, {}) }), _jsx(Route, { path: "/join", element: _jsx(JoinPage, {}) }), _jsx(Route, { path: "/onboarding/workspace", element: _jsx(WorkspaceStepPage, {}) }), _jsxs(Route, { element: _jsx(SessionGate, {}), children: [_jsx(Route, { path: "/onboarding/invites", element: _jsx(InvitesStepPage, {}) }), _jsx(Route, { path: "/onboarding/handbook", element: _jsx(HandbookStepPage, {}) }), _jsxs(Route, { element: _jsx(Shell, {}), children: [_jsx(Route, { index: true, element: _jsx(Navigate, { to: "/dashboard", replace: true }) }), _jsx(Route, { path: "dashboard", element: _jsx(DashboardPage, {}) }), _jsx(Route, { path: "search", element: _jsx(SearchPage, {}) }), _jsx(Route, { path: "people", element: _jsx(PeoplePage, {}) }), _jsx(Route, { path: "people/:id", element: _jsx(PersonDetail, {}) }), _jsx(Route, { path: "hiring", element: _jsx(HiringPage, {}) }), _jsx(Route, { path: "hiring/:id", element: _jsx(RoleDetail, {}) }), _jsx(Route, { path: "companies", element: _jsx(CompaniesPage, {}) }), _jsx(Route, { path: "companies/:id", element: _jsx(CompanyDetail, {}) }), _jsx(Route, { path: "deals", element: _jsx(DealsPage, {}) }), _jsx(Route, { path: "deals/settings", element: _jsx(DealStageSettingsPage, {}) }), _jsx(Route, { path: "deals/:id", element: _jsx(DealDetail, {}) }), _jsx(Route, { path: "opportunities", element: _jsx(OpportunitiesPage, {}) }), _jsx(Route, { path: "opportunities/settings", element: _jsx(OpportunityStageSettingsPage, {}) }), _jsx(Route, { path: "opportunities/:id", element: _jsx(OpportunityDetail, {}) }), _jsx(Route, { path: "fundraising", element: _jsx(FundraisingPage, {}) }), _jsx(Route, { path: "fundraising/settings", element: _jsx(RaiseStageSettingsPage, {}) }), _jsx(Route, { path: "fundraising/:id", element: _jsx(RaiseDetail, {}) }), _jsx(Route, { path: "partnerships", element: _jsx(PartnershipsPage, {}) }), _jsx(Route, { path: "partnerships/settings", element: _jsx(PartnershipStageSettingsPage, {}) }), _jsx(Route, { path: "partnerships/:id", element: _jsx(PartnershipDetail, {}) }), _jsx(Route, { path: "planning", element: _jsx(PlanningPage, {}) }), _jsx(Route, { path: "decisions", element: _jsx(DecisionsPage, {}) }), _jsx(Route, { path: "forms", element: _jsx(FormsPage, {}) }), _jsx(Route, { path: "forms/:id", element: _jsx(FormDetail, {}) }), _jsx(Route, { path: "handbook", element: _jsx(HandbookLayout, {}) }), _jsx(Route, { path: "handbook/:pageId", element: _jsx(HandbookLayout, {}) }), _jsx(Route, { path: "admin/workspace", element: _jsx(WorkspaceSettingsPage, {}) }), _jsx(Route, { path: "admin/team", element: _jsx(TeamPage, {}) }), _jsx(Route, { path: "admin/data", element: _jsx(DataPage, {}) }), _jsx(Route, { path: "admin/mcp", element: _jsx(McpPage, {}) }), _jsx(Route, { path: "admin/webhooks", element: _jsx(WebhooksPage, {}) }), _jsx(Route, { path: "admin/modules", element: _jsx(ModulesPage, {}) }), _jsxs(Route, { path: "account", element: _jsx(AccountLayout, {}), children: [_jsx(Route, { index: true, element: _jsx(Navigate, { to: "/account/profile", replace: true }) }), _jsx(Route, { path: "profile", element: _jsx(ProfilePage, {}) }), _jsx(Route, { path: "security", element: _jsx(SecurityPage, {}) }), _jsx(Route, { path: "preferences", element: _jsx(PreferencesPage, {}) }), accountRoutes.map((route) => (_jsx(Route, { path: route.path.slice(ACCOUNT_PREFIX.length), element: route.element }, route.path)))] }), shellRoutes.map((route) => (_jsx(Route, { path: route.path, element: route.element }, route.path))), _jsx(Route, { path: "*", element: _jsx(NotFoundPage, {}) })] })] })] }));
58
73
  }
59
74
  //# sourceMappingURL=KelpieApp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KelpieApp.js","sourceRoot":"","sources":["../../src/app/KelpieApp.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KelpieApp.js","sourceRoot":"","sources":["../../src/app/KelpieApp.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Shell.d.ts","sourceRoot":"","sources":["../../src/components/Shell.tsx"],"names":[],"mappings":"AAoFA,wBAAgB,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAuNzC"}
1
+ {"version":3,"file":"Shell.d.ts","sourceRoot":"","sources":["../../src/components/Shell.tsx"],"names":[],"mappings":"AAyEA,wBAAgB,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CA+MzC"}
@@ -2,11 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useRef, useState } from 'react';
3
3
  import { NavLink, Outlet, useLocation, useNavigate } from 'react-router';
4
4
  import { useAccount, useTheme } from '../api/resources/account.js';
5
- import { useModuleSettings } from '../api/resources/moduleSettings.js';
6
5
  import { useLogOut } from '../api/resources/session.js';
7
6
  import { initialsOf } from '../lib/names.js';
8
7
  import { useNavItems } from '../registry/context.js';
9
- import { inSlotOrder } from '../registry/registry.js';
8
+ import { useVisibleNavItems } from '../registry/visibleNav.js';
10
9
  import { ErrorBoundary } from './ErrorBoundary.js';
11
10
  /**
12
11
  * Sidebar, header, and the outlet every page renders into.
@@ -45,15 +44,6 @@ const CORE_NAV = [
45
44
  * presentation only, so it stays here rather than becoming a second slot.
46
45
  */
47
46
  const TOP_LEVEL_NAV_IDS = new Set(['dashboard', 'handbook', 'planning', 'decisions']);
48
- /**
49
- * A nav item whose id does not match its module id. Everything else looks
50
- * itself up directly, which is what keeps a toggleable module's own nav entry
51
- * working with no change here when one is added later.
52
- */
53
- const NAV_ID_TO_MODULE_ID = {
54
- fundraising: 'raises',
55
- data: 'import-export',
56
- };
57
47
  function linkClass({ isActive }) {
58
48
  return [
59
49
  'block rounded-md px-2 py-1 text-[13px] transition-colors duration-100',
@@ -79,9 +69,6 @@ export function Shell() {
79
69
  const logOut = useLogOut();
80
70
  const moduleNav = useNavItems('primary');
81
71
  const moduleAdminNav = useNavItems('admin');
82
- const { settings } = useModuleSettings();
83
- const disabledModuleIds = new Set(settings.filter((setting) => !setting.enabled).map((setting) => setting.moduleId));
84
- const isModuleHidden = (navId) => disabledModuleIds.has(NAV_ID_TO_MODULE_ID[navId] ?? navId);
85
72
  const [menuOpen, setMenuOpen] = useState(false);
86
73
  // The same preference the account page writes, so this button and that page
87
74
  // cannot disagree about which theme the account is on.
@@ -109,10 +96,10 @@ export function Shell() {
109
96
  document.removeEventListener('keydown', onKeyDown);
110
97
  };
111
98
  }, [menuOpen]);
112
- const navItems = inSlotOrder([...CORE_NAV, ...moduleNav]).filter((item) => !isModuleHidden(item.id));
99
+ const navItems = useVisibleNavItems(CORE_NAV, moduleNav);
113
100
  const topLevelItems = navItems.filter((item) => TOP_LEVEL_NAV_IDS.has(item.id));
114
101
  const crmItems = navItems.filter((item) => !TOP_LEVEL_NAV_IDS.has(item.id));
115
- const adminItems = inSlotOrder([...CORE_ADMIN_NAV, ...moduleAdminNav]).filter((item) => !isModuleHidden(item.id));
102
+ const adminItems = useVisibleNavItems(CORE_ADMIN_NAV, moduleAdminNav);
116
103
  return (_jsxs("div", { className: "flex min-h-screen bg-surface", children: [_jsxs("aside", { className: "flex w-[200px] shrink-0 flex-col border-r border-sidebar-border bg-sidebar", children: [_jsx("div", { className: "px-3 py-4", children: _jsx(NavLink, { to: "/dashboard", className: "group block px-2", children: _jsx("div", { className: "text-[15px] font-semibold tracking-tight text-sidebar-ink transition-opacity group-hover:opacity-80", children: "Kelpie" }) }) }), _jsxs("nav", { className: "flex flex-1 flex-col gap-5 overflow-y-auto px-2 pb-4", children: [_jsx("div", { className: "flex flex-col gap-0.5", children: topLevelItems.map((item) => (_jsx(NavLink, { to: item.to, className: linkClass, children: item.label }, item.id))) }), _jsxs("div", { children: [_jsx("div", { className: "mb-1 px-2 text-[11px] text-sidebar-muted", children: "CRM" }), _jsx("div", { className: "flex flex-col gap-0.5", children: crmItems.map((item) => (_jsx(NavLink, { to: item.to, className: linkClass, children: item.label }, item.id))) })] }), _jsxs("div", { children: [_jsx("div", { className: "mb-1 px-2 text-[11px] text-sidebar-muted", children: "Admin" }), _jsx("div", { className: "flex flex-col gap-0.5", children: adminItems.map((item) => (_jsx(NavLink, { to: item.to, className: linkClass, children: item.label }, item.id))) })] })] })] }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsxs("header", { className: "flex h-11 items-center gap-3 border-b border-border px-5", children: [_jsx("form", { className: "flex-1", onSubmit: (event) => {
117
104
  event.preventDefault();
118
105
  const term = query.trim();
@@ -1 +1 @@
1
- {"version":3,"file":"Shell.js","sourceRoot":"","sources":["../../src/components/Shell.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Shell.js","sourceRoot":"","sources":["../../src/components/Shell.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -78,13 +78,13 @@ export { DUE_BUCKETS, addDays, byDateThenTitle, dueBucketFor, isOpen, monthBound
78
78
  export type { DueBucketId, PlanAttention as PlanAttentionSummary } from './lib/plan.ts';
79
79
  export { applyTheme, getStoredTheme, resolveTheme, setStoredTheme, watchSystemTheme } from './lib/theme.ts';
80
80
  export type { ThemePreference } from './lib/theme.ts';
81
- export { EXTENSIBLE_RECORD_TYPES, INTEGRATION_CATEGORIES, NAV_SLOTS } from './registry/contributions.ts';
82
- export type { DashboardCard, ExtensibleRecordType, IntegrationCategory, IntegrationProvider, NavItem, NavSlot, RecordContext, RecordSidebarCard, RecordTab, RouteContribution, } from './registry/contributions.ts';
81
+ export { EXTENSIBLE_RECORD_TYPES, NAV_SLOTS } from './registry/contributions.ts';
82
+ export type { DashboardCard, ExtensibleRecordType, NavItem, NavSlot, RecordContext, RecordSidebarCard, RecordTab, RouteContribution, } from './registry/contributions.ts';
83
83
  export { defineOverridable } from './registry/overridable.ts';
84
84
  export type { Overridable } from './registry/overridable.ts';
85
85
  export { NO_UI_MODULES, UiModuleError, inSlotOrder, registerUiModules } from './registry/registry.ts';
86
86
  export type { UiExtensions, UiModule, UiModuleContext } from './registry/registry.ts';
87
- export { useDashboardCards, useIntegrationProviders, useModuleRoutes, useNavItems, useOverridable, useRecordSidebarCards, useRecordTabs, useUiExtensions, } from './registry/context.ts';
87
+ export { useDashboardCards, useModuleRoutes, useNavItems, useOverridable, useRecordSidebarCards, useRecordTabs, useUiExtensions, } from './registry/context.ts';
88
88
  export { UiExtensionProvider } from './registry/UiExtensionProvider.tsx';
89
89
  export type { UiExtensionProviderProps } from './registry/UiExtensionProvider.tsx';
90
90
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -47,9 +47,9 @@ export { InvitesStepPage } from './pages/onboarding/InvitesStepPage.js';
47
47
  export { WorkspaceStepPage } from './pages/onboarding/WorkspaceStepPage.js';
48
48
  export { DUE_BUCKETS, addDays, byDateThenTitle, dueBucketFor, isOpen, monthBounds, nextOpenByTarget, nextOpenPlanItem, planAttention, planStatusTone, toIsoDay, todayIso, } from './lib/plan.js';
49
49
  export { applyTheme, getStoredTheme, resolveTheme, setStoredTheme, watchSystemTheme } from './lib/theme.js';
50
- export { EXTENSIBLE_RECORD_TYPES, INTEGRATION_CATEGORIES, NAV_SLOTS } from './registry/contributions.js';
50
+ export { EXTENSIBLE_RECORD_TYPES, NAV_SLOTS } from './registry/contributions.js';
51
51
  export { defineOverridable } from './registry/overridable.js';
52
52
  export { NO_UI_MODULES, UiModuleError, inSlotOrder, registerUiModules } from './registry/registry.js';
53
- export { useDashboardCards, useIntegrationProviders, useModuleRoutes, useNavItems, useOverridable, useRecordSidebarCards, useRecordTabs, useUiExtensions, } from './registry/context.js';
53
+ export { useDashboardCards, useModuleRoutes, useNavItems, useOverridable, useRecordSidebarCards, useRecordTabs, useUiExtensions, } from './registry/context.js';
54
54
  export { UiExtensionProvider } from './registry/UiExtensionProvider.js';
55
55
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AccountLayout.d.ts","sourceRoot":"","sources":["../../../src/pages/account/AccountLayout.tsx"],"names":[],"mappings":"AAwBA,wBAAgB,aAAa,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAajD"}
1
+ {"version":3,"file":"AccountLayout.d.ts","sourceRoot":"","sources":["../../../src/pages/account/AccountLayout.tsx"],"names":[],"mappings":"AAiCA,wBAAgB,aAAa,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAejD"}
@@ -1,15 +1,22 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { NavLink, Outlet } from 'react-router';
3
+ import { useNavItems } from '../../registry/context.js';
4
+ import { useVisibleNavItems } from '../../registry/visibleNav.js';
3
5
  /**
4
6
  * Tabs across the account's own settings, from the mockup's `AccountNav`.
5
7
  *
6
- * Three of its five tabs are here. Personal API keys and integrations arrive
7
- * with the features behind them, the same rule the shell's sidebar follows.
8
+ * Three of its five tabs are core's. The rest come from `nav.account`, which is
9
+ * where a module's own account page announces itself: a module route mounts as
10
+ * a sibling of `/account` rather than a child of it, so without this the page
11
+ * would render with no tab strip and nothing anywhere pointing at it.
12
+ *
13
+ * Core numbers itself in hundreds, the same convention the shell's sidebar
14
+ * uses, so a module can land between two core tabs without core renumbering.
8
15
  */
9
- const TABS = [
10
- { to: '/account/profile', label: 'Profile' },
11
- { to: '/account/security', label: 'Security' },
12
- { to: '/account/preferences', label: 'Preferences' },
16
+ const CORE_TABS = [
17
+ { id: 'profile', to: '/account/profile', label: 'Profile', order: 100 },
18
+ { id: 'security', to: '/account/security', label: 'Security', order: 200 },
19
+ { id: 'preferences', to: '/account/preferences', label: 'Preferences', order: 300 },
13
20
  ];
14
21
  function tabClass({ isActive }) {
15
22
  return [
@@ -20,6 +27,7 @@ function tabClass({ isActive }) {
20
27
  ].join(' ');
21
28
  }
22
29
  export function AccountLayout() {
23
- return (_jsxs("div", { className: "animate-fade-in mx-auto max-w-4xl", children: [_jsx("nav", { className: "mb-6 flex flex-wrap gap-1 border-b border-border pb-3", children: TABS.map((tab) => (_jsx(NavLink, { to: tab.to, className: tabClass, children: tab.label }, tab.to))) }), _jsx(Outlet, {})] }));
30
+ const tabs = useVisibleNavItems(CORE_TABS, useNavItems('account'));
31
+ return (_jsxs("div", { className: "animate-fade-in mx-auto max-w-4xl", children: [_jsx("nav", { className: "mb-6 flex flex-wrap gap-1 border-b border-border pb-3", children: tabs.map((tab) => (_jsx(NavLink, { to: tab.to, className: tabClass, children: tab.label }, tab.id))) }), _jsx(Outlet, {})] }));
24
32
  }
25
33
  //# sourceMappingURL=AccountLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccountLayout.js","sourceRoot":"","sources":["../../../src/pages/account/AccountLayout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;GAKG;AAEH,MAAM,IAAI,GAAG;IACX,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE;IAC5C,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,EAAE;IAC9C,EAAE,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,aAAa,EAAE;CAC5C,CAAA;AAEV,SAAS,QAAQ,CAAC,EAAE,QAAQ,EAAyB;IACnD,OAAO;QACL,kEAAkE;QAClE,QAAQ;YACN,CAAC,CAAC,kCAAkC;YACpC,CAAC,CAAC,gDAAgD;KACrD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACb,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,CACL,eAAK,SAAS,EAAC,mCAAmC,aAChD,cAAK,SAAS,EAAC,uDAAuD,YACnE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,KAAC,OAAO,IAAc,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,YAClD,GAAG,CAAC,KAAK,IADE,GAAG,CAAC,EAAE,CAEV,CACX,CAAC,GACE,EACN,KAAC,MAAM,KAAG,IACN,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"AccountLayout.js","sourceRoot":"","sources":["../../../src/pages/account/AccountLayout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAG9C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE;;;;;;;;;;GAUG;AAEH,MAAM,SAAS,GAAuB;IACpC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;IACvE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;IAC1E,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE;CACpF,CAAA;AAED,SAAS,QAAQ,CAAC,EAAE,QAAQ,EAAyB;IACnD,OAAO;QACL,kEAAkE;QAClE,QAAQ;YACN,CAAC,CAAC,kCAAkC;YACpC,CAAC,CAAC,gDAAgD;KACrD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACb,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAA;IAElE,OAAO,CACL,eAAK,SAAS,EAAC,mCAAmC,aAChD,cAAK,SAAS,EAAC,uDAAuD,YACnE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,KAAC,OAAO,IAAc,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,YAClD,GAAG,CAAC,KAAK,IADE,GAAG,CAAC,EAAE,CAEV,CACX,CAAC,GACE,EACN,KAAC,MAAM,KAAG,IACN,CACP,CAAA;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { ComponentType } from 'react';
2
- import type { DashboardCard, ExtensibleRecordType, IntegrationProvider, NavItem, NavSlot, RecordSidebarCard, RecordTab, RouteContribution } from './contributions.ts';
2
+ import type { DashboardCard, ExtensibleRecordType, NavItem, NavSlot, RecordSidebarCard, RecordTab, RouteContribution } from './contributions.ts';
3
3
  import type { Overridable } from './overridable.ts';
4
4
  import type { UiExtensions } from './registry.ts';
5
5
  /**
@@ -22,7 +22,6 @@ export declare function useModuleRoutes(): readonly RouteContribution[];
22
22
  export declare function useRecordTabs(objectType: ExtensibleRecordType): readonly RecordTab[];
23
23
  export declare function useRecordSidebarCards(objectType: ExtensibleRecordType): readonly RecordSidebarCard[];
24
24
  export declare function useDashboardCards(): readonly DashboardCard[];
25
- export declare function useIntegrationProviders(): readonly IntegrationProvider[];
26
25
  /**
27
26
  * The component to render for an overridable: a module's replacement, or core's
28
27
  * own. Core calls this instead of rendering its component directly.
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/registry/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EAClB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,uCAA6C,CAAA;AAE5E,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAE7D;AAED,wEAAwE;AACxE,wBAAgB,eAAe,IAAI,SAAS,iBAAiB,EAAE,CAE9D;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,oBAAoB,GAAG,SAAS,SAAS,EAAE,CAEpF;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,oBAAoB,GAAG,SAAS,iBAAiB,EAAE,CAEpG;AAED,wBAAgB,iBAAiB,IAAI,SAAS,aAAa,EAAE,CAE5D;AAED,wBAAgB,uBAAuB,IAAI,SAAS,mBAAmB,EAAE,CAExE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAErF"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/registry/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EAClB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,uCAA6C,CAAA;AAE5E,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAE7D;AAED,wEAAwE;AACxE,wBAAgB,eAAe,IAAI,SAAS,iBAAiB,EAAE,CAE9D;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,oBAAoB,GAAG,SAAS,SAAS,EAAE,CAEpF;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,oBAAoB,GAAG,SAAS,iBAAiB,EAAE,CAEpG;AAED,wBAAgB,iBAAiB,IAAI,SAAS,aAAa,EAAE,CAE5D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAErF"}
@@ -32,9 +32,6 @@ export function useRecordSidebarCards(objectType) {
32
32
  export function useDashboardCards() {
33
33
  return useUiExtensions().dashboardCards();
34
34
  }
35
- export function useIntegrationProviders() {
36
- return useUiExtensions().integrationProviders();
37
- }
38
35
  /**
39
36
  * The component to render for an overridable: a module's replacement, or core's
40
37
  * own. Core calls this instead of rendering its component directly.
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/registry/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAcjD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG7C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAe,aAAa,CAAC,CAAA;AAE5E,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,CAAC,kBAAkB,CAAC,CAAA;AACvC,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,OAAO,eAAe,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AACzC,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,eAAe;IAC7B,OAAO,eAAe,EAAE,CAAC,MAAM,EAAE,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAgC;IAC5D,OAAO,eAAe,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAgC;IACpE,OAAO,eAAe,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,eAAe,EAAE,CAAC,cAAc,EAAE,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,eAAe,EAAE,CAAC,oBAAoB,EAAE,CAAA;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAQ,KAAyB;IAC7D,OAAO,eAAe,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAC9C,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/registry/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAajD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG7C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAe,aAAa,CAAC,CAAA;AAE5E,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,CAAC,kBAAkB,CAAC,CAAA;AACvC,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,OAAO,eAAe,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AACzC,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,eAAe;IAC7B,OAAO,eAAe,EAAE,CAAC,MAAM,EAAE,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAgC;IAC5D,OAAO,eAAe,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAgC;IACpE,OAAO,eAAe,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,eAAe,EAAE,CAAC,cAAc,EAAE,CAAA;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAQ,KAAyB;IAC7D,OAAO,eAAe,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAC9C,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { ExtensibleRecordType } from '@kelpie/schemas';
2
- import type { ComponentType, ReactNode } from 'react';
2
+ import type { ReactNode } from 'react';
3
3
  /**
4
4
  * What a UI module may add to the shell, per the slot table in `modules.md`.
5
5
  *
@@ -57,15 +57,4 @@ export interface DashboardCard {
57
57
  readonly order?: number;
58
58
  readonly render: () => ReactNode;
59
59
  }
60
- export declare const INTEGRATION_CATEGORIES: readonly ['messaging', 'identity', 'enrichment', 'email', 'calendar'];
61
- export type IntegrationCategory = (typeof INTEGRATION_CATEGORIES)[number];
62
- /** A catalog entry on the admin integrations page. Core owns the page and the connection lifecycle. */
63
- export interface IntegrationProvider {
64
- readonly id: string;
65
- readonly name: string;
66
- readonly category: IntegrationCategory;
67
- readonly description: string;
68
- /** Rendered on the provider's own settings panel once connected. */
69
- readonly settings?: ComponentType<Record<string, never>>;
70
- }
71
60
  //# sourceMappingURL=contributions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contributions.d.ts","sourceRoot":"","sources":["../../src/registry/contributions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAErD;;;;;GAKG;AAEH,eAAO,MAAM,SAAS,YAAI,SAAS,EAAE,OAAO,EAAE,SAAS,CAAU,CAAA;AAEjE,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;AAEhD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;CAC1B;AAED,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAA;CAC5B;AAED;;;;;;;;GAQG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AACzD,YAAY,EAAE,oBAAoB,EAAE,CAAA;AAEpC,uGAAuG;AACvG,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAA;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS,CAAA;CACvD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS,CAAA;CACvD;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,SAAS,CAAA;CACjC;AAED,eAAO,MAAM,sBAAsB,YACjC,WAAW,EACX,UAAU,EACV,YAAY,EACZ,OAAO,EACP,UAAU,CACF,CAAA;AAEV,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEzE,uGAAuG;AACvG,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;CACzD"}
1
+ {"version":3,"file":"contributions.d.ts","sourceRoot":"","sources":["../../src/registry/contributions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC;;;;;GAKG;AAEH,eAAO,MAAM,SAAS,YAAI,SAAS,EAAE,OAAO,EAAE,SAAS,CAAU,CAAA;AAEjE,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;AAEhD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;CAC1B;AAED,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAA;CAC5B;AAED;;;;;;;;GAQG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AACzD,YAAY,EAAE,oBAAoB,EAAE,CAAA;AAEpC,uGAAuG;AACvG,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAA;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS,CAAA;CACvD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS,CAAA;CACvD;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,SAAS,CAAA;CACjC"}
@@ -15,11 +15,4 @@ export const NAV_SLOTS = ['primary', 'admin', 'account'];
15
15
  * should not have to follow an import to learn what a record type is.
16
16
  */
17
17
  export { EXTENSIBLE_RECORD_TYPES } from '@kelpie/schemas';
18
- export const INTEGRATION_CATEGORIES = [
19
- 'messaging',
20
- 'identity',
21
- 'enrichment',
22
- 'email',
23
- 'calendar',
24
- ];
25
18
  //# sourceMappingURL=contributions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contributions.js","sourceRoot":"","sources":["../../src/registry/contributions.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAU,CAAA;AAuBjE;;;;;;;;GAQG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AA4BzD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,WAAW;IACX,UAAU;IACV,YAAY;IACZ,OAAO;IACP,UAAU;CACF,CAAA"}
1
+ {"version":3,"file":"contributions.js","sourceRoot":"","sources":["../../src/registry/contributions.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAU,CAAA;AAuBjE;;;;;;;;GAQG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { ComponentType } from 'react';
2
- import type { DashboardCard, ExtensibleRecordType, IntegrationProvider, NavItem, NavSlot, RecordSidebarCard, RecordTab, RouteContribution } from './contributions.ts';
2
+ import type { DashboardCard, ExtensibleRecordType, NavItem, NavSlot, RecordSidebarCard, RecordTab, RouteContribution } from './contributions.ts';
3
3
  import type { Overridable } from './overridable.ts';
4
4
  /**
5
5
  * The build-time UI extension registry from `modules.md`.
@@ -19,7 +19,6 @@ export interface UiModuleContext {
19
19
  recordTab(objectType: ExtensibleRecordType, tab: RecordTab): void;
20
20
  recordSidebarCard(objectType: ExtensibleRecordType, card: RecordSidebarCard): void;
21
21
  dashboardCard(card: DashboardCard): void;
22
- integrationProvider(provider: IntegrationProvider): void;
23
22
  /** Replaces a core component. Prefer a slot; see `modules.md`. */
24
23
  override<Props>(token: Overridable<Props>, component: ComponentType<Props>): void;
25
24
  }
@@ -34,7 +33,6 @@ export interface UiExtensions {
34
33
  recordTabs(objectType: ExtensibleRecordType): readonly RecordTab[];
35
34
  recordSidebarCards(objectType: ExtensibleRecordType): readonly RecordSidebarCard[];
36
35
  dashboardCards(): readonly DashboardCard[];
37
- integrationProviders(): readonly IntegrationProvider[];
38
36
  componentFor<Props>(token: Overridable<Props>): ComponentType<Props>;
39
37
  }
40
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EAClB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,kBAAkB,CAAA;AAElE;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IACvC,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACrC,SAAS,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAAA;IACjE,iBAAiB,CAAC,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAClF,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAA;IACxC,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACxD,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;CAClF;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAA;CACzC;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAAA;IAC3C,MAAM,IAAI,SAAS,iBAAiB,EAAE,CAAA;IACtC,UAAU,CAAC,UAAU,EAAE,oBAAoB,GAAG,SAAS,SAAS,EAAE,CAAA;IAClE,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,GAAG,SAAS,iBAAiB,EAAE,CAAA;IAClF,cAAc,IAAI,SAAS,aAAa,EAAE,CAAA;IAC1C,oBAAoB,IAAI,SAAS,mBAAmB,EAAE,CAAA;IACtD,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;CACrE;AAKD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAEpG;AAYD,gHAAgH;AAChH,qBAAa,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAwED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,GAAG,YAAY,CAgC5E;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,YAAoC,CAAA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EAClB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,kBAAkB,CAAA;AAElE;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IACvC,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACrC,SAAS,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAAA;IACjE,iBAAiB,CAAC,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAClF,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAA;IACxC,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;CAClF;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAA;CACzC;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAAA;IAC3C,MAAM,IAAI,SAAS,iBAAiB,EAAE,CAAA;IACtC,UAAU,CAAC,UAAU,EAAE,oBAAoB,GAAG,SAAS,SAAS,EAAE,CAAA;IAClE,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,GAAG,SAAS,iBAAiB,EAAE,CAAA;IAClF,cAAc,IAAI,SAAS,aAAa,EAAE,CAAA;IAC1C,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;CACrE;AAKD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAEpG;AAWD,gHAAgH;AAChH,qBAAa,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAmED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,GAAG,YAAY,CA8B5E;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,YAAoC,CAAA"}
@@ -55,10 +55,6 @@ function createModuleContext(module, accumulator, taken) {
55
55
  claim(taken, module.id, 'dashboard.cards', card.id);
56
56
  accumulator.dashboardCards.push(card);
57
57
  },
58
- integrationProvider(provider) {
59
- claim(taken, module.id, 'admin.integrations.catalog', provider.id);
60
- accumulator.integrationProviders.push(provider);
61
- },
62
58
  override(token, component) {
63
59
  if (accumulator.overrides.has(token.key)) {
64
60
  throw new UiModuleError(`module "${module.id}" overrides "${token.key}", which another module already replaced`);
@@ -79,7 +75,6 @@ export function registerUiModules(modules) {
79
75
  recordTabs: new Map(),
80
76
  recordSidebarCards: new Map(),
81
77
  dashboardCards: [],
82
- integrationProviders: [],
83
78
  overrides: createOverrideStore(),
84
79
  };
85
80
  const taken = new Set();
@@ -97,7 +92,6 @@ export function registerUiModules(modules) {
97
92
  recordTabs: (objectType) => inSlotOrder(accumulator.recordTabs.get(objectType) ?? []),
98
93
  recordSidebarCards: (objectType) => inSlotOrder(accumulator.recordSidebarCards.get(objectType) ?? []),
99
94
  dashboardCards: () => inSlotOrder(accumulator.dashboardCards),
100
- integrationProviders: () => accumulator.integrationProviders,
101
95
  componentFor: (token) => accumulator.overrides.get(token),
102
96
  };
103
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { NavItem } from './contributions.ts';
2
+ export declare function useVisibleNavItems(coreItems: readonly NavItem[], moduleItems: readonly NavItem[]): readonly NavItem[];
3
+ //# sourceMappingURL=visibleNav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visibleNav.d.ts","sourceRoot":"","sources":["../../src/registry/visibleNav.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAwBjD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,OAAO,EAAE,EAC7B,WAAW,EAAE,SAAS,OAAO,EAAE,GAC9B,SAAS,OAAO,EAAE,CASpB"}
@@ -0,0 +1,27 @@
1
+ import { useModuleSettings } from '../api/resources/moduleSettings.js';
2
+ import { inSlotOrder } from './registry.js';
3
+ /**
4
+ * Core's nav items merged with a slot's module contributions, ordered, with the
5
+ * entries belonging to a disabled module removed.
6
+ *
7
+ * One hook rather than the rule written out at each nav surface. The shell's
8
+ * sidebar and the account tab strip both render a slot, and a workspace that
9
+ * switched a module off should stop seeing it in both. Two copies of this
10
+ * filter is exactly the sort of pair that drifts, and the symptom is a tab that
11
+ * survives its module being disabled and leads to a page answering 403.
12
+ */
13
+ /**
14
+ * A nav item whose id does not match its module id. Everything else looks itself
15
+ * up directly, which is what keeps a toggleable module's own nav entry working
16
+ * with no change here when one is added later.
17
+ */
18
+ const NAV_ID_TO_MODULE_ID = {
19
+ fundraising: 'raises',
20
+ data: 'import-export',
21
+ };
22
+ export function useVisibleNavItems(coreItems, moduleItems) {
23
+ const { settings } = useModuleSettings();
24
+ const disabledModuleIds = new Set(settings.filter((setting) => !setting.enabled).map((setting) => setting.moduleId));
25
+ return inSlotOrder([...coreItems, ...moduleItems]).filter((item) => !disabledModuleIds.has(NAV_ID_TO_MODULE_ID[item.id] ?? item.id));
26
+ }
27
+ //# sourceMappingURL=visibleNav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visibleNav.js","sourceRoot":"","sources":["../../src/registry/visibleNav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;;;;;;;;GASG;AAEH;;;;GAIG;AACH,MAAM,mBAAmB,GAAqC;IAC5D,WAAW,EAAE,QAAQ;IACrB,IAAI,EAAE,eAAe;CACtB,CAAA;AAED,MAAM,UAAU,kBAAkB,CAChC,SAA6B,EAC7B,WAA+B;IAE/B,MAAM,EAAE,QAAQ,EAAE,GAAG,iBAAiB,EAAE,CAAA;IACxC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAClF,CAAA;IAED,OAAO,WAAW,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CACvD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAC1E,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kelpie/ui",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "React UI for Kelpie: components, pages, API client, and the extension registry an assembly composes modules through.",
5
5
  "keywords": [
6
6
  "kelpie",
@@ -48,7 +48,7 @@
48
48
  "@dnd-kit/core": "^6.3.1",
49
49
  "@dnd-kit/sortable": "^10.0.0",
50
50
  "@dnd-kit/utilities": "^3.2.2",
51
- "@kelpie/schemas": "^0.3.1",
51
+ "@kelpie/schemas": "^0.4.0",
52
52
  "@tanstack/react-query": "^5.101.4",
53
53
  "react-markdown": "^10.1.0",
54
54
  "react-router": "^8.3.0",
@@ -47,6 +47,7 @@ import { HandbookStepPage } from '../pages/onboarding/HandbookStepPage.tsx'
47
47
  import { InvitesStepPage } from '../pages/onboarding/InvitesStepPage.tsx'
48
48
  import { WorkspaceStepPage } from '../pages/onboarding/WorkspaceStepPage.tsx'
49
49
  import { UiExtensionProvider } from '../registry/UiExtensionProvider.tsx'
50
+ import type { RouteContribution } from '../registry/contributions.ts'
50
51
  import { useModuleRoutes } from '../registry/context.ts'
51
52
  import type { UiExtensions } from '../registry/registry.ts'
52
53
  import { SessionGate } from './SessionGate.tsx'
@@ -80,8 +81,25 @@ export function KelpieApp({ extensions, baseUrl }: KelpieAppProps): React.JSX.El
80
81
  )
81
82
  }
82
83
 
84
+ /**
85
+ * A module route under `account/` renders inside `AccountLayout`, everything
86
+ * else directly under the shell.
87
+ *
88
+ * The prefix is the whole rule, and it is what makes `nav.account` mean
89
+ * anything: a module contributing a tab there needs its page to keep the tab
90
+ * strip, and a route mounted as a sibling of `account` would lose it the moment
91
+ * the tab was clicked. Core's own account pages are nested for the same reason.
92
+ */
93
+ const ACCOUNT_PREFIX = 'account/'
94
+
95
+ function isAccountRoute(route: RouteContribution): boolean {
96
+ return route.path.startsWith(ACCOUNT_PREFIX)
97
+ }
98
+
83
99
  function AppRoutes(): React.JSX.Element {
84
100
  const moduleRoutes = useModuleRoutes()
101
+ const accountRoutes = moduleRoutes.filter(isAccountRoute)
102
+ const shellRoutes = moduleRoutes.filter((route) => !isAccountRoute(route))
85
103
 
86
104
  return (
87
105
  <Routes>
@@ -146,8 +164,15 @@ function AppRoutes(): React.JSX.Element {
146
164
  <Route path="profile" element={<ProfilePage />} />
147
165
  <Route path="security" element={<SecurityPage />} />
148
166
  <Route path="preferences" element={<PreferencesPage />} />
167
+ {accountRoutes.map((route) => (
168
+ <Route
169
+ key={route.path}
170
+ path={route.path.slice(ACCOUNT_PREFIX.length)}
171
+ element={route.element}
172
+ />
173
+ ))}
149
174
  </Route>
150
- {moduleRoutes.map((route) => (
175
+ {shellRoutes.map((route) => (
151
176
  <Route key={route.path} path={route.path} element={route.element} />
152
177
  ))}
153
178
  {/* Last so every named route above wins first. Nested here rather than
@@ -2,13 +2,12 @@ import { useEffect, useRef, useState } from 'react'
2
2
  import { NavLink, Outlet, useLocation, useNavigate } from 'react-router'
3
3
 
4
4
  import { useAccount, useTheme } from '../api/resources/account.ts'
5
- import { useModuleSettings } from '../api/resources/moduleSettings.ts'
6
5
  import { useLogOut } from '../api/resources/session.ts'
7
6
  import { initialsOf } from '../lib/names.ts'
8
7
  import type { ThemePreference } from '../lib/theme.ts'
9
8
  import { useNavItems } from '../registry/context.ts'
10
9
  import type { NavItem } from '../registry/contributions.ts'
11
- import { inSlotOrder } from '../registry/registry.ts'
10
+ import { useVisibleNavItems } from '../registry/visibleNav.ts'
12
11
  import { ErrorBoundary } from './ErrorBoundary.tsx'
13
12
 
14
13
  /**
@@ -51,16 +50,6 @@ const CORE_NAV: readonly NavItem[] = [
51
50
  */
52
51
  const TOP_LEVEL_NAV_IDS: ReadonlySet<string> = new Set(['dashboard', 'handbook', 'planning', 'decisions'])
53
52
 
54
- /**
55
- * A nav item whose id does not match its module id. Everything else looks
56
- * itself up directly, which is what keeps a toggleable module's own nav entry
57
- * working with no change here when one is added later.
58
- */
59
- const NAV_ID_TO_MODULE_ID: Readonly<Record<string, string>> = {
60
- fundraising: 'raises',
61
- data: 'import-export',
62
- }
63
-
64
53
  function linkClass({ isActive }: { isActive: boolean }): string {
65
54
  return [
66
55
  'block rounded-md px-2 py-1 text-[13px] transition-colors duration-100',
@@ -89,12 +78,6 @@ export function Shell(): React.JSX.Element {
89
78
  const logOut = useLogOut()
90
79
  const moduleNav = useNavItems('primary')
91
80
  const moduleAdminNav = useNavItems('admin')
92
- const { settings } = useModuleSettings()
93
- const disabledModuleIds = new Set(
94
- settings.filter((setting) => !setting.enabled).map((setting) => setting.moduleId),
95
- )
96
- const isModuleHidden = (navId: string): boolean =>
97
- disabledModuleIds.has(NAV_ID_TO_MODULE_ID[navId] ?? navId)
98
81
  const [menuOpen, setMenuOpen] = useState(false)
99
82
  // The same preference the account page writes, so this button and that page
100
83
  // cannot disagree about which theme the account is on.
@@ -128,12 +111,10 @@ export function Shell(): React.JSX.Element {
128
111
  }
129
112
  }, [menuOpen])
130
113
 
131
- const navItems = inSlotOrder([...CORE_NAV, ...moduleNav]).filter((item) => !isModuleHidden(item.id))
114
+ const navItems = useVisibleNavItems(CORE_NAV, moduleNav)
132
115
  const topLevelItems = navItems.filter((item) => TOP_LEVEL_NAV_IDS.has(item.id))
133
116
  const crmItems = navItems.filter((item) => !TOP_LEVEL_NAV_IDS.has(item.id))
134
- const adminItems = inSlotOrder([...CORE_ADMIN_NAV, ...moduleAdminNav]).filter(
135
- (item) => !isModuleHidden(item.id),
136
- )
117
+ const adminItems = useVisibleNavItems(CORE_ADMIN_NAV, moduleAdminNav)
137
118
 
138
119
  return (
139
120
  <div className="flex min-h-screen bg-surface">
package/src/index.ts CHANGED
@@ -155,12 +155,10 @@ export type { DueBucketId, PlanAttention as PlanAttentionSummary } from './lib/p
155
155
  export { applyTheme, getStoredTheme, resolveTheme, setStoredTheme, watchSystemTheme } from './lib/theme.ts'
156
156
  export type { ThemePreference } from './lib/theme.ts'
157
157
 
158
- export { EXTENSIBLE_RECORD_TYPES, INTEGRATION_CATEGORIES, NAV_SLOTS } from './registry/contributions.ts'
158
+ export { EXTENSIBLE_RECORD_TYPES, NAV_SLOTS } from './registry/contributions.ts'
159
159
  export type {
160
160
  DashboardCard,
161
161
  ExtensibleRecordType,
162
- IntegrationCategory,
163
- IntegrationProvider,
164
162
  NavItem,
165
163
  NavSlot,
166
164
  RecordContext,
@@ -177,7 +175,6 @@ export type { UiExtensions, UiModule, UiModuleContext } from './registry/registr
177
175
 
178
176
  export {
179
177
  useDashboardCards,
180
- useIntegrationProviders,
181
178
  useModuleRoutes,
182
179
  useNavItems,
183
180
  useOverridable,
@@ -1,17 +1,26 @@
1
1
  import { NavLink, Outlet } from 'react-router'
2
2
 
3
+ import type { NavItem } from '../../registry/contributions.ts'
4
+ import { useNavItems } from '../../registry/context.ts'
5
+ import { useVisibleNavItems } from '../../registry/visibleNav.ts'
6
+
3
7
  /**
4
8
  * Tabs across the account's own settings, from the mockup's `AccountNav`.
5
9
  *
6
- * Three of its five tabs are here. Personal API keys and integrations arrive
7
- * with the features behind them, the same rule the shell's sidebar follows.
10
+ * Three of its five tabs are core's. The rest come from `nav.account`, which is
11
+ * where a module's own account page announces itself: a module route mounts as
12
+ * a sibling of `/account` rather than a child of it, so without this the page
13
+ * would render with no tab strip and nothing anywhere pointing at it.
14
+ *
15
+ * Core numbers itself in hundreds, the same convention the shell's sidebar
16
+ * uses, so a module can land between two core tabs without core renumbering.
8
17
  */
9
18
 
10
- const TABS = [
11
- { to: '/account/profile', label: 'Profile' },
12
- { to: '/account/security', label: 'Security' },
13
- { to: '/account/preferences', label: 'Preferences' },
14
- ] as const
19
+ const CORE_TABS: readonly NavItem[] = [
20
+ { id: 'profile', to: '/account/profile', label: 'Profile', order: 100 },
21
+ { id: 'security', to: '/account/security', label: 'Security', order: 200 },
22
+ { id: 'preferences', to: '/account/preferences', label: 'Preferences', order: 300 },
23
+ ]
15
24
 
16
25
  function tabClass({ isActive }: { isActive: boolean }): string {
17
26
  return [
@@ -23,11 +32,13 @@ function tabClass({ isActive }: { isActive: boolean }): string {
23
32
  }
24
33
 
25
34
  export function AccountLayout(): React.JSX.Element {
35
+ const tabs = useVisibleNavItems(CORE_TABS, useNavItems('account'))
36
+
26
37
  return (
27
38
  <div className="animate-fade-in mx-auto max-w-4xl">
28
39
  <nav className="mb-6 flex flex-wrap gap-1 border-b border-border pb-3">
29
- {TABS.map((tab) => (
30
- <NavLink key={tab.to} to={tab.to} className={tabClass}>
40
+ {tabs.map((tab) => (
41
+ <NavLink key={tab.id} to={tab.to} className={tabClass}>
31
42
  {tab.label}
32
43
  </NavLink>
33
44
  ))}
@@ -4,7 +4,6 @@ import type { ComponentType } from 'react'
4
4
  import type {
5
5
  DashboardCard,
6
6
  ExtensibleRecordType,
7
- IntegrationProvider,
8
7
  NavItem,
9
8
  NavSlot,
10
9
  RecordSidebarCard,
@@ -54,10 +53,6 @@ export function useDashboardCards(): readonly DashboardCard[] {
54
53
  return useUiExtensions().dashboardCards()
55
54
  }
56
55
 
57
- export function useIntegrationProviders(): readonly IntegrationProvider[] {
58
- return useUiExtensions().integrationProviders()
59
- }
60
-
61
56
  /**
62
57
  * The component to render for an overridable: a module's replacement, or core's
63
58
  * own. Core calls this instead of rendering its component directly.
@@ -1,5 +1,5 @@
1
1
  import type { ExtensibleRecordType } from '@kelpie/schemas'
2
- import type { ComponentType, ReactNode } from 'react'
2
+ import type { ReactNode } from 'react'
3
3
 
4
4
  /**
5
5
  * What a UI module may add to the shell, per the slot table in `modules.md`.
@@ -68,22 +68,3 @@ export interface DashboardCard {
68
68
  readonly render: () => ReactNode
69
69
  }
70
70
 
71
- export const INTEGRATION_CATEGORIES = [
72
- 'messaging',
73
- 'identity',
74
- 'enrichment',
75
- 'email',
76
- 'calendar',
77
- ] as const
78
-
79
- export type IntegrationCategory = (typeof INTEGRATION_CATEGORIES)[number]
80
-
81
- /** A catalog entry on the admin integrations page. Core owns the page and the connection lifecycle. */
82
- export interface IntegrationProvider {
83
- readonly id: string
84
- readonly name: string
85
- readonly category: IntegrationCategory
86
- readonly description: string
87
- /** Rendered on the provider's own settings panel once connected. */
88
- readonly settings?: ComponentType<Record<string, never>>
89
- }
@@ -3,7 +3,6 @@ import type { ComponentType } from 'react'
3
3
  import type {
4
4
  DashboardCard,
5
5
  ExtensibleRecordType,
6
- IntegrationProvider,
7
6
  NavItem,
8
7
  NavSlot,
9
8
  RecordSidebarCard,
@@ -32,7 +31,6 @@ export interface UiModuleContext {
32
31
  recordTab(objectType: ExtensibleRecordType, tab: RecordTab): void
33
32
  recordSidebarCard(objectType: ExtensibleRecordType, card: RecordSidebarCard): void
34
33
  dashboardCard(card: DashboardCard): void
35
- integrationProvider(provider: IntegrationProvider): void
36
34
  /** Replaces a core component. Prefer a slot; see `modules.md`. */
37
35
  override<Props>(token: Overridable<Props>, component: ComponentType<Props>): void
38
36
  }
@@ -49,7 +47,6 @@ export interface UiExtensions {
49
47
  recordTabs(objectType: ExtensibleRecordType): readonly RecordTab[]
50
48
  recordSidebarCards(objectType: ExtensibleRecordType): readonly RecordSidebarCard[]
51
49
  dashboardCards(): readonly DashboardCard[]
52
- integrationProviders(): readonly IntegrationProvider[]
53
50
  componentFor<Props>(token: Overridable<Props>): ComponentType<Props>
54
51
  }
55
52
 
@@ -73,7 +70,6 @@ interface Accumulator {
73
70
  readonly recordTabs: Map<ExtensibleRecordType, RecordTab[]>
74
71
  readonly recordSidebarCards: Map<ExtensibleRecordType, RecordSidebarCard[]>
75
72
  readonly dashboardCards: DashboardCard[]
76
- readonly integrationProviders: IntegrationProvider[]
77
73
  readonly overrides: OverrideStore
78
74
  }
79
75
 
@@ -138,11 +134,6 @@ function createModuleContext(
138
134
  accumulator.dashboardCards.push(card)
139
135
  },
140
136
 
141
- integrationProvider(provider) {
142
- claim(taken, module.id, 'admin.integrations.catalog', provider.id)
143
- accumulator.integrationProviders.push(provider)
144
- },
145
-
146
137
  override(token, component) {
147
138
  if (accumulator.overrides.has(token.key)) {
148
139
  throw new UiModuleError(
@@ -167,7 +158,6 @@ export function registerUiModules(modules: readonly UiModule[]): UiExtensions {
167
158
  recordTabs: new Map(),
168
159
  recordSidebarCards: new Map(),
169
160
  dashboardCards: [],
170
- integrationProviders: [],
171
161
  overrides: createOverrideStore(),
172
162
  }
173
163
  const taken = new Set<string>()
@@ -189,7 +179,6 @@ export function registerUiModules(modules: readonly UiModule[]): UiExtensions {
189
179
  recordSidebarCards: (objectType) =>
190
180
  inSlotOrder(accumulator.recordSidebarCards.get(objectType) ?? []),
191
181
  dashboardCards: () => inSlotOrder(accumulator.dashboardCards),
192
- integrationProviders: () => accumulator.integrationProviders,
193
182
  componentFor: (token) => accumulator.overrides.get(token),
194
183
  }
195
184
  }
@@ -0,0 +1,38 @@
1
+ import { useModuleSettings } from '../api/resources/moduleSettings.ts'
2
+ import type { NavItem } from './contributions.ts'
3
+ import { inSlotOrder } from './registry.ts'
4
+
5
+ /**
6
+ * Core's nav items merged with a slot's module contributions, ordered, with the
7
+ * entries belonging to a disabled module removed.
8
+ *
9
+ * One hook rather than the rule written out at each nav surface. The shell's
10
+ * sidebar and the account tab strip both render a slot, and a workspace that
11
+ * switched a module off should stop seeing it in both. Two copies of this
12
+ * filter is exactly the sort of pair that drifts, and the symptom is a tab that
13
+ * survives its module being disabled and leads to a page answering 403.
14
+ */
15
+
16
+ /**
17
+ * A nav item whose id does not match its module id. Everything else looks itself
18
+ * up directly, which is what keeps a toggleable module's own nav entry working
19
+ * with no change here when one is added later.
20
+ */
21
+ const NAV_ID_TO_MODULE_ID: Readonly<Record<string, string>> = {
22
+ fundraising: 'raises',
23
+ data: 'import-export',
24
+ }
25
+
26
+ export function useVisibleNavItems(
27
+ coreItems: readonly NavItem[],
28
+ moduleItems: readonly NavItem[],
29
+ ): readonly NavItem[] {
30
+ const { settings } = useModuleSettings()
31
+ const disabledModuleIds = new Set(
32
+ settings.filter((setting) => !setting.enabled).map((setting) => setting.moduleId),
33
+ )
34
+
35
+ return inSlotOrder([...coreItems, ...moduleItems]).filter(
36
+ (item) => !disabledModuleIds.has(NAV_ID_TO_MODULE_ID[item.id] ?? item.id),
37
+ )
38
+ }