@wakastellar/ui 3.2.0 → 3.3.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 (515) hide show
  1. package/dist/charts.cjs.js +1 -1
  2. package/dist/charts.d.ts +1 -17
  3. package/dist/charts.es.js +2 -16
  4. package/dist/chunk-BDDJmn7V.js +1 -0
  5. package/dist/chunk-BH6uBOac.mjs +23 -0
  6. package/dist/cli/index.cjs +621 -188
  7. package/dist/cn-DnPbmOCy.js +1 -0
  8. package/dist/cn-DpLcAzrf.mjs +22 -0
  9. package/dist/doc.cjs.js +2 -0
  10. package/dist/doc.d.ts +1 -0
  11. package/dist/doc.es.js +131 -0
  12. package/dist/exceljs.min-BuefmDRS.js +28 -0
  13. package/dist/exceljs.min-DG9M8IZ1.mjs +32037 -0
  14. package/dist/export.cjs.js +1 -1
  15. package/dist/export.d.ts +1 -30
  16. package/dist/export.es.js +2 -5
  17. package/dist/index.cjs.js +259 -240
  18. package/dist/index.d.ts +1 -35
  19. package/dist/index.es.js +95557 -98934
  20. package/dist/rich-text.cjs.js +1 -1
  21. package/dist/rich-text.d.ts +1 -21
  22. package/dist/rich-text.es.js +2 -4
  23. package/dist/separator-BDReXBvI.mjs +59 -0
  24. package/dist/separator-BKjNl9sI.js +1 -0
  25. package/dist/src/blocks/waka-doc-shell/index.d.ts +3 -0
  26. package/dist/src/blocks/waka-doc-shell/types.d.ts +32 -0
  27. package/dist/src/charts.d.ts +17 -0
  28. package/dist/src/components/command/index.d.ts +83 -0
  29. package/dist/{components → src/components}/index.d.ts +39 -0
  30. package/dist/src/components/waka-actor-badge/index.d.ts +8 -0
  31. package/dist/src/components/waka-actors-list/index.d.ts +18 -0
  32. package/dist/src/components/waka-ai-assistant-button/index.d.ts +8 -0
  33. package/dist/src/components/waka-credit-activity-feed/index.d.ts +21 -0
  34. package/dist/src/components/waka-credit-alert/index.d.ts +24 -0
  35. package/dist/src/components/waka-credit-balance/index.d.ts +30 -0
  36. package/dist/src/components/waka-credit-balance/types.d.ts +34 -0
  37. package/dist/src/components/waka-credit-breakdown/index.d.ts +32 -0
  38. package/dist/src/components/waka-credit-burn-rate/index.d.ts +25 -0
  39. package/dist/src/components/waka-credit-history/index.d.ts +31 -0
  40. package/dist/src/components/waka-credit-meter/index.d.ts +27 -0
  41. package/dist/src/components/waka-credit-pricing-pack/index.d.ts +17 -0
  42. package/dist/src/components/waka-credit-projection/index.d.ts +21 -0
  43. package/dist/src/components/waka-credit-quota/index.d.ts +25 -0
  44. package/dist/src/components/waka-credit-receipt/index.d.ts +23 -0
  45. package/dist/src/components/waka-credit-top-up/index.d.ts +26 -0
  46. package/dist/src/components/waka-credit-transaction/index.d.ts +22 -0
  47. package/dist/src/components/waka-credit-transfer-form/index.d.ts +27 -0
  48. package/dist/src/components/waka-credit-usage-chart/index.d.ts +34 -0
  49. package/dist/src/components/waka-doc-breadcrumb/index.d.ts +11 -0
  50. package/dist/src/components/waka-doc-callout/index.d.ts +9 -0
  51. package/dist/src/components/waka-doc-code-block/index.d.ts +9 -0
  52. package/dist/src/components/waka-doc-nav/index.d.ts +16 -0
  53. package/dist/src/components/waka-doc-renderer/index.d.ts +7 -0
  54. package/dist/src/components/waka-doc-search/index.d.ts +18 -0
  55. package/dist/src/components/waka-doc-table/index.d.ts +8 -0
  56. package/dist/src/components/waka-doc-toc/index.d.ts +11 -0
  57. package/dist/src/components/waka-doc-toolbar/index.d.ts +10 -0
  58. package/dist/src/components/waka-doc-version/index.d.ts +13 -0
  59. package/dist/src/components/waka-document-flyover/index.d.ts +10 -0
  60. package/dist/src/components/waka-document-preview-popup/index.d.ts +26 -0
  61. package/dist/src/components/waka-hour-balance-badge/index.d.ts +8 -0
  62. package/dist/src/components/waka-hour-consumption-table/index.d.ts +15 -0
  63. package/dist/src/components/waka-hour-pack-dialog/index.d.ts +8 -0
  64. package/dist/src/components/waka-project-stats-header/index.d.ts +15 -0
  65. package/dist/src/components/waka-step-comment-bubble/index.d.ts +13 -0
  66. package/dist/src/components/waka-step-comment-panel/index.d.ts +20 -0
  67. package/dist/src/components/waka-step-permission-matrix/index.d.ts +12 -0
  68. package/dist/src/components/waka-time-entry-dialog/index.d.ts +16 -0
  69. package/dist/src/components/waka-time-tracking-flyover/index.d.ts +11 -0
  70. package/dist/src/doc.d.ts +33 -0
  71. package/dist/src/export.d.ts +30 -0
  72. package/dist/src/index.d.ts +35 -0
  73. package/dist/src/rich-text.d.ts +21 -0
  74. package/dist/types-B6GVaSIP.mjs +934 -0
  75. package/dist/types-BH9cQRqZ.js +1 -0
  76. package/dist/ui.css +2 -1
  77. package/dist/useDataTableImport-BPvfo--2.mjs +250 -0
  78. package/dist/useDataTableImport-Cm_pCKnO.js +7 -0
  79. package/dist/waka-doc-renderer-BZ2-SqyT.js +3 -0
  80. package/dist/waka-doc-renderer-BkIvas3z.mjs +1679 -0
  81. package/dist/waka-rich-text-editor-BJGlQgpq.js +1 -0
  82. package/dist/waka-rich-text-editor-BJzzxeP1.mjs +361 -0
  83. package/dist/waka-rich-text-editor-wnXLwvUo.js +1 -0
  84. package/package.json +101 -70
  85. package/src/blocks/waka-doc-shell/WakaDocShell.stories.tsx +198 -0
  86. package/src/blocks/waka-doc-shell/index.tsx +240 -0
  87. package/src/blocks/waka-doc-shell/types.ts +40 -0
  88. package/src/components/index.ts +45 -0
  89. package/src/components/waka-actor-badge/index.tsx +34 -0
  90. package/src/components/waka-actors-list/index.tsx +125 -0
  91. package/src/components/waka-ai-assistant-button/index.tsx +31 -0
  92. package/src/components/waka-credit-activity-feed/WakaCreditActivityFeed.stories.tsx +261 -0
  93. package/src/components/waka-credit-activity-feed/index.tsx +364 -0
  94. package/src/components/waka-credit-alert/WakaCreditAlert.stories.tsx +170 -0
  95. package/src/components/waka-credit-alert/index.tsx +179 -0
  96. package/src/components/waka-credit-balance/WakaCreditBalance.stories.tsx +259 -0
  97. package/src/components/waka-credit-balance/index.tsx +433 -0
  98. package/src/components/waka-credit-balance/types.ts +38 -0
  99. package/src/components/waka-credit-breakdown/WakaCreditBreakdown.stories.tsx +186 -0
  100. package/src/components/waka-credit-breakdown/index.tsx +487 -0
  101. package/src/components/waka-credit-burn-rate/WakaCreditBurnRate.stories.tsx +227 -0
  102. package/src/components/waka-credit-burn-rate/index.tsx +475 -0
  103. package/src/components/waka-credit-history/WakaCreditHistory.stories.tsx +290 -0
  104. package/src/components/waka-credit-history/index.tsx +654 -0
  105. package/src/components/waka-credit-meter/WakaCreditMeter.stories.tsx +418 -0
  106. package/src/components/waka-credit-meter/index.tsx +624 -0
  107. package/src/components/waka-credit-pricing-pack/WakaCreditPricingPack.stories.tsx +217 -0
  108. package/src/components/waka-credit-pricing-pack/index.tsx +185 -0
  109. package/src/components/waka-credit-projection/WakaCreditProjection.stories.tsx +163 -0
  110. package/src/components/waka-credit-projection/index.tsx +345 -0
  111. package/src/components/waka-credit-quota/WakaCreditQuota.stories.tsx +260 -0
  112. package/src/components/waka-credit-quota/index.tsx +461 -0
  113. package/src/components/waka-credit-receipt/WakaCreditReceipt.stories.tsx +98 -0
  114. package/src/components/waka-credit-receipt/index.tsx +247 -0
  115. package/src/components/waka-credit-top-up/WakaCreditTopUp.stories.tsx +196 -0
  116. package/src/components/waka-credit-top-up/index.tsx +403 -0
  117. package/src/components/waka-credit-transaction/WakaCreditTransaction.stories.tsx +218 -0
  118. package/src/components/waka-credit-transaction/index.tsx +278 -0
  119. package/src/components/waka-credit-transfer-form/WakaCreditTransferForm.stories.tsx +122 -0
  120. package/src/components/waka-credit-transfer-form/index.tsx +352 -0
  121. package/src/components/waka-credit-usage-chart/WakaCreditUsageChart.stories.tsx +214 -0
  122. package/src/components/waka-credit-usage-chart/index.tsx +307 -0
  123. package/src/components/waka-doc-breadcrumb/WakaDocBreadcrumb.stories.tsx +47 -0
  124. package/src/components/waka-doc-breadcrumb/index.tsx +42 -0
  125. package/src/components/waka-doc-callout/WakaDocCallout.stories.tsx +67 -0
  126. package/src/components/waka-doc-callout/index.tsx +86 -0
  127. package/src/components/waka-doc-code-block/WakaDocCodeBlock.stories.tsx +92 -0
  128. package/src/components/waka-doc-code-block/index.tsx +120 -0
  129. package/src/components/waka-doc-nav/WakaDocNav.stories.tsx +95 -0
  130. package/src/components/waka-doc-nav/index.tsx +125 -0
  131. package/src/components/waka-doc-renderer/WakaDocRenderer.stories.tsx +120 -0
  132. package/src/components/waka-doc-renderer/index.tsx +217 -0
  133. package/src/components/waka-doc-search/WakaDocSearch.stories.tsx +64 -0
  134. package/src/components/waka-doc-search/index.tsx +158 -0
  135. package/src/components/waka-doc-table/WakaDocTable.stories.tsx +47 -0
  136. package/src/components/waka-doc-table/index.tsx +37 -0
  137. package/src/components/waka-doc-toc/WakaDocToc.stories.tsx +54 -0
  138. package/src/components/waka-doc-toc/index.tsx +90 -0
  139. package/src/components/waka-doc-toolbar/WakaDocToolbar.stories.tsx +79 -0
  140. package/src/components/waka-doc-toolbar/index.tsx +131 -0
  141. package/src/components/waka-doc-version/WakaDocVersion.stories.tsx +41 -0
  142. package/src/components/waka-doc-version/index.tsx +63 -0
  143. package/src/components/waka-document-flyover/index.tsx +36 -0
  144. package/src/components/waka-document-preview-popup/index.tsx +103 -0
  145. package/src/components/waka-hour-balance-badge/index.tsx +43 -0
  146. package/src/components/waka-hour-consumption-table/index.tsx +72 -0
  147. package/src/components/waka-hour-pack-dialog/index.tsx +72 -0
  148. package/src/components/waka-project-stats-header/index.tsx +69 -0
  149. package/src/components/waka-step-comment-bubble/index.tsx +71 -0
  150. package/src/components/waka-step-comment-panel/index.tsx +106 -0
  151. package/src/components/waka-step-permission-matrix/index.tsx +65 -0
  152. package/src/components/waka-time-entry-dialog/index.tsx +131 -0
  153. package/src/components/waka-time-tracking-flyover/index.tsx +41 -0
  154. package/dist/cn-B-fTneHh.js +0 -1
  155. package/dist/cn-DzRe1GWm.mjs +0 -21
  156. package/dist/components/command/index.d.ts +0 -51
  157. package/dist/exceljs.min-BcLLX0PC.js +0 -29
  158. package/dist/exceljs.min-KOayaaQ4.mjs +0 -23013
  159. package/dist/index-B9GTFkji.js +0 -1
  160. package/dist/index-c0jcWyEL.mjs +0 -466
  161. package/dist/types-BOWIoR7j.mjs +0 -1111
  162. package/dist/types-D2yCJ91P.js +0 -1
  163. package/dist/useDataTableImport-COVnvslz.js +0 -9
  164. package/dist/useDataTableImport-DAlxBY8w.mjs +0 -237
  165. /package/dist/{blocks → src/blocks}/activity-timeline/index.d.ts +0 -0
  166. /package/dist/{blocks → src/blocks}/antivirus-dashboard/index.d.ts +0 -0
  167. /package/dist/{blocks → src/blocks}/apm-overview/index.d.ts +0 -0
  168. /package/dist/{blocks → src/blocks}/auth-2fa/index.d.ts +0 -0
  169. /package/dist/{blocks → src/blocks}/calendar-view/index.d.ts +0 -0
  170. /package/dist/{blocks → src/blocks}/chat/index.d.ts +0 -0
  171. /package/dist/{blocks → src/blocks}/chat/widget.d.ts +0 -0
  172. /package/dist/{blocks → src/blocks}/chat-interface/index.d.ts +0 -0
  173. /package/dist/{blocks → src/blocks}/checkout-flow/index.d.ts +0 -0
  174. /package/dist/{blocks → src/blocks}/cicd-builder/index.d.ts +0 -0
  175. /package/dist/{blocks → src/blocks}/clamav-service-status/index.d.ts +0 -0
  176. /package/dist/{blocks → src/blocks}/cloud-cost-dashboard/index.d.ts +0 -0
  177. /package/dist/{blocks → src/blocks}/container-orchestrator/index.d.ts +0 -0
  178. /package/dist/{blocks → src/blocks}/dashboard/index.d.ts +0 -0
  179. /package/dist/{blocks → src/blocks}/dashboard-kpi/index.d.ts +0 -0
  180. /package/dist/{blocks → src/blocks}/database-admin/index.d.ts +0 -0
  181. /package/dist/{blocks → src/blocks}/deployment-dashboard/index.d.ts +0 -0
  182. /package/dist/{blocks → src/blocks}/empty-states/index.d.ts +0 -0
  183. /package/dist/{blocks → src/blocks}/error-pages/index.d.ts +0 -0
  184. /package/dist/{blocks → src/blocks}/faq/index.d.ts +0 -0
  185. /package/dist/{blocks → src/blocks}/file-manager/index.d.ts +0 -0
  186. /package/dist/{blocks → src/blocks}/file-scan-uploader/index.d.ts +0 -0
  187. /package/dist/{blocks → src/blocks}/footer/index.d.ts +0 -0
  188. /package/dist/{blocks → src/blocks}/gitops-sync-status/index.d.ts +0 -0
  189. /package/dist/{blocks → src/blocks}/header/index.d.ts +0 -0
  190. /package/dist/{blocks → src/blocks}/headtab/index.d.ts +0 -0
  191. /package/dist/{blocks → src/blocks}/i18n-editor/index.d.ts +0 -0
  192. /package/dist/{blocks → src/blocks}/incident-manager/index.d.ts +0 -0
  193. /package/dist/{blocks → src/blocks}/index.d.ts +0 -0
  194. /package/dist/{blocks → src/blocks}/infrastructure-map/index.d.ts +0 -0
  195. /package/dist/{blocks → src/blocks}/kanban-board/index.d.ts +0 -0
  196. /package/dist/{blocks → src/blocks}/landing/index.d.ts +0 -0
  197. /package/dist/{blocks → src/blocks}/language-selector/index.d.ts +0 -0
  198. /package/dist/{blocks → src/blocks}/layout/index.d.ts +0 -0
  199. /package/dist/{blocks → src/blocks}/login/index.d.ts +0 -0
  200. /package/dist/{blocks → src/blocks}/login/types.d.ts +0 -0
  201. /package/dist/{blocks → src/blocks}/on-call-schedule/index.d.ts +0 -0
  202. /package/dist/{blocks → src/blocks}/player-profile/index.d.ts +0 -0
  203. /package/dist/{blocks → src/blocks}/pricing/index.d.ts +0 -0
  204. /package/dist/{blocks → src/blocks}/profile/index.d.ts +0 -0
  205. /package/dist/{blocks → src/blocks}/quarantine-manager/index.d.ts +0 -0
  206. /package/dist/{blocks → src/blocks}/release-notes/index.d.ts +0 -0
  207. /package/dist/{blocks → src/blocks}/scan-history-log/index.d.ts +0 -0
  208. /package/dist/{blocks → src/blocks}/scan-policy-editor/index.d.ts +0 -0
  209. /package/dist/{blocks → src/blocks}/scan-report-generator/index.d.ts +0 -0
  210. /package/dist/{blocks → src/blocks}/settings/index.d.ts +0 -0
  211. /package/dist/{blocks → src/blocks}/sidebar/index.d.ts +0 -0
  212. /package/dist/{blocks → src/blocks}/signature-database-manager/index.d.ts +0 -0
  213. /package/dist/{blocks → src/blocks}/threat-alert-banner/index.d.ts +0 -0
  214. /package/dist/{blocks → src/blocks}/user-management/index.d.ts +0 -0
  215. /package/dist/{blocks → src/blocks}/wizard/index.d.ts +0 -0
  216. /package/dist/{cli → src/cli}/commands/add.d.ts +0 -0
  217. /package/dist/{cli → src/cli}/commands/init.d.ts +0 -0
  218. /package/dist/{cli → src/cli}/commands/list.d.ts +0 -0
  219. /package/dist/{cli → src/cli}/commands/search.d.ts +0 -0
  220. /package/dist/{cli → src/cli}/index.d.ts +0 -0
  221. /package/dist/{cli → src/cli}/utils/config.d.ts +0 -0
  222. /package/dist/{cli → src/cli}/utils/logger.d.ts +0 -0
  223. /package/dist/{cli → src/cli}/utils/registry.d.ts +0 -0
  224. /package/dist/{components → src/components}/DataTable/DataTable.d.ts +0 -0
  225. /package/dist/{components → src/components}/DataTable/DataTableAdvanced.d.ts +0 -0
  226. /package/dist/{components → src/components}/DataTable/DataTableColumnResizer.d.ts +0 -0
  227. /package/dist/{components → src/components}/DataTable/DataTableContextMenu.d.ts +0 -0
  228. /package/dist/{components → src/components}/DataTable/DataTableEditCell.d.ts +0 -0
  229. /package/dist/{components → src/components}/DataTable/DataTableFilters.d.ts +0 -0
  230. /package/dist/{components → src/components}/DataTable/DataTableGrouping.d.ts +0 -0
  231. /package/dist/{components → src/components}/DataTable/DataTablePagination.d.ts +0 -0
  232. /package/dist/{components → src/components}/DataTable/DataTableSelection.d.ts +0 -0
  233. /package/dist/{components → src/components}/DataTable/DataTableToolbar.d.ts +0 -0
  234. /package/dist/{components → src/components}/DataTable/examples/EditExample.d.ts +0 -0
  235. /package/dist/{components → src/components}/DataTable/hooks/useDataTable.d.ts +0 -0
  236. /package/dist/{components → src/components}/DataTable/hooks/useDataTableAdvanced.d.ts +0 -0
  237. /package/dist/{components → src/components}/DataTable/hooks/useDataTableEdit.d.ts +0 -0
  238. /package/dist/{components → src/components}/DataTable/hooks/useDataTableExport.d.ts +0 -0
  239. /package/dist/{components → src/components}/DataTable/hooks/useDataTableImport.d.ts +0 -0
  240. /package/dist/{components → src/components}/DataTable/hooks/useDataTableTheme.d.ts +0 -0
  241. /package/dist/{components → src/components}/DataTable/hooks/useDataTableVirtualization.d.ts +0 -0
  242. /package/dist/{components → src/components}/DataTable/hooks/useTableLayout.d.ts +0 -0
  243. /package/dist/{components → src/components}/DataTable/index.d.ts +0 -0
  244. /package/dist/{components → src/components}/DataTable/types.d.ts +0 -0
  245. /package/dist/{components → src/components}/DataTable/utils.d.ts +0 -0
  246. /package/dist/{components → src/components}/accordion/index.d.ts +0 -0
  247. /package/dist/{components → src/components}/alert/index.d.ts +0 -0
  248. /package/dist/{components → src/components}/alert-dialog/index.d.ts +0 -0
  249. /package/dist/{components → src/components}/aspect-ratio/index.d.ts +0 -0
  250. /package/dist/{components → src/components}/avatar/index.d.ts +0 -0
  251. /package/dist/{components → src/components}/badge/index.d.ts +0 -0
  252. /package/dist/{components → src/components}/button/index.d.ts +0 -0
  253. /package/dist/{components → src/components}/calendar/index.d.ts +0 -0
  254. /package/dist/{components → src/components}/card/index.d.ts +0 -0
  255. /package/dist/{components → src/components}/checkbox/index.d.ts +0 -0
  256. /package/dist/{components → src/components}/code/index.d.ts +0 -0
  257. /package/dist/{components → src/components}/collapsible/index.d.ts +0 -0
  258. /package/dist/{components → src/components}/context-menu/index.d.ts +0 -0
  259. /package/dist/{components → src/components}/dialog/index.d.ts +0 -0
  260. /package/dist/{components → src/components}/dropdown-menu/index.d.ts +0 -0
  261. /package/dist/{components → src/components}/error-boundary/ErrorBoundary.d.ts +0 -0
  262. /package/dist/{components → src/components}/error-boundary/index.d.ts +0 -0
  263. /package/dist/{components → src/components}/form/index.d.ts +0 -0
  264. /package/dist/{components → src/components}/hover-card/index.d.ts +0 -0
  265. /package/dist/{components → src/components}/input/index.d.ts +0 -0
  266. /package/dist/{components → src/components}/input-otp/index.d.ts +0 -0
  267. /package/dist/{components → src/components}/label/index.d.ts +0 -0
  268. /package/dist/{components → src/components}/language-selector/index.d.ts +0 -0
  269. /package/dist/{components → src/components}/menubar/index.d.ts +0 -0
  270. /package/dist/{components → src/components}/navigation-menu/index.d.ts +0 -0
  271. /package/dist/{components → src/components}/popover/index.d.ts +0 -0
  272. /package/dist/{components → src/components}/progress/index.d.ts +0 -0
  273. /package/dist/{components → src/components}/radio-group/index.d.ts +0 -0
  274. /package/dist/{components → src/components}/scroll-area/index.d.ts +0 -0
  275. /package/dist/{components → src/components}/select/index.d.ts +0 -0
  276. /package/dist/{components → src/components}/separator/index.d.ts +0 -0
  277. /package/dist/{components → src/components}/sheet/index.d.ts +0 -0
  278. /package/dist/{components → src/components}/skeleton/index.d.ts +0 -0
  279. /package/dist/{components → src/components}/slider/index.d.ts +0 -0
  280. /package/dist/{components → src/components}/switch/index.d.ts +0 -0
  281. /package/dist/{components → src/components}/table/index.d.ts +0 -0
  282. /package/dist/{components → src/components}/tabs/index.d.ts +0 -0
  283. /package/dist/{components → src/components}/textarea/index.d.ts +0 -0
  284. /package/dist/{components → src/components}/theme-selector/index.d.ts +0 -0
  285. /package/dist/{components → src/components}/toast/index.d.ts +0 -0
  286. /package/dist/{components → src/components}/toaster/index.d.ts +0 -0
  287. /package/dist/{components → src/components}/toggle/index.d.ts +0 -0
  288. /package/dist/{components → src/components}/tooltip/index.d.ts +0 -0
  289. /package/dist/{components → src/components}/typography/index.d.ts +0 -0
  290. /package/dist/{components → src/components}/waka-3d-pie-chart/index.d.ts +0 -0
  291. /package/dist/{components → src/components}/waka-achievement-unlock/index.d.ts +0 -0
  292. /package/dist/{components → src/components}/waka-activity-feed/index.d.ts +0 -0
  293. /package/dist/{components → src/components}/waka-ad-banner/index.d.ts +0 -0
  294. /package/dist/{components → src/components}/waka-ad-fallback/index.d.ts +0 -0
  295. /package/dist/{components → src/components}/waka-ad-inline/index.d.ts +0 -0
  296. /package/dist/{components → src/components}/waka-ad-interstitial/index.d.ts +0 -0
  297. /package/dist/{components → src/components}/waka-ad-placeholder/index.d.ts +0 -0
  298. /package/dist/{components → src/components}/waka-ad-provider/index.d.ts +0 -0
  299. /package/dist/{components → src/components}/waka-ad-sidebar/index.d.ts +0 -0
  300. /package/dist/{components → src/components}/waka-ad-sticky-footer/index.d.ts +0 -0
  301. /package/dist/{components → src/components}/waka-address-autocomplete/index.d.ts +0 -0
  302. /package/dist/{components → src/components}/waka-admincrumb/index.d.ts +0 -0
  303. /package/dist/{components → src/components}/waka-alert-panel/index.d.ts +0 -0
  304. /package/dist/{components → src/components}/waka-alert-stack/index.d.ts +0 -0
  305. /package/dist/{components → src/components}/waka-allocation-matrix/index.d.ts +0 -0
  306. /package/dist/{components → src/components}/waka-approval-chain/index.d.ts +0 -0
  307. /package/dist/{components → src/components}/waka-artifact-list/index.d.ts +0 -0
  308. /package/dist/{components → src/components}/waka-audit-log/index.d.ts +0 -0
  309. /package/dist/{components → src/components}/waka-autocomplete/index.d.ts +0 -0
  310. /package/dist/{components → src/components}/waka-badge-showcase/index.d.ts +0 -0
  311. /package/dist/{components → src/components}/waka-barcode/index.d.ts +0 -0
  312. /package/dist/{components → src/components}/waka-biometric-prompt/index.d.ts +0 -0
  313. /package/dist/{components → src/components}/waka-bottom-sheet/index.d.ts +0 -0
  314. /package/dist/{components → src/components}/waka-breadcrumb/index.d.ts +0 -0
  315. /package/dist/{components → src/components}/waka-breadcrumb-path/index.d.ts +0 -0
  316. /package/dist/{components → src/components}/waka-budget-burn/index.d.ts +0 -0
  317. /package/dist/{components → src/components}/waka-build-matrix/index.d.ts +0 -0
  318. /package/dist/{components → src/components}/waka-capacity-planner/index.d.ts +0 -0
  319. /package/dist/{components → src/components}/waka-carousel/index.d.ts +0 -0
  320. /package/dist/{components → src/components}/waka-cart-summary/index.d.ts +0 -0
  321. /package/dist/{components → src/components}/waka-challenge-timer/index.d.ts +0 -0
  322. /package/dist/{components → src/components}/waka-charts/WakaAreaChart.d.ts +0 -0
  323. /package/dist/{components → src/components}/waka-charts/WakaBarChart.d.ts +0 -0
  324. /package/dist/{components → src/components}/waka-charts/WakaChart.d.ts +0 -0
  325. /package/dist/{components → src/components}/waka-charts/WakaLineChart.d.ts +0 -0
  326. /package/dist/{components → src/components}/waka-charts/WakaMiniChart.d.ts +0 -0
  327. /package/dist/{components → src/components}/waka-charts/WakaPieChart.d.ts +0 -0
  328. /package/dist/{components → src/components}/waka-charts/WakaSparkline.d.ts +0 -0
  329. /package/dist/{components → src/components}/waka-charts/dataTableHelpers.d.ts +0 -0
  330. /package/dist/{components → src/components}/waka-charts/hooks/useChartTheme.d.ts +0 -0
  331. /package/dist/{components → src/components}/waka-charts/hooks/useRechartsLoader.d.ts +0 -0
  332. /package/dist/{components → src/components}/waka-charts/index.d.ts +0 -0
  333. /package/dist/{components → src/components}/waka-charts/types.d.ts +0 -0
  334. /package/dist/{components → src/components}/waka-chat-bubble/index.d.ts +0 -0
  335. /package/dist/{components → src/components}/waka-checklist/index.d.ts +0 -0
  336. /package/dist/{components → src/components}/waka-checkout-stepper/index.d.ts +0 -0
  337. /package/dist/{components → src/components}/waka-cohort-table/index.d.ts +0 -0
  338. /package/dist/{components → src/components}/waka-color-picker/index.d.ts +0 -0
  339. /package/dist/{components → src/components}/waka-combo-counter/index.d.ts +0 -0
  340. /package/dist/{components → src/components}/waka-combobox/index.d.ts +0 -0
  341. /package/dist/{components → src/components}/waka-command-bar/index.d.ts +0 -0
  342. /package/dist/{components → src/components}/waka-compare-period/index.d.ts +0 -0
  343. /package/dist/{components → src/components}/waka-config-comparator/index.d.ts +0 -0
  344. /package/dist/{components → src/components}/waka-connection-matrix/index.d.ts +0 -0
  345. /package/dist/{components → src/components}/waka-container-list/index.d.ts +0 -0
  346. /package/dist/{components → src/components}/waka-content-recommendation/index.d.ts +0 -0
  347. /package/dist/{components → src/components}/waka-contribution-graph/index.d.ts +0 -0
  348. /package/dist/{components → src/components}/waka-cost-breakdown/index.d.ts +0 -0
  349. /package/dist/{components → src/components}/waka-coupon-input/index.d.ts +0 -0
  350. /package/dist/{components → src/components}/waka-credit-card-input/index.d.ts +0 -0
  351. /package/dist/{components → src/components}/waka-daily-reward/index.d.ts +0 -0
  352. /package/dist/{components → src/components}/waka-database-card/index.d.ts +0 -0
  353. /package/dist/{components → src/components}/waka-date-range-picker/index.d.ts +0 -0
  354. /package/dist/{components → src/components}/waka-datetime-picker/index.d.ts +0 -0
  355. /package/dist/{components → src/components}/waka-datetime-picker.form-integration/index.d.ts +0 -0
  356. /package/dist/{components → src/components}/waka-dependency-tree/index.d.ts +0 -0
  357. /package/dist/{components → src/components}/waka-deployment-lane/index.d.ts +0 -0
  358. /package/dist/{components → src/components}/waka-device-trust/index.d.ts +0 -0
  359. /package/dist/{components → src/components}/waka-dock/index.d.ts +0 -0
  360. /package/dist/{components → src/components}/waka-drawer/index.d.ts +0 -0
  361. /package/dist/{components → src/components}/waka-empty-state/index.d.ts +0 -0
  362. /package/dist/{components → src/components}/waka-env-var-editor/index.d.ts +0 -0
  363. /package/dist/{components → src/components}/waka-error-shake/index.d.ts +0 -0
  364. /package/dist/{components → src/components}/waka-feature-announcement/index.d.ts +0 -0
  365. /package/dist/{components → src/components}/waka-feature-flag-row/index.d.ts +0 -0
  366. /package/dist/{components → src/components}/waka-file-upload/index.d.ts +0 -0
  367. /package/dist/{components → src/components}/waka-floating-nav/index.d.ts +0 -0
  368. /package/dist/{components → src/components}/waka-flow-diagram/index.d.ts +0 -0
  369. /package/dist/{components → src/components}/waka-funnel-chart/index.d.ts +0 -0
  370. /package/dist/{components → src/components}/waka-glow-card/index.d.ts +0 -0
  371. /package/dist/{components → src/components}/waka-goal-progress/index.d.ts +0 -0
  372. /package/dist/{components → src/components}/waka-haptic-button/index.d.ts +0 -0
  373. /package/dist/{components → src/components}/waka-health-pulse/index.d.ts +0 -0
  374. /package/dist/{components → src/components}/waka-heatmap/index.d.ts +0 -0
  375. /package/dist/{components → src/components}/waka-hotspot/index.d.ts +0 -0
  376. /package/dist/{components → src/components}/waka-image/index.d.ts +0 -0
  377. /package/dist/{components → src/components}/waka-incident-timeline/index.d.ts +0 -0
  378. /package/dist/{components → src/components}/waka-invoice-preview/index.d.ts +0 -0
  379. /package/dist/{components → src/components}/waka-kanban/index.d.ts +0 -0
  380. /package/dist/{components → src/components}/waka-kpi-dashboard/index.d.ts +0 -0
  381. /package/dist/{components → src/components}/waka-kubernetes-overview/index.d.ts +0 -0
  382. /package/dist/{components → src/components}/waka-leaderboard/index.d.ts +0 -0
  383. /package/dist/{components → src/components}/waka-level-progress/index.d.ts +0 -0
  384. /package/dist/{components → src/components}/waka-liquid-button/index.d.ts +0 -0
  385. /package/dist/{components → src/components}/waka-loading-orbit/index.d.ts +0 -0
  386. /package/dist/{components → src/components}/waka-log-viewer/index.d.ts +0 -0
  387. /package/dist/{components → src/components}/waka-loot-box/index.d.ts +0 -0
  388. /package/dist/{components → src/components}/waka-magic-link/index.d.ts +0 -0
  389. /package/dist/{components → src/components}/waka-magnetic-button/index.d.ts +0 -0
  390. /package/dist/{components → src/components}/waka-mention-input/index.d.ts +0 -0
  391. /package/dist/{components → src/components}/waka-metric-sparkline/index.d.ts +0 -0
  392. /package/dist/{components → src/components}/waka-migration-list/index.d.ts +0 -0
  393. /package/dist/{components → src/components}/waka-milestone-road/index.d.ts +0 -0
  394. /package/dist/{components → src/components}/waka-modal/index.d.ts +0 -0
  395. /package/dist/{components → src/components}/waka-morph-button/index.d.ts +0 -0
  396. /package/dist/{components → src/components}/waka-network-topology/index.d.ts +0 -0
  397. /package/dist/{components → src/components}/waka-notifications/index.d.ts +0 -0
  398. /package/dist/{components → src/components}/waka-number-input/index.d.ts +0 -0
  399. /package/dist/{components → src/components}/waka-orbital-menu/index.d.ts +0 -0
  400. /package/dist/{components → src/components}/waka-order-tracker/index.d.ts +0 -0
  401. /package/dist/{components → src/components}/waka-outstream-video/index.d.ts +0 -0
  402. /package/dist/{components → src/components}/waka-pagination/index.d.ts +0 -0
  403. /package/dist/{components → src/components}/waka-password-strength/index.d.ts +0 -0
  404. /package/dist/{components → src/components}/waka-payment-method-picker/index.d.ts +0 -0
  405. /package/dist/{components → src/components}/waka-permission-matrix/index.d.ts +0 -0
  406. /package/dist/{components → src/components}/waka-phone-input/index.d.ts +0 -0
  407. /package/dist/{components → src/components}/waka-pipeline-view/index.d.ts +0 -0
  408. /package/dist/{components → src/components}/waka-player-card/index.d.ts +0 -0
  409. /package/dist/{components → src/components}/waka-pod-card/index.d.ts +0 -0
  410. /package/dist/{components → src/components}/waka-points-popup/index.d.ts +0 -0
  411. /package/dist/{components → src/components}/waka-power-up/index.d.ts +0 -0
  412. /package/dist/{components → src/components}/waka-presence-indicator/index.d.ts +0 -0
  413. /package/dist/{components → src/components}/waka-pricing-table/index.d.ts +0 -0
  414. /package/dist/{components → src/components}/waka-product-card/index.d.ts +0 -0
  415. /package/dist/{components → src/components}/waka-progress-onboarding/index.d.ts +0 -0
  416. /package/dist/{components → src/components}/waka-pull-to-refresh/index.d.ts +0 -0
  417. /package/dist/{components → src/components}/waka-qrcode/index.d.ts +0 -0
  418. /package/dist/{components → src/components}/waka-query-explain/index.d.ts +0 -0
  419. /package/dist/{components → src/components}/waka-quest-card/index.d.ts +0 -0
  420. /package/dist/{components → src/components}/waka-quota-bar/index.d.ts +0 -0
  421. /package/dist/{components → src/components}/waka-radar-score/index.d.ts +0 -0
  422. /package/dist/{components → src/components}/waka-rank-badge/index.d.ts +0 -0
  423. /package/dist/{components → src/components}/waka-rating-input/index.d.ts +0 -0
  424. /package/dist/{components → src/components}/waka-reaction-picker/index.d.ts +0 -0
  425. /package/dist/{components → src/components}/waka-region-map/index.d.ts +0 -0
  426. /package/dist/{components → src/components}/waka-resource-gauge/index.d.ts +0 -0
  427. /package/dist/{components → src/components}/waka-resource-pool/index.d.ts +0 -0
  428. /package/dist/{components → src/components}/waka-rich-text-editor/index.d.ts +0 -0
  429. /package/dist/{components → src/components}/waka-rollback-slider/index.d.ts +0 -0
  430. /package/dist/{components → src/components}/waka-sankey-diagram/index.d.ts +0 -0
  431. /package/dist/{components → src/components}/waka-schedule-picker/index.d.ts +0 -0
  432. /package/dist/{components → src/components}/waka-scratch-card/index.d.ts +0 -0
  433. /package/dist/{components → src/components}/waka-season-pass/index.d.ts +0 -0
  434. /package/dist/{components → src/components}/waka-secret-card/index.d.ts +0 -0
  435. /package/dist/{components → src/components}/waka-security-scan-result/index.d.ts +0 -0
  436. /package/dist/{components → src/components}/waka-security-score/index.d.ts +0 -0
  437. /package/dist/{components → src/components}/waka-segmented-control/index.d.ts +0 -0
  438. /package/dist/{components → src/components}/waka-server-rack/index.d.ts +0 -0
  439. /package/dist/{components → src/components}/waka-service-graph/index.d.ts +0 -0
  440. /package/dist/{components → src/components}/waka-session-manager/index.d.ts +0 -0
  441. /package/dist/{components → src/components}/waka-signature-pad/index.d.ts +0 -0
  442. /package/dist/{components → src/components}/waka-skeleton-wave/index.d.ts +0 -0
  443. /package/dist/{components → src/components}/waka-skill-tree/index.d.ts +0 -0
  444. /package/dist/{components → src/components}/waka-sla-tracker/index.d.ts +0 -0
  445. /package/dist/{components → src/components}/waka-slider-range/index.d.ts +0 -0
  446. /package/dist/{components → src/components}/waka-spin-wheel/index.d.ts +0 -0
  447. /package/dist/{components → src/components}/waka-spinner/index.d.ts +0 -0
  448. /package/dist/{components → src/components}/waka-sponsored-badge/index.d.ts +0 -0
  449. /package/dist/{components → src/components}/waka-sponsored-card/index.d.ts +0 -0
  450. /package/dist/{components → src/components}/waka-sponsored-feed/index.d.ts +0 -0
  451. /package/dist/{components → src/components}/waka-spotlight/index.d.ts +0 -0
  452. /package/dist/{components → src/components}/waka-stat/index.d.ts +0 -0
  453. /package/dist/{components → src/components}/waka-stats-hexagon/index.d.ts +0 -0
  454. /package/dist/{components → src/components}/waka-status-matrix/index.d.ts +0 -0
  455. /package/dist/{components → src/components}/waka-stepper/index.d.ts +0 -0
  456. /package/dist/{components → src/components}/waka-streak-counter/index.d.ts +0 -0
  457. /package/dist/{components → src/components}/waka-success-explosion/index.d.ts +0 -0
  458. /package/dist/{components → src/components}/waka-swipe-card/index.d.ts +0 -0
  459. /package/dist/{components → src/components}/waka-tabs-morph/index.d.ts +0 -0
  460. /package/dist/{components → src/components}/waka-tag-input/index.d.ts +0 -0
  461. /package/dist/{components → src/components}/waka-team-banner/index.d.ts +0 -0
  462. /package/dist/{components → src/components}/waka-terminal-output/index.d.ts +0 -0
  463. /package/dist/{components → src/components}/waka-test-report/index.d.ts +0 -0
  464. /package/dist/{components → src/components}/waka-theme-creator/index.d.ts +0 -0
  465. /package/dist/{components → src/components}/waka-theme-manager/index.d.ts +0 -0
  466. /package/dist/{components → src/components}/waka-thread-view/index.d.ts +0 -0
  467. /package/dist/{components → src/components}/waka-tilt-card/index.d.ts +0 -0
  468. /package/dist/{components → src/components}/waka-time-picker/index.d.ts +0 -0
  469. /package/dist/{components → src/components}/waka-timeline/index.d.ts +0 -0
  470. /package/dist/{components → src/components}/waka-tooltip-tour/index.d.ts +0 -0
  471. /package/dist/{components → src/components}/waka-tour-guide/index.d.ts +0 -0
  472. /package/dist/{components → src/components}/waka-tournament-bracket/index.d.ts +0 -0
  473. /package/dist/{components → src/components}/waka-trace-viewer/index.d.ts +0 -0
  474. /package/dist/{components → src/components}/waka-tree/index.d.ts +0 -0
  475. /package/dist/{components → src/components}/waka-treemap-chart/index.d.ts +0 -0
  476. /package/dist/{components → src/components}/waka-two-factor-setup/index.d.ts +0 -0
  477. /package/dist/{components → src/components}/waka-typewriter/index.d.ts +0 -0
  478. /package/dist/{components → src/components}/waka-typing-indicator/index.d.ts +0 -0
  479. /package/dist/{components → src/components}/waka-versus-card/index.d.ts +0 -0
  480. /package/dist/{components → src/components}/waka-video/index.d.ts +0 -0
  481. /package/dist/{components → src/components}/waka-video-ad/index.d.ts +0 -0
  482. /package/dist/{components → src/components}/waka-video-call/index.d.ts +0 -0
  483. /package/dist/{components → src/components}/waka-video-overlay/index.d.ts +0 -0
  484. /package/dist/{components → src/components}/waka-virtual-list/index.d.ts +0 -0
  485. /package/dist/{components → src/components}/waka-voice-message/index.d.ts +0 -0
  486. /package/dist/{components → src/components}/waka-welcome-modal/index.d.ts +0 -0
  487. /package/dist/{components → src/components}/waka-xp-bar/index.d.ts +0 -0
  488. /package/dist/{context → src/context}/admincrumb-context.d.ts +0 -0
  489. /package/dist/{context → src/context}/index.d.ts +0 -0
  490. /package/dist/{context → src/context}/language-context.d.ts +0 -0
  491. /package/dist/{context → src/context}/theme-context.d.ts +0 -0
  492. /package/dist/{context → src/context}/theme-provider.d.ts +0 -0
  493. /package/dist/{context → src/context}/waka-provider.d.ts +0 -0
  494. /package/dist/{hooks → src/hooks}/index.d.ts +0 -0
  495. /package/dist/{hooks → src/hooks}/use-toast.d.ts +0 -0
  496. /package/dist/{hooks → src/hooks}/use-translation.d.ts +0 -0
  497. /package/dist/{hooks → src/hooks}/useToast.d.ts +0 -0
  498. /package/dist/{lib → src/lib}/i18n.d.ts +0 -0
  499. /package/dist/{stories → src/stories}/Button.d.ts +0 -0
  500. /package/dist/{stories → src/stories}/Button.stories.d.ts +0 -0
  501. /package/dist/{stories → src/stories}/Header.d.ts +0 -0
  502. /package/dist/{stories → src/stories}/Header.stories.d.ts +0 -0
  503. /package/dist/{stories → src/stories}/Page.d.ts +0 -0
  504. /package/dist/{stories → src/stories}/Page.stories.d.ts +0 -0
  505. /package/dist/{types → src/types}/index.d.ts +0 -0
  506. /package/dist/{types → src/types}/link.d.ts +0 -0
  507. /package/dist/{types → src/types}/provider.d.ts +0 -0
  508. /package/dist/{utils → src/utils}/cn.d.ts +0 -0
  509. /package/dist/{utils → src/utils}/datetime-helpers.d.ts +0 -0
  510. /package/dist/{utils → src/utils}/error-handling.d.ts +0 -0
  511. /package/dist/{utils → src/utils}/index.d.ts +0 -0
  512. /package/dist/{utils → src/utils}/logger.d.ts +0 -0
  513. /package/dist/{utils → src/utils}/security.d.ts +0 -0
  514. /package/dist/{utils → src/utils}/theme-loader.d.ts +0 -0
  515. /package/dist/{utils → src/utils}/tweak.d.ts +0 -0
@@ -0,0 +1,31 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { cn } from "../../utils/cn"
5
+
6
+ export interface AiAssistantButtonProps {
7
+ onClick: () => void
8
+ hasExistingDoc?: boolean
9
+ disabled?: boolean
10
+ className?: string
11
+ }
12
+
13
+ function AiAssistantButton({ onClick, hasExistingDoc, disabled, className }: AiAssistantButtonProps) {
14
+ return (
15
+ <button
16
+ onClick={onClick}
17
+ disabled={disabled}
18
+ className={cn(
19
+ "inline-flex items-center gap-2 rounded-md px-3 py-2 text-sm font-medium transition-colors",
20
+ "bg-violet-600 text-white hover:bg-violet-700 disabled:opacity-50",
21
+ className,
22
+ )}
23
+ aria-label={hasExistingDoc ? "Ouvrir document IA" : "Assistant IA"}
24
+ >
25
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/><path d="M5 3v4"/><path d="M19 17v4"/><path d="M3 5h4"/><path d="M17 19h4"/></svg>
26
+ {hasExistingDoc ? "Ouvrir document IA" : "Assistant IA"}
27
+ </button>
28
+ )
29
+ }
30
+
31
+ export { AiAssistantButton }
@@ -0,0 +1,261 @@
1
+ import type { Meta, StoryObj } from "@storybook/react"
2
+ import { WakaCreditActivityFeed } from "./index"
3
+ import type { CreditTransaction } from "../waka-credit-balance/types"
4
+
5
+ // ============================================================================
6
+ // Mock Data
7
+ // ============================================================================
8
+
9
+ const now = new Date()
10
+
11
+ function minutesAgo(minutes: number): Date {
12
+ return new Date(now.getTime() - minutes * 60 * 1000)
13
+ }
14
+
15
+ function hoursAgo(hours: number): Date {
16
+ return new Date(now.getTime() - hours * 60 * 60 * 1000)
17
+ }
18
+
19
+ function daysAgo(days: number): Date {
20
+ return new Date(now.getTime() - days * 24 * 60 * 60 * 1000)
21
+ }
22
+
23
+ const mockActivities: CreditTransaction[] = [
24
+ {
25
+ id: "1",
26
+ type: "debit",
27
+ amount: 150,
28
+ description: "Kubernetes cluster deployment",
29
+ service: "InfraOperator",
30
+ timestamp: minutesAgo(2),
31
+ status: "completed",
32
+ balanceAfter: 2300,
33
+ },
34
+ {
35
+ id: "2",
36
+ type: "credit",
37
+ amount: 500,
38
+ description: "Credit pack purchase - Standard",
39
+ timestamp: minutesAgo(35),
40
+ status: "completed",
41
+ balanceAfter: 2450,
42
+ },
43
+ {
44
+ id: "3",
45
+ type: "debit",
46
+ amount: 75,
47
+ description: "Docker image build",
48
+ service: "ImageBuilder",
49
+ timestamp: hoursAgo(1),
50
+ status: "completed",
51
+ balanceAfter: 1950,
52
+ },
53
+ {
54
+ id: "4",
55
+ type: "refund",
56
+ amount: 200,
57
+ description: "Failed deployment refund",
58
+ service: "InfraOperator",
59
+ timestamp: hoursAgo(3),
60
+ status: "completed",
61
+ balanceAfter: 2025,
62
+ },
63
+ {
64
+ id: "5",
65
+ type: "bonus",
66
+ amount: 100,
67
+ description: "Welcome bonus credits",
68
+ timestamp: daysAgo(1),
69
+ status: "completed",
70
+ balanceAfter: 1825,
71
+ },
72
+ {
73
+ id: "6",
74
+ type: "debit",
75
+ amount: 50,
76
+ description: "Helm chart deployment",
77
+ service: "HelmCharts",
78
+ timestamp: daysAgo(1),
79
+ status: "completed",
80
+ balanceAfter: 1725,
81
+ },
82
+ {
83
+ id: "7",
84
+ type: "expiry",
85
+ amount: 250,
86
+ description: "Promotional credits expired",
87
+ timestamp: daysAgo(3),
88
+ status: "completed",
89
+ balanceAfter: 1775,
90
+ },
91
+ {
92
+ id: "8",
93
+ type: "credit",
94
+ amount: 1000,
95
+ description: "Credit pack purchase - Premium",
96
+ timestamp: daysAgo(5),
97
+ status: "completed",
98
+ balanceAfter: 2025,
99
+ },
100
+ ]
101
+
102
+ // ============================================================================
103
+ // Meta
104
+ // ============================================================================
105
+
106
+ const meta: Meta<typeof WakaCreditActivityFeed> = {
107
+ title: "Components/Credit/WakaCreditActivityFeed",
108
+ component: WakaCreditActivityFeed,
109
+ parameters: {
110
+ layout: "centered",
111
+ docs: {
112
+ description: {
113
+ component:
114
+ "Vertical timeline feed of recent credit operations. Each item shows a type icon, description, amount, and relative time.",
115
+ },
116
+ },
117
+ },
118
+ tags: ["autodocs"],
119
+ argTypes: {
120
+ maxItems: {
121
+ control: { type: "number", min: 1, max: 20 },
122
+ description: "Maximum number of items to display",
123
+ },
124
+ showLoadMore: {
125
+ control: "boolean",
126
+ description: "Show load more button",
127
+ },
128
+ loading: {
129
+ control: "boolean",
130
+ description: "Show loading skeleton state",
131
+ },
132
+ animated: {
133
+ control: "boolean",
134
+ description: "Enable staggered fade-in animation",
135
+ },
136
+ emptyMessage: {
137
+ control: "text",
138
+ description: "Message shown when activity list is empty",
139
+ },
140
+ },
141
+ decorators: [
142
+ (Story) => (
143
+ <div className="w-[460px]">
144
+ <Story />
145
+ </div>
146
+ ),
147
+ ],
148
+ }
149
+
150
+ export default meta
151
+ type Story = StoryObj<typeof WakaCreditActivityFeed>
152
+
153
+ // ============================================================================
154
+ // Stories
155
+ // ============================================================================
156
+
157
+ export const Default: Story = {
158
+ args: {
159
+ activities: mockActivities,
160
+ },
161
+ }
162
+
163
+ export const WithLoadMore: Story = {
164
+ args: {
165
+ activities: mockActivities.slice(0, 5),
166
+ showLoadMore: true,
167
+ onLoadMore: () => {
168
+ console.log("Load more clicked")
169
+ },
170
+ },
171
+ }
172
+
173
+ export const Animated: Story = {
174
+ args: {
175
+ activities: mockActivities,
176
+ animated: true,
177
+ },
178
+ }
179
+
180
+ export const Empty: Story = {
181
+ args: {
182
+ activities: [],
183
+ emptyMessage: "No credit activity to display",
184
+ },
185
+ }
186
+
187
+ export const Loading: Story = {
188
+ args: {
189
+ activities: [],
190
+ loading: true,
191
+ },
192
+ }
193
+
194
+ export const LimitedItems: Story = {
195
+ args: {
196
+ activities: mockActivities,
197
+ maxItems: 3,
198
+ showLoadMore: true,
199
+ onLoadMore: () => {
200
+ console.log("Load more clicked")
201
+ },
202
+ },
203
+ }
204
+
205
+ export const AllTypes: Story = {
206
+ render: () => {
207
+ const allTypes: CreditTransaction[] = [
208
+ {
209
+ id: "t-debit",
210
+ type: "debit",
211
+ amount: 150,
212
+ description: "Kubernetes cluster deployment",
213
+ service: "InfraOperator",
214
+ timestamp: minutesAgo(5),
215
+ status: "completed",
216
+ },
217
+ {
218
+ id: "t-credit",
219
+ type: "credit",
220
+ amount: 500,
221
+ description: "Credit pack purchase",
222
+ timestamp: minutesAgo(30),
223
+ status: "completed",
224
+ },
225
+ {
226
+ id: "t-refund",
227
+ type: "refund",
228
+ amount: 200,
229
+ description: "Failed deployment refund",
230
+ service: "InfraOperator",
231
+ timestamp: hoursAgo(2),
232
+ status: "completed",
233
+ },
234
+ {
235
+ id: "t-bonus",
236
+ type: "bonus",
237
+ amount: 100,
238
+ description: "Welcome bonus credits",
239
+ timestamp: daysAgo(1),
240
+ status: "completed",
241
+ },
242
+ {
243
+ id: "t-expiry",
244
+ type: "expiry",
245
+ amount: 250,
246
+ description: "Promotional credits expired",
247
+ timestamp: daysAgo(3),
248
+ status: "completed",
249
+ },
250
+ ]
251
+
252
+ return (
253
+ <div className="w-[460px]">
254
+ <p className="text-sm text-muted-foreground mb-4">
255
+ All transaction types with their respective colors and icons
256
+ </p>
257
+ <WakaCreditActivityFeed activities={allTypes} />
258
+ </div>
259
+ )
260
+ },
261
+ }
@@ -0,0 +1,364 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { cn } from "../../utils/cn"
5
+ import {
6
+ ArrowDownLeft,
7
+ ArrowUpRight,
8
+ RotateCcw,
9
+ Gift,
10
+ Clock,
11
+ ChevronDown,
12
+ Inbox,
13
+ } from "lucide-react"
14
+ import { Button } from "../button"
15
+ import type {
16
+ CreditTransaction,
17
+ CreditTransactionType,
18
+ } from "../waka-credit-balance/types"
19
+
20
+ // ============================================================================
21
+ // Types
22
+ // ============================================================================
23
+
24
+ export interface WakaCreditActivityFeedProps {
25
+ /** List of credit transactions to display */
26
+ activities: CreditTransaction[]
27
+ /** Maximum number of items to display */
28
+ maxItems?: number
29
+ /** Show "Load more" button at bottom */
30
+ showLoadMore?: boolean
31
+ /** Callback when "Load more" is clicked */
32
+ onLoadMore?: () => void
33
+ /** Show loading skeleton state */
34
+ loading?: boolean
35
+ /** Message to display when activity list is empty */
36
+ emptyMessage?: string
37
+ /** Enable staggered fade-in animation for items */
38
+ animated?: boolean
39
+ /** Additional CSS classes */
40
+ className?: string
41
+ }
42
+
43
+ // ============================================================================
44
+ // Transaction Type Configuration
45
+ // ============================================================================
46
+
47
+ const transactionTypeConfig: Record<
48
+ CreditTransactionType,
49
+ {
50
+ icon: React.ElementType
51
+ color: string
52
+ bgColor: string
53
+ dotColor: string
54
+ amountColor: string
55
+ amountPrefix: string
56
+ label: string
57
+ }
58
+ > = {
59
+ debit: {
60
+ icon: ArrowDownLeft,
61
+ color: "text-red-600 dark:text-red-400",
62
+ bgColor: "bg-red-100 dark:bg-red-900/30",
63
+ dotColor: "bg-red-500",
64
+ amountColor: "text-red-600 dark:text-red-400",
65
+ amountPrefix: "-",
66
+ label: "Debit",
67
+ },
68
+ credit: {
69
+ icon: ArrowUpRight,
70
+ color: "text-green-600 dark:text-green-400",
71
+ bgColor: "bg-green-100 dark:bg-green-900/30",
72
+ dotColor: "bg-green-500",
73
+ amountColor: "text-green-600 dark:text-green-400",
74
+ amountPrefix: "+",
75
+ label: "Credit",
76
+ },
77
+ refund: {
78
+ icon: RotateCcw,
79
+ color: "text-blue-600 dark:text-blue-400",
80
+ bgColor: "bg-blue-100 dark:bg-blue-900/30",
81
+ dotColor: "bg-blue-500",
82
+ amountColor: "text-blue-600 dark:text-blue-400",
83
+ amountPrefix: "+",
84
+ label: "Refund",
85
+ },
86
+ bonus: {
87
+ icon: Gift,
88
+ color: "text-purple-600 dark:text-purple-400",
89
+ bgColor: "bg-purple-100 dark:bg-purple-900/30",
90
+ dotColor: "bg-purple-500",
91
+ amountColor: "text-purple-600 dark:text-purple-400",
92
+ amountPrefix: "+",
93
+ label: "Bonus",
94
+ },
95
+ expiry: {
96
+ icon: Clock,
97
+ color: "text-gray-500 dark:text-gray-400",
98
+ bgColor: "bg-gray-100 dark:bg-gray-800/30",
99
+ dotColor: "bg-gray-400",
100
+ amountColor: "text-gray-500 dark:text-gray-400",
101
+ amountPrefix: "-",
102
+ label: "Expired",
103
+ },
104
+ }
105
+
106
+ // ============================================================================
107
+ // Helpers
108
+ // ============================================================================
109
+
110
+ function formatRelativeTime(date: Date): string {
111
+ const now = new Date()
112
+ const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000)
113
+
114
+ if (diffInSeconds < 60) {
115
+ return "just now"
116
+ }
117
+
118
+ const diffInMinutes = Math.floor(diffInSeconds / 60)
119
+ if (diffInMinutes < 60) {
120
+ return `${diffInMinutes} min ago`
121
+ }
122
+
123
+ const diffInHours = Math.floor(diffInMinutes / 60)
124
+ if (diffInHours < 24) {
125
+ return `${diffInHours}h ago`
126
+ }
127
+
128
+ const diffInDays = Math.floor(diffInHours / 24)
129
+ if (diffInDays === 1) {
130
+ return "yesterday"
131
+ }
132
+ if (diffInDays < 7) {
133
+ return `${diffInDays} days ago`
134
+ }
135
+
136
+ const diffInWeeks = Math.floor(diffInDays / 7)
137
+ if (diffInWeeks < 4) {
138
+ return `${diffInWeeks}w ago`
139
+ }
140
+
141
+ const diffInMonths = Math.floor(diffInDays / 30)
142
+ if (diffInMonths < 12) {
143
+ return `${diffInMonths}mo ago`
144
+ }
145
+
146
+ const diffInYears = Math.floor(diffInDays / 365)
147
+ return `${diffInYears}y ago`
148
+ }
149
+
150
+ function formatAmount(amount: number, prefix: string): string {
151
+ return `${prefix}${amount.toLocaleString("en-US")}`
152
+ }
153
+
154
+ // ============================================================================
155
+ // Skeleton Item
156
+ // ============================================================================
157
+
158
+ function ActivitySkeleton() {
159
+ return (
160
+ <div className="flex gap-3 py-3">
161
+ {/* Timeline dot placeholder */}
162
+ <div className="flex flex-col items-center flex-shrink-0">
163
+ <div className="h-8 w-8 rounded-full bg-muted animate-pulse" />
164
+ </div>
165
+ {/* Content placeholder */}
166
+ <div className="flex-1 min-w-0 space-y-2">
167
+ <div className="h-4 w-3/4 bg-muted rounded animate-pulse" />
168
+ <div className="h-3 w-1/3 bg-muted rounded animate-pulse" />
169
+ </div>
170
+ {/* Amount placeholder */}
171
+ <div className="flex flex-col items-end flex-shrink-0 space-y-2">
172
+ <div className="h-4 w-16 bg-muted rounded animate-pulse" />
173
+ <div className="h-3 w-12 bg-muted rounded animate-pulse" />
174
+ </div>
175
+ </div>
176
+ )
177
+ }
178
+
179
+ // ============================================================================
180
+ // Activity Item
181
+ // ============================================================================
182
+
183
+ interface ActivityItemProps {
184
+ activity: CreditTransaction
185
+ isLast: boolean
186
+ animated: boolean
187
+ index: number
188
+ }
189
+
190
+ function ActivityItem({ activity, isLast, animated, index }: ActivityItemProps) {
191
+ const config = transactionTypeConfig[activity.type]
192
+ const Icon = config.icon
193
+ const timestamp = new Date(activity.timestamp)
194
+
195
+ return (
196
+ <div
197
+ className={cn(
198
+ "relative flex gap-3 py-3",
199
+ animated && "animate-feed-item-in",
200
+ )}
201
+ style={
202
+ animated
203
+ ? ({ "--stagger-delay": `${index * 80}ms` } as React.CSSProperties)
204
+ : undefined
205
+ }
206
+ >
207
+ {/* Timeline column: icon + connecting line */}
208
+ <div className="flex flex-col items-center flex-shrink-0">
209
+ <div
210
+ className={cn(
211
+ "flex h-8 w-8 items-center justify-center rounded-full flex-shrink-0",
212
+ config.bgColor,
213
+ )}
214
+ >
215
+ <Icon className={cn("h-4 w-4", config.color)} />
216
+ </div>
217
+ {!isLast && (
218
+ <div className="w-px flex-1 bg-border mt-1 min-h-[16px]" />
219
+ )}
220
+ </div>
221
+
222
+ {/* Content */}
223
+ <div className="flex-1 min-w-0 pt-1">
224
+ <p className="text-sm font-medium text-foreground leading-tight truncate">
225
+ {activity.description}
226
+ </p>
227
+ {activity.service && (
228
+ <p className="text-xs text-muted-foreground mt-0.5 truncate">
229
+ {activity.service}
230
+ </p>
231
+ )}
232
+ </div>
233
+
234
+ {/* Amount + Time */}
235
+ <div className="flex flex-col items-end flex-shrink-0 pt-1">
236
+ <span
237
+ className={cn(
238
+ "text-sm font-semibold tabular-nums",
239
+ config.amountColor,
240
+ )}
241
+ >
242
+ {formatAmount(activity.amount, config.amountPrefix)}
243
+ </span>
244
+ <span className="text-xs text-muted-foreground mt-0.5">
245
+ {formatRelativeTime(timestamp)}
246
+ </span>
247
+ </div>
248
+ </div>
249
+ )
250
+ }
251
+
252
+ // ============================================================================
253
+ // Empty State
254
+ // ============================================================================
255
+
256
+ interface EmptyStateProps {
257
+ message: string
258
+ }
259
+
260
+ function EmptyState({ message }: EmptyStateProps) {
261
+ return (
262
+ <div className="flex flex-col items-center justify-center py-12 text-center">
263
+ <Inbox className="h-12 w-12 text-muted-foreground/50 mb-4" />
264
+ <p className="text-sm text-muted-foreground">{message}</p>
265
+ </div>
266
+ )
267
+ }
268
+
269
+ // ============================================================================
270
+ // Main Component
271
+ // ============================================================================
272
+
273
+ export function WakaCreditActivityFeed({
274
+ activities,
275
+ maxItems,
276
+ showLoadMore = false,
277
+ onLoadMore,
278
+ loading = false,
279
+ emptyMessage = "No recent activity",
280
+ animated = false,
281
+ className,
282
+ }: WakaCreditActivityFeedProps) {
283
+ const displayActivities = React.useMemo(() => {
284
+ if (maxItems && maxItems > 0) {
285
+ return activities.slice(0, maxItems)
286
+ }
287
+ return activities
288
+ }, [activities, maxItems])
289
+
290
+ // Loading state
291
+ if (loading) {
292
+ return (
293
+ <div className={cn("divide-y divide-transparent", className)}>
294
+ {Array.from({ length: 4 }).map((_, i) => (
295
+ <ActivitySkeleton key={i} />
296
+ ))}
297
+ </div>
298
+ )
299
+ }
300
+
301
+ // Empty state
302
+ if (displayActivities.length === 0) {
303
+ return (
304
+ <div className={className}>
305
+ <EmptyState message={emptyMessage} />
306
+ </div>
307
+ )
308
+ }
309
+
310
+ return (
311
+ <div className={cn("relative", className)}>
312
+ {/* Activity list */}
313
+ <div>
314
+ {displayActivities.map((activity, index) => (
315
+ <ActivityItem
316
+ key={activity.id}
317
+ activity={activity}
318
+ isLast={index === displayActivities.length - 1}
319
+ animated={animated}
320
+ index={index}
321
+ />
322
+ ))}
323
+ </div>
324
+
325
+ {/* Load More */}
326
+ {showLoadMore && onLoadMore && (
327
+ <div className="flex justify-center pt-2">
328
+ <Button
329
+ variant="outline"
330
+ size="sm"
331
+ onClick={onLoadMore}
332
+ className="gap-2"
333
+ >
334
+ <ChevronDown className="h-4 w-4" />
335
+ Load more
336
+ </Button>
337
+ </div>
338
+ )}
339
+
340
+ {/* Animation styles */}
341
+ {animated && (
342
+ <style>{`
343
+ @keyframes feed-item-in {
344
+ 0% {
345
+ opacity: 0;
346
+ transform: translateY(8px);
347
+ }
348
+ 100% {
349
+ opacity: 1;
350
+ transform: translateY(0);
351
+ }
352
+ }
353
+ .animate-feed-item-in {
354
+ opacity: 0;
355
+ animation: feed-item-in 0.35s ease-out forwards;
356
+ animation-delay: var(--stagger-delay, 0ms);
357
+ }
358
+ `}</style>
359
+ )}
360
+ </div>
361
+ )
362
+ }
363
+
364
+ export default WakaCreditActivityFeed