@wakastellar/ui 3.2.0 → 3.3.2

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 (518) 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 +95716 -98932
  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 +100 -70
  85. package/src/blocks/footer/index.tsx +7 -1
  86. package/src/blocks/login/index.tsx +7 -1
  87. package/src/blocks/profile/index.tsx +5 -3
  88. package/src/blocks/waka-doc-shell/WakaDocShell.stories.tsx +198 -0
  89. package/src/blocks/waka-doc-shell/index.tsx +240 -0
  90. package/src/blocks/waka-doc-shell/types.ts +40 -0
  91. package/src/components/index.ts +46 -0
  92. package/src/components/waka-actor-badge/index.tsx +34 -0
  93. package/src/components/waka-actors-list/index.tsx +125 -0
  94. package/src/components/waka-ai-assistant-button/index.tsx +31 -0
  95. package/src/components/waka-credit-activity-feed/WakaCreditActivityFeed.stories.tsx +261 -0
  96. package/src/components/waka-credit-activity-feed/index.tsx +364 -0
  97. package/src/components/waka-credit-alert/WakaCreditAlert.stories.tsx +170 -0
  98. package/src/components/waka-credit-alert/index.tsx +179 -0
  99. package/src/components/waka-credit-balance/WakaCreditBalance.stories.tsx +259 -0
  100. package/src/components/waka-credit-balance/index.tsx +433 -0
  101. package/src/components/waka-credit-balance/types.ts +38 -0
  102. package/src/components/waka-credit-breakdown/WakaCreditBreakdown.stories.tsx +186 -0
  103. package/src/components/waka-credit-breakdown/index.tsx +487 -0
  104. package/src/components/waka-credit-burn-rate/WakaCreditBurnRate.stories.tsx +227 -0
  105. package/src/components/waka-credit-burn-rate/index.tsx +475 -0
  106. package/src/components/waka-credit-history/WakaCreditHistory.stories.tsx +290 -0
  107. package/src/components/waka-credit-history/index.tsx +654 -0
  108. package/src/components/waka-credit-meter/WakaCreditMeter.stories.tsx +418 -0
  109. package/src/components/waka-credit-meter/index.tsx +624 -0
  110. package/src/components/waka-credit-pricing-pack/WakaCreditPricingPack.stories.tsx +217 -0
  111. package/src/components/waka-credit-pricing-pack/index.tsx +185 -0
  112. package/src/components/waka-credit-projection/WakaCreditProjection.stories.tsx +163 -0
  113. package/src/components/waka-credit-projection/index.tsx +345 -0
  114. package/src/components/waka-credit-quota/WakaCreditQuota.stories.tsx +260 -0
  115. package/src/components/waka-credit-quota/index.tsx +461 -0
  116. package/src/components/waka-credit-receipt/WakaCreditReceipt.stories.tsx +98 -0
  117. package/src/components/waka-credit-receipt/index.tsx +247 -0
  118. package/src/components/waka-credit-top-up/WakaCreditTopUp.stories.tsx +196 -0
  119. package/src/components/waka-credit-top-up/index.tsx +403 -0
  120. package/src/components/waka-credit-transaction/WakaCreditTransaction.stories.tsx +218 -0
  121. package/src/components/waka-credit-transaction/index.tsx +278 -0
  122. package/src/components/waka-credit-transfer-form/WakaCreditTransferForm.stories.tsx +122 -0
  123. package/src/components/waka-credit-transfer-form/index.tsx +352 -0
  124. package/src/components/waka-credit-usage-chart/WakaCreditUsageChart.stories.tsx +214 -0
  125. package/src/components/waka-credit-usage-chart/index.tsx +307 -0
  126. package/src/components/waka-doc-breadcrumb/WakaDocBreadcrumb.stories.tsx +47 -0
  127. package/src/components/waka-doc-breadcrumb/index.tsx +42 -0
  128. package/src/components/waka-doc-callout/WakaDocCallout.stories.tsx +67 -0
  129. package/src/components/waka-doc-callout/index.tsx +86 -0
  130. package/src/components/waka-doc-code-block/WakaDocCodeBlock.stories.tsx +92 -0
  131. package/src/components/waka-doc-code-block/index.tsx +120 -0
  132. package/src/components/waka-doc-nav/WakaDocNav.stories.tsx +95 -0
  133. package/src/components/waka-doc-nav/index.tsx +125 -0
  134. package/src/components/waka-doc-renderer/WakaDocRenderer.stories.tsx +120 -0
  135. package/src/components/waka-doc-renderer/index.tsx +217 -0
  136. package/src/components/waka-doc-search/WakaDocSearch.stories.tsx +64 -0
  137. package/src/components/waka-doc-search/index.tsx +158 -0
  138. package/src/components/waka-doc-table/WakaDocTable.stories.tsx +47 -0
  139. package/src/components/waka-doc-table/index.tsx +37 -0
  140. package/src/components/waka-doc-toc/WakaDocToc.stories.tsx +54 -0
  141. package/src/components/waka-doc-toc/index.tsx +90 -0
  142. package/src/components/waka-doc-toolbar/WakaDocToolbar.stories.tsx +79 -0
  143. package/src/components/waka-doc-toolbar/index.tsx +131 -0
  144. package/src/components/waka-doc-version/WakaDocVersion.stories.tsx +41 -0
  145. package/src/components/waka-doc-version/index.tsx +63 -0
  146. package/src/components/waka-document-flyover/index.tsx +36 -0
  147. package/src/components/waka-document-preview-popup/index.tsx +103 -0
  148. package/src/components/waka-hour-balance-badge/index.tsx +43 -0
  149. package/src/components/waka-hour-consumption-table/index.tsx +72 -0
  150. package/src/components/waka-hour-pack-dialog/index.tsx +72 -0
  151. package/src/components/waka-project-stats-header/index.tsx +69 -0
  152. package/src/components/waka-step-comment-bubble/index.tsx +71 -0
  153. package/src/components/waka-step-comment-panel/index.tsx +106 -0
  154. package/src/components/waka-step-permission-matrix/index.tsx +65 -0
  155. package/src/components/waka-time-entry-dialog/index.tsx +131 -0
  156. package/src/components/waka-time-tracking-flyover/index.tsx +41 -0
  157. package/dist/cn-B-fTneHh.js +0 -1
  158. package/dist/cn-DzRe1GWm.mjs +0 -21
  159. package/dist/components/command/index.d.ts +0 -51
  160. package/dist/exceljs.min-BcLLX0PC.js +0 -29
  161. package/dist/exceljs.min-KOayaaQ4.mjs +0 -23013
  162. package/dist/index-B9GTFkji.js +0 -1
  163. package/dist/index-c0jcWyEL.mjs +0 -466
  164. package/dist/types-BOWIoR7j.mjs +0 -1111
  165. package/dist/types-D2yCJ91P.js +0 -1
  166. package/dist/useDataTableImport-COVnvslz.js +0 -9
  167. package/dist/useDataTableImport-DAlxBY8w.mjs +0 -237
  168. /package/dist/{blocks → src/blocks}/activity-timeline/index.d.ts +0 -0
  169. /package/dist/{blocks → src/blocks}/antivirus-dashboard/index.d.ts +0 -0
  170. /package/dist/{blocks → src/blocks}/apm-overview/index.d.ts +0 -0
  171. /package/dist/{blocks → src/blocks}/auth-2fa/index.d.ts +0 -0
  172. /package/dist/{blocks → src/blocks}/calendar-view/index.d.ts +0 -0
  173. /package/dist/{blocks → src/blocks}/chat/index.d.ts +0 -0
  174. /package/dist/{blocks → src/blocks}/chat/widget.d.ts +0 -0
  175. /package/dist/{blocks → src/blocks}/chat-interface/index.d.ts +0 -0
  176. /package/dist/{blocks → src/blocks}/checkout-flow/index.d.ts +0 -0
  177. /package/dist/{blocks → src/blocks}/cicd-builder/index.d.ts +0 -0
  178. /package/dist/{blocks → src/blocks}/clamav-service-status/index.d.ts +0 -0
  179. /package/dist/{blocks → src/blocks}/cloud-cost-dashboard/index.d.ts +0 -0
  180. /package/dist/{blocks → src/blocks}/container-orchestrator/index.d.ts +0 -0
  181. /package/dist/{blocks → src/blocks}/dashboard/index.d.ts +0 -0
  182. /package/dist/{blocks → src/blocks}/dashboard-kpi/index.d.ts +0 -0
  183. /package/dist/{blocks → src/blocks}/database-admin/index.d.ts +0 -0
  184. /package/dist/{blocks → src/blocks}/deployment-dashboard/index.d.ts +0 -0
  185. /package/dist/{blocks → src/blocks}/empty-states/index.d.ts +0 -0
  186. /package/dist/{blocks → src/blocks}/error-pages/index.d.ts +0 -0
  187. /package/dist/{blocks → src/blocks}/faq/index.d.ts +0 -0
  188. /package/dist/{blocks → src/blocks}/file-manager/index.d.ts +0 -0
  189. /package/dist/{blocks → src/blocks}/file-scan-uploader/index.d.ts +0 -0
  190. /package/dist/{blocks → src/blocks}/footer/index.d.ts +0 -0
  191. /package/dist/{blocks → src/blocks}/gitops-sync-status/index.d.ts +0 -0
  192. /package/dist/{blocks → src/blocks}/header/index.d.ts +0 -0
  193. /package/dist/{blocks → src/blocks}/headtab/index.d.ts +0 -0
  194. /package/dist/{blocks → src/blocks}/i18n-editor/index.d.ts +0 -0
  195. /package/dist/{blocks → src/blocks}/incident-manager/index.d.ts +0 -0
  196. /package/dist/{blocks → src/blocks}/index.d.ts +0 -0
  197. /package/dist/{blocks → src/blocks}/infrastructure-map/index.d.ts +0 -0
  198. /package/dist/{blocks → src/blocks}/kanban-board/index.d.ts +0 -0
  199. /package/dist/{blocks → src/blocks}/landing/index.d.ts +0 -0
  200. /package/dist/{blocks → src/blocks}/language-selector/index.d.ts +0 -0
  201. /package/dist/{blocks → src/blocks}/layout/index.d.ts +0 -0
  202. /package/dist/{blocks → src/blocks}/login/index.d.ts +0 -0
  203. /package/dist/{blocks → src/blocks}/login/types.d.ts +0 -0
  204. /package/dist/{blocks → src/blocks}/on-call-schedule/index.d.ts +0 -0
  205. /package/dist/{blocks → src/blocks}/player-profile/index.d.ts +0 -0
  206. /package/dist/{blocks → src/blocks}/pricing/index.d.ts +0 -0
  207. /package/dist/{blocks → src/blocks}/profile/index.d.ts +0 -0
  208. /package/dist/{blocks → src/blocks}/quarantine-manager/index.d.ts +0 -0
  209. /package/dist/{blocks → src/blocks}/release-notes/index.d.ts +0 -0
  210. /package/dist/{blocks → src/blocks}/scan-history-log/index.d.ts +0 -0
  211. /package/dist/{blocks → src/blocks}/scan-policy-editor/index.d.ts +0 -0
  212. /package/dist/{blocks → src/blocks}/scan-report-generator/index.d.ts +0 -0
  213. /package/dist/{blocks → src/blocks}/settings/index.d.ts +0 -0
  214. /package/dist/{blocks → src/blocks}/sidebar/index.d.ts +0 -0
  215. /package/dist/{blocks → src/blocks}/signature-database-manager/index.d.ts +0 -0
  216. /package/dist/{blocks → src/blocks}/threat-alert-banner/index.d.ts +0 -0
  217. /package/dist/{blocks → src/blocks}/user-management/index.d.ts +0 -0
  218. /package/dist/{blocks → src/blocks}/wizard/index.d.ts +0 -0
  219. /package/dist/{cli → src/cli}/commands/add.d.ts +0 -0
  220. /package/dist/{cli → src/cli}/commands/init.d.ts +0 -0
  221. /package/dist/{cli → src/cli}/commands/list.d.ts +0 -0
  222. /package/dist/{cli → src/cli}/commands/search.d.ts +0 -0
  223. /package/dist/{cli → src/cli}/index.d.ts +0 -0
  224. /package/dist/{cli → src/cli}/utils/config.d.ts +0 -0
  225. /package/dist/{cli → src/cli}/utils/logger.d.ts +0 -0
  226. /package/dist/{cli → src/cli}/utils/registry.d.ts +0 -0
  227. /package/dist/{components → src/components}/DataTable/DataTable.d.ts +0 -0
  228. /package/dist/{components → src/components}/DataTable/DataTableAdvanced.d.ts +0 -0
  229. /package/dist/{components → src/components}/DataTable/DataTableColumnResizer.d.ts +0 -0
  230. /package/dist/{components → src/components}/DataTable/DataTableContextMenu.d.ts +0 -0
  231. /package/dist/{components → src/components}/DataTable/DataTableEditCell.d.ts +0 -0
  232. /package/dist/{components → src/components}/DataTable/DataTableFilters.d.ts +0 -0
  233. /package/dist/{components → src/components}/DataTable/DataTableGrouping.d.ts +0 -0
  234. /package/dist/{components → src/components}/DataTable/DataTablePagination.d.ts +0 -0
  235. /package/dist/{components → src/components}/DataTable/DataTableSelection.d.ts +0 -0
  236. /package/dist/{components → src/components}/DataTable/DataTableToolbar.d.ts +0 -0
  237. /package/dist/{components → src/components}/DataTable/examples/EditExample.d.ts +0 -0
  238. /package/dist/{components → src/components}/DataTable/hooks/useDataTable.d.ts +0 -0
  239. /package/dist/{components → src/components}/DataTable/hooks/useDataTableAdvanced.d.ts +0 -0
  240. /package/dist/{components → src/components}/DataTable/hooks/useDataTableEdit.d.ts +0 -0
  241. /package/dist/{components → src/components}/DataTable/hooks/useDataTableExport.d.ts +0 -0
  242. /package/dist/{components → src/components}/DataTable/hooks/useDataTableImport.d.ts +0 -0
  243. /package/dist/{components → src/components}/DataTable/hooks/useDataTableTheme.d.ts +0 -0
  244. /package/dist/{components → src/components}/DataTable/hooks/useDataTableVirtualization.d.ts +0 -0
  245. /package/dist/{components → src/components}/DataTable/hooks/useTableLayout.d.ts +0 -0
  246. /package/dist/{components → src/components}/DataTable/index.d.ts +0 -0
  247. /package/dist/{components → src/components}/DataTable/types.d.ts +0 -0
  248. /package/dist/{components → src/components}/DataTable/utils.d.ts +0 -0
  249. /package/dist/{components → src/components}/accordion/index.d.ts +0 -0
  250. /package/dist/{components → src/components}/alert/index.d.ts +0 -0
  251. /package/dist/{components → src/components}/alert-dialog/index.d.ts +0 -0
  252. /package/dist/{components → src/components}/aspect-ratio/index.d.ts +0 -0
  253. /package/dist/{components → src/components}/avatar/index.d.ts +0 -0
  254. /package/dist/{components → src/components}/badge/index.d.ts +0 -0
  255. /package/dist/{components → src/components}/button/index.d.ts +0 -0
  256. /package/dist/{components → src/components}/calendar/index.d.ts +0 -0
  257. /package/dist/{components → src/components}/card/index.d.ts +0 -0
  258. /package/dist/{components → src/components}/checkbox/index.d.ts +0 -0
  259. /package/dist/{components → src/components}/code/index.d.ts +0 -0
  260. /package/dist/{components → src/components}/collapsible/index.d.ts +0 -0
  261. /package/dist/{components → src/components}/context-menu/index.d.ts +0 -0
  262. /package/dist/{components → src/components}/dialog/index.d.ts +0 -0
  263. /package/dist/{components → src/components}/dropdown-menu/index.d.ts +0 -0
  264. /package/dist/{components → src/components}/error-boundary/ErrorBoundary.d.ts +0 -0
  265. /package/dist/{components → src/components}/error-boundary/index.d.ts +0 -0
  266. /package/dist/{components → src/components}/form/index.d.ts +0 -0
  267. /package/dist/{components → src/components}/hover-card/index.d.ts +0 -0
  268. /package/dist/{components → src/components}/input/index.d.ts +0 -0
  269. /package/dist/{components → src/components}/input-otp/index.d.ts +0 -0
  270. /package/dist/{components → src/components}/label/index.d.ts +0 -0
  271. /package/dist/{components → src/components}/language-selector/index.d.ts +0 -0
  272. /package/dist/{components → src/components}/menubar/index.d.ts +0 -0
  273. /package/dist/{components → src/components}/navigation-menu/index.d.ts +0 -0
  274. /package/dist/{components → src/components}/popover/index.d.ts +0 -0
  275. /package/dist/{components → src/components}/progress/index.d.ts +0 -0
  276. /package/dist/{components → src/components}/radio-group/index.d.ts +0 -0
  277. /package/dist/{components → src/components}/scroll-area/index.d.ts +0 -0
  278. /package/dist/{components → src/components}/select/index.d.ts +0 -0
  279. /package/dist/{components → src/components}/separator/index.d.ts +0 -0
  280. /package/dist/{components → src/components}/sheet/index.d.ts +0 -0
  281. /package/dist/{components → src/components}/skeleton/index.d.ts +0 -0
  282. /package/dist/{components → src/components}/slider/index.d.ts +0 -0
  283. /package/dist/{components → src/components}/switch/index.d.ts +0 -0
  284. /package/dist/{components → src/components}/table/index.d.ts +0 -0
  285. /package/dist/{components → src/components}/tabs/index.d.ts +0 -0
  286. /package/dist/{components → src/components}/textarea/index.d.ts +0 -0
  287. /package/dist/{components → src/components}/theme-selector/index.d.ts +0 -0
  288. /package/dist/{components → src/components}/toast/index.d.ts +0 -0
  289. /package/dist/{components → src/components}/toaster/index.d.ts +0 -0
  290. /package/dist/{components → src/components}/toggle/index.d.ts +0 -0
  291. /package/dist/{components → src/components}/tooltip/index.d.ts +0 -0
  292. /package/dist/{components → src/components}/typography/index.d.ts +0 -0
  293. /package/dist/{components → src/components}/waka-3d-pie-chart/index.d.ts +0 -0
  294. /package/dist/{components → src/components}/waka-achievement-unlock/index.d.ts +0 -0
  295. /package/dist/{components → src/components}/waka-activity-feed/index.d.ts +0 -0
  296. /package/dist/{components → src/components}/waka-ad-banner/index.d.ts +0 -0
  297. /package/dist/{components → src/components}/waka-ad-fallback/index.d.ts +0 -0
  298. /package/dist/{components → src/components}/waka-ad-inline/index.d.ts +0 -0
  299. /package/dist/{components → src/components}/waka-ad-interstitial/index.d.ts +0 -0
  300. /package/dist/{components → src/components}/waka-ad-placeholder/index.d.ts +0 -0
  301. /package/dist/{components → src/components}/waka-ad-provider/index.d.ts +0 -0
  302. /package/dist/{components → src/components}/waka-ad-sidebar/index.d.ts +0 -0
  303. /package/dist/{components → src/components}/waka-ad-sticky-footer/index.d.ts +0 -0
  304. /package/dist/{components → src/components}/waka-address-autocomplete/index.d.ts +0 -0
  305. /package/dist/{components → src/components}/waka-admincrumb/index.d.ts +0 -0
  306. /package/dist/{components → src/components}/waka-alert-panel/index.d.ts +0 -0
  307. /package/dist/{components → src/components}/waka-alert-stack/index.d.ts +0 -0
  308. /package/dist/{components → src/components}/waka-allocation-matrix/index.d.ts +0 -0
  309. /package/dist/{components → src/components}/waka-approval-chain/index.d.ts +0 -0
  310. /package/dist/{components → src/components}/waka-artifact-list/index.d.ts +0 -0
  311. /package/dist/{components → src/components}/waka-audit-log/index.d.ts +0 -0
  312. /package/dist/{components → src/components}/waka-autocomplete/index.d.ts +0 -0
  313. /package/dist/{components → src/components}/waka-badge-showcase/index.d.ts +0 -0
  314. /package/dist/{components → src/components}/waka-barcode/index.d.ts +0 -0
  315. /package/dist/{components → src/components}/waka-biometric-prompt/index.d.ts +0 -0
  316. /package/dist/{components → src/components}/waka-bottom-sheet/index.d.ts +0 -0
  317. /package/dist/{components → src/components}/waka-breadcrumb/index.d.ts +0 -0
  318. /package/dist/{components → src/components}/waka-breadcrumb-path/index.d.ts +0 -0
  319. /package/dist/{components → src/components}/waka-budget-burn/index.d.ts +0 -0
  320. /package/dist/{components → src/components}/waka-build-matrix/index.d.ts +0 -0
  321. /package/dist/{components → src/components}/waka-capacity-planner/index.d.ts +0 -0
  322. /package/dist/{components → src/components}/waka-carousel/index.d.ts +0 -0
  323. /package/dist/{components → src/components}/waka-cart-summary/index.d.ts +0 -0
  324. /package/dist/{components → src/components}/waka-challenge-timer/index.d.ts +0 -0
  325. /package/dist/{components → src/components}/waka-charts/WakaAreaChart.d.ts +0 -0
  326. /package/dist/{components → src/components}/waka-charts/WakaBarChart.d.ts +0 -0
  327. /package/dist/{components → src/components}/waka-charts/WakaChart.d.ts +0 -0
  328. /package/dist/{components → src/components}/waka-charts/WakaLineChart.d.ts +0 -0
  329. /package/dist/{components → src/components}/waka-charts/WakaMiniChart.d.ts +0 -0
  330. /package/dist/{components → src/components}/waka-charts/WakaPieChart.d.ts +0 -0
  331. /package/dist/{components → src/components}/waka-charts/WakaSparkline.d.ts +0 -0
  332. /package/dist/{components → src/components}/waka-charts/dataTableHelpers.d.ts +0 -0
  333. /package/dist/{components → src/components}/waka-charts/hooks/useChartTheme.d.ts +0 -0
  334. /package/dist/{components → src/components}/waka-charts/hooks/useRechartsLoader.d.ts +0 -0
  335. /package/dist/{components → src/components}/waka-charts/index.d.ts +0 -0
  336. /package/dist/{components → src/components}/waka-charts/types.d.ts +0 -0
  337. /package/dist/{components → src/components}/waka-chat-bubble/index.d.ts +0 -0
  338. /package/dist/{components → src/components}/waka-checklist/index.d.ts +0 -0
  339. /package/dist/{components → src/components}/waka-checkout-stepper/index.d.ts +0 -0
  340. /package/dist/{components → src/components}/waka-cohort-table/index.d.ts +0 -0
  341. /package/dist/{components → src/components}/waka-color-picker/index.d.ts +0 -0
  342. /package/dist/{components → src/components}/waka-combo-counter/index.d.ts +0 -0
  343. /package/dist/{components → src/components}/waka-combobox/index.d.ts +0 -0
  344. /package/dist/{components → src/components}/waka-command-bar/index.d.ts +0 -0
  345. /package/dist/{components → src/components}/waka-compare-period/index.d.ts +0 -0
  346. /package/dist/{components → src/components}/waka-config-comparator/index.d.ts +0 -0
  347. /package/dist/{components → src/components}/waka-connection-matrix/index.d.ts +0 -0
  348. /package/dist/{components → src/components}/waka-container-list/index.d.ts +0 -0
  349. /package/dist/{components → src/components}/waka-content-recommendation/index.d.ts +0 -0
  350. /package/dist/{components → src/components}/waka-contribution-graph/index.d.ts +0 -0
  351. /package/dist/{components → src/components}/waka-cost-breakdown/index.d.ts +0 -0
  352. /package/dist/{components → src/components}/waka-coupon-input/index.d.ts +0 -0
  353. /package/dist/{components → src/components}/waka-credit-card-input/index.d.ts +0 -0
  354. /package/dist/{components → src/components}/waka-daily-reward/index.d.ts +0 -0
  355. /package/dist/{components → src/components}/waka-database-card/index.d.ts +0 -0
  356. /package/dist/{components → src/components}/waka-date-range-picker/index.d.ts +0 -0
  357. /package/dist/{components → src/components}/waka-datetime-picker/index.d.ts +0 -0
  358. /package/dist/{components → src/components}/waka-datetime-picker.form-integration/index.d.ts +0 -0
  359. /package/dist/{components → src/components}/waka-dependency-tree/index.d.ts +0 -0
  360. /package/dist/{components → src/components}/waka-deployment-lane/index.d.ts +0 -0
  361. /package/dist/{components → src/components}/waka-device-trust/index.d.ts +0 -0
  362. /package/dist/{components → src/components}/waka-dock/index.d.ts +0 -0
  363. /package/dist/{components → src/components}/waka-drawer/index.d.ts +0 -0
  364. /package/dist/{components → src/components}/waka-empty-state/index.d.ts +0 -0
  365. /package/dist/{components → src/components}/waka-env-var-editor/index.d.ts +0 -0
  366. /package/dist/{components → src/components}/waka-error-shake/index.d.ts +0 -0
  367. /package/dist/{components → src/components}/waka-feature-announcement/index.d.ts +0 -0
  368. /package/dist/{components → src/components}/waka-feature-flag-row/index.d.ts +0 -0
  369. /package/dist/{components → src/components}/waka-file-upload/index.d.ts +0 -0
  370. /package/dist/{components → src/components}/waka-floating-nav/index.d.ts +0 -0
  371. /package/dist/{components → src/components}/waka-flow-diagram/index.d.ts +0 -0
  372. /package/dist/{components → src/components}/waka-funnel-chart/index.d.ts +0 -0
  373. /package/dist/{components → src/components}/waka-glow-card/index.d.ts +0 -0
  374. /package/dist/{components → src/components}/waka-goal-progress/index.d.ts +0 -0
  375. /package/dist/{components → src/components}/waka-haptic-button/index.d.ts +0 -0
  376. /package/dist/{components → src/components}/waka-health-pulse/index.d.ts +0 -0
  377. /package/dist/{components → src/components}/waka-heatmap/index.d.ts +0 -0
  378. /package/dist/{components → src/components}/waka-hotspot/index.d.ts +0 -0
  379. /package/dist/{components → src/components}/waka-image/index.d.ts +0 -0
  380. /package/dist/{components → src/components}/waka-incident-timeline/index.d.ts +0 -0
  381. /package/dist/{components → src/components}/waka-invoice-preview/index.d.ts +0 -0
  382. /package/dist/{components → src/components}/waka-kanban/index.d.ts +0 -0
  383. /package/dist/{components → src/components}/waka-kpi-dashboard/index.d.ts +0 -0
  384. /package/dist/{components → src/components}/waka-kubernetes-overview/index.d.ts +0 -0
  385. /package/dist/{components → src/components}/waka-leaderboard/index.d.ts +0 -0
  386. /package/dist/{components → src/components}/waka-level-progress/index.d.ts +0 -0
  387. /package/dist/{components → src/components}/waka-liquid-button/index.d.ts +0 -0
  388. /package/dist/{components → src/components}/waka-loading-orbit/index.d.ts +0 -0
  389. /package/dist/{components → src/components}/waka-log-viewer/index.d.ts +0 -0
  390. /package/dist/{components → src/components}/waka-loot-box/index.d.ts +0 -0
  391. /package/dist/{components → src/components}/waka-magic-link/index.d.ts +0 -0
  392. /package/dist/{components → src/components}/waka-magnetic-button/index.d.ts +0 -0
  393. /package/dist/{components → src/components}/waka-mention-input/index.d.ts +0 -0
  394. /package/dist/{components → src/components}/waka-metric-sparkline/index.d.ts +0 -0
  395. /package/dist/{components → src/components}/waka-migration-list/index.d.ts +0 -0
  396. /package/dist/{components → src/components}/waka-milestone-road/index.d.ts +0 -0
  397. /package/dist/{components → src/components}/waka-modal/index.d.ts +0 -0
  398. /package/dist/{components → src/components}/waka-morph-button/index.d.ts +0 -0
  399. /package/dist/{components → src/components}/waka-network-topology/index.d.ts +0 -0
  400. /package/dist/{components → src/components}/waka-notifications/index.d.ts +0 -0
  401. /package/dist/{components → src/components}/waka-number-input/index.d.ts +0 -0
  402. /package/dist/{components → src/components}/waka-orbital-menu/index.d.ts +0 -0
  403. /package/dist/{components → src/components}/waka-order-tracker/index.d.ts +0 -0
  404. /package/dist/{components → src/components}/waka-outstream-video/index.d.ts +0 -0
  405. /package/dist/{components → src/components}/waka-pagination/index.d.ts +0 -0
  406. /package/dist/{components → src/components}/waka-password-strength/index.d.ts +0 -0
  407. /package/dist/{components → src/components}/waka-payment-method-picker/index.d.ts +0 -0
  408. /package/dist/{components → src/components}/waka-permission-matrix/index.d.ts +0 -0
  409. /package/dist/{components → src/components}/waka-phone-input/index.d.ts +0 -0
  410. /package/dist/{components → src/components}/waka-pipeline-view/index.d.ts +0 -0
  411. /package/dist/{components → src/components}/waka-player-card/index.d.ts +0 -0
  412. /package/dist/{components → src/components}/waka-pod-card/index.d.ts +0 -0
  413. /package/dist/{components → src/components}/waka-points-popup/index.d.ts +0 -0
  414. /package/dist/{components → src/components}/waka-power-up/index.d.ts +0 -0
  415. /package/dist/{components → src/components}/waka-presence-indicator/index.d.ts +0 -0
  416. /package/dist/{components → src/components}/waka-pricing-table/index.d.ts +0 -0
  417. /package/dist/{components → src/components}/waka-product-card/index.d.ts +0 -0
  418. /package/dist/{components → src/components}/waka-progress-onboarding/index.d.ts +0 -0
  419. /package/dist/{components → src/components}/waka-pull-to-refresh/index.d.ts +0 -0
  420. /package/dist/{components → src/components}/waka-qrcode/index.d.ts +0 -0
  421. /package/dist/{components → src/components}/waka-query-explain/index.d.ts +0 -0
  422. /package/dist/{components → src/components}/waka-quest-card/index.d.ts +0 -0
  423. /package/dist/{components → src/components}/waka-quota-bar/index.d.ts +0 -0
  424. /package/dist/{components → src/components}/waka-radar-score/index.d.ts +0 -0
  425. /package/dist/{components → src/components}/waka-rank-badge/index.d.ts +0 -0
  426. /package/dist/{components → src/components}/waka-rating-input/index.d.ts +0 -0
  427. /package/dist/{components → src/components}/waka-reaction-picker/index.d.ts +0 -0
  428. /package/dist/{components → src/components}/waka-region-map/index.d.ts +0 -0
  429. /package/dist/{components → src/components}/waka-resource-gauge/index.d.ts +0 -0
  430. /package/dist/{components → src/components}/waka-resource-pool/index.d.ts +0 -0
  431. /package/dist/{components → src/components}/waka-rich-text-editor/index.d.ts +0 -0
  432. /package/dist/{components → src/components}/waka-rollback-slider/index.d.ts +0 -0
  433. /package/dist/{components → src/components}/waka-sankey-diagram/index.d.ts +0 -0
  434. /package/dist/{components → src/components}/waka-schedule-picker/index.d.ts +0 -0
  435. /package/dist/{components → src/components}/waka-scratch-card/index.d.ts +0 -0
  436. /package/dist/{components → src/components}/waka-season-pass/index.d.ts +0 -0
  437. /package/dist/{components → src/components}/waka-secret-card/index.d.ts +0 -0
  438. /package/dist/{components → src/components}/waka-security-scan-result/index.d.ts +0 -0
  439. /package/dist/{components → src/components}/waka-security-score/index.d.ts +0 -0
  440. /package/dist/{components → src/components}/waka-segmented-control/index.d.ts +0 -0
  441. /package/dist/{components → src/components}/waka-server-rack/index.d.ts +0 -0
  442. /package/dist/{components → src/components}/waka-service-graph/index.d.ts +0 -0
  443. /package/dist/{components → src/components}/waka-session-manager/index.d.ts +0 -0
  444. /package/dist/{components → src/components}/waka-signature-pad/index.d.ts +0 -0
  445. /package/dist/{components → src/components}/waka-skeleton-wave/index.d.ts +0 -0
  446. /package/dist/{components → src/components}/waka-skill-tree/index.d.ts +0 -0
  447. /package/dist/{components → src/components}/waka-sla-tracker/index.d.ts +0 -0
  448. /package/dist/{components → src/components}/waka-slider-range/index.d.ts +0 -0
  449. /package/dist/{components → src/components}/waka-spin-wheel/index.d.ts +0 -0
  450. /package/dist/{components → src/components}/waka-spinner/index.d.ts +0 -0
  451. /package/dist/{components → src/components}/waka-sponsored-badge/index.d.ts +0 -0
  452. /package/dist/{components → src/components}/waka-sponsored-card/index.d.ts +0 -0
  453. /package/dist/{components → src/components}/waka-sponsored-feed/index.d.ts +0 -0
  454. /package/dist/{components → src/components}/waka-spotlight/index.d.ts +0 -0
  455. /package/dist/{components → src/components}/waka-stat/index.d.ts +0 -0
  456. /package/dist/{components → src/components}/waka-stats-hexagon/index.d.ts +0 -0
  457. /package/dist/{components → src/components}/waka-status-matrix/index.d.ts +0 -0
  458. /package/dist/{components → src/components}/waka-stepper/index.d.ts +0 -0
  459. /package/dist/{components → src/components}/waka-streak-counter/index.d.ts +0 -0
  460. /package/dist/{components → src/components}/waka-success-explosion/index.d.ts +0 -0
  461. /package/dist/{components → src/components}/waka-swipe-card/index.d.ts +0 -0
  462. /package/dist/{components → src/components}/waka-tabs-morph/index.d.ts +0 -0
  463. /package/dist/{components → src/components}/waka-tag-input/index.d.ts +0 -0
  464. /package/dist/{components → src/components}/waka-team-banner/index.d.ts +0 -0
  465. /package/dist/{components → src/components}/waka-terminal-output/index.d.ts +0 -0
  466. /package/dist/{components → src/components}/waka-test-report/index.d.ts +0 -0
  467. /package/dist/{components → src/components}/waka-theme-creator/index.d.ts +0 -0
  468. /package/dist/{components → src/components}/waka-theme-manager/index.d.ts +0 -0
  469. /package/dist/{components → src/components}/waka-thread-view/index.d.ts +0 -0
  470. /package/dist/{components → src/components}/waka-tilt-card/index.d.ts +0 -0
  471. /package/dist/{components → src/components}/waka-time-picker/index.d.ts +0 -0
  472. /package/dist/{components → src/components}/waka-timeline/index.d.ts +0 -0
  473. /package/dist/{components → src/components}/waka-tooltip-tour/index.d.ts +0 -0
  474. /package/dist/{components → src/components}/waka-tour-guide/index.d.ts +0 -0
  475. /package/dist/{components → src/components}/waka-tournament-bracket/index.d.ts +0 -0
  476. /package/dist/{components → src/components}/waka-trace-viewer/index.d.ts +0 -0
  477. /package/dist/{components → src/components}/waka-tree/index.d.ts +0 -0
  478. /package/dist/{components → src/components}/waka-treemap-chart/index.d.ts +0 -0
  479. /package/dist/{components → src/components}/waka-two-factor-setup/index.d.ts +0 -0
  480. /package/dist/{components → src/components}/waka-typewriter/index.d.ts +0 -0
  481. /package/dist/{components → src/components}/waka-typing-indicator/index.d.ts +0 -0
  482. /package/dist/{components → src/components}/waka-versus-card/index.d.ts +0 -0
  483. /package/dist/{components → src/components}/waka-video/index.d.ts +0 -0
  484. /package/dist/{components → src/components}/waka-video-ad/index.d.ts +0 -0
  485. /package/dist/{components → src/components}/waka-video-call/index.d.ts +0 -0
  486. /package/dist/{components → src/components}/waka-video-overlay/index.d.ts +0 -0
  487. /package/dist/{components → src/components}/waka-virtual-list/index.d.ts +0 -0
  488. /package/dist/{components → src/components}/waka-voice-message/index.d.ts +0 -0
  489. /package/dist/{components → src/components}/waka-welcome-modal/index.d.ts +0 -0
  490. /package/dist/{components → src/components}/waka-xp-bar/index.d.ts +0 -0
  491. /package/dist/{context → src/context}/admincrumb-context.d.ts +0 -0
  492. /package/dist/{context → src/context}/index.d.ts +0 -0
  493. /package/dist/{context → src/context}/language-context.d.ts +0 -0
  494. /package/dist/{context → src/context}/theme-context.d.ts +0 -0
  495. /package/dist/{context → src/context}/theme-provider.d.ts +0 -0
  496. /package/dist/{context → src/context}/waka-provider.d.ts +0 -0
  497. /package/dist/{hooks → src/hooks}/index.d.ts +0 -0
  498. /package/dist/{hooks → src/hooks}/use-toast.d.ts +0 -0
  499. /package/dist/{hooks → src/hooks}/use-translation.d.ts +0 -0
  500. /package/dist/{hooks → src/hooks}/useToast.d.ts +0 -0
  501. /package/dist/{lib → src/lib}/i18n.d.ts +0 -0
  502. /package/dist/{stories → src/stories}/Button.d.ts +0 -0
  503. /package/dist/{stories → src/stories}/Button.stories.d.ts +0 -0
  504. /package/dist/{stories → src/stories}/Header.d.ts +0 -0
  505. /package/dist/{stories → src/stories}/Header.stories.d.ts +0 -0
  506. /package/dist/{stories → src/stories}/Page.d.ts +0 -0
  507. /package/dist/{stories → src/stories}/Page.stories.d.ts +0 -0
  508. /package/dist/{types → src/types}/index.d.ts +0 -0
  509. /package/dist/{types → src/types}/link.d.ts +0 -0
  510. /package/dist/{types → src/types}/provider.d.ts +0 -0
  511. /package/dist/{utils → src/utils}/cn.d.ts +0 -0
  512. /package/dist/{utils → src/utils}/datetime-helpers.d.ts +0 -0
  513. /package/dist/{utils → src/utils}/error-handling.d.ts +0 -0
  514. /package/dist/{utils → src/utils}/index.d.ts +0 -0
  515. /package/dist/{utils → src/utils}/logger.d.ts +0 -0
  516. /package/dist/{utils → src/utils}/security.d.ts +0 -0
  517. /package/dist/{utils → src/utils}/theme-loader.d.ts +0 -0
  518. /package/dist/{utils → src/utils}/tweak.d.ts +0 -0
@@ -0,0 +1,120 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { cn } from "../../utils"
5
+ import { Copy, Check, FileCode } from "lucide-react"
6
+ import { Button } from "../button"
7
+ import Prism from "prismjs"
8
+ import "prismjs/components/prism-typescript"
9
+ import "prismjs/components/prism-javascript"
10
+ import "prismjs/components/prism-jsx"
11
+ import "prismjs/components/prism-tsx"
12
+ import "prismjs/components/prism-css"
13
+ import "prismjs/components/prism-json"
14
+ import "prismjs/components/prism-bash"
15
+ import "prismjs/components/prism-python"
16
+ import "prismjs/components/prism-go"
17
+ import "prismjs/components/prism-rust"
18
+ import "prismjs/components/prism-sql"
19
+ import "prismjs/components/prism-yaml"
20
+ import "prismjs/components/prism-docker"
21
+ import "prismjs/components/prism-markdown"
22
+
23
+ export interface WakaDocCodeBlockProps {
24
+ code: string
25
+ language?: string
26
+ filename?: string
27
+ showLineNumbers?: boolean
28
+ highlightLines?: number[]
29
+ className?: string
30
+ }
31
+
32
+ export function WakaDocCodeBlock({
33
+ code,
34
+ language,
35
+ filename,
36
+ showLineNumbers = false,
37
+ highlightLines = [],
38
+ className,
39
+ }: WakaDocCodeBlockProps) {
40
+ const [copied, setCopied] = React.useState(false)
41
+
42
+ const lines = code.split("\n")
43
+
44
+ const handleCopy = async () => {
45
+ try {
46
+ await navigator.clipboard.writeText(code)
47
+ setCopied(true)
48
+ setTimeout(() => setCopied(false), 2000)
49
+ } catch {}
50
+ }
51
+
52
+ return (
53
+ <div
54
+ className={cn(
55
+ "group relative my-4 overflow-hidden rounded-lg",
56
+ "border border-border/50",
57
+ "bg-muted/30 backdrop-blur-sm",
58
+ className
59
+ )}
60
+ >
61
+ {/* Header */}
62
+ <div className="flex items-center justify-between border-b border-border/50 bg-muted/50 px-4 py-2">
63
+ <div className="flex items-center gap-2 text-xs text-muted-foreground">
64
+ <FileCode className="h-3.5 w-3.5" />
65
+ <span className="font-medium">
66
+ {filename || language?.toUpperCase() || "CODE"}
67
+ </span>
68
+ </div>
69
+ <Button
70
+ variant="ghost"
71
+ size="icon"
72
+ className="h-7 w-7 opacity-0 transition-opacity group-hover:opacity-100"
73
+ onClick={handleCopy}
74
+ >
75
+ {copied ? (
76
+ <Check className="h-3.5 w-3.5 text-emerald-500" />
77
+ ) : (
78
+ <Copy className="h-3.5 w-3.5" />
79
+ )}
80
+ </Button>
81
+ </div>
82
+
83
+ {/* Code */}
84
+ <div className="overflow-x-auto">
85
+ <pre className="p-4 text-sm leading-relaxed">
86
+ <code>
87
+ {lines.map((line, i) => {
88
+ let highlightedLine = line
89
+ try {
90
+ if (language && Prism.languages[language]) {
91
+ highlightedLine = Prism.highlight(line, Prism.languages[language], language)
92
+ }
93
+ } catch {}
94
+
95
+ return (
96
+ <div
97
+ key={i}
98
+ className={cn(
99
+ "flex",
100
+ highlightLines.includes(i + 1) &&
101
+ "bg-primary/10 -mx-4 px-4 border-l-2 border-primary"
102
+ )}
103
+ >
104
+ {showLineNumbers && (
105
+ <span className="mr-4 inline-block w-8 select-none text-right text-muted-foreground/50">
106
+ {i + 1}
107
+ </span>
108
+ )}
109
+ <span
110
+ dangerouslySetInnerHTML={{ __html: highlightedLine }}
111
+ />
112
+ </div>
113
+ )
114
+ })}
115
+ </code>
116
+ </pre>
117
+ </div>
118
+ </div>
119
+ )
120
+ }
@@ -0,0 +1,95 @@
1
+ import type { Meta, StoryObj } from '@storybook/react'
2
+ import { WakaDocNav } from './index'
3
+ import * as React from 'react'
4
+ import { BookOpen, Zap, Settings, Code, Palette } from 'lucide-react'
5
+
6
+ const meta: Meta<typeof WakaDocNav> = {
7
+ title: 'Components/Documentation/WakaDocNav',
8
+ component: WakaDocNav,
9
+ parameters: {
10
+ layout: 'centered',
11
+ docs: {
12
+ description: {
13
+ component: 'Tree navigation sidebar for documentation with collapsible sections, active state, and badges.',
14
+ },
15
+ },
16
+ },
17
+ tags: ['autodocs'],
18
+ }
19
+
20
+ export default meta
21
+ type Story = StoryObj<typeof WakaDocNav>
22
+
23
+ const sampleItems = [
24
+ {
25
+ id: 'getting-started',
26
+ label: 'Getting Started',
27
+ icon: <Zap className="h-4 w-4" />,
28
+ children: [
29
+ { id: 'installation', label: 'Installation' },
30
+ { id: 'quick-start', label: 'Quick Start' },
31
+ { id: 'configuration', label: 'Configuration' },
32
+ ],
33
+ },
34
+ {
35
+ id: 'components',
36
+ label: 'Components',
37
+ icon: <Code className="h-4 w-4" />,
38
+ badge: '10',
39
+ children: [
40
+ { id: 'doc-renderer', label: 'DocRenderer' },
41
+ { id: 'doc-code-block', label: 'DocCodeBlock' },
42
+ { id: 'doc-callout', label: 'DocCallout' },
43
+ { id: 'doc-nav', label: 'DocNav' },
44
+ { id: 'doc-search', label: 'DocSearch' },
45
+ ],
46
+ },
47
+ {
48
+ id: 'theming',
49
+ label: 'Theming',
50
+ icon: <Palette className="h-4 w-4" />,
51
+ children: [
52
+ { id: 'colors', label: 'Colors' },
53
+ { id: 'dark-mode', label: 'Dark Mode' },
54
+ ],
55
+ },
56
+ {
57
+ id: 'api',
58
+ label: 'API Reference',
59
+ icon: <BookOpen className="h-4 w-4" />,
60
+ },
61
+ {
62
+ id: 'settings',
63
+ label: 'Settings',
64
+ icon: <Settings className="h-4 w-4" />,
65
+ },
66
+ ]
67
+
68
+ export const Default: Story = {
69
+ render: () => (
70
+ <div className="w-[260px] rounded-lg border p-2">
71
+ <WakaDocNav
72
+ items={sampleItems}
73
+ activeId="doc-callout"
74
+ onItemClick={(item) => console.log('Clicked:', item.id)}
75
+ />
76
+ </div>
77
+ ),
78
+ }
79
+
80
+ export const FlatNavigation: Story = {
81
+ render: () => (
82
+ <div className="w-[260px] rounded-lg border p-2">
83
+ <WakaDocNav
84
+ items={[
85
+ { id: 'intro', label: 'Introduction' },
86
+ { id: 'install', label: 'Installation' },
87
+ { id: 'usage', label: 'Usage' },
88
+ { id: 'api', label: 'API Reference' },
89
+ { id: 'changelog', label: 'Changelog', badge: 'New' },
90
+ ]}
91
+ activeId="usage"
92
+ />
93
+ </div>
94
+ ),
95
+ }
@@ -0,0 +1,125 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { cn } from "../../utils"
5
+ import { ChevronRight, FileText, FolderOpen, Folder } from "lucide-react"
6
+
7
+ export interface DocNavItem {
8
+ id: string
9
+ label: string
10
+ href?: string
11
+ icon?: React.ReactNode
12
+ children?: DocNavItem[]
13
+ badge?: string
14
+ }
15
+
16
+ export interface WakaDocNavProps {
17
+ items: DocNavItem[]
18
+ activeId?: string
19
+ onItemClick?: (item: DocNavItem) => void
20
+ className?: string
21
+ }
22
+
23
+ export function WakaDocNav({ items, activeId, onItemClick, className }: WakaDocNavProps) {
24
+ return (
25
+ <nav className={cn("space-y-1", className)}>
26
+ {items.map((item) => (
27
+ <NavItem
28
+ key={item.id}
29
+ item={item}
30
+ activeId={activeId}
31
+ onItemClick={onItemClick}
32
+ depth={0}
33
+ />
34
+ ))}
35
+ </nav>
36
+ )
37
+ }
38
+
39
+ function NavItem({
40
+ item,
41
+ activeId,
42
+ onItemClick,
43
+ depth,
44
+ }: {
45
+ item: DocNavItem
46
+ activeId?: string
47
+ onItemClick?: (item: DocNavItem) => void
48
+ depth: number
49
+ }) {
50
+ const hasChildren = item.children && item.children.length > 0
51
+ const isActive = activeId === item.id
52
+ const isParentOfActive = hasChildren && containsActive(item.children!, activeId)
53
+ const [expanded, setExpanded] = React.useState(isParentOfActive)
54
+
55
+ React.useEffect(() => {
56
+ if (isParentOfActive) setExpanded(true)
57
+ }, [isParentOfActive])
58
+
59
+ const handleClick = () => {
60
+ if (hasChildren) {
61
+ setExpanded((prev) => !prev)
62
+ }
63
+ onItemClick?.(item)
64
+ }
65
+
66
+ const DefaultIcon = hasChildren
67
+ ? expanded ? FolderOpen : Folder
68
+ : FileText
69
+
70
+ return (
71
+ <div>
72
+ <button
73
+ onClick={handleClick}
74
+ className={cn(
75
+ "group flex w-full items-center gap-2 rounded-lg px-3 py-2 text-sm transition-all duration-200",
76
+ isActive
77
+ ? "bg-primary/10 font-medium text-primary"
78
+ : "text-muted-foreground hover:bg-muted/50 hover:text-foreground"
79
+ )}
80
+ style={{ paddingLeft: `${depth * 12 + 12}px` }}
81
+ >
82
+ {hasChildren && (
83
+ <ChevronRight
84
+ className={cn(
85
+ "h-3.5 w-3.5 shrink-0 transition-transform duration-200",
86
+ expanded && "rotate-90"
87
+ )}
88
+ />
89
+ )}
90
+ <span className="shrink-0">
91
+ {item.icon || <DefaultIcon className="h-4 w-4" />}
92
+ </span>
93
+ <span className="truncate">{item.label}</span>
94
+ {item.badge && (
95
+ <span className="ml-auto shrink-0 rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary">
96
+ {item.badge}
97
+ </span>
98
+ )}
99
+ </button>
100
+
101
+ {hasChildren && expanded && (
102
+ <div className="mt-0.5 space-y-0.5">
103
+ {item.children!.map((child) => (
104
+ <NavItem
105
+ key={child.id}
106
+ item={child}
107
+ activeId={activeId}
108
+ onItemClick={onItemClick}
109
+ depth={depth + 1}
110
+ />
111
+ ))}
112
+ </div>
113
+ )}
114
+ </div>
115
+ )
116
+ }
117
+
118
+ function containsActive(items: DocNavItem[], activeId?: string): boolean {
119
+ if (!activeId) return false
120
+ for (const item of items) {
121
+ if (item.id === activeId) return true
122
+ if (item.children && containsActive(item.children, activeId)) return true
123
+ }
124
+ return false
125
+ }
@@ -0,0 +1,120 @@
1
+ import type { Meta, StoryObj } from '@storybook/react'
2
+ import { WakaDocRenderer } from './index'
3
+ import * as React from 'react'
4
+
5
+ const meta: Meta<typeof WakaDocRenderer> = {
6
+ title: 'Components/Documentation/WakaDocRenderer',
7
+ component: WakaDocRenderer,
8
+ parameters: {
9
+ layout: 'padded',
10
+ docs: {
11
+ description: {
12
+ component: 'Renders markdown content as styled React components with syntax highlighting, callouts, tables, and heading extraction for TOC.',
13
+ },
14
+ },
15
+ },
16
+ tags: ['autodocs'],
17
+ }
18
+
19
+ export default meta
20
+ type Story = StoryObj<typeof WakaDocRenderer>
21
+
22
+ const fullMarkdown = `# WakaDoc Suite
23
+
24
+ Welcome to the **WakaDoc Suite** documentation. This library provides a complete set of components for building beautiful documentation pages.
25
+
26
+ ## Getting Started
27
+
28
+ ### Installation
29
+
30
+ Install the package and its peer dependencies:
31
+
32
+ \`\`\`bash
33
+ pnpm add @wakastellar/ui react-markdown remark-gfm rehype-slug rehype-raw
34
+ \`\`\`
35
+
36
+ ### Quick Start
37
+
38
+ Import and use the components:
39
+
40
+ \`\`\`typescript
41
+ import { WakaDocRenderer } from "@wakastellar/ui/doc"
42
+
43
+ export function DocsPage({ content }: { content: string }) {
44
+ return <WakaDocRenderer content={content} />
45
+ }
46
+ \`\`\`
47
+
48
+ ## Features
49
+
50
+ | Feature | Description | Status |
51
+ |---------|-------------|--------|
52
+ | Markdown Rendering | Full GFM support | Stable |
53
+ | Syntax Highlighting | PrismJS with 14+ languages | Stable |
54
+ | Callouts | Info, warning, danger, tip blocks | Stable |
55
+ | Table of Contents | Auto-generated with scroll spy | Stable |
56
+ | Search | Full-text client-side search | Stable |
57
+
58
+ ## Components
59
+
60
+ ### WakaDocRenderer
61
+
62
+ The core rendering component. It converts markdown to React elements with custom styling.
63
+
64
+ Inline code looks like \`this\` and links work like [this](https://example.com).
65
+
66
+ > [!info]
67
+ > This is an info callout using the GitHub-style syntax.
68
+
69
+ > [!warning]
70
+ > Be careful with this feature, it requires additional configuration.
71
+
72
+ > [!tip]
73
+ > You can customize the appearance using Tailwind classes.
74
+
75
+ ### Lists
76
+
77
+ Unordered list:
78
+ - First item
79
+ - Second item with **bold** text
80
+ - Third item with \`inline code\`
81
+
82
+ Ordered list:
83
+ 1. Step one
84
+ 2. Step two
85
+ 3. Step three
86
+
87
+ ---
88
+
89
+ ## API Reference
90
+
91
+ ### Props
92
+
93
+ The renderer accepts the following props:
94
+
95
+ \`\`\`typescript
96
+ interface WakaDocRendererProps {
97
+ content: string
98
+ onHeadingsExtracted?: (headings: TocItem[]) => void
99
+ className?: string
100
+ }
101
+ \`\`\`
102
+
103
+ > This is a regular blockquote, not a callout.
104
+
105
+ That's it! Happy documenting.
106
+ `
107
+
108
+ export const Default: Story = {
109
+ render: () => (
110
+ <div className="mx-auto max-w-3xl">
111
+ <WakaDocRenderer content={fullMarkdown} onHeadingsExtracted={(h) => console.log('Headings:', h)} />
112
+ </div>
113
+ ),
114
+ }
115
+
116
+ export const SimpleContent: Story = {
117
+ args: {
118
+ content: '# Hello World\n\nA simple paragraph with **bold** and *italic* text.\n\n## Section\n\nMore content here.',
119
+ },
120
+ }
@@ -0,0 +1,217 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { cn } from "../../utils"
5
+ import { WakaDocCodeBlock } from "../waka-doc-code-block"
6
+ import { WakaDocCallout, type CalloutType } from "../waka-doc-callout"
7
+ import type { TocItem } from "../waka-doc-toc"
8
+
9
+ export interface WakaDocRendererProps {
10
+ content: string
11
+ onHeadingsExtracted?: (headings: TocItem[]) => void
12
+ className?: string
13
+ }
14
+
15
+ interface MarkdownModule {
16
+ ReactMarkdown: React.ComponentType<{
17
+ children: string
18
+ remarkPlugins?: unknown[]
19
+ rehypePlugins?: unknown[]
20
+ components?: Record<string, React.ComponentType<Record<string, unknown>>>
21
+ }>
22
+ remarkGfm: unknown
23
+ rehypeSlug: unknown
24
+ rehypeRaw: unknown
25
+ }
26
+
27
+ export function WakaDocRenderer({ content, onHeadingsExtracted, className }: WakaDocRendererProps) {
28
+ const [mdModule, setMdModule] = React.useState<MarkdownModule | null>(null)
29
+ const [loadError, setLoadError] = React.useState(false)
30
+
31
+ React.useEffect(() => {
32
+ const load = async () => {
33
+ try {
34
+ const [rm, gfm, slug, raw] = await Promise.all([
35
+ import("react-markdown"),
36
+ import("remark-gfm"),
37
+ import("rehype-slug"),
38
+ import("rehype-raw"),
39
+ ])
40
+ setMdModule({
41
+ ReactMarkdown: rm.default,
42
+ remarkGfm: gfm.default || gfm,
43
+ rehypeSlug: slug.default || slug,
44
+ rehypeRaw: raw.default || raw,
45
+ })
46
+ } catch {
47
+ setLoadError(true)
48
+ }
49
+ }
50
+ load()
51
+ }, [])
52
+
53
+ // Extraire les headings du markdown
54
+ React.useEffect(() => {
55
+ if (!onHeadingsExtracted) return
56
+ const headings: TocItem[] = []
57
+ const lines = content.split("\n")
58
+ for (const line of lines) {
59
+ const match = line.match(/^(#{2,4})\s+(.+)$/)
60
+ if (match) {
61
+ const level = match[1].length
62
+ const text = match[2].replace(/[`*_~]/g, "")
63
+ const id = text
64
+ .toLowerCase()
65
+ .replace(/[^\w\s-]/g, "")
66
+ .replace(/\s+/g, "-")
67
+ headings.push({ id, text, level })
68
+ }
69
+ }
70
+ onHeadingsExtracted(headings)
71
+ }, [content, onHeadingsExtracted])
72
+
73
+ if (loadError) {
74
+ return (
75
+ <div className={cn("whitespace-pre-wrap font-mono text-sm", className)}>
76
+ {content}
77
+ </div>
78
+ )
79
+ }
80
+
81
+ if (!mdModule) {
82
+ return (
83
+ <div className={cn("animate-pulse space-y-4", className)}>
84
+ <div className="h-8 w-3/4 rounded bg-muted" />
85
+ <div className="h-4 w-full rounded bg-muted" />
86
+ <div className="h-4 w-5/6 rounded bg-muted" />
87
+ <div className="h-4 w-4/5 rounded bg-muted" />
88
+ </div>
89
+ )
90
+ }
91
+
92
+ const { ReactMarkdown, remarkGfm, rehypeSlug, rehypeRaw } = mdModule
93
+
94
+ return (
95
+ <div className={cn("waka-doc-renderer", className)}>
96
+ <ReactMarkdown
97
+ remarkPlugins={[remarkGfm]}
98
+ rehypePlugins={[rehypeSlug, rehypeRaw]}
99
+ components={{
100
+ h1: ({ children, ...props }: Record<string, unknown>) => (
101
+ <h1 className="mb-4 mt-8 scroll-mt-24 text-3xl font-bold tracking-tight first:mt-0" {...props}>
102
+ {children as React.ReactNode}
103
+ </h1>
104
+ ),
105
+ h2: ({ children, ...props }: Record<string, unknown>) => (
106
+ <h2 className="mb-3 mt-8 scroll-mt-24 border-b border-border/30 pb-2 text-2xl font-semibold tracking-tight first:mt-0" {...props}>
107
+ {children as React.ReactNode}
108
+ </h2>
109
+ ),
110
+ h3: ({ children, ...props }: Record<string, unknown>) => (
111
+ <h3 className="mb-2 mt-6 scroll-mt-24 text-xl font-semibold tracking-tight" {...props}>
112
+ {children as React.ReactNode}
113
+ </h3>
114
+ ),
115
+ h4: ({ children, ...props }: Record<string, unknown>) => (
116
+ <h4 className="mb-2 mt-4 scroll-mt-24 text-lg font-medium" {...props}>
117
+ {children as React.ReactNode}
118
+ </h4>
119
+ ),
120
+ p: ({ children }: Record<string, unknown>) => (
121
+ <p className="mb-4 leading-7 text-foreground/80">{children as React.ReactNode}</p>
122
+ ),
123
+ a: ({ href, children }: Record<string, unknown>) => (
124
+ <a
125
+ href={href as string}
126
+ target={(href as string)?.startsWith("http") ? "_blank" : undefined}
127
+ rel={(href as string)?.startsWith("http") ? "noopener noreferrer" : undefined}
128
+ className="font-medium text-primary underline decoration-primary/30 underline-offset-4 transition-colors hover:decoration-primary"
129
+ >
130
+ {children as React.ReactNode}
131
+ </a>
132
+ ),
133
+ pre: ({ children }: Record<string, unknown>) => {
134
+ const child = children as React.ReactElement<{ className?: string; children?: string }>
135
+ if (child?.props) {
136
+ const lang = child.props.className?.replace("language-", "") || ""
137
+ const code = typeof child.props.children === "string"
138
+ ? child.props.children.replace(/\n$/, "")
139
+ : ""
140
+ return <WakaDocCodeBlock code={code} language={lang} showLineNumbers />
141
+ }
142
+ return <pre>{children as React.ReactNode}</pre>
143
+ },
144
+ code: ({ children, className: codeClassName }: Record<string, unknown>) => {
145
+ if (codeClassName) return <code className={codeClassName as string}>{children as React.ReactNode}</code>
146
+ return (
147
+ <code className="rounded bg-muted px-1.5 py-0.5 text-sm font-mono text-primary">
148
+ {children as React.ReactNode}
149
+ </code>
150
+ )
151
+ },
152
+ blockquote: ({ children }: Record<string, unknown>) => {
153
+ const text = extractText(children as React.ReactNode)
154
+ const calloutMatch = text.match(/^\[!(info|warning|danger|tip)\]\s*\n?(.*)$/s)
155
+ if (calloutMatch) {
156
+ const calloutType = calloutMatch[1] as CalloutType
157
+ const body = calloutMatch[2]
158
+ return <WakaDocCallout type={calloutType}><p>{body}</p></WakaDocCallout>
159
+ }
160
+ return (
161
+ <blockquote className="my-4 border-l-4 border-primary/30 bg-muted/20 py-1 pl-4 italic text-foreground/70">
162
+ {children as React.ReactNode}
163
+ </blockquote>
164
+ )
165
+ },
166
+ table: ({ children }: Record<string, unknown>) => (
167
+ <div className="my-4 overflow-x-auto rounded-lg border border-border/50">
168
+ <table className={cn(
169
+ "w-full text-sm",
170
+ "[&_thead]:bg-muted/50 [&_thead]:backdrop-blur-sm",
171
+ "[&_th]:px-4 [&_th]:py-3 [&_th]:text-left [&_th]:font-semibold [&_th]:text-foreground/80",
172
+ "[&_td]:px-4 [&_td]:py-3 [&_td]:text-foreground/70",
173
+ "[&_tr]:border-b [&_tr]:border-border/30 [&_tbody_tr:last-child]:border-0",
174
+ "[&_tbody_tr:nth-child(even)]:bg-muted/30",
175
+ "[&_tbody_tr]:transition-colors [&_tbody_tr:hover]:bg-muted/50"
176
+ )}>
177
+ {children as React.ReactNode}
178
+ </table>
179
+ </div>
180
+ ),
181
+ ul: ({ children }: Record<string, unknown>) => (
182
+ <ul className="my-4 ml-6 list-disc space-y-2 text-foreground/80 marker:text-primary/50">
183
+ {children as React.ReactNode}
184
+ </ul>
185
+ ),
186
+ ol: ({ children }: Record<string, unknown>) => (
187
+ <ol className="my-4 ml-6 list-decimal space-y-2 text-foreground/80 marker:text-primary/50">
188
+ {children as React.ReactNode}
189
+ </ol>
190
+ ),
191
+ li: ({ children }: Record<string, unknown>) => (
192
+ <li className="leading-7">{children as React.ReactNode}</li>
193
+ ),
194
+ hr: () => <hr className="my-8 border-border/50" />,
195
+ img: ({ src, alt }: Record<string, unknown>) => (
196
+ <img
197
+ src={src as string}
198
+ alt={(alt as string) || ""}
199
+ className="my-4 rounded-lg border border-border/50 shadow-sm"
200
+ />
201
+ ),
202
+ } as Record<string, React.ComponentType<Record<string, unknown>>>}
203
+ >
204
+ {content}
205
+ </ReactMarkdown>
206
+ </div>
207
+ )
208
+ }
209
+
210
+ function extractText(node: React.ReactNode): string {
211
+ if (typeof node === "string") return node
212
+ if (Array.isArray(node)) return node.map(extractText).join("")
213
+ if (React.isValidElement(node) && node.props) {
214
+ return extractText((node.props as { children?: React.ReactNode }).children)
215
+ }
216
+ return ""
217
+ }