@wakastellar/ui 4.0.1 → 4.1.1

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 (622) hide show
  1. package/dist/blocks/_shared/identity/InviteUserPanel.cjs.js +1 -1
  2. package/dist/blocks/_shared/identity/RoleSelect.cjs.js +1 -1
  3. package/dist/blocks/_shared/identity/SidePushLayout.cjs.js +1 -1
  4. package/dist/blocks/activity-timeline/index.cjs.js +1 -1
  5. package/dist/blocks/activity-timeline/index.es.js +1 -1
  6. package/dist/blocks/antivirus-dashboard/index.cjs.js +1 -1
  7. package/dist/blocks/antivirus-dashboard/index.es.js +1 -1
  8. package/dist/blocks/api-keys-manager/index.cjs.js +1 -1
  9. package/dist/blocks/apm-overview/index.cjs.js +1 -1
  10. package/dist/blocks/auth-2fa/index.cjs.js +2 -2
  11. package/dist/blocks/auth-2fa/index.es.js +1 -1
  12. package/dist/blocks/avatar-upload/index.cjs.js +1 -1
  13. package/dist/blocks/avatar-upload/index.es.js +13 -13
  14. package/dist/blocks/calendar-view/index.cjs.js +1 -1
  15. package/dist/blocks/calendar-view/index.es.js +1 -1
  16. package/dist/blocks/chat/index.cjs.js +1 -1
  17. package/dist/blocks/chat/index.es.js +162 -162
  18. package/dist/blocks/chat/widget.cjs.js +1 -1
  19. package/dist/blocks/chat/widget.es.js +19 -13
  20. package/dist/blocks/chat-interface/index.cjs.js +1 -1
  21. package/dist/blocks/chat-interface/index.es.js +1 -1
  22. package/dist/blocks/checkout-flow/index.cjs.js +1 -1
  23. package/dist/blocks/checkout-flow/index.es.js +1 -1
  24. package/dist/blocks/cicd-builder/index.cjs.js +1 -1
  25. package/dist/blocks/clamav-service-status/index.cjs.js +1 -1
  26. package/dist/blocks/cloud-cost-dashboard/index.cjs.js +1 -1
  27. package/dist/blocks/container-orchestrator/index.cjs.js +1 -1
  28. package/dist/blocks/container-orchestrator/index.es.js +2 -1
  29. package/dist/blocks/dashboard/index.cjs.js +1 -1
  30. package/dist/blocks/dashboard/index.es.js +2 -2
  31. package/dist/blocks/dashboard-kpi/index.cjs.js +1 -1
  32. package/dist/blocks/dashboard-kpi/index.es.js +1 -1
  33. package/dist/blocks/database-admin/index.cjs.js +1 -1
  34. package/dist/blocks/deployment-dashboard/index.cjs.js +1 -1
  35. package/dist/blocks/deployment-dashboard/index.es.js +1 -1
  36. package/dist/blocks/empty-states/index.cjs.js +1 -1
  37. package/dist/blocks/empty-states/index.es.js +1 -1
  38. package/dist/blocks/error-pages/index.cjs.js +1 -1
  39. package/dist/blocks/error-pages/index.es.js +1 -1
  40. package/dist/blocks/faq/index.cjs.js +1 -1
  41. package/dist/blocks/faq/index.es.js +1 -1
  42. package/dist/blocks/file-manager/index.cjs.js +1 -1
  43. package/dist/blocks/file-manager/index.es.js +1 -1
  44. package/dist/blocks/file-scan-uploader/index.cjs.js +1 -1
  45. package/dist/blocks/file-scan-uploader/index.es.js +2 -2
  46. package/dist/blocks/footer/index.cjs.js +1 -1
  47. package/dist/blocks/gitops-sync-status/index.cjs.js +1 -1
  48. package/dist/blocks/header/index.cjs.js +1 -1
  49. package/dist/blocks/header/index.es.js +1 -1
  50. package/dist/blocks/headtab/index.cjs.js +1 -1
  51. package/dist/blocks/i18n-editor/index.cjs.js +1 -1
  52. package/dist/blocks/i18n-editor/index.es.js +127 -127
  53. package/dist/blocks/incident-manager/index.cjs.js +1 -1
  54. package/dist/blocks/infrastructure-map/index.cjs.js +1 -1
  55. package/dist/blocks/kanban-board/index.cjs.js +1 -1
  56. package/dist/blocks/kanban-board/index.es.js +1 -1
  57. package/dist/blocks/landing/index.cjs.js +1 -1
  58. package/dist/blocks/landing/index.es.js +1 -1
  59. package/dist/blocks/language-selector/index.cjs.js +1 -1
  60. package/dist/blocks/layout/index.cjs.js +1 -1
  61. package/dist/blocks/login/index.cjs.js +1 -1
  62. package/dist/blocks/on-call-schedule/index.cjs.js +1 -1
  63. package/dist/blocks/player-profile/index.cjs.js +1 -1
  64. package/dist/blocks/player-profile/index.es.js +1 -1
  65. package/dist/blocks/pricing/index.cjs.js +1 -1
  66. package/dist/blocks/pricing/index.es.js +1 -1
  67. package/dist/blocks/profile/index.cjs.js +1 -1
  68. package/dist/blocks/profile/index.es.js +1 -1
  69. package/dist/blocks/profile-list/index.cjs.js +1 -1
  70. package/dist/blocks/quarantine-manager/index.cjs.js +1 -1
  71. package/dist/blocks/quarantine-manager/index.es.js +1 -1
  72. package/dist/blocks/release-notes/index.cjs.js +1 -1
  73. package/dist/blocks/scan-history-log/index.cjs.js +1 -1
  74. package/dist/blocks/scan-history-log/index.es.js +1 -1
  75. package/dist/blocks/scan-policy-editor/index.cjs.js +1 -1
  76. package/dist/blocks/scan-report-generator/index.cjs.js +1 -1
  77. package/dist/blocks/settings/index.cjs.js +1 -1
  78. package/dist/blocks/settings/index.es.js +1 -1
  79. package/dist/blocks/sidebar/index.cjs.js +1 -1
  80. package/dist/blocks/sidebar/index.es.js +1 -1
  81. package/dist/blocks/signature-database-manager/index.cjs.js +1 -1
  82. package/dist/blocks/team-form/index.cjs.js +1 -1
  83. package/dist/blocks/threat-alert-banner/index.cjs.js +1 -1
  84. package/dist/blocks/user-management/index.cjs.js +1 -1
  85. package/dist/blocks/waka-doc-shell/index.cjs.js +1 -1
  86. package/dist/blocks/wizard/index.cjs.js +1 -1
  87. package/dist/blocks/wizard/index.es.js +37 -37
  88. package/dist/charts.cjs.js +1 -1
  89. package/dist/charts.es.js +8 -8
  90. package/dist/cli/index.cjs +5 -1
  91. package/dist/components/DataTable/DataTable.cjs.js +1 -1
  92. package/dist/components/DataTable/DataTable.es.js +68 -66
  93. package/dist/components/DataTable/DataTableAdvanced.cjs.js +1 -1
  94. package/dist/components/DataTable/DataTableColumnResizer.cjs.js +1 -1
  95. package/dist/components/DataTable/DataTableContextMenu.cjs.js +1 -1
  96. package/dist/components/DataTable/DataTableEditCell.cjs.js +1 -1
  97. package/dist/components/DataTable/DataTableFilters.cjs.js +1 -1
  98. package/dist/components/DataTable/DataTableGrouping.cjs.js +1 -1
  99. package/dist/components/DataTable/DataTablePagination.cjs.js +1 -1
  100. package/dist/components/DataTable/DataTablePagination.d.ts +3 -1
  101. package/dist/components/DataTable/DataTablePagination.es.js +38 -27
  102. package/dist/components/DataTable/DataTableSelection.cjs.js +1 -1
  103. package/dist/components/DataTable/DataTableToolbar.cjs.js +1 -1
  104. package/dist/components/DataTable/hooks/useDataTable.cjs.js +1 -1
  105. package/dist/components/DataTable/hooks/useDataTable.es.js +5 -1
  106. package/dist/components/DataTable/hooks/useDataTableAdvanced.cjs.js +1 -1
  107. package/dist/components/DataTable/hooks/useDataTableEdit.cjs.js +1 -1
  108. package/dist/components/DataTable/hooks/useDataTableExport.cjs.js +2 -2
  109. package/dist/components/DataTable/hooks/useDataTableImport.cjs.js +2 -2
  110. package/dist/components/DataTable/hooks/useDataTableImport.es.js +2 -1
  111. package/dist/components/DataTable/hooks/useDataTableTheme.cjs.js +1 -1
  112. package/dist/components/DataTable/hooks/useDataTableVirtualization.cjs.js +1 -1
  113. package/dist/components/DataTable/hooks/useTableLayout.cjs.js +1 -1
  114. package/dist/components/DataTable/utils.cjs.js +1 -1
  115. package/dist/components/accordion/index.cjs.js +1 -1
  116. package/dist/components/alert/index.cjs.js +1 -1
  117. package/dist/components/alert-dialog/index.cjs.js +1 -1
  118. package/dist/components/aspect-ratio/index.cjs.js +1 -1
  119. package/dist/components/avatar/index.cjs.js +1 -1
  120. package/dist/components/badge/index.cjs.js +1 -1
  121. package/dist/components/button/index.cjs.js +1 -1
  122. package/dist/components/calendar/index.cjs.js +1 -1
  123. package/dist/components/card/index.cjs.js +1 -1
  124. package/dist/components/checkbox/index.cjs.js +1 -1
  125. package/dist/components/code/index.cjs.js +2 -2
  126. package/dist/components/code/index.es.js +3 -2
  127. package/dist/components/collapsible/index.cjs.js +1 -1
  128. package/dist/components/command/index.cjs.js +1 -1
  129. package/dist/components/context-menu/index.cjs.js +1 -1
  130. package/dist/components/dialog/index.cjs.js +1 -1
  131. package/dist/components/dropdown-menu/index.cjs.js +1 -1
  132. package/dist/components/editor/blocks/index.cjs.js +1 -1
  133. package/dist/components/editor/blocks/index.es.js +12 -12
  134. package/dist/components/editor/blocks/waka-acceptance-criteria-block.cjs.js +1 -1
  135. package/dist/components/editor/blocks/waka-ai-assist-block.cjs.js +1 -1
  136. package/dist/components/editor/blocks/waka-api-endpoint-block.cjs.js +1 -1
  137. package/dist/components/editor/blocks/waka-code-playground-block.cjs.js +1 -1
  138. package/dist/components/editor/blocks/waka-comment-thread-block.cjs.js +1 -1
  139. package/dist/components/editor/blocks/waka-diagram-block.cjs.js +3 -3
  140. package/dist/components/editor/blocks/waka-diagram-block.es.js +21 -40
  141. package/dist/components/editor/blocks/waka-embed-block.cjs.js +1 -1
  142. package/dist/components/editor/blocks/waka-slash-menu-block.cjs.js +1 -1
  143. package/dist/components/editor/blocks/waka-user-story-block.cjs.js +1 -1
  144. package/dist/components/editor/blocks/waka-version-diff-block.cjs.js +1 -1
  145. package/dist/components/editor/waka-ai-writer.cjs.js +1 -1
  146. package/dist/components/editor/waka-collaborative-editor.cjs.js +1 -1
  147. package/dist/components/editor/waka-diff-viewer.cjs.js +1 -1
  148. package/dist/components/editor/waka-dnd-editor.cjs.js +1 -1
  149. package/dist/components/editor/waka-document-editor.cjs.js +1 -1
  150. package/dist/components/editor/waka-document-editor.es.js +1 -1
  151. package/dist/components/editor/waka-editor-elements.cjs.js +1 -1
  152. package/dist/components/editor/waka-editor-leaves.cjs.js +1 -1
  153. package/dist/components/editor/waka-editor-toolbar.cjs.js +1 -1
  154. package/dist/components/editor/waka-editor.cjs.js +1 -1
  155. package/dist/components/editor/waka-floating-toolbar.cjs.js +1 -1
  156. package/dist/components/editor/waka-markdown-editor.cjs.js +1 -1
  157. package/dist/components/editor/waka-mention-editor.cjs.js +1 -1
  158. package/dist/components/editor/waka-mention-editor.es.js +2 -2
  159. package/dist/components/editor/waka-slash-menu.cjs.js +1 -1
  160. package/dist/components/editor/waka-spec-editor.cjs.js +1 -1
  161. package/dist/components/form/index.cjs.js +1 -1
  162. package/dist/components/hover-card/index.cjs.js +1 -1
  163. package/dist/components/input/index.cjs.js +1 -1
  164. package/dist/components/input-otp/index.cjs.js +1 -1
  165. package/dist/components/input-otp/index.es.js +2 -1
  166. package/dist/components/label/index.cjs.js +1 -1
  167. package/dist/components/language-selector/index.cjs.js +1 -1
  168. package/dist/components/menubar/index.cjs.js +1 -1
  169. package/dist/components/navigation-menu/index.cjs.js +1 -1
  170. package/dist/components/popover/index.cjs.js +1 -1
  171. package/dist/components/progress/index.cjs.js +1 -1
  172. package/dist/components/radio-group/index.cjs.js +1 -1
  173. package/dist/components/resizable/index.cjs.js +1 -1
  174. package/dist/components/resizable/index.es.js +9 -9
  175. package/dist/components/scroll-area/index.cjs.js +1 -1
  176. package/dist/components/select/index.cjs.js +1 -1
  177. package/dist/components/separator/index.cjs.js +1 -1
  178. package/dist/components/sheet/index.cjs.js +1 -1
  179. package/dist/components/skeleton/index.cjs.js +1 -1
  180. package/dist/components/slider/index.cjs.js +1 -1
  181. package/dist/components/switch/index.cjs.js +1 -1
  182. package/dist/components/table/index.cjs.js +1 -1
  183. package/dist/components/tabs/index.cjs.js +1 -1
  184. package/dist/components/textarea/index.cjs.js +1 -1
  185. package/dist/components/theme-selector/index.cjs.js +1 -1
  186. package/dist/components/toast/index.cjs.js +1 -1
  187. package/dist/components/toaster/index.cjs.js +1 -1
  188. package/dist/components/toggle/index.cjs.js +1 -1
  189. package/dist/components/toggle-group/index.cjs.js +1 -1
  190. package/dist/components/tooltip/index.cjs.js +1 -1
  191. package/dist/components/typography/index.cjs.js +1 -1
  192. package/dist/components/waka-3d-pie-chart/index.cjs.js +1 -1
  193. package/dist/components/waka-3d-pie-chart/index.es.js +1 -1
  194. package/dist/components/waka-achievement-unlock/index.cjs.js +1 -1
  195. package/dist/components/waka-achievement-unlock/index.es.js +1 -1
  196. package/dist/components/waka-activity-feed/index.cjs.js +2 -2
  197. package/dist/components/waka-activity-feed/index.es.js +1 -1
  198. package/dist/components/waka-ad-banner/index.cjs.js +1 -1
  199. package/dist/components/waka-ad-banner/index.es.js +18 -15
  200. package/dist/components/waka-ad-fallback/index.cjs.js +1 -1
  201. package/dist/components/waka-ad-fallback/index.es.js +1 -1
  202. package/dist/components/waka-ad-inline/index.cjs.js +1 -1
  203. package/dist/components/waka-ad-inline/index.es.js +2 -2
  204. package/dist/components/waka-ad-interstitial/index.cjs.js +1 -1
  205. package/dist/components/waka-ad-interstitial/index.es.js +3 -3
  206. package/dist/components/waka-ad-placeholder/index.cjs.js +2 -2
  207. package/dist/components/waka-ad-placeholder/index.es.js +1 -1
  208. package/dist/components/waka-ad-provider/index.cjs.js +1 -1
  209. package/dist/components/waka-ad-provider/index.es.js +1 -1
  210. package/dist/components/waka-ad-sidebar/index.cjs.js +1 -1
  211. package/dist/components/waka-ad-sidebar/index.es.js +2 -2
  212. package/dist/components/waka-ad-sticky-footer/index.cjs.js +1 -1
  213. package/dist/components/waka-ad-sticky-footer/index.es.js +2 -2
  214. package/dist/components/waka-address-autocomplete/index.cjs.js +2 -2
  215. package/dist/components/waka-address-autocomplete/index.es.js +10 -6
  216. package/dist/components/waka-admincrumb/index.cjs.js +1 -1
  217. package/dist/components/waka-alert-panel/index.cjs.js +1 -1
  218. package/dist/components/waka-alert-stack/index.cjs.js +1 -1
  219. package/dist/components/waka-alert-stack/index.es.js +1 -1
  220. package/dist/components/waka-allocation-matrix/index.cjs.js +2 -2
  221. package/dist/components/waka-allocation-matrix/index.es.js +1 -1
  222. package/dist/components/waka-approval-chain/index.cjs.js +1 -1
  223. package/dist/components/waka-approval-chain/index.es.js +1 -1
  224. package/dist/components/waka-artifact-list/index.cjs.js +1 -1
  225. package/dist/components/waka-artifact-list/index.es.js +1 -1
  226. package/dist/components/waka-audit-log/index.cjs.js +2 -2
  227. package/dist/components/waka-audit-log/index.es.js +1 -1
  228. package/dist/components/waka-autocomplete/index.cjs.js +1 -1
  229. package/dist/components/waka-autocomplete/index.es.js +3 -2
  230. package/dist/components/waka-badge-showcase/index.cjs.js +1 -1
  231. package/dist/components/waka-barcode/index.cjs.js +1 -1
  232. package/dist/components/waka-barcode/index.es.js +1 -1
  233. package/dist/components/waka-biometric-prompt/index.cjs.js +2 -2
  234. package/dist/components/waka-biometric-prompt/index.es.js +1 -1
  235. package/dist/components/waka-bottom-sheet/index.cjs.js +1 -1
  236. package/dist/components/waka-bottom-sheet/index.es.js +12 -7
  237. package/dist/components/waka-breadcrumb/index.cjs.js +1 -1
  238. package/dist/components/waka-breadcrumb/index.es.js +1 -1
  239. package/dist/components/waka-breadcrumb-path/index.cjs.js +1 -1
  240. package/dist/components/waka-breadcrumb-path/index.es.js +1 -1
  241. package/dist/components/waka-budget-burn/index.cjs.js +2 -2
  242. package/dist/components/waka-budget-burn/index.es.js +3 -3
  243. package/dist/components/waka-build-matrix/index.cjs.js +1 -1
  244. package/dist/components/waka-capacity-planner/index.cjs.js +2 -2
  245. package/dist/components/waka-capacity-planner/index.es.js +1 -1
  246. package/dist/components/waka-carousel/index.cjs.js +1 -1
  247. package/dist/components/waka-carousel/index.es.js +2 -2
  248. package/dist/components/waka-cart-summary/index.cjs.js +1 -1
  249. package/dist/components/waka-cart-summary/index.es.js +2 -2
  250. package/dist/components/waka-challenge-timer/index.cjs.js +1 -1
  251. package/dist/components/waka-charts/WakaAreaChart.cjs.js +1 -1
  252. package/dist/components/waka-charts/WakaAreaChart.es.js +2 -2
  253. package/dist/components/waka-charts/WakaBarChart.cjs.js +1 -1
  254. package/dist/components/waka-charts/WakaBarChart.es.js +2 -2
  255. package/dist/components/waka-charts/WakaChart.cjs.js +1 -1
  256. package/dist/components/waka-charts/WakaChart.es.js +1 -1
  257. package/dist/components/waka-charts/WakaLineChart.cjs.js +1 -1
  258. package/dist/components/waka-charts/WakaLineChart.es.js +2 -2
  259. package/dist/components/waka-charts/WakaMiniChart.cjs.js +1 -1
  260. package/dist/components/waka-charts/WakaMiniChart.es.js +2 -2
  261. package/dist/components/waka-charts/WakaPieChart.cjs.js +1 -1
  262. package/dist/components/waka-charts/WakaPieChart.es.js +2 -2
  263. package/dist/components/waka-charts/WakaSparkline.cjs.js +1 -1
  264. package/dist/components/waka-charts/WakaSparkline.es.js +1 -1
  265. package/dist/components/waka-charts/dataTableHelpers.cjs.js +1 -1
  266. package/dist/components/waka-charts/dataTableHelpers.es.js +1 -1
  267. package/dist/components/waka-charts/hooks/useChartTheme.cjs.js +1 -1
  268. package/dist/components/waka-charts/hooks/useChartTheme.es.js +1 -1
  269. package/dist/components/waka-charts/hooks/useRechartsLoader.cjs.js +1 -1
  270. package/dist/components/waka-charts/hooks/useRechartsLoader.es.js +1 -1
  271. package/dist/components/waka-chat-bubble/index.cjs.js +1 -1
  272. package/dist/components/waka-checklist/index.cjs.js +2 -2
  273. package/dist/components/waka-checklist/index.es.js +1 -1
  274. package/dist/components/waka-checkout-stepper/index.cjs.js +1 -1
  275. package/dist/components/waka-checkout-stepper/index.es.js +1 -1
  276. package/dist/components/waka-cohort-table/index.cjs.js +2 -2
  277. package/dist/components/waka-cohort-table/index.es.js +1 -1
  278. package/dist/components/waka-color-picker/index.cjs.js +2 -2
  279. package/dist/components/waka-color-picker/index.es.js +1 -1
  280. package/dist/components/waka-combo-counter/index.cjs.js +1 -1
  281. package/dist/components/waka-combobox/index.cjs.js +1 -1
  282. package/dist/components/waka-combobox/index.es.js +3 -2
  283. package/dist/components/waka-command-bar/index.cjs.js +1 -1
  284. package/dist/components/waka-compare-period/index.cjs.js +2 -2
  285. package/dist/components/waka-compare-period/index.es.js +7 -5
  286. package/dist/components/waka-config-comparator/index.cjs.js +1 -1
  287. package/dist/components/waka-config-comparator/index.es.js +1 -1
  288. package/dist/components/waka-connection-matrix/index.cjs.js +1 -1
  289. package/dist/components/waka-connection-matrix/index.es.js +1 -1
  290. package/dist/components/waka-container-list/index.cjs.js +1 -1
  291. package/dist/components/waka-container-list/index.es.js +1 -1
  292. package/dist/components/waka-content-recommendation/index.cjs.js +1 -1
  293. package/dist/components/waka-content-recommendation/index.es.js +2 -2
  294. package/dist/components/waka-contribution-graph/index.cjs.js +1 -1
  295. package/dist/components/waka-contribution-graph/index.es.js +4 -4
  296. package/dist/components/waka-cost-breakdown/index.cjs.js +1 -1
  297. package/dist/components/waka-cost-breakdown/index.es.js +7 -7
  298. package/dist/components/waka-coupon-input/index.cjs.js +2 -2
  299. package/dist/components/waka-coupon-input/index.es.js +1 -1
  300. package/dist/components/waka-credit-activity-feed/index.cjs.js +2 -2
  301. package/dist/components/waka-credit-activity-feed/index.es.js +1 -1
  302. package/dist/components/waka-credit-alert/index.cjs.js +1 -1
  303. package/dist/components/waka-credit-alert/index.es.js +1 -1
  304. package/dist/components/waka-credit-balance/index.cjs.js +1 -1
  305. package/dist/components/waka-credit-balance/index.es.js +3 -3
  306. package/dist/components/waka-credit-breakdown/index.cjs.js +1 -1
  307. package/dist/components/waka-credit-breakdown/index.es.js +1 -1
  308. package/dist/components/waka-credit-burn-rate/index.cjs.js +1 -1
  309. package/dist/components/waka-credit-burn-rate/index.es.js +1 -1
  310. package/dist/components/waka-credit-card-input/index.cjs.js +1 -1
  311. package/dist/components/waka-credit-card-input/index.es.js +1 -1
  312. package/dist/components/waka-credit-history/index.cjs.js +1 -1
  313. package/dist/components/waka-credit-history/index.es.js +1 -1
  314. package/dist/components/waka-credit-meter/index.cjs.js +2 -2
  315. package/dist/components/waka-credit-meter/index.es.js +3 -3
  316. package/dist/components/waka-credit-pricing-pack/index.cjs.js +1 -1
  317. package/dist/components/waka-credit-pricing-pack/index.es.js +1 -1
  318. package/dist/components/waka-credit-projection/index.cjs.js +1 -1
  319. package/dist/components/waka-credit-projection/index.es.js +1 -1
  320. package/dist/components/waka-credit-quota/index.cjs.js +1 -1
  321. package/dist/components/waka-credit-quota/index.es.js +3 -3
  322. package/dist/components/waka-credit-receipt/index.cjs.js +1 -1
  323. package/dist/components/waka-credit-receipt/index.es.js +1 -1
  324. package/dist/components/waka-credit-top-up/index.cjs.js +1 -1
  325. package/dist/components/waka-credit-top-up/index.es.js +1 -1
  326. package/dist/components/waka-credit-transaction/index.cjs.js +1 -1
  327. package/dist/components/waka-credit-transaction/index.es.js +1 -1
  328. package/dist/components/waka-credit-transfer-form/index.cjs.js +1 -1
  329. package/dist/components/waka-credit-transfer-form/index.es.js +1 -1
  330. package/dist/components/waka-credit-usage-chart/index.cjs.js +1 -1
  331. package/dist/components/waka-credit-usage-chart/index.es.js +1 -1
  332. package/dist/components/waka-daily-reward/index.cjs.js +1 -1
  333. package/dist/components/waka-database-card/index.cjs.js +1 -1
  334. package/dist/components/waka-database-card/index.es.js +1 -1
  335. package/dist/components/waka-date-range-picker/index.cjs.js +1 -1
  336. package/dist/components/waka-date-range-picker/index.es.js +3 -2
  337. package/dist/components/waka-datetime-picker/index.cjs.js +1 -1
  338. package/dist/components/waka-datetime-picker/index.es.js +4 -1
  339. package/dist/components/waka-datetime-picker.form-integration/index.cjs.js +1 -1
  340. package/dist/components/waka-dependency-tree/index.cjs.js +1 -1
  341. package/dist/components/waka-dependency-tree/index.es.js +1 -1
  342. package/dist/components/waka-deployment-lane/index.cjs.js +1 -1
  343. package/dist/components/waka-deployment-lane/index.es.js +1 -1
  344. package/dist/components/waka-device-trust/index.cjs.js +2 -2
  345. package/dist/components/waka-device-trust/index.es.js +1 -1
  346. package/dist/components/waka-doc-breadcrumb/index.cjs.js +1 -1
  347. package/dist/components/waka-doc-callout/index.cjs.js +1 -1
  348. package/dist/components/waka-doc-code-block/index.cjs.js +1 -1
  349. package/dist/components/waka-doc-nav/index.cjs.js +1 -1
  350. package/dist/components/waka-doc-renderer/index.cjs.js +1 -1
  351. package/dist/components/waka-doc-search/index.cjs.js +1 -1
  352. package/dist/components/waka-doc-table/index.cjs.js +1 -1
  353. package/dist/components/waka-doc-toc/index.cjs.js +1 -1
  354. package/dist/components/waka-doc-toolbar/index.cjs.js +1 -1
  355. package/dist/components/waka-doc-version/index.cjs.js +1 -1
  356. package/dist/components/waka-dock/index.cjs.js +1 -1
  357. package/dist/components/waka-dock/index.es.js +2 -2
  358. package/dist/components/waka-drawer/index.cjs.js +1 -1
  359. package/dist/components/waka-drawer/index.es.js +1 -1
  360. package/dist/components/waka-empty-state/index.cjs.js +1 -1
  361. package/dist/components/waka-env-var-editor/index.cjs.js +1 -1
  362. package/dist/components/waka-error-shake/index.cjs.js +1 -1
  363. package/dist/components/waka-feature-announcement/index.cjs.js +2 -2
  364. package/dist/components/waka-feature-announcement/index.es.js +1 -1
  365. package/dist/components/waka-feature-flag-row/index.cjs.js +1 -1
  366. package/dist/components/waka-file-upload/index.cjs.js +1 -1
  367. package/dist/components/waka-file-upload/index.es.js +2 -2
  368. package/dist/components/waka-floating-nav/index.cjs.js +1 -1
  369. package/dist/components/waka-floating-nav/index.es.js +1 -1
  370. package/dist/components/waka-flow-diagram/index.cjs.js +1 -1
  371. package/dist/components/waka-funnel-chart/index.cjs.js +2 -2
  372. package/dist/components/waka-funnel-chart/index.es.js +1 -1
  373. package/dist/components/waka-glow-card/index.cjs.js +1 -1
  374. package/dist/components/waka-glow-card/index.es.js +3 -3
  375. package/dist/components/waka-goal-progress/index.cjs.js +3 -3
  376. package/dist/components/waka-goal-progress/index.es.js +3 -3
  377. package/dist/components/waka-haptic-button/index.cjs.js +1 -1
  378. package/dist/components/waka-health-pulse/index.cjs.js +2 -2
  379. package/dist/components/waka-health-pulse/index.es.js +1 -1
  380. package/dist/components/waka-heatmap/index.cjs.js +1 -1
  381. package/dist/components/waka-heatmap/index.es.js +3 -3
  382. package/dist/components/waka-hotspot/index.cjs.js +1 -1
  383. package/dist/components/waka-image/index.cjs.js +1 -1
  384. package/dist/components/waka-image/index.es.js +1 -1
  385. package/dist/components/waka-incident-timeline/index.cjs.js +1 -1
  386. package/dist/components/waka-incident-timeline/index.es.js +3 -2
  387. package/dist/components/waka-invoice-preview/index.cjs.js +1 -1
  388. package/dist/components/waka-invoice-preview/index.es.js +1 -1
  389. package/dist/components/waka-kanban/index.cjs.js +1 -1
  390. package/dist/components/waka-kanban/index.es.js +1 -1
  391. package/dist/components/waka-kpi-dashboard/index.cjs.js +1 -1
  392. package/dist/components/waka-kpi-dashboard/index.es.js +6 -4
  393. package/dist/components/waka-kubernetes-overview/index.cjs.js +1 -1
  394. package/dist/components/waka-kubernetes-overview/index.es.js +1 -1
  395. package/dist/components/waka-leaderboard/index.cjs.js +1 -1
  396. package/dist/components/waka-level-progress/index.cjs.js +2 -2
  397. package/dist/components/waka-level-progress/index.es.js +2 -2
  398. package/dist/components/waka-liquid-button/index.cjs.js +1 -1
  399. package/dist/components/waka-loading-orbit/index.cjs.js +1 -1
  400. package/dist/components/waka-log-viewer/index.cjs.js +1 -1
  401. package/dist/components/waka-loot-box/index.cjs.js +2 -2
  402. package/dist/components/waka-loot-box/index.es.js +1 -1
  403. package/dist/components/waka-magic-link/index.cjs.js +2 -2
  404. package/dist/components/waka-magnetic-button/index.cjs.js +1 -1
  405. package/dist/components/waka-mention-input/index.cjs.js +1 -1
  406. package/dist/components/waka-mention-input/index.es.js +52 -40
  407. package/dist/components/waka-metric-sparkline/index.cjs.js +1 -1
  408. package/dist/components/waka-metric-sparkline/index.es.js +1 -1
  409. package/dist/components/waka-migration-list/index.cjs.js +1 -1
  410. package/dist/components/waka-milestone-road/index.cjs.js +2 -2
  411. package/dist/components/waka-milestone-road/index.es.js +5 -5
  412. package/dist/components/waka-modal/index.cjs.js +1 -1
  413. package/dist/components/waka-modal/index.es.js +1 -1
  414. package/dist/components/waka-morph-button/index.cjs.js +2 -2
  415. package/dist/components/waka-morph-button/index.es.js +6 -2
  416. package/dist/components/waka-network-topology/index.cjs.js +1 -1
  417. package/dist/components/waka-network-topology/index.es.js +4 -2
  418. package/dist/components/waka-notifications/index.cjs.js +1 -1
  419. package/dist/components/waka-number-input/index.cjs.js +1 -1
  420. package/dist/components/waka-number-input/index.es.js +1 -1
  421. package/dist/components/waka-orbital-menu/index.cjs.js +1 -1
  422. package/dist/components/waka-orbital-menu/index.es.js +1 -1
  423. package/dist/components/waka-order-tracker/index.cjs.js +1 -1
  424. package/dist/components/waka-order-tracker/index.es.js +3 -2
  425. package/dist/components/waka-outstream-video/index.cjs.js +1 -1
  426. package/dist/components/waka-outstream-video/index.es.js +2 -2
  427. package/dist/components/waka-pagination/index.cjs.js +1 -1
  428. package/dist/components/waka-pagination/index.es.js +1 -1
  429. package/dist/components/waka-password-strength/index.cjs.js +2 -2
  430. package/dist/components/waka-password-strength/index.es.js +3 -3
  431. package/dist/components/waka-payment-method-picker/index.cjs.js +1 -1
  432. package/dist/components/waka-payment-method-picker/index.es.js +1 -1
  433. package/dist/components/waka-permission-matrix/index.cjs.js +2 -2
  434. package/dist/components/waka-permission-matrix/index.es.js +3 -2
  435. package/dist/components/waka-phone-input/index.cjs.js +1 -1
  436. package/dist/components/waka-phone-input/index.es.js +5 -3
  437. package/dist/components/waka-pipeline-view/index.cjs.js +2 -2
  438. package/dist/components/waka-pipeline-view/index.es.js +1 -1
  439. package/dist/components/waka-player-card/index.cjs.js +2 -2
  440. package/dist/components/waka-player-card/index.es.js +4 -4
  441. package/dist/components/waka-pod-card/index.cjs.js +1 -1
  442. package/dist/components/waka-pod-card/index.es.js +1 -1
  443. package/dist/components/waka-points-popup/index.cjs.js +1 -1
  444. package/dist/components/waka-points-popup/index.es.js +5 -1
  445. package/dist/components/waka-power-up/index.cjs.js +1 -1
  446. package/dist/components/waka-presence-indicator/index.cjs.js +2 -2
  447. package/dist/components/waka-presence-indicator/index.es.js +1 -1
  448. package/dist/components/waka-pricing-table/index.cjs.js +2 -2
  449. package/dist/components/waka-pricing-table/index.es.js +1 -1
  450. package/dist/components/waka-product-card/index.cjs.js +1 -1
  451. package/dist/components/waka-progress-onboarding/index.cjs.js +3 -3
  452. package/dist/components/waka-progress-onboarding/index.es.js +1 -1
  453. package/dist/components/waka-pull-to-refresh/index.cjs.js +1 -1
  454. package/dist/components/waka-qrcode/index.cjs.js +1 -1
  455. package/dist/components/waka-qrcode/index.es.js +1 -1
  456. package/dist/components/waka-query-explain/index.cjs.js +1 -1
  457. package/dist/components/waka-quest-card/index.cjs.js +2 -2
  458. package/dist/components/waka-quest-card/index.es.js +4 -1
  459. package/dist/components/waka-quota-bar/index.cjs.js +2 -2
  460. package/dist/components/waka-quota-bar/index.es.js +11 -4
  461. package/dist/components/waka-radar-score/index.cjs.js +1 -1
  462. package/dist/components/waka-radar-score/index.es.js +6 -6
  463. package/dist/components/waka-rank-badge/index.cjs.js +2 -2
  464. package/dist/components/waka-rank-badge/index.es.js +1 -1
  465. package/dist/components/waka-rating-input/index.cjs.js +2 -2
  466. package/dist/components/waka-rating-input/index.es.js +1 -1
  467. package/dist/components/waka-reaction-picker/index.cjs.js +1 -1
  468. package/dist/components/waka-reaction-picker/index.es.js +7 -4
  469. package/dist/components/waka-region-map/index.cjs.js +1 -1
  470. package/dist/components/waka-region-map/index.es.js +1 -1
  471. package/dist/components/waka-resource-gauge/index.cjs.js +2 -2
  472. package/dist/components/waka-resource-gauge/index.es.js +3 -3
  473. package/dist/components/waka-resource-pool/index.cjs.js +2 -2
  474. package/dist/components/waka-resource-pool/index.es.js +1 -1
  475. package/dist/components/waka-rich-text-editor/index.cjs.js +1 -1
  476. package/dist/components/waka-rich-text-editor/index.es.js +1 -1
  477. package/dist/components/waka-rollback-slider/index.cjs.js +2 -2
  478. package/dist/components/waka-rollback-slider/index.es.js +5 -3
  479. package/dist/components/waka-sankey-diagram/index.cjs.js +2 -2
  480. package/dist/components/waka-sankey-diagram/index.es.js +5 -5
  481. package/dist/components/waka-schedule-picker/index.cjs.js +1 -1
  482. package/dist/components/waka-schedule-picker/index.es.js +3 -2
  483. package/dist/components/waka-scratch-card/index.cjs.js +2 -2
  484. package/dist/components/waka-scratch-card/index.es.js +1 -1
  485. package/dist/components/waka-season-pass/index.cjs.js +1 -1
  486. package/dist/components/waka-secret-card/index.cjs.js +1 -1
  487. package/dist/components/waka-security-scan-result/index.cjs.js +1 -1
  488. package/dist/components/waka-security-score/index.cjs.js +2 -2
  489. package/dist/components/waka-security-score/index.es.js +5 -5
  490. package/dist/components/waka-segmented-control/index.cjs.js +1 -1
  491. package/dist/components/waka-segmented-control/index.es.js +1 -1
  492. package/dist/components/waka-server-rack/index.cjs.js +1 -1
  493. package/dist/components/waka-service-graph/index.cjs.js +1 -1
  494. package/dist/components/waka-session-manager/index.cjs.js +1 -1
  495. package/dist/components/waka-session-manager/index.es.js +3 -2
  496. package/dist/components/waka-signature-pad/index.cjs.js +1 -1
  497. package/dist/components/waka-signature-pad/index.es.js +1 -1
  498. package/dist/components/waka-skeleton-wave/index.cjs.js +1 -1
  499. package/dist/components/waka-skill-tree/index.cjs.js +2 -2
  500. package/dist/components/waka-skill-tree/index.es.js +32 -32
  501. package/dist/components/waka-sla-tracker/index.cjs.js +1 -1
  502. package/dist/components/waka-sla-tracker/index.es.js +1 -1
  503. package/dist/components/waka-slider-range/index.cjs.js +1 -1
  504. package/dist/components/waka-slider-range/index.es.js +3 -3
  505. package/dist/components/waka-spin-wheel/index.cjs.js +2 -2
  506. package/dist/components/waka-spin-wheel/index.es.js +6 -6
  507. package/dist/components/waka-spinner/index.cjs.js +1 -1
  508. package/dist/components/waka-sponsored-badge/index.cjs.js +1 -1
  509. package/dist/components/waka-sponsored-badge/index.es.js +1 -1
  510. package/dist/components/waka-sponsored-card/index.cjs.js +1 -1
  511. package/dist/components/waka-sponsored-card/index.es.js +2 -2
  512. package/dist/components/waka-sponsored-feed/index.cjs.js +1 -1
  513. package/dist/components/waka-sponsored-feed/index.es.js +2 -2
  514. package/dist/components/waka-spotlight/index.cjs.js +1 -1
  515. package/dist/components/waka-spotlight/index.es.js +2 -1
  516. package/dist/components/waka-stat/index.cjs.js +1 -1
  517. package/dist/components/waka-stat/index.es.js +1 -1
  518. package/dist/components/waka-stats-hexagon/index.cjs.js +1 -1
  519. package/dist/components/waka-stats-hexagon/index.es.js +9 -9
  520. package/dist/components/waka-status-matrix/index.cjs.js +1 -1
  521. package/dist/components/waka-status-matrix/index.es.js +1 -1
  522. package/dist/components/waka-stepper/index.cjs.js +1 -1
  523. package/dist/components/waka-stepper/index.es.js +1 -1
  524. package/dist/components/waka-streak-counter/index.cjs.js +1 -1
  525. package/dist/components/waka-success-explosion/index.cjs.js +1 -1
  526. package/dist/components/waka-swipe-card/index.cjs.js +1 -1
  527. package/dist/components/waka-swipe-card/index.es.js +2 -2
  528. package/dist/components/waka-tabs-morph/index.cjs.js +1 -1
  529. package/dist/components/waka-tabs-morph/index.es.js +1 -1
  530. package/dist/components/waka-tag-input/index.cjs.js +1 -1
  531. package/dist/components/waka-tag-input/index.es.js +3 -2
  532. package/dist/components/waka-team-banner/index.cjs.js +2 -2
  533. package/dist/components/waka-team-banner/index.es.js +1 -1
  534. package/dist/components/waka-terminal-output/index.cjs.js +2 -2
  535. package/dist/components/waka-terminal-output/index.es.js +5 -3
  536. package/dist/components/waka-test-report/index.cjs.js +1 -1
  537. package/dist/components/waka-theme-creator/index.cjs.js +1 -1
  538. package/dist/components/waka-theme-manager/index.cjs.js +1 -1
  539. package/dist/components/waka-theme-manager/index.es.js +5 -2
  540. package/dist/components/waka-thread-view/index.cjs.js +2 -2
  541. package/dist/components/waka-thread-view/index.es.js +1 -1
  542. package/dist/components/waka-tilt-card/index.cjs.js +1 -1
  543. package/dist/components/waka-tilt-card/index.es.js +8 -6
  544. package/dist/components/waka-time-picker/index.cjs.js +1 -1
  545. package/dist/components/waka-time-picker/index.es.js +10 -6
  546. package/dist/components/waka-timeline/index.cjs.js +1 -1
  547. package/dist/components/waka-timeline/index.es.js +1 -1
  548. package/dist/components/waka-tooltip-tour/index.cjs.js +3 -3
  549. package/dist/components/waka-tooltip-tour/index.es.js +53 -51
  550. package/dist/components/waka-tour-guide/index.cjs.js +2 -2
  551. package/dist/components/waka-tour-guide/index.es.js +1 -1
  552. package/dist/components/waka-tournament-bracket/index.cjs.js +2 -2
  553. package/dist/components/waka-tournament-bracket/index.es.js +1 -1
  554. package/dist/components/waka-trace-viewer/index.cjs.js +1 -1
  555. package/dist/components/waka-tree/index.cjs.js +1 -1
  556. package/dist/components/waka-tree/index.es.js +1 -1
  557. package/dist/components/waka-treemap-chart/index.cjs.js +1 -1
  558. package/dist/components/waka-treemap-chart/index.es.js +1 -1
  559. package/dist/components/waka-two-factor-setup/index.cjs.js +2 -2
  560. package/dist/components/waka-two-factor-setup/index.es.js +5 -4
  561. package/dist/components/waka-typewriter/index.cjs.js +1 -1
  562. package/dist/components/waka-typewriter/index.es.js +7 -2
  563. package/dist/components/waka-typing-indicator/index.cjs.js +2 -2
  564. package/dist/components/waka-typing-indicator/index.es.js +1 -1
  565. package/dist/components/waka-versus-card/index.cjs.js +3 -3
  566. package/dist/components/waka-versus-card/index.es.js +5 -4
  567. package/dist/components/waka-video/index.cjs.js +1 -1
  568. package/dist/components/waka-video/index.es.js +1 -1
  569. package/dist/components/waka-video-ad/index.cjs.js +1 -1
  570. package/dist/components/waka-video-ad/index.es.js +3 -3
  571. package/dist/components/waka-video-call/index.cjs.js +2 -2
  572. package/dist/components/waka-video-call/index.es.js +1 -1
  573. package/dist/components/waka-video-overlay/index.cjs.js +1 -1
  574. package/dist/components/waka-video-overlay/index.es.js +2 -2
  575. package/dist/components/waka-virtual-list/index.cjs.js +1 -1
  576. package/dist/components/waka-virtual-list/index.es.js +1 -1
  577. package/dist/components/waka-voice-message/index.cjs.js +1 -1
  578. package/dist/components/waka-voice-message/index.es.js +6 -5
  579. package/dist/components/waka-welcome-modal/index.cjs.js +2 -2
  580. package/dist/components/waka-welcome-modal/index.es.js +1 -1
  581. package/dist/components/waka-xp-bar/index.cjs.js +1 -1
  582. package/dist/components/waka-xp-bar/index.es.js +2 -2
  583. package/dist/context/admincrumb-context.cjs.js +1 -1
  584. package/dist/context/language-context.cjs.js +1 -1
  585. package/dist/context/language-context.es.js +2 -2
  586. package/dist/context/theme-context.cjs.js +1 -1
  587. package/dist/context/theme-provider.cjs.js +1 -1
  588. package/dist/context/theme-provider.es.js +9 -6
  589. package/dist/context/waka-provider.cjs.js +1 -1
  590. package/dist/context/waka-provider.es.js +57 -53
  591. package/dist/doc.cjs.js +1 -1
  592. package/dist/editor.cjs.js +1 -1
  593. package/dist/export.cjs.js +1 -1
  594. package/dist/hooks/use-toast.cjs.js +1 -1
  595. package/dist/hooks/use-translation.cjs.js +1 -1
  596. package/dist/index.cjs.js +1 -1
  597. package/dist/index.d.ts +2 -0
  598. package/dist/index.es.js +279 -278
  599. package/dist/lib/i18n.cjs.js +1 -1
  600. package/dist/lib/i18n.es.js +11 -9
  601. package/dist/locales/default-resources.cjs.js +1 -0
  602. package/dist/locales/default-resources.d.ts +155 -0
  603. package/dist/locales/default-resources.es.js +150 -0
  604. package/dist/node_modules/.pnpm/exceljs@4.4.0/node_modules/exceljs/dist/exceljs.min.cjs.js +13 -13
  605. package/dist/node_modules/.pnpm/exceljs@4.4.0/node_modules/exceljs/dist/exceljs.min.es.js +13 -13
  606. package/dist/node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-docker.cjs.js +1 -1
  607. package/dist/node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-docker.es.js +19 -19
  608. package/dist/node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-markdown.cjs.js +1 -1
  609. package/dist/node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-markdown.es.js +24 -25
  610. package/dist/node_modules/.pnpm/react-resizable-panels@4.11.2_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/react-resizable-panels.cjs.js +1 -1
  611. package/dist/node_modules/.pnpm/react-resizable-panels@4.11.2_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/react-resizable-panels.es.js +26 -23
  612. package/dist/rich-text.cjs.js +1 -1
  613. package/dist/ui.css +1 -1
  614. package/dist/utils/cn.cjs.js +1 -1
  615. package/dist/utils/datetime-helpers.cjs.js +1 -1
  616. package/dist/utils/theme-loader.cjs.js +1 -1
  617. package/dist/utils/tweak.cjs.js +1 -1
  618. package/package.json +28 -27
  619. package/src/components/DataTable/DataTable.tsx +2 -0
  620. package/src/components/DataTable/DataTablePagination.tsx +28 -8
  621. package/src/components/DataTable/hooks/useDataTable.ts +13 -0
  622. package/src/components/editor/blocks/waka-diagram-block.tsx +7 -36
@@ -1 +1 @@
1
- "use client";"use client";const e=require(`../../_virtual/_rolldown/runtime.cjs.js`),t=require(`../../utils/cn.cjs.js`),n=require(`../../components/avatar/index.cjs.js`),r=require(`../../components/badge/index.cjs.js`),i=require(`../../components/button/index.cjs.js`),a=require(`../../components/card/index.cjs.js`),o=require(`../../components/select/index.cjs.js`),s=require(`../../components/scroll-area/index.cjs.js`);let c=require(`react`);c=e.__toESM(c);let l=require(`lucide-react`),u=require(`react/jsx-runtime`);var d={feature:{icon:l.Sparkles,color:`text-green-500`,bgColor:`bg-green-500/10`,label:`New Feature`},fix:{icon:l.Bug,color:`text-red-500`,bgColor:`bg-red-500/10`,label:`Bug Fix`},improvement:{icon:l.Wrench,color:`text-blue-500`,bgColor:`bg-blue-500/10`,label:`Improvement`},breaking:{icon:l.AlertTriangle,color:`text-orange-500`,bgColor:`bg-orange-500/10`,label:`Breaking Change`},security:{icon:l.ShieldCheck,color:`text-purple-500`,bgColor:`bg-purple-500/10`,label:`Security`},performance:{icon:l.Zap,color:`text-yellow-500`,bgColor:`bg-yellow-500/10`,label:`Performance`},docs:{icon:l.BookOpen,color:`text-cyan-500`,bgColor:`bg-cyan-500/10`,label:`Documentation`},deprecation:{icon:l.AlertTriangle,color:`text-gray-500`,bgColor:`bg-gray-500/10`,label:`Deprecation`}},f={major:{label:`Major`,color:`text-red-500`},minor:{label:`Minor`,color:`text-blue-500`},patch:{label:`Patch`,color:`text-green-500`},prerelease:{label:`Pre-release`,color:`text-purple-500`}};function p(e){return e.toLocaleDateString(`en-US`,{year:`numeric`,month:`long`,day:`numeric`})}function m({change:e}){let i=d[e.type],a=i.icon;return(0,u.jsxs)(`div`,{className:t.cn(`flex items-start gap-3 p-3 rounded-lg`,i.bgColor),children:[(0,u.jsx)(`div`,{className:`p-1.5 rounded bg-background`,children:(0,u.jsx)(a,{className:t.cn(`h-4 w-4`,i.color)})}),(0,u.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,u.jsx)(`span`,{className:`font-medium`,children:e.title}),e.breaking&&(0,u.jsx)(r.Badge,{className:`bg-orange-500 text-xs`,children:`Breaking`}),e.pullRequest&&(0,u.jsxs)(`a`,{href:e.pullRequest.url,target:`_blank`,rel:`noopener noreferrer`,className:`text-xs text-muted-foreground hover:text-primary flex items-center gap-1`,children:[(0,u.jsx)(l.GitPullRequest,{className:`h-3 w-3`}),`#`,e.pullRequest.number]})]}),e.description&&(0,u.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:e.description}),e.contributors&&e.contributors.length>0&&(0,u.jsx)(`div`,{className:`flex items-center gap-1 mt-2`,children:e.contributors.map(e=>(0,u.jsxs)(n.Avatar,{className:`h-5 w-5`,children:[(0,u.jsx)(n.AvatarImage,{src:e.avatar}),(0,u.jsx)(n.AvatarFallback,{className:`text-xs`,children:e.name.slice(0,2).toUpperCase()})]},e.id))})]})]})}function h({release:e,onEdit:o,onPublish:s,expanded:h=!1}){let[g,_]=c.useState(h),v=f[e.releaseType],y=c.useMemo(()=>{let t={breaking:[],security:[],feature:[],improvement:[],performance:[],fix:[],docs:[],deprecation:[]};return e.changes.forEach(e=>{t[e.type].push(e)}),t},[e.changes]);return(0,u.jsxs)(a.Card,{className:t.cn(e.status===`draft`&&`border-dashed`,e.status===`scheduled`&&`border-blue-500/30`),children:[(0,u.jsx)(a.CardHeader,{className:`pb-3`,children:(0,u.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,u.jsxs)(`div`,{className:`space-y-2`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,u.jsx)(l.Tag,{className:`h-5 w-5`}),(0,u.jsx)(a.CardTitle,{className:`text-xl`,children:e.version}),e.name&&(0,u.jsxs)(`span`,{className:`text-muted-foreground`,children:[`- `,e.name]})]}),(0,u.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,u.jsx)(r.Badge,{variant:`outline`,className:v.color,children:v.label}),(0,u.jsxs)(r.Badge,{variant:e.status===`published`?`default`:`secondary`,className:e.status===`published`?`bg-green-500`:``,children:[e.status===`published`?(0,u.jsx)(l.CheckCircle2,{className:`h-3 w-3 mr-1`}):e.status===`scheduled`?(0,u.jsx)(l.Clock,{className:`h-3 w-3 mr-1`}):(0,u.jsx)(l.Edit,{className:`h-3 w-3 mr-1`}),e.status]}),(0,u.jsxs)(`span`,{className:`text-sm text-muted-foreground flex items-center gap-1`,children:[(0,u.jsx)(l.Calendar,{className:`h-3 w-3`}),e.publishedAt?p(e.publishedAt):p(e.createdAt)]})]})]}),(0,u.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.compareUrl&&(0,u.jsx)(i.Button,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,u.jsxs)(`a`,{href:e.compareUrl,target:`_blank`,rel:`noopener noreferrer`,children:[(0,u.jsx)(l.GitCommit,{className:`h-4 w-4 mr-1`}),`Compare`]})}),o&&e.status===`draft`&&(0,u.jsxs)(i.Button,{variant:`outline`,size:`sm`,onClick:o,children:[(0,u.jsx)(l.Edit,{className:`h-4 w-4 mr-1`}),`Edit`]}),s&&e.status===`draft`&&(0,u.jsxs)(i.Button,{size:`sm`,onClick:s,children:[(0,u.jsx)(l.Rocket,{className:`h-4 w-4 mr-1`}),`Publish`]})]})]})}),(0,u.jsxs)(a.CardContent,{className:`space-y-4`,children:[e.summary&&(0,u.jsx)(`p`,{className:`text-muted-foreground`,children:e.summary}),e.upgradeNotes&&(0,u.jsxs)(`div`,{className:`p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-2 font-medium text-yellow-600 mb-1`,children:[(0,u.jsx)(l.AlertTriangle,{className:`h-4 w-4`}),`Upgrade Notes`]}),(0,u.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e.upgradeNotes})]}),(0,u.jsx)(`div`,{className:`space-y-4`,children:Object.entries(y).map(([e,n])=>{if(n.length===0)return null;let r=d[e];return(0,u.jsxs)(`div`,{children:[(0,u.jsxs)(`h4`,{className:`font-medium flex items-center gap-2 mb-2`,children:[(0,u.jsx)(r.icon,{className:t.cn(`h-4 w-4`,r.color)}),r.label,`s (`,n.length,`)`]}),(0,u.jsxs)(`div`,{className:`space-y-2`,children:[(g?n:n.slice(0,3)).map(e=>(0,u.jsx)(m,{change:e},e.id)),!g&&n.length>3&&(0,u.jsxs)(i.Button,{variant:`ghost`,size:`sm`,className:`w-full`,onClick:()=>_(!0),children:[`Show `,n.length-3,` more...`]})]})]},e)})}),e.contributors.length>0&&(0,u.jsxs)(`div`,{className:`pt-4 border-t`,children:[(0,u.jsxs)(`h4`,{className:`font-medium flex items-center gap-2 mb-2`,children:[(0,u.jsx)(l.Users,{className:`h-4 w-4`}),`Contributors (`,e.contributors.length,`)`]}),(0,u.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.contributors.map(e=>(0,u.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1 bg-muted rounded-full`,children:[(0,u.jsxs)(n.Avatar,{className:`h-5 w-5`,children:[(0,u.jsx)(n.AvatarImage,{src:e.avatar}),(0,u.jsx)(n.AvatarFallback,{className:`text-xs`,children:e.name.slice(0,2).toUpperCase()})]}),(0,u.jsxs)(`span`,{className:`text-sm`,children:[`@`,e.username]})]},e.id))})]}),e.downloadUrl&&(0,u.jsx)(`div`,{className:`pt-4 border-t`,children:(0,u.jsx)(i.Button,{variant:`outline`,asChild:!0,children:(0,u.jsxs)(`a`,{href:e.downloadUrl,download:!0,children:[(0,u.jsx)(l.Download,{className:`h-4 w-4 mr-2`}),`Download Release`]})})})]})]})}function g({releases:e,onCreateRelease:n,onEditRelease:r,onPublishRelease:d,onAddChange:f,showEditor:p=!1,className:m}){let[g,_]=c.useState(`all`),[v,y]=c.useState(`all`),b=c.useMemo(()=>e.filter(e=>!(g!==`all`&&e.releaseType!==g||v!==`all`&&e.status!==v)).sort((e,t)=>{let n=e=>e.replace(/^v/,``).split(/[.-]/).map(e=>parseInt(e)||0),r=n(e.version),i=n(t.version);for(let e=0;e<Math.max(r.length,i.length);e++){let t=(i[e]||0)-(r[e]||0);if(t!==0)return t}return 0}),[e,g,v]),x=c.useMemo(()=>({total:e.length,published:e.filter(e=>e.status===`published`).length,draft:e.filter(e=>e.status===`draft`).length,features:e.reduce((e,t)=>e+t.changes.filter(e=>e.type===`feature`).length,0),fixes:e.reduce((e,t)=>e+t.changes.filter(e=>e.type===`fix`).length,0)}),[e]);return(0,u.jsxs)(`div`,{className:t.cn(`space-y-6`,m),children:[(0,u.jsxs)(a.Card,{children:[(0,u.jsx)(a.CardHeader,{children:(0,u.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,u.jsx)(l.Rocket,{className:`h-6 w-6`}),(0,u.jsxs)(`div`,{children:[(0,u.jsx)(a.CardTitle,{children:`Release Notes`}),(0,u.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Track changes and publish releases`})]})]}),(0,u.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-6 text-sm`,children:[(0,u.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,u.jsx)(l.Tag,{className:`h-4 w-4 text-muted-foreground`}),(0,u.jsx)(`strong`,{children:x.total}),` releases`]}),(0,u.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,u.jsx)(l.Sparkles,{className:`h-4 w-4 text-green-500`}),(0,u.jsx)(`strong`,{children:x.features}),` features`]}),(0,u.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,u.jsx)(l.Bug,{className:`h-4 w-4 text-red-500`}),(0,u.jsx)(`strong`,{children:x.fixes}),` fixes`]})]}),n&&(0,u.jsxs)(i.Button,{onClick:n,children:[(0,u.jsx)(l.Plus,{className:`h-4 w-4 mr-1`}),`New Release`]})]})]})}),(0,u.jsx)(a.CardContent,{className:`pt-0`,children:(0,u.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,u.jsxs)(o.Select,{value:g,onValueChange:e=>_(e),children:[(0,u.jsx)(o.SelectTrigger,{className:`w-32`,children:(0,u.jsx)(o.SelectValue,{placeholder:`Type`})}),(0,u.jsxs)(o.SelectContent,{children:[(0,u.jsx)(o.SelectItem,{value:`all`,children:`All Types`}),(0,u.jsx)(o.SelectItem,{value:`major`,children:`Major`}),(0,u.jsx)(o.SelectItem,{value:`minor`,children:`Minor`}),(0,u.jsx)(o.SelectItem,{value:`patch`,children:`Patch`}),(0,u.jsx)(o.SelectItem,{value:`prerelease`,children:`Pre-release`})]})]}),(0,u.jsxs)(o.Select,{value:v,onValueChange:e=>y(e),children:[(0,u.jsx)(o.SelectTrigger,{className:`w-32`,children:(0,u.jsx)(o.SelectValue,{placeholder:`Status`})}),(0,u.jsxs)(o.SelectContent,{children:[(0,u.jsx)(o.SelectItem,{value:`all`,children:`All Status`}),(0,u.jsx)(o.SelectItem,{value:`published`,children:`Published`}),(0,u.jsx)(o.SelectItem,{value:`draft`,children:`Draft`}),(0,u.jsx)(o.SelectItem,{value:`scheduled`,children:`Scheduled`})]})]})]})})]}),(0,u.jsx)(s.ScrollArea,{className:`h-[600px]`,children:(0,u.jsx)(`div`,{className:`space-y-4 pr-4`,children:b.length===0?(0,u.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-48 text-muted-foreground`,children:[(0,u.jsx)(l.Tag,{className:`h-12 w-12 mb-4`}),(0,u.jsx)(`p`,{className:`text-lg font-medium`,children:`No releases found`}),(0,u.jsx)(`p`,{className:`text-sm`,children:`Create your first release to get started`})]}):b.map((e,t)=>(0,u.jsx)(h,{release:e,expanded:t===0,onEdit:r?()=>r(e):void 0,onPublish:d?()=>d(e):void 0},e.id))})})]})}var _=[{id:`1`,name:`John Doe`,username:`johndoe`,avatar:``},{id:`2`,name:`Jane Smith`,username:`janesmith`,avatar:``},{id:`3`,name:`Bob Wilson`,username:`bobwilson`,avatar:``}],v=[{id:`1`,version:`v2.5.0`,name:`Aurora`,releaseType:`minor`,status:`published`,publishedAt:new Date(Date.now()-48*36e5),createdAt:new Date(Date.now()-120*36e5),summary:`This release introduces new authentication features, performance improvements, and several bug fixes.`,contributors:_,compareUrl:`https://github.com/example/repo/compare/v2.4.0...v2.5.0`,changes:[{id:`c1`,type:`feature`,title:`Added OAuth 2.0 support for GitHub and Google`,description:`Users can now sign in using their GitHub or Google accounts`,pullRequest:{number:234,url:`#`},contributors:[_[0]]},{id:`c2`,type:`feature`,title:`New dashboard widgets for analytics`,pullRequest:{number:238,url:`#`},contributors:[_[1]]},{id:`c3`,type:`improvement`,title:`Redesigned settings page with better UX`,pullRequest:{number:241,url:`#`}},{id:`c4`,type:`performance`,title:`Reduced initial bundle size by 30%`,description:`Implemented code splitting and lazy loading for major routes`,pullRequest:{number:245,url:`#`},contributors:[_[2]]},{id:`c5`,type:`fix`,title:`Fixed memory leak in WebSocket connection`,pullRequest:{number:250,url:`#`}},{id:`c6`,type:`fix`,title:`Fixed date picker not respecting timezone`,pullRequest:{number:252,url:`#`}},{id:`c7`,type:`security`,title:`Updated dependencies with security vulnerabilities`,description:`Updated axios, lodash, and other packages with known CVEs`,pullRequest:{number:248,url:`#`}}]},{id:`2`,version:`v2.4.1`,releaseType:`patch`,status:`published`,publishedAt:new Date(Date.now()-336*36e5),createdAt:new Date(Date.now()-360*36e5),contributors:[_[0]],changes:[{id:`c8`,type:`fix`,title:`Fixed critical authentication bypass vulnerability`,breaking:!1,pullRequest:{number:230,url:`#`}},{id:`c9`,type:`fix`,title:`Fixed incorrect pagination in search results`,pullRequest:{number:231,url:`#`}}]},{id:`3`,version:`v3.0.0-beta.1`,name:`Next Generation`,releaseType:`prerelease`,status:`draft`,createdAt:new Date(Date.now()-24*36e5),contributors:_,upgradeNotes:`This is a major release with breaking changes. Please review the migration guide before upgrading.`,changes:[{id:`c10`,type:`breaking`,title:`Removed deprecated API endpoints`,description:`The v1 API endpoints have been removed. Please migrate to v2 endpoints.`,breaking:!0},{id:`c11`,type:`feature`,title:`New real-time collaboration features`,description:`Multiple users can now edit documents simultaneously with live cursors`},{id:`c12`,type:`feature`,title:`Dark mode support throughout the application`},{id:`c13`,type:`breaking`,title:`Changed authentication token format`,description:`Tokens now use JWT format. Old tokens will be invalidated.`,breaking:!0}]}];exports.ReleaseNotes=g,exports.defaultReleases=v;
1
+ "use client";"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../utils/cn.cjs.js"),n=require("../../components/avatar/index.cjs.js"),r=require("../../components/badge/index.cjs.js"),i=require("../../components/button/index.cjs.js"),a=require("../../components/card/index.cjs.js"),o=require("../../components/select/index.cjs.js"),s=require("../../components/scroll-area/index.cjs.js");let c=require("react");c=e.__toESM(c);let l=require("lucide-react"),u=require("react/jsx-runtime");var d={feature:{icon:l.Sparkles,color:`text-green-500`,bgColor:`bg-green-500/10`,label:`New Feature`},fix:{icon:l.Bug,color:`text-red-500`,bgColor:`bg-red-500/10`,label:`Bug Fix`},improvement:{icon:l.Wrench,color:`text-blue-500`,bgColor:`bg-blue-500/10`,label:`Improvement`},breaking:{icon:l.AlertTriangle,color:`text-orange-500`,bgColor:`bg-orange-500/10`,label:`Breaking Change`},security:{icon:l.ShieldCheck,color:`text-purple-500`,bgColor:`bg-purple-500/10`,label:`Security`},performance:{icon:l.Zap,color:`text-yellow-500`,bgColor:`bg-yellow-500/10`,label:`Performance`},docs:{icon:l.BookOpen,color:`text-cyan-500`,bgColor:`bg-cyan-500/10`,label:`Documentation`},deprecation:{icon:l.AlertTriangle,color:`text-gray-500`,bgColor:`bg-gray-500/10`,label:`Deprecation`}},f={major:{label:`Major`,color:`text-red-500`},minor:{label:`Minor`,color:`text-blue-500`},patch:{label:`Patch`,color:`text-green-500`},prerelease:{label:`Pre-release`,color:`text-purple-500`}};function p(e){return e.toLocaleDateString(`en-US`,{year:`numeric`,month:`long`,day:`numeric`})}function m({change:e}){let i=d[e.type],a=i.icon;return(0,u.jsxs)(`div`,{className:t.cn(`flex items-start gap-3 p-3 rounded-lg`,i.bgColor),children:[(0,u.jsx)(`div`,{className:`p-1.5 rounded bg-background`,children:(0,u.jsx)(a,{className:t.cn(`h-4 w-4`,i.color)})}),(0,u.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,u.jsx)(`span`,{className:`font-medium`,children:e.title}),e.breaking&&(0,u.jsx)(r.Badge,{className:`bg-orange-500 text-xs`,children:`Breaking`}),e.pullRequest&&(0,u.jsxs)(`a`,{href:e.pullRequest.url,target:`_blank`,rel:`noopener noreferrer`,className:`text-xs text-muted-foreground hover:text-primary flex items-center gap-1`,children:[(0,u.jsx)(l.GitPullRequest,{className:`h-3 w-3`}),`#`,e.pullRequest.number]})]}),e.description&&(0,u.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:e.description}),e.contributors&&e.contributors.length>0&&(0,u.jsx)(`div`,{className:`flex items-center gap-1 mt-2`,children:e.contributors.map(e=>(0,u.jsxs)(n.Avatar,{className:`h-5 w-5`,children:[(0,u.jsx)(n.AvatarImage,{src:e.avatar}),(0,u.jsx)(n.AvatarFallback,{className:`text-xs`,children:e.name.slice(0,2).toUpperCase()})]},e.id))})]})]})}function h({release:e,onEdit:o,onPublish:s,expanded:h=!1}){let[g,_]=c.useState(h),v=f[e.releaseType],y=c.useMemo(()=>{let t={breaking:[],security:[],feature:[],improvement:[],performance:[],fix:[],docs:[],deprecation:[]};return e.changes.forEach(e=>{t[e.type].push(e)}),t},[e.changes]);return(0,u.jsxs)(a.Card,{className:t.cn(e.status===`draft`&&`border-dashed`,e.status===`scheduled`&&`border-blue-500/30`),children:[(0,u.jsx)(a.CardHeader,{className:`pb-3`,children:(0,u.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,u.jsxs)(`div`,{className:`space-y-2`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,u.jsx)(l.Tag,{className:`h-5 w-5`}),(0,u.jsx)(a.CardTitle,{className:`text-xl`,children:e.version}),e.name&&(0,u.jsxs)(`span`,{className:`text-muted-foreground`,children:[`- `,e.name]})]}),(0,u.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,u.jsx)(r.Badge,{variant:`outline`,className:v.color,children:v.label}),(0,u.jsxs)(r.Badge,{variant:e.status===`published`?`default`:`secondary`,className:e.status===`published`?`bg-green-500`:``,children:[e.status===`published`?(0,u.jsx)(l.CheckCircle2,{className:`h-3 w-3 mr-1`}):e.status===`scheduled`?(0,u.jsx)(l.Clock,{className:`h-3 w-3 mr-1`}):(0,u.jsx)(l.Edit,{className:`h-3 w-3 mr-1`}),e.status]}),(0,u.jsxs)(`span`,{className:`text-sm text-muted-foreground flex items-center gap-1`,children:[(0,u.jsx)(l.Calendar,{className:`h-3 w-3`}),e.publishedAt?p(e.publishedAt):p(e.createdAt)]})]})]}),(0,u.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.compareUrl&&(0,u.jsx)(i.Button,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,u.jsxs)(`a`,{href:e.compareUrl,target:`_blank`,rel:`noopener noreferrer`,children:[(0,u.jsx)(l.GitCommit,{className:`h-4 w-4 mr-1`}),`Compare`]})}),o&&e.status===`draft`&&(0,u.jsxs)(i.Button,{variant:`outline`,size:`sm`,onClick:o,children:[(0,u.jsx)(l.Edit,{className:`h-4 w-4 mr-1`}),`Edit`]}),s&&e.status===`draft`&&(0,u.jsxs)(i.Button,{size:`sm`,onClick:s,children:[(0,u.jsx)(l.Rocket,{className:`h-4 w-4 mr-1`}),`Publish`]})]})]})}),(0,u.jsxs)(a.CardContent,{className:`space-y-4`,children:[e.summary&&(0,u.jsx)(`p`,{className:`text-muted-foreground`,children:e.summary}),e.upgradeNotes&&(0,u.jsxs)(`div`,{className:`p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-2 font-medium text-yellow-600 mb-1`,children:[(0,u.jsx)(l.AlertTriangle,{className:`h-4 w-4`}),`Upgrade Notes`]}),(0,u.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e.upgradeNotes})]}),(0,u.jsx)(`div`,{className:`space-y-4`,children:Object.entries(y).map(([e,n])=>{if(n.length===0)return null;let r=d[e];return(0,u.jsxs)(`div`,{children:[(0,u.jsxs)(`h4`,{className:`font-medium flex items-center gap-2 mb-2`,children:[(0,u.jsx)(r.icon,{className:t.cn(`h-4 w-4`,r.color)}),r.label,`s (`,n.length,`)`]}),(0,u.jsxs)(`div`,{className:`space-y-2`,children:[(g?n:n.slice(0,3)).map(e=>(0,u.jsx)(m,{change:e},e.id)),!g&&n.length>3&&(0,u.jsxs)(i.Button,{variant:`ghost`,size:`sm`,className:`w-full`,onClick:()=>_(!0),children:[`Show `,n.length-3,` more...`]})]})]},e)})}),e.contributors.length>0&&(0,u.jsxs)(`div`,{className:`pt-4 border-t`,children:[(0,u.jsxs)(`h4`,{className:`font-medium flex items-center gap-2 mb-2`,children:[(0,u.jsx)(l.Users,{className:`h-4 w-4`}),`Contributors (`,e.contributors.length,`)`]}),(0,u.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.contributors.map(e=>(0,u.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1 bg-muted rounded-full`,children:[(0,u.jsxs)(n.Avatar,{className:`h-5 w-5`,children:[(0,u.jsx)(n.AvatarImage,{src:e.avatar}),(0,u.jsx)(n.AvatarFallback,{className:`text-xs`,children:e.name.slice(0,2).toUpperCase()})]}),(0,u.jsxs)(`span`,{className:`text-sm`,children:[`@`,e.username]})]},e.id))})]}),e.downloadUrl&&(0,u.jsx)(`div`,{className:`pt-4 border-t`,children:(0,u.jsx)(i.Button,{variant:`outline`,asChild:!0,children:(0,u.jsxs)(`a`,{href:e.downloadUrl,download:!0,children:[(0,u.jsx)(l.Download,{className:`h-4 w-4 mr-2`}),`Download Release`]})})})]})]})}function g({releases:e,onCreateRelease:n,onEditRelease:r,onPublishRelease:d,onAddChange:f,showEditor:p=!1,className:m}){let[g,_]=c.useState(`all`),[v,y]=c.useState(`all`),b=c.useMemo(()=>e.filter(e=>!(g!==`all`&&e.releaseType!==g||v!==`all`&&e.status!==v)).sort((e,t)=>{let n=e=>e.replace(/^v/,``).split(/[.-]/).map(e=>parseInt(e)||0),r=n(e.version),i=n(t.version);for(let e=0;e<Math.max(r.length,i.length);e++){let t=(i[e]||0)-(r[e]||0);if(t!==0)return t}return 0}),[e,g,v]),x=c.useMemo(()=>({total:e.length,published:e.filter(e=>e.status===`published`).length,draft:e.filter(e=>e.status===`draft`).length,features:e.reduce((e,t)=>e+t.changes.filter(e=>e.type===`feature`).length,0),fixes:e.reduce((e,t)=>e+t.changes.filter(e=>e.type===`fix`).length,0)}),[e]);return(0,u.jsxs)(`div`,{className:t.cn(`space-y-6`,m),children:[(0,u.jsxs)(a.Card,{children:[(0,u.jsx)(a.CardHeader,{children:(0,u.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,u.jsx)(l.Rocket,{className:`h-6 w-6`}),(0,u.jsxs)(`div`,{children:[(0,u.jsx)(a.CardTitle,{children:`Release Notes`}),(0,u.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Track changes and publish releases`})]})]}),(0,u.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-6 text-sm`,children:[(0,u.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,u.jsx)(l.Tag,{className:`h-4 w-4 text-muted-foreground`}),(0,u.jsx)(`strong`,{children:x.total}),` releases`]}),(0,u.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,u.jsx)(l.Sparkles,{className:`h-4 w-4 text-green-500`}),(0,u.jsx)(`strong`,{children:x.features}),` features`]}),(0,u.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,u.jsx)(l.Bug,{className:`h-4 w-4 text-red-500`}),(0,u.jsx)(`strong`,{children:x.fixes}),` fixes`]})]}),n&&(0,u.jsxs)(i.Button,{onClick:n,children:[(0,u.jsx)(l.Plus,{className:`h-4 w-4 mr-1`}),`New Release`]})]})]})}),(0,u.jsx)(a.CardContent,{className:`pt-0`,children:(0,u.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,u.jsxs)(o.Select,{value:g,onValueChange:e=>_(e),children:[(0,u.jsx)(o.SelectTrigger,{className:`w-32`,children:(0,u.jsx)(o.SelectValue,{placeholder:`Type`})}),(0,u.jsxs)(o.SelectContent,{children:[(0,u.jsx)(o.SelectItem,{value:`all`,children:`All Types`}),(0,u.jsx)(o.SelectItem,{value:`major`,children:`Major`}),(0,u.jsx)(o.SelectItem,{value:`minor`,children:`Minor`}),(0,u.jsx)(o.SelectItem,{value:`patch`,children:`Patch`}),(0,u.jsx)(o.SelectItem,{value:`prerelease`,children:`Pre-release`})]})]}),(0,u.jsxs)(o.Select,{value:v,onValueChange:e=>y(e),children:[(0,u.jsx)(o.SelectTrigger,{className:`w-32`,children:(0,u.jsx)(o.SelectValue,{placeholder:`Status`})}),(0,u.jsxs)(o.SelectContent,{children:[(0,u.jsx)(o.SelectItem,{value:`all`,children:`All Status`}),(0,u.jsx)(o.SelectItem,{value:`published`,children:`Published`}),(0,u.jsx)(o.SelectItem,{value:`draft`,children:`Draft`}),(0,u.jsx)(o.SelectItem,{value:`scheduled`,children:`Scheduled`})]})]})]})})]}),(0,u.jsx)(s.ScrollArea,{className:`h-[600px]`,children:(0,u.jsx)(`div`,{className:`space-y-4 pr-4`,children:b.length===0?(0,u.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-48 text-muted-foreground`,children:[(0,u.jsx)(l.Tag,{className:`h-12 w-12 mb-4`}),(0,u.jsx)(`p`,{className:`text-lg font-medium`,children:`No releases found`}),(0,u.jsx)(`p`,{className:`text-sm`,children:`Create your first release to get started`})]}):b.map((e,t)=>(0,u.jsx)(h,{release:e,expanded:t===0,onEdit:r?()=>r(e):void 0,onPublish:d?()=>d(e):void 0},e.id))})})]})}var _=[{id:`1`,name:`John Doe`,username:`johndoe`,avatar:``},{id:`2`,name:`Jane Smith`,username:`janesmith`,avatar:``},{id:`3`,name:`Bob Wilson`,username:`bobwilson`,avatar:``}],v=[{id:`1`,version:`v2.5.0`,name:`Aurora`,releaseType:`minor`,status:`published`,publishedAt:new Date(Date.now()-48*36e5),createdAt:new Date(Date.now()-120*36e5),summary:`This release introduces new authentication features, performance improvements, and several bug fixes.`,contributors:_,compareUrl:`https://github.com/example/repo/compare/v2.4.0...v2.5.0`,changes:[{id:`c1`,type:`feature`,title:`Added OAuth 2.0 support for GitHub and Google`,description:`Users can now sign in using their GitHub or Google accounts`,pullRequest:{number:234,url:`#`},contributors:[_[0]]},{id:`c2`,type:`feature`,title:`New dashboard widgets for analytics`,pullRequest:{number:238,url:`#`},contributors:[_[1]]},{id:`c3`,type:`improvement`,title:`Redesigned settings page with better UX`,pullRequest:{number:241,url:`#`}},{id:`c4`,type:`performance`,title:`Reduced initial bundle size by 30%`,description:`Implemented code splitting and lazy loading for major routes`,pullRequest:{number:245,url:`#`},contributors:[_[2]]},{id:`c5`,type:`fix`,title:`Fixed memory leak in WebSocket connection`,pullRequest:{number:250,url:`#`}},{id:`c6`,type:`fix`,title:`Fixed date picker not respecting timezone`,pullRequest:{number:252,url:`#`}},{id:`c7`,type:`security`,title:`Updated dependencies with security vulnerabilities`,description:`Updated axios, lodash, and other packages with known CVEs`,pullRequest:{number:248,url:`#`}}]},{id:`2`,version:`v2.4.1`,releaseType:`patch`,status:`published`,publishedAt:new Date(Date.now()-336*36e5),createdAt:new Date(Date.now()-360*36e5),contributors:[_[0]],changes:[{id:`c8`,type:`fix`,title:`Fixed critical authentication bypass vulnerability`,breaking:!1,pullRequest:{number:230,url:`#`}},{id:`c9`,type:`fix`,title:`Fixed incorrect pagination in search results`,pullRequest:{number:231,url:`#`}}]},{id:`3`,version:`v3.0.0-beta.1`,name:`Next Generation`,releaseType:`prerelease`,status:`draft`,createdAt:new Date(Date.now()-24*36e5),contributors:_,upgradeNotes:`This is a major release with breaking changes. Please review the migration guide before upgrading.`,changes:[{id:`c10`,type:`breaking`,title:`Removed deprecated API endpoints`,description:`The v1 API endpoints have been removed. Please migrate to v2 endpoints.`,breaking:!0},{id:`c11`,type:`feature`,title:`New real-time collaboration features`,description:`Multiple users can now edit documents simultaneously with live cursors`},{id:`c12`,type:`feature`,title:`Dark mode support throughout the application`},{id:`c13`,type:`breaking`,title:`Changed authentication token format`,description:`Tokens now use JWT format. Old tokens will be invalidated.`,breaking:!0}]}];exports.ReleaseNotes=g,exports.defaultReleases=v;
@@ -1 +1 @@
1
- "use client";"use client";require(`../../_virtual/_rolldown/runtime.cjs.js`);const e=require(`../../utils/cn.cjs.js`),t=require(`../../components/badge/index.cjs.js`),n=require(`../../components/button/index.cjs.js`),r=require(`../../components/card/index.cjs.js`),i=require(`../../components/input/index.cjs.js`),a=require(`../../components/select/index.cjs.js`),o=require(`../../components/scroll-area/index.cjs.js`);let s=require(`react`),c=require(`lucide-react`),l=require(`react/jsx-runtime`);var u=[];function d({entries:d=u,totalEntries:f=d.length,currentPage:p=1,pageSize:m=10,periodFilter:h=`7d`,onPageChange:g,onFilterChange:_,onExport:v,className:y}){let[b,x]=(0,s.useState)(``),[S,C]=(0,s.useState)(`all`),[w,T]=(0,s.useState)(h),[E,D]=(0,s.useState)(`all`),[O,k]=(0,s.useState)(null),A=d.filter(e=>!(b&&!e.filename.toLowerCase().includes(b.toLowerCase())||S!==`all`&&e.result!==S||E!==`all`&&e.userId!==E)),j=A.slice((p-1)*m,p*m),M=Math.ceil(A.length/m),N={total:A.length,clean:A.filter(e=>e.result===`clean`).length,infected:A.filter(e=>e.result===`infected`).length,errors:A.filter(e=>e.result===`error`).length},P=Array.from(new Set(d.map(e=>e.userId))),F=e=>{navigator.clipboard.writeText(e),k(e),setTimeout(()=>k(null),2e3)},I=(e,t)=>{_?.({search:b,result:S,period:w,user:E,[e]:t})},L=e=>{switch(e){case`clean`:return(0,l.jsx)(t.Badge,{variant:`secondary`,className:`bg-green-500/10 text-green-600 border-green-500/20`,children:`Clean`});case`infected`:return(0,l.jsx)(t.Badge,{variant:`destructive`,children:`Infected`});case`error`:return(0,l.jsx)(t.Badge,{variant:`secondary`,className:`bg-yellow-500/10 text-yellow-600 border-yellow-500/20`,children:`Error`})}},R=e=>e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(2)} KB`:`${(e/(1024*1024)).toFixed(2)} MB`,z=e=>new Intl.DateTimeFormat(`fr-FR`,{day:`2-digit`,month:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`}).format(e),B=e=>`${e.slice(0,8)}...${e.slice(-8)}`;return(0,l.jsxs)(`div`,{className:e.cn(`space-y-6`,y),children:[(0,l.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`h2`,{className:`text-2xl font-bold tracking-tight`,children:`Historique des scans`}),(0,l.jsxs)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:[f,` scan`,f>1?`s`:``,` au total`]})]}),(0,l.jsxs)(n.Button,{onClick:v,variant:`outline`,children:[(0,l.jsx)(c.Download,{className:`w-4 h-4 mr-2`}),`Exporter le journal`]})]}),(0,l.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-4 gap-4`,children:[(0,l.jsxs)(r.Card,{className:`p-4`,children:[(0,l.jsx)(`div`,{className:`text-sm font-medium text-muted-foreground`,children:`Total scans`}),(0,l.jsx)(`div`,{className:`text-2xl font-bold mt-1`,children:N.total})]}),(0,l.jsxs)(r.Card,{className:`p-4`,children:[(0,l.jsx)(`div`,{className:`text-sm font-medium text-muted-foreground`,children:`Clean`}),(0,l.jsx)(`div`,{className:`text-2xl font-bold mt-1 text-green-600 dark:text-green-500`,children:N.clean})]}),(0,l.jsxs)(r.Card,{className:`p-4`,children:[(0,l.jsx)(`div`,{className:`text-sm font-medium text-muted-foreground`,children:`Infected`}),(0,l.jsx)(`div`,{className:`text-2xl font-bold mt-1 text-red-600 dark:text-red-500`,children:N.infected})]}),(0,l.jsxs)(r.Card,{className:`p-4`,children:[(0,l.jsx)(`div`,{className:`text-sm font-medium text-muted-foreground`,children:`Errors`}),(0,l.jsx)(`div`,{className:`text-2xl font-bold mt-1 text-orange-600 dark:text-orange-500`,children:N.errors})]})]}),(0,l.jsx)(r.Card,{className:`p-4`,children:(0,l.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-4 gap-4`,children:[(0,l.jsxs)(`div`,{className:`relative`,children:[(0,l.jsx)(c.Search,{className:`absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-muted-foreground`}),(0,l.jsx)(i.Input,{placeholder:`Rechercher un fichier...`,value:b,onChange:e=>{x(e.target.value),I(`search`,e.target.value)},className:`pl-9`})]}),(0,l.jsxs)(a.Select,{value:S,onValueChange:e=>{C(e),I(`result`,e)},children:[(0,l.jsx)(a.SelectTrigger,{children:(0,l.jsx)(a.SelectValue,{placeholder:`Résultat`})}),(0,l.jsxs)(a.SelectContent,{children:[(0,l.jsx)(a.SelectItem,{value:`all`,children:`Tous les résultats`}),(0,l.jsx)(a.SelectItem,{value:`clean`,children:`Clean`}),(0,l.jsx)(a.SelectItem,{value:`infected`,children:`Infected`}),(0,l.jsx)(a.SelectItem,{value:`error`,children:`Error`})]})]}),(0,l.jsxs)(a.Select,{value:w,onValueChange:e=>{T(e),I(`period`,e)},children:[(0,l.jsx)(a.SelectTrigger,{children:(0,l.jsx)(a.SelectValue,{placeholder:`Période`})}),(0,l.jsxs)(a.SelectContent,{children:[(0,l.jsx)(a.SelectItem,{value:`today`,children:`Aujourd'hui`}),(0,l.jsx)(a.SelectItem,{value:`7d`,children:`7 derniers jours`}),(0,l.jsx)(a.SelectItem,{value:`30d`,children:`30 derniers jours`}),(0,l.jsx)(a.SelectItem,{value:`custom`,children:`Personnalisé`})]})]}),(0,l.jsxs)(a.Select,{value:E,onValueChange:e=>{D(e),I(`user`,e)},children:[(0,l.jsx)(a.SelectTrigger,{children:(0,l.jsx)(a.SelectValue,{placeholder:`Utilisateur`})}),(0,l.jsxs)(a.SelectContent,{children:[(0,l.jsx)(a.SelectItem,{value:`all`,children:`Tous les utilisateurs`}),P.map(e=>(0,l.jsx)(a.SelectItem,{value:e,children:d.find(t=>t.userId===e)?.userName||e},e))]})]})]})}),(0,l.jsxs)(r.Card,{children:[(0,l.jsx)(o.ScrollArea,{className:`h-[600px]`,children:(0,l.jsx)(`div`,{className:`min-w-full`,children:(0,l.jsxs)(`table`,{className:`w-full`,children:[(0,l.jsx)(`thead`,{className:`sticky top-0 bg-muted/50 backdrop-blur-sm border-b`,children:(0,l.jsxs)(`tr`,{children:[(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Date/Heure`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Fichier`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Taille`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Hash SHA256`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Résultat`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Menace`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Utilisateur`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Durée`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Moteur`})]})}),(0,l.jsx)(`tbody`,{className:`divide-y`,children:j.length===0?(0,l.jsx)(`tr`,{children:(0,l.jsx)(`td`,{colSpan:9,className:`px-4 py-8 text-center text-muted-foreground`,children:`Aucun scan trouvé`})}):j.map(e=>(0,l.jsxs)(`tr`,{className:`hover:bg-muted/50 transition-colors`,children:[(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm whitespace-nowrap`,children:z(e.scanDate)}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm font-medium max-w-xs truncate`,children:e.filename}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm whitespace-nowrap`,children:R(e.fileSize)}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm`,children:(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(`code`,{className:`text-xs bg-muted px-2 py-1 rounded`,children:B(e.fileHash)}),(0,l.jsx)(n.Button,{variant:`ghost`,size:`sm`,onClick:()=>F(e.fileHash),className:`h-6 w-6 p-0`,children:O===e.fileHash?(0,l.jsx)(c.Check,{className:`w-3 h-3 text-green-600`}):(0,l.jsx)(c.Copy,{className:`w-3 h-3`})})]})}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm`,children:L(e.result)}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm`,children:e.threatName?(0,l.jsx)(`code`,{className:`text-xs bg-red-100 dark:bg-red-900/20 text-red-700 dark:text-red-400 px-2 py-1 rounded`,children:e.threatName}):(0,l.jsx)(`span`,{className:`text-muted-foreground`,children:`-`})}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm whitespace-nowrap`,children:e.userName}),(0,l.jsxs)(`td`,{className:`px-4 py-3 text-sm whitespace-nowrap`,children:[e.duration,`ms`]}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm whitespace-nowrap`,children:(0,l.jsxs)(`div`,{className:`text-xs`,children:[(0,l.jsx)(`div`,{className:`font-medium`,children:e.engineVersion}),(0,l.jsx)(`div`,{className:`text-muted-foreground`,children:e.signatureVersion})]})})]},e.id))})]})})}),M>1&&(0,l.jsxs)(`div`,{className:`border-t px-4 py-3 flex items-center justify-between`,children:[(0,l.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[`Page `,p,` sur `,M]}),(0,l.jsxs)(`div`,{className:`flex gap-2`,children:[(0,l.jsx)(n.Button,{variant:`outline`,size:`sm`,onClick:()=>g?.(p-1),disabled:p===1,children:`Précédent`}),(0,l.jsx)(n.Button,{variant:`outline`,size:`sm`,onClick:()=>g?.(p+1),disabled:p===M,children:`Suivant`})]})]})]})]})}exports.default=d;
1
+ "use client";"use client";const e=require("../../utils/cn.cjs.js"),t=require("../../components/badge/index.cjs.js"),n=require("../../components/button/index.cjs.js"),r=require("../../components/card/index.cjs.js"),i=require("../../components/input/index.cjs.js"),a=require("../../components/select/index.cjs.js"),o=require("../../components/scroll-area/index.cjs.js");let s=require("react"),c=require("lucide-react"),l=require("react/jsx-runtime");var u=[];function d({entries:d=u,totalEntries:f=d.length,currentPage:p=1,pageSize:m=10,periodFilter:h=`7d`,onPageChange:g,onFilterChange:_,onExport:v,className:y}){let[b,x]=(0,s.useState)(``),[S,C]=(0,s.useState)(`all`),[w,T]=(0,s.useState)(h),[E,D]=(0,s.useState)(`all`),[O,k]=(0,s.useState)(null),A=d.filter(e=>!(b&&!e.filename.toLowerCase().includes(b.toLowerCase())||S!==`all`&&e.result!==S||E!==`all`&&e.userId!==E)),j=A.slice((p-1)*m,p*m),M=Math.ceil(A.length/m),N={total:A.length,clean:A.filter(e=>e.result===`clean`).length,infected:A.filter(e=>e.result===`infected`).length,errors:A.filter(e=>e.result===`error`).length},P=Array.from(new Set(d.map(e=>e.userId))),F=e=>{navigator.clipboard.writeText(e),k(e),setTimeout(()=>k(null),2e3)},I=(e,t)=>{_?.({search:b,result:S,period:w,user:E,[e]:t})},L=e=>{switch(e){case`clean`:return(0,l.jsx)(t.Badge,{variant:`secondary`,className:`bg-green-500/10 text-green-600 border-green-500/20`,children:`Clean`});case`infected`:return(0,l.jsx)(t.Badge,{variant:`destructive`,children:`Infected`});case`error`:return(0,l.jsx)(t.Badge,{variant:`secondary`,className:`bg-yellow-500/10 text-yellow-600 border-yellow-500/20`,children:`Error`})}},R=e=>e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(2)} KB`:`${(e/(1024*1024)).toFixed(2)} MB`,z=e=>new Intl.DateTimeFormat(`fr-FR`,{day:`2-digit`,month:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`}).format(e),B=e=>`${e.slice(0,8)}...${e.slice(-8)}`;return(0,l.jsxs)(`div`,{className:e.cn(`space-y-6`,y),children:[(0,l.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`h2`,{className:`text-2xl font-bold tracking-tight`,children:`Historique des scans`}),(0,l.jsxs)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:[f,` scan`,f>1?`s`:``,` au total`]})]}),(0,l.jsxs)(n.Button,{onClick:v,variant:`outline`,children:[(0,l.jsx)(c.Download,{className:`w-4 h-4 mr-2`}),`Exporter le journal`]})]}),(0,l.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-4 gap-4`,children:[(0,l.jsxs)(r.Card,{className:`p-4`,children:[(0,l.jsx)(`div`,{className:`text-sm font-medium text-muted-foreground`,children:`Total scans`}),(0,l.jsx)(`div`,{className:`text-2xl font-bold mt-1`,children:N.total})]}),(0,l.jsxs)(r.Card,{className:`p-4`,children:[(0,l.jsx)(`div`,{className:`text-sm font-medium text-muted-foreground`,children:`Clean`}),(0,l.jsx)(`div`,{className:`text-2xl font-bold mt-1 text-green-600 dark:text-green-500`,children:N.clean})]}),(0,l.jsxs)(r.Card,{className:`p-4`,children:[(0,l.jsx)(`div`,{className:`text-sm font-medium text-muted-foreground`,children:`Infected`}),(0,l.jsx)(`div`,{className:`text-2xl font-bold mt-1 text-red-600 dark:text-red-500`,children:N.infected})]}),(0,l.jsxs)(r.Card,{className:`p-4`,children:[(0,l.jsx)(`div`,{className:`text-sm font-medium text-muted-foreground`,children:`Errors`}),(0,l.jsx)(`div`,{className:`text-2xl font-bold mt-1 text-orange-600 dark:text-orange-500`,children:N.errors})]})]}),(0,l.jsx)(r.Card,{className:`p-4`,children:(0,l.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-4 gap-4`,children:[(0,l.jsxs)(`div`,{className:`relative`,children:[(0,l.jsx)(c.Search,{className:`absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-muted-foreground`}),(0,l.jsx)(i.Input,{placeholder:`Rechercher un fichier...`,value:b,onChange:e=>{x(e.target.value),I(`search`,e.target.value)},className:`pl-9`})]}),(0,l.jsxs)(a.Select,{value:S,onValueChange:e=>{C(e),I(`result`,e)},children:[(0,l.jsx)(a.SelectTrigger,{children:(0,l.jsx)(a.SelectValue,{placeholder:`Résultat`})}),(0,l.jsxs)(a.SelectContent,{children:[(0,l.jsx)(a.SelectItem,{value:`all`,children:`Tous les résultats`}),(0,l.jsx)(a.SelectItem,{value:`clean`,children:`Clean`}),(0,l.jsx)(a.SelectItem,{value:`infected`,children:`Infected`}),(0,l.jsx)(a.SelectItem,{value:`error`,children:`Error`})]})]}),(0,l.jsxs)(a.Select,{value:w,onValueChange:e=>{T(e),I(`period`,e)},children:[(0,l.jsx)(a.SelectTrigger,{children:(0,l.jsx)(a.SelectValue,{placeholder:`Période`})}),(0,l.jsxs)(a.SelectContent,{children:[(0,l.jsx)(a.SelectItem,{value:`today`,children:`Aujourd'hui`}),(0,l.jsx)(a.SelectItem,{value:`7d`,children:`7 derniers jours`}),(0,l.jsx)(a.SelectItem,{value:`30d`,children:`30 derniers jours`}),(0,l.jsx)(a.SelectItem,{value:`custom`,children:`Personnalisé`})]})]}),(0,l.jsxs)(a.Select,{value:E,onValueChange:e=>{D(e),I(`user`,e)},children:[(0,l.jsx)(a.SelectTrigger,{children:(0,l.jsx)(a.SelectValue,{placeholder:`Utilisateur`})}),(0,l.jsxs)(a.SelectContent,{children:[(0,l.jsx)(a.SelectItem,{value:`all`,children:`Tous les utilisateurs`}),P.map(e=>(0,l.jsx)(a.SelectItem,{value:e,children:d.find(t=>t.userId===e)?.userName||e},e))]})]})]})}),(0,l.jsxs)(r.Card,{children:[(0,l.jsx)(o.ScrollArea,{className:`h-[600px]`,children:(0,l.jsx)(`div`,{className:`min-w-full`,children:(0,l.jsxs)(`table`,{className:`w-full`,children:[(0,l.jsx)(`thead`,{className:`sticky top-0 bg-muted/50 backdrop-blur-sm border-b`,children:(0,l.jsxs)(`tr`,{children:[(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Date/Heure`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Fichier`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Taille`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Hash SHA256`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Résultat`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Menace`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Utilisateur`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Durée`}),(0,l.jsx)(`th`,{className:`px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Moteur`})]})}),(0,l.jsx)(`tbody`,{className:`divide-y`,children:j.length===0?(0,l.jsx)(`tr`,{children:(0,l.jsx)(`td`,{colSpan:9,className:`px-4 py-8 text-center text-muted-foreground`,children:`Aucun scan trouvé`})}):j.map(e=>(0,l.jsxs)(`tr`,{className:`hover:bg-muted/50 transition-colors`,children:[(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm whitespace-nowrap`,children:z(e.scanDate)}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm font-medium max-w-xs truncate`,children:e.filename}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm whitespace-nowrap`,children:R(e.fileSize)}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm`,children:(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(`code`,{className:`text-xs bg-muted px-2 py-1 rounded`,children:B(e.fileHash)}),(0,l.jsx)(n.Button,{variant:`ghost`,size:`sm`,onClick:()=>F(e.fileHash),className:`h-6 w-6 p-0`,children:O===e.fileHash?(0,l.jsx)(c.Check,{className:`w-3 h-3 text-green-600`}):(0,l.jsx)(c.Copy,{className:`w-3 h-3`})})]})}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm`,children:L(e.result)}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm`,children:e.threatName?(0,l.jsx)(`code`,{className:`text-xs bg-red-100 dark:bg-red-900/20 text-red-700 dark:text-red-400 px-2 py-1 rounded`,children:e.threatName}):(0,l.jsx)(`span`,{className:`text-muted-foreground`,children:`-`})}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm whitespace-nowrap`,children:e.userName}),(0,l.jsxs)(`td`,{className:`px-4 py-3 text-sm whitespace-nowrap`,children:[e.duration,`ms`]}),(0,l.jsx)(`td`,{className:`px-4 py-3 text-sm whitespace-nowrap`,children:(0,l.jsxs)(`div`,{className:`text-xs`,children:[(0,l.jsx)(`div`,{className:`font-medium`,children:e.engineVersion}),(0,l.jsx)(`div`,{className:`text-muted-foreground`,children:e.signatureVersion})]})})]},e.id))})]})})}),M>1&&(0,l.jsxs)(`div`,{className:`border-t px-4 py-3 flex items-center justify-between`,children:[(0,l.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[`Page `,p,` sur `,M]}),(0,l.jsxs)(`div`,{className:`flex gap-2`,children:[(0,l.jsx)(n.Button,{variant:`outline`,size:`sm`,onClick:()=>g?.(p-1),disabled:p===1,children:`Précédent`}),(0,l.jsx)(n.Button,{variant:`outline`,size:`sm`,onClick:()=>g?.(p+1),disabled:p===M,children:`Suivant`})]})]})]})]})}exports.ScanHistoryLog=d,exports.default=d;
@@ -354,4 +354,4 @@ function y({ entries: y = v, totalEntries: b = y.length, currentPage: x = 1, pag
354
354
  });
355
355
  }
356
356
  //#endregion
357
- export { y as default };
357
+ export { y as ScanHistoryLog, y as default };
@@ -1 +1 @@
1
- "use client";"use client";require(`../../_virtual/_rolldown/runtime.cjs.js`);const e=require(`../../utils/cn.cjs.js`),t=require(`../../components/badge/index.cjs.js`),n=require(`../../components/button/index.cjs.js`),r=require(`../../components/card/index.cjs.js`),i=require(`../../components/label/index.cjs.js`),a=require(`../../components/input/index.cjs.js`),o=require(`../../components/select/index.cjs.js`),s=require(`../../components/switch/index.cjs.js`),c=require(`../../components/tabs/index.cjs.js`);let l=require(`react`),u=require(`lucide-react`),d=require(`react/jsx-runtime`);var f={autoScanOnUpload:!0,maxFileSize:100,maxFileSizeUnit:`MB`,scanTimeout:120,maxConcurrentScans:4,scanArchives:!0,maxArchiveDepth:3,excludedExtensions:[`.log`,`.tmp`,`.lock`],excludedPaths:[`/tmp`,`/var/cache`],whitelistedHashes:[],detectionAction:`quarantine`,notifyAdmin:!0,notifyUser:!0,auditLog:!0},p=[{value:`quarantine`,label:`Quarantaine`},{value:`delete`,label:`Suppression`},{value:`notify_only`,label:`Notification seule`},{value:`block_and_notify`,label:`Bloquer + notifier`}],m=[{value:`MB`,label:`MB`},{value:`GB`,label:`GB`}];function h({policy:h=f,isLoading:g=!1,onSave:_,onCancel:v,onResetDefaults:y,className:b}){let[x,S]=(0,l.useState)(h),[C,w]=(0,l.useState)(``),[T,E]=(0,l.useState)(``),[D,O]=(0,l.useState)(``),k=e=>{S(t=>({...t,...e}))},A=()=>{C.trim()&&!x.excludedExtensions.includes(C.trim())&&(k({excludedExtensions:[...x.excludedExtensions,C.trim()]}),w(``))},j=e=>{k({excludedExtensions:x.excludedExtensions.filter(t=>t!==e)})},M=()=>{T.trim()&&!x.excludedPaths.includes(T.trim())&&(k({excludedPaths:[...x.excludedPaths,T.trim()]}),E(``))},N=e=>{k({excludedPaths:x.excludedPaths.filter(t=>t!==e)})},P=()=>{D.trim()&&!x.whitelistedHashes.includes(D.trim())&&(k({whitelistedHashes:[...x.whitelistedHashes,D.trim()]}),O(``))},F=e=>{k({whitelistedHashes:x.whitelistedHashes.filter(t=>t!==e)})};return(0,d.jsxs)(r.Card,{className:e.cn(`w-full`,b),children:[(0,d.jsxs)(`div`,{className:`flex items-center gap-3 p-6 border-b border-border/50`,children:[(0,d.jsx)(u.Shield,{className:`w-5 h-5 text-primary`}),(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`h3`,{className:`font-semibold text-foreground`,children:`Configuration des politiques de scan`}),(0,d.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Definissez les regles de scan antivirus`})]})]}),(0,d.jsxs)(c.Tabs,{defaultValue:`general`,className:`w-full`,children:[(0,d.jsxs)(c.TabsList,{className:`w-full justify-start border-b border-border/50 rounded-none px-6`,children:[(0,d.jsx)(c.TabsTrigger,{value:`general`,children:`Regles generales`}),(0,d.jsx)(c.TabsTrigger,{value:`exclusions`,children:`Exclusions`}),(0,d.jsx)(c.TabsTrigger,{value:`actions`,children:`Actions`}),(0,d.jsx)(c.TabsTrigger,{value:`notifications`,children:`Notifications`})]}),(0,d.jsxs)(c.TabsContent,{value:`general`,className:`p-6 space-y-6`,children:[(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,d.jsx)(i.Label,{children:`Scan automatique a l'upload`}),(0,d.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Scanner tous les fichiers lors de l'envoi`})]}),(0,d.jsx)(s.Switch,{checked:x.autoScanOnUpload,onCheckedChange:e=>k({autoScanOnUpload:e}),disabled:g})]}),(0,d.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(i.Label,{children:`Taille maximale de fichier`}),(0,d.jsxs)(`div`,{className:`flex gap-2`,children:[(0,d.jsx)(a.Input,{type:`number`,value:x.maxFileSize,onChange:e=>k({maxFileSize:parseInt(e.target.value)||0}),disabled:g,className:`flex-1`}),(0,d.jsxs)(o.Select,{value:x.maxFileSizeUnit,onValueChange:e=>k({maxFileSizeUnit:e}),disabled:g,children:[(0,d.jsx)(o.SelectTrigger,{className:`w-24`,children:(0,d.jsx)(o.SelectValue,{})}),(0,d.jsx)(o.SelectContent,{children:m.map(e=>(0,d.jsx)(o.SelectItem,{value:e.value,children:e.label},e.value))})]})]})]}),(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(i.Label,{children:`Timeout de scan (secondes)`}),(0,d.jsx)(a.Input,{type:`number`,value:x.scanTimeout,onChange:e=>k({scanTimeout:parseInt(e.target.value)||0}),disabled:g})]})]}),(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(i.Label,{children:`Nombre maximum de scans concurrents`}),(0,d.jsx)(a.Input,{type:`number`,value:x.maxConcurrentScans,onChange:e=>k({maxConcurrentScans:parseInt(e.target.value)||1}),disabled:g})]}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,d.jsx)(i.Label,{children:`Scanner les archives (zip, tar, 7z)`}),(0,d.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Analyser le contenu des fichiers archives`})]}),(0,d.jsx)(s.Switch,{checked:x.scanArchives,onCheckedChange:e=>k({scanArchives:e}),disabled:g})]}),x.scanArchives&&(0,d.jsxs)(`div`,{className:`space-y-2 pl-6`,children:[(0,d.jsx)(i.Label,{children:`Profondeur maximale d'archives imbriquees`}),(0,d.jsx)(a.Input,{type:`number`,value:x.maxArchiveDepth,onChange:e=>k({maxArchiveDepth:parseInt(e.target.value)||1}),disabled:g})]})]}),(0,d.jsxs)(c.TabsContent,{value:`exclusions`,className:`p-6 space-y-6`,children:[(0,d.jsxs)(`div`,{className:`space-y-3`,children:[(0,d.jsx)(i.Label,{children:`Extensions exclues`}),(0,d.jsxs)(`div`,{className:`flex gap-2`,children:[(0,d.jsx)(a.Input,{placeholder:`.ext`,value:C,onChange:e=>w(e.target.value),onKeyDown:e=>e.key===`Enter`&&A(),disabled:g,className:`flex-1`}),(0,d.jsx)(n.Button,{onClick:A,disabled:g,size:`sm`,children:(0,d.jsx)(u.Plus,{className:`w-4 h-4`})})]}),(0,d.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:x.excludedExtensions.map(e=>(0,d.jsxs)(t.Badge,{variant:`secondary`,className:`flex items-center gap-1`,children:[e,(0,d.jsx)(`button`,{onClick:()=>j(e),disabled:g,className:`ml-1 hover:text-destructive`,children:(0,d.jsx)(u.X,{className:`w-3 h-3`})})]},e))})]}),(0,d.jsxs)(`div`,{className:`space-y-3`,children:[(0,d.jsx)(i.Label,{children:`Chemins exclus`}),(0,d.jsxs)(`div`,{className:`flex gap-2`,children:[(0,d.jsx)(a.Input,{placeholder:`/path/to/exclude`,value:T,onChange:e=>E(e.target.value),onKeyDown:e=>e.key===`Enter`&&M(),disabled:g,className:`flex-1`}),(0,d.jsx)(n.Button,{onClick:M,disabled:g,size:`sm`,children:(0,d.jsx)(u.Plus,{className:`w-4 h-4`})})]}),(0,d.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:x.excludedPaths.map(e=>(0,d.jsxs)(t.Badge,{variant:`secondary`,className:`flex items-center gap-1`,children:[e,(0,d.jsx)(`button`,{onClick:()=>N(e),disabled:g,className:`ml-1 hover:text-destructive`,children:(0,d.jsx)(u.X,{className:`w-3 h-3`})})]},e))})]}),(0,d.jsxs)(`div`,{className:`space-y-3`,children:[(0,d.jsx)(i.Label,{children:`Hash exclus (whitelist)`}),(0,d.jsxs)(`div`,{className:`flex gap-2`,children:[(0,d.jsx)(a.Input,{placeholder:`SHA256 hash`,value:D,onChange:e=>O(e.target.value),onKeyDown:e=>e.key===`Enter`&&P(),disabled:g,className:`flex-1`}),(0,d.jsx)(n.Button,{onClick:P,disabled:g,size:`sm`,children:(0,d.jsx)(u.Plus,{className:`w-4 h-4`})})]}),(0,d.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:x.whitelistedHashes.map(e=>(0,d.jsxs)(t.Badge,{variant:`secondary`,className:`flex items-center gap-1`,children:[e.substring(0,12),`...`,(0,d.jsx)(`button`,{onClick:()=>F(e),disabled:g,className:`ml-1 hover:text-destructive`,children:(0,d.jsx)(u.X,{className:`w-3 h-3`})})]},e))})]})]}),(0,d.jsxs)(c.TabsContent,{value:`actions`,className:`p-6 space-y-6`,children:[(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(i.Label,{children:`Action sur detection`}),(0,d.jsxs)(o.Select,{value:x.detectionAction,onValueChange:e=>k({detectionAction:e}),disabled:g,children:[(0,d.jsx)(o.SelectTrigger,{children:(0,d.jsx)(o.SelectValue,{})}),(0,d.jsx)(o.SelectContent,{children:p.map(e=>(0,d.jsx)(o.SelectItem,{value:e.value,children:e.label},e.value))})]})]}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,d.jsx)(i.Label,{children:`Logger dans l'audit trail`}),(0,d.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Enregistrer toutes les detections`})]}),(0,d.jsx)(s.Switch,{checked:x.auditLog,onCheckedChange:e=>k({auditLog:e}),disabled:g})]})]}),(0,d.jsxs)(c.TabsContent,{value:`notifications`,className:`p-6 space-y-6`,children:[(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,d.jsx)(i.Label,{children:`Notifier l'administrateur`}),(0,d.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Alerter en cas de menace detectee`})]}),(0,d.jsx)(s.Switch,{checked:x.notifyAdmin,onCheckedChange:e=>k({notifyAdmin:e}),disabled:g})]}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,d.jsx)(i.Label,{children:`Notifier l'utilisateur`}),(0,d.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Informer l'utilisateur de l'action prise`})]}),(0,d.jsx)(s.Switch,{checked:x.notifyUser,onCheckedChange:e=>k({notifyUser:e}),disabled:g})]})]})]}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between p-6 border-t border-border/50`,children:[(0,d.jsxs)(n.Button,{variant:`outline`,onClick:()=>{S(f),y?.()},disabled:g,children:[(0,d.jsx)(u.RotateCcw,{className:`w-4 h-4 mr-2`}),`Restaurer defauts`]}),(0,d.jsxs)(`div`,{className:`flex gap-3`,children:[(0,d.jsx)(n.Button,{variant:`outline`,onClick:v,disabled:g,children:`Annuler`}),(0,d.jsx)(n.Button,{onClick:()=>{_?.(x)},disabled:g,children:`Sauvegarder`})]})]})]})}exports.ScanPolicyEditor=h,exports.defaultScanPolicy=f;
1
+ "use client";"use client";const e=require("../../utils/cn.cjs.js"),t=require("../../components/badge/index.cjs.js"),n=require("../../components/button/index.cjs.js"),r=require("../../components/card/index.cjs.js"),i=require("../../components/label/index.cjs.js"),a=require("../../components/input/index.cjs.js"),o=require("../../components/select/index.cjs.js"),s=require("../../components/switch/index.cjs.js"),c=require("../../components/tabs/index.cjs.js");let l=require("react"),u=require("lucide-react"),d=require("react/jsx-runtime");var f={autoScanOnUpload:!0,maxFileSize:100,maxFileSizeUnit:`MB`,scanTimeout:120,maxConcurrentScans:4,scanArchives:!0,maxArchiveDepth:3,excludedExtensions:[`.log`,`.tmp`,`.lock`],excludedPaths:[`/tmp`,`/var/cache`],whitelistedHashes:[],detectionAction:`quarantine`,notifyAdmin:!0,notifyUser:!0,auditLog:!0},p=[{value:`quarantine`,label:`Quarantaine`},{value:`delete`,label:`Suppression`},{value:`notify_only`,label:`Notification seule`},{value:`block_and_notify`,label:`Bloquer + notifier`}],m=[{value:`MB`,label:`MB`},{value:`GB`,label:`GB`}];function h({policy:h=f,isLoading:g=!1,onSave:_,onCancel:v,onResetDefaults:y,className:b}){let[x,S]=(0,l.useState)(h),[C,w]=(0,l.useState)(``),[T,E]=(0,l.useState)(``),[D,O]=(0,l.useState)(``),k=e=>{S(t=>({...t,...e}))},A=()=>{C.trim()&&!x.excludedExtensions.includes(C.trim())&&(k({excludedExtensions:[...x.excludedExtensions,C.trim()]}),w(``))},j=e=>{k({excludedExtensions:x.excludedExtensions.filter(t=>t!==e)})},M=()=>{T.trim()&&!x.excludedPaths.includes(T.trim())&&(k({excludedPaths:[...x.excludedPaths,T.trim()]}),E(``))},N=e=>{k({excludedPaths:x.excludedPaths.filter(t=>t!==e)})},P=()=>{D.trim()&&!x.whitelistedHashes.includes(D.trim())&&(k({whitelistedHashes:[...x.whitelistedHashes,D.trim()]}),O(``))},F=e=>{k({whitelistedHashes:x.whitelistedHashes.filter(t=>t!==e)})};return(0,d.jsxs)(r.Card,{className:e.cn(`w-full`,b),children:[(0,d.jsxs)(`div`,{className:`flex items-center gap-3 p-6 border-b border-border/50`,children:[(0,d.jsx)(u.Shield,{className:`w-5 h-5 text-primary`}),(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`h3`,{className:`font-semibold text-foreground`,children:`Configuration des politiques de scan`}),(0,d.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Definissez les regles de scan antivirus`})]})]}),(0,d.jsxs)(c.Tabs,{defaultValue:`general`,className:`w-full`,children:[(0,d.jsxs)(c.TabsList,{className:`w-full justify-start border-b border-border/50 rounded-none px-6`,children:[(0,d.jsx)(c.TabsTrigger,{value:`general`,children:`Regles generales`}),(0,d.jsx)(c.TabsTrigger,{value:`exclusions`,children:`Exclusions`}),(0,d.jsx)(c.TabsTrigger,{value:`actions`,children:`Actions`}),(0,d.jsx)(c.TabsTrigger,{value:`notifications`,children:`Notifications`})]}),(0,d.jsxs)(c.TabsContent,{value:`general`,className:`p-6 space-y-6`,children:[(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,d.jsx)(i.Label,{children:`Scan automatique a l'upload`}),(0,d.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Scanner tous les fichiers lors de l'envoi`})]}),(0,d.jsx)(s.Switch,{checked:x.autoScanOnUpload,onCheckedChange:e=>k({autoScanOnUpload:e}),disabled:g})]}),(0,d.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(i.Label,{children:`Taille maximale de fichier`}),(0,d.jsxs)(`div`,{className:`flex gap-2`,children:[(0,d.jsx)(a.Input,{type:`number`,value:x.maxFileSize,onChange:e=>k({maxFileSize:parseInt(e.target.value)||0}),disabled:g,className:`flex-1`}),(0,d.jsxs)(o.Select,{value:x.maxFileSizeUnit,onValueChange:e=>k({maxFileSizeUnit:e}),disabled:g,children:[(0,d.jsx)(o.SelectTrigger,{className:`w-24`,children:(0,d.jsx)(o.SelectValue,{})}),(0,d.jsx)(o.SelectContent,{children:m.map(e=>(0,d.jsx)(o.SelectItem,{value:e.value,children:e.label},e.value))})]})]})]}),(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(i.Label,{children:`Timeout de scan (secondes)`}),(0,d.jsx)(a.Input,{type:`number`,value:x.scanTimeout,onChange:e=>k({scanTimeout:parseInt(e.target.value)||0}),disabled:g})]})]}),(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(i.Label,{children:`Nombre maximum de scans concurrents`}),(0,d.jsx)(a.Input,{type:`number`,value:x.maxConcurrentScans,onChange:e=>k({maxConcurrentScans:parseInt(e.target.value)||1}),disabled:g})]}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,d.jsx)(i.Label,{children:`Scanner les archives (zip, tar, 7z)`}),(0,d.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Analyser le contenu des fichiers archives`})]}),(0,d.jsx)(s.Switch,{checked:x.scanArchives,onCheckedChange:e=>k({scanArchives:e}),disabled:g})]}),x.scanArchives&&(0,d.jsxs)(`div`,{className:`space-y-2 pl-6`,children:[(0,d.jsx)(i.Label,{children:`Profondeur maximale d'archives imbriquees`}),(0,d.jsx)(a.Input,{type:`number`,value:x.maxArchiveDepth,onChange:e=>k({maxArchiveDepth:parseInt(e.target.value)||1}),disabled:g})]})]}),(0,d.jsxs)(c.TabsContent,{value:`exclusions`,className:`p-6 space-y-6`,children:[(0,d.jsxs)(`div`,{className:`space-y-3`,children:[(0,d.jsx)(i.Label,{children:`Extensions exclues`}),(0,d.jsxs)(`div`,{className:`flex gap-2`,children:[(0,d.jsx)(a.Input,{placeholder:`.ext`,value:C,onChange:e=>w(e.target.value),onKeyDown:e=>e.key===`Enter`&&A(),disabled:g,className:`flex-1`}),(0,d.jsx)(n.Button,{onClick:A,disabled:g,size:`sm`,children:(0,d.jsx)(u.Plus,{className:`w-4 h-4`})})]}),(0,d.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:x.excludedExtensions.map(e=>(0,d.jsxs)(t.Badge,{variant:`secondary`,className:`flex items-center gap-1`,children:[e,(0,d.jsx)(`button`,{onClick:()=>j(e),disabled:g,className:`ml-1 hover:text-destructive`,children:(0,d.jsx)(u.X,{className:`w-3 h-3`})})]},e))})]}),(0,d.jsxs)(`div`,{className:`space-y-3`,children:[(0,d.jsx)(i.Label,{children:`Chemins exclus`}),(0,d.jsxs)(`div`,{className:`flex gap-2`,children:[(0,d.jsx)(a.Input,{placeholder:`/path/to/exclude`,value:T,onChange:e=>E(e.target.value),onKeyDown:e=>e.key===`Enter`&&M(),disabled:g,className:`flex-1`}),(0,d.jsx)(n.Button,{onClick:M,disabled:g,size:`sm`,children:(0,d.jsx)(u.Plus,{className:`w-4 h-4`})})]}),(0,d.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:x.excludedPaths.map(e=>(0,d.jsxs)(t.Badge,{variant:`secondary`,className:`flex items-center gap-1`,children:[e,(0,d.jsx)(`button`,{onClick:()=>N(e),disabled:g,className:`ml-1 hover:text-destructive`,children:(0,d.jsx)(u.X,{className:`w-3 h-3`})})]},e))})]}),(0,d.jsxs)(`div`,{className:`space-y-3`,children:[(0,d.jsx)(i.Label,{children:`Hash exclus (whitelist)`}),(0,d.jsxs)(`div`,{className:`flex gap-2`,children:[(0,d.jsx)(a.Input,{placeholder:`SHA256 hash`,value:D,onChange:e=>O(e.target.value),onKeyDown:e=>e.key===`Enter`&&P(),disabled:g,className:`flex-1`}),(0,d.jsx)(n.Button,{onClick:P,disabled:g,size:`sm`,children:(0,d.jsx)(u.Plus,{className:`w-4 h-4`})})]}),(0,d.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:x.whitelistedHashes.map(e=>(0,d.jsxs)(t.Badge,{variant:`secondary`,className:`flex items-center gap-1`,children:[e.substring(0,12),`...`,(0,d.jsx)(`button`,{onClick:()=>F(e),disabled:g,className:`ml-1 hover:text-destructive`,children:(0,d.jsx)(u.X,{className:`w-3 h-3`})})]},e))})]})]}),(0,d.jsxs)(c.TabsContent,{value:`actions`,className:`p-6 space-y-6`,children:[(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(i.Label,{children:`Action sur detection`}),(0,d.jsxs)(o.Select,{value:x.detectionAction,onValueChange:e=>k({detectionAction:e}),disabled:g,children:[(0,d.jsx)(o.SelectTrigger,{children:(0,d.jsx)(o.SelectValue,{})}),(0,d.jsx)(o.SelectContent,{children:p.map(e=>(0,d.jsx)(o.SelectItem,{value:e.value,children:e.label},e.value))})]})]}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,d.jsx)(i.Label,{children:`Logger dans l'audit trail`}),(0,d.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Enregistrer toutes les detections`})]}),(0,d.jsx)(s.Switch,{checked:x.auditLog,onCheckedChange:e=>k({auditLog:e}),disabled:g})]})]}),(0,d.jsxs)(c.TabsContent,{value:`notifications`,className:`p-6 space-y-6`,children:[(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,d.jsx)(i.Label,{children:`Notifier l'administrateur`}),(0,d.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Alerter en cas de menace detectee`})]}),(0,d.jsx)(s.Switch,{checked:x.notifyAdmin,onCheckedChange:e=>k({notifyAdmin:e}),disabled:g})]}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,d.jsx)(i.Label,{children:`Notifier l'utilisateur`}),(0,d.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Informer l'utilisateur de l'action prise`})]}),(0,d.jsx)(s.Switch,{checked:x.notifyUser,onCheckedChange:e=>k({notifyUser:e}),disabled:g})]})]})]}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between p-6 border-t border-border/50`,children:[(0,d.jsxs)(n.Button,{variant:`outline`,onClick:()=>{S(f),y?.()},disabled:g,children:[(0,d.jsx)(u.RotateCcw,{className:`w-4 h-4 mr-2`}),`Restaurer defauts`]}),(0,d.jsxs)(`div`,{className:`flex gap-3`,children:[(0,d.jsx)(n.Button,{variant:`outline`,onClick:v,disabled:g,children:`Annuler`}),(0,d.jsx)(n.Button,{onClick:()=>{_?.(x)},disabled:g,children:`Sauvegarder`})]})]})]})}exports.ScanPolicyEditor=h,exports.defaultScanPolicy=f;
@@ -1 +1 @@
1
- "use client";"use client";require(`../../_virtual/_rolldown/runtime.cjs.js`);const e=require(`../../utils/cn.cjs.js`),t=require(`../../components/badge/index.cjs.js`),n=require(`../../components/button/index.cjs.js`),r=require(`../../components/card/index.cjs.js`),i=require(`../../components/checkbox/index.cjs.js`),a=require(`../../components/label/index.cjs.js`),o=require(`../../components/input/index.cjs.js`),s=require(`../../components/select/index.cjs.js`),c=require(`../../components/progress/index.cjs.js`),l=require(`../../components/tabs/index.cjs.js`),u=require(`../../utils/local-date.cjs.js`);let d=require(`react`),f=require(`lucide-react`),p=require(`react/jsx-runtime`);var m={startDate:new Date(Date.now()-720*60*60*1e3),endDate:new Date,format:`pdf`,type:`executive_summary`,includeSections:{generalStats:!0,threatDetails:!0,scannedFiles:!0,actionsTaken:!0,recommendations:!0}},h={totalScans:1247,totalThreats:34,detectionRate:98.5,quarantinedFiles:28,threatsBySeverity:[{severity:`critical`,count:3},{severity:`high`,count:8},{severity:`medium`,count:15},{severity:`low`,count:8}],complianceChecks:[{name:`Antivirus actif`,passed:!0,details:`ClamAV opérationnel`},{name:`Scans automatisés`,passed:!0,details:`Planification quotidienne`},{name:`Quarantaine sécurisée`,passed:!0,details:`Isolation cryptographique`},{name:`Audit trail`,passed:!0,details:`Logs immutables activés`}],weeklyTrend:[{week:`S1`,scans:280,threats:7},{week:`S2`,scans:295,threats:9},{week:`S3`,scans:340,threats:11},{week:`S4`,scans:332,threats:7}]};function g({config:g,preview:_,isGenerating:v=!1,generationProgress:y=0,onGenerate:b,onSchedule:x,onSendEmail:S,className:C}){let[w,T]=(0,d.useState)({...m,...g}),[E]=(0,d.useState)(_||h),[D,O]=(0,d.useState)(``),[k,A]=(0,d.useState)(`config`),j={pdf:(0,p.jsx)(f.FileText,{className:`h-4 w-4`}),csv:(0,p.jsx)(f.FileSpreadsheet,{className:`h-4 w-4`}),json:(0,p.jsx)(f.FileJson,{className:`h-4 w-4`})},M={executive_summary:`Résumé exécutif`,detailed:`Détail complet`,iso27001_compliance:`Conformité ISO27001`,hds_audit:`Audit HDS`},N={critical:`bg-red-500`,high:`bg-orange-500`,medium:`bg-yellow-500`,low:`bg-blue-500`},P=(e,t)=>{T({...w,includeSections:{...w.includeSections,[e]:t}})},F=Math.max(...E.threatsBySeverity.map(e=>e.count)),I=Math.max(...E.weeklyTrend.map(e=>Math.max(e.scans,e.threats)));return(0,p.jsxs)(`div`,{className:e.cn(`space-y-6`,C),children:[(0,p.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`h2`,{className:`text-2xl font-bold`,children:`Générateur de rapports`}),(0,p.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:`Créez des rapports de scan personnalisés pour vos audits de sécurité`})]}),(0,p.jsxs)(t.Badge,{variant:`outline`,className:`gap-1.5`,children:[(0,p.jsx)(f.Shield,{className:`h-3.5 w-3.5`}),`ISO27001 / HDS`]})]}),(0,p.jsxs)(l.Tabs,{value:k,onValueChange:A,children:[(0,p.jsxs)(l.TabsList,{children:[(0,p.jsx)(l.TabsTrigger,{value:`config`,children:`Configuration`}),(0,p.jsx)(l.TabsTrigger,{value:`preview`,children:`Aperçu`})]}),(0,p.jsxs)(l.TabsContent,{value:`config`,className:`space-y-6`,children:[(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Période du rapport`}),(0,p.jsx)(r.CardDescription,{children:`Sélectionnez la plage de dates à analyser`})]}),(0,p.jsxs)(r.CardContent,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsx)(a.Label,{htmlFor:`startDate`,children:`Date de début`}),(0,p.jsx)(o.Input,{id:`startDate`,type:`date`,value:u.localDateKey(w.startDate),onChange:e=>T({...w,startDate:new Date(e.target.value)})})]}),(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsx)(a.Label,{htmlFor:`endDate`,children:`Date de fin`}),(0,p.jsx)(o.Input,{id:`endDate`,type:`date`,value:u.localDateKey(w.endDate),onChange:e=>T({...w,endDate:new Date(e.target.value)})})]})]})]}),(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Type et format`}),(0,p.jsx)(r.CardDescription,{children:`Choisissez le type de rapport et le format de sortie`})]}),(0,p.jsxs)(r.CardContent,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsx)(a.Label,{htmlFor:`reportType`,children:`Type de rapport`}),(0,p.jsxs)(s.Select,{value:w.type,onValueChange:e=>T({...w,type:e}),children:[(0,p.jsx)(s.SelectTrigger,{id:`reportType`,children:(0,p.jsx)(s.SelectValue,{})}),(0,p.jsx)(s.SelectContent,{children:Object.entries(M).map(([e,t])=>(0,p.jsx)(s.SelectItem,{value:e,children:t},e))})]})]}),(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsx)(a.Label,{htmlFor:`format`,children:`Format de sortie`}),(0,p.jsxs)(s.Select,{value:w.format,onValueChange:e=>T({...w,format:e}),children:[(0,p.jsx)(s.SelectTrigger,{id:`format`,children:(0,p.jsx)(s.SelectValue,{})}),(0,p.jsxs)(s.SelectContent,{children:[(0,p.jsx)(s.SelectItem,{value:`pdf`,children:(0,p.jsxs)(`span`,{className:`flex items-center gap-2`,children:[j.pdf,`PDF`]})}),(0,p.jsx)(s.SelectItem,{value:`csv`,children:(0,p.jsxs)(`span`,{className:`flex items-center gap-2`,children:[j.csv,`CSV`]})}),(0,p.jsx)(s.SelectItem,{value:`json`,children:(0,p.jsxs)(`span`,{className:`flex items-center gap-2`,children:[j.json,`JSON`]})})]})]})]})]})]}),(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Sections à inclure`}),(0,p.jsx)(r.CardDescription,{children:`Personnalisez le contenu du rapport`})]}),(0,p.jsxs)(r.CardContent,{className:`space-y-3`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(i.Checkbox,{id:`generalStats`,checked:w.includeSections.generalStats,onCheckedChange:e=>P(`generalStats`,e)}),(0,p.jsx)(a.Label,{htmlFor:`generalStats`,className:`cursor-pointer`,children:`Statistiques générales`})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(i.Checkbox,{id:`threatDetails`,checked:w.includeSections.threatDetails,onCheckedChange:e=>P(`threatDetails`,e)}),(0,p.jsx)(a.Label,{htmlFor:`threatDetails`,className:`cursor-pointer`,children:`Détails des menaces détectées`})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(i.Checkbox,{id:`scannedFiles`,checked:w.includeSections.scannedFiles,onCheckedChange:e=>P(`scannedFiles`,e)}),(0,p.jsx)(a.Label,{htmlFor:`scannedFiles`,className:`cursor-pointer`,children:`Liste des fichiers scannés`})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(i.Checkbox,{id:`actionsTaken`,checked:w.includeSections.actionsTaken,onCheckedChange:e=>P(`actionsTaken`,e)}),(0,p.jsx)(a.Label,{htmlFor:`actionsTaken`,className:`cursor-pointer`,children:`Actions prises`})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(i.Checkbox,{id:`recommendations`,checked:w.includeSections.recommendations,onCheckedChange:e=>P(`recommendations`,e)}),(0,p.jsx)(a.Label,{htmlFor:`recommendations`,className:`cursor-pointer`,children:`Recommandations`})]})]})]}),(0,p.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,p.jsxs)(n.Button,{className:`flex-1`,onClick:()=>b?.(w),disabled:v,children:[(0,p.jsx)(f.Download,{className:`h-4 w-4 mr-2`}),`Générer le rapport`]}),(0,p.jsxs)(n.Button,{variant:`outline`,className:`flex-1`,onClick:()=>x?.(w,`weekly`),disabled:v,children:[(0,p.jsx)(f.Calendar,{className:`h-4 w-4 mr-2`}),`Planifier génération`]})]}),(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Envoi par email`}),(0,p.jsx)(r.CardDescription,{children:`Envoyez le rapport directement par email`})]}),(0,p.jsxs)(r.CardContent,{className:`flex gap-2`,children:[(0,p.jsx)(o.Input,{placeholder:`email@example.com`,type:`email`,value:D,onChange:e=>O(e.target.value),className:`flex-1`}),(0,p.jsxs)(n.Button,{variant:`outline`,onClick:()=>S?.(w,D),disabled:!D||v,children:[(0,p.jsx)(f.Mail,{className:`h-4 w-4 mr-2`}),`Envoyer`]})]})]}),v&&(0,p.jsx)(r.Card,{children:(0,p.jsx)(r.CardContent,{className:`pt-6`,children:(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center justify-between text-sm`,children:[(0,p.jsx)(`span`,{className:`text-muted-foreground`,children:`Génération en cours...`}),(0,p.jsxs)(`span`,{className:`font-medium`,children:[y,`%`]})]}),(0,p.jsx)(c.Progress,{value:y})]})})})]}),(0,p.jsxs)(l.TabsContent,{value:`preview`,className:`space-y-6`,children:[(0,p.jsx)(r.Card,{children:(0,p.jsx)(r.CardContent,{className:`pt-6`,children:(0,p.jsxs)(`div`,{className:`space-y-4`,children:[(0,p.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`div`,{className:`h-12 w-12 rounded-lg bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center mb-3`,children:(0,p.jsx)(f.Shield,{className:`h-6 w-6 text-white`})}),(0,p.jsx)(`h3`,{className:`text-xl font-bold`,children:`Rapport de scan de sécurité`}),(0,p.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:M[w.type]})]}),(0,p.jsxs)(t.Badge,{variant:`secondary`,children:[w.startDate.toLocaleDateString(),` -`,` `,w.endDate.toLocaleDateString()]})]}),(0,p.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[`Généré le `,new Date().toLocaleString()]})]})})}),w.includeSections.generalStats&&(0,p.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-4`,children:[(0,p.jsx)(r.Card,{children:(0,p.jsx)(r.CardContent,{className:`pt-6`,children:(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,p.jsx)(f.BarChart3,{className:`h-4 w-4`}),`Total scans`]}),(0,p.jsx)(`div`,{className:`text-2xl font-bold`,children:E.totalScans.toLocaleString()})]})})}),(0,p.jsx)(r.Card,{children:(0,p.jsx)(r.CardContent,{className:`pt-6`,children:(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,p.jsx)(f.AlertTriangle,{className:`h-4 w-4`}),`Menaces détectées`]}),(0,p.jsx)(`div`,{className:`text-2xl font-bold`,children:E.totalThreats})]})})}),(0,p.jsx)(r.Card,{children:(0,p.jsx)(r.CardContent,{className:`pt-6`,children:(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,p.jsx)(f.TrendingUp,{className:`h-4 w-4`}),`Taux de détection`]}),(0,p.jsxs)(`div`,{className:`text-2xl font-bold`,children:[E.detectionRate,`%`]})]})})}),(0,p.jsx)(r.Card,{children:(0,p.jsx)(r.CardContent,{className:`pt-6`,children:(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,p.jsx)(f.Shield,{className:`h-4 w-4`}),`Fichiers en quarantaine`]}),(0,p.jsx)(`div`,{className:`text-2xl font-bold`,children:E.quarantinedFiles})]})})})]}),w.includeSections.threatDetails&&(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Menaces par sévérité`}),(0,p.jsx)(r.CardDescription,{children:`Distribution des menaces détectées`})]}),(0,p.jsx)(r.CardContent,{className:`space-y-4`,children:E.threatsBySeverity.map(t=>(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center justify-between text-sm`,children:[(0,p.jsx)(`span`,{className:`capitalize font-medium`,children:t.severity}),(0,p.jsx)(`span`,{className:`text-muted-foreground`,children:t.count})]}),(0,p.jsx)(`div`,{className:`h-2 bg-muted rounded-full overflow-hidden`,children:(0,p.jsx)(`div`,{className:e.cn(`h-full rounded-full`,N[t.severity]),style:{width:`${t.count/F*100}%`}})})]},t.severity))})]}),w.includeSections.generalStats&&(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Tendance hebdomadaire`}),(0,p.jsx)(r.CardDescription,{children:`Évolution des scans et menaces`})]}),(0,p.jsx)(r.CardContent,{children:(0,p.jsxs)(`div`,{className:`space-y-4`,children:[(0,p.jsx)(`div`,{className:`flex items-end gap-4 h-48`,children:E.weeklyTrend.map(e=>(0,p.jsxs)(`div`,{className:`flex-1 flex flex-col items-center gap-2`,children:[(0,p.jsxs)(`div`,{className:`flex-1 w-full flex items-end gap-1`,children:[(0,p.jsx)(`div`,{className:`flex-1 bg-blue-500 rounded-t`,style:{height:`${e.scans/I*100}%`},title:`Scans: ${e.scans}`}),(0,p.jsx)(`div`,{className:`flex-1 bg-orange-500 rounded-t`,style:{height:`${e.threats/I*100}%`},title:`Menaces: ${e.threats}`})]}),(0,p.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.week})]},e.week))}),(0,p.jsxs)(`div`,{className:`flex items-center justify-center gap-6 text-xs`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(`div`,{className:`h-3 w-3 rounded bg-blue-500`}),(0,p.jsx)(`span`,{className:`text-muted-foreground`,children:`Scans`})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(`div`,{className:`h-3 w-3 rounded bg-orange-500`}),(0,p.jsx)(`span`,{className:`text-muted-foreground`,children:`Menaces`})]})]})]})})]}),(w.type===`iso27001_compliance`||w.type===`hds_audit`)&&(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Vérifications de conformité`}),(0,p.jsx)(r.CardDescription,{children:w.type===`iso27001_compliance`?`Conformité ISO27001`:`Audit HDS`})]}),(0,p.jsx)(r.CardContent,{className:`space-y-3`,children:E.complianceChecks.map((e,n)=>(0,p.jsxs)(`div`,{className:`flex items-start gap-3 p-3 rounded-lg border bg-card`,children:[e.passed?(0,p.jsx)(f.CheckCircle2,{className:`h-5 w-5 text-green-500 mt-0.5`}):(0,p.jsx)(f.XCircle,{className:`h-5 w-5 text-red-500 mt-0.5`}),(0,p.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,p.jsx)(`div`,{className:`font-medium`,children:e.name}),(0,p.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:e.details})]}),(0,p.jsx)(t.Badge,{variant:e.passed?`default`:`destructive`,className:e.passed?`bg-green-500/10 text-green-600 border-green-500/20`:``,children:e.passed?`Conforme`:`Non conforme`})]},n))})]}),w.includeSections.recommendations&&(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Recommandations`}),(0,p.jsx)(r.CardDescription,{children:`Actions suggérées pour améliorer la sécurité`})]}),(0,p.jsx)(r.CardContent,{children:(0,p.jsxs)(`ul`,{className:`space-y-2 text-sm`,children:[(0,p.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,p.jsx)(`span`,{className:`text-muted-foreground mt-1`,children:`•`}),(0,p.jsx)(`span`,{children:`Augmenter la fréquence des scans pour les répertoires critiques`})]}),(0,p.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,p.jsx)(`span`,{className:`text-muted-foreground mt-1`,children:`•`}),(0,p.jsx)(`span`,{children:`Mettre à jour les signatures de virus (dernière mise à jour: il y a 2h)`})]}),(0,p.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,p.jsx)(`span`,{className:`text-muted-foreground mt-1`,children:`•`}),(0,p.jsx)(`span`,{children:`Configurer des alertes en temps réel pour les menaces critiques`})]}),(0,p.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,p.jsx)(`span`,{className:`text-muted-foreground mt-1`,children:`•`}),(0,p.jsx)(`span`,{children:`Réviser la politique de quarantaine automatique`})]})]})})]})]})]})]})}exports.ScanReportGenerator=g;
1
+ "use client";"use client";const e=require("../../utils/cn.cjs.js"),t=require("../../components/badge/index.cjs.js"),n=require("../../components/button/index.cjs.js"),r=require("../../components/card/index.cjs.js"),i=require("../../components/checkbox/index.cjs.js"),a=require("../../components/label/index.cjs.js"),o=require("../../components/input/index.cjs.js"),s=require("../../components/select/index.cjs.js"),c=require("../../components/progress/index.cjs.js"),l=require("../../components/tabs/index.cjs.js"),u=require("../../utils/local-date.cjs.js");let d=require("react"),f=require("lucide-react"),p=require("react/jsx-runtime");var m={startDate:new Date(Date.now()-720*60*60*1e3),endDate:new Date,format:`pdf`,type:`executive_summary`,includeSections:{generalStats:!0,threatDetails:!0,scannedFiles:!0,actionsTaken:!0,recommendations:!0}},h={totalScans:1247,totalThreats:34,detectionRate:98.5,quarantinedFiles:28,threatsBySeverity:[{severity:`critical`,count:3},{severity:`high`,count:8},{severity:`medium`,count:15},{severity:`low`,count:8}],complianceChecks:[{name:`Antivirus actif`,passed:!0,details:`ClamAV opérationnel`},{name:`Scans automatisés`,passed:!0,details:`Planification quotidienne`},{name:`Quarantaine sécurisée`,passed:!0,details:`Isolation cryptographique`},{name:`Audit trail`,passed:!0,details:`Logs immutables activés`}],weeklyTrend:[{week:`S1`,scans:280,threats:7},{week:`S2`,scans:295,threats:9},{week:`S3`,scans:340,threats:11},{week:`S4`,scans:332,threats:7}]};function g({config:g,preview:_,isGenerating:v=!1,generationProgress:y=0,onGenerate:b,onSchedule:x,onSendEmail:S,className:C}){let[w,T]=(0,d.useState)({...m,...g}),[E]=(0,d.useState)(_||h),[D,O]=(0,d.useState)(``),[k,A]=(0,d.useState)(`config`),j={pdf:(0,p.jsx)(f.FileText,{className:`h-4 w-4`}),csv:(0,p.jsx)(f.FileSpreadsheet,{className:`h-4 w-4`}),json:(0,p.jsx)(f.FileJson,{className:`h-4 w-4`})},M={executive_summary:`Résumé exécutif`,detailed:`Détail complet`,iso27001_compliance:`Conformité ISO27001`,hds_audit:`Audit HDS`},N={critical:`bg-red-500`,high:`bg-orange-500`,medium:`bg-yellow-500`,low:`bg-blue-500`},P=(e,t)=>{T({...w,includeSections:{...w.includeSections,[e]:t}})},F=Math.max(...E.threatsBySeverity.map(e=>e.count)),I=Math.max(...E.weeklyTrend.map(e=>Math.max(e.scans,e.threats)));return(0,p.jsxs)(`div`,{className:e.cn(`space-y-6`,C),children:[(0,p.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`h2`,{className:`text-2xl font-bold`,children:`Générateur de rapports`}),(0,p.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:`Créez des rapports de scan personnalisés pour vos audits de sécurité`})]}),(0,p.jsxs)(t.Badge,{variant:`outline`,className:`gap-1.5`,children:[(0,p.jsx)(f.Shield,{className:`h-3.5 w-3.5`}),`ISO27001 / HDS`]})]}),(0,p.jsxs)(l.Tabs,{value:k,onValueChange:A,children:[(0,p.jsxs)(l.TabsList,{children:[(0,p.jsx)(l.TabsTrigger,{value:`config`,children:`Configuration`}),(0,p.jsx)(l.TabsTrigger,{value:`preview`,children:`Aperçu`})]}),(0,p.jsxs)(l.TabsContent,{value:`config`,className:`space-y-6`,children:[(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Période du rapport`}),(0,p.jsx)(r.CardDescription,{children:`Sélectionnez la plage de dates à analyser`})]}),(0,p.jsxs)(r.CardContent,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsx)(a.Label,{htmlFor:`startDate`,children:`Date de début`}),(0,p.jsx)(o.Input,{id:`startDate`,type:`date`,value:u.localDateKey(w.startDate),onChange:e=>T({...w,startDate:new Date(e.target.value)})})]}),(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsx)(a.Label,{htmlFor:`endDate`,children:`Date de fin`}),(0,p.jsx)(o.Input,{id:`endDate`,type:`date`,value:u.localDateKey(w.endDate),onChange:e=>T({...w,endDate:new Date(e.target.value)})})]})]})]}),(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Type et format`}),(0,p.jsx)(r.CardDescription,{children:`Choisissez le type de rapport et le format de sortie`})]}),(0,p.jsxs)(r.CardContent,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsx)(a.Label,{htmlFor:`reportType`,children:`Type de rapport`}),(0,p.jsxs)(s.Select,{value:w.type,onValueChange:e=>T({...w,type:e}),children:[(0,p.jsx)(s.SelectTrigger,{id:`reportType`,children:(0,p.jsx)(s.SelectValue,{})}),(0,p.jsx)(s.SelectContent,{children:Object.entries(M).map(([e,t])=>(0,p.jsx)(s.SelectItem,{value:e,children:t},e))})]})]}),(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsx)(a.Label,{htmlFor:`format`,children:`Format de sortie`}),(0,p.jsxs)(s.Select,{value:w.format,onValueChange:e=>T({...w,format:e}),children:[(0,p.jsx)(s.SelectTrigger,{id:`format`,children:(0,p.jsx)(s.SelectValue,{})}),(0,p.jsxs)(s.SelectContent,{children:[(0,p.jsx)(s.SelectItem,{value:`pdf`,children:(0,p.jsxs)(`span`,{className:`flex items-center gap-2`,children:[j.pdf,`PDF`]})}),(0,p.jsx)(s.SelectItem,{value:`csv`,children:(0,p.jsxs)(`span`,{className:`flex items-center gap-2`,children:[j.csv,`CSV`]})}),(0,p.jsx)(s.SelectItem,{value:`json`,children:(0,p.jsxs)(`span`,{className:`flex items-center gap-2`,children:[j.json,`JSON`]})})]})]})]})]})]}),(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Sections à inclure`}),(0,p.jsx)(r.CardDescription,{children:`Personnalisez le contenu du rapport`})]}),(0,p.jsxs)(r.CardContent,{className:`space-y-3`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(i.Checkbox,{id:`generalStats`,checked:w.includeSections.generalStats,onCheckedChange:e=>P(`generalStats`,e)}),(0,p.jsx)(a.Label,{htmlFor:`generalStats`,className:`cursor-pointer`,children:`Statistiques générales`})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(i.Checkbox,{id:`threatDetails`,checked:w.includeSections.threatDetails,onCheckedChange:e=>P(`threatDetails`,e)}),(0,p.jsx)(a.Label,{htmlFor:`threatDetails`,className:`cursor-pointer`,children:`Détails des menaces détectées`})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(i.Checkbox,{id:`scannedFiles`,checked:w.includeSections.scannedFiles,onCheckedChange:e=>P(`scannedFiles`,e)}),(0,p.jsx)(a.Label,{htmlFor:`scannedFiles`,className:`cursor-pointer`,children:`Liste des fichiers scannés`})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(i.Checkbox,{id:`actionsTaken`,checked:w.includeSections.actionsTaken,onCheckedChange:e=>P(`actionsTaken`,e)}),(0,p.jsx)(a.Label,{htmlFor:`actionsTaken`,className:`cursor-pointer`,children:`Actions prises`})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(i.Checkbox,{id:`recommendations`,checked:w.includeSections.recommendations,onCheckedChange:e=>P(`recommendations`,e)}),(0,p.jsx)(a.Label,{htmlFor:`recommendations`,className:`cursor-pointer`,children:`Recommandations`})]})]})]}),(0,p.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,p.jsxs)(n.Button,{className:`flex-1`,onClick:()=>b?.(w),disabled:v,children:[(0,p.jsx)(f.Download,{className:`h-4 w-4 mr-2`}),`Générer le rapport`]}),(0,p.jsxs)(n.Button,{variant:`outline`,className:`flex-1`,onClick:()=>x?.(w,`weekly`),disabled:v,children:[(0,p.jsx)(f.Calendar,{className:`h-4 w-4 mr-2`}),`Planifier génération`]})]}),(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Envoi par email`}),(0,p.jsx)(r.CardDescription,{children:`Envoyez le rapport directement par email`})]}),(0,p.jsxs)(r.CardContent,{className:`flex gap-2`,children:[(0,p.jsx)(o.Input,{placeholder:`email@example.com`,type:`email`,value:D,onChange:e=>O(e.target.value),className:`flex-1`}),(0,p.jsxs)(n.Button,{variant:`outline`,onClick:()=>S?.(w,D),disabled:!D||v,children:[(0,p.jsx)(f.Mail,{className:`h-4 w-4 mr-2`}),`Envoyer`]})]})]}),v&&(0,p.jsx)(r.Card,{children:(0,p.jsx)(r.CardContent,{className:`pt-6`,children:(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center justify-between text-sm`,children:[(0,p.jsx)(`span`,{className:`text-muted-foreground`,children:`Génération en cours...`}),(0,p.jsxs)(`span`,{className:`font-medium`,children:[y,`%`]})]}),(0,p.jsx)(c.Progress,{value:y})]})})})]}),(0,p.jsxs)(l.TabsContent,{value:`preview`,className:`space-y-6`,children:[(0,p.jsx)(r.Card,{children:(0,p.jsx)(r.CardContent,{className:`pt-6`,children:(0,p.jsxs)(`div`,{className:`space-y-4`,children:[(0,p.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`div`,{className:`h-12 w-12 rounded-lg bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center mb-3`,children:(0,p.jsx)(f.Shield,{className:`h-6 w-6 text-white`})}),(0,p.jsx)(`h3`,{className:`text-xl font-bold`,children:`Rapport de scan de sécurité`}),(0,p.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:M[w.type]})]}),(0,p.jsxs)(t.Badge,{variant:`secondary`,children:[w.startDate.toLocaleDateString(),` -`,` `,w.endDate.toLocaleDateString()]})]}),(0,p.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[`Généré le `,new Date().toLocaleString()]})]})})}),w.includeSections.generalStats&&(0,p.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-4`,children:[(0,p.jsx)(r.Card,{children:(0,p.jsx)(r.CardContent,{className:`pt-6`,children:(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,p.jsx)(f.BarChart3,{className:`h-4 w-4`}),`Total scans`]}),(0,p.jsx)(`div`,{className:`text-2xl font-bold`,children:E.totalScans.toLocaleString()})]})})}),(0,p.jsx)(r.Card,{children:(0,p.jsx)(r.CardContent,{className:`pt-6`,children:(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,p.jsx)(f.AlertTriangle,{className:`h-4 w-4`}),`Menaces détectées`]}),(0,p.jsx)(`div`,{className:`text-2xl font-bold`,children:E.totalThreats})]})})}),(0,p.jsx)(r.Card,{children:(0,p.jsx)(r.CardContent,{className:`pt-6`,children:(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,p.jsx)(f.TrendingUp,{className:`h-4 w-4`}),`Taux de détection`]}),(0,p.jsxs)(`div`,{className:`text-2xl font-bold`,children:[E.detectionRate,`%`]})]})})}),(0,p.jsx)(r.Card,{children:(0,p.jsx)(r.CardContent,{className:`pt-6`,children:(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,p.jsx)(f.Shield,{className:`h-4 w-4`}),`Fichiers en quarantaine`]}),(0,p.jsx)(`div`,{className:`text-2xl font-bold`,children:E.quarantinedFiles})]})})})]}),w.includeSections.threatDetails&&(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Menaces par sévérité`}),(0,p.jsx)(r.CardDescription,{children:`Distribution des menaces détectées`})]}),(0,p.jsx)(r.CardContent,{className:`space-y-4`,children:E.threatsBySeverity.map(t=>(0,p.jsxs)(`div`,{className:`space-y-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center justify-between text-sm`,children:[(0,p.jsx)(`span`,{className:`capitalize font-medium`,children:t.severity}),(0,p.jsx)(`span`,{className:`text-muted-foreground`,children:t.count})]}),(0,p.jsx)(`div`,{className:`h-2 bg-muted rounded-full overflow-hidden`,children:(0,p.jsx)(`div`,{className:e.cn(`h-full rounded-full`,N[t.severity]),style:{width:`${t.count/F*100}%`}})})]},t.severity))})]}),w.includeSections.generalStats&&(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Tendance hebdomadaire`}),(0,p.jsx)(r.CardDescription,{children:`Évolution des scans et menaces`})]}),(0,p.jsx)(r.CardContent,{children:(0,p.jsxs)(`div`,{className:`space-y-4`,children:[(0,p.jsx)(`div`,{className:`flex items-end gap-4 h-48`,children:E.weeklyTrend.map(e=>(0,p.jsxs)(`div`,{className:`flex-1 flex flex-col items-center gap-2`,children:[(0,p.jsxs)(`div`,{className:`flex-1 w-full flex items-end gap-1`,children:[(0,p.jsx)(`div`,{className:`flex-1 bg-blue-500 rounded-t`,style:{height:`${e.scans/I*100}%`},title:`Scans: ${e.scans}`}),(0,p.jsx)(`div`,{className:`flex-1 bg-orange-500 rounded-t`,style:{height:`${e.threats/I*100}%`},title:`Menaces: ${e.threats}`})]}),(0,p.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.week})]},e.week))}),(0,p.jsxs)(`div`,{className:`flex items-center justify-center gap-6 text-xs`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(`div`,{className:`h-3 w-3 rounded bg-blue-500`}),(0,p.jsx)(`span`,{className:`text-muted-foreground`,children:`Scans`})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(`div`,{className:`h-3 w-3 rounded bg-orange-500`}),(0,p.jsx)(`span`,{className:`text-muted-foreground`,children:`Menaces`})]})]})]})})]}),(w.type===`iso27001_compliance`||w.type===`hds_audit`)&&(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Vérifications de conformité`}),(0,p.jsx)(r.CardDescription,{children:w.type===`iso27001_compliance`?`Conformité ISO27001`:`Audit HDS`})]}),(0,p.jsx)(r.CardContent,{className:`space-y-3`,children:E.complianceChecks.map((e,n)=>(0,p.jsxs)(`div`,{className:`flex items-start gap-3 p-3 rounded-lg border bg-card`,children:[e.passed?(0,p.jsx)(f.CheckCircle2,{className:`h-5 w-5 text-green-500 mt-0.5`}):(0,p.jsx)(f.XCircle,{className:`h-5 w-5 text-red-500 mt-0.5`}),(0,p.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,p.jsx)(`div`,{className:`font-medium`,children:e.name}),(0,p.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:e.details})]}),(0,p.jsx)(t.Badge,{variant:e.passed?`default`:`destructive`,className:e.passed?`bg-green-500/10 text-green-600 border-green-500/20`:``,children:e.passed?`Conforme`:`Non conforme`})]},n))})]}),w.includeSections.recommendations&&(0,p.jsxs)(r.Card,{children:[(0,p.jsxs)(r.CardHeader,{children:[(0,p.jsx)(r.CardTitle,{children:`Recommandations`}),(0,p.jsx)(r.CardDescription,{children:`Actions suggérées pour améliorer la sécurité`})]}),(0,p.jsx)(r.CardContent,{children:(0,p.jsxs)(`ul`,{className:`space-y-2 text-sm`,children:[(0,p.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,p.jsx)(`span`,{className:`text-muted-foreground mt-1`,children:`•`}),(0,p.jsx)(`span`,{children:`Augmenter la fréquence des scans pour les répertoires critiques`})]}),(0,p.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,p.jsx)(`span`,{className:`text-muted-foreground mt-1`,children:`•`}),(0,p.jsx)(`span`,{children:`Mettre à jour les signatures de virus (dernière mise à jour: il y a 2h)`})]}),(0,p.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,p.jsx)(`span`,{className:`text-muted-foreground mt-1`,children:`•`}),(0,p.jsx)(`span`,{children:`Configurer des alertes en temps réel pour les menaces critiques`})]}),(0,p.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,p.jsx)(`span`,{className:`text-muted-foreground mt-1`,children:`•`}),(0,p.jsx)(`span`,{children:`Réviser la politique de quarantaine automatique`})]})]})})]})]})]})]})}exports.ScanReportGenerator=g;
@@ -1 +1 @@
1
- "use client";"use client";const e=require(`../../_virtual/_rolldown/runtime.cjs.js`),t=require(`../../utils/cn.cjs.js`),n=require(`../../components/alert-dialog/index.cjs.js`),r=require(`../../components/button/index.cjs.js`),i=require(`../../components/card/index.cjs.js`),a=require(`../../components/label/index.cjs.js`),o=require(`../../components/input/index.cjs.js`),s=require(`../../components/select/index.cjs.js`),c=require(`../../components/separator/index.cjs.js`),l=require(`../../components/switch/index.cjs.js`),u=require(`../../components/tabs/index.cjs.js`),d=require(`../../components/textarea/index.cjs.js`);let f=require(`react`);f=e.__toESM(f);let p=require(`lucide-react`),m=require(`react/jsx-runtime`);function h({field:e,value:t,onChange:n}){let r=e=>{n?.(e)};return e.type===`custom`&&e.customComponent?(0,m.jsx)(`div`,{className:`space-y-2`,children:e.customComponent}):(0,m.jsxs)(`div`,{className:`space-y-2`,children:[(0,m.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,m.jsxs)(a.Label,{htmlFor:e.id,className:`text-sm font-medium`,children:[e.label,e.required&&(0,m.jsx)(`span`,{className:`text-destructive ml-1`,children:`*`})]}),e.type===`switch`&&(0,m.jsx)(l.Switch,{id:e.id,checked:t,onCheckedChange:r,disabled:e.disabled})]}),e.description&&e.type!==`switch`&&(0,m.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.description}),e.type===`switch`&&e.description&&(0,m.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.description}),e.type===`text`&&(0,m.jsx)(o.Input,{id:e.id,type:`text`,value:t||``,onChange:e=>r(e.target.value),placeholder:e.placeholder,disabled:e.disabled}),e.type===`email`&&(0,m.jsx)(o.Input,{id:e.id,type:`email`,value:t||``,onChange:e=>r(e.target.value),placeholder:e.placeholder,disabled:e.disabled}),e.type===`password`&&(0,m.jsx)(o.Input,{id:e.id,type:`password`,value:t||``,onChange:e=>r(e.target.value),placeholder:e.placeholder,disabled:e.disabled}),e.type===`textarea`&&(0,m.jsx)(d.Textarea,{id:e.id,value:t||``,onChange:e=>r(e.target.value),placeholder:e.placeholder,disabled:e.disabled,rows:3}),e.type===`select`&&e.options&&(0,m.jsxs)(s.Select,{value:t,onValueChange:r,disabled:e.disabled,children:[(0,m.jsx)(s.SelectTrigger,{id:e.id,children:(0,m.jsx)(s.SelectValue,{placeholder:e.placeholder||`Sélectionner...`})}),(0,m.jsx)(s.SelectContent,{children:e.options.map(e=>(0,m.jsx)(s.SelectItem,{value:e.value,children:e.label},e.value))})]})]})}function g({section:e,values:t,onChange:n}){return(0,m.jsxs)(i.Card,{children:[(0,m.jsx)(i.CardHeader,{children:(0,m.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.icon&&(0,m.jsx)(`span`,{className:`text-muted-foreground`,children:e.icon}),(0,m.jsxs)(`div`,{children:[(0,m.jsx)(i.CardTitle,{className:`text-base`,children:e.title}),e.description&&(0,m.jsx)(i.CardDescription,{children:e.description})]})]})}),(0,m.jsx)(i.CardContent,{className:`space-y-6`,children:e.fields.map((r,i)=>(0,m.jsxs)(f.Fragment,{children:[(0,m.jsx)(h,{field:r,value:t?.[r.id],onChange:e=>n?.(r.id,e)}),i<e.fields.length-1&&(0,m.jsx)(c.Separator,{className:`my-4`})]},r.id))})]})}function _({title:e=`Paramètres`,description:a=`Gérez les paramètres de votre compte et de l'application.`,tabs:o,sections:s,useTabs:c=!0,defaultTab:l,values:d={},onChange:h,onSave:_,saving:v=!1,showSaveButton:y=!0,showDeleteAccount:b=!1,onDeleteAccount:x,className:S}){let[C,w]=f.useState(d),[T,E]=f.useState(!1);f.useEffect(()=>{w(d)},[d]);let D=(e,t)=>{w(n=>({...n,[e]:t})),E(!0),h?.(e,t)},O=async()=>{await _?.(C),E(!1)},k=e=>(0,m.jsx)(`div`,{className:`space-y-6`,children:e.map(e=>(0,m.jsx)(g,{section:e,values:C,onChange:D},e.id))});return(0,m.jsxs)(`div`,{className:t.cn(`space-y-6`,S),children:[(0,m.jsxs)(`div`,{className:`flex flex-col gap-4 md:flex-row md:items-center md:justify-between`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`h1`,{className:`text-2xl font-bold tracking-tight`,children:e}),a&&(0,m.jsx)(`p`,{className:`text-muted-foreground mt-1`,children:a})]}),y&&_&&(0,m.jsxs)(r.Button,{onClick:O,disabled:v||!T,children:[v?(0,m.jsx)(p.Loader2,{className:`mr-2 h-4 w-4 animate-spin`}):(0,m.jsx)(p.Save,{className:`mr-2 h-4 w-4`}),`Enregistrer`]})]}),c&&o&&o.length>0?(0,m.jsxs)(u.Tabs,{defaultValue:l||o[0].id,className:`space-y-6`,children:[(0,m.jsx)(u.TabsList,{className:`grid w-full grid-cols-2 md:w-auto md:inline-flex`,children:o.map(e=>(0,m.jsxs)(u.TabsTrigger,{value:e.id,className:`gap-2`,children:[e.icon,e.label]},e.id))}),o.map(e=>(0,m.jsx)(u.TabsContent,{value:e.id,className:`space-y-6`,children:k(e.sections)},e.id))]}):s&&k(s),b&&x&&(0,m.jsxs)(i.Card,{className:`border-destructive`,children:[(0,m.jsxs)(i.CardHeader,{children:[(0,m.jsxs)(i.CardTitle,{className:`text-base text-destructive flex items-center gap-2`,children:[(0,m.jsx)(p.Trash2,{className:`h-4 w-4`}),`Zone dangereuse`]}),(0,m.jsx)(i.CardDescription,{children:`Actions irréversibles concernant votre compte.`})]}),(0,m.jsx)(i.CardContent,{children:(0,m.jsxs)(n.AlertDialog,{children:[(0,m.jsx)(n.AlertDialogTrigger,{asChild:!0,children:(0,m.jsxs)(r.Button,{variant:`destructive`,children:[(0,m.jsx)(p.Trash2,{className:`mr-2 h-4 w-4`}),`Supprimer mon compte`]})}),(0,m.jsxs)(n.AlertDialogContent,{children:[(0,m.jsxs)(n.AlertDialogHeader,{children:[(0,m.jsx)(n.AlertDialogTitle,{children:`Êtes-vous sûr ?`}),(0,m.jsx)(n.AlertDialogDescription,{children:`Cette action est irréversible. Toutes vos données seront définitivement supprimées et ne pourront pas être récupérées.`})]}),(0,m.jsxs)(n.AlertDialogFooter,{children:[(0,m.jsx)(n.AlertDialogCancel,{children:`Annuler`}),(0,m.jsx)(n.AlertDialogAction,{onClick:x,className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:`Supprimer définitivement`})]})]})]})})]})]})}var v=[{id:`profile`,label:`Profil`,icon:(0,m.jsx)(p.User,{className:`h-4 w-4`}),sections:[{id:`personal`,title:`Informations personnelles`,description:`Mettez à jour vos informations personnelles.`,icon:(0,m.jsx)(p.User,{className:`h-5 w-5`}),fields:[{id:`name`,label:`Nom complet`,type:`text`,placeholder:`Jean Dupont`,required:!0},{id:`email`,label:`Adresse email`,type:`email`,placeholder:`jean@exemple.com`,required:!0},{id:`bio`,label:`Bio`,type:`textarea`,placeholder:`Parlez-nous de vous...`}]}]},{id:`notifications`,label:`Notifications`,icon:(0,m.jsx)(p.Bell,{className:`h-4 w-4`}),sections:[{id:`email-notifs`,title:`Notifications par email`,description:`Gérez vos préférences de notification par email.`,icon:(0,m.jsx)(p.Mail,{className:`h-5 w-5`}),fields:[{id:`notif-marketing`,label:`Marketing`,description:`Recevoir des emails marketing et promotionnels.`,type:`switch`},{id:`notif-security`,label:`Sécurité`,description:`Recevoir des alertes de sécurité importantes.`,type:`switch`},{id:`notif-updates`,label:`Mises à jour`,description:`Recevoir les mises à jour de produit.`,type:`switch`}]}]},{id:`security`,label:`Sécurité`,icon:(0,m.jsx)(p.Shield,{className:`h-4 w-4`}),sections:[{id:`password`,title:`Mot de passe`,description:`Changez votre mot de passe.`,icon:(0,m.jsx)(p.Lock,{className:`h-5 w-5`}),fields:[{id:`current-password`,label:`Mot de passe actuel`,type:`password`,placeholder:`••••••••`},{id:`new-password`,label:`Nouveau mot de passe`,type:`password`,placeholder:`••••••••`},{id:`confirm-password`,label:`Confirmer le mot de passe`,type:`password`,placeholder:`••••••••`}]},{id:`two-factor`,title:`Authentification à deux facteurs`,description:`Ajoutez une couche de sécurité supplémentaire.`,icon:(0,m.jsx)(p.Smartphone,{className:`h-5 w-5`}),fields:[{id:`2fa-enabled`,label:`Activer la 2FA`,description:`Utilisez une application d'authentification.`,type:`switch`}]}]},{id:`preferences`,label:`Préférences`,icon:(0,m.jsx)(p.Palette,{className:`h-4 w-4`}),sections:[{id:`appearance`,title:`Apparence`,description:`Personnalisez l'apparence de l'application.`,icon:(0,m.jsx)(p.Palette,{className:`h-5 w-5`}),fields:[{id:`theme`,label:`Thème`,type:`select`,options:[{value:`light`,label:`Clair`},{value:`dark`,label:`Sombre`},{value:`system`,label:`Système`}]},{id:`language`,label:`Langue`,type:`select`,options:[{value:`fr`,label:`Français`},{value:`en`,label:`English`},{value:`es`,label:`Español`}]}]}]}];exports.default=_,exports.defaultSettingsTabs=v;
1
+ "use client";"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../utils/cn.cjs.js"),n=require("../../components/alert-dialog/index.cjs.js"),r=require("../../components/button/index.cjs.js"),i=require("../../components/card/index.cjs.js"),a=require("../../components/label/index.cjs.js"),o=require("../../components/input/index.cjs.js"),s=require("../../components/select/index.cjs.js"),c=require("../../components/separator/index.cjs.js"),l=require("../../components/switch/index.cjs.js"),u=require("../../components/tabs/index.cjs.js"),d=require("../../components/textarea/index.cjs.js");let f=require("react");f=e.__toESM(f);let p=require("lucide-react"),m=require("react/jsx-runtime");function h({field:e,value:t,onChange:n}){let r=e=>{n?.(e)};return e.type===`custom`&&e.customComponent?(0,m.jsx)(`div`,{className:`space-y-2`,children:e.customComponent}):(0,m.jsxs)(`div`,{className:`space-y-2`,children:[(0,m.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,m.jsxs)(a.Label,{htmlFor:e.id,className:`text-sm font-medium`,children:[e.label,e.required&&(0,m.jsx)(`span`,{className:`text-destructive ml-1`,children:`*`})]}),e.type===`switch`&&(0,m.jsx)(l.Switch,{id:e.id,checked:t,onCheckedChange:r,disabled:e.disabled})]}),e.description&&e.type!==`switch`&&(0,m.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.description}),e.type===`switch`&&e.description&&(0,m.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.description}),e.type===`text`&&(0,m.jsx)(o.Input,{id:e.id,type:`text`,value:t||``,onChange:e=>r(e.target.value),placeholder:e.placeholder,disabled:e.disabled}),e.type===`email`&&(0,m.jsx)(o.Input,{id:e.id,type:`email`,value:t||``,onChange:e=>r(e.target.value),placeholder:e.placeholder,disabled:e.disabled}),e.type===`password`&&(0,m.jsx)(o.Input,{id:e.id,type:`password`,value:t||``,onChange:e=>r(e.target.value),placeholder:e.placeholder,disabled:e.disabled}),e.type===`textarea`&&(0,m.jsx)(d.Textarea,{id:e.id,value:t||``,onChange:e=>r(e.target.value),placeholder:e.placeholder,disabled:e.disabled,rows:3}),e.type===`select`&&e.options&&(0,m.jsxs)(s.Select,{value:t,onValueChange:r,disabled:e.disabled,children:[(0,m.jsx)(s.SelectTrigger,{id:e.id,children:(0,m.jsx)(s.SelectValue,{placeholder:e.placeholder||`Sélectionner...`})}),(0,m.jsx)(s.SelectContent,{children:e.options.map(e=>(0,m.jsx)(s.SelectItem,{value:e.value,children:e.label},e.value))})]})]})}function g({section:e,values:t,onChange:n}){return(0,m.jsxs)(i.Card,{children:[(0,m.jsx)(i.CardHeader,{children:(0,m.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.icon&&(0,m.jsx)(`span`,{className:`text-muted-foreground`,children:e.icon}),(0,m.jsxs)(`div`,{children:[(0,m.jsx)(i.CardTitle,{className:`text-base`,children:e.title}),e.description&&(0,m.jsx)(i.CardDescription,{children:e.description})]})]})}),(0,m.jsx)(i.CardContent,{className:`space-y-6`,children:e.fields.map((r,i)=>(0,m.jsxs)(f.Fragment,{children:[(0,m.jsx)(h,{field:r,value:t?.[r.id],onChange:e=>n?.(r.id,e)}),i<e.fields.length-1&&(0,m.jsx)(c.Separator,{className:`my-4`})]},r.id))})]})}function _({title:e=`Paramètres`,description:a=`Gérez les paramètres de votre compte et de l'application.`,tabs:o,sections:s,useTabs:c=!0,defaultTab:l,values:d={},onChange:h,onSave:_,saving:v=!1,showSaveButton:y=!0,showDeleteAccount:b=!1,onDeleteAccount:x,className:S}){let[C,w]=f.useState(d),[T,E]=f.useState(!1);f.useEffect(()=>{w(d)},[d]);let D=(e,t)=>{w(n=>({...n,[e]:t})),E(!0),h?.(e,t)},O=async()=>{await _?.(C),E(!1)},k=e=>(0,m.jsx)(`div`,{className:`space-y-6`,children:e.map(e=>(0,m.jsx)(g,{section:e,values:C,onChange:D},e.id))});return(0,m.jsxs)(`div`,{className:t.cn(`space-y-6`,S),children:[(0,m.jsxs)(`div`,{className:`flex flex-col gap-4 md:flex-row md:items-center md:justify-between`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`h1`,{className:`text-2xl font-bold tracking-tight`,children:e}),a&&(0,m.jsx)(`p`,{className:`text-muted-foreground mt-1`,children:a})]}),y&&_&&(0,m.jsxs)(r.Button,{onClick:O,disabled:v||!T,children:[v?(0,m.jsx)(p.Loader2,{className:`mr-2 h-4 w-4 animate-spin`}):(0,m.jsx)(p.Save,{className:`mr-2 h-4 w-4`}),`Enregistrer`]})]}),c&&o&&o.length>0?(0,m.jsxs)(u.Tabs,{defaultValue:l||o[0].id,className:`space-y-6`,children:[(0,m.jsx)(u.TabsList,{className:`grid w-full grid-cols-2 md:w-auto md:inline-flex`,children:o.map(e=>(0,m.jsxs)(u.TabsTrigger,{value:e.id,className:`gap-2`,children:[e.icon,e.label]},e.id))}),o.map(e=>(0,m.jsx)(u.TabsContent,{value:e.id,className:`space-y-6`,children:k(e.sections)},e.id))]}):s&&k(s),b&&x&&(0,m.jsxs)(i.Card,{className:`border-destructive`,children:[(0,m.jsxs)(i.CardHeader,{children:[(0,m.jsxs)(i.CardTitle,{className:`text-base text-destructive flex items-center gap-2`,children:[(0,m.jsx)(p.Trash2,{className:`h-4 w-4`}),`Zone dangereuse`]}),(0,m.jsx)(i.CardDescription,{children:`Actions irréversibles concernant votre compte.`})]}),(0,m.jsx)(i.CardContent,{children:(0,m.jsxs)(n.AlertDialog,{children:[(0,m.jsx)(n.AlertDialogTrigger,{asChild:!0,children:(0,m.jsxs)(r.Button,{variant:`destructive`,children:[(0,m.jsx)(p.Trash2,{className:`mr-2 h-4 w-4`}),`Supprimer mon compte`]})}),(0,m.jsxs)(n.AlertDialogContent,{children:[(0,m.jsxs)(n.AlertDialogHeader,{children:[(0,m.jsx)(n.AlertDialogTitle,{children:`Êtes-vous sûr ?`}),(0,m.jsx)(n.AlertDialogDescription,{children:`Cette action est irréversible. Toutes vos données seront définitivement supprimées et ne pourront pas être récupérées.`})]}),(0,m.jsxs)(n.AlertDialogFooter,{children:[(0,m.jsx)(n.AlertDialogCancel,{children:`Annuler`}),(0,m.jsx)(n.AlertDialogAction,{onClick:x,className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:`Supprimer définitivement`})]})]})]})})]})]})}var v=[{id:`profile`,label:`Profil`,icon:(0,m.jsx)(p.User,{className:`h-4 w-4`}),sections:[{id:`personal`,title:`Informations personnelles`,description:`Mettez à jour vos informations personnelles.`,icon:(0,m.jsx)(p.User,{className:`h-5 w-5`}),fields:[{id:`name`,label:`Nom complet`,type:`text`,placeholder:`Jean Dupont`,required:!0},{id:`email`,label:`Adresse email`,type:`email`,placeholder:`jean@exemple.com`,required:!0},{id:`bio`,label:`Bio`,type:`textarea`,placeholder:`Parlez-nous de vous...`}]}]},{id:`notifications`,label:`Notifications`,icon:(0,m.jsx)(p.Bell,{className:`h-4 w-4`}),sections:[{id:`email-notifs`,title:`Notifications par email`,description:`Gérez vos préférences de notification par email.`,icon:(0,m.jsx)(p.Mail,{className:`h-5 w-5`}),fields:[{id:`notif-marketing`,label:`Marketing`,description:`Recevoir des emails marketing et promotionnels.`,type:`switch`},{id:`notif-security`,label:`Sécurité`,description:`Recevoir des alertes de sécurité importantes.`,type:`switch`},{id:`notif-updates`,label:`Mises à jour`,description:`Recevoir les mises à jour de produit.`,type:`switch`}]}]},{id:`security`,label:`Sécurité`,icon:(0,m.jsx)(p.Shield,{className:`h-4 w-4`}),sections:[{id:`password`,title:`Mot de passe`,description:`Changez votre mot de passe.`,icon:(0,m.jsx)(p.Lock,{className:`h-5 w-5`}),fields:[{id:`current-password`,label:`Mot de passe actuel`,type:`password`,placeholder:`••••••••`},{id:`new-password`,label:`Nouveau mot de passe`,type:`password`,placeholder:`••••••••`},{id:`confirm-password`,label:`Confirmer le mot de passe`,type:`password`,placeholder:`••••••••`}]},{id:`two-factor`,title:`Authentification à deux facteurs`,description:`Ajoutez une couche de sécurité supplémentaire.`,icon:(0,m.jsx)(p.Smartphone,{className:`h-5 w-5`}),fields:[{id:`2fa-enabled`,label:`Activer la 2FA`,description:`Utilisez une application d'authentification.`,type:`switch`}]}]},{id:`preferences`,label:`Préférences`,icon:(0,m.jsx)(p.Palette,{className:`h-4 w-4`}),sections:[{id:`appearance`,title:`Apparence`,description:`Personnalisez l'apparence de l'application.`,icon:(0,m.jsx)(p.Palette,{className:`h-5 w-5`}),fields:[{id:`theme`,label:`Thème`,type:`select`,options:[{value:`light`,label:`Clair`},{value:`dark`,label:`Sombre`},{value:`system`,label:`Système`}]},{id:`language`,label:`Langue`,type:`select`,options:[{value:`fr`,label:`Français`},{value:`en`,label:`English`},{value:`es`,label:`Español`}]}]}]}];exports.WakaSettings=_,exports.default=_,exports.defaultSettingsTabs=v;
@@ -345,4 +345,4 @@ var K = [
345
345
  }
346
346
  ];
347
347
  //#endregion
348
- export { G as default, K as defaultSettingsTabs };
348
+ export { G as WakaSettings, G as default, K as defaultSettingsTabs };
@@ -1 +1 @@
1
- "use client";"use client";const e=require(`../../_virtual/_rolldown/runtime.cjs.js`),t=require(`../../utils/cn.cjs.js`),n=require(`../../components/avatar/index.cjs.js`),r=require(`../../components/button/index.cjs.js`),i=require(`../../components/collapsible/index.cjs.js`),a=require(`../../components/dropdown-menu/index.cjs.js`),o=require(`../../components/scroll-area/index.cjs.js`),s=require(`../../components/sheet/index.cjs.js`);let c=require(`react`);c=e.__toESM(c);let l=require(`lucide-react`),u=require(`react/jsx-runtime`);var d=c.createContext(null);function f(){let e=c.useContext(d);if(!e)throw Error(`Sidebar components must be used within WakaSidebar`);return e}function p({config:e}){let{LinkComponent:t}=f(),n=e.component?e.component:(0,u.jsxs)(`div`,{className:`flex items-center gap-3`,children:[e.src&&(0,u.jsx)(`img`,{src:e.src,alt:e.alt||`Logo`,className:`h-8 w-auto object-contain`}),e.title&&(0,u.jsx)(`span`,{className:`text-lg font-bold tracking-wide`,children:e.title})]});return e.href?t?(0,u.jsx)(t,{href:e.href,className:`block`,onClick:e.onClick,children:n}):(0,u.jsx)(`a`,{href:e.href,className:`block`,onClick:e.onClick,children:n}):e.onClick?(0,u.jsx)(`button`,{type:`button`,onClick:e.onClick,className:`block text-left`,children:n}):(0,u.jsx)(`div`,{children:n})}function m({item:e,isChild:n=!1,renderItem:r}){let{activeId:a,setActiveId:o,expandedIds:s,toggleExpanded:c,isMobile:d,closeOnNavigate:p,onClose:h,LinkComponent:g}=f(),_=e.children&&e.children.length>0,v=s.includes(e.id),y=a===e.id||e.active,b=()=>{e.disabled||(_?c(e.id):(o(e.id),e.onClick?.(),d&&p&&h()))};if(r)return(0,u.jsx)(u.Fragment,{children:r(e,n)});let x=(0,u.jsxs)(`div`,{className:t.cn(`flex items-center gap-3 rounded-lg px-3 py-2.5 text-sm font-medium transition-all duration-200`,`hover:bg-white/10`,y&&!_&&`bg-sidebar-active text-sidebar-active-foreground`,n&&`ml-6 text-[13px]`,e.disabled&&`opacity-50 cursor-not-allowed`),children:[e.icon&&(0,u.jsx)(`span`,{className:t.cn(`flex-shrink-0`,n?`h-4 w-4`:`h-5 w-5`),children:e.icon}),(0,u.jsx)(`span`,{className:`flex-1 truncate`,children:e.label}),e.badge!==void 0&&(0,u.jsx)(`span`,{className:`ml-auto flex h-5 min-w-[20px] items-center justify-center rounded-full bg-primary px-1.5 text-[10px] font-semibold text-primary-foreground`,children:e.badge}),_&&(0,u.jsx)(l.ChevronDown,{className:t.cn(`h-4 w-4 transition-transform duration-200`,v&&`rotate-180`)})]});if(_)return(0,u.jsxs)(i.Collapsible,{open:v,onOpenChange:()=>c(e.id),children:[(0,u.jsx)(i.CollapsibleTrigger,{asChild:!0,children:(0,u.jsx)(`button`,{type:`button`,className:`w-full text-left`,disabled:e.disabled,children:x})}),(0,u.jsx)(i.CollapsibleContent,{className:`space-y-1 pt-1`,children:e.children?.map(e=>(0,u.jsx)(m,{item:e,isChild:!0,renderItem:r},e.id))})]});if(e.href){let t={href:e.href,className:`block`,onClick:t=>{if(e.disabled){t.preventDefault();return}b()}};return g?(0,u.jsx)(g,{...t,children:x}):(0,u.jsx)(`a`,{...t,children:x})}return(0,u.jsx)(`button`,{type:`button`,className:`w-full text-left`,disabled:e.disabled,onClick:b,children:x})}function h({config:e}){let{LinkComponent:r}=f(),i=e.initials||e.name.split(` `).map(e=>e[0]).join(``).slice(0,2).toUpperCase(),o=[{id:`profile`,label:`Profil`,icon:(0,u.jsx)(l.User,{className:`h-4 w-4`})},{id:`settings`,label:`Paramètres`,icon:(0,u.jsx)(l.Settings,{className:`h-4 w-4`})},{id:`logout`,label:`Déconnexion`,icon:(0,u.jsx)(l.LogOut,{className:`h-4 w-4`}),variant:`destructive`}],s=e.actions??o;return(0,u.jsxs)(a.DropdownMenu,{children:[(0,u.jsx)(a.DropdownMenuTrigger,{asChild:!0,children:(0,u.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-3 rounded-lg p-2 text-left transition-colors hover:bg-white/10`,children:[(0,u.jsxs)(n.Avatar,{className:`h-10 w-10 border-2 border-sidebar-active`,children:[(0,u.jsx)(n.AvatarImage,{src:e.avatarUrl,alt:e.name}),(0,u.jsx)(n.AvatarFallback,{className:`bg-sidebar-active text-sidebar-active-foreground text-sm font-medium`,children:i})]}),(0,u.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,u.jsx)(`p`,{className:`text-sm font-medium truncate`,children:e.name}),e.email&&(0,u.jsx)(`p`,{className:`text-xs text-sidebar-foreground/70 truncate`,children:e.email})]}),(0,u.jsx)(l.ChevronDown,{className:`h-4 w-4 flex-shrink-0 opacity-70`})]})}),(0,u.jsx)(a.DropdownMenuContent,{align:`end`,className:`w-56`,children:s.map((e,n)=>(0,u.jsxs)(c.Fragment,{children:[e.variant===`destructive`&&n>0&&(0,u.jsx)(a.DropdownMenuSeparator,{}),(0,u.jsx)(a.DropdownMenuItem,{onClick:e.onClick,className:t.cn(e.variant===`destructive`&&`text-destructive focus:text-destructive`),asChild:!!e.href,children:e.href?r?(0,u.jsxs)(r,{href:e.href,className:`flex items-center gap-2`,children:[e.icon,e.label]}):(0,u.jsxs)(`a`,{href:e.href,className:`flex items-center gap-2`,children:[e.icon,e.label]}):(0,u.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e.icon,e.label]})})]},e.id))})]})}function g({logo:e,menu:t,user:n,userPosition:r=`bottom`,header:i,footer:a,renderItem:s}){return(0,u.jsxs)(`div`,{className:`flex h-full flex-col`,children:[e&&(0,u.jsx)(`div`,{className:`flex-shrink-0 p-4 pb-2`,children:(0,u.jsx)(p,{config:e})}),i&&(0,u.jsx)(`div`,{className:`flex-shrink-0 px-4 py-2`,children:i}),n&&r===`top`&&(0,u.jsx)(`div`,{className:`flex-shrink-0 px-3 py-2 border-b border-white/10`,children:(0,u.jsx)(h,{config:n})}),(0,u.jsx)(o.ScrollArea,{className:`flex-1 px-3 py-4`,children:(0,u.jsx)(`nav`,{className:`space-y-1`,children:t.map(e=>(0,u.jsx)(m,{item:e,renderItem:s},e.id))})}),a&&(0,u.jsx)(`div`,{className:`flex-shrink-0 px-4 py-2 border-t border-white/10`,children:a}),n&&r===`bottom`&&(0,u.jsx)(`div`,{className:`flex-shrink-0 p-3 border-t border-white/10`,children:(0,u.jsx)(h,{config:n})})]})}function _({logo:e,menu:n,user:i,width:a=260,mobileBreakpoint:o=768,open:f,onOpenChange:p,className:m,contentClassName:h,backgroundColor:_,textColor:v,activeColor:y,hoverColor:b,userPosition:x=`bottom`,showHamburger:S=!0,hamburgerPosition:C=`left`,renderItem:w,footer:T,header:E,position:D=`fixed`,LinkComponent:O}){let[k,A]=c.useState(!1),j=f!==void 0,M=j?f:k,N=j?p:A,[P,F]=c.useState(!1);c.useEffect(()=>{let e=()=>{F(window.innerWidth<o)};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[o]);let[I,L]=c.useState(()=>{let e=t=>{for(let n of t){if(n.active)return n.id;if(n.children){let t=e(n.children);if(t)return t}}return null};return e(n)}),[R,z]=c.useState(()=>{let e=(t,n=[])=>{for(let r of t){if(r.active)return n;if(r.children){let t=e(r.children,[...n,r.id]);if(t.length>n.length)return t}}return[]};return e(n)}),B={activeId:I,setActiveId:L,expandedIds:R,toggleExpanded:c.useCallback(e=>{z(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),isMobile:P,closeOnNavigate:!0,onClose:()=>N(!1),LinkComponent:O},V={"--sidebar-bg":_||`hsl(var(--sidebar-background, var(--card)))`,"--sidebar-text":v||`hsl(var(--sidebar-foreground, var(--muted-foreground)))`,"--sidebar-active":y||`hsl(var(--sidebar-primary, var(--primary)))`,"--sidebar-active-foreground":`hsl(var(--sidebar-primary-foreground, var(--primary-foreground)))`,"--sidebar-hover":b||`hsl(var(--sidebar-accent, var(--accent)))`},H=t.cn(`bg-[var(--sidebar-bg)] text-[var(--sidebar-text)]`,`[&_.bg-sidebar-active]:bg-[var(--sidebar-active)]`,`[&_.text-sidebar-active-foreground]:text-[var(--sidebar-active-foreground)]`,`[&_.border-sidebar-active]:border-[var(--sidebar-active)]`,h),U=(0,u.jsx)(d.Provider,{value:B,children:(0,u.jsx)(`div`,{className:t.cn(`h-full`,H),style:V,children:(0,u.jsx)(g,{logo:e,menu:n,user:i,userPosition:x,header:E,footer:T,renderItem:w})})});return(0,u.jsxs)(u.Fragment,{children:[S&&P&&(0,u.jsxs)(r.Button,{variant:`ghost`,size:`icon`,className:t.cn(`fixed top-3 z-50`,C===`left`?`left-3`:`right-3`),onClick:()=>N(!0),children:[(0,u.jsx)(l.Menu,{className:`h-6 w-6`}),(0,u.jsx)(`span`,{className:`sr-only`,children:`Ouvrir le menu`})]}),!P&&(0,u.jsx)(`aside`,{className:t.cn(D===`fixed`?`fixed left-0 top-0 h-screen z-40`:`relative h-full`,m),style:{width:a},children:U}),P&&(0,u.jsx)(s.Sheet,{open:M,onOpenChange:N,children:(0,u.jsxs)(s.SheetContent,{side:`left`,className:t.cn(`w-[280px] p-0 border-0`,m),style:V,"aria-describedby":`sidebar-description`,children:[(0,u.jsx)(s.SheetTitle,{className:`sr-only`,children:`Menu de navigation`}),(0,u.jsx)(s.SheetDescription,{id:`sidebar-description`,className:`sr-only`,children:`Menu principal de l'application`}),U]})})]})}function v(){let[e,t]=c.useState(!1);return{isOpen:e,setIsOpen:t,open:c.useCallback(()=>t(!0),[]),close:c.useCallback(()=>t(!1),[]),toggle:c.useCallback(()=>t(e=>!e),[])}}function y({sidebar:e,children:n,sidebarWidth:r=260,className:i,contentClassName:a}){let[o,s]=c.useState(!1),l=e.mobileBreakpoint||768;return c.useEffect(()=>{let e=()=>s(window.innerWidth<l);return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[l]),(0,u.jsxs)(`div`,{className:t.cn(`min-h-screen bg-background`,i),children:[(0,u.jsx)(_,{...e,width:r}),(0,u.jsx)(`main`,{className:t.cn(`min-h-screen transition-all duration-300`,a),style:{marginLeft:o?0:r},children:n})]})}exports.SidebarLayout=y,exports.default=_,exports.useSidebar=v;
1
+ "use client";"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../utils/cn.cjs.js"),n=require("../../components/avatar/index.cjs.js"),r=require("../../components/button/index.cjs.js"),i=require("../../components/collapsible/index.cjs.js"),a=require("../../components/dropdown-menu/index.cjs.js"),o=require("../../components/scroll-area/index.cjs.js"),s=require("../../components/sheet/index.cjs.js");let c=require("react");c=e.__toESM(c);let l=require("lucide-react"),u=require("react/jsx-runtime");var d=c.createContext(null);function f(){let e=c.useContext(d);if(!e)throw Error(`Sidebar components must be used within WakaSidebar`);return e}function p({config:e}){let{LinkComponent:t}=f(),n=e.component?e.component:(0,u.jsxs)(`div`,{className:`flex items-center gap-3`,children:[e.src&&(0,u.jsx)(`img`,{src:e.src,alt:e.alt||`Logo`,className:`h-8 w-auto object-contain`}),e.title&&(0,u.jsx)(`span`,{className:`text-lg font-bold tracking-wide`,children:e.title})]});return e.href?t?(0,u.jsx)(t,{href:e.href,className:`block`,onClick:e.onClick,children:n}):(0,u.jsx)(`a`,{href:e.href,className:`block`,onClick:e.onClick,children:n}):e.onClick?(0,u.jsx)(`button`,{type:`button`,onClick:e.onClick,className:`block text-left`,children:n}):(0,u.jsx)(`div`,{children:n})}function m({item:e,isChild:n=!1,renderItem:r}){let{activeId:a,setActiveId:o,expandedIds:s,toggleExpanded:c,isMobile:d,closeOnNavigate:p,onClose:h,LinkComponent:g}=f(),_=e.children&&e.children.length>0,v=s.includes(e.id),y=a===e.id||e.active,b=()=>{e.disabled||(_?c(e.id):(o(e.id),e.onClick?.(),d&&p&&h()))};if(r)return(0,u.jsx)(u.Fragment,{children:r(e,n)});let x=(0,u.jsxs)(`div`,{className:t.cn(`flex items-center gap-3 rounded-lg px-3 py-2.5 text-sm font-medium transition-all duration-200`,`hover:bg-white/10`,y&&!_&&`bg-sidebar-active text-sidebar-active-foreground`,n&&`ml-6 text-[13px]`,e.disabled&&`opacity-50 cursor-not-allowed`),children:[e.icon&&(0,u.jsx)(`span`,{className:t.cn(`flex-shrink-0`,n?`h-4 w-4`:`h-5 w-5`),children:e.icon}),(0,u.jsx)(`span`,{className:`flex-1 truncate`,children:e.label}),e.badge!==void 0&&(0,u.jsx)(`span`,{className:`ml-auto flex h-5 min-w-[20px] items-center justify-center rounded-full bg-primary px-1.5 text-[10px] font-semibold text-primary-foreground`,children:e.badge}),_&&(0,u.jsx)(l.ChevronDown,{className:t.cn(`h-4 w-4 transition-transform duration-200`,v&&`rotate-180`)})]});if(_)return(0,u.jsxs)(i.Collapsible,{open:v,onOpenChange:()=>c(e.id),children:[(0,u.jsx)(i.CollapsibleTrigger,{asChild:!0,children:(0,u.jsx)(`button`,{type:`button`,className:`w-full text-left`,disabled:e.disabled,children:x})}),(0,u.jsx)(i.CollapsibleContent,{className:`space-y-1 pt-1`,children:e.children?.map(e=>(0,u.jsx)(m,{item:e,isChild:!0,renderItem:r},e.id))})]});if(e.href){let t={href:e.href,className:`block`,onClick:t=>{if(e.disabled){t.preventDefault();return}b()}};return g?(0,u.jsx)(g,{...t,children:x}):(0,u.jsx)(`a`,{...t,children:x})}return(0,u.jsx)(`button`,{type:`button`,className:`w-full text-left`,disabled:e.disabled,onClick:b,children:x})}function h({config:e}){let{LinkComponent:r}=f(),i=e.initials||e.name.split(` `).map(e=>e[0]).join(``).slice(0,2).toUpperCase(),o=[{id:`profile`,label:`Profil`,icon:(0,u.jsx)(l.User,{className:`h-4 w-4`})},{id:`settings`,label:`Paramètres`,icon:(0,u.jsx)(l.Settings,{className:`h-4 w-4`})},{id:`logout`,label:`Déconnexion`,icon:(0,u.jsx)(l.LogOut,{className:`h-4 w-4`}),variant:`destructive`}],s=e.actions??o;return(0,u.jsxs)(a.DropdownMenu,{children:[(0,u.jsx)(a.DropdownMenuTrigger,{asChild:!0,children:(0,u.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-3 rounded-lg p-2 text-left transition-colors hover:bg-white/10`,children:[(0,u.jsxs)(n.Avatar,{className:`h-10 w-10 border-2 border-sidebar-active`,children:[(0,u.jsx)(n.AvatarImage,{src:e.avatarUrl,alt:e.name}),(0,u.jsx)(n.AvatarFallback,{className:`bg-sidebar-active text-sidebar-active-foreground text-sm font-medium`,children:i})]}),(0,u.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,u.jsx)(`p`,{className:`text-sm font-medium truncate`,children:e.name}),e.email&&(0,u.jsx)(`p`,{className:`text-xs text-sidebar-foreground/70 truncate`,children:e.email})]}),(0,u.jsx)(l.ChevronDown,{className:`h-4 w-4 flex-shrink-0 opacity-70`})]})}),(0,u.jsx)(a.DropdownMenuContent,{align:`end`,className:`w-56`,children:s.map((e,n)=>(0,u.jsxs)(c.Fragment,{children:[e.variant===`destructive`&&n>0&&(0,u.jsx)(a.DropdownMenuSeparator,{}),(0,u.jsx)(a.DropdownMenuItem,{onClick:e.onClick,className:t.cn(e.variant===`destructive`&&`text-destructive focus:text-destructive`),asChild:!!e.href,children:e.href?r?(0,u.jsxs)(r,{href:e.href,className:`flex items-center gap-2`,children:[e.icon,e.label]}):(0,u.jsxs)(`a`,{href:e.href,className:`flex items-center gap-2`,children:[e.icon,e.label]}):(0,u.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e.icon,e.label]})})]},e.id))})]})}function g({logo:e,menu:t,user:n,userPosition:r=`bottom`,header:i,footer:a,renderItem:s}){return(0,u.jsxs)(`div`,{className:`flex h-full flex-col`,children:[e&&(0,u.jsx)(`div`,{className:`flex-shrink-0 p-4 pb-2`,children:(0,u.jsx)(p,{config:e})}),i&&(0,u.jsx)(`div`,{className:`flex-shrink-0 px-4 py-2`,children:i}),n&&r===`top`&&(0,u.jsx)(`div`,{className:`flex-shrink-0 px-3 py-2 border-b border-white/10`,children:(0,u.jsx)(h,{config:n})}),(0,u.jsx)(o.ScrollArea,{className:`flex-1 px-3 py-4`,children:(0,u.jsx)(`nav`,{className:`space-y-1`,children:t.map(e=>(0,u.jsx)(m,{item:e,renderItem:s},e.id))})}),a&&(0,u.jsx)(`div`,{className:`flex-shrink-0 px-4 py-2 border-t border-white/10`,children:a}),n&&r===`bottom`&&(0,u.jsx)(`div`,{className:`flex-shrink-0 p-3 border-t border-white/10`,children:(0,u.jsx)(h,{config:n})})]})}function _({logo:e,menu:n,user:i,width:a=260,mobileBreakpoint:o=768,open:f,onOpenChange:p,className:m,contentClassName:h,backgroundColor:_,textColor:v,activeColor:y,hoverColor:b,userPosition:x=`bottom`,showHamburger:S=!0,hamburgerPosition:C=`left`,renderItem:w,footer:T,header:E,position:D=`fixed`,LinkComponent:O}){let[k,A]=c.useState(!1),j=f!==void 0,M=j?f:k,N=j?p:A,[P,F]=c.useState(!1);c.useEffect(()=>{let e=()=>{F(window.innerWidth<o)};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[o]);let[I,L]=c.useState(()=>{let e=t=>{for(let n of t){if(n.active)return n.id;if(n.children){let t=e(n.children);if(t)return t}}return null};return e(n)}),[R,z]=c.useState(()=>{let e=(t,n=[])=>{for(let r of t){if(r.active)return n;if(r.children){let t=e(r.children,[...n,r.id]);if(t.length>n.length)return t}}return[]};return e(n)}),B={activeId:I,setActiveId:L,expandedIds:R,toggleExpanded:c.useCallback(e=>{z(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),isMobile:P,closeOnNavigate:!0,onClose:()=>N(!1),LinkComponent:O},V={"--sidebar-bg":_||`hsl(var(--sidebar-background, var(--card)))`,"--sidebar-text":v||`hsl(var(--sidebar-foreground, var(--muted-foreground)))`,"--sidebar-active":y||`hsl(var(--sidebar-primary, var(--primary)))`,"--sidebar-active-foreground":`hsl(var(--sidebar-primary-foreground, var(--primary-foreground)))`,"--sidebar-hover":b||`hsl(var(--sidebar-accent, var(--accent)))`},H=t.cn(`bg-[var(--sidebar-bg)] text-[var(--sidebar-text)]`,`[&_.bg-sidebar-active]:bg-[var(--sidebar-active)]`,`[&_.text-sidebar-active-foreground]:text-[var(--sidebar-active-foreground)]`,`[&_.border-sidebar-active]:border-[var(--sidebar-active)]`,h),U=(0,u.jsx)(d.Provider,{value:B,children:(0,u.jsx)(`div`,{className:t.cn(`h-full`,H),style:V,children:(0,u.jsx)(g,{logo:e,menu:n,user:i,userPosition:x,header:E,footer:T,renderItem:w})})});return(0,u.jsxs)(u.Fragment,{children:[S&&P&&(0,u.jsxs)(r.Button,{variant:`ghost`,size:`icon`,className:t.cn(`fixed top-3 z-50`,C===`left`?`left-3`:`right-3`),onClick:()=>N(!0),children:[(0,u.jsx)(l.Menu,{className:`h-6 w-6`}),(0,u.jsx)(`span`,{className:`sr-only`,children:`Ouvrir le menu`})]}),!P&&(0,u.jsx)(`aside`,{className:t.cn(D===`fixed`?`fixed left-0 top-0 h-screen z-40`:`relative h-full`,m),style:{width:a},children:U}),P&&(0,u.jsx)(s.Sheet,{open:M,onOpenChange:N,children:(0,u.jsxs)(s.SheetContent,{side:`left`,className:t.cn(`w-[280px] p-0 border-0`,m),style:V,"aria-describedby":`sidebar-description`,children:[(0,u.jsx)(s.SheetTitle,{className:`sr-only`,children:`Menu de navigation`}),(0,u.jsx)(s.SheetDescription,{id:`sidebar-description`,className:`sr-only`,children:`Menu principal de l'application`}),U]})})]})}function v(){let[e,t]=c.useState(!1);return{isOpen:e,setIsOpen:t,open:c.useCallback(()=>t(!0),[]),close:c.useCallback(()=>t(!1),[]),toggle:c.useCallback(()=>t(e=>!e),[])}}function y({sidebar:e,children:n,sidebarWidth:r=260,className:i,contentClassName:a}){let[o,s]=c.useState(!1),l=e.mobileBreakpoint||768;return c.useEffect(()=>{let e=()=>s(window.innerWidth<l);return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[l]),(0,u.jsxs)(`div`,{className:t.cn(`min-h-screen bg-background`,i),children:[(0,u.jsx)(_,{...e,width:r}),(0,u.jsx)(`main`,{className:t.cn(`min-h-screen transition-all duration-300`,a),style:{marginLeft:o?0:r},children:n})]})}exports.SidebarLayout=y,exports.WakaSidebar=_,exports.default=_,exports.useSidebar=v;
@@ -345,4 +345,4 @@ function F({ sidebar: t, children: n, sidebarWidth: r = 260, className: i, conte
345
345
  });
346
346
  }
347
347
  //#endregion
348
- export { F as SidebarLayout, N as default, P as useSidebar };
348
+ export { F as SidebarLayout, N as WakaSidebar, N as default, P as useSidebar };
@@ -1 +1 @@
1
- "use client";"use client";require(`../../_virtual/_rolldown/runtime.cjs.js`);const e=require(`../../utils/cn.cjs.js`),t=require(`../../components/badge/index.cjs.js`),n=require(`../../components/button/index.cjs.js`),r=require(`../../components/card/index.cjs.js`),i=require(`../../components/scroll-area/index.cjs.js`);let a=require(`lucide-react`),o=require(`react/jsx-runtime`);var s=[{name:`main.cvd`,version:`62`,signatureCount:6647427,size:162.5*1024*1024,lastUpdated:new Date(`2024-12-15T10:30:00`),buildTime:new Date(`2024-12-15T08:00:00`)},{name:`daily.cvd`,version:`27458`,signatureCount:2145789,size:89.3*1024*1024,lastUpdated:new Date(`2025-01-15T14:20:00`),buildTime:new Date(`2025-01-15T12:00:00`)},{name:`bytecode.cvd`,version:`334`,signatureCount:52438,size:2.8*1024*1024,lastUpdated:new Date(`2025-01-10T09:15:00`),buildTime:new Date(`2025-01-10T06:00:00`)}],c=[{id:`upd-1`,date:new Date(`2025-01-15T14:20:00`),fromVersion:`27457`,toVersion:`27458`,newSignatures:1247,removedSignatures:89,duration:45,status:`success`,source:`daily.cvd`},{id:`upd-2`,date:new Date(`2025-01-14T14:15:00`),fromVersion:`27456`,toVersion:`27457`,newSignatures:2134,removedSignatures:156,duration:52,status:`success`,source:`daily.cvd`},{id:`upd-3`,date:new Date(`2025-01-13T14:10:00`),fromVersion:`27455`,toVersion:`27456`,newSignatures:1876,removedSignatures:203,duration:48,status:`success`,source:`daily.cvd`},{id:`upd-4`,date:new Date(`2025-01-12T14:05:00`),fromVersion:`27454`,toVersion:`27455`,newSignatures:0,removedSignatures:0,duration:12,status:`failed`,source:`daily.cvd`},{id:`upd-5`,date:new Date(`2025-01-11T14:00:00`),fromVersion:`27453`,toVersion:`27454`,newSignatures:3245,removedSignatures:178,duration:67,status:`success`,source:`daily.cvd`}],l={updateFrequency:24,mirror:`database.clamav.net`,lastCheck:new Date(`2025-01-15T14:20:00`),checksToday:12,proxyEnabled:!1},u=e=>e<1024?e+` B`:e<1024*1024?(e/1024).toFixed(2)+` KB`:(e/(1024*1024)).toFixed(2)+` MB`,d=e=>new Intl.DateTimeFormat(`fr-FR`,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`}).format(e),f=e=>new Intl.NumberFormat(`fr-FR`).format(e),p=e=>{switch(e){case`success`:return(0,o.jsx)(a.CheckCircle2,{className:`size-4 text-green-600 dark:text-green-400`});case`failed`:return(0,o.jsx)(a.XCircle,{className:`size-4 text-red-600 dark:text-red-400`});case`in_progress`:return(0,o.jsx)(a.Loader2,{className:`size-4 text-blue-600 dark:text-blue-400 animate-spin`});case`scheduled`:return(0,o.jsx)(a.Clock,{className:`size-4 text-amber-600 dark:text-amber-400`})}},m=e=>{switch(e){case`success`:return(0,o.jsx)(t.Badge,{variant:`secondary`,className:`bg-green-500/10 text-green-600 border-green-500/20`,children:`Réussie`});case`failed`:return(0,o.jsx)(t.Badge,{variant:`destructive`,children:`Échouée`});case`in_progress`:return(0,o.jsx)(t.Badge,{variant:`default`,children:`En cours`});case`scheduled`:return(0,o.jsx)(t.Badge,{variant:`secondary`,className:`bg-yellow-500/10 text-yellow-600 border-yellow-500/20`,children:`Planifiée`})}};function h({databases:h=s,updates:g=c,freshclamConfig:_=l,totalSignatures:v=h.reduce((e,t)=>e+t.signatureCount,0),isUpdating:y=!1,onUpdateNow:b,onScheduleUpdate:x,onViewChangelog:S,className:C}){let w=g[0];return(0,o.jsxs)(`div`,{className:e.cn(`space-y-6`,C),children:[(0,o.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2 lg:grid-cols-4`,children:[(0,o.jsx)(r.Card,{className:`p-6`,children:(0,o.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm font-medium text-muted-foreground`,children:`Version DB`}),(0,o.jsx)(`h3`,{className:`text-2xl font-bold`,children:w?.toVersion||`N/A`})]}),(0,o.jsx)(a.Database,{className:`size-8 text-blue-600 dark:text-blue-400`})]})}),(0,o.jsx)(r.Card,{className:`p-6`,children:(0,o.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm font-medium text-muted-foreground`,children:`Total Signatures`}),(0,o.jsx)(`h3`,{className:`text-2xl font-bold`,children:f(v)})]}),(0,o.jsx)(a.FileText,{className:`size-8 text-purple-600 dark:text-purple-400`})]})}),(0,o.jsx)(r.Card,{className:`p-6`,children:(0,o.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm font-medium text-muted-foreground`,children:`Dernière MAJ`}),(0,o.jsx)(`h3`,{className:`text-sm font-bold`,children:w?d(w.date):`N/A`})]}),(0,o.jsx)(a.Clock,{className:`size-8 text-green-600 dark:text-green-400`})]})}),(0,o.jsx)(r.Card,{className:`p-6`,children:(0,o.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm font-medium text-muted-foreground`,children:`Taille Totale`}),(0,o.jsx)(`h3`,{className:`text-2xl font-bold`,children:u(h.reduce((e,t)=>e+t.size,0))})]}),(0,o.jsx)(a.HardDrive,{className:`size-8 text-amber-600 dark:text-amber-400`})]})})]}),(0,o.jsxs)(`div`,{className:`grid gap-6 lg:grid-cols-2`,children:[(0,o.jsxs)(r.Card,{className:`p-6`,children:[(0,o.jsxs)(`div`,{className:`mb-4 flex items-center justify-between`,children:[(0,o.jsx)(`h3`,{className:`text-lg font-semibold`,children:`Bases de données`}),(0,o.jsxs)(t.Badge,{variant:`outline`,children:[h.length,` bases`]})]}),(0,o.jsx)(`div`,{className:`space-y-4`,children:h.map(e=>(0,o.jsxs)(`div`,{className:`rounded-lg border border-border bg-muted/50 p-4 space-y-2`,children:[(0,o.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,o.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(a.Database,{className:`size-4 text-muted-foreground`}),(0,o.jsx)(`span`,{className:`font-medium`,children:e.name})]}),(0,o.jsxs)(t.Badge,{variant:`secondary`,children:[`v`,e.version]})]}),(0,o.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-sm`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-muted-foreground`,children:`Signatures`}),(0,o.jsx)(`p`,{className:`font-medium`,children:f(e.signatureCount)})]}),(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-muted-foreground`,children:`Taille`}),(0,o.jsx)(`p`,{className:`font-medium`,children:u(e.size)})]}),(0,o.jsxs)(`div`,{className:`col-span-2`,children:[(0,o.jsx)(`p`,{className:`text-muted-foreground`,children:`Dernière mise à jour`}),(0,o.jsx)(`p`,{className:`font-medium`,children:d(e.lastUpdated)})]})]})]},e.name))})]}),(0,o.jsxs)(r.Card,{className:`p-6`,children:[(0,o.jsxs)(`div`,{className:`mb-4 flex items-center justify-between`,children:[(0,o.jsx)(`h3`,{className:`text-lg font-semibold`,children:`Configuration Freshclam`}),(0,o.jsxs)(n.Button,{size:`sm`,variant:`outline`,onClick:()=>x?.(_.updateFrequency),children:[(0,o.jsx)(a.Calendar,{className:`mr-2 size-4`}),`Planifier`]})]}),(0,o.jsxs)(`div`,{className:`space-y-4`,children:[(0,o.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-border bg-muted/50 p-4`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Fréquence de MAJ`}),(0,o.jsxs)(`p`,{className:`text-lg font-semibold`,children:[`Toutes les `,_.updateFrequency,`h`]})]}),(0,o.jsx)(a.Clock,{className:`size-6 text-blue-600 dark:text-blue-400`})]}),(0,o.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-border bg-muted/50 p-4`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Mirror utilisé`}),(0,o.jsx)(`p`,{className:`text-lg font-semibold`,children:_.mirror})]}),(0,o.jsx)(a.Globe,{className:`size-6 text-purple-600 dark:text-purple-400`})]}),(0,o.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-border bg-muted/50 p-4`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Dernier check`}),(0,o.jsx)(`p`,{className:`text-lg font-semibold`,children:d(_.lastCheck)})]}),(0,o.jsx)(a.RefreshCw,{className:`size-6 text-green-600 dark:text-green-400`})]}),(0,o.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-border bg-muted/50 p-4`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Checks aujourd'hui`}),(0,o.jsx)(`p`,{className:`text-lg font-semibold`,children:_.checksToday})]}),(0,o.jsx)(a.AlertCircle,{className:`size-6 text-amber-600 dark:text-amber-400`})]}),_.proxyEnabled&&(0,o.jsx)(`div`,{className:`rounded-lg border border-amber-200 bg-amber-50 dark:border-amber-800 dark:bg-amber-950/50 p-3`,children:(0,o.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-amber-800 dark:text-amber-200`,children:[(0,o.jsx)(a.AlertCircle,{className:`size-4`}),(0,o.jsx)(`span`,{children:`Proxy activé`})]})}),(0,o.jsx)(n.Button,{className:`w-full`,onClick:b,disabled:y,children:y?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.Loader2,{className:`mr-2 size-4 animate-spin`}),`Mise à jour en cours...`]}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.Download,{className:`mr-2 size-4`}),`Mettre à jour maintenant`]})})]})]})]}),(0,o.jsxs)(r.Card,{className:`p-6`,children:[(0,o.jsxs)(`div`,{className:`mb-4 flex items-center justify-between`,children:[(0,o.jsx)(`h3`,{className:`text-lg font-semibold`,children:`Historique des mises à jour`}),(0,o.jsxs)(t.Badge,{variant:`outline`,children:[g.length,` mises à jour`]})]}),(0,o.jsx)(i.ScrollArea,{className:`h-[400px]`,children:(0,o.jsx)(`div`,{className:`space-y-3`,children:g.map((e,t)=>(0,o.jsxs)(`div`,{className:`relative rounded-lg border border-border bg-muted/50 p-4`,children:[t<g.length-1&&(0,o.jsx)(`div`,{className:`absolute left-6 top-12 h-full w-px bg-border`}),(0,o.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,o.jsx)(`div`,{className:`flex size-8 shrink-0 items-center justify-center rounded-full border border-border bg-background`,children:p(e.status)}),(0,o.jsxs)(`div`,{className:`flex-1 space-y-2`,children:[(0,o.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsxs)(`p`,{className:`font-medium`,children:[e.source,` - v`,e.fromVersion,` → v`,e.toVersion]}),(0,o.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:d(e.date)})]}),m(e.status)]}),e.status===`success`&&(0,o.jsxs)(`div`,{className:`grid grid-cols-3 gap-3 text-sm`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-muted-foreground`,children:`Ajoutées`}),(0,o.jsxs)(`p`,{className:`font-medium text-green-600 dark:text-green-400`,children:[`+`,f(e.newSignatures)]})]}),(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-muted-foreground`,children:`Supprimées`}),(0,o.jsxs)(`p`,{className:`font-medium text-red-600 dark:text-red-400`,children:[`-`,f(e.removedSignatures)]})]}),(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-muted-foreground`,children:`Durée`}),(0,o.jsxs)(`p`,{className:`font-medium`,children:[e.duration,`s`]})]})]}),e.status===`failed`&&(0,o.jsx)(`div`,{className:`rounded-lg border border-red-200 bg-red-50 dark:border-red-800 dark:bg-red-950/50 p-2`,children:(0,o.jsx)(`p`,{className:`text-sm text-red-800 dark:text-red-200`,children:`Échec de la mise à jour`})}),(0,o.jsxs)(n.Button,{size:`sm`,variant:`ghost`,onClick:()=>S?.(e.id),children:[(0,o.jsx)(a.FileText,{className:`mr-2 size-3`}),`Voir le changelog`]})]})]})]},e.id))})})]})]})}exports.SignatureDatabaseManager=h;
1
+ "use client";"use client";const e=require("../../utils/cn.cjs.js"),t=require("../../components/badge/index.cjs.js"),n=require("../../components/button/index.cjs.js"),r=require("../../components/card/index.cjs.js"),i=require("../../components/scroll-area/index.cjs.js");let a=require("lucide-react"),o=require("react/jsx-runtime");var s=[{name:`main.cvd`,version:`62`,signatureCount:6647427,size:162.5*1024*1024,lastUpdated:new Date(`2024-12-15T10:30:00`),buildTime:new Date(`2024-12-15T08:00:00`)},{name:`daily.cvd`,version:`27458`,signatureCount:2145789,size:89.3*1024*1024,lastUpdated:new Date(`2025-01-15T14:20:00`),buildTime:new Date(`2025-01-15T12:00:00`)},{name:`bytecode.cvd`,version:`334`,signatureCount:52438,size:2.8*1024*1024,lastUpdated:new Date(`2025-01-10T09:15:00`),buildTime:new Date(`2025-01-10T06:00:00`)}],c=[{id:`upd-1`,date:new Date(`2025-01-15T14:20:00`),fromVersion:`27457`,toVersion:`27458`,newSignatures:1247,removedSignatures:89,duration:45,status:`success`,source:`daily.cvd`},{id:`upd-2`,date:new Date(`2025-01-14T14:15:00`),fromVersion:`27456`,toVersion:`27457`,newSignatures:2134,removedSignatures:156,duration:52,status:`success`,source:`daily.cvd`},{id:`upd-3`,date:new Date(`2025-01-13T14:10:00`),fromVersion:`27455`,toVersion:`27456`,newSignatures:1876,removedSignatures:203,duration:48,status:`success`,source:`daily.cvd`},{id:`upd-4`,date:new Date(`2025-01-12T14:05:00`),fromVersion:`27454`,toVersion:`27455`,newSignatures:0,removedSignatures:0,duration:12,status:`failed`,source:`daily.cvd`},{id:`upd-5`,date:new Date(`2025-01-11T14:00:00`),fromVersion:`27453`,toVersion:`27454`,newSignatures:3245,removedSignatures:178,duration:67,status:`success`,source:`daily.cvd`}],l={updateFrequency:24,mirror:`database.clamav.net`,lastCheck:new Date(`2025-01-15T14:20:00`),checksToday:12,proxyEnabled:!1},u=e=>e<1024?e+` B`:e<1024*1024?(e/1024).toFixed(2)+` KB`:(e/(1024*1024)).toFixed(2)+` MB`,d=e=>new Intl.DateTimeFormat(`fr-FR`,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`}).format(e),f=e=>new Intl.NumberFormat(`fr-FR`).format(e),p=e=>{switch(e){case`success`:return(0,o.jsx)(a.CheckCircle2,{className:`size-4 text-green-600 dark:text-green-400`});case`failed`:return(0,o.jsx)(a.XCircle,{className:`size-4 text-red-600 dark:text-red-400`});case`in_progress`:return(0,o.jsx)(a.Loader2,{className:`size-4 text-blue-600 dark:text-blue-400 animate-spin`});case`scheduled`:return(0,o.jsx)(a.Clock,{className:`size-4 text-amber-600 dark:text-amber-400`})}},m=e=>{switch(e){case`success`:return(0,o.jsx)(t.Badge,{variant:`secondary`,className:`bg-green-500/10 text-green-600 border-green-500/20`,children:`Réussie`});case`failed`:return(0,o.jsx)(t.Badge,{variant:`destructive`,children:`Échouée`});case`in_progress`:return(0,o.jsx)(t.Badge,{variant:`default`,children:`En cours`});case`scheduled`:return(0,o.jsx)(t.Badge,{variant:`secondary`,className:`bg-yellow-500/10 text-yellow-600 border-yellow-500/20`,children:`Planifiée`})}};function h({databases:h=s,updates:g=c,freshclamConfig:_=l,totalSignatures:v=h.reduce((e,t)=>e+t.signatureCount,0),isUpdating:y=!1,onUpdateNow:b,onScheduleUpdate:x,onViewChangelog:S,className:C}){let w=g[0];return(0,o.jsxs)(`div`,{className:e.cn(`space-y-6`,C),children:[(0,o.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2 lg:grid-cols-4`,children:[(0,o.jsx)(r.Card,{className:`p-6`,children:(0,o.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm font-medium text-muted-foreground`,children:`Version DB`}),(0,o.jsx)(`h3`,{className:`text-2xl font-bold`,children:w?.toVersion||`N/A`})]}),(0,o.jsx)(a.Database,{className:`size-8 text-blue-600 dark:text-blue-400`})]})}),(0,o.jsx)(r.Card,{className:`p-6`,children:(0,o.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm font-medium text-muted-foreground`,children:`Total Signatures`}),(0,o.jsx)(`h3`,{className:`text-2xl font-bold`,children:f(v)})]}),(0,o.jsx)(a.FileText,{className:`size-8 text-purple-600 dark:text-purple-400`})]})}),(0,o.jsx)(r.Card,{className:`p-6`,children:(0,o.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm font-medium text-muted-foreground`,children:`Dernière MAJ`}),(0,o.jsx)(`h3`,{className:`text-sm font-bold`,children:w?d(w.date):`N/A`})]}),(0,o.jsx)(a.Clock,{className:`size-8 text-green-600 dark:text-green-400`})]})}),(0,o.jsx)(r.Card,{className:`p-6`,children:(0,o.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm font-medium text-muted-foreground`,children:`Taille Totale`}),(0,o.jsx)(`h3`,{className:`text-2xl font-bold`,children:u(h.reduce((e,t)=>e+t.size,0))})]}),(0,o.jsx)(a.HardDrive,{className:`size-8 text-amber-600 dark:text-amber-400`})]})})]}),(0,o.jsxs)(`div`,{className:`grid gap-6 lg:grid-cols-2`,children:[(0,o.jsxs)(r.Card,{className:`p-6`,children:[(0,o.jsxs)(`div`,{className:`mb-4 flex items-center justify-between`,children:[(0,o.jsx)(`h3`,{className:`text-lg font-semibold`,children:`Bases de données`}),(0,o.jsxs)(t.Badge,{variant:`outline`,children:[h.length,` bases`]})]}),(0,o.jsx)(`div`,{className:`space-y-4`,children:h.map(e=>(0,o.jsxs)(`div`,{className:`rounded-lg border border-border bg-muted/50 p-4 space-y-2`,children:[(0,o.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,o.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(a.Database,{className:`size-4 text-muted-foreground`}),(0,o.jsx)(`span`,{className:`font-medium`,children:e.name})]}),(0,o.jsxs)(t.Badge,{variant:`secondary`,children:[`v`,e.version]})]}),(0,o.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-sm`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-muted-foreground`,children:`Signatures`}),(0,o.jsx)(`p`,{className:`font-medium`,children:f(e.signatureCount)})]}),(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-muted-foreground`,children:`Taille`}),(0,o.jsx)(`p`,{className:`font-medium`,children:u(e.size)})]}),(0,o.jsxs)(`div`,{className:`col-span-2`,children:[(0,o.jsx)(`p`,{className:`text-muted-foreground`,children:`Dernière mise à jour`}),(0,o.jsx)(`p`,{className:`font-medium`,children:d(e.lastUpdated)})]})]})]},e.name))})]}),(0,o.jsxs)(r.Card,{className:`p-6`,children:[(0,o.jsxs)(`div`,{className:`mb-4 flex items-center justify-between`,children:[(0,o.jsx)(`h3`,{className:`text-lg font-semibold`,children:`Configuration Freshclam`}),(0,o.jsxs)(n.Button,{size:`sm`,variant:`outline`,onClick:()=>x?.(_.updateFrequency),children:[(0,o.jsx)(a.Calendar,{className:`mr-2 size-4`}),`Planifier`]})]}),(0,o.jsxs)(`div`,{className:`space-y-4`,children:[(0,o.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-border bg-muted/50 p-4`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Fréquence de MAJ`}),(0,o.jsxs)(`p`,{className:`text-lg font-semibold`,children:[`Toutes les `,_.updateFrequency,`h`]})]}),(0,o.jsx)(a.Clock,{className:`size-6 text-blue-600 dark:text-blue-400`})]}),(0,o.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-border bg-muted/50 p-4`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Mirror utilisé`}),(0,o.jsx)(`p`,{className:`text-lg font-semibold`,children:_.mirror})]}),(0,o.jsx)(a.Globe,{className:`size-6 text-purple-600 dark:text-purple-400`})]}),(0,o.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-border bg-muted/50 p-4`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Dernier check`}),(0,o.jsx)(`p`,{className:`text-lg font-semibold`,children:d(_.lastCheck)})]}),(0,o.jsx)(a.RefreshCw,{className:`size-6 text-green-600 dark:text-green-400`})]}),(0,o.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-border bg-muted/50 p-4`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Checks aujourd'hui`}),(0,o.jsx)(`p`,{className:`text-lg font-semibold`,children:_.checksToday})]}),(0,o.jsx)(a.AlertCircle,{className:`size-6 text-amber-600 dark:text-amber-400`})]}),_.proxyEnabled&&(0,o.jsx)(`div`,{className:`rounded-lg border border-amber-200 bg-amber-50 dark:border-amber-800 dark:bg-amber-950/50 p-3`,children:(0,o.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-amber-800 dark:text-amber-200`,children:[(0,o.jsx)(a.AlertCircle,{className:`size-4`}),(0,o.jsx)(`span`,{children:`Proxy activé`})]})}),(0,o.jsx)(n.Button,{className:`w-full`,onClick:b,disabled:y,children:y?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.Loader2,{className:`mr-2 size-4 animate-spin`}),`Mise à jour en cours...`]}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.Download,{className:`mr-2 size-4`}),`Mettre à jour maintenant`]})})]})]})]}),(0,o.jsxs)(r.Card,{className:`p-6`,children:[(0,o.jsxs)(`div`,{className:`mb-4 flex items-center justify-between`,children:[(0,o.jsx)(`h3`,{className:`text-lg font-semibold`,children:`Historique des mises à jour`}),(0,o.jsxs)(t.Badge,{variant:`outline`,children:[g.length,` mises à jour`]})]}),(0,o.jsx)(i.ScrollArea,{className:`h-[400px]`,children:(0,o.jsx)(`div`,{className:`space-y-3`,children:g.map((e,t)=>(0,o.jsxs)(`div`,{className:`relative rounded-lg border border-border bg-muted/50 p-4`,children:[t<g.length-1&&(0,o.jsx)(`div`,{className:`absolute left-6 top-12 h-full w-px bg-border`}),(0,o.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,o.jsx)(`div`,{className:`flex size-8 shrink-0 items-center justify-center rounded-full border border-border bg-background`,children:p(e.status)}),(0,o.jsxs)(`div`,{className:`flex-1 space-y-2`,children:[(0,o.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsxs)(`p`,{className:`font-medium`,children:[e.source,` - v`,e.fromVersion,` → v`,e.toVersion]}),(0,o.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:d(e.date)})]}),m(e.status)]}),e.status===`success`&&(0,o.jsxs)(`div`,{className:`grid grid-cols-3 gap-3 text-sm`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-muted-foreground`,children:`Ajoutées`}),(0,o.jsxs)(`p`,{className:`font-medium text-green-600 dark:text-green-400`,children:[`+`,f(e.newSignatures)]})]}),(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-muted-foreground`,children:`Supprimées`}),(0,o.jsxs)(`p`,{className:`font-medium text-red-600 dark:text-red-400`,children:[`-`,f(e.removedSignatures)]})]}),(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`p`,{className:`text-muted-foreground`,children:`Durée`}),(0,o.jsxs)(`p`,{className:`font-medium`,children:[e.duration,`s`]})]})]}),e.status===`failed`&&(0,o.jsx)(`div`,{className:`rounded-lg border border-red-200 bg-red-50 dark:border-red-800 dark:bg-red-950/50 p-2`,children:(0,o.jsx)(`p`,{className:`text-sm text-red-800 dark:text-red-200`,children:`Échec de la mise à jour`})}),(0,o.jsxs)(n.Button,{size:`sm`,variant:`ghost`,onClick:()=>S?.(e.id),children:[(0,o.jsx)(a.FileText,{className:`mr-2 size-3`}),`Voir le changelog`]})]})]})]},e.id))})})]})]})}exports.SignatureDatabaseManager=h;
@@ -1 +1 @@
1
- "use client";"use client";const e=require(`../../_virtual/_rolldown/runtime.cjs.js`),t=require(`../../utils/cn.cjs.js`),n=require(`../../components/avatar/index.cjs.js`),r=require(`../../components/button/index.cjs.js`),i=require(`../../components/checkbox/index.cjs.js`),a=require(`../../components/label/index.cjs.js`),o=require(`../../components/input/index.cjs.js`),s=require(`../../components/textarea/index.cjs.js`),c=require(`../_shared/identity/RoleSelect.cjs.js`);let l=require(`react`);l=e.__toESM(l);let u=require(`lucide-react`),d=require(`react/jsx-runtime`);function f(e){return((e.firstName?.[0]??``)+(e.lastName?.[0]??``)).toUpperCase()||e.email[0]?.toUpperCase()||`?`}function p({availableUsers:e,teamRoles:p,defaultRole:m,initialValues:h,onSubmit:g,onCancel:_,searchPlaceholder:v=`Rechercher un utilisateur`,isSubmitting:y,className:b}){let x=m??p[0]?.id??``,[S,C]=l.useState(h?.name??``),[w,T]=l.useState(h?.description??``),E=l.useMemo(()=>{let e=new Map;return h?.members?.forEach(t=>e.set(t.userId,t.roleId)),e},[h]),[D,O]=l.useState(E),[k,A]=l.useState(``),[j,M]=l.useState(null),N=l.useMemo(()=>{let t=k.trim().toLowerCase();return t?e.filter(e=>{let n=`${e.firstName??``} ${e.lastName??``}`.toLowerCase();return e.email.toLowerCase().includes(t)||n.includes(t)}):e},[e,k]),P=e=>{O(t=>{let n=new Map(t);return n.has(e)?n.delete(e):n.set(e,x),n})},F=(e,t)=>{O(n=>{let r=new Map(n);return r.has(e)&&r.set(e,t),r})};return(0,d.jsxs)(`form`,{onSubmit:async e=>{if(e.preventDefault(),M(null),D.size===0){M(`Aucun membre sélectionné`);return}let t=Array.from(D.entries()).map(([e,t])=>({userId:e,roleId:t}));await g({name:S,description:w||void 0,members:t})},className:t.cn(`flex flex-col h-full`,b),children:[(0,d.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 space-y-4`,children:[(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(a.Label,{htmlFor:`team-name`,children:`Nom *`}),(0,d.jsx)(o.Input,{id:`team-name`,value:S,onChange:e=>C(e.target.value),required:!0,minLength:2})]}),(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(a.Label,{htmlFor:`team-desc`,children:`Description`}),(0,d.jsx)(s.Textarea,{id:`team-desc`,value:w,onChange:e=>T(e.target.value),rows:3})]}),(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(a.Label,{children:`Membres`}),(0,d.jsxs)(`div`,{className:`relative`,children:[(0,d.jsx)(u.Search,{className:`absolute left-2.5 top-2.5 size-4 text-muted-foreground`}),(0,d.jsx)(o.Input,{"aria-label":`Rechercher un utilisateur`,placeholder:v,value:k,onChange:e=>A(e.target.value),className:`pl-9`})]}),(0,d.jsxs)(`div`,{className:`border rounded-md divide-y max-h-96 overflow-y-auto`,children:[N.map(e=>{let t=D.has(e.id),r=D.get(e.id)??x,a=`${e.firstName??``} ${e.lastName??``}`.trim()||e.email;return(0,d.jsxs)(`div`,{className:`flex items-center gap-3 p-2`,children:[(0,d.jsx)(i.Checkbox,{id:`m-${e.id}`,checked:t,onCheckedChange:()=>P(e.id),"aria-label":a}),(0,d.jsxs)(n.Avatar,{className:`size-7`,children:[e.avatarUrl&&(0,d.jsx)(n.AvatarImage,{src:e.avatarUrl,alt:``}),(0,d.jsx)(n.AvatarFallback,{className:`text-xs`,children:f(e)})]}),(0,d.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,d.jsx)(`div`,{className:`text-sm font-medium truncate`,children:a}),(0,d.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:e.email})]}),(0,d.jsx)(c.RoleSelect,{value:r,onChange:t=>F(e.id,t),roles:p,disabled:!t,triggerClassName:`w-28`})]},e.id)}),N.length===0&&(0,d.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground text-center`,children:`Aucun résultat`})]}),(0,d.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[D.size,` / `,e.length,` membres sélectionnés`]})]}),j&&(0,d.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:j})]}),(0,d.jsxs)(`div`,{className:`sticky bottom-0 flex justify-end gap-2 border-t bg-card p-4`,children:[_&&(0,d.jsx)(r.Button,{type:`button`,variant:`ghost`,onClick:_,disabled:y,children:`Annuler`}),(0,d.jsx)(r.Button,{type:`submit`,disabled:y||!S,children:y?`Création…`:`Créer l'équipe`})]})]})}exports.WakaTeamForm=p;
1
+ "use client";"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../utils/cn.cjs.js"),n=require("../../components/avatar/index.cjs.js"),r=require("../../components/button/index.cjs.js"),i=require("../../components/checkbox/index.cjs.js"),a=require("../../components/label/index.cjs.js"),o=require("../../components/input/index.cjs.js"),s=require("../../components/textarea/index.cjs.js"),c=require("../_shared/identity/RoleSelect.cjs.js");let l=require("react");l=e.__toESM(l);let u=require("lucide-react"),d=require("react/jsx-runtime");function f(e){return((e.firstName?.[0]??``)+(e.lastName?.[0]??``)).toUpperCase()||e.email[0]?.toUpperCase()||`?`}function p({availableUsers:e,teamRoles:p,defaultRole:m,initialValues:h,onSubmit:g,onCancel:_,searchPlaceholder:v=`Rechercher un utilisateur`,isSubmitting:y,className:b}){let x=m??p[0]?.id??``,[S,C]=l.useState(h?.name??``),[w,T]=l.useState(h?.description??``),E=l.useMemo(()=>{let e=new Map;return h?.members?.forEach(t=>e.set(t.userId,t.roleId)),e},[h]),[D,O]=l.useState(E),[k,A]=l.useState(``),[j,M]=l.useState(null),N=l.useMemo(()=>{let t=k.trim().toLowerCase();return t?e.filter(e=>{let n=`${e.firstName??``} ${e.lastName??``}`.toLowerCase();return e.email.toLowerCase().includes(t)||n.includes(t)}):e},[e,k]),P=e=>{O(t=>{let n=new Map(t);return n.has(e)?n.delete(e):n.set(e,x),n})},F=(e,t)=>{O(n=>{let r=new Map(n);return r.has(e)&&r.set(e,t),r})};return(0,d.jsxs)(`form`,{onSubmit:async e=>{if(e.preventDefault(),M(null),D.size===0){M(`Aucun membre sélectionné`);return}let t=Array.from(D.entries()).map(([e,t])=>({userId:e,roleId:t}));await g({name:S,description:w||void 0,members:t})},className:t.cn(`flex flex-col h-full`,b),children:[(0,d.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 space-y-4`,children:[(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(a.Label,{htmlFor:`team-name`,children:`Nom *`}),(0,d.jsx)(o.Input,{id:`team-name`,value:S,onChange:e=>C(e.target.value),required:!0,minLength:2})]}),(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(a.Label,{htmlFor:`team-desc`,children:`Description`}),(0,d.jsx)(s.Textarea,{id:`team-desc`,value:w,onChange:e=>T(e.target.value),rows:3})]}),(0,d.jsxs)(`div`,{className:`space-y-2`,children:[(0,d.jsx)(a.Label,{children:`Membres`}),(0,d.jsxs)(`div`,{className:`relative`,children:[(0,d.jsx)(u.Search,{className:`absolute left-2.5 top-2.5 size-4 text-muted-foreground`}),(0,d.jsx)(o.Input,{"aria-label":`Rechercher un utilisateur`,placeholder:v,value:k,onChange:e=>A(e.target.value),className:`pl-9`})]}),(0,d.jsxs)(`div`,{className:`border rounded-md divide-y max-h-96 overflow-y-auto`,children:[N.map(e=>{let t=D.has(e.id),r=D.get(e.id)??x,a=`${e.firstName??``} ${e.lastName??``}`.trim()||e.email;return(0,d.jsxs)(`div`,{className:`flex items-center gap-3 p-2`,children:[(0,d.jsx)(i.Checkbox,{id:`m-${e.id}`,checked:t,onCheckedChange:()=>P(e.id),"aria-label":a}),(0,d.jsxs)(n.Avatar,{className:`size-7`,children:[e.avatarUrl&&(0,d.jsx)(n.AvatarImage,{src:e.avatarUrl,alt:``}),(0,d.jsx)(n.AvatarFallback,{className:`text-xs`,children:f(e)})]}),(0,d.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,d.jsx)(`div`,{className:`text-sm font-medium truncate`,children:a}),(0,d.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:e.email})]}),(0,d.jsx)(c.RoleSelect,{value:r,onChange:t=>F(e.id,t),roles:p,disabled:!t,triggerClassName:`w-28`})]},e.id)}),N.length===0&&(0,d.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground text-center`,children:`Aucun résultat`})]}),(0,d.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[D.size,` / `,e.length,` membres sélectionnés`]})]}),j&&(0,d.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:j})]}),(0,d.jsxs)(`div`,{className:`sticky bottom-0 flex justify-end gap-2 border-t bg-card p-4`,children:[_&&(0,d.jsx)(r.Button,{type:`button`,variant:`ghost`,onClick:_,disabled:y,children:`Annuler`}),(0,d.jsx)(r.Button,{type:`submit`,disabled:y||!S,children:y?`Création…`:`Créer l'équipe`})]})]})}exports.WakaTeamForm=p;
@@ -1 +1 @@
1
- "use client";"use client";require(`../../_virtual/_rolldown/runtime.cjs.js`);const e=require(`../../utils/cn.cjs.js`),t=require(`../../components/badge/index.cjs.js`),n=require(`../../components/button/index.cjs.js`),r=require(`../../components/card/index.cjs.js`);let i=require(`react`),a=require(`lucide-react`),o=require(`react/jsx-runtime`);var s={critical:{icon:a.ShieldAlert,bgColor:`bg-red-950/50 border-red-800`,iconColor:`text-red-400`,badgeVariant:`destructive`},high:{icon:a.AlertTriangle,bgColor:`bg-orange-950/50 border-orange-800`,iconColor:`text-orange-400`,badgeVariant:`destructive`},medium:{icon:a.AlertCircle,bgColor:`bg-yellow-950/50 border-yellow-800`,iconColor:`text-yellow-400`,badgeVariant:`secondary`},low:{icon:a.Info,bgColor:`bg-blue-950/50 border-blue-800`,iconColor:`text-blue-400`,badgeVariant:`default`}},c={quarantined:`Mis en quarantaine`,deleted:`Supprimé`,blocked:`Bloqué`,allowed:`Autorisé`},l={quarantined:`text-orange-400`,deleted:`text-red-400`,blocked:`text-red-400`,allowed:`text-green-400`},u=({alerts:u=[],maxVisible:d=3,autoHideAfter:f=0,onDismiss:p,onDismissAll:m,onViewDetails:h,onViewQuarantine:g,className:_})=>{let[v,y]=(0,i.useState)(new Set),b=u.filter(e=>!e.dismissed);if(b.length===0)return null;let x=e=>{y(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},S=b.slice(0,d),C=b.length-d,w=e=>{let t=new Date().getTime()-e.getTime(),n=Math.floor(t/6e4),r=Math.floor(t/36e5);return n<1?`À l'instant`:n<60?`Il y a ${n}m`:r<24?`Il y a ${r}h`:e.toLocaleDateString(`fr-FR`,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})};return(0,o.jsxs)(`div`,{className:e.cn(`space-y-2`,_),children:[b.length>1&&(0,o.jsxs)(`div`,{className:`flex items-center justify-between bg-red-950/30 border border-red-800/50 rounded-lg px-4 py-2`,children:[(0,o.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(a.ShieldAlert,{className:`h-4 w-4 text-red-400`}),(0,o.jsxs)(`span`,{className:`text-sm font-medium text-red-200`,children:[b.length,` alerte`,b.length>1?`s`:``,` active`,b.length>1?`s`:``]})]}),m&&(0,o.jsx)(n.Button,{variant:`ghost`,size:`sm`,onClick:m,className:`text-red-300 hover:text-red-200`,children:`Tout ignorer`})]}),S.map(i=>{let u=s[i.severity],d=u.icon,f=v.has(i.id);return(0,o.jsx)(r.Card,{className:e.cn(`border-2 backdrop-blur-sm transition-all duration-200`,u.bgColor,f&&`shadow-lg`),children:(0,o.jsx)(`div`,{className:`p-4`,children:(0,o.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,o.jsx)(`div`,{className:e.cn(`mt-0.5 flex-shrink-0`,u.iconColor),children:(0,o.jsx)(d,{className:`h-5 w-5`})}),(0,o.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,o.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,o.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,o.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,o.jsx)(`h4`,{className:`text-sm font-semibold text-white truncate`,children:i.threatName}),(0,o.jsx)(t.Badge,{variant:u.badgeVariant,className:`text-xs`,children:i.severity.toUpperCase()})]}),(0,o.jsxs)(`div`,{className:`mt-1 flex items-center gap-2 text-xs text-gray-400`,children:[(0,o.jsx)(`span`,{className:`truncate`,title:i.filePath,children:i.filename}),(0,o.jsx)(`span`,{children:`•`}),(0,o.jsx)(`span`,{className:l[i.action],children:c[i.action]}),(0,o.jsx)(`span`,{children:`•`}),(0,o.jsx)(`span`,{children:w(i.detectedAt)})]})]}),(0,o.jsx)(n.Button,{variant:`ghost`,size:`sm`,onClick:()=>p?.(i.id),className:`flex-shrink-0 h-8 w-8 p-0 text-gray-400 hover:text-white`,children:(0,o.jsx)(a.X,{className:`h-4 w-4`})})]}),f&&(0,o.jsx)(`div`,{className:`mt-3 pt-3 border-t border-white/10 space-y-2 text-xs text-gray-300`,children:(0,o.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`span`,{className:`text-gray-500`,children:`Chemin complet:`}),(0,o.jsx)(`p`,{className:`font-mono break-all`,children:i.filePath})]}),(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`span`,{className:`text-gray-500`,children:`Moteur antivirus:`}),(0,o.jsx)(`p`,{className:`font-mono`,children:i.engineVersion})]}),i.userId&&(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`span`,{className:`text-gray-500`,children:`Utilisateur:`}),(0,o.jsx)(`p`,{className:`font-mono`,children:i.userId})]}),(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`span`,{className:`text-gray-500`,children:`Détecté le:`}),(0,o.jsx)(`p`,{children:i.detectedAt.toLocaleString(`fr-FR`,{dateStyle:`medium`,timeStyle:`short`})})]})]})}),(0,o.jsxs)(`div`,{className:`mt-3 flex items-center gap-2`,children:[(0,o.jsx)(n.Button,{variant:`outline`,size:`sm`,onClick:()=>x(i.id),className:`text-xs`,children:f?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.ChevronUp,{className:`h-3 w-3 mr-1`}),`Masquer`]}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.ChevronDown,{className:`h-3 w-3 mr-1`}),`Détails`]})}),h&&(0,o.jsxs)(n.Button,{variant:`outline`,size:`sm`,onClick:()=>h(i.id),className:`text-xs`,children:[(0,o.jsx)(a.Eye,{className:`h-3 w-3 mr-1`}),`Analyse complète`]}),i.action===`quarantined`&&g&&(0,o.jsxs)(n.Button,{variant:`outline`,size:`sm`,onClick:g,className:`text-xs`,children:[(0,o.jsx)(a.Archive,{className:`h-3 w-3 mr-1`}),`Quarantaine`]})]})]})]})})},i.id)}),C>0&&(0,o.jsx)(`div`,{className:`text-center`,children:(0,o.jsxs)(n.Button,{variant:`ghost`,size:`sm`,className:`text-xs text-gray-400 hover:text-white`,children:[`+ `,C,` autre`,C>1?`s`:``,` alerte`,C>1?`s`:``]})})]})},d=[{id:`1`,threatName:`Trojan.GenericKD.12345678`,filename:`invoice_2024.pdf.exe`,filePath:`/home/user/Downloads/invoice_2024.pdf.exe`,severity:`critical`,action:`quarantined`,detectedAt:new Date(Date.now()-5*6e4),userId:`user@example.com`,engineVersion:`ClamAV 1.4.1`,dismissed:!1},{id:`2`,threatName:`Malware.Suspicious.Archive`,filename:`files.zip`,filePath:`/var/www/uploads/files.zip`,severity:`high`,action:`blocked`,detectedAt:new Date(Date.now()-15*6e4),engineVersion:`ClamAV 1.4.1`,dismissed:!1},{id:`3`,threatName:`PUA.Win.Adware.Generic`,filename:`installer.exe`,filePath:`/tmp/installer.exe`,severity:`medium`,action:`deleted`,detectedAt:new Date(Date.now()-36e5),userId:`admin@example.com`,engineVersion:`ClamAV 1.4.1`,dismissed:!1}];exports.ThreatAlertBanner=u,exports.defaultThreatAlerts=d;
1
+ "use client";"use client";const e=require("../../utils/cn.cjs.js"),t=require("../../components/badge/index.cjs.js"),n=require("../../components/button/index.cjs.js"),r=require("../../components/card/index.cjs.js");let i=require("react"),a=require("lucide-react"),o=require("react/jsx-runtime");var s={critical:{icon:a.ShieldAlert,bgColor:`bg-red-950/50 border-red-800`,iconColor:`text-red-400`,badgeVariant:`destructive`},high:{icon:a.AlertTriangle,bgColor:`bg-orange-950/50 border-orange-800`,iconColor:`text-orange-400`,badgeVariant:`destructive`},medium:{icon:a.AlertCircle,bgColor:`bg-yellow-950/50 border-yellow-800`,iconColor:`text-yellow-400`,badgeVariant:`secondary`},low:{icon:a.Info,bgColor:`bg-blue-950/50 border-blue-800`,iconColor:`text-blue-400`,badgeVariant:`default`}},c={quarantined:`Mis en quarantaine`,deleted:`Supprimé`,blocked:`Bloqué`,allowed:`Autorisé`},l={quarantined:`text-orange-400`,deleted:`text-red-400`,blocked:`text-red-400`,allowed:`text-green-400`},u=({alerts:u=[],maxVisible:d=3,autoHideAfter:f=0,onDismiss:p,onDismissAll:m,onViewDetails:h,onViewQuarantine:g,className:_})=>{let[v,y]=(0,i.useState)(new Set),b=u.filter(e=>!e.dismissed);if(b.length===0)return null;let x=e=>{y(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},S=b.slice(0,d),C=b.length-d,w=e=>{let t=new Date().getTime()-e.getTime(),n=Math.floor(t/6e4),r=Math.floor(t/36e5);return n<1?`À l'instant`:n<60?`Il y a ${n}m`:r<24?`Il y a ${r}h`:e.toLocaleDateString(`fr-FR`,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})};return(0,o.jsxs)(`div`,{className:e.cn(`space-y-2`,_),children:[b.length>1&&(0,o.jsxs)(`div`,{className:`flex items-center justify-between bg-red-950/30 border border-red-800/50 rounded-lg px-4 py-2`,children:[(0,o.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(a.ShieldAlert,{className:`h-4 w-4 text-red-400`}),(0,o.jsxs)(`span`,{className:`text-sm font-medium text-red-200`,children:[b.length,` alerte`,b.length>1?`s`:``,` active`,b.length>1?`s`:``]})]}),m&&(0,o.jsx)(n.Button,{variant:`ghost`,size:`sm`,onClick:m,className:`text-red-300 hover:text-red-200`,children:`Tout ignorer`})]}),S.map(i=>{let u=s[i.severity],d=u.icon,f=v.has(i.id);return(0,o.jsx)(r.Card,{className:e.cn(`border-2 backdrop-blur-sm transition-all duration-200`,u.bgColor,f&&`shadow-lg`),children:(0,o.jsx)(`div`,{className:`p-4`,children:(0,o.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,o.jsx)(`div`,{className:e.cn(`mt-0.5 flex-shrink-0`,u.iconColor),children:(0,o.jsx)(d,{className:`h-5 w-5`})}),(0,o.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,o.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,o.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,o.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,o.jsx)(`h4`,{className:`text-sm font-semibold text-white truncate`,children:i.threatName}),(0,o.jsx)(t.Badge,{variant:u.badgeVariant,className:`text-xs`,children:i.severity.toUpperCase()})]}),(0,o.jsxs)(`div`,{className:`mt-1 flex items-center gap-2 text-xs text-gray-400`,children:[(0,o.jsx)(`span`,{className:`truncate`,title:i.filePath,children:i.filename}),(0,o.jsx)(`span`,{children:`•`}),(0,o.jsx)(`span`,{className:l[i.action],children:c[i.action]}),(0,o.jsx)(`span`,{children:`•`}),(0,o.jsx)(`span`,{children:w(i.detectedAt)})]})]}),(0,o.jsx)(n.Button,{variant:`ghost`,size:`sm`,onClick:()=>p?.(i.id),className:`flex-shrink-0 h-8 w-8 p-0 text-gray-400 hover:text-white`,children:(0,o.jsx)(a.X,{className:`h-4 w-4`})})]}),f&&(0,o.jsx)(`div`,{className:`mt-3 pt-3 border-t border-white/10 space-y-2 text-xs text-gray-300`,children:(0,o.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`span`,{className:`text-gray-500`,children:`Chemin complet:`}),(0,o.jsx)(`p`,{className:`font-mono break-all`,children:i.filePath})]}),(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`span`,{className:`text-gray-500`,children:`Moteur antivirus:`}),(0,o.jsx)(`p`,{className:`font-mono`,children:i.engineVersion})]}),i.userId&&(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`span`,{className:`text-gray-500`,children:`Utilisateur:`}),(0,o.jsx)(`p`,{className:`font-mono`,children:i.userId})]}),(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`span`,{className:`text-gray-500`,children:`Détecté le:`}),(0,o.jsx)(`p`,{children:i.detectedAt.toLocaleString(`fr-FR`,{dateStyle:`medium`,timeStyle:`short`})})]})]})}),(0,o.jsxs)(`div`,{className:`mt-3 flex items-center gap-2`,children:[(0,o.jsx)(n.Button,{variant:`outline`,size:`sm`,onClick:()=>x(i.id),className:`text-xs`,children:f?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.ChevronUp,{className:`h-3 w-3 mr-1`}),`Masquer`]}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.ChevronDown,{className:`h-3 w-3 mr-1`}),`Détails`]})}),h&&(0,o.jsxs)(n.Button,{variant:`outline`,size:`sm`,onClick:()=>h(i.id),className:`text-xs`,children:[(0,o.jsx)(a.Eye,{className:`h-3 w-3 mr-1`}),`Analyse complète`]}),i.action===`quarantined`&&g&&(0,o.jsxs)(n.Button,{variant:`outline`,size:`sm`,onClick:g,className:`text-xs`,children:[(0,o.jsx)(a.Archive,{className:`h-3 w-3 mr-1`}),`Quarantaine`]})]})]})]})})},i.id)}),C>0&&(0,o.jsx)(`div`,{className:`text-center`,children:(0,o.jsxs)(n.Button,{variant:`ghost`,size:`sm`,className:`text-xs text-gray-400 hover:text-white`,children:[`+ `,C,` autre`,C>1?`s`:``,` alerte`,C>1?`s`:``]})})]})},d=[{id:`1`,threatName:`Trojan.GenericKD.12345678`,filename:`invoice_2024.pdf.exe`,filePath:`/home/user/Downloads/invoice_2024.pdf.exe`,severity:`critical`,action:`quarantined`,detectedAt:new Date(Date.now()-5*6e4),userId:`user@example.com`,engineVersion:`ClamAV 1.4.1`,dismissed:!1},{id:`2`,threatName:`Malware.Suspicious.Archive`,filename:`files.zip`,filePath:`/var/www/uploads/files.zip`,severity:`high`,action:`blocked`,detectedAt:new Date(Date.now()-15*6e4),engineVersion:`ClamAV 1.4.1`,dismissed:!1},{id:`3`,threatName:`PUA.Win.Adware.Generic`,filename:`installer.exe`,filePath:`/tmp/installer.exe`,severity:`medium`,action:`deleted`,detectedAt:new Date(Date.now()-36e5),userId:`admin@example.com`,engineVersion:`ClamAV 1.4.1`,dismissed:!1}];exports.ThreatAlertBanner=u,exports.defaultThreatAlerts=d;
@@ -1 +1 @@
1
- "use client";"use client";const e=require(`../../_virtual/_rolldown/runtime.cjs.js`),t=require(`../../utils/cn.cjs.js`),n=require(`../../components/alert-dialog/index.cjs.js`),r=require(`../../components/avatar/index.cjs.js`),i=require(`../../components/badge/index.cjs.js`),a=require(`../../components/button/index.cjs.js`),o=require(`../../components/dropdown-menu/index.cjs.js`),s=require(`../../components/input/index.cjs.js`),c=require(`../../components/table/index.cjs.js`),l=require(`../_shared/identity/SidePushLayout.cjs.js`),u=require(`../_shared/identity/RoleSelect.cjs.js`),d=require(`../_shared/identity/InviteUserPanel.cjs.js`);let f=require(`react`);f=e.__toESM(f);let p=require(`lucide-react`),m=require(`react/jsx-runtime`);function h(e){return((e.firstName?.[0]??``)+(e.lastName?.[0]??``)).toUpperCase()||e.email[0]?.toUpperCase()||`?`}function g(e){return e===`active`?`default`:e===`invited`?`secondary`:`destructive`}function _(e){return e===`active`?`Actif`:e===`invited`?`Invité`:`Suspendu`}function v({users:e,roles:v,isLoading:b,panelWidth:x=520,onInvite:S,onEditUser:C,onDeleteUser:w,onChangeRole:T,onToggleStatus:E,searchPlaceholder:D=`Rechercher un utilisateur`,emptyState:O,className:k}){let[A,j]=f.useState(``),[M,N]=f.useState(null),[P,F]=f.useState(null),[I,L]=f.useState(null),[R,z]=f.useState(!1),B=f.useMemo(()=>{let t=A.trim().toLowerCase();return t?e.filter(e=>{let n=`${e.firstName??``} ${e.lastName??``}`.toLowerCase();return e.email.toLowerCase().includes(t)||n.includes(t)}):e},[e,A]),V=()=>{N(null),F(null)};return(0,m.jsxs)(l.SidePushLayout,{panel:M===`invite`?(0,m.jsx)(d.InviteUserPanel,{roles:v,onSubmit:async e=>{if(!S)return V();z(!0);try{await S(e),V()}finally{z(!1)}},onCancel:V,isSubmitting:R}):M===`edit`&&P?(0,m.jsx)(y,{user:P,roles:v,onSubmit:async e=>{C&&P&&await C(P,e),V()},onCancel:V}):null,panelWidth:x,panelTitle:M===`invite`?`Inviter un utilisateur`:M===`edit`?`Modifier l’utilisateur`:void 0,onClose:V,className:t.cn(`h-full`,k),children:[(0,m.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,m.jsxs)(`div`,{className:`flex items-center justify-between gap-4 border-b p-4`,children:[(0,m.jsxs)(`div`,{className:`relative w-full max-w-sm`,children:[(0,m.jsx)(p.Search,{className:`absolute left-2.5 top-2.5 size-4 text-muted-foreground`}),(0,m.jsx)(s.Input,{"aria-label":`Rechercher un utilisateur`,placeholder:D,value:A,onChange:e=>j(e.target.value),className:`pl-9`})]}),(0,m.jsxs)(a.Button,{onClick:()=>N(`invite`),children:[(0,m.jsx)(p.UserPlus,{className:`size-4 mr-2`}),` Inviter`]})]}),(0,m.jsx)(`div`,{className:`flex-1 overflow-auto`,children:b?(0,m.jsx)(`div`,{className:`p-6 text-sm text-muted-foreground`,children:`Chargement…`}):B.length===0?(0,m.jsx)(`div`,{className:`p-12 text-center text-sm text-muted-foreground`,children:O??`Aucun utilisateur`}):(0,m.jsxs)(c.Table,{children:[(0,m.jsx)(c.TableHeader,{children:(0,m.jsxs)(c.TableRow,{children:[(0,m.jsx)(c.TableHead,{children:`Utilisateur`}),(0,m.jsx)(c.TableHead,{children:`Rôle`}),(0,m.jsx)(c.TableHead,{children:`Statut`}),(0,m.jsx)(c.TableHead,{children:`Dernière connexion`}),(0,m.jsx)(c.TableHead,{className:`w-12`})]})}),(0,m.jsx)(c.TableBody,{children:B.map(e=>(0,m.jsxs)(c.TableRow,{children:[(0,m.jsx)(c.TableCell,{children:(0,m.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,m.jsxs)(r.Avatar,{className:`size-8`,children:[e.avatarUrl&&(0,m.jsx)(r.AvatarImage,{src:e.avatarUrl,alt:``}),(0,m.jsx)(r.AvatarFallback,{children:h(e)})]}),(0,m.jsxs)(`div`,{className:`flex flex-col`,children:[(0,m.jsx)(`span`,{className:`font-medium`,children:e.firstName||e.lastName?`${e.firstName??``} ${e.lastName??``}`.trim():e.email}),(e.firstName||e.lastName)&&(0,m.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.email})]})]})}),(0,m.jsx)(c.TableCell,{children:(0,m.jsx)(u.RoleSelect,{value:e.roleId,roles:v,onChange:t=>T?.(e.id,t),disabled:!T,triggerClassName:`w-36`})}),(0,m.jsx)(c.TableCell,{children:(0,m.jsx)(i.Badge,{variant:g(e.status),children:_(e.status)})}),(0,m.jsx)(c.TableCell,{className:`text-sm text-muted-foreground`,children:e.lastLoginAt?e.lastLoginAt.toLocaleDateString():`—`}),(0,m.jsx)(c.TableCell,{children:(0,m.jsxs)(o.DropdownMenu,{children:[(0,m.jsx)(o.DropdownMenuTrigger,{asChild:!0,children:(0,m.jsx)(a.Button,{variant:`ghost`,size:`icon`,"aria-label":`Actions`,children:(0,m.jsx)(p.MoreHorizontal,{className:`size-4`})})}),(0,m.jsxs)(o.DropdownMenuContent,{align:`end`,children:[(0,m.jsxs)(o.DropdownMenuItem,{onClick:()=>{F(e),N(`edit`)},children:[(0,m.jsx)(p.Pencil,{className:`size-4 mr-2`}),` Modifier`]}),E&&(0,m.jsx)(o.DropdownMenuItem,{onClick:()=>E(e.id,e.status!==`active`),children:e.status===`active`?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(p.Ban,{className:`size-4 mr-2`}),` Suspendre`]}):(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(p.CheckCircle,{className:`size-4 mr-2`}),` Activer`]})}),w&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(o.DropdownMenuSeparator,{}),(0,m.jsxs)(o.DropdownMenuItem,{onClick:()=>L(e),className:`text-destructive focus:text-destructive`,children:[(0,m.jsx)(p.Trash2,{className:`size-4 mr-2`}),` Supprimer`]})]})]})]})})]},e.id))})]})})]}),(0,m.jsx)(n.AlertDialog,{open:!!I,onOpenChange:e=>!e&&L(null),children:(0,m.jsxs)(n.AlertDialogContent,{children:[(0,m.jsxs)(n.AlertDialogHeader,{children:[(0,m.jsx)(n.AlertDialogTitle,{children:`Supprimer cet utilisateur\xA0?`}),(0,m.jsxs)(n.AlertDialogDescription,{children:[`Cette action est définitive et révoque tous les accès de`,` `,I?.email,`.`]})]}),(0,m.jsxs)(n.AlertDialogFooter,{children:[(0,m.jsx)(n.AlertDialogCancel,{children:`Annuler`}),(0,m.jsx)(n.AlertDialogAction,{onClick:async()=>{I&&w&&await w(I),L(null)},children:`Supprimer`})]})]})})]})}function y({user:e,roles:t,onSubmit:n,onCancel:r}){let[i,o]=f.useState(e.firstName??``),[c,l]=f.useState(e.lastName??``),[d,p]=f.useState(e.roleId);return(0,m.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault(),await n({firstName:i,lastName:c,roleId:d})},className:`flex flex-col gap-4 p-4 h-full`,children:[(0,m.jsxs)(`div`,{className:`space-y-2`,children:[(0,m.jsx)(`label`,{className:`text-sm font-medium`,htmlFor:`edit-fn`,children:`Prénom`}),(0,m.jsx)(s.Input,{id:`edit-fn`,value:i,onChange:e=>o(e.target.value)})]}),(0,m.jsxs)(`div`,{className:`space-y-2`,children:[(0,m.jsx)(`label`,{className:`text-sm font-medium`,htmlFor:`edit-ln`,children:`Nom`}),(0,m.jsx)(s.Input,{id:`edit-ln`,value:c,onChange:e=>l(e.target.value)})]}),(0,m.jsxs)(`div`,{className:`space-y-2`,children:[(0,m.jsx)(`label`,{className:`text-sm font-medium`,htmlFor:`edit-role`,children:`Rôle`}),(0,m.jsx)(u.RoleSelect,{id:`edit-role`,value:d,onChange:p,roles:t})]}),(0,m.jsxs)(`div`,{className:`mt-auto flex justify-end gap-2 pt-4 border-t`,children:[(0,m.jsx)(a.Button,{type:`button`,variant:`ghost`,onClick:r,children:`Annuler`}),(0,m.jsx)(a.Button,{type:`submit`,children:`Enregistrer`})]})]})}exports.WakaUserManagement=v;
1
+ "use client";"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../utils/cn.cjs.js"),n=require("../../components/alert-dialog/index.cjs.js"),r=require("../../components/avatar/index.cjs.js"),i=require("../../components/badge/index.cjs.js"),a=require("../../components/button/index.cjs.js"),o=require("../../components/dropdown-menu/index.cjs.js"),s=require("../../components/input/index.cjs.js"),c=require("../../components/table/index.cjs.js"),l=require("../_shared/identity/SidePushLayout.cjs.js"),u=require("../_shared/identity/RoleSelect.cjs.js"),d=require("../_shared/identity/InviteUserPanel.cjs.js");let f=require("react");f=e.__toESM(f);let p=require("lucide-react"),m=require("react/jsx-runtime");function h(e){return((e.firstName?.[0]??``)+(e.lastName?.[0]??``)).toUpperCase()||e.email[0]?.toUpperCase()||`?`}function g(e){return e===`active`?`default`:e===`invited`?`secondary`:`destructive`}function _(e){return e===`active`?`Actif`:e===`invited`?`Invité`:`Suspendu`}function v({users:e,roles:v,isLoading:b,panelWidth:x=520,onInvite:S,onEditUser:C,onDeleteUser:w,onChangeRole:T,onToggleStatus:E,searchPlaceholder:D=`Rechercher un utilisateur`,emptyState:O,className:k}){let[A,j]=f.useState(``),[M,N]=f.useState(null),[P,F]=f.useState(null),[I,L]=f.useState(null),[R,z]=f.useState(!1),B=f.useMemo(()=>{let t=A.trim().toLowerCase();return t?e.filter(e=>{let n=`${e.firstName??``} ${e.lastName??``}`.toLowerCase();return e.email.toLowerCase().includes(t)||n.includes(t)}):e},[e,A]),V=()=>{N(null),F(null)};return(0,m.jsxs)(l.SidePushLayout,{panel:M===`invite`?(0,m.jsx)(d.InviteUserPanel,{roles:v,onSubmit:async e=>{if(!S)return V();z(!0);try{await S(e),V()}finally{z(!1)}},onCancel:V,isSubmitting:R}):M===`edit`&&P?(0,m.jsx)(y,{user:P,roles:v,onSubmit:async e=>{C&&P&&await C(P,e),V()},onCancel:V}):null,panelWidth:x,panelTitle:M===`invite`?`Inviter un utilisateur`:M===`edit`?`Modifier l’utilisateur`:void 0,onClose:V,className:t.cn(`h-full`,k),children:[(0,m.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,m.jsxs)(`div`,{className:`flex items-center justify-between gap-4 border-b p-4`,children:[(0,m.jsxs)(`div`,{className:`relative w-full max-w-sm`,children:[(0,m.jsx)(p.Search,{className:`absolute left-2.5 top-2.5 size-4 text-muted-foreground`}),(0,m.jsx)(s.Input,{"aria-label":`Rechercher un utilisateur`,placeholder:D,value:A,onChange:e=>j(e.target.value),className:`pl-9`})]}),(0,m.jsxs)(a.Button,{onClick:()=>N(`invite`),children:[(0,m.jsx)(p.UserPlus,{className:`size-4 mr-2`}),` Inviter`]})]}),(0,m.jsx)(`div`,{className:`flex-1 overflow-auto`,children:b?(0,m.jsx)(`div`,{className:`p-6 text-sm text-muted-foreground`,children:`Chargement…`}):B.length===0?(0,m.jsx)(`div`,{className:`p-12 text-center text-sm text-muted-foreground`,children:O??`Aucun utilisateur`}):(0,m.jsxs)(c.Table,{children:[(0,m.jsx)(c.TableHeader,{children:(0,m.jsxs)(c.TableRow,{children:[(0,m.jsx)(c.TableHead,{children:`Utilisateur`}),(0,m.jsx)(c.TableHead,{children:`Rôle`}),(0,m.jsx)(c.TableHead,{children:`Statut`}),(0,m.jsx)(c.TableHead,{children:`Dernière connexion`}),(0,m.jsx)(c.TableHead,{className:`w-12`})]})}),(0,m.jsx)(c.TableBody,{children:B.map(e=>(0,m.jsxs)(c.TableRow,{children:[(0,m.jsx)(c.TableCell,{children:(0,m.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,m.jsxs)(r.Avatar,{className:`size-8`,children:[e.avatarUrl&&(0,m.jsx)(r.AvatarImage,{src:e.avatarUrl,alt:``}),(0,m.jsx)(r.AvatarFallback,{children:h(e)})]}),(0,m.jsxs)(`div`,{className:`flex flex-col`,children:[(0,m.jsx)(`span`,{className:`font-medium`,children:e.firstName||e.lastName?`${e.firstName??``} ${e.lastName??``}`.trim():e.email}),(e.firstName||e.lastName)&&(0,m.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.email})]})]})}),(0,m.jsx)(c.TableCell,{children:(0,m.jsx)(u.RoleSelect,{value:e.roleId,roles:v,onChange:t=>T?.(e.id,t),disabled:!T,triggerClassName:`w-36`})}),(0,m.jsx)(c.TableCell,{children:(0,m.jsx)(i.Badge,{variant:g(e.status),children:_(e.status)})}),(0,m.jsx)(c.TableCell,{className:`text-sm text-muted-foreground`,children:e.lastLoginAt?e.lastLoginAt.toLocaleDateString():`—`}),(0,m.jsx)(c.TableCell,{children:(0,m.jsxs)(o.DropdownMenu,{children:[(0,m.jsx)(o.DropdownMenuTrigger,{asChild:!0,children:(0,m.jsx)(a.Button,{variant:`ghost`,size:`icon`,"aria-label":`Actions`,children:(0,m.jsx)(p.MoreHorizontal,{className:`size-4`})})}),(0,m.jsxs)(o.DropdownMenuContent,{align:`end`,children:[(0,m.jsxs)(o.DropdownMenuItem,{onClick:()=>{F(e),N(`edit`)},children:[(0,m.jsx)(p.Pencil,{className:`size-4 mr-2`}),` Modifier`]}),E&&(0,m.jsx)(o.DropdownMenuItem,{onClick:()=>E(e.id,e.status!==`active`),children:e.status===`active`?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(p.Ban,{className:`size-4 mr-2`}),` Suspendre`]}):(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(p.CheckCircle,{className:`size-4 mr-2`}),` Activer`]})}),w&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(o.DropdownMenuSeparator,{}),(0,m.jsxs)(o.DropdownMenuItem,{onClick:()=>L(e),className:`text-destructive focus:text-destructive`,children:[(0,m.jsx)(p.Trash2,{className:`size-4 mr-2`}),` Supprimer`]})]})]})]})})]},e.id))})]})})]}),(0,m.jsx)(n.AlertDialog,{open:!!I,onOpenChange:e=>!e&&L(null),children:(0,m.jsxs)(n.AlertDialogContent,{children:[(0,m.jsxs)(n.AlertDialogHeader,{children:[(0,m.jsx)(n.AlertDialogTitle,{children:`Supprimer cet utilisateur\xA0?`}),(0,m.jsxs)(n.AlertDialogDescription,{children:[`Cette action est définitive et révoque tous les accès de`,` `,I?.email,`.`]})]}),(0,m.jsxs)(n.AlertDialogFooter,{children:[(0,m.jsx)(n.AlertDialogCancel,{children:`Annuler`}),(0,m.jsx)(n.AlertDialogAction,{onClick:async()=>{I&&w&&await w(I),L(null)},children:`Supprimer`})]})]})})]})}function y({user:e,roles:t,onSubmit:n,onCancel:r}){let[i,o]=f.useState(e.firstName??``),[c,l]=f.useState(e.lastName??``),[d,p]=f.useState(e.roleId);return(0,m.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault(),await n({firstName:i,lastName:c,roleId:d})},className:`flex flex-col gap-4 p-4 h-full`,children:[(0,m.jsxs)(`div`,{className:`space-y-2`,children:[(0,m.jsx)(`label`,{className:`text-sm font-medium`,htmlFor:`edit-fn`,children:`Prénom`}),(0,m.jsx)(s.Input,{id:`edit-fn`,value:i,onChange:e=>o(e.target.value)})]}),(0,m.jsxs)(`div`,{className:`space-y-2`,children:[(0,m.jsx)(`label`,{className:`text-sm font-medium`,htmlFor:`edit-ln`,children:`Nom`}),(0,m.jsx)(s.Input,{id:`edit-ln`,value:c,onChange:e=>l(e.target.value)})]}),(0,m.jsxs)(`div`,{className:`space-y-2`,children:[(0,m.jsx)(`label`,{className:`text-sm font-medium`,htmlFor:`edit-role`,children:`Rôle`}),(0,m.jsx)(u.RoleSelect,{id:`edit-role`,value:d,onChange:p,roles:t})]}),(0,m.jsxs)(`div`,{className:`mt-auto flex justify-end gap-2 pt-4 border-t`,children:[(0,m.jsx)(a.Button,{type:`button`,variant:`ghost`,onClick:r,children:`Annuler`}),(0,m.jsx)(a.Button,{type:`submit`,children:`Enregistrer`})]})]})}exports.WakaUserManagement=v;
@@ -1,2 +1,2 @@
1
- "use client";"use client";const e=require(`../../_virtual/_rolldown/runtime.cjs.js`),t=require(`../../utils/cn.cjs.js`),n=require(`../../components/button/index.cjs.js`),r=require(`../../components/waka-doc-toc/index.cjs.js`),i=require(`../../components/waka-doc-nav/index.cjs.js`),a=require(`../../components/waka-doc-search/index.cjs.js`),o=require(`../../components/waka-doc-version/index.cjs.js`),s=require(`../../components/waka-doc-toolbar/index.cjs.js`),c=require(`../../components/waka-doc-breadcrumb/index.cjs.js`),l=require(`../../components/waka-doc-renderer/index.cjs.js`);let u=require(`react`);u=e.__toESM(u);let d=require(`lucide-react`),f=require(`react/jsx-runtime`);function p({content:e,mode:p=`view`,canEdit:h=!1,onModeChange:g,onChange:_,debounceMs:v=1500,saveStatus:y=`idle`,navItems:b,activePageId:x,onPageChange:S,breadcrumbs:C,onBreadcrumbClick:w,searchPages:T,onSearchSelect:E,versions:D,currentVersion:O,onVersionChange:k,className:A}){let[j,M]=u.useState([]),[N,P]=u.useState(!1),[F,I]=u.useState(e);u.useEffect(()=>{I(e)},[e]);let L=u.useRef(void 0),R=u.useCallback(e=>{I(e),L.current&&clearTimeout(L.current),L.current=setTimeout(()=>{_?.(e)},v)},[_,v]);u.useEffect(()=>()=>{L.current&&clearTimeout(L.current)},[]);let z=b&&b.length>0,B=T&&T.length>0,V=D&&D.length>0&&O;return(0,f.jsxs)(`div`,{className:t.cn(`relative flex min-h-screen`,A),children:[z&&(0,f.jsx)(n.Button,{variant:`ghost`,size:`icon`,className:`fixed left-4 top-4 z-50 lg:hidden`,onClick:()=>P(!N),children:N?(0,f.jsx)(d.X,{className:`h-5 w-5`}):(0,f.jsx)(d.Menu,{className:`h-5 w-5`})}),z&&(0,f.jsx)(`aside`,{className:t.cn(`fixed inset-y-0 left-0 z-40 w-72 shrink-0 border-r border-border/50 bg-background/95 backdrop-blur-md transition-transform duration-300 lg:relative lg:translate-x-0`,N?`translate-x-0`:`-translate-x-full`),children:(0,f.jsxs)(`div`,{className:`flex h-full flex-col gap-4 overflow-y-auto p-4`,children:[B&&(0,f.jsx)(a.WakaDocSearch,{pages:T,onSelect:e=>{E?.(e),P(!1)}}),V&&(0,f.jsx)(o.WakaDocVersion,{versions:D,current:O,onVersionChange:k}),(0,f.jsx)(i.WakaDocNav,{items:b,activeId:x,onItemClick:e=>{S?.(e),P(!1)}})]})}),z&&N&&(0,f.jsx)(`div`,{className:`fixed inset-0 z-30 bg-black/50 lg:hidden`,onClick:()=>P(!1)}),(0,f.jsxs)(`main`,{className:`flex min-w-0 flex-1 gap-8`,children:[(0,f.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl px-4 py-8 lg:px-8`,children:[(0,f.jsxs)(`div`,{className:`mb-6 flex flex-col gap-3`,children:[C&&C.length>0&&(0,f.jsx)(c.WakaDocBreadcrumb,{items:C,onItemClick:w}),(0,f.jsx)(s.WakaDocToolbar,{content:F,mode:p,canEdit:h,onModeChange:g,saveStatus:y})]}),p===`view`?(0,f.jsx)(l.WakaDocRenderer,{content:F,onHeadingsExtracted:M}):(0,f.jsx)(m,{content:F,onChange:R,onHeadingsExtracted:M})]}),j.length>0&&(0,f.jsx)(`aside`,{className:`hidden w-56 shrink-0 py-8 xl:block`,children:(0,f.jsx)(r.WakaDocToc,{items:j})})]})]})}function m({content:e,onChange:t,onHeadingsExtracted:n}){let[r,i]=u.useState(null);return u.useEffect(()=>{(async()=>{try{let{WakaRichTextEditor:e}=await Promise.resolve().then(()=>require(`../../components/waka-rich-text-editor/index.cjs.js`));i(()=>e)}catch{}})()},[]),u.useEffect(()=>{let t=[],r=e.split(`
1
+ "use client";"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../utils/cn.cjs.js"),n=require("../../components/button/index.cjs.js"),r=require("../../components/waka-doc-toc/index.cjs.js"),i=require("../../components/waka-doc-nav/index.cjs.js"),a=require("../../components/waka-doc-search/index.cjs.js"),o=require("../../components/waka-doc-version/index.cjs.js"),s=require("../../components/waka-doc-toolbar/index.cjs.js"),c=require("../../components/waka-doc-breadcrumb/index.cjs.js"),l=require("../../components/waka-doc-renderer/index.cjs.js");let u=require("react");u=e.__toESM(u);let d=require("lucide-react"),f=require("react/jsx-runtime");function p({content:e,mode:p=`view`,canEdit:h=!1,onModeChange:g,onChange:_,debounceMs:v=1500,saveStatus:y=`idle`,navItems:b,activePageId:x,onPageChange:S,breadcrumbs:C,onBreadcrumbClick:w,searchPages:T,onSearchSelect:E,versions:D,currentVersion:O,onVersionChange:k,className:A}){let[j,M]=u.useState([]),[N,P]=u.useState(!1),[F,I]=u.useState(e);u.useEffect(()=>{I(e)},[e]);let L=u.useRef(void 0),R=u.useCallback(e=>{I(e),L.current&&clearTimeout(L.current),L.current=setTimeout(()=>{_?.(e)},v)},[_,v]);u.useEffect(()=>()=>{L.current&&clearTimeout(L.current)},[]);let z=b&&b.length>0,B=T&&T.length>0,V=D&&D.length>0&&O;return(0,f.jsxs)(`div`,{className:t.cn(`relative flex min-h-screen`,A),children:[z&&(0,f.jsx)(n.Button,{variant:`ghost`,size:`icon`,className:`fixed left-4 top-4 z-50 lg:hidden`,onClick:()=>P(!N),children:N?(0,f.jsx)(d.X,{className:`h-5 w-5`}):(0,f.jsx)(d.Menu,{className:`h-5 w-5`})}),z&&(0,f.jsx)(`aside`,{className:t.cn(`fixed inset-y-0 left-0 z-40 w-72 shrink-0 border-r border-border/50 bg-background/95 backdrop-blur-md transition-transform duration-300 lg:relative lg:translate-x-0`,N?`translate-x-0`:`-translate-x-full`),children:(0,f.jsxs)(`div`,{className:`flex h-full flex-col gap-4 overflow-y-auto p-4`,children:[B&&(0,f.jsx)(a.WakaDocSearch,{pages:T,onSelect:e=>{E?.(e),P(!1)}}),V&&(0,f.jsx)(o.WakaDocVersion,{versions:D,current:O,onVersionChange:k}),(0,f.jsx)(i.WakaDocNav,{items:b,activeId:x,onItemClick:e=>{S?.(e),P(!1)}})]})}),z&&N&&(0,f.jsx)(`div`,{className:`fixed inset-0 z-30 bg-black/50 lg:hidden`,onClick:()=>P(!1)}),(0,f.jsxs)(`main`,{className:`flex min-w-0 flex-1 gap-8`,children:[(0,f.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl px-4 py-8 lg:px-8`,children:[(0,f.jsxs)(`div`,{className:`mb-6 flex flex-col gap-3`,children:[C&&C.length>0&&(0,f.jsx)(c.WakaDocBreadcrumb,{items:C,onItemClick:w}),(0,f.jsx)(s.WakaDocToolbar,{content:F,mode:p,canEdit:h,onModeChange:g,saveStatus:y})]}),p===`view`?(0,f.jsx)(l.WakaDocRenderer,{content:F,onHeadingsExtracted:M}):(0,f.jsx)(m,{content:F,onChange:R,onHeadingsExtracted:M})]}),j.length>0&&(0,f.jsx)(`aside`,{className:`hidden w-56 shrink-0 py-8 xl:block`,children:(0,f.jsx)(r.WakaDocToc,{items:j})})]})]})}function m({content:e,onChange:t,onHeadingsExtracted:n}){let[r,i]=u.useState(null);return u.useEffect(()=>{(async()=>{try{let{WakaRichTextEditor:e}=await Promise.resolve().then(()=>require("../../components/waka-rich-text-editor/index.cjs.js"));i(()=>e)}catch{}})()},[]),u.useEffect(()=>{let t=[],r=e.split(`
2
2
  `);for(let e of r){let n=e.match(/^(#{2,4})\s+(.+)$/);if(n){let e=n[1].length,r=n[2].replace(/[`*_~]/g,``),i=r.toLowerCase().replace(/[^\w\s-]/g,``).replace(/\s+/g,`-`);t.push({id:i,text:r,level:e})}}n(t)},[e,n]),r?(0,f.jsx)(r,{value:e,onChange:t,placeholder:`Écrivez votre documentation...`,minHeight:400,editable:!0}):(0,f.jsx)(`textarea`,{value:e,onChange:e=>t(e.target.value),className:`min-h-[400px] w-full rounded-lg border border-border/50 bg-background p-4 font-mono text-sm focus:outline-none focus:ring-2 focus:ring-primary/50`,placeholder:`Écrivez en markdown...`})}exports.WakaDocShell=p;