@alfakit/react 0.0.0-stage → 0.1.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 (1014) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +19 -2
  3. package/dist/app/components.d.ts +49 -0
  4. package/dist/app/components.d.ts.map +1 -0
  5. package/dist/app/components.js +99 -0
  6. package/dist/app/components.js.map +1 -0
  7. package/dist/app/hooks.d.ts +79 -0
  8. package/dist/app/hooks.d.ts.map +1 -0
  9. package/dist/app/hooks.js +239 -0
  10. package/dist/app/hooks.js.map +1 -0
  11. package/dist/components/actions/action-button.d.ts +17 -0
  12. package/dist/components/actions/action-button.d.ts.map +1 -0
  13. package/dist/components/actions/action-button.js +150 -0
  14. package/dist/components/actions/action-button.js.map +1 -0
  15. package/dist/components/actions/action-context.d.ts +11 -0
  16. package/dist/components/actions/action-context.d.ts.map +1 -0
  17. package/dist/components/actions/action-context.js +24 -0
  18. package/dist/components/actions/action-context.js.map +1 -0
  19. package/dist/components/actions/action-list.d.ts +20 -0
  20. package/dist/components/actions/action-list.d.ts.map +1 -0
  21. package/dist/components/actions/action-list.js +181 -0
  22. package/dist/components/actions/action-list.js.map +1 -0
  23. package/dist/components/actions/action-modals.d.ts +5 -0
  24. package/dist/components/actions/action-modals.d.ts.map +1 -0
  25. package/dist/components/actions/action-modals.js +362 -0
  26. package/dist/components/actions/action-modals.js.map +1 -0
  27. package/dist/components/actions/index.d.ts +5 -0
  28. package/dist/components/ai/copilot-panel.js +439 -0
  29. package/dist/components/ai/copilot-panel.js.map +1 -0
  30. package/dist/components/ai/copilot.d.ts +12 -0
  31. package/dist/components/ai/copilot.d.ts.map +1 -0
  32. package/dist/components/ai/copilot.js +66 -0
  33. package/dist/components/ai/copilot.js.map +1 -0
  34. package/dist/components/ai/index.d.ts +3 -0
  35. package/dist/components/ai/index.js +3 -0
  36. package/dist/components/ai/stream-lazy.d.ts +9 -0
  37. package/dist/components/ai/stream-lazy.d.ts.map +1 -0
  38. package/dist/components/ai/stream-lazy.js +13 -0
  39. package/dist/components/ai/stream-lazy.js.map +1 -0
  40. package/dist/components/ai/stream.js +85 -0
  41. package/dist/components/ai/stream.js.map +1 -0
  42. package/dist/components/analytics/alfakit-analytics.d.ts +14 -0
  43. package/dist/components/analytics/alfakit-analytics.d.ts.map +1 -0
  44. package/dist/components/analytics/alfakit-analytics.js +36 -0
  45. package/dist/components/analytics/alfakit-analytics.js.map +1 -0
  46. package/dist/components/analytics/breakdown.d.ts +11 -0
  47. package/dist/components/analytics/breakdown.d.ts.map +1 -0
  48. package/dist/components/analytics/breakdown.js +155 -0
  49. package/dist/components/analytics/breakdown.js.map +1 -0
  50. package/dist/components/analytics/index.d.ts +3 -0
  51. package/dist/components/cms/admin-bar.js +68 -0
  52. package/dist/components/cms/admin-bar.js.map +1 -0
  53. package/dist/components/cms/blocks.d.ts +41 -0
  54. package/dist/components/cms/blocks.d.ts.map +1 -0
  55. package/dist/components/cms/blocks.js +400 -0
  56. package/dist/components/cms/blocks.js.map +1 -0
  57. package/dist/components/cms/context.d.ts +24 -0
  58. package/dist/components/cms/context.d.ts.map +1 -0
  59. package/dist/components/cms/context.js +43 -0
  60. package/dist/components/cms/context.js.map +1 -0
  61. package/dist/components/cms/head.d.ts +11 -0
  62. package/dist/components/cms/head.d.ts.map +1 -0
  63. package/dist/components/cms/head.js +40 -0
  64. package/dist/components/cms/head.js.map +1 -0
  65. package/dist/components/cms/index.d.ts +8 -0
  66. package/dist/components/cms/index.js +8 -0
  67. package/dist/components/cms/live-preview-lazy.d.ts +9 -0
  68. package/dist/components/cms/live-preview-lazy.d.ts.map +1 -0
  69. package/dist/components/cms/live-preview-lazy.js +13 -0
  70. package/dist/components/cms/live-preview-lazy.js.map +1 -0
  71. package/dist/components/cms/live-preview.js +288 -0
  72. package/dist/components/cms/live-preview.js.map +1 -0
  73. package/dist/components/cms/menu.d.ts +24 -0
  74. package/dist/components/cms/menu.d.ts.map +1 -0
  75. package/dist/components/cms/menu.js +181 -0
  76. package/dist/components/cms/menu.js.map +1 -0
  77. package/dist/components/cms/page.d.ts +27 -0
  78. package/dist/components/cms/page.d.ts.map +1 -0
  79. package/dist/components/cms/page.js +180 -0
  80. package/dist/components/cms/page.js.map +1 -0
  81. package/dist/components/cms/parts.d.ts +24 -0
  82. package/dist/components/cms/parts.d.ts.map +1 -0
  83. package/dist/components/cms/parts.js +58 -0
  84. package/dist/components/cms/parts.js.map +1 -0
  85. package/dist/components/dev-tools/dev-tools-inspector.js +302 -0
  86. package/dist/components/dev-tools/dev-tools-inspector.js.map +1 -0
  87. package/dist/components/dev-tools/dev-tools-slot.js +24 -0
  88. package/dist/components/dev-tools/dev-tools-slot.js.map +1 -0
  89. package/dist/components/entries/code-entry.d.ts +8 -0
  90. package/dist/components/entries/code-entry.d.ts.map +1 -0
  91. package/dist/components/entries/code-entry.js +59 -0
  92. package/dist/components/entries/code-entry.js.map +1 -0
  93. package/dist/components/entries/entry-wrapper.d.ts +13 -0
  94. package/dist/components/entries/entry-wrapper.d.ts.map +1 -0
  95. package/dist/components/entries/entry-wrapper.js +175 -0
  96. package/dist/components/entries/entry-wrapper.js.map +1 -0
  97. package/dist/components/entries/index.d.ts +6 -0
  98. package/dist/components/entries/other-entries.d.ts +20 -0
  99. package/dist/components/entries/other-entries.d.ts.map +1 -0
  100. package/dist/components/entries/other-entries.js +169 -0
  101. package/dist/components/entries/other-entries.js.map +1 -0
  102. package/dist/components/entries/repeatable-entry-table.js +33 -0
  103. package/dist/components/entries/repeatable-entry-table.js.map +1 -0
  104. package/dist/components/entries/text-entry.d.ts +12 -0
  105. package/dist/components/entries/text-entry.d.ts.map +1 -0
  106. package/dist/components/entries/text-entry.js +181 -0
  107. package/dist/components/entries/text-entry.js.map +1 -0
  108. package/dist/components/entries/view-entry.d.ts +8 -0
  109. package/dist/components/entries/view-entry.d.ts.map +1 -0
  110. package/dist/components/entries/view-entry.js +26 -0
  111. package/dist/components/entries/view-entry.js.map +1 -0
  112. package/dist/components/fields/builder-picker.js +215 -0
  113. package/dist/components/fields/builder-picker.js.map +1 -0
  114. package/dist/components/fields/builder.d.ts +16 -0
  115. package/dist/components/fields/builder.d.ts.map +1 -0
  116. package/dist/components/fields/builder.js +351 -0
  117. package/dist/components/fields/builder.js.map +1 -0
  118. package/dist/components/fields/checkbox-list.d.ts +7 -0
  119. package/dist/components/fields/checkbox-list.d.ts.map +1 -0
  120. package/dist/components/fields/checkbox-list.js +133 -0
  121. package/dist/components/fields/checkbox-list.js.map +1 -0
  122. package/dist/components/fields/checkbox.d.ts +7 -0
  123. package/dist/components/fields/checkbox.d.ts.map +1 -0
  124. package/dist/components/fields/checkbox.js +29 -0
  125. package/dist/components/fields/checkbox.js.map +1 -0
  126. package/dist/components/fields/code-editor-lazy.d.ts +9 -0
  127. package/dist/components/fields/code-editor-lazy.d.ts.map +1 -0
  128. package/dist/components/fields/code-editor-lazy.js +31 -0
  129. package/dist/components/fields/code-editor-lazy.js.map +1 -0
  130. package/dist/components/fields/code-editor.js +107 -0
  131. package/dist/components/fields/code-editor.js.map +1 -0
  132. package/dist/components/fields/code-tokens.js +18 -0
  133. package/dist/components/fields/code-tokens.js.map +1 -0
  134. package/dist/components/fields/color-picker.d.ts +7 -0
  135. package/dist/components/fields/color-picker.d.ts.map +1 -0
  136. package/dist/components/fields/color-picker.js +70 -0
  137. package/dist/components/fields/color-picker.js.map +1 -0
  138. package/dist/components/fields/date-picker.d.ts +7 -0
  139. package/dist/components/fields/date-picker.d.ts.map +1 -0
  140. package/dist/components/fields/date-picker.js +230 -0
  141. package/dist/components/fields/date-picker.js.map +1 -0
  142. package/dist/components/fields/file-upload.d.ts +7 -0
  143. package/dist/components/fields/file-upload.d.ts.map +1 -0
  144. package/dist/components/fields/file-upload.js +397 -0
  145. package/dist/components/fields/file-upload.js.map +1 -0
  146. package/dist/components/fields/hidden.d.ts +7 -0
  147. package/dist/components/fields/hidden.d.ts.map +1 -0
  148. package/dist/components/fields/hidden.js +17 -0
  149. package/dist/components/fields/hidden.js.map +1 -0
  150. package/dist/components/fields/icon-picker-lazy.d.ts +9 -0
  151. package/dist/components/fields/icon-picker-lazy.d.ts.map +1 -0
  152. package/dist/components/fields/icon-picker-lazy.js +45 -0
  153. package/dist/components/fields/icon-picker-lazy.js.map +1 -0
  154. package/dist/components/fields/icon-picker-value.js +48 -0
  155. package/dist/components/fields/icon-picker-value.js.map +1 -0
  156. package/dist/components/fields/icon-picker.js +228 -0
  157. package/dist/components/fields/icon-picker.js.map +1 -0
  158. package/dist/components/fields/image-editor-dialog-lazy.js +18 -0
  159. package/dist/components/fields/image-editor-dialog-lazy.js.map +1 -0
  160. package/dist/components/fields/image-editor-dialog.js +328 -0
  161. package/dist/components/fields/image-editor-dialog.js.map +1 -0
  162. package/dist/components/fields/index.d.ts +24 -0
  163. package/dist/components/fields/item-actions.js +270 -0
  164. package/dist/components/fields/item-actions.js.map +1 -0
  165. package/dist/components/fields/key-value.d.ts +11 -0
  166. package/dist/components/fields/key-value.d.ts.map +1 -0
  167. package/dist/components/fields/key-value.js +194 -0
  168. package/dist/components/fields/key-value.js.map +1 -0
  169. package/dist/components/fields/lazy-fields.d.ts +13 -0
  170. package/dist/components/fields/lazy-fields.d.ts.map +1 -0
  171. package/dist/components/fields/lazy-fields.js +34 -0
  172. package/dist/components/fields/lazy-fields.js.map +1 -0
  173. package/dist/components/fields/modal-table-select.js +386 -0
  174. package/dist/components/fields/modal-table-select.js.map +1 -0
  175. package/dist/components/fields/money-input.d.ts +7 -0
  176. package/dist/components/fields/money-input.d.ts.map +1 -0
  177. package/dist/components/fields/money-input.js +91 -0
  178. package/dist/components/fields/money-input.js.map +1 -0
  179. package/dist/components/fields/one-time-code-input.d.ts +12 -0
  180. package/dist/components/fields/one-time-code-input.d.ts.map +1 -0
  181. package/dist/components/fields/one-time-code-input.js +53 -0
  182. package/dist/components/fields/one-time-code-input.js.map +1 -0
  183. package/dist/components/fields/query-builder-rules.js +295 -0
  184. package/dist/components/fields/query-builder-rules.js.map +1 -0
  185. package/dist/components/fields/radio.d.ts +7 -0
  186. package/dist/components/fields/radio.d.ts.map +1 -0
  187. package/dist/components/fields/radio.js +57 -0
  188. package/dist/components/fields/radio.js.map +1 -0
  189. package/dist/components/fields/repeater-table.js +111 -0
  190. package/dist/components/fields/repeater-table.js.map +1 -0
  191. package/dist/components/fields/repeater.d.ts +15 -0
  192. package/dist/components/fields/repeater.d.ts.map +1 -0
  193. package/dist/components/fields/repeater.js +209 -0
  194. package/dist/components/fields/repeater.js.map +1 -0
  195. package/dist/components/fields/rich-editor-extensions.js +295 -0
  196. package/dist/components/fields/rich-editor-extensions.js.map +1 -0
  197. package/dist/components/fields/rich-editor-lazy.d.ts +9 -0
  198. package/dist/components/fields/rich-editor-lazy.d.ts.map +1 -0
  199. package/dist/components/fields/rich-editor-lazy.js +24 -0
  200. package/dist/components/fields/rich-editor-lazy.js.map +1 -0
  201. package/dist/components/fields/rich-editor.js +517 -0
  202. package/dist/components/fields/rich-editor.js.map +1 -0
  203. package/dist/components/fields/select.d.ts +7 -0
  204. package/dist/components/fields/select.d.ts.map +1 -0
  205. package/dist/components/fields/select.js +455 -0
  206. package/dist/components/fields/select.js.map +1 -0
  207. package/dist/components/fields/slider.d.ts +12 -0
  208. package/dist/components/fields/slider.d.ts.map +1 -0
  209. package/dist/components/fields/slider.js +146 -0
  210. package/dist/components/fields/slider.js.map +1 -0
  211. package/dist/components/fields/tags-input.d.ts +7 -0
  212. package/dist/components/fields/tags-input.d.ts.map +1 -0
  213. package/dist/components/fields/tags-input.js +129 -0
  214. package/dist/components/fields/tags-input.js.map +1 -0
  215. package/dist/components/fields/text-input.d.ts +7 -0
  216. package/dist/components/fields/text-input.d.ts.map +1 -0
  217. package/dist/components/fields/text-input.js +135 -0
  218. package/dist/components/fields/text-input.js.map +1 -0
  219. package/dist/components/fields/textarea.d.ts +7 -0
  220. package/dist/components/fields/textarea.d.ts.map +1 -0
  221. package/dist/components/fields/textarea.js +37 -0
  222. package/dist/components/fields/textarea.js.map +1 -0
  223. package/dist/components/fields/toggle-buttons.d.ts +7 -0
  224. package/dist/components/fields/toggle-buttons.d.ts.map +1 -0
  225. package/dist/components/fields/toggle-buttons.js +84 -0
  226. package/dist/components/fields/toggle-buttons.js.map +1 -0
  227. package/dist/components/fields/toggle.d.ts +7 -0
  228. package/dist/components/fields/toggle.d.ts.map +1 -0
  229. package/dist/components/fields/toggle.js +39 -0
  230. package/dist/components/fields/toggle.js.map +1 -0
  231. package/dist/components/file-manager/file-manager-lazy.d.ts +10 -0
  232. package/dist/components/file-manager/file-manager-lazy.d.ts.map +1 -0
  233. package/dist/components/file-manager/file-manager-lazy.js +49 -0
  234. package/dist/components/file-manager/file-manager-lazy.js.map +1 -0
  235. package/dist/components/file-manager/file-manager.d.ts +1 -0
  236. package/dist/components/file-manager/file-manager.js +1387 -0
  237. package/dist/components/file-manager/file-manager.js.map +1 -0
  238. package/dist/components/file-manager/index.d.ts +3 -0
  239. package/dist/components/file-manager/picker-field.d.ts +12 -0
  240. package/dist/components/file-manager/picker-field.d.ts.map +1 -0
  241. package/dist/components/file-manager/picker-field.js +124 -0
  242. package/dist/components/file-manager/picker-field.js.map +1 -0
  243. package/dist/components/form/form-block.d.ts +12 -0
  244. package/dist/components/form/form-block.d.ts.map +1 -0
  245. package/dist/components/form/form-block.js +155 -0
  246. package/dist/components/form/form-block.js.map +1 -0
  247. package/dist/components/form/form-context.d.ts +27 -0
  248. package/dist/components/form/form-context.d.ts.map +1 -0
  249. package/dist/components/form/form-context.js +65 -0
  250. package/dist/components/form/form-context.js.map +1 -0
  251. package/dist/components/helpdesk/chat-panel.js +209 -0
  252. package/dist/components/helpdesk/chat-panel.js.map +1 -0
  253. package/dist/components/helpdesk/chat-widget.d.ts +23 -0
  254. package/dist/components/helpdesk/chat-widget.d.ts.map +1 -0
  255. package/dist/components/helpdesk/chat-widget.js +76 -0
  256. package/dist/components/helpdesk/chat-widget.js.map +1 -0
  257. package/dist/components/helpdesk/inbox-lazy.d.ts +9 -0
  258. package/dist/components/helpdesk/inbox-lazy.d.ts.map +1 -0
  259. package/dist/components/helpdesk/inbox-lazy.js +46 -0
  260. package/dist/components/helpdesk/inbox-lazy.js.map +1 -0
  261. package/dist/components/helpdesk/inbox.js +609 -0
  262. package/dist/components/helpdesk/inbox.js.map +1 -0
  263. package/dist/components/helpdesk/index.d.ts +3 -0
  264. package/dist/components/kanban/index.d.ts +2 -0
  265. package/dist/components/kanban/index.js +2 -0
  266. package/dist/components/kanban/kanban-lazy.d.ts +10 -0
  267. package/dist/components/kanban/kanban-lazy.d.ts.map +1 -0
  268. package/dist/components/kanban/kanban-lazy.js +31 -0
  269. package/dist/components/kanban/kanban-lazy.js.map +1 -0
  270. package/dist/components/kanban/kanban.js +591 -0
  271. package/dist/components/kanban/kanban.js.map +1 -0
  272. package/dist/components/layout/actions.js +40 -0
  273. package/dist/components/layout/actions.js.map +1 -0
  274. package/dist/components/layout/component-context.d.ts +13 -0
  275. package/dist/components/layout/component-context.d.ts.map +1 -0
  276. package/dist/components/layout/component-context.js +28 -0
  277. package/dist/components/layout/component-context.js.map +1 -0
  278. package/dist/components/layout/deferred.js +135 -0
  279. package/dist/components/layout/deferred.js.map +1 -0
  280. package/dist/components/layout/elements.d.ts +23 -0
  281. package/dist/components/layout/elements.d.ts.map +1 -0
  282. package/dist/components/layout/elements.js +183 -0
  283. package/dist/components/layout/elements.js.map +1 -0
  284. package/dist/components/layout/fieldset.d.ts +7 -0
  285. package/dist/components/layout/fieldset.d.ts.map +1 -0
  286. package/dist/components/layout/fieldset.js +29 -0
  287. package/dist/components/layout/fieldset.js.map +1 -0
  288. package/dist/components/layout/fused-group.d.ts +11 -0
  289. package/dist/components/layout/fused-group.d.ts.map +1 -0
  290. package/dist/components/layout/fused-group.js +64 -0
  291. package/dist/components/layout/fused-group.js.map +1 -0
  292. package/dist/components/layout/grid.d.ts +7 -0
  293. package/dist/components/layout/grid.d.ts.map +1 -0
  294. package/dist/components/layout/grid.js +20 -0
  295. package/dist/components/layout/grid.js.map +1 -0
  296. package/dist/components/layout/index.d.ts +12 -0
  297. package/dist/components/layout/mixed-content.d.ts +14 -0
  298. package/dist/components/layout/mixed-content.d.ts.map +1 -0
  299. package/dist/components/layout/mixed-content.js +44 -0
  300. package/dist/components/layout/mixed-content.js.map +1 -0
  301. package/dist/components/layout/prime.d.ts +17 -0
  302. package/dist/components/layout/prime.d.ts.map +1 -0
  303. package/dist/components/layout/prime.js +126 -0
  304. package/dist/components/layout/prime.js.map +1 -0
  305. package/dist/components/layout/schema-children.d.ts +18 -0
  306. package/dist/components/layout/schema-children.d.ts.map +1 -0
  307. package/dist/components/layout/schema-children.js +26 -0
  308. package/dist/components/layout/schema-children.js.map +1 -0
  309. package/dist/components/layout/section.d.ts +7 -0
  310. package/dist/components/layout/section.d.ts.map +1 -0
  311. package/dist/components/layout/section.js +133 -0
  312. package/dist/components/layout/section.js.map +1 -0
  313. package/dist/components/layout/tabs.d.ts +7 -0
  314. package/dist/components/layout/tabs.d.ts.map +1 -0
  315. package/dist/components/layout/tabs.js +83 -0
  316. package/dist/components/layout/tabs.js.map +1 -0
  317. package/dist/components/layout/wizard.d.ts +7 -0
  318. package/dist/components/layout/wizard.d.ts.map +1 -0
  319. package/dist/components/layout/wizard.js +172 -0
  320. package/dist/components/layout/wizard.js.map +1 -0
  321. package/dist/components/notifications/flash-toasts.d.ts +20 -0
  322. package/dist/components/notifications/flash-toasts.d.ts.map +1 -0
  323. package/dist/components/notifications/flash-toasts.js +121 -0
  324. package/dist/components/notifications/flash-toasts.js.map +1 -0
  325. package/dist/components/notifications/index.d.ts +5 -0
  326. package/dist/components/notifications/notifications-menu.d.ts +15 -0
  327. package/dist/components/notifications/notifications-menu.d.ts.map +1 -0
  328. package/dist/components/notifications/notifications-menu.js +201 -0
  329. package/dist/components/notifications/notifications-menu.js.map +1 -0
  330. package/dist/components/notifications/realtime-notifications.d.ts +9 -0
  331. package/dist/components/notifications/realtime-notifications.d.ts.map +1 -0
  332. package/dist/components/notifications/realtime-notifications.js +30 -0
  333. package/dist/components/notifications/realtime-notifications.js.map +1 -0
  334. package/dist/components/notifications/undo-button.d.ts +13 -0
  335. package/dist/components/notifications/undo-button.d.ts.map +1 -0
  336. package/dist/components/notifications/undo-button.js +54 -0
  337. package/dist/components/notifications/undo-button.js.map +1 -0
  338. package/dist/components/panel/app-sidebar.d.ts +7 -0
  339. package/dist/components/panel/app-sidebar.d.ts.map +1 -0
  340. package/dist/components/panel/app-sidebar.js +302 -0
  341. package/dist/components/panel/app-sidebar.js.map +1 -0
  342. package/dist/components/panel/bottom-nav.d.ts +9 -0
  343. package/dist/components/panel/bottom-nav.d.ts.map +1 -0
  344. package/dist/components/panel/bottom-nav.js +100 -0
  345. package/dist/components/panel/bottom-nav.js.map +1 -0
  346. package/dist/components/panel/debug-panel-slot.d.ts +8 -0
  347. package/dist/components/panel/debug-panel-slot.d.ts.map +1 -0
  348. package/dist/components/panel/debug-panel-slot.js +19 -0
  349. package/dist/components/panel/debug-panel-slot.js.map +1 -0
  350. package/dist/components/panel/debug-panel.d.ts +18 -0
  351. package/dist/components/panel/debug-panel.d.ts.map +1 -0
  352. package/dist/components/panel/debug-panel.js +423 -0
  353. package/dist/components/panel/debug-panel.js.map +1 -0
  354. package/dist/components/panel/global-search-palette.js +278 -0
  355. package/dist/components/panel/global-search-palette.js.map +1 -0
  356. package/dist/components/panel/global-search.d.ts +13 -0
  357. package/dist/components/panel/global-search.d.ts.map +1 -0
  358. package/dist/components/panel/global-search.js +114 -0
  359. package/dist/components/panel/global-search.js.map +1 -0
  360. package/dist/components/panel/impersonation-banner.d.ts +11 -0
  361. package/dist/components/panel/impersonation-banner.d.ts.map +1 -0
  362. package/dist/components/panel/impersonation-banner.js +52 -0
  363. package/dist/components/panel/impersonation-banner.js.map +1 -0
  364. package/dist/components/panel/index.d.ts +18 -0
  365. package/dist/components/panel/keyboard-shortcuts.d.ts +10 -0
  366. package/dist/components/panel/keyboard-shortcuts.d.ts.map +1 -0
  367. package/dist/components/panel/keyboard-shortcuts.js +107 -0
  368. package/dist/components/panel/keyboard-shortcuts.js.map +1 -0
  369. package/dist/components/panel/lazy-placeholder.d.ts +11 -0
  370. package/dist/components/panel/lazy-placeholder.d.ts.map +1 -0
  371. package/dist/components/panel/lazy-placeholder.js +35 -0
  372. package/dist/components/panel/lazy-placeholder.js.map +1 -0
  373. package/dist/components/panel/locale-switcher.d.ts +19 -0
  374. package/dist/components/panel/locale-switcher.d.ts.map +1 -0
  375. package/dist/components/panel/locale-switcher.js +113 -0
  376. package/dist/components/panel/locale-switcher.js.map +1 -0
  377. package/dist/components/panel/menu-item.js +65 -0
  378. package/dist/components/panel/menu-item.js.map +1 -0
  379. package/dist/components/panel/nav-label.js +29 -0
  380. package/dist/components/panel/nav-label.js.map +1 -0
  381. package/dist/components/panel/pwa.d.ts +13 -0
  382. package/dist/components/panel/pwa.d.ts.map +1 -0
  383. package/dist/components/panel/pwa.js +90 -0
  384. package/dist/components/panel/pwa.js.map +1 -0
  385. package/dist/components/panel/schema-contract-guard.js +44 -0
  386. package/dist/components/panel/schema-contract-guard.js.map +1 -0
  387. package/dist/components/panel/shortcut-keys.d.ts +11 -0
  388. package/dist/components/panel/shortcut-keys.d.ts.map +1 -0
  389. package/dist/components/panel/shortcut-keys.js +33 -0
  390. package/dist/components/panel/shortcut-keys.js.map +1 -0
  391. package/dist/components/panel/shortcuts-overlay.d.ts +13 -0
  392. package/dist/components/panel/shortcuts-overlay.d.ts.map +1 -0
  393. package/dist/components/panel/shortcuts-overlay.js +159 -0
  394. package/dist/components/panel/shortcuts-overlay.js.map +1 -0
  395. package/dist/components/panel/slot.d.ts +18 -0
  396. package/dist/components/panel/slot.d.ts.map +1 -0
  397. package/dist/components/panel/slot.js +31 -0
  398. package/dist/components/panel/slot.js.map +1 -0
  399. package/dist/components/panel/sub-navigation.js +125 -0
  400. package/dist/components/panel/sub-navigation.js.map +1 -0
  401. package/dist/components/panel/tenant-menu.d.ts +10 -0
  402. package/dist/components/panel/tenant-menu.d.ts.map +1 -0
  403. package/dist/components/panel/tenant-menu.js +196 -0
  404. package/dist/components/panel/tenant-menu.js.map +1 -0
  405. package/dist/components/panel/theme-toggle.d.ts +4 -0
  406. package/dist/components/panel/theme-toggle.d.ts.map +1 -0
  407. package/dist/components/panel/theme-toggle.js +84 -0
  408. package/dist/components/panel/theme-toggle.js.map +1 -0
  409. package/dist/components/panel/topbar.d.ts +10 -0
  410. package/dist/components/panel/topbar.d.ts.map +1 -0
  411. package/dist/components/panel/topbar.js +74 -0
  412. package/dist/components/panel/topbar.js.map +1 -0
  413. package/dist/components/panel/user-menu.d.ts +16 -0
  414. package/dist/components/panel/user-menu.d.ts.map +1 -0
  415. package/dist/components/panel/user-menu.js +151 -0
  416. package/dist/components/panel/user-menu.js.map +1 -0
  417. package/dist/components/realtime/conflict-banner.d.ts +13 -0
  418. package/dist/components/realtime/conflict-banner.d.ts.map +1 -0
  419. package/dist/components/realtime/conflict-banner.js +193 -0
  420. package/dist/components/realtime/conflict-banner.js.map +1 -0
  421. package/dist/components/realtime/index.d.ts +4 -0
  422. package/dist/components/realtime/index.js +4 -0
  423. package/dist/components/realtime/live-records-pill.d.ts +19 -0
  424. package/dist/components/realtime/live-records-pill.d.ts.map +1 -0
  425. package/dist/components/realtime/live-records-pill.js +57 -0
  426. package/dist/components/realtime/live-records-pill.js.map +1 -0
  427. package/dist/components/realtime/record-presence.d.ts +12 -0
  428. package/dist/components/realtime/record-presence.d.ts.map +1 -0
  429. package/dist/components/realtime/record-presence.js +79 -0
  430. package/dist/components/realtime/record-presence.js.map +1 -0
  431. package/dist/components/schema/content-slot.js +49 -0
  432. package/dist/components/schema/content-slot.js.map +1 -0
  433. package/dist/components/schema/field-actions.js +72 -0
  434. package/dist/components/schema/field-actions.js.map +1 -0
  435. package/dist/components/schema/field-wrapper.d.ts +20 -0
  436. package/dist/components/schema/field-wrapper.d.ts.map +1 -0
  437. package/dist/components/schema/field-wrapper.js +210 -0
  438. package/dist/components/schema/field-wrapper.js.map +1 -0
  439. package/dist/components/schema/fused-group-context.js +14 -0
  440. package/dist/components/schema/fused-group-context.js.map +1 -0
  441. package/dist/components/schema/schema-renderer.d.ts +23 -0
  442. package/dist/components/schema/schema-renderer.d.ts.map +1 -0
  443. package/dist/components/schema/schema-renderer.js +77 -0
  444. package/dist/components/schema/schema-renderer.js.map +1 -0
  445. package/dist/components/schema/translatable-field.js +76 -0
  446. package/dist/components/schema/translatable-field.js.map +1 -0
  447. package/dist/components/schema/virtual-spacer.js +23 -0
  448. package/dist/components/schema/virtual-spacer.js.map +1 -0
  449. package/dist/components/table/cells.d.ts +12 -0
  450. package/dist/components/table/cells.d.ts.map +1 -0
  451. package/dist/components/table/cells.js +472 -0
  452. package/dist/components/table/cells.js.map +1 -0
  453. package/dist/components/table/column-manager.d.ts +17 -0
  454. package/dist/components/table/column-manager.d.ts.map +1 -0
  455. package/dist/components/table/column-manager.js +338 -0
  456. package/dist/components/table/column-manager.js.map +1 -0
  457. package/dist/components/table/content-layout.d.ts +30 -0
  458. package/dist/components/table/content-layout.d.ts.map +1 -0
  459. package/dist/components/table/content-layout.js +224 -0
  460. package/dist/components/table/content-layout.js.map +1 -0
  461. package/dist/components/table/filters.d.ts +15 -0
  462. package/dist/components/table/filters.d.ts.map +1 -0
  463. package/dist/components/table/filters.js +300 -0
  464. package/dist/components/table/filters.js.map +1 -0
  465. package/dist/components/table/grouping.js +194 -0
  466. package/dist/components/table/grouping.js.map +1 -0
  467. package/dist/components/table/index.d.ts +10 -0
  468. package/dist/components/table/list-tabs.js +105 -0
  469. package/dist/components/table/list-tabs.js.map +1 -0
  470. package/dist/components/table/pagination.d.ts +7 -0
  471. package/dist/components/table/pagination.d.ts.map +1 -0
  472. package/dist/components/table/pagination.js +255 -0
  473. package/dist/components/table/pagination.js.map +1 -0
  474. package/dist/components/table/record-cell.d.ts +25 -0
  475. package/dist/components/table/record-cell.d.ts.map +1 -0
  476. package/dist/components/table/record-cell.js +86 -0
  477. package/dist/components/table/record-cell.js.map +1 -0
  478. package/dist/components/table/spreadsheet-lazy.d.ts +7 -0
  479. package/dist/components/table/spreadsheet-lazy.d.ts.map +1 -0
  480. package/dist/components/table/spreadsheet-lazy.js +15 -0
  481. package/dist/components/table/spreadsheet-lazy.js.map +1 -0
  482. package/dist/components/table/spreadsheet.d.ts +11 -0
  483. package/dist/components/table/spreadsheet.d.ts.map +1 -0
  484. package/dist/components/table/spreadsheet.js +420 -0
  485. package/dist/components/table/spreadsheet.js.map +1 -0
  486. package/dist/components/table/summary-rows.js +104 -0
  487. package/dist/components/table/summary-rows.js.map +1 -0
  488. package/dist/components/table/table-block.d.ts +12 -0
  489. package/dist/components/table/table-block.d.ts.map +1 -0
  490. package/dist/components/table/table-block.js +875 -0
  491. package/dist/components/table/table-block.js.map +1 -0
  492. package/dist/components/table/table-views.d.ts +15 -0
  493. package/dist/components/table/table-views.d.ts.map +1 -0
  494. package/dist/components/table/table-views.js +376 -0
  495. package/dist/components/table/table-views.js.map +1 -0
  496. package/dist/components/table/trigger-button.js +44 -0
  497. package/dist/components/table/trigger-button.js.map +1 -0
  498. package/dist/components/translation-manager/index.d.ts +2 -0
  499. package/dist/components/translation-manager/index.js +2 -0
  500. package/dist/components/translation-manager/translation-manager-lazy.d.ts +9 -0
  501. package/dist/components/translation-manager/translation-manager-lazy.d.ts.map +1 -0
  502. package/dist/components/translation-manager/translation-manager-lazy.js +24 -0
  503. package/dist/components/translation-manager/translation-manager-lazy.js.map +1 -0
  504. package/dist/components/translation-manager/translation-manager.js +719 -0
  505. package/dist/components/translation-manager/translation-manager.js.map +1 -0
  506. package/dist/components/tree/index.d.ts +2 -0
  507. package/dist/components/tree/index.js +2 -0
  508. package/dist/components/tree/tree-lazy.d.ts +10 -0
  509. package/dist/components/tree/tree-lazy.d.ts.map +1 -0
  510. package/dist/components/tree/tree-lazy.js +24 -0
  511. package/dist/components/tree/tree-lazy.js.map +1 -0
  512. package/dist/components/tree/tree.js +291 -0
  513. package/dist/components/tree/tree.js.map +1 -0
  514. package/dist/components/ui/alert.d.ts +12 -0
  515. package/dist/components/ui/alert.d.ts.map +1 -0
  516. package/dist/components/ui/alert.js +37 -0
  517. package/dist/components/ui/alert.js.map +1 -0
  518. package/dist/components/ui/avatar.d.ts +9 -0
  519. package/dist/components/ui/avatar.d.ts.map +1 -0
  520. package/dist/components/ui/avatar.js +29 -0
  521. package/dist/components/ui/avatar.js.map +1 -0
  522. package/dist/components/ui/badge.d.ts +12 -0
  523. package/dist/components/ui/badge.d.ts.map +1 -0
  524. package/dist/components/ui/badge.js +26 -0
  525. package/dist/components/ui/badge.js.map +1 -0
  526. package/dist/components/ui/breadcrumb.d.ts +14 -0
  527. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  528. package/dist/components/ui/breadcrumb.js +79 -0
  529. package/dist/components/ui/breadcrumb.js.map +1 -0
  530. package/dist/components/ui/button.d.ts +13 -0
  531. package/dist/components/ui/button.d.ts.map +1 -0
  532. package/dist/components/ui/button.js +47 -0
  533. package/dist/components/ui/button.js.map +1 -0
  534. package/dist/components/ui/calendar.d.ts +7 -0
  535. package/dist/components/ui/calendar.d.ts.map +1 -0
  536. package/dist/components/ui/calendar.js +48 -0
  537. package/dist/components/ui/calendar.js.map +1 -0
  538. package/dist/components/ui/card.d.ts +12 -0
  539. package/dist/components/ui/card.d.ts.map +1 -0
  540. package/dist/components/ui/card.js +56 -0
  541. package/dist/components/ui/card.js.map +1 -0
  542. package/dist/components/ui/checkbox.d.ts +7 -0
  543. package/dist/components/ui/checkbox.d.ts.map +1 -0
  544. package/dist/components/ui/checkbox.js +21 -0
  545. package/dist/components/ui/checkbox.js.map +1 -0
  546. package/dist/components/ui/collapsible.d.ts +9 -0
  547. package/dist/components/ui/collapsible.d.ts.map +1 -0
  548. package/dist/components/ui/collapsible.js +25 -0
  549. package/dist/components/ui/collapsible.js.map +1 -0
  550. package/dist/components/ui/command.d.ts +23 -0
  551. package/dist/components/ui/command.d.ts.map +1 -0
  552. package/dist/components/ui/command.js +89 -0
  553. package/dist/components/ui/command.js.map +1 -0
  554. package/dist/components/ui/dialog.d.ts +18 -0
  555. package/dist/components/ui/dialog.d.ts.map +1 -0
  556. package/dist/components/ui/dialog.js +92 -0
  557. package/dist/components/ui/dialog.js.map +1 -0
  558. package/dist/components/ui/dropdown-menu.d.ts +28 -0
  559. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  560. package/dist/components/ui/dropdown-menu.js +123 -0
  561. package/dist/components/ui/dropdown-menu.js.map +1 -0
  562. package/dist/components/ui/input.d.ts +6 -0
  563. package/dist/components/ui/input.d.ts.map +1 -0
  564. package/dist/components/ui/input.js +15 -0
  565. package/dist/components/ui/input.js.map +1 -0
  566. package/dist/components/ui/label.d.ts +7 -0
  567. package/dist/components/ui/label.d.ts.map +1 -0
  568. package/dist/components/ui/label.js +15 -0
  569. package/dist/components/ui/label.js.map +1 -0
  570. package/dist/components/ui/popover.d.ts +10 -0
  571. package/dist/components/ui/popover.d.ts.map +1 -0
  572. package/dist/components/ui/popover.js +35 -0
  573. package/dist/components/ui/popover.js.map +1 -0
  574. package/dist/components/ui/radio-group.d.ts +8 -0
  575. package/dist/components/ui/radio-group.d.ts.map +1 -0
  576. package/dist/components/ui/radio-group.js +28 -0
  577. package/dist/components/ui/radio-group.js.map +1 -0
  578. package/dist/components/ui/scroll-area.d.ts +8 -0
  579. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  580. package/dist/components/ui/scroll-area.js +36 -0
  581. package/dist/components/ui/scroll-area.js.map +1 -0
  582. package/dist/components/ui/select.d.ts +18 -0
  583. package/dist/components/ui/select.d.ts.map +1 -0
  584. package/dist/components/ui/select.js +96 -0
  585. package/dist/components/ui/select.js.map +1 -0
  586. package/dist/components/ui/separator.d.ts +7 -0
  587. package/dist/components/ui/separator.d.ts.map +1 -0
  588. package/dist/components/ui/separator.js +17 -0
  589. package/dist/components/ui/separator.js.map +1 -0
  590. package/dist/components/ui/sheet.d.ts +17 -0
  591. package/dist/components/ui/sheet.d.ts.map +1 -0
  592. package/dist/components/ui/sheet.js +89 -0
  593. package/dist/components/ui/sheet.js.map +1 -0
  594. package/dist/components/ui/sidebar.d.ts +72 -0
  595. package/dist/components/ui/sidebar.d.ts.map +1 -0
  596. package/dist/components/ui/sidebar.js +376 -0
  597. package/dist/components/ui/sidebar.js.map +1 -0
  598. package/dist/components/ui/skeleton.d.ts +6 -0
  599. package/dist/components/ui/skeleton.d.ts.map +1 -0
  600. package/dist/components/ui/skeleton.js +14 -0
  601. package/dist/components/ui/skeleton.js.map +1 -0
  602. package/dist/components/ui/sonner.d.ts +6 -0
  603. package/dist/components/ui/sonner.d.ts.map +1 -0
  604. package/dist/components/ui/sonner.js +34 -0
  605. package/dist/components/ui/sonner.js.map +1 -0
  606. package/dist/components/ui/spinner.d.ts +10 -0
  607. package/dist/components/ui/spinner.d.ts.map +1 -0
  608. package/dist/components/ui/spinner.js +30 -0
  609. package/dist/components/ui/spinner.js.map +1 -0
  610. package/dist/components/ui/switch.d.ts +7 -0
  611. package/dist/components/ui/switch.d.ts.map +1 -0
  612. package/dist/components/ui/switch.js +19 -0
  613. package/dist/components/ui/switch.js.map +1 -0
  614. package/dist/components/ui/table.d.ts +13 -0
  615. package/dist/components/ui/table.d.ts.map +1 -0
  616. package/dist/components/ui/table.js +67 -0
  617. package/dist/components/ui/table.js.map +1 -0
  618. package/dist/components/ui/tabs.d.ts +10 -0
  619. package/dist/components/ui/tabs.d.ts.map +1 -0
  620. package/dist/components/ui/tabs.js +36 -0
  621. package/dist/components/ui/tabs.js.map +1 -0
  622. package/dist/components/ui/textarea.d.ts +6 -0
  623. package/dist/components/ui/textarea.d.ts.map +1 -0
  624. package/dist/components/ui/textarea.js +14 -0
  625. package/dist/components/ui/textarea.js.map +1 -0
  626. package/dist/components/ui/tooltip.d.ts +10 -0
  627. package/dist/components/ui/tooltip.d.ts.map +1 -0
  628. package/dist/components/ui/tooltip.js +36 -0
  629. package/dist/components/ui/tooltip.js.map +1 -0
  630. package/dist/components/versions/record-versions.d.ts +12 -0
  631. package/dist/components/versions/record-versions.d.ts.map +1 -0
  632. package/dist/components/versions/record-versions.js +138 -0
  633. package/dist/components/versions/record-versions.js.map +1 -0
  634. package/dist/components/widgets/calendar-lazy.d.ts +9 -0
  635. package/dist/components/widgets/calendar-lazy.d.ts.map +1 -0
  636. package/dist/components/widgets/calendar-lazy.js +47 -0
  637. package/dist/components/widgets/calendar-lazy.js.map +1 -0
  638. package/dist/components/widgets/calendar.js +122 -0
  639. package/dist/components/widgets/calendar.js.map +1 -0
  640. package/dist/components/widgets/chart-filters.js +101 -0
  641. package/dist/components/widgets/chart-filters.js.map +1 -0
  642. package/dist/components/widgets/chart-lazy.d.ts +9 -0
  643. package/dist/components/widgets/chart-lazy.d.ts.map +1 -0
  644. package/dist/components/widgets/chart-lazy.js +27 -0
  645. package/dist/components/widgets/chart-lazy.js.map +1 -0
  646. package/dist/components/widgets/chart.js +216 -0
  647. package/dist/components/widgets/chart.js.map +1 -0
  648. package/dist/components/widgets/dashboard-customizer.d.ts +15 -0
  649. package/dist/components/widgets/dashboard-customizer.d.ts.map +1 -0
  650. package/dist/components/widgets/dashboard-customizer.js +219 -0
  651. package/dist/components/widgets/dashboard-customizer.js.map +1 -0
  652. package/dist/components/widgets/index.d.ts +6 -0
  653. package/dist/components/widgets/stats-overview.d.ts +7 -0
  654. package/dist/components/widgets/stats-overview.d.ts.map +1 -0
  655. package/dist/components/widgets/stats-overview.js +133 -0
  656. package/dist/components/widgets/stats-overview.js.map +1 -0
  657. package/dist/components/widgets/widgets-block.d.ts +10 -0
  658. package/dist/components/widgets/widgets-block.d.ts.map +1 -0
  659. package/dist/components/widgets/widgets-block.js +72 -0
  660. package/dist/components/widgets/widgets-block.js.map +1 -0
  661. package/dist/context.d.ts +55 -0
  662. package/dist/context.d.ts.map +1 -0
  663. package/dist/context.js +115 -0
  664. package/dist/context.js.map +1 -0
  665. package/dist/create-alfakit.d.ts +25 -0
  666. package/dist/create-alfakit.d.ts.map +1 -0
  667. package/dist/create-alfakit.js +182 -0
  668. package/dist/create-alfakit.js.map +1 -0
  669. package/dist/eject-manifest.json +1128 -0
  670. package/dist/hooks/use-hydrated.d.ts +9 -0
  671. package/dist/hooks/use-hydrated.d.ts.map +1 -0
  672. package/dist/hooks/use-hydrated.js +15 -0
  673. package/dist/hooks/use-hydrated.js.map +1 -0
  674. package/dist/hooks/use-mobile.d.ts +8 -0
  675. package/dist/hooks/use-mobile.d.ts.map +1 -0
  676. package/dist/hooks/use-mobile.js +21 -0
  677. package/dist/hooks/use-mobile.js.map +1 -0
  678. package/dist/hooks/use-store.d.ts +7 -0
  679. package/dist/hooks/use-store.d.ts.map +1 -0
  680. package/dist/hooks/use-store.js +13 -0
  681. package/dist/hooks/use-store.js.map +1 -0
  682. package/dist/hooks/use-virtual-list.d.ts +29 -0
  683. package/dist/hooks/use-virtual-list.d.ts.map +1 -0
  684. package/dist/hooks/use-virtual-list.js +73 -0
  685. package/dist/hooks/use-virtual-list.js.map +1 -0
  686. package/dist/index.d.ts +180 -0
  687. package/dist/index.js +161 -0
  688. package/dist/layouts/app-layout.d.ts +11 -0
  689. package/dist/layouts/app-layout.d.ts.map +1 -0
  690. package/dist/layouts/app-layout.js +104 -0
  691. package/dist/layouts/app-layout.js.map +1 -0
  692. package/dist/layouts/auth-layout.d.ts +11 -0
  693. package/dist/layouts/auth-layout.d.ts.map +1 -0
  694. package/dist/layouts/auth-layout.js +65 -0
  695. package/dist/layouts/auth-layout.js.map +1 -0
  696. package/dist/layouts/blank-layout.d.ts +7 -0
  697. package/dist/layouts/blank-layout.d.ts.map +1 -0
  698. package/dist/layouts/blank-layout.js +12 -0
  699. package/dist/layouts/blank-layout.js.map +1 -0
  700. package/dist/layouts/fullscreen-layout.d.ts +16 -0
  701. package/dist/layouts/fullscreen-layout.d.ts.map +1 -0
  702. package/dist/layouts/fullscreen-layout.js +107 -0
  703. package/dist/layouts/fullscreen-layout.js.map +1 -0
  704. package/dist/layouts/top-nav-layout.d.ts +15 -0
  705. package/dist/layouts/top-nav-layout.d.ts.map +1 -0
  706. package/dist/layouts/top-nav-layout.js +223 -0
  707. package/dist/layouts/top-nav-layout.js.map +1 -0
  708. package/dist/lib/attributes.d.ts +12 -0
  709. package/dist/lib/attributes.d.ts.map +1 -0
  710. package/dist/lib/attributes.js +55 -0
  711. package/dist/lib/attributes.js.map +1 -0
  712. package/dist/lib/colors.d.ts +23 -0
  713. package/dist/lib/colors.d.ts.map +1 -0
  714. package/dist/lib/colors.js +126 -0
  715. package/dist/lib/colors.js.map +1 -0
  716. package/dist/lib/discovery.d.ts +22 -0
  717. package/dist/lib/discovery.d.ts.map +1 -0
  718. package/dist/lib/discovery.js +45 -0
  719. package/dist/lib/discovery.js.map +1 -0
  720. package/dist/lib/icons.d.ts +24 -0
  721. package/dist/lib/icons.d.ts.map +1 -0
  722. package/dist/lib/icons.js +93 -0
  723. package/dist/lib/icons.js.map +1 -0
  724. package/dist/lib/lazy.d.ts +8 -0
  725. package/dist/lib/lazy.d.ts.map +1 -0
  726. package/dist/lib/lazy.js +47 -0
  727. package/dist/lib/lazy.js.map +1 -0
  728. package/dist/lib/new-tab-hint.js +15 -0
  729. package/dist/lib/new-tab-hint.js.map +1 -0
  730. package/dist/lib/utils.d.ts +5 -0
  731. package/dist/lib/utils.d.ts.map +1 -0
  732. package/dist/lib/utils.js +10 -0
  733. package/dist/lib/utils.js.map +1 -0
  734. package/dist/pages/page.d.ts +23 -0
  735. package/dist/pages/page.d.ts.map +1 -0
  736. package/dist/pages/page.js +328 -0
  737. package/dist/pages/page.js.map +1 -0
  738. package/dist/registry.d.ts +7 -0
  739. package/dist/registry.d.ts.map +1 -0
  740. package/dist/registry.js +113 -0
  741. package/dist/registry.js.map +1 -0
  742. package/dist/server.d.ts +28 -0
  743. package/dist/server.d.ts.map +1 -0
  744. package/dist/server.js +38 -0
  745. package/dist/server.js.map +1 -0
  746. package/dist/standalone/alfakit-component.d.ts +30 -0
  747. package/dist/standalone/alfakit-component.d.ts.map +1 -0
  748. package/dist/standalone/alfakit-component.js +156 -0
  749. package/dist/standalone/alfakit-component.js.map +1 -0
  750. package/dist/standalone/alfakit-toaster.d.ts +26 -0
  751. package/dist/standalone/alfakit-toaster.d.ts.map +1 -0
  752. package/dist/standalone/alfakit-toaster.js +38 -0
  753. package/dist/standalone/alfakit-toaster.js.map +1 -0
  754. package/dist/standalone/configure.d.ts +14 -0
  755. package/dist/standalone/configure.d.ts.map +1 -0
  756. package/dist/standalone/configure.js +27 -0
  757. package/dist/standalone/configure.js.map +1 -0
  758. package/dist/standalone/index.d.ts +4 -0
  759. package/dist/standalone/runtime.js +94 -0
  760. package/dist/standalone/runtime.js.map +1 -0
  761. package/dist/standalone.css +150 -0
  762. package/dist/starter-kit/index.d.ts +4 -0
  763. package/dist/starter-kit/index.js +4 -0
  764. package/dist/starter-kit/navigation.d.ts +20 -0
  765. package/dist/starter-kit/navigation.d.ts.map +1 -0
  766. package/dist/starter-kit/navigation.js +25 -0
  767. package/dist/starter-kit/navigation.js.map +1 -0
  768. package/dist/starter-kit/starter-kit.d.ts +56 -0
  769. package/dist/starter-kit/starter-kit.d.ts.map +1 -0
  770. package/dist/starter-kit/starter-kit.js +120 -0
  771. package/dist/starter-kit/starter-kit.js.map +1 -0
  772. package/dist/starter-kit/widgets-loaded.js +172 -0
  773. package/dist/starter-kit/widgets-loaded.js.map +1 -0
  774. package/dist/starter-kit/widgets-triggers.js +90 -0
  775. package/dist/starter-kit/widgets-triggers.js.map +1 -0
  776. package/dist/starter-kit/widgets.d.ts +38 -0
  777. package/dist/starter-kit/widgets.d.ts.map +1 -0
  778. package/dist/starter-kit/widgets.js +64 -0
  779. package/dist/starter-kit/widgets.js.map +1 -0
  780. package/dist/styles.css +305 -0
  781. package/dist/themes.css +1340 -0
  782. package/package.json +128 -3
  783. package/src/app/components.tsx +104 -0
  784. package/src/app/hooks.ts +365 -0
  785. package/src/components/actions/action-button.tsx +254 -0
  786. package/src/components/actions/action-context.tsx +23 -0
  787. package/src/components/actions/action-list.tsx +356 -0
  788. package/src/components/actions/action-modals.tsx +479 -0
  789. package/src/components/actions/index.ts +4 -0
  790. package/src/components/ai/copilot-panel.tsx +517 -0
  791. package/src/components/ai/copilot.tsx +82 -0
  792. package/src/components/ai/index.ts +2 -0
  793. package/src/components/ai/stream-lazy.tsx +8 -0
  794. package/src/components/ai/stream.tsx +100 -0
  795. package/src/components/analytics/alfakit-analytics.tsx +27 -0
  796. package/src/components/analytics/breakdown.tsx +150 -0
  797. package/src/components/analytics/index.ts +2 -0
  798. package/src/components/cms/admin-bar.tsx +66 -0
  799. package/src/components/cms/blocks.tsx +474 -0
  800. package/src/components/cms/context.tsx +57 -0
  801. package/src/components/cms/head.tsx +47 -0
  802. package/src/components/cms/index.ts +23 -0
  803. package/src/components/cms/live-preview-lazy.tsx +8 -0
  804. package/src/components/cms/live-preview.tsx +339 -0
  805. package/src/components/cms/menu.tsx +246 -0
  806. package/src/components/cms/page.tsx +219 -0
  807. package/src/components/cms/parts.tsx +84 -0
  808. package/src/components/dev-tools/dev-tools-inspector.tsx +374 -0
  809. package/src/components/dev-tools/dev-tools-slot.tsx +28 -0
  810. package/src/components/entries/code-entry.tsx +73 -0
  811. package/src/components/entries/entry-wrapper.tsx +171 -0
  812. package/src/components/entries/index.ts +11 -0
  813. package/src/components/entries/other-entries.tsx +235 -0
  814. package/src/components/entries/repeatable-entry-table.tsx +50 -0
  815. package/src/components/entries/text-entry.tsx +264 -0
  816. package/src/components/entries/view-entry.tsx +27 -0
  817. package/src/components/fields/builder-picker.tsx +323 -0
  818. package/src/components/fields/builder.tsx +537 -0
  819. package/src/components/fields/checkbox-list.tsx +181 -0
  820. package/src/components/fields/checkbox.tsx +26 -0
  821. package/src/components/fields/code-editor-lazy.tsx +33 -0
  822. package/src/components/fields/code-editor.tsx +157 -0
  823. package/src/components/fields/code-tokens.ts +15 -0
  824. package/src/components/fields/color-picker.tsx +72 -0
  825. package/src/components/fields/date-picker.tsx +336 -0
  826. package/src/components/fields/file-upload.tsx +643 -0
  827. package/src/components/fields/hidden.tsx +8 -0
  828. package/src/components/fields/icon-picker-lazy.tsx +44 -0
  829. package/src/components/fields/icon-picker-value.tsx +46 -0
  830. package/src/components/fields/icon-picker.tsx +293 -0
  831. package/src/components/fields/image-editor-dialog-lazy.tsx +22 -0
  832. package/src/components/fields/image-editor-dialog.tsx +431 -0
  833. package/src/components/fields/index.ts +23 -0
  834. package/src/components/fields/item-actions.tsx +381 -0
  835. package/src/components/fields/key-value.tsx +218 -0
  836. package/src/components/fields/lazy-fields.tsx +30 -0
  837. package/src/components/fields/modal-table-select.tsx +519 -0
  838. package/src/components/fields/money-input.tsx +132 -0
  839. package/src/components/fields/one-time-code-input.tsx +56 -0
  840. package/src/components/fields/query-builder-rules.tsx +444 -0
  841. package/src/components/fields/radio.tsx +67 -0
  842. package/src/components/fields/repeater-table.tsx +185 -0
  843. package/src/components/fields/repeater.tsx +317 -0
  844. package/src/components/fields/rich-editor-extensions.tsx +470 -0
  845. package/src/components/fields/rich-editor-lazy.tsx +21 -0
  846. package/src/components/fields/rich-editor.tsx +815 -0
  847. package/src/components/fields/select.tsx +667 -0
  848. package/src/components/fields/slider.tsx +262 -0
  849. package/src/components/fields/tags-input.tsx +176 -0
  850. package/src/components/fields/text-input.tsx +179 -0
  851. package/src/components/fields/textarea.tsx +37 -0
  852. package/src/components/fields/toggle-buttons.tsx +125 -0
  853. package/src/components/fields/toggle.tsx +50 -0
  854. package/src/components/file-manager/file-manager-lazy.tsx +52 -0
  855. package/src/components/file-manager/file-manager.tsx +1857 -0
  856. package/src/components/file-manager/index.ts +2 -0
  857. package/src/components/file-manager/picker-field.tsx +169 -0
  858. package/src/components/form/form-block.tsx +237 -0
  859. package/src/components/form/form-context.tsx +95 -0
  860. package/src/components/helpdesk/chat-panel.tsx +247 -0
  861. package/src/components/helpdesk/chat-widget.tsx +107 -0
  862. package/src/components/helpdesk/inbox-lazy.tsx +42 -0
  863. package/src/components/helpdesk/inbox.tsx +745 -0
  864. package/src/components/helpdesk/index.ts +2 -0
  865. package/src/components/kanban/index.ts +1 -0
  866. package/src/components/kanban/kanban-lazy.tsx +34 -0
  867. package/src/components/kanban/kanban.tsx +788 -0
  868. package/src/components/layout/actions.tsx +48 -0
  869. package/src/components/layout/component-context.ts +31 -0
  870. package/src/components/layout/deferred.tsx +156 -0
  871. package/src/components/layout/elements.tsx +259 -0
  872. package/src/components/layout/fieldset.tsx +35 -0
  873. package/src/components/layout/fused-group.tsx +96 -0
  874. package/src/components/layout/grid.tsx +19 -0
  875. package/src/components/layout/index.ts +18 -0
  876. package/src/components/layout/mixed-content.tsx +59 -0
  877. package/src/components/layout/prime.tsx +168 -0
  878. package/src/components/layout/schema-children.tsx +30 -0
  879. package/src/components/layout/section.tsx +173 -0
  880. package/src/components/layout/tabs.tsx +129 -0
  881. package/src/components/layout/wizard.tsx +244 -0
  882. package/src/components/notifications/flash-toasts.tsx +200 -0
  883. package/src/components/notifications/index.ts +4 -0
  884. package/src/components/notifications/notifications-menu.tsx +262 -0
  885. package/src/components/notifications/realtime-notifications.tsx +40 -0
  886. package/src/components/notifications/undo-button.tsx +50 -0
  887. package/src/components/panel/app-sidebar.tsx +439 -0
  888. package/src/components/panel/bottom-nav.tsx +130 -0
  889. package/src/components/panel/debug-panel-slot.tsx +25 -0
  890. package/src/components/panel/debug-panel.tsx +412 -0
  891. package/src/components/panel/global-search-palette.tsx +387 -0
  892. package/src/components/panel/global-search.tsx +147 -0
  893. package/src/components/panel/impersonation-banner.tsx +47 -0
  894. package/src/components/panel/index.ts +16 -0
  895. package/src/components/panel/keyboard-shortcuts.tsx +134 -0
  896. package/src/components/panel/lazy-placeholder.tsx +39 -0
  897. package/src/components/panel/locale-switcher.tsx +144 -0
  898. package/src/components/panel/menu-item.tsx +89 -0
  899. package/src/components/panel/nav-label.tsx +34 -0
  900. package/src/components/panel/pwa.tsx +118 -0
  901. package/src/components/panel/schema-contract-guard.tsx +50 -0
  902. package/src/components/panel/shortcut-keys.tsx +34 -0
  903. package/src/components/panel/shortcuts-overlay.tsx +238 -0
  904. package/src/components/panel/slot.tsx +43 -0
  905. package/src/components/panel/sub-navigation.tsx +161 -0
  906. package/src/components/panel/tenant-menu.tsx +175 -0
  907. package/src/components/panel/theme-toggle.tsx +69 -0
  908. package/src/components/panel/topbar.tsx +81 -0
  909. package/src/components/panel/user-menu.tsx +166 -0
  910. package/src/components/realtime/conflict-banner.tsx +208 -0
  911. package/src/components/realtime/index.ts +3 -0
  912. package/src/components/realtime/live-records-pill.tsx +66 -0
  913. package/src/components/realtime/record-presence.tsx +98 -0
  914. package/src/components/schema/content-slot.tsx +81 -0
  915. package/src/components/schema/field-actions.tsx +67 -0
  916. package/src/components/schema/field-wrapper.tsx +246 -0
  917. package/src/components/schema/fused-group-context.ts +11 -0
  918. package/src/components/schema/schema-renderer.tsx +127 -0
  919. package/src/components/schema/translatable-field.tsx +113 -0
  920. package/src/components/schema/virtual-spacer.tsx +14 -0
  921. package/src/components/table/cells.tsx +712 -0
  922. package/src/components/table/column-manager.tsx +480 -0
  923. package/src/components/table/content-layout.tsx +368 -0
  924. package/src/components/table/filters.tsx +378 -0
  925. package/src/components/table/grouping.tsx +275 -0
  926. package/src/components/table/index.ts +9 -0
  927. package/src/components/table/list-tabs.tsx +144 -0
  928. package/src/components/table/pagination.tsx +335 -0
  929. package/src/components/table/record-cell.tsx +147 -0
  930. package/src/components/table/spreadsheet-lazy.tsx +14 -0
  931. package/src/components/table/spreadsheet.tsx +602 -0
  932. package/src/components/table/summary-rows.tsx +160 -0
  933. package/src/components/table/table-block.tsx +1112 -0
  934. package/src/components/table/table-views.tsx +460 -0
  935. package/src/components/table/trigger-button.tsx +92 -0
  936. package/src/components/translation-manager/index.ts +1 -0
  937. package/src/components/translation-manager/translation-manager-lazy.tsx +25 -0
  938. package/src/components/translation-manager/translation-manager.tsx +827 -0
  939. package/src/components/tree/index.ts +1 -0
  940. package/src/components/tree/tree-lazy.tsx +30 -0
  941. package/src/components/tree/tree.tsx +385 -0
  942. package/src/components/ui/alert.tsx +57 -0
  943. package/src/components/ui/avatar.tsx +38 -0
  944. package/src/components/ui/badge.tsx +33 -0
  945. package/src/components/ui/breadcrumb.tsx +110 -0
  946. package/src/components/ui/button.tsx +54 -0
  947. package/src/components/ui/calendar.tsx +65 -0
  948. package/src/components/ui/card.tsx +74 -0
  949. package/src/components/ui/checkbox.tsx +30 -0
  950. package/src/components/ui/collapsible.tsx +20 -0
  951. package/src/components/ui/command.tsx +158 -0
  952. package/src/components/ui/dialog.tsx +124 -0
  953. package/src/components/ui/dropdown-menu.tsx +217 -0
  954. package/src/components/ui/input.tsx +20 -0
  955. package/src/components/ui/label.tsx +18 -0
  956. package/src/components/ui/popover.tsx +39 -0
  957. package/src/components/ui/radio-group.tsx +36 -0
  958. package/src/components/ui/scroll-area.tsx +53 -0
  959. package/src/components/ui/select.tsx +165 -0
  960. package/src/components/ui/separator.tsx +25 -0
  961. package/src/components/ui/sheet.tsx +131 -0
  962. package/src/components/ui/sidebar.tsx +660 -0
  963. package/src/components/ui/skeleton.tsx +14 -0
  964. package/src/components/ui/sonner.tsx +43 -0
  965. package/src/components/ui/spinner.tsx +31 -0
  966. package/src/components/ui/switch.tsx +25 -0
  967. package/src/components/ui/table.tsx +89 -0
  968. package/src/components/ui/tabs.tsx +51 -0
  969. package/src/components/ui/textarea.tsx +17 -0
  970. package/src/components/ui/tooltip.tsx +50 -0
  971. package/src/components/versions/record-versions.tsx +162 -0
  972. package/src/components/widgets/calendar-lazy.tsx +31 -0
  973. package/src/components/widgets/calendar.tsx +124 -0
  974. package/src/components/widgets/chart-filters.tsx +114 -0
  975. package/src/components/widgets/chart-lazy.tsx +21 -0
  976. package/src/components/widgets/chart.tsx +252 -0
  977. package/src/components/widgets/dashboard-customizer.tsx +309 -0
  978. package/src/components/widgets/index.ts +5 -0
  979. package/src/components/widgets/stats-overview.tsx +185 -0
  980. package/src/components/widgets/widgets-block.tsx +102 -0
  981. package/src/context.tsx +187 -0
  982. package/src/create-alfakit.tsx +300 -0
  983. package/src/hooks/use-hydrated.ts +16 -0
  984. package/src/hooks/use-mobile.ts +29 -0
  985. package/src/hooks/use-store.ts +18 -0
  986. package/src/hooks/use-virtual-list.ts +88 -0
  987. package/src/index.ts +135 -0
  988. package/src/layouts/app-layout.tsx +128 -0
  989. package/src/layouts/auth-layout.tsx +66 -0
  990. package/src/layouts/blank-layout.tsx +5 -0
  991. package/src/layouts/fullscreen-layout.tsx +86 -0
  992. package/src/layouts/top-nav-layout.tsx +293 -0
  993. package/src/lib/attributes.ts +79 -0
  994. package/src/lib/colors.ts +151 -0
  995. package/src/lib/discovery.tsx +68 -0
  996. package/src/lib/icons.tsx +145 -0
  997. package/src/lib/lazy.tsx +89 -0
  998. package/src/lib/new-tab-hint.tsx +8 -0
  999. package/src/lib/utils.ts +6 -0
  1000. package/src/pages/page.tsx +463 -0
  1001. package/src/registry.ts +132 -0
  1002. package/src/server.tsx +68 -0
  1003. package/src/standalone/alfakit-component.tsx +222 -0
  1004. package/src/standalone/alfakit-toaster.tsx +52 -0
  1005. package/src/standalone/configure.ts +24 -0
  1006. package/src/standalone/index.ts +3 -0
  1007. package/src/standalone/runtime.ts +153 -0
  1008. package/src/starter-kit/index.ts +14 -0
  1009. package/src/starter-kit/navigation.ts +34 -0
  1010. package/src/starter-kit/starter-kit.tsx +196 -0
  1011. package/src/starter-kit/widgets-loaded.tsx +217 -0
  1012. package/src/starter-kit/widgets-triggers.tsx +103 -0
  1013. package/src/starter-kit/widgets.tsx +103 -0
  1014. package/src/styles.css +305 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.js","names":[],"sources":["../../../src/components/widgets/calendar.tsx"],"sourcesContent":["import type { CalendarWidgetSchema } from '@alfakit/core'\nimport { calendarIdentity, calendarOptions, clientErrorNotification } from '@alfakit/core'\nimport { Calendar, type CalendarOptions } from '@fullcalendar/core'\nimport dayGridPlugin from '@fullcalendar/daygrid'\nimport interactionPlugin from '@fullcalendar/interaction'\nimport listPlugin from '@fullcalendar/list'\nimport timeGridPlugin from '@fullcalendar/timegrid'\nimport { router } from '@inertiajs/react'\nimport { useEffect, useRef } from 'react'\nimport { useActionRunner, useDirection, useLocalization, useT } from '../../context'\nimport { usePageActionContext } from '../actions/action-context'\nimport { ActionList } from '../actions/action-list'\nimport { showToast } from '../notifications/flash-toasts'\nimport { Card, CardContent, CardHeader, CardTitle } from '../ui/card'\n\nconst plugins = [dayGridPlugin, timeGridPlugin, listPlugin, interactionPlugin]\n\n/**\n * The calendar widget (alfasix/alfakit-calendar, registry key `widget:calendar`). Events\n * are fetched for the visible range through the widget's actions; FullCalendar loads with\n * this component's own chunk.\n */\nexport function CalendarWidget({ widget }: { widget: CalendarWidgetSchema }) {\n const element = useRef<HTMLDivElement>(null)\n const calendar = useRef<Calendar | null>(null)\n const runner = useActionRunner()\n const page = usePageActionContext()\n const t = useT()\n const direction = useDirection()\n const localization = useLocalization()\n\n const env = {\n runner,\n token: page.token,\n t,\n locale: localization?.tag ?? 'en',\n direction,\n firstDayOfWeek: localization?.firstDayOfWeek ?? 0,\n visit: (url: string, newTab: boolean) =>\n newTab ? window.open(url, '_blank', 'noopener') : router.visit(url),\n notify: (notifications: Parameters<typeof showToast>[0][]) =>\n notifications.forEach((notification) => showToast(notification)),\n error: (message: string) =>\n showToast(clientErrorNotification(`calendar-${widget.id}`, message)),\n }\n // The callbacks always see the latest schema and context without recreating the calendar.\n const latest = useRef({ widget, env })\n\n useEffect(() => {\n latest.current = { widget, env }\n })\n\n const identity = calendarIdentity(widget, env)\n\n useEffect(() => {\n if (!element.current) {\n return\n }\n\n const options = calendarOptions(latest.current.widget, {\n ...latest.current.env,\n runner: {\n trigger: (...args) => latest.current.env.runner.trigger(...args),\n executeJson: (...args) => latest.current.env.runner.executeJson(...args),\n },\n })\n const instance = new Calendar(element.current, {\n ...(options as CalendarOptions),\n plugins,\n height: 'auto',\n })\n\n instance.render()\n calendar.current = instance\n\n return () => {\n instance.destroy()\n calendar.current = null\n }\n }, [identity])\n\n // A new schema (after an action ran, or a poll) brings fresh events.\n const first = useRef(true)\n\n useEffect(() => {\n if (first.current) {\n first.current = false\n\n return\n }\n\n calendar.current?.refetchEvents()\n }, [widget])\n\n return (\n <Card className=\"gap-4 py-4\" data-slot=\"calendar-widget\">\n {(widget.heading || widget.headerActions?.length) && (\n <CardHeader className=\"px-5\">\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n {widget.heading && <CardTitle className=\"text-base\">{widget.heading}</CardTitle>}\n {widget.headerActions && (\n <ActionList\n actions={widget.headerActions}\n context={{ token: page.token, component: `widget:${widget.id}` }}\n size=\"sm\"\n align=\"end\"\n className=\"ms-auto\"\n />\n )}\n </div>\n </CardHeader>\n )}\n <CardContent className=\"px-5\">\n <div\n ref={element}\n data-slot=\"calendar\"\n dir={direction}\n aria-label={widget.heading ?? t('calendar.label', {}, 'Calendar')}\n role=\"region\"\n />\n </CardContent>\n </Card>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAM,UAAU;CAAC;CAAe;CAAgB;CAAY;AAAiB;;;;;;AAO7E,SAAgB,eAAe,EAAE,UAA4C;CAC3E,MAAM,UAAU,OAAuB,IAAI;CAC3C,MAAM,WAAW,OAAwB,IAAI;CAC7C,MAAM,SAAS,gBAAgB;CAC/B,MAAM,OAAO,qBAAqB;CAClC,MAAM,IAAI,KAAK;CACf,MAAM,YAAY,aAAa;CAC/B,MAAM,eAAe,gBAAgB;CAErC,MAAM,MAAM;EACV;EACA,OAAO,KAAK;EACZ;EACA,QAAQ,cAAc,OAAO;EAC7B;EACA,gBAAgB,cAAc,kBAAkB;EAChD,QAAQ,KAAa,WACnB,SAAS,OAAO,KAAK,KAAK,UAAU,UAAU,IAAI,OAAO,MAAM,GAAG;EACpE,SAAS,kBACP,cAAc,SAAS,iBAAiB,UAAU,YAAY,CAAC;EACjE,QAAQ,YACN,UAAU,wBAAwB,YAAY,OAAO,MAAM,OAAO,CAAC;CACvE;CAEA,MAAM,SAAS,OAAO;EAAE;EAAQ;CAAI,CAAC;CAErC,gBAAgB;EACd,OAAO,UAAU;GAAE;GAAQ;EAAI;CACjC,CAAC;CAED,MAAM,WAAW,iBAAiB,QAAQ,GAAG;CAE7C,gBAAgB;EACd,IAAI,CAAC,QAAQ,SACX;EAGF,MAAM,UAAU,gBAAgB,OAAO,QAAQ,QAAQ;GACrD,GAAG,OAAO,QAAQ;GAClB,QAAQ;IACN,UAAU,GAAG,SAAS,OAAO,QAAQ,IAAI,OAAO,QAAQ,GAAG,IAAI;IAC/D,cAAc,GAAG,SAAS,OAAO,QAAQ,IAAI,OAAO,YAAY,GAAG,IAAI;GACzE;EACF,CAAC;EACD,MAAM,WAAW,IAAI,SAAS,QAAQ,SAAS;GAC7C,GAAI;GACJ;GACA,QAAQ;EACV,CAAC;EAED,SAAS,OAAO;EAChB,SAAS,UAAU;EAEnB,aAAa;GACX,SAAS,QAAQ;GACjB,SAAS,UAAU;EACrB;CACF,GAAG,CAAC,QAAQ,CAAC;CAGb,MAAM,QAAQ,OAAO,IAAI;CAEzB,gBAAgB;EACd,IAAI,MAAM,SAAS;GACjB,MAAM,UAAU;GAEhB;EACF;EAEA,SAAS,SAAS,cAAc;CAClC,GAAG,CAAC,MAAM,CAAC;CAEX,OACE,qBAAC,MAAD;EAAM,WAAU;EAAa,aAAU;EAAvC,UAAA,EACI,OAAO,WAAW,OAAO,eAAe,WACxC,oBAAC,YAAD;GAAY,WAAU;GACpB,UAAA,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACG,OAAO,WAAW,oBAAC,WAAD;KAAW,WAAU;KAAa,UAAA,OAAO;IAAmB,CAAA,GAC9E,OAAO,iBACN,oBAAC,YAAD;KACE,SAAS,OAAO;KAChB,SAAS;MAAE,OAAO,KAAK;MAAO,WAAW,UAAU,OAAO;KAAK;KAC/D,MAAK;KACL,OAAM;KACN,WAAU;IACX,CAAA,CAEA;;EACK,CAAA,GAEd,oBAAC,aAAD;GAAa,WAAU;GACrB,UAAA,oBAAC,OAAD;IACE,KAAK;IACL,aAAU;IACV,KAAK;IACL,cAAY,OAAO,WAAW,EAAE,kBAAkB,CAAC,GAAG,UAAU;IAChE,MAAK;GACN,CAAA;EACU,CAAA,CACT;;AAEV"}
@@ -0,0 +1,101 @@
1
+ import { useT } from "../../context.js";
2
+ import { Icon } from "../../lib/icons.js";
3
+ import { Button } from "../ui/button.js";
4
+ import { useStore } from "../../hooks/use-store.js";
5
+ import { FormProvider } from "../form/form-context.js";
6
+ import { SchemaRenderer } from "../schema/schema-renderer.js";
7
+ import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover.js";
8
+ import { TableTriggerButton } from "../table/trigger-button.js";
9
+ import { FormStore, chartFiltersUrl, resolvePartialProps, triggerButtonView } from "@alfakit/core";
10
+ import { router } from "@inertiajs/react";
11
+ import { useEffect, useMemo, useRef, useState } from "react";
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ import { FilterIcon } from "lucide-react";
14
+ //#region src/components/widgets/chart-filters.tsx
15
+ /**
16
+ * The `filtersSchema()` form of a chart widget, in a popover. Values live in the query
17
+ * string; the chart reloads on every change, or on "Apply" with deferred filters.
18
+ */
19
+ function ChartFilters({ form, widgetId }) {
20
+ const t = useT();
21
+ const [open, setOpen] = useState(false);
22
+ const store = useMemo(() => new FormStore(form, {
23
+ token: "",
24
+ component: `chartFilters:${widgetId}`
25
+ }), [form, widgetId]);
26
+ const state = useStore(store.store);
27
+ const applied = useRef(JSON.stringify(form.state));
28
+ useEffect(() => () => store.destroy(), [store]);
29
+ const apply = (values) => {
30
+ if (typeof window === "undefined") return;
31
+ applied.current = JSON.stringify(values ?? {});
32
+ router.visit(chartFiltersUrl(window.location.href, form.queryKey, widgetId, values), {
33
+ only: resolvePartialProps(["page"]),
34
+ preserveScroll: true,
35
+ preserveState: true,
36
+ replace: true
37
+ });
38
+ };
39
+ useEffect(() => {
40
+ if (form.deferred) return;
41
+ if (JSON.stringify(state.values) !== applied.current) apply(state.values);
42
+ }, [state.values, form.deferred]);
43
+ const resetView = triggerButtonView(form, "filtersReset", {
44
+ label: t("table.reset_filters", {}, "Reset"),
45
+ variant: "ghost"
46
+ });
47
+ const applyView = triggerButtonView(form, "filtersApply", {
48
+ label: t("table_filters.apply", {}, "Apply"),
49
+ variant: "default"
50
+ });
51
+ return /* @__PURE__ */ jsxs(Popover, {
52
+ open,
53
+ onOpenChange: setOpen,
54
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, {
55
+ asChild: true,
56
+ children: /* @__PURE__ */ jsx(Button, {
57
+ type: "button",
58
+ variant: "ghost",
59
+ size: "icon-sm",
60
+ "aria-label": t("table.filters", {}, "Filters"),
61
+ "data-slot": "chart-filters-trigger",
62
+ children: /* @__PURE__ */ jsx(Icon, {
63
+ name: "alfakit::widgets.chart.filter",
64
+ fallback: FilterIcon
65
+ })
66
+ })
67
+ }), /* @__PURE__ */ jsxs(PopoverContent, {
68
+ align: "end",
69
+ className: "flex w-80 flex-col gap-4",
70
+ "data-slot": "chart-filters",
71
+ children: [/* @__PURE__ */ jsx(FormProvider, {
72
+ store,
73
+ children: /* @__PURE__ */ jsx(SchemaRenderer, {
74
+ components: state.components,
75
+ columns: state.columns
76
+ })
77
+ }), /* @__PURE__ */ jsxs("div", {
78
+ className: "flex items-center justify-between gap-2",
79
+ children: [resetView ? /* @__PURE__ */ jsx(TableTriggerButton, {
80
+ view: resetView,
81
+ "data-slot": "chart-filters-reset",
82
+ onClick: () => {
83
+ apply(null);
84
+ setOpen(false);
85
+ }
86
+ }) : /* @__PURE__ */ jsx("span", {}), form.deferred && applyView && /* @__PURE__ */ jsx(TableTriggerButton, {
87
+ view: applyView,
88
+ "data-slot": "chart-filters-apply",
89
+ onClick: () => {
90
+ apply(state.values);
91
+ setOpen(false);
92
+ }
93
+ })]
94
+ })]
95
+ })]
96
+ });
97
+ }
98
+ //#endregion
99
+ export { ChartFilters };
100
+
101
+ //# sourceMappingURL=chart-filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-filters.js","names":[],"sources":["../../../src/components/widgets/chart-filters.tsx"],"sourcesContent":["import type { ChartFiltersFormSchema } from '@alfakit/core'\nimport { FormStore, chartFiltersUrl, resolvePartialProps, triggerButtonView } from '@alfakit/core'\nimport { router } from '@inertiajs/react'\nimport { FilterIcon } from 'lucide-react'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { useT } from '../../context'\nimport { useStore } from '../../hooks/use-store'\nimport { Icon } from '../../lib/icons'\nimport { FormProvider } from '../form/form-context'\nimport { SchemaRenderer } from '../schema/schema-renderer'\nimport { TableTriggerButton } from '../table/trigger-button'\nimport { Button } from '../ui/button'\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover'\n\n/**\n * The `filtersSchema()` form of a chart widget, in a popover. Values live in the query\n * string; the chart reloads on every change, or on \"Apply\" with deferred filters.\n */\nexport function ChartFilters({\n form,\n widgetId,\n}: {\n form: ChartFiltersFormSchema\n widgetId: string\n}) {\n const t = useT()\n const [open, setOpen] = useState(false)\n // A fresh store per server state: the filters the chart was drawn with.\n const store = useMemo(\n () => new FormStore(form, { token: '', component: `chartFilters:${widgetId}` }),\n [form, widgetId],\n )\n const state = useStore(store.store)\n const applied = useRef(JSON.stringify(form.state))\n\n useEffect(() => () => store.destroy(), [store])\n\n const apply = (values: Record<string, unknown> | null) => {\n if (typeof window === 'undefined') return\n\n applied.current = JSON.stringify(values ?? {})\n router.visit(chartFiltersUrl(window.location.href, form.queryKey, widgetId, values), {\n only: resolvePartialProps(['page']),\n preserveScroll: true,\n preserveState: true,\n replace: true,\n })\n }\n\n // Live filters apply as the user changes them.\n useEffect(() => {\n if (form.deferred) return\n\n const values = JSON.stringify(state.values)\n\n if (values !== applied.current) apply(state.values)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.values, form.deferred])\n\n // `filtersResetAction()` / `filtersApplyAction()` restyle the buttons.\n const resetView = triggerButtonView(form, 'filtersReset', {\n label: t('table.reset_filters', {}, 'Reset'),\n variant: 'ghost',\n })\n const applyView = triggerButtonView(form, 'filtersApply', {\n label: t('table_filters.apply', {}, 'Apply'),\n variant: 'default',\n })\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={t('table.filters', {}, 'Filters')}\n data-slot=\"chart-filters-trigger\"\n >\n <Icon name=\"alfakit::widgets.chart.filter\" fallback={FilterIcon} />\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"end\" className=\"flex w-80 flex-col gap-4\" data-slot=\"chart-filters\">\n <FormProvider store={store}>\n <SchemaRenderer components={state.components} columns={state.columns} />\n </FormProvider>\n <div className=\"flex items-center justify-between gap-2\">\n {resetView ? (\n <TableTriggerButton\n view={resetView}\n data-slot=\"chart-filters-reset\"\n onClick={() => {\n apply(null)\n setOpen(false)\n }}\n />\n ) : (\n <span />\n )}\n {form.deferred && applyView && (\n <TableTriggerButton\n view={applyView}\n data-slot=\"chart-filters-apply\"\n onClick={() => {\n apply(state.values)\n setOpen(false)\n }}\n />\n )}\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,SAAgB,aAAa,EAC3B,MACA,YAIC;CACD,MAAM,IAAI,KAAK;CACf,MAAM,CAAC,MAAM,WAAW,SAAS,KAAK;CAEtC,MAAM,QAAQ,cACN,IAAI,UAAU,MAAM;EAAE,OAAO;EAAI,WAAW,gBAAgB;CAAW,CAAC,GAC9E,CAAC,MAAM,QAAQ,CACjB;CACA,MAAM,QAAQ,SAAS,MAAM,KAAK;CAClC,MAAM,UAAU,OAAO,KAAK,UAAU,KAAK,KAAK,CAAC;CAEjD,sBAAsB,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC;CAE9C,MAAM,SAAS,WAA2C;EACxD,IAAI,OAAO,WAAW,aAAa;EAEnC,QAAQ,UAAU,KAAK,UAAU,UAAU,CAAC,CAAC;EAC7C,OAAO,MAAM,gBAAgB,OAAO,SAAS,MAAM,KAAK,UAAU,UAAU,MAAM,GAAG;GACnF,MAAM,oBAAoB,CAAC,MAAM,CAAC;GAClC,gBAAgB;GAChB,eAAe;GACf,SAAS;EACX,CAAC;CACH;CAGA,gBAAgB;EACd,IAAI,KAAK,UAAU;EAInB,IAFe,KAAK,UAAU,MAAM,MAE3B,MAAM,QAAQ,SAAS,MAAM,MAAM,MAAM;CAEpD,GAAG,CAAC,MAAM,QAAQ,KAAK,QAAQ,CAAC;CAGhC,MAAM,YAAY,kBAAkB,MAAM,gBAAgB;EACxD,OAAO,EAAE,uBAAuB,CAAC,GAAG,OAAO;EAC3C,SAAS;CACX,CAAC;CACD,MAAM,YAAY,kBAAkB,MAAM,gBAAgB;EACxD,OAAO,EAAE,uBAAuB,CAAC,GAAG,OAAO;EAC3C,SAAS;CACX,CAAC;CAED,OACE,qBAAC,SAAD;EAAe;EAAM,cAAc;EAAnC,UAAA,CACE,oBAAC,gBAAD;GAAgB,SAAA;GACd,UAAA,oBAAC,QAAD;IACE,MAAK;IACL,SAAQ;IACR,MAAK;IACL,cAAY,EAAE,iBAAiB,CAAC,GAAG,SAAS;IAC5C,aAAU;IAEV,UAAA,oBAAC,MAAD;KAAM,MAAK;KAAgC,UAAU;IAAa,CAAA;GAC5D,CAAA;EACM,CAAA,GAChB,qBAAC,gBAAD;GAAgB,OAAM;GAAM,WAAU;GAA2B,aAAU;GAA3E,UAAA,CACE,oBAAC,cAAD;IAAqB;IACnB,UAAA,oBAAC,gBAAD;KAAgB,YAAY,MAAM;KAAY,SAAS,MAAM;IAAU,CAAA;GAC3D,CAAA,GACd,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACG,YACC,oBAAC,oBAAD;KACE,MAAM;KACN,aAAU;KACV,eAAe;MACb,MAAM,IAAI;MACV,QAAQ,KAAK;KACf;IACD,CAAA,IAED,oBAAC,QAAD,CAAO,CAAA,GAER,KAAK,YAAY,aAChB,oBAAC,oBAAD;KACE,MAAM;KACN,aAAU;KACV,eAAe;MACb,MAAM,MAAM,MAAM;MAClB,QAAQ,KAAK;KACf;IACD,CAAA,CAEA;GACS,CAAA,CAAA;EACT,CAAA,CAAA;;AAEb"}
@@ -0,0 +1,9 @@
1
+ import { LazyComponent } from "../../lib/lazy.js";
2
+ import { ChartWidgetSchema } from "@alfakit/core";
3
+ //#region src/components/widgets/chart-lazy.d.ts
4
+ /** The chart widget; Chart.js loads the first time a chart is shown. */
5
+ export declare const ChartWidget: LazyComponent<{
6
+ widget: ChartWidgetSchema;
7
+ }>;
8
+ //#endregion
9
+ //# sourceMappingURL=chart-lazy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-lazy.d.ts","names":["_$______lib_lazy0.LazyComponent"],"sources":["../../../src/components/widgets/chart-lazy.tsx"],"mappings":";;;;qBAiBa,aAAsCA;EAAA,QAAA"}
@@ -0,0 +1,27 @@
1
+ import { lazyComponent } from "../../lib/lazy.js";
2
+ import { Card, CardContent } from "../ui/card.js";
3
+ import { Skeleton } from "../ui/skeleton.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/components/widgets/chart-lazy.tsx
6
+ function ChartSkeleton({ widget }) {
7
+ return /* @__PURE__ */ jsx(Card, {
8
+ className: "gap-4 py-4",
9
+ "aria-busy": "true",
10
+ children: /* @__PURE__ */ jsxs(CardContent, {
11
+ className: "flex flex-col gap-4 px-5",
12
+ children: [widget.heading && /* @__PURE__ */ jsx(Skeleton, {
13
+ className: "h-5 w-1/3",
14
+ "aria-hidden": "true"
15
+ }), /* @__PURE__ */ jsx(Skeleton, {
16
+ style: { height: widget.maxHeight ?? "18rem" },
17
+ "aria-hidden": "true"
18
+ })]
19
+ })
20
+ });
21
+ }
22
+ /** The chart widget; Chart.js loads the first time a chart is shown. */
23
+ const ChartWidget = lazyComponent(() => import("./chart.js").then((module) => module.ChartWidget), (props) => /* @__PURE__ */ jsx(ChartSkeleton, { ...props }));
24
+ //#endregion
25
+ export { ChartWidget };
26
+
27
+ //# sourceMappingURL=chart-lazy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-lazy.js","names":[],"sources":["../../../src/components/widgets/chart-lazy.tsx"],"sourcesContent":["import type { ChartWidgetSchema } from '@alfakit/core'\nimport { lazyComponent } from '../../lib/lazy'\nimport { Card, CardContent } from '../ui/card'\nimport { Skeleton } from '../ui/skeleton'\n\nfunction ChartSkeleton({ widget }: { widget: ChartWidgetSchema }) {\n return (\n <Card className=\"gap-4 py-4\" aria-busy=\"true\">\n <CardContent className=\"flex flex-col gap-4 px-5\">\n {widget.heading && <Skeleton className=\"h-5 w-1/3\" aria-hidden=\"true\" />}\n <Skeleton style={{ height: widget.maxHeight ?? '18rem' }} aria-hidden=\"true\" />\n </CardContent>\n </Card>\n )\n}\n\n/** The chart widget; Chart.js loads the first time a chart is shown. */\nexport const ChartWidget = lazyComponent<{ widget: ChartWidgetSchema }>(\n () => import('./chart').then((module) => module.ChartWidget),\n (props) => <ChartSkeleton {...props} />,\n)\n"],"mappings":";;;;;AAKA,SAAS,cAAc,EAAE,UAAyC;CAChE,OACE,oBAAC,MAAD;EAAM,WAAU;EAAa,aAAU;EACrC,UAAA,qBAAC,aAAD;GAAa,WAAU;GAAvB,UAAA,CACG,OAAO,WAAW,oBAAC,UAAD;IAAU,WAAU;IAAY,eAAY;GAAQ,CAAA,GACvE,oBAAC,UAAD;IAAU,OAAO,EAAE,QAAQ,OAAO,aAAa,QAAQ;IAAG,eAAY;GAAQ,CAAA,CACnE;;CACT,CAAA;AAEV;;AAGA,MAAa,cAAc,oBACnB,OAAO,aAAU,CAAC,MAAM,WAAW,OAAO,WAAW,IAC1D,UAAU,oBAAC,eAAD,EAAe,GAAI,MAAQ,CAAA,CACxC"}
@@ -0,0 +1,216 @@
1
+ import { useDirection, useLocalization, usePollComponent, useRegistry, useT } from "../../context.js";
2
+ import { usePageActionContext } from "../actions/action-context.js";
3
+ import { cn } from "../../lib/utils.js";
4
+ import { cssColor } from "../../lib/colors.js";
5
+ import { Icon } from "../../lib/icons.js";
6
+ import { Button } from "../ui/button.js";
7
+ import { ActionList } from "../actions/action-list.js";
8
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../ui/card.js";
9
+ import { useLiveUpdates } from "../realtime/live-records-pill.js";
10
+ import { ChartFilters } from "./chart-filters.js";
11
+ import { buildChartConfig, getChartPlugins, observeThemeChanges, resolvePartialProps, widgetPollTarget } from "@alfakit/core";
12
+ import { router } from "@inertiajs/react";
13
+ import { createElement, useEffect, useId, useMemo, useRef, useState } from "react";
14
+ import { jsx, jsxs } from "react/jsx-runtime";
15
+ import { ChartColumnIcon, ChevronDownIcon } from "lucide-react";
16
+ import { Chart, registerables } from "chart.js";
17
+ //#region src/components/widgets/chart.tsx
18
+ Chart.register(...registerables);
19
+ function ChartWidget({ widget }) {
20
+ const t = useT();
21
+ const canvas = useRef(null);
22
+ const chart = useRef(null);
23
+ const chartType = useRef(null);
24
+ const rtl = useDirection() === "rtl";
25
+ const locale = useLocalization()?.tag ?? "en";
26
+ const [themeVersion, setThemeVersion] = useState(0);
27
+ useEffect(() => observeThemeChanges(() => setThemeVersion((version) => version + 1)), []);
28
+ const config = useMemo(() => {
29
+ return buildChartConfig({
30
+ type: widget.chartType,
31
+ data: widget.data,
32
+ options: widget.options,
33
+ rtl,
34
+ locale,
35
+ color: widget.color
36
+ });
37
+ }, [
38
+ widget.chartType,
39
+ widget.data,
40
+ widget.options,
41
+ widget.color,
42
+ rtl,
43
+ locale,
44
+ themeVersion
45
+ ]);
46
+ const [collapsed, setCollapsed] = useState(false);
47
+ const bodyId = useId();
48
+ const showChart = !widget.empty && !collapsed;
49
+ useEffect(() => {
50
+ if (!canvas.current) {
51
+ chart.current?.destroy();
52
+ chart.current = null;
53
+ return;
54
+ }
55
+ const instance = chart.current;
56
+ if (instance && chartType.current === config.type) {
57
+ instance.data = config.data;
58
+ instance.options = config.options ?? {};
59
+ instance.update();
60
+ return;
61
+ }
62
+ instance?.destroy();
63
+ const plugins = getChartPlugins();
64
+ if (plugins.length > 0) Chart.register(...plugins);
65
+ chart.current = new Chart(canvas.current, config);
66
+ chartType.current = config.type;
67
+ }, [config, showChart]);
68
+ useEffect(() => () => {
69
+ chart.current?.destroy();
70
+ chart.current = null;
71
+ }, []);
72
+ const pollTarget = widgetPollTarget(widget);
73
+ const pollComponent = usePollComponent();
74
+ useEffect(() => pollComponent(pollTarget, widget.pollingInterval), [
75
+ pollComponent,
76
+ pollTarget,
77
+ widget.pollingInterval
78
+ ]);
79
+ useLiveUpdates(widget.live, pollTarget, { polling: Boolean(widget.pollingInterval) });
80
+ const setFilter = (value) => {
81
+ const url = new URL(window.location.href);
82
+ url.searchParams.set(`widgetFilters[${widget.id}]`, value);
83
+ router.visit(url.toString(), {
84
+ only: resolvePartialProps(["page"]),
85
+ preserveScroll: true,
86
+ preserveState: true,
87
+ replace: true
88
+ });
89
+ };
90
+ const hasHeader = widget.heading || widget.description || widget.filters || widget.filtersForm || widget.collapsible;
91
+ return /* @__PURE__ */ jsxs(Card, {
92
+ className: "gap-4 py-4",
93
+ "data-chart-type": widget.chartType,
94
+ children: [hasHeader && /* @__PURE__ */ jsx(CardHeader, {
95
+ className: "px-5",
96
+ children: /* @__PURE__ */ jsxs("div", {
97
+ className: "flex items-start justify-between gap-3",
98
+ children: [/* @__PURE__ */ jsxs("div", {
99
+ className: "min-w-0",
100
+ children: [widget.heading && /* @__PURE__ */ jsx(CardTitle, {
101
+ className: "text-base",
102
+ children: widget.heading
103
+ }), widget.description && /* @__PURE__ */ jsx(CardDescription, { children: widget.description })]
104
+ }), /* @__PURE__ */ jsxs("div", {
105
+ className: "flex shrink-0 items-center gap-1",
106
+ children: [
107
+ widget.filters && /* @__PURE__ */ jsx("select", {
108
+ value: widget.filter ?? "",
109
+ onChange: (event) => setFilter(event.target.value),
110
+ "aria-label": t("chart_filter", {}, "Chart filter"),
111
+ className: "border-input h-8 rounded-md border bg-transparent px-2 text-sm",
112
+ children: widget.filters.map((filter) => /* @__PURE__ */ jsx("option", {
113
+ value: filter.value,
114
+ children: filter.label
115
+ }, filter.value))
116
+ }),
117
+ widget.filtersForm && /* @__PURE__ */ jsx(ChartFilters, {
118
+ form: widget.filtersForm,
119
+ widgetId: widget.id
120
+ }),
121
+ widget.collapsible && /* @__PURE__ */ jsx(Button, {
122
+ type: "button",
123
+ variant: "ghost",
124
+ size: "icon-sm",
125
+ "aria-expanded": !collapsed,
126
+ "aria-controls": bodyId,
127
+ "aria-label": t("toggle_section", {}, "Toggle section"),
128
+ onClick: () => setCollapsed((value) => !value),
129
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("transition-transform", collapsed && "-rotate-90 rtl:rotate-90") })
130
+ })
131
+ ]
132
+ })]
133
+ })
134
+ }), !collapsed && /* @__PURE__ */ jsx(CardContent, {
135
+ id: bodyId,
136
+ className: "px-5",
137
+ children: widget.empty ? /* @__PURE__ */ jsx(ChartEmptyState, { widget }) : /* @__PURE__ */ jsxs("div", {
138
+ "data-slot": "chart-canvas",
139
+ style: {
140
+ height: widget.maxHeight ?? "18rem",
141
+ color: cssColor("gray")
142
+ },
143
+ children: [/* @__PURE__ */ jsx("canvas", {
144
+ ref: canvas,
145
+ role: "img",
146
+ "aria-label": widget.heading ?? t("chart", {}, "Chart"),
147
+ "aria-describedby": widget.assistiveContent ? `${bodyId}-assistive` : void 0
148
+ }), widget.assistiveContent && /* @__PURE__ */ jsx("div", {
149
+ id: `${bodyId}-assistive`,
150
+ className: "sr-only",
151
+ "data-slot": "chart-assistive-content",
152
+ dangerouslySetInnerHTML: { __html: widget.assistiveContent }
153
+ })]
154
+ })
155
+ })]
156
+ });
157
+ }
158
+ /**
159
+ * Shown when `getData()` returns nothing: a registered `$emptyStateView` component, or the
160
+ * icon, texts and `getEmptyStateActions()` (run through the widget, `widget:<id>`).
161
+ */
162
+ function ChartEmptyState({ widget }) {
163
+ const t = useT();
164
+ const registry = useRegistry();
165
+ const page = usePageActionContext();
166
+ const state = widget.emptyState;
167
+ const View = state?.view ? registry.resolve(state.view) : void 0;
168
+ const minHeight = widget.maxHeight ?? "18rem";
169
+ if (View) return /* @__PURE__ */ jsx("div", {
170
+ "data-slot": "chart-empty-state",
171
+ style: { minHeight },
172
+ children: createElement(View, {
173
+ ...state?.viewData ?? {},
174
+ widget
175
+ })
176
+ });
177
+ return /* @__PURE__ */ jsxs("div", {
178
+ "data-slot": "chart-empty-state",
179
+ className: "flex flex-col items-center justify-center gap-2 py-10 text-center",
180
+ style: { minHeight },
181
+ children: [
182
+ /* @__PURE__ */ jsx("div", {
183
+ className: "bg-muted text-muted-foreground flex size-10 items-center justify-center rounded-full",
184
+ children: state?.icon ? /* @__PURE__ */ jsx(Icon, {
185
+ name: state.icon,
186
+ className: "size-5"
187
+ }) : /* @__PURE__ */ jsx(Icon, {
188
+ name: "alfakit::widgets.chart.empty-state",
189
+ fallback: ChartColumnIcon,
190
+ className: "size-5"
191
+ })
192
+ }),
193
+ /* @__PURE__ */ jsx("p", {
194
+ className: "text-sm font-medium",
195
+ children: state?.heading ?? t("chart_empty", {}, "No data to show")
196
+ }),
197
+ state?.description && /* @__PURE__ */ jsx("p", {
198
+ className: "text-muted-foreground text-sm",
199
+ children: state.description
200
+ }),
201
+ state?.actions && state.actions.length > 0 && /* @__PURE__ */ jsx(ActionList, {
202
+ actions: state.actions,
203
+ context: {
204
+ token: page.token,
205
+ component: `widget:${widget.id}`
206
+ },
207
+ size: "sm",
208
+ className: "mt-2 justify-center"
209
+ })
210
+ ]
211
+ });
212
+ }
213
+ //#endregion
214
+ export { ChartWidget };
215
+
216
+ //# sourceMappingURL=chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.js","names":[],"sources":["../../../src/components/widgets/chart.tsx"],"sourcesContent":["import type { ChartWidgetSchema } from '@alfakit/core'\nimport {\n buildChartConfig,\n getChartPlugins,\n observeThemeChanges,\n resolvePartialProps,\n widgetPollTarget,\n} from '@alfakit/core'\nimport { router } from '@inertiajs/react'\nimport { Chart, registerables, type ChartConfiguration, type Plugin } from 'chart.js'\nimport { ChartColumnIcon, ChevronDownIcon } from 'lucide-react'\nimport { createElement, useEffect, useId, useMemo, useRef, useState } from 'react'\nimport { useDirection, useLocalization, usePollComponent, useRegistry, useT } from '../../context'\nimport { cssColor } from '../../lib/colors'\nimport { Icon } from '../../lib/icons'\nimport { cn } from '../../lib/utils'\nimport { usePageActionContext } from '../actions/action-context'\nimport { ActionList } from '../actions/action-list'\nimport { useLiveUpdates } from '../realtime/live-records-pill'\nimport { Button } from '../ui/button'\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../ui/card'\nimport { ChartFilters } from './chart-filters'\n\nChart.register(...registerables)\n\nexport function ChartWidget({ widget }: { widget: ChartWidgetSchema }) {\n const t = useT()\n const canvas = useRef<HTMLCanvasElement>(null)\n const chart = useRef<Chart | null>(null)\n const chartType = useRef<string | null>(null)\n const rtl = useDirection() === 'rtl'\n const locale = useLocalization()?.tag ?? 'en'\n // Bumped when the theme or dark mode changes so colours are re-read from CSS.\n const [themeVersion, setThemeVersion] = useState(0)\n\n useEffect(() => observeThemeChanges(() => setThemeVersion((version) => version + 1)), [])\n\n const config = useMemo(() => {\n void themeVersion\n\n return buildChartConfig({\n type: widget.chartType,\n data: widget.data,\n options: widget.options,\n rtl,\n locale,\n color: widget.color,\n }) as unknown as ChartConfiguration\n }, [widget.chartType, widget.data, widget.options, widget.color, rtl, locale, themeVersion])\n const [collapsed, setCollapsed] = useState(false)\n const bodyId = useId()\n // The canvas only exists while the chart is shown (not empty, not collapsed).\n const showChart = !widget.empty && !collapsed\n\n // Polling, theme, direction and locale changes update the chart in place; it is only\n // re-created when its type changes.\n useEffect(() => {\n if (!canvas.current) {\n chart.current?.destroy()\n chart.current = null\n\n return\n }\n\n const instance = chart.current\n\n if (instance && chartType.current === config.type) {\n instance.data = config.data\n instance.options = config.options ?? {}\n instance.update()\n\n return\n }\n\n instance?.destroy()\n // `createAlfakit({ chartPlugins })`, registered before the chart is drawn.\n const plugins = getChartPlugins() as Plugin[]\n\n if (plugins.length > 0) Chart.register(...plugins)\n\n chart.current = new Chart(canvas.current, config)\n chartType.current = config.type\n }, [config, showChart])\n\n useEffect(\n () => () => {\n chart.current?.destroy()\n chart.current = null\n },\n [],\n )\n\n // Polls refresh only this widget, share one request with other components on the same\n // interval and pause while the tab is hidden.\n const pollTarget = widgetPollTarget(widget)\n const pollComponent = usePollComponent()\n\n useEffect(\n () => pollComponent(pollTarget, widget.pollingInterval),\n [pollComponent, pollTarget, widget.pollingInterval],\n )\n\n // `live()`: refresh when the followed records change (broadcast), else poll as a fallback.\n useLiveUpdates(widget.live, pollTarget, { polling: Boolean(widget.pollingInterval) })\n\n const setFilter = (value: string) => {\n const url = new URL(window.location.href)\n url.searchParams.set(`widgetFilters[${widget.id}]`, value)\n router.visit(url.toString(), {\n only: resolvePartialProps(['page']),\n preserveScroll: true,\n preserveState: true,\n replace: true,\n })\n }\n\n const hasHeader =\n widget.heading ||\n widget.description ||\n widget.filters ||\n widget.filtersForm ||\n widget.collapsible\n\n return (\n <Card className=\"gap-4 py-4\" data-chart-type={widget.chartType}>\n {hasHeader && (\n <CardHeader className=\"px-5\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n {widget.heading && <CardTitle className=\"text-base\">{widget.heading}</CardTitle>}\n {widget.description && <CardDescription>{widget.description}</CardDescription>}\n </div>\n <div className=\"flex shrink-0 items-center gap-1\">\n {widget.filters && (\n <select\n value={widget.filter ?? ''}\n onChange={(event) => setFilter(event.target.value)}\n aria-label={t('chart_filter', {}, 'Chart filter')}\n className=\"border-input h-8 rounded-md border bg-transparent px-2 text-sm\"\n >\n {widget.filters.map((filter) => (\n <option key={filter.value} value={filter.value}>\n {filter.label}\n </option>\n ))}\n </select>\n )}\n {widget.filtersForm && (\n <ChartFilters form={widget.filtersForm} widgetId={widget.id} />\n )}\n {widget.collapsible && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-expanded={!collapsed}\n aria-controls={bodyId}\n aria-label={t('toggle_section', {}, 'Toggle section')}\n onClick={() => setCollapsed((value) => !value)}\n >\n <ChevronDownIcon\n className={cn('transition-transform', collapsed && '-rotate-90 rtl:rotate-90')}\n />\n </Button>\n )}\n </div>\n </div>\n </CardHeader>\n )}\n {!collapsed && (\n <CardContent id={bodyId} className=\"px-5\">\n {widget.empty ? (\n <ChartEmptyState widget={widget} />\n ) : (\n <div\n data-slot=\"chart-canvas\"\n style={{ height: widget.maxHeight ?? '18rem', color: cssColor('gray') }}\n >\n <canvas\n ref={canvas}\n role=\"img\"\n aria-label={widget.heading ?? t('chart', {}, 'Chart')}\n aria-describedby={widget.assistiveContent ? `${bodyId}-assistive` : undefined}\n />\n {widget.assistiveContent && (\n <div\n id={`${bodyId}-assistive`}\n className=\"sr-only\"\n data-slot=\"chart-assistive-content\"\n dangerouslySetInnerHTML={{ __html: widget.assistiveContent }}\n />\n )}\n </div>\n )}\n </CardContent>\n )}\n </Card>\n )\n}\n\n/**\n * Shown when `getData()` returns nothing: a registered `$emptyStateView` component, or the\n * icon, texts and `getEmptyStateActions()` (run through the widget, `widget:<id>`).\n */\nfunction ChartEmptyState({ widget }: { widget: ChartWidgetSchema }) {\n const t = useT()\n const registry = useRegistry()\n const page = usePageActionContext()\n const state = widget.emptyState\n const View = state?.view ? registry.resolve(state.view) : undefined\n const minHeight = widget.maxHeight ?? '18rem'\n\n if (View) {\n return (\n <div data-slot=\"chart-empty-state\" style={{ minHeight }}>\n {createElement(View, { ...(state?.viewData ?? {}), widget })}\n </div>\n )\n }\n\n return (\n <div\n data-slot=\"chart-empty-state\"\n className=\"flex flex-col items-center justify-center gap-2 py-10 text-center\"\n style={{ minHeight }}\n >\n <div className=\"bg-muted text-muted-foreground flex size-10 items-center justify-center rounded-full\">\n {state?.icon ? (\n <Icon name={state.icon} className=\"size-5\" />\n ) : (\n <Icon\n name=\"alfakit::widgets.chart.empty-state\"\n fallback={ChartColumnIcon}\n className=\"size-5\"\n />\n )}\n </div>\n <p className=\"text-sm font-medium\">\n {state?.heading ?? t('chart_empty', {}, 'No data to show')}\n </p>\n {state?.description && <p className=\"text-muted-foreground text-sm\">{state.description}</p>}\n {state?.actions && state.actions.length > 0 && (\n <ActionList\n actions={state.actions}\n context={{ token: page.token, component: `widget:${widget.id}` }}\n size=\"sm\"\n className=\"mt-2 justify-center\"\n />\n )}\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAuBA,MAAM,SAAS,GAAG,aAAa;AAE/B,SAAgB,YAAY,EAAE,UAAyC;CACrE,MAAM,IAAI,KAAK;CACf,MAAM,SAAS,OAA0B,IAAI;CAC7C,MAAM,QAAQ,OAAqB,IAAI;CACvC,MAAM,YAAY,OAAsB,IAAI;CAC5C,MAAM,MAAM,aAAa,MAAM;CAC/B,MAAM,SAAS,gBAAgB,CAAC,EAAE,OAAO;CAEzC,MAAM,CAAC,cAAc,mBAAmB,SAAS,CAAC;CAElD,gBAAgB,0BAA0B,iBAAiB,YAAY,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;CAExF,MAAM,SAAS,cAAc;EAG3B,OAAO,iBAAiB;GACtB,MAAM,OAAO;GACb,MAAM,OAAO;GACb,SAAS,OAAO;GAChB;GACA;GACA,OAAO,OAAO;EAChB,CAAC;CACH,GAAG;EAAC,OAAO;EAAW,OAAO;EAAM,OAAO;EAAS,OAAO;EAAO;EAAK;EAAQ;CAAY,CAAC;CAC3F,MAAM,CAAC,WAAW,gBAAgB,SAAS,KAAK;CAChD,MAAM,SAAS,MAAM;CAErB,MAAM,YAAY,CAAC,OAAO,SAAS,CAAC;CAIpC,gBAAgB;EACd,IAAI,CAAC,OAAO,SAAS;GACnB,MAAM,SAAS,QAAQ;GACvB,MAAM,UAAU;GAEhB;EACF;EAEA,MAAM,WAAW,MAAM;EAEvB,IAAI,YAAY,UAAU,YAAY,OAAO,MAAM;GACjD,SAAS,OAAO,OAAO;GACvB,SAAS,UAAU,OAAO,WAAW,CAAC;GACtC,SAAS,OAAO;GAEhB;EACF;EAEA,UAAU,QAAQ;EAElB,MAAM,UAAU,gBAAgB;EAEhC,IAAI,QAAQ,SAAS,GAAG,MAAM,SAAS,GAAG,OAAO;EAEjD,MAAM,UAAU,IAAI,MAAM,OAAO,SAAS,MAAM;EAChD,UAAU,UAAU,OAAO;CAC7B,GAAG,CAAC,QAAQ,SAAS,CAAC;CAEtB,sBACc;EACV,MAAM,SAAS,QAAQ;EACvB,MAAM,UAAU;CAClB,GACA,CAAC,CACH;CAIA,MAAM,aAAa,iBAAiB,MAAM;CAC1C,MAAM,gBAAgB,iBAAiB;CAEvC,gBACQ,cAAc,YAAY,OAAO,eAAe,GACtD;EAAC;EAAe;EAAY,OAAO;CAAe,CACpD;CAGA,eAAe,OAAO,MAAM,YAAY,EAAE,SAAS,QAAQ,OAAO,eAAe,EAAE,CAAC;CAEpF,MAAM,aAAa,UAAkB;EACnC,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,IAAI;EACxC,IAAI,aAAa,IAAI,iBAAiB,OAAO,GAAG,IAAI,KAAK;EACzD,OAAO,MAAM,IAAI,SAAS,GAAG;GAC3B,MAAM,oBAAoB,CAAC,MAAM,CAAC;GAClC,gBAAgB;GAChB,eAAe;GACf,SAAS;EACX,CAAC;CACH;CAEA,MAAM,YACJ,OAAO,WACP,OAAO,eACP,OAAO,WACP,OAAO,eACP,OAAO;CAET,OACE,qBAAC,MAAD;EAAM,WAAU;EAAa,mBAAiB,OAAO;EAArD,UAAA,CACG,aACC,oBAAC,YAAD;GAAY,WAAU;GACpB,UAAA,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACG,OAAO,WAAW,oBAAC,WAAD;MAAW,WAAU;MAAa,UAAA,OAAO;KAAmB,CAAA,GAC9E,OAAO,eAAe,oBAAC,iBAAD,EAAA,UAAkB,OAAO,YAA6B,CAAA,CAC1E;IACL,CAAA,GAAA,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACG,OAAO,WACN,oBAAC,UAAD;OACE,OAAO,OAAO,UAAU;OACxB,WAAW,UAAU,UAAU,MAAM,OAAO,KAAK;OACjD,cAAY,EAAE,gBAAgB,CAAC,GAAG,cAAc;OAChD,WAAU;OAET,UAAA,OAAO,QAAQ,KAAK,WACnB,oBAAC,UAAD;QAA2B,OAAO,OAAO;QACtC,UAAA,OAAO;OACF,GAFK,OAAO,KAEZ,CACT;MACK,CAAA;MAET,OAAO,eACN,oBAAC,cAAD;OAAc,MAAM,OAAO;OAAa,UAAU,OAAO;MAAK,CAAA;MAE/D,OAAO,eACN,oBAAC,QAAD;OACE,MAAK;OACL,SAAQ;OACR,MAAK;OACL,iBAAe,CAAC;OAChB,iBAAe;OACf,cAAY,EAAE,kBAAkB,CAAC,GAAG,gBAAgB;OACpD,eAAe,cAAc,UAAU,CAAC,KAAK;OAE7C,UAAA,oBAAC,iBAAD,EACE,WAAW,GAAG,wBAAwB,aAAa,0BAA0B,EAC9E,CAAA;MACK,CAAA;KAEP;IACF,CAAA,CAAA;;EACK,CAAA,GAEb,CAAC,aACA,oBAAC,aAAD;GAAa,IAAI;GAAQ,WAAU;GAChC,UAAA,OAAO,QACN,oBAAC,iBAAD,EAAyB,OAAS,CAAA,IAElC,qBAAC,OAAD;IACE,aAAU;IACV,OAAO;KAAE,QAAQ,OAAO,aAAa;KAAS,OAAO,SAAS,MAAM;IAAE;IAFxE,UAAA,CAIE,oBAAC,UAAD;KACE,KAAK;KACL,MAAK;KACL,cAAY,OAAO,WAAW,EAAE,SAAS,CAAC,GAAG,OAAO;KACpD,oBAAkB,OAAO,mBAAmB,GAAG,OAAO,cAAc,KAAA;IACrE,CAAA,GACA,OAAO,oBACN,oBAAC,OAAD;KACE,IAAI,GAAG,OAAO;KACd,WAAU;KACV,aAAU;KACV,yBAAyB,EAAE,QAAQ,OAAO,iBAAiB;IAC5D,CAAA,CAEA;;EAEI,CAAA,CAEX;;AAEV;;;;;AAMA,SAAS,gBAAgB,EAAE,UAAyC;CAClE,MAAM,IAAI,KAAK;CACf,MAAM,WAAW,YAAY;CAC7B,MAAM,OAAO,qBAAqB;CAClC,MAAM,QAAQ,OAAO;CACrB,MAAM,OAAO,OAAO,OAAO,SAAS,QAAQ,MAAM,IAAI,IAAI,KAAA;CAC1D,MAAM,YAAY,OAAO,aAAa;CAEtC,IAAI,MACF,OACE,oBAAC,OAAD;EAAK,aAAU;EAAoB,OAAO,EAAE,UAAU;EACnD,UAAA,cAAc,MAAM;GAAE,GAAI,OAAO,YAAY,CAAC;GAAI;EAAO,CAAC;CACxD,CAAA;CAIT,OACE,qBAAC,OAAD;EACE,aAAU;EACV,WAAU;EACV,OAAO,EAAE,UAAU;EAHrB,UAAA;GAKE,oBAAC,OAAD;IAAK,WAAU;IACZ,UAAA,OAAO,OACN,oBAAC,MAAD;KAAM,MAAM,MAAM;KAAM,WAAU;IAAU,CAAA,IAE5C,oBAAC,MAAD;KACE,MAAK;KACL,UAAU;KACV,WAAU;IACX,CAAA;GAEA,CAAA;GACL,oBAAC,KAAD;IAAG,WAAU;IACV,UAAA,OAAO,WAAW,EAAE,eAAe,CAAC,GAAG,iBAAiB;GACxD,CAAA;GACF,OAAO,eAAe,oBAAC,KAAD;IAAG,WAAU;IAAiC,UAAA,MAAM;GAAe,CAAA;GACzF,OAAO,WAAW,MAAM,QAAQ,SAAS,KACxC,oBAAC,YAAD;IACE,SAAS,MAAM;IACf,SAAS;KAAE,OAAO,KAAK;KAAO,WAAW,UAAU,OAAO;IAAK;IAC/D,MAAK;IACL,WAAU;GACX,CAAA;EAEA;;AAET"}
@@ -0,0 +1,15 @@
1
+ import { DashboardCustomizeSchema, WidgetSchema, WidgetsBlock } from "@alfakit/core";
2
+ import { ReactNode } from "react";
3
+ //#region src/components/widgets/dashboard-customizer.d.ts
4
+ /**
5
+ * A customizable dashboard (`Dashboard::customizable()`): the widget grid plus an "Edit
6
+ * dashboard" mode where widgets are dragged (pointer) or moved with the arrow keys on their
7
+ * handle, resized, hidden and added from the library. The layout is saved on the server.
8
+ */
9
+ export declare function CustomizableWidgetGrid({ block, customize, renderWidget }: {
10
+ block: WidgetsBlock;
11
+ customize: DashboardCustomizeSchema;
12
+ renderWidget: (widget: WidgetSchema) => ReactNode;
13
+ }): import("react").JSX.Element;
14
+ //#endregion
15
+ //# sourceMappingURL=dashboard-customizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-customizer.d.ts","names":["WidgetsBlockSchema"],"sources":["../../../src/components/widgets/dashboard-customizer.tsx"],"mappings":";;;;;;;;wBAkCgB,yBACd,OACA,WACA;EAEA,OAAOA;EACP,WAAW;EACX,eAAe,QAAQ,iBAAiB;oBACzC,IAAA"}