@sakoa/ui 0.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 (345) hide show
  1. package/README.md +171 -0
  2. package/dist/App.d.ts +2 -0
  3. package/dist/cli/index.js +9243 -0
  4. package/dist/components/DemoSection.d.ts +30 -0
  5. package/dist/components/SApiKeyboard.d.ts +22 -0
  6. package/dist/components/SApiSection.d.ts +21 -0
  7. package/dist/components/SApiTable.d.ts +46 -0
  8. package/dist/components/STableOfContents.d.ts +2 -0
  9. package/dist/components/ui/SAlert.d.ts +76 -0
  10. package/dist/components/ui/SBadge.d.ts +56 -0
  11. package/dist/components/ui/SButton.d.ts +67 -0
  12. package/dist/components/ui/SCheckbox.d.ts +64 -0
  13. package/dist/components/ui/SChip.d.ts +43 -0
  14. package/dist/components/ui/SDatePicker.d.ts +77 -0
  15. package/dist/components/ui/SGlassButton.d.ts +70 -0
  16. package/dist/components/ui/SIcon.d.ts +29 -0
  17. package/dist/components/ui/SInput.d.ts +129 -0
  18. package/dist/components/ui/SKbd.d.ts +24 -0
  19. package/dist/components/ui/SKbdShortcut.d.ts +14 -0
  20. package/dist/components/ui/SSelect.d.ts +148 -0
  21. package/dist/components/ui/SSkeleton.d.ts +37 -0
  22. package/dist/components/ui/SSwitch.d.ts +61 -0
  23. package/dist/components/ui/STooltip.d.ts +82 -0
  24. package/dist/components/ui/accordion/SAccordionContent.d.ts +23 -0
  25. package/dist/components/ui/accordion/SAccordionItem.d.ts +70 -0
  26. package/dist/components/ui/accordion/SAccordionTrigger.d.ts +37 -0
  27. package/dist/components/ui/accordion/index.d.ts +4 -0
  28. package/dist/components/ui/avatar/SAvatar.d.ts +36 -0
  29. package/dist/components/ui/avatar/SAvatarFallback.d.ts +26 -0
  30. package/dist/components/ui/avatar/SAvatarGroup.d.ts +30 -0
  31. package/dist/components/ui/avatar/SAvatarImage.d.ts +23 -0
  32. package/dist/components/ui/avatar/index.d.ts +4 -0
  33. package/dist/components/ui/breadcrumb/SBreadcrumb.d.ts +22 -0
  34. package/dist/components/ui/breadcrumb/SBreadcrumbEllipsis.d.ts +17 -0
  35. package/dist/components/ui/breadcrumb/SBreadcrumbItem.d.ts +17 -0
  36. package/dist/components/ui/breadcrumb/SBreadcrumbLink.d.ts +26 -0
  37. package/dist/components/ui/breadcrumb/SBreadcrumbList.d.ts +17 -0
  38. package/dist/components/ui/breadcrumb/SBreadcrumbPage.d.ts +17 -0
  39. package/dist/components/ui/breadcrumb/SBreadcrumbSeparator.d.ts +17 -0
  40. package/dist/components/ui/breadcrumb/index.d.ts +7 -0
  41. package/dist/components/ui/card/SCard.d.ts +103 -0
  42. package/dist/components/ui/card/SCardActions.d.ts +44 -0
  43. package/dist/components/ui/card/SCardContent.d.ts +35 -0
  44. package/dist/components/ui/card/SCardFooter.d.ts +38 -0
  45. package/dist/components/ui/card/SCardHeader.d.ts +53 -0
  46. package/dist/components/ui/card/SCardMedia.d.ts +83 -0
  47. package/dist/components/ui/card/SGlassCard.d.ts +103 -0
  48. package/dist/components/ui/card/SMorphingCardContent.d.ts +18 -0
  49. package/dist/components/ui/card/index.d.ts +24 -0
  50. package/dist/components/ui/carousel/SCarousel.d.ts +166 -0
  51. package/dist/components/ui/carousel/index.d.ts +2 -0
  52. package/dist/components/ui/color-picker/SColorPickerAlphaSlider.d.ts +4 -0
  53. package/dist/components/ui/color-picker/SColorPickerCopy.d.ts +19 -0
  54. package/dist/components/ui/color-picker/SColorPickerEyeDropper.d.ts +17 -0
  55. package/dist/components/ui/color-picker/SColorPickerHueSlider.d.ts +4 -0
  56. package/dist/components/ui/color-picker/SColorPickerInputs.d.ts +2 -0
  57. package/dist/components/ui/color-picker/SColorPickerPresets.d.ts +9 -0
  58. package/dist/components/ui/color-picker/SColorPickerPreview.d.ts +2 -0
  59. package/dist/components/ui/color-picker/SColorPickerRecent.d.ts +7 -0
  60. package/dist/components/ui/color-picker/SColorPickerSpectrum.d.ts +4 -0
  61. package/dist/components/ui/color-picker/index.d.ts +11 -0
  62. package/dist/components/ui/drawer/index.d.ts +11 -0
  63. package/dist/components/ui/dropdown/SDropdownDivider.d.ts +8 -0
  64. package/dist/components/ui/dropdown/SDropdownGroup.d.ts +25 -0
  65. package/dist/components/ui/dropdown/SDropdownItem.d.ts +56 -0
  66. package/dist/components/ui/dropdown/index.d.ts +4 -0
  67. package/dist/components/ui/form/SForm.d.ts +38 -0
  68. package/dist/components/ui/form/SFormField.d.ts +31 -0
  69. package/dist/components/ui/form/index.d.ts +5 -0
  70. package/dist/components/ui/modal/index.d.ts +19 -0
  71. package/dist/components/ui/option/SOption.d.ts +32 -0
  72. package/dist/components/ui/option/SOptionGroup.d.ts +28 -0
  73. package/dist/components/ui/option/index.d.ts +2 -0
  74. package/dist/components/ui/otp/SOTP.d.ts +122 -0
  75. package/dist/components/ui/otp/SOTPGroup.d.ts +23 -0
  76. package/dist/components/ui/otp/SOTPSeparator.d.ts +17 -0
  77. package/dist/components/ui/otp/SOTPSlot.d.ts +49 -0
  78. package/dist/components/ui/otp/index.d.ts +7 -0
  79. package/dist/components/ui/otp/types.d.ts +26 -0
  80. package/dist/components/ui/otp/useOTPContext.d.ts +42 -0
  81. package/dist/components/ui/pagination/SPagination.d.ts +151 -0
  82. package/dist/components/ui/pagination/index.d.ts +2 -0
  83. package/dist/components/ui/progress/SProgress.d.ts +62 -0
  84. package/dist/components/ui/progress/SProgressRange.d.ts +91 -0
  85. package/dist/components/ui/progress/index.d.ts +4 -0
  86. package/dist/components/ui/radio/SRadio.d.ts +58 -0
  87. package/dist/components/ui/radio/SRadioGroup.d.ts +52 -0
  88. package/dist/components/ui/radio/index.d.ts +2 -0
  89. package/dist/components/ui/stepper/SStepper.d.ts +83 -0
  90. package/dist/components/ui/stepper/SStepperContent.d.ts +24 -0
  91. package/dist/components/ui/stepper/SStepperDescription.d.ts +20 -0
  92. package/dist/components/ui/stepper/SStepperIndicator.d.ts +37 -0
  93. package/dist/components/ui/stepper/SStepperItem.d.ts +37 -0
  94. package/dist/components/ui/stepper/SStepperSeparator.d.ts +5 -0
  95. package/dist/components/ui/stepper/SStepperTitle.d.ts +20 -0
  96. package/dist/components/ui/stepper/SStepperTrigger.d.ts +22 -0
  97. package/dist/components/ui/stepper/index.d.ts +11 -0
  98. package/dist/components/ui/table/STableBody.d.ts +27 -0
  99. package/dist/components/ui/table/STableCell.d.ts +55 -0
  100. package/dist/components/ui/table/STableColumn.d.ts +87 -0
  101. package/dist/components/ui/table/STableEmpty.d.ts +54 -0
  102. package/dist/components/ui/table/STableHeader.d.ts +25 -0
  103. package/dist/components/ui/table/STableRow.d.ts +38 -0
  104. package/dist/components/ui/table/STableSkeleton.d.ts +29 -0
  105. package/dist/components/ui/table/index.d.ts +98 -0
  106. package/dist/components/ui/table/useDataTable.d.ts +80 -0
  107. package/dist/components/ui/tabs/STabPane.d.ts +31 -0
  108. package/dist/components/ui/tabs/STabsContent.d.ts +21 -0
  109. package/dist/components/ui/tabs/STabsIndicator.d.ts +9 -0
  110. package/dist/components/ui/tabs/STabsTrigger.d.ts +28 -0
  111. package/dist/components/ui/tabs/index.d.ts +6 -0
  112. package/dist/components/ui/toast/SToast.d.ts +49 -0
  113. package/dist/components/ui/toast/SToastContainer.d.ts +21 -0
  114. package/dist/components/ui/toast/index.d.ts +2 -0
  115. package/dist/composables/useAsync.d.ts +134 -0
  116. package/dist/composables/useClickOutside.d.ts +69 -0
  117. package/dist/composables/useClipboard.d.ts +46 -0
  118. package/dist/composables/useDebounce.d.ts +150 -0
  119. package/dist/composables/useDialog.d.ts +118 -0
  120. package/dist/composables/useForm.d.ts +204 -0
  121. package/dist/composables/useHotkey.d.ts +128 -0
  122. package/dist/composables/useIntersectionObserver.d.ts +156 -0
  123. package/dist/composables/useLocalStorage.d.ts +120 -0
  124. package/dist/composables/useMediaQuery.d.ts +115 -0
  125. package/dist/composables/useTheme.d.ts +8 -0
  126. package/dist/composables/useToast.d.ts +1619 -0
  127. package/dist/index.d.ts +71 -0
  128. package/dist/layouts/UILayout.d.ts +2 -0
  129. package/dist/lib/utils.d.ts +2 -0
  130. package/dist/main.d.ts +0 -0
  131. package/dist/router.d.ts +2 -0
  132. package/dist/saka-ui.css +1 -0
  133. package/dist/saka-ui.js +18513 -0
  134. package/dist/saka-ui.umd.cjs +38 -0
  135. package/dist/views/docs/CustomizationView.d.ts +2 -0
  136. package/dist/views/docs/FormValidationView.d.ts +2 -0
  137. package/dist/views/docs/StylingGuideView.d.ts +2 -0
  138. package/dist/views/docs/UseAsyncView.d.ts +2 -0
  139. package/dist/views/docs/UseClickOutsideView.d.ts +124 -0
  140. package/dist/views/docs/UseClipboardView.d.ts +4 -0
  141. package/dist/views/docs/UseDebounceView.d.ts +2 -0
  142. package/dist/views/docs/UseHotkeyView.d.ts +205 -0
  143. package/dist/views/docs/UseIntersectionObserverView.d.ts +5 -0
  144. package/dist/views/docs/UseLocalStorageView.d.ts +2 -0
  145. package/dist/views/docs/UseMediaQueryView.d.ts +2 -0
  146. package/dist/views/docs/UseThemeView.d.ts +2 -0
  147. package/dist/views/examples/AuthFormView.d.ts +2 -0
  148. package/dist/views/examples/CreditCardFormView.d.ts +6 -0
  149. package/dist/views/examples/FormFieldExampleView.d.ts +2 -0
  150. package/dist/views/examples/ProjectFormView.d.ts +2 -0
  151. package/dist/views/ui/AccordionView.d.ts +2 -0
  152. package/dist/views/ui/AlertView.d.ts +2 -0
  153. package/dist/views/ui/AvatarView.d.ts +2 -0
  154. package/dist/views/ui/BadgeView.d.ts +2 -0
  155. package/dist/views/ui/BreadcrumbView.d.ts +2 -0
  156. package/dist/views/ui/ButtonView.d.ts +2 -0
  157. package/dist/views/ui/CardView.d.ts +2 -0
  158. package/dist/views/ui/CarouselView.d.ts +274 -0
  159. package/dist/views/ui/CheckboxView.d.ts +2 -0
  160. package/dist/views/ui/ChipView.d.ts +2 -0
  161. package/dist/views/ui/ColorPickerView.d.ts +2 -0
  162. package/dist/views/ui/DatePickerView.d.ts +2 -0
  163. package/dist/views/ui/DialogView.d.ts +2 -0
  164. package/dist/views/ui/DrawerView.d.ts +2 -0
  165. package/dist/views/ui/DropdownView.d.ts +2 -0
  166. package/dist/views/ui/GlassButtonView.d.ts +2 -0
  167. package/dist/views/ui/GlassCardView.d.ts +2 -0
  168. package/dist/views/ui/HomeView.d.ts +2 -0
  169. package/dist/views/ui/IconsView.d.ts +2 -0
  170. package/dist/views/ui/InputView.d.ts +2 -0
  171. package/dist/views/ui/KbdView.d.ts +2 -0
  172. package/dist/views/ui/ModalView.d.ts +2 -0
  173. package/dist/views/ui/MorphingCardView.d.ts +2 -0
  174. package/dist/views/ui/MorphingModalView.d.ts +2 -0
  175. package/dist/views/ui/OTPView.d.ts +206 -0
  176. package/dist/views/ui/PaginationView.d.ts +2 -0
  177. package/dist/views/ui/ProgressView.d.ts +2 -0
  178. package/dist/views/ui/RadioView.d.ts +2 -0
  179. package/dist/views/ui/SelectView.d.ts +2 -0
  180. package/dist/views/ui/SkeletonView.d.ts +2 -0
  181. package/dist/views/ui/StepperView.d.ts +2 -0
  182. package/dist/views/ui/SwitchView.d.ts +2 -0
  183. package/dist/views/ui/TableView.d.ts +2 -0
  184. package/dist/views/ui/TabsView.d.ts +2 -0
  185. package/dist/views/ui/ToastView.d.ts +2 -0
  186. package/dist/views/ui/TooltipView.d.ts +2 -0
  187. package/dist/vite.svg +1 -0
  188. package/package.json +64 -0
  189. package/registry/components/accordion.json +19 -0
  190. package/registry/components/alert.json +17 -0
  191. package/registry/components/avatar.json +18 -0
  192. package/registry/components/badge.json +14 -0
  193. package/registry/components/breadcrumb.json +24 -0
  194. package/registry/components/button.json +17 -0
  195. package/registry/components/card.json +23 -0
  196. package/registry/components/carousel.json +19 -0
  197. package/registry/components/checkbox.json +17 -0
  198. package/registry/components/chip.json +17 -0
  199. package/registry/components/color-picker.json +24 -0
  200. package/registry/components/date-picker.json +17 -0
  201. package/registry/components/drawer.json +26 -0
  202. package/registry/components/dropdown.json +21 -0
  203. package/registry/components/form.json +16 -0
  204. package/registry/components/glass-button.json +17 -0
  205. package/registry/components/icon.json +17 -0
  206. package/registry/components/input.json +17 -0
  207. package/registry/components/kbd.json +16 -0
  208. package/registry/components/modal.json +32 -0
  209. package/registry/components/option.json +16 -0
  210. package/registry/components/otp.json +23 -0
  211. package/registry/components/pagination.json +18 -0
  212. package/registry/components/progress.json +16 -0
  213. package/registry/components/radio.json +19 -0
  214. package/registry/components/select.json +17 -0
  215. package/registry/components/skeleton.json +14 -0
  216. package/registry/components/switch.json +17 -0
  217. package/registry/components/table.json +26 -0
  218. package/registry/components/tabs.json +19 -0
  219. package/registry/components/toast.json +19 -0
  220. package/registry/components/tooltip.json +14 -0
  221. package/registry/index.json +4 -0
  222. package/registry/source/components/ui/SAlert.vue +388 -0
  223. package/registry/source/components/ui/SBadge.vue +243 -0
  224. package/registry/source/components/ui/SButton.vue +387 -0
  225. package/registry/source/components/ui/SCheckbox.vue +310 -0
  226. package/registry/source/components/ui/SChip.vue +130 -0
  227. package/registry/source/components/ui/SDatePicker.vue +1290 -0
  228. package/registry/source/components/ui/SGlassButton.vue +547 -0
  229. package/registry/source/components/ui/SIcon.vue +78 -0
  230. package/registry/source/components/ui/SInput.vue +1054 -0
  231. package/registry/source/components/ui/SKbd.vue +96 -0
  232. package/registry/source/components/ui/SKbdShortcut.vue +36 -0
  233. package/registry/source/components/ui/SSelect.vue +1290 -0
  234. package/registry/source/components/ui/SSkeleton.vue +185 -0
  235. package/registry/source/components/ui/SSwitch.vue +275 -0
  236. package/registry/source/components/ui/STooltip.vue +491 -0
  237. package/registry/source/components/ui/accordion/SAccordion.vue +248 -0
  238. package/registry/source/components/ui/accordion/SAccordionItem.vue +353 -0
  239. package/registry/source/components/ui/accordion/index.ts +5 -0
  240. package/registry/source/components/ui/avatar/SAvatar.vue +169 -0
  241. package/registry/source/components/ui/avatar/SAvatarFallback.vue +66 -0
  242. package/registry/source/components/ui/avatar/SAvatarGroup.vue +69 -0
  243. package/registry/source/components/ui/avatar/SAvatarImage.vue +92 -0
  244. package/registry/source/components/ui/avatar/index.ts +5 -0
  245. package/registry/source/components/ui/breadcrumb/SBreadcrumb.vue +23 -0
  246. package/registry/source/components/ui/breadcrumb/SBreadcrumbEllipsis.vue +17 -0
  247. package/registry/source/components/ui/breadcrumb/SBreadcrumbItem.vue +14 -0
  248. package/registry/source/components/ui/breadcrumb/SBreadcrumbLink.vue +46 -0
  249. package/registry/source/components/ui/breadcrumb/SBreadcrumbList.vue +17 -0
  250. package/registry/source/components/ui/breadcrumb/SBreadcrumbPage.vue +15 -0
  251. package/registry/source/components/ui/breadcrumb/SBreadcrumbSeparator.vue +18 -0
  252. package/registry/source/components/ui/breadcrumb/index.ts +7 -0
  253. package/registry/source/components/ui/card/SCard.vue +517 -0
  254. package/registry/source/components/ui/card/SCardActions.vue +129 -0
  255. package/registry/source/components/ui/card/SCardContent.vue +117 -0
  256. package/registry/source/components/ui/card/SCardFooter.vue +103 -0
  257. package/registry/source/components/ui/card/SCardHeader.vue +163 -0
  258. package/registry/source/components/ui/card/SCardMedia.vue +312 -0
  259. package/registry/source/components/ui/card/index.ts +34 -0
  260. package/registry/source/components/ui/carousel/SCarousel.vue +1069 -0
  261. package/registry/source/components/ui/carousel/SCarouselSlide.vue +107 -0
  262. package/registry/source/components/ui/carousel/index.ts +3 -0
  263. package/registry/source/components/ui/color-picker/SColorPicker.vue +772 -0
  264. package/registry/source/components/ui/color-picker/SColorPickerAlphaSlider.vue +158 -0
  265. package/registry/source/components/ui/color-picker/SColorPickerCopy.vue +76 -0
  266. package/registry/source/components/ui/color-picker/SColorPickerEyeDropper.vue +68 -0
  267. package/registry/source/components/ui/color-picker/SColorPickerHueSlider.vue +138 -0
  268. package/registry/source/components/ui/color-picker/SColorPickerInputs.vue +227 -0
  269. package/registry/source/components/ui/color-picker/SColorPickerPresets.vue +87 -0
  270. package/registry/source/components/ui/color-picker/SColorPickerPreview.vue +46 -0
  271. package/registry/source/components/ui/color-picker/SColorPickerRecent.vue +74 -0
  272. package/registry/source/components/ui/color-picker/SColorPickerSpectrum.vue +149 -0
  273. package/registry/source/components/ui/color-picker/index.ts +11 -0
  274. package/registry/source/components/ui/drawer/SDrawer.vue +797 -0
  275. package/registry/source/components/ui/drawer/SDrawerClose.vue +64 -0
  276. package/registry/source/components/ui/drawer/SDrawerContent.vue +81 -0
  277. package/registry/source/components/ui/drawer/SDrawerDescription.vue +40 -0
  278. package/registry/source/components/ui/drawer/SDrawerFooter.vue +97 -0
  279. package/registry/source/components/ui/drawer/SDrawerHandle.vue +79 -0
  280. package/registry/source/components/ui/drawer/SDrawerHeader.vue +117 -0
  281. package/registry/source/components/ui/drawer/SDrawerTitle.vue +40 -0
  282. package/registry/source/components/ui/drawer/SDrawerTrigger.vue +51 -0
  283. package/registry/source/components/ui/drawer/index.ts +20 -0
  284. package/registry/source/components/ui/dropdown/SDropdown.vue +843 -0
  285. package/registry/source/components/ui/dropdown/SDropdownDivider.vue +23 -0
  286. package/registry/source/components/ui/dropdown/SDropdownGroup.vue +53 -0
  287. package/registry/source/components/ui/dropdown/SDropdownItem.vue +179 -0
  288. package/registry/source/components/ui/dropdown/index.ts +5 -0
  289. package/registry/source/components/ui/form/SForm.vue +84 -0
  290. package/registry/source/components/ui/form/SFormField.vue +78 -0
  291. package/registry/source/components/ui/form/index.ts +8 -0
  292. package/registry/source/components/ui/modal/SModal.vue +648 -0
  293. package/registry/source/components/ui/modal/SModalClose.vue +49 -0
  294. package/registry/source/components/ui/modal/SModalContent.vue +74 -0
  295. package/registry/source/components/ui/modal/SModalDescription.vue +39 -0
  296. package/registry/source/components/ui/modal/SModalFooter.vue +84 -0
  297. package/registry/source/components/ui/modal/SModalHeader.vue +107 -0
  298. package/registry/source/components/ui/modal/SModalTitle.vue +39 -0
  299. package/registry/source/components/ui/modal/SModalTrigger.vue +61 -0
  300. package/registry/source/components/ui/modal/SMorphingModal.vue +429 -0
  301. package/registry/source/components/ui/modal/SMorphingModalClose.vue +42 -0
  302. package/registry/source/components/ui/modal/SMorphingModalDescription.vue +49 -0
  303. package/registry/source/components/ui/modal/SMorphingModalImage.vue +44 -0
  304. package/registry/source/components/ui/modal/SMorphingModalSubtitle.vue +29 -0
  305. package/registry/source/components/ui/modal/SMorphingModalTitle.vue +34 -0
  306. package/registry/source/components/ui/modal/SMorphingModalTrigger.vue +95 -0
  307. package/registry/source/components/ui/modal/index.ts +32 -0
  308. package/registry/source/components/ui/option/SOption.vue +180 -0
  309. package/registry/source/components/ui/option/SOptionGroup.vue +77 -0
  310. package/registry/source/components/ui/option/index.ts +3 -0
  311. package/registry/source/components/ui/otp/SOTP.vue +843 -0
  312. package/registry/source/components/ui/otp/SOTPGroup.vue +29 -0
  313. package/registry/source/components/ui/otp/SOTPSeparator.vue +15 -0
  314. package/registry/source/components/ui/otp/SOTPSlot.vue +462 -0
  315. package/registry/source/components/ui/otp/index.ts +7 -0
  316. package/registry/source/components/ui/otp/types.ts +27 -0
  317. package/registry/source/components/ui/otp/useOTPContext.ts +62 -0
  318. package/registry/source/components/ui/pagination/SPagination.vue +923 -0
  319. package/registry/source/components/ui/pagination/index.ts +8 -0
  320. package/registry/source/components/ui/progress/SProgress.vue +635 -0
  321. package/registry/source/components/ui/progress/SProgressRange.vue +715 -0
  322. package/registry/source/components/ui/progress/index.ts +4 -0
  323. package/registry/source/components/ui/radio/SRadio.vue +407 -0
  324. package/registry/source/components/ui/radio/SRadioGroup.vue +200 -0
  325. package/registry/source/components/ui/radio/index.ts +3 -0
  326. package/registry/source/components/ui/table/SDataTable.vue +828 -0
  327. package/registry/source/components/ui/table/STableBody.vue +70 -0
  328. package/registry/source/components/ui/table/STableCell.vue +147 -0
  329. package/registry/source/components/ui/table/STableColumn.vue +120 -0
  330. package/registry/source/components/ui/table/STableEmpty.vue +159 -0
  331. package/registry/source/components/ui/table/STableHeader.vue +132 -0
  332. package/registry/source/components/ui/table/STableRow.vue +106 -0
  333. package/registry/source/components/ui/table/STableSkeleton.vue +208 -0
  334. package/registry/source/components/ui/table/index.ts +126 -0
  335. package/registry/source/components/ui/table/useDataTable.ts +519 -0
  336. package/registry/source/components/ui/tabs/STabPane.vue +130 -0
  337. package/registry/source/components/ui/tabs/STabs.vue +467 -0
  338. package/registry/source/components/ui/tabs/index.ts +7 -0
  339. package/registry/source/components/ui/toast/SToast.vue +261 -0
  340. package/registry/source/components/ui/toast/SToastContainer.vue +209 -0
  341. package/registry/source/components/ui/toast/index.ts +2 -0
  342. package/registry/source/composables/useForm.ts +960 -0
  343. package/registry/source/composables/useTheme.ts +86 -0
  344. package/registry/source/composables/useToast.ts +440 -0
  345. package/registry/source/lib/utils.ts +6 -0
@@ -0,0 +1,64 @@
1
+ <script lang="ts">
2
+ /**
3
+ * SDrawerClose - Drawer close button that uses context
4
+ */
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ defineOptions({ inheritAttrs: false })
9
+
10
+ import { inject } from 'vue'
11
+ import { cn } from '../../../lib/utils'
12
+ import { SDrawerContextKey, type SDrawerContext } from './SDrawer.vue'
13
+
14
+ export interface Props {
15
+ /** Additional CSS class */
16
+ closeClass?: string
17
+ /** Disable the close button */
18
+ disabled?: boolean
19
+ /** Visual variant */
20
+ variant?: 'default' | 'ghost' | 'subtle'
21
+ /** Icon to display */
22
+ icon?: string
23
+ }
24
+
25
+ const props = withDefaults(defineProps<Props>(), {
26
+ closeClass: '',
27
+ disabled: false,
28
+ variant: 'default',
29
+ icon: 'close'
30
+ })
31
+
32
+ const context = inject(SDrawerContextKey) as SDrawerContext
33
+
34
+ const handleClose = () => {
35
+ if (!props.disabled) {
36
+ context?.close()
37
+ }
38
+ }
39
+
40
+ const variantClasses = {
41
+ default: 'text-muted-foreground hover:text-foreground hover:bg-accent',
42
+ ghost: 'text-muted-foreground hover:text-foreground',
43
+ subtle: 'text-muted-foreground hover:text-foreground hover:bg-muted'
44
+ }
45
+ </script>
46
+
47
+ <template>
48
+ <button
49
+ type="button"
50
+ v-bind="$attrs"
51
+ :class="cn(
52
+ 's-drawer-close flex items-center justify-center w-8 h-8 rounded-lg transition-all duration-150 outline-none focus:ring-2 focus:ring-primary/30 focus:ring-offset-0',
53
+ variantClasses[variant],
54
+ disabled ? 'opacity-50 cursor-not-allowed' : '',
55
+ closeClass,
56
+ $attrs.class ?? ''
57
+ )"
58
+ :disabled="disabled"
59
+ aria-label="Close drawer"
60
+ @click="handleClose"
61
+ >
62
+ <span :class="`mdi mdi-${icon} text-xl`" />
63
+ </button>
64
+ </template>
@@ -0,0 +1,81 @@
1
+ <script lang="ts">
2
+ /**
3
+ * SDrawerContent - Scrollable drawer content area
4
+ */
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ defineOptions({ inheritAttrs: false })
9
+
10
+ import { cn } from '../../../lib/utils'
11
+
12
+ export interface Props {
13
+ /** Padding size */
14
+ padding?: 'none' | 'sm' | 'md' | 'lg' | 'xl'
15
+ /** Center content */
16
+ centered?: boolean
17
+ /** Additional class */
18
+ contentClass?: string
19
+ /** Max height (enables scrolling) */
20
+ maxHeight?: string
21
+ /** Enable scrolling */
22
+ scrollable?: boolean
23
+ }
24
+
25
+ const props = withDefaults(defineProps<Props>(), {
26
+ padding: 'md',
27
+ centered: false,
28
+ contentClass: '',
29
+ maxHeight: undefined,
30
+ scrollable: true
31
+ })
32
+
33
+ const paddingClasses = {
34
+ none: '',
35
+ sm: 'p-4',
36
+ md: 'p-6',
37
+ lg: 'p-8',
38
+ xl: 'p-10'
39
+ }
40
+ </script>
41
+
42
+ <template>
43
+ <div
44
+ v-bind="$attrs"
45
+ :class="cn(
46
+ 's-drawer-content flex-1',
47
+ paddingClasses[padding],
48
+ centered ? 'flex flex-col items-center justify-center text-center' : '',
49
+ scrollable ? 'overflow-y-auto overscroll-contain' : 'overflow-hidden',
50
+ contentClass,
51
+ $attrs.class ?? ''
52
+ )"
53
+ :style="maxHeight ? { maxHeight } : {}"
54
+ >
55
+ <slot />
56
+ </div>
57
+ </template>
58
+
59
+ <style scoped>
60
+ .s-drawer-content {
61
+ scrollbar-width: thin;
62
+ scrollbar-color: var(--s-border) transparent;
63
+ }
64
+
65
+ .s-drawer-content::-webkit-scrollbar {
66
+ width: 6px;
67
+ }
68
+
69
+ .s-drawer-content::-webkit-scrollbar-track {
70
+ background: transparent;
71
+ }
72
+
73
+ .s-drawer-content::-webkit-scrollbar-thumb {
74
+ background: var(--s-border);
75
+ border-radius: 3px;
76
+ }
77
+
78
+ .s-drawer-content::-webkit-scrollbar-thumb:hover {
79
+ background: var(--s-input);
80
+ }
81
+ </style>
@@ -0,0 +1,40 @@
1
+ <script lang="ts">
2
+ /**
3
+ * SDrawerDescription - Drawer description component that automatically binds to ARIA
4
+ */
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ defineOptions({ inheritAttrs: false })
9
+
10
+ import { inject, computed } from 'vue'
11
+ import { cn } from '../../../lib/utils'
12
+ import { SDrawerContextKey, type SDrawerContext } from './SDrawer.vue'
13
+
14
+ export interface Props {
15
+ /** HTML tag to use */
16
+ as?: 'p' | 'span' | 'div'
17
+ /** Additional CSS class */
18
+ descriptionClass?: string
19
+ }
20
+
21
+ const props = withDefaults(defineProps<Props>(), {
22
+ as: 'p',
23
+ descriptionClass: ''
24
+ })
25
+
26
+ const context = inject(SDrawerContextKey) as SDrawerContext
27
+
28
+ const tag = computed(() => props.as)
29
+ </script>
30
+
31
+ <template>
32
+ <component
33
+ :is="tag"
34
+ v-bind="$attrs"
35
+ :id="context?.descriptionId"
36
+ :class="cn('text-sm text-muted-foreground leading-relaxed', descriptionClass, $attrs.class ?? '')"
37
+ >
38
+ <slot />
39
+ </component>
40
+ </template>
@@ -0,0 +1,97 @@
1
+ <script lang="ts">
2
+ /**
3
+ * SDrawerFooter - Drawer footer with action buttons
4
+ */
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ defineOptions({ inheritAttrs: false })
9
+
10
+ import { inject, onMounted, onBeforeUnmount } from 'vue'
11
+ import { cn } from '../../../lib/utils'
12
+ import { SDrawerContextKey, type SDrawerContext } from './SDrawer.vue'
13
+
14
+ export interface Props {
15
+ /** Button alignment */
16
+ align?: 'left' | 'center' | 'right' | 'between' | 'stretch'
17
+ /** Show divider line */
18
+ divider?: boolean
19
+ /** Padding size */
20
+ padding?: 'none' | 'sm' | 'md' | 'lg'
21
+ /** Gap between items */
22
+ gap?: 'none' | 'sm' | 'md' | 'lg'
23
+ /** Stack buttons vertically on mobile */
24
+ stackOnMobile?: boolean
25
+ /** Additional class */
26
+ footerClass?: string
27
+ /** Sticky footer */
28
+ sticky?: boolean
29
+ }
30
+
31
+ const props = withDefaults(defineProps<Props>(), {
32
+ align: 'right',
33
+ divider: true,
34
+ padding: 'md',
35
+ gap: 'md',
36
+ stackOnMobile: false,
37
+ footerClass: '',
38
+ sticky: false
39
+ })
40
+
41
+ const context = inject(SDrawerContextKey) as SDrawerContext
42
+
43
+ const paddingClasses = {
44
+ none: '',
45
+ sm: 'px-4 py-3',
46
+ md: 'px-6 py-4',
47
+ lg: 'px-8 py-5'
48
+ }
49
+
50
+ const gapClasses = {
51
+ none: '',
52
+ sm: 'gap-2',
53
+ md: 'gap-3',
54
+ lg: 'gap-4'
55
+ }
56
+
57
+ const alignClasses = {
58
+ left: 'justify-start',
59
+ center: 'justify-center',
60
+ right: 'justify-end',
61
+ between: 'justify-between',
62
+ stretch: 'justify-stretch [&>*]:flex-1'
63
+ }
64
+
65
+ onMounted(() => {
66
+ context?.setHasFooter(true)
67
+ })
68
+
69
+ onBeforeUnmount(() => {
70
+ context?.setHasFooter(false)
71
+ })
72
+ </script>
73
+
74
+ <template>
75
+ <div
76
+ v-bind="$attrs"
77
+ :class="cn(
78
+ 's-drawer-footer flex items-center shrink-0',
79
+ paddingClasses[padding],
80
+ gapClasses[gap],
81
+ alignClasses[align],
82
+ divider ? 'border-t border-border' : '',
83
+ stackOnMobile ? 'max-sm:flex-col max-sm:items-stretch' : '',
84
+ sticky ? 'sticky bottom-0 z-10 bg-background' : '',
85
+ footerClass,
86
+ $attrs.class ?? ''
87
+ )"
88
+ >
89
+ <slot />
90
+ </div>
91
+ </template>
92
+
93
+ <style scoped>
94
+ .s-drawer-footer {
95
+ background: inherit;
96
+ }
97
+ </style>
@@ -0,0 +1,79 @@
1
+ <script lang="ts">
2
+ /**
3
+ * SDrawerHandle - Drag handle for swipe gestures
4
+ */
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ defineOptions({ inheritAttrs: false })
9
+
10
+ import { inject, computed } from 'vue'
11
+ import { cn } from '../../../lib/utils'
12
+ import { SDrawerContextKey, type SDrawerContext } from './SDrawer.vue'
13
+
14
+ export interface Props {
15
+ /** Size of the handle */
16
+ size?: 'sm' | 'md' | 'lg'
17
+ /** Custom class */
18
+ handleClass?: string
19
+ /** Show when dragging */
20
+ showProgress?: boolean
21
+ }
22
+
23
+ const props = withDefaults(defineProps<Props>(), {
24
+ size: 'md',
25
+ handleClass: '',
26
+ showProgress: false
27
+ })
28
+
29
+ const context = inject(SDrawerContextKey) as SDrawerContext
30
+
31
+ const sizeClasses = computed(() => ({
32
+ sm: 'w-8 h-1',
33
+ md: 'w-12 h-1.5',
34
+ lg: 'w-16 h-2'
35
+ }[props.size]))
36
+
37
+ const progressWidth = computed(() => {
38
+ if (!props.showProgress || !context) return 0
39
+ return Math.round(context.dragProgress.value * 100)
40
+ })
41
+ </script>
42
+
43
+ <template>
44
+ <div
45
+ v-bind="$attrs"
46
+ :class="cn('s-drawer-handle flex items-center justify-center py-3 cursor-grab active:cursor-grabbing', handleClass, $attrs.class ?? '')"
47
+ >
48
+ <div
49
+ class="relative rounded-full bg-muted-foreground/30 transition-all duration-150 hover:bg-muted-foreground/50"
50
+ :class="[
51
+ sizeClasses,
52
+ context?.isDragging?.value ? 'bg-muted-foreground/50 scale-110' : ''
53
+ ]"
54
+ >
55
+ <!-- Progress indicator -->
56
+ <div
57
+ v-if="showProgress && context?.isDragging?.value"
58
+ class="absolute inset-y-0 left-0 rounded-full bg-primary transition-none"
59
+ :style="{ width: `${progressWidth}%` }"
60
+ />
61
+ </div>
62
+ </div>
63
+ </template>
64
+
65
+ <style scoped>
66
+ .s-drawer-handle {
67
+ touch-action: none;
68
+ user-select: none;
69
+ }
70
+
71
+ .s-drawer-handle:hover > div {
72
+ animation: handle-pulse 1.5s ease-in-out infinite;
73
+ }
74
+
75
+ @keyframes handle-pulse {
76
+ 0%, 100% { transform: scaleX(1); }
77
+ 50% { transform: scaleX(1.08); }
78
+ }
79
+ </style>
@@ -0,0 +1,117 @@
1
+ <script lang="ts">
2
+ /**
3
+ * SDrawerHeader - Drawer header component with title, description, and close button
4
+ */
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ defineOptions({ inheritAttrs: false })
9
+
10
+ import { inject, onMounted, onBeforeUnmount } from 'vue'
11
+ import { cn } from '../../../lib/utils'
12
+ import { SDrawerContextKey, type SDrawerContext } from './SDrawer.vue'
13
+
14
+ export interface Props {
15
+ /** Drawer title */
16
+ title?: string
17
+ /** Drawer description/subtitle */
18
+ description?: string
19
+ /** Show close button */
20
+ closable?: boolean
21
+ /** Show divider line */
22
+ divider?: boolean
23
+ /** Additional padding */
24
+ padding?: 'none' | 'sm' | 'md' | 'lg'
25
+ /** Custom class */
26
+ headerClass?: string
27
+ /** Sticky header */
28
+ sticky?: boolean
29
+ }
30
+
31
+ const props = withDefaults(defineProps<Props>(), {
32
+ title: undefined,
33
+ description: undefined,
34
+ closable: true,
35
+ divider: true,
36
+ padding: 'md',
37
+ headerClass: '',
38
+ sticky: false
39
+ })
40
+
41
+ const context = inject(SDrawerContextKey) as SDrawerContext
42
+
43
+ const paddingClasses = {
44
+ none: '',
45
+ sm: 'px-4 py-3',
46
+ md: 'px-6 py-5',
47
+ lg: 'px-8 py-6'
48
+ }
49
+
50
+ onMounted(() => {
51
+ context?.setHasHeader(true)
52
+ })
53
+
54
+ onBeforeUnmount(() => {
55
+ context?.setHasHeader(false)
56
+ })
57
+ </script>
58
+
59
+ <template>
60
+ <div
61
+ v-bind="$attrs"
62
+ :class="cn(
63
+ 's-drawer-header flex items-start justify-between gap-4 shrink-0',
64
+ paddingClasses[padding],
65
+ divider ? 'border-b border-border' : '',
66
+ sticky ? 'sticky top-0 z-10 bg-background' : '',
67
+ headerClass,
68
+ $attrs.class ?? ''
69
+ )"
70
+ >
71
+ <div class="flex-1 min-w-0">
72
+ <!-- Title -->
73
+ <h2
74
+ v-if="title"
75
+ :id="context?.titleId"
76
+ class="text-lg font-semibold text-foreground tracking-tight"
77
+ >
78
+ {{ title }}
79
+ </h2>
80
+
81
+ <!-- Title slot for custom content -->
82
+ <slot name="title" />
83
+
84
+ <!-- Description -->
85
+ <p
86
+ v-if="description"
87
+ :id="context?.descriptionId"
88
+ class="mt-1.5 text-sm text-muted-foreground leading-relaxed"
89
+ >
90
+ {{ description }}
91
+ </p>
92
+
93
+ <!-- Description slot -->
94
+ <slot name="description" />
95
+ </div>
96
+
97
+ <!-- Extra content (between title and close button) -->
98
+ <slot name="extra" />
99
+
100
+ <!-- Close button -->
101
+ <button
102
+ v-if="closable"
103
+ type="button"
104
+ class="s-drawer-close shrink-0 flex items-center justify-center w-8 h-8 -mt-1 -mr-2 rounded-lg text-muted-foreground hover:text-foreground hover:bg-accent transition-all duration-150 outline-none focus:ring-2 focus:ring-primary/30 focus:ring-offset-0"
105
+ aria-label="Close drawer"
106
+ @click="context?.close()"
107
+ >
108
+ <span class="mdi mdi-close text-xl" />
109
+ </button>
110
+ </div>
111
+ </template>
112
+
113
+ <style scoped>
114
+ .s-drawer-header {
115
+ background: inherit;
116
+ }
117
+ </style>
@@ -0,0 +1,40 @@
1
+ <script lang="ts">
2
+ /**
3
+ * SDrawerTitle - Drawer title component that automatically binds to ARIA
4
+ */
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ defineOptions({ inheritAttrs: false })
9
+
10
+ import { inject, computed } from 'vue'
11
+ import { cn } from '../../../lib/utils'
12
+ import { SDrawerContextKey, type SDrawerContext } from './SDrawer.vue'
13
+
14
+ export interface Props {
15
+ /** HTML tag to use */
16
+ as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div'
17
+ /** Additional CSS class */
18
+ titleClass?: string
19
+ }
20
+
21
+ const props = withDefaults(defineProps<Props>(), {
22
+ as: 'h2',
23
+ titleClass: ''
24
+ })
25
+
26
+ const context = inject(SDrawerContextKey) as SDrawerContext
27
+
28
+ const tag = computed(() => props.as)
29
+ </script>
30
+
31
+ <template>
32
+ <component
33
+ :is="tag"
34
+ v-bind="$attrs"
35
+ :id="context?.titleId"
36
+ :class="cn('text-lg font-semibold text-foreground tracking-tight', titleClass, $attrs.class ?? '')"
37
+ >
38
+ <slot />
39
+ </component>
40
+ </template>
@@ -0,0 +1,51 @@
1
+ <script lang="ts">
2
+ /**
3
+ * SDrawerTrigger - Button that triggers drawer open
4
+ */
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ defineOptions({ inheritAttrs: false })
9
+
10
+ import { inject } from 'vue'
11
+ import { cn } from '../../../lib/utils'
12
+ import { SDrawerContextKey, type SDrawerContext } from './SDrawer.vue'
13
+
14
+ export interface Props {
15
+ /** Disable the trigger */
16
+ disabled?: boolean
17
+ /** Render as child (passes click to first child) */
18
+ asChild?: boolean
19
+ }
20
+
21
+ const props = withDefaults(defineProps<Props>(), {
22
+ disabled: false,
23
+ asChild: false
24
+ })
25
+
26
+ const emit = defineEmits<{
27
+ click: [event: MouseEvent]
28
+ }>()
29
+
30
+ // Note: Trigger typically doesn't need context, it's just a wrapper
31
+ // that emits events to be handled by parent
32
+ const handleClick = (event: MouseEvent) => {
33
+ if (!props.disabled) {
34
+ emit('click', event)
35
+ }
36
+ }
37
+ </script>
38
+
39
+ <template>
40
+ <slot v-if="asChild" @click="handleClick" />
41
+ <button
42
+ v-else
43
+ type="button"
44
+ v-bind="$attrs"
45
+ :disabled="disabled"
46
+ :class="cn('s-drawer-trigger', $attrs.class ?? '')"
47
+ @click="handleClick"
48
+ >
49
+ <slot />
50
+ </button>
51
+ </template>
@@ -0,0 +1,20 @@
1
+ // Drawer Component Exports
2
+ export { default as SDrawer } from './SDrawer.vue'
3
+ export { default as SDrawerHeader } from './SDrawerHeader.vue'
4
+ export { default as SDrawerContent } from './SDrawerContent.vue'
5
+ export { default as SDrawerFooter } from './SDrawerFooter.vue'
6
+ export { default as SDrawerTitle } from './SDrawerTitle.vue'
7
+ export { default as SDrawerDescription } from './SDrawerDescription.vue'
8
+ export { default as SDrawerClose } from './SDrawerClose.vue'
9
+ export { default as SDrawerTrigger } from './SDrawerTrigger.vue'
10
+ export { default as SDrawerHandle } from './SDrawerHandle.vue'
11
+
12
+ // Type exports
13
+ export type {
14
+ DrawerSide,
15
+ DrawerSize,
16
+ DrawerVariant,
17
+ SDrawerContext
18
+ } from './SDrawer.vue'
19
+
20
+ export { SDrawerContextKey } from './SDrawer.vue'