cornet-ui 0.1.0-beta.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 (383) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +95 -0
  3. package/components/Actions/du-button/du-button.types.ts +14 -0
  4. package/components/Actions/du-button/du-button.vue +149 -0
  5. package/components/Actions/du-dropdown/du-dropdown.types.ts +15 -0
  6. package/components/Actions/du-dropdown/du-dropdown.vue +75 -0
  7. package/components/Actions/du-fab/du-fab.types.ts +28 -0
  8. package/components/Actions/du-fab/du-fab.vue +270 -0
  9. package/components/Actions/du-modal/du-modal.types.ts +10 -0
  10. package/components/Actions/du-modal/du-modal.vue +123 -0
  11. package/components/Actions/du-swap/du-swap.types.ts +3 -0
  12. package/components/Actions/du-swap/du-swap.vue +68 -0
  13. package/components/DataDisplay/du-accordion/du-accordion-item.vue +37 -0
  14. package/components/DataDisplay/du-accordion/du-accordion.types.ts +15 -0
  15. package/components/DataDisplay/du-accordion/du-accordion.vue +73 -0
  16. package/components/DataDisplay/du-avatar/du-avatar.types.ts +59 -0
  17. package/components/DataDisplay/du-avatar/du-avatar.vue +139 -0
  18. package/components/DataDisplay/du-badge/du-badge.types.ts +21 -0
  19. package/components/DataDisplay/du-badge/du-badge.vue +81 -0
  20. package/components/DataDisplay/du-card/du-card.types.ts +18 -0
  21. package/components/DataDisplay/du-card/du-card.vue +86 -0
  22. package/components/DataDisplay/du-carousel/du-carousel-item.vue +11 -0
  23. package/components/DataDisplay/du-carousel/du-carousel.types.ts +15 -0
  24. package/components/DataDisplay/du-carousel/du-carousel.vue +46 -0
  25. package/components/DataDisplay/du-chat/du-chat-item.vue +56 -0
  26. package/components/DataDisplay/du-chat/du-chat.types.ts +31 -0
  27. package/components/DataDisplay/du-chat/du-chat.vue +71 -0
  28. package/components/DataDisplay/du-collapse/du-collapse.types.ts +15 -0
  29. package/components/DataDisplay/du-collapse/du-collapse.vue +59 -0
  30. package/components/DataDisplay/du-countdown/du-countdown-group.vue +88 -0
  31. package/components/DataDisplay/du-countdown/du-countdown.types.ts +15 -0
  32. package/components/DataDisplay/du-countdown/du-countdown.vue +180 -0
  33. package/components/DataDisplay/du-diff/du-diff.types.ts +9 -0
  34. package/components/DataDisplay/du-diff/du-diff.vue +44 -0
  35. package/components/DataDisplay/du-kbd/du-kbd.types.ts +9 -0
  36. package/components/DataDisplay/du-kbd/du-kbd.vue +21 -0
  37. package/components/DataDisplay/du-list/du-list-row.vue +12 -0
  38. package/components/DataDisplay/du-list/du-list.types.ts +3 -0
  39. package/components/DataDisplay/du-list/du-list.vue +11 -0
  40. package/components/DataDisplay/du-stat/du-stat.types.ts +12 -0
  41. package/components/DataDisplay/du-stat/du-stat.vue +28 -0
  42. package/components/DataDisplay/du-stats/du-stats.types.ts +3 -0
  43. package/components/DataDisplay/du-stats/du-stats.vue +91 -0
  44. package/components/DataDisplay/du-status/du-status.types.ts +21 -0
  45. package/components/DataDisplay/du-status/du-status.vue +51 -0
  46. package/components/DataDisplay/du-table/du-table-item.types.ts +6 -0
  47. package/components/DataDisplay/du-table/du-table-item.vue +24 -0
  48. package/components/DataDisplay/du-table/du-table.types.ts +26 -0
  49. package/components/DataDisplay/du-table/du-table.vue +125 -0
  50. package/components/DataDisplay/du-timeline/du-timeline-item.vue +85 -0
  51. package/components/DataDisplay/du-timeline/du-timeline.types.ts +22 -0
  52. package/components/DataDisplay/du-timeline/du-timeline.vue +138 -0
  53. package/components/DataInput/du-checkbox/du-checkbox.types.ts +17 -0
  54. package/components/DataInput/du-checkbox/du-checkbox.vue +40 -0
  55. package/components/DataInput/du-fieldset/du-fieldset.types.ts +4 -0
  56. package/components/DataInput/du-fieldset/du-fieldset.vue +16 -0
  57. package/components/DataInput/du-file-input/du-file-input.types.ts +29 -0
  58. package/components/DataInput/du-file-input/du-file-input.vue +31 -0
  59. package/components/DataInput/du-filter/du-filter.types.ts +30 -0
  60. package/components/DataInput/du-filter/du-filter.vue +47 -0
  61. package/components/DataInput/du-input-field/du-input-field.types.ts +43 -0
  62. package/components/DataInput/du-input-field/du-input-field.vue +47 -0
  63. package/components/DataInput/du-label/du-label.types.ts +3 -0
  64. package/components/DataInput/du-label/du-label.vue +28 -0
  65. package/components/DataInput/du-label-input-validator/du-label-input-validator.types.ts +7 -0
  66. package/components/DataInput/du-label-input-validator/du-label-input-validator.vue +51 -0
  67. package/components/DataInput/du-radio/du-radio.types.ts +15 -0
  68. package/components/DataInput/du-radio/du-radio.vue +27 -0
  69. package/components/DataInput/du-range/du-range.types.ts +18 -0
  70. package/components/DataInput/du-range/du-range.vue +60 -0
  71. package/components/DataInput/du-rating/du-rating-item.vue +65 -0
  72. package/components/DataInput/du-rating/du-rating.types.ts +46 -0
  73. package/components/DataInput/du-rating/du-rating.vue +127 -0
  74. package/components/DataInput/du-search/du-search.types.ts +44 -0
  75. package/components/DataInput/du-search/du-search.vue +425 -0
  76. package/components/DataInput/du-select/du-select.types.ts +31 -0
  77. package/components/DataInput/du-select/du-select.vue +384 -0
  78. package/components/DataInput/du-text-area/du-text-area.types.ts +11 -0
  79. package/components/DataInput/du-text-area/du-text-area.vue +41 -0
  80. package/components/Feedback/du-alert/du-alert.types.ts +16 -0
  81. package/components/Feedback/du-alert/du-alert.vue +113 -0
  82. package/components/Feedback/du-loading/du-loading.types.ts +11 -0
  83. package/components/Feedback/du-loading/du-loading.vue +33 -0
  84. package/components/Feedback/du-progress/du-progress.types.ts +8 -0
  85. package/components/Feedback/du-progress/du-progress.vue +23 -0
  86. package/components/Feedback/du-radial-progress/du-radial-progress.types.ts +9 -0
  87. package/components/Feedback/du-radial-progress/du-radial-progress.vue +64 -0
  88. package/components/Feedback/du-skeleton/du-skeleton.types.ts +3 -0
  89. package/components/Feedback/du-skeleton/du-skeleton.vue +11 -0
  90. package/components/Feedback/du-toast/du-toast.types.ts +11 -0
  91. package/components/Feedback/du-toast/du-toast.vue +54 -0
  92. package/components/Feedback/du-tooltip/du-tooltip.types.ts +12 -0
  93. package/components/Feedback/du-tooltip/du-tooltip.vue +55 -0
  94. package/components/Layout/du-drawer/du-drawer.types.ts +27 -0
  95. package/components/Layout/du-drawer/du-drawer.vue +224 -0
  96. package/components/Layout/du-join/du-join.types.ts +7 -0
  97. package/components/Layout/du-join/du-join.vue +31 -0
  98. package/components/Navigation/du-breadcrumbs/du-breadcrumbs.types.ts +13 -0
  99. package/components/Navigation/du-breadcrumbs/du-breadcrumbs.vue +79 -0
  100. package/components/Navigation/du-button-link/du-button-link.types.ts +17 -0
  101. package/components/Navigation/du-button-link/du-button-link.vue +77 -0
  102. package/components/Navigation/du-dock/du-dock.types.ts +19 -0
  103. package/components/Navigation/du-dock/du-dock.vue +73 -0
  104. package/components/Navigation/du-link/du-link.types.ts +7 -0
  105. package/components/Navigation/du-link/du-link.vue +25 -0
  106. package/components/Navigation/du-menu/du-menu-item.vue +160 -0
  107. package/components/Navigation/du-menu/du-menu.types.ts +33 -0
  108. package/components/Navigation/du-menu/du-menu.vue +87 -0
  109. package/components/Navigation/du-navbar/du-navbar.types.ts +3 -0
  110. package/components/Navigation/du-navbar/du-navbar.vue +21 -0
  111. package/components/Navigation/du-pagination/du-pagination.types.ts +30 -0
  112. package/components/Navigation/du-pagination/du-pagination.vue +186 -0
  113. package/components/Navigation/du-step-item/du-step-item.types.ts +9 -0
  114. package/components/Navigation/du-step-item/du-step-item.vue +46 -0
  115. package/components/Navigation/du-steps/du-steps.types.ts +20 -0
  116. package/components/Navigation/du-steps/du-steps.vue +85 -0
  117. package/components/Navigation/du-tabs/du-tabs.types.ts +25 -0
  118. package/components/Navigation/du-tabs/du-tabs.vue +96 -0
  119. package/composables/useSizeProps.ts +26 -0
  120. package/composables/useVariantProps.ts +18 -0
  121. package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
  122. package/dist/components/Actions/du-button/du-button.js +5 -0
  123. package/dist/components/Actions/du-button/du-button.types.d.ts +4 -0
  124. package/dist/components/Actions/du-button/du-button.vue.d.ts +58 -0
  125. package/dist/components/Actions/du-button/du-button.vue_vue_type_script_setup_true_lang.js +98 -0
  126. package/dist/components/Actions/du-dropdown/du-dropdown.js +5 -0
  127. package/dist/components/Actions/du-dropdown/du-dropdown.types.d.ts +4 -0
  128. package/dist/components/Actions/du-dropdown/du-dropdown.vue.d.ts +33 -0
  129. package/dist/components/Actions/du-dropdown/du-dropdown.vue_vue_type_script_setup_true_lang.js +53 -0
  130. package/dist/components/Actions/du-fab/du-fab.js +5 -0
  131. package/dist/components/Actions/du-fab/du-fab.types.d.ts +24 -0
  132. package/dist/components/Actions/du-fab/du-fab.vue.d.ts +87 -0
  133. package/dist/components/Actions/du-fab/du-fab.vue_vue_type_script_setup_true_lang.js +204 -0
  134. package/dist/components/Actions/du-modal/du-modal.js +5 -0
  135. package/dist/components/Actions/du-modal/du-modal.types.d.ts +2 -0
  136. package/dist/components/Actions/du-modal/du-modal.vue.d.ts +48 -0
  137. package/dist/components/Actions/du-modal/du-modal.vue_vue_type_script_setup_true_lang.js +92 -0
  138. package/dist/components/Actions/du-swap/du-swap.js +5 -0
  139. package/dist/components/Actions/du-swap/du-swap.types.d.ts +2 -0
  140. package/dist/components/Actions/du-swap/du-swap.vue.d.ts +36 -0
  141. package/dist/components/Actions/du-swap/du-swap.vue_vue_type_script_setup_true_lang.js +61 -0
  142. package/dist/components/DataDisplay/du-accordion/du-accordion-item.js +5 -0
  143. package/dist/components/DataDisplay/du-accordion/du-accordion-item.vue.d.ts +24 -0
  144. package/dist/components/DataDisplay/du-accordion/du-accordion-item.vue_vue_type_script_setup_true_lang.js +31 -0
  145. package/dist/components/DataDisplay/du-accordion/du-accordion.js +5 -0
  146. package/dist/components/DataDisplay/du-accordion/du-accordion.types.d.ts +8 -0
  147. package/dist/components/DataDisplay/du-accordion/du-accordion.vue.d.ts +45 -0
  148. package/dist/components/DataDisplay/du-accordion/du-accordion.vue_vue_type_script_setup_true_lang.js +45 -0
  149. package/dist/components/DataDisplay/du-avatar/du-avatar.js +7 -0
  150. package/dist/components/DataDisplay/du-avatar/du-avatar.types.d.ts +12 -0
  151. package/dist/components/DataDisplay/du-avatar/du-avatar.vue.d.ts +38 -0
  152. package/dist/components/DataDisplay/du-avatar/du-avatar.vue_vue_type_script_setup_true_lang.js +57 -0
  153. package/dist/components/DataDisplay/du-avatar/du-avatar.vue_vue_type_style_index_0_scoped_fdc61ebe_lang.css +1 -0
  154. package/dist/components/DataDisplay/du-badge/du-badge.js +5 -0
  155. package/dist/components/DataDisplay/du-badge/du-badge.types.d.ts +4 -0
  156. package/dist/components/DataDisplay/du-badge/du-badge.vue.d.ts +32 -0
  157. package/dist/components/DataDisplay/du-badge/du-badge.vue_vue_type_script_setup_true_lang.js +54 -0
  158. package/dist/components/DataDisplay/du-card/du-card.js +5 -0
  159. package/dist/components/DataDisplay/du-card/du-card.types.d.ts +4 -0
  160. package/dist/components/DataDisplay/du-card/du-card.vue.d.ts +43 -0
  161. package/dist/components/DataDisplay/du-card/du-card.vue_vue_type_script_setup_true_lang.js +61 -0
  162. package/dist/components/DataDisplay/du-carousel/du-carousel-item.js +5 -0
  163. package/dist/components/DataDisplay/du-carousel/du-carousel-item.vue.d.ts +16 -0
  164. package/dist/components/DataDisplay/du-carousel/du-carousel-item.vue_vue_type_script_setup_true_lang.js +14 -0
  165. package/dist/components/DataDisplay/du-carousel/du-carousel.js +5 -0
  166. package/dist/components/DataDisplay/du-carousel/du-carousel.types.d.ts +9 -0
  167. package/dist/components/DataDisplay/du-carousel/du-carousel.vue.d.ts +27 -0
  168. package/dist/components/DataDisplay/du-carousel/du-carousel.vue_vue_type_script_setup_true_lang.js +46 -0
  169. package/dist/components/DataDisplay/du-chat/du-chat-item.js +5 -0
  170. package/dist/components/DataDisplay/du-chat/du-chat-item.vue.d.ts +32 -0
  171. package/dist/components/DataDisplay/du-chat/du-chat-item.vue_vue_type_script_setup_true_lang.js +36 -0
  172. package/dist/components/DataDisplay/du-chat/du-chat.js +5 -0
  173. package/dist/components/DataDisplay/du-chat/du-chat.types.d.ts +18 -0
  174. package/dist/components/DataDisplay/du-chat/du-chat.vue.d.ts +38 -0
  175. package/dist/components/DataDisplay/du-chat/du-chat.vue_vue_type_script_setup_true_lang.js +55 -0
  176. package/dist/components/DataDisplay/du-collapse/du-collapse.js +5 -0
  177. package/dist/components/DataDisplay/du-collapse/du-collapse.types.d.ts +8 -0
  178. package/dist/components/DataDisplay/du-collapse/du-collapse.vue.d.ts +33 -0
  179. package/dist/components/DataDisplay/du-collapse/du-collapse.vue_vue_type_script_setup_true_lang.js +36 -0
  180. package/dist/components/DataDisplay/du-countdown/du-countdown-group.js +5 -0
  181. package/dist/components/DataDisplay/du-countdown/du-countdown-group.vue.d.ts +23 -0
  182. package/dist/components/DataDisplay/du-countdown/du-countdown-group.vue_vue_type_script_setup_true_lang.js +83 -0
  183. package/dist/components/DataDisplay/du-countdown/du-countdown.js +5 -0
  184. package/dist/components/DataDisplay/du-countdown/du-countdown.types.d.ts +8 -0
  185. package/dist/components/DataDisplay/du-countdown/du-countdown.vue.d.ts +27 -0
  186. package/dist/components/DataDisplay/du-countdown/du-countdown.vue_vue_type_script_setup_true_lang.js +67 -0
  187. package/dist/components/DataDisplay/du-diff/du-diff.js +5 -0
  188. package/dist/components/DataDisplay/du-diff/du-diff.types.d.ts +2 -0
  189. package/dist/components/DataDisplay/du-diff/du-diff.vue.d.ts +25 -0
  190. package/dist/components/DataDisplay/du-diff/du-diff.vue_vue_type_script_setup_true_lang.js +33 -0
  191. package/dist/components/DataDisplay/du-kbd/du-kbd.js +5 -0
  192. package/dist/components/DataDisplay/du-kbd/du-kbd.types.d.ts +2 -0
  193. package/dist/components/DataDisplay/du-kbd/du-kbd.vue.d.ts +19 -0
  194. package/dist/components/DataDisplay/du-kbd/du-kbd.vue_vue_type_script_setup_true_lang.js +13 -0
  195. package/dist/components/DataDisplay/du-list/du-list-row.js +5 -0
  196. package/dist/components/DataDisplay/du-list/du-list-row.vue.d.ts +17 -0
  197. package/dist/components/DataDisplay/du-list/du-list-row.vue_vue_type_script_setup_true_lang.js +22 -0
  198. package/dist/components/DataDisplay/du-list/du-list.js +5 -0
  199. package/dist/components/DataDisplay/du-list/du-list.types.d.ts +3 -0
  200. package/dist/components/DataDisplay/du-list/du-list.vue.d.ts +14 -0
  201. package/dist/components/DataDisplay/du-list/du-list.vue_vue_type_script_setup_true_lang.js +12 -0
  202. package/dist/components/DataDisplay/du-stat/du-stat.js +5 -0
  203. package/dist/components/DataDisplay/du-stat/du-stat.types.d.ts +12 -0
  204. package/dist/components/DataDisplay/du-stat/du-stat.vue.d.ts +27 -0
  205. package/dist/components/DataDisplay/du-stat/du-stat.vue_vue_type_script_setup_true_lang.js +37 -0
  206. package/dist/components/DataDisplay/du-stats/du-stats.js +7 -0
  207. package/dist/components/DataDisplay/du-stats/du-stats.types.d.ts +2 -0
  208. package/dist/components/DataDisplay/du-stats/du-stats.vue.d.ts +40 -0
  209. package/dist/components/DataDisplay/du-stats/du-stats.vue_vue_type_script_setup_true_lang.js +67 -0
  210. package/dist/components/DataDisplay/du-stats/du-stats.vue_vue_type_style_index_0_scoped_db955aa9_lang.css +1 -0
  211. package/dist/components/DataDisplay/du-status/du-status.js +5 -0
  212. package/dist/components/DataDisplay/du-status/du-status.types.d.ts +4 -0
  213. package/dist/components/DataDisplay/du-status/du-status.vue.d.ts +16 -0
  214. package/dist/components/DataDisplay/du-status/du-status.vue_vue_type_script_setup_true_lang.js +54 -0
  215. package/dist/components/DataDisplay/du-table/du-table-item.js +5 -0
  216. package/dist/components/DataDisplay/du-table/du-table-item.types.d.ts +6 -0
  217. package/dist/components/DataDisplay/du-table/du-table-item.vue.d.ts +19 -0
  218. package/dist/components/DataDisplay/du-table/du-table-item.vue_vue_type_script_setup_true_lang.js +30 -0
  219. package/dist/components/DataDisplay/du-table/du-table.js +5 -0
  220. package/dist/components/DataDisplay/du-table/du-table.types.d.ts +23 -0
  221. package/dist/components/DataDisplay/du-table/du-table.vue.d.ts +42 -0
  222. package/dist/components/DataDisplay/du-table/du-table.vue_vue_type_script_setup_true_lang.js +75 -0
  223. package/dist/components/DataDisplay/du-timeline/du-timeline-item.js +5 -0
  224. package/dist/components/DataDisplay/du-timeline/du-timeline-item.vue.d.ts +34 -0
  225. package/dist/components/DataDisplay/du-timeline/du-timeline-item.vue_vue_type_script_setup_true_lang.js +51 -0
  226. package/dist/components/DataDisplay/du-timeline/du-timeline.js +5 -0
  227. package/dist/components/DataDisplay/du-timeline/du-timeline.types.d.ts +12 -0
  228. package/dist/components/DataDisplay/du-timeline/du-timeline.vue.d.ts +61 -0
  229. package/dist/components/DataDisplay/du-timeline/du-timeline.vue_vue_type_script_setup_true_lang.js +75 -0
  230. package/dist/components/DataInput/du-checkbox/du-checkbox.js +5 -0
  231. package/dist/components/DataInput/du-checkbox/du-checkbox.types.d.ts +14 -0
  232. package/dist/components/DataInput/du-checkbox/du-checkbox.vue.d.ts +19 -0
  233. package/dist/components/DataInput/du-checkbox/du-checkbox.vue_vue_type_script_setup_true_lang.js +47 -0
  234. package/dist/components/DataInput/du-fieldset/du-fieldset.js +5 -0
  235. package/dist/components/DataInput/du-fieldset/du-fieldset.types.d.ts +4 -0
  236. package/dist/components/DataInput/du-fieldset/du-fieldset.vue.d.ts +14 -0
  237. package/dist/components/DataInput/du-fieldset/du-fieldset.vue_vue_type_script_setup_true_lang.js +21 -0
  238. package/dist/components/DataInput/du-file-input/du-file-input.js +5 -0
  239. package/dist/components/DataInput/du-file-input/du-file-input.types.d.ts +10 -0
  240. package/dist/components/DataInput/du-file-input/du-file-input.vue.d.ts +9 -0
  241. package/dist/components/DataInput/du-file-input/du-file-input.vue_vue_type_script_setup_true_lang.js +34 -0
  242. package/dist/components/DataInput/du-filter/du-filter.js +5 -0
  243. package/dist/components/DataInput/du-filter/du-filter.types.d.ts +27 -0
  244. package/dist/components/DataInput/du-filter/du-filter.vue.d.ts +17 -0
  245. package/dist/components/DataInput/du-filter/du-filter.vue_vue_type_script_setup_true_lang.js +28 -0
  246. package/dist/components/DataInput/du-input-field/du-input-field.js +5 -0
  247. package/dist/components/DataInput/du-input-field/du-input-field.types.d.ts +26 -0
  248. package/dist/components/DataInput/du-input-field/du-input-field.vue.d.ts +21 -0
  249. package/dist/components/DataInput/du-input-field/du-input-field.vue_vue_type_script_setup_true_lang.js +76 -0
  250. package/dist/components/DataInput/du-label/du-label.js +5 -0
  251. package/dist/components/DataInput/du-label/du-label.types.d.ts +3 -0
  252. package/dist/components/DataInput/du-label/du-label.vue.d.ts +14 -0
  253. package/dist/components/DataInput/du-label/du-label.vue_vue_type_script_setup_true_lang.js +19 -0
  254. package/dist/components/DataInput/du-label-input-validator/du-label-input-validator.js +5 -0
  255. package/dist/components/DataInput/du-label-input-validator/du-label-input-validator.types.d.ts +5 -0
  256. package/dist/components/DataInput/du-label-input-validator/du-label-input-validator.vue.d.ts +37 -0
  257. package/dist/components/DataInput/du-label-input-validator/du-label-input-validator.vue_vue_type_script_setup_true_lang.js +90 -0
  258. package/dist/components/DataInput/du-radio/du-radio.js +5 -0
  259. package/dist/components/DataInput/du-radio/du-radio.types.d.ts +12 -0
  260. package/dist/components/DataInput/du-radio/du-radio.vue.d.ts +9 -0
  261. package/dist/components/DataInput/du-radio/du-radio.vue_vue_type_script_setup_true_lang.js +34 -0
  262. package/dist/components/DataInput/du-range/du-range.js +5 -0
  263. package/dist/components/DataInput/du-range/du-range.types.d.ts +15 -0
  264. package/dist/components/DataInput/du-range/du-range.vue.d.ts +20 -0
  265. package/dist/components/DataInput/du-range/du-range.vue_vue_type_script_setup_true_lang.js +52 -0
  266. package/dist/components/DataInput/du-rating/du-rating-item.js +5 -0
  267. package/dist/components/DataInput/du-rating/du-rating-item.vue.d.ts +15 -0
  268. package/dist/components/DataInput/du-rating/du-rating-item.vue_vue_type_script_setup_true_lang.js +57 -0
  269. package/dist/components/DataInput/du-rating/du-rating.js +5 -0
  270. package/dist/components/DataInput/du-rating/du-rating.types.d.ts +38 -0
  271. package/dist/components/DataInput/du-rating/du-rating.vue.d.ts +34 -0
  272. package/dist/components/DataInput/du-rating/du-rating.vue_vue_type_script_setup_true_lang.js +100 -0
  273. package/dist/components/DataInput/du-search/du-search.js +5 -0
  274. package/dist/components/DataInput/du-search/du-search.types.d.ts +40 -0
  275. package/dist/components/DataInput/du-search/du-search.vue.d.ts +52 -0
  276. package/dist/components/DataInput/du-search/du-search.vue_vue_type_script_setup_true_lang.js +270 -0
  277. package/dist/components/DataInput/du-select/du-select.js +7 -0
  278. package/dist/components/DataInput/du-select/du-select.types.d.ts +28 -0
  279. package/dist/components/DataInput/du-select/du-select.vue.d.ts +60 -0
  280. package/dist/components/DataInput/du-select/du-select.vue_vue_type_script_setup_true_lang.js +321 -0
  281. package/dist/components/DataInput/du-select/du-select.vue_vue_type_style_index_0_scoped_2bcf0acd_lang.css +1 -0
  282. package/dist/components/DataInput/du-text-area/du-text-area.js +5 -0
  283. package/dist/components/DataInput/du-text-area/du-text-area.types.d.ts +10 -0
  284. package/dist/components/DataInput/du-text-area/du-text-area.vue.d.ts +15 -0
  285. package/dist/components/DataInput/du-text-area/du-text-area.vue_vue_type_script_setup_true_lang.js +46 -0
  286. package/dist/components/Feedback/du-alert/du-alert.js +5 -0
  287. package/dist/components/Feedback/du-alert/du-alert.types.d.ts +14 -0
  288. package/dist/components/Feedback/du-alert/du-alert.vue.d.ts +25 -0
  289. package/dist/components/Feedback/du-alert/du-alert.vue_vue_type_script_setup_true_lang.js +94 -0
  290. package/dist/components/Feedback/du-loading/du-loading.js +5 -0
  291. package/dist/components/Feedback/du-loading/du-loading.types.d.ts +9 -0
  292. package/dist/components/Feedback/du-loading/du-loading.vue.d.ts +8 -0
  293. package/dist/components/Feedback/du-loading/du-loading.vue_vue_type_script_setup_true_lang.js +30 -0
  294. package/dist/components/Feedback/du-progress/du-progress.js +5 -0
  295. package/dist/components/Feedback/du-progress/du-progress.types.d.ts +7 -0
  296. package/dist/components/Feedback/du-progress/du-progress.vue.d.ts +9 -0
  297. package/dist/components/Feedback/du-progress/du-progress.vue_vue_type_script_setup_true_lang.js +29 -0
  298. package/dist/components/Feedback/du-radial-progress/du-radial-progress.js +7 -0
  299. package/dist/components/Feedback/du-radial-progress/du-radial-progress.types.d.ts +8 -0
  300. package/dist/components/Feedback/du-radial-progress/du-radial-progress.vue.d.ts +19 -0
  301. package/dist/components/Feedback/du-radial-progress/du-radial-progress.vue_vue_type_script_setup_true_lang.js +31 -0
  302. package/dist/components/Feedback/du-radial-progress/du-radial-progress.vue_vue_type_style_index_0_scoped_4d489040_lang.css +1 -0
  303. package/dist/components/Feedback/du-skeleton/du-skeleton.js +5 -0
  304. package/dist/components/Feedback/du-skeleton/du-skeleton.types.d.ts +3 -0
  305. package/dist/components/Feedback/du-skeleton/du-skeleton.vue.d.ts +14 -0
  306. package/dist/components/Feedback/du-skeleton/du-skeleton.vue_vue_type_script_setup_true_lang.js +12 -0
  307. package/dist/components/Feedback/du-toast/du-toast.js +5 -0
  308. package/dist/components/Feedback/du-toast/du-toast.types.d.ts +9 -0
  309. package/dist/components/Feedback/du-toast/du-toast.vue.d.ts +20 -0
  310. package/dist/components/Feedback/du-toast/du-toast.vue_vue_type_script_setup_true_lang.js +45 -0
  311. package/dist/components/Feedback/du-tooltip/du-tooltip.js +5 -0
  312. package/dist/components/Feedback/du-tooltip/du-tooltip.types.d.ts +10 -0
  313. package/dist/components/Feedback/du-tooltip/du-tooltip.vue.d.ts +22 -0
  314. package/dist/components/Feedback/du-tooltip/du-tooltip.vue_vue_type_script_setup_true_lang.js +44 -0
  315. package/dist/components/Layout/du-drawer/du-drawer.js +5 -0
  316. package/dist/components/Layout/du-drawer/du-drawer.types.d.ts +23 -0
  317. package/dist/components/Layout/du-drawer/du-drawer.vue.d.ts +58 -0
  318. package/dist/components/Layout/du-drawer/du-drawer.vue_vue_type_script_setup_true_lang.js +129 -0
  319. package/dist/components/Layout/du-join/du-join.js +5 -0
  320. package/dist/components/Layout/du-join/du-join.types.d.ts +6 -0
  321. package/dist/components/Layout/du-join/du-join.vue.d.ts +17 -0
  322. package/dist/components/Layout/du-join/du-join.vue_vue_type_script_setup_true_lang.js +24 -0
  323. package/dist/components/Navigation/du-breadcrumbs/du-breadcrumbs.js +7 -0
  324. package/dist/components/Navigation/du-breadcrumbs/du-breadcrumbs.types.d.ts +11 -0
  325. package/dist/components/Navigation/du-breadcrumbs/du-breadcrumbs.vue.d.ts +6 -0
  326. package/dist/components/Navigation/du-breadcrumbs/du-breadcrumbs.vue_vue_type_script_setup_true_lang.js +42 -0
  327. package/dist/components/Navigation/du-breadcrumbs/du-breadcrumbs.vue_vue_type_style_index_0_scoped_9364edec_lang.css +1 -0
  328. package/dist/components/Navigation/du-button-link/du-button-link.js +5 -0
  329. package/dist/components/Navigation/du-button-link/du-button-link.types.d.ts +16 -0
  330. package/dist/components/Navigation/du-button-link/du-button-link.vue.d.ts +27 -0
  331. package/dist/components/Navigation/du-button-link/du-button-link.vue_vue_type_script_setup_true_lang.js +71 -0
  332. package/dist/components/Navigation/du-dock/du-dock.js +5 -0
  333. package/dist/components/Navigation/du-dock/du-dock.types.d.ts +16 -0
  334. package/dist/components/Navigation/du-dock/du-dock.vue.d.ts +59 -0
  335. package/dist/components/Navigation/du-dock/du-dock.vue_vue_type_script_setup_true_lang.js +56 -0
  336. package/dist/components/Navigation/du-link/du-link.js +5 -0
  337. package/dist/components/Navigation/du-link/du-link.types.d.ts +6 -0
  338. package/dist/components/Navigation/du-link/du-link.vue.d.ts +18 -0
  339. package/dist/components/Navigation/du-link/du-link.vue_vue_type_script_setup_true_lang.js +28 -0
  340. package/dist/components/Navigation/du-menu/du-menu-item.js +5 -0
  341. package/dist/components/Navigation/du-menu/du-menu-item.vue.d.ts +17 -0
  342. package/dist/components/Navigation/du-menu/du-menu-item.vue_vue_type_script_setup_true_lang.js +186 -0
  343. package/dist/components/Navigation/du-menu/du-menu.js +6 -0
  344. package/dist/components/Navigation/du-menu/du-menu.types.d.ts +29 -0
  345. package/dist/components/Navigation/du-menu/du-menu.vue.d.ts +26 -0
  346. package/dist/components/Navigation/du-menu/du-menu.vue_vue_type_script_setup_true_lang.js +57 -0
  347. package/dist/components/Navigation/du-menu/du-menu.vue_vue_type_style_index_0_lang.css +1 -0
  348. package/dist/components/Navigation/du-navbar/du-navbar.js +5 -0
  349. package/dist/components/Navigation/du-navbar/du-navbar.types.d.ts +2 -0
  350. package/dist/components/Navigation/du-navbar/du-navbar.vue.d.ts +20 -0
  351. package/dist/components/Navigation/du-navbar/du-navbar.vue_vue_type_script_setup_true_lang.js +24 -0
  352. package/dist/components/Navigation/du-pagination/du-pagination.js +7 -0
  353. package/dist/components/Navigation/du-pagination/du-pagination.types.d.ts +29 -0
  354. package/dist/components/Navigation/du-pagination/du-pagination.vue.d.ts +51 -0
  355. package/dist/components/Navigation/du-pagination/du-pagination.vue_vue_type_script_setup_true_lang.js +156 -0
  356. package/dist/components/Navigation/du-pagination/du-pagination.vue_vue_type_style_index_0_scoped_7407b690_lang.css +1 -0
  357. package/dist/components/Navigation/du-step-item/du-step-item.js +5 -0
  358. package/dist/components/Navigation/du-step-item/du-step-item.types.d.ts +8 -0
  359. package/dist/components/Navigation/du-step-item/du-step-item.vue.d.ts +24 -0
  360. package/dist/components/Navigation/du-step-item/du-step-item.vue_vue_type_script_setup_true_lang.js +27 -0
  361. package/dist/components/Navigation/du-steps/du-steps.js +5 -0
  362. package/dist/components/Navigation/du-steps/du-steps.types.d.ts +17 -0
  363. package/dist/components/Navigation/du-steps/du-steps.vue.d.ts +40 -0
  364. package/dist/components/Navigation/du-steps/du-steps.vue_vue_type_script_setup_true_lang.js +44 -0
  365. package/dist/components/Navigation/du-tabs/du-tabs.js +5 -0
  366. package/dist/components/Navigation/du-tabs/du-tabs.types.d.ts +22 -0
  367. package/dist/components/Navigation/du-tabs/du-tabs.vue.d.ts +50 -0
  368. package/dist/components/Navigation/du-tabs/du-tabs.vue_vue_type_script_setup_true_lang.js +76 -0
  369. package/dist/composables/useSizeProps.d.ts +15 -0
  370. package/dist/composables/useSizeProps.js +22 -0
  371. package/dist/composables/useVariantProps.d.ts +14 -0
  372. package/dist/composables/useVariantProps.js +7 -0
  373. package/dist/index.d.ts +66 -0
  374. package/dist/index.js +65 -0
  375. package/dist/plugin-vite.d.ts +64 -0
  376. package/dist/plugin-vite.js +137 -0
  377. package/dist/types/index.d.ts +58 -0
  378. package/index.css +5 -0
  379. package/index.ts +69 -0
  380. package/package.json +99 -0
  381. package/plugin-vite.ts +286 -0
  382. package/types/index.ts +59 -0
  383. package/types/types.sh +80 -0
@@ -0,0 +1,77 @@
1
+ <script setup lang="ts">
2
+ import { computed } from "vue";
3
+ import { type ButtonLinkProps } from './du-button-link.types';
4
+ import { useVariantMapping } from "../../../composables/useVariantProps";
5
+ import { useSizeMapping } from "../../../composables/useSizeProps";
6
+
7
+ const props = withDefaults(
8
+ defineProps<ButtonLinkProps>(),
9
+ {
10
+ size: "default",
11
+ variant: "default",
12
+ outline: false,
13
+ soft: false,
14
+ dash: false,
15
+ active: false,
16
+ ghost: false,
17
+ link: false,
18
+ wide: false,
19
+ square: false,
20
+ circle: false,
21
+ block: false,
22
+ },
23
+ );
24
+ const { sizeClass } = useSizeMapping(props, "btn");
25
+ const { colorClass } = useVariantMapping(props, "btn");
26
+ const softClass = computed(() => {
27
+ return props.soft ? "btn-soft" : "";
28
+ });
29
+ const outlineClass = computed(() => {
30
+ return props.outline ? "btn-outline" : "";
31
+ });
32
+ const dashClass = computed(() => {
33
+ return props.dash ? "btn-dash" : "";
34
+ });
35
+ const activeClass = computed(() => {
36
+ return props.active ? "btn-active" : "";
37
+ });
38
+ const ghostClass = computed(() => {
39
+ return props.ghost ? "btn-ghost" : "";
40
+ });
41
+ const linkClass = computed(() => {
42
+ return props.link ? "btn-link" : "";
43
+ });
44
+ const wideClass = computed(() => {
45
+ return props.wide ? "btn-wide" : "";
46
+ });
47
+ const squareClass = computed(() => {
48
+ return props.square ? "btn-square" : "";
49
+ });
50
+ const circleClass = computed(() => {
51
+ return props.circle ? "btn-circle" : "";
52
+ });
53
+ const blockClass = computed(() => {
54
+ return props.block ? "btn-block" : "";
55
+ });
56
+ </script>
57
+ <template>
58
+ <a
59
+ :class="[
60
+ 'btn',
61
+ sizeClass,
62
+ colorClass,
63
+ softClass,
64
+ outlineClass,
65
+ dashClass,
66
+ activeClass,
67
+ ghostClass,
68
+ linkClass,
69
+ wideClass,
70
+ squareClass,
71
+ circleClass,
72
+ blockClass,
73
+ ]"
74
+ >
75
+ <slot></slot>
76
+ </a>
77
+ </template>
@@ -0,0 +1,19 @@
1
+ import { type Size } from "../../../composables/useSizeProps";
2
+
3
+ export const DOCK_SIZES = ['dock-xs', 'dock-sm', 'dock-md', 'dock-lg', 'dock-xl'] as const
4
+
5
+ export type DOCKSize = (typeof DOCK_SIZES)[number]
6
+ export interface DockItem {
7
+ label?: string;
8
+ icon?: any;
9
+ class?: string;
10
+ active?: boolean;
11
+ onClick?: () => void;
12
+ [key: string]: any;
13
+ }
14
+
15
+ export interface DockProps {
16
+ size?: Size;
17
+ items?: DockItem[];
18
+ reverseTheme?: boolean;
19
+ }
@@ -0,0 +1,73 @@
1
+ <script setup lang="ts">
2
+ import { ref } from "vue";
3
+ import { type DockItem, type DockProps } from './du-dock.types';
4
+ import { useSizeMapping } from "../../../composables/useSizeProps";
5
+
6
+ const props = withDefaults(
7
+ defineProps<DockProps>(),
8
+ {
9
+ size: "default",
10
+ items: undefined,
11
+ reverseTheme: false,
12
+ },
13
+ );
14
+
15
+ const { sizeClass } = useSizeMapping(props, "dock");
16
+
17
+ const emit = defineEmits<{
18
+ change: [item: DockItem | undefined]
19
+ }>();
20
+
21
+ const firstActiveItem = props.items?.findIndex((item) => item.active) ?? 0;
22
+ const activeItem = ref(firstActiveItem > -1 ? firstActiveItem : 0);
23
+ const selectedItem = ref(props.items?.[activeItem.value]);
24
+
25
+ const setActiveItem = (index: number) => {
26
+ activeItem.value = index;
27
+ selectedItem.value = props.items?.[activeItem.value];
28
+ emit("change", selectedItem.value);
29
+ selectedItem.value?.onClick?.();
30
+ };
31
+ const isActive = (index: number) => {
32
+ return activeItem.value === index;
33
+ };
34
+
35
+ defineExpose({
36
+ activeItem,
37
+ selectedItem,
38
+ });
39
+ </script>
40
+
41
+ <template>
42
+ <div :class="[
43
+ 'dock',
44
+ sizeClass,
45
+ reverseTheme && 'bg-neutral text-neutral-content',
46
+ ]">
47
+ <template v-if="$slots.default">
48
+ <slot></slot>
49
+ </template>
50
+ <template v-else-if="items">
51
+ <button v-for="(item, index) in items" :key="index" @click="setActiveItem(index)"
52
+ :class="[item.class, isActive(index) && 'dock-active']">
53
+ <slot name="icon" :item="item" :index="index">
54
+ <slot :name="`icon-${index}`" :item="item" :index="index">
55
+ <component :is="item.icon" v-if="typeof item.icon === 'object'" />
56
+ <img v-else-if="
57
+ typeof item.icon === 'string' && item.icon.startsWith('http')
58
+ " :src="item.icon" :alt="item.label" />
59
+ <div v-else-if="typeof item.icon === 'string'" v-html="item.icon"></div>
60
+ </slot>
61
+ </slot>
62
+
63
+ <span v-if="item.label || $slots.label" :class="'dock-label'">
64
+ <slot name="label" :item="item" :index="index">
65
+ <slot :name="`label-${index}`" :item="item" :index="index">
66
+ {{ item.label }}
67
+ </slot>
68
+ </slot>
69
+ </span>
70
+ </button>
71
+ </template>
72
+ </div>
73
+ </template>
@@ -0,0 +1,7 @@
1
+ import { type Variant } from "../../../composables/useVariantProps";
2
+
3
+ export interface LinkProps {
4
+ variant?: Variant;
5
+ onlyUnderlineOnHover?: boolean;
6
+ ghost?: boolean;
7
+ }
@@ -0,0 +1,25 @@
1
+ <script setup lang="ts">
2
+ import { computed } from "vue";
3
+ import { type LinkProps } from './du-link.types';
4
+ import { useVariantMapping } from "../../../composables/useVariantProps";
5
+
6
+ const props = withDefaults(
7
+ defineProps<LinkProps>(),
8
+ {
9
+ variant: "default",
10
+ onlyUnderlineOnHover: false,
11
+ ghost: false,
12
+ },
13
+ );
14
+ const { colorClass } = useVariantMapping(props, "link");
15
+ const hoverClass = computed(() => {
16
+ return props.onlyUnderlineOnHover ? "link-hover" : "";
17
+ });
18
+ const ghostClass = computed(() => {
19
+ return props.ghost ? "link-ghost" : "";
20
+ });
21
+ </script>
22
+
23
+ <template>
24
+ <a :class="['link', colorClass, hoverClass, ghostClass]"><slot /></a>
25
+ </template>
@@ -0,0 +1,160 @@
1
+ <script setup lang="ts">
2
+ import { computed } from 'vue';
3
+ import { type MenuItem } from './du-menu.types';
4
+
5
+ const props = defineProps<{
6
+ item: MenuItem;
7
+ index: number;
8
+ parentIndex?: string;
9
+ onItemClick?: (item: MenuItem) => void;
10
+ onSubItemClick?: (item: MenuItem) => void;
11
+ }>();
12
+
13
+ // Typed via defineSlots so the recursive slot forwarding below stays type-safe.
14
+ const _slots = defineSlots();
15
+
16
+ const idx = computed(() => props.parentIndex ? `${props.parentIndex}-${props.index}` : `${props.index}`);
17
+
18
+ const ROUTER_COMPONENTS = ['RouterLink', 'router-link', 'NuxtLink', 'nuxt-link'];
19
+
20
+ const linkTag = computed(() => props.item.as || 'a');
21
+
22
+ const isRouterComponent = computed(() => {
23
+ const tag = props.item.as;
24
+ if (!tag) return false;
25
+ if (typeof tag === 'string') return ROUTER_COMPONENTS.includes(tag);
26
+ return tag.name ? ROUTER_COMPONENTS.includes(tag.name) : false;
27
+ });
28
+
29
+ const linkProps = computed(() => {
30
+ if (isRouterComponent.value) {
31
+ return { to: props.item.href };
32
+ }
33
+ return { href: props.item.href };
34
+ });
35
+
36
+ // Détermine si l'item est actif (sélectionné)
37
+ const isActive = computed(() => {
38
+ if (props.item.multiple) {
39
+ return props.item.checked
40
+ } else {
41
+ return props.item.checked || props.item.active
42
+ }
43
+ });
44
+
45
+ function handleClick() {
46
+ props.item.onClick?.();
47
+ const callback = props.parentIndex ? props.onSubItemClick : props.onItemClick;
48
+ callback?.(props.item);
49
+ }
50
+ </script>
51
+
52
+ <template>
53
+ <!-- Titre simple (menu-title) -->
54
+ <template v-if="item.isTitle && !item.subItems">
55
+ <template v-if="$slots[`title-${idx}`]">
56
+ <slot :name="`title-${idx}`" :item="item" :index="index" />
57
+ </template>
58
+ <template v-else-if="$slots.title">
59
+ <slot name="title" :item="item" :index="index" />
60
+ </template>
61
+ <template v-else>
62
+ <li class="menu-title">{{ item.label }}</li>
63
+ </template>
64
+ </template>
65
+ <!-- Titre parent (menu-title + sous-menu) -->
66
+ <template v-else-if="item.isTitle && item.subItems">
67
+ <template v-if="$slots[`title-${idx}`]">
68
+ <slot :name="`title-${idx}`" :item="item" :index="index" />
69
+ <ul role="listbox">
70
+ <du-menu-item v-for="(sub, subIndex) in item.subItems" :key="subIndex" :item="sub" :index="subIndex"
71
+ :parent-index="idx" :onItemClick="onItemClick" :onSubItemClick="onSubItemClick" v-bind="$attrs">
72
+ <template v-for="(_, name) in $slots" #[name]="slotProps">
73
+ <slot :name="name" v-bind="slotProps" />
74
+ </template>
75
+ </du-menu-item>
76
+ </ul>
77
+ </template>
78
+ <template v-else-if="$slots.title">
79
+ <slot name="title" :item="item" :index="index" />
80
+ <ul role="listbox">
81
+ <du-menu-item v-for="(sub, subIndex) in item.subItems" :key="subIndex" :item="sub" :index="subIndex"
82
+ :parent-index="idx" :onItemClick="onItemClick" :onSubItemClick="onSubItemClick" v-bind="$attrs">
83
+ <template v-for="(_, name) in $slots" #[name]="slotProps">
84
+ <slot :name="name" v-bind="slotProps" />
85
+ </template>
86
+ </du-menu-item>
87
+ </ul>
88
+ </template>
89
+ <template v-else>
90
+ <li>
91
+ <h2 class="menu-title">{{ item.label }}</h2>
92
+ <ul role="listbox">
93
+ <du-menu-item v-for="(sub, subIndex) in item.subItems" :key="subIndex" :item="sub" :index="subIndex"
94
+ :parent-index="idx" :onItemClick="onItemClick" :onSubItemClick="onSubItemClick" v-bind="$attrs">
95
+ <template v-for="(_, name) in $slots" #[name]="slotProps">
96
+ <slot :name="name" v-bind="slotProps" />
97
+ </template>
98
+ </du-menu-item>
99
+ </ul>
100
+ </li>
101
+ </template>
102
+ </template>
103
+ <!-- Item avec sous-menu -->
104
+ <template v-else-if="item.subItems">
105
+ <template v-if="$slots[`submenu-${idx}`]">
106
+ <slot :name="`submenu-${idx}`" :item="item" :index="index" />
107
+ </template>
108
+ <template v-else-if="$slots.submenu">
109
+ <slot name="submenu" :item="item" :index="index" />
110
+ </template>
111
+ <template v-else>
112
+ <li>
113
+ <component :is="linkTag" :role="item.disabled ? undefined : 'option'" v-bind="linkProps" :class="{
114
+ 'menu-disabled': item.disabled,
115
+ 'menu-active': isActive
116
+ }" @click.stop="handleClick">
117
+ <component :is="item.icon" v-if="typeof item.icon === 'object'" />
118
+ <img v-else-if="typeof item.icon === 'string' && item.icon.startsWith('http')" :src="item.icon"
119
+ :alt="item.label" class="w-5 h-5" />
120
+ <div v-else-if="typeof item.icon === 'string'" v-html="item.icon"></div>
121
+ {{ item.label }}
122
+ <slot name="additional" :item="item" :index="index"></slot>
123
+ </component>
124
+ <ul role="listbox">
125
+ <du-menu-item v-for="(sub, subIndex) in item.subItems" :key="subIndex" :item="sub" :index="subIndex"
126
+ :parent-index="idx" :onItemClick="onItemClick" :onSubItemClick="onSubItemClick" v-bind="$attrs">
127
+ <template v-for="(_, name) in $slots" #[name]="slotProps">
128
+ <slot :name="name" v-bind="slotProps" />
129
+ </template>
130
+ </du-menu-item>
131
+ </ul>
132
+ </li>
133
+ </template>
134
+ </template>
135
+ <!-- Item simple -->
136
+ <template v-else>
137
+ <template v-if="$slots[`item-${idx}`]">
138
+ <slot :name="`item-${idx}`" :item="item" :index="index" />
139
+ </template>
140
+ <template v-else-if="$slots.item">
141
+ <slot name="item" :item="item" :index="index" />
142
+ </template>
143
+ <template v-else>
144
+ <li :class="{ 'menu-disabled': item.disabled }">
145
+ <component :is="linkTag" :role="item.disabled ? undefined : 'option'" v-bind="linkProps" :class="{ 'menu-active': isActive }"
146
+ @click.stop="handleClick">
147
+ <!-- Checkbox pour sélection multiple -->
148
+ <input v-if="item.multiple && item.value !== undefined" type="checkbox"
149
+ class="invisible w-0 h-0 overflow-clip" :checked="item.checked" disabled>
150
+ <component :is="item.icon" v-if="typeof item.icon === 'object'" />
151
+ <img v-else-if="typeof item.icon === 'string' && item.icon.startsWith('http')" :src="item.icon"
152
+ :alt="item.label" class="w-5 h-5" />
153
+ <div v-else-if="typeof item.icon === 'string'" v-html="item.icon"></div>
154
+ {{ item.label }}
155
+ <slot name="additional" :item="item" :index="index"></slot>
156
+ </component>
157
+ </li>
158
+ </template>
159
+ </template>
160
+ </template>
@@ -0,0 +1,33 @@
1
+ import type { Component } from "vue";
2
+ import { type Size } from "../../../composables/useSizeProps";
3
+
4
+ export const DU_MENU_DIRECTIONS = ["default", "vertical", "horizontal", "responsive"] as const;
5
+ export type MenuDirection = (typeof DU_MENU_DIRECTIONS)[number];
6
+
7
+ export const MENU_SIZES = ['menu-xs', 'menu-sm', 'menu-md', 'menu-lg', 'menu-xl'] as const
8
+ export type MENUSize = (typeof MENU_SIZES)[number]
9
+
10
+ export interface MenuItem {
11
+ label: string;
12
+ href?: string;
13
+ as?: string | Component;
14
+ disabled?: boolean;
15
+ isTitle?: boolean;
16
+ subItems?: MenuItem[];
17
+ value?: string | number;
18
+ onClick?: () => void;
19
+ checked?: boolean;
20
+ multiple?: boolean;
21
+ active?: boolean;
22
+ icon?: Component | string | object | unknown;
23
+ }
24
+
25
+ export interface MenuProps {
26
+ direction?: MenuDirection;
27
+ size?: Size;
28
+ rounded?: boolean;
29
+ items?: MenuItem[];
30
+ activeItem?: string;
31
+ onItemClick?: (item: MenuItem) => void;
32
+ onSubItemClick?: (item: MenuItem) => void;
33
+ }
@@ -0,0 +1,87 @@
1
+ <script setup lang="ts">
2
+ import { computed, inject } from "vue";
3
+ import { type MenuProps, type MenuItem } from './du-menu.types';
4
+ import { useSizeMapping } from "../../../composables/useSizeProps";
5
+ import DuMenuItem from './du-menu-item.vue';
6
+
7
+ const props = withDefaults(
8
+ defineProps<MenuProps>(),
9
+ {
10
+ direction: "vertical",
11
+ size: "default",
12
+ rounded: true,
13
+ },
14
+ );
15
+
16
+ const emit = defineEmits<{
17
+ itemClick: [item: MenuItem];
18
+ subItemClick: [item: MenuItem];
19
+ }>();
20
+
21
+ function handleItemClick(item: MenuItem) {
22
+ props.onItemClick?.(item);
23
+ emit('itemClick', item);
24
+ }
25
+
26
+ function handleSubItemClick(item: MenuItem) {
27
+ props.onSubItemClick?.(item);
28
+ emit('subItemClick', item);
29
+ }
30
+
31
+ const isInDropdownTrigger = inject("isDropdownTrigger", false);
32
+
33
+ const directionClass = computed(() => {
34
+ return {
35
+ default: "",
36
+ vertical: "menu-vertical",
37
+ horizontal: "menu-horizontal",
38
+ responsive: "menu-vertical lg:menu-horizontal",
39
+ }[props.direction];
40
+ });
41
+ const { sizeClass } = useSizeMapping(props, "menu");
42
+ const roundedClass = computed(() => {
43
+ return props.rounded ? "rounded-box" : "[&_li>*]:rounded-none p-0";
44
+ });
45
+ const inDropdownClass = computed(() => {
46
+ return isInDropdownTrigger ? "" : "bg-base-200";
47
+ });
48
+
49
+ const ariaOrientation = computed(() => {
50
+ return props.direction === "horizontal" || props.direction === "responsive" ? "horizontal" : "vertical";
51
+ });
52
+ // Slots documentation : voir le template pour la gestion des slots indexés et globaux.
53
+ </script>
54
+
55
+ <template>
56
+ <ul role="listbox" :aria-orientation="ariaOrientation" :class="['menu', inDropdownClass, roundedClass, directionClass, sizeClass]">
57
+ <!-- Mode automatique (items) -->
58
+ <template v-if="items && !$slots.default">
59
+ <DuMenuItem
60
+ v-for="(item, index) in items"
61
+ :key="index"
62
+ :item="item"
63
+ :index="index"
64
+ :onItemClick="handleItemClick"
65
+ :onSubItemClick="handleSubItemClick"
66
+ >
67
+ <!-- Transmission de tous les slots au composant enfant -->
68
+ <template v-for="(_, name) in $slots" #[name]="slotProps">
69
+ <slot :name="name" v-bind="slotProps" />
70
+ </template>
71
+ </DuMenuItem>
72
+ </template>
73
+ <!-- Mode manuel (slot) -->
74
+ <template v-else>
75
+ <slot />
76
+ </template>
77
+ </ul>
78
+ </template>
79
+
80
+
81
+ <style>
82
+
83
+ .menu * a, .menu * button {
84
+ margin: .125rem 0;
85
+ }
86
+
87
+ </style>
@@ -0,0 +1,3 @@
1
+ // The Navbar component has no specific props for now.
2
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
3
+ export interface NavbarProps {}
@@ -0,0 +1,21 @@
1
+ <script setup lang="ts">
2
+ import { type NavbarProps } from './du-navbar.types';
3
+
4
+ defineProps<NavbarProps>();
5
+ </script>
6
+
7
+ <template>
8
+ <nav class="navbar bg-base-100 shadow-sm">
9
+ <div v-if="$slots.start" class="navbar-start">
10
+ <slot name="start"></slot>
11
+ </div>
12
+ <div v-if="$slots.center" class="navbar-center">
13
+ <slot name="center"></slot>
14
+ </div>
15
+ <div v-if="$slots.end" class="navbar-end">
16
+ <slot name="end"></slot>
17
+ </div>
18
+
19
+ <slot></slot>
20
+ </nav>
21
+ </template>
@@ -0,0 +1,30 @@
1
+ import { type Size } from "../../../composables/useSizeProps";
2
+ import { type Variant } from "../../../composables/useVariantProps";
3
+
4
+ export interface PaginationProps {
5
+ modelValue?: number;
6
+ total: number;
7
+ perPage?: number;
8
+ showNext?: boolean;
9
+ showPrevious?: boolean;
10
+ showFirst?: boolean;
11
+ showLast?: boolean;
12
+ size?: Size;
13
+ nextLabel?: string;
14
+ previousLabel?: string;
15
+ firstLabel?: string;
16
+ lastLabel?: string;
17
+ variant?: Variant;
18
+ outline?: boolean;
19
+ manual?: boolean;
20
+ showEllipsis?: boolean;
21
+ maxPages?: number;
22
+ soft?: boolean;
23
+ /** Accessible name of the navigation landmark. */
24
+ ariaLabel?: string;
25
+ /** Accessible labels for the symbol-only buttons. */
26
+ previousAriaLabel?: string;
27
+ nextAriaLabel?: string;
28
+ firstAriaLabel?: string;
29
+ lastAriaLabel?: string;
30
+ }