@indielayer/ui 2.0.0 → 2.1.0

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 (326) hide show
  1. package/docs/App.vue +19 -4
  2. package/docs/assets/css/tailwind.css +7 -1
  3. package/docs/components/Cookies.vue +3 -1
  4. package/docs/components/common/CodePreview.vue +1 -1
  5. package/docs/components/common/DocsCopyPage.vue +200 -0
  6. package/docs/components/common/DocumentPage.vue +76 -23
  7. package/docs/components/toolbar/ToolbarColorToggle.vue +29 -18
  8. package/docs/components/toolbar/ToolbarSearch.vue +4 -4
  9. package/docs/composables/useDocMeta.ts +63 -4
  10. package/docs/icons.ts +3 -0
  11. package/docs/main.ts +25 -26
  12. package/docs/pages/component/accordion/index.vue +2 -2
  13. package/docs/pages/component/alert/index.vue +2 -2
  14. package/docs/pages/component/avatar/index.vue +4 -4
  15. package/docs/pages/component/badge/index.vue +2 -2
  16. package/docs/pages/component/breadcrumbs/index.vue +2 -2
  17. package/docs/pages/component/button/button-group.vue +3 -3
  18. package/docs/pages/component/button/index.vue +14 -7
  19. package/docs/pages/component/button/tooltip.vue +10 -0
  20. package/docs/pages/component/card/index.vue +2 -2
  21. package/docs/pages/component/carousel/index.vue +2 -2
  22. package/docs/pages/component/checkbox/index.vue +5 -5
  23. package/docs/pages/component/container/index.vue +2 -2
  24. package/docs/pages/component/datepicker/index.vue +2 -2
  25. package/docs/pages/component/divider/index.vue +4 -4
  26. package/docs/pages/component/drawer/index.vue +2 -2
  27. package/docs/pages/component/empty/index.vue +3 -3
  28. package/docs/pages/component/form/index.vue +2 -2
  29. package/docs/pages/component/formGroup/index.vue +2 -2
  30. package/docs/pages/component/infiniteLoader/index.vue +3 -3
  31. package/docs/pages/component/input/index.vue +5 -5
  32. package/docs/pages/component/inputGroup/index.vue +3 -3
  33. package/docs/pages/component/inputGroup/validation.vue +6 -1
  34. package/docs/pages/component/link/index.vue +2 -2
  35. package/docs/pages/component/loader/index.vue +2 -2
  36. package/docs/pages/component/menu/index.vue +2 -2
  37. package/docs/pages/component/modal/index.vue +3 -3
  38. package/docs/pages/component/notifications/index.vue +2 -2
  39. package/docs/pages/component/pagination/index.vue +2 -2
  40. package/docs/pages/component/popover/index.vue +2 -2
  41. package/docs/pages/component/popover/usage.vue +14 -0
  42. package/docs/pages/component/progress/index.vue +3 -3
  43. package/docs/pages/component/qrCode/index.vue +2 -2
  44. package/docs/pages/component/radio/index.vue +3 -3
  45. package/docs/pages/component/scroll/index.vue +3 -3
  46. package/docs/pages/component/select/index.vue +5 -5
  47. package/docs/pages/component/skeleton/index.vue +2 -2
  48. package/docs/pages/component/slider/index.vue +2 -2
  49. package/docs/pages/component/spacer/index.vue +2 -2
  50. package/docs/pages/component/spinner/index.vue +3 -3
  51. package/docs/pages/component/table/index.vue +4 -4
  52. package/docs/pages/component/tabs/index.vue +2 -2
  53. package/docs/pages/component/tabs/usage.vue +26 -0
  54. package/docs/pages/component/tag/index.vue +2 -2
  55. package/docs/pages/component/textarea/index.vue +4 -4
  56. package/docs/pages/component/toggle/index.vue +4 -4
  57. package/docs/pages/component/upload/index.vue +2 -2
  58. package/docs/pages/component/upload/usage.vue +1 -0
  59. package/docs/pages/component/virtualGrid/index.vue +2 -2
  60. package/docs/pages/component/virtualList/index.vue +3 -3
  61. package/docs/pages/icons.vue +2 -2
  62. package/docs/router/index.ts +39 -44
  63. package/docs/search/components.json +1 -1
  64. package/docs/search/index.json +1 -1
  65. package/lib/common/buttonGroupRadius.d.ts +3 -0
  66. package/lib/common/buttonGroupRadius.js +6 -0
  67. package/lib/common/props.d.ts +1 -1
  68. package/lib/common/props.js +10 -9
  69. package/lib/components/accordion/Accordion.vue.d.ts +42 -9
  70. package/lib/components/accordion/Accordion.vue_vue_type_script_setup_true_lang.js +18 -6
  71. package/lib/components/accordion/AccordionItem.vue.d.ts +33 -6
  72. package/lib/components/accordion/AccordionItem.vue_vue_type_script_setup_true_lang.js +31 -6
  73. package/lib/components/alert/Alert.vue.d.ts +27 -6
  74. package/lib/components/alert/Alert.vue_vue_type_script_setup_true_lang.js +20 -6
  75. package/lib/components/avatar/Avatar.vue.d.ts +45 -9
  76. package/lib/components/avatar/Avatar.vue_vue_type_script_setup_true_lang.js +17 -6
  77. package/lib/components/badge/Badge.vue.d.ts +54 -9
  78. package/lib/components/badge/Badge.vue_vue_type_script_setup_true_lang.js +26 -9
  79. package/lib/components/breadcrumbs/Breadcrumbs.vue.d.ts +30 -6
  80. package/lib/components/breadcrumbs/Breadcrumbs.vue_vue_type_script_setup_true_lang.js +13 -5
  81. package/lib/components/button/Button.js +2 -2
  82. package/lib/components/button/Button.vue.d.ts +138 -28
  83. package/lib/components/button/Button.vue_vue_type_script_setup_true_lang.js +192 -70
  84. package/lib/components/button/ButtonGroup.js +4 -5
  85. package/lib/components/button/ButtonGroup.vue.d.ts +54 -10
  86. package/lib/components/button/ButtonGroup.vue_vue_type_script_setup_true_lang.js +30 -19
  87. package/lib/components/button/theme/Button.base.theme.js +6 -5
  88. package/lib/components/button/theme/Button.carbon.theme.js +6 -5
  89. package/lib/components/card/Card.vue.d.ts +3 -0
  90. package/lib/components/card/Card.vue_vue_type_script_setup_true_lang.js +4 -2
  91. package/lib/components/carousel/Carousel.vue.d.ts +21 -3
  92. package/lib/components/carousel/Carousel.vue_vue_type_script_setup_true_lang.js +23 -5
  93. package/lib/components/carousel/CarouselSlide.js +2 -2
  94. package/lib/components/carousel/CarouselSlide.vue.d.ts +3 -0
  95. package/lib/components/carousel/CarouselSlide.vue_vue_type_script_setup_true_lang.js +3 -1
  96. package/lib/components/carousel/{CarouselSlide.vue_vue_type_style_index_0_scoped_e90d2127_lang.module.js → CarouselSlide.vue_vue_type_style_index_0_scoped_4f559831_lang.module.js} +1 -1
  97. package/lib/components/checkbox/Checkbox.vue.d.ts +198 -45
  98. package/lib/components/checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js +20 -3
  99. package/lib/components/container/Container.vue.d.ts +6 -0
  100. package/lib/components/container/Container.vue_vue_type_script_setup_true_lang.js +5 -2
  101. package/lib/components/datepicker/Datepicker.vue.d.ts +462 -36
  102. package/lib/components/datepicker/Datepicker.vue_vue_type_script_setup_true_lang.js +294 -153
  103. package/lib/components/divider/Divider.vue.d.ts +12 -3
  104. package/lib/components/divider/Divider.vue_vue_type_script_setup_true_lang.js +6 -2
  105. package/lib/components/drawer/Drawer.vue.d.ts +39 -6
  106. package/lib/components/drawer/Drawer.vue_vue_type_script_setup_true_lang.js +30 -7
  107. package/lib/components/empty/Empty.vue.d.ts +30 -6
  108. package/lib/components/empty/Empty.vue_vue_type_script_setup_true_lang.js +17 -4
  109. package/lib/components/form/Form.vue.d.ts +48 -9
  110. package/lib/components/form/Form.vue_vue_type_script_setup_true_lang.js +34 -7
  111. package/lib/components/formGroup/FormGroup.vue.d.ts +171 -39
  112. package/lib/components/formGroup/FormGroup.vue_vue_type_script_setup_true_lang.js +15 -9
  113. package/lib/components/icon/Icon.vue.d.ts +9 -0
  114. package/lib/components/icon/Icon.vue_vue_type_script_setup_true_lang.js +6 -3
  115. package/lib/components/image/Image.vue.d.ts +12 -3
  116. package/lib/components/image/Image.vue_vue_type_script_setup_true_lang.js +5 -1
  117. package/lib/components/index.js +18 -18
  118. package/lib/components/input/Input.vue.d.ts +291 -66
  119. package/lib/components/input/Input.vue_vue_type_script_setup_true_lang.js +53 -15
  120. package/lib/components/inputFooter/InputFooter.vue.d.ts +48 -12
  121. package/lib/components/inputFooter/InputFooter.vue_vue_type_script_setup_true_lang.js +18 -5
  122. package/lib/components/inputGroup/InputGroup.vue.d.ts +171 -39
  123. package/lib/components/inputGroup/InputGroup.vue_vue_type_script_setup_true_lang.js +6 -1
  124. package/lib/components/label/Label.vue.d.ts +78 -18
  125. package/lib/components/label/Label.vue_vue_type_script_setup_true_lang.js +28 -8
  126. package/lib/components/link/Link.js +2 -2
  127. package/lib/components/link/Link.vue.d.ts +18 -3
  128. package/lib/components/link/Link.vue_vue_type_script_setup_true_lang.js +10 -5
  129. package/lib/components/loader/Loader.vue.d.ts +30 -6
  130. package/lib/components/loader/Loader.vue_vue_type_script_setup_true_lang.js +11 -3
  131. package/lib/components/menu/Menu.vue.d.ts +51 -9
  132. package/lib/components/menu/Menu.vue_vue_type_script_setup_true_lang.js +24 -8
  133. package/lib/components/menu/MenuItem.js +2 -2
  134. package/lib/components/menu/MenuItem.vue.d.ts +198 -45
  135. package/lib/components/menu/MenuItem.vue_vue_type_script_setup_true_lang.js +84 -23
  136. package/lib/components/menu/{MenuItem.vue_vue_type_style_index_0_scoped_2a6b7341_lang.module.js → MenuItem.vue_vue_type_style_index_0_scoped_5aebaff3_lang.module.js} +1 -1
  137. package/lib/components/modal/Modal.vue.d.ts +177 -39
  138. package/lib/components/modal/Modal.vue_vue_type_script_setup_true_lang.js +104 -23
  139. package/lib/components/notifications/Notifications.vue.d.ts +24 -0
  140. package/lib/components/notifications/Notifications.vue_vue_type_script_setup_true_lang.js +39 -12
  141. package/lib/components/pagination/Pagination.vue.d.ts +12 -0
  142. package/lib/components/pagination/Pagination.vue_vue_type_script_setup_true_lang.js +8 -4
  143. package/lib/components/pagination/PaginationItem.vue.d.ts +18 -3
  144. package/lib/components/pagination/PaginationItem.vue_vue_type_script_setup_true_lang.js +8 -3
  145. package/lib/components/popover/Popover.vue.d.ts +204 -45
  146. package/lib/components/popover/Popover.vue_vue_type_script_setup_true_lang.js +157 -66
  147. package/lib/components/popover/PopoverContainer.vue.d.ts +3 -0
  148. package/lib/components/popover/PopoverContainer.vue_vue_type_script_setup_true_lang.js +3 -1
  149. package/lib/components/popover/PopoverContentBoundary.js +5 -0
  150. package/lib/components/popover/PopoverContentBoundary.vue.d.ts +9 -0
  151. package/lib/components/popover/PopoverContentBoundary.vue_vue_type_script_setup_true_lang.js +18 -0
  152. package/lib/components/popover/theme/PopoverContainer.base.theme.js +1 -1
  153. package/lib/components/progress/Progress.vue.d.ts +9 -0
  154. package/lib/components/progress/Progress.vue_vue_type_script_setup_true_lang.js +7 -4
  155. package/lib/components/qrCode/QrCode.vue.d.ts +24 -3
  156. package/lib/components/qrCode/QrCode.vue_vue_type_script_setup_true_lang.js +13 -5
  157. package/lib/components/radio/Radio.vue.d.ts +186 -42
  158. package/lib/components/radio/Radio.vue_vue_type_script_setup_true_lang.js +10 -2
  159. package/lib/components/radioButton/RadioButton.vue.d.ts +186 -42
  160. package/lib/components/radioButton/RadioButton.vue_vue_type_script_setup_true_lang.js +9 -1
  161. package/lib/components/scroll/Scroll.vue.d.ts +3 -0
  162. package/lib/components/scroll/Scroll.vue_vue_type_script_setup_true_lang.js +9 -4
  163. package/lib/components/select/Select.vue.d.ts +633 -144
  164. package/lib/components/select/Select.vue_vue_type_script_setup_true_lang.js +224 -189
  165. package/lib/components/skeleton/Skeleton.vue.d.ts +6 -0
  166. package/lib/components/skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js +5 -2
  167. package/lib/components/slider/Slider.js +1 -1
  168. package/lib/components/slider/Slider.vue.d.ts +180 -39
  169. package/lib/components/slider/Slider.vue_vue_type_script_setup_true_lang.js +14 -3
  170. package/lib/components/spinner/Spinner.vue.d.ts +6 -0
  171. package/lib/components/spinner/Spinner.vue_vue_type_script_setup_true_lang.js +3 -1
  172. package/lib/components/stepper/Stepper.vue.d.ts +120 -24
  173. package/lib/components/stepper/Stepper.vue_vue_type_script_setup_true_lang.js +63 -15
  174. package/lib/components/tab/Tab.vue.d.ts +112 -31
  175. package/lib/components/tab/Tab.vue_vue_type_script_setup_true_lang.js +166 -95
  176. package/lib/components/tab/TabGroup.vue.d.ts +47 -12
  177. package/lib/components/tab/TabGroup.vue_vue_type_script_setup_true_lang.js +93 -49
  178. package/lib/components/tab/theme/Tab.base.theme.js +6 -6
  179. package/lib/components/tab/theme/Tab.carbon.theme.js +6 -6
  180. package/lib/components/tab/theme/TabGroup.base.theme.js +7 -7
  181. package/lib/components/tab/theme/TabGroup.carbon.theme.js +3 -3
  182. package/lib/components/table/Table.vue.d.ts +45 -9
  183. package/lib/components/table/Table.vue_vue_type_script_setup_true_lang.js +82 -27
  184. package/lib/components/table/TableCell.vue.d.ts +54 -12
  185. package/lib/components/table/TableCell.vue_vue_type_script_setup_true_lang.js +23 -8
  186. package/lib/components/table/TableHead.vue_vue_type_script_setup_true_lang.js +2 -1
  187. package/lib/components/table/TableHeader.vue.d.ts +18 -3
  188. package/lib/components/table/TableHeader.vue_vue_type_script_setup_true_lang.js +10 -4
  189. package/lib/components/table/TableRow.vue.d.ts +15 -3
  190. package/lib/components/table/TableRow.vue_vue_type_script_setup_true_lang.js +10 -5
  191. package/lib/components/tag/Tag.vue.d.ts +33 -6
  192. package/lib/components/tag/Tag.vue_vue_type_script_setup_true_lang.js +21 -7
  193. package/lib/components/textarea/Textarea.vue.d.ts +237 -54
  194. package/lib/components/textarea/Textarea.vue_vue_type_script_setup_true_lang.js +38 -13
  195. package/lib/components/themeProvider/ThemeProvider.vue.d.ts +10 -4
  196. package/lib/components/themeProvider/ThemeProvider.vue_vue_type_script_setup_true_lang.js +6 -1
  197. package/lib/components/toggle/Toggle.vue.d.ts +174 -39
  198. package/lib/components/toggle/Toggle.vue_vue_type_script_setup_true_lang.js +5 -1
  199. package/lib/components/tooltip/ToggleTip.vue.d.ts +24 -6
  200. package/lib/components/tooltip/ToggleTip.vue_vue_type_script_setup_true_lang.js +9 -2
  201. package/lib/components/tooltip/Tooltip.vue.d.ts +30 -6
  202. package/lib/components/tooltip/Tooltip.vue_vue_type_script_setup_true_lang.js +16 -4
  203. package/lib/components/upload/Upload.vue.d.ts +249 -57
  204. package/lib/components/upload/Upload.vue_vue_type_script_setup_true_lang.js +156 -125
  205. package/lib/components/upload/fileAccept.d.ts +6 -0
  206. package/lib/components/upload/fileAccept.js +17 -0
  207. package/lib/composables/useColors.d.ts +1 -0
  208. package/lib/composables/useColors.js +2 -1
  209. package/lib/composables/useCommon.d.ts +1 -0
  210. package/lib/composables/useCommon.js +2 -1
  211. package/lib/composables/useFocusTrap.js +1 -1
  212. package/lib/composables/useInputtable.d.ts +45 -10
  213. package/lib/composables/useInputtable.js +56 -14
  214. package/lib/composables/useInteractive.d.ts +13 -3
  215. package/lib/composables/useInteractive.js +14 -4
  216. package/lib/index.js +12 -12
  217. package/lib/index.umd.js +9 -10
  218. package/lib/themes/base/styles.d.ts +1 -1
  219. package/lib/themes/base/styles.js +1 -1
  220. package/lib/themes/carbon/styles.d.ts +1 -1
  221. package/lib/themes/carbon/styles.js +1 -1
  222. package/lib/version.d.ts +1 -1
  223. package/lib/version.js +1 -1
  224. package/lib/virtual/components/infiniteLoader/InfiniteLoader.vue.d.ts +27 -16
  225. package/lib/virtual/components/infiniteLoader/InfiniteLoader.vue_vue_type_script_setup_true_lang.js +25 -5
  226. package/lib/virtual/components/virtualGrid/VirtualGrid.vue.d.ts +108 -86
  227. package/lib/virtual/components/virtualGrid/VirtualGrid.vue_vue_type_script_setup_true_lang.js +91 -21
  228. package/lib/virtual/components/virtualList/VirtualList.vue.d.ts +62 -48
  229. package/lib/virtual/components/virtualList/VirtualList.vue_vue_type_script_setup_true_lang.js +64 -13
  230. package/lib/virtual/components/virtualList/useDynamicRowHeight.js +4 -3
  231. package/package.json +5 -3
  232. package/src/common/buttonGroupRadius.ts +16 -0
  233. package/src/common/props.ts +10 -9
  234. package/src/components/accordion/Accordion.vue +20 -4
  235. package/src/components/accordion/AccordionItem.vue +28 -3
  236. package/src/components/alert/Alert.vue +22 -6
  237. package/src/components/avatar/Avatar.vue +20 -5
  238. package/src/components/badge/Badge.vue +24 -5
  239. package/src/components/breadcrumbs/Breadcrumbs.vue +15 -5
  240. package/src/components/button/Button.vue +140 -5
  241. package/src/components/button/ButtonGroup.vue +41 -25
  242. package/src/components/button/__tests__/ Button.spec.ts +41 -0
  243. package/src/components/button/__tests__/ ButtonGroup.spec.ts +32 -0
  244. package/src/components/button/theme/Button.base.theme.ts +4 -1
  245. package/src/components/button/theme/Button.carbon.theme.ts +5 -4
  246. package/src/components/card/Card.vue +10 -2
  247. package/src/components/carousel/Carousel.vue +22 -2
  248. package/src/components/carousel/CarouselSlide.vue +6 -0
  249. package/src/components/checkbox/Checkbox.vue +22 -3
  250. package/src/components/container/Container.vue +10 -1
  251. package/src/components/datepicker/Datepicker.vue +466 -101
  252. package/src/components/datepicker/__tests__/Datepicker.spec.ts +31 -0
  253. package/src/components/divider/Divider.vue +9 -3
  254. package/src/components/drawer/Drawer.vue +27 -2
  255. package/src/components/empty/Empty.vue +18 -3
  256. package/src/components/form/Form.vue +32 -3
  257. package/src/components/formGroup/FormGroup.vue +12 -0
  258. package/src/components/icon/Icon.vue +4 -1
  259. package/src/components/image/Image.vue +8 -2
  260. package/src/components/input/Input.vue +54 -12
  261. package/src/components/inputFooter/InputFooter.vue +21 -6
  262. package/src/components/inputGroup/InputGroup.vue +12 -1
  263. package/src/components/label/Label.vue +31 -7
  264. package/src/components/link/Link.vue +16 -5
  265. package/src/components/loader/Loader.vue +10 -2
  266. package/src/components/menu/Menu.vue +23 -5
  267. package/src/components/menu/MenuItem.vue +78 -17
  268. package/src/components/modal/Modal.vue +90 -15
  269. package/src/components/notifications/Notifications.vue +23 -0
  270. package/src/components/notifications/__tests__/Notifications.spec.ts +44 -4
  271. package/src/components/pagination/Pagination.vue +9 -1
  272. package/src/components/pagination/PaginationItem.vue +11 -2
  273. package/src/components/popover/Popover.vue +113 -18
  274. package/src/components/popover/PopoverContainer.vue +9 -1
  275. package/src/components/popover/PopoverContentBoundary.vue +32 -0
  276. package/src/components/popover/__tests__/Popover.spec.ts +51 -0
  277. package/src/components/popover/theme/PopoverContainer.base.theme.ts +1 -1
  278. package/src/components/progress/Progress.vue +8 -3
  279. package/src/components/qrCode/QrCode.vue +9 -1
  280. package/src/components/radio/Radio.vue +16 -2
  281. package/src/components/radioButton/RadioButton.vue +15 -1
  282. package/src/components/scroll/Scroll.vue +15 -4
  283. package/src/components/select/Select.vue +53 -16
  284. package/src/components/skeleton/Skeleton.vue +3 -0
  285. package/src/components/slider/Slider.vue +15 -0
  286. package/src/components/spinner/Spinner.vue +2 -0
  287. package/src/components/stepper/Stepper.vue +57 -9
  288. package/src/components/tab/Tab.vue +153 -63
  289. package/src/components/tab/TabGroup.vue +110 -26
  290. package/src/components/tab/__tests__/Tab.spec.ts +53 -0
  291. package/src/components/tab/__tests__/TabGroup.spec.ts +113 -0
  292. package/src/components/tab/theme/Tab.base.theme.ts +24 -2
  293. package/src/components/tab/theme/Tab.carbon.theme.ts +30 -7
  294. package/src/components/tab/theme/TabGroup.base.theme.ts +12 -9
  295. package/src/components/tab/theme/TabGroup.carbon.theme.ts +6 -2
  296. package/src/components/table/Table.vue +76 -19
  297. package/src/components/table/TableCell.vue +25 -6
  298. package/src/components/table/TableHead.vue +9 -2
  299. package/src/components/table/TableHeader.vue +16 -3
  300. package/src/components/table/TableRow.vue +17 -5
  301. package/src/components/tag/Tag.vue +22 -6
  302. package/src/components/textarea/Textarea.vue +40 -11
  303. package/src/components/themeProvider/ThemeProvider.vue +22 -7
  304. package/src/components/toggle/Toggle.vue +9 -1
  305. package/src/components/tooltip/ToggleTip.vue +12 -3
  306. package/src/components/tooltip/Tooltip.vue +19 -3
  307. package/src/components/upload/Upload.vue +46 -16
  308. package/src/components/upload/__tests__/fileAccept.spec.ts +39 -0
  309. package/src/components/upload/fileAccept.ts +29 -0
  310. package/src/composables/useColors.ts +1 -0
  311. package/src/composables/useCommon.ts +1 -0
  312. package/src/composables/useFocusTrap.ts +3 -1
  313. package/src/composables/useInputtable.ts +66 -10
  314. package/src/composables/useInteractive.ts +13 -3
  315. package/src/themes/base/styles.ts +2 -3
  316. package/src/themes/carbon/styles.ts +2 -3
  317. package/src/version.ts +1 -1
  318. package/src/virtual/components/infiniteLoader/InfiniteLoader.vue +33 -1
  319. package/src/virtual/components/virtualGrid/VirtualGrid.vue +104 -10
  320. package/src/virtual/components/virtualList/VirtualList.vue +73 -8
  321. package/src/virtual/components/virtualList/useDynamicRowHeight.ts +9 -2
  322. package/volar.d.ts +3 -0
  323. package/docs/layouts/simple.vue +0 -5
  324. package/lib/components/button/ButtonGroup.vue_vue_type_style_index_0_lang.module.js +0 -7
  325. /package/lib/components/button/{Button.vue_vue_type_style_index_0_scoped_4402fde2_lang.module.js → Button.vue_vue_type_style_index_0_scoped_486cb9c0_lang.module.js} +0 -0
  326. /package/lib/components/link/{Link.vue_vue_type_style_index_0_scoped_8e0e4d08_lang.module.js → Link.vue_vue_type_style_index_0_scoped_3ee61e03_lang.module.js} +0 -0
@@ -17,5 +17,19 @@
17
17
  </x-popover-container>
18
18
  </template>
19
19
  </x-popover>
20
+
21
+ <x-button-group>
22
+ <x-button icon="plus" tooltip="Add New">Add New</x-button>
23
+ <x-popover>
24
+ <x-button icon="chevron-down" tooltip="More Options"/>
25
+ <template #content>
26
+ <x-popover-container class="p-2">
27
+ <x-button>Option 1</x-button>
28
+ <x-button>Option 2</x-button>
29
+ <x-button>Option 3</x-button>
30
+ </x-popover-container>
31
+ </template>
32
+ </x-popover>
33
+ </x-button-group>
20
34
  </div>
21
35
  </template>
@@ -6,16 +6,16 @@ import VariantsDemoCode from './variants.vue?raw'
6
6
  import VariantsDemo from './variants.vue'
7
7
 
8
8
  const title = 'Progress'
9
- const description = 'Progress indicators visually communicate the completion status of a task or process, such as file uploads or data loading. They help users understand how much work remains.'
9
+ const description = 'Bar that shows how far a task or process has completed. Use progress for uploads, multi-step jobs, and determinate loading states.'
10
10
  const components = [XProgress]
11
11
  const demos = [{
12
12
  name: 'Usage',
13
- description: '',
13
+ description: 'Basic example with common props.',
14
14
  code: UsageDemoCode,
15
15
  component: UsageDemo,
16
16
  }, {
17
17
  name: 'Variants',
18
- description: '',
18
+ description: 'Color and style variants.',
19
19
  code: VariantsDemoCode,
20
20
  component: VariantsDemo,
21
21
  }]
@@ -4,11 +4,11 @@ import UsageDemoCode from './usage.vue?raw'
4
4
  import UsageDemo from './usage.vue'
5
5
 
6
6
  const title = 'QR Code'
7
- const description = 'The QR Code component is used to generate a QR code.'
7
+ const description = 'Renders a QR code from a string or URL for scanning with mobile devices. Use it for share links, payments, and quick machine-readable payloads.'
8
8
  const components = [XQrCode]
9
9
  const demos = [{
10
10
  name: 'Usage',
11
- description: '',
11
+ description: 'Basic example with common props.',
12
12
  code: UsageDemoCode,
13
13
  component: UsageDemo,
14
14
  }]
@@ -18,7 +18,7 @@ const description = 'Radios allow the user to select one option from a set. Use
18
18
  const components = [XRadio, XRadioButton]
19
19
  const demos = [{
20
20
  name: 'Usage',
21
- description: '',
21
+ description: 'Basic example with common props.',
22
22
  code: UsageDemoCode,
23
23
  component: UsageDemo,
24
24
  }, {
@@ -38,12 +38,12 @@ const demos = [{
38
38
  component: RadioButtonFormGroupDemo,
39
39
  }, {
40
40
  name: 'States',
41
- description: '',
41
+ description: 'Disabled, loading, and other interactive states.',
42
42
  code: StatesDemoCode,
43
43
  component: StatesDemo,
44
44
  }, {
45
45
  name: 'Size',
46
- description: '',
46
+ description: 'Size options from xs to lg.',
47
47
  code: SizeDemoCode,
48
48
  component: SizeDemo,
49
49
  }]
@@ -6,16 +6,16 @@ import HorizontalDemoCode from './horizontal.vue?raw'
6
6
  import HorizontalDemo from './horizontal.vue'
7
7
 
8
8
  const title = 'Scroll'
9
- const description = 'The Scroll component enhances scrolling experiences by adding visual cues, such as inner shadows, to indicate additional content. It is useful for horizontally or vertically scrolling lists and containers.'
9
+ const description = 'Scroll container with optional edge shadows that hint at more content. Use Scroll for overflow lists and panels that scroll vertically or horizontally.'
10
10
  const components = [XScroll]
11
11
  const demos = [{
12
12
  name: 'Usage',
13
- description: '',
13
+ description: 'Vertical scroll with edge shadow cues.',
14
14
  code: UsageDemoCode,
15
15
  component: UsageDemo,
16
16
  }, {
17
17
  name: 'Horizontal',
18
- description: '',
18
+ description: 'Horizontal scroll with edge shadow cues.',
19
19
  code: HorizontalDemoCode,
20
20
  component: HorizontalDemo,
21
21
  }]
@@ -10,26 +10,26 @@ import StatesDemoCode from './states.vue?raw'
10
10
  import StatesDemo from './states.vue'
11
11
 
12
12
  const title = 'Select'
13
- const description = 'Selects allow the user to select one or more options from a set.'
13
+ const description = 'Dropdown for choosing one or more options from a predefined list. Use Select for enums, filters, and form fields where free text is not needed.'
14
14
  const components = [XSelect]
15
15
  const demos = [{
16
16
  name: 'Usage',
17
- description: '',
17
+ description: 'Basic example with common props.',
18
18
  code: UsageDemoCode,
19
19
  component: UsageDemo,
20
20
  }, {
21
21
  name: 'Multiple',
22
- description: '',
22
+ description: 'Selecting more than one option at once.',
23
23
  code: MultipleDemoCode,
24
24
  component: MultipleDemo,
25
25
  }, {
26
26
  name: 'Size',
27
- description: '',
27
+ description: 'Size options from xs to lg.',
28
28
  code: SizeDemoCode,
29
29
  component: SizeDemo,
30
30
  }, {
31
31
  name: 'States',
32
- description: '',
32
+ description: 'Disabled, loading, and other interactive states.',
33
33
  code: StatesDemoCode,
34
34
  component: StatesDemo,
35
35
  }]
@@ -4,11 +4,11 @@ import UsageDemoCode from './usage.vue?raw'
4
4
  import UsageDemo from './usage.vue'
5
5
 
6
6
  const title = 'Skeleton'
7
- const description = 'Skeletons provide placeholder elements that mimic the layout of content while data is loading. They improve perceived performance by giving users a visual cue that content is being fetched.'
7
+ const description = 'Placeholder shapes that mirror content layout while data loads. Use skeletons to reduce layout shift and improve perceived loading performance.'
8
8
  const components = [XSkeleton]
9
9
  const demos = [{
10
10
  name: 'Usage',
11
- description: '',
11
+ description: 'Basic example with common props.',
12
12
  code: UsageDemoCode,
13
13
  component: UsageDemo,
14
14
  }]
@@ -4,11 +4,11 @@ import UsageDemoCode from './usage.vue?raw'
4
4
  import UsageDemo from './usage.vue'
5
5
 
6
6
  const title = 'Slider'
7
- const description = 'Sliders allow users to select a numeric value or range by dragging a handle along a track. They are ideal for adjusting settings such as volume, brightness, or price filters.'
7
+ const description = 'Track with a draggable handle for picking a numeric value or range. Use sliders for volume, brightness, price filters, and similar continuous settings.'
8
8
  const components = [XSlider]
9
9
  const demos = [{
10
10
  name: 'Usage',
11
- description: '',
11
+ description: 'Basic example with common props.',
12
12
  code: UsageDemoCode,
13
13
  component: UsageDemo,
14
14
  }]
@@ -4,11 +4,11 @@ import UsageDemoCode from './usage.vue?raw'
4
4
  import UsageDemo from './usage.vue'
5
5
 
6
6
  const title = 'Spacer'
7
- const description = 'Spacers create adjustable gaps between elements within flex layouts, helping to control spacing and alignment without using margin or padding directly.'
7
+ const description = 'Flex-friendly gap that expands or shrinks between siblings without extra margin or padding. Use spacers to push items apart in toolbars and rows.'
8
8
  const components = [XSpacer]
9
9
  const demos = [{
10
10
  name: 'Usage',
11
- description: '',
11
+ description: 'Basic example with common props.',
12
12
  code: UsageDemoCode,
13
13
  component: UsageDemo,
14
14
  }]
@@ -6,16 +6,16 @@ import VariantsDemoCode from './variants.vue?raw'
6
6
  import VariantsDemo from './variants.vue'
7
7
 
8
8
  const title = 'Spinner'
9
- const description = 'Spinners visually indicate that a background process or operation is ongoing, such as loading data or submitting a form. They help manage user expectations by signaling that the system is working.'
9
+ const description = 'Animated indicator that a background process is still running. Use spinners for indeterminate loading when completion percentage is unknown.'
10
10
  const components = [XSpinner]
11
11
  const demos = [{
12
12
  name: 'Usage',
13
- description: '',
13
+ description: 'Basic example with common props.',
14
14
  code: UsageDemoCode,
15
15
  component: UsageDemo,
16
16
  }, {
17
17
  name: 'Variants',
18
- description: '',
18
+ description: 'Color and style variants.',
19
19
  code: VariantsDemoCode,
20
20
  component: VariantsDemo,
21
21
  }]
@@ -14,22 +14,22 @@ const description = 'Tables display tabular data with single- or multi-column so
14
14
  const components = [XTable, XTableBody, XTableCell, XTableHead, XTableHeader, XTableRow]
15
15
  const demos = [{
16
16
  name: 'Usage',
17
- description: '',
17
+ description: 'Basic example with common props.',
18
18
  code: UsageDemoCode,
19
19
  component: UsageDemo,
20
20
  }, {
21
21
  name: 'Selectable',
22
- description: '',
22
+ description: 'Row selection with checkboxes.',
23
23
  code: SelectableDemoCode,
24
24
  component: SelectableDemo,
25
25
  }, {
26
26
  name: 'Virtual List',
27
- description: '',
27
+ description: 'Virtualized rows for large datasets.',
28
28
  code: VirtualDemoCode,
29
29
  component: VirtualDemo,
30
30
  }, {
31
31
  name: 'States',
32
- description: '',
32
+ description: 'Loading, empty, and other table states.',
33
33
  code: StatesDemoCode,
34
34
  component: StatesDemo,
35
35
  }]
@@ -4,11 +4,11 @@ import UsageDemoCode from './usage.vue?raw'
4
4
  import UsageDemo from './usage.vue'
5
5
 
6
6
  const title = 'Tabs'
7
- const description = 'Tabs are used to navigate through a set of views.'
7
+ const description = 'Tabbed navigation that switches between related views in the same region. Use x-tab-group with x-tab when content shares context but not space.'
8
8
  const components = [XTabGroup, XTab]
9
9
  const demos = [{
10
10
  name: 'Usage',
11
- description: '',
11
+ description: 'Basic example with common props.',
12
12
  code: UsageDemoCode,
13
13
  component: UsageDemo,
14
14
  }]
@@ -3,6 +3,8 @@ import { ref } from 'vue'
3
3
 
4
4
  const tab = ref('a')
5
5
  const linkTab = ref(null)
6
+ const metric = ref('unique')
7
+ const view = ref('grid')
6
8
  </script>
7
9
 
8
10
  <template>
@@ -131,6 +133,30 @@ const linkTab = ref(null)
131
133
  </x-tab>
132
134
  </x-tab-group>
133
135
 
136
+ <p>Compact</p>
137
+ <div class="flex gap-4 items-start">
138
+ <x-tab-group
139
+ v-model="metric"
140
+ color="indigo"
141
+ class="pb-10"
142
+ variant="compact"
143
+ >
144
+ <x-tab value="unique" label="Unique" />
145
+ <x-tab value="total" label="Total" />
146
+ </x-tab-group>
147
+
148
+ <x-tab-group
149
+ v-model="view"
150
+ color="indigo"
151
+ class="pb-10"
152
+ size="md"
153
+ variant="compact"
154
+ >
155
+ <x-tab value="grid" icon="sun" tooltip="Grid view" />
156
+ <x-tab value="list" icon="moon" tooltip="List view" />
157
+ </x-tab-group>
158
+ </div>
159
+
134
160
  <p>Automatic link as value</p>
135
161
  <x-tab-group v-model="linkTab" class="pb-10" exact>
136
162
  <x-tab to="/component/tabs" label="Tabs link">
@@ -4,11 +4,11 @@ import UsageDemoCode from './usage.vue?raw'
4
4
  import UsageDemo from './usage.vue'
5
5
 
6
6
  const title = 'Tag'
7
- const description = 'Tags are compact elements used to display brief information, such as categories, statuses, or labels. They help organize content and provide quick context or filtering options within lists and interfaces.'
7
+ const description = 'Compact labels for categories, statuses, or filters. Use tags in lists and chip groups when a short keyword should stand out.'
8
8
  const components = [XTag]
9
9
  const demos = [{
10
10
  name: 'Usage',
11
- description: '',
11
+ description: 'Basic example with common props.',
12
12
  code: UsageDemoCode,
13
13
  component: UsageDemo,
14
14
  }]
@@ -8,21 +8,21 @@ import StatesDemoCode from './states.vue?raw'
8
8
  import StatesDemo from './states.vue'
9
9
 
10
10
  const title = 'Textarea'
11
- const description = 'Textareas provide a multi-line input field for users to enter longer text, such as comments, descriptions, or messages. They support resizing and can be customized for different use cases.'
11
+ const description = 'Multi-line text field for longer content such as comments and descriptions. Use Textarea when a single-line input is not enough.'
12
12
  const components = [XTextarea]
13
13
  const demos = [{
14
14
  name: 'Usage',
15
- description: '',
15
+ description: 'Basic example with common props.',
16
16
  code: UsageDemoCode,
17
17
  component: UsageDemo,
18
18
  }, {
19
19
  name: 'Variants',
20
- description: '',
20
+ description: 'Color and style variants.',
21
21
  code: VariantsDemoCode,
22
22
  component: VariantsDemo,
23
23
  }, {
24
24
  name: 'States',
25
- description: '',
25
+ description: 'Disabled, loading, and other interactive states.',
26
26
  code: StatesDemoCode,
27
27
  component: StatesDemo,
28
28
  }]
@@ -8,21 +8,21 @@ import StatesDemoCode from './states.vue?raw'
8
8
  import StatesDemo from './states.vue'
9
9
 
10
10
  const title = 'Toggle'
11
- const description = 'Toggles provide a simple switch interface for enabling or disabling a setting, or switching between two mutually exclusive states. They are ideal for binary options such as on/off, active/inactive, or show/hide.'
11
+ const description = 'Binary switch for on/off settings and mutually exclusive states. Use toggles when the choice should feel instant and reversible.'
12
12
  const components = [XToggle]
13
13
  const demos = [{
14
14
  name: 'Usage',
15
- description: '',
15
+ description: 'Basic example with common props.',
16
16
  code: UsageDemoCode,
17
17
  component: UsageDemo,
18
18
  }, {
19
19
  name: 'Variants',
20
- description: '',
20
+ description: 'Color and style variants.',
21
21
  code: VariantsDemoCode,
22
22
  component: VariantsDemo,
23
23
  }, {
24
24
  name: 'States',
25
- description: '',
25
+ description: 'Disabled, loading, and other interactive states.',
26
26
  code: StatesDemoCode,
27
27
  component: StatesDemo,
28
28
  }]
@@ -4,11 +4,11 @@ import UsageDemoCode from './usage.vue?raw'
4
4
  import UsageDemo from './usage.vue'
5
5
 
6
6
  const title = 'Upload'
7
- const description = 'Upload is a component that allows you to upload files.'
7
+ const description = 'File picker with drag-and-drop for selecting one or more files to upload. Use Upload when forms need images, documents, or other file input with accept filters.'
8
8
  const components = [XUpload]
9
9
  const demos = [{
10
10
  name: 'Usage',
11
- description: '',
11
+ description: 'Basic example with common props.',
12
12
  code: UsageDemoCode,
13
13
  component: UsageDemo,
14
14
  }]
@@ -95,6 +95,7 @@ const action = 'https://run.mocky.io/v3/6904ae0b-3cfa-4ae1-bbf2-243a4dd32a3c'
95
95
  :with-credentials="false"
96
96
  :rules="[rules.isValidUpload]"
97
97
  placeholder="Upload game title cover image"
98
+ accept="image/*"
98
99
  max-file-size="2000000"
99
100
  label="Cover Image"
100
101
  tooltip="Title cover image should be 16:9 aspect ratio and max 2MB"
@@ -4,11 +4,11 @@ import UsageDemoCode from './usage.vue?raw'
4
4
  import UsageDemo from './usage.vue'
5
5
 
6
6
  const title = 'VirtualGrid'
7
- const description = 'VirtualGrid is a component that allows you to render a grid of items in a virtualized way. It is a high-performance component that is used to render large grids of items.'
7
+ const description = 'Renders only visible cells of a large grid for better scroll performance. Use VirtualGrid when a dense grid would be too heavy to mount all at once.'
8
8
  const components = [XVirtualGrid]
9
9
  const demos = [{
10
10
  name: 'Usage',
11
- description: '',
11
+ description: 'Basic example with common props.',
12
12
  code: UsageDemoCode,
13
13
  component: UsageDemo,
14
14
  }]
@@ -6,16 +6,16 @@ import DynamicHeightDemoCode from './dynamicHeight.vue?raw'
6
6
  import DynamicHeightDemo from './dynamicHeight.vue'
7
7
 
8
8
  const title = 'VirtualList'
9
- const description = 'VirtualList is a component that allows you to render a list of items in a virtualized way. It is a high-performance component that is used to render large lists of items.'
9
+ const description = 'Renders only visible rows of a long list for better scroll performance. Use VirtualList for feeds and catalogs with thousands of items.'
10
10
  const components = [XVirtualList]
11
11
  const demos = [{
12
12
  name: 'Usage',
13
- description: '',
13
+ description: 'Basic example with common props.',
14
14
  code: UsageDemoCode,
15
15
  component: UsageDemo,
16
16
  }, {
17
17
  name: 'Dynamic Height',
18
- description: '',
18
+ description: 'Rows with variable heights while scrolling.',
19
19
  code: DynamicHeightDemoCode,
20
20
  component: DynamicHeightDemo,
21
21
  }]
@@ -44,8 +44,8 @@ const iconExample2 = `<template>
44
44
 
45
45
  <template>
46
46
  <div class="docs-container">
47
- <h2 class="text-4xl font-semibold">Icons</h2>
48
- <h1 class="text-lg my-2 text-gray-500 dark:text-gray-400">Building your own SVG icon library from multiple open source libraries</h1>
47
+ <h1 class="text-4xl font-semibold">Icons</h1>
48
+ <p class="text-lg my-2 text-gray-500 dark:text-gray-400">Building your own SVG icon library from multiple open source libraries</p>
49
49
  <x-divider class="mt-4 mb-8"/>
50
50
 
51
51
  <p class="text-xl mt-8 my-4">SVG Icon Libraries</p>
@@ -1,8 +1,7 @@
1
- import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router'
1
+ import type { RouteRecordRaw, RouterScrollBehavior } from 'vue-router'
2
2
 
3
3
  // layouts
4
4
  import DefaultLayout from '../layouts/default.vue'
5
- import SimpleLayout from '../layouts/simple.vue'
6
5
 
7
6
  // help
8
7
  import HomePage from '../pages/index.vue'
@@ -14,22 +13,22 @@ import ErrorPage from '../pages/error.vue'
14
13
 
15
14
  const pages: Record<string, any> = import.meta.glob('../pages/component/*/index.vue', { eager: true })
16
15
 
17
- const componentPages: RouteRecordRaw[] = []
16
+ const componentPages: RouteRecordRaw[] = Object.keys(pages).flatMap((filePath) => {
17
+ const match = filePath.match(/\/pages\/component\/(.*)\/index\.vue$/)
18
18
 
19
- Object.keys(pages).forEach((path) => {
20
- const match = path.match(/\/pages\/component\/(.*)\/index\.vue$/)
19
+ if (!match) return []
21
20
 
22
- if (match) {
23
- const name = match[1].toLowerCase()
21
+ const name = match[1]
24
22
 
25
- componentPages.push({
26
- path: name,
27
- component: pages[path].default,
28
- })
29
- }
23
+ return [{
24
+ // Absolute child path: nests in DefaultLayout but keeps a root URL.
25
+ path: `/component/${name}`,
26
+ name: `component-${name}`,
27
+ component: pages[filePath].default,
28
+ }]
30
29
  })
31
30
 
32
- const routes: RouteRecordRaw[] = [{
31
+ export const routes: RouteRecordRaw[] = [{
33
32
  path: '/',
34
33
  component: DefaultLayout,
35
34
  children: [{
@@ -51,11 +50,9 @@ const routes: RouteRecordRaw[] = [{
51
50
  path: 'colors',
52
51
  name: 'colors',
53
52
  component: ColorsPage,
54
- }, {
55
- path: 'component',
56
- component: SimpleLayout,
57
- children: componentPages,
58
- }],
53
+ },
54
+ ...componentPages,
55
+ ],
59
56
  }, {
60
57
  path: '/play',
61
58
  component: PlayPage,
@@ -65,37 +62,35 @@ const routes: RouteRecordRaw[] = [{
65
62
  component: ErrorPage,
66
63
  }]
67
64
 
68
- const router = createRouter({
69
- history: createWebHistory(import.meta.env.BASE_URL),
70
- routes,
71
- scrollBehavior(to, from, savedPosition) {
72
- const main = document.getElementById('main')
65
+ export const scrollBehavior: RouterScrollBehavior = (to, _from, savedPosition) => {
66
+ if (typeof document === 'undefined') return { top: 0 }
67
+
68
+ const main = document.getElementById('main')
73
69
 
74
- if (to.hash) {
75
- return new Promise((resolve) => {
76
- setTimeout(() => {
77
- const el = document.querySelector(to.hash)
70
+ if (to.hash) {
71
+ return new Promise((resolve) => {
72
+ setTimeout(() => {
73
+ const el = document.querySelector(to.hash)
78
74
 
79
- if (el && main) {
80
- const top = (el as HTMLElement).offsetTop - 80
75
+ if (el && main) {
76
+ const top = (el as HTMLElement).offsetTop - 80
81
77
 
82
- main.scrollTo({ top, behavior: 'smooth' })
83
- }
84
- resolve({ el: to.hash, behavior: 'smooth', top: 80 })
85
- }, 100)
86
- })
87
- }
78
+ main.scrollTo({ top, behavior: 'smooth' })
79
+ }
80
+ resolve({ el: to.hash, behavior: 'smooth', top: 80 })
81
+ }, 100)
82
+ })
83
+ }
88
84
 
89
- if (savedPosition) {
90
- main?.scrollTo(savedPosition)
85
+ if (savedPosition) {
86
+ main?.scrollTo(savedPosition)
91
87
 
92
- return savedPosition
93
- }
88
+ return savedPosition
89
+ }
94
90
 
95
- main?.scrollTo(0, 0)
91
+ main?.scrollTo(0, 0)
96
92
 
97
- return { top: 0 }
98
- },
99
- })
93
+ return { top: 0 }
94
+ }
100
95
 
101
- export default router
96
+ export default routes
@@ -1 +1 @@
1
- [{"name":"Accordion","description":"Accordion is a component that allows you to collapse and expand content.","url":"/component/accordion","category":"component"},{"name":"Alert","description":"Alerts are used to communicate a state that affects a system, feature or page.","url":"/component/alert","category":"component"},{"name":"Avatar","description":"Avatars are used to represent a user.","url":"/component/avatar","category":"component"},{"name":"Badge","description":"Badges are used to display a small amount of information.","url":"/component/badge","category":"component"},{"name":"Breadcrumbs","description":"Breadcrumbs are used to indicate the current page\\","url":"/component/breadcrumbs","category":"component"},{"name":"Button","description":"Buttons allow users to perform actions and make choices with a single click. They are commonly used for submitting forms, opening dialogs or menus, and executing commands. Buttons can be customized with different styles, sizes, and icons to fit various use cases.","url":"/component/button","category":"component"},{"name":"Card","description":"Cards are used to display content in an organized manner.","url":"/component/card","category":"component"},{"name":"Carousel","description":"A carousel is a rotating set of images.","url":"/component/carousel","category":"component"},{"name":"Checkbox","description":"Checkboxes enable users to select one or multiple options from a list. They are ideal for toggling settings or making selections where more than one choice is allowed. Each checkbox can be checked or unchecked independently.","url":"/component/checkbox","category":"component"},{"name":"Container","description":"Containers provide a flexible layout element for grouping and organizing content. They help structure pages by controlling width, alignment, and spacing, ensuring consistent presentation across different sections.","url":"/component/container","category":"component"},{"name":"Datepicker","description":"The datepicker component is used to select a date or time.","url":"/component/datepicker","category":"component"},{"name":"Divider","description":"Dividers are used to separate content.","url":"/component/divider","category":"component"},{"name":"Drawer","description":"Drawers slide in from the edge of the screen to present navigation, options, or additional content without disrupting the main view. They are ideal for menus, filters, or contextual panels.","url":"/component/drawer","category":"component"},{"name":"Empty","description":"Empty states communicate when there is no content to show. Use them in tables, lists, and panels with a title, description, optional icon, and actions.","url":"/component/empty","category":"component"},{"name":"Form","description":"Forms provide a structured way to collect and validate user input, such as text, selections, and files. They support features like validation, grouping, and submission handling, making it easy to build interactive and accessible data entry interfaces.","url":"/component/form","category":"component"},{"name":"FormGroup","description":"Form groups organize related form elements together, providing structure and shared validation. They help group checkboxes, radio buttons, or inputs that belong to the same logical section.","url":"/component/formGroup","category":"component"},{"name":"Icon","description":"Icons visually represent actions and concepts. Register SVG paths in a global map, then reference them by name on XIcon.","url":"/component/icon","category":"component"},{"name":"Image","description":"Loads a remote image after preloading. Use a background on the wrapper for a visible placeholder until load completes.","url":"/component/image","category":"component"},{"name":"InfiniteLoader","description":"InfiniteLoader is a component that allows you to load data on demand as users scroll through a list.","url":"/component/infiniteLoader","category":"component"},{"name":"Input","description":"This is a text input component that allows users to enter and edit text.","url":"/component/input","category":"component"},{"name":"Input Group","description":"Input groups combine multiple inline fields (Input, Textarea, Select, Datepicker, Button) into one control with a shared label and footer.","url":"/component/inputGroup","category":"component"},{"name":"Link","description":"Links are used to navigate to a different page.","url":"/component/link","category":"component"},{"name":"Loader","description":"Loader component is used to show a loading state.","url":"/component/loader","category":"component"},{"name":"Menu","description":"Menus are used to display a list of options.","url":"/component/menu","category":"component"},{"name":"Modal","description":"Modals are used to display content on top of the current page.","url":"/component/modal","category":"component"},{"name":"Notifications","description":"Notifications provide timely feedback or alerts to users, such as success messages, warnings, or errors. They help keep users informed about important events or actions.","url":"/component/notifications","category":"component"},{"name":"Pagination","description":"Pagination divides large sets of content into manageable pages, allowing users to navigate through items efficiently. It is commonly used in tables, lists, and search results to improve usability and performance.","url":"/component/pagination","category":"component"},{"name":"Popover","description":"Popovers display additional information or interactive content in a floating overlay, anchored to a trigger element. They are useful for tooltips, menus, or contextual actions without navigating away from the current view.","url":"/component/popover","category":"component"},{"name":"Progress","description":"Progress indicators visually communicate the completion status of a task or process, such as file uploads or data loading. They help users understand how much work remains.","url":"/component/progress","category":"component"},{"name":"QR Code","description":"The QR Code component is used to generate a QR code.","url":"/component/qrCode","category":"component"},{"name":"Radio","description":"Radios allow the user to select one option from a set. Use classic radios for standard options, or x-radio-button for a button-shaped variant. Place several x-radio-button options inside x-form-group for a joined segmented control.","url":"/component/radio","category":"component"},{"name":"Scroll","description":"The Scroll component enhances scrolling experiences by adding visual cues, such as inner shadows, to indicate additional content. It is useful for horizontally or vertically scrolling lists and containers.","url":"/component/scroll","category":"component"},{"name":"Select","description":"Selects allow the user to select one or more options from a set.","url":"/component/select","category":"component"},{"name":"Skeleton","description":"Skeletons provide placeholder elements that mimic the layout of content while data is loading. They improve perceived performance by giving users a visual cue that content is being fetched.","url":"/component/skeleton","category":"component"},{"name":"Slider","description":"Sliders allow users to select a numeric value or range by dragging a handle along a track. They are ideal for adjusting settings such as volume, brightness, or price filters.","url":"/component/slider","category":"component"},{"name":"Spacer","description":"Spacers create adjustable gaps between elements within flex layouts, helping to control spacing and alignment without using margin or padding directly.","url":"/component/spacer","category":"component"},{"name":"Spinner","description":"Spinners visually indicate that a background process or operation is ongoing, such as loading data or submitting a form. They help manage user expectations by signaling that the system is working.","url":"/component/spinner","category":"component"},{"name":"Stepper","description":"Multi-step wizard with declarative steps, named panel slots, programmatic next/prev navigation, validation hooks, and optional sidebar summaries.","url":"/component/stepper","category":"component"},{"name":"Table","description":"Tables display tabular data with single- or multi-column sorting, selection, expandable rows, and virtual lists.","url":"/component/table","category":"component"},{"name":"Tabs","description":"Tabs are used to navigate through a set of views.","url":"/component/tabs","category":"component"},{"name":"Tag","description":"Tags are compact elements used to display brief information, such as categories, statuses, or labels. They help organize content and provide quick context or filtering options within lists and interfaces.","url":"/component/tag","category":"component"},{"name":"Textarea","description":"Textareas provide a multi-line input field for users to enter longer text, such as comments, descriptions, or messages. They support resizing and can be customized for different use cases.","url":"/component/textarea","category":"component"},{"name":"Toggle","description":"Toggles provide a simple switch interface for enabling or disabling a setting, or switching between two mutually exclusive states. They are ideal for binary options such as on/off, active/inactive, or show/hide.","url":"/component/toggle","category":"component"},{"name":"Tooltip","description":"Tooltips display contextual help on hover. Use XToggleTip for a compact info-icon pattern beside labels.","url":"/component/tooltip","category":"component"},{"name":"Upload","description":"Upload is a component that allows you to upload files.","url":"/component/upload","category":"component"},{"name":"VirtualGrid","description":"VirtualGrid is a component that allows you to render a grid of items in a virtualized way. It is a high-performance component that is used to render large grids of items.","url":"/component/virtualGrid","category":"component"},{"name":"VirtualList","description":"VirtualList is a component that allows you to render a list of items in a virtualized way. It is a high-performance component that is used to render large lists of items.","url":"/component/virtualList","category":"component"}]
1
+ [{"name":"Accordion","description":"Collapsible panels for showing and hiding related content. Use x-accordion with x-accordion-item when space is limited and users need progressive disclosure.","url":"/component/accordion","category":"component"},{"name":"Alert","description":"Inline notices for system, feature, or page status—success, warning, error, or info. Use alerts when the message should stay visible until addressed.","url":"/component/alert","category":"component"},{"name":"Avatar","description":"Displays a user's photo, initials, or icon in a compact frame. Use avatars in lists, headers, and comments to identify people at a glance.","url":"/component/avatar","category":"component"},{"name":"Badge","description":"Small status indicators that overlay or sit beside another element—counts, labels, or presence dots. Use badges to draw attention without interrupting the layout.","url":"/component/badge","category":"component"},{"name":"Breadcrumbs","description":"Shows the current page's place in a navigational hierarchy. Use breadcrumbs for deep page trees so users can jump back to parent sections.","url":"/component/breadcrumbs","category":"component"},{"name":"Button","description":"Clickable controls for primary actions—submit, open dialogs, or run commands. Customize style, size, and icons; group related actions with x-button-group.","url":"/component/button","category":"component"},{"name":"Card","description":"A bordered content container for grouping related information, media, and actions. Use cards in grids and dashboards when each block should stand alone.","url":"/component/card","category":"component"},{"name":"Carousel","description":"A sliding viewport for cycling through images or content panels. Use carousels for galleries and featured items when horizontal space is limited.","url":"/component/carousel","category":"component"},{"name":"Checkbox","description":"Multi-select controls for choosing one or more options independently. Use checkboxes for settings and lists where more than one choice can be active.","url":"/component/checkbox","category":"component"},{"name":"Container","description":"Layout wrapper that constrains content width and alignment for consistent page structure. Use containers to center and pad main content across breakpoints.","url":"/component/container","category":"component"},{"name":"Datepicker","description":"Date and time picker styled as a wrapper around @vuepic/vue-datepicker. Use it for forms that need calendar or datetime selection with Indielayer look and feel.","url":"/component/datepicker","category":"component"},{"name":"Divider","description":"A horizontal or vertical rule that separates sections of content. Use dividers in lists, toolbars, and layouts to create clear visual breaks.","url":"/component/divider","category":"component"},{"name":"Drawer","description":"Panels that slide in from the screen edge for navigation, filters, or extra content. Use drawers when side context should overlay without leaving the page.","url":"/component/drawer","category":"component"},{"name":"Empty","description":"Empty states communicate when there is no content to show. Use them in tables, lists, and panels with a title, description, optional icon, and actions.","url":"/component/empty","category":"component"},{"name":"Form","description":"Structured form wrapper for collecting and validating user input. Use x-form to group fields, run validation, and handle submit in one place.","url":"/component/form","category":"component"},{"name":"FormGroup","description":"Groups related fields with a shared label and validation context. Use form groups for checkboxes, radios, or inputs that belong to one logical section.","url":"/component/formGroup","category":"component"},{"name":"Icon","description":"Icons visually represent actions and concepts. Register SVG paths in a global map, then reference them by name on XIcon.","url":"/component/icon","category":"component"},{"name":"Image","description":"Loads a remote image after preloading. Use a background on the wrapper for a visible placeholder until load completes.","url":"/component/image","category":"component"},{"name":"InfiniteLoader","description":"Loads more list items as the user scrolls near the end of a container. Use InfiniteLoader for feeds and catalogs that grow on demand.","url":"/component/infiniteLoader","category":"component"},{"name":"Input","description":"Single-line text field for entering and editing short values. Use x-input in forms for names, emails, search, and other one-line data.","url":"/component/input","category":"component"},{"name":"Input Group","description":"Input groups combine multiple inline fields (Input, Textarea, Select, Datepicker, Button) into one control with a shared label and footer.","url":"/component/inputGroup","category":"component"},{"name":"Link","description":"Styled anchor for navigating to another page or external URL. Use x-link when you need consistent link styling, external indicators, and accessibility.","url":"/component/link","category":"component"},{"name":"Loader","description":"Full-area loading overlay that blocks interaction while content or an action completes. Use Loader when the whole region should wait before continuing.","url":"/component/loader","category":"component"},{"name":"Menu","description":"Dropdown list of actionable items triggered from a button or other control. Use x-menu with x-menu-item for contextual actions and navigation.","url":"/component/menu","category":"component"},{"name":"Modal","description":"Dialog overlay that focuses attention on a task or message above the current page. Use modals for confirmations, forms, and details that need temporary focus.","url":"/component/modal","category":"component"},{"name":"Notifications","description":"Toast-style feedback for success, warning, or error after an action. Use notifications for transient messages that should not block the page.","url":"/component/notifications","category":"component"},{"name":"Pagination","description":"Controls for moving through large result sets page by page. Use pagination with tables, lists, and search results to keep each view manageable.","url":"/component/pagination","category":"component"},{"name":"Popover","description":"Floating panel anchored to a trigger for extra content or actions. Use popovers for menus and contextual UI without leaving the current view.","url":"/component/popover","category":"component"},{"name":"Progress","description":"Bar that shows how far a task or process has completed. Use progress for uploads, multi-step jobs, and determinate loading states.","url":"/component/progress","category":"component"},{"name":"QR Code","description":"Renders a QR code from a string or URL for scanning with mobile devices. Use it for share links, payments, and quick machine-readable payloads.","url":"/component/qrCode","category":"component"},{"name":"Radio","description":"Radios allow the user to select one option from a set. Use classic radios for standard options, or x-radio-button for a button-shaped variant. Place several x-radio-button options inside x-form-group for a joined segmented control.","url":"/component/radio","category":"component"},{"name":"Scroll","description":"Scroll container with optional edge shadows that hint at more content. Use Scroll for overflow lists and panels that scroll vertically or horizontally.","url":"/component/scroll","category":"component"},{"name":"Select","description":"Dropdown for choosing one or more options from a predefined list. Use Select for enums, filters, and form fields where free text is not needed.","url":"/component/select","category":"component"},{"name":"Skeleton","description":"Placeholder shapes that mirror content layout while data loads. Use skeletons to reduce layout shift and improve perceived loading performance.","url":"/component/skeleton","category":"component"},{"name":"Slider","description":"Track with a draggable handle for picking a numeric value or range. Use sliders for volume, brightness, price filters, and similar continuous settings.","url":"/component/slider","category":"component"},{"name":"Spacer","description":"Flex-friendly gap that expands or shrinks between siblings without extra margin or padding. Use spacers to push items apart in toolbars and rows.","url":"/component/spacer","category":"component"},{"name":"Spinner","description":"Animated indicator that a background process is still running. Use spinners for indeterminate loading when completion percentage is unknown.","url":"/component/spinner","category":"component"},{"name":"Stepper","description":"Multi-step wizard with declarative steps, named panel slots, programmatic next/prev navigation, validation hooks, and optional sidebar summaries.","url":"/component/stepper","category":"component"},{"name":"Table","description":"Tables display tabular data with single- or multi-column sorting, selection, expandable rows, and virtual lists.","url":"/component/table","category":"component"},{"name":"Tabs","description":"Tabbed navigation that switches between related views in the same region. Use x-tab-group with x-tab when content shares context but not space.","url":"/component/tabs","category":"component"},{"name":"Tag","description":"Compact labels for categories, statuses, or filters. Use tags in lists and chip groups when a short keyword should stand out.","url":"/component/tag","category":"component"},{"name":"Textarea","description":"Multi-line text field for longer content such as comments and descriptions. Use Textarea when a single-line input is not enough.","url":"/component/textarea","category":"component"},{"name":"Toggle","description":"Binary switch for on/off settings and mutually exclusive states. Use toggles when the choice should feel instant and reversible.","url":"/component/toggle","category":"component"},{"name":"Tooltip","description":"Tooltips display contextual help on hover. Use XToggleTip for a compact info-icon pattern beside labels.","url":"/component/tooltip","category":"component"},{"name":"Upload","description":"File picker with drag-and-drop for selecting one or more files to upload. Use Upload when forms need images, documents, or other file input with accept filters.","url":"/component/upload","category":"component"},{"name":"VirtualGrid","description":"Renders only visible cells of a large grid for better scroll performance. Use VirtualGrid when a dense grid would be too heavy to mount all at once.","url":"/component/virtualGrid","category":"component"},{"name":"VirtualList","description":"Renders only visible rows of a long list for better scroll performance. Use VirtualList for feeds and catalogs with thousands of items.","url":"/component/virtualList","category":"component"}]