@soybeanjs/ui 0.14.0 → 0.15.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/README.md +79 -147
  2. package/README.zh-CN.md +79 -147
  3. package/dist/components/accordion/accordion.js +1 -1
  4. package/dist/components/accordion/accordion.vue.d.ts +3 -31
  5. package/dist/components/accordion/index.d.ts +3 -3
  6. package/dist/components/accordion/types.d.ts +6 -25
  7. package/dist/components/affix/affix.js +1 -0
  8. package/dist/components/affix/affix.vue.d.ts +22 -0
  9. package/dist/components/affix/index.d.ts +4 -0
  10. package/dist/components/affix/index.js +1 -0
  11. package/dist/components/affix/types.d.ts +15 -0
  12. package/dist/components/affix/variants.js +1 -0
  13. package/dist/components/alert/alert.js +1 -1
  14. package/dist/components/anchor/anchor-item.js +1 -0
  15. package/dist/components/anchor/anchor.js +1 -0
  16. package/dist/components/anchor/anchor.vue.d.ts +23 -0
  17. package/dist/components/anchor/context.js +1 -0
  18. package/dist/components/anchor/index.d.ts +4 -0
  19. package/dist/components/anchor/index.js +1 -0
  20. package/dist/components/anchor/types.d.ts +34 -0
  21. package/dist/components/anchor/variants.js +1 -0
  22. package/dist/components/autocomplete/autocomplete-group-option.js +1 -0
  23. package/dist/components/autocomplete/autocomplete-option.js +1 -0
  24. package/dist/components/autocomplete/autocomplete-single-option.js +1 -0
  25. package/dist/components/autocomplete/autocomplete.js +1 -0
  26. package/dist/components/autocomplete/autocomplete.vue.d.ts +47 -0
  27. package/dist/components/autocomplete/context.js +1 -0
  28. package/dist/components/autocomplete/index.d.ts +4 -0
  29. package/dist/components/autocomplete/index.js +1 -0
  30. package/dist/components/autocomplete/shared.js +1 -0
  31. package/dist/components/autocomplete/types.d.ts +94 -0
  32. package/dist/components/autocomplete/variants.js +1 -0
  33. package/dist/components/bottom-sheet/bottom-sheet-close.js +1 -0
  34. package/dist/components/bottom-sheet/bottom-sheet-close.vue.d.ts +18 -0
  35. package/dist/components/bottom-sheet/bottom-sheet.js +1 -0
  36. package/dist/components/bottom-sheet/bottom-sheet.vue.d.ts +72 -0
  37. package/dist/components/bottom-sheet/index.d.ts +3 -0
  38. package/dist/components/bottom-sheet/index.js +1 -0
  39. package/dist/components/bottom-sheet/types.d.ts +31 -0
  40. package/dist/components/bottom-sheet/variants.js +1 -0
  41. package/dist/components/button/button-link.vue.d.ts +1 -1
  42. package/dist/components/carousel/carousel-content.js +1 -0
  43. package/dist/components/carousel/carousel-content.vue.d.ts +18 -0
  44. package/dist/components/carousel/carousel-item.js +1 -0
  45. package/dist/components/carousel/carousel-item.vue.d.ts +18 -0
  46. package/dist/components/carousel/carousel-next.js +1 -0
  47. package/dist/components/carousel/carousel-next.vue.d.ts +22 -0
  48. package/dist/components/carousel/carousel-previous.js +1 -0
  49. package/dist/components/carousel/carousel-previous.vue.d.ts +22 -0
  50. package/dist/components/carousel/carousel.js +1 -0
  51. package/dist/components/carousel/carousel.vue.d.ts +15 -0
  52. package/dist/components/carousel/index.d.ts +8 -0
  53. package/dist/components/carousel/index.js +1 -0
  54. package/dist/components/carousel/types.d.ts +10 -0
  55. package/dist/components/carousel/variants.js +1 -0
  56. package/dist/components/color-area/color-area.js +1 -0
  57. package/dist/components/color-area/color-area.vue.d.ts +19 -0
  58. package/dist/components/color-area/index.d.ts +4 -0
  59. package/dist/components/color-area/index.js +1 -0
  60. package/dist/components/color-area/types.d.ts +14 -0
  61. package/dist/components/color-area/variants.js +1 -0
  62. package/dist/components/color-field/color-field.js +1 -0
  63. package/dist/components/color-field/color-field.vue.d.ts +15 -0
  64. package/dist/components/color-field/index.d.ts +4 -0
  65. package/dist/components/color-field/index.js +1 -0
  66. package/dist/components/color-field/types.d.ts +13 -0
  67. package/dist/components/color-field/variants.js +1 -0
  68. package/dist/components/color-picker/color-picker.js +1 -0
  69. package/dist/components/color-picker/color-picker.vue.d.ts +55 -0
  70. package/dist/components/color-picker/index.d.ts +2 -0
  71. package/dist/components/color-picker/index.js +1 -0
  72. package/dist/components/color-picker/shared.js +1 -0
  73. package/dist/components/color-picker/types.d.ts +47 -0
  74. package/dist/components/color-picker/variants.js +1 -0
  75. package/dist/components/color-slider/color-slider.js +1 -0
  76. package/dist/components/color-slider/color-slider.vue.d.ts +23 -0
  77. package/dist/components/color-slider/index.d.ts +4 -0
  78. package/dist/components/color-slider/index.js +1 -0
  79. package/dist/components/color-slider/types.d.ts +16 -0
  80. package/dist/components/color-swatch/color-swatch.js +1 -0
  81. package/dist/components/color-swatch/color-swatch.vue.d.ts +18 -0
  82. package/dist/components/color-swatch/index.d.ts +5 -0
  83. package/dist/components/color-swatch/index.js +1 -0
  84. package/dist/components/color-swatch/types.d.ts +16 -0
  85. package/dist/components/color-swatch/variants.d.ts +108 -0
  86. package/dist/components/color-swatch/variants.js +1 -0
  87. package/dist/components/color-swatch-picker/color-swatch-picker.js +1 -0
  88. package/dist/components/color-swatch-picker/color-swatch-picker.vue.d.ts +39 -0
  89. package/dist/components/color-swatch-picker/index.d.ts +5 -0
  90. package/dist/components/color-swatch-picker/index.js +1 -0
  91. package/dist/components/color-swatch-picker/types.d.ts +20 -0
  92. package/dist/components/color-swatch-picker/variants.d.ts +153 -0
  93. package/dist/components/color-swatch-picker/variants.js +1 -0
  94. package/dist/components/combobox/combobox-group-option.js +1 -0
  95. package/dist/components/combobox/combobox-option.js +1 -0
  96. package/dist/components/combobox/combobox-single-option.js +1 -0
  97. package/dist/components/combobox/combobox.js +1 -0
  98. package/dist/components/combobox/combobox.vue.d.ts +76 -0
  99. package/dist/components/combobox/index.d.ts +4 -0
  100. package/dist/components/combobox/index.js +1 -0
  101. package/dist/components/combobox/shared.js +1 -0
  102. package/dist/components/combobox/types.d.ts +68 -0
  103. package/dist/components/combobox/variants.js +1 -0
  104. package/dist/components/config-provider/config-provider.js +1 -1
  105. package/dist/components/config-provider/context.js +1 -1
  106. package/dist/components/config-provider/types.d.ts +14 -2
  107. package/dist/components/context-menu/context-menu-checkbox.js +1 -1
  108. package/dist/components/context-menu/context-menu-checkbox.vue.d.ts +8 -15
  109. package/dist/components/context-menu/context-menu-radio.js +1 -1
  110. package/dist/components/context-menu/context-menu-radio.vue.d.ts +8 -15
  111. package/dist/components/context-menu/context-menu-wrapper.js +1 -1
  112. package/dist/components/context-menu/context-menu-wrapper.vue.d.ts +5 -5
  113. package/dist/components/context-menu/context-menu.js +1 -1
  114. package/dist/components/context-menu/context-menu.vue.d.ts +7 -15
  115. package/dist/components/context-menu/index.d.ts +5 -7
  116. package/dist/components/context-menu/types.d.ts +14 -42
  117. package/dist/components/dialog/dialog-pure.vue.d.ts +1 -1
  118. package/dist/components/dialog/dialog.vue.d.ts +1 -1
  119. package/dist/components/drawer/drawer.vue.d.ts +1 -1
  120. package/dist/components/dropdown-menu/dropdown-menu-checkbox.js +1 -1
  121. package/dist/components/dropdown-menu/dropdown-menu-checkbox.vue.d.ts +8 -15
  122. package/dist/components/dropdown-menu/dropdown-menu-radio.js +1 -1
  123. package/dist/components/dropdown-menu/dropdown-menu-radio.vue.d.ts +8 -15
  124. package/dist/components/dropdown-menu/dropdown-menu-wrapper.js +1 -1
  125. package/dist/components/dropdown-menu/dropdown-menu-wrapper.vue.d.ts +5 -5
  126. package/dist/components/dropdown-menu/dropdown-menu.js +1 -1
  127. package/dist/components/dropdown-menu/dropdown-menu.vue.d.ts +7 -15
  128. package/dist/components/dropdown-menu/index.d.ts +2 -4
  129. package/dist/components/dropdown-menu/index.js +1 -1
  130. package/dist/components/dropdown-menu/types.d.ts +14 -38
  131. package/dist/components/editable/editable.js +1 -0
  132. package/dist/components/editable/editable.vue.d.ts +85 -0
  133. package/dist/components/editable/index.d.ts +4 -0
  134. package/dist/components/editable/index.js +1 -0
  135. package/dist/components/editable/types.d.ts +20 -0
  136. package/dist/components/editable/variants.js +1 -0
  137. package/dist/components/empty/empty.js +1 -0
  138. package/dist/components/empty/empty.vue.d.ts +21 -0
  139. package/dist/components/empty/index.d.ts +5 -0
  140. package/dist/components/empty/index.js +1 -0
  141. package/dist/components/empty/types.d.ts +20 -0
  142. package/dist/components/empty/variants.d.ts +57 -0
  143. package/dist/components/empty/variants.js +1 -0
  144. package/dist/components/hover-card/hover-card.js +1 -0
  145. package/dist/components/hover-card/hover-card.vue.d.ts +35 -0
  146. package/dist/components/hover-card/index.d.ts +4 -0
  147. package/dist/components/hover-card/index.js +1 -0
  148. package/dist/components/hover-card/types.d.ts +22 -0
  149. package/dist/components/hover-card/variants.js +1 -0
  150. package/dist/components/icon/types.d.ts +3 -4
  151. package/dist/components/link/link.vue.d.ts +1 -1
  152. package/dist/components/menu/context.js +1 -1
  153. package/dist/components/menu/index.d.ts +2 -7
  154. package/dist/components/menu/index.js +1 -1
  155. package/dist/components/menu/types.d.ts +9 -86
  156. package/dist/components/menu/variants.js +1 -1
  157. package/dist/components/menubar/index.d.ts +2 -0
  158. package/dist/components/menubar/index.js +1 -0
  159. package/dist/components/menubar/menubar.js +1 -0
  160. package/dist/components/{menu/menu-option.vue.d.ts → menubar/menubar.vue.d.ts} +8 -24
  161. package/dist/components/menubar/types.d.ts +17 -0
  162. package/dist/components/menubar/variants.js +1 -0
  163. package/dist/components/navigation-menu/navigation-menu.vue.d.ts +2 -2
  164. package/dist/components/page-tabs/page-tabs.vue.d.ts +2 -2
  165. package/dist/components/page-tabs/types.d.ts +1 -1
  166. package/dist/components/popconfirm/popconfirm-cancel.js +1 -1
  167. package/dist/components/popconfirm/popconfirm-confirm.js +1 -1
  168. package/dist/components/popconfirm/popconfirm.vue.d.ts +1 -1
  169. package/dist/components/popover/popover.js +1 -1
  170. package/dist/components/progress/context.d.ts +5 -0
  171. package/dist/components/progress/context.js +1 -0
  172. package/dist/components/progress/index.d.ts +8 -0
  173. package/dist/components/progress/index.js +1 -0
  174. package/dist/components/progress/loading-bar.js +1 -0
  175. package/dist/components/progress/loading-bar.vue.d.ts +25 -0
  176. package/dist/components/progress/progress-circle.js +1 -0
  177. package/dist/components/progress/progress-circle.vue.d.ts +29 -0
  178. package/dist/components/progress/progress.js +1 -0
  179. package/dist/components/progress/progress.vue.d.ts +30 -0
  180. package/dist/components/progress/shared.d.ts +7 -0
  181. package/dist/components/progress/shared.js +1 -0
  182. package/dist/components/progress/types.d.ts +43 -0
  183. package/dist/components/progress/variants.js +1 -0
  184. package/dist/components/scroll-area/index.d.ts +4 -0
  185. package/dist/components/scroll-area/index.js +1 -0
  186. package/dist/components/scroll-area/scroll-area.js +1 -0
  187. package/dist/components/scroll-area/scroll-area.vue.d.ts +18 -0
  188. package/dist/components/scroll-area/types.d.ts +15 -0
  189. package/dist/components/scroll-area/variants.js +1 -0
  190. package/dist/components/select/select.vue.d.ts +2 -2
  191. package/dist/components/skeleton/index.d.ts +3 -0
  192. package/dist/components/skeleton/index.js +1 -0
  193. package/dist/components/skeleton/skeleton.js +1 -0
  194. package/dist/components/skeleton/skeleton.vue.d.ts +20 -0
  195. package/dist/components/skeleton/types.d.ts +16 -0
  196. package/dist/components/skeleton/variants.d.ts +60 -0
  197. package/dist/components/skeleton/variants.js +1 -0
  198. package/dist/components/slider/index.d.ts +4 -0
  199. package/dist/components/slider/index.js +1 -0
  200. package/dist/components/slider/slider.js +1 -0
  201. package/dist/components/slider/slider.vue.d.ts +28 -0
  202. package/dist/components/slider/types.d.ts +16 -0
  203. package/dist/components/slider/variants.js +1 -0
  204. package/dist/components/spinner/index.d.ts +2 -0
  205. package/dist/components/spinner/index.js +1 -0
  206. package/dist/components/spinner/spinner.js +1 -0
  207. package/dist/components/spinner/spinner.vue.d.ts +10 -0
  208. package/dist/components/spinner/types.d.ts +19 -0
  209. package/dist/components/spinner/variants.js +1 -0
  210. package/dist/components/splitter/index.d.ts +5 -0
  211. package/dist/components/splitter/index.js +1 -0
  212. package/dist/components/splitter/splitter-group.js +1 -0
  213. package/dist/components/splitter/splitter-group.vue.d.ts +22 -0
  214. package/dist/components/splitter/splitter-panel.js +1 -0
  215. package/dist/components/splitter/splitter-panel.vue.d.ts +32 -0
  216. package/dist/components/splitter/splitter-resize-handle.js +1 -0
  217. package/dist/components/splitter/splitter-resize-handle.vue.d.ts +415 -0
  218. package/dist/components/splitter/types.d.ts +12 -0
  219. package/dist/components/splitter/variants.js +1 -0
  220. package/dist/components/stepper/index.d.ts +4 -0
  221. package/dist/components/stepper/index.js +1 -0
  222. package/dist/components/stepper/stepper.js +1 -0
  223. package/dist/components/stepper/stepper.vue.d.ts +121 -0
  224. package/dist/components/stepper/types.d.ts +26 -0
  225. package/dist/components/stepper/variants.js +1 -0
  226. package/dist/components/table/hooks.d.ts +5 -5
  227. package/dist/components/table/hooks.js +1 -1
  228. package/dist/components/table/index.d.ts +1 -1
  229. package/dist/components/table/table-filter-popover.js +1 -0
  230. package/dist/components/table/table-radio.js +1 -1
  231. package/dist/components/table/table.js +1 -1
  232. package/dist/components/table/table.vue.d.ts +7 -3
  233. package/dist/components/table/types.d.ts +25 -83
  234. package/dist/components/table/variants.js +1 -1
  235. package/dist/components/tags-input/index.d.ts +5 -0
  236. package/dist/components/tags-input/index.js +1 -0
  237. package/dist/components/tags-input/tags-input-item-delete.js +1 -0
  238. package/dist/components/tags-input/tags-input-item-delete.vue.d.ts +18 -0
  239. package/dist/components/tags-input/tags-input.js +1 -0
  240. package/dist/components/tags-input/tags-input.vue.d.ts +29 -0
  241. package/dist/components/tags-input/types.d.ts +12 -0
  242. package/dist/components/tags-input/variants.js +1 -0
  243. package/dist/components/toast/index.d.ts +4 -5
  244. package/dist/components/toast/index.js +1 -1
  245. package/dist/components/toast/styles.js +274 -0
  246. package/dist/components/toast/toaster.js +1 -0
  247. package/dist/components/toast/toaster.vue.d.ts +22 -0
  248. package/dist/components/toast/types.d.ts +5 -55
  249. package/dist/components/toast/variants.js +1 -1
  250. package/dist/components/toggle/index.d.ts +3 -0
  251. package/dist/components/toggle/index.js +1 -0
  252. package/dist/components/toggle/toggle.js +1 -0
  253. package/dist/components/toggle/toggle.vue.d.ts +30 -0
  254. package/dist/components/toggle/types.d.ts +14 -0
  255. package/dist/components/toggle/variants.d.ts +100 -0
  256. package/dist/components/toggle/variants.js +1 -0
  257. package/dist/components/toggle-group/index.d.ts +6 -0
  258. package/dist/components/toggle-group/index.js +1 -0
  259. package/dist/components/toggle-group/toggle-group-item.js +1 -0
  260. package/dist/components/toggle-group/toggle-group-item.vue.d.ts +22 -0
  261. package/dist/components/toggle-group/toggle-group.js +1 -0
  262. package/dist/components/toggle-group/toggle-group.vue.d.ts +24 -0
  263. package/dist/components/toggle-group/types.d.ts +15 -0
  264. package/dist/components/toggle-group/variants.d.ts +216 -0
  265. package/dist/components/toggle-group/variants.js +1 -0
  266. package/dist/components/toolbar/index.d.ts +4 -0
  267. package/dist/components/toolbar/index.js +1 -0
  268. package/dist/components/toolbar/toolbar.js +1 -0
  269. package/dist/components/toolbar/toolbar.vue.d.ts +18 -0
  270. package/dist/components/toolbar/types.d.ts +9 -0
  271. package/dist/components/toolbar/variants.js +1 -0
  272. package/dist/components/tree-menu/tree-menu-option-slot.js +1 -1
  273. package/dist/components/tree-menu/types.d.ts +1 -1
  274. package/dist/components/tree-menu/variants.js +1 -1
  275. package/dist/constants/components.d.ts +27 -0
  276. package/dist/constants/components.js +1 -1
  277. package/dist/index.d.ts +179 -94
  278. package/dist/index.js +1 -1
  279. package/dist/styles.css +597 -111
  280. package/dist/theme/config.js +1 -1
  281. package/package.json +21 -18
  282. package/dist/components/menu/menu-checkbox-options.js +0 -1
  283. package/dist/components/menu/menu-checkbox-options.vue.d.ts +0 -28
  284. package/dist/components/menu/menu-item-slot.js +0 -1
  285. package/dist/components/menu/menu-option.js +0 -1
  286. package/dist/components/menu/menu-options.js +0 -1
  287. package/dist/components/menu/menu-options.vue.d.ts +0 -48
  288. package/dist/components/menu/menu-radio-options.js +0 -1
  289. package/dist/components/menu/menu-radio-options.vue.d.ts +0 -28
  290. package/dist/components/menu/shared.js +0 -1
  291. package/dist/components/table/shared.js +0 -1
  292. package/dist/components/toast/context.d.ts +0 -5
  293. package/dist/components/toast/context.js +0 -1
  294. package/dist/components/toast/shared.js +0 -1
  295. package/dist/components/toast/toast-provider.js +0 -1
  296. package/dist/components/toast/toast.js +0 -1
  297. package/dist/components/toast/toast.vue.d.ts +0 -21
  298. package/dist/components/toast/variants.d.ts +0 -60
@@ -0,0 +1 @@
1
+ import{tv as e}from"tailwind-variants";const t=e({slots:{root:`w-full`,area:[`grid w-full grid-cols-[minmax(0,1fr)_auto] items-center gap-2 rounded-md border border-solid border-input bg-background transition-all-150`,`focus-within:outline-none focus-within:ring-3 focus-within:ring-offset-background focus-within:ring-primary/30`,`data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50`],preview:[`col-start-1 row-start-1 min-w-0 truncate text-foreground outline-none`,`data-[placeholder-shown]:text-muted-foreground`],input:[`col-start-1 row-start-1 min-w-0 w-full border-0 bg-transparent outline-none`,`placeholder:text-muted-foreground`,`disabled:cursor-not-allowed`],controls:`col-start-2 row-start-1 flex items-center gap-1`,editTrigger:[`inline-flex items-center justify-center rounded-md text-muted-foreground transition-colors`,`hover:bg-accent hover:text-accent-foreground`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30`],submitTrigger:[`inline-flex items-center justify-center rounded-md text-muted-foreground transition-colors`,`hover:bg-accent hover:text-success`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30`],cancelTrigger:[`inline-flex items-center justify-center rounded-md text-muted-foreground transition-colors`,`hover:bg-accent hover:text-destructive`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30`]},variants:{size:{xs:{area:`min-h-6 px-1.5 py-1 text-2xs`,preview:`text-2xs`,input:`text-2xs`,controls:`gap-0.5`,editTrigger:`size-5 [&>svg]:size-3`,submitTrigger:`size-5 [&>svg]:size-3`,cancelTrigger:`size-5 [&>svg]:size-3`},sm:{area:`min-h-7 px-2 py-1 text-xs`,preview:`text-xs`,input:`text-xs`,editTrigger:`size-6 [&>svg]:size-3.5`,submitTrigger:`size-6 [&>svg]:size-3.5`,cancelTrigger:`size-6 [&>svg]:size-3.5`},md:{area:`min-h-8 px-2.5 py-1.5 text-sm`,preview:`text-sm`,input:`text-sm`,editTrigger:`size-7 [&>svg]:size-4`,submitTrigger:`size-7 [&>svg]:size-4`,cancelTrigger:`size-7 [&>svg]:size-4`},lg:{area:`min-h-9 px-3 py-1.5 text-base`,preview:`text-base`,input:`text-base`,editTrigger:`size-8 [&>svg]:size-4`,submitTrigger:`size-8 [&>svg]:size-4`,cancelTrigger:`size-8 [&>svg]:size-4`},xl:{area:`min-h-10 px-3.5 py-2 text-lg`,preview:`text-lg`,input:`text-lg`,editTrigger:`size-9 [&>svg]:size-5`,submitTrigger:`size-9 [&>svg]:size-5`,cancelTrigger:`size-9 [&>svg]:size-5`},"2xl":{area:`min-h-12 px-4 py-2.5 text-xl`,preview:`text-xl`,input:`text-xl`,editTrigger:`size-10 [&>svg]:size-5`,submitTrigger:`size-10 [&>svg]:size-5`,cancelTrigger:`size-10 [&>svg]:size-5`}}},defaultVariants:{size:`md`}});export{t as editableVariants};
@@ -0,0 +1 @@
1
+ import{mergeSlotVariants as e}from"../../theme/shared.js";import"../../theme/index.js";import t from"../icon/icon.js";import{emptyVariants as n}from"./variants.js";import{computed as r,createBlock as i,createCommentVNode as a,createTextVNode as o,createVNode as s,defineComponent as c,guardReactiveProps as l,mergeProps as u,normalizeProps as d,openBlock as f,renderSlot as p,toDisplayString as m,unref as h,useSlots as g,withCtx as _}from"vue";import{useOmitProps as v}from"@soybeanjs/headless/composables";import{EmptyContent as y,EmptyDescription as b,EmptyHeader as x,EmptyMedia as S,EmptyRoot as C,EmptyTitle as w,provideEmptyUi as T}from"@soybeanjs/headless";const E=c({name:`SEmpty`,__name:`empty`,props:{class:{},ui:{},title:{},description:{},icon:{},mediaVariant:{},headerProps:{},mediaProps:{},contentProps:{},titleProps:{},descriptionProps:{}},setup(c){let E=c,D=v(E,[`class`,`ui`,`title`,`description`,`icon`,`mediaVariant`,`headerProps`,`mediaProps`,`contentProps`,`titleProps`,`descriptionProps`]),O=g(),k=r(()=>!!(O.title||O.description||E.title||E.description)),A=r(()=>!!(O.media||E.icon));return T(r(()=>e(n({mediaVariant:E.mediaVariant}),E.ui,{root:E.class}))),(e,n)=>(f(),i(h(C),d(l(h(D))),{default:_(()=>[A.value?(f(),i(h(S),d(u({key:0},c.mediaProps)),{default:_(()=>[p(e.$slots,`media`,{},()=>[s(t,{icon:c.icon},null,8,[`icon`])])]),_:3},16)):a(`v-if`,!0),s(h(y),d(l(c.contentProps)),{default:_(()=>[k.value?(f(),i(h(x),d(u({key:0},c.headerProps)),{default:_(()=>[O.title||c.title?(f(),i(h(w),d(u({key:0},c.titleProps)),{default:_(()=>[p(e.$slots,`title`,{},()=>[o(m(c.title),1)])]),_:3},16)):a(`v-if`,!0),O.description||c.description?(f(),i(h(b),d(u({key:1},c.descriptionProps)),{default:_(()=>[p(e.$slots,`description`,{},()=>[o(m(c.description),1)])]),_:3},16)):a(`v-if`,!0)]),_:3},16)):a(`v-if`,!0),p(e.$slots,`default`)]),_:3},16)]),_:3},16))}});export{E as default};
@@ -0,0 +1,21 @@
1
+ import { EmptyProps } from "./types.js";
2
+ import * as _$vue from "vue";
3
+
4
+ //#region src/components/empty/empty.vue.d.ts
5
+ type Slots = {
6
+ default?: () => any;
7
+ media?: () => any;
8
+ title?: () => any;
9
+ description?: () => any;
10
+ };
11
+ type __VLS_Slots = Slots;
12
+ declare const __VLS_base: _$vue.DefineComponent<EmptyProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<EmptyProps> & Readonly<{}>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
13
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
14
+ declare const _default: typeof __VLS_export;
15
+ type __VLS_WithSlots<T, S> = T & {
16
+ new (): {
17
+ $slots: S;
18
+ };
19
+ };
20
+ //#endregion
21
+ export { _default };
@@ -0,0 +1,5 @@
1
+ import { EmptyMediaVariant } from "./variants.js";
2
+ import { EmptyProps } from "./types.js";
3
+ import { _default } from "./empty.vue.js";
4
+ import { EmptyContentProps, EmptyDescriptionProps, EmptyHeaderProps, EmptyMediaProps, EmptyRootProps, EmptyTitleProps } from "@soybeanjs/headless/empty";
5
+ export { type EmptyContentProps, type EmptyDescriptionProps, type EmptyHeaderProps, type EmptyMediaProps, type EmptyRootProps, type EmptyTitleProps };
@@ -0,0 +1 @@
1
+ import"./empty.js";
@@ -0,0 +1,20 @@
1
+ import { IconValue } from "../icon/types.js";
2
+ import { EmptyMediaVariant } from "./variants.js";
3
+ import { ClassValue, EmptyContentProps, EmptyDescriptionProps, EmptyHeaderProps, EmptyMediaProps, EmptyRootProps, EmptyTitleProps, EmptyUi } from "@soybeanjs/headless";
4
+
5
+ //#region src/components/empty/types.d.ts
6
+ interface EmptyProps extends EmptyRootProps {
7
+ class?: ClassValue;
8
+ ui?: Partial<EmptyUi>;
9
+ title?: string;
10
+ description?: string;
11
+ icon?: IconValue;
12
+ mediaVariant?: EmptyMediaVariant;
13
+ headerProps?: EmptyHeaderProps;
14
+ mediaProps?: EmptyMediaProps;
15
+ contentProps?: EmptyContentProps;
16
+ titleProps?: EmptyTitleProps;
17
+ descriptionProps?: EmptyDescriptionProps;
18
+ }
19
+ //#endregion
20
+ export { EmptyProps };
@@ -0,0 +1,57 @@
1
+ import * as _$tailwind_variants0 from "tailwind-variants";
2
+ import { VariantProps } from "tailwind-variants";
3
+
4
+ //#region src/components/empty/variants.d.ts
5
+ declare const emptyVariants: _$tailwind_variants0.TVReturnType<{
6
+ mediaVariant: {
7
+ default: {
8
+ media: string;
9
+ };
10
+ icon: {
11
+ media: string;
12
+ };
13
+ };
14
+ }, {
15
+ root: string;
16
+ header: string;
17
+ media: string;
18
+ content: string;
19
+ title: string;
20
+ description: string;
21
+ }, undefined, {
22
+ mediaVariant: {
23
+ default: {
24
+ media: string;
25
+ };
26
+ icon: {
27
+ media: string;
28
+ };
29
+ };
30
+ }, {
31
+ root: string;
32
+ header: string;
33
+ media: string;
34
+ content: string;
35
+ title: string;
36
+ description: string;
37
+ }, _$tailwind_variants0.TVReturnType<{
38
+ mediaVariant: {
39
+ default: {
40
+ media: string;
41
+ };
42
+ icon: {
43
+ media: string;
44
+ };
45
+ };
46
+ }, {
47
+ root: string;
48
+ header: string;
49
+ media: string;
50
+ content: string;
51
+ title: string;
52
+ description: string;
53
+ }, undefined, unknown, unknown, undefined>>;
54
+ type EmptyVariants = VariantProps<typeof emptyVariants>;
55
+ type EmptyMediaVariant = NonNullable<EmptyVariants['mediaVariant']>;
56
+ //#endregion
57
+ export { EmptyMediaVariant };
@@ -0,0 +1 @@
1
+ import{tv as e}from"tailwind-variants";const t=e({slots:{root:`flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border border-dashed p-6 text-center md:p-12`,header:`flex max-w-sm flex-col items-center gap-2 text-center`,media:`mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0`,content:`flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm`,title:`m-0 text-lg font-medium tracking-tight`,description:`m-0 text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary`},variants:{mediaVariant:{default:{media:`bg-transparent`},icon:{media:`size-10 rounded-lg bg-muted text-foreground [&_svg:not([class*=size-])]:size-6`}}},defaultVariants:{mediaVariant:`default`}});export{t as emptyVariants};
@@ -0,0 +1 @@
1
+ import{mergeSlotVariants as e}from"../../theme/shared.js";import"../../theme/index.js";import{hoverCardVariants as t}from"./variants.js";import{computed as n,createBlock as r,createCommentVNode as i,createVNode as a,defineComponent as o,guardReactiveProps as s,mergeProps as c,normalizeProps as l,openBlock as u,renderSlot as d,toHandlers as f,unref as p,withCtx as m}from"vue";import{useForwardListeners as h,useOmitProps as g}from"@soybeanjs/headless/composables";import{HoverCardArrow as _,HoverCardPopup as v,HoverCardPortal as y,HoverCardPositioner as b,HoverCardRoot as x,HoverCardTrigger as S,provideHoverCardUi as C}from"@soybeanjs/headless";const w=o({name:`SHoverCard`,__name:`hover-card`,props:{class:{},size:{},ui:{},placement:{},showArrow:{type:Boolean,default:!0},positionerProps:{},popupProps:{},triggerProps:{},portalProps:{},arrowProps:{},defaultOpen:{type:Boolean,default:!1},open:{type:Boolean,default:void 0},openDelay:{},closeDelay:{}},emits:[`update:open`,`escapeKeyDown`,`pointerDownOutside`,`focusOutside`],setup(o,{emit:w}){let T=o,E=w,D=g(T,[`class`,`size`,`ui`,`placement`,`showArrow`,`positionerProps`,`popupProps`,`triggerProps`,`portalProps`,`arrowProps`]),O=h(E),k=n(()=>e(t({size:T.size}),T.ui,{popup:T.class})),A=n(()=>({...T.positionerProps,placement:T.placement??T.positionerProps?.placement}));return C(k),(e,t)=>(u(),r(p(x),c(p(D),{"onUpdate:open":t[0]||=e=>E(`update:open`,e)}),{default:m(()=>[a(p(S),c(o.triggerProps,{"as-child":``}),{default:m(()=>[d(e.$slots,`trigger`)]),_:3},16),a(p(y),l(s(o.portalProps)),{default:m(()=>[a(p(b),c(A.value,f(p(O))),{default:m(()=>[a(p(v),l(s(o.popupProps)),{default:m(()=>[d(e.$slots,`default`),o.showArrow?(u(),r(p(_),l(c({key:0},o.arrowProps)),null,16)):i(`v-if`,!0)]),_:3},16)]),_:3},16)]),_:3},16)]),_:3},16))}});export{w as default};
@@ -0,0 +1,35 @@
1
+ import { HoverCardProps } from "./types.js";
2
+ import * as _$vue from "vue";
3
+ import * as _$_soybeanjs_headless0 from "@soybeanjs/headless";
4
+
5
+ //#region src/components/hover-card/hover-card.vue.d.ts
6
+ declare var __VLS_16: {}, __VLS_36: {};
7
+ type __VLS_Slots = {} & {
8
+ trigger?: (props: typeof __VLS_16) => any;
9
+ } & {
10
+ default?: (props: typeof __VLS_36) => any;
11
+ };
12
+ declare const __VLS_base: _$vue.DefineComponent<HoverCardProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
13
+ "update:open": (value: boolean) => any;
14
+ escapeKeyDown: (event: KeyboardEvent) => any;
15
+ pointerDownOutside: (event: _$_soybeanjs_headless0.PointerDownOutsideEvent) => any;
16
+ focusOutside: (event: _$_soybeanjs_headless0.FocusOutsideEvent) => any;
17
+ }, string, _$vue.PublicProps, Readonly<HoverCardProps> & Readonly<{
18
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
19
+ onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
20
+ onPointerDownOutside?: ((event: _$_soybeanjs_headless0.PointerDownOutsideEvent) => any) | undefined;
21
+ onFocusOutside?: ((event: _$_soybeanjs_headless0.FocusOutsideEvent) => any) | undefined;
22
+ }>, {
23
+ open: boolean;
24
+ defaultOpen: boolean;
25
+ showArrow: boolean;
26
+ }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
27
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
28
+ declare const _default: typeof __VLS_export;
29
+ type __VLS_WithSlots<T, S> = T & {
30
+ new (): {
31
+ $slots: S;
32
+ };
33
+ };
34
+ //#endregion
35
+ export { _default };
@@ -0,0 +1,4 @@
1
+ import { HoverCardEmits, HoverCardProps } from "./types.js";
2
+ import { _default } from "./hover-card.vue.js";
3
+ import { HoverCardArrowProps, HoverCardPopupProps, HoverCardPortalProps, HoverCardPositionerEmits, HoverCardPositionerProps, HoverCardRootEmits, HoverCardRootProps, HoverCardTriggerProps, HoverCardUi, HoverCardUiSlot } from "@soybeanjs/headless/hover-card";
4
+ export { type HoverCardArrowProps, type HoverCardPopupProps, type HoverCardPortalProps, type HoverCardPositionerEmits, type HoverCardPositionerProps, type HoverCardRootEmits, type HoverCardRootProps, type HoverCardTriggerProps, type HoverCardUi, type HoverCardUiSlot };
@@ -0,0 +1 @@
1
+ import"./hover-card.js";
@@ -0,0 +1,22 @@
1
+ import { ThemeSize } from "../../theme/types.js";
2
+ import { ClassValue, HoverCardArrowProps, HoverCardPopupProps, HoverCardPortalProps, HoverCardPositionerEmits, HoverCardPositionerProps, HoverCardRootEmits, HoverCardRootProps, HoverCardTriggerProps, HoverCardUi, Placement } from "@soybeanjs/headless";
3
+
4
+ //#region src/components/hover-card/types.d.ts
5
+ interface HoverCardProps extends HoverCardRootProps {
6
+ /**
7
+ * class of popup
8
+ */
9
+ class?: ClassValue;
10
+ size?: ThemeSize;
11
+ ui?: Partial<HoverCardUi>;
12
+ placement?: Placement;
13
+ showArrow?: boolean;
14
+ positionerProps?: HoverCardPositionerProps;
15
+ popupProps?: HoverCardPopupProps;
16
+ triggerProps?: HoverCardTriggerProps;
17
+ portalProps?: HoverCardPortalProps;
18
+ arrowProps?: HoverCardArrowProps;
19
+ }
20
+ type HoverCardEmits = HoverCardRootEmits & HoverCardPositionerEmits;
21
+ //#endregion
22
+ export { HoverCardEmits, HoverCardProps };
@@ -0,0 +1 @@
1
+ import{tv as e}from"tailwind-variants";const t=e({slots:{positioner:`w-max`,popup:[`z-50 w-64 rounded-md border bg-popover text-popover-foreground shadow-md outline-none will-change-transform`,`data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,`data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95`,`data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`],arrow:`w-1em h-0.5em fill-popover stroke-border`},variants:{size:{xs:{popup:`w-48 p-3 text-2xs`,arrow:`text-3xs`},sm:{popup:`w-56 p-3.5 text-xs`,arrow:`text-2xs`},md:{popup:`w-64 p-4 text-sm`,arrow:`text-xs`},lg:{popup:`w-72 p-4.5 text-base`,arrow:`text-sm`},xl:{popup:`w-80 p-5 text-lg`,arrow:`text-base`},"2xl":{popup:`w-96 p-5.5 text-xl`,arrow:`text-lg`}}},defaultVariants:{size:`md`}});export{t as hoverCardVariants};
@@ -1,10 +1,9 @@
1
- import { Component, VNode } from "vue";
2
- import { IconProps, IconifyIcon } from "@iconify/vue";
1
+ import { IconValue } from "@soybeanjs/headless";
2
+ import { IconProps } from "@iconify/vue";
3
3
 
4
4
  //#region src/components/icon/types.d.ts
5
- type IconValue = VNode | Component | string | IconifyIcon | null | undefined;
6
5
  interface IconProps$1 extends Omit<IconProps, 'icon'> {
7
6
  icon: IconValue;
8
7
  }
9
8
  //#endregion
10
- export { IconProps$1 as IconProps, IconValue };
9
+ export { IconProps$1 as IconProps, type IconValue };
@@ -11,8 +11,8 @@ type __VLS_Slots = {} & {
11
11
  default?: (props: typeof __VLS_8) => any;
12
12
  };
13
13
  declare const __VLS_base: _$vue.DefineComponent<LinkProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<LinkProps> & Readonly<{}>, {
14
- disabled: boolean;
15
14
  replace: boolean;
15
+ disabled: boolean;
16
16
  external: boolean;
17
17
  viewTransition: boolean;
18
18
  noRel: boolean;
@@ -1 +1 @@
1
- import{useContext as e,useUiContext as t}from"@soybeanjs/headless/composables";const[n,r]=e(`MenuOptionsContext`),[i,a]=t(`MenuExtraUi`);export{i as provideMenuExtraUi,n as provideMenuOptionsContext,a as useMenuExtraUi,r as useMenuOptionsContext};
1
+ import{mergeSlotVariants as e}from"../../theme/shared.js";import"../../theme/index.js";import{kbdVariants as t}from"../kbd/variants.js";import{menuVariants as n}from"./variants.js";import{computed as r,toValue as i}from"vue";import{provideMenuUi as a}from"@soybeanjs/headless";const o=o=>{a(r(()=>{let r=i(o),a=n({size:r.size,indicatorPosition:r.indicatorPosition}),s=t({size:r.size}),c=a.shortcut;return a.shortcut=()=>`${c()} ${s}`,e(a,r.ui,{popup:r.class})}))};export{o as provideMenuUi};
@@ -1,7 +1,2 @@
1
- import { MenuCheckboxOptionData, MenuCheckboxOptionsEmits, MenuCheckboxOptionsProps, MenuCheckboxSelectEmits, MenuExtendedUi, MenuExtraUi, MenuExtraUiSlot, MenuOptionData, MenuOptionEmits, MenuOptionProps, MenuOptionSelectEmits, MenuOptionsContext, MenuOptionsEmits, MenuOptionsProps, MenuRadioOptionData, MenuRadioOptionsEmits, MenuRadioOptionsProps, MenuRadioSelectEmits, MenuShortcutProps } from "./types.js";
2
- import { _default } from "./menu-option.vue.js";
3
- import { _default as _default$1 } from "./menu-options.vue.js";
4
- import { _default as _default$2 } from "./menu-checkbox-options.vue.js";
5
- import { _default as _default$3 } from "./menu-radio-options.vue.js";
6
- import { MenuCheckboxGroupEmits, MenuCheckboxGroupProps, MenuCheckboxItemEmits, MenuCheckboxItemProps, MenuContentEmits, MenuContentProps, MenuGroupLabelProps, MenuGroupProps, MenuItemEmits, MenuItemIndicatorProps, MenuItemProps, MenuRadioGroupEmits, MenuRadioGroupProps, MenuRadioItemEmits, MenuRadioItemProps, MenuRootEmits, MenuRootProps, MenuSubContentEmits, MenuSubContentProps, MenuSubEmits, MenuSubProps, MenuSubTriggerProps, MenuTriggerProps } from "@soybeanjs/headless/menu";
7
- export { type MenuCheckboxGroupEmits, type MenuCheckboxGroupProps, type MenuCheckboxItemEmits, type MenuCheckboxItemProps, type MenuContentEmits, type MenuContentProps, type MenuGroupLabelProps, type MenuGroupProps, type MenuItemEmits, type MenuItemIndicatorProps, type MenuItemProps, type MenuRadioGroupEmits, type MenuRadioGroupProps, type MenuRadioItemEmits, type MenuRadioItemProps, type MenuRootEmits, type MenuRootProps, type MenuSubContentEmits, type MenuSubContentProps, type MenuSubEmits, type MenuSubProps, type MenuSubTriggerProps, type MenuTriggerProps };
1
+ import { MenuCheckboxOptionData, MenuCheckboxOptionsCompact as SMenuCheckboxOptions, MenuOptionData, MenuOptionsCompact as SMenuOptions, MenuRadioOptionData, MenuRadioOptionsCompact as SMenuRadioOptions } from "@soybeanjs/headless";
2
+ export { type MenuCheckboxOptionData, type MenuOptionData, type MenuRadioOptionData, SMenuCheckboxOptions, SMenuOptions, SMenuRadioOptions };
@@ -1 +1 @@
1
- import"./menu-option.js";import"./menu-options.js";import"./menu-checkbox-options.js";import"./menu-radio-options.js";
1
+ import{MenuCheckboxOptionsCompact as e,MenuOptionsCompact as t,MenuRadioOptionsCompact as n}from"@soybeanjs/headless";export{e as SMenuCheckboxOptions,t as SMenuOptions,n as SMenuRadioOptions};
@@ -1,92 +1,15 @@
1
- import { IconValue } from "../icon/types.js";
2
- import { LinkProps as LinkProps$1 } from "../link/types.js";
3
- import { KbdProps as KbdProps$1 } from "../kbd/types.js";
4
- import { ComputedRef } from "vue";
5
- import { AcceptableBooleanValue, DefinedValue, KbdValue, LinkBaseProps, MenuCheckboxGroupEmits, MenuCheckboxGroupProps, MenuCheckboxItemProps, MenuGroupLabelProps, MenuGroupProps, MenuItemIndicatorProps, MenuItemProps, MenuPortalProps, MenuRadioGroupEmits, MenuRadioGroupProps, MenuRadioItemProps, MenuSeparatorProps, MenuSubContentEmits, MenuSubContentProps, MenuSubEmits, MenuSubProps, MenuSubTriggerProps, MenuUi, UiClass } from "@soybeanjs/headless";
1
+ import { ThemeSize } from "../../theme/types.js";
2
+ import { AlignSide, ClassValue, MenuUi } from "@soybeanjs/headless";
6
3
 
7
4
  //#region src/components/menu/types.d.ts
8
- interface MenuOptionData<T = DefinedValue> extends Pick<MenuItemProps, 'disabled' | 'textValue'>, LinkBaseProps {
9
- /** The label to display in the menu. */
10
- label: string;
11
- /** The value of the option. */
12
- value: T;
5
+ interface MenuUiBaseProps {
13
6
  /**
14
- * whether is group label
15
- *
16
- * if true, the option will be a group label.
7
+ * class of menu popup
17
8
  */
18
- isGroupLabel?: boolean;
19
- /**
20
- * The icon of the dropdown item.
21
- *
22
- * if it is a string, it will be used as the icon name of the iconify.
23
- */
24
- icon?: IconValue;
25
- /** Whether to show a separator above this option. */
26
- separator?: boolean;
27
- /** The shortcut of the option. */
28
- shortcut?: KbdValue | KbdValue[];
29
- /** The children of the option. */
30
- children?: MenuOptionData<T>[];
31
- }
32
- interface MenuShortcutProps extends Omit<KbdProps$1, 'value'> {}
33
- type MenuExtraUiSlot = 'subTriggerIcon' | 'itemLinkIcon' | 'shortcut';
34
- type MenuExtraUi = UiClass<MenuExtraUiSlot>;
35
- type MenuExtendedUi = MenuUi & MenuExtraUi;
36
- interface MenuOptionProps<T extends DefinedValue = DefinedValue> {
37
- item: MenuOptionData<T>;
38
- itemProps?: MenuItemProps;
39
- linkProps?: LinkProps$1;
40
- groupProps?: MenuGroupProps;
41
- groupLabelProps?: MenuGroupLabelProps;
42
- subProps?: MenuSubProps;
43
- subTriggerProps?: MenuSubTriggerProps;
44
- portalProps?: MenuPortalProps;
45
- subContentProps?: MenuSubContentProps;
46
- separatorProps?: MenuSeparatorProps;
47
- shortcutProps?: MenuShortcutProps;
48
- }
49
- type MenuOptionSelectEmits<T extends MenuOptionData = MenuOptionData> = {
50
- select: [item: T, event: Event];
51
- };
52
- type MenuOptionEmits<T extends MenuOptionData = MenuOptionData> = MenuSubEmits & MenuSubContentEmits & MenuOptionSelectEmits<T>;
53
- interface MenuOptionsProps<T extends DefinedValue = DefinedValue, S extends MenuOptionData<T> = MenuOptionData<T>> extends Omit<MenuOptionProps<T>, 'item'> {
54
- items: S[];
55
- /**
56
- * The active value of the menu.
57
- */
58
- activeValue?: DefinedValue;
59
- }
60
- type MenuOptionsEmits<T extends MenuOptionData = MenuOptionData> = MenuOptionEmits<T>;
61
- interface MenuCheckboxOptionData<T extends DefinedValue = DefinedValue> extends Omit<MenuOptionData<T>, 'linkProps' | 'children'> {}
62
- interface MenuCheckboxOptionsProps<T extends DefinedValue = DefinedValue, S extends MenuCheckboxOptionData<T> = MenuCheckboxOptionData<T>> extends Omit<MenuCheckboxGroupProps<T>, 'dir' | 'onSelect'> {
63
- items: S[];
64
- groupLabelProps?: MenuGroupLabelProps;
65
- checkboxItemProps?: MenuCheckboxItemProps;
66
- indicatorProps?: MenuItemIndicatorProps;
67
- shortcutProps?: MenuShortcutProps;
68
- separatorProps?: MenuSeparatorProps;
69
- }
70
- type MenuCheckboxSelectEmits<T extends MenuCheckboxOptionData = MenuCheckboxOptionData> = {
71
- select: [item: T, event: Event];
72
- };
73
- type MenuCheckboxOptionsEmits<T extends DefinedValue = DefinedValue, S extends MenuCheckboxOptionData<T> = MenuCheckboxOptionData<T>> = MenuCheckboxGroupEmits<T> & MenuCheckboxSelectEmits<S>;
74
- interface MenuRadioOptionData<T extends AcceptableBooleanValue = AcceptableBooleanValue> extends Omit<MenuOptionData<NonNullable<T>>, 'linkProps' | 'children'> {}
75
- interface MenuRadioOptionsProps<T extends AcceptableBooleanValue = AcceptableBooleanValue, S extends MenuRadioOptionData<T> = MenuRadioOptionData<T>> extends Omit<MenuRadioGroupProps<T>, 'dir' | 'onSelect'> {
76
- items: S[];
77
- groupLabelProps?: MenuGroupLabelProps;
78
- radioItemProps?: MenuRadioItemProps;
79
- indicatorProps?: MenuItemIndicatorProps;
80
- shortcutProps?: MenuShortcutProps;
81
- separatorProps?: MenuSeparatorProps;
82
- }
83
- type MenuRadioSelectEmits<T extends MenuRadioOptionData = MenuRadioOptionData> = {
84
- select: [item: T, event: Event];
85
- };
86
- type MenuRadioOptionsEmits<T extends AcceptableBooleanValue = AcceptableBooleanValue, S extends MenuRadioOptionData<T> = MenuRadioOptionData<T>> = MenuRadioGroupEmits<T> & MenuRadioSelectEmits<S>;
87
- interface MenuOptionsContext {
88
- activeValue: ComputedRef<DefinedValue | undefined>;
89
- activePaths: ComputedRef<DefinedValue[]>;
9
+ class?: ClassValue;
10
+ size?: ThemeSize;
11
+ ui?: Partial<MenuUi>;
12
+ indicatorPosition?: AlignSide;
90
13
  }
91
14
  //#endregion
92
- export { MenuCheckboxOptionData, MenuCheckboxOptionsEmits, MenuCheckboxOptionsProps, MenuCheckboxSelectEmits, MenuExtendedUi, MenuExtraUi, MenuExtraUiSlot, MenuOptionData, MenuOptionEmits, MenuOptionProps, MenuOptionSelectEmits, MenuOptionsContext, MenuOptionsEmits, MenuOptionsProps, MenuRadioOptionData, MenuRadioOptionsEmits, MenuRadioOptionsProps, MenuRadioSelectEmits, MenuShortcutProps };
15
+ export { MenuUiBaseProps };
@@ -1 +1 @@
1
- import{tv as e}from"tailwind-variants";const t=e({slots:{positioner:``,popup:[`z-50 min-w-max rounded-md border bg-popover text-popover-foreground shadow-md will-change-transform focus-visible:outline-none`,`data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95`,`data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`],arrow:`w-1em h-0.5em fill-popover stroke-border`,subPositioner:``,subPopup:[`z-50 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg will-change-transform`,`data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95`,`data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`],group:``,groupLabel:`flex items-center font-medium text-muted-foreground`,checkboxGroup:``,radioGroup:``,item:[`relative flex items-center rounded-sm outline-none transition-colors-200 cursor-default select-none`,`focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50`,`data-[active=true]:bg-primary/10 data-[active=true]:text-primary`,`data-[active=false]:hover:bg-accent data-[active=false]:focus:bg-accent`],itemIcon:`shrink-0 text-muted-foreground`,itemLink:[`relative flex items-center rounded-sm outline-none transition-colors-200 cursor-pointer select-none decoration-none`,`focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50`],itemLinkIcon:`shrink-0 self-start text-muted-foreground`,subTrigger:`group/trigger flex items-center rounded-sm outline-none cursor-default select-none focus:bg-accent data-[state=open]:bg-accent data-[child-active]:text-primary`,subTriggerIcon:`ml-auto text-muted-foreground group-data-[child-active]/trigger:text-primary`,shortcut:`ml-auto tracking-widest opacity-60`,separator:`h-px bg-border`,checkboxItem:[`relative flex items-center rounded-sm outline-none transition-colors-200 cursor-pointer select-none`,`focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50`],itemIndicator:`absolute flex items-center justify-center text-primary`,radioItem:[`relative flex items-center rounded-sm outline-none transition-colors-200 cursor-pointer select-none`,`focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50`]},variants:{size:{xs:{popup:`text-2xs p-0.75`,groupLabel:`gap-1 p-1 text-3xs`,item:`gap-1 px-1 py-1`,itemLink:`gap-1 px-1 py-1`,itemLinkIcon:`size-2 -ml-1`,separator:`-mx-0.75 my-0.75`,subTrigger:`gap-1 px-1 py-1`,subPopup:`text-2xs p-0.75`,checkboxItem:`gap-1 py-1`,radioItem:`gap-1 py-1`},sm:{popup:`text-xs p-0.875`,groupLabel:`gap-1.25 p-1.25 text-2xs`,item:`gap-1.5 px-1.5 py-1`,itemLink:`gap-1.5 px-1.5 py-1`,itemLinkIcon:`size-2.5 -ml-1.5`,separator:`-mx-0.875 my-0.875`,subTrigger:`gap-1.5 px-1.5 py-1`,subPopup:`text-xs p-0.875`,checkboxItem:`gap-1.5 py-1`,radioItem:`gap-1.5 py-1`},md:{popup:`text-sm p-1`,groupLabel:`gap-1.75 p-1.75 text-xs`,item:`gap-2 px-2 py-1.5`,itemLink:`gap-2 px-2 py-1.5`,itemLinkIcon:`size-3 -ml-2`,separator:`-mx-1 my-1`,subTrigger:`gap-2 px-2 py-1.5`,subPopup:`text-sm p-1`,checkboxItem:`gap-2 py-1.5`,radioItem:`gap-2 py-1.5`},lg:{popup:`text-base p-1.25`,groupLabel:`gap-2 p-2 text-sm`,item:`gap-2.5 px-2.5 py-1.5`,itemLink:`gap-2.5 px-2.5 py-1.5`,itemLinkIcon:`size-3.5 -ml-2.5`,separator:`-mx-1.25 my-1.25`,subTrigger:`gap-2.5 px-2.5 py-1.5`,subPopup:`text-base p-1.25`,checkboxItem:`gap-2.5 py-1.5`,radioItem:`gap-2.5 py-1.5`},xl:{popup:`text-lg p-1.5`,groupLabel:`gap-2.5 p-2.5 text-base`,item:`gap-3 px-3 py-2`,itemLink:`gap-3 px-3 py-2`,itemLinkIcon:`size-4 -ml-3`,separator:`-mx-1.5 my-1.5`,subTrigger:`gap-3 px-3 py-2`,subPopup:`text-lg p-1.5`,checkboxItem:`gap-3 py-2`,radioItem:`gap-3 py-2`},"2xl":{popup:`text-xl p-1.75`,groupLabel:`gap-3 p-3 text-lg`,item:`gap-3.5 px-3.5 py-2.5`,itemLink:`gap-3.5 px-3.5 py-2.5`,itemLinkIcon:`size-4.5 -ml-3.5`,separator:`-mx-1.75 my-1.75`,subTrigger:`gap-3.5 px-3.5 py-2.5`,subPopup:`text-xl p-1.75`,checkboxItem:`gap-3.5 py-2.5`,radioItem:`gap-3.5 py-2.5`}},indicatorPosition:{start:{itemIndicator:`left-2`,checkboxItem:`pl-8 pr-2`,radioItem:`pl-8 pr-2`},end:{itemIndicator:`right-2`,checkboxItem:`pl-2 pr-8`,radioItem:`pl-2 pr-8`}}},compoundVariants:[{indicatorPosition:`start`,size:`xs`,class:{itemIndicator:`left-1`,checkboxItem:`pl-6 pr-1`,radioItem:`pl-6 pr-1`}},{indicatorPosition:`end`,size:`xs`,class:{itemIndicator:`right-1`,checkboxItem:`pl-1 pr-6`,radioItem:`pl-1 pr-6`}},{indicatorPosition:`start`,size:`sm`,class:{itemIndicator:`left-1.5`,checkboxItem:`pl-7 pr-1.5`,radioItem:`pl-7 pr-1.5`}},{indicatorPosition:`end`,size:`sm`,class:{itemIndicator:`right-1.5`,checkboxItem:`pl-1.5 pr-7`,radioItem:`pl-1.5 pr-7`}},{indicatorPosition:`start`,size:`lg`,class:{itemIndicator:`left-2.5`,checkboxItem:`pl-9 pr-2.5`,radioItem:`pl-9 pr-2.5`}},{indicatorPosition:`end`,size:`lg`,class:{itemIndicator:`right-2.5`,checkboxItem:`pl-2.5 pr-9`,radioItem:`pl-2.5 pr-9`}},{indicatorPosition:`start`,size:`xl`,class:{itemIndicator:`left-3`,checkboxItem:`pl-10 pr-3`,radioItem:`pl-10 pr-3`}},{indicatorPosition:`end`,size:`xl`,class:{itemIndicator:`right-3`,checkboxItem:`pl-3 pr-10`,radioItem:`pl-3 pr-10`}},{indicatorPosition:`start`,size:`2xl`,class:{itemIndicator:`left-3.5`,checkboxItem:`pl-12 pr-3.5`,radioItem:`pl-12 pr-3.5`}},{indicatorPosition:`end`,size:`2xl`,class:{itemIndicator:`right-3.5`,checkboxItem:`pl-3.5 pr-12`,radioItem:`pl-3.5 pr-12`}}],defaultVariants:{size:`md`,indicatorPosition:`start`}});export{t as menuVariants};
1
+ import{tv as e}from"tailwind-variants";const t=e({slots:{positioner:``,popup:[`z-50 min-w-max rounded-md border bg-popover text-popover-foreground shadow-md will-change-transform focus-visible:outline-none`,`data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95`,`data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`],arrow:`w-1em h-0.5em fill-popover stroke-border`,subPositioner:``,subPopup:[`z-50 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg will-change-transform focus-visible:outline-none`,`data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95`,`data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`],group:``,groupLabel:`flex items-center font-medium text-muted-foreground`,checkboxGroup:``,radioGroup:``,item:[`relative flex items-center rounded-sm outline-none transition-colors-200 cursor-pointer select-none`,`focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50`,`data-[active=true]:bg-primary/10 data-[active=true]:text-primary`,`data-[active=false]:hover:bg-accent data-[active=false]:focus:bg-accent`],itemIcon:`shrink-0 text-muted-foreground`,itemLink:[`relative flex items-center rounded-sm outline-none transition-colors-200 cursor-pointer select-none decoration-none`,`focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50`],itemLinkIcon:`shrink-0 self-start text-muted-foreground`,subTrigger:`group/trigger flex items-center rounded-sm outline-none cursor-pointer select-none focus:bg-accent data-[state=open]:bg-accent data-[child-active]:text-primary`,subTriggerIcon:`ml-auto text-muted-foreground group-data-[child-active]/trigger:text-primary`,shortcut:`ml-auto tracking-widest opacity-60`,separator:`h-px bg-border`,checkboxItem:[`relative flex items-center rounded-sm outline-none transition-colors-200 cursor-pointer select-none`,`focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50`],itemIndicator:`absolute flex items-center justify-center text-primary`,radioItem:[`relative flex items-center rounded-sm outline-none transition-colors-200 cursor-pointer select-none`,`focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50`]},variants:{size:{xs:{popup:`text-2xs p-0.75`,groupLabel:`gap-1 p-1 text-3xs`,item:`gap-1 px-1 py-1`,itemLink:`gap-1 px-1 py-1`,itemLinkIcon:`size-2 -ml-1`,separator:`-mx-0.75 my-0.75`,subTrigger:`gap-1 px-1 py-1`,subPopup:`text-2xs p-0.75`,checkboxItem:`gap-1 py-1`,radioItem:`gap-1 py-1`},sm:{popup:`text-xs p-0.875`,groupLabel:`gap-1.25 p-1.25 text-2xs`,item:`gap-1.5 px-1.5 py-1`,itemLink:`gap-1.5 px-1.5 py-1`,itemLinkIcon:`size-2.5 -ml-1.5`,separator:`-mx-0.875 my-0.875`,subTrigger:`gap-1.5 px-1.5 py-1`,subPopup:`text-xs p-0.875`,checkboxItem:`gap-1.5 py-1`,radioItem:`gap-1.5 py-1`},md:{popup:`text-sm p-1`,groupLabel:`gap-1.75 p-1.75 text-xs`,item:`gap-2 px-2 py-1.5`,itemLink:`gap-2 px-2 py-1.5`,itemLinkIcon:`size-3 -ml-2`,separator:`-mx-1 my-1`,subTrigger:`gap-2 px-2 py-1.5`,subPopup:`text-sm p-1`,checkboxItem:`gap-2 py-1.5`,radioItem:`gap-2 py-1.5`},lg:{popup:`text-base p-1.25`,groupLabel:`gap-2 p-2 text-sm`,item:`gap-2.5 px-2.5 py-1.5`,itemLink:`gap-2.5 px-2.5 py-1.5`,itemLinkIcon:`size-3.5 -ml-2.5`,separator:`-mx-1.25 my-1.25`,subTrigger:`gap-2.5 px-2.5 py-1.5`,subPopup:`text-base p-1.25`,checkboxItem:`gap-2.5 py-1.5`,radioItem:`gap-2.5 py-1.5`},xl:{popup:`text-lg p-1.5`,groupLabel:`gap-2.5 p-2.5 text-base`,item:`gap-3 px-3 py-2`,itemLink:`gap-3 px-3 py-2`,itemLinkIcon:`size-4 -ml-3`,separator:`-mx-1.5 my-1.5`,subTrigger:`gap-3 px-3 py-2`,subPopup:`text-lg p-1.5`,checkboxItem:`gap-3 py-2`,radioItem:`gap-3 py-2`},"2xl":{popup:`text-xl p-1.75`,groupLabel:`gap-3 p-3 text-lg`,item:`gap-3.5 px-3.5 py-2.5`,itemLink:`gap-3.5 px-3.5 py-2.5`,itemLinkIcon:`size-4.5 -ml-3.5`,separator:`-mx-1.75 my-1.75`,subTrigger:`gap-3.5 px-3.5 py-2.5`,subPopup:`text-xl p-1.75`,checkboxItem:`gap-3.5 py-2.5`,radioItem:`gap-3.5 py-2.5`}},indicatorPosition:{start:{itemIndicator:`left-2`,checkboxItem:`pl-8 pr-2`,radioItem:`pl-8 pr-2`},end:{itemIndicator:`right-2`,checkboxItem:`pl-2 pr-8`,radioItem:`pl-2 pr-8`}}},compoundVariants:[{indicatorPosition:`start`,size:`xs`,class:{itemIndicator:`left-1`,checkboxItem:`pl-6 pr-1`,radioItem:`pl-6 pr-1`}},{indicatorPosition:`end`,size:`xs`,class:{itemIndicator:`right-1`,checkboxItem:`pl-1 pr-6`,radioItem:`pl-1 pr-6`}},{indicatorPosition:`start`,size:`sm`,class:{itemIndicator:`left-1.5`,checkboxItem:`pl-7 pr-1.5`,radioItem:`pl-7 pr-1.5`}},{indicatorPosition:`end`,size:`sm`,class:{itemIndicator:`right-1.5`,checkboxItem:`pl-1.5 pr-7`,radioItem:`pl-1.5 pr-7`}},{indicatorPosition:`start`,size:`lg`,class:{itemIndicator:`left-2.5`,checkboxItem:`pl-9 pr-2.5`,radioItem:`pl-9 pr-2.5`}},{indicatorPosition:`end`,size:`lg`,class:{itemIndicator:`right-2.5`,checkboxItem:`pl-2.5 pr-9`,radioItem:`pl-2.5 pr-9`}},{indicatorPosition:`start`,size:`xl`,class:{itemIndicator:`left-3`,checkboxItem:`pl-10 pr-3`,radioItem:`pl-10 pr-3`}},{indicatorPosition:`end`,size:`xl`,class:{itemIndicator:`right-3`,checkboxItem:`pl-3 pr-10`,radioItem:`pl-3 pr-10`}},{indicatorPosition:`start`,size:`2xl`,class:{itemIndicator:`left-3.5`,checkboxItem:`pl-12 pr-3.5`,radioItem:`pl-12 pr-3.5`}},{indicatorPosition:`end`,size:`2xl`,class:{itemIndicator:`right-3.5`,checkboxItem:`pl-3.5 pr-12`,radioItem:`pl-3.5 pr-12`}}],defaultVariants:{size:`md`,indicatorPosition:`start`}});export{t as menuVariants};
@@ -0,0 +1,2 @@
1
+ import { MenubarEmits, MenubarProps, MenubarSlots } from "./types.js";
2
+ import { _default } from "./menubar.vue.js";
@@ -0,0 +1 @@
1
+ import"./menubar.js";
@@ -0,0 +1 @@
1
+ import{mergeSlotVariants as e}from"../../theme/shared.js";import"../../theme/index.js";import{provideMenuUi as t}from"../menu/context.js";import{menubarVariants as n}from"./variants.js";import{computed as r,createBlock as i,createSlots as a,defineComponent as o,guardReactiveProps as s,mergeProps as c,normalizeProps as l,openBlock as u,renderList as d,renderSlot as f,toHandlers as p,unref as m,useSlots as h,withCtx as g}from"vue";import{useForwardListeners as _,useOmitProps as v}from"@soybeanjs/headless/composables";import{MenubarCompact as y,provideMenubarUi as b}from"@soybeanjs/headless";import{keysOf as x}from"@soybeanjs/utils";const S=o({name:`SMenubar`,__name:`menubar`,props:{class:{},size:{},ui:{},indicatorPosition:{},disabled:{type:Boolean},placement:{},showArrow:{type:Boolean},triggerProps:{},portalProps:{},contentProps:{},popupProps:{},arrowProps:{},modelValue:{},defaultValue:{},dir:{},loop:{type:Boolean},asChild:{type:Boolean},as:{},items:{},activeValue:{},itemProps:{},linkProps:{},groupProps:{},groupLabelProps:{},subProps:{},subTriggerProps:{},subContentProps:{},separatorProps:{},shortcutProps:{}},emits:[`update:modelValue`,`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`,`entryFocus`,`update:open`,`select`],setup(o,{emit:S}){let C=o,w=S,T=h(),E=v(C,[`class`,`size`,`ui`,`indicatorPosition`]),D=_(w),O=r(()=>x(T));return b(r(()=>e(n({size:C.size}),C.ui,{root:C.class}))),t(()=>C),(e,t)=>(u(),i(m(y),c(m(E),p(m(D))),a({_:2},[d(O.value,t=>({name:t,fn:g(n=>[f(e.$slots,t,l(s(n)))])}))]),1040))}});export{S as default};
@@ -1,13 +1,12 @@
1
- import { MenuOptionData, MenuOptionProps } from "./types.js";
1
+ import { MenubarProps, MenubarSlots } from "./types.js";
2
2
  import * as _$vue from "vue";
3
3
  import * as _$_soybeanjs_headless0 from "@soybeanjs/headless";
4
4
  import { DefinedValue } from "@soybeanjs/headless";
5
5
 
6
- //#region src/components/menu/menu-option.vue.d.ts
6
+ //#region src/components/menubar/menubar.vue.d.ts
7
7
  declare const __VLS_export: <T extends DefinedValue = DefinedValue>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
8
- props: _$vue.PublicProps & __VLS_PrettifyLocal<MenuOptionProps<T> & {
9
- onSelect?: ((item: MenuOptionData<T>, event: Event) => any) | undefined;
10
- onEntryFocus?: ((event: Event) => any) | undefined;
8
+ props: _$vue.PublicProps & __VLS_PrettifyLocal<MenubarProps<T> & {
9
+ onSelect?: ((item: _$_soybeanjs_headless0.MenuOptionData<T>, event: Event) => any) | undefined;
11
10
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
12
11
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
13
12
  onPointerDownOutside?: ((event: _$_soybeanjs_headless0.PointerDownOutsideEvent) => any) | undefined;
@@ -15,30 +14,15 @@ declare const __VLS_export: <T extends DefinedValue = DefinedValue>(__VLS_props:
15
14
  onInteractOutside?: ((event: _$_soybeanjs_headless0.PointerDownOutsideEvent | _$_soybeanjs_headless0.FocusOutsideEvent) => any) | undefined;
16
15
  onOpenAutoFocus?: ((event: Event) => any) | undefined;
17
16
  onCloseAutoFocus?: ((event: Event) => any) | undefined;
17
+ "onUpdate:modelValue"?: ((value: T) => any) | undefined;
18
+ onEntryFocus?: ((event: Event) => any) | undefined;
18
19
  }> & (typeof globalThis extends {
19
20
  __VLS_PROPS_FALLBACK: infer P;
20
21
  } ? P : {});
21
22
  expose: (exposed: {}) => void;
22
23
  attrs: any;
23
- slots: {
24
- item: (props: {
25
- item: MenuOptionData<T>;
26
- isTrigger?: boolean;
27
- }) => any;
28
- 'item-leading': (props: {
29
- item: MenuOptionData<T>;
30
- }) => any;
31
- 'item-trailing': (props: {
32
- item: MenuOptionData<T>;
33
- }) => any;
34
- 'item-trigger-icon': (props: {
35
- item: MenuOptionData<T>;
36
- }) => any;
37
- 'item-link-icon': (props: {
38
- item: MenuOptionData<T>;
39
- }) => any;
40
- };
41
- emit: ((evt: "select", item: MenuOptionData<T>, event: Event) => void) & ((evt: "entryFocus", event: Event) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "escapeKeyDown", event: KeyboardEvent) => void) & ((evt: "pointerDownOutside", event: _$_soybeanjs_headless0.PointerDownOutsideEvent) => void) & ((evt: "focusOutside", event: _$_soybeanjs_headless0.FocusOutsideEvent) => void) & ((evt: "interactOutside", event: _$_soybeanjs_headless0.PointerDownOutsideEvent | _$_soybeanjs_headless0.FocusOutsideEvent) => void) & ((evt: "openAutoFocus", event: Event) => void) & ((evt: "closeAutoFocus", event: Event) => void);
24
+ slots: MenubarSlots<T>;
25
+ emit: ((evt: "select", item: _$_soybeanjs_headless0.MenuOptionData<T>, event: Event) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "escapeKeyDown", event: KeyboardEvent) => void) & ((evt: "pointerDownOutside", event: _$_soybeanjs_headless0.PointerDownOutsideEvent) => void) & ((evt: "focusOutside", event: _$_soybeanjs_headless0.FocusOutsideEvent) => void) & ((evt: "interactOutside", event: _$_soybeanjs_headless0.PointerDownOutsideEvent | _$_soybeanjs_headless0.FocusOutsideEvent) => void) & ((evt: "openAutoFocus", event: Event) => void) & ((evt: "closeAutoFocus", event: Event) => void) & ((evt: "update:modelValue", value: T) => void) & ((evt: "entryFocus", event: Event) => void);
42
26
  }>) => _$vue.VNode & {
43
27
  __ctx?: Awaited<typeof __VLS_setup>;
44
28
  };
@@ -0,0 +1,17 @@
1
+ import { ThemeSize } from "../../theme/types.js";
2
+ import { AlignSide, ClassValue, DefinedValue, MenubarCompactEmits, MenubarCompactProps, MenubarCompactSlots, MenubarUi } from "@soybeanjs/headless";
3
+
4
+ //#region src/components/menubar/types.d.ts
5
+ interface MenubarProps<T extends DefinedValue = DefinedValue> extends MenubarCompactProps<T> {
6
+ /**
7
+ * class of menubar root
8
+ */
9
+ class?: ClassValue;
10
+ size?: ThemeSize;
11
+ ui?: Partial<MenubarUi>;
12
+ indicatorPosition?: AlignSide;
13
+ }
14
+ type MenubarEmits<T extends DefinedValue = DefinedValue> = MenubarCompactEmits<T>;
15
+ type MenubarSlots<T extends DefinedValue = DefinedValue> = MenubarCompactSlots<T>;
16
+ //#endregion
17
+ export { MenubarEmits, MenubarProps, MenubarSlots };
@@ -0,0 +1 @@
1
+ import{tv as e}from"tailwind-variants";const t=e({slots:{root:`inline-flex items-center w-fit rounded-md border bg-background shadow-sm`,trigger:[`flex cursor-pointer select-none items-center rounded-sm font-medium outline-none`,`focus:(bg-accent text-accent-foreground)`,`data-[state=open]:(bg-accent text-accent-foreground)`]},variants:{size:{xs:{root:`gap-1 p-0.5 text-2xs`,trigger:`gap-1 px-1 py-1`},sm:{root:`gap-1.25 p-0.625 text-xs`,trigger:`gap-1.5 px-1.5 py-1`},md:{root:`gap-1.5 p-0.75`,trigger:`gap-2 px-2 py-1.25`},lg:{root:`gap-1.75 p-0.875`,trigger:`gap-2.5 px-2.5 py-1.5`},xl:{root:`gap-2 p-1`,trigger:`gap-3 px-3 py-2`},"2xl":{root:`gap-2.5 p-1.25`,trigger:`gap-3.5 px-3.5 py-2.5`}}},defaultVariants:{size:`md`}});export{t as menubarVariants};
@@ -29,20 +29,20 @@ declare const __VLS_base: _$vue.DefineComponent<NavigationMenuProps, {}, {}, {},
29
29
  select: (payload: CustomEvent<{
30
30
  originalEvent: Event;
31
31
  }>) => any;
32
- "update:modelValue": (value: string) => any;
33
32
  escapeKeyDown: (event: KeyboardEvent) => any;
34
33
  pointerDownOutside: (event: _$_soybeanjs_headless0.PointerDownOutsideEvent) => any;
35
34
  focusOutside: (event: _$_soybeanjs_headless0.FocusOutsideEvent) => any;
36
35
  interactOutside: (event: _$_soybeanjs_headless0.PointerDownOutsideEvent | _$_soybeanjs_headless0.FocusOutsideEvent) => any;
36
+ "update:modelValue": (value: string) => any;
37
37
  }, string, _$vue.PublicProps, Readonly<NavigationMenuProps> & Readonly<{
38
38
  onSelect?: ((payload: CustomEvent<{
39
39
  originalEvent: Event;
40
40
  }>) => any) | undefined;
41
- "onUpdate:modelValue"?: ((value: string) => any) | undefined;
42
41
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
43
42
  onPointerDownOutside?: ((event: _$_soybeanjs_headless0.PointerDownOutsideEvent) => any) | undefined;
44
43
  onFocusOutside?: ((event: _$_soybeanjs_headless0.FocusOutsideEvent) => any) | undefined;
45
44
  onInteractOutside?: ((event: _$_soybeanjs_headless0.PointerDownOutsideEvent | _$_soybeanjs_headless0.FocusOutsideEvent) => any) | undefined;
45
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
46
46
  }>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
47
47
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
48
48
  declare const _default: typeof __VLS_export;
@@ -5,9 +5,9 @@ import * as _$vue from "vue";
5
5
  declare const __VLS_export: <T extends PageTabsOptionData>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
6
6
  props: _$vue.PublicProps & __VLS_PrettifyLocal<PageTabsProps<T> & {
7
7
  onContextmenu?: ((tab: T) => any) | undefined;
8
- "onUpdate:modelValue"?: ((value: string) => any) | undefined;
9
- onClick?: ((tab: T) => any) | undefined;
10
8
  onClose?: ((tab: T) => any) | undefined;
9
+ onClick?: ((tab: T) => any) | undefined;
10
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
11
11
  "onUpdate:items"?: ((items: T[]) => any) | undefined;
12
12
  onPin?: ((tab: T) => any) | undefined;
13
13
  onSelectContextMenu?: ((menu: PageTabsContextMenuOptionData, tab: T) => any) | undefined;
@@ -1,6 +1,6 @@
1
1
  import { ThemeSize } from "../../theme/types.js";
2
2
  import { IconValue } from "../icon/types.js";
3
- import { MenuOptionData } from "../menu/types.js";
3
+ import { MenuOptionData } from "../menu/index.js";
4
4
  import { PageTabsVariant } from "./variants.js";
5
5
  import { ClassValue, MaybePromise, PageTabsItemProps, PageTabsRootEmits, PageTabsRootProps, PageTabsUiSlot } from "@soybeanjs/headless";
6
6
 
@@ -1 +1 @@
1
- import e from"../button/button.js";import{usePopconfirmContext as t}from"./context.js";import{computed as n,createBlock as r,createTextVNode as i,createVNode as a,defineComponent as o,mergeProps as s,openBlock as c,renderSlot as l,toDisplayString as u,unref as d,withCtx as f}from"vue";import{useOmitProps as p}from"@soybeanjs/headless/composables";import{PopoverClose as m}from"@soybeanjs/headless";const h=o({name:`SPopconfirmCancel`,__name:`popconfirm-cancel`,props:{text:{},beforeClose:{},class:{},color:{},size:{},variant:{default:`pure`},shape:{},shadow:{},fitContent:{type:Boolean},type:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{}},emits:[`close`],setup(o,{emit:h}){let g=o,_=h,v=p(g,[`text`,`beforeClose`]),{size:y,cancelText:b,cancelProps:x,beforeCancel:S,onClose:C}=t(`PopconfirmCancel`),w=n(()=>({...x.value,...v.value})),T=n(()=>g.text??b.value??`Cancel`),E={xs:`xs`,sm:`xs`,md:`sm`,lg:`md`,xl:`lg`,"2xl":`xl`},D=n(()=>g.size??E[y.value??`md`]),O=()=>{_(`close`),C()};return(t,n)=>(c(),r(d(m),{"as-child":``,"before-close":o.beforeClose??d(S),onClose:O},{default:f(()=>[a(e,s(w.value,{size:D.value}),{default:f(()=>[l(t.$slots,`default`,{},()=>[i(u(T.value),1)])]),_:3},16,[`size`])]),_:3},8,[`before-close`]))}});export{h as default};
1
+ import{miniSizeMap as e}from"../../theme/config.js";import"../../theme/index.js";import t from"../button/button.js";import{usePopconfirmContext as n}from"./context.js";import{computed as r,createBlock as i,createTextVNode as a,createVNode as o,defineComponent as s,mergeProps as c,openBlock as l,renderSlot as u,toDisplayString as d,unref as f,withCtx as p}from"vue";import{useOmitProps as m}from"@soybeanjs/headless/composables";import{PopoverClose as h}from"@soybeanjs/headless";const g=s({name:`SPopconfirmCancel`,__name:`popconfirm-cancel`,props:{text:{},beforeClose:{},class:{},color:{},size:{},variant:{default:`pure`},shape:{},shadow:{},fitContent:{type:Boolean},type:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{}},emits:[`close`],setup(s,{emit:g}){let _=s,v=g,y=m(_,[`text`,`beforeClose`]),{size:b,cancelText:x,cancelProps:S,beforeCancel:C,onClose:w}=n(`PopconfirmCancel`),T=r(()=>({...S.value,...y.value})),E=r(()=>_.text??x.value??`Cancel`),D=r(()=>_.size??e[b.value??`md`]),O=()=>{v(`close`),w()};return(e,n)=>(l(),i(f(h),{"as-child":``,"before-close":s.beforeClose??f(C),onClose:O},{default:p(()=>[o(t,c(T.value,{size:D.value}),{default:p(()=>[u(e.$slots,`default`,{},()=>[a(d(E.value),1)])]),_:3},16,[`size`])]),_:3},8,[`before-close`]))}});export{g as default};
@@ -1 +1 @@
1
- import e from"../button/button.js";import{usePopconfirmContext as t}from"./context.js";import{computed as n,createBlock as r,createTextVNode as i,createVNode as a,defineComponent as o,mergeProps as s,openBlock as c,renderSlot as l,toDisplayString as u,unref as d,withCtx as f}from"vue";import{useOmitProps as p}from"@soybeanjs/headless/composables";import{PopoverClose as m}from"@soybeanjs/headless";const h=o({name:`SPopconfirmConfirm`,__name:`popconfirm-confirm`,props:{text:{},beforeClose:{type:Function},class:{},color:{},size:{},variant:{},shape:{},shadow:{},fitContent:{type:Boolean},type:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{}},emits:[`close`],setup(o,{emit:h}){let g=o,_=h,v=p(g,[`text`,`beforeClose`]),{size:y,confirmText:b,confirmProps:x,beforeConfirm:S,onClose:C}=t(`PopconfirmConfirm`),w=n(()=>({...x.value,...v.value})),T=n(()=>g.text??b.value??`Confirm`),E={xs:`xs`,sm:`xs`,md:`sm`,lg:`md`,xl:`lg`,"2xl":`xl`},D=n(()=>g.size??E[y.value??`md`]),O=()=>{_(`close`),C()};return(t,n)=>(c(),r(d(m),{"as-child":``,"before-close":o.beforeClose??d(S),onClose:O},{default:f(()=>[a(e,s(w.value,{size:D.value}),{default:f(()=>[l(t.$slots,`default`,{},()=>[i(u(T.value),1)])]),_:3},16,[`size`])]),_:3},8,[`before-close`]))}});export{h as default};
1
+ import{miniSizeMap as e}from"../../theme/config.js";import"../../theme/index.js";import t from"../button/button.js";import{usePopconfirmContext as n}from"./context.js";import{computed as r,createBlock as i,createTextVNode as a,createVNode as o,defineComponent as s,mergeProps as c,openBlock as l,renderSlot as u,toDisplayString as d,unref as f,withCtx as p}from"vue";import{useOmitProps as m}from"@soybeanjs/headless/composables";import{PopoverClose as h}from"@soybeanjs/headless";const g=s({name:`SPopconfirmConfirm`,__name:`popconfirm-confirm`,props:{text:{},beforeClose:{type:Function},class:{},color:{},size:{},variant:{},shape:{},shadow:{},fitContent:{type:Boolean},type:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{}},emits:[`close`],setup(s,{emit:g}){let _=s,v=g,y=m(_,[`text`,`beforeClose`]),{size:b,confirmText:x,confirmProps:S,beforeConfirm:C,onClose:w}=n(`PopconfirmConfirm`),T=r(()=>({...S.value,...y.value})),E=r(()=>_.text??x.value??`Confirm`),D=r(()=>_.size??e[b.value??`md`]),O=()=>{v(`close`),w()};return(e,n)=>(l(),i(f(h),{"as-child":``,"before-close":s.beforeClose??f(C),onClose:O},{default:p(()=>[o(t,c(T.value,{size:D.value}),{default:p(()=>[u(e.$slots,`default`,{},()=>[a(d(E.value),1)])]),_:3},16,[`size`])]),_:3},8,[`before-close`]))}});export{g as default};
@@ -47,9 +47,9 @@ declare const __VLS_base: _$vue.DefineComponent<PopconfirmProps, {}, {}, {}, {},
47
47
  open: boolean;
48
48
  defaultOpen: boolean;
49
49
  modal: boolean;
50
+ showArrow: boolean;
50
51
  showIcon: boolean;
51
52
  showCancel: "onlyWarning" | boolean;
52
- showArrow: boolean;
53
53
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
54
54
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
55
55
  declare const _default: typeof __VLS_export;
@@ -1 +1 @@
1
- import{mergeSlotVariants as e}from"../../theme/shared.js";import"../../theme/index.js";import{popoverVariants as t}from"./variants.js";import{computed as n,createBlock as r,createCommentVNode as i,createVNode as a,defineComponent as o,guardReactiveProps as s,mergeProps as c,normalizeProps as l,openBlock as u,renderSlot as d,toHandlers as f,unref as p,withCtx as m}from"vue";import{useForwardListeners as h,usePickProps as g}from"@soybeanjs/headless/composables";import{PopoverArrow as _,PopoverClose as v,PopoverPopup as y,PopoverPortal as b,PopoverPositioner as x,PopoverRoot as S,PopoverTrigger as C,providePopoverUi as w}from"@soybeanjs/headless";const T=o({name:`SPopover`,__name:`popover`,props:{class:{},size:{},ui:{},placement:{},showArrow:{type:Boolean,default:!0},positionerProps:{},popupProps:{},triggerProps:{},closeProps:{},portalProps:{},arrowProps:{},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:!1},modal:{type:Boolean}},emits:[`update:open`,`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(o,{emit:T}){let E=o,D=T,O=g(E,[`defaultOpen`,`open`,`modal`]),k=h(D),A=n(()=>e(t({size:E.size}),E.ui,{popup:E.class})),j=n(()=>({placement:E.placement,...E.positionerProps}));return w(A),(e,t)=>(u(),r(p(S),c(p(O),{"onUpdate:open":t[0]||=e=>D(`update:open`,e)}),{default:m(()=>[a(p(C),c(o.triggerProps,{"as-child":``}),{default:m(()=>[d(e.$slots,`trigger`)]),_:3},16),a(p(b),l(s(o.portalProps)),{default:m(()=>[a(p(x),c(j.value,f(p(k))),{default:m(()=>[a(p(y),l(s(o.popupProps)),{default:m(()=>[d(e.$slots,`default`),o.showArrow?(u(),r(p(_),l(c({key:0},o.arrowProps)),null,16)):i(`v-if`,!0)]),_:3},16),e.$slots.close?(u(),r(p(v),c({key:0},o.closeProps,{"as-child":``}),{default:m(()=>[d(e.$slots,`close`)]),_:3},16)):i(`v-if`,!0)]),_:3},16)]),_:3},16)]),_:3},16))}});export{T as default};
1
+ import{mergeSlotVariants as e}from"../../theme/shared.js";import"../../theme/index.js";import{popoverVariants as t}from"./variants.js";import{computed as n,createBlock as r,createCommentVNode as i,createVNode as a,defineComponent as o,guardReactiveProps as s,mergeProps as c,normalizeProps as l,openBlock as u,renderSlot as d,toHandlers as f,unref as p,withCtx as m}from"vue";import{useForwardListeners as h,usePickProps as g}from"@soybeanjs/headless/composables";import{PopoverArrow as _,PopoverClose as v,PopoverPopup as y,PopoverPortal as b,PopoverPositioner as x,PopoverRoot as S,PopoverTrigger as C,providePopoverUi as w}from"@soybeanjs/headless";const T=o({name:`SPopover`,__name:`popover`,props:{class:{},size:{},ui:{},placement:{},showArrow:{type:Boolean,default:!0},positionerProps:{},popupProps:{},triggerProps:{},closeProps:{},portalProps:{},arrowProps:{},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:!1},modal:{type:Boolean}},emits:[`update:open`,`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(o,{emit:T}){let E=o,D=T,O=g(E,[`defaultOpen`,`open`,`modal`]),k=h(D),A=n(()=>e(t({size:E.size}),E.ui,{popup:E.class})),j=n(()=>({...E.positionerProps,placement:E.placement??E.positionerProps?.placement}));return w(A),(e,t)=>(u(),r(p(S),c(p(O),{"onUpdate:open":t[0]||=e=>D(`update:open`,e)}),{default:m(()=>[a(p(C),c(o.triggerProps,{"as-child":``}),{default:m(()=>[d(e.$slots,`trigger`)]),_:3},16),a(p(b),l(s(o.portalProps)),{default:m(()=>[a(p(x),c(j.value,f(p(k))),{default:m(()=>[a(p(y),l(s(o.popupProps)),{default:m(()=>[d(e.$slots,`default`),o.showArrow?(u(),r(p(_),l(c({key:0},o.arrowProps)),null,16)):i(`v-if`,!0)]),_:3},16),e.$slots.close?(u(),r(p(v),c({key:0},o.closeProps,{"as-child":``}),{default:m(()=>[d(e.$slots,`close`)]),_:3},16)):i(`v-if`,!0)]),_:3},16)]),_:3},16)]),_:3},16))}});export{T as default};
@@ -0,0 +1,5 @@
1
+ import { UseLoadingBarReturn } from "./types.js";
2
+ //#region src/components/progress/context.d.ts
3
+ declare const useLoadingBar: () => UseLoadingBarReturn;
4
+ //#endregion
5
+ export { useLoadingBar };
@@ -0,0 +1 @@
1
+ import{shallowRef as e}from"vue";import{useContext as t}from"@soybeanjs/headless/composables";function n(e){return Math.min(100,Math.max(0,e))}function r(e){return e<20?12:e<50?8:e<80?4:2}const[i,a]=t(`UiLoadingBarProvider`,t=>{let i=e(!1),a=e(0),o=e(t.color.value),s,c;function l(){s&&=(clearInterval(s),void 0)}function u(){c&&=(clearTimeout(c),void 0)}function d(){l(),u()}function f(){d(),i.value=!1,a.value=0,o.value=t.color.value}function p(){u(),c=setTimeout(()=>{c=void 0,i.value=!1,a.value=0,o.value=t.color.value},200)}function m(){l(),s=setInterval(()=>{if(a.value>=92){l();return}a.value=n(a.value+r(a.value))},200)}let h=e=>{u(),l(),i.value=!0,o.value=t.color.value,a.value=n(e),a.value>=100&&p()},g=()=>{u(),i.value=!0,o.value=t.color.value,a.value=Math.max(a.value,8),m()},_=()=>{l(),u(),i.value=!0,o.value=t.color.value,a.value=100,p()},v=()=>{l(),u(),i.value=!0,o.value=t.errorColor.value,a.value=100,p()},y=()=>{f()},b={start:g,finish:_,error:v,set:h,clear:y};return typeof window<`u`&&(window.__SoybeanUI_useLoadingBar=b),{useLoadingBar:b,clear:y,visible:i,modelValue:a,color:o}}),o=()=>{if(typeof window<`u`&&window.__SoybeanUI_useLoadingBar)return window.__SoybeanUI_useLoadingBar;let{useLoadingBar:e}=a(`UiLoadingBarConsumer`);return e};export{i as provideLoadingBarProviderContext,o as useLoadingBar};
@@ -0,0 +1,8 @@
1
+ import { LoadingBarProviderContext, LoadingBarProviderContextParams, LoadingBarProviderProps, ProgressCircleEmits, ProgressCircleProps, ProgressEmits, ProgressProps, UseLoadingBarReturn } from "./types.js";
2
+ import { _default } from "./progress.vue.js";
3
+ import { _default as _default$1 } from "./progress-circle.vue.js";
4
+ import { _default as _default$2 } from "./loading-bar.vue.js";
5
+ import { useLoadingBar } from "./context.js";
6
+ import { getProgressIndicatorStyle } from "./shared.js";
7
+ import { ProgressIndicatorProps, ProgressRootEmits, ProgressRootProps, ProgressState, ProgressUi, ProgressUiSlot } from "@soybeanjs/headless/progress";
8
+ export { type ProgressIndicatorProps, type ProgressRootEmits, type ProgressRootProps, type ProgressState, type ProgressUi, type ProgressUiSlot };
@@ -0,0 +1 @@
1
+ import"./shared.js";import"./progress.js";import"./context.js";import"./loading-bar.js";import"./progress-circle.js";