@kelpie/ui 0.11.0 → 0.13.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 (333) hide show
  1. package/dist/api/resources/attendances.d.ts +13 -0
  2. package/dist/api/resources/attendances.d.ts.map +1 -0
  3. package/dist/api/resources/attendances.js +34 -0
  4. package/dist/api/resources/attendances.js.map +1 -0
  5. package/dist/api/resources/eventAssociations.d.ts +12 -0
  6. package/dist/api/resources/eventAssociations.d.ts.map +1 -0
  7. package/dist/api/resources/eventAssociations.js +25 -0
  8. package/dist/api/resources/eventAssociations.js.map +1 -0
  9. package/dist/api/resources/events.d.ts +17 -0
  10. package/dist/api/resources/events.d.ts.map +1 -0
  11. package/dist/api/resources/events.js +40 -0
  12. package/dist/api/resources/events.js.map +1 -0
  13. package/dist/api/resources/handbookSeed.d.ts +11 -0
  14. package/dist/api/resources/handbookSeed.d.ts.map +1 -0
  15. package/dist/api/resources/handbookSeed.js +43 -0
  16. package/dist/api/resources/handbookSeed.js.map +1 -0
  17. package/dist/api/resources/moduleSettings.d.ts +10 -0
  18. package/dist/api/resources/moduleSettings.d.ts.map +1 -1
  19. package/dist/api/resources/moduleSettings.js +21 -0
  20. package/dist/api/resources/moduleSettings.js.map +1 -1
  21. package/dist/api/resources/planItems.d.ts +4 -4
  22. package/dist/api/resources/planItems.d.ts.map +1 -1
  23. package/dist/api/resources/planItems.js +1 -1
  24. package/dist/api/resources/planItems.js.map +1 -1
  25. package/dist/api/resources/publicConfig.js +3 -3
  26. package/dist/api/resources/sampleData.d.ts.map +1 -1
  27. package/dist/api/resources/sampleData.js +2 -0
  28. package/dist/api/resources/sampleData.js.map +1 -1
  29. package/dist/api/resources/session.d.ts +22 -1
  30. package/dist/api/resources/session.d.ts.map +1 -1
  31. package/dist/api/resources/session.js +43 -1
  32. package/dist/api/resources/session.js.map +1 -1
  33. package/dist/api/resources/workspace.d.ts.map +1 -1
  34. package/dist/api/resources/workspace.js +2 -3
  35. package/dist/api/resources/workspace.js.map +1 -1
  36. package/dist/app/KelpieApp.d.ts.map +1 -1
  37. package/dist/app/KelpieApp.js +5 -1
  38. package/dist/app/KelpieApp.js.map +1 -1
  39. package/dist/components/ActivitiesPanel.d.ts.map +1 -1
  40. package/dist/components/ActivitiesPanel.js +2 -0
  41. package/dist/components/ActivitiesPanel.js.map +1 -1
  42. package/dist/components/AddressesField.d.ts +23 -0
  43. package/dist/components/AddressesField.d.ts.map +1 -0
  44. package/dist/components/AddressesField.js +215 -0
  45. package/dist/components/AddressesField.js.map +1 -0
  46. package/dist/components/CountrySearch.d.ts +16 -0
  47. package/dist/components/CountrySearch.d.ts.map +1 -0
  48. package/dist/components/CountrySearch.js +30 -0
  49. package/dist/components/CountrySearch.js.map +1 -0
  50. package/dist/components/EnvironmentBanner.d.ts +0 -12
  51. package/dist/components/EnvironmentBanner.d.ts.map +1 -1
  52. package/dist/components/EnvironmentBanner.js +21 -6
  53. package/dist/components/EnvironmentBanner.js.map +1 -1
  54. package/dist/components/InlineEdit.d.ts +7 -1
  55. package/dist/components/InlineEdit.d.ts.map +1 -1
  56. package/dist/components/InlineEdit.js +8 -1
  57. package/dist/components/InlineEdit.js.map +1 -1
  58. package/dist/components/LinkedEventsPanel.d.ts +11 -0
  59. package/dist/components/LinkedEventsPanel.d.ts.map +1 -0
  60. package/dist/components/LinkedEventsPanel.js +18 -0
  61. package/dist/components/LinkedEventsPanel.js.map +1 -0
  62. package/dist/components/NotesPanel.d.ts +4 -6
  63. package/dist/components/NotesPanel.d.ts.map +1 -1
  64. package/dist/components/NotesPanel.js +39 -3
  65. package/dist/components/NotesPanel.js.map +1 -1
  66. package/dist/components/PlanAttention.d.ts.map +1 -1
  67. package/dist/components/PlanAttention.js +3 -2
  68. package/dist/components/PlanAttention.js.map +1 -1
  69. package/dist/components/PlanPanel.d.ts +3 -3
  70. package/dist/components/PlanPanel.d.ts.map +1 -1
  71. package/dist/components/Shell.d.ts.map +1 -1
  72. package/dist/components/Shell.js +8 -2
  73. package/dist/components/Shell.js.map +1 -1
  74. package/dist/components/SocialNetworkIcon.d.ts +17 -0
  75. package/dist/components/SocialNetworkIcon.d.ts.map +1 -0
  76. package/dist/components/SocialNetworkIcon.js +39 -0
  77. package/dist/components/SocialNetworkIcon.js.map +1 -0
  78. package/dist/components/SocialProfilesField.d.ts +8 -0
  79. package/dist/components/SocialProfilesField.d.ts.map +1 -1
  80. package/dist/components/SocialProfilesField.js +19 -5
  81. package/dist/components/SocialProfilesField.js.map +1 -1
  82. package/dist/components/TimezoneSearch.d.ts +21 -0
  83. package/dist/components/TimezoneSearch.d.ts.map +1 -0
  84. package/dist/components/TimezoneSearch.js +27 -0
  85. package/dist/components/TimezoneSearch.js.map +1 -0
  86. package/dist/components/WorkspaceSwitcher.d.ts +8 -0
  87. package/dist/components/WorkspaceSwitcher.d.ts.map +1 -0
  88. package/dist/components/WorkspaceSwitcher.js +67 -0
  89. package/dist/components/WorkspaceSwitcher.js.map +1 -0
  90. package/dist/components/environmentTone.d.ts +10 -0
  91. package/dist/components/environmentTone.d.ts.map +1 -0
  92. package/dist/components/environmentTone.js +35 -0
  93. package/dist/components/environmentTone.js.map +1 -0
  94. package/dist/index.d.ts +25 -6
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +17 -3
  97. package/dist/index.js.map +1 -1
  98. package/dist/lib/timezones.d.ts +17 -0
  99. package/dist/lib/timezones.d.ts.map +1 -0
  100. package/dist/lib/timezones.js +39 -0
  101. package/dist/lib/timezones.js.map +1 -0
  102. package/dist/pages/CompaniesPage.d.ts.map +1 -1
  103. package/dist/pages/CompaniesPage.js +12 -11
  104. package/dist/pages/CompaniesPage.js.map +1 -1
  105. package/dist/pages/CompanyDetail.d.ts.map +1 -1
  106. package/dist/pages/CompanyDetail.js +23 -12
  107. package/dist/pages/CompanyDetail.js.map +1 -1
  108. package/dist/pages/DealDetail.d.ts.map +1 -1
  109. package/dist/pages/DealDetail.js +5 -1
  110. package/dist/pages/DealDetail.js.map +1 -1
  111. package/dist/pages/DecisionsPage.d.ts.map +1 -1
  112. package/dist/pages/DecisionsPage.js +7 -0
  113. package/dist/pages/DecisionsPage.js.map +1 -1
  114. package/dist/pages/EnquiryDetail.d.ts.map +1 -1
  115. package/dist/pages/EnquiryDetail.js +5 -1
  116. package/dist/pages/EnquiryDetail.js.map +1 -1
  117. package/dist/pages/EventDetail.d.ts +2 -0
  118. package/dist/pages/EventDetail.d.ts.map +1 -0
  119. package/dist/pages/EventDetail.js +332 -0
  120. package/dist/pages/EventDetail.js.map +1 -0
  121. package/dist/pages/EventsPage.d.ts +2 -0
  122. package/dist/pages/EventsPage.d.ts.map +1 -0
  123. package/dist/pages/EventsPage.js +176 -0
  124. package/dist/pages/EventsPage.js.map +1 -0
  125. package/dist/pages/ListDetail.d.ts.map +1 -1
  126. package/dist/pages/ListDetail.js +17 -0
  127. package/dist/pages/ListDetail.js.map +1 -1
  128. package/dist/pages/OpportunityDetail.d.ts.map +1 -1
  129. package/dist/pages/OpportunityDetail.js +5 -1
  130. package/dist/pages/OpportunityDetail.js.map +1 -1
  131. package/dist/pages/PartnershipDetail.d.ts.map +1 -1
  132. package/dist/pages/PartnershipDetail.js +5 -1
  133. package/dist/pages/PartnershipDetail.js.map +1 -1
  134. package/dist/pages/PeoplePage.d.ts.map +1 -1
  135. package/dist/pages/PeoplePage.js +13 -5
  136. package/dist/pages/PeoplePage.js.map +1 -1
  137. package/dist/pages/PersonDetail.d.ts.map +1 -1
  138. package/dist/pages/PersonDetail.js +94 -28
  139. package/dist/pages/PersonDetail.js.map +1 -1
  140. package/dist/pages/PlanningPage.d.ts.map +1 -1
  141. package/dist/pages/PlanningPage.js +6 -3
  142. package/dist/pages/PlanningPage.js.map +1 -1
  143. package/dist/pages/RaiseDetail.d.ts.map +1 -1
  144. package/dist/pages/RaiseDetail.js +5 -1
  145. package/dist/pages/RaiseDetail.js.map +1 -1
  146. package/dist/pages/RoleDetail.d.ts.map +1 -1
  147. package/dist/pages/RoleDetail.js +4 -1
  148. package/dist/pages/RoleDetail.js.map +1 -1
  149. package/dist/pages/SearchPage.d.ts.map +1 -1
  150. package/dist/pages/SearchPage.js +2 -1
  151. package/dist/pages/SearchPage.js.map +1 -1
  152. package/dist/pages/account/PreferencesPage.d.ts.map +1 -1
  153. package/dist/pages/account/PreferencesPage.js +2 -28
  154. package/dist/pages/account/PreferencesPage.js.map +1 -1
  155. package/dist/pages/account/SecurityPage.js +2 -2
  156. package/dist/pages/account/SecurityPage.js.map +1 -1
  157. package/dist/pages/admin/DataPage.js +10 -9
  158. package/dist/pages/admin/DataPage.js.map +1 -1
  159. package/dist/pages/admin/FieldsPage.js +1 -1
  160. package/dist/pages/admin/FieldsPage.js.map +1 -1
  161. package/dist/pages/admin/ModulesPage.d.ts.map +1 -1
  162. package/dist/pages/admin/ModulesPage.js +1 -0
  163. package/dist/pages/admin/ModulesPage.js.map +1 -1
  164. package/dist/pages/admin/WorkspaceSettingsPage.d.ts +12 -0
  165. package/dist/pages/admin/WorkspaceSettingsPage.d.ts.map +1 -1
  166. package/dist/pages/admin/WorkspaceSettingsPage.js +2 -21
  167. package/dist/pages/admin/WorkspaceSettingsPage.js.map +1 -1
  168. package/dist/pages/auth/AuthForm.d.ts +18 -0
  169. package/dist/pages/auth/AuthForm.d.ts.map +1 -1
  170. package/dist/pages/auth/AuthForm.js +17 -0
  171. package/dist/pages/auth/AuthForm.js.map +1 -1
  172. package/dist/pages/auth/AuthLayout.d.ts +5 -4
  173. package/dist/pages/auth/AuthLayout.d.ts.map +1 -1
  174. package/dist/pages/auth/AuthLayout.js +7 -5
  175. package/dist/pages/auth/AuthLayout.js.map +1 -1
  176. package/dist/pages/auth/AuthMethods.d.ts +12 -0
  177. package/dist/pages/auth/AuthMethods.d.ts.map +1 -0
  178. package/dist/pages/auth/AuthMethods.js +20 -0
  179. package/dist/pages/auth/AuthMethods.js.map +1 -0
  180. package/dist/pages/auth/RegionSwitcher.d.ts +10 -0
  181. package/dist/pages/auth/RegionSwitcher.d.ts.map +1 -0
  182. package/dist/pages/auth/RegionSwitcher.js +28 -0
  183. package/dist/pages/auth/RegionSwitcher.js.map +1 -0
  184. package/dist/pages/auth/SignInPage.d.ts +7 -0
  185. package/dist/pages/auth/SignInPage.d.ts.map +1 -1
  186. package/dist/pages/auth/SignInPage.js +5 -8
  187. package/dist/pages/auth/SignInPage.js.map +1 -1
  188. package/dist/pages/auth/SignUpPage.d.ts.map +1 -1
  189. package/dist/pages/auth/SignUpPage.js +9 -1
  190. package/dist/pages/auth/SignUpPage.js.map +1 -1
  191. package/dist/pages/auth/nextPath.d.ts +15 -0
  192. package/dist/pages/auth/nextPath.d.ts.map +1 -0
  193. package/dist/pages/auth/nextPath.js +17 -0
  194. package/dist/pages/auth/nextPath.js.map +1 -0
  195. package/dist/pages/auth/regionHref.d.ts +6 -0
  196. package/dist/pages/auth/regionHref.d.ts.map +1 -0
  197. package/dist/pages/auth/regionHref.js +8 -0
  198. package/dist/pages/auth/regionHref.js.map +1 -0
  199. package/dist/pages/dashboard/DashboardPage.d.ts +8 -0
  200. package/dist/pages/dashboard/DashboardPage.d.ts.map +1 -1
  201. package/dist/pages/dashboard/DashboardPage.js +5 -13
  202. package/dist/pages/dashboard/DashboardPage.js.map +1 -1
  203. package/dist/pages/dashboard/attention.d.ts +1 -8
  204. package/dist/pages/dashboard/attention.d.ts.map +1 -1
  205. package/dist/pages/dashboard/attention.js +21 -54
  206. package/dist/pages/dashboard/attention.js.map +1 -1
  207. package/dist/pages/dashboard/sections.d.ts.map +1 -1
  208. package/dist/pages/dashboard/sections.js +3 -2
  209. package/dist/pages/dashboard/sections.js.map +1 -1
  210. package/dist/pages/forms/FormActions.d.ts.map +1 -1
  211. package/dist/pages/forms/FormActions.js +7 -3
  212. package/dist/pages/forms/FormActions.js.map +1 -1
  213. package/dist/pages/onboarding/HandbookStepPage.d.ts +4 -8
  214. package/dist/pages/onboarding/HandbookStepPage.d.ts.map +1 -1
  215. package/dist/pages/onboarding/HandbookStepPage.js +13 -13
  216. package/dist/pages/onboarding/HandbookStepPage.js.map +1 -1
  217. package/dist/pages/onboarding/InvitesStepPage.d.ts.map +1 -1
  218. package/dist/pages/onboarding/InvitesStepPage.js +13 -7
  219. package/dist/pages/onboarding/InvitesStepPage.js.map +1 -1
  220. package/dist/pages/onboarding/ModulesStepPage.d.ts +11 -0
  221. package/dist/pages/onboarding/ModulesStepPage.d.ts.map +1 -0
  222. package/dist/pages/onboarding/ModulesStepPage.js +80 -0
  223. package/dist/pages/onboarding/ModulesStepPage.js.map +1 -0
  224. package/dist/pages/onboarding/OnboardingNav.d.ts +17 -0
  225. package/dist/pages/onboarding/OnboardingNav.d.ts.map +1 -0
  226. package/dist/pages/onboarding/OnboardingNav.js +37 -0
  227. package/dist/pages/onboarding/OnboardingNav.js.map +1 -0
  228. package/dist/pages/onboarding/OrganisationStepPage.d.ts +13 -0
  229. package/dist/pages/onboarding/OrganisationStepPage.d.ts.map +1 -0
  230. package/dist/pages/onboarding/OrganisationStepPage.js +59 -0
  231. package/dist/pages/onboarding/OrganisationStepPage.js.map +1 -0
  232. package/dist/pages/onboarding/WorkspaceStepPage.d.ts.map +1 -1
  233. package/dist/pages/onboarding/WorkspaceStepPage.js +25 -20
  234. package/dist/pages/onboarding/WorkspaceStepPage.js.map +1 -1
  235. package/dist/pages/onboarding/handbookTemplates.d.ts +19 -0
  236. package/dist/pages/onboarding/handbookTemplates.d.ts.map +1 -0
  237. package/dist/pages/onboarding/handbookTemplates.js +57 -0
  238. package/dist/pages/onboarding/handbookTemplates.js.map +1 -0
  239. package/dist/pages/onboarding/onboardingModules.d.ts +23 -0
  240. package/dist/pages/onboarding/onboardingModules.d.ts.map +1 -0
  241. package/dist/pages/onboarding/onboardingModules.js +153 -0
  242. package/dist/pages/onboarding/onboardingModules.js.map +1 -0
  243. package/dist/pages/onboarding/onboardingRerun.d.ts +21 -0
  244. package/dist/pages/onboarding/onboardingRerun.d.ts.map +1 -0
  245. package/dist/pages/onboarding/onboardingRerun.js +33 -0
  246. package/dist/pages/onboarding/onboardingRerun.js.map +1 -0
  247. package/dist/registry/context.d.ts +3 -1
  248. package/dist/registry/context.d.ts.map +1 -1
  249. package/dist/registry/context.js +4 -0
  250. package/dist/registry/context.js.map +1 -1
  251. package/dist/registry/contributions.d.ts +24 -0
  252. package/dist/registry/contributions.d.ts.map +1 -1
  253. package/dist/registry/contributions.js.map +1 -1
  254. package/dist/registry/registry.d.ts +4 -1
  255. package/dist/registry/registry.d.ts.map +1 -1
  256. package/dist/registry/registry.js +6 -0
  257. package/dist/registry/registry.js.map +1 -1
  258. package/package.json +4 -3
  259. package/src/api/resources/attendances.ts +54 -0
  260. package/src/api/resources/eventAssociations.ts +43 -0
  261. package/src/api/resources/events.ts +70 -0
  262. package/src/api/resources/handbookSeed.ts +63 -0
  263. package/src/api/resources/moduleSettings.ts +25 -0
  264. package/src/api/resources/planItems.ts +5 -5
  265. package/src/api/resources/publicConfig.ts +3 -3
  266. package/src/api/resources/sampleData.ts +2 -0
  267. package/src/api/resources/session.ts +59 -0
  268. package/src/api/resources/workspace.ts +2 -3
  269. package/src/app/KelpieApp.tsx +11 -3
  270. package/src/components/ActivitiesPanel.tsx +2 -0
  271. package/src/components/AddressesField.tsx +502 -0
  272. package/src/components/CountrySearch.tsx +71 -0
  273. package/src/components/EnvironmentBanner.tsx +23 -6
  274. package/src/components/InlineEdit.tsx +35 -1
  275. package/src/components/LinkedEventsPanel.tsx +50 -0
  276. package/src/components/NotesPanel.tsx +132 -15
  277. package/src/components/PlanAttention.tsx +5 -4
  278. package/src/components/PlanPanel.tsx +3 -3
  279. package/src/components/Shell.tsx +16 -1
  280. package/src/components/SocialNetworkIcon.tsx +88 -0
  281. package/src/components/SocialProfilesField.tsx +57 -10
  282. package/src/components/TimezoneSearch.tsx +67 -0
  283. package/src/components/WorkspaceSwitcher.tsx +136 -0
  284. package/src/components/environmentTone.ts +40 -0
  285. package/src/index.ts +49 -3
  286. package/src/lib/timezones.ts +43 -0
  287. package/src/pages/CompaniesPage.tsx +14 -13
  288. package/src/pages/CompanyDetail.tsx +59 -27
  289. package/src/pages/DealDetail.tsx +5 -0
  290. package/src/pages/DecisionsPage.tsx +7 -0
  291. package/src/pages/EnquiryDetail.tsx +7 -0
  292. package/src/pages/EventDetail.tsx +794 -0
  293. package/src/pages/EventsPage.tsx +382 -0
  294. package/src/pages/ListDetail.tsx +24 -0
  295. package/src/pages/OpportunityDetail.tsx +7 -0
  296. package/src/pages/PartnershipDetail.tsx +7 -0
  297. package/src/pages/PeoplePage.tsx +18 -5
  298. package/src/pages/PersonDetail.tsx +300 -100
  299. package/src/pages/PlanningPage.tsx +17 -14
  300. package/src/pages/RaiseDetail.tsx +5 -0
  301. package/src/pages/RoleDetail.tsx +8 -0
  302. package/src/pages/SearchPage.tsx +2 -1
  303. package/src/pages/account/PreferencesPage.tsx +2 -37
  304. package/src/pages/account/SecurityPage.tsx +6 -1
  305. package/src/pages/admin/DataPage.tsx +63 -21
  306. package/src/pages/admin/FieldsPage.tsx +1 -1
  307. package/src/pages/admin/ModulesPage.tsx +1 -0
  308. package/src/pages/admin/WorkspaceSettingsPage.tsx +10 -33
  309. package/src/pages/auth/AuthForm.tsx +38 -0
  310. package/src/pages/auth/AuthLayout.tsx +8 -4
  311. package/src/pages/auth/AuthMethods.tsx +29 -0
  312. package/src/pages/auth/RegionSwitcher.tsx +56 -0
  313. package/src/pages/auth/SignInPage.tsx +13 -14
  314. package/src/pages/auth/SignUpPage.tsx +32 -0
  315. package/src/pages/auth/nextPath.ts +17 -0
  316. package/src/pages/auth/regionHref.ts +10 -0
  317. package/src/pages/dashboard/DashboardPage.tsx +16 -48
  318. package/src/pages/dashboard/attention.ts +24 -78
  319. package/src/pages/dashboard/sections.tsx +8 -2
  320. package/src/pages/forms/FormActions.tsx +14 -8
  321. package/src/pages/onboarding/HandbookStepPage.tsx +21 -24
  322. package/src/pages/onboarding/InvitesStepPage.tsx +27 -19
  323. package/src/pages/onboarding/ModulesStepPage.tsx +145 -0
  324. package/src/pages/onboarding/OnboardingNav.tsx +97 -0
  325. package/src/pages/onboarding/OrganisationStepPage.tsx +130 -0
  326. package/src/pages/onboarding/WorkspaceStepPage.tsx +53 -38
  327. package/src/pages/onboarding/handbookTemplates.ts +77 -0
  328. package/src/pages/onboarding/onboardingModules.ts +202 -0
  329. package/src/pages/onboarding/onboardingRerun.ts +41 -0
  330. package/src/registry/context.ts +6 -0
  331. package/src/registry/contributions.ts +26 -0
  332. package/src/registry/registry.ts +12 -0
  333. package/src/styles.css +30 -0
@@ -0,0 +1,153 @@
1
+ const LABELS = {
2
+ deals: 'Deals',
3
+ opportunities: 'Opportunities',
4
+ raises: 'Fundraising',
5
+ partnerships: 'Partnerships',
6
+ events: 'Events',
7
+ forms: 'Forms',
8
+ };
9
+ const MODULE_ORDER = [
10
+ 'deals',
11
+ 'opportunities',
12
+ 'raises',
13
+ 'partnerships',
14
+ 'events',
15
+ 'forms',
16
+ ];
17
+ /** Startup / Choose later — every optional module starts on. */
18
+ const STARTUP = {
19
+ enabled: {
20
+ deals: true,
21
+ opportunities: true,
22
+ raises: true,
23
+ partnerships: true,
24
+ events: true,
25
+ forms: true,
26
+ },
27
+ descriptions: {
28
+ deals: 'Track sales you are trying to close, from first chat to won or lost.',
29
+ opportunities: 'Chase things that are not sales — grants, awards, press, a speaking slot.',
30
+ raises: 'Run a funding round: who you are talking to, and where each one is up to.',
31
+ partnerships: 'Keep tabs on the people you work with long-term, and when to check in next.',
32
+ events: 'Plan meetups, dinners, and webinars, and see who is coming.',
33
+ forms: 'Put a form on your site. New sign-ups land in Kelpie on their own.',
34
+ },
35
+ };
36
+ const AGENCY = {
37
+ enabled: {
38
+ deals: true,
39
+ opportunities: false,
40
+ raises: false,
41
+ partnerships: true,
42
+ events: true,
43
+ forms: true,
44
+ },
45
+ descriptions: {
46
+ deals: 'Track pitches, retainers, and projects you are trying to close.',
47
+ opportunities: 'Chase RFPs, awards, press, and speaking slots that are not billed work.',
48
+ raises: 'Run a funding round: who you are talking to, and where each one is up to.',
49
+ partnerships: 'Keep tabs on subcontractors, channel partners, and when to check in next.',
50
+ events: 'Plan workshops, client dinners, and webinars, and see who is coming.',
51
+ forms: 'Put a form on your site. New enquiries land in Kelpie on their own.',
52
+ },
53
+ };
54
+ const NONPROFIT = {
55
+ enabled: {
56
+ deals: false,
57
+ opportunities: true,
58
+ raises: true,
59
+ partnerships: true,
60
+ events: true,
61
+ forms: true,
62
+ },
63
+ descriptions: {
64
+ deals: 'Track sponsorships or earned-income work you are trying to close.',
65
+ opportunities: 'Chase grants, awards, press, and speaking slots.',
66
+ raises: 'Track who you are raising from, and where each conversation is up to.',
67
+ partnerships: 'Keep tabs on the organisations you work with long-term, and when to check in next.',
68
+ events: 'Plan fundraisers, volunteer days, and community gatherings, and see who is coming.',
69
+ forms: 'Put a form on your site. New supporters land in Kelpie on their own.',
70
+ },
71
+ };
72
+ const COMMUNITY = {
73
+ enabled: {
74
+ deals: false,
75
+ opportunities: true,
76
+ raises: true,
77
+ partnerships: true,
78
+ events: true,
79
+ forms: true,
80
+ },
81
+ descriptions: {
82
+ deals: 'Track sponsorships or paid programmes you are trying to close.',
83
+ opportunities: 'Chase grants, press, and speaking slots that are not membership sales.',
84
+ raises: 'Track who you are raising from, and where each conversation is up to.',
85
+ partnerships: 'Keep tabs on sister organisations and long-term collaborators, and when to check in next.',
86
+ events: 'Plan meetups, dinners, and member gatherings, and see who is coming.',
87
+ forms: 'Put a join or contact form on your site. New sign-ups land in Kelpie on their own.',
88
+ },
89
+ };
90
+ const PROFESSIONAL_SERVICES = {
91
+ enabled: {
92
+ deals: true,
93
+ opportunities: false,
94
+ raises: false,
95
+ partnerships: false,
96
+ events: true,
97
+ forms: true,
98
+ },
99
+ descriptions: {
100
+ deals: 'Track engagements from first conversation to won or lost.',
101
+ opportunities: 'Chase tenders, panels, press, and speaking slots.',
102
+ raises: 'Run a funding round: who you are talking to, and where each one is up to.',
103
+ partnerships: 'Keep tabs on referral sources and when to check in next.',
104
+ events: 'Plan client seminars, dinners, and webinars, and see who is coming.',
105
+ forms: 'Put a form on your site. New enquiries land in Kelpie on their own.',
106
+ },
107
+ };
108
+ const CREATOR = {
109
+ enabled: {
110
+ deals: true,
111
+ opportunities: true,
112
+ raises: false,
113
+ partnerships: false,
114
+ events: false,
115
+ forms: true,
116
+ },
117
+ descriptions: {
118
+ deals: 'Track brand deals and client work from first chat to won or lost.',
119
+ opportunities: 'Chase press, speaking, and other chances that are not billed work.',
120
+ raises: 'Run a funding round: who you are talking to, and where each one is up to.',
121
+ partnerships: 'Keep tabs on the brands you work with long-term, and when to check in next.',
122
+ events: 'Plan meetups, launches, and webinars, and see who is coming.',
123
+ forms: 'Put a form on your site. New enquiries land in Kelpie on their own.',
124
+ },
125
+ };
126
+ const PRESETS = {
127
+ startup: STARTUP,
128
+ agency: AGENCY,
129
+ nonprofit: NONPROFIT,
130
+ community: COMMUNITY,
131
+ 'professional-services': PROFESSIONAL_SERVICES,
132
+ creator: CREATOR,
133
+ };
134
+ function presetForChoice(choice) {
135
+ return choice === 'later' ? STARTUP : PRESETS[choice];
136
+ }
137
+ /** Startup catalog. Prefer `onboardingModulesForChoice` when a type is known. */
138
+ export const ONBOARDING_MODULES = modulesFromPreset(STARTUP);
139
+ export function onboardingModulesForChoice(choice) {
140
+ return modulesFromPreset(presetForChoice(choice));
141
+ }
142
+ export function defaultOnboardingModuleState(choice = 'startup') {
143
+ return { ...presetForChoice(choice).enabled };
144
+ }
145
+ function modulesFromPreset(preset) {
146
+ return MODULE_ORDER.map((id) => ({
147
+ id,
148
+ label: LABELS[id],
149
+ description: preset.descriptions[id],
150
+ defaultEnabled: preset.enabled[id],
151
+ }));
152
+ }
153
+ //# sourceMappingURL=onboardingModules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboardingModules.js","sourceRoot":"","sources":["../../../src/pages/onboarding/onboardingModules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * A finished workspace can walk the wizard again from the account menu.
3
+ *
4
+ * `?rerun=1` marks that path. Organisation still runs so the reader can pick
5
+ * a type, but handbook pages are not seeded or replaced. The handbook review
6
+ * step is skipped: workspace → organisation → modules → invites → dashboard.
7
+ */
8
+ export declare const ONBOARDING_RERUN_PARAM = "rerun";
9
+ export declare const ONBOARDING_RERUN_VALUE = "1";
10
+ /** Organisation type chosen on step 2 — drives module defaults on step 3. */
11
+ export declare const ONBOARDING_ORG_PARAM = "org";
12
+ /** Entry URL the account menu opens for a rerun. */
13
+ export declare const ONBOARDING_RERUN_ENTRY = "/onboarding/workspace?rerun=1";
14
+ export declare function isOnboardingRerun(searchParams: URLSearchParams): boolean;
15
+ /**
16
+ * Keep the rerun flag and the organisation type when moving between onboarding
17
+ * routes. `org` is how the modules step knows which defaults to offer; nothing
18
+ * else is held in the browser (`onboarding.md`).
19
+ */
20
+ export declare function onboardingPath(path: string, rerun: boolean, org?: string | null): string;
21
+ //# sourceMappingURL=onboardingRerun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboardingRerun.d.ts","sourceRoot":"","sources":["../../../src/pages/onboarding/onboardingRerun.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,sBAAsB,UAAU,CAAA;AAC7C,eAAO,MAAM,sBAAsB,MAAM,CAAA;AAEzC,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,QAAQ,CAAA;AAEzC,oDAAoD;AACpD,eAAO,MAAM,sBAAsB,kCAA8E,CAAA;AAEjH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,eAAe,GAAG,OAAO,CAExE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAcxF"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * A finished workspace can walk the wizard again from the account menu.
3
+ *
4
+ * `?rerun=1` marks that path. Organisation still runs so the reader can pick
5
+ * a type, but handbook pages are not seeded or replaced. The handbook review
6
+ * step is skipped: workspace → organisation → modules → invites → dashboard.
7
+ */
8
+ export const ONBOARDING_RERUN_PARAM = 'rerun';
9
+ export const ONBOARDING_RERUN_VALUE = '1';
10
+ /** Organisation type chosen on step 2 — drives module defaults on step 3. */
11
+ export const ONBOARDING_ORG_PARAM = 'org';
12
+ /** Entry URL the account menu opens for a rerun. */
13
+ export const ONBOARDING_RERUN_ENTRY = `/onboarding/workspace?${ONBOARDING_RERUN_PARAM}=${ONBOARDING_RERUN_VALUE}`;
14
+ export function isOnboardingRerun(searchParams) {
15
+ return searchParams.get(ONBOARDING_RERUN_PARAM) === ONBOARDING_RERUN_VALUE;
16
+ }
17
+ /**
18
+ * Keep the rerun flag and the organisation type when moving between onboarding
19
+ * routes. `org` is how the modules step knows which defaults to offer; nothing
20
+ * else is held in the browser (`onboarding.md`).
21
+ */
22
+ export function onboardingPath(path, rerun, org) {
23
+ const params = new URLSearchParams();
24
+ if (rerun) {
25
+ params.set(ONBOARDING_RERUN_PARAM, ONBOARDING_RERUN_VALUE);
26
+ }
27
+ if (org !== undefined && org !== null && org !== '') {
28
+ params.set(ONBOARDING_ORG_PARAM, org);
29
+ }
30
+ const query = params.toString();
31
+ return query === '' ? path : `${path}?${query}`;
32
+ }
33
+ //# sourceMappingURL=onboardingRerun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboardingRerun.js","sourceRoot":"","sources":["../../../src/pages/onboarding/onboardingRerun.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAA;AAC7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;AAEzC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAA;AAEzC,oDAAoD;AACpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,yBAAyB,sBAAsB,IAAI,sBAAsB,EAAE,CAAA;AAEjH,MAAM,UAAU,iBAAiB,CAAC,YAA6B;IAC7D,OAAO,YAAY,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,sBAAsB,CAAA;AAC5E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAc,EAAE,GAAmB;IAC9E,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;IAEpC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;IAE/B,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAA;AACjD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { ComponentType } from 'react';
2
- import type { DashboardCard, ExtensibleRecordType, NavItem, NavSlot, RecordSidebarCard, RecordTab, RouteContribution } from './contributions.ts';
2
+ import type { AuthMethod, 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,6 +22,8 @@ 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
+ /** Extra ways to sign in, for the signed-out pages to render beside their form. */
26
+ export declare function useAuthMethods(): readonly AuthMethod[];
25
27
  /**
26
28
  * The component to render for an overridable: a module's replacement, or core's
27
29
  * 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,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"}
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,UAAU,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,mFAAmF;AACnF,wBAAgB,cAAc,IAAI,SAAS,UAAU,EAAE,CAEtD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAErF"}
@@ -32,6 +32,10 @@ export function useRecordSidebarCards(objectType) {
32
32
  export function useDashboardCards() {
33
33
  return useUiExtensions().dashboardCards();
34
34
  }
35
+ /** Extra ways to sign in, for the signed-out pages to render beside their form. */
36
+ export function useAuthMethods() {
37
+ return useUiExtensions().authMethods();
38
+ }
35
39
  /**
36
40
  * The component to render for an overridable: a module's replacement, or core's
37
41
  * 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;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
+ {"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,mFAAmF;AACnF,MAAM,UAAU,cAAc;IAC5B,OAAO,eAAe,EAAE,CAAC,WAAW,EAAE,CAAA;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAQ,KAAyB;IAC7D,OAAO,eAAe,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAC9C,CAAC"}
@@ -20,6 +20,30 @@ export interface NavItem {
20
20
  readonly order?: number;
21
21
  readonly icon?: ReactNode;
22
22
  }
23
+ /**
24
+ * What a sign-in method is rendering against.
25
+ *
26
+ * `intent` because the same button reads differently on the two pages, and
27
+ * `next` because where the browser lands afterwards is the page's to decide,
28
+ * not the module's. The page has already checked it is a path within the app.
29
+ */
30
+ export interface AuthMethodContext {
31
+ readonly intent: 'login' | 'signup';
32
+ readonly next: string;
33
+ }
34
+ /**
35
+ * Another way to sign in, offered beside the password form.
36
+ *
37
+ * Core renders whatever a module returns and nothing around it: no divider, no
38
+ * heading. A module cannot always tell at build time whether it has anything to
39
+ * offer (an unconfigured provider renders nothing at all), and core framing
40
+ * would then decorate an empty space.
41
+ */
42
+ export interface AuthMethod {
43
+ readonly id: string;
44
+ readonly order?: number;
45
+ readonly render: (context: AuthMethodContext) => ReactNode;
46
+ }
23
47
  /** A whole page, mounted under the shell's chrome. */
24
48
  export interface RouteContribution {
25
49
  readonly path: string;
@@ -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,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"}
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;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,CAAA;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,SAAS,CAAA;CAC3D;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"}
@@ -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"}
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;AAiDjE;;;;;;;;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, NavItem, NavSlot, RecordSidebarCard, RecordTab, RouteContribution } from './contributions.ts';
2
+ import type { AuthMethod, 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,6 +19,8 @@ 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
+ /** Another way to sign in, rendered beside the password form on `/login` and `/signup`. */
23
+ authMethod(method: AuthMethod): void;
22
24
  /** Replaces a core component. Prefer a slot; see `modules.md`. */
23
25
  override<Props>(token: Overridable<Props>, component: ComponentType<Props>): void;
24
26
  }
@@ -33,6 +35,7 @@ export interface UiExtensions {
33
35
  recordTabs(objectType: ExtensibleRecordType): readonly RecordTab[];
34
36
  recordSidebarCards(objectType: ExtensibleRecordType): readonly RecordSidebarCard[];
35
37
  dashboardCards(): readonly DashboardCard[];
38
+ authMethods(): readonly AuthMethod[];
36
39
  componentFor<Props>(token: Overridable<Props>): ComponentType<Props>;
37
40
  }
38
41
  /**
@@ -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,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"}
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,UAAU,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,2FAA2F;IAC3F,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACpC,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,WAAW,IAAI,SAAS,UAAU,EAAE,CAAA;IACpC,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"}
@@ -55,6 +55,10 @@ function createModuleContext(module, accumulator, taken) {
55
55
  claim(taken, module.id, 'dashboard.cards', card.id);
56
56
  accumulator.dashboardCards.push(card);
57
57
  },
58
+ authMethod(method) {
59
+ claim(taken, module.id, 'auth.methods', method.id);
60
+ accumulator.authMethods.push(method);
61
+ },
58
62
  override(token, component) {
59
63
  if (accumulator.overrides.has(token.key)) {
60
64
  throw new UiModuleError(`module "${module.id}" overrides "${token.key}", which another module already replaced`);
@@ -75,6 +79,7 @@ export function registerUiModules(modules) {
75
79
  recordTabs: new Map(),
76
80
  recordSidebarCards: new Map(),
77
81
  dashboardCards: [],
82
+ authMethods: [],
78
83
  overrides: createOverrideStore(),
79
84
  };
80
85
  const taken = new Set();
@@ -92,6 +97,7 @@ export function registerUiModules(modules) {
92
97
  recordTabs: (objectType) => inSlotOrder(accumulator.recordTabs.get(objectType) ?? []),
93
98
  recordSidebarCards: (objectType) => inSlotOrder(accumulator.recordSidebarCards.get(objectType) ?? []),
94
99
  dashboardCards: () => inSlotOrder(accumulator.dashboardCards),
100
+ authMethods: () => inSlotOrder(accumulator.authMethods),
95
101
  componentFor: (token) => accumulator.overrides.get(token),
96
102
  };
97
103
  }
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kelpie/ui",
3
- "version": "0.11.0",
3
+ "version": "0.13.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,11 +48,12 @@
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.11.0",
51
+ "@kelpie/schemas": "^0.13.0",
52
52
  "@tanstack/react-query": "^5.101.4",
53
53
  "react-markdown": "^10.1.0",
54
54
  "react-router": "^8.3.0",
55
- "remark-gfm": "^4.0.1"
55
+ "remark-gfm": "^4.0.1",
56
+ "simple-icons": "^16.30.0"
56
57
  },
57
58
  "peerDependencies": {
58
59
  "react": "^19.0.0",
@@ -0,0 +1,54 @@
1
+ import { attendanceBody, attendanceSchema, createAttendanceBody } from '@kelpie/schemas'
2
+ import type { Attendance, AttendanceInput, AttendanceStatus, CreateAttendanceInput } from '@kelpie/schemas'
3
+
4
+ import type { QueryParameters } from '../client.ts'
5
+ import { createResourceHooks } from '../resource.ts'
6
+ import type { ListOptions, MutationResult, RecordListResult, UpdateArguments } from '../resource.ts'
7
+
8
+ /**
9
+ * `/v1/attendances`, the Person↔Event link.
10
+ */
11
+
12
+ const attendances = createResourceHooks<Attendance, CreateAttendanceInput, AttendanceInput>({
13
+ name: 'attendances',
14
+ path: '/attendances',
15
+ decode: attendanceSchema.parse,
16
+ createBody: createAttendanceBody,
17
+ updateBody: attendanceBody,
18
+ alsoInvalidates: ['activities', 'notes', 'events', 'people', 'dashboard'],
19
+ })
20
+
21
+ export interface AttendanceFilters {
22
+ readonly eventIds?: readonly string[] | undefined
23
+ readonly personIds?: readonly string[] | undefined
24
+ readonly statuses?: readonly AttendanceStatus[] | undefined
25
+ readonly limit?: number | undefined
26
+ }
27
+
28
+ function attendanceQuery(filters: AttendanceFilters): QueryParameters {
29
+ return {
30
+ event_id: filters.eventIds,
31
+ person_id: filters.personIds,
32
+ status: filters.statuses,
33
+ limit: filters.limit,
34
+ }
35
+ }
36
+
37
+ export function useAttendances(
38
+ filters: AttendanceFilters = {},
39
+ options: ListOptions = {},
40
+ ): RecordListResult<Attendance> {
41
+ return attendances.useList(attendanceQuery(filters), options)
42
+ }
43
+
44
+ export function useCreateAttendance(): MutationResult<CreateAttendanceInput, Attendance> {
45
+ return attendances.useCreate()
46
+ }
47
+
48
+ export function useUpdateAttendance(): MutationResult<UpdateArguments<AttendanceInput>, Attendance> {
49
+ return attendances.useUpdate()
50
+ }
51
+
52
+ export function useDeleteAttendance(): MutationResult<string, void> {
53
+ return attendances.useRemove()
54
+ }
@@ -0,0 +1,43 @@
1
+ import { eventAssociationRowSchema } from '@kelpie/schemas'
2
+ import type { EventAssociationRow, EventAssociationTargetType } from '@kelpie/schemas'
3
+ import { useQuery } from '@tanstack/react-query'
4
+
5
+ import { useApiClient } from '../context.ts'
6
+ import { toError } from '../errors.ts'
7
+
8
+ /**
9
+ * `GET /v1/event-associations?target_type=&target_id=`: Events linked to another
10
+ * record. The reverse of the associations array on an Event.
11
+ */
12
+
13
+ export interface EventAssociationsResult {
14
+ readonly associations: readonly EventAssociationRow[]
15
+ readonly isLoading: boolean
16
+ readonly error: Error | null
17
+ }
18
+
19
+ export function useEventAssociationsFor(
20
+ targetType: EventAssociationTargetType | undefined,
21
+ targetId: string | undefined,
22
+ ): EventAssociationsResult {
23
+ const client = useApiClient()
24
+ const enabled = targetType !== undefined && targetId !== undefined
25
+ const result = useQuery({
26
+ queryKey: ['eventAssociations', targetType, targetId],
27
+ queryFn: async () => {
28
+ const page = await client.list('/event-associations', eventAssociationRowSchema.parse, {
29
+ target_type: targetType,
30
+ target_id: targetId,
31
+ })
32
+
33
+ return page.items
34
+ },
35
+ enabled,
36
+ })
37
+
38
+ return {
39
+ associations: result.data ?? [],
40
+ isLoading: result.isPending && enabled,
41
+ error: toError(result.error),
42
+ }
43
+ }
@@ -0,0 +1,70 @@
1
+ import { createEventBody, eventBody, eventSchema } from '@kelpie/schemas'
2
+ import type { CreateEventInput, Event as CrmEvent, EventFormat, EventInput, EventStatus } from '@kelpie/schemas'
3
+
4
+ import type { QueryParameters } from '../client.ts'
5
+ import { createResourceHooks } from '../resource.ts'
6
+ import type {
7
+ ListOptions,
8
+ MutationResult,
9
+ RecordListResult,
10
+ RecordResult,
11
+ UpdateArguments,
12
+ } from '../resource.ts'
13
+
14
+ /**
15
+ * `/v1/events`. A dated gathering, not a pipeline: no stages and no kanban.
16
+ */
17
+
18
+ const events = createResourceHooks<CrmEvent, CreateEventInput, EventInput>({
19
+ name: 'events',
20
+ path: '/events',
21
+ decode: eventSchema.parse,
22
+ createBody: createEventBody,
23
+ updateBody: eventBody,
24
+ alsoInvalidates: ['activities', 'attendances', 'eventAssociations', 'dashboard'],
25
+ })
26
+
27
+ export interface EventFilters {
28
+ readonly term?: string | undefined
29
+ readonly statuses?: readonly EventStatus[] | undefined
30
+ readonly formats?: readonly EventFormat[] | undefined
31
+ readonly from?: string | undefined
32
+ readonly to?: string | undefined
33
+ readonly limit?: number | undefined
34
+ readonly sort?: string | undefined
35
+ }
36
+
37
+ function eventQuery(filters: EventFilters): QueryParameters {
38
+ return {
39
+ q: filters.term,
40
+ status: filters.statuses,
41
+ format: filters.formats,
42
+ from: filters.from,
43
+ to: filters.to,
44
+ limit: filters.limit,
45
+ sort: filters.sort,
46
+ }
47
+ }
48
+
49
+ export function useEvents(
50
+ filters: EventFilters = {},
51
+ options: ListOptions = {},
52
+ ): RecordListResult<CrmEvent> {
53
+ return events.useList(eventQuery(filters), options)
54
+ }
55
+
56
+ export function useEvent(id: string | undefined): RecordResult<CrmEvent> {
57
+ return events.useRecord(id)
58
+ }
59
+
60
+ export function useCreateEvent(): MutationResult<CreateEventInput, CrmEvent> {
61
+ return events.useCreate()
62
+ }
63
+
64
+ export function useUpdateEvent(): MutationResult<UpdateArguments<EventInput>, CrmEvent> {
65
+ return events.useUpdate()
66
+ }
67
+
68
+ export function useDeleteEvent(): MutationResult<string, void> {
69
+ return events.useRemove()
70
+ }