@fayz-ai/admin 0.10.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 (557) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +44 -0
  3. package/dist/CommandPalette-2AL327XQ.js +258 -0
  4. package/dist/CommandPalette-2AL327XQ.js.map +1 -0
  5. package/dist/ImportWizard-CISHGNQC.js +3 -0
  6. package/dist/ImportWizard-CISHGNQC.js.map +1 -0
  7. package/dist/ScheduleEditor-BSFF7LME.js +1040 -0
  8. package/dist/ScheduleEditor-BSFF7LME.js.map +1 -0
  9. package/dist/SubscriptionPage-NLZAZO4P.js +7 -0
  10. package/dist/SubscriptionPage-NLZAZO4P.js.map +1 -0
  11. package/dist/access/context.d.ts +47 -0
  12. package/dist/access/context.d.ts.map +1 -0
  13. package/dist/access/headless.d.ts +21 -0
  14. package/dist/access/headless.d.ts.map +1 -0
  15. package/dist/access/index.d.ts +12 -0
  16. package/dist/access/index.d.ts.map +1 -0
  17. package/dist/access/limits-registry.d.ts +33 -0
  18. package/dist/access/limits-registry.d.ts.map +1 -0
  19. package/dist/access/module-nav.d.ts +15 -0
  20. package/dist/access/module-nav.d.ts.map +1 -0
  21. package/dist/access/resolver.d.ts +2 -0
  22. package/dist/access/resolver.d.ts.map +1 -0
  23. package/dist/access/types.d.ts +43 -0
  24. package/dist/access/types.d.ts.map +1 -0
  25. package/dist/access/upgrade-modal-store.d.ts +23 -0
  26. package/dist/access/upgrade-modal-store.d.ts.map +1 -0
  27. package/dist/app/AdminShell.d.ts +65 -0
  28. package/dist/app/AdminShell.d.ts.map +1 -0
  29. package/dist/app/LoginPage.d.ts +3 -0
  30. package/dist/app/LoginPage.d.ts.map +1 -0
  31. package/dist/app/admin-app.d.ts +23 -0
  32. package/dist/app/admin-app.d.ts.map +1 -0
  33. package/dist/app/config.d.ts +277 -0
  34. package/dist/app/config.d.ts.map +1 -0
  35. package/dist/app/core-entities.d.ts +25 -0
  36. package/dist/app/core-entities.d.ts.map +1 -0
  37. package/dist/app/derive-contract.d.ts +8 -0
  38. package/dist/app/derive-contract.d.ts.map +1 -0
  39. package/dist/app/nav-contributions.store.d.ts +17 -0
  40. package/dist/app/nav-contributions.store.d.ts.map +1 -0
  41. package/dist/app/routing.d.ts +10 -0
  42. package/dist/app/routing.d.ts.map +1 -0
  43. package/dist/app/scaffold.d.ts +17 -0
  44. package/dist/app/scaffold.d.ts.map +1 -0
  45. package/dist/billing/index.d.ts +5 -0
  46. package/dist/billing/index.d.ts.map +1 -0
  47. package/dist/billing/index.js +3 -0
  48. package/dist/billing/index.js.map +1 -0
  49. package/dist/billing/plan-badge.d.ts +17 -0
  50. package/dist/billing/plan-badge.d.ts.map +1 -0
  51. package/dist/billing/store.d.ts +40 -0
  52. package/dist/billing/store.d.ts.map +1 -0
  53. package/dist/chunk-5O2UJAQ7.js +534 -0
  54. package/dist/chunk-5O2UJAQ7.js.map +1 -0
  55. package/dist/chunk-PNAJODZM.js +315 -0
  56. package/dist/chunk-PNAJODZM.js.map +1 -0
  57. package/dist/chunk-RKXZ7RUG.js +20 -0
  58. package/dist/chunk-RKXZ7RUG.js.map +1 -0
  59. package/dist/chunk-TNTZHUL6.js +817 -0
  60. package/dist/chunk-TNTZHUL6.js.map +1 -0
  61. package/dist/chunk-UMRN6427.js +510 -0
  62. package/dist/chunk-UMRN6427.js.map +1 -0
  63. package/dist/chunk-VN5NTK26.js +36 -0
  64. package/dist/chunk-VN5NTK26.js.map +1 -0
  65. package/dist/chunk-VTEP2AQX.js +101 -0
  66. package/dist/chunk-VTEP2AQX.js.map +1 -0
  67. package/dist/chunk-YUHCC7JY.js +11 -0
  68. package/dist/chunk-YUHCC7JY.js.map +1 -0
  69. package/dist/components/RightRail.d.ts +8 -0
  70. package/dist/components/RightRail.d.ts.map +1 -0
  71. package/dist/components/auth/CenteredLogin.d.ts +13 -0
  72. package/dist/components/auth/CenteredLogin.d.ts.map +1 -0
  73. package/dist/components/auth/LoginForm.d.ts +12 -0
  74. package/dist/components/auth/LoginForm.d.ts.map +1 -0
  75. package/dist/components/auth/LoginPage.d.ts +15 -0
  76. package/dist/components/auth/LoginPage.d.ts.map +1 -0
  77. package/dist/components/auth/OAuthButtons.d.ts +10 -0
  78. package/dist/components/auth/OAuthButtons.d.ts.map +1 -0
  79. package/dist/components/auth/ProtectedRoute.d.ts +11 -0
  80. package/dist/components/auth/ProtectedRoute.d.ts.map +1 -0
  81. package/dist/components/auth/RecoveryForm.d.ts +9 -0
  82. package/dist/components/auth/RecoveryForm.d.ts.map +1 -0
  83. package/dist/components/auth/SignupForm.d.ts +10 -0
  84. package/dist/components/auth/SignupForm.d.ts.map +1 -0
  85. package/dist/components/auth/SplitLogin.d.ts +14 -0
  86. package/dist/components/auth/SplitLogin.d.ts.map +1 -0
  87. package/dist/components/auth/index.d.ts +7 -0
  88. package/dist/components/auth/index.d.ts.map +1 -0
  89. package/dist/components/billing/InvoiceList.d.ts +9 -0
  90. package/dist/components/billing/InvoiceList.d.ts.map +1 -0
  91. package/dist/components/billing/PlanSelector.d.ts +13 -0
  92. package/dist/components/billing/PlanSelector.d.ts.map +1 -0
  93. package/dist/components/billing/SoftLimitBanner.d.ts +5 -0
  94. package/dist/components/billing/SoftLimitBanner.d.ts.map +1 -0
  95. package/dist/components/billing/SubscriptionCard.d.ts +12 -0
  96. package/dist/components/billing/SubscriptionCard.d.ts.map +1 -0
  97. package/dist/components/billing/SubscriptionPage.d.ts +5 -0
  98. package/dist/components/billing/SubscriptionPage.d.ts.map +1 -0
  99. package/dist/components/billing/UpgradeModal.d.ts +3 -0
  100. package/dist/components/billing/UpgradeModal.d.ts.map +1 -0
  101. package/dist/components/billing/UpgradeOverlay.d.ts +15 -0
  102. package/dist/components/billing/UpgradeOverlay.d.ts.map +1 -0
  103. package/dist/components/billing/UpgradePrompt.d.ts +10 -0
  104. package/dist/components/billing/UpgradePrompt.d.ts.map +1 -0
  105. package/dist/components/billing/access-contract.d.ts +18 -0
  106. package/dist/components/billing/access-contract.d.ts.map +1 -0
  107. package/dist/components/billing/gates.d.ts +14 -0
  108. package/dist/components/billing/gates.d.ts.map +1 -0
  109. package/dist/components/billing/index.d.ts +15 -0
  110. package/dist/components/billing/index.d.ts.map +1 -0
  111. package/dist/components/billing/plan-feature.d.ts +11 -0
  112. package/dist/components/billing/plan-feature.d.ts.map +1 -0
  113. package/dist/components/chat/ChatAttachments.d.ts +23 -0
  114. package/dist/components/chat/ChatAttachments.d.ts.map +1 -0
  115. package/dist/components/chat/ChatComposer.d.ts +21 -0
  116. package/dist/components/chat/ChatComposer.d.ts.map +1 -0
  117. package/dist/components/chat/ChatConversation.d.ts +20 -0
  118. package/dist/components/chat/ChatConversation.d.ts.map +1 -0
  119. package/dist/components/chat/ChatFab.d.ts +17 -0
  120. package/dist/components/chat/ChatFab.d.ts.map +1 -0
  121. package/dist/components/chat/ChatHistory.d.ts +16 -0
  122. package/dist/components/chat/ChatHistory.d.ts.map +1 -0
  123. package/dist/components/chat/ChatMessages.d.ts +16 -0
  124. package/dist/components/chat/ChatMessages.d.ts.map +1 -0
  125. package/dist/components/chat/ChatSuggestions.d.ts +17 -0
  126. package/dist/components/chat/ChatSuggestions.d.ts.map +1 -0
  127. package/dist/components/chat/ConfirmActionCard.d.ts +19 -0
  128. package/dist/components/chat/ConfirmActionCard.d.ts.map +1 -0
  129. package/dist/components/chat/RecordChip.d.ts +12 -0
  130. package/dist/components/chat/RecordChip.d.ts.map +1 -0
  131. package/dist/components/chat/index.d.ts +4 -0
  132. package/dist/components/chat/index.d.ts.map +1 -0
  133. package/dist/components/chat/markdown.d.ts +5 -0
  134. package/dist/components/chat/markdown.d.ts.map +1 -0
  135. package/dist/components/connect/AddConnectorPanel.d.ts +32 -0
  136. package/dist/components/connect/AddConnectorPanel.d.ts.map +1 -0
  137. package/dist/components/connect/ConnectConsentPage.d.ts +12 -0
  138. package/dist/components/connect/ConnectConsentPage.d.ts.map +1 -0
  139. package/dist/components/connect/ConnectorDetail.d.ts +29 -0
  140. package/dist/components/connect/ConnectorDetail.d.ts.map +1 -0
  141. package/dist/components/connect/ConnectorMark.d.ts +20 -0
  142. package/dist/components/connect/ConnectorMark.d.ts.map +1 -0
  143. package/dist/components/connect/ConnectorRow.d.ts +33 -0
  144. package/dist/components/connect/ConnectorRow.d.ts.map +1 -0
  145. package/dist/components/connect/ConnectorsPanel.d.ts +40 -0
  146. package/dist/components/connect/ConnectorsPanel.d.ts.map +1 -0
  147. package/dist/components/connect/ConnectorsTab.d.ts +16 -0
  148. package/dist/components/connect/ConnectorsTab.d.ts.map +1 -0
  149. package/dist/components/connect/client-marks.d.ts +31 -0
  150. package/dist/components/connect/client-marks.d.ts.map +1 -0
  151. package/dist/components/connect/index.d.ts +12 -0
  152. package/dist/components/connect/index.d.ts.map +1 -0
  153. package/dist/components/connect/model.d.ts +151 -0
  154. package/dist/components/connect/model.d.ts.map +1 -0
  155. package/dist/components/connect/useConnectors.d.ts +24 -0
  156. package/dist/components/connect/useConnectors.d.ts.map +1 -0
  157. package/dist/components/layout/BottomNav.d.ts +24 -0
  158. package/dist/components/layout/BottomNav.d.ts.map +1 -0
  159. package/dist/components/layout/CommandPalette.d.ts +23 -0
  160. package/dist/components/layout/CommandPalette.d.ts.map +1 -0
  161. package/dist/components/layout/LocationSwitchOverlay.d.ts +3 -0
  162. package/dist/components/layout/LocationSwitchOverlay.d.ts.map +1 -0
  163. package/dist/components/layout/MockModeBanner.d.ts +3 -0
  164. package/dist/components/layout/MockModeBanner.d.ts.map +1 -0
  165. package/dist/components/layout/PrintChrome.d.ts +10 -0
  166. package/dist/components/layout/PrintChrome.d.ts.map +1 -0
  167. package/dist/components/layout/index.d.ts +6 -0
  168. package/dist/components/layout/index.d.ts.map +1 -0
  169. package/dist/components/notes/NotesPanel.d.ts +13 -0
  170. package/dist/components/notes/NotesPanel.d.ts.map +1 -0
  171. package/dist/components/notifications/ChangelogFeed.d.ts +8 -0
  172. package/dist/components/notifications/ChangelogFeed.d.ts.map +1 -0
  173. package/dist/components/notifications/NotificationBell.d.ts +9 -0
  174. package/dist/components/notifications/NotificationBell.d.ts.map +1 -0
  175. package/dist/components/notifications/NotificationInbox.d.ts +13 -0
  176. package/dist/components/notifications/NotificationInbox.d.ts.map +1 -0
  177. package/dist/components/notifications/ToastProvider.d.ts +2 -0
  178. package/dist/components/notifications/ToastProvider.d.ts.map +1 -0
  179. package/dist/components/notifications/index.d.ts +5 -0
  180. package/dist/components/notifications/index.d.ts.map +1 -0
  181. package/dist/components/organization/InviteMemberDialog.d.ts +10 -0
  182. package/dist/components/organization/InviteMemberDialog.d.ts.map +1 -0
  183. package/dist/components/organization/OrgInitializer.d.ts +7 -0
  184. package/dist/components/organization/OrgInitializer.d.ts.map +1 -0
  185. package/dist/components/organization/OrgSwitcher.d.ts +7 -0
  186. package/dist/components/organization/OrgSwitcher.d.ts.map +1 -0
  187. package/dist/components/organization/PermissionMatrixEditor.d.ts +22 -0
  188. package/dist/components/organization/PermissionMatrixEditor.d.ts.map +1 -0
  189. package/dist/components/organization/PermissionProfilesTab.d.ts +3 -0
  190. package/dist/components/organization/PermissionProfilesTab.d.ts.map +1 -0
  191. package/dist/components/organization/TeamTab.d.ts +3 -0
  192. package/dist/components/organization/TeamTab.d.ts.map +1 -0
  193. package/dist/components/organization/TenantOnboarding.d.ts +9 -0
  194. package/dist/components/organization/TenantOnboarding.d.ts.map +1 -0
  195. package/dist/components/organization/index.d.ts +7 -0
  196. package/dist/components/organization/index.d.ts.map +1 -0
  197. package/dist/components/plugins/ConnectorsHub.d.ts +5 -0
  198. package/dist/components/plugins/ConnectorsHub.d.ts.map +1 -0
  199. package/dist/components/plugins/PluginSettingsPanel.d.ts +28 -0
  200. package/dist/components/plugins/PluginSettingsPanel.d.ts.map +1 -0
  201. package/dist/components/right-rail.d.ts +58 -0
  202. package/dist/components/right-rail.d.ts.map +1 -0
  203. package/dist/components/settings/BrandingSettings.d.ts +12 -0
  204. package/dist/components/settings/BrandingSettings.d.ts.map +1 -0
  205. package/dist/components/settings/CompanySettings.d.ts +13 -0
  206. package/dist/components/settings/CompanySettings.d.ts.map +1 -0
  207. package/dist/components/settings/ConnectedBrandingSettings.d.ts +2 -0
  208. package/dist/components/settings/ConnectedBrandingSettings.d.ts.map +1 -0
  209. package/dist/components/settings/ConnectedCompanySettings.d.ts +2 -0
  210. package/dist/components/settings/ConnectedCompanySettings.d.ts.map +1 -0
  211. package/dist/components/settings/ConnectedFieldRulesSettings.d.ts +2 -0
  212. package/dist/components/settings/ConnectedFieldRulesSettings.d.ts.map +1 -0
  213. package/dist/components/settings/ConnectedSecuritySettings.d.ts +2 -0
  214. package/dist/components/settings/ConnectedSecuritySettings.d.ts.map +1 -0
  215. package/dist/components/settings/ConnectedUserProfile.d.ts +3 -0
  216. package/dist/components/settings/ConnectedUserProfile.d.ts.map +1 -0
  217. package/dist/components/settings/FieldRulesSettings.d.ts +11 -0
  218. package/dist/components/settings/FieldRulesSettings.d.ts.map +1 -0
  219. package/dist/components/settings/HolidaysSettings.d.ts +21 -0
  220. package/dist/components/settings/HolidaysSettings.d.ts.map +1 -0
  221. package/dist/components/settings/LocationsCrudPage.d.ts +6 -0
  222. package/dist/components/settings/LocationsCrudPage.d.ts.map +1 -0
  223. package/dist/components/settings/LocationsOverview.d.ts +19 -0
  224. package/dist/components/settings/LocationsOverview.d.ts.map +1 -0
  225. package/dist/components/settings/SecuritySettings.d.ts +17 -0
  226. package/dist/components/settings/SecuritySettings.d.ts.map +1 -0
  227. package/dist/components/settings/SettingsPage.d.ts +46 -0
  228. package/dist/components/settings/SettingsPage.d.ts.map +1 -0
  229. package/dist/components/settings/UserProfile.d.ts +12 -0
  230. package/dist/components/settings/UserProfile.d.ts.map +1 -0
  231. package/dist/components/settings/index.d.ts +11 -0
  232. package/dist/components/settings/index.d.ts.map +1 -0
  233. package/dist/components/shared/ContactPicker.d.ts +92 -0
  234. package/dist/components/shared/ContactPicker.d.ts.map +1 -0
  235. package/dist/components/shared/PersonLink.d.ts +29 -0
  236. package/dist/components/shared/PersonLink.d.ts.map +1 -0
  237. package/dist/components/shared/create-person.d.ts +20 -0
  238. package/dist/components/shared/create-person.d.ts.map +1 -0
  239. package/dist/crud/CrudCardGrid.d.ts +13 -0
  240. package/dist/crud/CrudCardGrid.d.ts.map +1 -0
  241. package/dist/crud/CrudDetailPage.d.ts +23 -0
  242. package/dist/crud/CrudDetailPage.d.ts.map +1 -0
  243. package/dist/crud/CrudFormPage.d.ts +18 -0
  244. package/dist/crud/CrudFormPage.d.ts.map +1 -0
  245. package/dist/crud/CrudListView.d.ts +92 -0
  246. package/dist/crud/CrudListView.d.ts.map +1 -0
  247. package/dist/crud/CrudPage.d.ts +27 -0
  248. package/dist/crud/CrudPage.d.ts.map +1 -0
  249. package/dist/crud/CrudSkeletons.d.ts +21 -0
  250. package/dist/crud/CrudSkeletons.d.ts.map +1 -0
  251. package/dist/crud/DeleteConfirmDialog.d.ts +11 -0
  252. package/dist/crud/DeleteConfirmDialog.d.ts.map +1 -0
  253. package/dist/crud/EntityOverview.d.ts +14 -0
  254. package/dist/crud/EntityOverview.d.ts.map +1 -0
  255. package/dist/crud/ImportWizard.d.ts +18 -0
  256. package/dist/crud/ImportWizard.d.ts.map +1 -0
  257. package/dist/crud/archetype-lookup.d.ts +30 -0
  258. package/dist/crud/archetype-lookup.d.ts.map +1 -0
  259. package/dist/crud/archetypes/ActiveToggle.d.ts +8 -0
  260. package/dist/crud/archetypes/ActiveToggle.d.ts.map +1 -0
  261. package/dist/crud/archetypes/AddressesTab.d.ts +21 -0
  262. package/dist/crud/archetypes/AddressesTab.d.ts.map +1 -0
  263. package/dist/crud/archetypes/ArchetypeStatusBar.d.ts +11 -0
  264. package/dist/crud/archetypes/ArchetypeStatusBar.d.ts.map +1 -0
  265. package/dist/crud/archetypes/BlockSettingsPopover.d.ts +15 -0
  266. package/dist/crud/archetypes/BlockSettingsPopover.d.ts.map +1 -0
  267. package/dist/crud/archetypes/ClientOrdersTab.d.ts +18 -0
  268. package/dist/crud/archetypes/ClientOrdersTab.d.ts.map +1 -0
  269. package/dist/crud/archetypes/EntityLink.d.ts +32 -0
  270. package/dist/crud/archetypes/EntityLink.d.ts.map +1 -0
  271. package/dist/crud/archetypes/LocationDetailTabs.d.ts +11 -0
  272. package/dist/crud/archetypes/LocationDetailTabs.d.ts.map +1 -0
  273. package/dist/crud/archetypes/LocationFormLayout.d.ts +12 -0
  274. package/dist/crud/archetypes/LocationFormLayout.d.ts.map +1 -0
  275. package/dist/crud/archetypes/OrderDetailView.d.ts +115 -0
  276. package/dist/crud/archetypes/OrderDetailView.d.ts.map +1 -0
  277. package/dist/crud/archetypes/OrderFormView.d.ts +112 -0
  278. package/dist/crud/archetypes/OrderFormView.d.ts.map +1 -0
  279. package/dist/crud/archetypes/OrderListView.d.ts +36 -0
  280. package/dist/crud/archetypes/OrderListView.d.ts.map +1 -0
  281. package/dist/crud/archetypes/PersonDetailTabs.d.ts +35 -0
  282. package/dist/crud/archetypes/PersonDetailTabs.d.ts.map +1 -0
  283. package/dist/crud/archetypes/PersonFormLayout.d.ts +13 -0
  284. package/dist/crud/archetypes/PersonFormLayout.d.ts.map +1 -0
  285. package/dist/crud/archetypes/PersonPicker.d.ts +23 -0
  286. package/dist/crud/archetypes/PersonPicker.d.ts.map +1 -0
  287. package/dist/crud/archetypes/ProductDetailTabs.d.ts +11 -0
  288. package/dist/crud/archetypes/ProductDetailTabs.d.ts.map +1 -0
  289. package/dist/crud/archetypes/ProductFormLayout.d.ts +12 -0
  290. package/dist/crud/archetypes/ProductFormLayout.d.ts.map +1 -0
  291. package/dist/crud/archetypes/ScheduleEditor.d.ts +7 -0
  292. package/dist/crud/archetypes/ScheduleEditor.d.ts.map +1 -0
  293. package/dist/crud/archetypes/ServiceDetailTabs.d.ts +10 -0
  294. package/dist/crud/archetypes/ServiceDetailTabs.d.ts.map +1 -0
  295. package/dist/crud/archetypes/ServiceFormLayout.d.ts +12 -0
  296. package/dist/crud/archetypes/ServiceFormLayout.d.ts.map +1 -0
  297. package/dist/crud/archetypes/SubjectDetailTabs.d.ts +12 -0
  298. package/dist/crud/archetypes/SubjectDetailTabs.d.ts.map +1 -0
  299. package/dist/crud/archetypes/SubjectFormLayout.d.ts +14 -0
  300. package/dist/crud/archetypes/SubjectFormLayout.d.ts.map +1 -0
  301. package/dist/crud/createCrudPage.d.ts +34 -0
  302. package/dist/crud/createCrudPage.d.ts.map +1 -0
  303. package/dist/crud/csv-export.d.ts +3 -0
  304. package/dist/crud/csv-export.d.ts.map +1 -0
  305. package/dist/crud/fieldToColumn.d.ts +14 -0
  306. package/dist/crud/fieldToColumn.d.ts.map +1 -0
  307. package/dist/crud/index.d.ts +16 -0
  308. package/dist/crud/index.d.ts.map +1 -0
  309. package/dist/crud/placeholder.d.ts +7 -0
  310. package/dist/crud/placeholder.d.ts.map +1 -0
  311. package/dist/crud/relation-field.d.ts +28 -0
  312. package/dist/crud/relation-field.d.ts.map +1 -0
  313. package/dist/data/client.d.ts +14 -0
  314. package/dist/data/client.d.ts.map +1 -0
  315. package/dist/db.cjs +14 -0
  316. package/dist/db.cjs.map +1 -0
  317. package/dist/db.d.ts +2 -0
  318. package/dist/db.d.ts.map +1 -0
  319. package/dist/db.js +3 -0
  320. package/dist/db.js.map +1 -0
  321. package/dist/hooks/index.d.ts +20 -0
  322. package/dist/hooks/index.d.ts.map +1 -0
  323. package/dist/hooks/useAITools.d.ts +23 -0
  324. package/dist/hooks/useAITools.d.ts.map +1 -0
  325. package/dist/hooks/useAgentSurface.d.ts +15 -0
  326. package/dist/hooks/useAgentSurface.d.ts.map +1 -0
  327. package/dist/hooks/useAuth.d.ts +16 -0
  328. package/dist/hooks/useAuth.d.ts.map +1 -0
  329. package/dist/hooks/useChat.d.ts +38 -0
  330. package/dist/hooks/useChat.d.ts.map +1 -0
  331. package/dist/hooks/useDictation.d.ts +31 -0
  332. package/dist/hooks/useDictation.d.ts.map +1 -0
  333. package/dist/hooks/useFieldRules.d.ts +6 -0
  334. package/dist/hooks/useFieldRules.d.ts.map +1 -0
  335. package/dist/hooks/useFormatters.d.ts +7 -0
  336. package/dist/hooks/useFormatters.d.ts.map +1 -0
  337. package/dist/hooks/useGlobalSearch.d.ts +10 -0
  338. package/dist/hooks/useGlobalSearch.d.ts.map +1 -0
  339. package/dist/hooks/useLayout.d.ts +16 -0
  340. package/dist/hooks/useLayout.d.ts.map +1 -0
  341. package/dist/hooks/useMicLevels.d.ts +10 -0
  342. package/dist/hooks/useMicLevels.d.ts.map +1 -0
  343. package/dist/hooks/useModuleNavigation.d.ts +27 -0
  344. package/dist/hooks/useModuleNavigation.d.ts.map +1 -0
  345. package/dist/hooks/useNotifications.d.ts +11 -0
  346. package/dist/hooks/useNotifications.d.ts.map +1 -0
  347. package/dist/hooks/usePluginPrefs.d.ts +23 -0
  348. package/dist/hooks/usePluginPrefs.d.ts.map +1 -0
  349. package/dist/hooks/usePlugins.d.ts +5 -0
  350. package/dist/hooks/usePlugins.d.ts.map +1 -0
  351. package/dist/hooks/useSystemPermission.d.ts +3 -0
  352. package/dist/hooks/useSystemPermission.d.ts.map +1 -0
  353. package/dist/hooks/useTenant.d.ts +23 -0
  354. package/dist/hooks/useTenant.d.ts.map +1 -0
  355. package/dist/hooks/useTenantPluginSettings.d.ts +12 -0
  356. package/dist/hooks/useTenantPluginSettings.d.ts.map +1 -0
  357. package/dist/hooks/useTenantPlugins.d.ts +10 -0
  358. package/dist/hooks/useTenantPlugins.d.ts.map +1 -0
  359. package/dist/hooks/useTranslation.d.ts +5 -0
  360. package/dist/hooks/useTranslation.d.ts.map +1 -0
  361. package/dist/index.d.ts +93 -0
  362. package/dist/index.d.ts.map +1 -0
  363. package/dist/index.js +17207 -0
  364. package/dist/index.js.map +1 -0
  365. package/dist/lib/agent-approvals.d.ts +27 -0
  366. package/dist/lib/agent-approvals.d.ts.map +1 -0
  367. package/dist/lib/agent-surface.d.ts +78 -0
  368. package/dist/lib/agent-surface.d.ts.map +1 -0
  369. package/dist/lib/ai-tool-handlers.d.ts +154 -0
  370. package/dist/lib/ai-tool-handlers.d.ts.map +1 -0
  371. package/dist/lib/apply-field-rules.d.ts +4 -0
  372. package/dist/lib/apply-field-rules.d.ts.map +1 -0
  373. package/dist/lib/assistant-delegation.d.ts +5 -0
  374. package/dist/lib/assistant-delegation.d.ts.map +1 -0
  375. package/dist/lib/assistant-feature.d.ts +8 -0
  376. package/dist/lib/assistant-feature.d.ts.map +1 -0
  377. package/dist/lib/attachments.d.ts +95 -0
  378. package/dist/lib/attachments.d.ts.map +1 -0
  379. package/dist/lib/auth-context.d.ts +5 -0
  380. package/dist/lib/auth-context.d.ts.map +1 -0
  381. package/dist/lib/cache.d.ts +18 -0
  382. package/dist/lib/cache.d.ts.map +1 -0
  383. package/dist/lib/cn.d.ts +2 -0
  384. package/dist/lib/cn.d.ts.map +1 -0
  385. package/dist/lib/core-ai-tools.d.ts +49 -0
  386. package/dist/lib/core-ai-tools.d.ts.map +1 -0
  387. package/dist/lib/create-client-orders-provider.d.ts +3 -0
  388. package/dist/lib/create-client-orders-provider.d.ts.map +1 -0
  389. package/dist/lib/csv.d.ts +14 -0
  390. package/dist/lib/csv.d.ts.map +1 -0
  391. package/dist/lib/currency.d.ts +7 -0
  392. package/dist/lib/currency.d.ts.map +1 -0
  393. package/dist/lib/dedup.d.ts +2 -0
  394. package/dist/lib/dedup.d.ts.map +1 -0
  395. package/dist/lib/entity-registry.d.ts +19 -0
  396. package/dist/lib/entity-registry.d.ts.map +1 -0
  397. package/dist/lib/entity-routes.d.ts +48 -0
  398. package/dist/lib/entity-routes.d.ts.map +1 -0
  399. package/dist/lib/fayz-agent.d.ts +23 -0
  400. package/dist/lib/fayz-agent.d.ts.map +1 -0
  401. package/dist/lib/format.d.ts +7 -0
  402. package/dist/lib/format.d.ts.map +1 -0
  403. package/dist/lib/locale-config.d.ts +8 -0
  404. package/dist/lib/locale-config.d.ts.map +1 -0
  405. package/dist/lib/notes-tasks-bridge.d.ts +28 -0
  406. package/dist/lib/notes-tasks-bridge.d.ts.map +1 -0
  407. package/dist/lib/org-context.d.ts +5 -0
  408. package/dist/lib/org-context.d.ts.map +1 -0
  409. package/dist/lib/plugins.d.ts +2 -0
  410. package/dist/lib/plugins.d.ts.map +1 -0
  411. package/dist/lib/record-refs.d.ts +31 -0
  412. package/dist/lib/record-refs.d.ts.map +1 -0
  413. package/dist/lib/router.d.ts +15 -0
  414. package/dist/lib/router.d.ts.map +1 -0
  415. package/dist/lib/schedule-config.d.ts +32 -0
  416. package/dist/lib/schedule-config.d.ts.map +1 -0
  417. package/dist/lib/schedule-service.d.ts +76 -0
  418. package/dist/lib/schedule-service.d.ts.map +1 -0
  419. package/dist/lib/search-targets.d.ts +12 -0
  420. package/dist/lib/search-targets.d.ts.map +1 -0
  421. package/dist/lib/speech.d.ts +36 -0
  422. package/dist/lib/speech.d.ts.map +1 -0
  423. package/dist/lib/supabase.d.ts +10 -0
  424. package/dist/lib/supabase.d.ts.map +1 -0
  425. package/dist/org/adapters/mock.d.ts +4 -0
  426. package/dist/org/adapters/mock.d.ts.map +1 -0
  427. package/dist/org/adapters/supabase.d.ts +33 -0
  428. package/dist/org/adapters/supabase.d.ts.map +1 -0
  429. package/dist/org/cache.d.ts +29 -0
  430. package/dist/org/cache.d.ts.map +1 -0
  431. package/dist/org/context.d.ts +36 -0
  432. package/dist/org/context.d.ts.map +1 -0
  433. package/dist/org/index.d.ts +10 -0
  434. package/dist/org/index.d.ts.map +1 -0
  435. package/dist/org/index.js +5 -0
  436. package/dist/org/index.js.map +1 -0
  437. package/dist/org/store.d.ts +20 -0
  438. package/dist/org/store.d.ts.map +1 -0
  439. package/dist/org/team-rows.d.ts +45 -0
  440. package/dist/org/team-rows.d.ts.map +1 -0
  441. package/dist/permissions/PermissionGate.d.ts +12 -0
  442. package/dist/permissions/PermissionGate.d.ts.map +1 -0
  443. package/dist/permissions/context.d.ts +39 -0
  444. package/dist/permissions/context.d.ts.map +1 -0
  445. package/dist/permissions/index.d.ts +5 -0
  446. package/dist/permissions/index.d.ts.map +1 -0
  447. package/dist/permissions/index.js +3 -0
  448. package/dist/permissions/index.js.map +1 -0
  449. package/dist/permissions/roles.d.ts +7 -0
  450. package/dist/permissions/roles.d.ts.map +1 -0
  451. package/dist/permissions/store.d.ts +21 -0
  452. package/dist/permissions/store.d.ts.map +1 -0
  453. package/dist/plugins/ModuleActionBar.d.ts +27 -0
  454. package/dist/plugins/ModuleActionBar.d.ts.map +1 -0
  455. package/dist/plugins/PluginRegistryManager.d.ts +13 -0
  456. package/dist/plugins/PluginRegistryManager.d.ts.map +1 -0
  457. package/dist/plugins/QuickActionsButton.d.ts +12 -0
  458. package/dist/plugins/QuickActionsButton.d.ts.map +1 -0
  459. package/dist/plugins/SettingsGroup.d.ts +25 -0
  460. package/dist/plugins/SettingsGroup.d.ts.map +1 -0
  461. package/dist/plugins/WidgetSlot.d.ts +8 -0
  462. package/dist/plugins/WidgetSlot.d.ts.map +1 -0
  463. package/dist/plugins/createPluginContext.d.ts +28 -0
  464. package/dist/plugins/createPluginContext.d.ts.map +1 -0
  465. package/dist/plugins/createViewRouter.d.ts +38 -0
  466. package/dist/plugins/createViewRouter.d.ts.map +1 -0
  467. package/dist/projects/ProjectsSettings.d.ts +3 -0
  468. package/dist/projects/ProjectsSettings.d.ts.map +1 -0
  469. package/dist/projects/SeuSiteWidget.d.ts +7 -0
  470. package/dist/projects/SeuSiteWidget.d.ts.map +1 -0
  471. package/dist/projects/provider.d.ts +8 -0
  472. package/dist/projects/provider.d.ts.map +1 -0
  473. package/dist/projects/store.d.ts +16 -0
  474. package/dist/projects/store.d.ts.map +1 -0
  475. package/dist/projects/types.d.ts +46 -0
  476. package/dist/projects/types.d.ts.map +1 -0
  477. package/dist/stores/auth.store.d.ts +12 -0
  478. package/dist/stores/auth.store.d.ts.map +1 -0
  479. package/dist/stores/billing.store.d.ts +2 -0
  480. package/dist/stores/billing.store.d.ts.map +1 -0
  481. package/dist/stores/chat.store.d.ts +208 -0
  482. package/dist/stores/chat.store.d.ts.map +1 -0
  483. package/dist/stores/createCrudStore.d.ts +54 -0
  484. package/dist/stores/createCrudStore.d.ts.map +1 -0
  485. package/dist/stores/index.d.ts +13 -0
  486. package/dist/stores/index.d.ts.map +1 -0
  487. package/dist/stores/invite.store.d.ts +11 -0
  488. package/dist/stores/invite.store.d.ts.map +1 -0
  489. package/dist/stores/layout.store.d.ts +2 -0
  490. package/dist/stores/layout.store.d.ts.map +1 -0
  491. package/dist/stores/locale.store.d.ts +17 -0
  492. package/dist/stores/locale.store.d.ts.map +1 -0
  493. package/dist/stores/location.store.d.ts +20 -0
  494. package/dist/stores/location.store.d.ts.map +1 -0
  495. package/dist/stores/notifications.store.d.ts +12 -0
  496. package/dist/stores/notifications.store.d.ts.map +1 -0
  497. package/dist/stores/organization.store.d.ts +2 -0
  498. package/dist/stores/organization.store.d.ts.map +1 -0
  499. package/dist/stores/permissions.store.d.ts +2 -0
  500. package/dist/stores/permissions.store.d.ts.map +1 -0
  501. package/dist/stores/plugin.store.d.ts +24 -0
  502. package/dist/stores/plugin.store.d.ts.map +1 -0
  503. package/dist/stores/tenant.store.d.ts +11 -0
  504. package/dist/stores/tenant.store.d.ts.map +1 -0
  505. package/dist/stores/theme.store.d.ts +17 -0
  506. package/dist/stores/theme.store.d.ts.map +1 -0
  507. package/dist/theme/dark.d.ts +3 -0
  508. package/dist/theme/dark.d.ts.map +1 -0
  509. package/dist/theme/index.d.ts +8 -0
  510. package/dist/theme/index.d.ts.map +1 -0
  511. package/dist/theme/light.d.ts +3 -0
  512. package/dist/theme/light.d.ts.map +1 -0
  513. package/dist/theme/tailwind-preset.d.ts +4 -0
  514. package/dist/theme/tailwind-preset.d.ts.map +1 -0
  515. package/dist/theme/tokens.d.ts +119 -0
  516. package/dist/theme/tokens.d.ts.map +1 -0
  517. package/dist/theme/utils.d.ts +31 -0
  518. package/dist/theme/utils.d.ts.map +1 -0
  519. package/dist/types/auth-adapter.d.ts +14 -0
  520. package/dist/types/auth-adapter.d.ts.map +1 -0
  521. package/dist/types/auth.d.ts +34 -0
  522. package/dist/types/auth.d.ts.map +1 -0
  523. package/dist/types/billing.d.ts +81 -0
  524. package/dist/types/billing.d.ts.map +1 -0
  525. package/dist/types/client-orders.d.ts +47 -0
  526. package/dist/types/client-orders.d.ts.map +1 -0
  527. package/dist/types/crud.d.ts +137 -0
  528. package/dist/types/crud.d.ts.map +1 -0
  529. package/dist/types/entities.d.ts +150 -0
  530. package/dist/types/entities.d.ts.map +1 -0
  531. package/dist/types/entity-lookup.d.ts +18 -0
  532. package/dist/types/entity-lookup.d.ts.map +1 -0
  533. package/dist/types/index.d.ts +17 -0
  534. package/dist/types/index.d.ts.map +1 -0
  535. package/dist/types/integrations.d.ts +48 -0
  536. package/dist/types/integrations.d.ts.map +1 -0
  537. package/dist/types/invite.d.ts +23 -0
  538. package/dist/types/invite.d.ts.map +1 -0
  539. package/dist/types/layout.d.ts +26 -0
  540. package/dist/types/layout.d.ts.map +1 -0
  541. package/dist/types/notifications.d.ts +31 -0
  542. package/dist/types/notifications.d.ts.map +1 -0
  543. package/dist/types/org-adapter.d.ts +92 -0
  544. package/dist/types/org-adapter.d.ts.map +1 -0
  545. package/dist/types/permissions.d.ts +39 -0
  546. package/dist/types/permissions.d.ts.map +1 -0
  547. package/dist/types/platform.d.ts +25 -0
  548. package/dist/types/platform.d.ts.map +1 -0
  549. package/dist/types/plugins.d.ts +269 -0
  550. package/dist/types/plugins.d.ts.map +1 -0
  551. package/dist/types/tenant.d.ts +74 -0
  552. package/dist/types/tenant.d.ts.map +1 -0
  553. package/dist/ui.d.ts +2 -0
  554. package/dist/ui.d.ts.map +1 -0
  555. package/dist/ui.js +3 -0
  556. package/dist/ui.js.map +1 -0
  557. package/package.json +94 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/billing/store.ts","../src/billing/plan-badge.ts"],"names":[],"mappings":";;;AAoDA,IAAM,YAAA,GAA6B;AAAA,EACjC,YAAA,EAAc,IAAA;AAAA,EACd,UAAU,EAAC;AAAA,EACX,OAAO,EAAC;AAAA,EACR,OAAA,EAAS,KAAA;AAAA,EACT,QAAA,EAAU;AACZ,CAAA;AAEO,IAAM,eAAA,GAAkB,MAAA,CAAqB,CAAC,GAAA,MAAS;AAAA,EAC5D,GAAG,YAAA;AAAA,EACH,iBAAiB,CAAC,YAAA,KAAiB,GAAA,CAAI,EAAE,cAAc,CAAA;AAAA,EACvD,aAAa,CAAC,QAAA,KAAa,GAAA,CAAI,EAAE,UAAU,CAAA;AAAA,EAC3C,UAAU,CAAC,KAAA,KAAU,GAAA,CAAI,EAAE,OAAO,CAAA;AAAA,EAClC,YAAY,CAAC,OAAA,KAAY,GAAA,CAAI,EAAE,SAAS,CAAA;AAAA,EACxC,aAAa,CAAC,QAAA,KAAa,GAAA,CAAI,EAAE,UAAU,CAAA;AAAA,EAC3C,KAAA,EAAO,MAAM,GAAA,CAAI,YAAY;AAC/B,CAAA,CAAE;;;ACzDF,SAAS,WAAW,CAAA,EAAmB;AACrC,EAAA,OAAO,CAAA,GAAI,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,aAAY,GAAI,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AACtD;AAQO,SAAS,gBAAA,CACd,QACA,KAAA,EACe;AACf,EAAA,MAAM,KAAK,MAAA,IAAU,MAAA;AACrB,EAAA,MAAM,QAAQ,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AAC3C,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,OAAO,EAAE,KAAA,EAAO,KAAA,CAAM,IAAA,EAAM,MAAA,EAAQ,MAAM,EAAA,EAAI,IAAA,EAAM,KAAA,CAAM,KAAA,GAAQ,CAAA,EAAE;AAAA,EACtE;AACA,EAAA,OAAO,EAAE,OAAO,UAAA,CAAW,EAAE,GAAG,MAAA,EAAQ,EAAA,EAAI,MAAM,KAAA,EAAM;AAC1D","file":"chunk-VN5NTK26.js","sourcesContent":["import { create } from 'zustand'\nimport type { Plan, BillingCheckoutFn } from '@fayz-ai/core'\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface Subscription {\n id: string\n orgId: string\n planId: string\n status: 'active' | 'trialing' | 'past_due' | 'canceled' | 'incomplete'\n currentPeriodStart: string\n currentPeriodEnd: string\n cancelAtPeriodEnd?: boolean\n stripeSubscriptionId?: string\n}\n\nexport interface Invoice {\n id: string\n orgId: string\n amount: number\n currency: string\n status: 'paid' | 'open' | 'void' | 'uncollectible'\n pdfUrl?: string\n createdAt: string\n}\n\nexport interface BillingState {\n subscription: Subscription | null\n invoices: Invoice[]\n plans: Plan[]\n loading: boolean\n /** Payment-gateway seam seeded from `config.billing.onCheckout` (see core\n * BillingConfig). When set, the Subscription page routes plan changes through\n * it instead of writing `plan` straight onto the org. */\n checkout: BillingCheckoutFn | null\n}\n\n// ---------------------------------------------------------------------------\n// Store\n// ---------------------------------------------------------------------------\n\nexport interface BillingStore extends BillingState {\n setSubscription: (subscription: Subscription | null) => void\n setInvoices: (invoices: Invoice[]) => void\n setPlans: (plans: Plan[]) => void\n setLoading: (loading: boolean) => void\n setCheckout: (checkout: BillingCheckoutFn | null) => void\n reset: () => void\n}\n\nconst initialState: BillingState = {\n subscription: null,\n invoices: [],\n plans: [],\n loading: false,\n checkout: null,\n}\n\nexport const useBillingStore = create<BillingStore>((set) => ({\n ...initialState,\n setSubscription: (subscription) => set({ subscription }),\n setInvoices: (invoices) => set({ invoices }),\n setPlans: (plans) => set({ plans }),\n setLoading: (loading) => set({ loading }),\n setCheckout: (checkout) => set({ checkout }),\n reset: () => set(initialState),\n}))\n","import type { Plan } from '@fayz-ai/core'\n\nexport interface PlanBadgeInfo {\n /** Display label, e.g. 'Free' or 'Pro'. */\n label: string\n /** Resolved plan id (falls back to the raw org.plan string). */\n planId: string\n /** Paid plan (price > 0) — drives the Crown icon + gold styling in the menus. */\n paid: boolean\n}\n\nfunction capitalize(s: string): string {\n return s ? s.charAt(0).toUpperCase() + s.slice(1) : s\n}\n\n/**\n * Resolve an org's `plan` string against the configured billing plans into the\n * badge shown next to the user in both menus. Falls back to a capitalized\n * version of the raw string when the id isn't in config (defensive — e.g. a\n * legacy 'free' tenant before billing was wired).\n */\nexport function resolvePlanBadge(\n planId: string | undefined | null,\n plans: Plan[],\n): PlanBadgeInfo {\n const id = planId || 'free'\n const match = plans.find((p) => p.id === id)\n if (match) {\n return { label: match.name, planId: match.id, paid: match.price > 0 }\n }\n return { label: capitalize(id), planId: id, paid: false }\n}\n"]}
@@ -0,0 +1,101 @@
1
+ import { create } from 'zustand';
2
+ import * as React from 'react';
3
+ import { usePluginRuntimeOptional } from '@fayz-ai/core';
4
+ import { profileHasPermission } from '@fayz-ai/core/access';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ // src/permissions/store.ts
8
+ var usePermissionsStore = create((set, get) => ({
9
+ features: [],
10
+ profiles: [],
11
+ currentProfile: null,
12
+ realProfile: null,
13
+ impersonatedProfile: null,
14
+ isImpersonating: false,
15
+ setFeatures: (features) => set({ features }),
16
+ setProfiles: (profiles) => set({ profiles }),
17
+ setCurrentProfile: (profile) => set({
18
+ currentProfile: profile,
19
+ realProfile: profile,
20
+ impersonatedProfile: null,
21
+ isImpersonating: false
22
+ }),
23
+ startImpersonation: (profile) => set({
24
+ currentProfile: profile,
25
+ impersonatedProfile: profile,
26
+ isImpersonating: true
27
+ }),
28
+ stopImpersonation: () => {
29
+ const { realProfile } = get();
30
+ set({
31
+ currentProfile: realProfile,
32
+ impersonatedProfile: null,
33
+ isImpersonating: false
34
+ });
35
+ },
36
+ reset: () => set({
37
+ features: [],
38
+ profiles: [],
39
+ currentProfile: null,
40
+ realProfile: null,
41
+ impersonatedProfile: null,
42
+ isImpersonating: false
43
+ })
44
+ }));
45
+ function mergeFeatures(pluginFeatures, appFeatures) {
46
+ const byId = /* @__PURE__ */ new Map();
47
+ for (const f of pluginFeatures ?? []) byId.set(f.id, f);
48
+ for (const f of appFeatures ?? []) byId.set(f.id, f);
49
+ return Array.from(byId.values());
50
+ }
51
+ var PermissionsContext = React.createContext(null);
52
+ function PermissionsProvider({ config, children }) {
53
+ const { setFeatures, startImpersonation, stopImpersonation, currentProfile, isImpersonating } = usePermissionsStore();
54
+ const runtime = usePluginRuntimeOptional();
55
+ const pluginFeatures = runtime?.pluginFeatures;
56
+ React.useEffect(() => {
57
+ const merged = mergeFeatures(pluginFeatures, config?.features);
58
+ if (merged.length > 0) {
59
+ setFeatures(merged);
60
+ }
61
+ }, [config, pluginFeatures, setFeatures]);
62
+ function hasPermission(feature, action) {
63
+ return profileHasPermission(currentProfile, feature, action);
64
+ }
65
+ const value = {
66
+ hasPermission,
67
+ canImpersonate: !isImpersonating,
68
+ startImpersonation,
69
+ stopImpersonation
70
+ };
71
+ return /* @__PURE__ */ jsx(PermissionsContext.Provider, { value, children });
72
+ }
73
+ function usePermission() {
74
+ const ctx = React.useContext(PermissionsContext);
75
+ if (!ctx) {
76
+ throw new Error("usePermission must be used inside <PermissionsProvider>");
77
+ }
78
+ return ctx.hasPermission;
79
+ }
80
+ function usePermissionOptional() {
81
+ const ctx = React.useContext(PermissionsContext);
82
+ return ctx?.hasPermission ?? (() => true);
83
+ }
84
+ function useHasPermission(feature, action) {
85
+ const ctx = React.useContext(PermissionsContext);
86
+ if (!ctx) {
87
+ throw new Error("useHasPermission must be used inside <PermissionsProvider>");
88
+ }
89
+ return ctx.hasPermission(feature, action);
90
+ }
91
+ function usePermissions() {
92
+ const ctx = React.useContext(PermissionsContext);
93
+ if (!ctx) {
94
+ throw new Error("usePermissions must be used inside <PermissionsProvider>");
95
+ }
96
+ return ctx;
97
+ }
98
+
99
+ export { PermissionsProvider, useHasPermission, usePermission, usePermissionOptional, usePermissions, usePermissionsStore };
100
+ //# sourceMappingURL=chunk-VTEP2AQX.js.map
101
+ //# sourceMappingURL=chunk-VTEP2AQX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/permissions/store.ts","../src/permissions/context.tsx"],"names":[],"mappings":";;;;;;;AA2BO,IAAM,mBAAA,GAAsB,MAAA,CAAyB,CAAC,GAAA,EAAK,GAAA,MAAS;AAAA,EACzE,UAAU,EAAC;AAAA,EACX,UAAU,EAAC;AAAA,EACX,cAAA,EAAgB,IAAA;AAAA,EAChB,WAAA,EAAa,IAAA;AAAA,EACb,mBAAA,EAAqB,IAAA;AAAA,EACrB,eAAA,EAAiB,KAAA;AAAA,EAEjB,aAAa,CAAC,QAAA,KAAa,GAAA,CAAI,EAAE,UAAU,CAAA;AAAA,EAC3C,aAAa,CAAC,QAAA,KAAa,GAAA,CAAI,EAAE,UAAU,CAAA;AAAA,EAC3C,iBAAA,EAAmB,CAAC,OAAA,KAClB,GAAA,CAAI;AAAA,IACF,cAAA,EAAgB,OAAA;AAAA,IAChB,WAAA,EAAa,OAAA;AAAA,IACb,mBAAA,EAAqB,IAAA;AAAA,IACrB,eAAA,EAAiB;AAAA,GAClB,CAAA;AAAA,EACH,kBAAA,EAAoB,CAAC,OAAA,KACnB,GAAA,CAAI;AAAA,IACF,cAAA,EAAgB,OAAA;AAAA,IAChB,mBAAA,EAAqB,OAAA;AAAA,IACrB,eAAA,EAAiB;AAAA,GAClB,CAAA;AAAA,EACH,mBAAmB,MAAM;AACvB,IAAA,MAAM,EAAE,WAAA,EAAY,GAAI,GAAA,EAAI;AAC5B,IAAA,GAAA,CAAI;AAAA,MACF,cAAA,EAAgB,WAAA;AAAA,MAChB,mBAAA,EAAqB,IAAA;AAAA,MACrB,eAAA,EAAiB;AAAA,KAClB,CAAA;AAAA,EACH,CAAA;AAAA,EACA,KAAA,EAAO,MACL,GAAA,CAAI;AAAA,IACF,UAAU,EAAC;AAAA,IACX,UAAU,EAAC;AAAA,IACX,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa,IAAA;AAAA,IACb,mBAAA,EAAqB,IAAA;AAAA,IACrB,eAAA,EAAiB;AAAA,GAClB;AACL,CAAA,CAAE;ACjDF,SAAS,aAAA,CACP,gBACA,WAAA,EACsB;AACtB,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAgC;AACjD,EAAA,KAAA,MAAW,CAAA,IAAK,kBAAkB,EAAC,OAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AACtD,EAAA,KAAA,MAAW,CAAA,IAAK,eAAe,EAAC,OAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AACnD,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,CAAA;AACjC;AAaA,IAAM,kBAAA,GAA2B,oBAA8C,IAAI,CAAA;AAW5E,SAAS,mBAAA,CAAoB,EAAE,MAAA,EAAQ,QAAA,EAAS,EAA6B;AAClF,EAAA,MAAM,EAAE,WAAA,EAAa,kBAAA,EAAoB,mBAAmB,cAAA,EAAgB,eAAA,KAC1E,mBAAA,EAAoB;AAOtB,EAAA,MAAM,UAAU,wBAAA,EAAyB;AACzC,EAAA,MAAM,iBAAiB,OAAA,EAAS,cAAA;AAEhC,EAAM,gBAAU,MAAM;AACpB,IAAA,MAAM,MAAA,GAAS,aAAA,CAAc,cAAA,EAAgB,MAAA,EAAQ,QAAQ,CAAA;AAC7D,IAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,cAAA,EAAgB,WAAW,CAAC,CAAA;AAExC,EAAA,SAAS,aAAA,CAAc,SAAiB,MAAA,EAA0B;AAChE,IAAA,OAAO,oBAAA,CAAqB,cAAA,EAAgB,OAAA,EAAS,MAAM,CAAA;AAAA,EAC7D;AAEA,EAAA,MAAM,KAAA,GAAiC;AAAA,IACrC,aAAA;AAAA,IACA,gBAAgB,CAAC,eAAA;AAAA,IACjB,kBAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,uBACE,GAAA,CAAC,kBAAA,CAAmB,QAAA,EAAnB,EAA4B,OAC1B,QAAA,EACH,CAAA;AAEJ;AAUO,SAAS,aAAA,GAA+D;AAC7E,EAAA,MAAM,GAAA,GAAY,iBAAW,kBAAkB,CAAA;AAC/C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,yDAAyD,CAAA;AAAA,EAC3E;AACA,EAAA,OAAO,GAAA,CAAI,aAAA;AACb;AAQO,SAAS,qBAAA,GAAuE;AACrF,EAAA,MAAM,GAAA,GAAY,iBAAW,kBAAkB,CAAA;AAC/C,EAAA,OAAO,GAAA,EAAK,kBAAkB,MAAM,IAAA,CAAA;AACtC;AAMO,SAAS,gBAAA,CAAiB,SAAiB,MAAA,EAA0B;AAC1E,EAAA,MAAM,GAAA,GAAY,iBAAW,kBAAkB,CAAA;AAC/C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,4DAA4D,CAAA;AAAA,EAC9E;AACA,EAAA,OAAO,GAAA,CAAI,aAAA,CAAc,OAAA,EAAS,MAAM,CAAA;AAC1C;AAMO,SAAS,cAAA,GAA0C;AACxD,EAAA,MAAM,GAAA,GAAY,iBAAW,kBAAkB,CAAA;AAC/C,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,0DAA0D,CAAA;AAAA,EAC5E;AACA,EAAA,OAAO,GAAA;AACT","file":"chunk-VTEP2AQX.js","sourcesContent":["import { create } from 'zustand'\nimport type { FeatureDeclaration, PermissionProfile } from '@fayz-ai/core'\n\n// ---------------------------------------------------------------------------\n// Store interface\n// ---------------------------------------------------------------------------\n\nexport interface PermissionsStore {\n features: FeatureDeclaration[]\n profiles: PermissionProfile[]\n /** The effective profile used for permission checks (may be impersonated) */\n currentProfile: PermissionProfile | null\n /** The user's actual profile (preserved during impersonation) */\n realProfile: PermissionProfile | null\n /** The profile being previewed, if any */\n impersonatedProfile: PermissionProfile | null\n /** Whether impersonation is active */\n isImpersonating: boolean\n\n setFeatures: (features: FeatureDeclaration[]) => void\n setProfiles: (profiles: PermissionProfile[]) => void\n setCurrentProfile: (profile: PermissionProfile | null) => void\n startImpersonation: (profile: PermissionProfile) => void\n stopImpersonation: () => void\n reset: () => void\n}\n\nexport const usePermissionsStore = create<PermissionsStore>((set, get) => ({\n features: [],\n profiles: [],\n currentProfile: null,\n realProfile: null,\n impersonatedProfile: null,\n isImpersonating: false,\n\n setFeatures: (features) => set({ features }),\n setProfiles: (profiles) => set({ profiles }),\n setCurrentProfile: (profile) =>\n set({\n currentProfile: profile,\n realProfile: profile,\n impersonatedProfile: null,\n isImpersonating: false,\n }),\n startImpersonation: (profile) =>\n set({\n currentProfile: profile,\n impersonatedProfile: profile,\n isImpersonating: true,\n }),\n stopImpersonation: () => {\n const { realProfile } = get()\n set({\n currentProfile: realProfile,\n impersonatedProfile: null,\n isImpersonating: false,\n })\n },\n reset: () =>\n set({\n features: [],\n profiles: [],\n currentProfile: null,\n realProfile: null,\n impersonatedProfile: null,\n isImpersonating: false,\n }),\n}))\n","import * as React from 'react'\nimport type { FeatureDeclaration, PermissionsConfig, PermissionProfile } from '@fayz-ai/core'\nimport { usePluginRuntimeOptional } from '@fayz-ai/core'\nimport { usePermissionsStore } from './store'\n\n// ---------------------------------------------------------------------------\n// Permission check helpers\n// ---------------------------------------------------------------------------\n\n// The role-side check moved to @fayz-ai/core/access (single implementation for\n// browser, headless and the Fayz broker). Re-exported to keep call-sites stable.\nimport { profileHasPermission } from '@fayz-ai/core/access'\nexport { profileHasPermission }\n\n/**\n * Merge plugin-declared features with the app's own, deduped by id. The app's\n * declaration wins on collision (it can override a plugin's label/actions).\n */\nfunction mergeFeatures(\n pluginFeatures: FeatureDeclaration[] | undefined,\n appFeatures: FeatureDeclaration[] | undefined,\n): FeatureDeclaration[] {\n const byId = new Map<string, FeatureDeclaration>()\n for (const f of pluginFeatures ?? []) byId.set(f.id, f)\n for (const f of appFeatures ?? []) byId.set(f.id, f) // app override wins\n return Array.from(byId.values())\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface PermissionsContextValue {\n hasPermission: (feature: string, action?: string) => boolean\n canImpersonate: boolean\n startImpersonation: (profile: PermissionProfile) => void\n stopImpersonation: () => void\n}\n\nconst PermissionsContext = React.createContext<PermissionsContextValue | null>(null)\n\n// ---------------------------------------------------------------------------\n// Provider\n// ---------------------------------------------------------------------------\n\nexport interface PermissionsProviderProps {\n config?: PermissionsConfig\n children: React.ReactNode\n}\n\nexport function PermissionsProvider({ config, children }: PermissionsProviderProps) {\n const { setFeatures, startImpersonation, stopImpersonation, currentProfile, isImpersonating } =\n usePermissionsStore()\n\n // Plugins declare their own permission features via `declaredFeatures`, which the\n // plugin runtime aggregates into `pluginFeatures`. Merging them here is what makes\n // a plugin \"born compatible\" — its features show up in the RBAC matrix and gate\n // checks without the app re-declaring them. The app's own `config.features` wins\n // on id collisions (app override), so an app can refine a plugin's declaration.\n const runtime = usePluginRuntimeOptional()\n const pluginFeatures = runtime?.pluginFeatures\n\n React.useEffect(() => {\n const merged = mergeFeatures(pluginFeatures, config?.features)\n if (merged.length > 0) {\n setFeatures(merged)\n }\n }, [config, pluginFeatures, setFeatures])\n\n function hasPermission(feature: string, action?: string): boolean {\n return profileHasPermission(currentProfile, feature, action)\n }\n\n const value: PermissionsContextValue = {\n hasPermission,\n canImpersonate: !isImpersonating,\n startImpersonation,\n stopImpersonation,\n }\n\n return (\n <PermissionsContext.Provider value={value}>\n {children}\n </PermissionsContext.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Hooks\n// ---------------------------------------------------------------------------\n\n/**\n * Returns a function that checks whether the current user has a given\n * permission. Throws if used outside <PermissionsProvider>.\n */\nexport function usePermission(): (feature: string, action?: string) => boolean {\n const ctx = React.useContext(PermissionsContext)\n if (!ctx) {\n throw new Error('usePermission must be used inside <PermissionsProvider>')\n }\n return ctx.hasPermission\n}\n\n/**\n * Like usePermission, but degrades to allow-all when no <PermissionsProvider>\n * is mounted — so SDK components (e.g. the CRUD engine's PermissionGate) work\n * under any host shell instead of throwing. Gating is an enhancement, not a\n * hard requirement at the component level.\n */\nexport function usePermissionOptional(): (feature: string, action?: string) => boolean {\n const ctx = React.useContext(PermissionsContext)\n return ctx?.hasPermission ?? (() => true)\n}\n\n/**\n * Convenience hook — returns true/false for a specific feature + action.\n * Example: `const canEdit = useHasPermission('clients', 'write')`\n */\nexport function useHasPermission(feature: string, action?: string): boolean {\n const ctx = React.useContext(PermissionsContext)\n if (!ctx) {\n throw new Error('useHasPermission must be used inside <PermissionsProvider>')\n }\n return ctx.hasPermission(feature, action)\n}\n\n/**\n * Convenience hook that surfaces the full permissions context, including\n * impersonation controls.\n */\nexport function usePermissions(): PermissionsContextValue {\n const ctx = React.useContext(PermissionsContext)\n if (!ctx) {\n throw new Error('usePermissions must be used inside <PermissionsProvider>')\n }\n return ctx\n}\n\n// Re-export feature declarations for use in feature flag checks\nexport type { FeatureDeclaration }\n"]}
@@ -0,0 +1,11 @@
1
+ import { useTranslation as useTranslation$1, getCurrentLocale } from '@fayz-ai/core';
2
+
3
+ // src/hooks/useTranslation.ts
4
+ function useTranslation() {
5
+ const t = useTranslation$1();
6
+ return { t, locale: getCurrentLocale() };
7
+ }
8
+
9
+ export { useTranslation };
10
+ //# sourceMappingURL=chunk-YUHCC7JY.js.map
11
+ //# sourceMappingURL=chunk-YUHCC7JY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useTranslation.ts"],"names":["coreUseTranslation"],"mappings":";;;AAMO,SAAS,cAAA,GAAiB;AAC/B,EAAA,MAAM,IAAIA,gBAAA,EAAmB;AAC7B,EAAA,OAAO,EAAE,CAAA,EAAG,MAAA,EAAQ,gBAAA,EAAiB,EAAE;AACzC","file":"chunk-YUHCC7JY.js","sourcesContent":["// Compat wrapper → @fayz-ai/core's unified translator. The shell calls\n// `const { t } = useTranslation()`, while @fayz-ai/core returns `t` directly — this\n// keeps the `{ t, locale }` shape so shell components resolve from the SAME\n// registry the native plugins use (registered by createSaasApp).\nimport { useTranslation as coreUseTranslation, getCurrentLocale } from '@fayz-ai/core'\n\nexport function useTranslation() {\n const t = coreUseTranslation()\n return { t, locale: getCurrentLocale() }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ /** The shell's companion column: a tab bar and whichever panel is active.
3
+ * The frame inset comes from AppShell's `<aside>` padding, so this fills its
4
+ * box exactly. */
5
+ export declare function RightRail({ frame }: {
6
+ frame?: boolean;
7
+ }): React.JSX.Element | null;
8
+ //# sourceMappingURL=RightRail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RightRail.d.ts","sourceRoot":"","sources":["../../src/components/RightRail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B;;mBAEmB;AACnB,wBAAgB,SAAS,CAAC,EAAE,KAAY,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,4BAiH9D"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import type { AuthProvider } from '../../types';
3
+ interface CenteredLoginProps {
4
+ appName: string;
5
+ logo?: React.ReactNode;
6
+ tagline?: string;
7
+ showOAuth?: boolean;
8
+ oauthProviders?: Exclude<AuthProvider, 'email'>[];
9
+ onSuccess?: () => void;
10
+ }
11
+ export declare function CenteredLogin({ appName, logo, tagline, showOAuth, oauthProviders, onSuccess }: CenteredLoginProps): React.JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=CenteredLogin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CenteredLogin.d.ts","sourceRoot":"","sources":["../../../src/components/auth/CenteredLogin.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAA;IACjD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAID,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,kBAAkB,qBAmEjH"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { AuthProvider } from '../../types';
3
+ interface LoginFormProps {
4
+ onSuccess?: () => void;
5
+ onForgotPassword?: () => void;
6
+ showOAuth?: boolean;
7
+ oauthProviders?: Exclude<AuthProvider, 'email'>[];
8
+ className?: string;
9
+ }
10
+ export declare function LoginForm({ onSuccess, onForgotPassword, showOAuth, oauthProviders, className, }: LoginFormProps): React.JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=LoginForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginForm.d.ts","sourceRoot":"","sources":["../../../src/components/auth/LoginForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAA;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EACxB,SAAS,EACT,gBAAgB,EAChB,SAAiB,EACjB,cAAqC,EACrC,SAAS,GACV,EAAE,cAAc,qBA2GhB"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import type { AuthProvider } from '../../types';
3
+ interface LoginPageProps {
4
+ appName: string;
5
+ logo?: React.ReactNode;
6
+ layout?: 'split' | 'centered';
7
+ tagline?: string;
8
+ description?: string;
9
+ showOAuth?: boolean;
10
+ oauthProviders?: Exclude<AuthProvider, 'email'>[];
11
+ onSuccess?: () => void;
12
+ }
13
+ export declare function LoginPage({ layout, ...props }: LoginPageProps): React.JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=LoginPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginPage.d.ts","sourceRoot":"","sources":["../../../src/components/auth/LoginPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAA;IACjD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,wBAAgB,SAAS,CAAC,EAAE,MAAgB,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,qBAKvE"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { AuthProvider } from '../../types';
3
+ interface OAuthButtonsProps {
4
+ providers: Exclude<AuthProvider, 'email'>[];
5
+ onProviderClick?: (provider: AuthProvider) => void;
6
+ className?: string;
7
+ }
8
+ export declare function OAuthButtons({ providers, onProviderClick, className }: OAuthButtonsProps): React.JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=OAuthButtons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OAuthButtons.d.ts","sourceRoot":"","sources":["../../../src/components/auth/OAuthButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,UAAU,iBAAiB;IACzB,SAAS,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAA;IAC3C,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAmCD,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,iBAAiB,qBAqBxF"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { MemberRole } from '../../types';
3
+ interface ProtectedRouteProps {
4
+ children?: React.ReactNode;
5
+ requiredRole?: MemberRole;
6
+ fallback?: React.ReactNode;
7
+ onUnauthenticated?: () => void;
8
+ }
9
+ export declare function ProtectedRoute({ children, requiredRole, fallback, onUnauthenticated }: ProtectedRouteProps): React.JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=ProtectedRoute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtectedRoute.d.ts","sourceRoot":"","sources":["../../../src/components/auth/ProtectedRoute.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAU7C,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,YAAY,CAAC,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;CAC/B;AAMD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,mBAAmB,qBAqC1G"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface RecoveryFormProps {
3
+ onSuccess?: () => void;
4
+ onBackToLogin?: () => void;
5
+ className?: string;
6
+ }
7
+ export declare function RecoveryForm({ onSuccess, onBackToLogin, className, }: RecoveryFormProps): React.JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=RecoveryForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecoveryForm.d.ts","sourceRoot":"","sources":["../../../src/components/auth/RecoveryForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,UAAU,iBAAiB;IACzB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,aAAa,EACb,SAAS,GACV,EAAE,iBAAiB,qBA8FnB"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface SignupFormProps {
3
+ onSuccess?: () => void;
4
+ termsUrl?: string;
5
+ privacyUrl?: string;
6
+ className?: string;
7
+ }
8
+ export declare function SignupForm({ onSuccess, termsUrl, privacyUrl, className, }: SignupFormProps): React.JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=SignupForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignupForm.d.ts","sourceRoot":"","sources":["../../../src/components/auth/SignupForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,QAAQ,EACR,UAAU,EACV,SAAS,GACV,EAAE,eAAe,qBAwJjB"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import type { AuthProvider } from '../../types';
3
+ interface SplitLoginProps {
4
+ appName: string;
5
+ logo?: React.ReactNode;
6
+ tagline?: string;
7
+ description?: string;
8
+ showOAuth?: boolean;
9
+ oauthProviders?: Exclude<AuthProvider, 'email'>[];
10
+ onSuccess?: () => void;
11
+ }
12
+ export declare function SplitLogin({ appName, logo, tagline, description, showOAuth, oauthProviders, onSuccess }: SplitLoginProps): React.JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=SplitLogin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitLogin.d.ts","sourceRoot":"","sources":["../../../src/components/auth/SplitLogin.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAA;IACjD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAID,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,eAAe,qBAwGxH"}
@@ -0,0 +1,7 @@
1
+ export { LoginForm } from './LoginForm';
2
+ export { SignupForm } from './SignupForm';
3
+ export { RecoveryForm } from './RecoveryForm';
4
+ export { OAuthButtons } from './OAuthButtons';
5
+ export { ProtectedRoute } from './ProtectedRoute';
6
+ export { LoginPage } from './LoginPage';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ import type { Invoice } from '../../types';
3
+ interface InvoiceListProps {
4
+ invoices: Invoice[];
5
+ loading?: boolean;
6
+ }
7
+ export declare function InvoiceList({ invoices, loading }: InvoiceListProps): React.JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=InvoiceList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvoiceList.d.ts","sourceRoot":"","sources":["../../../src/components/billing/InvoiceList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,UAAU,gBAAgB;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAyBD,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,gBAAgB,qBAqFlE"}
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ import type { Plan, PlanInterval } from '../../types';
3
+ interface PlanSelectorProps {
4
+ plans: Plan[];
5
+ currentPlanId?: string;
6
+ interval: PlanInterval;
7
+ onIntervalChange: (interval: PlanInterval) => void;
8
+ onSelectPlan: (planId: string) => void;
9
+ loading?: boolean;
10
+ }
11
+ export declare function PlanSelector({ plans, currentPlanId, interval, onIntervalChange, onSelectPlan, loading, }: PlanSelectorProps): React.JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=PlanSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanSelector.d.ts","sourceRoot":"","sources":["../../../src/components/billing/PlanSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAErD,UAAU,iBAAiB;IACzB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,YAAY,CAAA;IACtB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;IAClD,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,OAAO,GACR,EAAE,iBAAiB,qBAgGnB"}
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ export declare function SoftLimitBanner({ keys }: {
3
+ keys: string[];
4
+ }): React.JSX.Element;
5
+ //# sourceMappingURL=SoftLimitBanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SoftLimitBanner.d.ts","sourceRoot":"","sources":["../../../src/components/billing/SoftLimitBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA2B9B,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,qBAqD3D"}
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ import type { Subscription, Plan } from '../../types';
3
+ interface SubscriptionCardProps {
4
+ subscription: Subscription;
5
+ plan?: Plan;
6
+ onCancel?: () => void;
7
+ onResume?: () => void;
8
+ loading?: boolean;
9
+ }
10
+ export declare function SubscriptionCard({ subscription, plan, onCancel, onResume, loading, }: SubscriptionCardProps): React.JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=SubscriptionCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionCard.d.ts","sourceRoot":"","sources":["../../../src/components/billing/SubscriptionCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAErD,UAAU,qBAAqB;IAC7B,YAAY,EAAE,YAAY,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAkBD,wBAAgB,gBAAgB,CAAC,EAC/B,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE,qBAAqB,qBAoEvB"}
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ export declare function SubscriptionPage({ className }: {
3
+ className?: string;
4
+ }): React.JSX.Element;
5
+ //# sourceMappingURL=SubscriptionPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionPage.d.ts","sourceRoot":"","sources":["../../../src/components/billing/SubscriptionPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA2C9B,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,qBAsUrE"}
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ export declare function UpgradeModal(): React.JSX.Element;
3
+ //# sourceMappingURL=UpgradeModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpgradeModal.d.ts","sourceRoot":"","sources":["../../../src/components/billing/UpgradeModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA4F9B,wBAAgB,YAAY,sBAS3B"}
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ export interface UpgradeOverlayProps {
3
+ /** Feature id (same id space as RBAC/nav) the paywall is about. */
4
+ feature?: string;
5
+ /** The gated page — rendered behind the paywall as a blurred teaser. */
6
+ children: React.ReactNode;
7
+ className?: string;
8
+ /** Paywall layer classes — override the default full-viewport centering
9
+ * (e.g. `min-h-full` inside a narrow drawer). */
10
+ overlayClassName?: string;
11
+ /** Forwarded to the UpgradePrompt (spacing overrides for tight surfaces). */
12
+ promptClassName?: string;
13
+ }
14
+ export declare function UpgradeOverlay({ feature, children, className, overlayClassName, promptClassName }: UpgradeOverlayProps): React.JSX.Element;
15
+ //# sourceMappingURL=UpgradeOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpgradeOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/billing/UpgradeOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,MAAM,WAAW,mBAAmB;IAClC,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wEAAwE;IACxE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;sDACkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,EAAE,mBAAmB,qBAmBtH"}
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ export interface UpgradePromptProps {
3
+ /** Feature id (same id space as RBAC/nav) this prompt is about. */
4
+ feature?: string;
5
+ /** Compact banner instead of the full hero block. */
6
+ inline?: boolean;
7
+ className?: string;
8
+ }
9
+ export declare function UpgradePrompt({ feature, inline, className }: UpgradePromptProps): React.JSX.Element;
10
+ //# sourceMappingURL=UpgradePrompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpgradePrompt.d.ts","sourceRoot":"","sources":["../../../src/components/billing/UpgradePrompt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAyB9B,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAuBD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,kBAAkB,qBAiL/E"}
@@ -0,0 +1,18 @@
1
+ import type { Plan, PlanEntitlements } from '@fayz-ai/core';
2
+ export { useAccessOptional, useLimit, useLimitGuard, invalidateLimit, useUpgradeModalStore, } from '../../access';
3
+ export type { AccessApi, AccessDecision } from '../../access';
4
+ export type { LimitState as LimitInfo } from '../../access';
5
+ export type { PlanEntitlements } from '@fayz-ai/core';
6
+ /** Narrow a plan to its entitlements (undefined when the plan declares none). */
7
+ export declare function getPlanEntitlements(plan: Plan | undefined | null): PlanEntitlements | undefined;
8
+ /**
9
+ * Clean a feature's raw permission label into a display name for the upgrade
10
+ * surfaces. Feature labels in an app's permissions config carry an access-scope
11
+ * suffix — e.g. "Marketing (acesso)" / "Reports (access)" — which reads as noise
12
+ * when interpolated into a headline ("Unlock Marketing (acesso)"). Strip a single
13
+ * trailing parenthetical group and collapse surrounding whitespace. Shared by
14
+ * UpgradePrompt AND UpgradeModal so the two surfaces stay in lockstep.
15
+ */
16
+ export declare function featureDisplayName(label: string | null | undefined): string;
17
+ export declare function resolvePlanCurrency(planCurrency: string | undefined, locale: string | undefined): string;
18
+ //# sourceMappingURL=access-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-contract.d.ts","sourceRoot":"","sources":["../../../src/components/billing/access-contract.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAE3D,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,eAAe,EACf,oBAAoB,GACrB,MAAM,cAAc,CAAA;AAErB,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG7D,YAAY,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,cAAc,CAAA;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,gBAAgB,GAAG,SAAS,CAE/F;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAG3E;AAcD,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAIxG"}
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+ export interface EntitlementGateProps {
3
+ feature: string;
4
+ children: React.ReactNode;
5
+ fallback?: React.ReactNode;
6
+ }
7
+ export declare function EntitlementGate({ feature, children, fallback }: EntitlementGateProps): React.JSX.Element;
8
+ export interface LimitGateProps {
9
+ limitKey: string;
10
+ children: React.ReactNode;
11
+ className?: string;
12
+ }
13
+ export declare function LimitGate({ limitKey, children, className }: LimitGateProps): React.JSX.Element;
14
+ //# sourceMappingURL=gates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../../src/components/billing/gates.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAED,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,oBAAoB,qBAIpF;AASD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,cAAc,qBAyB1E"}
@@ -0,0 +1,15 @@
1
+ export { SubscriptionPage } from './SubscriptionPage';
2
+ export { PlanSelector } from './PlanSelector';
3
+ export { SubscriptionCard } from './SubscriptionCard';
4
+ export { InvoiceList } from './InvoiceList';
5
+ export { UpgradePrompt } from './UpgradePrompt';
6
+ export type { UpgradePromptProps } from './UpgradePrompt';
7
+ export { UpgradeOverlay } from './UpgradeOverlay';
8
+ export type { UpgradeOverlayProps } from './UpgradeOverlay';
9
+ export { UpgradeModal } from './UpgradeModal';
10
+ export { SoftLimitBanner } from './SoftLimitBanner';
11
+ export { EntitlementGate, LimitGate } from './gates';
12
+ export type { EntitlementGateProps, LimitGateProps } from './gates';
13
+ export { useAccessOptional, useLimit, useLimitGuard, useUpgradeModalStore, invalidateLimit, getPlanEntitlements, } from './access-contract';
14
+ export type { AccessApi, AccessDecision, LimitInfo, PlanEntitlements } from './access-contract';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/billing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACpD,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAGnE,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ export declare function parsePlanFeature(feature: string): {
3
+ label: string;
4
+ highlighted: boolean;
5
+ };
6
+ export declare function PlanFeatureItem({ feature, className, iconClassName }: {
7
+ feature: string;
8
+ className?: string;
9
+ iconClassName?: string;
10
+ }): React.JSX.Element;
11
+ //# sourceMappingURL=plan-feature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-feature.d.ts","sourceRoot":"","sources":["../../../src/components/billing/plan-feature.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAIzF;AAED,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE;IACrE,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,qBAYA"}
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import type { ChatAttachment } from '../../stores/chat.store';
3
+ /**
4
+ * Drag-and-drop over a whole surface. Enter/leave fire for every child element
5
+ * the pointer crosses, so the depth counter is what keeps the overlay from
6
+ * flickering its way across the transcript.
7
+ */
8
+ export declare function useFileDrop(enabled: boolean, onFiles: (files: File[]) => void): {
9
+ dragging: boolean;
10
+ handlers: {
11
+ onDragEnter: (event: React.DragEvent) => void;
12
+ onDragOver: (event: React.DragEvent) => void;
13
+ onDragLeave: (event: React.DragEvent) => void;
14
+ onDrop: (event: React.DragEvent) => void;
15
+ };
16
+ };
17
+ /** "Solte aqui", plus the promise that makes dropping a client list safe. */
18
+ export declare function AttachmentDropOverlay(): React.JSX.Element;
19
+ export declare function AttachmentChips({ attachments, onRemove, }: {
20
+ attachments: ChatAttachment[];
21
+ onRemove: (id: string) => void;
22
+ }): React.JSX.Element | null;
23
+ //# sourceMappingURL=ChatAttachments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatAttachments.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatAttachments.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAc9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAW7D;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI;;;6BAenD,KAAK,CAAC,SAAS;4BAQhB,KAAK,CAAC,SAAS;6BAId,KAAK,CAAC,SAAS;wBAMpB,KAAK,CAAC,SAAS;;EASpC;AAED,6EAA6E;AAC7E,wBAAgB,qBAAqB,sBAepC;AAED,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,QAAQ,GACT,EAAE;IACD,WAAW,EAAE,cAAc,EAAE,CAAA;IAC7B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,4BA6EA"}
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ import type { ChatVoiceConfig } from '../../app/config';
3
+ interface ChatComposerProps {
4
+ onSend: (text: string) => void;
5
+ isStreaming: boolean;
6
+ isConfigured: boolean;
7
+ blocked: boolean;
8
+ voice?: ChatVoiceConfig;
9
+ hasSuggestions: boolean;
10
+ suggestionsOpen: boolean;
11
+ onToggleSuggestions: () => void;
12
+ }
13
+ /**
14
+ * The composer. Three ways in — type, talk, or pick a suggestion — and one
15
+ * rule: whatever the assistant is about to receive is visible in the field
16
+ * first. Dictation writes interim words straight into the textarea so the user
17
+ * watches it being heard, and only sends once the transcript settles.
18
+ */
19
+ export declare function ChatComposer({ onSend, isStreaming, isConfigured, blocked, voice, hasSuggestions, suggestionsOpen, onToggleSuggestions, }: ChatComposerProps): React.JSX.Element;
20
+ export {};
21
+ //# sourceMappingURL=ChatComposer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatComposer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,UAAU,iBAAiB;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;IACvB,eAAe,EAAE,OAAO,CAAA;IACxB,mBAAmB,EAAE,MAAM,IAAI,CAAA;CAChC;AAKD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,WAAW,EACX,YAAY,EACZ,OAAO,EACP,KAAK,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,EAAE,iBAAiB,qBA8SnB"}
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import { type FayzAgentConnectionConfig } from '../../lib/fayz-agent';
3
+ import type { ChatVoiceConfig } from '../../app/config';
4
+ /** The conversation with no box around it — status row, history/tools drawers,
5
+ * transcript, confirmation card, suggestions, composer. Owns no position, so
6
+ * any surface can mount it. */
7
+ export interface ChatConversationProps {
8
+ apiEndpoint?: string;
9
+ systemPrompt?: string;
10
+ agent?: FayzAgentConnectionConfig | false;
11
+ voice?: ChatVoiceConfig;
12
+ /** Enables the discreet "continuar no WhatsApp" hand-off under the composer. */
13
+ whatsapp?: {
14
+ number: string;
15
+ message?: string;
16
+ };
17
+ className?: string;
18
+ }
19
+ export declare function ChatConversation({ apiEndpoint, systemPrompt, agent, voice, whatsapp, className, }: ChatConversationProps): React.JSX.Element;
20
+ //# sourceMappingURL=ChatConversation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatConversation.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatConversation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA2B9B,OAAO,EAA8B,KAAK,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAsBvD;;gCAEgC;AAChC,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAA;IACzC,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,gFAAgF;IAChF,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,YAAY,EACZ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,qBAAqB,qBAiXvB"}