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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Theo Lecoublet
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,95 @@
1
+ # Cornet
2
+
3
+ > Vue 3 component library built on [DaisyUI 5](https://daisyui.com/) and [Tailwind CSS 4](https://tailwindcss.com/).
4
+
5
+ **Cornet** (formerly `daisyui-vue-kit`) provides 55+ typed components (`DuButton`, `DuSelect`, `DuModal`, …), composables, and a Vite plugin. It is designed to work both as a **regular package** and as **embedded source** copied directly into your project — readable, modifiable, no build step required.
6
+
7
+ 📖 Documentation & live previews: **[cornet-ui.com](https://cornet-ui.com)**
8
+
9
+ ## Installation
10
+
11
+ Cornet is distributed in several ways — pick the one that fits your workflow:
12
+
13
+ | Mode | How | Best for |
14
+ |------|-----|----------|
15
+ | **Git submodule (embedded)** | `git submodule add -b lib git@gitlab.limos.fr:hub-isima/daisyui-vue-kit.git lib` | Full control, local modifications |
16
+ | **Full clone** | `git clone --recurse-submodules git@gitlab.limos.fr:hub-isima/daisyui-vue-kit.git` | Contributing, exploring |
17
+ | **GitHub mirror** | [t-lecoublet/Cornet](https://github.com/t-lecoublet/Cornet) | GitHub-based workflows |
18
+ | **npm registry** | _coming soon_ (`cornet-ui`) | Classic dependency management |
19
+
20
+ > **Note:** the source distribution ships raw `.ts`/`.vue` files (ESM only). Your project needs Vite (or another bundler) with `@vitejs/plugin-vue` and TypeScript.
21
+
22
+ After adding the submodule, declare the local dependency:
23
+
24
+ ```json
25
+ {
26
+ "dependencies": {
27
+ "cornet-ui": "file:lib"
28
+ }
29
+ }
30
+ ```
31
+
32
+ ## Quick start
33
+
34
+ ```ts
35
+ // vite.config.ts
36
+ import vue from '@vitejs/plugin-vue'
37
+ import tailwindcss from '@tailwindcss/vite'
38
+
39
+ export default defineConfig({
40
+ plugins: [vue(), tailwindcss()],
41
+ })
42
+ ```
43
+
44
+ ```css
45
+ /* main.css */
46
+ @import "tailwindcss";
47
+ @plugin "daisyui";
48
+ @import "cornet-ui/css";
49
+ ```
50
+
51
+ ```vue
52
+ <script setup lang="ts">
53
+ import { DuButton } from 'cornet-ui'
54
+ </script>
55
+
56
+ <template>
57
+ <DuButton variant="primary">Hello Cornet</DuButton>
58
+ </template>
59
+ ```
60
+
61
+ Types are available from the main entry or from `cornet-ui/types`:
62
+
63
+ ```ts
64
+ import type { MenuItem, SELECTProps } from 'cornet-ui/types'
65
+ ```
66
+
67
+ ## Peer dependencies
68
+
69
+ - `vue` >= 3.5
70
+ - `daisyui` >= 5.5
71
+ - `tailwindcss` >= 4.0
72
+ - `vite` >= 6.0 (optional — required for the Vite plugin and source mode)
73
+
74
+ ## Project structure
75
+
76
+ ```
77
+ lib/
78
+ ├── index.ts # All components & composables
79
+ ├── index.css # CSS entry
80
+ ├── plugin-vite.ts # Optional Vite plugin (unused-component CSS exclusion)
81
+ ├── types/index.ts # All TypeScript types (generated)
82
+ ├── composables/ # useSizeMapping, useVariantMapping
83
+ └── components/ # Actions, DataDisplay, DataInput, Feedback, Layout, Navigation
84
+ ```
85
+
86
+ Every component follows the same triplet: `du-{name}.vue` + `du-{name}.types.ts` + `du-{name}.stories.ts`.
87
+
88
+ ## Repositories
89
+
90
+ - **Source of truth:** [GitLab LIMOS](https://gitlab.limos.fr/hub-isima/daisyui-vue-kit) (CNRS/LIMOS)
91
+ - **Mirror:** [GitHub — t-lecoublet/Cornet](https://github.com/t-lecoublet/Cornet)
92
+
93
+ ## License
94
+
95
+ [MIT](./LICENSE)
@@ -0,0 +1,14 @@
1
+ export const BUTTON_SIZES = ['btn-xs', 'btn-sm', 'btn-md', 'btn-lg', 'btn-xl'] as const
2
+ export const BUTTON_COLORS = [
3
+ 'btn-primary',
4
+ 'btn-secondary',
5
+ 'btn-accent',
6
+ 'btn-neutral',
7
+ 'btn-info',
8
+ 'btn-success',
9
+ 'btn-warning',
10
+ 'btn-error',
11
+ ] as const
12
+
13
+ export type BUTTONSize = (typeof BUTTON_SIZES)[number]
14
+ export type BUTTONColor = (typeof BUTTON_COLORS)[number]
@@ -0,0 +1,149 @@
1
+ <script setup lang="ts">
2
+ import { type Size, useSizeMapping } from '../../../composables/useSizeProps'
3
+ import { useVariantMapping, type Variant } from '../../../composables/useVariantProps'
4
+ import { computed, inject } from 'vue'
5
+
6
+ type ElementType = 'button' | 'a' | 'input' | 'div' | 'RouterLink' | 'NuxtLink' | string
7
+
8
+ const props = withDefaults(
9
+ defineProps<{
10
+ customClass?: string
11
+ size?: Size
12
+ variant?: Variant
13
+ outline?: boolean
14
+ soft?: boolean
15
+ dash?: boolean
16
+ active?: boolean
17
+ ghost?: boolean
18
+ link?: boolean
19
+ wide?: boolean
20
+ disabled?: boolean
21
+ square?: boolean
22
+ circle?: boolean
23
+ block?: boolean
24
+ as?: ElementType
25
+ type?: string
26
+ href?: string
27
+ value?: string
28
+ inputType?: 'button' | 'submit' | 'reset' | 'radio' | 'checkbox'
29
+ label?: string
30
+ }>(),
31
+ {
32
+ customClass: undefined,
33
+ size: 'default',
34
+ variant: 'default',
35
+ outline: false,
36
+ soft: false,
37
+ dash: false,
38
+ active: false,
39
+ ghost: false,
40
+ link: false,
41
+ wide: false,
42
+ disabled: undefined,
43
+ square: false,
44
+ circle: false,
45
+ block: false,
46
+ type: undefined,
47
+ href: undefined,
48
+ value: undefined,
49
+ inputType: undefined,
50
+ label: undefined,
51
+ },
52
+ )
53
+
54
+ const isInDropdownTrigger = inject('isDropdownTrigger', false)
55
+ const inJoin = inject("isInJoin", false)
56
+ const filterName = inject('filterName', undefined)
57
+
58
+ const { sizeClass } = useSizeMapping(props, 'btn')
59
+ const { colorClass } = useVariantMapping(props, 'btn')
60
+ const softClass = computed(() => {
61
+ return props.soft ? 'btn-soft' : ''
62
+ })
63
+ const outlineClass = computed(() => {
64
+ return props.outline ? 'btn-outline' : ''
65
+ })
66
+ const dashClass = computed(() => {
67
+ return props.dash ? 'btn-dash' : ''
68
+ })
69
+ const activeClass = computed(() => {
70
+ return props.active ? 'btn-active' : ''
71
+ })
72
+ const ghostClass = computed(() => {
73
+ return props.ghost ? 'btn-ghost' : ''
74
+ })
75
+ const linkClass = computed(() => {
76
+ return props.link ? 'btn-link' : ''
77
+ })
78
+ const wideClass = computed(() => {
79
+ return props.wide ? 'btn-wide' : ''
80
+ })
81
+ const squareClass = computed(() => {
82
+ return props.square ? 'btn-square' : ''
83
+ })
84
+ const circleClass = computed(() => {
85
+ return props.circle ? 'btn-circle' : ''
86
+ })
87
+ const blockClass = computed(() => {
88
+ return props.block ? 'btn-block' : ''
89
+ })
90
+
91
+ const elementTag = computed((): ElementType => {
92
+ if (props.as) return props.as
93
+ if (isInDropdownTrigger) return 'div'
94
+ if (filterName) return 'input'
95
+
96
+ return 'button'
97
+ })
98
+
99
+ const isInputElement = computed(() => elementTag.value === 'input')
100
+ const isAnchorElement = computed(() => elementTag.value === 'a')
101
+
102
+ const buttonAttributes = computed(() => {
103
+ const attrs: Record<string, any> = {}
104
+
105
+ if (filterName) {
106
+ attrs.name = filterName
107
+ attrs.type = 'radio'
108
+ } else if (isInputElement.value) {
109
+ attrs.type = props.inputType || 'button'
110
+ attrs.value = props.value || ''
111
+ } else if (isAnchorElement.value) {
112
+ attrs.href = props.href || '#'
113
+ attrs.role = 'button'
114
+ } else if (isInDropdownTrigger) {
115
+ attrs.tabindex = '0'
116
+ attrs.role = 'button'
117
+ } else {
118
+ attrs.type = props.type || 'button'
119
+ }
120
+ return attrs
121
+ })
122
+ </script>
123
+ <template>
124
+ <component
125
+ :is="elementTag"
126
+ v-bind="buttonAttributes"
127
+ :class="[
128
+ 'btn',
129
+ customClass,
130
+ sizeClass,
131
+ colorClass,
132
+ softClass,
133
+ outlineClass,
134
+ dashClass,
135
+ activeClass,
136
+ ghostClass,
137
+ linkClass,
138
+ wideClass,
139
+ squareClass,
140
+ circleClass,
141
+ blockClass,
142
+ inJoin && 'join-item',
143
+ ]"
144
+ :aria-label="props.label"
145
+ :disabled="props.disabled"
146
+ >
147
+ <slot v-if="!isInputElement"></slot>
148
+ </component>
149
+ </template>
@@ -0,0 +1,15 @@
1
+ export const DROPDOWN_PLACEMENTS = [
2
+ 'dropdown-start',
3
+ 'dropdown-center',
4
+ 'dropdown-end',
5
+ 'dropdown-top',
6
+ 'dropdown-bottom',
7
+ 'dropdown-left',
8
+ 'dropdown-right',
9
+ ] as const
10
+
11
+ export type DROPDOWNPlacement = (typeof DROPDOWN_PLACEMENTS)[number]
12
+
13
+
14
+ export type PlacementValue = 'start' | 'center' | 'end' | 'top' | 'bottom' | 'left' | 'right'
15
+ export type PlacementInput = PlacementValue | string | PlacementValue[] | Partial<Record<PlacementValue, boolean>>
@@ -0,0 +1,75 @@
1
+ <script setup lang="ts">
2
+ import { computed, provide } from 'vue'
3
+ import { type PlacementInput, type PlacementValue } from './du-dropdown.types'
4
+
5
+ const props = withDefaults(
6
+ defineProps<{
7
+ hover?: boolean
8
+ open?: boolean
9
+ placement?: PlacementInput
10
+ }>(),
11
+ {
12
+ hover: false,
13
+ open: false,
14
+ placement: 'bottom',
15
+ },
16
+ )
17
+
18
+ provide('isDropdownTrigger', true)
19
+
20
+ const placementToClass = (value: PlacementValue): string => {
21
+ return `dropdown-${value}`
22
+ }
23
+
24
+ const getPlacementClasses = (input: PlacementInput): string[] => {
25
+ if (!input) return []
26
+
27
+ if (typeof input === 'string') {
28
+ if (input.includes(',')) {
29
+ return input.split(',').map(s => s.trim()).filter(Boolean).map(s => placementToClass(s as PlacementValue))
30
+ }
31
+ return [placementToClass(input as PlacementValue)]
32
+ }
33
+
34
+ if (Array.isArray(input)) {
35
+ return input.map(placementToClass)
36
+ }
37
+
38
+ if (typeof input === 'object') {
39
+ const keys = Object.keys(input)
40
+ if (keys.every(key => key in { start: 1, center: 1, end: 1, top: 1, bottom: 1, left: 1, right: 1 })) {
41
+ return keys.map(key => placementToClass(key as PlacementValue))
42
+ }
43
+ return Object.entries(input)
44
+ .filter(([, enabled]) => enabled)
45
+ .map(([key]) => placementToClass(key as PlacementValue))
46
+ }
47
+
48
+ return []
49
+ }
50
+
51
+ const placementClass = computed(() => {
52
+ const classes = getPlacementClasses(props.placement)
53
+ return classes.join(' ')
54
+ })
55
+
56
+ const hoverClass = computed(() => {
57
+ return props.hover ? 'dropdown-hover' : ''
58
+ })
59
+
60
+ const openClass = computed(() => {
61
+ return props.open ? 'dropdown-open' : ''
62
+ })
63
+ </script>
64
+
65
+ <template>
66
+ <div :class="['dropdown', placementClass, hoverClass, openClass]">
67
+ <!-- Bind triggerProps on your trigger element (v-bind="triggerProps")
68
+ to get the expected role/tabindex/aria attributes for free. -->
69
+ <slot name="trigger" :trigger-props="{ role: 'button', tabindex: 0, 'aria-haspopup': 'true' }"></slot>
70
+ <div class="dropdown-content" tabindex="0">
71
+ <slot name="content"></slot>
72
+ <slot></slot>
73
+ </div>
74
+ </div>
75
+ </template>
@@ -0,0 +1,28 @@
1
+ export const FAB_MODIFIERS = ['fab-flower'] as const
2
+
3
+ export type FABModifier = (typeof FAB_MODIFIERS)[number]
4
+
5
+ export interface FABItem {
6
+ label?: string
7
+ icon?: any
8
+ customClass?: string
9
+ onClick?: () => void
10
+ tooltip?: string
11
+ tooltipPosition?: 'left' | 'top' | 'right' | 'bottom'
12
+ [key: string]: any
13
+ }
14
+
15
+ export interface FABMainAction {
16
+ label?: string
17
+ icon?: any
18
+ customClass?: string
19
+ variant?: string
20
+ onClick?: () => void
21
+ }
22
+
23
+ export interface FABCloseButton {
24
+ label?: string
25
+ icon?: string
26
+ customClass?: string
27
+ variant?: string
28
+ }
@@ -0,0 +1,270 @@
1
+ <script setup lang="ts">
2
+ import { computed } from 'vue'
3
+ import { type Size, useSizeMapping } from '../../../composables/useSizeProps'
4
+ import { type Variant, useVariantMapping } from '../../../composables/useVariantProps'
5
+ import { type FABItem, type FABMainAction, type FABCloseButton } from './du-fab.types'
6
+ import DuButton from '../du-button/du-button.vue'
7
+ import DuTooltip from '../../Feedback/du-tooltip/du-tooltip.vue'
8
+
9
+ const props = withDefaults(
10
+ defineProps<{
11
+ items?: FABItem[]
12
+ modifier?: 'fab-flower'
13
+ customClass?: string
14
+ size?: Size
15
+ variant?: Variant
16
+ circle?: boolean
17
+ mainAction?: FABMainAction
18
+ closeButton?: FABCloseButton
19
+ absolute?: boolean
20
+ position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'
21
+ }>(),
22
+ {
23
+ items: undefined,
24
+ modifier: undefined,
25
+ customClass: '',
26
+ size: 'lg',
27
+ variant: 'primary',
28
+ circle: true,
29
+ mainAction: undefined,
30
+ closeButton: undefined,
31
+ absolute: true,
32
+ position: 'bottom-right',
33
+ },
34
+ )
35
+
36
+ const { sizeClass } = useSizeMapping(props, 'btn')
37
+ const { colorClass } = useVariantMapping(props, 'btn')
38
+
39
+ const modifierClass = computed(() => {
40
+ return props.modifier ? props.modifier : ''
41
+ })
42
+
43
+ const positionClass = computed(() => {
44
+ if (!props.absolute) return ''
45
+
46
+ switch (props.position) {
47
+ case 'bottom-right':
48
+ return 'absolute bottom-4 right-4'
49
+ case 'bottom-left':
50
+ return 'absolute bottom-4 left-4'
51
+ case 'top-right':
52
+ return 'absolute top-4 right-4'
53
+ case 'top-left':
54
+ return 'absolute top-4 left-4'
55
+ default:
56
+ return 'absolute bottom-4 right-4'
57
+ }
58
+ })
59
+
60
+ const fabClasses = computed(() => {
61
+ return [
62
+ 'fab',
63
+ modifierClass.value,
64
+ positionClass.value,
65
+ 'z-50',
66
+ props.customClass,
67
+ ]
68
+ })
69
+
70
+ const getTooltipPosition = (position?: 'left' | 'top' | 'right' | 'bottom') => {
71
+ return position || 'left'
72
+ }
73
+ </script>
74
+
75
+ <template>
76
+ <!-- Dynamic items mode -->
77
+ <template v-if="items || mainAction">
78
+ <div :class="fabClasses">
79
+ <!-- Main trigger button -->
80
+ <div
81
+ tabindex="0"
82
+ role="button"
83
+ :class="[
84
+ 'btn',
85
+ sizeClass,
86
+ colorClass,
87
+ props.circle ? 'btn-circle' : '',
88
+ ]"
89
+ >
90
+ <slot name="trigger">
91
+ <slot name="trigger-icon">F</slot>
92
+ </slot>
93
+ </div>
94
+
95
+ <!-- Close button (optional) -->
96
+ <div
97
+ v-if="closeButton"
98
+ class="fab-close"
99
+ >
100
+ <slot name="close-button" :closeButton="closeButton">
101
+ {{ closeButton.label || 'Close' }}
102
+ <span
103
+ :class="[
104
+ 'btn',
105
+ sizeClass,
106
+ 'btn-circle',
107
+ closeButton.variant ? `btn-${closeButton.variant}` : 'btn-error',
108
+ closeButton.customClass,
109
+ ]"
110
+ >
111
+ <slot name="close-icon">{{ closeButton.icon || '✕' }}</slot>
112
+ </span>
113
+ </slot>
114
+ </div>
115
+
116
+ <!-- Main action button (optional) -->
117
+ <DuButton
118
+ v-if="mainAction"
119
+ as="button"
120
+ customClass="fab-main-action"
121
+ :size="props.size"
122
+ :variant="(mainAction.variant as Variant) || 'default'"
123
+ circle
124
+ @click="mainAction.onClick"
125
+ >
126
+ <slot name="main-action" :mainAction="mainAction">
127
+ <slot name="main-action-icon" :mainAction="mainAction">
128
+ <component
129
+ class="w-6 h-6"
130
+ :is="mainAction.icon"
131
+ v-if="typeof mainAction.icon === 'object' || typeof mainAction.icon === 'function'"
132
+ />
133
+ <img
134
+ v-else-if="typeof mainAction.icon === 'string' && mainAction.icon.startsWith('http')"
135
+ :src="mainAction.icon"
136
+ :alt="mainAction.label"
137
+ class="w-6 h-6"
138
+ />
139
+ <div
140
+ v-else-if="typeof mainAction.icon === 'string'"
141
+ v-html="mainAction.icon"
142
+ ></div>
143
+ <template v-else>
144
+ {{ mainAction.label || 'M' }}
145
+ </template>
146
+ </slot>
147
+ </slot>
148
+ </DuButton>
149
+
150
+ <!-- Speed dial buttons -->
151
+ <template v-for="(item, index) in items" :key="index">
152
+ <!-- With tooltip wrapper -->
153
+ <DuTooltip
154
+ v-if="item.tooltip"
155
+ :dataTip="item.tooltip"
156
+ :position="getTooltipPosition(item.tooltipPosition)"
157
+ >
158
+ <DuButton
159
+ as="button"
160
+ :size="props.size"
161
+ :circle="props.circle"
162
+ :customClass="item.customClass"
163
+ @click="item.onClick"
164
+ >
165
+ <slot name="item" :item="item" :index="index">
166
+ <slot :name="`item-${index}`" :item="item" :index="index">
167
+ <component
168
+ class="w-6 h-6"
169
+ :is="item.icon"
170
+ v-if="typeof item.icon === 'object' || typeof item.icon === 'function'"
171
+ />
172
+ <img
173
+ v-else-if="typeof item.icon === 'string' && item.icon.startsWith('http')"
174
+ :src="item.icon"
175
+ :alt="item.label"
176
+ class="w-6 h-6"
177
+ />
178
+ <div
179
+ v-else-if="typeof item.icon === 'string'"
180
+ v-html="item.icon"
181
+ ></div>
182
+ <template v-else>
183
+ {{ item.label || index + 1 }}
184
+ </template>
185
+ </slot>
186
+ </slot>
187
+ </DuButton>
188
+ </DuTooltip>
189
+
190
+ <!-- Without tooltip wrapper -->
191
+ <template v-else>
192
+ <!-- With label wrapper -->
193
+ <div v-if="item.label && !props.modifier">
194
+ {{ item.label }}
195
+ <DuButton
196
+ as="button"
197
+ :size="props.size"
198
+ :circle="props.circle"
199
+ :customClass="item.customClass"
200
+ @click="item.onClick"
201
+ >
202
+ <slot name="item" :item="item" :index="index">
203
+ <slot :name="`item-${index}`" :item="item" :index="index">
204
+ <component
205
+ class="w-6 h-6"
206
+ :is="item.icon"
207
+ v-if="typeof item.icon === 'object' || typeof item.icon === 'function'"
208
+ />
209
+ <img
210
+ v-else-if="typeof item.icon === 'string' && item.icon.startsWith('http')"
211
+ :src="item.icon"
212
+ :alt="item.label"
213
+ class="w-6 h-6"
214
+ />
215
+ <div
216
+ v-else-if="typeof item.icon === 'string'"
217
+ v-html="item.icon"
218
+ ></div>
219
+ <template v-else>
220
+ {{ index + 1 }}
221
+ </template>
222
+ </slot>
223
+ </slot>
224
+ </DuButton>
225
+ </div>
226
+
227
+ <!-- Without label wrapper -->
228
+ <DuButton
229
+ v-else
230
+ as="button"
231
+ :size="props.size"
232
+ :circle="props.circle"
233
+ :customClass="item.customClass"
234
+ @click="item.onClick"
235
+ >
236
+ <slot name="item" :item="item" :index="index">
237
+ <slot :name="`item-${index}`" :item="item" :index="index">
238
+ <component
239
+ class="w-6 h-6"
240
+ :is="item.icon"
241
+ v-if="typeof item.icon === 'object' || typeof item.icon === 'function'"
242
+ />
243
+ <img
244
+ v-else-if="typeof item.icon === 'string' && item.icon.startsWith('http')"
245
+ :src="item.icon"
246
+ :alt="item.label"
247
+ class="w-6 h-6"
248
+ />
249
+ <div
250
+ v-else-if="typeof item.icon === 'string'"
251
+ v-html="item.icon"
252
+ ></div>
253
+ <template v-else>
254
+ {{ item.label || index + 1 }}
255
+ </template>
256
+ </slot>
257
+ </slot>
258
+ </DuButton>
259
+ </template>
260
+ </template>
261
+ </div>
262
+ </template>
263
+
264
+ <!-- Manual mode -->
265
+ <template v-else>
266
+ <div :class="fabClasses">
267
+ <slot></slot>
268
+ </div>
269
+ </template>
270
+ </template>
@@ -0,0 +1,10 @@
1
+ export const MODAL_PLACEMENTS = [
2
+ 'modal-top',
3
+ 'modal-middle',
4
+ 'modal-bottom',
5
+ 'modal-start',
6
+ 'modal-end',
7
+ 'modal-bottom sm:modal-middle'
8
+ ] as const
9
+
10
+ export type MODALPlacement = (typeof MODAL_PLACEMENTS)[number]