kelt-ui-kit-react 2.0.6 → 2.0.9

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 (313) hide show
  1. package/.github/workflows/publish.yml +40 -31
  2. package/README.md +124 -72
  3. package/dist/App.d.ts +2 -3
  4. package/dist/App.menu.d.ts +10 -10
  5. package/dist/App.routes.d.ts +1 -1
  6. package/dist/_core/hooks/HistoryProvider.d.ts +5 -5
  7. package/dist/_core/hooks/ImageChecker.d.ts +5 -6
  8. package/dist/_core/hooks/imageExist.d.ts +5 -6
  9. package/dist/_core/hooks/isEAN13.d.ts +1 -1
  10. package/dist/_core/hooks/objectToQueryParams.d.ts +1 -1
  11. package/dist/_core/hooks/useCurrency.d.ts +3 -3
  12. package/dist/_core/hooks/useDateutils.d.ts +4 -4
  13. package/dist/_core/hooks/useIsMobile.d.ts +1 -1
  14. package/dist/_core/hooks/useToken.d.ts +3 -3
  15. package/dist/_core/hooks/useValidate.d.ts +5 -5
  16. package/dist/_core/hooks/widgetSupport.d.ts +1 -1
  17. package/dist/_core/type/generiqueType.d.ts +4 -0
  18. package/dist/action/Action.view.d.ts +1 -1
  19. package/dist/action/ButtonAction.d.ts +8 -9
  20. package/dist/addressSearch/AddressSearch.d.ts +18 -19
  21. package/dist/addressSearch/AddressSearch.view.d.ts +1 -1
  22. package/dist/badge/Badge.d.ts +10 -9
  23. package/dist/badge/Badge.view.d.ts +1 -1
  24. package/dist/button/Button.d.ts +1 -2
  25. package/dist/button/Button.view.d.ts +1 -1
  26. package/dist/button/button.interface.d.ts +19 -20
  27. package/dist/button/buttonActions/ButtonActions.d.ts +11 -12
  28. package/dist/button/buttonFile/ButtonFile.d.ts +9 -9
  29. package/dist/button/buttonFile/ButtonFile.view.d.ts +1 -1
  30. package/dist/button/buttonFilters/ButtonFilters.d.ts +16 -17
  31. package/dist/card/Card.d.ts +14 -15
  32. package/dist/card/Card.view.d.ts +1 -1
  33. package/dist/card/card.interface.d.ts +10 -10
  34. package/dist/card/cardAction/CardAction.d.ts +13 -14
  35. package/dist/card/cardAction.interface.d.ts +8 -9
  36. package/dist/card/hook/useCardInteractions.d.ts +8 -8
  37. package/dist/carousel/Carousel.d.ts +14 -15
  38. package/dist/carousel/Carousel.view.d.ts +1 -1
  39. package/dist/damier/Damier.d.ts +9 -10
  40. package/dist/damier/Damier.view.d.ts +1 -1
  41. package/dist/damier/damierCell/DamierCell.d.ts +6 -7
  42. package/dist/damier/damierCell/damierCell.interface.d.ts +6 -6
  43. package/dist/dataTable/DataTable.d.ts +37 -33
  44. package/dist/dataTable/DataTable.view.d.ts +1 -1
  45. package/dist/dataTable/dataTable.interface.d.ts +70 -47
  46. package/dist/dataTable/dataTable.utils.d.ts +17 -0
  47. package/dist/dataTable/dataTableActions/DataTableAction.d.ts +9 -10
  48. package/dist/dataTable/dataTableColumn/DataTableColumn.d.ts +14 -8
  49. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.d.ts +9 -0
  50. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.d.ts +9 -0
  51. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.d.ts +9 -0
  52. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.d.ts +12 -0
  53. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.d.ts +9 -0
  54. package/dist/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.d.ts +10 -0
  55. package/dist/dataTable/dataTableFilters/DataTableFilters.d.ts +6 -0
  56. package/dist/dataTable/dataTableLoading/DataTableLoading.d.ts +8 -7
  57. package/dist/dataTable/dataTableRow/DataTableRow.d.ts +12 -11
  58. package/dist/dataTable/useDataTableState.d.ts +13 -0
  59. package/dist/datePicker/DatePicker.d.ts +7 -8
  60. package/dist/datePicker/DatePicker.view.d.ts +1 -1
  61. package/dist/docs/ComponentDocs.d.ts +6 -0
  62. package/dist/docs/catalog.d.ts +8 -0
  63. package/dist/docs/documentation.types.d.ts +21 -0
  64. package/dist/expands/Expands.d.ts +11 -12
  65. package/dist/expands/Expands.view.d.ts +1 -1
  66. package/dist/expands/expand/expand.d.ts +10 -11
  67. package/dist/expands/expand/expand.interface.d.ts +9 -9
  68. package/dist/filAriane/FilAriane.d.ts +8 -9
  69. package/dist/filAriane/FilAriane.view.d.ts +1 -1
  70. package/dist/filAriane/filAriane.interface.d.ts +6 -6
  71. package/dist/form/Form.d.ts +35 -36
  72. package/dist/form/Form.view.d.ts +1 -1
  73. package/dist/form/form.enum.d.ts +16 -15
  74. package/dist/form/form.interface.d.ts +53 -54
  75. package/dist/form/input/Input.d.ts +27 -25
  76. package/dist/form/inputNumber/InputNumber.d.ts +21 -22
  77. package/dist/form/inputNumber/InputNumber.view.d.ts +1 -1
  78. package/dist/form/inputPrice/InputPrice.d.ts +14 -15
  79. package/dist/form/inputPrice/InputPrice.view.d.ts +1 -1
  80. package/dist/form/textArea/TextArea.d.ts +14 -15
  81. package/dist/form/textArea/TextArea.view.d.ts +1 -1
  82. package/dist/geocoding/GeocodingService.d.ts +11 -12
  83. package/dist/geocoding/geocoding.interface.d.ts +20 -20
  84. package/dist/grid/Grid.d.ts +9 -10
  85. package/dist/grid/Grid.view.d.ts +1 -1
  86. package/dist/grid/col/Col.d.ts +5 -6
  87. package/dist/grid/col/colStyled/ColStyled.d.ts +10 -11
  88. package/dist/grid/container/Container.d.ts +5 -6
  89. package/dist/grid/grid.interface.d.ts +23 -23
  90. package/dist/grid/row/Row.d.ts +13 -14
  91. package/dist/header/Header.d.ts +1 -2
  92. package/dist/header/Header.view.d.ts +1 -1
  93. package/dist/header/header.interface.d.ts +12 -12
  94. package/dist/home/Home.d.ts +1 -1
  95. package/dist/icon/Icon.d.ts +1 -2
  96. package/dist/icon/Icons.view.d.ts +1 -1
  97. package/dist/icon/icon.interface.d.ts +5 -5
  98. package/dist/icon/iconSize.enum.d.ts +7 -7
  99. package/dist/index.d.ts +56 -54
  100. package/dist/index.html +18 -18
  101. package/dist/index.js +3964 -3470
  102. package/dist/loader/Loader.d.ts +7 -8
  103. package/dist/loader/Loader.view.d.ts +1 -1
  104. package/dist/main.d.ts +0 -1
  105. package/dist/manifest.json +25 -25
  106. package/dist/menus/Menus.d.ts +5 -6
  107. package/dist/menus/Menus.view.d.ts +1 -1
  108. package/dist/menus/menu/Menu.d.ts +7 -8
  109. package/dist/menus/menu/menu.interface.d.ts +10 -10
  110. package/dist/message/Message.d.ts +6 -7
  111. package/dist/message/Message.view.d.ts +1 -1
  112. package/dist/modal/Modal.d.ts +13 -14
  113. package/dist/modal/Modal.view.d.ts +1 -1
  114. package/dist/notFound/NotFound.d.ts +1 -1
  115. package/dist/overlayPanel/OverlayPanel.d.ts +22 -23
  116. package/dist/overlayPanel/OverlayPanel.view.d.ts +1 -1
  117. package/dist/overlayPanel/overlay.context.d.ts +9 -10
  118. package/dist/overlayPanel/overlayPanelStyled/OverlayPanelStyled.d.ts +9 -9
  119. package/dist/pdfViewer/PdfViewer.d.ts +12 -12
  120. package/dist/pdfViewer/PdfViewer.view.d.ts +1 -1
  121. package/dist/quantity/Quantity.d.ts +10 -11
  122. package/dist/robots.txt +3 -3
  123. package/dist/search/Search.d.ts +21 -22
  124. package/dist/search/Search.view.d.ts +1 -1
  125. package/dist/select/Select.d.ts +23 -24
  126. package/dist/select/Select.view.d.ts +1 -1
  127. package/dist/select/selectOption.interface.d.ts +5 -5
  128. package/dist/sidebar/Sidebar.d.ts +12 -13
  129. package/dist/sidebar/Sidebar.view.d.ts +1 -1
  130. package/dist/sidebarData/SidebarData.d.ts +6 -7
  131. package/dist/sidebarData/SidebarData.view.d.ts +1 -1
  132. package/dist/style.css +1 -1
  133. package/dist/tabs/Tabs.d.ts +17 -17
  134. package/dist/tabs/Tabs.view.d.ts +1 -1
  135. package/dist/toaster/Toaster.d.ts +1 -2
  136. package/dist/toaster/Toaster.view.d.ts +1 -1
  137. package/dist/toaster/store/useToasterStore.d.ts +24 -20
  138. package/docs.plugin.ts +223 -0
  139. package/index.html +20 -18
  140. package/package.json +64 -56
  141. package/public/index.html +18 -18
  142. package/public/manifest.json +25 -25
  143. package/public/robots.txt +3 -3
  144. package/src/App.css +178 -11
  145. package/src/App.menu.tsx +277 -257
  146. package/src/App.routes.tsx +21 -16
  147. package/src/App.tsx +31 -30
  148. package/src/_core/hooks/HistoryProvider.tsx +25 -25
  149. package/src/_core/hooks/ImageChecker.tsx +26 -26
  150. package/src/_core/hooks/imageExist.tsx +9 -9
  151. package/src/_core/hooks/isEAN13.tsx +16 -16
  152. package/src/_core/hooks/objectToQueryParams.tsx +32 -32
  153. package/src/_core/hooks/useCurrency.tsx +18 -18
  154. package/src/_core/hooks/useDateutils.ts +64 -64
  155. package/src/_core/hooks/useIsMobile.ts +18 -18
  156. package/src/_core/hooks/useToken.tsx +19 -19
  157. package/src/_core/hooks/useValidate.tsx +18 -18
  158. package/src/_core/hooks/widgetSupport.tsx +39 -39
  159. package/src/_core/type/generiqueType.tsx +4 -0
  160. package/src/action/Action.view.tsx +21 -21
  161. package/src/action/ButtonAction.tsx +32 -32
  162. package/src/action/action.css +20 -20
  163. package/src/addressSearch/AddressSearch.tsx +246 -246
  164. package/src/addressSearch/AddressSearch.view.tsx +52 -52
  165. package/src/addressSearch/addressSearch.css +132 -132
  166. package/src/badge/Badge.tsx +41 -34
  167. package/src/badge/Badge.view.tsx +15 -15
  168. package/src/badge/badge.css +63 -55
  169. package/src/button/Button.tsx +48 -48
  170. package/src/button/Button.view.tsx +85 -85
  171. package/src/button/button.css +53 -53
  172. package/src/button/button.interface.tsx +22 -22
  173. package/src/button/buttonActions/ButtonActions.tsx +104 -104
  174. package/src/button/buttonFile/ButtonFile.tsx +59 -59
  175. package/src/button/buttonFile/ButtonFile.view.tsx +70 -70
  176. package/src/button/buttonFilters/ButtonFilters.tsx +102 -102
  177. package/src/button/buttonFilters/buttonFilters.css +22 -22
  178. package/src/card/Card.tsx +151 -151
  179. package/src/card/Card.view.tsx +73 -73
  180. package/src/card/card.css +144 -144
  181. package/src/card/card.interface.tsx +9 -9
  182. package/src/card/cardAction/CardAction.tsx +135 -135
  183. package/src/card/cardAction/cardAction.css +10 -10
  184. package/src/card/cardAction.interface.tsx +10 -10
  185. package/src/card/hook/useCardInteractions.tsx +30 -30
  186. package/src/carousel/Carousel.css +44 -44
  187. package/src/carousel/Carousel.tsx +115 -115
  188. package/src/carousel/Carousel.view.tsx +13 -13
  189. package/src/damier/Damier.tsx +64 -64
  190. package/src/damier/Damier.view.tsx +31 -31
  191. package/src/damier/damier.css +50 -50
  192. package/src/damier/damierCell/DamierCell.tsx +18 -18
  193. package/src/damier/damierCell/damierCell.interface.tsx +5 -5
  194. package/src/dataTable/DataTable.tsx +840 -746
  195. package/src/dataTable/DataTable.view.tsx +105 -71
  196. package/src/dataTable/dataTable.css +233 -208
  197. package/src/dataTable/dataTable.interface.ts +66 -45
  198. package/src/dataTable/dataTable.utils.ts +45 -0
  199. package/src/dataTable/dataTableActions/DataTableAction.tsx +82 -65
  200. package/src/dataTable/dataTableColumn/DataTableColumn.tsx +48 -27
  201. package/src/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.tsx +36 -0
  202. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilter.css +0 -0
  203. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.tsx +39 -0
  204. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.tsx +80 -0
  205. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.tsx +89 -0
  206. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.tsx +37 -0
  207. package/src/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.tsx +42 -0
  208. package/src/dataTable/dataTableFilters/DataTableFilters.tsx +91 -0
  209. package/src/dataTable/dataTableFilters/dataTableFilters.css +16 -0
  210. package/src/dataTable/dataTableLoading/DataTableLoading.tsx +23 -21
  211. package/src/dataTable/dataTableRow/DataTableRow.tsx +155 -208
  212. package/src/dataTable/useDataTableState.tsx +89 -0
  213. package/src/datePicker/DatePicker.tsx +110 -110
  214. package/src/datePicker/DatePicker.view.tsx +9 -9
  215. package/src/datePicker/datePicker.css +77 -77
  216. package/src/docs/ComponentDocs.tsx +156 -0
  217. package/src/docs/catalog.ts +40 -0
  218. package/src/docs/documentation.types.ts +20 -0
  219. package/src/docs/virtual.d.ts +7 -0
  220. package/src/expands/Expands.tsx +46 -46
  221. package/src/expands/Expands.view.tsx +90 -90
  222. package/src/expands/expand/expand.interface.tsx +8 -8
  223. package/src/expands/expands.css +101 -101
  224. package/src/filAriane/FilAriane.tsx +57 -57
  225. package/src/filAriane/FilAriane.view.tsx +28 -28
  226. package/src/filAriane/filAriane.css +23 -23
  227. package/src/filAriane/filAriane.interface.tsx +6 -6
  228. package/src/form/Form.tsx +477 -477
  229. package/src/form/Form.view.tsx +67 -67
  230. package/src/form/form.css +135 -135
  231. package/src/form/form.enum.ts +16 -15
  232. package/src/form/form.interface.tsx +67 -67
  233. package/src/form/input/Input.tsx +146 -106
  234. package/src/form/input/input.css +39 -29
  235. package/src/form/inputNumber/InputNumber.tsx +132 -132
  236. package/src/form/inputNumber/InputNumber.view.tsx +15 -15
  237. package/src/form/inputPrice/InputPrice.tsx +42 -42
  238. package/src/form/inputPrice/InputPrice.view.tsx +15 -15
  239. package/src/form/textArea/TextArea.tsx +59 -59
  240. package/src/form/textArea/TextArea.view.tsx +34 -34
  241. package/src/form/textArea/textArea.css +9 -9
  242. package/src/geocoding/GeocodingService.ts +89 -89
  243. package/src/geocoding/geocoding.interface.ts +25 -25
  244. package/src/grid/Grid.view.tsx +24 -24
  245. package/src/grid/container/Container.tsx +8 -8
  246. package/src/grid/container/container.css +4 -4
  247. package/src/grid/grid.interface.tsx +27 -27
  248. package/src/grid/row/row.css +25 -25
  249. package/src/header/Header.tsx +64 -64
  250. package/src/header/Header.view.tsx +5 -5
  251. package/src/header/header.css +43 -43
  252. package/src/header/header.interface.tsx +11 -11
  253. package/src/home/Home.tsx +40 -3
  254. package/src/icon/Icon.tsx +6 -6
  255. package/src/icon/Icons.view.tsx +29 -29
  256. package/src/icon/icon.css +20 -20
  257. package/src/icon/icon.interface.tsx +7 -6
  258. package/src/icon/iconSize.enum.ts +7 -7
  259. package/src/index.css +547 -547
  260. package/src/index.ts +76 -70
  261. package/src/loader/Loader.tsx +37 -37
  262. package/src/loader/Loader.view.tsx +20 -20
  263. package/src/loader/loader.css +30 -30
  264. package/src/main.tsx +10 -10
  265. package/src/menus/Menus.tsx +43 -43
  266. package/src/menus/Menus.view.tsx +39 -39
  267. package/src/menus/menu/Menu.tsx +18 -18
  268. package/src/menus/menu/menu.interface.tsx +9 -9
  269. package/src/menus/menus.css +47 -47
  270. package/src/message/Message.tsx +30 -30
  271. package/src/message/Message.view.tsx +22 -22
  272. package/src/message/message.css +29 -29
  273. package/src/modal/Modal.tsx +59 -59
  274. package/src/modal/Modal.view.tsx +26 -26
  275. package/src/modal/modal.css +71 -71
  276. package/src/notFound/NotFound.tsx +3 -3
  277. package/src/overlayPanel/OverlayPanel.tsx +260 -255
  278. package/src/overlayPanel/OverlayPanel.view.tsx +25 -25
  279. package/src/overlayPanel/overlay.context.tsx +30 -30
  280. package/src/overlayPanel/overlayPanel.css +43 -43
  281. package/src/overlayPanel/overlayPanelStyled/OverlayPanelStyled.tsx +23 -23
  282. package/src/pdfViewer/PdfViewer.tsx +73 -73
  283. package/src/pdfViewer/PdfViewer.view.tsx +5 -5
  284. package/src/quantity/Quantity.tsx +103 -103
  285. package/src/quantity/quantity.css +26 -26
  286. package/src/search/Search.tsx +161 -161
  287. package/src/search/Search.view.tsx +14 -14
  288. package/src/search/search.css +59 -59
  289. package/src/select/Select.tsx +245 -245
  290. package/src/select/Select.view.tsx +71 -71
  291. package/src/select/select.css +150 -150
  292. package/src/select/selectOption.interface.ts +5 -5
  293. package/src/sidebar/Sidebar.tsx +213 -213
  294. package/src/sidebar/Sidebar.view.tsx +17 -17
  295. package/src/sidebar/sidebar.css +103 -103
  296. package/src/sidebarData/SidebarData.tsx +19 -19
  297. package/src/sidebarData/SidebarData.view.tsx +19 -19
  298. package/src/sidebarData/sidebarData.css +27 -27
  299. package/src/tabs/Tabs.tsx +101 -90
  300. package/src/tabs/Tabs.view.tsx +20 -20
  301. package/src/tabs/tabs.css +29 -29
  302. package/src/toaster/Toaster.tsx +61 -60
  303. package/src/toaster/Toaster.view.tsx +25 -25
  304. package/src/toaster/store/useToasterStore.tsx +54 -43
  305. package/src/toaster/toaster.css +105 -92
  306. package/tests/dataTable.test.mjs +93 -0
  307. package/tests/documentation.test.mjs +75 -0
  308. package/tsconfig.docs.json +10 -0
  309. package/tsconfig.json +28 -28
  310. package/vite.config.ts +26 -20
  311. package/vite.config.ts.timestamp-1733262892554-a13dfef6e8a29.mjs +24 -24
  312. package/vite.config.ts.timestamp-1757847121745-e5a5bf54b81b.mjs +28 -28
  313. package/vite.config.ts.timestamp-1759742478362-4ac5c5a7db34b.mjs +28 -28
@@ -1,27 +1,27 @@
1
- /**
2
- * Largeur de référence pour les breakpoints des Col :
3
- * - "app" (défaut) : le conteneur app-container
4
- * - "viewport" : la fenêtre (@media)
5
- * - "row" : la Row elle-même (utile pour une grid dans une card, un panneau...)
6
- */
7
- export type GridResponsive = "app" | "viewport" | "row";
8
-
9
- /**
10
- * Nombre de colonnes sur 12, ou "auto" : la colonne partage la place restante
11
- * de la ligne à parts égales avec les autres "auto" (ex. 5 champs sur une ligne).
12
- */
13
- export type GridColumnSpan =
14
- | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
15
- | "auto";
16
-
17
- export interface GridBreakpoints {
18
- xs?: GridColumnSpan;
19
- sm?: GridColumnSpan;
20
- md?: GridColumnSpan;
21
- lg?: GridColumnSpan;
22
- xl?: GridColumnSpan;
23
- }
24
-
25
- export interface GridInterface extends GridBreakpoints {
26
- children: React.ReactNode;
27
- }
1
+ /**
2
+ * Largeur de référence pour les breakpoints des Col :
3
+ * - "app" (défaut) : le conteneur app-container
4
+ * - "viewport" : la fenêtre (@media)
5
+ * - "row" : la Row elle-même (utile pour une grid dans une card, un panneau...)
6
+ */
7
+ export type GridResponsive = "app" | "viewport" | "row";
8
+
9
+ /**
10
+ * Nombre de colonnes sur 12, ou "auto" : la colonne partage la place restante
11
+ * de la ligne à parts égales avec les autres "auto" (ex. 5 champs sur une ligne).
12
+ */
13
+ export type GridColumnSpan =
14
+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
15
+ | "auto";
16
+
17
+ export interface GridBreakpoints {
18
+ xs?: GridColumnSpan;
19
+ sm?: GridColumnSpan;
20
+ md?: GridColumnSpan;
21
+ lg?: GridColumnSpan;
22
+ xl?: GridColumnSpan;
23
+ }
24
+
25
+ export interface GridInterface extends GridBreakpoints {
26
+ children: React.ReactNode;
27
+ }
@@ -1,26 +1,26 @@
1
- .grid-row {
2
- --grid-gutter: 15px;
3
- display: flex;
4
- flex-wrap: wrap;
5
- column-gap: var(--grid-gutter);
6
-
7
- /* responsive="row" : les breakpoints des Col se basent sur la largeur de la Row.
8
- Attention : la Row a alors une largeur min de contenu de 0 dans un parent flex. */
9
- &.grid-row--responsive {
10
- container: kelt-grid / inline-size;
11
- }
12
-
13
- &.scroll {
14
- overflow-x: auto;
15
- flex-wrap: nowrap;
16
- }
17
- }
18
-
19
- @container app-container (min-width: 998px) {
20
- .grid-row {
21
- &.scroll {
22
- overflow-x: auto;
23
- flex-wrap: wrap;
24
- }
25
- }
1
+ .grid-row {
2
+ --grid-gutter: 15px;
3
+ display: flex;
4
+ flex-wrap: wrap;
5
+ column-gap: var(--grid-gutter);
6
+
7
+ /* responsive="row" : les breakpoints des Col se basent sur la largeur de la Row.
8
+ Attention : la Row a alors une largeur min de contenu de 0 dans un parent flex. */
9
+ &.grid-row--responsive {
10
+ container: kelt-grid / inline-size;
11
+ }
12
+
13
+ &.scroll {
14
+ overflow-x: auto;
15
+ flex-wrap: nowrap;
16
+ }
17
+ }
18
+
19
+ @container app-container (min-width: 998px) {
20
+ .grid-row {
21
+ &.scroll {
22
+ overflow-x: auto;
23
+ flex-wrap: wrap;
24
+ }
25
+ }
26
26
  }
@@ -1,64 +1,64 @@
1
- import { useCallback, useRef, useState } from "react";
2
- import { Icon } from "../icon/Icon";
3
- import { IconSizeEnum } from "../icon/iconSize.enum";
4
- import { OverlayPanel } from "../overlayPanel/OverlayPanel";
5
- import "./header.css";
6
- import { HeaderInterface } from "./header.interface";
7
-
8
- export const Header = ({
9
- children,
10
- logo,
11
- onClickMenu,
12
- userChildren,
13
- positionFixed,
14
- overlayClassName,
15
- onClickLogo,
16
- showBackNavigation,
17
- onClickBackNavigation,
18
- }: HeaderInterface): JSX.Element => {
19
- const refButton = useRef<HTMLDivElement>(null);
20
- const [openOverlay, setOpenOverlay] = useState(false);
21
- const onClickUser = useCallback(() => {
22
- setOpenOverlay(!openOverlay);
23
- }, [openOverlay, setOpenOverlay]);
24
- return (
25
- <div className={`header ${positionFixed ? "header--fixed" : ""}`}>
26
- <div className="flex-1 d-flex align-items-center">
27
- <span className="header-menu-btn" onClick={onClickMenu}>
28
- <Icon size={IconSizeEnum.MEDIUM} classIcon="bi-list"></Icon>
29
- </span>
30
- {showBackNavigation && (
31
- <span className="chevron-back" onClick={onClickBackNavigation}>
32
- <Icon
33
- size={IconSizeEnum.EXTRA_SMALL}
34
- classIcon="bi-caret-left-fill"
35
- ></Icon>
36
- </span>
37
- )}
38
-
39
- <span
40
- className={`header-logo ${onClickLogo && "cursor-pointer"} `}
41
- onClick={onClickLogo}
42
- >
43
- {logo && logo}
44
- </span>
45
- </div>
46
- <div className="d-flex align-items-center">
47
- {children}
48
- <div ref={refButton} onClick={onClickUser}>
49
- <Icon size={IconSizeEnum.MEDIUM} classIcon="bi-person-circle"></Icon>
50
- </div>
51
- {openOverlay && refButton.current && (
52
- <OverlayPanel
53
- className={overlayClassName}
54
- position="bottomRight"
55
- show={openOverlay}
56
- closeOverlay={setOpenOverlay}
57
- referenceElement={refButton.current}
58
- children={userChildren}
59
- />
60
- )}
61
- </div>
62
- </div>
63
- );
64
- };
1
+ import { useCallback, useRef, useState } from "react";
2
+ import { Icon } from "../icon/Icon";
3
+ import { IconSizeEnum } from "../icon/iconSize.enum";
4
+ import { OverlayPanel } from "../overlayPanel/OverlayPanel";
5
+ import "./header.css";
6
+ import { HeaderInterface } from "./header.interface";
7
+
8
+ export const Header = ({
9
+ children,
10
+ logo,
11
+ onClickMenu,
12
+ userChildren,
13
+ positionFixed,
14
+ overlayClassName,
15
+ onClickLogo,
16
+ showBackNavigation,
17
+ onClickBackNavigation,
18
+ }: HeaderInterface): JSX.Element => {
19
+ const refButton = useRef<HTMLDivElement>(null);
20
+ const [openOverlay, setOpenOverlay] = useState(false);
21
+ const onClickUser = useCallback(() => {
22
+ setOpenOverlay(!openOverlay);
23
+ }, [openOverlay, setOpenOverlay]);
24
+ return (
25
+ <div className={`header ${positionFixed ? "header--fixed" : ""}`}>
26
+ <div className="flex-1 d-flex align-items-center">
27
+ <span className="header-menu-btn" onClick={onClickMenu}>
28
+ <Icon size={IconSizeEnum.MEDIUM} classIcon="bi-list"></Icon>
29
+ </span>
30
+ {showBackNavigation && (
31
+ <span className="chevron-back" onClick={onClickBackNavigation}>
32
+ <Icon
33
+ size={IconSizeEnum.EXTRA_SMALL}
34
+ classIcon="bi-caret-left-fill"
35
+ ></Icon>
36
+ </span>
37
+ )}
38
+
39
+ <span
40
+ className={`header-logo ${onClickLogo && "cursor-pointer"} `}
41
+ onClick={onClickLogo}
42
+ >
43
+ {typeof logo === "string" ? <img src={logo} alt="Logo" /> : logo}
44
+ </span>
45
+ </div>
46
+ <div className="d-flex align-items-center">
47
+ {children}
48
+ <div ref={refButton} onClick={onClickUser}>
49
+ <Icon size={IconSizeEnum.MEDIUM} classIcon="bi-person-circle"></Icon>
50
+ </div>
51
+ {openOverlay && refButton.current && (
52
+ <OverlayPanel
53
+ className={overlayClassName}
54
+ position="bottomRight"
55
+ show={openOverlay}
56
+ closeOverlay={setOpenOverlay}
57
+ referenceElement={refButton.current}
58
+ children={userChildren}
59
+ />
60
+ )}
61
+ </div>
62
+ </div>
63
+ );
64
+ };
@@ -1,5 +1,5 @@
1
- import { Header } from "./Header";
2
-
3
- export const HeaderView = (): JSX.Element => {
4
- return <Header showBackNavigation={true} />;
5
- };
1
+ import { Header } from "./Header";
2
+
3
+ export const HeaderView = (): JSX.Element => {
4
+ return <Header showBackNavigation={true} />;
5
+ };
@@ -1,43 +1,43 @@
1
- .header {
2
- display: flex;
3
- justify-content: space-between;
4
- align-items: center;
5
- padding: 1rem;
6
- height: 50px;
7
- border-bottom: 1px solid #cfbdbd;
8
- background-color: #fff;
9
- width: 100%;
10
-
11
- &.header--fixed {
12
- position: fixed;
13
- }
14
-
15
- .header-logo {
16
- margin-left: 1rem;
17
-
18
- img {
19
- width: 50px;
20
- }
21
- }
22
-
23
- .bi {
24
- cursor: pointer;
25
- }
26
-
27
- .header-menu-btn {
28
- display: inline-flex;
29
- align-items: center;
30
- justify-content: center;
31
- position: relative;
32
- cursor: pointer;
33
-
34
- &::before {
35
- content: "";
36
- position: absolute;
37
- top: -15px;
38
- bottom: -15px;
39
- left: -15px;
40
- right: -15px;
41
- }
42
- }
43
- }
1
+ .header {
2
+ display: flex;
3
+ justify-content: space-between;
4
+ align-items: center;
5
+ padding: 1rem;
6
+ height: 50px;
7
+ border-bottom: 1px solid #cfbdbd;
8
+ background-color: #fff;
9
+ width: 100%;
10
+
11
+ &.header--fixed {
12
+ position: fixed;
13
+ }
14
+
15
+ .header-logo {
16
+ margin-left: 1rem;
17
+
18
+ img {
19
+ width: 50px;
20
+ }
21
+ }
22
+
23
+ .bi {
24
+ cursor: pointer;
25
+ }
26
+
27
+ .header-menu-btn {
28
+ display: inline-flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ position: relative;
32
+ cursor: pointer;
33
+
34
+ &::before {
35
+ content: "";
36
+ position: absolute;
37
+ top: -15px;
38
+ bottom: -15px;
39
+ left: -15px;
40
+ right: -15px;
41
+ }
42
+ }
43
+ }
@@ -1,11 +1,11 @@
1
- export interface HeaderInterface {
2
- logo?: React.ReactNode;
3
- children?: React.ReactNode;
4
- positionFixed?: boolean;
5
- onClickMenu?: () => void;
6
- userChildren?: React.ReactNode;
7
- onClickLogo?: () => void;
8
- overlayClassName?: string;
9
- showBackNavigation?: boolean;
10
- onClickBackNavigation?: () => void;
11
- }
1
+ export interface HeaderInterface {
2
+ logo?: React.ReactNode;
3
+ children?: React.ReactNode;
4
+ positionFixed?: boolean;
5
+ onClickMenu?: () => void;
6
+ userChildren?: React.ReactNode;
7
+ onClickLogo?: () => void;
8
+ overlayClassName?: string;
9
+ showBackNavigation?: boolean;
10
+ onClickBackNavigation?: () => void;
11
+ }
package/src/home/Home.tsx CHANGED
@@ -1,3 +1,40 @@
1
- export const Home = (): JSX.Element => {
2
- return <h1>Home</h1>;
3
- };
1
+ import { useState } from "react";
2
+ import { Link } from "react-router-dom";
3
+ import { MenuList } from "../App.menu";
4
+ import { catalog, categories, Category, matchesSearch } from "../docs/catalog";
5
+
6
+ export const Home = (): JSX.Element => {
7
+ const [search, setSearch] = useState("");
8
+ const [category, setCategory] = useState<Category | "Tous">("Tous");
9
+ const items = MenuList.filter((menu) =>
10
+ (category === "Tous" || catalog[menu.link].category === category) &&
11
+ matchesSearch(`${menu.name} ${catalog[menu.link].description}`, search)
12
+ ).sort((a, b) => a.name.localeCompare(b.name));
13
+ return (
14
+ <div className="docs-home">
15
+ <section className="docs-hero">
16
+ <div className="docs-hero-copy">
17
+ <span className="docs-eyebrow"><span className="docs-status-dot" />LE KIT, CÔTÉ DÉVELOPPEUR</span>
18
+ <h1>De belles interfaces.<br /><span>Une API claire.</span></h1>
19
+ <p>Explorez les composants Kelt, testez leurs interactions et retrouvez chaque paramètre, son type et son exemple. Tout le kit, au même endroit.</p>
20
+ <div className="docs-hero-actions"><Link className="docs-primary-link" to="/buttons">Explorer le kit<i className="bi bi-arrow-right" aria-hidden="true" /></Link><Link to="/toasters">Voir les notifications<i className="bi bi-arrow-up-right" aria-hidden="true" /></Link></div>
21
+ </div>
22
+ <div className="docs-hero-visual" aria-hidden="true">
23
+ <div className="docs-mini-window"><div className="docs-window-dots"><span /><span /><span /><code>Button.tsx</code></div><pre><span>import</span> {"{ Button }"}<br /><span>from</span> "kelt-ui-kit-react";<br /><br />{"<Button"}<br />{" title="}<em>"Creer quelque chose"</em><br />{" classIcon="}<em>"bi-stars"</em><br />{"/>"}</pre><div className="docs-mini-preview"><span><i className="bi bi-stars" />Creer quelque chose</span><small>Apercu en direct</small></div></div>
24
+ <div className="docs-floating-label"><i className="bi bi-braces" /> TypeScript ready</div>
25
+ </div>
26
+ </section>
27
+ <div className="docs-stats"><div><strong>{MenuList.length}</strong><span>composants à explorer</span></div><div><strong>3 onglets</strong><span>aperçu, API et code</span></div><div><strong>100% source</strong><span>types et exemples synchronisés</span></div></div>
28
+ <section className="docs-catalog" aria-labelledby="catalog-title">
29
+ <div className="docs-catalog-heading"><div><span className="docs-eyebrow">LA BIBLIOTHÈQUE</span><h2 id="catalog-title">Trouvez votre prochain composant.</h2></div><label className="docs-search"><i className="bi bi-search" aria-hidden="true" /><span className="docs-sr-only">Filtrer le catalogue</span><input placeholder="Nom, usage..." value={search} onChange={(event) => setSearch(event.target.value)} /></label></div>
30
+ <div className="docs-category-filters" role="group" aria-label="Catégories">{(["Tous", ...categories] as const).map((item) => <button type="button" key={item} aria-pressed={category === item} onClick={() => setCategory(item)}>{item}</button>)}</div>
31
+ <p className="docs-result-count" role="status">{items.length} composant{items.length > 1 ? "s" : ""}</p>
32
+ <div className="docs-card-grid">{items.map((menu) => {
33
+ const info = catalog[menu.link];
34
+ return <Link className="docs-catalog-card" to={menu.link} key={menu.id}><div className="docs-card-top"><span className="docs-component-icon"><i className={`bi bi-${info.icon}`} aria-hidden="true" /></span><span className="docs-pill">{info.category}</span></div><h3>{menu.name}</h3><p>{info.description}</p><span className="docs-card-link">Aperçu & documentation<i className="bi bi-arrow-up-right" aria-hidden="true" /></span></Link>;
35
+ })}</div>
36
+ {items.length === 0 && <p className="docs-empty">Aucun résultat. Essayez un autre nom ou une autre catégorie.</p>}
37
+ </section>
38
+ </div>
39
+ );
40
+ };
package/src/icon/Icon.tsx CHANGED
@@ -1,6 +1,6 @@
1
- import "./icon.css";
2
- import { IconInterface } from "./icon.interface";
3
-
4
- export const Icon = ({ classIcon, size }: IconInterface): JSX.Element => {
5
- return <i className={`bi ${classIcon} ${size ?? "sm"}`} />;
6
- };
1
+ import "./icon.css";
2
+ import { IconInterface } from "./icon.interface";
3
+
4
+ export const Icon = ({ classIcon, size, onClick }: IconInterface): JSX.Element => {
5
+ return <i className={`bi ${classIcon} ${size ?? "sm"}`} onClick={onClick} />;
6
+ };
@@ -1,29 +1,29 @@
1
- import { Icon } from "./Icon";
2
- import { IconInterface } from "./icon.interface";
3
-
4
- export const IconsView = (): JSX.Element => {
5
- const mockItems: IconInterface[] = [
6
- {
7
- classIcon: "bi-list",
8
- },
9
- {
10
- classIcon: "bi-person-circle",
11
- },
12
- {
13
- classIcon: "bi-volume-mute-fill",
14
- },
15
- ];
16
-
17
- return (
18
- <>
19
- <p>
20
- <a href="https://icons.getbootstrap.com/#usage" target="_blank">
21
- Liste des icons utilisables
22
- </a>
23
- </p>
24
- {mockItems.map((item, idx) => (
25
- <Icon key={idx} classIcon={item.classIcon} />
26
- ))}
27
- </>
28
- );
29
- };
1
+ import { Icon } from "./Icon";
2
+ import { IconInterface } from "./icon.interface";
3
+
4
+ export const IconsView = (): JSX.Element => {
5
+ const mockItems: IconInterface[] = [
6
+ {
7
+ classIcon: "bi-list",
8
+ },
9
+ {
10
+ classIcon: "bi-person-circle",
11
+ },
12
+ {
13
+ classIcon: "bi-volume-mute-fill",
14
+ },
15
+ ];
16
+
17
+ return (
18
+ <>
19
+ <p>
20
+ <a href="https://icons.getbootstrap.com/#usage" target="_blank">
21
+ Liste des icons utilisables
22
+ </a>
23
+ </p>
24
+ {mockItems.map((item, idx) => (
25
+ <Icon key={idx} classIcon={item.classIcon} />
26
+ ))}
27
+ </>
28
+ );
29
+ };
package/src/icon/icon.css CHANGED
@@ -1,20 +1,20 @@
1
- .bi {
2
- &.xs {
3
- font-size: 1rem;
4
- }
5
- &.sm {
6
- font-size: 1.2rem;
7
- }
8
-
9
- &.md {
10
- font-size: 1.4rem;
11
- }
12
-
13
- &.xl {
14
- font-size: 1.6rem;
15
- }
16
-
17
- &.xxl {
18
- font-size: 2rem;
19
- }
20
- }
1
+ .bi {
2
+ &.xs {
3
+ font-size: 1rem;
4
+ }
5
+ &.sm {
6
+ font-size: 1.2rem;
7
+ }
8
+
9
+ &.md {
10
+ font-size: 1.4rem;
11
+ }
12
+
13
+ &.xl {
14
+ font-size: 1.6rem;
15
+ }
16
+
17
+ &.xxl {
18
+ font-size: 2rem;
19
+ }
20
+ }
@@ -1,6 +1,7 @@
1
- import { IconSizeEnum } from "./iconSize.enum";
2
-
3
- export interface IconInterface {
4
- classIcon: string;
5
- size?: IconSizeEnum;
6
- }
1
+ import { IconSizeEnum } from "./iconSize.enum";
2
+
3
+ export interface IconInterface {
4
+ classIcon: string;
5
+ size?: IconSizeEnum;
6
+ onClick?: (event: React.MouseEvent<HTMLElement>) => void;
7
+ }
@@ -1,7 +1,7 @@
1
- export enum IconSizeEnum {
2
- EXTRA_SMALL = "xs",
3
- SMALL = "sm",
4
- MEDIUM = "md",
5
- LARGE = "xl",
6
- EXTRA_LARGE = "xxl",
7
- }
1
+ export enum IconSizeEnum {
2
+ EXTRA_SMALL = "xs",
3
+ SMALL = "sm",
4
+ MEDIUM = "md",
5
+ LARGE = "xl",
6
+ EXTRA_LARGE = "xxl",
7
+ }