@hanzo/ui 8.0.25 → 8.0.27

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 (582) hide show
  1. package/README.md +1 -1
  2. package/dist/backends/gui/aspect-ratio.d.ts +14 -0
  3. package/dist/backends/gui/avatar.d.ts +16 -0
  4. package/dist/backends/gui/badge.d.ts +19 -0
  5. package/dist/backends/gui/button.d.ts +50 -0
  6. package/dist/backends/gui/card.d.ts +44 -0
  7. package/dist/backends/gui/checkbox.d.ts +9 -0
  8. package/dist/backends/gui/collapsible.d.ts +10 -0
  9. package/dist/backends/gui/command.d.ts +86 -0
  10. package/dist/backends/gui/command.logic.d.ts +20 -0
  11. package/dist/backends/gui/dialog.d.ts +27 -0
  12. package/dist/backends/gui/dropdown-menu.d.ts +98 -0
  13. package/dist/backends/gui/index.d.ts +24 -2
  14. package/dist/backends/gui/ink.d.ts +7 -0
  15. package/dist/backends/gui/input.d.ts +19 -0
  16. package/dist/backends/gui/label.d.ts +6 -0
  17. package/dist/backends/gui/popover.d.ts +22 -0
  18. package/dist/backends/gui/progress.d.ts +6 -0
  19. package/dist/backends/gui/resizable.d.ts +52 -0
  20. package/dist/backends/gui/resizable.logic.d.ts +23 -0
  21. package/dist/backends/gui/scroll-area.d.ts +45 -0
  22. package/dist/backends/gui/select.d.ts +30 -0
  23. package/dist/backends/gui/separator.d.ts +10 -0
  24. package/dist/backends/gui/slider.d.ts +6 -0
  25. package/dist/backends/gui/slot.d.ts +6 -0
  26. package/dist/backends/gui/switch.d.ts +6 -0
  27. package/dist/backends/gui/tabs.d.ts +12 -0
  28. package/dist/backends/gui/textarea.d.ts +11 -0
  29. package/dist/backends/gui/toaster.d.ts +28 -0
  30. package/dist/backends/gui/tooltip.d.ts +12 -0
  31. package/dist/chunk-2U3MNE4I.js +4 -0
  32. package/dist/chunk-2U3MNE4I.js.map +1 -0
  33. package/dist/chunk-6DDY6XZI.js +53 -0
  34. package/dist/chunk-6DDY6XZI.js.map +1 -0
  35. package/dist/chunk-6KZWRBK2.cjs +1498 -0
  36. package/dist/chunk-6KZWRBK2.cjs.map +1 -0
  37. package/dist/chunk-DC52DQ27.cjs +303 -0
  38. package/dist/chunk-DC52DQ27.cjs.map +1 -0
  39. package/dist/chunk-NQUA5YRQ.cjs +55 -0
  40. package/dist/chunk-NQUA5YRQ.cjs.map +1 -0
  41. package/dist/chunk-PI3GSHLU.js +263 -0
  42. package/dist/chunk-PI3GSHLU.js.map +1 -0
  43. package/dist/chunk-QHC2ZNAF.js +11 -0
  44. package/dist/chunk-QHC2ZNAF.js.map +1 -0
  45. package/dist/chunk-QV52JQHR.cjs +77 -0
  46. package/dist/chunk-QV52JQHR.cjs.map +1 -0
  47. package/dist/chunk-RBS5AYO4.cjs +13 -0
  48. package/dist/chunk-RBS5AYO4.cjs.map +1 -0
  49. package/dist/chunk-RCMDRI6V.js +1401 -0
  50. package/dist/chunk-RCMDRI6V.js.map +1 -0
  51. package/dist/components.d.ts +1 -1
  52. package/dist/core/cn.d.ts +3 -5
  53. package/dist/core/index.cjs +92 -0
  54. package/dist/core/index.cjs.map +1 -0
  55. package/dist/core/index.js +14 -0
  56. package/dist/core/index.js.map +1 -0
  57. package/dist/core/tokens.cjs +77 -0
  58. package/dist/core/tokens.cjs.map +1 -0
  59. package/dist/core/tokens.js +4 -0
  60. package/dist/core/tokens.js.map +1 -0
  61. package/dist/framework/index.cjs +4 -3
  62. package/dist/framework/index.cjs.map +1 -1
  63. package/dist/framework/index.js +2 -1
  64. package/dist/framework/index.js.map +1 -1
  65. package/dist/index.cjs +365 -1136
  66. package/dist/index.cjs.map +1 -1
  67. package/dist/index.d.ts +1 -1
  68. package/dist/index.js +3 -1017
  69. package/dist/index.js.map +1 -1
  70. package/dist/models/catalog.d.ts +1 -1
  71. package/dist/models/index.cjs +225 -0
  72. package/dist/models/index.cjs.map +1 -0
  73. package/dist/models/index.js +218 -0
  74. package/dist/models/index.js.map +1 -0
  75. package/dist/primitives/AspectRatio.cjs +14 -0
  76. package/dist/primitives/AspectRatio.cjs.map +1 -0
  77. package/dist/primitives/AspectRatio.d.ts +1 -1
  78. package/dist/primitives/AspectRatio.js +5 -0
  79. package/dist/primitives/AspectRatio.js.map +1 -0
  80. package/dist/primitives/Avatar.cjs +14 -0
  81. package/dist/primitives/Avatar.cjs.map +1 -0
  82. package/dist/primitives/Avatar.d.ts +1 -1
  83. package/dist/primitives/Avatar.js +5 -0
  84. package/dist/primitives/Avatar.js.map +1 -0
  85. package/dist/primitives/AvatarFallback.cjs +14 -0
  86. package/dist/primitives/AvatarFallback.cjs.map +1 -0
  87. package/dist/primitives/AvatarFallback.d.ts +1 -1
  88. package/dist/primitives/AvatarFallback.js +5 -0
  89. package/dist/primitives/AvatarFallback.js.map +1 -0
  90. package/dist/primitives/AvatarImage.cjs +14 -0
  91. package/dist/primitives/AvatarImage.cjs.map +1 -0
  92. package/dist/primitives/AvatarImage.d.ts +1 -1
  93. package/dist/primitives/AvatarImage.js +5 -0
  94. package/dist/primitives/AvatarImage.js.map +1 -0
  95. package/dist/primitives/Badge.cjs +14 -0
  96. package/dist/primitives/Badge.cjs.map +1 -0
  97. package/dist/primitives/Badge.d.ts +1 -1
  98. package/dist/primitives/Badge.js +5 -0
  99. package/dist/primitives/Badge.js.map +1 -0
  100. package/dist/primitives/Button.cjs +14 -0
  101. package/dist/primitives/Button.cjs.map +1 -0
  102. package/dist/primitives/Button.d.ts +1 -1
  103. package/dist/primitives/Button.js +5 -0
  104. package/dist/primitives/Button.js.map +1 -0
  105. package/dist/primitives/Card.cjs +14 -0
  106. package/dist/primitives/Card.cjs.map +1 -0
  107. package/dist/primitives/Card.d.ts +1 -1
  108. package/dist/primitives/Card.js +5 -0
  109. package/dist/primitives/Card.js.map +1 -0
  110. package/dist/primitives/CardAction.cjs +14 -0
  111. package/dist/primitives/CardAction.cjs.map +1 -0
  112. package/dist/primitives/CardAction.d.ts +1 -1
  113. package/dist/primitives/CardAction.js +5 -0
  114. package/dist/primitives/CardAction.js.map +1 -0
  115. package/dist/primitives/CardContent.cjs +14 -0
  116. package/dist/primitives/CardContent.cjs.map +1 -0
  117. package/dist/primitives/CardContent.d.ts +1 -1
  118. package/dist/primitives/CardContent.js +5 -0
  119. package/dist/primitives/CardContent.js.map +1 -0
  120. package/dist/primitives/CardDescription.cjs +14 -0
  121. package/dist/primitives/CardDescription.cjs.map +1 -0
  122. package/dist/primitives/CardDescription.d.ts +1 -1
  123. package/dist/primitives/CardDescription.js +5 -0
  124. package/dist/primitives/CardDescription.js.map +1 -0
  125. package/dist/primitives/CardFooter.cjs +14 -0
  126. package/dist/primitives/CardFooter.cjs.map +1 -0
  127. package/dist/primitives/CardFooter.d.ts +1 -1
  128. package/dist/primitives/CardFooter.js +5 -0
  129. package/dist/primitives/CardFooter.js.map +1 -0
  130. package/dist/primitives/CardHeader.cjs +14 -0
  131. package/dist/primitives/CardHeader.cjs.map +1 -0
  132. package/dist/primitives/CardHeader.d.ts +1 -1
  133. package/dist/primitives/CardHeader.js +5 -0
  134. package/dist/primitives/CardHeader.js.map +1 -0
  135. package/dist/primitives/CardTitle.cjs +14 -0
  136. package/dist/primitives/CardTitle.cjs.map +1 -0
  137. package/dist/primitives/CardTitle.d.ts +1 -1
  138. package/dist/primitives/CardTitle.js +5 -0
  139. package/dist/primitives/CardTitle.js.map +1 -0
  140. package/dist/primitives/Checkbox.cjs +14 -0
  141. package/dist/primitives/Checkbox.cjs.map +1 -0
  142. package/dist/primitives/Checkbox.d.ts +1 -1
  143. package/dist/primitives/Checkbox.js +5 -0
  144. package/dist/primitives/Checkbox.js.map +1 -0
  145. package/dist/primitives/Collapsible.cjs +14 -0
  146. package/dist/primitives/Collapsible.cjs.map +1 -0
  147. package/dist/primitives/Collapsible.d.ts +1 -1
  148. package/dist/primitives/Collapsible.js +5 -0
  149. package/dist/primitives/Collapsible.js.map +1 -0
  150. package/dist/primitives/CollapsibleContent.cjs +14 -0
  151. package/dist/primitives/CollapsibleContent.cjs.map +1 -0
  152. package/dist/primitives/CollapsibleContent.d.ts +1 -1
  153. package/dist/primitives/CollapsibleContent.js +5 -0
  154. package/dist/primitives/CollapsibleContent.js.map +1 -0
  155. package/dist/primitives/CollapsibleTrigger.cjs +14 -0
  156. package/dist/primitives/CollapsibleTrigger.cjs.map +1 -0
  157. package/dist/primitives/CollapsibleTrigger.d.ts +1 -1
  158. package/dist/primitives/CollapsibleTrigger.js +5 -0
  159. package/dist/primitives/CollapsibleTrigger.js.map +1 -0
  160. package/dist/primitives/Command.cjs +14 -0
  161. package/dist/primitives/Command.cjs.map +1 -0
  162. package/dist/primitives/Command.d.ts +1 -1
  163. package/dist/primitives/Command.js +5 -0
  164. package/dist/primitives/Command.js.map +1 -0
  165. package/dist/primitives/CommandDialog.cjs +14 -0
  166. package/dist/primitives/CommandDialog.cjs.map +1 -0
  167. package/dist/primitives/CommandDialog.d.ts +1 -1
  168. package/dist/primitives/CommandDialog.js +5 -0
  169. package/dist/primitives/CommandDialog.js.map +1 -0
  170. package/dist/primitives/CommandEmpty.cjs +14 -0
  171. package/dist/primitives/CommandEmpty.cjs.map +1 -0
  172. package/dist/primitives/CommandEmpty.d.ts +1 -1
  173. package/dist/primitives/CommandEmpty.js +5 -0
  174. package/dist/primitives/CommandEmpty.js.map +1 -0
  175. package/dist/primitives/CommandGroup.cjs +14 -0
  176. package/dist/primitives/CommandGroup.cjs.map +1 -0
  177. package/dist/primitives/CommandGroup.d.ts +1 -1
  178. package/dist/primitives/CommandGroup.js +5 -0
  179. package/dist/primitives/CommandGroup.js.map +1 -0
  180. package/dist/primitives/CommandInput.cjs +14 -0
  181. package/dist/primitives/CommandInput.cjs.map +1 -0
  182. package/dist/primitives/CommandInput.d.ts +1 -1
  183. package/dist/primitives/CommandInput.js +5 -0
  184. package/dist/primitives/CommandInput.js.map +1 -0
  185. package/dist/primitives/CommandItem.cjs +14 -0
  186. package/dist/primitives/CommandItem.cjs.map +1 -0
  187. package/dist/primitives/CommandItem.d.ts +1 -1
  188. package/dist/primitives/CommandItem.js +5 -0
  189. package/dist/primitives/CommandItem.js.map +1 -0
  190. package/dist/primitives/CommandList.cjs +14 -0
  191. package/dist/primitives/CommandList.cjs.map +1 -0
  192. package/dist/primitives/CommandList.d.ts +1 -1
  193. package/dist/primitives/CommandList.js +5 -0
  194. package/dist/primitives/CommandList.js.map +1 -0
  195. package/dist/primitives/CommandSeparator.cjs +14 -0
  196. package/dist/primitives/CommandSeparator.cjs.map +1 -0
  197. package/dist/primitives/CommandSeparator.d.ts +1 -1
  198. package/dist/primitives/CommandSeparator.js +5 -0
  199. package/dist/primitives/CommandSeparator.js.map +1 -0
  200. package/dist/primitives/CommandShortcut.cjs +14 -0
  201. package/dist/primitives/CommandShortcut.cjs.map +1 -0
  202. package/dist/primitives/CommandShortcut.d.ts +1 -1
  203. package/dist/primitives/CommandShortcut.js +5 -0
  204. package/dist/primitives/CommandShortcut.js.map +1 -0
  205. package/dist/primitives/Dialog.cjs +14 -0
  206. package/dist/primitives/Dialog.cjs.map +1 -0
  207. package/dist/primitives/Dialog.d.ts +1 -1
  208. package/dist/primitives/Dialog.js +5 -0
  209. package/dist/primitives/Dialog.js.map +1 -0
  210. package/dist/primitives/DialogClose.cjs +14 -0
  211. package/dist/primitives/DialogClose.cjs.map +1 -0
  212. package/dist/primitives/DialogClose.d.ts +1 -1
  213. package/dist/primitives/DialogClose.js +5 -0
  214. package/dist/primitives/DialogClose.js.map +1 -0
  215. package/dist/primitives/DialogContent.cjs +14 -0
  216. package/dist/primitives/DialogContent.cjs.map +1 -0
  217. package/dist/primitives/DialogContent.d.ts +1 -1
  218. package/dist/primitives/DialogContent.js +5 -0
  219. package/dist/primitives/DialogContent.js.map +1 -0
  220. package/dist/primitives/DialogDescription.cjs +14 -0
  221. package/dist/primitives/DialogDescription.cjs.map +1 -0
  222. package/dist/primitives/DialogDescription.d.ts +1 -1
  223. package/dist/primitives/DialogDescription.js +5 -0
  224. package/dist/primitives/DialogDescription.js.map +1 -0
  225. package/dist/primitives/DialogFooter.cjs +14 -0
  226. package/dist/primitives/DialogFooter.cjs.map +1 -0
  227. package/dist/primitives/DialogFooter.d.ts +1 -1
  228. package/dist/primitives/DialogFooter.js +5 -0
  229. package/dist/primitives/DialogFooter.js.map +1 -0
  230. package/dist/primitives/DialogHeader.cjs +14 -0
  231. package/dist/primitives/DialogHeader.cjs.map +1 -0
  232. package/dist/primitives/DialogHeader.d.ts +1 -1
  233. package/dist/primitives/DialogHeader.js +5 -0
  234. package/dist/primitives/DialogHeader.js.map +1 -0
  235. package/dist/primitives/DialogOverlay.cjs +14 -0
  236. package/dist/primitives/DialogOverlay.cjs.map +1 -0
  237. package/dist/primitives/DialogOverlay.d.ts +1 -1
  238. package/dist/primitives/DialogOverlay.js +5 -0
  239. package/dist/primitives/DialogOverlay.js.map +1 -0
  240. package/dist/primitives/DialogPortal.cjs +14 -0
  241. package/dist/primitives/DialogPortal.cjs.map +1 -0
  242. package/dist/primitives/DialogPortal.d.ts +1 -1
  243. package/dist/primitives/DialogPortal.js +5 -0
  244. package/dist/primitives/DialogPortal.js.map +1 -0
  245. package/dist/primitives/DialogTitle.cjs +14 -0
  246. package/dist/primitives/DialogTitle.cjs.map +1 -0
  247. package/dist/primitives/DialogTitle.d.ts +1 -1
  248. package/dist/primitives/DialogTitle.js +5 -0
  249. package/dist/primitives/DialogTitle.js.map +1 -0
  250. package/dist/primitives/DialogTrigger.cjs +14 -0
  251. package/dist/primitives/DialogTrigger.cjs.map +1 -0
  252. package/dist/primitives/DialogTrigger.d.ts +1 -1
  253. package/dist/primitives/DialogTrigger.js +5 -0
  254. package/dist/primitives/DialogTrigger.js.map +1 -0
  255. package/dist/primitives/DropdownMenu.cjs +14 -0
  256. package/dist/primitives/DropdownMenu.cjs.map +1 -0
  257. package/dist/primitives/DropdownMenu.d.ts +1 -1
  258. package/dist/primitives/DropdownMenu.js +5 -0
  259. package/dist/primitives/DropdownMenu.js.map +1 -0
  260. package/dist/primitives/DropdownMenuCheckboxItem.cjs +14 -0
  261. package/dist/primitives/DropdownMenuCheckboxItem.cjs.map +1 -0
  262. package/dist/primitives/DropdownMenuCheckboxItem.d.ts +1 -1
  263. package/dist/primitives/DropdownMenuCheckboxItem.js +5 -0
  264. package/dist/primitives/DropdownMenuCheckboxItem.js.map +1 -0
  265. package/dist/primitives/DropdownMenuContent.cjs +14 -0
  266. package/dist/primitives/DropdownMenuContent.cjs.map +1 -0
  267. package/dist/primitives/DropdownMenuContent.d.ts +1 -1
  268. package/dist/primitives/DropdownMenuContent.js +5 -0
  269. package/dist/primitives/DropdownMenuContent.js.map +1 -0
  270. package/dist/primitives/DropdownMenuGroup.cjs +14 -0
  271. package/dist/primitives/DropdownMenuGroup.cjs.map +1 -0
  272. package/dist/primitives/DropdownMenuGroup.d.ts +1 -1
  273. package/dist/primitives/DropdownMenuGroup.js +5 -0
  274. package/dist/primitives/DropdownMenuGroup.js.map +1 -0
  275. package/dist/primitives/DropdownMenuItem.cjs +14 -0
  276. package/dist/primitives/DropdownMenuItem.cjs.map +1 -0
  277. package/dist/primitives/DropdownMenuItem.d.ts +1 -1
  278. package/dist/primitives/DropdownMenuItem.js +5 -0
  279. package/dist/primitives/DropdownMenuItem.js.map +1 -0
  280. package/dist/primitives/DropdownMenuLabel.cjs +14 -0
  281. package/dist/primitives/DropdownMenuLabel.cjs.map +1 -0
  282. package/dist/primitives/DropdownMenuLabel.d.ts +1 -1
  283. package/dist/primitives/DropdownMenuLabel.js +5 -0
  284. package/dist/primitives/DropdownMenuLabel.js.map +1 -0
  285. package/dist/primitives/DropdownMenuPortal.cjs +14 -0
  286. package/dist/primitives/DropdownMenuPortal.cjs.map +1 -0
  287. package/dist/primitives/DropdownMenuPortal.d.ts +1 -1
  288. package/dist/primitives/DropdownMenuPortal.js +5 -0
  289. package/dist/primitives/DropdownMenuPortal.js.map +1 -0
  290. package/dist/primitives/DropdownMenuRadioGroup.cjs +14 -0
  291. package/dist/primitives/DropdownMenuRadioGroup.cjs.map +1 -0
  292. package/dist/primitives/DropdownMenuRadioGroup.d.ts +1 -1
  293. package/dist/primitives/DropdownMenuRadioGroup.js +5 -0
  294. package/dist/primitives/DropdownMenuRadioGroup.js.map +1 -0
  295. package/dist/primitives/DropdownMenuRadioItem.cjs +14 -0
  296. package/dist/primitives/DropdownMenuRadioItem.cjs.map +1 -0
  297. package/dist/primitives/DropdownMenuRadioItem.d.ts +1 -1
  298. package/dist/primitives/DropdownMenuRadioItem.js +5 -0
  299. package/dist/primitives/DropdownMenuRadioItem.js.map +1 -0
  300. package/dist/primitives/DropdownMenuSeparator.cjs +14 -0
  301. package/dist/primitives/DropdownMenuSeparator.cjs.map +1 -0
  302. package/dist/primitives/DropdownMenuSeparator.d.ts +1 -1
  303. package/dist/primitives/DropdownMenuSeparator.js +5 -0
  304. package/dist/primitives/DropdownMenuSeparator.js.map +1 -0
  305. package/dist/primitives/DropdownMenuShortcut.cjs +14 -0
  306. package/dist/primitives/DropdownMenuShortcut.cjs.map +1 -0
  307. package/dist/primitives/DropdownMenuShortcut.d.ts +1 -1
  308. package/dist/primitives/DropdownMenuShortcut.js +5 -0
  309. package/dist/primitives/DropdownMenuShortcut.js.map +1 -0
  310. package/dist/primitives/DropdownMenuSub.cjs +14 -0
  311. package/dist/primitives/DropdownMenuSub.cjs.map +1 -0
  312. package/dist/primitives/DropdownMenuSub.d.ts +1 -1
  313. package/dist/primitives/DropdownMenuSub.js +5 -0
  314. package/dist/primitives/DropdownMenuSub.js.map +1 -0
  315. package/dist/primitives/DropdownMenuSubContent.cjs +14 -0
  316. package/dist/primitives/DropdownMenuSubContent.cjs.map +1 -0
  317. package/dist/primitives/DropdownMenuSubContent.d.ts +1 -1
  318. package/dist/primitives/DropdownMenuSubContent.js +5 -0
  319. package/dist/primitives/DropdownMenuSubContent.js.map +1 -0
  320. package/dist/primitives/DropdownMenuSubTrigger.cjs +14 -0
  321. package/dist/primitives/DropdownMenuSubTrigger.cjs.map +1 -0
  322. package/dist/primitives/DropdownMenuSubTrigger.d.ts +1 -1
  323. package/dist/primitives/DropdownMenuSubTrigger.js +5 -0
  324. package/dist/primitives/DropdownMenuSubTrigger.js.map +1 -0
  325. package/dist/primitives/DropdownMenuTrigger.cjs +14 -0
  326. package/dist/primitives/DropdownMenuTrigger.cjs.map +1 -0
  327. package/dist/primitives/DropdownMenuTrigger.d.ts +1 -1
  328. package/dist/primitives/DropdownMenuTrigger.js +5 -0
  329. package/dist/primitives/DropdownMenuTrigger.js.map +1 -0
  330. package/dist/primitives/Input.cjs +14 -0
  331. package/dist/primitives/Input.cjs.map +1 -0
  332. package/dist/primitives/Input.d.ts +1 -1
  333. package/dist/primitives/Input.js +5 -0
  334. package/dist/primitives/Input.js.map +1 -0
  335. package/dist/primitives/Label.cjs +14 -0
  336. package/dist/primitives/Label.cjs.map +1 -0
  337. package/dist/primitives/Label.d.ts +1 -1
  338. package/dist/primitives/Label.js +5 -0
  339. package/dist/primitives/Label.js.map +1 -0
  340. package/dist/primitives/Popover.cjs +14 -0
  341. package/dist/primitives/Popover.cjs.map +1 -0
  342. package/dist/primitives/Popover.d.ts +1 -1
  343. package/dist/primitives/Popover.js +5 -0
  344. package/dist/primitives/Popover.js.map +1 -0
  345. package/dist/primitives/PopoverAnchor.cjs +14 -0
  346. package/dist/primitives/PopoverAnchor.cjs.map +1 -0
  347. package/dist/primitives/PopoverAnchor.d.ts +1 -1
  348. package/dist/primitives/PopoverAnchor.js +5 -0
  349. package/dist/primitives/PopoverAnchor.js.map +1 -0
  350. package/dist/primitives/PopoverClose.cjs +14 -0
  351. package/dist/primitives/PopoverClose.cjs.map +1 -0
  352. package/dist/primitives/PopoverClose.d.ts +1 -0
  353. package/dist/primitives/PopoverClose.js +5 -0
  354. package/dist/primitives/PopoverClose.js.map +1 -0
  355. package/dist/primitives/PopoverContent.cjs +14 -0
  356. package/dist/primitives/PopoverContent.cjs.map +1 -0
  357. package/dist/primitives/PopoverContent.d.ts +1 -1
  358. package/dist/primitives/PopoverContent.js +5 -0
  359. package/dist/primitives/PopoverContent.js.map +1 -0
  360. package/dist/primitives/PopoverTrigger.cjs +14 -0
  361. package/dist/primitives/PopoverTrigger.cjs.map +1 -0
  362. package/dist/primitives/PopoverTrigger.d.ts +1 -1
  363. package/dist/primitives/PopoverTrigger.js +5 -0
  364. package/dist/primitives/PopoverTrigger.js.map +1 -0
  365. package/dist/primitives/Progress.cjs +14 -0
  366. package/dist/primitives/Progress.cjs.map +1 -0
  367. package/dist/primitives/Progress.d.ts +1 -1
  368. package/dist/primitives/Progress.js +5 -0
  369. package/dist/primitives/Progress.js.map +1 -0
  370. package/dist/primitives/ResizableHandle.cjs +14 -0
  371. package/dist/primitives/ResizableHandle.cjs.map +1 -0
  372. package/dist/primitives/ResizableHandle.d.ts +1 -0
  373. package/dist/primitives/ResizableHandle.js +5 -0
  374. package/dist/primitives/ResizableHandle.js.map +1 -0
  375. package/dist/primitives/ResizablePanel.cjs +14 -0
  376. package/dist/primitives/ResizablePanel.cjs.map +1 -0
  377. package/dist/primitives/ResizablePanel.d.ts +1 -0
  378. package/dist/primitives/ResizablePanel.js +5 -0
  379. package/dist/primitives/ResizablePanel.js.map +1 -0
  380. package/dist/primitives/ResizablePanelGroup.cjs +14 -0
  381. package/dist/primitives/ResizablePanelGroup.cjs.map +1 -0
  382. package/dist/primitives/ResizablePanelGroup.d.ts +1 -0
  383. package/dist/primitives/ResizablePanelGroup.js +5 -0
  384. package/dist/primitives/ResizablePanelGroup.js.map +1 -0
  385. package/dist/primitives/ScrollArea.cjs +14 -0
  386. package/dist/primitives/ScrollArea.cjs.map +1 -0
  387. package/dist/primitives/ScrollArea.d.ts +1 -1
  388. package/dist/primitives/ScrollArea.js +5 -0
  389. package/dist/primitives/ScrollArea.js.map +1 -0
  390. package/dist/primitives/ScrollBar.cjs +14 -0
  391. package/dist/primitives/ScrollBar.cjs.map +1 -0
  392. package/dist/primitives/ScrollBar.d.ts +1 -1
  393. package/dist/primitives/ScrollBar.js +5 -0
  394. package/dist/primitives/ScrollBar.js.map +1 -0
  395. package/dist/primitives/Select.cjs +14 -0
  396. package/dist/primitives/Select.cjs.map +1 -0
  397. package/dist/primitives/Select.d.ts +1 -1
  398. package/dist/primitives/Select.js +5 -0
  399. package/dist/primitives/Select.js.map +1 -0
  400. package/dist/primitives/SelectContent.cjs +14 -0
  401. package/dist/primitives/SelectContent.cjs.map +1 -0
  402. package/dist/primitives/SelectContent.d.ts +1 -1
  403. package/dist/primitives/SelectContent.js +5 -0
  404. package/dist/primitives/SelectContent.js.map +1 -0
  405. package/dist/primitives/SelectGroup.cjs +14 -0
  406. package/dist/primitives/SelectGroup.cjs.map +1 -0
  407. package/dist/primitives/SelectGroup.d.ts +1 -1
  408. package/dist/primitives/SelectGroup.js +5 -0
  409. package/dist/primitives/SelectGroup.js.map +1 -0
  410. package/dist/primitives/SelectItem.cjs +14 -0
  411. package/dist/primitives/SelectItem.cjs.map +1 -0
  412. package/dist/primitives/SelectItem.d.ts +1 -1
  413. package/dist/primitives/SelectItem.js +5 -0
  414. package/dist/primitives/SelectItem.js.map +1 -0
  415. package/dist/primitives/SelectLabel.cjs +14 -0
  416. package/dist/primitives/SelectLabel.cjs.map +1 -0
  417. package/dist/primitives/SelectLabel.d.ts +1 -1
  418. package/dist/primitives/SelectLabel.js +5 -0
  419. package/dist/primitives/SelectLabel.js.map +1 -0
  420. package/dist/primitives/SelectScrollDownButton.cjs +14 -0
  421. package/dist/primitives/SelectScrollDownButton.cjs.map +1 -0
  422. package/dist/primitives/SelectScrollDownButton.d.ts +1 -1
  423. package/dist/primitives/SelectScrollDownButton.js +5 -0
  424. package/dist/primitives/SelectScrollDownButton.js.map +1 -0
  425. package/dist/primitives/SelectScrollUpButton.cjs +14 -0
  426. package/dist/primitives/SelectScrollUpButton.cjs.map +1 -0
  427. package/dist/primitives/SelectScrollUpButton.d.ts +1 -1
  428. package/dist/primitives/SelectScrollUpButton.js +5 -0
  429. package/dist/primitives/SelectScrollUpButton.js.map +1 -0
  430. package/dist/primitives/SelectSeparator.cjs +14 -0
  431. package/dist/primitives/SelectSeparator.cjs.map +1 -0
  432. package/dist/primitives/SelectSeparator.d.ts +1 -1
  433. package/dist/primitives/SelectSeparator.js +5 -0
  434. package/dist/primitives/SelectSeparator.js.map +1 -0
  435. package/dist/primitives/SelectTrigger.cjs +14 -0
  436. package/dist/primitives/SelectTrigger.cjs.map +1 -0
  437. package/dist/primitives/SelectTrigger.d.ts +1 -1
  438. package/dist/primitives/SelectTrigger.js +5 -0
  439. package/dist/primitives/SelectTrigger.js.map +1 -0
  440. package/dist/primitives/SelectValue.cjs +14 -0
  441. package/dist/primitives/SelectValue.cjs.map +1 -0
  442. package/dist/primitives/SelectValue.d.ts +1 -1
  443. package/dist/primitives/SelectValue.js +5 -0
  444. package/dist/primitives/SelectValue.js.map +1 -0
  445. package/dist/primitives/Separator.cjs +14 -0
  446. package/dist/primitives/Separator.cjs.map +1 -0
  447. package/dist/primitives/Separator.d.ts +1 -1
  448. package/dist/primitives/Separator.js +5 -0
  449. package/dist/primitives/Separator.js.map +1 -0
  450. package/dist/primitives/Slider.cjs +14 -0
  451. package/dist/primitives/Slider.cjs.map +1 -0
  452. package/dist/primitives/Slider.d.ts +1 -1
  453. package/dist/primitives/Slider.js +5 -0
  454. package/dist/primitives/Slider.js.map +1 -0
  455. package/dist/primitives/Switch.cjs +14 -0
  456. package/dist/primitives/Switch.cjs.map +1 -0
  457. package/dist/primitives/Switch.d.ts +1 -1
  458. package/dist/primitives/Switch.js +5 -0
  459. package/dist/primitives/Switch.js.map +1 -0
  460. package/dist/primitives/Tabs.cjs +14 -0
  461. package/dist/primitives/Tabs.cjs.map +1 -0
  462. package/dist/primitives/Tabs.d.ts +1 -1
  463. package/dist/primitives/Tabs.js +5 -0
  464. package/dist/primitives/Tabs.js.map +1 -0
  465. package/dist/primitives/TabsContent.cjs +14 -0
  466. package/dist/primitives/TabsContent.cjs.map +1 -0
  467. package/dist/primitives/TabsContent.d.ts +1 -1
  468. package/dist/primitives/TabsContent.js +5 -0
  469. package/dist/primitives/TabsContent.js.map +1 -0
  470. package/dist/primitives/TabsList.cjs +14 -0
  471. package/dist/primitives/TabsList.cjs.map +1 -0
  472. package/dist/primitives/TabsList.d.ts +1 -1
  473. package/dist/primitives/TabsList.js +5 -0
  474. package/dist/primitives/TabsList.js.map +1 -0
  475. package/dist/primitives/TabsTrigger.cjs +14 -0
  476. package/dist/primitives/TabsTrigger.cjs.map +1 -0
  477. package/dist/primitives/TabsTrigger.d.ts +1 -1
  478. package/dist/primitives/TabsTrigger.js +5 -0
  479. package/dist/primitives/TabsTrigger.js.map +1 -0
  480. package/dist/primitives/Textarea.cjs +14 -0
  481. package/dist/primitives/Textarea.cjs.map +1 -0
  482. package/dist/primitives/Textarea.d.ts +1 -1
  483. package/dist/primitives/Textarea.js +5 -0
  484. package/dist/primitives/Textarea.js.map +1 -0
  485. package/dist/primitives/Toaster.cjs +14 -0
  486. package/dist/primitives/Toaster.cjs.map +1 -0
  487. package/dist/primitives/Toaster.d.ts +1 -1
  488. package/dist/primitives/Toaster.js +5 -0
  489. package/dist/primitives/Toaster.js.map +1 -0
  490. package/dist/primitives/Tooltip.cjs +14 -0
  491. package/dist/primitives/Tooltip.cjs.map +1 -0
  492. package/dist/primitives/Tooltip.d.ts +1 -1
  493. package/dist/primitives/Tooltip.js +5 -0
  494. package/dist/primitives/Tooltip.js.map +1 -0
  495. package/dist/primitives/TooltipContent.cjs +14 -0
  496. package/dist/primitives/TooltipContent.cjs.map +1 -0
  497. package/dist/primitives/TooltipContent.d.ts +1 -1
  498. package/dist/primitives/TooltipContent.js +5 -0
  499. package/dist/primitives/TooltipContent.js.map +1 -0
  500. package/dist/primitives/TooltipProvider.cjs +14 -0
  501. package/dist/primitives/TooltipProvider.cjs.map +1 -0
  502. package/dist/primitives/TooltipProvider.d.ts +1 -1
  503. package/dist/primitives/TooltipProvider.js +5 -0
  504. package/dist/primitives/TooltipProvider.js.map +1 -0
  505. package/dist/primitives/TooltipTrigger.cjs +14 -0
  506. package/dist/primitives/TooltipTrigger.cjs.map +1 -0
  507. package/dist/primitives/TooltipTrigger.d.ts +1 -1
  508. package/dist/primitives/TooltipTrigger.js +5 -0
  509. package/dist/primitives/TooltipTrigger.js.map +1 -0
  510. package/dist/primitives/badgeVariants.cjs +14 -0
  511. package/dist/primitives/badgeVariants.cjs.map +1 -0
  512. package/dist/primitives/badgeVariants.d.ts +1 -1
  513. package/dist/primitives/badgeVariants.js +5 -0
  514. package/dist/primitives/badgeVariants.js.map +1 -0
  515. package/dist/primitives/buttonVariants.cjs +14 -0
  516. package/dist/primitives/buttonVariants.cjs.map +1 -0
  517. package/dist/primitives/buttonVariants.d.ts +1 -1
  518. package/dist/primitives/buttonVariants.js +5 -0
  519. package/dist/primitives/buttonVariants.js.map +1 -0
  520. package/dist/primitives/index.cjs +370 -0
  521. package/dist/primitives/index.cjs.map +1 -0
  522. package/dist/primitives/index.d.ts +1 -1
  523. package/dist/primitives/index.js +5 -0
  524. package/dist/primitives/index.js.map +1 -0
  525. package/dist/primitives/toast.cjs +14 -0
  526. package/dist/primitives/toast.cjs.map +1 -0
  527. package/dist/primitives/toast.d.ts +1 -1
  528. package/dist/primitives/toast.js +5 -0
  529. package/dist/primitives/toast.js.map +1 -0
  530. package/dist/product/index.cjs +284 -35
  531. package/dist/product/index.cjs.map +1 -1
  532. package/dist/product/index.d.ts +1 -0
  533. package/dist/product/index.js +264 -9
  534. package/dist/product/index.js.map +1 -1
  535. package/dist/product/menu/index.d.ts +1 -1
  536. package/dist/theme.css +160 -0
  537. package/package.json +32 -84
  538. package/dist/backends/shadcn/aspect-ratio.d.ts +0 -4
  539. package/dist/backends/shadcn/avatar.d.ts +0 -6
  540. package/dist/backends/shadcn/badge.d.ts +0 -9
  541. package/dist/backends/shadcn/button.d.ts +0 -19
  542. package/dist/backends/shadcn/card.d.ts +0 -9
  543. package/dist/backends/shadcn/checkbox.d.ts +0 -9
  544. package/dist/backends/shadcn/collapsible.d.ts +0 -5
  545. package/dist/backends/shadcn/command.d.ts +0 -80
  546. package/dist/backends/shadcn/dialog.d.ts +0 -15
  547. package/dist/backends/shadcn/dropdown-menu.d.ts +0 -34
  548. package/dist/backends/shadcn/index.d.ts +0 -23
  549. package/dist/backends/shadcn/input.d.ts +0 -11
  550. package/dist/backends/shadcn/label.d.ts +0 -4
  551. package/dist/backends/shadcn/popover.d.ts +0 -7
  552. package/dist/backends/shadcn/progress.d.ts +0 -4
  553. package/dist/backends/shadcn/scroll-area.d.ts +0 -5
  554. package/dist/backends/shadcn/select.d.ts +0 -13
  555. package/dist/backends/shadcn/separator.d.ts +0 -4
  556. package/dist/backends/shadcn/slider.d.ts +0 -4
  557. package/dist/backends/shadcn/switch.d.ts +0 -4
  558. package/dist/backends/shadcn/tabs.d.ts +0 -7
  559. package/dist/backends/shadcn/textarea.d.ts +0 -4
  560. package/dist/backends/shadcn/toaster.d.ts +0 -10
  561. package/dist/backends/shadcn/tooltip.d.ts +0 -7
  562. package/dist/backends/shadcn/utils.d.ts +0 -8
  563. package/dist/billing.cjs +0 -15
  564. package/dist/billing.cjs.map +0 -1
  565. package/dist/billing.d.ts +0 -1
  566. package/dist/billing.js +0 -4
  567. package/dist/billing.js.map +0 -1
  568. package/dist/chunk-5CZOYONP.js +0 -343
  569. package/dist/chunk-5CZOYONP.js.map +0 -1
  570. package/dist/chunk-GWNNLYX4.cjs +0 -353
  571. package/dist/chunk-GWNNLYX4.cjs.map +0 -1
  572. package/dist/network.cjs +0 -15
  573. package/dist/network.cjs.map +0 -1
  574. package/dist/network.d.ts +0 -1
  575. package/dist/network.js +0 -4
  576. package/dist/network.js.map +0 -1
  577. package/dist/product/menu/DropdownMenu.d.ts +0 -29
  578. package/dist/wallet.cjs +0 -15
  579. package/dist/wallet.cjs.map +0 -1
  580. package/dist/wallet.d.ts +0 -1
  581. package/dist/wallet.js +0 -4
  582. package/dist/wallet.js.map +0 -1
@@ -0,0 +1,1498 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ var chunkDC52DQ27_cjs = require('./chunk-DC52DQ27.cjs');
5
+ var gui = require('@hanzo/gui');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var React = require('react');
8
+ var lucideIcons2 = require('@hanzogui/lucide-icons-2');
9
+ var v2 = require('@hanzogui/toast/v2');
10
+
11
+ function _interopNamespace(e) {
12
+ if (e && e.__esModule) return e;
13
+ var n = Object.create(null);
14
+ if (e) {
15
+ Object.keys(e).forEach(function (k) {
16
+ if (k !== 'default') {
17
+ var d = Object.getOwnPropertyDescriptor(e, k);
18
+ Object.defineProperty(n, k, d.get ? d : {
19
+ enumerable: true,
20
+ get: function () { return e[k]; }
21
+ });
22
+ }
23
+ });
24
+ }
25
+ n.default = e;
26
+ return Object.freeze(n);
27
+ }
28
+
29
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
+
31
+ var AspectRatio = ({ ratio = 1, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(gui.YStack, { "data-slot": "aspect-ratio", width: "100%", aspectRatio: ratio, ...props });
32
+ var SIZE = 32;
33
+ var Avatar = (props) => /* @__PURE__ */ jsxRuntime.jsx(gui.Avatar, { "data-slot": "avatar", circular: true, size: SIZE, shrink: 0, overflow: "hidden", ...props });
34
+ var AvatarImage = (props) => /* @__PURE__ */ jsxRuntime.jsx(gui.Avatar.Image, { "data-slot": "avatar-image", width: "100%", height: "100%", ...props });
35
+ var AvatarFallback = ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
36
+ gui.Avatar.Fallback,
37
+ {
38
+ "data-slot": "avatar-fallback",
39
+ bg: "$color4",
40
+ items: "center",
41
+ justify: "center",
42
+ ...props,
43
+ children: typeof children === "string" || typeof children === "number" ? /* @__PURE__ */ jsxRuntime.jsx(gui.SizableText, { size: "$2", color: "$color11", children }) : children
44
+ }
45
+ );
46
+ var ink = (children, Wrap = gui.SizableText, props = {}) => React.Children.map(
47
+ children,
48
+ (child) => typeof child === "string" || typeof child === "number" ? React.createElement(Wrap, props, child) : child
49
+ );
50
+ var MIN_TOUCH = 44;
51
+ var HEIGHT = 24;
52
+ var HIT_SLOP = (MIN_TOUCH - HEIGHT) / 2;
53
+ var BadgeContext = /* @__PURE__ */ gui.createStyledContext({ variant: "default" });
54
+ var BadgeFrame = gui.styled(gui.XStack, {
55
+ name: "Badge",
56
+ context: BadgeContext,
57
+ self: "flex-start",
58
+ items: "center",
59
+ justify: "center",
60
+ shrink: 0,
61
+ minH: HEIGHT,
62
+ px: "$2.5",
63
+ py: "$1",
64
+ gap: "$1.5",
65
+ rounded: "$2",
66
+ borderWidth: 1,
67
+ borderColor: "transparent",
68
+ overflow: "hidden",
69
+ variants: {
70
+ variant: {
71
+ default: { bg: "$color12" },
72
+ secondary: { bg: "$color4" },
73
+ destructive: { bg: "$red9" },
74
+ outline: { bg: "$background", borderColor: "$borderColor" },
75
+ ghost: { bg: "transparent", hoverStyle: { bg: "$color3" } },
76
+ link: { bg: "transparent" },
77
+ inputAdornment: { bg: "$color3", px: "$2" },
78
+ tags: { bg: "$color3", borderColor: "$borderColor", rounded: "$3" }
79
+ }
80
+ },
81
+ defaultVariants: { variant: "default" }
82
+ });
83
+ var BadgeText = gui.styled(gui.SizableText, {
84
+ name: "BadgeText",
85
+ context: BadgeContext,
86
+ size: "$1",
87
+ fontWeight: "600",
88
+ variants: {
89
+ variant: {
90
+ default: { color: "$color1" },
91
+ secondary: { color: "$color12" },
92
+ destructive: { color: "$white1" },
93
+ outline: { color: "$color12" },
94
+ ghost: { color: "$color12" },
95
+ link: { color: "$color12", textDecorationLine: "underline" },
96
+ inputAdornment: { color: "$color12", fontWeight: "500" },
97
+ tags: { color: "$color11", fontWeight: "400", textTransform: "capitalize" }
98
+ }
99
+ }
100
+ });
101
+ var badgeVariants = ({ variant } = {}) => `hanzo-badge hanzo-badge--${variant ?? "default"}`;
102
+ function Badge({
103
+ className,
104
+ variant = "default",
105
+ asChild = false,
106
+ children,
107
+ ...props
108
+ }) {
109
+ return /* @__PURE__ */ jsxRuntime.jsx(
110
+ BadgeFrame,
111
+ {
112
+ "data-slot": "badge",
113
+ "data-variant": variant,
114
+ variant: variant ?? "default",
115
+ asChild,
116
+ render: asChild ? void 0 : "span",
117
+ hitSlop: HIT_SLOP,
118
+ className: [badgeVariants({ variant }), className].filter(Boolean).join(" "),
119
+ ...props,
120
+ children: asChild ? children : ink(children, BadgeText)
121
+ }
122
+ );
123
+ }
124
+ var HEIGHT2 = {
125
+ default: 36,
126
+ sm: 32,
127
+ lg: 40,
128
+ icon: 36,
129
+ "icon-sm": 32,
130
+ "icon-lg": 40
131
+ };
132
+ var MIN_TOUCH2 = 44;
133
+ var slop = (size) => Math.max(0, (MIN_TOUCH2 - HEIGHT2[size]) / 2);
134
+ var Frame = gui.styled(gui.Button, {
135
+ name: "Button",
136
+ items: "center",
137
+ justify: "center",
138
+ gap: "$2",
139
+ shrink: 0,
140
+ rounded: "$3",
141
+ borderWidth: 1,
142
+ borderColor: "transparent",
143
+ cursor: "pointer",
144
+ variants: {
145
+ variant: {
146
+ default: { bg: "$color12", color: "$color1", hoverStyle: { opacity: 0.9 } },
147
+ primary: { bg: "$color12", color: "$color1", hoverStyle: { opacity: 0.9 } },
148
+ destructive: { bg: "$red9", color: "$white1", hoverStyle: { opacity: 0.9 } },
149
+ outline: {
150
+ bg: "$background",
151
+ color: "$color12",
152
+ borderColor: "$borderColor",
153
+ hoverStyle: { bg: "$color3" }
154
+ },
155
+ secondary: { bg: "$color4", color: "$color12", hoverStyle: { opacity: 0.8 } },
156
+ ghost: { bg: "transparent", color: "$color12", hoverStyle: { bg: "$color3" } },
157
+ link: { bg: "transparent", color: "$color12", hoverStyle: { textDecorationLine: "underline" } },
158
+ linkFG: { bg: "transparent", color: "$color12", hoverStyle: { textDecorationLine: "underline" } },
159
+ linkMuted: {
160
+ bg: "transparent",
161
+ color: "$color11",
162
+ hoverStyle: { color: "$color12", textDecorationLine: "underline" }
163
+ }
164
+ },
165
+ size: {
166
+ default: { height: HEIGHT2.default, px: "$4", fontSize: "$3" },
167
+ sm: { height: HEIGHT2.sm, px: "$3", gap: "$1.5", fontSize: "$2" },
168
+ lg: { height: HEIGHT2.lg, px: "$6", fontSize: "$3" },
169
+ icon: { height: HEIGHT2.icon, width: HEIGHT2.icon, px: 0 },
170
+ "icon-sm": { height: HEIGHT2["icon-sm"], width: HEIGHT2["icon-sm"], px: 0 },
171
+ "icon-lg": { height: HEIGHT2["icon-lg"], width: HEIGHT2["icon-lg"], px: 0 }
172
+ },
173
+ disabled: {
174
+ true: { opacity: 0.5, pointerEvents: "none", cursor: "default" }
175
+ }
176
+ },
177
+ defaultVariants: { variant: "default", size: "default" }
178
+ });
179
+ var buttonVariants = ({
180
+ variant,
181
+ size,
182
+ className
183
+ } = {}) => [`hanzo-button`, `hanzo-button--${variant ?? "default"}`, `hanzo-button--${size ?? "default"}`, className].filter(Boolean).join(" ");
184
+ function Button({
185
+ className,
186
+ variant = "default",
187
+ size = "default",
188
+ asChild = false,
189
+ isLoading = false,
190
+ disabled,
191
+ children,
192
+ ...props
193
+ }) {
194
+ const resolved = size ?? "default";
195
+ return /* @__PURE__ */ jsxRuntime.jsx(
196
+ Frame,
197
+ {
198
+ "data-slot": "button",
199
+ "data-variant": variant ?? "default",
200
+ "data-size": resolved,
201
+ variant: variant ?? "default",
202
+ size: resolved,
203
+ asChild,
204
+ disabled: disabled || isLoading,
205
+ hitSlop: slop(resolved),
206
+ className: buttonVariants({ variant, size, className }),
207
+ icon: isLoading && !asChild ? /* @__PURE__ */ jsxRuntime.jsx(gui.Spinner, { size: "small" }) : void 0,
208
+ ...props,
209
+ children
210
+ }
211
+ );
212
+ }
213
+
214
+ // src/backends/gui/slot.ts
215
+ var slot = (name) => ({ "data-slot": name });
216
+ var PAD = 24;
217
+ var CardFrame = gui.styled(gui.YStack, {
218
+ name: "Card",
219
+ bg: "$background",
220
+ borderWidth: 1,
221
+ borderColor: "$borderColor",
222
+ rounded: "$6",
223
+ py: PAD,
224
+ gap: PAD
225
+ });
226
+ var HeaderFrame = gui.styled(gui.XStack, {
227
+ name: "CardHeader",
228
+ px: PAD,
229
+ gap: "$2",
230
+ items: "flex-start",
231
+ justify: "space-between"
232
+ });
233
+ var TitleFrame = gui.styled(gui.SizableText, { name: "CardTitle", size: "$4", fontWeight: "600" });
234
+ var DescriptionFrame = gui.styled(gui.SizableText, { name: "CardDescription", size: "$2", color: "$color11" });
235
+ var ActionFrame = gui.styled(gui.XStack, { name: "CardAction", self: "flex-start", shrink: 0 });
236
+ var ContentFrame = gui.styled(gui.YStack, { name: "CardContent", px: PAD });
237
+ var FooterFrame = gui.styled(gui.XStack, { name: "CardFooter", px: PAD, items: "center" });
238
+ var Card = (p) => /* @__PURE__ */ jsxRuntime.jsx(CardFrame, { ...slot("card"), ...p });
239
+ var CardHeader = (p) => /* @__PURE__ */ jsxRuntime.jsx(HeaderFrame, { ...slot("card-header"), ...p });
240
+ var CardTitle = (p) => /* @__PURE__ */ jsxRuntime.jsx(TitleFrame, { ...slot("card-title"), ...p });
241
+ var CardDescription = (p) => /* @__PURE__ */ jsxRuntime.jsx(DescriptionFrame, { ...slot("card-description"), ...p });
242
+ var CardAction = (p) => /* @__PURE__ */ jsxRuntime.jsx(ActionFrame, { ...slot("card-action"), ...p });
243
+ var CardContent = (p) => /* @__PURE__ */ jsxRuntime.jsx(ContentFrame, { ...slot("card-content"), ...p });
244
+ var CardFooter = (p) => /* @__PURE__ */ jsxRuntime.jsx(FooterFrame, { ...slot("card-footer"), ...p });
245
+ var BOX = 16;
246
+ var HIT_SLOP2 = (44 - BOX) / 2;
247
+ var Checkbox = (props) => /* @__PURE__ */ jsxRuntime.jsx(
248
+ gui.Checkbox,
249
+ {
250
+ ...slot("checkbox"),
251
+ width: BOX,
252
+ height: BOX,
253
+ shrink: 0,
254
+ rounded: "$2",
255
+ borderWidth: 1,
256
+ borderColor: "$borderColor",
257
+ bg: "transparent",
258
+ hitSlop: HIT_SLOP2,
259
+ ...props,
260
+ children: /* @__PURE__ */ jsxRuntime.jsx(gui.Checkbox.Indicator, { ...slot("checkbox-indicator"), items: "center", justify: "center", children: /* @__PURE__ */ jsxRuntime.jsx(lucideIcons2.Check, { size: BOX - 3 }) })
261
+ }
262
+ );
263
+ var Collapsible = (p) => /* @__PURE__ */ jsxRuntime.jsx(gui.Collapsible, { ...slot("collapsible"), ...p });
264
+ var CollapsibleTrigger = (p) => /* @__PURE__ */ jsxRuntime.jsx(gui.Collapsible.Trigger, { ...slot("collapsible-trigger"), unstyled: true, hitSlop: 8, ...p });
265
+ var CollapsibleContent = (p) => /* @__PURE__ */ jsxRuntime.jsx(gui.Collapsible.Content, { ...slot("collapsible-content"), ...p });
266
+
267
+ // src/backends/gui/command.logic.ts
268
+ var score = (value, search, keywords) => {
269
+ const needle = search.trim().toLowerCase();
270
+ if (!needle) return 1;
271
+ const hay = (keywords?.length ? `${value} ${keywords.join(" ")}` : value).toLowerCase();
272
+ if (hay === needle) return 1;
273
+ if (hay.startsWith(needle)) return 0.9;
274
+ const at = hay.indexOf(needle);
275
+ if (at > -1) return 0.8 - at / (hay.length * 100);
276
+ let i = 0;
277
+ for (let j = 0; j < hay.length && i < needle.length; j++) if (hay[j] === needle[i]) i++;
278
+ return i === needle.length ? 0.4 : 0;
279
+ };
280
+ var step = (count, from, delta, loop = false) => {
281
+ if (count <= 0) return -1;
282
+ const next = from + delta;
283
+ if (next < 0) return loop ? count - 1 : 0;
284
+ if (next >= count) return loop ? 0 : count - 1;
285
+ return next;
286
+ };
287
+ var TOUCH = 44;
288
+ var textOf = (node) => typeof node === "string" || typeof node === "number" ? String(node) : Array.isArray(node) ? node.map(textOf).filter(Boolean).join(" ") : React.isValidElement(node) ? textOf(node.props.children) : "";
289
+ var CommandContext = /* @__PURE__ */ React.createContext(null);
290
+ var GroupContext = /* @__PURE__ */ React.createContext(void 0);
291
+ var useCommand = () => {
292
+ const ctx = React.useContext(CommandContext);
293
+ if (!ctx) throw new Error("Command parts must be rendered inside <Command>");
294
+ return ctx;
295
+ };
296
+ var Command = /* @__PURE__ */ React.forwardRef(function Command2({
297
+ value,
298
+ defaultValue,
299
+ onValueChange,
300
+ filter = score,
301
+ shouldFilter = true,
302
+ loop = false,
303
+ label,
304
+ vimBindings = true,
305
+ disablePointerSelection = false,
306
+ children,
307
+ ...rest
308
+ }, ref) {
309
+ const entries = React.useRef(/* @__PURE__ */ new Map()).current;
310
+ const order = React.useRef([]).current;
311
+ const [version, touch] = React.useReducer((n) => n + 1, 0);
312
+ const [search, setSearch] = React.useState("");
313
+ const [uncontrolled, setUncontrolled] = React.useState(defaultValue ?? "");
314
+ const selected = value ?? uncontrolled;
315
+ const register = React.useCallback(
316
+ (id, entry) => {
317
+ entries.set(id, entry);
318
+ if (!order.includes(id)) order.push(id);
319
+ touch();
320
+ return () => {
321
+ entries.delete(id);
322
+ const at = order.indexOf(id);
323
+ if (at > -1) order.splice(at, 1);
324
+ touch();
325
+ };
326
+ },
327
+ [entries, order]
328
+ );
329
+ const visible = React.useMemo(
330
+ () => order.filter((id) => {
331
+ const entry = entries.get(id)?.current;
332
+ return !!entry && (!shouldFilter || filter(entry.value, search, entry.keywords) > 0);
333
+ }),
334
+ // `version` is the registry's revision — the registry itself is a mutable ref.
335
+ [version, order, entries, shouldFilter, filter, search]
336
+ );
337
+ const shown = React.useMemo(() => new Set(visible), [visible]);
338
+ const shownGroups = React.useMemo(
339
+ () => new Set(visible.map((id) => entries.get(id)?.current.group).filter(Boolean)),
340
+ [visible, entries]
341
+ );
342
+ const select = React.useCallback(
343
+ (next) => {
344
+ if (value === void 0) setUncontrolled(next);
345
+ onValueChange?.(next);
346
+ },
347
+ [value, onValueChange]
348
+ );
349
+ React.useEffect(() => {
350
+ if (!visible.length) return;
351
+ if (selected && visible.some((id) => entries.get(id)?.current.value === selected)) return;
352
+ const first = entries.get(visible[0])?.current.value;
353
+ if (first) select(first);
354
+ }, [visible, selected, entries, select]);
355
+ const move = React.useCallback(
356
+ (delta) => {
357
+ const reachable = visible.filter((id) => !entries.get(id)?.current.disabled);
358
+ const at = reachable.findIndex((id) => entries.get(id)?.current.value === selected);
359
+ const next = step(reachable.length, at, delta, loop);
360
+ const target = next < 0 ? void 0 : entries.get(reachable[next])?.current.value;
361
+ if (target) select(target);
362
+ },
363
+ [visible, entries, selected, loop, select]
364
+ );
365
+ const run = React.useCallback(
366
+ (id) => {
367
+ const entry = entries.get(id)?.current;
368
+ if (!entry || entry.disabled) return;
369
+ select(entry.value);
370
+ entry.onSelect?.(entry.value);
371
+ },
372
+ [entries, select]
373
+ );
374
+ const onKey = React.useCallback(
375
+ (e) => {
376
+ const mod = vimBindings && (e.ctrlKey || e.metaKey);
377
+ const down = e.key === "ArrowDown" || mod && (e.key === "n" || e.key === "j");
378
+ const up = e.key === "ArrowUp" || mod && (e.key === "p" || e.key === "k");
379
+ if (down || up) {
380
+ e.preventDefault();
381
+ move(down ? 1 : -1);
382
+ } else if (e.key === "Enter") {
383
+ e.preventDefault();
384
+ const id = visible.find((it) => entries.get(it)?.current.value === selected);
385
+ if (id) run(id);
386
+ }
387
+ },
388
+ [vimBindings, move, visible, entries, selected, run]
389
+ );
390
+ const ctx = React.useMemo(
391
+ () => ({
392
+ search,
393
+ setSearch,
394
+ selected,
395
+ select,
396
+ register,
397
+ touch,
398
+ run,
399
+ onKey,
400
+ shows: (id) => shown.has(id),
401
+ showsGroup: (group) => shownGroups.has(group),
402
+ empty: visible.length === 0,
403
+ disablePointerSelection
404
+ }),
405
+ [search, selected, select, register, run, onKey, shown, shownGroups, visible.length, disablePointerSelection]
406
+ );
407
+ return /* @__PURE__ */ jsxRuntime.jsx(CommandContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxRuntime.jsx(
408
+ gui.YStack,
409
+ {
410
+ ref,
411
+ "data-slot": "command",
412
+ "aria-label": label,
413
+ width: "100%",
414
+ overflow: "hidden",
415
+ rounded: "$4",
416
+ bg: "$background",
417
+ ...gui.isWeb ? { onKeyDown: onKey } : null,
418
+ ...rest,
419
+ children
420
+ }
421
+ ) });
422
+ });
423
+ var CommandDialog = ({
424
+ title = "Command Palette",
425
+ description = "Search for a command to run...",
426
+ children,
427
+ ...props
428
+ }) => /* @__PURE__ */ jsxRuntime.jsx(gui.Dialog, { modal: true, ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(gui.DialogPortal, { children: [
429
+ /* @__PURE__ */ jsxRuntime.jsx(gui.DialogOverlay, { bg: "rgba(0,0,0,0.5)" }, "overlay"),
430
+ /* @__PURE__ */ jsxRuntime.jsxs(gui.DialogContent, { p: 0, width: "100%", maxW: 640, overflow: "hidden", children: [
431
+ /* @__PURE__ */ jsxRuntime.jsxs(gui.VisuallyHidden, { children: [
432
+ /* @__PURE__ */ jsxRuntime.jsx(gui.DialogTitle, { children: title }),
433
+ /* @__PURE__ */ jsxRuntime.jsx(gui.DialogDescription, { children: description })
434
+ ] }),
435
+ /* @__PURE__ */ jsxRuntime.jsx(Command, { children })
436
+ ] }, "content")
437
+ ] }) });
438
+ var CommandInput = /* @__PURE__ */ React.forwardRef(
439
+ function CommandInput2({ value, onValueChange, placeholder, ...rest }, ref) {
440
+ const { search, setSearch, onKey } = useCommand();
441
+ React.useEffect(() => {
442
+ if (value !== void 0 && value !== search) setSearch(value);
443
+ }, [value, search, setSearch]);
444
+ return /* @__PURE__ */ jsxRuntime.jsxs(
445
+ gui.XStack,
446
+ {
447
+ "data-slot": "command-input-wrapper",
448
+ items: "center",
449
+ gap: "$2",
450
+ px: "$3",
451
+ minH: TOUCH,
452
+ borderBottomWidth: 1,
453
+ borderColor: "$borderColor",
454
+ children: [
455
+ /* @__PURE__ */ jsxRuntime.jsx(lucideIcons2.Search, { size: 16, opacity: 0.5 }),
456
+ /* @__PURE__ */ jsxRuntime.jsx(
457
+ gui.Input,
458
+ {
459
+ ref,
460
+ "data-slot": "command-input",
461
+ unstyled: true,
462
+ flex: 1,
463
+ height: TOUCH,
464
+ borderWidth: 0,
465
+ bg: "transparent",
466
+ color: "$color",
467
+ placeholder,
468
+ value: value ?? search,
469
+ onChangeText: (next) => {
470
+ setSearch(next);
471
+ onValueChange?.(next);
472
+ },
473
+ ...gui.isWeb ? { onKeyDown: onKey } : null,
474
+ ...rest
475
+ }
476
+ )
477
+ ]
478
+ }
479
+ );
480
+ }
481
+ );
482
+ var CommandList = /* @__PURE__ */ React.forwardRef(
483
+ function CommandList2(props, ref) {
484
+ return /* @__PURE__ */ jsxRuntime.jsx(gui.ScrollView, { ref, "data-slot": "command-list", maxH: 300, ...props });
485
+ }
486
+ );
487
+ var CommandEmpty = /* @__PURE__ */ React.forwardRef(
488
+ function CommandEmpty2({ children, ...rest }, ref) {
489
+ const { empty } = useCommand();
490
+ if (!empty) return null;
491
+ return /* @__PURE__ */ jsxRuntime.jsx(gui.YStack, { ref, "data-slot": "command-empty", py: "$4", items: "center", ...rest, children: typeof children === "string" ? /* @__PURE__ */ jsxRuntime.jsx(gui.SizableText, { size: "$3", color: "$color11", children }) : children });
492
+ }
493
+ );
494
+ var CommandGroup = /* @__PURE__ */ React.forwardRef(
495
+ function CommandGroup2({ heading, children, ...rest }, ref) {
496
+ const id = React.useId();
497
+ const { showsGroup } = useCommand();
498
+ return /* @__PURE__ */ jsxRuntime.jsx(GroupContext.Provider, { value: id, children: /* @__PURE__ */ jsxRuntime.jsxs(
499
+ gui.YStack,
500
+ {
501
+ ref,
502
+ "data-slot": "command-group",
503
+ display: showsGroup(id) ? "flex" : "none",
504
+ p: "$1",
505
+ ...rest,
506
+ children: [
507
+ heading != null ? /* @__PURE__ */ jsxRuntime.jsx(
508
+ gui.SizableText,
509
+ {
510
+ size: "$1",
511
+ color: "$color11",
512
+ fontWeight: "500",
513
+ px: "$2",
514
+ py: "$1.5",
515
+ children: heading
516
+ }
517
+ ) : null,
518
+ children
519
+ ]
520
+ }
521
+ ) });
522
+ }
523
+ );
524
+ var CommandSeparator = /* @__PURE__ */ React.forwardRef(
525
+ function CommandSeparator2({ alwaysRender, ...rest }, ref) {
526
+ const { search } = useCommand();
527
+ if (!alwaysRender && search) return null;
528
+ return /* @__PURE__ */ jsxRuntime.jsx(gui.Separator, { ref, "data-slot": "command-separator", ...rest });
529
+ }
530
+ );
531
+ var CommandItem = /* @__PURE__ */ React.forwardRef(
532
+ function CommandItem2({ value, keywords, disabled, onSelect, children, ...rest }, ref) {
533
+ const id = React.useId();
534
+ const { register, touch, run, select, selected, shows, disablePointerSelection } = useCommand();
535
+ const group = React.useContext(GroupContext);
536
+ const self = value ?? textOf(children);
537
+ const entry = React.useRef({ value: self, keywords, disabled, group, onSelect });
538
+ entry.current = { value: self, keywords, disabled, group, onSelect };
539
+ React.useEffect(() => register(id, entry), [id, register]);
540
+ React.useEffect(touch, [touch, self, disabled, keywords?.join("\0")]);
541
+ const isSelected = !!self && selected === self;
542
+ return /* @__PURE__ */ jsxRuntime.jsx(
543
+ gui.ListItem,
544
+ {
545
+ ref,
546
+ "data-slot": "command-item",
547
+ "data-selected": isSelected,
548
+ "data-disabled": !!disabled,
549
+ display: shows(id) ? "flex" : "none",
550
+ disabled,
551
+ minH: TOUCH,
552
+ gap: "$2",
553
+ rounded: "$2",
554
+ bg: isSelected ? "$backgroundFocus" : "transparent",
555
+ opacity: disabled ? 0.5 : 1,
556
+ onPress: () => run(id),
557
+ onPointerEnter: disabled || disablePointerSelection ? void 0 : () => select(self),
558
+ ...rest,
559
+ children
560
+ }
561
+ );
562
+ }
563
+ );
564
+ var CommandShortcut = (props) => /* @__PURE__ */ jsxRuntime.jsx(
565
+ gui.SizableText,
566
+ {
567
+ "data-slot": "command-shortcut",
568
+ ml: "auto",
569
+ size: "$1",
570
+ color: "$color11",
571
+ letterSpacing: 1.5,
572
+ ...props
573
+ }
574
+ );
575
+ var PAD2 = 24;
576
+ var Dialog2 = (p) => /* @__PURE__ */ jsxRuntime.jsx(gui.Dialog, { modal: true, ...p });
577
+ var DialogTrigger = gui.Dialog.Trigger;
578
+ var DialogPortal2 = gui.Dialog.Portal;
579
+ var DialogClose = gui.Dialog.Close;
580
+ var DialogOverlay2 = (props) => /* @__PURE__ */ jsxRuntime.jsx(
581
+ gui.Dialog.Overlay,
582
+ {
583
+ ...slot("dialog-overlay"),
584
+ bg: "rgba(0,0,0,0.5)",
585
+ opacity: 0.5,
586
+ ...props
587
+ }
588
+ );
589
+ var DialogContent2 = ({ showCloseButton = true, children, ...props }) => {
590
+ const themeName = chunkDC52DQ27_cjs.useThemeName();
591
+ return /* @__PURE__ */ jsxRuntime.jsx(gui.Dialog.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkDC52DQ27_cjs.PortalTheme, { name: themeName, children: [
592
+ /* @__PURE__ */ jsxRuntime.jsx(DialogOverlay2, {}),
593
+ /* @__PURE__ */ jsxRuntime.jsxs(
594
+ gui.Dialog.Content,
595
+ {
596
+ ...slot("dialog-content"),
597
+ bg: "$background",
598
+ borderWidth: 1,
599
+ borderColor: "$borderColor",
600
+ rounded: "$5",
601
+ p: PAD2,
602
+ gap: "$4",
603
+ width: "100%",
604
+ maxW: 512,
605
+ ...props,
606
+ children: [
607
+ children,
608
+ showCloseButton ? /* @__PURE__ */ jsxRuntime.jsx(gui.Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
609
+ gui.XStack,
610
+ {
611
+ ...slot("dialog-close"),
612
+ position: "absolute",
613
+ t: 16,
614
+ r: 16,
615
+ cursor: "pointer",
616
+ opacity: 0.7,
617
+ hoverStyle: { opacity: 1 },
618
+ hitSlop: 14,
619
+ "aria-label": "Close",
620
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideIcons2.X, { size: 16 })
621
+ }
622
+ ) }) : null
623
+ ]
624
+ }
625
+ )
626
+ ] }) });
627
+ };
628
+ var DialogHeader = (props) => /* @__PURE__ */ jsxRuntime.jsx(gui.YStack, { ...slot("dialog-header"), gap: "$2", ...props });
629
+ var DialogFooter = (props) => /* @__PURE__ */ jsxRuntime.jsx(gui.XStack, { ...slot("dialog-footer"), gap: "$2", justify: "flex-end", items: "center", ...props });
630
+ var DialogTitle2 = (props) => /* @__PURE__ */ jsxRuntime.jsx(gui.Dialog.Title, { ...slot("dialog-title"), size: "$5", fontWeight: "600", ...props });
631
+ var DialogDescription2 = (props) => /* @__PURE__ */ jsxRuntime.jsx(gui.Dialog.Description, { ...slot("dialog-description"), size: "$2", color: "$color11", ...props });
632
+ var HEIGHT3 = 36;
633
+ var GUTTER = 12;
634
+ var WELL = 36;
635
+ var well = (side) => ({
636
+ position: "absolute",
637
+ [side]: GUTTER,
638
+ t: 0,
639
+ b: 0,
640
+ items: "center",
641
+ justify: "center"
642
+ });
643
+ var Input2 = /* @__PURE__ */ React.forwardRef(function Input3({ startAdornment, endAdornment, hidePasswordToggle, type, secureTextEntry, ...props }, ref) {
644
+ const [revealed, setRevealed] = React.useState(false);
645
+ const isPassword = type === "password" || secureTextEntry === true;
646
+ const toggle = isPassword && !hidePasswordToggle;
647
+ const field = /* @__PURE__ */ jsxRuntime.jsx(
648
+ gui.Input,
649
+ {
650
+ ref,
651
+ ...slot("input"),
652
+ secureTextEntry: isPassword && !revealed,
653
+ height: HEIGHT3,
654
+ width: "100%",
655
+ minW: 0,
656
+ rounded: "$3",
657
+ bg: "transparent",
658
+ borderWidth: 1,
659
+ borderColor: "$borderColor",
660
+ placeholderTextColor: "$color10",
661
+ fontSize: "$3",
662
+ pl: startAdornment ? WELL : GUTTER,
663
+ pr: endAdornment || toggle ? WELL : GUTTER,
664
+ ...props
665
+ }
666
+ );
667
+ if (!startAdornment && !endAdornment && !toggle) return field;
668
+ return /* @__PURE__ */ jsxRuntime.jsxs(gui.XStack, { position: "relative", width: "100%", items: "center", children: [
669
+ startAdornment ? /* @__PURE__ */ jsxRuntime.jsx(gui.XStack, { ...well("l"), pointerEvents: "none", opacity: 0.6, children: startAdornment }) : null,
670
+ field,
671
+ toggle ? /* @__PURE__ */ jsxRuntime.jsx(
672
+ gui.XStack,
673
+ {
674
+ ...well("r"),
675
+ cursor: "pointer",
676
+ hitSlop: 8,
677
+ onPress: () => setRevealed((v) => !v),
678
+ "aria-label": revealed ? "Hide password" : "Show password",
679
+ children: revealed ? /* @__PURE__ */ jsxRuntime.jsx(lucideIcons2.EyeOff, { size: 16 }) : /* @__PURE__ */ jsxRuntime.jsx(lucideIcons2.Eye, { size: 16 })
680
+ }
681
+ ) : endAdornment ? /* @__PURE__ */ jsxRuntime.jsx(gui.XStack, { ...well("r"), opacity: 0.6, children: endAdornment }) : null
682
+ ] });
683
+ });
684
+ var Label = (props) => /* @__PURE__ */ jsxRuntime.jsx(
685
+ gui.Label,
686
+ {
687
+ ...slot("label"),
688
+ fontSize: "$2",
689
+ fontWeight: "500",
690
+ color: "$color12",
691
+ select: "none",
692
+ cursor: "pointer",
693
+ ...props
694
+ }
695
+ );
696
+ var DEFAULT_OFFSET = 4;
697
+ var OffsetContext = /* @__PURE__ */ React.createContext(null);
698
+ function Popover({ offset = DEFAULT_OFFSET, ...props }) {
699
+ const [current, setOffset] = React.useState(offset);
700
+ React.useEffect(() => setOffset(offset), [offset]);
701
+ return /* @__PURE__ */ jsxRuntime.jsx(OffsetContext.Provider, { value: setOffset, children: /* @__PURE__ */ jsxRuntime.jsx(gui.Popover, { offset: current, ...props }) });
702
+ }
703
+ var PopoverTrigger = gui.Popover.Trigger;
704
+ var PopoverAnchor = gui.Popover.Anchor;
705
+ var PopoverClose = gui.Popover.Close;
706
+ var PopoverContent = ({ sideOffset = DEFAULT_OFFSET, align: _align, ...props }) => {
707
+ const themeName = chunkDC52DQ27_cjs.useThemeName();
708
+ const setOffset = React.useContext(OffsetContext);
709
+ React.useEffect(() => setOffset?.(sideOffset), [setOffset, sideOffset]);
710
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkDC52DQ27_cjs.PortalTheme, { name: themeName, children: /* @__PURE__ */ jsxRuntime.jsx(
711
+ gui.Popover.Content,
712
+ {
713
+ ...slot("popover-content"),
714
+ bg: "$color2",
715
+ borderWidth: 1,
716
+ borderColor: "$borderColor",
717
+ rounded: "$4",
718
+ p: "$4",
719
+ width: 288,
720
+ ...props
721
+ }
722
+ ) });
723
+ };
724
+ var Progress = ({ value, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
725
+ gui.Progress,
726
+ {
727
+ ...slot("progress"),
728
+ value: value ?? 0,
729
+ height: 8,
730
+ width: "100%",
731
+ bg: "$color4",
732
+ rounded: "$10",
733
+ overflow: "hidden",
734
+ ...props,
735
+ children: /* @__PURE__ */ jsxRuntime.jsx(gui.Progress.Indicator, { ...slot("progress-indicator"), bg: "$color12" })
736
+ }
737
+ );
738
+
739
+ // src/backends/gui/resizable.logic.ts
740
+ var clamp = (n, lo, hi) => Math.max(lo, Math.min(n, hi));
741
+ var floorOf = (s) => s.collapsible ? s.collapsedSize ?? 0 : s.minSize ?? 0;
742
+ var ceilOf = (s) => s.maxSize ?? 100;
743
+ function defaultLayout(specs) {
744
+ if (specs.length === 0) return [];
745
+ const claimed = specs.reduce((n, s) => n + (s.defaultSize ?? 0), 0);
746
+ const free = specs.filter((s) => s.defaultSize == null).length;
747
+ const each = free > 0 ? Math.max(0, 100 - claimed) / free : 0;
748
+ const raw = specs.map((s) => s.defaultSize ?? each);
749
+ const sum = raw.reduce((a, b) => a + b, 0);
750
+ return sum > 0 ? raw.map((v) => v / sum * 100) : specs.map(() => 100 / specs.length);
751
+ }
752
+ function resizeAt(sizes, specs, i, delta) {
753
+ const a = sizes[i];
754
+ const b = sizes[i + 1];
755
+ const sa = specs[i];
756
+ const sb = specs[i + 1];
757
+ if (a == null || b == null || !sa || !sb) return sizes;
758
+ const pair = a + b;
759
+ const lo = Math.max(floorOf(sa), pair - ceilOf(sb));
760
+ const hi = Math.min(ceilOf(sa), pair - floorOf(sb));
761
+ if (lo > hi) return sizes;
762
+ const next = clamp(a + delta, lo, hi);
763
+ if (next === a) return sizes;
764
+ const out = sizes.slice();
765
+ out[i] = next;
766
+ out[i + 1] = pair - next;
767
+ return out;
768
+ }
769
+ var webStorage = () => globalThis.localStorage;
770
+ var storeKey = (id) => `hanzo.panels.${id}`;
771
+ function loadStore(id) {
772
+ if (!id) return {};
773
+ try {
774
+ return JSON.parse(webStorage()?.getItem(storeKey(id)) ?? "{}");
775
+ } catch {
776
+ return {};
777
+ }
778
+ }
779
+ function saveStore(id, store) {
780
+ if (!id) return;
781
+ try {
782
+ webStorage()?.setItem(storeKey(id), JSON.stringify(store));
783
+ } catch {
784
+ }
785
+ }
786
+ var GroupContext2 = /* @__PURE__ */ React.createContext(null);
787
+ var SlotContext = /* @__PURE__ */ React.createContext(-1);
788
+ function ResizablePanelGroup({
789
+ direction,
790
+ autoSaveId,
791
+ onLayout,
792
+ children,
793
+ ...rest
794
+ }) {
795
+ const axis = direction === "horizontal";
796
+ const extent = React.useRef(0);
797
+ const [store, setStore] = React.useState({});
798
+ const slots = React.useMemo(
799
+ () => React.Children.toArray(children).filter(React.isValidElement),
800
+ [children]
801
+ );
802
+ const specs = React.useMemo(
803
+ () => slots.filter((el) => el.type === ResizablePanel).map((el, i) => {
804
+ const p = el.props;
805
+ return {
806
+ id: p.id ?? String(p.order ?? i),
807
+ defaultSize: p.defaultSize,
808
+ minSize: p.minSize,
809
+ maxSize: p.maxSize,
810
+ collapsible: p.collapsible,
811
+ collapsedSize: p.collapsedSize,
812
+ onResize: p.onResize
813
+ };
814
+ }),
815
+ [slots]
816
+ );
817
+ const key = specs.map((s) => s.id).join(",");
818
+ const sizes = store[key] ?? defaultLayout(specs);
819
+ React.useEffect(() => {
820
+ setStore(loadStore(autoSaveId));
821
+ }, [autoSaveId]);
822
+ const setLayout = React.useCallback(
823
+ (next) => {
824
+ const merged = { ...store, [key]: next };
825
+ setStore(merged);
826
+ saveStore(autoSaveId, merged);
827
+ onLayout?.(next);
828
+ },
829
+ [autoSaveId, key, onLayout, store]
830
+ );
831
+ const prev = React.useRef([]);
832
+ React.useEffect(() => {
833
+ specs.forEach((s, i) => {
834
+ if (sizes[i] != null && sizes[i] !== prev.current[i])
835
+ s.onResize?.(sizes[i]);
836
+ });
837
+ prev.current = sizes;
838
+ }, [specs, sizes]);
839
+ const value = React.useMemo(
840
+ () => ({ direction, specs, sizes, extent, setLayout }),
841
+ [direction, specs, sizes, setLayout]
842
+ );
843
+ let panel = -1;
844
+ return /* @__PURE__ */ jsxRuntime.jsx(GroupContext2.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(
845
+ gui.XStack,
846
+ {
847
+ width: "100%",
848
+ height: "100%",
849
+ flexDirection: axis ? "row" : "column",
850
+ overflow: "hidden",
851
+ "data-panel-group-direction": direction,
852
+ onLayout: (e) => {
853
+ extent.current = axis ? e.nativeEvent.layout.width : e.nativeEvent.layout.height;
854
+ },
855
+ ...rest,
856
+ children: slots.map((el, i) => {
857
+ if (el.type === ResizablePanel) panel++;
858
+ return /* @__PURE__ */ jsxRuntime.jsx(SlotContext.Provider, { value: panel, children: el }, el.key ?? i);
859
+ })
860
+ }
861
+ ) });
862
+ }
863
+ function ResizablePanel({
864
+ id,
865
+ order,
866
+ defaultSize,
867
+ minSize,
868
+ maxSize,
869
+ collapsible,
870
+ collapsedSize,
871
+ onResize,
872
+ children,
873
+ ...rest
874
+ }) {
875
+ const group = React.useContext(GroupContext2);
876
+ const index = React.useContext(SlotContext);
877
+ const size = group?.sizes[index];
878
+ return /* @__PURE__ */ jsxRuntime.jsx(
879
+ gui.XStack,
880
+ {
881
+ flexDirection: "column",
882
+ overflow: "hidden",
883
+ flexBasis: 0,
884
+ grow: size ?? 1,
885
+ shrink: 1,
886
+ ...rest,
887
+ children
888
+ }
889
+ );
890
+ }
891
+ var THICKNESS = 4;
892
+ var HIT_SLOP3 = 20;
893
+ var KEY_STEP = 5;
894
+ var KEY_STEP_FINE = 1;
895
+ function ResizableHandle({
896
+ withHandle,
897
+ disabled,
898
+ ...rest
899
+ }) {
900
+ const group = React.useContext(GroupContext2);
901
+ const boundary = React.useContext(SlotContext);
902
+ const [state, setState] = React.useState("idle");
903
+ const start = React.useRef(null);
904
+ const axis = group?.direction !== "vertical";
905
+ const off = disabled || !group || boundary < 0 || boundary + 1 >= group.sizes.length;
906
+ const posOf = React.useCallback(
907
+ (e) => (axis ? e.clientX ?? e.nativeEvent?.pageX : e.clientY ?? e.nativeEvent?.pageY) ?? 0,
908
+ [axis]
909
+ );
910
+ const begin = React.useCallback(
911
+ (e) => {
912
+ if (off || !group) return;
913
+ start.current = { pos: posOf(e), sizes: group.sizes };
914
+ setState("drag");
915
+ const target = e.currentTarget;
916
+ if (target?.setPointerCapture && e.pointerId != null)
917
+ target.setPointerCapture(e.pointerId);
918
+ },
919
+ [group, off, posOf]
920
+ );
921
+ const move = React.useCallback(
922
+ (e) => {
923
+ const from = start.current;
924
+ if (!from || !group) return;
925
+ const px = group.extent.current;
926
+ if (px <= 0) return;
927
+ group.setLayout(
928
+ resizeAt(
929
+ from.sizes,
930
+ group.specs,
931
+ boundary,
932
+ (posOf(e) - from.pos) / px * 100
933
+ )
934
+ );
935
+ },
936
+ [boundary, group, posOf]
937
+ );
938
+ const end = React.useCallback(() => {
939
+ start.current = null;
940
+ setState("idle");
941
+ }, []);
942
+ const nudge = React.useCallback(
943
+ (e) => {
944
+ if (off || !group) return;
945
+ const dir = axis ? e.key === "ArrowLeft" ? -1 : e.key === "ArrowRight" ? 1 : 0 : e.key === "ArrowUp" ? -1 : e.key === "ArrowDown" ? 1 : 0;
946
+ if (dir === 0) return;
947
+ e.preventDefault();
948
+ group.setLayout(
949
+ resizeAt(
950
+ group.sizes,
951
+ group.specs,
952
+ boundary,
953
+ dir * (e.shiftKey ? KEY_STEP_FINE : KEY_STEP)
954
+ )
955
+ );
956
+ },
957
+ [axis, boundary, group, off]
958
+ );
959
+ const hover = React.useCallback(
960
+ (on) => setState((s) => s === "drag" ? s : on ? "hover" : "idle"),
961
+ []
962
+ );
963
+ const gesture = gui.isWeb ? {
964
+ onPointerDown: begin,
965
+ onPointerMove: move,
966
+ onPointerUp: end,
967
+ onPointerCancel: end,
968
+ onKeyDown: nudge,
969
+ onMouseEnter: () => hover(true),
970
+ onMouseLeave: () => hover(false)
971
+ } : {
972
+ onStartShouldSetResponder: () => !off,
973
+ onMoveShouldSetResponder: () => !off,
974
+ onResponderTerminationRequest: () => false,
975
+ onResponderGrant: begin,
976
+ onResponderMove: move,
977
+ onResponderRelease: end,
978
+ onResponderTerminate: end
979
+ };
980
+ return /* @__PURE__ */ jsxRuntime.jsxs(
981
+ gui.XStack,
982
+ {
983
+ position: "relative",
984
+ flexDirection: axis ? "column" : "row",
985
+ items: "center",
986
+ justify: "center",
987
+ shrink: 0,
988
+ width: axis ? THICKNESS : "100%",
989
+ height: axis ? "100%" : THICKNESS,
990
+ hitSlop: HIT_SLOP3,
991
+ cursor: off ? "default" : axis ? "col-resize" : "row-resize",
992
+ tabIndex: off ? -1 : 0,
993
+ role: "separator",
994
+ "aria-orientation": axis ? "vertical" : "horizontal",
995
+ "data-panel-group-direction": group?.direction,
996
+ "data-resize-handle-state": state,
997
+ ...gesture,
998
+ ...rest,
999
+ children: [
1000
+ /* @__PURE__ */ jsxRuntime.jsx(
1001
+ gui.Separator,
1002
+ {
1003
+ vertical: axis,
1004
+ borderColor: state === "idle" ? "$borderColor" : "$color8"
1005
+ }
1006
+ ),
1007
+ withHandle && /* @__PURE__ */ jsxRuntime.jsx(
1008
+ gui.XStack,
1009
+ {
1010
+ position: "absolute",
1011
+ items: "center",
1012
+ justify: "center",
1013
+ width: 12,
1014
+ height: 20,
1015
+ rounded: "$2",
1016
+ bg: "$color5",
1017
+ borderWidth: 1,
1018
+ borderColor: "$borderColor",
1019
+ rotate: axis ? "0deg" : "90deg",
1020
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideIcons2.GripVertical, { size: 10 })
1021
+ }
1022
+ )
1023
+ ]
1024
+ }
1025
+ );
1026
+ }
1027
+ var BAR = 10;
1028
+ var TOUCH2 = 44;
1029
+ var SLOP = (TOUCH2 - BAR) / 2;
1030
+ var ZERO = { offset: 0, viewport: 0, content: 0 };
1031
+ var Ctx = /* @__PURE__ */ React.createContext(null);
1032
+ var clamp2 = (n, max) => n < 0 ? 0 : n > max ? max : n;
1033
+ var ScrollBar = /* @__PURE__ */ React.forwardRef(
1034
+ function ScrollBar2({ orientation = "vertical", ...props }, ref) {
1035
+ const ctx = React.useContext(Ctx);
1036
+ const [len, setLen] = React.useState(0);
1037
+ const from = React.useRef(null);
1038
+ if (!ctx || ctx.axis !== orientation) return null;
1039
+ const vertical = orientation === "vertical";
1040
+ const { content, viewport, offset } = ctx.track;
1041
+ const scrollable = content - viewport;
1042
+ const overflow = scrollable > 1;
1043
+ const shown = ctx.type === "always" ? true : !overflow ? false : ctx.type === "auto" ? true : ctx.active;
1044
+ const thumb = Math.max(TOUCH2, len * (viewport / Math.max(content, 1)));
1045
+ const range = Math.max(len - thumb, 0);
1046
+ const at = overflow ? range * clamp2(offset / scrollable, 1) : 0;
1047
+ const coord = (e) => vertical ? e.nativeEvent.pageY : e.nativeEvent.pageX;
1048
+ return /* @__PURE__ */ jsxRuntime.jsx(
1049
+ gui.XStack,
1050
+ {
1051
+ ref,
1052
+ ...slot("scroll-area-scrollbar"),
1053
+ position: "absolute",
1054
+ ...vertical ? {
1055
+ t: 0,
1056
+ b: 0,
1057
+ ...ctx.rtl ? { l: 0 } : { r: 0 },
1058
+ width: BAR,
1059
+ flexDirection: "column"
1060
+ } : { l: 0, r: 0, b: 0, height: BAR, flexDirection: "row" },
1061
+ p: 1,
1062
+ opacity: shown ? 1 : 0,
1063
+ pointerEvents: shown ? "auto" : "none",
1064
+ onLayout: (e) => setLen(
1065
+ vertical ? e.nativeEvent.layout.height : e.nativeEvent.layout.width
1066
+ ),
1067
+ ...props,
1068
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1069
+ gui.YStack,
1070
+ {
1071
+ ...slot("scroll-area-thumb"),
1072
+ bg: "$borderColor",
1073
+ rounded: BAR,
1074
+ hitSlop: vertical ? { left: SLOP, right: SLOP } : { top: SLOP, bottom: SLOP },
1075
+ ...vertical ? { width: "100%", height: thumb, y: at } : { height: "100%", width: thumb, x: at },
1076
+ onStartShouldSetResponder: () => true,
1077
+ onMoveShouldSetResponder: () => true,
1078
+ onResponderGrant: (e) => {
1079
+ from.current = coord(e);
1080
+ },
1081
+ onResponderMove: (e) => {
1082
+ const start = from.current;
1083
+ if (start === null || range === 0) return;
1084
+ const now = coord(e);
1085
+ from.current = now;
1086
+ ctx.scrollBy((now - start) * scrollable / range);
1087
+ },
1088
+ onResponderRelease: () => {
1089
+ from.current = null;
1090
+ },
1091
+ onResponderTerminate: () => {
1092
+ from.current = null;
1093
+ }
1094
+ }
1095
+ )
1096
+ }
1097
+ );
1098
+ }
1099
+ );
1100
+ var ScrollArea = /* @__PURE__ */ React.forwardRef(
1101
+ function ScrollArea2({
1102
+ type = "hover",
1103
+ scrollHideDelay = 600,
1104
+ dir,
1105
+ horizontal = false,
1106
+ children,
1107
+ ...props
1108
+ }, ref) {
1109
+ const viewport = React.useRef(null);
1110
+ const live = React.useRef(ZERO);
1111
+ const [track, setTrack] = React.useState(ZERO);
1112
+ const [active, setActive] = React.useState(false);
1113
+ const timer = React.useRef(null);
1114
+ const axis = horizontal ? "horizontal" : "vertical";
1115
+ const put = React.useCallback((patch) => {
1116
+ const next = { ...live.current, ...patch };
1117
+ live.current = next;
1118
+ setTrack(next);
1119
+ }, []);
1120
+ const clear = () => {
1121
+ if (timer.current) clearTimeout(timer.current);
1122
+ timer.current = null;
1123
+ };
1124
+ const hold = () => {
1125
+ clear();
1126
+ setActive(true);
1127
+ };
1128
+ const wake = React.useCallback(() => {
1129
+ setActive(true);
1130
+ clear();
1131
+ timer.current = setTimeout(() => setActive(false), scrollHideDelay);
1132
+ }, [scrollHideDelay]);
1133
+ React.useEffect(() => clear, []);
1134
+ const scrollBy = React.useCallback(
1135
+ (delta) => {
1136
+ const t = live.current;
1137
+ const next = clamp2(
1138
+ t.offset + delta,
1139
+ Math.max(t.content - t.viewport, 0)
1140
+ );
1141
+ put({ offset: next });
1142
+ viewport.current?.scrollTo(
1143
+ horizontal ? { x: next, y: 0, animated: false } : { x: 0, y: next, animated: false }
1144
+ );
1145
+ },
1146
+ [horizontal, put]
1147
+ );
1148
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1149
+ gui.YStack,
1150
+ {
1151
+ ref,
1152
+ ...slot("scroll-area"),
1153
+ position: "relative",
1154
+ overflow: "hidden",
1155
+ onMouseEnter: type === "hover" ? hold : void 0,
1156
+ onMouseLeave: type === "hover" ? wake : void 0,
1157
+ ...props,
1158
+ children: [
1159
+ /* @__PURE__ */ jsxRuntime.jsx(
1160
+ gui.ScrollView,
1161
+ {
1162
+ ref: viewport,
1163
+ ...slot("scroll-area-viewport"),
1164
+ flex: 1,
1165
+ width: "100%",
1166
+ height: "100%",
1167
+ horizontal,
1168
+ showsVerticalScrollIndicator: false,
1169
+ showsHorizontalScrollIndicator: false,
1170
+ scrollEventThrottle: 16,
1171
+ onLayout: (e) => put({
1172
+ viewport: horizontal ? e.nativeEvent.layout.width : e.nativeEvent.layout.height
1173
+ }),
1174
+ onContentSizeChange: (w, h) => put({ content: horizontal ? w : h }),
1175
+ onScroll: (e) => {
1176
+ const { contentOffset } = e.nativeEvent;
1177
+ put({ offset: horizontal ? contentOffset.x : contentOffset.y });
1178
+ wake();
1179
+ },
1180
+ children
1181
+ }
1182
+ ),
1183
+ /* @__PURE__ */ jsxRuntime.jsx(
1184
+ Ctx.Provider,
1185
+ {
1186
+ value: { axis, track, type, active, rtl: dir === "rtl", scrollBy },
1187
+ children: /* @__PURE__ */ jsxRuntime.jsx(ScrollBar, { orientation: axis })
1188
+ }
1189
+ )
1190
+ ]
1191
+ }
1192
+ );
1193
+ }
1194
+ );
1195
+ var ROW_H = 32;
1196
+ var HIT_SLOP4 = (44 - ROW_H) / 2;
1197
+ var Select = gui.Select;
1198
+ var SelectGroup = gui.Select.Group;
1199
+ var SelectValue = gui.Select.Value;
1200
+ var SelectTrigger = ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsxs(
1201
+ gui.Select.Trigger,
1202
+ {
1203
+ ...slot("select-trigger"),
1204
+ unstyled: true,
1205
+ items: "center",
1206
+ justify: "space-between",
1207
+ gap: "$2",
1208
+ height: 36,
1209
+ px: "$3",
1210
+ rounded: "$3",
1211
+ borderWidth: 1,
1212
+ borderColor: "$borderColor",
1213
+ bg: "transparent",
1214
+ cursor: "pointer",
1215
+ hitSlop: 4,
1216
+ ...props,
1217
+ children: [
1218
+ ink(children, void 0, { size: "$2" }),
1219
+ /* @__PURE__ */ jsxRuntime.jsx(gui.Select.Icon, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideIcons2.ChevronDown, { size: 16, opacity: 0.5 }) })
1220
+ ]
1221
+ }
1222
+ );
1223
+ var SelectItem = ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsxs(
1224
+ gui.Select.Item,
1225
+ {
1226
+ ...slot("select-item"),
1227
+ unstyled: true,
1228
+ index: props.index ?? 0,
1229
+ items: "center",
1230
+ gap: "$2",
1231
+ minH: ROW_H,
1232
+ pl: "$2",
1233
+ pr: "$7",
1234
+ rounded: "$2",
1235
+ cursor: "pointer",
1236
+ hitSlop: HIT_SLOP4,
1237
+ hoverStyle: { bg: "$color5" },
1238
+ focusStyle: { bg: "$color5" },
1239
+ ...props,
1240
+ children: [
1241
+ /* @__PURE__ */ jsxRuntime.jsx(gui.Select.ItemText, { children }),
1242
+ /* @__PURE__ */ jsxRuntime.jsx(gui.XStack, { position: "absolute", r: "$2", items: "center", justify: "center", pointerEvents: "none", children: /* @__PURE__ */ jsxRuntime.jsx(gui.Select.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideIcons2.Check, { size: 16 }) }) })
1243
+ ]
1244
+ }
1245
+ );
1246
+ var stampIndices = (children, next) => React.Children.map(children, (child) => {
1247
+ if (!React.isValidElement(child)) return child;
1248
+ if (child.type === SelectItem) return React.cloneElement(child, { index: next() });
1249
+ const kids = child.props.children;
1250
+ return kids === void 0 ? child : React.cloneElement(child, void 0, stampIndices(kids, next));
1251
+ });
1252
+ var SelectScrollUpButton = (props) => /* @__PURE__ */ jsxRuntime.jsx(gui.Select.ScrollUpButton, { ...slot("select-scroll-up-button"), items: "center", justify: "center", py: "$1", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(lucideIcons2.ChevronUp, { size: 16 }) });
1253
+ var SelectScrollDownButton = (props) => /* @__PURE__ */ jsxRuntime.jsx(gui.Select.ScrollDownButton, { ...slot("select-scroll-down-button"), items: "center", justify: "center", py: "$1", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(lucideIcons2.ChevronDown, { size: 16 }) });
1254
+ var SelectContent = ({ children, ...props }) => {
1255
+ let n = 0;
1256
+ return /* @__PURE__ */ jsxRuntime.jsxs(gui.Select.Content, { ...slot("select-content"), ...props, children: [
1257
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollUpButton, {}),
1258
+ /* @__PURE__ */ jsxRuntime.jsx(
1259
+ gui.Select.Viewport,
1260
+ {
1261
+ minW: 128,
1262
+ p: "$1",
1263
+ bg: "$color2",
1264
+ borderWidth: 1,
1265
+ borderColor: "$borderColor",
1266
+ rounded: "$4",
1267
+ children: stampIndices(children, () => n++)
1268
+ }
1269
+ ),
1270
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollDownButton, {})
1271
+ ] });
1272
+ };
1273
+ var SelectLabel = (props) => /* @__PURE__ */ jsxRuntime.jsx(gui.Select.Label, { ...slot("select-label"), px: "$2", py: "$1.5", fontSize: "$1", color: "$color11", ...props });
1274
+ var SelectSeparator = (props) => /* @__PURE__ */ jsxRuntime.jsx(gui.SelectSeparator, { ...slot("select-separator"), my: "$1", borderColor: "$borderColor", ...props });
1275
+ var Separator3 = ({ orientation = "horizontal", decorative: _decorative, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
1276
+ gui.Separator,
1277
+ {
1278
+ ...slot("separator"),
1279
+ "data-orientation": orientation,
1280
+ vertical: orientation === "vertical",
1281
+ borderColor: "$borderColor",
1282
+ ...props
1283
+ }
1284
+ );
1285
+ var TRACK = 6;
1286
+ var THUMB = 16;
1287
+ var HIT_SLOP5 = (44 - THUMB) / 2;
1288
+ var Slider = (props) => /* @__PURE__ */ jsxRuntime.jsxs(gui.Slider, { ...slot("slider"), width: "100%", ...props, children: [
1289
+ /* @__PURE__ */ jsxRuntime.jsx(gui.Slider.Track, { ...slot("slider-track"), height: TRACK, bg: "$color4", rounded: "$10", children: /* @__PURE__ */ jsxRuntime.jsx(gui.Slider.TrackActive, { ...slot("slider-range"), bg: "$color12" }) }),
1290
+ /* @__PURE__ */ jsxRuntime.jsx(
1291
+ gui.Slider.Thumb,
1292
+ {
1293
+ ...slot("slider-thumb"),
1294
+ index: 0,
1295
+ circular: true,
1296
+ size: THUMB,
1297
+ bg: "$background",
1298
+ borderWidth: 1,
1299
+ borderColor: "$color12",
1300
+ hitSlop: HIT_SLOP5
1301
+ }
1302
+ )
1303
+ ] });
1304
+ var TRACK_H = 20;
1305
+ var THUMB2 = 16;
1306
+ var HIT_SLOP6 = (44 - TRACK_H) / 2;
1307
+ var Switch = (props) => /* @__PURE__ */ jsxRuntime.jsx(
1308
+ gui.Switch,
1309
+ {
1310
+ ...slot("switch"),
1311
+ width: 36,
1312
+ height: TRACK_H,
1313
+ p: 2,
1314
+ shrink: 0,
1315
+ hitSlop: HIT_SLOP6,
1316
+ ...props,
1317
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1318
+ gui.Switch.Thumb,
1319
+ {
1320
+ ...slot("switch-thumb"),
1321
+ width: THUMB2,
1322
+ height: THUMB2
1323
+ }
1324
+ )
1325
+ }
1326
+ );
1327
+ var ROW_H2 = 36;
1328
+ var HIT_SLOP7 = (44 - ROW_H2) / 2;
1329
+ var Tabs = (p) => /* @__PURE__ */ jsxRuntime.jsx(gui.Tabs, { ...slot("tabs"), flexDirection: "column", gap: "$2", ...p });
1330
+ var TabsList = (p) => /* @__PURE__ */ jsxRuntime.jsx(
1331
+ gui.Tabs.List,
1332
+ {
1333
+ ...slot("tabs-list"),
1334
+ items: "center",
1335
+ justify: "center",
1336
+ self: "flex-start",
1337
+ height: ROW_H2,
1338
+ p: 3,
1339
+ gap: 2,
1340
+ bg: "$color3",
1341
+ rounded: "$4",
1342
+ ...p
1343
+ }
1344
+ );
1345
+ var TabsTrigger = ({ children, ...p }) => /* @__PURE__ */ jsxRuntime.jsx(
1346
+ gui.Tabs.Tab,
1347
+ {
1348
+ ...slot("tabs-trigger"),
1349
+ unstyled: true,
1350
+ items: "center",
1351
+ justify: "center",
1352
+ height: "100%",
1353
+ px: "$3",
1354
+ gap: "$1.5",
1355
+ rounded: "$3",
1356
+ cursor: "pointer",
1357
+ hitSlop: HIT_SLOP7,
1358
+ hoverStyle: { bg: "$color4" },
1359
+ focusStyle: { bg: "$color4" },
1360
+ ...p,
1361
+ children: ink(children, void 0, { size: "$2", fontWeight: "500" })
1362
+ }
1363
+ );
1364
+ var TabsContent = (p) => /* @__PURE__ */ jsxRuntime.jsx(gui.Tabs.Content, { ...slot("tabs-content"), flex: 1, ...p });
1365
+ var MIN_ROWS = 3;
1366
+ var rowsOf = (v) => typeof v === "string" ? v.split("\n").length : 0;
1367
+ var Textarea = /* @__PURE__ */ React__namespace.forwardRef(function Textarea2({ rows, value, defaultValue, ...props }, ref) {
1368
+ const [typed, setTyped] = React__namespace.useState(() => rowsOf(defaultValue));
1369
+ const uncontrolled = value === void 0;
1370
+ const invalid = props["aria-invalid"];
1371
+ return /* @__PURE__ */ jsxRuntime.jsx(
1372
+ gui.TextArea,
1373
+ {
1374
+ ref,
1375
+ "data-slot": "textarea",
1376
+ rows: Math.max(rows ?? MIN_ROWS, uncontrolled ? typed : rowsOf(value)),
1377
+ value,
1378
+ defaultValue,
1379
+ onChangeText: uncontrolled ? (t) => setTyped(rowsOf(t)) : void 0,
1380
+ width: "100%",
1381
+ minH: 64,
1382
+ rounded: "$4",
1383
+ bg: "transparent",
1384
+ borderWidth: 1,
1385
+ borderColor: invalid && invalid !== "false" ? "$red7" : "$borderColor",
1386
+ placeholderTextColor: "$color10",
1387
+ fontSize: "$3",
1388
+ opacity: props.disabled ? 0.5 : 1,
1389
+ ...props
1390
+ }
1391
+ );
1392
+ });
1393
+ var Toaster = /* @__PURE__ */ React.forwardRef(function Toaster2(props, ref) {
1394
+ const { theme = "system", toastOptions, ...rest } = props;
1395
+ return /* @__PURE__ */ jsxRuntime.jsx(v2.Toaster, { ref, theme, toastOptions, ...rest });
1396
+ });
1397
+ var DEFAULT_OFFSET2 = 4;
1398
+ var Tooltip = (props) => /* @__PURE__ */ jsxRuntime.jsx(gui.Tooltip, { offset: DEFAULT_OFFSET2, ...props });
1399
+ var TooltipTrigger = gui.Tooltip.Trigger;
1400
+ var TooltipProvider = gui.TooltipGroup;
1401
+ var TooltipContent = ({ sideOffset: _sideOffset, children, ...props }) => {
1402
+ const themeName = chunkDC52DQ27_cjs.useThemeName();
1403
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkDC52DQ27_cjs.PortalTheme, { name: themeName, children: /* @__PURE__ */ jsxRuntime.jsx(
1404
+ gui.Tooltip.Content,
1405
+ {
1406
+ ...slot("tooltip-content"),
1407
+ bg: "$color2",
1408
+ borderWidth: 1,
1409
+ borderColor: "$borderColor",
1410
+ rounded: "$3",
1411
+ px: "$3",
1412
+ py: "$1.5",
1413
+ ...props,
1414
+ children: ink(children, void 0, { size: "$1" })
1415
+ }
1416
+ ) });
1417
+ };
1418
+
1419
+ Object.defineProperty(exports, "toast", {
1420
+ enumerable: true,
1421
+ get: function () { return v2.toast; }
1422
+ });
1423
+ exports.AspectRatio = AspectRatio;
1424
+ exports.Avatar = Avatar;
1425
+ exports.AvatarFallback = AvatarFallback;
1426
+ exports.AvatarImage = AvatarImage;
1427
+ exports.Badge = Badge;
1428
+ exports.Button = Button;
1429
+ exports.Card = Card;
1430
+ exports.CardAction = CardAction;
1431
+ exports.CardContent = CardContent;
1432
+ exports.CardDescription = CardDescription;
1433
+ exports.CardFooter = CardFooter;
1434
+ exports.CardHeader = CardHeader;
1435
+ exports.CardTitle = CardTitle;
1436
+ exports.Checkbox = Checkbox;
1437
+ exports.Collapsible = Collapsible;
1438
+ exports.CollapsibleContent = CollapsibleContent;
1439
+ exports.CollapsibleTrigger = CollapsibleTrigger;
1440
+ exports.Command = Command;
1441
+ exports.CommandDialog = CommandDialog;
1442
+ exports.CommandEmpty = CommandEmpty;
1443
+ exports.CommandGroup = CommandGroup;
1444
+ exports.CommandInput = CommandInput;
1445
+ exports.CommandItem = CommandItem;
1446
+ exports.CommandList = CommandList;
1447
+ exports.CommandSeparator = CommandSeparator;
1448
+ exports.CommandShortcut = CommandShortcut;
1449
+ exports.Dialog = Dialog2;
1450
+ exports.DialogClose = DialogClose;
1451
+ exports.DialogContent = DialogContent2;
1452
+ exports.DialogDescription = DialogDescription2;
1453
+ exports.DialogFooter = DialogFooter;
1454
+ exports.DialogHeader = DialogHeader;
1455
+ exports.DialogOverlay = DialogOverlay2;
1456
+ exports.DialogPortal = DialogPortal2;
1457
+ exports.DialogTitle = DialogTitle2;
1458
+ exports.DialogTrigger = DialogTrigger;
1459
+ exports.Input = Input2;
1460
+ exports.Label = Label;
1461
+ exports.Popover = Popover;
1462
+ exports.PopoverAnchor = PopoverAnchor;
1463
+ exports.PopoverClose = PopoverClose;
1464
+ exports.PopoverContent = PopoverContent;
1465
+ exports.PopoverTrigger = PopoverTrigger;
1466
+ exports.Progress = Progress;
1467
+ exports.ResizableHandle = ResizableHandle;
1468
+ exports.ResizablePanel = ResizablePanel;
1469
+ exports.ResizablePanelGroup = ResizablePanelGroup;
1470
+ exports.ScrollArea = ScrollArea;
1471
+ exports.ScrollBar = ScrollBar;
1472
+ exports.Select = Select;
1473
+ exports.SelectContent = SelectContent;
1474
+ exports.SelectGroup = SelectGroup;
1475
+ exports.SelectItem = SelectItem;
1476
+ exports.SelectLabel = SelectLabel;
1477
+ exports.SelectScrollDownButton = SelectScrollDownButton;
1478
+ exports.SelectScrollUpButton = SelectScrollUpButton;
1479
+ exports.SelectSeparator = SelectSeparator;
1480
+ exports.SelectTrigger = SelectTrigger;
1481
+ exports.SelectValue = SelectValue;
1482
+ exports.Separator = Separator3;
1483
+ exports.Slider = Slider;
1484
+ exports.Switch = Switch;
1485
+ exports.Tabs = Tabs;
1486
+ exports.TabsContent = TabsContent;
1487
+ exports.TabsList = TabsList;
1488
+ exports.TabsTrigger = TabsTrigger;
1489
+ exports.Textarea = Textarea;
1490
+ exports.Toaster = Toaster;
1491
+ exports.Tooltip = Tooltip;
1492
+ exports.TooltipContent = TooltipContent;
1493
+ exports.TooltipProvider = TooltipProvider;
1494
+ exports.TooltipTrigger = TooltipTrigger;
1495
+ exports.badgeVariants = badgeVariants;
1496
+ exports.buttonVariants = buttonVariants;
1497
+ //# sourceMappingURL=chunk-6KZWRBK2.cjs.map
1498
+ //# sourceMappingURL=chunk-6KZWRBK2.cjs.map