@poppy-ui/vue 0.0.0-dev.36.93ba5b2

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 (853) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -0
  3. package/dist/ClassWrapper-BNZO3mhP.cjs +2 -0
  4. package/dist/ClassWrapper-BNZO3mhP.cjs.map +1 -0
  5. package/dist/ClassWrapper-DdnnHfAj.js +24 -0
  6. package/dist/ClassWrapper-DdnnHfAj.js.map +1 -0
  7. package/dist/Toast-DuytECg8.cjs +2 -0
  8. package/dist/Toast-DuytECg8.cjs.map +1 -0
  9. package/dist/Toast-fSQWLl0R.js +63 -0
  10. package/dist/Toast-fSQWLl0R.js.map +1 -0
  11. package/dist/_plugin-vue_export-helper-B3ysoDQm.js +8 -0
  12. package/dist/_plugin-vue_export-helper-BTmtiIyf.cjs +1 -0
  13. package/dist/build-class.util-Cp-ZBFgO.js +1730 -0
  14. package/dist/build-class.util-Cp-ZBFgO.js.map +1 -0
  15. package/dist/build-class.util-Lo1-M_t1.cjs +2 -0
  16. package/dist/build-class.util-Lo1-M_t1.cjs.map +1 -0
  17. package/dist/components/ClassWrapper.d.ts +27 -0
  18. package/dist/components/ClassWrapper.d.ts.map +1 -0
  19. package/dist/components/actions/button/Button.d.ts +21 -0
  20. package/dist/components/actions/button/Button.d.ts.map +1 -0
  21. package/dist/components/actions/button/button.context.d.ts +2 -0
  22. package/dist/components/actions/button/button.context.d.ts.map +1 -0
  23. package/dist/components/actions/button/button.props.d.ts +58 -0
  24. package/dist/components/actions/button/button.props.d.ts.map +1 -0
  25. package/dist/components/actions/button/button.types.d.ts +7 -0
  26. package/dist/components/actions/button/button.types.d.ts.map +1 -0
  27. package/dist/components/actions/dropdown/Dropdown.d.ts +25 -0
  28. package/dist/components/actions/dropdown/Dropdown.d.ts.map +1 -0
  29. package/dist/components/actions/dropdown/dropdown.context.d.ts +2 -0
  30. package/dist/components/actions/dropdown/dropdown.context.d.ts.map +1 -0
  31. package/dist/components/actions/dropdown/dropdown.props.d.ts +60 -0
  32. package/dist/components/actions/dropdown/dropdown.props.d.ts.map +1 -0
  33. package/dist/components/actions/dropdown/dropdown.types.d.ts +4 -0
  34. package/dist/components/actions/dropdown/dropdown.types.d.ts.map +1 -0
  35. package/dist/components/actions/fab/Fab.d.ts +16 -0
  36. package/dist/components/actions/fab/Fab.d.ts.map +1 -0
  37. package/dist/components/actions/fab/fab.context.d.ts +2 -0
  38. package/dist/components/actions/fab/fab.context.d.ts.map +1 -0
  39. package/dist/components/actions/fab/fab.props.d.ts +11 -0
  40. package/dist/components/actions/fab/fab.props.d.ts.map +1 -0
  41. package/dist/components/actions/fab/fab.types.d.ts +2 -0
  42. package/dist/components/actions/fab/fab.types.d.ts.map +1 -0
  43. package/dist/components/actions/modal/Modal.d.ts +42 -0
  44. package/dist/components/actions/modal/Modal.d.ts.map +1 -0
  45. package/dist/components/actions/modal/modal.context.d.ts +2 -0
  46. package/dist/components/actions/modal/modal.context.d.ts.map +1 -0
  47. package/dist/components/actions/modal/modal.props.d.ts +31 -0
  48. package/dist/components/actions/modal/modal.props.d.ts.map +1 -0
  49. package/dist/components/actions/modal/modal.types.d.ts +2 -0
  50. package/dist/components/actions/modal/modal.types.d.ts.map +1 -0
  51. package/dist/components/actions/public.d.ts +6 -0
  52. package/dist/components/actions/public.d.ts.map +1 -0
  53. package/dist/components/actions/public.es.js +323 -0
  54. package/dist/components/actions/public.es.js.map +1 -0
  55. package/dist/components/actions/public.types.d.ts +11 -0
  56. package/dist/components/actions/public.types.d.ts.map +1 -0
  57. package/dist/components/actions/public.umd.js +2 -0
  58. package/dist/components/actions/public.umd.js.map +1 -0
  59. package/dist/components/actions/swap/Swap.d.ts +36 -0
  60. package/dist/components/actions/swap/Swap.d.ts.map +1 -0
  61. package/dist/components/actions/swap/swap.context.d.ts +2 -0
  62. package/dist/components/actions/swap/swap.context.d.ts.map +1 -0
  63. package/dist/components/actions/swap/swap.props.d.ts +18 -0
  64. package/dist/components/actions/swap/swap.props.d.ts.map +1 -0
  65. package/dist/components/actions/swap/swap.types.d.ts +2 -0
  66. package/dist/components/actions/swap/swap.types.d.ts.map +1 -0
  67. package/dist/components/app/PoppyApp.d.ts +14 -0
  68. package/dist/components/app/PoppyApp.d.ts.map +1 -0
  69. package/dist/components/app/public.d.ts +2 -0
  70. package/dist/components/app/public.d.ts.map +1 -0
  71. package/dist/components/app/public.es.js +42 -0
  72. package/dist/components/app/public.es.js.map +1 -0
  73. package/dist/components/app/public.umd.js +2 -0
  74. package/dist/components/app/public.umd.js.map +1 -0
  75. package/dist/components/data/checkbox/Checkbox.d.ts +25 -0
  76. package/dist/components/data/checkbox/Checkbox.d.ts.map +1 -0
  77. package/dist/components/data/checkbox/checkbox.context.d.ts +2 -0
  78. package/dist/components/data/checkbox/checkbox.context.d.ts.map +1 -0
  79. package/dist/components/data/checkbox/checkbox.props.d.ts +44 -0
  80. package/dist/components/data/checkbox/checkbox.props.d.ts.map +1 -0
  81. package/dist/components/data/checkbox/checkbox.types.d.ts +4 -0
  82. package/dist/components/data/checkbox/checkbox.types.d.ts.map +1 -0
  83. package/dist/components/data/field-set/FieldSet.d.ts +21 -0
  84. package/dist/components/data/field-set/FieldSet.d.ts.map +1 -0
  85. package/dist/components/data/field-set/field-set.props.d.ts +20 -0
  86. package/dist/components/data/field-set/field-set.props.d.ts.map +1 -0
  87. package/dist/components/data/form/Form.d.ts +37 -0
  88. package/dist/components/data/form/Form.d.ts.map +1 -0
  89. package/dist/components/data/form/form.context.d.ts +57 -0
  90. package/dist/components/data/form/form.context.d.ts.map +1 -0
  91. package/dist/components/data/form/form.props.d.ts +28 -0
  92. package/dist/components/data/form/form.props.d.ts.map +1 -0
  93. package/dist/components/data/form/form.types.d.ts +25 -0
  94. package/dist/components/data/form/form.types.d.ts.map +1 -0
  95. package/dist/components/data/form-field/FormField.d.ts +28 -0
  96. package/dist/components/data/form-field/FormField.d.ts.map +1 -0
  97. package/dist/components/data/form-field/form-field.context.d.ts +53 -0
  98. package/dist/components/data/form-field/form-field.context.d.ts.map +1 -0
  99. package/dist/components/data/form-field/form-field.props.d.ts +37 -0
  100. package/dist/components/data/form-field/form-field.props.d.ts.map +1 -0
  101. package/dist/components/data/form-field/form-field.types.d.ts +2 -0
  102. package/dist/components/data/form-field/form-field.types.d.ts.map +1 -0
  103. package/dist/components/data/input/Input.d.ts +31 -0
  104. package/dist/components/data/input/Input.d.ts.map +1 -0
  105. package/dist/components/data/input/input.context.d.ts +2 -0
  106. package/dist/components/data/input/input.context.d.ts.map +1 -0
  107. package/dist/components/data/input/input.props.d.ts +78 -0
  108. package/dist/components/data/input/input.props.d.ts.map +1 -0
  109. package/dist/components/data/input/input.types.d.ts +6 -0
  110. package/dist/components/data/input/input.types.d.ts.map +1 -0
  111. package/dist/components/data/public.d.ts +13 -0
  112. package/dist/components/data/public.d.ts.map +1 -0
  113. package/dist/components/data/public.es.js +1816 -0
  114. package/dist/components/data/public.es.js.map +1 -0
  115. package/dist/components/data/public.types.d.ts +21 -0
  116. package/dist/components/data/public.types.d.ts.map +1 -0
  117. package/dist/components/data/public.umd.js +2 -0
  118. package/dist/components/data/public.umd.js.map +1 -0
  119. package/dist/components/data/radio/Radio.d.ts +25 -0
  120. package/dist/components/data/radio/Radio.d.ts.map +1 -0
  121. package/dist/components/data/radio/radio.context.d.ts +2 -0
  122. package/dist/components/data/radio/radio.context.d.ts.map +1 -0
  123. package/dist/components/data/radio/radio.props.d.ts +47 -0
  124. package/dist/components/data/radio/radio.props.d.ts.map +1 -0
  125. package/dist/components/data/radio/radio.types.d.ts +4 -0
  126. package/dist/components/data/radio/radio.types.d.ts.map +1 -0
  127. package/dist/components/data/radio-group/RadioGroup.d.ts +28 -0
  128. package/dist/components/data/radio-group/RadioGroup.d.ts.map +1 -0
  129. package/dist/components/data/radio-group/radio-group.context.d.ts +13 -0
  130. package/dist/components/data/radio-group/radio-group.context.d.ts.map +1 -0
  131. package/dist/components/data/radio-group/radio-group.props.d.ts +12 -0
  132. package/dist/components/data/radio-group/radio-group.props.d.ts.map +1 -0
  133. package/dist/components/data/rating/Rating.d.ts +26 -0
  134. package/dist/components/data/rating/Rating.d.ts.map +1 -0
  135. package/dist/components/data/rating/rating.context.d.ts +2 -0
  136. package/dist/components/data/rating/rating.context.d.ts.map +1 -0
  137. package/dist/components/data/rating/rating.props.d.ts +44 -0
  138. package/dist/components/data/rating/rating.props.d.ts.map +1 -0
  139. package/dist/components/data/rating/rating.types.d.ts +6 -0
  140. package/dist/components/data/rating/rating.types.d.ts.map +1 -0
  141. package/dist/components/data/select/Select.d.ts +79 -0
  142. package/dist/components/data/select/Select.d.ts.map +1 -0
  143. package/dist/components/data/select/select.context.d.ts +2 -0
  144. package/dist/components/data/select/select.context.d.ts.map +1 -0
  145. package/dist/components/data/select/select.props.d.ts +99 -0
  146. package/dist/components/data/select/select.props.d.ts.map +1 -0
  147. package/dist/components/data/select/select.types.d.ts +20 -0
  148. package/dist/components/data/select/select.types.d.ts.map +1 -0
  149. package/dist/components/data/slider/Slider.d.ts +29 -0
  150. package/dist/components/data/slider/Slider.d.ts.map +1 -0
  151. package/dist/components/data/slider/slider.context.d.ts +2 -0
  152. package/dist/components/data/slider/slider.context.d.ts.map +1 -0
  153. package/dist/components/data/slider/slider.props.d.ts +70 -0
  154. package/dist/components/data/slider/slider.props.d.ts.map +1 -0
  155. package/dist/components/data/slider/slider.types.d.ts +7 -0
  156. package/dist/components/data/slider/slider.types.d.ts.map +1 -0
  157. package/dist/components/data/textarea/Textarea.d.ts +22 -0
  158. package/dist/components/data/textarea/Textarea.d.ts.map +1 -0
  159. package/dist/components/data/textarea/textarea.context.d.ts +2 -0
  160. package/dist/components/data/textarea/textarea.context.d.ts.map +1 -0
  161. package/dist/components/data/textarea/textarea.props.d.ts +64 -0
  162. package/dist/components/data/textarea/textarea.props.d.ts.map +1 -0
  163. package/dist/components/data/textarea/textarea.types.d.ts +5 -0
  164. package/dist/components/data/textarea/textarea.types.d.ts.map +1 -0
  165. package/dist/components/data/toggle/Toggle.d.ts +31 -0
  166. package/dist/components/data/toggle/Toggle.d.ts.map +1 -0
  167. package/dist/components/data/toggle/toggle.context.d.ts +2 -0
  168. package/dist/components/data/toggle/toggle.context.d.ts.map +1 -0
  169. package/dist/components/data/toggle/toggle.props.d.ts +38 -0
  170. package/dist/components/data/toggle/toggle.props.d.ts.map +1 -0
  171. package/dist/components/data/toggle/toggle.types.d.ts +4 -0
  172. package/dist/components/data/toggle/toggle.types.d.ts.map +1 -0
  173. package/dist/components/display/accordion/Accordion.d.ts +42 -0
  174. package/dist/components/display/accordion/Accordion.d.ts.map +1 -0
  175. package/dist/components/display/accordion/AccordionItem.d.ts +35 -0
  176. package/dist/components/display/accordion/AccordionItem.d.ts.map +1 -0
  177. package/dist/components/display/accordion/accordion-item.context.d.ts +2 -0
  178. package/dist/components/display/accordion/accordion-item.context.d.ts.map +1 -0
  179. package/dist/components/display/accordion/accordion-item.props.d.ts +19 -0
  180. package/dist/components/display/accordion/accordion-item.props.d.ts.map +1 -0
  181. package/dist/components/display/accordion/accordion-item.types.d.ts +2 -0
  182. package/dist/components/display/accordion/accordion-item.types.d.ts.map +1 -0
  183. package/dist/components/display/accordion/accordion.context.d.ts +9 -0
  184. package/dist/components/display/accordion/accordion.context.d.ts.map +1 -0
  185. package/dist/components/display/accordion/accordion.props.d.ts +15 -0
  186. package/dist/components/display/accordion/accordion.props.d.ts.map +1 -0
  187. package/dist/components/display/avatar/Avatar.d.ts +14 -0
  188. package/dist/components/display/avatar/Avatar.d.ts.map +1 -0
  189. package/dist/components/display/avatar/avatar.context.d.ts +2 -0
  190. package/dist/components/display/avatar/avatar.context.d.ts.map +1 -0
  191. package/dist/components/display/avatar/avatar.props.d.ts +45 -0
  192. package/dist/components/display/avatar/avatar.props.d.ts.map +1 -0
  193. package/dist/components/display/avatar/avatar.types.d.ts +5 -0
  194. package/dist/components/display/avatar/avatar.types.d.ts.map +1 -0
  195. package/dist/components/display/badge/Badge.d.ts +12 -0
  196. package/dist/components/display/badge/Badge.d.ts.map +1 -0
  197. package/dist/components/display/badge/badge.context.d.ts +2 -0
  198. package/dist/components/display/badge/badge.context.d.ts.map +1 -0
  199. package/dist/components/display/badge/badge.props.d.ts +20 -0
  200. package/dist/components/display/badge/badge.props.d.ts.map +1 -0
  201. package/dist/components/display/badge/badge.types.d.ts +5 -0
  202. package/dist/components/display/badge/badge.types.d.ts.map +1 -0
  203. package/dist/components/display/card/Card.d.ts +12 -0
  204. package/dist/components/display/card/Card.d.ts.map +1 -0
  205. package/dist/components/display/card/CardActions.d.ts +12 -0
  206. package/dist/components/display/card/CardActions.d.ts.map +1 -0
  207. package/dist/components/display/card/CardBody.d.ts +14 -0
  208. package/dist/components/display/card/CardBody.d.ts.map +1 -0
  209. package/dist/components/display/card/CardTitle.d.ts +14 -0
  210. package/dist/components/display/card/CardTitle.d.ts.map +1 -0
  211. package/dist/components/display/card/card-actions.context.d.ts +2 -0
  212. package/dist/components/display/card/card-actions.context.d.ts.map +1 -0
  213. package/dist/components/display/card/card-actions.props.d.ts +15 -0
  214. package/dist/components/display/card/card-actions.props.d.ts.map +1 -0
  215. package/dist/components/display/card/card-actions.types.d.ts +2 -0
  216. package/dist/components/display/card/card-actions.types.d.ts.map +1 -0
  217. package/dist/components/display/card/card.context.d.ts +2 -0
  218. package/dist/components/display/card/card.context.d.ts.map +1 -0
  219. package/dist/components/display/card/card.props.d.ts +30 -0
  220. package/dist/components/display/card/card.props.d.ts.map +1 -0
  221. package/dist/components/display/card/card.types.d.ts +4 -0
  222. package/dist/components/display/card/card.types.d.ts.map +1 -0
  223. package/dist/components/display/carousel/Carousel.d.ts +16 -0
  224. package/dist/components/display/carousel/Carousel.d.ts.map +1 -0
  225. package/dist/components/display/carousel/carousel.context.d.ts +2 -0
  226. package/dist/components/display/carousel/carousel.context.d.ts.map +1 -0
  227. package/dist/components/display/carousel/carousel.props.d.ts +52 -0
  228. package/dist/components/display/carousel/carousel.props.d.ts.map +1 -0
  229. package/dist/components/display/carousel/carousel.types.d.ts +3 -0
  230. package/dist/components/display/carousel/carousel.types.d.ts.map +1 -0
  231. package/dist/components/display/chat/Chat.d.ts +20 -0
  232. package/dist/components/display/chat/Chat.d.ts.map +1 -0
  233. package/dist/components/display/chat/chat.context.d.ts +2 -0
  234. package/dist/components/display/chat/chat.context.d.ts.map +1 -0
  235. package/dist/components/display/chat/chat.props.d.ts +18 -0
  236. package/dist/components/display/chat/chat.props.d.ts.map +1 -0
  237. package/dist/components/display/chat/chat.types.d.ts +3 -0
  238. package/dist/components/display/chat/chat.types.d.ts.map +1 -0
  239. package/dist/components/display/countdown/Countdown.d.ts +38 -0
  240. package/dist/components/display/countdown/Countdown.d.ts.map +1 -0
  241. package/dist/components/display/countdown/countdown.context.d.ts +2 -0
  242. package/dist/components/display/countdown/countdown.context.d.ts.map +1 -0
  243. package/dist/components/display/countdown/countdown.props.d.ts +25 -0
  244. package/dist/components/display/countdown/countdown.props.d.ts.map +1 -0
  245. package/dist/components/display/countdown/countdown.types.d.ts +23 -0
  246. package/dist/components/display/countdown/countdown.types.d.ts.map +1 -0
  247. package/dist/components/display/diff/Diff.d.ts +16 -0
  248. package/dist/components/display/diff/Diff.d.ts.map +1 -0
  249. package/dist/components/display/hover-3d/Hover3d.d.ts +12 -0
  250. package/dist/components/display/hover-3d/Hover3d.d.ts.map +1 -0
  251. package/dist/components/display/hover-3d/hover-3d.props.d.ts +9 -0
  252. package/dist/components/display/hover-3d/hover-3d.props.d.ts.map +1 -0
  253. package/dist/components/display/hover-gallery/HoverGallery.d.ts +14 -0
  254. package/dist/components/display/hover-gallery/HoverGallery.d.ts.map +1 -0
  255. package/dist/components/display/kbd/Kbd.d.ts +12 -0
  256. package/dist/components/display/kbd/Kbd.d.ts.map +1 -0
  257. package/dist/components/display/kbd/kbd.context.d.ts +2 -0
  258. package/dist/components/display/kbd/kbd.context.d.ts.map +1 -0
  259. package/dist/components/display/kbd/kbd.props.d.ts +12 -0
  260. package/dist/components/display/kbd/kbd.props.d.ts.map +1 -0
  261. package/dist/components/display/kbd/kbd.types.d.ts +3 -0
  262. package/dist/components/display/kbd/kbd.types.d.ts.map +1 -0
  263. package/dist/components/display/list/List.d.ts +17 -0
  264. package/dist/components/display/list/List.d.ts.map +1 -0
  265. package/dist/components/display/list/ListItem.d.ts +22 -0
  266. package/dist/components/display/list/ListItem.d.ts.map +1 -0
  267. package/dist/components/display/list/list-item.props.d.ts +17 -0
  268. package/dist/components/display/list/list-item.props.d.ts.map +1 -0
  269. package/dist/components/display/list/list.props.d.ts +8 -0
  270. package/dist/components/display/list/list.props.d.ts.map +1 -0
  271. package/dist/components/display/public.d.ts +21 -0
  272. package/dist/components/display/public.d.ts.map +1 -0
  273. package/dist/components/display/public.es.js +2 -0
  274. package/dist/components/display/public.types.d.ts +28 -0
  275. package/dist/components/display/public.types.d.ts.map +1 -0
  276. package/dist/components/display/public.umd.js +1 -0
  277. package/dist/components/display/stat/Stat.d.ts +22 -0
  278. package/dist/components/display/stat/Stat.d.ts.map +1 -0
  279. package/dist/components/display/stat/Stats.d.ts +12 -0
  280. package/dist/components/display/stat/Stats.d.ts.map +1 -0
  281. package/dist/components/display/stat/stat.context.d.ts +2 -0
  282. package/dist/components/display/stat/stat.context.d.ts.map +1 -0
  283. package/dist/components/display/stat/stat.props.d.ts +42 -0
  284. package/dist/components/display/stat/stat.props.d.ts.map +1 -0
  285. package/dist/components/display/stat/stat.types.d.ts +2 -0
  286. package/dist/components/display/stat/stat.types.d.ts.map +1 -0
  287. package/dist/components/display/stat/stats.context.d.ts +2 -0
  288. package/dist/components/display/stat/stats.context.d.ts.map +1 -0
  289. package/dist/components/display/stat/stats.props.d.ts +11 -0
  290. package/dist/components/display/stat/stats.props.d.ts.map +1 -0
  291. package/dist/components/display/stat/stats.types.d.ts +2 -0
  292. package/dist/components/display/stat/stats.types.d.ts.map +1 -0
  293. package/dist/components/display/status/Status.d.ts +5 -0
  294. package/dist/components/display/status/Status.d.ts.map +1 -0
  295. package/dist/components/display/status/status.context.d.ts +2 -0
  296. package/dist/components/display/status/status.context.d.ts.map +1 -0
  297. package/dist/components/display/status/status.props.d.ts +27 -0
  298. package/dist/components/display/status/status.props.d.ts.map +1 -0
  299. package/dist/components/display/status/status.types.d.ts +5 -0
  300. package/dist/components/display/status/status.types.d.ts.map +1 -0
  301. package/dist/components/feedback/alert/Alert.d.ts +14 -0
  302. package/dist/components/feedback/alert/Alert.d.ts.map +1 -0
  303. package/dist/components/feedback/alert/alert.context.d.ts +2 -0
  304. package/dist/components/feedback/alert/alert.context.d.ts.map +1 -0
  305. package/dist/components/feedback/alert/alert.props.d.ts +27 -0
  306. package/dist/components/feedback/alert/alert.props.d.ts.map +1 -0
  307. package/dist/components/feedback/alert/alert.types.d.ts +4 -0
  308. package/dist/components/feedback/alert/alert.types.d.ts.map +1 -0
  309. package/dist/components/feedback/loading/Loading.d.ts +5 -0
  310. package/dist/components/feedback/loading/Loading.d.ts.map +1 -0
  311. package/dist/components/feedback/loading/loading.context.d.ts +2 -0
  312. package/dist/components/feedback/loading/loading.context.d.ts.map +1 -0
  313. package/dist/components/feedback/loading/loading.props.d.ts +23 -0
  314. package/dist/components/feedback/loading/loading.props.d.ts.map +1 -0
  315. package/dist/components/feedback/loading/loading.types.d.ts +5 -0
  316. package/dist/components/feedback/loading/loading.types.d.ts.map +1 -0
  317. package/dist/components/feedback/progress/Progress.d.ts +5 -0
  318. package/dist/components/feedback/progress/Progress.d.ts.map +1 -0
  319. package/dist/components/feedback/progress/progress.context.d.ts +2 -0
  320. package/dist/components/feedback/progress/progress.context.d.ts.map +1 -0
  321. package/dist/components/feedback/progress/progress.props.d.ts +28 -0
  322. package/dist/components/feedback/progress/progress.props.d.ts.map +1 -0
  323. package/dist/components/feedback/progress/progress.types.d.ts +2 -0
  324. package/dist/components/feedback/progress/progress.types.d.ts.map +1 -0
  325. package/dist/components/feedback/public.d.ts +6 -0
  326. package/dist/components/feedback/public.d.ts.map +1 -0
  327. package/dist/components/feedback/public.es.js +128 -0
  328. package/dist/components/feedback/public.es.js.map +1 -0
  329. package/dist/components/feedback/public.types.d.ts +13 -0
  330. package/dist/components/feedback/public.types.d.ts.map +1 -0
  331. package/dist/components/feedback/public.umd.js +2 -0
  332. package/dist/components/feedback/public.umd.js.map +1 -0
  333. package/dist/components/feedback/radial-progress/radial-progress.context.d.ts +2 -0
  334. package/dist/components/feedback/radial-progress/radial-progress.context.d.ts.map +1 -0
  335. package/dist/components/feedback/radial-progress/radial-progress.props.d.ts +32 -0
  336. package/dist/components/feedback/radial-progress/radial-progress.props.d.ts.map +1 -0
  337. package/dist/components/feedback/radial-progress/radial-progress.types.d.ts +2 -0
  338. package/dist/components/feedback/radial-progress/radial-progress.types.d.ts.map +1 -0
  339. package/dist/components/feedback/toast/Toast.d.ts +12 -0
  340. package/dist/components/feedback/toast/Toast.d.ts.map +1 -0
  341. package/dist/components/feedback/toast/toast.context.d.ts +9 -0
  342. package/dist/components/feedback/toast/toast.context.d.ts.map +1 -0
  343. package/dist/components/feedback/toast/toast.props.d.ts +31 -0
  344. package/dist/components/feedback/toast/toast.props.d.ts.map +1 -0
  345. package/dist/components/feedback/toast/toast.types.d.ts +5 -0
  346. package/dist/components/feedback/toast/toast.types.d.ts.map +1 -0
  347. package/dist/components/feedback/tooltip/Tooltip.d.ts +14 -0
  348. package/dist/components/feedback/tooltip/Tooltip.d.ts.map +1 -0
  349. package/dist/components/feedback/tooltip/tooltip.context.d.ts +2 -0
  350. package/dist/components/feedback/tooltip/tooltip.context.d.ts.map +1 -0
  351. package/dist/components/feedback/tooltip/tooltip.props.d.ts +39 -0
  352. package/dist/components/feedback/tooltip/tooltip.props.d.ts.map +1 -0
  353. package/dist/components/feedback/tooltip/tooltip.types.d.ts +3 -0
  354. package/dist/components/feedback/tooltip/tooltip.types.d.ts.map +1 -0
  355. package/dist/components/layout/divider/Divider.d.ts +12 -0
  356. package/dist/components/layout/divider/Divider.d.ts.map +1 -0
  357. package/dist/components/layout/divider/divider.context.d.ts +2 -0
  358. package/dist/components/layout/divider/divider.context.d.ts.map +1 -0
  359. package/dist/components/layout/divider/divider.props.d.ts +26 -0
  360. package/dist/components/layout/divider/divider.props.d.ts.map +1 -0
  361. package/dist/components/layout/divider/divider.types.d.ts +4 -0
  362. package/dist/components/layout/divider/divider.types.d.ts.map +1 -0
  363. package/dist/components/layout/drawer/Drawer.d.ts +39 -0
  364. package/dist/components/layout/drawer/Drawer.d.ts.map +1 -0
  365. package/dist/components/layout/drawer/drawer.context.d.ts +2 -0
  366. package/dist/components/layout/drawer/drawer.context.d.ts.map +1 -0
  367. package/dist/components/layout/drawer/drawer.props.d.ts +27 -0
  368. package/dist/components/layout/drawer/drawer.props.d.ts.map +1 -0
  369. package/dist/components/layout/drawer/drawer.types.d.ts +6 -0
  370. package/dist/components/layout/drawer/drawer.types.d.ts.map +1 -0
  371. package/dist/components/layout/indicator/Indicator.d.ts +14 -0
  372. package/dist/components/layout/indicator/Indicator.d.ts.map +1 -0
  373. package/dist/components/layout/indicator/indicator.context.d.ts +2 -0
  374. package/dist/components/layout/indicator/indicator.context.d.ts.map +1 -0
  375. package/dist/components/layout/indicator/indicator.props.d.ts +28 -0
  376. package/dist/components/layout/indicator/indicator.props.d.ts.map +1 -0
  377. package/dist/components/layout/indicator/indicator.types.d.ts +3 -0
  378. package/dist/components/layout/indicator/indicator.types.d.ts.map +1 -0
  379. package/dist/components/layout/join/Join.d.ts +12 -0
  380. package/dist/components/layout/join/Join.d.ts.map +1 -0
  381. package/dist/components/layout/join/join.context.d.ts +2 -0
  382. package/dist/components/layout/join/join.context.d.ts.map +1 -0
  383. package/dist/components/layout/join/join.props.d.ts +14 -0
  384. package/dist/components/layout/join/join.props.d.ts.map +1 -0
  385. package/dist/components/layout/join/join.types.d.ts +2 -0
  386. package/dist/components/layout/join/join.types.d.ts.map +1 -0
  387. package/dist/components/layout/mask/Mask.d.ts +12 -0
  388. package/dist/components/layout/mask/Mask.d.ts.map +1 -0
  389. package/dist/components/layout/mask/mask.context.d.ts +2 -0
  390. package/dist/components/layout/mask/mask.context.d.ts.map +1 -0
  391. package/dist/components/layout/mask/mask.props.d.ts +37 -0
  392. package/dist/components/layout/mask/mask.props.d.ts.map +1 -0
  393. package/dist/components/layout/mask/mask.types.d.ts +3 -0
  394. package/dist/components/layout/mask/mask.types.d.ts.map +1 -0
  395. package/dist/components/layout/public.d.ts +7 -0
  396. package/dist/components/layout/public.d.ts.map +1 -0
  397. package/dist/components/layout/public.es.js +206 -0
  398. package/dist/components/layout/public.es.js.map +1 -0
  399. package/dist/components/layout/public.types.d.ts +13 -0
  400. package/dist/components/layout/public.types.d.ts.map +1 -0
  401. package/dist/components/layout/public.umd.js +2 -0
  402. package/dist/components/layout/public.umd.js.map +1 -0
  403. package/dist/components/layout/stack/Stack.d.ts +12 -0
  404. package/dist/components/layout/stack/Stack.d.ts.map +1 -0
  405. package/dist/components/layout/stack/stack.context.d.ts +2 -0
  406. package/dist/components/layout/stack/stack.context.d.ts.map +1 -0
  407. package/dist/components/layout/stack/stack.props.d.ts +12 -0
  408. package/dist/components/layout/stack/stack.props.d.ts.map +1 -0
  409. package/dist/components/layout/stack/stack.types.d.ts +2 -0
  410. package/dist/components/layout/stack/stack.types.d.ts.map +1 -0
  411. package/dist/components/media/img/Img.d.ts +15 -0
  412. package/dist/components/media/img/Img.d.ts.map +1 -0
  413. package/dist/components/media/img/img.context.d.ts +2 -0
  414. package/dist/components/media/img/img.context.d.ts.map +1 -0
  415. package/dist/components/media/img/img.props.d.ts +76 -0
  416. package/dist/components/media/img/img.props.d.ts.map +1 -0
  417. package/dist/components/media/img/img.types.d.ts +33 -0
  418. package/dist/components/media/img/img.types.d.ts.map +1 -0
  419. package/dist/components/media/public.d.ts +2 -0
  420. package/dist/components/media/public.d.ts.map +1 -0
  421. package/dist/components/media/public.es.js +143 -0
  422. package/dist/components/media/public.es.js.map +1 -0
  423. package/dist/components/media/public.types.d.ts +3 -0
  424. package/dist/components/media/public.types.d.ts.map +1 -0
  425. package/dist/components/media/public.umd.js +2 -0
  426. package/dist/components/media/public.umd.js.map +1 -0
  427. package/dist/components/navigation/breadcrumbs/Breadcrumbs.d.ts +5 -0
  428. package/dist/components/navigation/breadcrumbs/Breadcrumbs.d.ts.map +1 -0
  429. package/dist/components/navigation/breadcrumbs/breadcrumbs.context.d.ts +2 -0
  430. package/dist/components/navigation/breadcrumbs/breadcrumbs.context.d.ts.map +1 -0
  431. package/dist/components/navigation/breadcrumbs/breadcrumbs.props.d.ts +17 -0
  432. package/dist/components/navigation/breadcrumbs/breadcrumbs.props.d.ts.map +1 -0
  433. package/dist/components/navigation/breadcrumbs/breadcrumbs.types.d.ts +11 -0
  434. package/dist/components/navigation/breadcrumbs/breadcrumbs.types.d.ts.map +1 -0
  435. package/dist/components/navigation/dock/Dock.d.ts +12 -0
  436. package/dist/components/navigation/dock/Dock.d.ts.map +1 -0
  437. package/dist/components/navigation/dock/DockItem.d.ts +5 -0
  438. package/dist/components/navigation/dock/DockItem.d.ts.map +1 -0
  439. package/dist/components/navigation/dock/dock.context.d.ts +3 -0
  440. package/dist/components/navigation/dock/dock.context.d.ts.map +1 -0
  441. package/dist/components/navigation/dock/dock.props.d.ts +30 -0
  442. package/dist/components/navigation/dock/dock.props.d.ts.map +1 -0
  443. package/dist/components/navigation/dock/dock.types.d.ts +3 -0
  444. package/dist/components/navigation/dock/dock.types.d.ts.map +1 -0
  445. package/dist/components/navigation/link/Link.d.ts +12 -0
  446. package/dist/components/navigation/link/Link.d.ts.map +1 -0
  447. package/dist/components/navigation/link/link.context.d.ts +2 -0
  448. package/dist/components/navigation/link/link.context.d.ts.map +1 -0
  449. package/dist/components/navigation/link/link.props.d.ts +21 -0
  450. package/dist/components/navigation/link/link.props.d.ts.map +1 -0
  451. package/dist/components/navigation/link/link.types.d.ts +2 -0
  452. package/dist/components/navigation/link/link.types.d.ts.map +1 -0
  453. package/dist/components/navigation/menu/Menu.d.ts +12 -0
  454. package/dist/components/navigation/menu/Menu.d.ts.map +1 -0
  455. package/dist/components/navigation/menu/MenuItem.d.ts +36 -0
  456. package/dist/components/navigation/menu/MenuItem.d.ts.map +1 -0
  457. package/dist/components/navigation/menu/menu.context.d.ts +3 -0
  458. package/dist/components/navigation/menu/menu.context.d.ts.map +1 -0
  459. package/dist/components/navigation/menu/menu.props.d.ts +61 -0
  460. package/dist/components/navigation/menu/menu.props.d.ts.map +1 -0
  461. package/dist/components/navigation/menu/menu.types.d.ts +4 -0
  462. package/dist/components/navigation/menu/menu.types.d.ts.map +1 -0
  463. package/dist/components/navigation/navbar/Navbar.d.ts +4 -0
  464. package/dist/components/navigation/navbar/Navbar.d.ts.map +1 -0
  465. package/dist/components/navigation/public.d.ts +10 -0
  466. package/dist/components/navigation/public.d.ts.map +1 -0
  467. package/dist/components/navigation/public.es.js +2 -0
  468. package/dist/components/navigation/public.types.d.ts +11 -0
  469. package/dist/components/navigation/public.types.d.ts.map +1 -0
  470. package/dist/components/navigation/public.umd.js +1 -0
  471. package/dist/components/navigation/tab/Tab.d.ts +19 -0
  472. package/dist/components/navigation/tab/Tab.d.ts.map +1 -0
  473. package/dist/components/navigation/tab/Tabs.d.ts +20 -0
  474. package/dist/components/navigation/tab/Tabs.d.ts.map +1 -0
  475. package/dist/components/navigation/tab/tab.context.d.ts +10 -0
  476. package/dist/components/navigation/tab/tab.context.d.ts.map +1 -0
  477. package/dist/components/navigation/tab/tab.props.d.ts +59 -0
  478. package/dist/components/navigation/tab/tab.props.d.ts.map +1 -0
  479. package/dist/components/navigation/tab/tab.types.d.ts +5 -0
  480. package/dist/components/navigation/tab/tab.types.d.ts.map +1 -0
  481. package/dist/composables/public.d.ts +6 -0
  482. package/dist/composables/public.d.ts.map +1 -0
  483. package/dist/composables/public.es.js +39 -0
  484. package/dist/composables/public.es.js.map +1 -0
  485. package/dist/composables/public.umd.js +2 -0
  486. package/dist/composables/public.umd.js.map +1 -0
  487. package/dist/composables/use-component-config.d.ts +27 -0
  488. package/dist/composables/use-component-config.d.ts.map +1 -0
  489. package/dist/composables/use-config.d.ts +2 -0
  490. package/dist/composables/use-config.d.ts.map +1 -0
  491. package/dist/composables/use-form-field.d.ts +24 -0
  492. package/dist/composables/use-form-field.d.ts.map +1 -0
  493. package/dist/composables/use-select-counter.d.ts +13 -0
  494. package/dist/composables/use-select-counter.d.ts.map +1 -0
  495. package/dist/composables/use-toast.d.ts +36 -0
  496. package/dist/composables/use-toast.d.ts.map +1 -0
  497. package/dist/config/config.type.d.ts +96 -0
  498. package/dist/config/config.type.d.ts.map +1 -0
  499. package/dist/config/public.d.ts +3 -0
  500. package/dist/config/public.d.ts.map +1 -0
  501. package/dist/config/public.es.js +2 -0
  502. package/dist/config/public.types.d.ts +2 -0
  503. package/dist/config/public.types.d.ts.map +1 -0
  504. package/dist/config/public.umd.js +1 -0
  505. package/dist/config/size.context.d.ts +4 -0
  506. package/dist/config/size.context.d.ts.map +1 -0
  507. package/dist/config/symbol.d.ts +4 -0
  508. package/dist/config/symbol.d.ts.map +1 -0
  509. package/dist/plugin-vue.d.ts +33 -0
  510. package/dist/plugin-vue.d.ts.map +1 -0
  511. package/dist/public-1PFjXgZ6.cjs +2 -0
  512. package/dist/public-1PFjXgZ6.cjs.map +1 -0
  513. package/dist/public-D_MhbTxP.cjs +2 -0
  514. package/dist/public-D_MhbTxP.cjs.map +1 -0
  515. package/dist/public-Dqelew6J.js +615 -0
  516. package/dist/public-Dqelew6J.js.map +1 -0
  517. package/dist/public-H9TCdoJr.js +296 -0
  518. package/dist/public-H9TCdoJr.js.map +1 -0
  519. package/dist/public.d.ts +12 -0
  520. package/dist/public.d.ts.map +1 -0
  521. package/dist/public.es.js +15 -0
  522. package/dist/public.es.js.map +1 -0
  523. package/dist/public.umd.js +2 -0
  524. package/dist/public.umd.js.map +1 -0
  525. package/dist/style.css +2 -0
  526. package/dist/symbol-Cleu4XHu.cjs +2 -0
  527. package/dist/symbol-Cleu4XHu.cjs.map +1 -0
  528. package/dist/symbol-CziS7Pho.js +13 -0
  529. package/dist/symbol-CziS7Pho.js.map +1 -0
  530. package/dist/toast.context-BNg0Zn09.cjs +2 -0
  531. package/dist/toast.context-BNg0Zn09.cjs.map +1 -0
  532. package/dist/toast.context-CTPY2imu.js +7 -0
  533. package/dist/toast.context-CTPY2imu.js.map +1 -0
  534. package/dist/types/public.d.ts +3 -0
  535. package/dist/types/public.d.ts.map +1 -0
  536. package/dist/types/public.es.js +0 -0
  537. package/dist/types/public.umd.js +1 -0
  538. package/dist/types/size.type.d.ts +2 -0
  539. package/dist/types/size.type.d.ts.map +1 -0
  540. package/dist/types/utils.type.d.ts +5 -0
  541. package/dist/types/utils.type.d.ts.map +1 -0
  542. package/dist/use-component-config-C-IlXF0W.cjs +2 -0
  543. package/dist/use-component-config-C-IlXF0W.cjs.map +1 -0
  544. package/dist/use-component-config-CaJQbJOW.js +20 -0
  545. package/dist/use-component-config-CaJQbJOW.js.map +1 -0
  546. package/dist/use-select-counter-CgQha-_T.cjs +2 -0
  547. package/dist/use-select-counter-CgQha-_T.cjs.map +1 -0
  548. package/dist/use-select-counter-D_-Qwz61.js +72 -0
  549. package/dist/use-select-counter-D_-Qwz61.js.map +1 -0
  550. package/dist/utils/build-class.util.d.ts +4 -0
  551. package/dist/utils/build-class.util.d.ts.map +1 -0
  552. package/dist/utils/get-validation-message.d.ts +22 -0
  553. package/dist/utils/get-validation-message.d.ts.map +1 -0
  554. package/dist/utils/path.d.ts +20 -0
  555. package/dist/utils/path.d.ts.map +1 -0
  556. package/dist/utils/props.util.d.ts +2 -0
  557. package/dist/utils/props.util.d.ts.map +1 -0
  558. package/dist/utils/public.d.ts +2 -0
  559. package/dist/utils/public.d.ts.map +1 -0
  560. package/package.json +138 -0
  561. package/src/components/ClassWrapper.vue +42 -0
  562. package/src/components/actions/button/Button.story.vue +184 -0
  563. package/src/components/actions/button/Button.vue +110 -0
  564. package/src/components/actions/button/button.context.ts +3 -0
  565. package/src/components/actions/button/button.props.ts +56 -0
  566. package/src/components/actions/button/button.types.ts +7 -0
  567. package/src/components/actions/dropdown/Dropdown.story.vue +360 -0
  568. package/src/components/actions/dropdown/Dropdown.vue +218 -0
  569. package/src/components/actions/dropdown/dropdown.context.ts +3 -0
  570. package/src/components/actions/dropdown/dropdown.props.ts +59 -0
  571. package/src/components/actions/dropdown/dropdown.types.ts +4 -0
  572. package/src/components/actions/fab/Fab.story.vue +227 -0
  573. package/src/components/actions/fab/Fab.vue +33 -0
  574. package/src/components/actions/fab/fab.context.ts +3 -0
  575. package/src/components/actions/fab/fab.props.ts +11 -0
  576. package/src/components/actions/fab/fab.types.ts +1 -0
  577. package/src/components/actions/modal/Modal.story.vue +285 -0
  578. package/src/components/actions/modal/Modal.vue +106 -0
  579. package/src/components/actions/modal/modal.context.ts +3 -0
  580. package/src/components/actions/modal/modal.props.ts +29 -0
  581. package/src/components/actions/modal/modal.types.ts +1 -0
  582. package/src/components/actions/public.ts +5 -0
  583. package/src/components/actions/public.types.ts +15 -0
  584. package/src/components/actions/swap/Swap.story.vue +302 -0
  585. package/src/components/actions/swap/Swap.vue +59 -0
  586. package/src/components/actions/swap/swap.context.ts +3 -0
  587. package/src/components/actions/swap/swap.props.ts +17 -0
  588. package/src/components/actions/swap/swap.types.ts +1 -0
  589. package/src/components/app/PoppyApp.vue +48 -0
  590. package/src/components/app/public.ts +1 -0
  591. package/src/components/data/checkbox/Checkbox.story.vue +206 -0
  592. package/src/components/data/checkbox/Checkbox.vue +139 -0
  593. package/src/components/data/checkbox/checkbox.context.ts +3 -0
  594. package/src/components/data/checkbox/checkbox.props.ts +42 -0
  595. package/src/components/data/checkbox/checkbox.types.ts +5 -0
  596. package/src/components/data/field-set/FieldSet.story.vue +163 -0
  597. package/src/components/data/field-set/FieldSet.vue +22 -0
  598. package/src/components/data/field-set/field-set.props.ts +21 -0
  599. package/src/components/data/form/Form.story.vue +144 -0
  600. package/src/components/data/form/Form.vue +235 -0
  601. package/src/components/data/form/form.context.ts +82 -0
  602. package/src/components/data/form/form.props.ts +30 -0
  603. package/src/components/data/form/form.types.ts +25 -0
  604. package/src/components/data/form-field/FormField.vue +176 -0
  605. package/src/components/data/form-field/form-field.context.ts +71 -0
  606. package/src/components/data/form-field/form-field.props.ts +42 -0
  607. package/src/components/data/form-field/form-field.types.ts +1 -0
  608. package/src/components/data/input/Input.story.vue +276 -0
  609. package/src/components/data/input/Input.vue +233 -0
  610. package/src/components/data/input/input.context.ts +3 -0
  611. package/src/components/data/input/input.props.ts +87 -0
  612. package/src/components/data/input/input.types.ts +10 -0
  613. package/src/components/data/public.ts +12 -0
  614. package/src/components/data/public.types.ts +30 -0
  615. package/src/components/data/radio/Radio.story.vue +228 -0
  616. package/src/components/data/radio/Radio.vue +152 -0
  617. package/src/components/data/radio/radio.context.ts +3 -0
  618. package/src/components/data/radio/radio.props.ts +53 -0
  619. package/src/components/data/radio/radio.types.ts +5 -0
  620. package/src/components/data/radio-group/RadioGroup.story.vue +155 -0
  621. package/src/components/data/radio-group/RadioGroup.vue +65 -0
  622. package/src/components/data/radio-group/radio-group.context.ts +14 -0
  623. package/src/components/data/radio-group/radio-group.props.ts +12 -0
  624. package/src/components/data/rating/Rating.story.vue +150 -0
  625. package/src/components/data/rating/Rating.vue +190 -0
  626. package/src/components/data/rating/rating.context.ts +3 -0
  627. package/src/components/data/rating/rating.props.ts +43 -0
  628. package/src/components/data/rating/rating.types.ts +8 -0
  629. package/src/components/data/select/Select.story.vue +317 -0
  630. package/src/components/data/select/Select.vue +747 -0
  631. package/src/components/data/select/select.context.ts +3 -0
  632. package/src/components/data/select/select.props.ts +110 -0
  633. package/src/components/data/select/select.types.ts +24 -0
  634. package/src/components/data/slider/Slider.story.vue +276 -0
  635. package/src/components/data/slider/Slider.vue +802 -0
  636. package/src/components/data/slider/slider.context.ts +3 -0
  637. package/src/components/data/slider/slider.props.ts +69 -0
  638. package/src/components/data/slider/slider.types.ts +11 -0
  639. package/src/components/data/textarea/Textarea.story.vue +222 -0
  640. package/src/components/data/textarea/Textarea.vue +168 -0
  641. package/src/components/data/textarea/textarea.context.ts +3 -0
  642. package/src/components/data/textarea/textarea.props.ts +71 -0
  643. package/src/components/data/textarea/textarea.types.ts +7 -0
  644. package/src/components/data/toggle/Toggle.story.vue +195 -0
  645. package/src/components/data/toggle/Toggle.vue +136 -0
  646. package/src/components/data/toggle/toggle.context.ts +3 -0
  647. package/src/components/data/toggle/toggle.props.ts +40 -0
  648. package/src/components/data/toggle/toggle.types.ts +5 -0
  649. package/src/components/display/accordion/Accordion.story.vue +482 -0
  650. package/src/components/display/accordion/Accordion.vue +112 -0
  651. package/src/components/display/accordion/AccordionItem.vue +111 -0
  652. package/src/components/display/accordion/accordion-item.context.ts +3 -0
  653. package/src/components/display/accordion/accordion-item.props.ts +20 -0
  654. package/src/components/display/accordion/accordion-item.types.ts +1 -0
  655. package/src/components/display/accordion/accordion.context.ts +10 -0
  656. package/src/components/display/accordion/accordion.props.ts +16 -0
  657. package/src/components/display/avatar/Avatar.story.vue +341 -0
  658. package/src/components/display/avatar/Avatar.vue +57 -0
  659. package/src/components/display/avatar/avatar.context.ts +3 -0
  660. package/src/components/display/avatar/avatar.props.ts +44 -0
  661. package/src/components/display/avatar/avatar.types.ts +5 -0
  662. package/src/components/display/badge/Badge.story.vue +156 -0
  663. package/src/components/display/badge/Badge.vue +51 -0
  664. package/src/components/display/badge/badge.context.ts +3 -0
  665. package/src/components/display/badge/badge.props.ts +22 -0
  666. package/src/components/display/badge/badge.types.ts +5 -0
  667. package/src/components/display/card/Card.story.vue +312 -0
  668. package/src/components/display/card/Card.vue +40 -0
  669. package/src/components/display/card/CardActions.vue +30 -0
  670. package/src/components/display/card/CardBody.vue +5 -0
  671. package/src/components/display/card/CardTitle.vue +5 -0
  672. package/src/components/display/card/card-actions.context.ts +3 -0
  673. package/src/components/display/card/card-actions.props.ts +15 -0
  674. package/src/components/display/card/card-actions.types.ts +1 -0
  675. package/src/components/display/card/card.context.ts +3 -0
  676. package/src/components/display/card/card.props.ts +29 -0
  677. package/src/components/display/card/card.types.ts +4 -0
  678. package/src/components/display/carousel/Carousel.story.vue +216 -0
  679. package/src/components/display/carousel/Carousel.vue +156 -0
  680. package/src/components/display/carousel/carousel.context.ts +3 -0
  681. package/src/components/display/carousel/carousel.props.ts +51 -0
  682. package/src/components/display/carousel/carousel.types.ts +2 -0
  683. package/src/components/display/chat/Chat.story.vue +251 -0
  684. package/src/components/display/chat/Chat.vue +56 -0
  685. package/src/components/display/chat/chat.context.ts +3 -0
  686. package/src/components/display/chat/chat.props.ts +19 -0
  687. package/src/components/display/chat/chat.types.ts +2 -0
  688. package/src/components/display/countdown/Countdown.story.vue +285 -0
  689. package/src/components/display/countdown/Countdown.vue +114 -0
  690. package/src/components/display/countdown/countdown.context.ts +3 -0
  691. package/src/components/display/countdown/countdown.props.ts +26 -0
  692. package/src/components/display/countdown/countdown.types.ts +24 -0
  693. package/src/components/display/diff/Diff.story.vue +118 -0
  694. package/src/components/display/diff/Diff.vue +13 -0
  695. package/src/components/display/hover-3d/Hover3d.story.vue +154 -0
  696. package/src/components/display/hover-3d/Hover3d.vue +37 -0
  697. package/src/components/display/hover-3d/hover-3d.props.ts +9 -0
  698. package/src/components/display/hover-gallery/HoverGallery.story.vue +121 -0
  699. package/src/components/display/hover-gallery/HoverGallery.vue +5 -0
  700. package/src/components/display/kbd/Kbd.story.vue +214 -0
  701. package/src/components/display/kbd/Kbd.vue +32 -0
  702. package/src/components/display/kbd/kbd.context.ts +3 -0
  703. package/src/components/display/kbd/kbd.props.ts +12 -0
  704. package/src/components/display/kbd/kbd.types.ts +3 -0
  705. package/src/components/display/list/List.story.vue +381 -0
  706. package/src/components/display/list/List.vue +14 -0
  707. package/src/components/display/list/ListItem.vue +53 -0
  708. package/src/components/display/list/list-item.props.ts +19 -0
  709. package/src/components/display/list/list.props.ts +7 -0
  710. package/src/components/display/public.ts +20 -0
  711. package/src/components/display/public.types.ts +40 -0
  712. package/src/components/display/stat/Stat.story.vue +181 -0
  713. package/src/components/display/stat/Stat.vue +43 -0
  714. package/src/components/display/stat/Stats.vue +29 -0
  715. package/src/components/display/stat/stat.context.ts +3 -0
  716. package/src/components/display/stat/stat.props.ts +50 -0
  717. package/src/components/display/stat/stat.types.ts +1 -0
  718. package/src/components/display/stat/stats.context.ts +3 -0
  719. package/src/components/display/stat/stats.props.ts +11 -0
  720. package/src/components/display/stat/stats.types.ts +1 -0
  721. package/src/components/display/status/Status.story.vue +195 -0
  722. package/src/components/display/status/Status.vue +70 -0
  723. package/src/components/display/status/status.context.ts +3 -0
  724. package/src/components/display/status/status.props.ts +30 -0
  725. package/src/components/display/status/status.types.ts +5 -0
  726. package/src/components/feedback/alert/Alert.story.vue +243 -0
  727. package/src/components/feedback/alert/Alert.vue +46 -0
  728. package/src/components/feedback/alert/alert.context.ts +3 -0
  729. package/src/components/feedback/alert/alert.props.ts +29 -0
  730. package/src/components/feedback/alert/alert.types.ts +3 -0
  731. package/src/components/feedback/loading/Loading.story.vue +156 -0
  732. package/src/components/feedback/loading/Loading.vue +55 -0
  733. package/src/components/feedback/loading/loading.context.ts +3 -0
  734. package/src/components/feedback/loading/loading.props.ts +25 -0
  735. package/src/components/feedback/loading/loading.types.ts +5 -0
  736. package/src/components/feedback/progress/Progress.story.vue +96 -0
  737. package/src/components/feedback/progress/Progress.vue +36 -0
  738. package/src/components/feedback/progress/progress.context.ts +3 -0
  739. package/src/components/feedback/progress/progress.props.ts +27 -0
  740. package/src/components/feedback/progress/progress.types.ts +1 -0
  741. package/src/components/feedback/public.ts +5 -0
  742. package/src/components/feedback/public.types.ts +18 -0
  743. package/src/components/feedback/radial-progress/RadialProgress.story.vue +118 -0
  744. package/src/components/feedback/radial-progress/RadialProgress.vue +46 -0
  745. package/src/components/feedback/radial-progress/radial-progress.context.ts +3 -0
  746. package/src/components/feedback/radial-progress/radial-progress.props.ts +35 -0
  747. package/src/components/feedback/radial-progress/radial-progress.types.ts +9 -0
  748. package/src/components/feedback/toast/Toast.story.vue +356 -0
  749. package/src/components/feedback/toast/Toast.vue +40 -0
  750. package/src/components/feedback/toast/toast.context.ts +12 -0
  751. package/src/components/feedback/toast/toast.props.ts +33 -0
  752. package/src/components/feedback/toast/toast.types.ts +5 -0
  753. package/src/components/feedback/tooltip/Tooltip.story.vue +256 -0
  754. package/src/components/feedback/tooltip/Tooltip.vue +123 -0
  755. package/src/components/feedback/tooltip/tooltip.context.ts +3 -0
  756. package/src/components/feedback/tooltip/tooltip.props.ts +44 -0
  757. package/src/components/feedback/tooltip/tooltip.types.ts +2 -0
  758. package/src/components/layout/divider/Divider.story.vue +217 -0
  759. package/src/components/layout/divider/Divider.vue +48 -0
  760. package/src/components/layout/divider/divider.context.ts +3 -0
  761. package/src/components/layout/divider/divider.props.ts +28 -0
  762. package/src/components/layout/divider/divider.types.ts +3 -0
  763. package/src/components/layout/drawer/Drawer.story.vue +301 -0
  764. package/src/components/layout/drawer/Drawer.vue +88 -0
  765. package/src/components/layout/drawer/drawer.context.ts +3 -0
  766. package/src/components/layout/drawer/drawer.props.ts +25 -0
  767. package/src/components/layout/drawer/drawer.types.ts +6 -0
  768. package/src/components/layout/indicator/Indicator.story.vue +264 -0
  769. package/src/components/layout/indicator/Indicator.vue +43 -0
  770. package/src/components/layout/indicator/indicator.context.ts +3 -0
  771. package/src/components/layout/indicator/indicator.props.ts +27 -0
  772. package/src/components/layout/indicator/indicator.types.ts +2 -0
  773. package/src/components/layout/join/Join.story.vue +147 -0
  774. package/src/components/layout/join/Join.vue +32 -0
  775. package/src/components/layout/join/join.context.ts +3 -0
  776. package/src/components/layout/join/join.props.ts +14 -0
  777. package/src/components/layout/join/join.types.ts +1 -0
  778. package/src/components/layout/mask/Mask.story.vue +181 -0
  779. package/src/components/layout/mask/Mask.vue +49 -0
  780. package/src/components/layout/mask/mask.context.ts +3 -0
  781. package/src/components/layout/mask/mask.props.ts +36 -0
  782. package/src/components/layout/mask/mask.types.ts +18 -0
  783. package/src/components/layout/public.ts +6 -0
  784. package/src/components/layout/public.types.ts +18 -0
  785. package/src/components/layout/stack/Stack.story.vue +170 -0
  786. package/src/components/layout/stack/Stack.vue +29 -0
  787. package/src/components/layout/stack/stack.context.ts +3 -0
  788. package/src/components/layout/stack/stack.props.ts +12 -0
  789. package/src/components/layout/stack/stack.types.ts +1 -0
  790. package/src/components/media/img/Img.story.vue +214 -0
  791. package/src/components/media/img/Img.vue +189 -0
  792. package/src/components/media/img/img.context.ts +3 -0
  793. package/src/components/media/img/img.props.ts +88 -0
  794. package/src/components/media/img/img.types.ts +35 -0
  795. package/src/components/media/public.ts +1 -0
  796. package/src/components/media/public.types.ts +3 -0
  797. package/src/components/navigation/breadcrumbs/Breadcrumbs.story.vue +94 -0
  798. package/src/components/navigation/breadcrumbs/Breadcrumbs.vue +53 -0
  799. package/src/components/navigation/breadcrumbs/breadcrumbs.context.ts +3 -0
  800. package/src/components/navigation/breadcrumbs/breadcrumbs.props.ts +18 -0
  801. package/src/components/navigation/breadcrumbs/breadcrumbs.types.ts +13 -0
  802. package/src/components/navigation/dock/Dock.story.vue +109 -0
  803. package/src/components/navigation/dock/Dock.vue +32 -0
  804. package/src/components/navigation/dock/DockItem.vue +50 -0
  805. package/src/components/navigation/dock/dock.context.ts +4 -0
  806. package/src/components/navigation/dock/dock.props.ts +34 -0
  807. package/src/components/navigation/dock/dock.types.ts +3 -0
  808. package/src/components/navigation/link/Link.story.vue +129 -0
  809. package/src/components/navigation/link/Link.vue +57 -0
  810. package/src/components/navigation/link/link.context.ts +3 -0
  811. package/src/components/navigation/link/link.props.ts +20 -0
  812. package/src/components/navigation/link/link.types.ts +1 -0
  813. package/src/components/navigation/menu/Menu.story.vue +284 -0
  814. package/src/components/navigation/menu/Menu.vue +41 -0
  815. package/src/components/navigation/menu/MenuItem.vue +106 -0
  816. package/src/components/navigation/menu/menu.context.ts +4 -0
  817. package/src/components/navigation/menu/menu.props.ts +59 -0
  818. package/src/components/navigation/menu/menu.types.ts +4 -0
  819. package/src/components/navigation/navbar/Navbar.story.vue +154 -0
  820. package/src/components/navigation/navbar/Navbar.vue +8 -0
  821. package/src/components/navigation/public.ts +9 -0
  822. package/src/components/navigation/public.types.ts +15 -0
  823. package/src/components/navigation/tab/Tab.story.vue +186 -0
  824. package/src/components/navigation/tab/Tab.vue +106 -0
  825. package/src/components/navigation/tab/Tabs.vue +76 -0
  826. package/src/components/navigation/tab/tab.context.ts +13 -0
  827. package/src/components/navigation/tab/tab.props.ts +57 -0
  828. package/src/components/navigation/tab/tab.types.ts +5 -0
  829. package/src/composables/public.ts +5 -0
  830. package/src/composables/use-component-config.ts +44 -0
  831. package/src/composables/use-config.ts +6 -0
  832. package/src/composables/use-form-field.ts +99 -0
  833. package/src/composables/use-select-counter.ts +58 -0
  834. package/src/composables/use-toast.ts +47 -0
  835. package/src/config/config.type.ts +109 -0
  836. package/src/config/public.ts +2 -0
  837. package/src/config/public.types.ts +1 -0
  838. package/src/config/size.context.ts +4 -0
  839. package/src/config/symbol.ts +15 -0
  840. package/src/histoire.css +8 -0
  841. package/src/plugin-vue.ts +54 -0
  842. package/src/public.ts +12 -0
  843. package/src/stories/Configuration.story.md +55 -0
  844. package/src/types/public.ts +2 -0
  845. package/src/types/size.type.ts +1 -0
  846. package/src/types/utils.type.ts +5 -0
  847. package/src/utils/build-class.util.ts +38 -0
  848. package/src/utils/get-validation-message.ts +61 -0
  849. package/src/utils/path.ts +102 -0
  850. package/src/utils/props.util.ts +11 -0
  851. package/src/utils/public.ts +1 -0
  852. package/src/vite-env.d.ts +11 -0
  853. package/src/vue.d.ts +15 -0
@@ -0,0 +1,747 @@
1
+ <script lang="ts">
2
+ import { Badge } from '@/components/display/public'
3
+ import { Menu, MenuItem } from '@/components/navigation/public'
4
+ import { useComponentConfig } from '@/composables/use-component-config'
5
+ import { useFormField } from '@/composables/use-form-field'
6
+ import { useSelectCounter } from '@/composables/use-select-counter'
7
+ import { getClass } from '@/utils/build-class.util'
8
+ import { ChevronDownIcon, LoaderCircleIcon, XIcon } from '@lucide/vue'
9
+ import { onClickOutside, useDebounceFn, useVirtualList } from '@vueuse/core'
10
+ import { computed, nextTick, onMounted, shallowRef, useAttrs, useId, useTemplateRef, watch } from 'vue'
11
+ import { SELECT_CONFIG } from './select.context'
12
+ import type { SelectProps } from './select.props'
13
+ import type { SelectColor, SelectOption, SelectSize, SelectVariant } from './select.types'
14
+
15
+ const selectColors: Record<SelectColor, `select-${SelectColor}`> = {
16
+ neutral: 'select-neutral',
17
+ primary: 'select-primary',
18
+ secondary: 'select-secondary',
19
+ accent: 'select-accent',
20
+ info: 'select-info',
21
+ success: 'select-success',
22
+ warning: 'select-warning',
23
+ error: 'select-error',
24
+ }
25
+
26
+ const selectSizes: Record<SelectSize, `select-${SelectSize}`> = {
27
+ xs: 'select-xs',
28
+ sm: 'select-sm',
29
+ md: 'select-md',
30
+ lg: 'select-lg',
31
+ xl: 'select-xl',
32
+ }
33
+
34
+ const selectVariants: Record<SelectVariant, `select-${SelectVariant}`> = {
35
+ bordered: 'select-bordered',
36
+ ghost: 'select-ghost',
37
+ }
38
+ </script>
39
+
40
+ <script setup lang="ts" generic="T = any, M extends boolean = false">
41
+ type ModelType = M extends true ? T[] : T | undefined
42
+
43
+ const MAX_DROPDOWN_HEIGHT = 224
44
+
45
+ defineOptions({ inheritAttrs: false })
46
+
47
+ const emit = defineEmits<{
48
+ clear: []
49
+ }>()
50
+
51
+ const containerEl = useTemplateRef('containerEl')
52
+ const triggerEl = useTemplateRef('triggerEl')
53
+ const searchInputEl = useTemplateRef('searchInputEl')
54
+ const ulRef = useTemplateRef('ulRef')
55
+ const highlightedIndex = shallowRef(-1)
56
+
57
+ const model = defineModel<ModelType>()
58
+ const props = defineProps<SelectProps<T, M>>()
59
+
60
+ // @ts-expect-error - Ignored due to the genereic in script
61
+ const config = useComponentConfig(SELECT_CONFIG, props, {
62
+ size: 'md',
63
+ clearable: false,
64
+ })
65
+
66
+ const anchorName = `--select-anchor-${useId()}`
67
+ const attrs = useAttrs()
68
+ const isOpen = shallowRef(false)
69
+ const selectionCache = shallowRef<SelectOption<T>[]>([])
70
+
71
+ const { field, fieldValue, hasServerError, onBlur, clearError } = useFormField<ModelType>({
72
+ required: computed(() => props.required ?? false),
73
+ })
74
+
75
+ onClickOutside(containerEl, () => {
76
+ if (isOpen.value) {
77
+ isOpen.value = false
78
+ onBlur()
79
+ }
80
+ })
81
+
82
+ const value = computed(() => field ? fieldValue.value : model.value)
83
+
84
+ const minItems = computed(() => (attrs.min ? Number(attrs.min) : undefined))
85
+ const maxItems = computed(() => (attrs.max ? Number(attrs.max) : undefined))
86
+
87
+ const selectedCount = computed(() => {
88
+ if (!props.multiple || !Array.isArray(value.value)) {
89
+ return 0
90
+ }
91
+
92
+ return (value.value as T[]).length
93
+ })
94
+
95
+ const { counterText, counterColor, isAtMax } = useSelectCounter(selectedCount, {
96
+ multiple: computed(() => props.multiple),
97
+ min: minItems,
98
+ max: maxItems,
99
+ formatter: computed(() => config.value.counterFormatter),
100
+ })
101
+
102
+ const hasValue = computed(() => {
103
+ if (props.multiple) {
104
+ return Array.isArray(value.value) && (value.value as T[]).length > 0
105
+ }
106
+
107
+ return value.value !== undefined && value.value !== null && value.value !== ''
108
+ })
109
+
110
+ const selectedOptions = computed(() => {
111
+ const current = value.value
112
+
113
+ if (!current) {
114
+ return []
115
+ }
116
+
117
+ const pool = [...(props.options ?? []), ...remoteOptions.value, ...selectionCache.value]
118
+
119
+ if (props.multiple && Array.isArray(current)) {
120
+ return (current as T[]).reduce<SelectOption<T>[]>((acc, v) => {
121
+ const found = pool.find(o => isEqual(o.value, v))
122
+ return found ? [...acc, found] : acc
123
+ }, [])
124
+ }
125
+
126
+ const found = pool.find(o => isEqual(o.value, current as T))
127
+ return found ? [found] : []
128
+ })
129
+
130
+ function isEqual(a: T, b: T): boolean {
131
+ if (!props.equals) {
132
+ return a === b
133
+ }
134
+
135
+ if (typeof props.equals === 'function') {
136
+ return (props.equals as (a: T, b: T) => boolean)(a, b)
137
+ }
138
+
139
+ return (a as any)?.[props.equals] === (b as any)?.[props.equals]
140
+ }
141
+
142
+ function isOptionSelected(option: SelectOption<T>): boolean {
143
+ const current = value.value
144
+
145
+ if (props.multiple && Array.isArray(current)) {
146
+ return (current as T[]).some(v => isEqual(v, option.value))
147
+ }
148
+
149
+ return isEqual(current as T, option.value)
150
+ }
151
+
152
+ function isOptionDisabled(option: SelectOption<T>): boolean {
153
+ return option.disabled === true || (isAtMax.value && !isOptionSelected(option))
154
+ }
155
+
156
+ function setValue(next: ModelType): void {
157
+ model.value = next
158
+
159
+ if (field) {
160
+ field.setValue(next)
161
+ field.setDirty(true)
162
+ clearError()
163
+ }
164
+ }
165
+
166
+ function currentValues(): T[] {
167
+ return (Array.isArray(value.value) ? value.value : []) as T[]
168
+ }
169
+
170
+ function select(option: SelectOption<T>): void {
171
+ if (isOptionDisabled(option)) {
172
+ return
173
+ }
174
+
175
+ if (!selectionCache.value.some(o => isEqual(o.value, option.value))) {
176
+ selectionCache.value = [...selectionCache.value, option]
177
+ }
178
+
179
+ if (props.multiple) {
180
+ const current = currentValues()
181
+ const exists = current.some(v => isEqual(v, option.value))
182
+ const next = exists
183
+ ? current.filter(v => !isEqual(v, option.value))
184
+ : [...current, option.value]
185
+ setValue(next as ModelType)
186
+ return
187
+ }
188
+
189
+ if (isOptionSelected(option)) {
190
+ if (config.value.clearable) {
191
+ setValue(undefined as ModelType)
192
+ isOpen.value = false
193
+ }
194
+
195
+ return
196
+ }
197
+
198
+ setValue(option.value as ModelType)
199
+ isOpen.value = false
200
+ }
201
+
202
+ function removeSelected(option: SelectOption<T>): void {
203
+ if (!props.multiple) {
204
+ return
205
+ }
206
+
207
+ setValue(currentValues().filter(v => !isEqual(v, option.value)) as ModelType)
208
+ }
209
+
210
+ function onClear(): void {
211
+ setValue((props.multiple ? [] : undefined) as ModelType)
212
+ emit('clear')
213
+ }
214
+
215
+ function open(): void {
216
+ if (props.disabled || props.readonly) {
217
+ return
218
+ }
219
+
220
+ isOpen.value = true
221
+ }
222
+
223
+ function close(): void {
224
+ if (props.disabled) {
225
+ return
226
+ }
227
+
228
+ isOpen.value = false
229
+ }
230
+
231
+ function toggle(): void {
232
+ if (isOpen.value) {
233
+ close()
234
+ } else {
235
+ open()
236
+ }
237
+ }
238
+
239
+ // ─── Search ──────────────────────────────────────────────────────────────────
240
+
241
+ const searchQuery = shallowRef('')
242
+ const isLoading = shallowRef(false)
243
+ const isLoadingMore = shallowRef(false)
244
+ const searchError = shallowRef<Error | null>(null)
245
+ const remoteOptions = shallowRef<SelectOption<T>[]>([])
246
+ const currentPage = shallowRef(1)
247
+ const hasMore = shallowRef(true)
248
+
249
+ const filteredLocalOptions = computed<SelectOption<T>[]>(() => {
250
+ const opts = props.options ?? []
251
+
252
+ if (!searchQuery.value) {
253
+ return opts
254
+ }
255
+
256
+ const q = searchQuery.value.toLowerCase()
257
+ return opts.filter(o => o.label.toLowerCase().includes(q))
258
+ })
259
+
260
+ const displayedOptions = computed<SelectOption<T>[]>(() => {
261
+ if (props.search) {
262
+ return remoteOptions.value
263
+ }
264
+
265
+ if (props.searchable) {
266
+ return filteredLocalOptions.value
267
+ }
268
+
269
+ return props.options ?? []
270
+ })
271
+
272
+ const itemH = computed(() => props.itemHeight ?? 36)
273
+
274
+ const virtualContainerHeight = computed(() => {
275
+ const count = displayedOptions.value.length
276
+
277
+ if (count === 0) {
278
+ return 0
279
+ }
280
+
281
+ return Math.min(count * itemH.value, MAX_DROPDOWN_HEIGHT)
282
+ })
283
+
284
+ const { list: virtualList, containerProps, wrapperProps, scrollTo } = useVirtualList(displayedOptions, {
285
+ itemHeight: () => itemH.value,
286
+ overscan: 5,
287
+ })
288
+
289
+ function onVirtualScroll(e: Event): void {
290
+ containerProps.onScroll()
291
+
292
+ if (!props.search || !hasMore.value || isLoadingMore.value) {
293
+ return
294
+ }
295
+
296
+ const el = e.target as HTMLElement
297
+
298
+ if (el.scrollHeight - el.scrollTop - el.clientHeight < 50) {
299
+ const nextPage = currentPage.value + 1
300
+ currentPage.value = nextPage
301
+ fetchPage(searchQuery.value, nextPage, true)
302
+ }
303
+ }
304
+
305
+ async function fetchPage(term: string, page: number, append: boolean): Promise<void> {
306
+ if (!props.search) {
307
+ return
308
+ }
309
+
310
+ const limit = props.limit ?? 20
311
+
312
+ if (append) {
313
+ isLoadingMore.value = true
314
+ } else {
315
+ isLoading.value = true
316
+ searchError.value = null
317
+ }
318
+
319
+ try {
320
+ const lastItem = append ? remoteOptions.value.at(-1)?.value : undefined
321
+ const results = await props.search({ term, limit, page, lastItem })
322
+ remoteOptions.value = append ? [...remoteOptions.value, ...results] : results
323
+ hasMore.value = results.length >= limit
324
+
325
+ // All results fit without scrolling — load next page immediately to fill the list
326
+ if (hasMore.value && remoteOptions.value.length * itemH.value <= MAX_DROPDOWN_HEIGHT) {
327
+ currentPage.value = page + 1
328
+ fetchPage(term, currentPage.value, true)
329
+ return
330
+ }
331
+ } catch (err) {
332
+ searchError.value = err instanceof Error ? err : new Error(String(err))
333
+
334
+ if (!append) {
335
+ remoteOptions.value = []
336
+ }
337
+ }
338
+
339
+ isLoading.value = false
340
+ isLoadingMore.value = false
341
+ }
342
+
343
+ function retrySearch(): void {
344
+ fetchPage(searchQuery.value, 1, false)
345
+ }
346
+
347
+ const debouncedRemoteSearch = useDebounceFn((term: string) => {
348
+ currentPage.value = 1
349
+ fetchPage(term, 1, false)
350
+ }, computed(() => props.debounce ?? 300))
351
+
352
+ function onSearchInput(val: string): void {
353
+ searchQuery.value = val
354
+ highlightedIndex.value = -1
355
+
356
+ if (!props.search) {
357
+ return
358
+ }
359
+
360
+ if (val.length >= (props.minChars ?? 0)) {
361
+ debouncedRemoteSearch(val)
362
+ } else {
363
+ remoteOptions.value = []
364
+ hasMore.value = true
365
+ }
366
+ }
367
+
368
+ onMounted(() => {
369
+ if (props.search && hasValue.value) {
370
+ fetchPage('', 1, false)
371
+ }
372
+ })
373
+
374
+ watch(isOpen, async (opened) => {
375
+ if (opened) {
376
+ highlightedIndex.value = -1
377
+
378
+ if (props.searchable) {
379
+ await nextTick()
380
+ searchInputEl.value?.focus()
381
+ }
382
+
383
+ if (props.search && remoteOptions.value.length === 0) {
384
+ fetchPage('', 1, false)
385
+ }
386
+
387
+ return
388
+ }
389
+
390
+ highlightedIndex.value = -1
391
+
392
+ // Discard filtered results on close so next open re-fetches the initial list
393
+ if (searchQuery.value !== '') {
394
+ remoteOptions.value = []
395
+ currentPage.value = 1
396
+ searchError.value = null
397
+ hasMore.value = true
398
+ }
399
+
400
+ searchQuery.value = ''
401
+ })
402
+
403
+ // ─── Keyboard navigation ─────────────────────────────────────────────────────
404
+
405
+ function scrollToHighlighted(): void {
406
+ if (props.searchable || props.search) {
407
+ scrollTo(highlightedIndex.value)
408
+ return
409
+ }
410
+
411
+ nextTick(() => {
412
+ // ulRef points to the Menu component instance — $el is the underlying <ul>
413
+ const ul = (ulRef.value as any)?.$el as HTMLElement | undefined
414
+ ul?.children[highlightedIndex.value]?.scrollIntoView({ block: 'nearest' })
415
+ })
416
+ }
417
+
418
+ function highlightNext(): void {
419
+ const opts = displayedOptions.value
420
+
421
+ if (opts.length === 0) {
422
+ return
423
+ }
424
+
425
+ highlightedIndex.value = highlightedIndex.value >= opts.length - 1 ? 0 : highlightedIndex.value + 1
426
+ scrollToHighlighted()
427
+ }
428
+
429
+ function highlightPrev(): void {
430
+ const opts = displayedOptions.value
431
+
432
+ if (opts.length === 0) {
433
+ return
434
+ }
435
+
436
+ highlightedIndex.value = highlightedIndex.value <= 0 ? opts.length - 1 : highlightedIndex.value - 1
437
+ scrollToHighlighted()
438
+ }
439
+
440
+ function selectHighlighted(): void {
441
+ const opt = displayedOptions.value[highlightedIndex.value]
442
+
443
+ if (opt) {
444
+ select(opt)
445
+ }
446
+ }
447
+
448
+ function onTriggerKeydown(e: KeyboardEvent): void {
449
+ switch (e.key) {
450
+ case 'ArrowDown':
451
+ e.preventDefault()
452
+ if (!isOpen.value) {
453
+ open()
454
+ nextTick(highlightNext)
455
+ } else {
456
+ highlightNext()
457
+ }
458
+ break
459
+ case 'ArrowUp':
460
+ e.preventDefault()
461
+ if (!isOpen.value) {
462
+ open()
463
+ nextTick(highlightPrev)
464
+ } else {
465
+ highlightPrev()
466
+ }
467
+ break
468
+ case 'Enter':
469
+ case ' ':
470
+ if (isOpen.value && highlightedIndex.value >= 0) {
471
+ e.preventDefault()
472
+ selectHighlighted()
473
+ }
474
+ break
475
+ case 'Escape':
476
+ if (isOpen.value) {
477
+ e.preventDefault()
478
+ close()
479
+ }
480
+ break
481
+ case 'Tab':
482
+ if (isOpen.value) {
483
+ close()
484
+ }
485
+ break
486
+ }
487
+ }
488
+
489
+ function onSearchKeydown(e: KeyboardEvent): void {
490
+ switch (e.key) {
491
+ case 'ArrowDown':
492
+ e.preventDefault()
493
+ highlightNext()
494
+ break
495
+ case 'ArrowUp':
496
+ e.preventDefault()
497
+ highlightPrev()
498
+ break
499
+ case 'Enter':
500
+ if (highlightedIndex.value >= 0) {
501
+ e.preventDefault()
502
+ selectHighlighted()
503
+ }
504
+ break
505
+ case 'Escape':
506
+ e.preventDefault()
507
+ close()
508
+ break
509
+ case 'Tab':
510
+ close()
511
+ break
512
+ }
513
+ }
514
+
515
+ defineExpose({
516
+ $el: triggerEl,
517
+ clear: onClear,
518
+ open,
519
+ close,
520
+ toggle,
521
+ })
522
+ </script>
523
+
524
+ <template>
525
+ <div class="w-full flex flex-col gap-1">
526
+ <div ref="containerEl" class="relative w-full anchor-trigger" v-bind="$attrs">
527
+ <input type="hidden" :name="field?.name ?? name" :value="(model as any)" />
528
+
529
+ <button
530
+ ref="triggerEl"
531
+ type="button"
532
+ class="select w-full text-left min-h-10 h-auto py-2"
533
+ :class="[
534
+ getClass(selectColors, config.color),
535
+ getClass(selectSizes, config.size),
536
+ getClass(selectVariants, config.variant),
537
+ disabled && 'select-disabled',
538
+ hasServerError && 'select-error',
539
+ readonly && 'cursor-default',
540
+ config.clearable && hasValue ? 'pr-14' : 'pr-10',
541
+ ]"
542
+ :tabindex="disabled ? '-1' : undefined"
543
+ :disabled="disabled"
544
+ :aria-readonly="readonly || undefined"
545
+ @click="toggle()"
546
+ @keydown="onTriggerKeydown"
547
+ >
548
+ <div class="flex items-center gap-2 min-w-0">
549
+ <!-- Start slot (icon, badge, prefix) -->
550
+ <slot name="start" />
551
+
552
+ <!-- Selected values -->
553
+ <div v-if="multiple && selectedOptions.length > 0" class="flex flex-wrap gap-1 flex-1 min-w-0">
554
+ <slot
555
+ v-for="opt in selectedOptions"
556
+ :key="String(opt.value)"
557
+ name="selected"
558
+ :option="opt"
559
+ :remove="() => removeSelected(opt)"
560
+ >
561
+ <Badge color="primary" size="sm" class="gap-1 cursor-default">
562
+ {{ opt.label }}
563
+ <button
564
+ v-if="!readonly"
565
+ type="button"
566
+ class="hover:opacity-70"
567
+ @click.stop="removeSelected(opt)"
568
+ >
569
+ <XIcon class="size-3" />
570
+ </button>
571
+ </Badge>
572
+ </slot>
573
+ </div>
574
+
575
+ <template v-else-if="!multiple && selectedOptions.length > 0">
576
+ <slot name="selected" :option="selectedOptions[0]" :remove="onClear">
577
+ <span class="flex-1 min-w-0 truncate">{{ selectedOptions[0]?.label }}</span>
578
+ </slot>
579
+ </template>
580
+
581
+ <span v-else class="opacity-40 flex-1 min-w-0 truncate">
582
+ {{ placeholder || $t('common.field.select.placeholder') }}
583
+ </span>
584
+
585
+ <!-- End slot (icon, badge, suffix) -->
586
+ <slot name="end" />
587
+ </div>
588
+ </button>
589
+
590
+ <ChevronDownIcon
591
+ class="absolute right-3 top-1/2 -translate-y-1/2 size-4 opacity-40 pointer-events-none transition-transform"
592
+ :class="isOpen && 'rotate-180'"
593
+ />
594
+
595
+ <button
596
+ v-if="config.clearable && hasValue && !readonly"
597
+ type="button"
598
+ class="absolute right-8 top-1/2 -translate-y-1/2 btn btn-ghost btn-xs btn-circle opacity-50 hover:opacity-100"
599
+ @click="onClear"
600
+ >
601
+ <XIcon class="size-3" />
602
+ </button>
603
+
604
+ <Transition name="dropdown">
605
+ <div
606
+ v-if="isOpen && (options || searchable || search)"
607
+ class="anchor-dropdown absolute z-50 w-full bg-base-100 border border-base-300 rounded-box shadow-lg overflow-hidden"
608
+ >
609
+ <!-- Search input -->
610
+ <div v-if="searchable" class="p-2 border-b border-base-200">
611
+ <input
612
+ ref="searchInputEl"
613
+ :value="searchQuery"
614
+ type="text"
615
+ class="input input-sm w-full"
616
+ :placeholder="$t('common.field.select.search')"
617
+ @input="onSearchInput(($event.target as HTMLInputElement).value)"
618
+ @keydown="onSearchKeydown"
619
+ />
620
+ </div>
621
+
622
+ <!-- Virtual list area (searchable or remote) -->
623
+ <template v-if="searchable || search">
624
+ <!-- Initial loading -->
625
+ <div v-if="isLoading" class="px-4 py-6 flex justify-center">
626
+ <slot name="loading" :query="searchQuery">
627
+ <LoaderCircleIcon class="size-4 animate-spin opacity-40" />
628
+ </slot>
629
+ </div>
630
+
631
+ <!-- Error -->
632
+ <div v-else-if="searchError" class="px-4 py-3 text-sm text-center text-error">
633
+ <slot name="error" :query="searchQuery" :retry="retrySearch">
634
+ {{ searchError.message }}
635
+ </slot>
636
+ </div>
637
+
638
+ <template v-else>
639
+ <!-- Virtual list -->
640
+ <div
641
+ v-if="displayedOptions.length > 0"
642
+ :ref="containerProps.ref"
643
+ :style="{ height: `${virtualContainerHeight}px`, overflowY: 'auto' }"
644
+ @scroll="onVirtualScroll"
645
+ >
646
+ <Menu :size="config.size" class="flex-nowrap" v-bind="wrapperProps">
647
+ <MenuItem
648
+ v-for="{ data: option, index } in virtualList"
649
+ :key="String(option.value)"
650
+ :active="isOptionSelected(option)"
651
+ :disabled="isOptionDisabled(option)"
652
+ :style="{ height: `${itemH}px` }"
653
+ :class="index === highlightedIndex && !isOptionSelected(option) && 'highlighted'"
654
+ @click.prevent="select(option)"
655
+ >
656
+ <slot name="option" :option="option" :selected="isOptionSelected(option)" :index="index">
657
+ {{ option.label }}
658
+ </slot>
659
+ </MenuItem>
660
+ </Menu>
661
+ </div>
662
+
663
+ <!-- Empty -->
664
+ <div v-else class="px-4 py-3 text-sm opacity-40 text-center">
665
+ <slot name="empty" :query="searchQuery">
666
+ {{ $t('common.field.select.empty') }}
667
+ </slot>
668
+ </div>
669
+ </template>
670
+
671
+ <!-- Loading more (pagination) -->
672
+ <div v-if="isLoadingMore" class="px-4 py-2 flex justify-center">
673
+ <slot name="loading-more" :page="currentPage">
674
+ <LoaderCircleIcon class="size-3 animate-spin opacity-40" />
675
+ </slot>
676
+ </div>
677
+ </template>
678
+
679
+ <!-- Non-searchable -->
680
+ <Menu ref="ulRef" v-else :size="config.size" class="max-h-56 overflow-y-auto w-full flex-nowrap">
681
+ <MenuItem
682
+ v-for="(option, index) in (options ?? [])"
683
+ :key="String(option.value)"
684
+ :active="isOptionSelected(option)"
685
+ :disabled="isOptionDisabled(option)"
686
+ :class="index === highlightedIndex && !isOptionSelected(option) && 'highlighted'"
687
+ @click.prevent="select(option)"
688
+ >
689
+ <slot name="option" :option="option" :selected="isOptionSelected(option)">
690
+ {{ option.label }}
691
+ </slot>
692
+ </MenuItem>
693
+
694
+ <li v-if="(options ?? []).length === 0" class="px-4 py-3 text-sm opacity-40 text-center pointer-events-none">
695
+ <slot name="empty" :query="''">
696
+ {{ $t('common.field.select.empty') }}
697
+ </slot>
698
+ </li>
699
+ </Menu>
700
+ </div>
701
+ </Transition>
702
+ </div>
703
+
704
+ <div v-if="multiple && counterText" class="flex justify-end">
705
+ <span class="text-xs" :class="counterColor">{{ counterText }}</span>
706
+ </div>
707
+ </div>
708
+ </template>
709
+
710
+ <style scoped>
711
+ :deep(.highlighted > a),
712
+ :deep(.highlighted > button) {
713
+ background-color: var(--color-base-200);
714
+ }
715
+
716
+ .select {
717
+ background-image: initial;
718
+ background-position: initial;
719
+ background-size: initial;
720
+ background-repeat: initial;
721
+ }
722
+
723
+ .anchor-trigger {
724
+ anchor-name: v-bind(anchorName);
725
+ }
726
+
727
+ .anchor-dropdown {
728
+ position-anchor: v-bind(anchorName);
729
+ position-area: block-end center;
730
+ position-try-fallbacks: flip-block, flip-inline;
731
+ position-try-order: most-height;
732
+ left: anchor(left);
733
+ right: anchor(right);
734
+ margin-block-start: 4px;
735
+ }
736
+
737
+ .dropdown-enter-active,
738
+ .dropdown-leave-active {
739
+ transition: opacity 0.15s ease, transform 0.15s ease;
740
+ }
741
+
742
+ .dropdown-enter-from,
743
+ .dropdown-leave-to {
744
+ opacity: 0;
745
+ transform: translateY(-4px);
746
+ }
747
+ </style>