@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.
- package/dist/cli/commands/add.d.ts +7 -0
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/list.d.ts +5 -0
- package/dist/cli/commands/search.d.ts +1 -0
- package/dist/cli/index.cjs +4844 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/utils/config.d.ts +29 -0
- package/dist/cli/utils/logger.d.ts +20 -0
- package/dist/cli/utils/registry.d.ts +23 -0
- package/package.json +14 -3
- package/src/blocks/activity-timeline/index.tsx +586 -0
- package/src/blocks/calendar-view/index.tsx +756 -0
- package/src/blocks/chat/index.tsx +1018 -0
- package/src/blocks/chat/widget.tsx +504 -0
- package/src/blocks/dashboard/index.tsx +522 -0
- package/src/blocks/empty-states/index.tsx +452 -0
- package/src/blocks/error-pages/index.tsx +426 -0
- package/src/blocks/faq/index.tsx +479 -0
- package/src/blocks/file-manager/index.tsx +890 -0
- package/src/blocks/footer/index.tsx +133 -0
- package/src/blocks/header/index.tsx +357 -0
- package/src/blocks/headtab/index.tsx +139 -0
- package/src/blocks/i18n-editor/index.tsx +1016 -0
- package/src/blocks/index.ts +80 -0
- package/src/blocks/kanban-board/index.tsx +779 -0
- package/src/blocks/landing/index.tsx +677 -0
- package/src/blocks/language-selector/index.tsx +88 -0
- package/src/blocks/layout/index.tsx +159 -0
- package/src/blocks/login/index.tsx +339 -0
- package/src/blocks/login/types.ts +131 -0
- package/src/blocks/pricing/index.tsx +564 -0
- package/src/blocks/profile/index.tsx +746 -0
- package/src/blocks/settings/index.tsx +558 -0
- package/src/blocks/sidebar/index.tsx +713 -0
- package/src/blocks/theme-creator-block/index.tsx +835 -0
- package/src/blocks/user-management/index.tsx +1037 -0
- package/src/blocks/wizard/index.tsx +719 -0
- package/src/components/DataTable/DataTable.tsx +406 -0
- package/src/components/DataTable/DataTableAdvanced.tsx +720 -0
- package/src/components/DataTable/DataTableBody.tsx +216 -0
- package/src/components/DataTable/DataTableCell.tsx +172 -0
- package/src/components/DataTable/DataTableColumnResizer.tsx +62 -0
- package/src/components/DataTable/DataTableConflictResolver.tsx +478 -0
- package/src/components/DataTable/DataTableContextMenu.tsx +219 -0
- package/src/components/DataTable/DataTableEditCell.tsx +279 -0
- package/src/components/DataTable/DataTableFilterBuilder.tsx +519 -0
- package/src/components/DataTable/DataTableFilters.tsx +535 -0
- package/src/components/DataTable/DataTableGrouping.tsx +147 -0
- package/src/components/DataTable/DataTableHeader.tsx +172 -0
- package/src/components/DataTable/DataTablePagination.tsx +125 -0
- package/src/components/DataTable/DataTableSelection.tsx +269 -0
- package/src/components/DataTable/DataTableSyncStatus.tsx +281 -0
- package/src/components/DataTable/DataTableToolbar.tsx +262 -0
- package/src/components/DataTable/README.md +446 -0
- package/src/components/DataTable/__tests__/DataTableAdvanced.test.tsx +426 -0
- package/src/components/DataTable/__tests__/DataTableEdit.test.tsx +329 -0
- package/src/components/DataTable/__tests__/useDataTableAdvanced.test.ts +455 -0
- package/src/components/DataTable/examples/EditExample.tsx +166 -0
- package/src/components/DataTable/formatters/index.ts +335 -0
- package/src/components/DataTable/hooks/__tests__/useDataTableEdit.test.ts +239 -0
- package/src/components/DataTable/hooks/useDataTable.ts +145 -0
- package/src/components/DataTable/hooks/useDataTableAdvanced.ts +342 -0
- package/src/components/DataTable/hooks/useDataTableAdvancedFilters.ts +637 -0
- package/src/components/DataTable/hooks/useDataTableColumnTemplates.ts +186 -0
- package/src/components/DataTable/hooks/useDataTableEdit.ts +167 -0
- package/src/components/DataTable/hooks/useDataTableExport.ts +227 -0
- package/src/components/DataTable/hooks/useDataTableImport.ts +216 -0
- package/src/components/DataTable/hooks/useDataTableOffline.ts +481 -0
- package/src/components/DataTable/hooks/useDataTableTheme.ts +213 -0
- package/src/components/DataTable/hooks/useDataTableVirtualization.ts +99 -0
- package/src/components/DataTable/hooks/useTableLayout.ts +85 -0
- package/src/components/DataTable/index.ts +81 -0
- package/src/components/DataTable/services/IndexedDBService.ts +504 -0
- package/src/components/DataTable/templates/index.tsx +803 -0
- package/src/components/DataTable/types.ts +504 -0
- package/src/components/DataTable/utils.ts +164 -0
- package/src/components/DataTable/workers/exportWorker.ts +213 -0
- package/src/components/accordion/index.tsx +61 -0
- package/src/components/alert/index.tsx +61 -0
- package/src/components/alert-dialog/index.tsx +146 -0
- package/src/components/aspect-ratio/index.tsx +12 -0
- package/src/components/avatar/index.tsx +54 -0
- package/src/components/badge/Badge.stories.tsx +64 -0
- package/src/components/badge/index.tsx +38 -0
- package/src/components/button/Button.stories.tsx +173 -0
- package/src/components/button/index.tsx +56 -0
- package/src/components/calendar/index.tsx +73 -0
- package/src/components/card/index.tsx +78 -0
- package/src/components/checkbox/index.tsx +34 -0
- package/src/components/code/index.tsx +229 -0
- package/src/components/collapsible/index.tsx +16 -0
- package/src/components/command/index.tsx +162 -0
- package/src/components/context-menu/index.tsx +204 -0
- package/src/components/dialog/index.tsx +126 -0
- package/src/components/dropdown-menu/index.tsx +204 -0
- package/src/components/error-boundary/ErrorBoundary.tsx +281 -0
- package/src/components/error-boundary/index.ts +7 -0
- package/src/components/form/index.tsx +183 -0
- package/src/components/hover-card/index.tsx +33 -0
- package/src/components/index.ts +368 -0
- package/src/components/input/Input.stories.tsx +100 -0
- package/src/components/input/index.tsx +27 -0
- package/src/components/input-otp/index.tsx +277 -0
- package/src/components/label/index.tsx +30 -0
- package/src/components/language-selector/index.tsx +341 -0
- package/src/components/menubar/index.tsx +240 -0
- package/src/components/navigation-menu/index.tsx +134 -0
- package/src/components/popover/index.tsx +35 -0
- package/src/components/progress/index.tsx +32 -0
- package/src/components/radio-group/index.tsx +48 -0
- package/src/components/scroll-area/index.tsx +52 -0
- package/src/components/select/index.tsx +164 -0
- package/src/components/separator/index.tsx +35 -0
- package/src/components/sheet/index.tsx +147 -0
- package/src/components/skeleton/index.tsx +22 -0
- package/src/components/slider/index.tsx +32 -0
- package/src/components/switch/index.tsx +33 -0
- package/src/components/table/index.tsx +117 -0
- package/src/components/tabs/index.tsx +59 -0
- package/src/components/textarea/index.tsx +30 -0
- package/src/components/theme-selector/index.tsx +327 -0
- package/src/components/toast/index.tsx +133 -0
- package/src/components/toaster/index.tsx +34 -0
- package/src/components/toggle/index.tsx +49 -0
- package/src/components/tooltip/index.tsx +34 -0
- package/src/components/typography/index.tsx +276 -0
- package/src/components/waka-3d-pie-chart/index.tsx +486 -0
- package/src/components/waka-achievement-unlock/index.tsx +716 -0
- package/src/components/waka-activity-feed/index.tsx +686 -0
- package/src/components/waka-address-autocomplete/index.tsx +1202 -0
- package/src/components/waka-admincrumb/index.tsx +349 -0
- package/src/components/waka-alert-stack/index.tsx +827 -0
- package/src/components/waka-allocation-matrix/index.tsx +1278 -0
- package/src/components/waka-approval-chain/index.tsx +766 -0
- package/src/components/waka-audit-log/index.tsx +1475 -0
- package/src/components/waka-autocomplete/index.tsx +358 -0
- package/src/components/waka-badge-showcase/index.tsx +704 -0
- package/src/components/waka-barcode/index.tsx +260 -0
- package/src/components/waka-biometric-prompt/index.tsx +765 -0
- package/src/components/waka-bottom-sheet/index.tsx +495 -0
- package/src/components/waka-breadcrumb/index.tsx +376 -0
- package/src/components/waka-breadcrumb-path/index.tsx +513 -0
- package/src/components/waka-budget-burn/index.tsx +1234 -0
- package/src/components/waka-capacity-planner/index.tsx +1107 -0
- package/src/components/waka-carousel/index.tsx +893 -0
- package/src/components/waka-cart-summary/index.tsx +1055 -0
- package/src/components/waka-challenge-timer/index.tsx +1044 -0
- package/src/components/waka-charts/WakaAreaChart.tsx +251 -0
- package/src/components/waka-charts/WakaBarChart.tsx +222 -0
- package/src/components/waka-charts/WakaChart.tsx +124 -0
- package/src/components/waka-charts/WakaLineChart.tsx +219 -0
- package/src/components/waka-charts/WakaMiniChart.tsx +133 -0
- package/src/components/waka-charts/WakaPieChart.tsx +214 -0
- package/src/components/waka-charts/WakaSparkline.tsx +229 -0
- package/src/components/waka-charts/dataTableHelpers.ts +109 -0
- package/src/components/waka-charts/hooks/useChartTheme.ts +123 -0
- package/src/components/waka-charts/hooks/useRechartsLoader.ts +234 -0
- package/src/components/waka-charts/index.ts +90 -0
- package/src/components/waka-charts/types.ts +330 -0
- package/src/components/waka-chat-bubble/index.tsx +1060 -0
- package/src/components/waka-checklist/index.tsx +1067 -0
- package/src/components/waka-checkout-stepper/index.tsx +976 -0
- package/src/components/waka-cohort-table/index.tsx +1011 -0
- package/src/components/waka-color-picker/index.tsx +447 -0
- package/src/components/waka-combo-counter/index.tsx +864 -0
- package/src/components/waka-combobox/index.tsx +497 -0
- package/src/components/waka-command-bar/index.tsx +403 -0
- package/src/components/waka-compare-period/index.tsx +1230 -0
- package/src/components/waka-connection-matrix/index.tsx +1053 -0
- package/src/components/waka-contribution-graph/index.tsx +552 -0
- package/src/components/waka-cost-breakdown/index.tsx +1065 -0
- package/src/components/waka-coupon-input/index.tsx +592 -0
- package/src/components/waka-credit-card-input/index.tsx +982 -0
- package/src/components/waka-daily-reward/index.tsx +762 -0
- package/src/components/waka-date-range-picker/index.tsx +378 -0
- package/src/components/waka-datetime-picker/index.tsx +793 -0
- package/src/components/waka-datetime-picker.form-integration/index.tsx +402 -0
- package/src/components/waka-deployment-lane/index.tsx +673 -0
- package/src/components/waka-device-trust/index.tsx +1259 -0
- package/src/components/waka-dock/index.tsx +285 -0
- package/src/components/waka-drawer/index.tsx +319 -0
- package/src/components/waka-empty-state/index.tsx +545 -0
- package/src/components/waka-error-shake/index.tsx +398 -0
- package/src/components/waka-feature-announcement/index.tsx +991 -0
- package/src/components/waka-file-upload/index.tsx +437 -0
- package/src/components/waka-floating-nav/index.tsx +413 -0
- package/src/components/waka-flow-diagram/index.tsx +508 -0
- package/src/components/waka-funnel-chart/index.tsx +823 -0
- package/src/components/waka-glow-card/index.tsx +246 -0
- package/src/components/waka-goal-progress/index.tsx +1025 -0
- package/src/components/waka-haptic-button/index.tsx +388 -0
- package/src/components/waka-health-pulse/index.tsx +451 -0
- package/src/components/waka-heatmap/index.tsx +1026 -0
- package/src/components/waka-hotspot/index.tsx +682 -0
- package/src/components/waka-image/index.tsx +373 -0
- package/src/components/waka-incident-timeline/index.tsx +686 -0
- package/src/components/waka-invoice-preview/index.tsx +829 -0
- package/src/components/waka-kanban/index.tsx +646 -0
- package/src/components/waka-kpi-dashboard/index.tsx +755 -0
- package/src/components/waka-leaderboard/index.tsx +746 -0
- package/src/components/waka-level-progress/index.tsx +665 -0
- package/src/components/waka-liquid-button/index.tsx +520 -0
- package/src/components/waka-loading-orbit/index.tsx +478 -0
- package/src/components/waka-loot-box/index.tsx +1091 -0
- package/src/components/waka-magic-link/index.tsx +321 -0
- package/src/components/waka-magnetic-button/index.tsx +567 -0
- package/src/components/waka-mention-input/index.tsx +953 -0
- package/src/components/waka-metric-sparkline/index.tsx +627 -0
- package/src/components/waka-milestone-road/index.tsx +1064 -0
- package/src/components/waka-modal/index.tsx +374 -0
- package/src/components/waka-morph-button/index.tsx +495 -0
- package/src/components/waka-network-topology/index.tsx +801 -0
- package/src/components/waka-notifications/index.tsx +414 -0
- package/src/components/waka-number-input/index.tsx +373 -0
- package/src/components/waka-orbital-menu/index.tsx +445 -0
- package/src/components/waka-order-tracker/index.tsx +1041 -0
- package/src/components/waka-pagination/index.tsx +393 -0
- package/src/components/waka-password-strength/index.tsx +824 -0
- package/src/components/waka-payment-method-picker/index.tsx +715 -0
- package/src/components/waka-permission-matrix/index.tsx +1302 -0
- package/src/components/waka-phone-input/index.tsx +801 -0
- package/src/components/waka-pipeline-view/index.tsx +604 -0
- package/src/components/waka-player-card/index.tsx +691 -0
- package/src/components/waka-points-popup/index.tsx +366 -0
- package/src/components/waka-power-up/index.tsx +1155 -0
- package/src/components/waka-presence-indicator/index.tsx +1181 -0
- package/src/components/waka-pricing-table/index.tsx +755 -0
- package/src/components/waka-product-card/index.tsx +786 -0
- package/src/components/waka-progress-onboarding/index.tsx +878 -0
- package/src/components/waka-pull-to-refresh/index.tsx +451 -0
- package/src/components/waka-qrcode/index.tsx +232 -0
- package/src/components/waka-quest-card/index.tsx +1275 -0
- package/src/components/waka-quota-bar/index.tsx +693 -0
- package/src/components/waka-radar-score/index.tsx +512 -0
- package/src/components/waka-rank-badge/index.tsx +813 -0
- package/src/components/waka-rating-input/index.tsx +560 -0
- package/src/components/waka-reaction-picker/index.tsx +1062 -0
- package/src/components/waka-region-map/index.tsx +730 -0
- package/src/components/waka-resource-gauge/index.tsx +654 -0
- package/src/components/waka-resource-pool/index.tsx +1035 -0
- package/src/components/waka-rich-text-editor/index.tsx +594 -0
- package/src/components/waka-rollback-slider/index.tsx +891 -0
- package/src/components/waka-sankey-diagram/index.tsx +1032 -0
- package/src/components/waka-schedule-picker/index.tsx +1060 -0
- package/src/components/waka-scratch-card/index.tsx +914 -0
- package/src/components/waka-season-pass/index.tsx +886 -0
- package/src/components/waka-security-score/index.tsx +1126 -0
- package/src/components/waka-segmented-control/index.tsx +238 -0
- package/src/components/waka-server-rack/index.tsx +764 -0
- package/src/components/waka-session-manager/index.tsx +815 -0
- package/src/components/waka-signature-pad/index.tsx +744 -0
- package/src/components/waka-skeleton-wave/index.tsx +454 -0
- package/src/components/waka-skill-tree/index.tsx +1031 -0
- package/src/components/waka-sla-tracker/index.tsx +798 -0
- package/src/components/waka-slider-range/index.tsx +765 -0
- package/src/components/waka-spin-wheel/index.tsx +671 -0
- package/src/components/waka-spinner/index.tsx +284 -0
- package/src/components/waka-spotlight/index.tsx +410 -0
- package/src/components/waka-stat/index.tsx +428 -0
- package/src/components/waka-stats-hexagon/index.tsx +824 -0
- package/src/components/waka-status-matrix/index.tsx +565 -0
- package/src/components/waka-stepper/index.tsx +489 -0
- package/src/components/waka-streak-counter/index.tsx +334 -0
- package/src/components/waka-success-explosion/index.tsx +453 -0
- package/src/components/waka-swipe-card/index.tsx +574 -0
- package/src/components/waka-tabs-morph/index.tsx +509 -0
- package/src/components/waka-tag-input/index.tsx +877 -0
- package/src/components/waka-team-banner/index.tsx +1183 -0
- package/src/components/waka-terminal-output/index.tsx +836 -0
- package/src/components/waka-theme-creator/index.tsx +762 -0
- package/src/components/waka-theme-manager/index.tsx +654 -0
- package/src/components/waka-thread-view/index.tsx +874 -0
- package/src/components/waka-tilt-card/index.tsx +250 -0
- package/src/components/waka-time-picker/index.tsx +479 -0
- package/src/components/waka-timeline/index.tsx +385 -0
- package/src/components/waka-tooltip-tour/index.tsx +855 -0
- package/src/components/waka-tour-guide/index.tsx +920 -0
- package/src/components/waka-tournament-bracket/index.tsx +1276 -0
- package/src/components/waka-tree/index.tsx +557 -0
- package/src/components/waka-treemap-chart/index.tsx +1031 -0
- package/src/components/waka-two-factor-setup/index.tsx +995 -0
- package/src/components/waka-typewriter/index.tsx +566 -0
- package/src/components/waka-typing-indicator/index.tsx +649 -0
- package/src/components/waka-versus-card/index.tsx +1026 -0
- package/src/components/waka-video/index.tsx +557 -0
- package/src/components/waka-video-call/index.tsx +1087 -0
- package/src/components/waka-virtual-list/index.tsx +327 -0
- package/src/components/waka-voice-message/index.tsx +1019 -0
- package/src/components/waka-welcome-modal/index.tsx +790 -0
- 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
|
+
}
|