@wakastellar/ui 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/dist/cli/commands/add.d.ts +7 -0
  2. package/dist/cli/commands/init.d.ts +6 -0
  3. package/dist/cli/commands/list.d.ts +5 -0
  4. package/dist/cli/commands/search.d.ts +1 -0
  5. package/dist/cli/index.cjs +4844 -0
  6. package/dist/cli/index.d.ts +1 -0
  7. package/dist/cli/utils/config.d.ts +29 -0
  8. package/dist/cli/utils/logger.d.ts +20 -0
  9. package/dist/cli/utils/registry.d.ts +23 -0
  10. package/package.json +14 -3
  11. package/src/blocks/activity-timeline/index.tsx +586 -0
  12. package/src/blocks/calendar-view/index.tsx +756 -0
  13. package/src/blocks/chat/index.tsx +1018 -0
  14. package/src/blocks/chat/widget.tsx +504 -0
  15. package/src/blocks/dashboard/index.tsx +522 -0
  16. package/src/blocks/empty-states/index.tsx +452 -0
  17. package/src/blocks/error-pages/index.tsx +426 -0
  18. package/src/blocks/faq/index.tsx +479 -0
  19. package/src/blocks/file-manager/index.tsx +890 -0
  20. package/src/blocks/footer/index.tsx +133 -0
  21. package/src/blocks/header/index.tsx +357 -0
  22. package/src/blocks/headtab/index.tsx +139 -0
  23. package/src/blocks/i18n-editor/index.tsx +1016 -0
  24. package/src/blocks/index.ts +80 -0
  25. package/src/blocks/kanban-board/index.tsx +779 -0
  26. package/src/blocks/landing/index.tsx +677 -0
  27. package/src/blocks/language-selector/index.tsx +88 -0
  28. package/src/blocks/layout/index.tsx +159 -0
  29. package/src/blocks/login/index.tsx +339 -0
  30. package/src/blocks/login/types.ts +131 -0
  31. package/src/blocks/pricing/index.tsx +564 -0
  32. package/src/blocks/profile/index.tsx +746 -0
  33. package/src/blocks/settings/index.tsx +558 -0
  34. package/src/blocks/sidebar/index.tsx +713 -0
  35. package/src/blocks/theme-creator-block/index.tsx +835 -0
  36. package/src/blocks/user-management/index.tsx +1037 -0
  37. package/src/blocks/wizard/index.tsx +719 -0
  38. package/src/components/DataTable/DataTable.tsx +406 -0
  39. package/src/components/DataTable/DataTableAdvanced.tsx +720 -0
  40. package/src/components/DataTable/DataTableBody.tsx +216 -0
  41. package/src/components/DataTable/DataTableCell.tsx +172 -0
  42. package/src/components/DataTable/DataTableColumnResizer.tsx +62 -0
  43. package/src/components/DataTable/DataTableConflictResolver.tsx +478 -0
  44. package/src/components/DataTable/DataTableContextMenu.tsx +219 -0
  45. package/src/components/DataTable/DataTableEditCell.tsx +279 -0
  46. package/src/components/DataTable/DataTableFilterBuilder.tsx +519 -0
  47. package/src/components/DataTable/DataTableFilters.tsx +535 -0
  48. package/src/components/DataTable/DataTableGrouping.tsx +147 -0
  49. package/src/components/DataTable/DataTableHeader.tsx +172 -0
  50. package/src/components/DataTable/DataTablePagination.tsx +125 -0
  51. package/src/components/DataTable/DataTableSelection.tsx +269 -0
  52. package/src/components/DataTable/DataTableSyncStatus.tsx +281 -0
  53. package/src/components/DataTable/DataTableToolbar.tsx +262 -0
  54. package/src/components/DataTable/README.md +446 -0
  55. package/src/components/DataTable/__tests__/DataTableAdvanced.test.tsx +426 -0
  56. package/src/components/DataTable/__tests__/DataTableEdit.test.tsx +329 -0
  57. package/src/components/DataTable/__tests__/useDataTableAdvanced.test.ts +455 -0
  58. package/src/components/DataTable/examples/EditExample.tsx +166 -0
  59. package/src/components/DataTable/formatters/index.ts +335 -0
  60. package/src/components/DataTable/hooks/__tests__/useDataTableEdit.test.ts +239 -0
  61. package/src/components/DataTable/hooks/useDataTable.ts +145 -0
  62. package/src/components/DataTable/hooks/useDataTableAdvanced.ts +342 -0
  63. package/src/components/DataTable/hooks/useDataTableAdvancedFilters.ts +637 -0
  64. package/src/components/DataTable/hooks/useDataTableColumnTemplates.ts +186 -0
  65. package/src/components/DataTable/hooks/useDataTableEdit.ts +167 -0
  66. package/src/components/DataTable/hooks/useDataTableExport.ts +227 -0
  67. package/src/components/DataTable/hooks/useDataTableImport.ts +216 -0
  68. package/src/components/DataTable/hooks/useDataTableOffline.ts +481 -0
  69. package/src/components/DataTable/hooks/useDataTableTheme.ts +213 -0
  70. package/src/components/DataTable/hooks/useDataTableVirtualization.ts +99 -0
  71. package/src/components/DataTable/hooks/useTableLayout.ts +85 -0
  72. package/src/components/DataTable/index.ts +81 -0
  73. package/src/components/DataTable/services/IndexedDBService.ts +504 -0
  74. package/src/components/DataTable/templates/index.tsx +803 -0
  75. package/src/components/DataTable/types.ts +504 -0
  76. package/src/components/DataTable/utils.ts +164 -0
  77. package/src/components/DataTable/workers/exportWorker.ts +213 -0
  78. package/src/components/accordion/index.tsx +61 -0
  79. package/src/components/alert/index.tsx +61 -0
  80. package/src/components/alert-dialog/index.tsx +146 -0
  81. package/src/components/aspect-ratio/index.tsx +12 -0
  82. package/src/components/avatar/index.tsx +54 -0
  83. package/src/components/badge/Badge.stories.tsx +64 -0
  84. package/src/components/badge/index.tsx +38 -0
  85. package/src/components/button/Button.stories.tsx +173 -0
  86. package/src/components/button/index.tsx +56 -0
  87. package/src/components/calendar/index.tsx +73 -0
  88. package/src/components/card/index.tsx +78 -0
  89. package/src/components/checkbox/index.tsx +34 -0
  90. package/src/components/code/index.tsx +229 -0
  91. package/src/components/collapsible/index.tsx +16 -0
  92. package/src/components/command/index.tsx +162 -0
  93. package/src/components/context-menu/index.tsx +204 -0
  94. package/src/components/dialog/index.tsx +126 -0
  95. package/src/components/dropdown-menu/index.tsx +204 -0
  96. package/src/components/error-boundary/ErrorBoundary.tsx +281 -0
  97. package/src/components/error-boundary/index.ts +7 -0
  98. package/src/components/form/index.tsx +183 -0
  99. package/src/components/hover-card/index.tsx +33 -0
  100. package/src/components/index.ts +368 -0
  101. package/src/components/input/Input.stories.tsx +100 -0
  102. package/src/components/input/index.tsx +27 -0
  103. package/src/components/input-otp/index.tsx +277 -0
  104. package/src/components/label/index.tsx +30 -0
  105. package/src/components/language-selector/index.tsx +341 -0
  106. package/src/components/menubar/index.tsx +240 -0
  107. package/src/components/navigation-menu/index.tsx +134 -0
  108. package/src/components/popover/index.tsx +35 -0
  109. package/src/components/progress/index.tsx +32 -0
  110. package/src/components/radio-group/index.tsx +48 -0
  111. package/src/components/scroll-area/index.tsx +52 -0
  112. package/src/components/select/index.tsx +164 -0
  113. package/src/components/separator/index.tsx +35 -0
  114. package/src/components/sheet/index.tsx +147 -0
  115. package/src/components/skeleton/index.tsx +22 -0
  116. package/src/components/slider/index.tsx +32 -0
  117. package/src/components/switch/index.tsx +33 -0
  118. package/src/components/table/index.tsx +117 -0
  119. package/src/components/tabs/index.tsx +59 -0
  120. package/src/components/textarea/index.tsx +30 -0
  121. package/src/components/theme-selector/index.tsx +327 -0
  122. package/src/components/toast/index.tsx +133 -0
  123. package/src/components/toaster/index.tsx +34 -0
  124. package/src/components/toggle/index.tsx +49 -0
  125. package/src/components/tooltip/index.tsx +34 -0
  126. package/src/components/typography/index.tsx +276 -0
  127. package/src/components/waka-3d-pie-chart/index.tsx +486 -0
  128. package/src/components/waka-achievement-unlock/index.tsx +716 -0
  129. package/src/components/waka-activity-feed/index.tsx +686 -0
  130. package/src/components/waka-address-autocomplete/index.tsx +1202 -0
  131. package/src/components/waka-admincrumb/index.tsx +349 -0
  132. package/src/components/waka-alert-stack/index.tsx +827 -0
  133. package/src/components/waka-allocation-matrix/index.tsx +1278 -0
  134. package/src/components/waka-approval-chain/index.tsx +766 -0
  135. package/src/components/waka-audit-log/index.tsx +1475 -0
  136. package/src/components/waka-autocomplete/index.tsx +358 -0
  137. package/src/components/waka-badge-showcase/index.tsx +704 -0
  138. package/src/components/waka-barcode/index.tsx +260 -0
  139. package/src/components/waka-biometric-prompt/index.tsx +765 -0
  140. package/src/components/waka-bottom-sheet/index.tsx +495 -0
  141. package/src/components/waka-breadcrumb/index.tsx +376 -0
  142. package/src/components/waka-breadcrumb-path/index.tsx +513 -0
  143. package/src/components/waka-budget-burn/index.tsx +1234 -0
  144. package/src/components/waka-capacity-planner/index.tsx +1107 -0
  145. package/src/components/waka-carousel/index.tsx +893 -0
  146. package/src/components/waka-cart-summary/index.tsx +1055 -0
  147. package/src/components/waka-challenge-timer/index.tsx +1044 -0
  148. package/src/components/waka-charts/WakaAreaChart.tsx +251 -0
  149. package/src/components/waka-charts/WakaBarChart.tsx +222 -0
  150. package/src/components/waka-charts/WakaChart.tsx +124 -0
  151. package/src/components/waka-charts/WakaLineChart.tsx +219 -0
  152. package/src/components/waka-charts/WakaMiniChart.tsx +133 -0
  153. package/src/components/waka-charts/WakaPieChart.tsx +214 -0
  154. package/src/components/waka-charts/WakaSparkline.tsx +229 -0
  155. package/src/components/waka-charts/dataTableHelpers.ts +109 -0
  156. package/src/components/waka-charts/hooks/useChartTheme.ts +123 -0
  157. package/src/components/waka-charts/hooks/useRechartsLoader.ts +234 -0
  158. package/src/components/waka-charts/index.ts +90 -0
  159. package/src/components/waka-charts/types.ts +330 -0
  160. package/src/components/waka-chat-bubble/index.tsx +1060 -0
  161. package/src/components/waka-checklist/index.tsx +1067 -0
  162. package/src/components/waka-checkout-stepper/index.tsx +976 -0
  163. package/src/components/waka-cohort-table/index.tsx +1011 -0
  164. package/src/components/waka-color-picker/index.tsx +447 -0
  165. package/src/components/waka-combo-counter/index.tsx +864 -0
  166. package/src/components/waka-combobox/index.tsx +497 -0
  167. package/src/components/waka-command-bar/index.tsx +403 -0
  168. package/src/components/waka-compare-period/index.tsx +1230 -0
  169. package/src/components/waka-connection-matrix/index.tsx +1053 -0
  170. package/src/components/waka-contribution-graph/index.tsx +552 -0
  171. package/src/components/waka-cost-breakdown/index.tsx +1065 -0
  172. package/src/components/waka-coupon-input/index.tsx +592 -0
  173. package/src/components/waka-credit-card-input/index.tsx +982 -0
  174. package/src/components/waka-daily-reward/index.tsx +762 -0
  175. package/src/components/waka-date-range-picker/index.tsx +378 -0
  176. package/src/components/waka-datetime-picker/index.tsx +793 -0
  177. package/src/components/waka-datetime-picker.form-integration/index.tsx +402 -0
  178. package/src/components/waka-deployment-lane/index.tsx +673 -0
  179. package/src/components/waka-device-trust/index.tsx +1259 -0
  180. package/src/components/waka-dock/index.tsx +285 -0
  181. package/src/components/waka-drawer/index.tsx +319 -0
  182. package/src/components/waka-empty-state/index.tsx +545 -0
  183. package/src/components/waka-error-shake/index.tsx +398 -0
  184. package/src/components/waka-feature-announcement/index.tsx +991 -0
  185. package/src/components/waka-file-upload/index.tsx +437 -0
  186. package/src/components/waka-floating-nav/index.tsx +413 -0
  187. package/src/components/waka-flow-diagram/index.tsx +508 -0
  188. package/src/components/waka-funnel-chart/index.tsx +823 -0
  189. package/src/components/waka-glow-card/index.tsx +246 -0
  190. package/src/components/waka-goal-progress/index.tsx +1025 -0
  191. package/src/components/waka-haptic-button/index.tsx +388 -0
  192. package/src/components/waka-health-pulse/index.tsx +451 -0
  193. package/src/components/waka-heatmap/index.tsx +1026 -0
  194. package/src/components/waka-hotspot/index.tsx +682 -0
  195. package/src/components/waka-image/index.tsx +373 -0
  196. package/src/components/waka-incident-timeline/index.tsx +686 -0
  197. package/src/components/waka-invoice-preview/index.tsx +829 -0
  198. package/src/components/waka-kanban/index.tsx +646 -0
  199. package/src/components/waka-kpi-dashboard/index.tsx +755 -0
  200. package/src/components/waka-leaderboard/index.tsx +746 -0
  201. package/src/components/waka-level-progress/index.tsx +665 -0
  202. package/src/components/waka-liquid-button/index.tsx +520 -0
  203. package/src/components/waka-loading-orbit/index.tsx +478 -0
  204. package/src/components/waka-loot-box/index.tsx +1091 -0
  205. package/src/components/waka-magic-link/index.tsx +321 -0
  206. package/src/components/waka-magnetic-button/index.tsx +567 -0
  207. package/src/components/waka-mention-input/index.tsx +953 -0
  208. package/src/components/waka-metric-sparkline/index.tsx +627 -0
  209. package/src/components/waka-milestone-road/index.tsx +1064 -0
  210. package/src/components/waka-modal/index.tsx +374 -0
  211. package/src/components/waka-morph-button/index.tsx +495 -0
  212. package/src/components/waka-network-topology/index.tsx +801 -0
  213. package/src/components/waka-notifications/index.tsx +414 -0
  214. package/src/components/waka-number-input/index.tsx +373 -0
  215. package/src/components/waka-orbital-menu/index.tsx +445 -0
  216. package/src/components/waka-order-tracker/index.tsx +1041 -0
  217. package/src/components/waka-pagination/index.tsx +393 -0
  218. package/src/components/waka-password-strength/index.tsx +824 -0
  219. package/src/components/waka-payment-method-picker/index.tsx +715 -0
  220. package/src/components/waka-permission-matrix/index.tsx +1302 -0
  221. package/src/components/waka-phone-input/index.tsx +801 -0
  222. package/src/components/waka-pipeline-view/index.tsx +604 -0
  223. package/src/components/waka-player-card/index.tsx +691 -0
  224. package/src/components/waka-points-popup/index.tsx +366 -0
  225. package/src/components/waka-power-up/index.tsx +1155 -0
  226. package/src/components/waka-presence-indicator/index.tsx +1181 -0
  227. package/src/components/waka-pricing-table/index.tsx +755 -0
  228. package/src/components/waka-product-card/index.tsx +786 -0
  229. package/src/components/waka-progress-onboarding/index.tsx +878 -0
  230. package/src/components/waka-pull-to-refresh/index.tsx +451 -0
  231. package/src/components/waka-qrcode/index.tsx +232 -0
  232. package/src/components/waka-quest-card/index.tsx +1275 -0
  233. package/src/components/waka-quota-bar/index.tsx +693 -0
  234. package/src/components/waka-radar-score/index.tsx +512 -0
  235. package/src/components/waka-rank-badge/index.tsx +813 -0
  236. package/src/components/waka-rating-input/index.tsx +560 -0
  237. package/src/components/waka-reaction-picker/index.tsx +1062 -0
  238. package/src/components/waka-region-map/index.tsx +730 -0
  239. package/src/components/waka-resource-gauge/index.tsx +654 -0
  240. package/src/components/waka-resource-pool/index.tsx +1035 -0
  241. package/src/components/waka-rich-text-editor/index.tsx +594 -0
  242. package/src/components/waka-rollback-slider/index.tsx +891 -0
  243. package/src/components/waka-sankey-diagram/index.tsx +1032 -0
  244. package/src/components/waka-schedule-picker/index.tsx +1060 -0
  245. package/src/components/waka-scratch-card/index.tsx +914 -0
  246. package/src/components/waka-season-pass/index.tsx +886 -0
  247. package/src/components/waka-security-score/index.tsx +1126 -0
  248. package/src/components/waka-segmented-control/index.tsx +238 -0
  249. package/src/components/waka-server-rack/index.tsx +764 -0
  250. package/src/components/waka-session-manager/index.tsx +815 -0
  251. package/src/components/waka-signature-pad/index.tsx +744 -0
  252. package/src/components/waka-skeleton-wave/index.tsx +454 -0
  253. package/src/components/waka-skill-tree/index.tsx +1031 -0
  254. package/src/components/waka-sla-tracker/index.tsx +798 -0
  255. package/src/components/waka-slider-range/index.tsx +765 -0
  256. package/src/components/waka-spin-wheel/index.tsx +671 -0
  257. package/src/components/waka-spinner/index.tsx +284 -0
  258. package/src/components/waka-spotlight/index.tsx +410 -0
  259. package/src/components/waka-stat/index.tsx +428 -0
  260. package/src/components/waka-stats-hexagon/index.tsx +824 -0
  261. package/src/components/waka-status-matrix/index.tsx +565 -0
  262. package/src/components/waka-stepper/index.tsx +489 -0
  263. package/src/components/waka-streak-counter/index.tsx +334 -0
  264. package/src/components/waka-success-explosion/index.tsx +453 -0
  265. package/src/components/waka-swipe-card/index.tsx +574 -0
  266. package/src/components/waka-tabs-morph/index.tsx +509 -0
  267. package/src/components/waka-tag-input/index.tsx +877 -0
  268. package/src/components/waka-team-banner/index.tsx +1183 -0
  269. package/src/components/waka-terminal-output/index.tsx +836 -0
  270. package/src/components/waka-theme-creator/index.tsx +762 -0
  271. package/src/components/waka-theme-manager/index.tsx +654 -0
  272. package/src/components/waka-thread-view/index.tsx +874 -0
  273. package/src/components/waka-tilt-card/index.tsx +250 -0
  274. package/src/components/waka-time-picker/index.tsx +479 -0
  275. package/src/components/waka-timeline/index.tsx +385 -0
  276. package/src/components/waka-tooltip-tour/index.tsx +855 -0
  277. package/src/components/waka-tour-guide/index.tsx +920 -0
  278. package/src/components/waka-tournament-bracket/index.tsx +1276 -0
  279. package/src/components/waka-tree/index.tsx +557 -0
  280. package/src/components/waka-treemap-chart/index.tsx +1031 -0
  281. package/src/components/waka-two-factor-setup/index.tsx +995 -0
  282. package/src/components/waka-typewriter/index.tsx +566 -0
  283. package/src/components/waka-typing-indicator/index.tsx +649 -0
  284. package/src/components/waka-versus-card/index.tsx +1026 -0
  285. package/src/components/waka-video/index.tsx +557 -0
  286. package/src/components/waka-video-call/index.tsx +1087 -0
  287. package/src/components/waka-virtual-list/index.tsx +327 -0
  288. package/src/components/waka-voice-message/index.tsx +1019 -0
  289. package/src/components/waka-welcome-modal/index.tsx +790 -0
  290. package/src/components/waka-xp-bar/index.tsx +799 -0
@@ -0,0 +1,90 @@
1
+ /**
2
+ * WakaCharts - Composants de visualisation de données
3
+ *
4
+ * @module waka-charts
5
+ * @description
6
+ * Composants de graphiques basés sur Recharts avec support de :
7
+ * - Graphiques à barres, lignes, aires, camembert
8
+ * - Sparklines et mini-graphiques
9
+ * - Intégration DataTable
10
+ * - Thème CSS variables
11
+ * - Chargement dynamique (peer dependency optionnel)
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * import {
16
+ * WakaBarChart,
17
+ * WakaLineChart,
18
+ * WakaPieChart,
19
+ * WakaSparkline,
20
+ * } from "@wakastellar/ui"
21
+ *
22
+ * // Graphique à barres
23
+ * <WakaBarChart
24
+ * data={[
25
+ * { name: "Jan", value: 100 },
26
+ * { name: "Feb", value: 150 },
27
+ * ]}
28
+ * variant="gradient"
29
+ * animation
30
+ * tooltip
31
+ * />
32
+ *
33
+ * // Sparkline dans du texte
34
+ * <p>Ventes: <WakaSparkline data={[10, 15, 8, 20, 25]} /></p>
35
+ * ```
36
+ */
37
+
38
+ // Composants principaux
39
+ export { WakaChart } from "./WakaChart"
40
+ export type { WakaChartProps } from "./WakaChart"
41
+
42
+ export { WakaBarChart } from "./WakaBarChart"
43
+ export type { WakaBarChartProps } from "./WakaBarChart"
44
+
45
+ export { WakaLineChart } from "./WakaLineChart"
46
+ export type { WakaLineChartProps } from "./WakaLineChart"
47
+
48
+ export { WakaAreaChart } from "./WakaAreaChart"
49
+ export type { WakaAreaChartProps } from "./WakaAreaChart"
50
+
51
+ export { WakaPieChart } from "./WakaPieChart"
52
+ export type { WakaPieChartProps } from "./WakaPieChart"
53
+
54
+ export { WakaSparkline } from "./WakaSparkline"
55
+ export type { WakaSparklineProps } from "./WakaSparkline"
56
+
57
+ export { WakaMiniChart } from "./WakaMiniChart"
58
+ export type { WakaMiniChartProps } from "./WakaMiniChart"
59
+
60
+ // Hooks
61
+ export { useRechartsLoader } from "./hooks/useRechartsLoader"
62
+ export type { UseRechartsLoaderResult, RechartsComponents } from "./hooks/useRechartsLoader"
63
+
64
+ export { useChartTheme } from "./hooks/useChartTheme"
65
+ export type { UseChartThemeResult } from "./hooks/useChartTheme"
66
+
67
+ // DataTable helpers
68
+ export { createChartColumn, sparklineTemplate } from "./dataTableHelpers"
69
+
70
+ // Types
71
+ export type {
72
+ ChartDataPoint,
73
+ ChartSeries,
74
+ ChartVariant,
75
+ ChartSize,
76
+ ChartTheme,
77
+ ChartTooltipConfig,
78
+ ChartLegendConfig,
79
+ ChartAxisConfig,
80
+ BaseChartProps,
81
+ BarChartProps,
82
+ LineChartProps,
83
+ AreaChartProps,
84
+ PieChartProps,
85
+ SparklineProps,
86
+ MiniChartProps,
87
+ ChartColumnConfig,
88
+ } from "./types"
89
+
90
+ export { DEFAULT_CHART_COLORS, CHART_SIZE_MAP } from "./types"
@@ -0,0 +1,330 @@
1
+ /**
2
+ * Types pour les composants de graphiques
3
+ * @module waka-charts/types
4
+ */
5
+
6
+ import { CSSProperties, ReactNode } from "react"
7
+
8
+ /**
9
+ * Point de données pour un graphique
10
+ */
11
+ export interface ChartDataPoint {
12
+ /** Nom/label de la donnée (axe X pour barres/lignes, légende pour pie) */
13
+ name: string
14
+ /** Valeur principale */
15
+ value?: number
16
+ /** Valeurs multiples pour les séries */
17
+ [key: string]: string | number | undefined
18
+ }
19
+
20
+ /**
21
+ * Configuration d'une série de données
22
+ */
23
+ export interface ChartSeries {
24
+ /** Clé de l'accessor dans les données */
25
+ dataKey: string
26
+ /** Label pour la légende */
27
+ label?: string
28
+ /** Couleur de la série */
29
+ color?: string
30
+ /** Type de ligne (pour line/area charts) */
31
+ strokeDasharray?: string
32
+ /** Épaisseur du trait */
33
+ strokeWidth?: number
34
+ /** Opacité de remplissage (pour area charts) */
35
+ fillOpacity?: number
36
+ }
37
+
38
+ /**
39
+ * Variantes visuelles des graphiques
40
+ */
41
+ export type ChartVariant = "default" | "gradient" | "outline" | "glass"
42
+
43
+ /**
44
+ * Tailles des graphiques
45
+ */
46
+ export type ChartSize = "sm" | "md" | "lg" | "xl" | "auto"
47
+
48
+ /**
49
+ * Configuration du thème du graphique
50
+ */
51
+ export interface ChartTheme {
52
+ /** Couleurs principales */
53
+ colors?: string[]
54
+ /** Couleur de la grille */
55
+ gridColor?: string
56
+ /** Couleur des axes */
57
+ axisColor?: string
58
+ /** Couleur du texte */
59
+ textColor?: string
60
+ /** Couleur de fond du tooltip */
61
+ tooltipBackground?: string
62
+ /** Couleur du texte du tooltip */
63
+ tooltipText?: string
64
+ /** Couleur de la bordure du tooltip */
65
+ tooltipBorder?: string
66
+ /** Font family */
67
+ fontFamily?: string
68
+ }
69
+
70
+ /**
71
+ * Configuration du tooltip
72
+ */
73
+ export interface ChartTooltipConfig {
74
+ /** Afficher le tooltip */
75
+ enabled?: boolean
76
+ /** Format personnalisé du tooltip */
77
+ formatter?: (value: number, name: string, dataPoint: ChartDataPoint) => ReactNode
78
+ /** Préfixe des valeurs */
79
+ valuePrefix?: string
80
+ /** Suffixe des valeurs */
81
+ valueSuffix?: string
82
+ }
83
+
84
+ /**
85
+ * Configuration de la légende
86
+ */
87
+ export interface ChartLegendConfig {
88
+ /** Afficher la légende */
89
+ enabled?: boolean
90
+ /** Position de la légende */
91
+ position?: "top" | "bottom" | "left" | "right"
92
+ /** Alignement */
93
+ align?: "left" | "center" | "right"
94
+ }
95
+
96
+ /**
97
+ * Configuration des axes
98
+ */
99
+ export interface ChartAxisConfig {
100
+ /** Afficher l'axe X */
101
+ showXAxis?: boolean
102
+ /** Afficher l'axe Y */
103
+ showYAxis?: boolean
104
+ /** Format de l'axe X */
105
+ xAxisFormatter?: (value: unknown) => string
106
+ /** Format de l'axe Y */
107
+ yAxisFormatter?: (value: unknown) => string
108
+ /** Unité de l'axe Y */
109
+ yAxisUnit?: string
110
+ /** Domaine de l'axe Y [min, max] */
111
+ yAxisDomain?: [number | "auto" | "dataMin" | "dataMax", number | "auto" | "dataMin" | "dataMax"]
112
+ }
113
+
114
+ /**
115
+ * Props communes à tous les graphiques
116
+ */
117
+ export interface BaseChartProps {
118
+ /** Données du graphique */
119
+ data: ChartDataPoint[]
120
+ /** Variante visuelle */
121
+ variant?: ChartVariant
122
+ /** Taille du graphique */
123
+ size?: ChartSize
124
+ /** Hauteur personnalisée en pixels */
125
+ height?: number
126
+ /** Largeur personnalisée en pixels ou pourcentage */
127
+ width?: number | string
128
+ /** Activer les animations */
129
+ animation?: boolean
130
+ /** Durée de l'animation en ms */
131
+ animationDuration?: number
132
+ /** Afficher la grille */
133
+ grid?: boolean
134
+ /** Configuration du tooltip */
135
+ tooltip?: boolean | ChartTooltipConfig
136
+ /** Configuration de la légende */
137
+ legend?: boolean | ChartLegendConfig
138
+ /** Configuration des axes */
139
+ axis?: ChartAxisConfig
140
+ /** Thème personnalisé */
141
+ theme?: ChartTheme
142
+ /** Classes CSS additionnelles */
143
+ className?: string
144
+ /** Style inline */
145
+ style?: CSSProperties
146
+ /** Titre du graphique */
147
+ title?: string
148
+ /** Description/sous-titre */
149
+ description?: string
150
+ /** État de chargement */
151
+ loading?: boolean
152
+ /** Message d'erreur */
153
+ error?: string
154
+ /** Callback au clic sur un élément */
155
+ onClick?: (data: ChartDataPoint, index: number) => void
156
+ /** Responsive */
157
+ responsive?: boolean
158
+ }
159
+
160
+ /**
161
+ * Props pour les graphiques à barres
162
+ */
163
+ export interface BarChartProps extends BaseChartProps {
164
+ /** Clés des données à afficher */
165
+ dataKeys?: string[]
166
+ /** Séries configurées */
167
+ series?: ChartSeries[]
168
+ /** Disposition des barres */
169
+ layout?: "vertical" | "horizontal"
170
+ /** Barres empilées */
171
+ stacked?: boolean
172
+ /** Rayon des coins */
173
+ radius?: number
174
+ /** Largeur des barres (pourcentage) */
175
+ barSize?: number
176
+ /** Écart entre les groupes de barres */
177
+ barGap?: number
178
+ /** Écart entre les catégories */
179
+ barCategoryGap?: number | string
180
+ }
181
+
182
+ /**
183
+ * Props pour les graphiques en ligne
184
+ */
185
+ export interface LineChartProps extends BaseChartProps {
186
+ /** Clés des données à afficher */
187
+ dataKeys?: string[]
188
+ /** Séries configurées */
189
+ series?: ChartSeries[]
190
+ /** Type de courbe */
191
+ curve?: "linear" | "monotone" | "step" | "basis" | "natural"
192
+ /** Afficher les points */
193
+ dots?: boolean
194
+ /** Taille des points */
195
+ dotSize?: number
196
+ /** Points actifs (hover) */
197
+ activeDot?: boolean
198
+ /** Épaisseur des lignes */
199
+ strokeWidth?: number
200
+ }
201
+
202
+ /**
203
+ * Props pour les graphiques en aire
204
+ */
205
+ export interface AreaChartProps extends LineChartProps {
206
+ /** Aires empilées */
207
+ stacked?: boolean
208
+ /** Opacité du remplissage */
209
+ fillOpacity?: number
210
+ /** Type de gradient */
211
+ gradientDirection?: "vertical" | "horizontal"
212
+ }
213
+
214
+ /**
215
+ * Props pour les graphiques camembert/donut
216
+ */
217
+ export interface PieChartProps extends BaseChartProps {
218
+ /** Clé de la valeur */
219
+ dataKey?: string
220
+ /** Clé du nom/label */
221
+ nameKey?: string
222
+ /** Rayon intérieur (0 = camembert, >0 = donut) */
223
+ innerRadius?: number | string
224
+ /** Rayon extérieur */
225
+ outerRadius?: number | string
226
+ /** Angle de départ (en degrés) */
227
+ startAngle?: number
228
+ /** Angle de fin */
229
+ endAngle?: number
230
+ /** Espacement entre les segments */
231
+ paddingAngle?: number
232
+ /** Afficher les labels */
233
+ label?: boolean | "percent" | "value" | "name"
234
+ /** Position des labels */
235
+ labelPosition?: "inside" | "outside"
236
+ }
237
+
238
+ /**
239
+ * Props pour les sparklines (mini graphiques inline)
240
+ */
241
+ export interface SparklineProps {
242
+ /** Données (valeurs simples) */
243
+ data: number[]
244
+ /** Type de sparkline */
245
+ type?: "line" | "bar" | "area"
246
+ /** Largeur */
247
+ width?: number
248
+ /** Hauteur */
249
+ height?: number
250
+ /** Couleur */
251
+ color?: string
252
+ /** Couleur de remplissage (area) */
253
+ fillColor?: string
254
+ /** Opacité du remplissage */
255
+ fillOpacity?: number
256
+ /** Afficher le min/max */
257
+ showMinMax?: boolean
258
+ /** Afficher la valeur actuelle */
259
+ showValue?: boolean
260
+ /** Classes CSS */
261
+ className?: string
262
+ /** Animation */
263
+ animation?: boolean
264
+ }
265
+
266
+ /**
267
+ * Props pour les mini-graphiques DataTable
268
+ */
269
+ export interface MiniChartProps {
270
+ /** Données */
271
+ data: number[] | ChartDataPoint[]
272
+ /** Type de graphique */
273
+ type?: "line" | "bar" | "area" | "sparkline"
274
+ /** Largeur */
275
+ width?: number
276
+ /** Hauteur */
277
+ height?: number
278
+ /** Couleur principale */
279
+ color?: string
280
+ /** Afficher la tendance (up/down) */
281
+ showTrend?: boolean
282
+ /** Format de la valeur */
283
+ valueFormatter?: (value: number) => string
284
+ /** Classes CSS */
285
+ className?: string
286
+ }
287
+
288
+ /**
289
+ * Configuration pour créer une colonne chart dans DataTable
290
+ */
291
+ export interface ChartColumnConfig<TData> {
292
+ /** Clé d'accès aux données */
293
+ accessorKey: keyof TData
294
+ /** En-tête de colonne */
295
+ header?: string
296
+ /** Type de graphique */
297
+ chartType?: "sparkline" | "bar" | "line" | "area"
298
+ /** Largeur de la colonne */
299
+ width?: number
300
+ /** Hauteur du graphique */
301
+ height?: number
302
+ /** Couleur */
303
+ color?: string
304
+ /** Afficher la valeur */
305
+ showValue?: boolean
306
+ /** Format de la valeur */
307
+ valueFormatter?: (value: number) => string
308
+ }
309
+
310
+ /**
311
+ * Couleurs par défaut pour les graphiques
312
+ */
313
+ export const DEFAULT_CHART_COLORS = [
314
+ "hsl(var(--chart-1))",
315
+ "hsl(var(--chart-2))",
316
+ "hsl(var(--chart-3))",
317
+ "hsl(var(--chart-4))",
318
+ "hsl(var(--chart-5))",
319
+ ]
320
+
321
+ /**
322
+ * Tailles prédéfinies
323
+ */
324
+ export const CHART_SIZE_MAP: Record<ChartSize, { width: number | string; height: number }> = {
325
+ sm: { width: "100%", height: 150 },
326
+ md: { width: "100%", height: 250 },
327
+ lg: { width: "100%", height: 350 },
328
+ xl: { width: "100%", height: 450 },
329
+ auto: { width: "100%", height: 300 },
330
+ }