@hanzo/ui 8.0.26 → 8.0.28

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 (1193) hide show
  1. package/README.md +1 -1
  2. package/dist/backends/gui/aspect-ratio.cjs +15 -0
  3. package/dist/backends/gui/aspect-ratio.d.ts +15 -0
  4. package/dist/backends/gui/aspect-ratio.d.ts.map +1 -0
  5. package/dist/backends/gui/aspect-ratio.js +13 -0
  6. package/dist/backends/gui/aspect-ratio.js.map +1 -0
  7. package/dist/backends/gui/avatar.cjs +20 -0
  8. package/dist/backends/gui/avatar.d.ts +17 -0
  9. package/dist/backends/gui/avatar.d.ts.map +1 -0
  10. package/dist/backends/gui/avatar.js +16 -0
  11. package/dist/backends/gui/avatar.js.map +1 -0
  12. package/dist/backends/gui/badge.cjs +80 -0
  13. package/dist/backends/gui/badge.d.ts +20 -0
  14. package/dist/backends/gui/badge.d.ts.map +1 -0
  15. package/dist/backends/gui/badge.js +76 -0
  16. package/dist/backends/gui/badge.js.map +1 -0
  17. package/dist/backends/gui/button.cjs +114 -0
  18. package/dist/backends/gui/button.d.ts +30 -0
  19. package/dist/backends/gui/button.d.ts.map +1 -0
  20. package/dist/backends/gui/button.js +111 -0
  21. package/dist/backends/gui/button.js.map +1 -0
  22. package/dist/backends/gui/card.cjs +49 -0
  23. package/dist/backends/gui/card.d.ts +45 -0
  24. package/dist/backends/gui/card.d.ts.map +1 -0
  25. package/dist/backends/gui/card.js +41 -0
  26. package/dist/backends/gui/card.js.map +1 -0
  27. package/dist/backends/gui/checkbox.cjs +16 -0
  28. package/dist/backends/gui/checkbox.d.ts +10 -0
  29. package/dist/backends/gui/checkbox.d.ts.map +1 -0
  30. package/dist/backends/gui/checkbox.js +14 -0
  31. package/dist/backends/gui/checkbox.js.map +1 -0
  32. package/dist/backends/gui/collapsible.cjs +15 -0
  33. package/dist/backends/gui/collapsible.d.ts +11 -0
  34. package/dist/backends/gui/collapsible.d.ts.map +1 -0
  35. package/dist/backends/gui/collapsible.js +11 -0
  36. package/dist/backends/gui/collapsible.js.map +1 -0
  37. package/dist/backends/gui/command.cjs +198 -0
  38. package/dist/backends/gui/command.d.ts +87 -0
  39. package/dist/backends/gui/command.d.ts.map +1 -0
  40. package/dist/backends/gui/command.js +188 -0
  41. package/dist/backends/gui/command.js.map +1 -0
  42. package/dist/backends/gui/command.logic.cjs +49 -0
  43. package/dist/backends/gui/command.logic.d.ts +21 -0
  44. package/dist/backends/gui/command.logic.d.ts.map +1 -0
  45. package/dist/backends/gui/command.logic.js +45 -0
  46. package/dist/backends/gui/command.logic.js.map +1 -0
  47. package/dist/backends/gui/dialog.cjs +41 -0
  48. package/dist/backends/gui/dialog.d.ts +28 -0
  49. package/dist/backends/gui/dialog.d.ts.map +1 -0
  50. package/dist/backends/gui/dialog.js +30 -0
  51. package/dist/backends/gui/dialog.js.map +1 -0
  52. package/dist/backends/gui/dropdown-menu.cjs +168 -0
  53. package/dist/backends/gui/dropdown-menu.d.ts +99 -0
  54. package/dist/backends/gui/dropdown-menu.d.ts.map +1 -0
  55. package/dist/backends/gui/dropdown-menu.js +119 -0
  56. package/dist/backends/gui/dropdown-menu.js.map +1 -0
  57. package/dist/backends/gui/gesture.cjs +74 -0
  58. package/dist/backends/gui/gesture.d.ts +68 -0
  59. package/dist/backends/gui/gesture.d.ts.map +1 -0
  60. package/dist/backends/gui/gesture.js +69 -0
  61. package/dist/backends/gui/gesture.js.map +1 -0
  62. package/dist/backends/gui/index.cjs +134 -0
  63. package/dist/backends/gui/index.d.ts +25 -2
  64. package/dist/backends/gui/index.d.ts.map +1 -0
  65. package/dist/backends/gui/index.js +41 -0
  66. package/dist/backends/gui/index.js.map +1 -0
  67. package/dist/backends/gui/ink.cjs +14 -0
  68. package/dist/backends/gui/ink.d.ts +8 -0
  69. package/dist/backends/gui/ink.d.ts.map +1 -0
  70. package/dist/backends/gui/ink.js +11 -0
  71. package/dist/backends/gui/ink.js.map +1 -0
  72. package/dist/backends/gui/input.cjs +39 -0
  73. package/dist/backends/gui/input.d.ts +20 -0
  74. package/dist/backends/gui/input.d.ts.map +1 -0
  75. package/dist/backends/gui/input.js +37 -0
  76. package/dist/backends/gui/input.js.map +1 -0
  77. package/dist/backends/gui/label.cjs +10 -0
  78. package/dist/backends/gui/label.d.ts +7 -0
  79. package/dist/backends/gui/label.d.ts.map +1 -0
  80. package/dist/backends/gui/label.js +8 -0
  81. package/dist/backends/gui/label.js.map +1 -0
  82. package/dist/backends/gui/popover.cjs +39 -0
  83. package/dist/backends/gui/popover.d.ts +23 -0
  84. package/dist/backends/gui/popover.d.ts.map +1 -0
  85. package/dist/backends/gui/popover.js +33 -0
  86. package/dist/backends/gui/popover.js.map +1 -0
  87. package/dist/backends/gui/progress.cjs +10 -0
  88. package/dist/backends/gui/progress.d.ts +7 -0
  89. package/dist/backends/gui/progress.d.ts.map +1 -0
  90. package/dist/backends/gui/progress.js +8 -0
  91. package/dist/backends/gui/progress.js.map +1 -0
  92. package/dist/backends/gui/resizable.cjs +174 -0
  93. package/dist/backends/gui/resizable.d.ts +54 -0
  94. package/dist/backends/gui/resizable.d.ts.map +1 -0
  95. package/dist/backends/gui/resizable.js +168 -0
  96. package/dist/backends/gui/resizable.js.map +1 -0
  97. package/dist/backends/gui/resizable.logic.cjs +46 -0
  98. package/dist/backends/gui/resizable.logic.d.ts +24 -0
  99. package/dist/backends/gui/resizable.logic.d.ts.map +1 -0
  100. package/dist/backends/gui/resizable.logic.js +43 -0
  101. package/dist/backends/gui/resizable.logic.js.map +1 -0
  102. package/dist/backends/gui/scroll-area.cjs +126 -0
  103. package/dist/backends/gui/scroll-area.d.ts +46 -0
  104. package/dist/backends/gui/scroll-area.d.ts.map +1 -0
  105. package/dist/backends/gui/scroll-area.js +123 -0
  106. package/dist/backends/gui/scroll-area.js.map +1 -0
  107. package/dist/backends/gui/select.cjs +54 -0
  108. package/dist/backends/gui/select.d.ts +31 -0
  109. package/dist/backends/gui/select.d.ts.map +1 -0
  110. package/dist/backends/gui/select.js +43 -0
  111. package/dist/backends/gui/select.js.map +1 -0
  112. package/dist/backends/gui/separator.cjs +10 -0
  113. package/dist/backends/gui/separator.d.ts +11 -0
  114. package/dist/backends/gui/separator.d.ts.map +1 -0
  115. package/dist/backends/gui/separator.js +8 -0
  116. package/dist/backends/gui/separator.js.map +1 -0
  117. package/dist/backends/gui/slider.cjs +13 -0
  118. package/dist/backends/gui/slider.d.ts +7 -0
  119. package/dist/backends/gui/slider.d.ts.map +1 -0
  120. package/dist/backends/gui/slider.js +11 -0
  121. package/dist/backends/gui/slider.js.map +1 -0
  122. package/dist/backends/gui/slot.cjs +10 -0
  123. package/dist/backends/gui/slot.d.ts +7 -0
  124. package/dist/backends/gui/slot.d.ts.map +1 -0
  125. package/dist/backends/gui/slot.js +7 -0
  126. package/dist/backends/gui/slot.js.map +1 -0
  127. package/dist/backends/gui/switch.cjs +13 -0
  128. package/dist/backends/gui/switch.d.ts +7 -0
  129. package/dist/backends/gui/switch.d.ts.map +1 -0
  130. package/dist/backends/gui/switch.js +11 -0
  131. package/dist/backends/gui/switch.js.map +1 -0
  132. package/dist/backends/gui/tabs.cjs +19 -0
  133. package/dist/backends/gui/tabs.d.ts +13 -0
  134. package/dist/backends/gui/tabs.d.ts.map +1 -0
  135. package/dist/backends/gui/tabs.js +14 -0
  136. package/dist/backends/gui/tabs.js.map +1 -0
  137. package/dist/backends/gui/textarea.cjs +58 -0
  138. package/dist/backends/gui/textarea.d.ts +12 -0
  139. package/dist/backends/gui/textarea.d.ts.map +1 -0
  140. package/dist/backends/gui/textarea.js +23 -0
  141. package/dist/backends/gui/textarea.js.map +1 -0
  142. package/dist/backends/gui/toaster.cjs +13 -0
  143. package/dist/backends/gui/toaster.d.ts +29 -0
  144. package/dist/backends/gui/toaster.d.ts.map +1 -0
  145. package/dist/backends/gui/toaster.js +10 -0
  146. package/dist/backends/gui/toaster.js.map +1 -0
  147. package/dist/backends/gui/tooltip.cjs +22 -0
  148. package/dist/backends/gui/tooltip.d.ts +13 -0
  149. package/dist/backends/gui/tooltip.d.ts.map +1 -0
  150. package/dist/backends/gui/tooltip.js +17 -0
  151. package/dist/backends/gui/tooltip.js.map +1 -0
  152. package/dist/canvas.cjs +27 -14
  153. package/dist/canvas.d.ts +1 -0
  154. package/dist/canvas.d.ts.map +1 -0
  155. package/dist/canvas.js +10 -1
  156. package/dist/canvas.js.map +1 -1
  157. package/dist/cd/layout.cjs +143 -0
  158. package/dist/cd/layout.d.ts +1 -0
  159. package/dist/cd/layout.d.ts.map +1 -0
  160. package/dist/cd/layout.js +141 -0
  161. package/dist/cd/layout.js.map +1 -0
  162. package/dist/cd/status.cjs +132 -0
  163. package/dist/cd/status.d.ts +2 -1
  164. package/dist/cd/status.d.ts.map +1 -0
  165. package/dist/cd/status.js +120 -0
  166. package/dist/cd/status.js.map +1 -0
  167. package/dist/cd/time.cjs +60 -0
  168. package/dist/cd/time.d.ts +1 -0
  169. package/dist/cd/time.d.ts.map +1 -0
  170. package/dist/cd/time.js +56 -0
  171. package/dist/cd/time.js.map +1 -0
  172. package/dist/cd/types.cjs +19 -0
  173. package/dist/cd/types.d.ts +1 -0
  174. package/dist/cd/types.d.ts.map +1 -0
  175. package/dist/cd/types.js +19 -0
  176. package/dist/cd/types.js.map +1 -0
  177. package/dist/core/cn.cjs +15 -0
  178. package/dist/core/cn.d.ts +5 -5
  179. package/dist/core/cn.d.ts.map +1 -0
  180. package/dist/core/cn.js +13 -0
  181. package/dist/core/cn.js.map +1 -0
  182. package/dist/core/fonts.cjs +26 -0
  183. package/dist/core/fonts.d.ts +1 -0
  184. package/dist/core/fonts.d.ts.map +1 -0
  185. package/dist/core/fonts.js +24 -0
  186. package/dist/core/fonts.js.map +1 -0
  187. package/dist/core/index.cjs +31 -0
  188. package/dist/core/index.d.ts +4 -3
  189. package/dist/core/index.d.ts.map +1 -0
  190. package/dist/core/index.js +9 -0
  191. package/dist/core/index.js.map +1 -0
  192. package/dist/core/tokens.cjs +35 -0
  193. package/dist/core/tokens.d.ts +1 -0
  194. package/dist/core/tokens.d.ts.map +1 -0
  195. package/dist/core/tokens.js +16 -0
  196. package/dist/core/tokens.js.map +1 -0
  197. package/dist/dashboard.cjs +24 -14
  198. package/dist/dashboard.d.ts +1 -0
  199. package/dist/dashboard.d.ts.map +1 -0
  200. package/dist/dashboard.js +7 -1
  201. package/dist/dashboard.js.map +1 -1
  202. package/dist/data.cjs +28 -14
  203. package/dist/data.d.ts +1 -0
  204. package/dist/data.d.ts.map +1 -0
  205. package/dist/data.js +11 -1
  206. package/dist/data.js.map +1 -1
  207. package/dist/framework/CollectionBuilder.cjs +77 -0
  208. package/dist/framework/CollectionBuilder.d.ts +3 -2
  209. package/dist/framework/CollectionBuilder.d.ts.map +1 -0
  210. package/dist/framework/CollectionBuilder.js +75 -0
  211. package/dist/framework/CollectionBuilder.js.map +1 -0
  212. package/dist/framework/CollectionsBrowser.cjs +107 -0
  213. package/dist/framework/CollectionsBrowser.d.ts +3 -2
  214. package/dist/framework/CollectionsBrowser.d.ts.map +1 -0
  215. package/dist/framework/CollectionsBrowser.js +105 -0
  216. package/dist/framework/CollectionsBrowser.js.map +1 -0
  217. package/dist/framework/DocTypeDetail.cjs +187 -0
  218. package/dist/framework/DocTypeDetail.d.ts +2 -1
  219. package/dist/framework/DocTypeDetail.d.ts.map +1 -0
  220. package/dist/framework/DocTypeDetail.js +185 -0
  221. package/dist/framework/DocTypeDetail.js.map +1 -0
  222. package/dist/framework/DocTypeRecords.cjs +130 -0
  223. package/dist/framework/DocTypeRecords.d.ts +4 -3
  224. package/dist/framework/DocTypeRecords.d.ts.map +1 -0
  225. package/dist/framework/DocTypeRecords.js +128 -0
  226. package/dist/framework/DocTypeRecords.js.map +1 -0
  227. package/dist/framework/MediaGrid.cjs +134 -0
  228. package/dist/framework/MediaGrid.d.ts +4 -3
  229. package/dist/framework/MediaGrid.d.ts.map +1 -0
  230. package/dist/framework/MediaGrid.js +132 -0
  231. package/dist/framework/MediaGrid.js.map +1 -0
  232. package/dist/framework/RecordCards.cjs +47 -0
  233. package/dist/framework/RecordCards.d.ts +1 -0
  234. package/dist/framework/RecordCards.d.ts.map +1 -0
  235. package/dist/framework/RecordCards.js +45 -0
  236. package/dist/framework/RecordCards.js.map +1 -0
  237. package/dist/framework/builder-logic.cjs +169 -0
  238. package/dist/framework/builder-logic.d.ts +2 -1
  239. package/dist/framework/builder-logic.d.ts.map +1 -0
  240. package/dist/framework/builder-logic.js +156 -0
  241. package/dist/framework/builder-logic.js.map +1 -0
  242. package/dist/framework/client.cjs +95 -0
  243. package/dist/framework/client.d.ts +2 -1
  244. package/dist/framework/client.d.ts.map +1 -0
  245. package/dist/framework/client.js +91 -0
  246. package/dist/framework/client.js.map +1 -0
  247. package/dist/framework/core.cjs +36 -212
  248. package/dist/framework/core.d.ts +7 -6
  249. package/dist/framework/core.d.ts.map +1 -0
  250. package/dist/framework/core.js +20 -2
  251. package/dist/framework/core.js.map +1 -1
  252. package/dist/framework/data.cjs +41 -0
  253. package/dist/framework/data.d.ts +3 -2
  254. package/dist/framework/data.d.ts.map +1 -0
  255. package/dist/framework/data.js +38 -0
  256. package/dist/framework/data.js.map +1 -0
  257. package/dist/framework/fields.cjs +358 -0
  258. package/dist/framework/fields.d.ts +2 -1
  259. package/dist/framework/fields.d.ts.map +1 -0
  260. package/dist/framework/fields.js +335 -0
  261. package/dist/framework/fields.js.map +1 -0
  262. package/dist/framework/index.cjs +58 -1339
  263. package/dist/framework/index.d.ts +10 -9
  264. package/dist/framework/index.d.ts.map +1 -0
  265. package/dist/framework/index.js +35 -1117
  266. package/dist/framework/index.js.map +1 -1
  267. package/dist/framework/media.cjs +133 -0
  268. package/dist/framework/media.d.ts +2 -1
  269. package/dist/framework/media.d.ts.map +1 -0
  270. package/dist/framework/media.js +124 -0
  271. package/dist/framework/media.js.map +1 -0
  272. package/dist/framework/parts.cjs +60 -0
  273. package/dist/framework/parts.d.ts +1 -0
  274. package/dist/framework/parts.d.ts.map +1 -0
  275. package/dist/framework/parts.js +51 -0
  276. package/dist/framework/parts.js.map +1 -0
  277. package/dist/framework/responsive.cjs +62 -0
  278. package/dist/framework/responsive.d.ts +1 -0
  279. package/dist/framework/responsive.d.ts.map +1 -0
  280. package/dist/framework/responsive.js +58 -0
  281. package/dist/framework/responsive.js.map +1 -0
  282. package/dist/framework/types.cjs +20 -0
  283. package/dist/framework/types.d.ts +1 -0
  284. package/dist/framework/types.d.ts.map +1 -0
  285. package/dist/framework/types.js +18 -0
  286. package/dist/framework/types.js.map +1 -0
  287. package/dist/gitops.cjs +21 -14
  288. package/dist/gitops.d.ts +1 -0
  289. package/dist/gitops.d.ts.map +1 -0
  290. package/dist/gitops.js +4 -1
  291. package/dist/gitops.js.map +1 -1
  292. package/dist/gui-config.cjs +145 -112
  293. package/dist/gui-config.d.ts +1 -0
  294. package/dist/gui-config.d.ts.map +1 -0
  295. package/dist/gui-config.js +140 -104
  296. package/dist/gui-config.js.map +1 -1
  297. package/dist/index.cjs +40 -1144
  298. package/dist/index.d.ts +3 -2
  299. package/dist/index.d.ts.map +1 -0
  300. package/dist/index.js +23 -1018
  301. package/dist/index.js.map +1 -1
  302. package/dist/models/ModelSelector.cjs +58 -0
  303. package/dist/models/ModelSelector.d.ts +10 -6
  304. package/dist/models/ModelSelector.d.ts.map +1 -0
  305. package/dist/models/ModelSelector.js +56 -0
  306. package/dist/models/ModelSelector.js.map +1 -0
  307. package/dist/models/catalog.cjs +191 -0
  308. package/dist/models/catalog.d.ts +2 -1
  309. package/dist/models/catalog.d.ts.map +1 -0
  310. package/dist/models/catalog.js +185 -0
  311. package/dist/models/catalog.js.map +1 -0
  312. package/dist/models/index.cjs +16 -0
  313. package/dist/models/index.d.ts +6 -5
  314. package/dist/models/index.d.ts.map +1 -0
  315. package/dist/models/index.js +8 -0
  316. package/dist/models/index.js.map +1 -0
  317. package/dist/models/types.cjs +8 -0
  318. package/dist/models/types.d.ts +1 -0
  319. package/dist/models/types.d.ts.map +1 -0
  320. package/dist/models/types.js +8 -0
  321. package/dist/models/types.js.map +1 -0
  322. package/dist/oss/blueprint.cjs +96 -0
  323. package/dist/oss/blueprint.d.ts +1 -0
  324. package/dist/oss/blueprint.d.ts.map +1 -0
  325. package/dist/oss/blueprint.js +94 -0
  326. package/dist/oss/blueprint.js.map +1 -0
  327. package/dist/oss/catalog.cjs +174 -0
  328. package/dist/oss/catalog.d.ts +1 -0
  329. package/dist/oss/catalog.d.ts.map +1 -0
  330. package/dist/oss/catalog.js +165 -0
  331. package/dist/oss/catalog.js.map +1 -0
  332. package/dist/oss.cjs +27 -188
  333. package/dist/oss.d.ts +3 -2
  334. package/dist/oss.d.ts.map +1 -0
  335. package/dist/oss.js +12 -178
  336. package/dist/oss.js.map +1 -1
  337. package/dist/primitives/AspectRatio.cjs +8 -0
  338. package/dist/primitives/AspectRatio.d.ts +2 -1
  339. package/dist/primitives/AspectRatio.d.ts.map +1 -0
  340. package/dist/primitives/AspectRatio.js +5 -0
  341. package/dist/primitives/AspectRatio.js.map +1 -0
  342. package/dist/primitives/Avatar.cjs +8 -0
  343. package/dist/primitives/Avatar.d.ts +2 -1
  344. package/dist/primitives/Avatar.d.ts.map +1 -0
  345. package/dist/primitives/Avatar.js +5 -0
  346. package/dist/primitives/Avatar.js.map +1 -0
  347. package/dist/primitives/AvatarFallback.cjs +8 -0
  348. package/dist/primitives/AvatarFallback.d.ts +2 -1
  349. package/dist/primitives/AvatarFallback.d.ts.map +1 -0
  350. package/dist/primitives/AvatarFallback.js +5 -0
  351. package/dist/primitives/AvatarFallback.js.map +1 -0
  352. package/dist/primitives/AvatarImage.cjs +8 -0
  353. package/dist/primitives/AvatarImage.d.ts +2 -1
  354. package/dist/primitives/AvatarImage.d.ts.map +1 -0
  355. package/dist/primitives/AvatarImage.js +5 -0
  356. package/dist/primitives/AvatarImage.js.map +1 -0
  357. package/dist/primitives/Badge.cjs +8 -0
  358. package/dist/primitives/Badge.d.ts +2 -1
  359. package/dist/primitives/Badge.d.ts.map +1 -0
  360. package/dist/primitives/Badge.js +5 -0
  361. package/dist/primitives/Badge.js.map +1 -0
  362. package/dist/primitives/Button.cjs +8 -0
  363. package/dist/primitives/Button.d.ts +2 -1
  364. package/dist/primitives/Button.d.ts.map +1 -0
  365. package/dist/primitives/Button.js +5 -0
  366. package/dist/primitives/Button.js.map +1 -0
  367. package/dist/primitives/Card.cjs +8 -0
  368. package/dist/primitives/Card.d.ts +2 -1
  369. package/dist/primitives/Card.d.ts.map +1 -0
  370. package/dist/primitives/Card.js +5 -0
  371. package/dist/primitives/Card.js.map +1 -0
  372. package/dist/primitives/CardAction.cjs +8 -0
  373. package/dist/primitives/CardAction.d.ts +2 -1
  374. package/dist/primitives/CardAction.d.ts.map +1 -0
  375. package/dist/primitives/CardAction.js +5 -0
  376. package/dist/primitives/CardAction.js.map +1 -0
  377. package/dist/primitives/CardContent.cjs +8 -0
  378. package/dist/primitives/CardContent.d.ts +2 -1
  379. package/dist/primitives/CardContent.d.ts.map +1 -0
  380. package/dist/primitives/CardContent.js +5 -0
  381. package/dist/primitives/CardContent.js.map +1 -0
  382. package/dist/primitives/CardDescription.cjs +8 -0
  383. package/dist/primitives/CardDescription.d.ts +2 -1
  384. package/dist/primitives/CardDescription.d.ts.map +1 -0
  385. package/dist/primitives/CardDescription.js +5 -0
  386. package/dist/primitives/CardDescription.js.map +1 -0
  387. package/dist/primitives/CardFooter.cjs +8 -0
  388. package/dist/primitives/CardFooter.d.ts +2 -1
  389. package/dist/primitives/CardFooter.d.ts.map +1 -0
  390. package/dist/primitives/CardFooter.js +5 -0
  391. package/dist/primitives/CardFooter.js.map +1 -0
  392. package/dist/primitives/CardHeader.cjs +8 -0
  393. package/dist/primitives/CardHeader.d.ts +2 -1
  394. package/dist/primitives/CardHeader.d.ts.map +1 -0
  395. package/dist/primitives/CardHeader.js +5 -0
  396. package/dist/primitives/CardHeader.js.map +1 -0
  397. package/dist/primitives/CardTitle.cjs +8 -0
  398. package/dist/primitives/CardTitle.d.ts +2 -1
  399. package/dist/primitives/CardTitle.d.ts.map +1 -0
  400. package/dist/primitives/CardTitle.js +5 -0
  401. package/dist/primitives/CardTitle.js.map +1 -0
  402. package/dist/primitives/Checkbox.cjs +8 -0
  403. package/dist/primitives/Checkbox.d.ts +2 -1
  404. package/dist/primitives/Checkbox.d.ts.map +1 -0
  405. package/dist/primitives/Checkbox.js +5 -0
  406. package/dist/primitives/Checkbox.js.map +1 -0
  407. package/dist/primitives/Collapsible.cjs +8 -0
  408. package/dist/primitives/Collapsible.d.ts +2 -1
  409. package/dist/primitives/Collapsible.d.ts.map +1 -0
  410. package/dist/primitives/Collapsible.js +5 -0
  411. package/dist/primitives/Collapsible.js.map +1 -0
  412. package/dist/primitives/CollapsibleContent.cjs +8 -0
  413. package/dist/primitives/CollapsibleContent.d.ts +2 -1
  414. package/dist/primitives/CollapsibleContent.d.ts.map +1 -0
  415. package/dist/primitives/CollapsibleContent.js +5 -0
  416. package/dist/primitives/CollapsibleContent.js.map +1 -0
  417. package/dist/primitives/CollapsibleTrigger.cjs +8 -0
  418. package/dist/primitives/CollapsibleTrigger.d.ts +2 -1
  419. package/dist/primitives/CollapsibleTrigger.d.ts.map +1 -0
  420. package/dist/primitives/CollapsibleTrigger.js +5 -0
  421. package/dist/primitives/CollapsibleTrigger.js.map +1 -0
  422. package/dist/primitives/Command.cjs +8 -0
  423. package/dist/primitives/Command.d.ts +2 -1
  424. package/dist/primitives/Command.d.ts.map +1 -0
  425. package/dist/primitives/Command.js +5 -0
  426. package/dist/primitives/Command.js.map +1 -0
  427. package/dist/primitives/CommandDialog.cjs +8 -0
  428. package/dist/primitives/CommandDialog.d.ts +2 -1
  429. package/dist/primitives/CommandDialog.d.ts.map +1 -0
  430. package/dist/primitives/CommandDialog.js +5 -0
  431. package/dist/primitives/CommandDialog.js.map +1 -0
  432. package/dist/primitives/CommandEmpty.cjs +8 -0
  433. package/dist/primitives/CommandEmpty.d.ts +2 -1
  434. package/dist/primitives/CommandEmpty.d.ts.map +1 -0
  435. package/dist/primitives/CommandEmpty.js +5 -0
  436. package/dist/primitives/CommandEmpty.js.map +1 -0
  437. package/dist/primitives/CommandGroup.cjs +8 -0
  438. package/dist/primitives/CommandGroup.d.ts +2 -1
  439. package/dist/primitives/CommandGroup.d.ts.map +1 -0
  440. package/dist/primitives/CommandGroup.js +5 -0
  441. package/dist/primitives/CommandGroup.js.map +1 -0
  442. package/dist/primitives/CommandInput.cjs +8 -0
  443. package/dist/primitives/CommandInput.d.ts +2 -1
  444. package/dist/primitives/CommandInput.d.ts.map +1 -0
  445. package/dist/primitives/CommandInput.js +5 -0
  446. package/dist/primitives/CommandInput.js.map +1 -0
  447. package/dist/primitives/CommandItem.cjs +8 -0
  448. package/dist/primitives/CommandItem.d.ts +2 -1
  449. package/dist/primitives/CommandItem.d.ts.map +1 -0
  450. package/dist/primitives/CommandItem.js +5 -0
  451. package/dist/primitives/CommandItem.js.map +1 -0
  452. package/dist/primitives/CommandList.cjs +8 -0
  453. package/dist/primitives/CommandList.d.ts +2 -1
  454. package/dist/primitives/CommandList.d.ts.map +1 -0
  455. package/dist/primitives/CommandList.js +5 -0
  456. package/dist/primitives/CommandList.js.map +1 -0
  457. package/dist/primitives/CommandSeparator.cjs +8 -0
  458. package/dist/primitives/CommandSeparator.d.ts +2 -1
  459. package/dist/primitives/CommandSeparator.d.ts.map +1 -0
  460. package/dist/primitives/CommandSeparator.js +5 -0
  461. package/dist/primitives/CommandSeparator.js.map +1 -0
  462. package/dist/primitives/CommandShortcut.cjs +8 -0
  463. package/dist/primitives/CommandShortcut.d.ts +2 -1
  464. package/dist/primitives/CommandShortcut.d.ts.map +1 -0
  465. package/dist/primitives/CommandShortcut.js +5 -0
  466. package/dist/primitives/CommandShortcut.js.map +1 -0
  467. package/dist/primitives/Dialog.cjs +8 -0
  468. package/dist/primitives/Dialog.d.ts +2 -1
  469. package/dist/primitives/Dialog.d.ts.map +1 -0
  470. package/dist/primitives/Dialog.js +5 -0
  471. package/dist/primitives/Dialog.js.map +1 -0
  472. package/dist/primitives/DialogClose.cjs +8 -0
  473. package/dist/primitives/DialogClose.d.ts +2 -1
  474. package/dist/primitives/DialogClose.d.ts.map +1 -0
  475. package/dist/primitives/DialogClose.js +5 -0
  476. package/dist/primitives/DialogClose.js.map +1 -0
  477. package/dist/primitives/DialogContent.cjs +8 -0
  478. package/dist/primitives/DialogContent.d.ts +2 -1
  479. package/dist/primitives/DialogContent.d.ts.map +1 -0
  480. package/dist/primitives/DialogContent.js +5 -0
  481. package/dist/primitives/DialogContent.js.map +1 -0
  482. package/dist/primitives/DialogDescription.cjs +8 -0
  483. package/dist/primitives/DialogDescription.d.ts +2 -1
  484. package/dist/primitives/DialogDescription.d.ts.map +1 -0
  485. package/dist/primitives/DialogDescription.js +5 -0
  486. package/dist/primitives/DialogDescription.js.map +1 -0
  487. package/dist/primitives/DialogFooter.cjs +8 -0
  488. package/dist/primitives/DialogFooter.d.ts +2 -1
  489. package/dist/primitives/DialogFooter.d.ts.map +1 -0
  490. package/dist/primitives/DialogFooter.js +5 -0
  491. package/dist/primitives/DialogFooter.js.map +1 -0
  492. package/dist/primitives/DialogHeader.cjs +8 -0
  493. package/dist/primitives/DialogHeader.d.ts +2 -1
  494. package/dist/primitives/DialogHeader.d.ts.map +1 -0
  495. package/dist/primitives/DialogHeader.js +5 -0
  496. package/dist/primitives/DialogHeader.js.map +1 -0
  497. package/dist/primitives/DialogOverlay.cjs +8 -0
  498. package/dist/primitives/DialogOverlay.d.ts +2 -1
  499. package/dist/primitives/DialogOverlay.d.ts.map +1 -0
  500. package/dist/primitives/DialogOverlay.js +5 -0
  501. package/dist/primitives/DialogOverlay.js.map +1 -0
  502. package/dist/primitives/DialogPortal.cjs +8 -0
  503. package/dist/primitives/DialogPortal.d.ts +2 -1
  504. package/dist/primitives/DialogPortal.d.ts.map +1 -0
  505. package/dist/primitives/DialogPortal.js +5 -0
  506. package/dist/primitives/DialogPortal.js.map +1 -0
  507. package/dist/primitives/DialogTitle.cjs +8 -0
  508. package/dist/primitives/DialogTitle.d.ts +2 -1
  509. package/dist/primitives/DialogTitle.d.ts.map +1 -0
  510. package/dist/primitives/DialogTitle.js +5 -0
  511. package/dist/primitives/DialogTitle.js.map +1 -0
  512. package/dist/primitives/DialogTrigger.cjs +8 -0
  513. package/dist/primitives/DialogTrigger.d.ts +2 -1
  514. package/dist/primitives/DialogTrigger.d.ts.map +1 -0
  515. package/dist/primitives/DialogTrigger.js +5 -0
  516. package/dist/primitives/DialogTrigger.js.map +1 -0
  517. package/dist/primitives/DropdownMenu.cjs +8 -0
  518. package/dist/primitives/DropdownMenu.d.ts +2 -1
  519. package/dist/primitives/DropdownMenu.d.ts.map +1 -0
  520. package/dist/primitives/DropdownMenu.js +5 -0
  521. package/dist/primitives/DropdownMenu.js.map +1 -0
  522. package/dist/primitives/DropdownMenuCheckboxItem.cjs +8 -0
  523. package/dist/primitives/DropdownMenuCheckboxItem.d.ts +2 -1
  524. package/dist/primitives/DropdownMenuCheckboxItem.d.ts.map +1 -0
  525. package/dist/primitives/DropdownMenuCheckboxItem.js +5 -0
  526. package/dist/primitives/DropdownMenuCheckboxItem.js.map +1 -0
  527. package/dist/primitives/DropdownMenuContent.cjs +8 -0
  528. package/dist/primitives/DropdownMenuContent.d.ts +2 -1
  529. package/dist/primitives/DropdownMenuContent.d.ts.map +1 -0
  530. package/dist/primitives/DropdownMenuContent.js +5 -0
  531. package/dist/primitives/DropdownMenuContent.js.map +1 -0
  532. package/dist/primitives/DropdownMenuGroup.cjs +8 -0
  533. package/dist/primitives/DropdownMenuGroup.d.ts +2 -1
  534. package/dist/primitives/DropdownMenuGroup.d.ts.map +1 -0
  535. package/dist/primitives/DropdownMenuGroup.js +5 -0
  536. package/dist/primitives/DropdownMenuGroup.js.map +1 -0
  537. package/dist/primitives/DropdownMenuItem.cjs +8 -0
  538. package/dist/primitives/DropdownMenuItem.d.ts +2 -1
  539. package/dist/primitives/DropdownMenuItem.d.ts.map +1 -0
  540. package/dist/primitives/DropdownMenuItem.js +5 -0
  541. package/dist/primitives/DropdownMenuItem.js.map +1 -0
  542. package/dist/primitives/DropdownMenuLabel.cjs +8 -0
  543. package/dist/primitives/DropdownMenuLabel.d.ts +2 -1
  544. package/dist/primitives/DropdownMenuLabel.d.ts.map +1 -0
  545. package/dist/primitives/DropdownMenuLabel.js +5 -0
  546. package/dist/primitives/DropdownMenuLabel.js.map +1 -0
  547. package/dist/primitives/DropdownMenuPortal.cjs +8 -0
  548. package/dist/primitives/DropdownMenuPortal.d.ts +2 -1
  549. package/dist/primitives/DropdownMenuPortal.d.ts.map +1 -0
  550. package/dist/primitives/DropdownMenuPortal.js +5 -0
  551. package/dist/primitives/DropdownMenuPortal.js.map +1 -0
  552. package/dist/primitives/DropdownMenuRadioGroup.cjs +8 -0
  553. package/dist/primitives/DropdownMenuRadioGroup.d.ts +2 -1
  554. package/dist/primitives/DropdownMenuRadioGroup.d.ts.map +1 -0
  555. package/dist/primitives/DropdownMenuRadioGroup.js +5 -0
  556. package/dist/primitives/DropdownMenuRadioGroup.js.map +1 -0
  557. package/dist/primitives/DropdownMenuRadioItem.cjs +8 -0
  558. package/dist/primitives/DropdownMenuRadioItem.d.ts +2 -1
  559. package/dist/primitives/DropdownMenuRadioItem.d.ts.map +1 -0
  560. package/dist/primitives/DropdownMenuRadioItem.js +5 -0
  561. package/dist/primitives/DropdownMenuRadioItem.js.map +1 -0
  562. package/dist/primitives/DropdownMenuSeparator.cjs +8 -0
  563. package/dist/primitives/DropdownMenuSeparator.d.ts +2 -1
  564. package/dist/primitives/DropdownMenuSeparator.d.ts.map +1 -0
  565. package/dist/primitives/DropdownMenuSeparator.js +5 -0
  566. package/dist/primitives/DropdownMenuSeparator.js.map +1 -0
  567. package/dist/primitives/DropdownMenuShortcut.cjs +8 -0
  568. package/dist/primitives/DropdownMenuShortcut.d.ts +2 -1
  569. package/dist/primitives/DropdownMenuShortcut.d.ts.map +1 -0
  570. package/dist/primitives/DropdownMenuShortcut.js +5 -0
  571. package/dist/primitives/DropdownMenuShortcut.js.map +1 -0
  572. package/dist/primitives/DropdownMenuSub.cjs +8 -0
  573. package/dist/primitives/DropdownMenuSub.d.ts +2 -1
  574. package/dist/primitives/DropdownMenuSub.d.ts.map +1 -0
  575. package/dist/primitives/DropdownMenuSub.js +5 -0
  576. package/dist/primitives/DropdownMenuSub.js.map +1 -0
  577. package/dist/primitives/DropdownMenuSubContent.cjs +8 -0
  578. package/dist/primitives/DropdownMenuSubContent.d.ts +2 -1
  579. package/dist/primitives/DropdownMenuSubContent.d.ts.map +1 -0
  580. package/dist/primitives/DropdownMenuSubContent.js +5 -0
  581. package/dist/primitives/DropdownMenuSubContent.js.map +1 -0
  582. package/dist/primitives/DropdownMenuSubTrigger.cjs +8 -0
  583. package/dist/primitives/DropdownMenuSubTrigger.d.ts +2 -1
  584. package/dist/primitives/DropdownMenuSubTrigger.d.ts.map +1 -0
  585. package/dist/primitives/DropdownMenuSubTrigger.js +5 -0
  586. package/dist/primitives/DropdownMenuSubTrigger.js.map +1 -0
  587. package/dist/primitives/DropdownMenuTrigger.cjs +8 -0
  588. package/dist/primitives/DropdownMenuTrigger.d.ts +2 -1
  589. package/dist/primitives/DropdownMenuTrigger.d.ts.map +1 -0
  590. package/dist/primitives/DropdownMenuTrigger.js +5 -0
  591. package/dist/primitives/DropdownMenuTrigger.js.map +1 -0
  592. package/dist/primitives/Input.cjs +8 -0
  593. package/dist/primitives/Input.d.ts +2 -1
  594. package/dist/primitives/Input.d.ts.map +1 -0
  595. package/dist/primitives/Input.js +5 -0
  596. package/dist/primitives/Input.js.map +1 -0
  597. package/dist/primitives/Label.cjs +8 -0
  598. package/dist/primitives/Label.d.ts +2 -1
  599. package/dist/primitives/Label.d.ts.map +1 -0
  600. package/dist/primitives/Label.js +5 -0
  601. package/dist/primitives/Label.js.map +1 -0
  602. package/dist/primitives/Popover.cjs +8 -0
  603. package/dist/primitives/Popover.d.ts +2 -1
  604. package/dist/primitives/Popover.d.ts.map +1 -0
  605. package/dist/primitives/Popover.js +5 -0
  606. package/dist/primitives/Popover.js.map +1 -0
  607. package/dist/primitives/PopoverAnchor.cjs +8 -0
  608. package/dist/primitives/PopoverAnchor.d.ts +2 -1
  609. package/dist/primitives/PopoverAnchor.d.ts.map +1 -0
  610. package/dist/primitives/PopoverAnchor.js +5 -0
  611. package/dist/primitives/PopoverAnchor.js.map +1 -0
  612. package/dist/primitives/PopoverClose.cjs +8 -0
  613. package/dist/primitives/PopoverClose.d.ts +2 -0
  614. package/dist/primitives/PopoverClose.d.ts.map +1 -0
  615. package/dist/primitives/PopoverClose.js +5 -0
  616. package/dist/primitives/PopoverClose.js.map +1 -0
  617. package/dist/primitives/PopoverContent.cjs +8 -0
  618. package/dist/primitives/PopoverContent.d.ts +2 -1
  619. package/dist/primitives/PopoverContent.d.ts.map +1 -0
  620. package/dist/primitives/PopoverContent.js +5 -0
  621. package/dist/primitives/PopoverContent.js.map +1 -0
  622. package/dist/primitives/PopoverTrigger.cjs +8 -0
  623. package/dist/primitives/PopoverTrigger.d.ts +2 -1
  624. package/dist/primitives/PopoverTrigger.d.ts.map +1 -0
  625. package/dist/primitives/PopoverTrigger.js +5 -0
  626. package/dist/primitives/PopoverTrigger.js.map +1 -0
  627. package/dist/primitives/Progress.cjs +8 -0
  628. package/dist/primitives/Progress.d.ts +2 -1
  629. package/dist/primitives/Progress.d.ts.map +1 -0
  630. package/dist/primitives/Progress.js +5 -0
  631. package/dist/primitives/Progress.js.map +1 -0
  632. package/dist/primitives/ResizableHandle.cjs +8 -0
  633. package/dist/primitives/ResizableHandle.d.ts +2 -0
  634. package/dist/primitives/ResizableHandle.d.ts.map +1 -0
  635. package/dist/primitives/ResizableHandle.js +5 -0
  636. package/dist/primitives/ResizableHandle.js.map +1 -0
  637. package/dist/primitives/ResizablePanel.cjs +8 -0
  638. package/dist/primitives/ResizablePanel.d.ts +2 -0
  639. package/dist/primitives/ResizablePanel.d.ts.map +1 -0
  640. package/dist/primitives/ResizablePanel.js +5 -0
  641. package/dist/primitives/ResizablePanel.js.map +1 -0
  642. package/dist/primitives/ResizablePanelGroup.cjs +8 -0
  643. package/dist/primitives/ResizablePanelGroup.d.ts +2 -0
  644. package/dist/primitives/ResizablePanelGroup.d.ts.map +1 -0
  645. package/dist/primitives/ResizablePanelGroup.js +5 -0
  646. package/dist/primitives/ResizablePanelGroup.js.map +1 -0
  647. package/dist/primitives/ScrollArea.cjs +8 -0
  648. package/dist/primitives/ScrollArea.d.ts +2 -1
  649. package/dist/primitives/ScrollArea.d.ts.map +1 -0
  650. package/dist/primitives/ScrollArea.js +5 -0
  651. package/dist/primitives/ScrollArea.js.map +1 -0
  652. package/dist/primitives/ScrollBar.cjs +8 -0
  653. package/dist/primitives/ScrollBar.d.ts +2 -1
  654. package/dist/primitives/ScrollBar.d.ts.map +1 -0
  655. package/dist/primitives/ScrollBar.js +5 -0
  656. package/dist/primitives/ScrollBar.js.map +1 -0
  657. package/dist/primitives/Select.cjs +8 -0
  658. package/dist/primitives/Select.d.ts +2 -1
  659. package/dist/primitives/Select.d.ts.map +1 -0
  660. package/dist/primitives/Select.js +5 -0
  661. package/dist/primitives/Select.js.map +1 -0
  662. package/dist/primitives/SelectContent.cjs +8 -0
  663. package/dist/primitives/SelectContent.d.ts +2 -1
  664. package/dist/primitives/SelectContent.d.ts.map +1 -0
  665. package/dist/primitives/SelectContent.js +5 -0
  666. package/dist/primitives/SelectContent.js.map +1 -0
  667. package/dist/primitives/SelectGroup.cjs +8 -0
  668. package/dist/primitives/SelectGroup.d.ts +2 -1
  669. package/dist/primitives/SelectGroup.d.ts.map +1 -0
  670. package/dist/primitives/SelectGroup.js +5 -0
  671. package/dist/primitives/SelectGroup.js.map +1 -0
  672. package/dist/primitives/SelectItem.cjs +8 -0
  673. package/dist/primitives/SelectItem.d.ts +2 -1
  674. package/dist/primitives/SelectItem.d.ts.map +1 -0
  675. package/dist/primitives/SelectItem.js +5 -0
  676. package/dist/primitives/SelectItem.js.map +1 -0
  677. package/dist/primitives/SelectLabel.cjs +8 -0
  678. package/dist/primitives/SelectLabel.d.ts +2 -1
  679. package/dist/primitives/SelectLabel.d.ts.map +1 -0
  680. package/dist/primitives/SelectLabel.js +5 -0
  681. package/dist/primitives/SelectLabel.js.map +1 -0
  682. package/dist/primitives/SelectScrollDownButton.cjs +8 -0
  683. package/dist/primitives/SelectScrollDownButton.d.ts +2 -1
  684. package/dist/primitives/SelectScrollDownButton.d.ts.map +1 -0
  685. package/dist/primitives/SelectScrollDownButton.js +5 -0
  686. package/dist/primitives/SelectScrollDownButton.js.map +1 -0
  687. package/dist/primitives/SelectScrollUpButton.cjs +8 -0
  688. package/dist/primitives/SelectScrollUpButton.d.ts +2 -1
  689. package/dist/primitives/SelectScrollUpButton.d.ts.map +1 -0
  690. package/dist/primitives/SelectScrollUpButton.js +5 -0
  691. package/dist/primitives/SelectScrollUpButton.js.map +1 -0
  692. package/dist/primitives/SelectSeparator.cjs +8 -0
  693. package/dist/primitives/SelectSeparator.d.ts +2 -1
  694. package/dist/primitives/SelectSeparator.d.ts.map +1 -0
  695. package/dist/primitives/SelectSeparator.js +5 -0
  696. package/dist/primitives/SelectSeparator.js.map +1 -0
  697. package/dist/primitives/SelectTrigger.cjs +8 -0
  698. package/dist/primitives/SelectTrigger.d.ts +2 -1
  699. package/dist/primitives/SelectTrigger.d.ts.map +1 -0
  700. package/dist/primitives/SelectTrigger.js +5 -0
  701. package/dist/primitives/SelectTrigger.js.map +1 -0
  702. package/dist/primitives/SelectValue.cjs +8 -0
  703. package/dist/primitives/SelectValue.d.ts +2 -1
  704. package/dist/primitives/SelectValue.d.ts.map +1 -0
  705. package/dist/primitives/SelectValue.js +5 -0
  706. package/dist/primitives/SelectValue.js.map +1 -0
  707. package/dist/primitives/Separator.cjs +8 -0
  708. package/dist/primitives/Separator.d.ts +2 -1
  709. package/dist/primitives/Separator.d.ts.map +1 -0
  710. package/dist/primitives/Separator.js +5 -0
  711. package/dist/primitives/Separator.js.map +1 -0
  712. package/dist/primitives/Slider.cjs +8 -0
  713. package/dist/primitives/Slider.d.ts +2 -1
  714. package/dist/primitives/Slider.d.ts.map +1 -0
  715. package/dist/primitives/Slider.js +5 -0
  716. package/dist/primitives/Slider.js.map +1 -0
  717. package/dist/primitives/Switch.cjs +8 -0
  718. package/dist/primitives/Switch.d.ts +2 -1
  719. package/dist/primitives/Switch.d.ts.map +1 -0
  720. package/dist/primitives/Switch.js +5 -0
  721. package/dist/primitives/Switch.js.map +1 -0
  722. package/dist/primitives/Tabs.cjs +8 -0
  723. package/dist/primitives/Tabs.d.ts +2 -1
  724. package/dist/primitives/Tabs.d.ts.map +1 -0
  725. package/dist/primitives/Tabs.js +5 -0
  726. package/dist/primitives/Tabs.js.map +1 -0
  727. package/dist/primitives/TabsContent.cjs +8 -0
  728. package/dist/primitives/TabsContent.d.ts +2 -1
  729. package/dist/primitives/TabsContent.d.ts.map +1 -0
  730. package/dist/primitives/TabsContent.js +5 -0
  731. package/dist/primitives/TabsContent.js.map +1 -0
  732. package/dist/primitives/TabsList.cjs +8 -0
  733. package/dist/primitives/TabsList.d.ts +2 -1
  734. package/dist/primitives/TabsList.d.ts.map +1 -0
  735. package/dist/primitives/TabsList.js +5 -0
  736. package/dist/primitives/TabsList.js.map +1 -0
  737. package/dist/primitives/TabsTrigger.cjs +8 -0
  738. package/dist/primitives/TabsTrigger.d.ts +2 -1
  739. package/dist/primitives/TabsTrigger.d.ts.map +1 -0
  740. package/dist/primitives/TabsTrigger.js +5 -0
  741. package/dist/primitives/TabsTrigger.js.map +1 -0
  742. package/dist/primitives/Textarea.cjs +8 -0
  743. package/dist/primitives/Textarea.d.ts +2 -1
  744. package/dist/primitives/Textarea.d.ts.map +1 -0
  745. package/dist/primitives/Textarea.js +5 -0
  746. package/dist/primitives/Textarea.js.map +1 -0
  747. package/dist/primitives/Toaster.cjs +8 -0
  748. package/dist/primitives/Toaster.d.ts +2 -1
  749. package/dist/primitives/Toaster.d.ts.map +1 -0
  750. package/dist/primitives/Toaster.js +5 -0
  751. package/dist/primitives/Toaster.js.map +1 -0
  752. package/dist/primitives/Tooltip.cjs +8 -0
  753. package/dist/primitives/Tooltip.d.ts +2 -1
  754. package/dist/primitives/Tooltip.d.ts.map +1 -0
  755. package/dist/primitives/Tooltip.js +5 -0
  756. package/dist/primitives/Tooltip.js.map +1 -0
  757. package/dist/primitives/TooltipContent.cjs +8 -0
  758. package/dist/primitives/TooltipContent.d.ts +2 -1
  759. package/dist/primitives/TooltipContent.d.ts.map +1 -0
  760. package/dist/primitives/TooltipContent.js +5 -0
  761. package/dist/primitives/TooltipContent.js.map +1 -0
  762. package/dist/primitives/TooltipProvider.cjs +8 -0
  763. package/dist/primitives/TooltipProvider.d.ts +2 -1
  764. package/dist/primitives/TooltipProvider.d.ts.map +1 -0
  765. package/dist/primitives/TooltipProvider.js +5 -0
  766. package/dist/primitives/TooltipProvider.js.map +1 -0
  767. package/dist/primitives/TooltipTrigger.cjs +8 -0
  768. package/dist/primitives/TooltipTrigger.d.ts +2 -1
  769. package/dist/primitives/TooltipTrigger.d.ts.map +1 -0
  770. package/dist/primitives/TooltipTrigger.js +5 -0
  771. package/dist/primitives/TooltipTrigger.js.map +1 -0
  772. package/dist/primitives/badgeVariants.cjs +8 -0
  773. package/dist/primitives/badgeVariants.d.ts +2 -1
  774. package/dist/primitives/badgeVariants.d.ts.map +1 -0
  775. package/dist/primitives/badgeVariants.js +5 -0
  776. package/dist/primitives/badgeVariants.js.map +1 -0
  777. package/dist/primitives/bases/data/index.cjs +28 -14
  778. package/dist/primitives/bases/data/index.d.ts +1 -0
  779. package/dist/primitives/bases/data/index.d.ts.map +1 -0
  780. package/dist/primitives/bases/data/index.js +11 -1
  781. package/dist/primitives/bases/data/index.js.map +1 -1
  782. package/dist/primitives/buttonVariants.cjs +8 -0
  783. package/dist/primitives/buttonVariants.d.ts +2 -1
  784. package/dist/primitives/buttonVariants.d.ts.map +1 -0
  785. package/dist/primitives/buttonVariants.js +5 -0
  786. package/dist/primitives/buttonVariants.js.map +1 -0
  787. package/dist/primitives/index.cjs +20 -0
  788. package/dist/primitives/index.d.ts +2 -1
  789. package/dist/primitives/index.d.ts.map +1 -0
  790. package/dist/primitives/index.js +5 -0
  791. package/dist/primitives/index.js.map +1 -0
  792. package/dist/primitives/toast.cjs +8 -0
  793. package/dist/primitives/toast.d.ts +2 -1
  794. package/dist/primitives/toast.d.ts.map +1 -0
  795. package/dist/primitives/toast.js +5 -0
  796. package/dist/primitives/toast.js.map +1 -0
  797. package/dist/product/AnimatedLogo.cjs +102 -0
  798. package/dist/product/AnimatedLogo.d.ts +2 -1
  799. package/dist/product/AnimatedLogo.d.ts.map +1 -0
  800. package/dist/product/AnimatedLogo.js +100 -0
  801. package/dist/product/AnimatedLogo.js.map +1 -0
  802. package/dist/product/AppHeader.cjs +55 -0
  803. package/dist/product/AppHeader.d.ts +2 -1
  804. package/dist/product/AppHeader.d.ts.map +1 -0
  805. package/dist/product/AppHeader.js +53 -0
  806. package/dist/product/AppHeader.js.map +1 -0
  807. package/dist/product/BackendState.cjs +80 -0
  808. package/dist/product/BackendState.d.ts +1 -0
  809. package/dist/product/BackendState.d.ts.map +1 -0
  810. package/dist/product/BackendState.js +76 -0
  811. package/dist/product/BackendState.js.map +1 -0
  812. package/dist/product/BrandMark.cjs +19 -0
  813. package/dist/product/BrandMark.d.ts +1 -0
  814. package/dist/product/BrandMark.d.ts.map +1 -0
  815. package/dist/product/BrandMark.js +17 -0
  816. package/dist/product/BrandMark.js.map +1 -0
  817. package/dist/product/Charts.cjs +243 -0
  818. package/dist/product/Charts.d.ts +1 -0
  819. package/dist/product/Charts.d.ts.map +1 -0
  820. package/dist/product/Charts.js +235 -0
  821. package/dist/product/Charts.js.map +1 -0
  822. package/dist/product/ComboBox.cjs +44 -0
  823. package/dist/product/ComboBox.d.ts +3 -2
  824. package/dist/product/ComboBox.d.ts.map +1 -0
  825. package/dist/product/ComboBox.js +42 -0
  826. package/dist/product/ComboBox.js.map +1 -0
  827. package/dist/product/CommerceResource.cjs +39 -0
  828. package/dist/product/CommerceResource.d.ts +2 -1
  829. package/dist/product/CommerceResource.d.ts.map +1 -0
  830. package/dist/product/CommerceResource.js +37 -0
  831. package/dist/product/CommerceResource.js.map +1 -0
  832. package/dist/product/ConfirmDelete.cjs +42 -0
  833. package/dist/product/ConfirmDelete.d.ts +1 -0
  834. package/dist/product/ConfirmDelete.d.ts.map +1 -0
  835. package/dist/product/ConfirmDelete.js +40 -0
  836. package/dist/product/ConfirmDelete.js.map +1 -0
  837. package/dist/product/DataTable.cjs +58 -0
  838. package/dist/product/DataTable.d.ts +1 -0
  839. package/dist/product/DataTable.d.ts.map +1 -0
  840. package/dist/product/DataTable.js +56 -0
  841. package/dist/product/DataTable.js.map +1 -0
  842. package/dist/product/Donut.cjs +25 -0
  843. package/dist/product/Donut.d.ts +1 -0
  844. package/dist/product/Donut.d.ts.map +1 -0
  845. package/dist/product/Donut.js +23 -0
  846. package/dist/product/Donut.js.map +1 -0
  847. package/dist/product/EmptyState.cjs +30 -0
  848. package/dist/product/EmptyState.d.ts +2 -1
  849. package/dist/product/EmptyState.d.ts.map +1 -0
  850. package/dist/product/EmptyState.js +28 -0
  851. package/dist/product/EmptyState.js.map +1 -0
  852. package/dist/product/FadeIn.cjs +9 -0
  853. package/dist/product/FadeIn.d.ts +1 -0
  854. package/dist/product/FadeIn.d.ts.map +1 -0
  855. package/dist/product/FadeIn.js +7 -0
  856. package/dist/product/FadeIn.js.map +1 -0
  857. package/dist/product/Field.cjs +111 -0
  858. package/dist/product/Field.d.ts +1 -0
  859. package/dist/product/Field.d.ts.map +1 -0
  860. package/dist/product/Field.js +104 -0
  861. package/dist/product/Field.js.map +1 -0
  862. package/dist/product/Filters.cjs +31 -0
  863. package/dist/product/Filters.d.ts +1 -0
  864. package/dist/product/Filters.d.ts.map +1 -0
  865. package/dist/product/Filters.js +28 -0
  866. package/dist/product/Filters.js.map +1 -0
  867. package/dist/product/HanzoMark.cjs +16 -0
  868. package/dist/product/HanzoMark.d.ts +1 -0
  869. package/dist/product/HanzoMark.d.ts.map +1 -0
  870. package/dist/product/HanzoMark.js +14 -0
  871. package/dist/product/HanzoMark.js.map +1 -0
  872. package/dist/product/Metric.cjs +96 -0
  873. package/dist/product/Metric.d.ts +1 -0
  874. package/dist/product/Metric.d.ts.map +1 -0
  875. package/dist/product/Metric.js +85 -0
  876. package/dist/product/Metric.js.map +1 -0
  877. package/dist/product/OrgMark.cjs +50 -0
  878. package/dist/product/OrgMark.d.ts +2 -1
  879. package/dist/product/OrgMark.d.ts.map +1 -0
  880. package/dist/product/OrgMark.js +47 -0
  881. package/dist/product/OrgMark.js.map +1 -0
  882. package/dist/product/OrgSwitcher.cjs +140 -0
  883. package/dist/product/OrgSwitcher.d.ts +2 -1
  884. package/dist/product/OrgSwitcher.d.ts.map +1 -0
  885. package/dist/product/OrgSwitcher.js +138 -0
  886. package/dist/product/OrgSwitcher.js.map +1 -0
  887. package/dist/product/PageHeader.cjs +15 -0
  888. package/dist/product/PageHeader.d.ts +1 -0
  889. package/dist/product/PageHeader.d.ts.map +1 -0
  890. package/dist/product/PageHeader.js +13 -0
  891. package/dist/product/PageHeader.js.map +1 -0
  892. package/dist/product/PrimaryButton.cjs +31 -0
  893. package/dist/product/PrimaryButton.d.ts +1 -0
  894. package/dist/product/PrimaryButton.d.ts.map +1 -0
  895. package/dist/product/PrimaryButton.js +29 -0
  896. package/dist/product/PrimaryButton.js.map +1 -0
  897. package/dist/product/ProductIcon.cjs +36 -0
  898. package/dist/product/ProductIcon.d.ts +2 -1
  899. package/dist/product/ProductIcon.d.ts.map +1 -0
  900. package/dist/product/ProductIcon.js +34 -0
  901. package/dist/product/ProductIcon.js.map +1 -0
  902. package/dist/product/ProviderLogo.cjs +84 -0
  903. package/dist/product/ProviderLogo.d.ts +1 -0
  904. package/dist/product/ProviderLogo.d.ts.map +1 -0
  905. package/dist/product/ProviderLogo.js +81 -0
  906. package/dist/product/ProviderLogo.js.map +1 -0
  907. package/dist/product/Reorder.cjs +82 -0
  908. package/dist/product/Reorder.d.ts +1 -0
  909. package/dist/product/Reorder.d.ts.map +1 -0
  910. package/dist/product/Reorder.js +78 -0
  911. package/dist/product/Reorder.js.map +1 -0
  912. package/dist/product/SelectMenu.cjs +19 -0
  913. package/dist/product/SelectMenu.d.ts +1 -0
  914. package/dist/product/SelectMenu.d.ts.map +1 -0
  915. package/dist/product/SelectMenu.js +17 -0
  916. package/dist/product/SelectMenu.js.map +1 -0
  917. package/dist/product/SiteFooter.cjs +17 -0
  918. package/dist/product/SiteFooter.d.ts +2 -1
  919. package/dist/product/SiteFooter.d.ts.map +1 -0
  920. package/dist/product/SiteFooter.js +15 -0
  921. package/dist/product/SiteFooter.js.map +1 -0
  922. package/dist/product/SiteNav.cjs +124 -0
  923. package/dist/product/SiteNav.d.ts +1 -0
  924. package/dist/product/SiteNav.d.ts.map +1 -0
  925. package/dist/product/SiteNav.js +122 -0
  926. package/dist/product/SiteNav.js.map +1 -0
  927. package/dist/product/SlideOver.cjs +129 -0
  928. package/dist/product/SlideOver.d.ts +2 -1
  929. package/dist/product/SlideOver.d.ts.map +1 -0
  930. package/dist/product/SlideOver.js +126 -0
  931. package/dist/product/SlideOver.js.map +1 -0
  932. package/dist/product/StatusTag.cjs +49 -0
  933. package/dist/product/StatusTag.d.ts +1 -0
  934. package/dist/product/StatusTag.d.ts.map +1 -0
  935. package/dist/product/StatusTag.js +47 -0
  936. package/dist/product/StatusTag.js.map +1 -0
  937. package/dist/product/ThemeToggle.cjs +120 -0
  938. package/dist/product/ThemeToggle.d.ts +1 -0
  939. package/dist/product/ThemeToggle.d.ts.map +1 -0
  940. package/dist/product/ThemeToggle.js +84 -0
  941. package/dist/product/ThemeToggle.js.map +1 -0
  942. package/dist/product/ThemeToggleNext.cjs +20 -0
  943. package/dist/product/ThemeToggleNext.d.ts +2 -1
  944. package/dist/product/ThemeToggleNext.d.ts.map +1 -0
  945. package/dist/product/ThemeToggleNext.js +19 -0
  946. package/dist/product/ThemeToggleNext.js.map +1 -0
  947. package/dist/product/Toast.cjs +90 -0
  948. package/dist/product/Toast.d.ts +1 -0
  949. package/dist/product/Toast.d.ts.map +1 -0
  950. package/dist/product/Toast.js +87 -0
  951. package/dist/product/Toast.js.map +1 -0
  952. package/dist/product/accent.cjs +97 -0
  953. package/dist/product/accent.d.ts +1 -0
  954. package/dist/product/accent.d.ts.map +1 -0
  955. package/dist/product/accent.js +90 -0
  956. package/dist/product/accent.js.map +1 -0
  957. package/dist/product/animatedLogo.logic.cjs +52 -0
  958. package/dist/product/animatedLogo.logic.d.ts +1 -0
  959. package/dist/product/animatedLogo.logic.d.ts.map +1 -0
  960. package/dist/product/animatedLogo.logic.js +47 -0
  961. package/dist/product/animatedLogo.logic.js.map +1 -0
  962. package/dist/product/brand.cjs +91 -0
  963. package/dist/product/brand.d.ts +1 -0
  964. package/dist/product/brand.d.ts.map +1 -0
  965. package/dist/product/brand.js +88 -0
  966. package/dist/product/brand.js.map +1 -0
  967. package/dist/product/color.cjs +6 -0
  968. package/dist/product/color.d.ts +1 -0
  969. package/dist/product/color.d.ts.map +1 -0
  970. package/dist/product/color.js +3 -0
  971. package/dist/product/color.js.map +1 -0
  972. package/dist/product/combobox/filter.cjs +31 -0
  973. package/dist/product/combobox/filter.d.ts +1 -0
  974. package/dist/product/combobox/filter.d.ts.map +1 -0
  975. package/dist/product/combobox/filter.js +28 -0
  976. package/dist/product/combobox/filter.js.map +1 -0
  977. package/dist/product/host.cjs +20 -0
  978. package/dist/product/host.d.ts +1 -0
  979. package/dist/product/host.d.ts.map +1 -0
  980. package/dist/product/host.js +16 -0
  981. package/dist/product/host.js.map +1 -0
  982. package/dist/product/index.cjs +120 -2240
  983. package/dist/product/index.d.ts +43 -41
  984. package/dist/product/index.d.ts.map +1 -0
  985. package/dist/product/index.js +88 -1912
  986. package/dist/product/index.js.map +1 -1
  987. package/dist/product/instrument.cjs +79 -0
  988. package/dist/product/instrument.d.ts +1 -0
  989. package/dist/product/instrument.d.ts.map +1 -0
  990. package/dist/product/instrument.js +72 -0
  991. package/dist/product/instrument.js.map +1 -0
  992. package/dist/product/menu/ContextMenu.cjs +26 -0
  993. package/dist/product/menu/ContextMenu.d.ts +2 -1
  994. package/dist/product/menu/ContextMenu.d.ts.map +1 -0
  995. package/dist/product/menu/ContextMenu.js +24 -0
  996. package/dist/product/menu/ContextMenu.js.map +1 -0
  997. package/dist/product/menu/FloatingMenu.cjs +87 -0
  998. package/dist/product/menu/FloatingMenu.d.ts +1 -0
  999. package/dist/product/menu/FloatingMenu.d.ts.map +1 -0
  1000. package/dist/product/menu/FloatingMenu.js +85 -0
  1001. package/dist/product/menu/FloatingMenu.js.map +1 -0
  1002. package/dist/product/menu/index.cjs +30 -0
  1003. package/dist/product/menu/index.d.ts +6 -5
  1004. package/dist/product/menu/index.d.ts.map +1 -0
  1005. package/dist/product/menu/index.js +19 -0
  1006. package/dist/product/menu/index.js.map +1 -0
  1007. package/dist/product/menu/items.cjs +92 -0
  1008. package/dist/product/menu/items.d.ts +2 -1
  1009. package/dist/product/menu/items.d.ts.map +1 -0
  1010. package/dist/product/menu/items.js +85 -0
  1011. package/dist/product/menu/items.js.map +1 -0
  1012. package/dist/product/menu/portal-theme.cjs +13 -0
  1013. package/dist/product/menu/portal-theme.d.ts +1 -0
  1014. package/dist/product/menu/portal-theme.d.ts.map +1 -0
  1015. package/dist/product/menu/portal-theme.js +12 -0
  1016. package/dist/product/menu/portal-theme.js.map +1 -0
  1017. package/dist/product/menu/roving.cjs +31 -0
  1018. package/dist/product/menu/roving.d.ts +1 -0
  1019. package/dist/product/menu/roving.d.ts.map +1 -0
  1020. package/dist/product/menu/roving.js +29 -0
  1021. package/dist/product/menu/roving.js.map +1 -0
  1022. package/dist/product/scope.cjs +102 -0
  1023. package/dist/product/scope.d.ts +1 -0
  1024. package/dist/product/scope.d.ts.map +1 -0
  1025. package/dist/product/scope.js +99 -0
  1026. package/dist/product/scope.js.map +1 -0
  1027. package/dist/product/social/CampaignCard.cjs +17 -0
  1028. package/dist/product/social/CampaignCard.d.ts +1 -0
  1029. package/dist/product/social/CampaignCard.d.ts.map +1 -0
  1030. package/dist/product/social/CampaignCard.js +15 -0
  1031. package/dist/product/social/CampaignCard.js.map +1 -0
  1032. package/dist/product/social/ChannelBadge.cjs +24 -0
  1033. package/dist/product/social/ChannelBadge.d.ts +2 -1
  1034. package/dist/product/social/ChannelBadge.d.ts.map +1 -0
  1035. package/dist/product/social/ChannelBadge.js +22 -0
  1036. package/dist/product/social/ChannelBadge.js.map +1 -0
  1037. package/dist/product/social/PostAgenda.cjs +40 -0
  1038. package/dist/product/social/PostAgenda.d.ts +2 -1
  1039. package/dist/product/social/PostAgenda.d.ts.map +1 -0
  1040. package/dist/product/social/PostAgenda.js +38 -0
  1041. package/dist/product/social/PostAgenda.js.map +1 -0
  1042. package/dist/product/social/PostCard.cjs +19 -0
  1043. package/dist/product/social/PostCard.d.ts +2 -1
  1044. package/dist/product/social/PostCard.d.ts.map +1 -0
  1045. package/dist/product/social/PostCard.js +17 -0
  1046. package/dist/product/social/PostCard.js.map +1 -0
  1047. package/dist/product/social/PostComposer.cjs +64 -0
  1048. package/dist/product/social/PostComposer.d.ts +2 -1
  1049. package/dist/product/social/PostComposer.d.ts.map +1 -0
  1050. package/dist/product/social/PostComposer.js +61 -0
  1051. package/dist/product/social/PostComposer.js.map +1 -0
  1052. package/dist/product/social/ProviderReadinessList.cjs +16 -0
  1053. package/dist/product/social/ProviderReadinessList.d.ts +2 -1
  1054. package/dist/product/social/ProviderReadinessList.d.ts.map +1 -0
  1055. package/dist/product/social/ProviderReadinessList.js +14 -0
  1056. package/dist/product/social/ProviderReadinessList.js.map +1 -0
  1057. package/dist/product/social/SocialResource.cjs +147 -0
  1058. package/dist/product/social/SocialResource.d.ts +2 -1
  1059. package/dist/product/social/SocialResource.d.ts.map +1 -0
  1060. package/dist/product/social/SocialResource.js +145 -0
  1061. package/dist/product/social/SocialResource.js.map +1 -0
  1062. package/dist/product/social/SocialSummaryBar.cjs +20 -0
  1063. package/dist/product/social/SocialSummaryBar.d.ts +2 -1
  1064. package/dist/product/social/SocialSummaryBar.d.ts.map +1 -0
  1065. package/dist/product/social/SocialSummaryBar.js +18 -0
  1066. package/dist/product/social/SocialSummaryBar.js.map +1 -0
  1067. package/dist/product/social/ViewToggle.cjs +23 -0
  1068. package/dist/product/social/ViewToggle.d.ts +1 -0
  1069. package/dist/product/social/ViewToggle.d.ts.map +1 -0
  1070. package/dist/product/social/ViewToggle.js +21 -0
  1071. package/dist/product/social/ViewToggle.js.map +1 -0
  1072. package/dist/product/social/api.cjs +137 -52
  1073. package/dist/product/social/api.d.ts +1 -0
  1074. package/dist/product/social/api.d.ts.map +1 -0
  1075. package/dist/product/social/api.js +126 -2
  1076. package/dist/product/social/api.js.map +1 -1
  1077. package/dist/product/social/format.cjs +39 -0
  1078. package/dist/product/social/format.d.ts +1 -0
  1079. package/dist/product/social/format.d.ts.map +1 -0
  1080. package/dist/product/social/format.js +34 -0
  1081. package/dist/product/social/format.js.map +1 -0
  1082. package/dist/product/social/index.cjs +38 -111
  1083. package/dist/product/social/index.d.ts +12 -11
  1084. package/dist/product/social/index.d.ts.map +1 -0
  1085. package/dist/product/social/index.js +22 -5
  1086. package/dist/product/social/index.js.map +1 -1
  1087. package/dist/product/surfaces.data.cjs +25 -0
  1088. package/dist/product/surfaces.data.d.ts +1 -0
  1089. package/dist/product/surfaces.data.d.ts.map +1 -0
  1090. package/dist/product/surfaces.data.js +22 -0
  1091. package/dist/product/surfaces.data.js.map +1 -0
  1092. package/dist/styles/hanzo-motion.css +188 -0
  1093. package/dist/telemetry.cjs +31 -14
  1094. package/dist/telemetry.d.ts +1 -0
  1095. package/dist/telemetry.d.ts.map +1 -0
  1096. package/dist/telemetry.js +14 -1
  1097. package/dist/telemetry.js.map +1 -1
  1098. package/dist/theme.css +185 -0
  1099. package/dist/usage.cjs +24 -14
  1100. package/dist/usage.d.ts +1 -0
  1101. package/dist/usage.d.ts.map +1 -0
  1102. package/dist/usage.js +7 -1
  1103. package/dist/usage.js.map +1 -1
  1104. package/package.json +35 -78
  1105. package/dist/ThemeToggleNext-AEDLHX5X.js +0 -4
  1106. package/dist/ThemeToggleNext-AEDLHX5X.js.map +0 -1
  1107. package/dist/ThemeToggleNext-N6ASYJ6J.cjs +0 -19
  1108. package/dist/ThemeToggleNext-N6ASYJ6J.cjs.map +0 -1
  1109. package/dist/backends/shadcn/aspect-ratio.d.ts +0 -4
  1110. package/dist/backends/shadcn/avatar.d.ts +0 -6
  1111. package/dist/backends/shadcn/badge.d.ts +0 -9
  1112. package/dist/backends/shadcn/button.d.ts +0 -19
  1113. package/dist/backends/shadcn/card.d.ts +0 -9
  1114. package/dist/backends/shadcn/checkbox.d.ts +0 -9
  1115. package/dist/backends/shadcn/collapsible.d.ts +0 -5
  1116. package/dist/backends/shadcn/command.d.ts +0 -80
  1117. package/dist/backends/shadcn/dialog.d.ts +0 -15
  1118. package/dist/backends/shadcn/dropdown-menu.d.ts +0 -34
  1119. package/dist/backends/shadcn/index.d.ts +0 -23
  1120. package/dist/backends/shadcn/input.d.ts +0 -11
  1121. package/dist/backends/shadcn/label.d.ts +0 -4
  1122. package/dist/backends/shadcn/popover.d.ts +0 -7
  1123. package/dist/backends/shadcn/progress.d.ts +0 -4
  1124. package/dist/backends/shadcn/scroll-area.d.ts +0 -5
  1125. package/dist/backends/shadcn/select.d.ts +0 -13
  1126. package/dist/backends/shadcn/separator.d.ts +0 -4
  1127. package/dist/backends/shadcn/slider.d.ts +0 -4
  1128. package/dist/backends/shadcn/switch.d.ts +0 -4
  1129. package/dist/backends/shadcn/tabs.d.ts +0 -7
  1130. package/dist/backends/shadcn/textarea.d.ts +0 -4
  1131. package/dist/backends/shadcn/toaster.d.ts +0 -10
  1132. package/dist/backends/shadcn/tooltip.d.ts +0 -7
  1133. package/dist/backends/shadcn/utils.d.ts +0 -8
  1134. package/dist/billing.cjs +0 -14
  1135. package/dist/billing.cjs.map +0 -1
  1136. package/dist/billing.d.ts +0 -1
  1137. package/dist/billing.js +0 -3
  1138. package/dist/billing.js.map +0 -1
  1139. package/dist/canvas.cjs.map +0 -1
  1140. package/dist/chunk-3NG33DV2.cjs +0 -606
  1141. package/dist/chunk-3NG33DV2.cjs.map +0 -1
  1142. package/dist/chunk-5CZOYONP.js +0 -342
  1143. package/dist/chunk-5CZOYONP.js.map +0 -1
  1144. package/dist/chunk-77AMCLN4.js +0 -99
  1145. package/dist/chunk-77AMCLN4.js.map +0 -1
  1146. package/dist/chunk-7XDEUEWI.cjs +0 -43
  1147. package/dist/chunk-7XDEUEWI.cjs.map +0 -1
  1148. package/dist/chunk-7ZNK6JSS.js +0 -830
  1149. package/dist/chunk-7ZNK6JSS.js.map +0 -1
  1150. package/dist/chunk-ARV3P4CE.cjs +0 -104
  1151. package/dist/chunk-ARV3P4CE.cjs.map +0 -1
  1152. package/dist/chunk-FVQXROBK.js +0 -36
  1153. package/dist/chunk-FVQXROBK.js.map +0 -1
  1154. package/dist/chunk-GVCOAJLO.js +0 -396
  1155. package/dist/chunk-GVCOAJLO.js.map +0 -1
  1156. package/dist/chunk-GWNNLYX4.cjs +0 -352
  1157. package/dist/chunk-GWNNLYX4.cjs.map +0 -1
  1158. package/dist/chunk-MWBFAV3D.cjs +0 -104
  1159. package/dist/chunk-MWBFAV3D.cjs.map +0 -1
  1160. package/dist/chunk-ONVERVFG.cjs +0 -850
  1161. package/dist/chunk-ONVERVFG.cjs.map +0 -1
  1162. package/dist/chunk-P2QU5MN5.js +0 -554
  1163. package/dist/chunk-P2QU5MN5.js.map +0 -1
  1164. package/dist/chunk-WHJR5S4L.cjs +0 -417
  1165. package/dist/chunk-WHJR5S4L.cjs.map +0 -1
  1166. package/dist/chunk-ZGTJCJ55.js +0 -92
  1167. package/dist/chunk-ZGTJCJ55.js.map +0 -1
  1168. package/dist/components.d.ts +0 -1
  1169. package/dist/dashboard.cjs.map +0 -1
  1170. package/dist/data.cjs.map +0 -1
  1171. package/dist/framework/core.cjs.map +0 -1
  1172. package/dist/framework/index.cjs.map +0 -1
  1173. package/dist/gitops.cjs.map +0 -1
  1174. package/dist/gui-config.cjs.map +0 -1
  1175. package/dist/index.cjs.map +0 -1
  1176. package/dist/network.cjs +0 -14
  1177. package/dist/network.cjs.map +0 -1
  1178. package/dist/network.d.ts +0 -1
  1179. package/dist/network.js +0 -3
  1180. package/dist/network.js.map +0 -1
  1181. package/dist/oss.cjs.map +0 -1
  1182. package/dist/primitives/bases/data/index.cjs.map +0 -1
  1183. package/dist/product/index.cjs.map +0 -1
  1184. package/dist/product/menu/DropdownMenu.d.ts +0 -29
  1185. package/dist/product/social/api.cjs.map +0 -1
  1186. package/dist/product/social/index.cjs.map +0 -1
  1187. package/dist/telemetry.cjs.map +0 -1
  1188. package/dist/usage.cjs.map +0 -1
  1189. package/dist/wallet.cjs +0 -14
  1190. package/dist/wallet.cjs.map +0 -1
  1191. package/dist/wallet.d.ts +0 -1
  1192. package/dist/wallet.js +0 -3
  1193. package/dist/wallet.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/product/host.tsx","../src/product/BackendState.tsx","../src/product/PageHeader.tsx","../src/product/accent.ts","../src/product/PrimaryButton.tsx","../src/product/EmptyState.tsx","../src/product/Field.tsx"],"names":["createContext","jsx","useContext","jsxs","Card","XStack","TriangleAlert","Text","Button","CreditCard","YStack","useSyncExternalStore","useEmit","labelOf","Check","ExternalLink","ArrowRight","Label","Input","textSize","TextArea","Switch","Slider"],"mappings":"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","file":"chunk-WHJR5S4L.cjs","sourcesContent":["'use client'\n\n/**\n * The host seam — the ONE place an app injects its effects into this layer.\n *\n * The product layer is presentational and host-agnostic: it never imports a\n * router or an auth module. An honest state card still has to OFFER \"Sign in\n * again\" (401) or \"Add credits\" (402), so the app provides those two effects\n * once at its root and every card below renders the right affordance. Without a\n * provider the affordance is simply not offered — nothing is faked.\n */\nimport { createContext, useContext, type ReactNode } from 'react'\n\nexport type HostActions = {\n /** Re-authenticate and return to this exact page (401). */\n signIn?: () => void\n /** Navigate to the org's top-up surface (402). */\n addCredits?: () => void\n}\n\nconst HostCtx = createContext<HostActions>({})\n\nexport const HostProvider = ({ actions, children }: { actions: HostActions; children: ReactNode }) => (\n <HostCtx.Provider value={actions}>{children}</HostCtx.Provider>\n)\n\nexport const useHost = (): HostActions => useContext(HostCtx)\n","'use client'\n\n/**\n * Honest backend states for `/v1`-backed modules — ONE place that maps a thrown\n * HTTP error to a truthful explanation.\n *\n * A 503 means the runtime/keys aren't wired on this deployment yet, a 404/405\n * means the route isn't mounted here, 401/403 means the session can't read it,\n * 402 means the org has no funded balance. Nothing is fabricated — on failure the\n * caller shows this card instead of placeholder rows/charts.\n *\n * Classification is duck-typed on `status`, so any client's error class works\n * (console's `ApiError`, commerce's `CommerceError`, …) without this layer\n * depending on one. Effects come from `useHost()`.\n */\nimport type { ReactNode } from 'react'\nimport { Button, Card, Text, XStack } from '@hanzo/gui'\nimport { TriangleAlert, CreditCard } from '@hanzogui/lucide-icons-2'\n\nimport { useHost } from './host'\n\nexport type BackendStateKind =\n | 'not-initialized'\n | 'unavailable'\n | 'not-implemented'\n | 'access'\n | 'signin'\n | 'billing'\n | 'error'\n\nexport type BackendState = { kind: BackendStateKind; message: string }\n\n/**\n * Classify a thrown `/v1` error into an honest kind + raw message.\n *\n * 401 and 403 are DISTINCT for a signed-in user: 401 = the session is expired /\n * not recognized (re-auth fixes it → `signin`), 403 = the account IS signed in\n * but this surface isn't authorized/enabled for its org (`access`). A signed-in\n * user is NEVER told to \"sign in\" for a 403 — that would be a false instruction.\n */\nexport function classifyBackend(e: unknown): BackendState {\n const status = typeof (e as { status?: unknown })?.status === 'number' ? (e as { status: number }).status : 0\n const message = e instanceof Error ? e.message : String(e)\n if (status === 503) return { kind: 'not-initialized', message }\n if (status === 404 || status === 405) return { kind: 'unavailable', message }\n // 501 — the route EXISTS and answers honestly that its body ships later (the\n // Cloudflare R2/KV/D1 Phase-2 seams). Distinct from 404 (not mounted here): the\n // capability is real and planned, so say that rather than \"not available yet\".\n if (status === 501) return { kind: 'not-implemented', message }\n if (status === 402) return { kind: 'billing', message }\n if (status === 401) return { kind: 'signin', message }\n if (status === 403) return { kind: 'access', message }\n return { kind: 'error', message }\n}\n\n/**\n * Classify a READ (GET/list) failure. Identical to `classifyBackend` EXCEPT a 402\n * is NOT a wall: listing/reading a resource is never credit-gated, so a 402 on a\n * read means \"nothing is provisioned yet\" — the caller shows its honest EMPTY\n * state (e.g. \"No buckets yet · Create one\"), never an \"add credits\" paywall\n * (that belongs only on a paid WRITE). Returns `null` for a 402 → treat as empty.\n */\nexport function classifyRead(e: unknown): BackendState | null {\n const s = classifyBackend(e)\n return s.kind === 'billing' ? null : s\n}\n\nconst TITLES: Record<BackendStateKind, string> = {\n 'not-initialized': 'Backend not initialized',\n unavailable: 'Not available on this deployment yet',\n 'not-implemented': 'Not yet available',\n access: 'Not enabled for your account',\n signin: 'Your session expired',\n billing: 'Add credits to continue',\n error: 'Could not reach the backend',\n}\n\nconst BODIES: Record<BackendStateKind, string> = {\n 'not-initialized':\n 'The /v1 route is mounted but its runtime (or the console API key it proxies to) is not configured on this deployment yet. Real data appears here once it is — no placeholder data is shown.',\n unavailable:\n 'This endpoint is not mounted at the gateway on this host yet. The view lights up automatically once the route is live.',\n // 501 — a real, planned capability whose body ships in a later phase.\n 'not-implemented':\n 'This capability is planned but not wired yet. The backend answers honestly rather than pretending it worked — nothing here is fabricated, and the view lights up automatically once it ships.',\n // 403 for a SIGNED-IN user — never \"sign in\".\n access:\n \"You're signed in, but this isn't enabled for your organization on this deployment, or it's an admin-only surface. It appears here automatically once your account has access — nothing is fabricated.\",\n // 401 — the session itself lapsed; re-auth returns to this exact page.\n signin: 'Your session has expired or isn’t recognized here. Sign in again to continue where you left off.',\n // Empty → the card shows the backend's own message (the honest \"Insufficient\n // balance. Please add credits…\" from the gateway billing gate).\n billing: '',\n error: '',\n}\n\n/** A truthful state card for a `/v1` load failure, with an optional retry + hint. */\nexport function BackendStateCard({\n state,\n onRetry,\n hint,\n}: {\n state: BackendState\n onRetry?: () => void\n hint?: ReactNode\n}) {\n const { signIn, addCredits } = useHost()\n return (\n <Card borderWidth={1} borderColor=\"$borderColor\" p=\"$4\" gap=\"$2\" maxWidth={640}>\n <XStack gap=\"$2\" items=\"center\">\n <TriangleAlert size={16} />\n <Text fontSize=\"$4\" fontWeight=\"700\">\n {TITLES[state.kind]}\n </Text>\n </XStack>\n <Text fontSize=\"$3\" color=\"$color11\">\n {BODIES[state.kind] || state.message}\n </Text>\n {hint ? (\n <Text fontSize=\"$2\" color=\"$color10\">\n {hint}\n </Text>\n ) : null}\n {state.kind === 'signin' && signIn ? (\n <Button size=\"$2\" theme=\"light\" self=\"flex-start\" onPress={signIn}>\n Sign in again\n </Button>\n ) : state.kind === 'billing' && addCredits ? (\n // 402 — the org has no funded balance. Offer a top-up CTA (and keep Retry so\n // a returning, funded caller can reload in place).\n <XStack gap=\"$2\" items=\"center\" flexWrap=\"wrap\">\n <Button size=\"$2\" theme=\"light\" self=\"flex-start\" icon={<CreditCard size={14} />} onPress={addCredits}>\n Add credits\n </Button>\n {onRetry ? (\n <Button size=\"$2\" self=\"flex-start\" onPress={onRetry}>\n Retry\n </Button>\n ) : null}\n </XStack>\n ) : onRetry ? (\n <Button size=\"$2\" self=\"flex-start\" onPress={onRetry}>\n Retry\n </Button>\n ) : null}\n </Card>\n )\n}\n","'use client'\n\nimport type { ReactNode } from 'react'\nimport { Text, XStack, YStack } from '@hanzo/gui'\n\n/** Section title + optional subtitle and right-aligned actions. */\nexport function PageHeader({\n title,\n subtitle,\n actions,\n}: {\n title: string\n subtitle?: string\n actions?: ReactNode\n}) {\n return (\n // flexWrap lets the actions drop below the title on narrow screens; flex={1}\n // minW={0} lets the title column shrink so a long subtitle WRAPS instead of\n // running off the viewport (a flex child defaults to min-width:auto = content\n // width, which would overflow on mobile).\n <XStack justify=\"space-between\" items=\"flex-start\" gap=\"$3\" flexWrap=\"wrap\">\n <YStack gap=\"$1\" flex={1} minW={200}>\n <Text fontSize=\"$7\" fontWeight=\"500\" letterSpacing={-0.4}>\n {title}\n </Text>\n {subtitle ? (\n <Text fontSize=\"$3\" color=\"$color11\">\n {subtitle}\n </Text>\n ) : null}\n </YStack>\n {/* Actions take a FULL line below the title on phones (width 100%) and WRAP —\n so a header with many buttons (e.g. Tracker's Projects/Refresh/List/Board/\n New issue/Delete) never runs off-screen and clips the last controls. At $md+\n they collapse back to a right-aligned inline row beside the title. */}\n {actions ? (\n <XStack gap=\"$2\" items=\"center\" flexWrap=\"wrap\" width=\"100%\" $md={{ width: 'auto', justify: 'flex-end' }}>\n {actions}\n </XStack>\n ) : null}\n </XStack>\n )\n}\n","'use client'\n\n/**\n * Org accent theme — the ONE place that turns an organization's saved brand color\n * (`themeData.colorPrimary`, when `themeData.isEnabled`) into the LIVE console accent.\n *\n * The console is monochrome by default; an org opts into a custom accent in Settings →\n * Branding. Saving persists the color on the org record (that half already works). This\n * module is the missing APPLY half: a tiny external store holds the resolved accent\n * (hex + a readable contrast, or null); `setOrgAccent` updates it on load AND on save\n * (one mechanism, two callers), and `useAccent()` lets the genuine accent surfaces (the\n * primary button, the active tabs, the active nav item) read it and recolor with real\n * `@hanzo/gui` props — reverting cleanly to the default monochrome when the org disables\n * its theme (or the hex is invalid). React-prop driven (Tamagui's own styling path), NOT\n * a CSS class — Tamagui does not forward `className` to a Button's DOM node.\n *\n * Pure + SSR-safe: the resolve/contrast helpers are pure (unit-tested); the store starts\n * from a stable default snapshot so the server render and first client paint agree.\n */\nimport { useSyncExternalStore } from 'react'\n\n/** An org's persisted theme block (mirrors IAM `themeData`; only the fields we apply). */\nexport type OrgThemeData = {\n colorPrimary?: string\n isEnabled?: boolean\n}\n\n/** The live accent — a resolved hex + a readable text color for content on it, or null. */\nexport type Accent = { accent: string | null; contrast: string }\n\n/** True for a 3- or 6-digit CSS hex color (`#RGB` / `#RRGGBB`). */\nexport function isHexColor(v: string | undefined | null): boolean {\n return typeof v === 'string' && /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(v.trim())\n}\n\n/**\n * The accent hex to apply for an org, or `null` when no custom accent should be used —\n * i.e. the theme is disabled, missing, or the color is not a valid hex. PURE.\n */\nexport function resolveAccent(theme: OrgThemeData | null | undefined): string | null {\n if (!theme || !theme.isEnabled) return null\n const hex = (theme.colorPrimary ?? '').trim()\n return isHexColor(hex) ? hex : null\n}\n\n/** Expand `#abc` → `#aabbcc`; pass a 6-digit hex through (lowercased). */\nfunction expandHex(hex: string): string {\n const h = hex.trim().toLowerCase()\n if (h.length === 4) return `#${h[1]}${h[1]}${h[2]}${h[2]}${h[3]}${h[3]}`\n return h\n}\n\n/**\n * A readable text color (`#000000` / `#ffffff`) for content placed ON the accent,\n * chosen by the accent's relative luminance (WCAG-style). PURE. Falls back to white\n * for a non-hex input (never throws).\n */\nexport function contrastText(hex: string): '#000000' | '#ffffff' {\n if (!isHexColor(hex)) return '#ffffff'\n const h = expandHex(hex)\n const r = parseInt(h.slice(1, 3), 16) / 255\n const g = parseInt(h.slice(3, 5), 16) / 255\n const b = parseInt(h.slice(5, 7), 16) / 255\n const lin = (c: number) => (c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4)\n const luminance = 0.2126 * lin(r) + 0.7152 * lin(g) + 0.0722 * lin(b)\n return luminance > 0.5 ? '#000000' : '#ffffff'\n}\n\n/** Resolve a theme block to the `Accent` value it should apply (accent+contrast or null). PURE. */\nexport function accentFor(theme: OrgThemeData | null | undefined): Accent {\n const hex = resolveAccent(theme)\n return { accent: hex, contrast: hex ? contrastText(hex) : '#ffffff' }\n}\n\n// ── The live accent store (an external store React subscribes to) ─────────────\n\n/** The default (no custom accent) — a STABLE reference so SSR + first paint agree. */\nconst DEFAULT: Accent = { accent: null, contrast: '#ffffff' }\n\nlet current: Accent = DEFAULT\nconst listeners = new Set<() => void>()\n\n/**\n * Set the live accent from an org theme block. Called on load (from the fetched org) AND\n * immediately on save — the SINGLE mechanism, so the accent survives reload and updates\n * without one. A no-op when the resolved accent is unchanged (keeps the snapshot stable).\n */\nexport function setOrgAccent(theme: OrgThemeData | null | undefined): void {\n const next = accentFor(theme)\n if (next.accent === current.accent) return\n current = next.accent ? next : DEFAULT\n for (const l of listeners) l()\n}\n\nfunction subscribe(cb: () => void): () => void {\n listeners.add(cb)\n return () => {\n listeners.delete(cb)\n }\n}\n\n/** The live accent (subscribes to the store). Returns the default until an org theme is applied. */\nexport function useAccent(): Accent {\n return useSyncExternalStore(\n subscribe,\n () => current,\n () => DEFAULT,\n )\n}\n","'use client'\n\n/**\n * Primary button — the one white, high-emphasis action for the console.\n *\n * Monochrome brand: `theme=\"light\"` flips the button to the light theme inside\n * the dark console, giving a white fill with a near-black label and icon — no\n * hue accent. Use it for the single primary action in a view (sign in, save,\n * get started). Secondary and destructive actions use the default neutral\n * `Button`.\n *\n * When an org enables a custom brand color, this — the console's one primary\n * action — recolors to the org accent (inline bg + the color prop the label/icon\n * inherit), reading the live accent from `useAccent()`; with no custom theme it\n * stays the default white. A caller's own `style`/`color` still win (spread last).\n */\nimport type { ComponentProps } from 'react'\nimport { Button } from '@hanzo/gui'\n\nimport { useAccent } from './accent'\nimport { labelOf, useEmit } from './instrument'\n\nexport function PrimaryButton({ onPress, ...rest }: ComponentProps<typeof Button>) {\n const { accent, contrast } = useAccent()\n const track = useEmit()\n // DESTRUCTURE the caller's handler out first. Wrapping it while still reading it\n // off a rebound `props` makes the wrapper call ITSELF — an unbounded recursion\n // that a real browser click turns into \"Maximum call stack size exceeded\".\n const press = (e: unknown) => {\n // The label IS the identity of a primary action — no app has to name it.\n track({\n component: 'PrimaryButton',\n action: 'click',\n id: labelOf(rest.children) ?? rest['aria-label'],\n })\n ;(onPress as ((e: unknown) => void) | undefined)?.(e)\n }\n const handler = press as ComponentProps<typeof Button>['onPress']\n // Accent set → a filled accent button (bg + readable text, via inline style Tamagui\n // forwards to the DOM). No accent → the default monochrome white (theme=\"light\").\n if (accent) {\n return <Button style={{ backgroundColor: accent, color: contrast, borderColor: accent }} onPress={handler} {...rest} />\n }\n return <Button theme=\"light\" onPress={handler} {...rest} />\n}\n","'use client'\n\n/**\n * Rich empty state — the ONE way the console turns a real, honest \"nothing here\n * yet\" into a helpful onboarding moment (DigitalOcean / Vercel class) instead of\n * a dead screen.\n *\n * It is NOT a fabricated-data fallback: callers render it only when a load\n * genuinely succeeded with zero rows (or a resource has no surface yet). It shows\n * the product icon, a one-line \"what this is\", a couple of guidance bullets, a\n * single primary call-to-action (Deploy / Create / Connect …) and an optional\n * secondary link (Docs / CLI). Orthogonal to `BackendStateCard` (failures) and\n * `DataTable`'s thin inline empty (in-table) — this is the full-bleed first-run\n * surface a module shows in place of its table.\n */\nimport type { ReactElement, ReactNode } from 'react'\nimport { Button, Card, Text, XStack, YStack } from '@hanzo/gui'\nimport { ArrowRight, Check, ExternalLink } from '@hanzogui/lucide-icons-2'\n\nimport type { IconLike } from './color'\nimport { PrimaryButton } from './PrimaryButton'\n\n/** A single call-to-action — primary (filled) or a secondary/external link. */\nexport type EmptyAction = {\n label: string\n /** In-app navigation / handler. */\n onPress?: () => void\n /** External URL — opens in a new tab with an external-link affordance. */\n href?: string\n icon?: ReactElement\n}\n\n/** Open an external URL in a new tab (no-opener), guarded for SSR. */\nfunction openHref(href: string): void {\n if (typeof window !== 'undefined') window.open(href, '_blank', 'noopener')\n}\n\nimport { useEmit } from './instrument'\n\nexport function EmptyState({\n icon: Icon,\n title,\n description,\n bullets,\n primary,\n secondary,\n}: {\n /** Product/section icon — any lucide/Gui icon component (size + optional color). */\n icon: IconLike\n title: string\n description: string\n /** Optional \"here's how to get started\" guidance bullets. */\n bullets?: string[]\n /** The single high-emphasis action (Deploy / Create / Connect). */\n primary?: EmptyAction\n /** An optional lower-emphasis action (Docs / CLI / Learn more). */\n secondary?: EmptyAction\n}) {\n const track = useEmit()\n return (\n <Card\n borderWidth={1}\n borderColor=\"$borderColor\"\n borderStyle=\"dashed\"\n p=\"$6\"\n gap=\"$4\"\n items=\"center\"\n maxWidth={640}\n self=\"center\"\n width=\"100%\"\n >\n <YStack\n width={48}\n height={48}\n items=\"center\"\n justify=\"center\"\n rounded=\"$4\"\n bg=\"$color3\"\n >\n <Icon size={24} />\n </YStack>\n\n <YStack gap=\"$2\" items=\"center\" maxW={480}>\n <Text fontSize=\"$6\" fontWeight=\"500\" text=\"center\" letterSpacing={-0.3}>\n {title}\n </Text>\n <Text fontSize=\"$3\" color=\"$color11\" text=\"center\">\n {description}\n </Text>\n </YStack>\n\n {bullets && bullets.length ? (\n <YStack gap=\"$2\" self=\"stretch\" maxW={420} mx=\"auto\">\n {bullets.map((b) => (\n <XStack key={b} gap=\"$2\" items=\"flex-start\">\n <YStack pt=\"$1\">\n <Check size={14} color=\"$color10\" />\n </YStack>\n <Text fontSize=\"$3\" color=\"$color11\" flex={1}>\n {b}\n </Text>\n </XStack>\n ))}\n </YStack>\n ) : null}\n\n {primary || secondary ? (\n <XStack gap=\"$2\" items=\"center\" flexWrap=\"wrap\" justify=\"center\">\n {primary ? (\n <PrimaryButton\n icon={primary.icon}\n iconAfter={primary.href ? <ExternalLink size={15} /> : <ArrowRight size={15} />}\n onPress={() => {\n track({ component: 'EmptyState', action: 'click', id: title, value: primary.label })\n if (primary.href) openHref(primary.href)\n else primary.onPress?.()\n }}\n >\n {primary.label}\n </PrimaryButton>\n ) : null}\n {secondary ? (\n <Button\n chromeless\n icon={secondary.icon}\n iconAfter={secondary.href ? <ExternalLink size={14} /> : undefined}\n onPress={() => {\n track({ component: 'EmptyState', action: 'click', id: title, value: secondary.label })\n if (secondary.href) openHref(secondary.href)\n else secondary.onPress?.()\n }}\n >\n {secondary.label}\n </Button>\n ) : null}\n </XStack>\n ) : null}\n </Card>\n )\n}\n","'use client'\n\n/**\n * Form field primitives — labeled rows over Hanzo GUI inputs.\n *\n * One way to render a labeled control. Every editor field goes through these, so\n * spacing, disabled styling, and the label column stay consistent. Style props\n * use the v5 shorthand set (p/px/items/justify/...).\n */\nimport { createContext, useContext, type CSSProperties, type ReactNode } from 'react'\nimport {\n Input,\n Label,\n Switch,\n TextArea,\n Slider,\n Text,\n XStack,\n YStack,\n} from '@hanzo/gui'\n\nimport { textSize, useEmit, type UiEvent } from './instrument'\n\n// The label the caller ALREADY typed on the FieldRow becomes the analytics name —\n// so an app never labels a field twice and no field reports as \"unnamed\".\nconst FieldNameContext = createContext<string | undefined>(undefined)\n\n/** Every Field* control reports `{component, action:'change', id:<row label>}`;\n * the VALUE is only ever a scalar or a text LENGTH, never free text. */\nfunction useFieldTrack(component: string): (e: Omit<UiEvent, 'component'>) => void {\n const track = useEmit()\n const name = useContext(FieldNameContext)\n return (e) => track({ component, id: name, ...e })\n}\n\n/**\n * Labeled row. STACKED on phones (label full-width above a full-width control) so a\n * form inside a SlideOver stays usable and never clips its labels; a fixed 180px\n * label column + flexing control at $md+ (the two-column desktop/tablet layout).\n */\nexport function FieldRow({ label, children }: { label: string; children: ReactNode }) {\n return (\n <FieldNameContext.Provider value={label}>\n <XStack gap=\"$3\" items=\"flex-start\" flexWrap=\"wrap\">\n <Label width=\"100%\" pt=\"$2\" color=\"$color11\" fontSize=\"$3\" $md={{ width: 180 }}>\n {label}\n </Label>\n <YStack flex={1} minW={0} $md={{ minW: 240 }}>\n {children}\n </YStack>\n </XStack>\n </FieldNameContext.Provider>\n )\n}\n\nexport function FieldText({\n value,\n onChange,\n disabled,\n secure,\n placeholder,\n}: {\n value: string\n onChange: (v: string) => void\n disabled?: boolean\n secure?: boolean\n placeholder?: string\n}) {\n const track = useFieldTrack('FieldText')\n return (\n <Input\n value={value}\n onChangeText={(v: string) => {\n track({ action: 'change', value: secure ? 0 : textSize(v) })\n onChange(v)\n }}\n disabled={disabled}\n secureTextEntry={secure}\n placeholder={placeholder}\n autoCapitalize=\"none\"\n />\n )\n}\n\nexport function FieldTextArea({\n value,\n onChange,\n disabled,\n rows = 6,\n}: {\n value: string\n onChange: (v: string) => void\n disabled?: boolean\n rows?: number\n}) {\n const track = useFieldTrack('FieldTextArea')\n return (\n <TextArea\n value={value}\n onChangeText={(v: string) => {\n track({ action: 'change', value: textSize(v) })\n onChange(v)\n }}\n disabled={disabled}\n numberOfLines={rows}\n />\n )\n}\n\nexport function FieldSwitch({\n checked,\n onChange,\n disabled,\n}: {\n checked: boolean\n onChange: (v: boolean) => void\n disabled?: boolean\n}) {\n const track = useFieldTrack('FieldSwitch')\n return (\n <Switch\n checked={checked}\n onCheckedChange={(v: boolean) => {\n track({ action: 'change', value: v })\n onChange(v)\n }}\n disabled={disabled}\n size=\"$3\"\n >\n <Switch.Thumb />\n </Switch>\n )\n}\n\n/**\n * A labeled dropdown.\n *\n * Renders a REAL native `<select>` on web (and the OS-native picker on mobile),\n * NOT the `@hanzo/gui` `<Select native>` — that primitive is broken in gui 7.3.0:\n * `native` emits bare `<option>` elements with NO `<select>` wrapper, so every\n * dropdown across the console (region/size pickers, all edit forms) rendered as a\n * non-interactive flat list of option text that buried the surrounding controls.\n * A native `<select>` is compact, keyboard/ARIA-accessible, gives the native\n * mobile picker (best small-screen UX), and is themed via the Tamagui CSS custom\n * properties (`--background`/`--color12`/`--borderColor`) so it tracks light/dark.\n */\nconst CHEVRON = `data:image/svg+xml,${encodeURIComponent(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#9a9a9a\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>',\n)}`\n\nfunction selectStyle(disabled?: boolean): CSSProperties {\n return {\n width: '100%',\n boxSizing: 'border-box',\n appearance: 'none',\n WebkitAppearance: 'none',\n MozAppearance: 'none',\n background: `var(--background) url(\"${CHEVRON}\") no-repeat right 10px center`,\n color: 'var(--color12)',\n border: '1px solid var(--borderColor)',\n borderRadius: 9,\n padding: '9px 34px 9px 12px',\n fontSize: 14,\n lineHeight: '20px',\n fontFamily: 'inherit',\n height: 40,\n outline: 'none',\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? 0.5 : 1,\n }\n}\n\nconst OPTION_STYLE: CSSProperties = { background: 'var(--color2)', color: 'var(--color12)' }\n\nexport function FieldSelect({\n value,\n options,\n onChange,\n disabled,\n placeholder = 'Select…',\n}: {\n value: string\n options: string[]\n onChange: (v: string) => void\n disabled?: boolean\n placeholder?: string\n}) {\n // When the current value isn't one of the options (empty/unset), show the\n // placeholder as a selected-but-disabled row so the control reads honestly.\n const track = useFieldTrack('FieldSelect')\n const showPlaceholder = value === '' || !options.includes(value)\n return (\n <select\n value={showPlaceholder ? '' : value}\n onChange={(e) => {\n track({ action: 'change', value: e.currentTarget.value })\n onChange(e.currentTarget.value)\n }}\n disabled={disabled}\n aria-label={placeholder}\n style={selectStyle(disabled)}\n >\n {showPlaceholder ? (\n <option value=\"\" disabled style={OPTION_STYLE}>\n {placeholder}\n </option>\n ) : null}\n {options.map((opt) => (\n <option key={opt} value={opt} style={OPTION_STYLE}>\n {opt}\n </option>\n ))}\n </select>\n )\n}\n\nexport function FieldSlider({\n value,\n min,\n max,\n step,\n onChange,\n disabled,\n}: {\n value: number\n min: number\n max: number\n step: number\n onChange: (v: number) => void\n disabled?: boolean\n}) {\n const track = useFieldTrack('FieldSlider')\n return (\n <XStack gap=\"$3\" items=\"center\">\n <Text width={56} fontSize=\"$3\" color=\"$color11\">\n {value}\n </Text>\n <Slider\n flex={1}\n min={min}\n max={max}\n step={step}\n value={[value]}\n onValueChange={(v) => {\n track({ action: 'change', value: v[0] ?? min })\n onChange(v[0] ?? min)\n }}\n disabled={disabled}\n >\n <Slider.Track>\n <Slider.TrackActive />\n </Slider.Track>\n <Slider.Thumb index={0} circular />\n </Slider>\n </XStack>\n )\n}\n"]}
@@ -1,92 +0,0 @@
1
- // src/product/social/api.ts
2
- var enc = encodeURIComponent;
3
- var str = (v) => typeof v === "string" ? v : v == null ? "" : String(v);
4
- var num = (v) => {
5
- if (typeof v === "number" && Number.isFinite(v)) return v;
6
- if (typeof v === "string" && v.trim() !== "" && Number.isFinite(Number(v))) return Number(v);
7
- return 0;
8
- };
9
- var strs = (v) => Array.isArray(v) ? v.filter((x) => typeof x === "string") : [];
10
- var asRecord = (v) => v && typeof v === "object" && !Array.isArray(v) ? v : {};
11
- var rows = (payload) => {
12
- if (Array.isArray(payload)) return payload.filter((x) => x && typeof x === "object");
13
- if (payload && typeof payload === "object") {
14
- for (const k of ["data", "items", "rows"]) {
15
- const v = payload[k];
16
- if (Array.isArray(v)) return v.filter((x) => x && typeof x === "object");
17
- }
18
- }
19
- return [];
20
- };
21
- var PROVIDERS = ["x", "facebook", "instagram", "linkedin", "tiktok", "youtube", "threads"];
22
- var ACCOUNT_STATUSES = ["connected", "disconnected", "error"];
23
- var POST_STATUSES = ["draft", "scheduled", "published", "failed"];
24
- function normalizeAccount(raw) {
25
- const r = asRecord(raw);
26
- return {
27
- id: str(r.id),
28
- provider: str(r.provider) || "x",
29
- handle: str(r.handle),
30
- status: str(r.status) || "connected",
31
- createdAt: num(r.createdAt),
32
- updatedAt: num(r.updatedAt)
33
- };
34
- }
35
- function normalizePost(raw) {
36
- const r = asRecord(raw);
37
- return {
38
- id: str(r.id),
39
- content: str(r.content),
40
- channel: str(r.channel) || "x",
41
- status: str(r.status) || "draft",
42
- scheduleAt: num(r.scheduleAt),
43
- media: strs(r.media),
44
- accountId: str(r.accountId) || void 0,
45
- externalId: str(r.externalId) || void 0,
46
- error: str(r.error) || void 0,
47
- createdAt: num(r.createdAt),
48
- updatedAt: num(r.updatedAt)
49
- };
50
- }
51
- function normalizeSummary(raw) {
52
- const r = asRecord(raw);
53
- return { posts: num(r.posts), scheduled: num(r.scheduled), published: num(r.published), accounts: num(r.accounts) };
54
- }
55
- function normalizeProviderCapability(raw) {
56
- const r = asRecord(raw);
57
- return {
58
- provider: str(r.provider),
59
- credentialsConfigured: Boolean(r.credentialsConfigured),
60
- missingCredentials: strs(r.missingCredentials)
61
- };
62
- }
63
- var normalizeAccounts = (p) => rows(p).map(normalizeAccount).filter((a) => a.id);
64
- var normalizePosts = (p) => rows(p).map(normalizePost).filter((x) => x.id);
65
- var normalizeProviders = (p) => rows(p).map(normalizeProviderCapability).filter((c) => c.provider);
66
- function createSocialApi(rest) {
67
- return {
68
- summary: () => rest.get("summary").then(normalizeSummary),
69
- /** Publish-readiness per network (+ the exact missing OAuth-app credentials). */
70
- providers: () => rest.get("providers").then(normalizeProviders),
71
- accounts: {
72
- list: (provider) => rest.get(`accounts${provider ? `?provider=${enc(provider)}` : ""}`).then(normalizeAccounts),
73
- get: (id) => rest.get(`accounts/${enc(id)}`).then(normalizeAccount),
74
- create: (body) => rest.post("accounts", body).then(normalizeAccount),
75
- update: (id, body) => rest.put(`accounts/${enc(id)}`, body).then(normalizeAccount),
76
- remove: (id) => rest.del(`accounts/${enc(id)}`)
77
- },
78
- posts: {
79
- list: (status) => rest.get(`posts${status ? `?status=${enc(status)}` : ""}`).then(normalizePosts),
80
- get: (id) => rest.get(`posts/${enc(id)}`).then(normalizePost),
81
- create: (body) => rest.post("posts", body).then(normalizePost),
82
- update: (id, body) => rest.put(`posts/${enc(id)}`, body).then(normalizePost),
83
- remove: (id) => rest.del(`posts/${enc(id)}`),
84
- /** Publish a post NOW to its channel's connected accounts. */
85
- publish: (id) => rest.post(`posts/${enc(id)}/publish`).then(normalizePost)
86
- }
87
- };
88
- }
89
-
90
- export { ACCOUNT_STATUSES, POST_STATUSES, PROVIDERS, createSocialApi, normalizeAccount, normalizeAccounts, normalizePost, normalizePosts, normalizeProviderCapability, normalizeProviders, normalizeSummary };
91
- //# sourceMappingURL=chunk-ZGTJCJ55.js.map
92
- //# sourceMappingURL=chunk-ZGTJCJ55.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/product/social/api.ts"],"names":[],"mappings":"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","file":"chunk-ZGTJCJ55.js","sourcesContent":["/**\n * The `/v1/social` contract — the ONE typed client for the Hanzo Social surface,\n * shared by every host that renders it (the console's Publish product, the dedicated\n * social.hanzo.ai app, any white-label admin).\n *\n * The backend is `hanzoai/cloud` `clients/social`: a native-Go per-org accounts+posts\n * store on Base/SQLite (the in-process fold of the standalone social stack, twin of\n * clients/crm) — NOT a proxy to the retired social pods. Routes (social.go):\n *\n * GET /v1/social/summary per-org roll-up\n * GET /v1/social/providers publish-readiness per network\n * GET/POST /v1/social/accounts list (?provider=) / connect\n * GET/PUT/DELETE /v1/social/accounts/:id detail / update / disconnect\n * GET/POST /v1/social/posts list (?status=) / create-or-schedule\n * GET/PUT/DELETE /v1/social/posts/:id detail / update / delete\n * POST /v1/social/posts/:id/publish publish now\n *\n * TRANSPORT IS INJECTED. This layer never picks an origin, a credential or a fetch\n * wrapper — the host passes a `SocialRest` whose paths are relative to `/v1/social`\n * (`'summary'`, `'posts/<id>/publish'`), so the console rides its session-cookie\n * `originV1Url` and another app rides its own. Every read/write is org-scoped\n * SERVER-SIDE from the validated bearer/session owner claim; no org ever travels\n * from the browser.\n *\n * Payloads are normalized DEFENSIVELY: a field rename upstream degrades a cell\n * rather than throwing, and a list is read from whichever envelope key the backend\n * uses (`data`/`items`/`rows`, or a bare array).\n */\n\nconst enc = encodeURIComponent\n\n// ── Coercion helpers (pure) ─────────────────────────────────────────────────\nconst str = (v: unknown): string => (typeof v === 'string' ? v : v == null ? '' : String(v))\nconst num = (v: unknown): number => {\n if (typeof v === 'number' && Number.isFinite(v)) return v\n if (typeof v === 'string' && v.trim() !== '' && Number.isFinite(Number(v))) return Number(v)\n return 0\n}\nconst strs = (v: unknown): string[] => (Array.isArray(v) ? v.filter((x): x is string => typeof x === 'string') : [])\nconst asRecord = (v: unknown): Record<string, unknown> =>\n v && typeof v === 'object' && !Array.isArray(v) ? (v as Record<string, unknown>) : {}\n\nconst rows = (payload: unknown): Record<string, unknown>[] => {\n if (Array.isArray(payload)) return payload.filter((x) => x && typeof x === 'object') as Record<string, unknown>[]\n if (payload && typeof payload === 'object') {\n for (const k of ['data', 'items', 'rows']) {\n const v = (payload as Record<string, unknown>)[k]\n if (Array.isArray(v)) return v.filter((x) => x && typeof x === 'object') as Record<string, unknown>[]\n }\n }\n return []\n}\n\n// ── Domain types (mirror cloud clients/social/store.go JSON tags) ────────────\n\n/** Networks — the ONE ordered vocabulary (cloud rejects an unknown provider; '' → x). */\nexport const PROVIDERS = ['x', 'facebook', 'instagram', 'linkedin', 'tiktok', 'youtube', 'threads'] as const\nexport type Provider = (typeof PROVIDERS)[number]\n\n/** Account connection lifecycle (cloud rejects an unknown status; '' → connected). */\nexport const ACCOUNT_STATUSES = ['connected', 'disconnected', 'error'] as const\n\n/** Post lifecycle (cloud rejects an unknown status; '' → draft). */\nexport const POST_STATUSES = ['draft', 'scheduled', 'published', 'failed'] as const\n\nexport type Account = {\n id: string\n provider: string\n handle: string\n status: string\n createdAt: number\n updatedAt: number\n}\n\nexport type Post = {\n id: string\n content: string\n channel: string\n status: string\n /** Unix seconds; 0 = not scheduled / publish now. */\n scheduleAt: number\n /**\n * Attached media URLs. Cloud ALWAYS serializes an array (never null) and its PUT\n * rebuilds the row from the body — so this has to round-trip: an update that\n * omitted it would wipe the post's media.\n */\n media: string[]\n /** Server-managed publish results (empty until a publish attempt lands). */\n accountId?: string\n externalId?: string\n error?: string\n createdAt: number\n updatedAt: number\n}\n\n/** The per-org roll-up (GET /v1/social/summary) — the counts SocialSummaryBar renders. */\nexport type SocialSummary = { posts: number; scheduled: number; published: number; accounts: number }\n\n/**\n * A network's publish-readiness (GET /v1/social/providers): whether this deployment\n * holds the OAuth-app credentials to publish, and — if not — exactly which env vars\n * are missing. The honest connect affordance; never a fabricated \"connected\".\n */\nexport type ProviderCapability = {\n provider: string\n credentialsConfigured: boolean\n missingCredentials: string[]\n}\n\n/** Create/update bodies — only the writable fields (server owns id/org/timestamps). */\nexport type NewAccount = Partial<Omit<Account, 'id' | 'createdAt' | 'updatedAt'>> & { provider: string }\nexport type NewPost = Partial<Omit<Post, 'id' | 'createdAt' | 'updatedAt'>> & { content: string }\n\n// ── Normalizers (pure) ──────────────────────────────────────────────────────\n\nexport function normalizeAccount(raw: unknown): Account {\n const r = asRecord(raw)\n return {\n id: str(r.id),\n provider: str(r.provider) || 'x',\n handle: str(r.handle),\n status: str(r.status) || 'connected',\n createdAt: num(r.createdAt),\n updatedAt: num(r.updatedAt),\n }\n}\n\nexport function normalizePost(raw: unknown): Post {\n const r = asRecord(raw)\n return {\n id: str(r.id),\n content: str(r.content),\n channel: str(r.channel) || 'x',\n status: str(r.status) || 'draft',\n scheduleAt: num(r.scheduleAt),\n media: strs(r.media),\n accountId: str(r.accountId) || undefined,\n externalId: str(r.externalId) || undefined,\n error: str(r.error) || undefined,\n createdAt: num(r.createdAt),\n updatedAt: num(r.updatedAt),\n }\n}\n\nexport function normalizeSummary(raw: unknown): SocialSummary {\n const r = asRecord(raw)\n return { posts: num(r.posts), scheduled: num(r.scheduled), published: num(r.published), accounts: num(r.accounts) }\n}\n\nexport function normalizeProviderCapability(raw: unknown): ProviderCapability {\n const r = asRecord(raw)\n return {\n provider: str(r.provider),\n credentialsConfigured: Boolean(r.credentialsConfigured),\n missingCredentials: strs(r.missingCredentials),\n }\n}\n\nexport const normalizeAccounts = (p: unknown): Account[] => rows(p).map(normalizeAccount).filter((a) => a.id)\nexport const normalizePosts = (p: unknown): Post[] => rows(p).map(normalizePost).filter((x) => x.id)\nexport const normalizeProviders = (p: unknown): ProviderCapability[] =>\n rows(p).map(normalizeProviderCapability).filter((c) => c.provider)\n\n// ── The transport seam ──────────────────────────────────────────────────────\n\n/**\n * The host's REST transport. `path` is relative to `/v1/social` (no leading slash);\n * the host owns the origin, the credential and the error class. A rejected promise\n * is passed straight to `classifyBackend`, so any client's error type works.\n */\nexport type SocialRest = {\n get: (path: string) => Promise<unknown>\n post: (path: string, body?: unknown) => Promise<unknown>\n put: (path: string, body?: unknown) => Promise<unknown>\n del: (path: string) => Promise<void>\n}\n\nexport type SocialApi = ReturnType<typeof createSocialApi>\n\n/** Bind the `/v1/social` contract to a host transport. One method per documented route. */\nexport function createSocialApi(rest: SocialRest) {\n return {\n summary: (): Promise<SocialSummary> => rest.get('summary').then(normalizeSummary),\n\n /** Publish-readiness per network (+ the exact missing OAuth-app credentials). */\n providers: (): Promise<ProviderCapability[]> => rest.get('providers').then(normalizeProviders),\n\n accounts: {\n list: (provider?: string): Promise<Account[]> =>\n rest.get(`accounts${provider ? `?provider=${enc(provider)}` : ''}`).then(normalizeAccounts),\n get: (id: string): Promise<Account> => rest.get(`accounts/${enc(id)}`).then(normalizeAccount),\n create: (body: NewAccount): Promise<Account> => rest.post('accounts', body).then(normalizeAccount),\n update: (id: string, body: NewAccount): Promise<Account> =>\n rest.put(`accounts/${enc(id)}`, body).then(normalizeAccount),\n remove: (id: string): Promise<void> => rest.del(`accounts/${enc(id)}`),\n },\n\n posts: {\n list: (status?: string): Promise<Post[]> =>\n rest.get(`posts${status ? `?status=${enc(status)}` : ''}`).then(normalizePosts),\n get: (id: string): Promise<Post> => rest.get(`posts/${enc(id)}`).then(normalizePost),\n create: (body: NewPost): Promise<Post> => rest.post('posts', body).then(normalizePost),\n update: (id: string, body: NewPost): Promise<Post> => rest.put(`posts/${enc(id)}`, body).then(normalizePost),\n remove: (id: string): Promise<void> => rest.del(`posts/${enc(id)}`),\n /** Publish a post NOW to its channel's connected accounts. */\n publish: (id: string): Promise<Post> => rest.post(`posts/${enc(id)}/publish`).then(normalizePost),\n },\n }\n}\n"]}
@@ -1 +0,0 @@
1
- export * from './backends/shadcn';
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"dashboard.cjs","sourcesContent":[]}
package/dist/data.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"data.cjs","sourcesContent":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"core.cjs"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/framework/responsive.ts","../../src/framework/parts.tsx","../../src/framework/CollectionBuilder.tsx","../../src/framework/CollectionsBrowser.tsx","../../src/framework/MediaGrid.tsx","../../src/framework/RecordCards.tsx","../../src/framework/DocTypeRecords.tsx","../../src/framework/DocTypeDetail.tsx"],"names":["useState","useCallback","PrimaryButton","Button","jsx","XStack","Card","jsxs","TriangleAlert","Text","Spinner","YStack","BUILDER_FIELD_TYPES","fieldsFromDocType","starterFields","useMemo","validateBuilder","blankField","moveField","toDocType","classifyBackend","Input","fieldNameFromLabel","GripVertical","SelectMenu","FieldSwitch","ArrowUp","ArrowDown","Trash2","fieldNeedsOptions","Plus","Boxes","moduleDoctypes","useEffect","PageHeader","BackendStateCard","EmptyState","mediaFileField","useRef","mediaDocPayload","ImageIcon","Upload","titleOf","looksLikeImage","cardFields","searchRecords","Search","ChevronRight","FieldDisplay","loadLinkOptions","hasProjectField","PROJECT_FIELD","enrichLinks","toRecord","docTypeToFields","makeFieldOptions","listHiddenFields","savePayload","RefreshCw","isMediaDoctype","RecordsView","dt","record","newDraft","ArrowLeft","isDraft","statusField","SUBMITTED","CANCELLED","Fragment","X","Save","Ban","Send","PenOff","Globe","Pencil","RecordForm","RecordDetail"],"mappings":"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","file":"index.cjs","sourcesContent":["'use client'\n\n/**\n * MOBILE-FIRST layout, measured from the CONTAINER — not the viewport.\n *\n * A viewport media query is the wrong question here: the DocType renderer is\n * mounted inside whatever pane a host gives it (a console with a 260px sidebar, a\n * split view, a modal), so \"is the window narrow\" and \"is MY box narrow\" are\n * different facts, and only the second one decides whether a table fits. `onLayout`\n * answers the second, works identically on web and native (no media config, no\n * `window`), and needs no host wiring.\n *\n * The first render has NO measurement, and the mobile-first answer to \"I don't\n * know yet\" is PHONE: a card list is usable at every width, a 12-column table is\n * not. So the first paint — including SSR — is the phone layout, and the desktop\n * layout is the enhancement applied after the box reports its size. That also\n * means server and client render the same tree: no hydration mismatch.\n */\nimport { useCallback, useState } from 'react'\n\n/** The width at which a data TABLE starts being readable rather than a scroll trap. */\nexport const TABLE_MIN = 720\n\n/** The width at which fixed-size cards can sit two-up. */\nexport const GRID_MIN = 560\n\n/**\n * Minimum interactive target, in px. WCAG 2.5.5 (AAA) asks for 44×44 and the iOS\n * HIG for 44pt; Material asks 48. 44 is the floor every control in this layer\n * meets on a phone — a 28px icon button next to a 28px icon button is the single\n * most common reason a mobile admin surface is unusable.\n */\nexport const TAP = 44\n\nexport type Layout = 'phone' | 'desktop'\n\n/**\n * The layout decision, as a pure function of the measured width — so the rule\n * (\"unmeasured means phone\") is testable without rendering anything.\n */\nexport function layoutFor(width: number, tableMin: number = TABLE_MIN): Layout {\n return width > 0 && width >= tableMin ? 'desktop' : 'phone'\n}\n\nexport interface ContainerLayout {\n /** 'phone' until the box has been measured wide enough for a table. */\n layout: Layout\n /** Shorthand for `layout === 'phone'`. */\n phone: boolean\n /** True once the box is wide enough to sit fixed-size cards side by side. */\n wideEnoughForGrid: boolean\n /** Measured content width in px (0 before the first layout pass). */\n width: number\n /** Spread onto the container element: `<YStack {...layoutProps} />`. */\n onLayout: (e: { nativeEvent: { layout: { width: number } } }) => void\n}\n\n/**\n * Measure the container and derive the layout. Mobile-first: `phone` until proven\n * otherwise. The setter is width-guarded so a layout pass that reports the same\n * width does not re-render.\n */\nexport function useContainerLayout(tableMin: number = TABLE_MIN): ContainerLayout {\n const [width, setWidth] = useState(0)\n\n const onLayout = useCallback((e: { nativeEvent: { layout: { width: number } } }) => {\n const w = Math.round(e?.nativeEvent?.layout?.width ?? 0)\n setWidth((prev) => (w > 0 && w !== prev ? w : prev))\n }, [])\n\n const layout = layoutFor(width, tableMin)\n const phone = layout === 'phone'\n return {\n layout,\n phone,\n wideEnoughForGrid: width >= GRID_MIN,\n width,\n onLayout,\n }\n}\n","'use client'\n\n/**\n * The small shared pieces every DocType view draws with — one definition each, so\n * an action button, an error bar and an inline loader look and behave the same in\n * the browser, the records list, the detail and the builder.\n *\n * MOBILE FIRST is a property of these parts, not of each view: `Action` is the\n * only button the layer uses, and it grows to the 44px tap floor and takes a full\n * row on a phone, so no view has to remember. Colour, type and spacing are token\n * references (`$color10`, `$red7`, `$3`) resolved by the shared @hanzo/ui scale —\n * there is no hex in this layer.\n */\nimport type { ReactElement, ReactNode } from 'react'\nimport { Button, Card, Spinner, Text, XStack, YStack } from '@hanzo/gui'\nimport { TriangleAlert } from '@hanzogui/lucide-icons-2'\n\nimport { PrimaryButton } from '../product/PrimaryButton'\nimport { TAP } from './responsive'\n\nexport interface ActionProps {\n children?: ReactNode\n icon?: ReactElement\n onPress?: () => void\n disabled?: boolean\n /** Filled, high-emphasis (Save / Create / Publish). */\n primary?: boolean\n /** Destructive tint (Delete). */\n danger?: boolean\n /** The container is phone-width: meet the tap floor and fill the row. */\n phone?: boolean\n /** Keep the label off-screen readers only — for icon-only controls. */\n label?: string\n}\n\n/**\n * THE button of this layer. On a phone it is at least `TAP` (44px) tall and\n * stretches to the row, so a thumb hits it and two actions never end up 6px apart;\n * on a wider box it collapses back to the compact `$2` admin control.\n */\nexport function Action({ children, icon, onPress, disabled, primary, danger, phone, label }: ActionProps) {\n const Cmp = primary ? PrimaryButton : Button\n return (\n <Cmp\n size={phone ? '$4' : '$2'}\n minH={phone ? TAP : undefined}\n grow={phone ? 1 : 0}\n flexBasis={phone ? 0 : 'auto'}\n minW={phone ? 140 : undefined}\n icon={icon}\n disabled={disabled}\n onPress={onPress}\n aria-label={label}\n {...(danger ? { theme: 'red' as const } : {})}\n >\n {children}\n </Cmp>\n )\n}\n\n/** A row of `Action`s that wraps rather than clipping its last control. */\nexport function Actions({ children, phone }: { children: ReactNode; phone?: boolean }) {\n return (\n <XStack gap=\"$2\" items=\"center\" flexWrap=\"wrap\" width={phone ? '100%' : undefined}>\n {children}\n </XStack>\n )\n}\n\n/** An honest inline failure — never a fabricated success, never a silent no-op. */\nexport function ErrorBar({ message }: { message: string }) {\n return (\n <Card borderWidth={1} borderColor=\"$red7\" bg=\"$red2\" p=\"$3\" maxW={620}>\n <XStack gap=\"$2\" items=\"flex-start\">\n <TriangleAlert size={15} />\n <Text fontSize=\"$3\" color=\"$red11\" flex={1}>\n {message}\n </Text>\n </XStack>\n </Card>\n )\n}\n\n/** In-flow loader — the DocType views live inside a host shell, so this never\n * takes the viewport (that is the host's own full-screen brand loader). */\nexport function Loading({ label, size = 'small' }: { label?: string; size?: 'small' | 'large' }) {\n return (\n <XStack items=\"center\" justify=\"center\" gap=\"$3\" py=\"$8\">\n <Spinner size={size} />\n {label ? (\n <Text fontSize=\"$3\" color=\"$color11\">\n {label}\n </Text>\n ) : null}\n </XStack>\n )\n}\n\n/** The name 8.0.24 shipped for the same in-flow loader. One component, two spellings. */\nexport function Loader({ label, size }: { label?: string; size?: number }) {\n return <Loading label={label} size={size && size >= 32 ? 'large' : 'small'} />\n}\n\n/** A dimmed metadata line (record count, field count, type). */\nexport function Meta({ children }: { children: ReactNode }) {\n return (\n <Text fontSize=\"$2\" color=\"$color10\" numberOfLines={1}>\n {children}\n </Text>\n )\n}\n\n/**\n * Long values must WRAP, not push the page sideways. A field can hold a URL, a\n * hash, a Lexical blob or a 400-character token with no spaces, and the default\n * `overflow-wrap: normal` refuses to break inside a word — so one such value paints\n * past the right edge of a phone. `html { overflow-x: clip }` then HIDES it rather\n * than scrolling to it, which makes the value unreadable AND invisible to\n * `scrollWidth`. Both properties are inherited, so declaring them on the container\n * covers every value inside it.\n */\nexport const WRAP_ANYWHERE = { overflowWrap: 'anywhere', wordBreak: 'break-word' } as const\n\n/** A titled section wrapper used by the detail + builder panels. */\nexport function Panel({ children, phone }: { children: ReactNode; phone?: boolean }) {\n return (\n <Card\n borderWidth={1}\n borderColor=\"$borderColor\"\n p={phone ? '$3' : '$4'}\n maxW={760}\n width=\"100%\"\n style={WRAP_ANYWHERE}\n >\n <YStack gap=\"$3\">{children}</YStack>\n </Card>\n )\n}\n","'use client'\n\n/**\n * CollectionBuilder — the content-type builder: define a collection's NAME and its\n * typed FIELDS on-page (add / remove / reorder / require / show-in-list), then\n * create it as a framework DocType. Every framework fieldtype is offered (Text,\n * Rich text, Long text, Number, Decimal, Currency, Checkbox, Date, Date & time,\n * Select, Relation, Attachment, Table, JSON), with the extra inputs each type needs\n * (Select options, Relation target). Pure decisions live in `builder-logic.ts`.\n *\n * Used for BOTH \"New collection\" (create) and, on an existing collection, editing\n * its schema — the SAME builder over `client.doctypes.create/update`.\n *\n * MOBILE FIRST: a field row is a name input, a type picker, two switches and three\n * buttons. Side by side that is ~560px of controls, which on a phone either\n * overflows or crushes each control below the tap floor. So a row STACKS into\n * labelled bands on a phone (name · type · flags · move/remove) and collapses back\n * to one line on a wide box. The type picker is the shared `SelectMenu` (the ONE\n * menu system, tokenised, native-safe) rather than a hand-styled `<select>` —\n * which is also how the last hardcoded hex left this layer.\n */\nimport { useCallback, useMemo, useState } from 'react'\nimport { Button, Card, Input, Text, XStack, YStack } from '@hanzo/gui'\nimport { ArrowDown, ArrowUp, GripVertical, Plus, Trash2, TriangleAlert } from '@hanzogui/lucide-icons-2'\n\nimport { FieldSwitch } from '../product/Field'\nimport { SelectMenu } from '../product/SelectMenu'\nimport { classifyBackend } from '../product/BackendState'\nimport type { FrameworkClient } from './client'\nimport type { DocType, Fieldtype } from './types'\nimport {\n BUILDER_FIELD_TYPES,\n blankField,\n fieldNameFromLabel,\n fieldNeedsOptions,\n fieldsFromDocType,\n moveField,\n starterFields,\n toDocType,\n validateBuilder,\n type BuilderField,\n} from './builder-logic'\nimport { Action, Actions, ErrorBar } from './parts'\nimport { useContainerLayout, TAP } from './responsive'\n\nconst TYPE_OPTIONS = BUILDER_FIELD_TYPES.map((t) => ({ key: t.type, label: t.label }))\n\nexport interface CollectionBuilderProps {\n client: FrameworkClient\n module: string\n /** Editing an existing collection's schema (name locked), else creating a new one. */\n existing?: DocType\n /** Called with the saved collection's name after create/update. */\n onSaved: (name: string) => void\n onCancel: () => void\n}\n\nexport function CollectionBuilder({ client, module, existing, onSaved, onCancel }: CollectionBuilderProps) {\n const editing = Boolean(existing)\n const [name, setName] = useState(existing?.name ?? '')\n const [fields, setFields] = useState<BuilderField[]>(() =>\n existing ? fieldsFromDocType(existing) : starterFields(),\n )\n const [busy, setBusy] = useState(false)\n const [saveError, setSaveError] = useState<string | null>(null)\n const [showErrors, setShowErrors] = useState(false)\n const { phone, onLayout } = useContainerLayout()\n\n const validation = useMemo(() => validateBuilder(name, fields), [name, fields])\n\n const patch = useCallback((key: string, next: Partial<BuilderField>) => {\n setFields((fs) => fs.map((f) => (f.key === key ? { ...f, ...next } : f)))\n }, [])\n const addField = useCallback(() => setFields((fs) => [...fs, blankField()]), [])\n const removeField = useCallback((key: string) => setFields((fs) => fs.filter((f) => f.key !== key)), [])\n const move = useCallback((key: string, dir: -1 | 1) => setFields((fs) => moveField(fs, key, dir)), [])\n\n const save = useCallback(async () => {\n setShowErrors(true)\n if (!validation.ok) return\n setBusy(true)\n setSaveError(null)\n try {\n const dt = toDocType(name, module, fields)\n if (editing) await client.doctypes.update(name, dt)\n else await client.doctypes.create(dt)\n onSaved(name)\n } catch (e) {\n setSaveError(classifyBackend(e).message)\n } finally {\n setBusy(false)\n }\n }, [client, editing, fields, module, name, onSaved, validation.ok])\n\n const iconBtn = (icon: React.ReactElement, label: string, onPress: () => void, disabled?: boolean, danger?: boolean) => (\n <Button\n size={phone ? '$3' : '$1'}\n circular\n minW={phone ? TAP : undefined}\n minH={phone ? TAP : undefined}\n aria-label={label}\n icon={icon}\n disabled={disabled}\n onPress={onPress}\n {...(danger ? { theme: 'red' as const } : {})}\n />\n )\n\n return (\n <Card onLayout={onLayout} borderWidth={1} borderColor=\"$borderColor\" p={phone ? '$3' : '$4'} gap=\"$4\" maxW={820} width=\"100%\">\n <YStack gap=\"$2\">\n <Text fontSize=\"$5\" fontWeight=\"800\">\n {editing ? `Edit ${name}` : 'New collection'}\n </Text>\n <Text fontSize=\"$2\" color=\"$color10\">\n A content type on the Hanzo Framework — name it and define its fields. Every field type is available; a\n rich-text field gives a full WYSIWYG body.\n </Text>\n </YStack>\n\n {/* Name — label above the input, so it never competes for the row. */}\n <YStack gap=\"$1.5\" width=\"100%\">\n <Text fontSize=\"$1\" color=\"$color11\" textTransform=\"uppercase\" letterSpacing={0.4}>\n Collection\n </Text>\n <Input\n width=\"100%\"\n minH={phone ? TAP : undefined}\n size={phone ? '$4' : '$3'}\n placeholder=\"e.g. Recipe or LandingPage\"\n value={name}\n onChangeText={setName}\n disabled={busy || editing}\n autoCapitalize=\"none\"\n />\n {editing ? (\n <Text fontSize=\"$1\" color=\"$color9\">\n A collection’s name is its identity and can’t change.\n </Text>\n ) : null}\n </YStack>\n\n {/* Fields */}\n <YStack gap=\"$2\" width=\"100%\">\n <XStack items=\"center\" justify=\"space-between\">\n <Text fontSize=\"$3\" fontWeight=\"700\" color=\"$color11\">\n Fields\n </Text>\n <Text fontSize=\"$1\" color=\"$color9\">\n {fields.length} field{fields.length === 1 ? '' : 's'}\n </Text>\n </XStack>\n\n <YStack gap=\"$2\" width=\"100%\">\n {fields.map((f, i) => {\n const err = showErrors ? validation.fieldErrors[f.key] : undefined\n const fname = f.label.trim() ? fieldNameFromLabel(f.label) : ''\n return (\n <YStack\n key={f.key}\n borderWidth={1}\n borderColor={err ? '$red7' : '$borderColor'}\n rounded=\"$4\"\n p=\"$3\"\n gap=\"$2\"\n bg=\"$color1\"\n width=\"100%\"\n >\n {/* Row 1 — the field's name. Full width on a phone. */}\n <XStack gap=\"$2\" items=\"center\" width=\"100%\">\n {phone ? null : <GripVertical size={15} opacity={0.5} />}\n <Input\n flex={1}\n minW={0}\n minH={phone ? TAP : undefined}\n size={phone ? '$4' : '$3'}\n placeholder=\"Field name (e.g. Title)\"\n value={f.label}\n onChangeText={(v: string) => patch(f.key, { label: v })}\n disabled={busy}\n autoCapitalize=\"none\"\n />\n {phone ? null : (\n <YStack minW={150}>\n <SelectMenu\n required\n ariaLabel=\"Field type\"\n options={TYPE_OPTIONS}\n value={f.type}\n onChange={(v) => v && patch(f.key, { type: v as Fieldtype })}\n disabled={busy}\n minWidth={150}\n />\n </YStack>\n )}\n </XStack>\n\n {/* Row 2 (phone) — the type picker gets its own full-width row. */}\n {phone ? (\n <YStack width=\"100%\">\n <SelectMenu\n required\n ariaLabel=\"Field type\"\n options={TYPE_OPTIONS}\n value={f.type}\n onChange={(v) => v && patch(f.key, { type: v as Fieldtype })}\n disabled={busy}\n minWidth={0}\n minHeight={TAP}\n />\n </YStack>\n ) : null}\n\n {/* Row 3 — flags + move/remove. Wraps; never clips the delete button. */}\n <XStack gap=\"$4\" items=\"center\" justify=\"space-between\" flexWrap=\"wrap\" width=\"100%\">\n <XStack gap=\"$4\" items=\"center\">\n <XStack gap=\"$2\" items=\"center\" minH={phone ? TAP : undefined}>\n <FieldSwitch checked={f.required} onChange={(v) => patch(f.key, { required: v })} disabled={busy} />\n <Text fontSize=\"$2\" color=\"$color10\">\n Required\n </Text>\n </XStack>\n <XStack gap=\"$2\" items=\"center\" minH={phone ? TAP : undefined}>\n <FieldSwitch checked={f.inListView} onChange={(v) => patch(f.key, { inListView: v })} disabled={busy} />\n <Text fontSize=\"$2\" color=\"$color10\">\n In list\n </Text>\n </XStack>\n </XStack>\n <XStack gap=\"$2\">\n {iconBtn(<ArrowUp size={14} />, 'Move field up', () => move(f.key, -1), busy || i === 0)}\n {iconBtn(<ArrowDown size={14} />, 'Move field down', () => move(f.key, 1), busy || i === fields.length - 1)}\n {iconBtn(<Trash2 size={14} />, 'Remove field', () => removeField(f.key), busy, true)}\n </XStack>\n </XStack>\n\n {/* Per-type extra input: Select options / Relation target. */}\n {fieldNeedsOptions(f.type) ? (\n <YStack gap=\"$1.5\" width=\"100%\">\n <Text fontSize=\"$1\" color=\"$color10\" textTransform=\"uppercase\" letterSpacing={0.4}>\n {f.type === 'Select' ? 'Options' : f.type === 'Link' ? 'Relates to' : 'Child type'}\n </Text>\n <Input\n width=\"100%\"\n minH={phone ? TAP : undefined}\n size={phone ? '$4' : '$2'}\n placeholder={\n f.type === 'Select' ? 'One per line — Draft / Published' : 'Collection name (e.g. Author)'\n }\n value={f.options}\n onChangeText={(v: string) => patch(f.key, { options: v })}\n multiline={f.type === 'Select'}\n numberOfLines={f.type === 'Select' ? 3 : 1}\n disabled={busy}\n autoCapitalize=\"none\"\n />\n </YStack>\n ) : null}\n\n <XStack items=\"center\" justify=\"space-between\" gap=\"$2\" flexWrap=\"wrap\">\n {fname ? (\n <Text fontSize=\"$1\" color=\"$color8\">\n field: {fname}\n </Text>\n ) : (\n <YStack />\n )}\n {err ? (\n <XStack gap=\"$1\" items=\"center\">\n <TriangleAlert size={12} />\n <Text fontSize=\"$1\" color=\"$red11\">\n {err}\n </Text>\n </XStack>\n ) : null}\n </XStack>\n </YStack>\n )\n })}\n </YStack>\n\n <XStack width={phone ? '100%' : undefined}>\n <Action phone={phone} icon={<Plus size={14} />} onPress={addField} disabled={busy}>\n Add field\n </Action>\n </XStack>\n </YStack>\n\n {showErrors && validation.formError ? <ErrorBar message={validation.formError} /> : null}\n {saveError ? <ErrorBar message={saveError} /> : null}\n\n <Actions phone={phone}>\n <Action phone={phone} disabled={busy} onPress={onCancel}>\n Cancel\n </Action>\n <Action phone={phone} primary disabled={busy} onPress={save}>\n {busy ? 'Saving…' : editing ? 'Save collection' : 'Create collection'}\n </Action>\n </Actions>\n </Card>\n )\n}\n","'use client'\n\n/**\n * CollectionsBrowser — the app-lane home: the DocTypes of a `module` (a CMS\n * \"collection\", an ERP document type, a Helpdesk ticket type are all just a\n * framework DocType tagged with that lane's module). It lists them, offers a\n * first-run \"Set up\" that installs the lane's fixtures\n * (`POST /v1/framework/modules/:module/install`), and a \"New collection\" that\n * opens the on-page content-type builder.\n *\n * Generic over the lane by construction: `module`, `label` and the first-run copy\n * are props, and where copy is unset it is DERIVED FROM THE LANE rather than\n * borrowed from one — the old default was the CMS's words, so an ERP org read\n * about Pages and Posts. CMS, ERP, Helpdesk and anything later render this same\n * component.\n *\n * Honest by construction — an org with the lane not yet installed sees the setup\n * call to action, never a fabricated collection.\n */\nimport { useCallback, useEffect, useState, type ReactNode } from 'react'\nimport { Text, XStack, YStack } from '@hanzo/gui'\nimport { Boxes, Plus } from '@hanzogui/lucide-icons-2'\n\nimport { PageHeader } from '../product/PageHeader'\nimport { EmptyState } from '../product/EmptyState'\nimport { BackendStateCard, classifyBackend, type BackendState } from '../product/BackendState'\nimport type { IconLike } from '../product/color'\nimport type { FrameworkClient } from './client'\nimport type { DocType } from './types'\nimport { moduleDoctypes } from './fields'\nimport { CollectionBuilder } from './CollectionBuilder'\nimport { Action, ErrorBar, Loading, Meta } from './parts'\nimport { useContainerLayout } from './responsive'\n\nexport interface CollectionsBrowserProps {\n client: FrameworkClient\n /** The app lane: 'cms' | 'erp' | 'help' | 'crm' | … */\n module: string\n /** Human label for the lane (e.g. \"Content\"). */\n label: string\n subtitle: string\n /** Open a collection's records. */\n onOpen: (doctype: string) => void\n /**\n * First-run (pre-install) copy. The defect this fixes was not \"there is a\n * default\" — it was that the default was ONE LANE'S copy (the CMS's), so an ERP\n * org read about Pages and Posts. Unset now falls back to copy derived from the\n * lane's own `label`, which is true for every lane; a host that has better words\n * passes them.\n */\n setupDescription?: string\n setupBullets?: string[]\n /**\n * Schema AUTHORING injected. The library ships a real `CollectionBuilder`, so a\n * host that omits this still gets one; a host that wants its own (or wants the\n * affordance withheld from a read-only surface) supplies or suppresses it.\n */\n renderBuilder?: (p: { onSaved: (doctype: string) => void; onCancel: () => void }) => ReactNode\n /** Lane icon (defaults to the generic collection glyph). */\n icon?: IconLike\n}\n\ntype LoadState =\n | { phase: 'loading' }\n | { phase: 'error'; error: BackendState }\n | { phase: 'ready'; collections: DocType[]; registered: boolean }\n\nexport function CollectionsBrowser({\n client,\n module,\n label,\n subtitle,\n onOpen,\n setupDescription,\n setupBullets,\n renderBuilder,\n icon = Boxes,\n}: CollectionsBrowserProps) {\n const [state, setState] = useState<LoadState>({ phase: 'loading' })\n const [busy, setBusy] = useState(false)\n const [creating, setCreating] = useState(false)\n const [actionError, setActionError] = useState<string | null>(null)\n const { phone, onLayout } = useContainerLayout()\n\n const load = useCallback(\n async (signal: { cancelled: boolean }) => {\n setState({ phase: 'loading' })\n try {\n const [dts, mod] = await Promise.all([\n client.doctypes.list(),\n client.modules.get(module).catch(() => null), // lane may not be registered on an older engine\n ])\n if (signal.cancelled) return\n setState({\n phase: 'ready',\n collections: moduleDoctypes(dts, module),\n registered: Boolean(mod && mod.doctypes.length),\n })\n } catch (e) {\n if (!signal.cancelled) setState({ phase: 'error', error: classifyBackend(e) })\n }\n },\n [client, module],\n )\n\n useEffect(() => {\n const signal = { cancelled: false }\n void load(signal)\n return () => {\n signal.cancelled = true\n }\n }, [load])\n\n const reload = useCallback(() => void load({ cancelled: false }), [load])\n\n const install = useCallback(async () => {\n setBusy(true)\n setActionError(null)\n try {\n await client.modules.install(module)\n reload()\n } catch (e) {\n setActionError(classifyBackend(e).message)\n } finally {\n setBusy(false)\n }\n }, [client, module, reload])\n\n if (state.phase === 'loading') {\n return (\n <YStack onLayout={onLayout} width=\"100%\">\n <Loading label={`Loading ${label}…`} />\n </YStack>\n )\n }\n\n if (state.phase === 'error') {\n return (\n <YStack onLayout={onLayout} gap=\"$3\" width=\"100%\">\n <PageHeader title={label} subtitle={subtitle} />\n <BackendStateCard state={state.error} onRetry={reload} hint=\"framework · GET /v1/framework/doctypes\" />\n </YStack>\n )\n }\n\n const { collections } = state\n return (\n <YStack onLayout={onLayout} gap=\"$3\" width=\"100%\">\n <PageHeader\n title={label}\n subtitle={subtitle}\n actions={\n collections.length && !creating ? (\n <Action\n phone={phone}\n primary\n icon={<Plus size={15} />}\n onPress={() => {\n setCreating(true)\n setActionError(null)\n }}\n >\n New collection\n </Action>\n ) : undefined\n }\n />\n\n {actionError ? <ErrorBar message={actionError} /> : null}\n\n {creating ? (\n (renderBuilder ?? ((p) => <CollectionBuilder client={client} module={module} {...p} />))({\n onSaved: (name: string) => {\n setCreating(false)\n onOpen(name)\n },\n onCancel: () => setCreating(false),\n })\n ) : null}\n\n {collections.length === 0 && !creating ? (\n <EmptyState\n icon={icon}\n title={`Set up ${label}`}\n description={\n setupDescription ??\n `${label} is a set of collections on the Hanzo Framework — typed documents, per organization.`\n }\n bullets={\n setupBullets ?? [\n `Installs the default ${label} collections into your organization`,\n 'Every record is a document on the framework — versioned, permissioned, per-org',\n 'Add your own collections and fields any time',\n ]\n }\n primary={state.registered ? { label: busy ? 'Setting up…' : `Set up ${label}`, onPress: install } : undefined}\n secondary={{ label: 'New collection', onPress: () => setCreating(true) }}\n />\n ) : !creating ? (\n // A fixed 240px card is a 240px column on a 390px phone with dead space\n // beside it. `flexBasis` + `flexGrow` makes each card fill the row on a\n // phone and settle back to a 240px tile once the box can hold several.\n <XStack gap=\"$3\" flexWrap=\"wrap\" width=\"100%\">\n {collections.map((dt) => (\n <YStack\n key={dt.name}\n onPress={() => onOpen(dt.name)}\n hoverStyle={{ borderColor: '$color8' }}\n pressStyle={{ bg: '$color3' }}\n cursor=\"pointer\"\n borderWidth={1}\n borderColor=\"$borderColor\"\n rounded=\"$4\"\n p=\"$4\"\n gap=\"$2\"\n minH={88}\n grow={phone ? 1 : 0}\n flexBasis={phone ? '100%' : 240}\n maxW={phone ? undefined : 240}\n >\n <XStack gap=\"$2\" items=\"center\">\n <Boxes size={16} />\n <Text fontSize=\"$4\" fontWeight=\"700\" flex={1} minW={0} numberOfLines={1}>\n {dt.name}\n </Text>\n </XStack>\n <Meta>\n {dt.fields?.length ?? 0} field{(dt.fields?.length ?? 0) === 1 ? '' : 's'}\n {dt.isSubmittable ? ' · submittable' : ''}\n </Meta>\n </YStack>\n ))}\n </XStack>\n ) : null}\n </YStack>\n )\n}\n","'use client'\n\n/**\n * MediaGrid — the DAM (media library) for a media DocType (an Attach-backed\n * collection). A REAL asset manager: drag/drop or pick files → they upload through\n * the injected `MediaUploader` (the host's own per-org object store) → a document\n * is created from the DocType's OWN schema → the grid shows a live thumbnail\n * (presigned on view, since object URLs are short-lived). Delete removes the\n * document AND the object.\n *\n * The document body is `mediaDocPayload(dt, facts)` — metadata-driven. This used\n * to write a hardcoded `{title, file, mime, size, width, height}`, which is the\n * CMS Media fixture's schema: a lane whose media type labels its rows `caption`\n * got untitled rows, silently, because the engine drops unknown keys. Now the\n * filename lands on the DocType's declared title field and each fact is written\n * only if that DocType has somewhere to put it.\n *\n * MOBILE FIRST: tiles are flex-basis, not a fixed 200px — two-up on a phone,\n * filling whatever the box gives on a desktop. The upload control is a full-width\n * tap target on a phone, and the per-tile delete is a 44px control rather than a\n * 13px glyph.\n *\n * Web-first by nature (file picker + drag/drop + `<img>` thumbnails), like the\n * other file-touching components in this layer.\n */\nimport { useCallback, useEffect, useRef, useState, type ReactNode } from 'react'\nimport { Button, Card, Text, XStack, YStack } from '@hanzo/gui'\nimport { Image as ImageIcon, Trash2, Upload } from '@hanzogui/lucide-icons-2'\n\nimport { EmptyState } from '../product/EmptyState'\nimport { classifyBackend } from '../product/BackendState'\nimport type { FrameworkClient } from './client'\nimport type { DocType, FrameworkDoc } from './types'\nimport { mediaDocPayload, mediaFileField, titleOf } from './fields'\nimport { looksLikeImage, type MediaUploader } from './media'\nimport { Action, ErrorBar, Meta } from './parts'\nimport { useContainerLayout, TAP } from './responsive'\n\nexport interface MediaGridProps {\n client: FrameworkClient\n dt: DocType\n docs: FrameworkDoc[]\n /** The host's object store, bound to this lane's bucket. */\n media: MediaUploader\n /** Open a media document's detail (edit alt text, replace, etc.). */\n onOpen: (name: string) => void\n /** Re-fetch the media list after an upload/delete. */\n onChanged: () => void\n toolbarExtra?: ReactNode\n /** Accepted file types for the picker. */\n accept?: string\n}\n\nexport function MediaGrid({\n client,\n dt,\n docs,\n media,\n onOpen,\n onChanged,\n toolbarExtra,\n accept = 'image/*,application/pdf,video/*,audio/*',\n}: MediaGridProps) {\n const fileField = mediaFileField(dt)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const [busy, setBusy] = useState(false)\n const [progress, setProgress] = useState<{ done: number; total: number } | null>(null)\n const [error, setError] = useState<string | null>(null)\n const { phone, onLayout } = useContainerLayout()\n\n const upload = useCallback(\n async (files: FileList | File[]) => {\n const list = Array.from(files)\n if (list.length === 0) return\n setBusy(true)\n setError(null)\n setProgress({ done: 0, total: list.length })\n try {\n for (let i = 0; i < list.length; i += 1) {\n const facts = await media.upload(list[i])\n await client.records.create(dt.name, mediaDocPayload(dt, facts))\n setProgress({ done: i + 1, total: list.length })\n }\n onChanged()\n } catch (e) {\n setError(classifyBackend(e).message)\n } finally {\n setBusy(false)\n setProgress(null)\n }\n },\n [client, dt, media, onChanged],\n )\n\n const pick = () => inputRef.current?.click()\n const onInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files) void upload(e.target.files)\n e.target.value = '' // allow re-selecting the same file\n }\n\n const HiddenInput = (\n <input ref={inputRef} type=\"file\" multiple accept={accept} style={{ display: 'none' }} onChange={onInput} />\n )\n\n const uploadLabel = busy ? (progress ? `Uploading ${progress.done}/${progress.total}…` : 'Uploading…') : 'Upload'\n\n if (docs.length === 0) {\n return (\n <YStack onLayout={onLayout} gap=\"$3\" width=\"100%\">\n {HiddenInput}\n {toolbarExtra ? (\n <XStack justify={phone ? 'flex-start' : 'flex-end'} gap=\"$2\" width=\"100%\">\n {toolbarExtra}\n </XStack>\n ) : null}\n {error ? <ErrorBar message={error} /> : null}\n <DropZone busy={busy} onDrop={upload}>\n <EmptyState\n icon={ImageIcon}\n title=\"No media yet\"\n description=\"Drag files here, or upload — images and files go to your organization's object storage and become reusable media you can attach to any record.\"\n primary={{ label: uploadLabel, onPress: pick }}\n />\n </DropZone>\n </YStack>\n )\n }\n\n return (\n <YStack onLayout={onLayout} gap=\"$3\" width=\"100%\">\n {HiddenInput}\n <XStack gap=\"$2\" items=\"center\" flexWrap=\"wrap\" justify={phone ? 'flex-start' : 'flex-end'} width=\"100%\">\n {toolbarExtra}\n <Action phone={phone} primary icon={<Upload size={15} />} disabled={busy} onPress={pick}>\n {uploadLabel}\n </Action>\n </XStack>\n {error ? <ErrorBar message={error} /> : null}\n <DropZone busy={busy} onDrop={upload}>\n <XStack gap=\"$3\" flexWrap=\"wrap\" width=\"100%\">\n {docs.map((d) => (\n <MediaCard\n key={String(d.name)}\n doc={d}\n dt={dt}\n fileField={fileField}\n media={media}\n phone={phone}\n onOpen={() => onOpen(String(d.name))}\n onDelete={async () => {\n setBusy(true)\n setError(null)\n try {\n await media.remove(d[fileField])\n await client.records.remove(dt.name, String(d.name))\n onChanged()\n } catch (e) {\n setError(classifyBackend(e).message)\n } finally {\n setBusy(false)\n }\n }}\n disabled={busy}\n />\n ))}\n </XStack>\n </DropZone>\n </YStack>\n )\n}\n\n/** One asset card — presigned thumbnail, title, type, and a delete affordance. */\nfunction MediaCard({\n doc,\n dt,\n fileField,\n media,\n phone,\n onOpen,\n onDelete,\n disabled,\n}: {\n doc: FrameworkDoc\n dt: DocType\n fileField: string\n media: MediaUploader\n phone: boolean\n onOpen: () => void\n onDelete: () => void | Promise<void>\n disabled?: boolean\n}) {\n const [url, setUrl] = useState('')\n const [confirming, setConfirming] = useState(false)\n const raw = String(doc[fileField] ?? '')\n const title = titleOf(doc, dt)\n\n useEffect(() => {\n let cancelled = false\n void media.resolveUrl(raw).then((u) => {\n if (!cancelled) setUrl(u)\n })\n return () => {\n cancelled = true\n }\n }, [raw, media])\n\n return (\n <YStack\n borderWidth={1}\n borderColor=\"$borderColor\"\n rounded=\"$4\"\n // Two-up on a phone, a 200px tile once there is room — never a fixed column\n // with dead space beside it.\n grow={0}\n flexBasis={phone ? '47%' : 200}\n maxW={phone ? undefined : 200}\n minW={140}\n overflow=\"hidden\"\n hoverStyle={{ borderColor: '$color8' }}\n >\n <YStack\n height={phone ? 110 : 130}\n bg=\"$color3\"\n items=\"center\"\n justify=\"center\"\n overflow=\"hidden\"\n cursor=\"pointer\"\n pressStyle={{ opacity: 0.8 }}\n onPress={onOpen}\n >\n {url && (looksLikeImage(raw) || looksLikeImage(url)) ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img src={url} alt={String(doc.alt ?? title)} style={{ width: '100%', height: '100%', objectFit: 'cover' }} />\n ) : (\n <ImageIcon size={28} />\n )}\n </YStack>\n <YStack p=\"$3\" gap=\"$1\">\n <Text fontSize=\"$3\" fontWeight=\"700\" numberOfLines={1}>\n {title}\n </Text>\n <XStack justify=\"space-between\" items=\"center\" gap=\"$2\">\n <Meta>{String(doc.mime ?? 'file')}</Meta>\n {confirming ? (\n <XStack gap=\"$1\">\n <Button\n size={phone ? '$3' : '$1'}\n minH={phone ? TAP : undefined}\n theme=\"red\"\n disabled={disabled}\n onPress={() => {\n setConfirming(false)\n void onDelete()\n }}\n >\n Delete\n </Button>\n <Button size={phone ? '$3' : '$1'} minH={phone ? TAP : undefined} disabled={disabled} onPress={() => setConfirming(false)}>\n No\n </Button>\n </XStack>\n ) : (\n <Button\n size={phone ? '$3' : '$1'}\n circular\n chromeless\n minW={phone ? TAP : undefined}\n minH={phone ? TAP : undefined}\n aria-label={`Delete ${title}`}\n icon={<Trash2 size={phone ? 16 : 13} />}\n disabled={disabled}\n onPress={() => setConfirming(true)}\n />\n )}\n </XStack>\n </YStack>\n </YStack>\n )\n}\n\n/** A drag-and-drop wrapper that highlights on drag-over and uploads on drop. */\nfunction DropZone({\n children,\n busy,\n onDrop,\n}: {\n children: ReactNode\n busy?: boolean\n onDrop: (files: FileList) => void | Promise<void>\n}) {\n const [over, setOver] = useState(false)\n return (\n <YStack\n width=\"100%\"\n onDragOver={(e: React.DragEvent) => {\n e.preventDefault()\n if (!busy) setOver(true)\n }}\n onDragLeave={() => setOver(false)}\n onDrop={(e: React.DragEvent) => {\n e.preventDefault()\n setOver(false)\n if (!busy && e.dataTransfer?.files?.length) void onDrop(e.dataTransfer.files)\n }}\n rounded=\"$4\"\n p={over ? '$3' : 0}\n borderWidth={over ? 2 : 0}\n borderColor=\"$color8\"\n style={{ borderStyle: 'dashed' }}\n >\n {children}\n </YStack>\n )\n}\n","'use client'\n\n/**\n * RecordCards — the PHONE view of a DocType's documents: one stacked card per\n * record instead of a horizontally-scrolling grid.\n *\n * A 12-column ERP Sales Order in a table on a 390px screen is a wall you drag\n * sideways to read one row; the same record as a card is a title plus its declared\n * list columns as label → value pairs, reading top to bottom in the width you\n * have. Nothing is hidden that the table would have shown — the card renders the\n * DocType's OWN `inListView` projection (`cardFields`), and the full record is one\n * tap away.\n *\n * The whole card is the tap target (far past the 44px floor), values render\n * through the SAME `FieldDisplay` router the table uses, so every field type\n * behaves identically in both, and search is the pure `searchRecords` — no second\n * filtering model.\n */\nimport { useMemo, useState, type ReactNode } from 'react'\nimport { Card, Input, Text, XStack, YStack } from '@hanzo/gui'\nimport { ChevronRight, Search } from '@hanzogui/lucide-icons-2'\nimport { FieldDisplay, searchRecords, type FieldDefinition } from '@hanzo/data'\n\nimport { Action, Loading, Meta, WRAP_ANYWHERE } from './parts'\n\nexport interface RecordCardsProps {\n /** The field shown as the card's headline (the DocType's titleField). */\n titleField?: string\n /** All fields (used for search); `cardFields` decides what a card shows. */\n fields: FieldDefinition[]\n /** The subset rendered as label → value rows on each card. */\n cardFields: FieldDefinition[]\n records: Record<string, unknown>[]\n loading?: boolean\n empty?: ReactNode\n onOpen?: (record: Record<string, unknown>) => void\n onCreate?: () => void\n createLabel?: string\n /** Extra toolbar control (e.g. Refresh). */\n toolbarExtra?: ReactNode\n}\n\n/** The headline for a card: the title field, else the record key. */\nfunction headline(record: Record<string, unknown>, titleField?: string): string {\n const t = titleField ? record[titleField] : undefined\n if (typeof t === 'string' && t.trim()) return t\n if (typeof t === 'number') return String(t)\n const name = record.name ?? record.id\n return typeof name === 'string' && name ? name : 'Untitled'\n}\n\nexport function RecordCards({\n titleField,\n fields,\n cardFields,\n records,\n loading,\n empty,\n onOpen,\n onCreate,\n createLabel = 'New record',\n toolbarExtra,\n}: RecordCardsProps) {\n const [query, setQuery] = useState('')\n const visible = useMemo(() => searchRecords(records, query, fields), [records, query, fields])\n\n return (\n <YStack testID=\"doctype-cards\" gap=\"$3\" width=\"100%\">\n {/* Toolbar: search takes the full row on a phone; the create action sits\n below it at full width, so both are thumb-reachable and neither clips. */}\n <YStack gap=\"$2\" width=\"100%\">\n <XStack\n items=\"center\"\n gap=\"$2\"\n px=\"$3\"\n minH={44}\n rounded=\"$3\"\n borderWidth={1}\n borderColor=\"$borderColor\"\n width=\"100%\"\n >\n <Search size={15} opacity={0.6} />\n <Input\n unstyled\n flex={1}\n minW={0}\n height={42}\n fontSize=\"$3\"\n color=\"$color12\"\n placeholder=\"Search\"\n value={query}\n onChangeText={setQuery}\n autoCapitalize=\"none\"\n />\n </XStack>\n <XStack gap=\"$2\" items=\"center\" flexWrap=\"wrap\" width=\"100%\">\n {onCreate ? (\n <Action phone primary onPress={onCreate}>\n {createLabel}\n </Action>\n ) : null}\n {toolbarExtra}\n </XStack>\n </YStack>\n\n {loading ? <Loading label=\"Loading records…\" /> : null}\n\n {!loading && visible.length === 0 ? (\n <Card borderWidth={1} borderColor=\"$borderColor\" p=\"$4\" width=\"100%\">\n <Text fontSize=\"$3\" color=\"$color10\">\n {query ? `No records match “${query}”.` : empty ?? 'No records yet.'}\n </Text>\n </Card>\n ) : null}\n\n <YStack gap=\"$2\" width=\"100%\">\n {visible.map((rec, i) => {\n const key = String(rec.name ?? rec.id ?? i)\n return (\n <Card\n key={key}\n borderWidth={1}\n borderColor=\"$borderColor\"\n rounded=\"$3\"\n p=\"$3\"\n width=\"100%\"\n cursor={onOpen ? 'pointer' : undefined}\n pressStyle={onOpen ? { bg: '$color3' } : undefined}\n hoverStyle={onOpen ? { borderColor: '$color8' } : undefined}\n onPress={onOpen ? () => onOpen(rec) : undefined}\n style={WRAP_ANYWHERE}\n >\n <YStack gap=\"$2\" width=\"100%\">\n <XStack items=\"center\" gap=\"$2\" width=\"100%\">\n <Text fontSize=\"$4\" fontWeight=\"700\" flex={1} minW={0} numberOfLines={2}>\n {headline(rec, titleField)}\n </Text>\n {onOpen ? <ChevronRight size={16} opacity={0.5} /> : null}\n </XStack>\n\n {cardFields.map((f) => (\n // Label above value: a two-column row forces the value into a\n // sliver at 390px. Stacked, every field type gets the full width.\n <YStack key={f.name} gap=\"$0.5\" width=\"100%\">\n <Text fontSize=\"$1\" color=\"$color10\" textTransform=\"uppercase\" letterSpacing={0.4}>\n {f.label}\n </Text>\n <XStack width=\"100%\" flexWrap=\"wrap\">\n <FieldDisplay field={f} value={rec[f.name]} />\n </XStack>\n </YStack>\n ))}\n </YStack>\n </Card>\n )\n })}\n </YStack>\n\n {visible.length ? (\n <Meta>\n {visible.length} of {records.length} record{records.length === 1 ? '' : 's'}\n </Meta>\n ) : null}\n </YStack>\n )\n}\n","'use client'\n\n/**\n * DocTypeRecords — the documents surface for ONE framework DocType, driven\n * ENTIRELY by DocType metadata. It loads the schema (→ @hanzo/data\n * `FieldDefinition[]` via `docTypeToFields`), the documents, and each relation's\n * candidate records, then renders them in the shape the CONTAINER can actually\n * hold. Every field type shows the right Display/Input with ZERO per-doctype code,\n * so a CMS Page, an ERP Invoice, or a Helpdesk Ticket all render here.\n *\n * MOBILE FIRST — the layout is a decision, not a media query afterthought:\n * · phone → `RecordCards`, a stacked card per record. A table of 12 columns on\n * a 390px screen is a sideways drag; a card is a read.\n * · desktop → @hanzo/data's `RecordsView` (table ⇆ board, filter/sort/group,\n * inline cell editing).\n * The first paint is ALWAYS the card list (see `responsive.ts`), and the table is\n * the enhancement applied once the box measures wide enough.\n *\n * The table also finally honors the DocType's OWN column projection\n * (`listHiddenFields` → `inListView`): a Sales Order that declares 4 list columns\n * out of 12 fields now renders 4. That projection was implemented and tested but\n * never passed to a view — which is exactly why the grid was unusable narrow.\n *\n * Persistence is REAL: an inline cell edit sends the FULL record (the engine\n * validates the whole document on update) via `savePayload`, and reflects the\n * server's row. States are honest — loading / empty / backend-error, never a\n * fabricated row.\n */\nimport { useCallback, useEffect, useMemo, useState, type ReactNode } from 'react'\nimport { Button, YStack } from '@hanzo/gui'\nimport { RefreshCw } from '@hanzogui/lucide-icons-2'\nimport { RecordsView, type FieldDefinition, type SelectOption, type ViewConfig } from '@hanzo/data'\n\nimport { BackendStateCard, classifyBackend, type BackendState } from '../product/BackendState'\nimport type { FrameworkClient } from './client'\nimport type { DocType, FrameworkDoc } from './types'\nimport {\n cardFields as pickCardFields,\n docTypeToFields,\n enrichLinks,\n hasProjectField,\n isMediaDoctype,\n listHiddenFields,\n PROJECT_FIELD,\n savePayload,\n toRecord,\n} from './fields'\nimport { loadLinkOptions, makeFieldOptions } from './data'\nimport { MediaGrid } from './MediaGrid'\nimport { RecordCards } from './RecordCards'\nimport { Action, ErrorBar } from './parts'\nimport { useContainerLayout, TAP } from './responsive'\nimport type { MediaUploader } from './media'\n\ntype LoadState =\n | { phase: 'loading' }\n | { phase: 'error'; error: BackendState }\n | {\n phase: 'ready'\n dt: DocType\n fields: FieldDefinition[]\n docs: FrameworkDoc[]\n records: Record<string, unknown>[]\n linkOptions: Record<string, SelectOption[]>\n }\n\nexport interface DocTypeRecordsProps {\n client: FrameworkClient\n /** DocType name to render. */\n doctype: string\n /** Open a document's detail (by document name). */\n onOpen: (name: string) => void\n /** Start creating a document. */\n onCreate: () => void\n /** Active project scope — filters the list when the collection has a `project` field. */\n project?: string\n title?: ReactNode\n /**\n * Object storage for a media/asset collection. Without it a media DocType still\n * renders as records (honest) — the DAM gallery needs a real place to put bytes,\n * and this layer refuses to invent one.\n */\n media?: MediaUploader\n /**\n * A host that would rather draw the asset gallery itself supplies this; it wins\n * over the built-in `MediaGrid`. Both paths need somewhere real to put bytes, so\n * a host with neither gets the honest generic table — nothing is faked.\n */\n renderMedia?: (p: {\n dt: DocType\n docs: FrameworkDoc[]\n onOpen: (name: string) => void\n onChanged: () => void\n toolbarExtra: ReactNode\n }) => ReactNode\n /** How many documents to fetch (the engine caps its own page). */\n limit?: number\n}\n\nexport function DocTypeRecords({\n client,\n doctype,\n onOpen,\n onCreate,\n project,\n title,\n media,\n renderMedia,\n limit = 200,\n}: DocTypeRecordsProps) {\n const [state, setState] = useState<LoadState>({ phase: 'loading' })\n const [mutationError, setMutationError] = useState<string | null>(null)\n const { phone, onLayout } = useContainerLayout()\n\n const load = useCallback(\n async (signal: { cancelled: boolean }) => {\n setState({ phase: 'loading' })\n try {\n const dt = await client.doctypes.get(doctype)\n const linkOptions = await loadLinkOptions(client, dt)\n // Scope the list to the selected project ONLY when the collection declares\n // a `project` field (the engine 400s a filter on an unknown field). No\n // project selected, or a collection without the field → org-level list.\n const filters = project && hasProjectField(dt) ? { [PROJECT_FIELD]: project } : undefined\n const docs = await client.records.list(doctype, { limit, ...(filters ? { filters } : {}) })\n if (signal.cancelled) return\n const records = docs.map((d) => enrichLinks(toRecord(d, dt), dt, linkOptions))\n setState({ phase: 'ready', dt, fields: docTypeToFields(dt), docs, records, linkOptions })\n } catch (e) {\n if (!signal.cancelled) setState({ phase: 'error', error: classifyBackend(e) })\n }\n },\n [client, doctype, project, limit],\n )\n\n useEffect(() => {\n const signal = { cancelled: false }\n void load(signal)\n return () => {\n signal.cancelled = true\n }\n }, [load])\n\n const reload = useCallback(() => void load({ cancelled: false }), [load])\n\n const ready = state.phase === 'ready' ? state : undefined\n\n const fieldOptions = useMemo(\n () => (ready ? makeFieldOptions(ready.linkOptions) : undefined),\n [ready],\n )\n\n /**\n * The table view starts from the DocType's own column projection. Controlled,\n * because a host that later persists saved views hands one in — but the DEFAULT\n * is the schema's answer, not \"every field\".\n */\n const [view, setView] = useState<ViewConfig | undefined>(undefined)\n const dtName = ready?.dt.name\n useEffect(() => {\n if (!ready) return\n setView({\n id: `doctype:${ready.dt.name}`,\n name: ready.dt.name,\n kind: 'table',\n filters: [],\n sorts: [],\n hiddenFields: listHiddenFields(ready.dt),\n })\n // Re-seed only when the DocType changes; user edits to the view persist.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dtName])\n\n const cards = useMemo(\n () => (ready ? pickCardFields(ready.dt, ready.fields) : []),\n [ready],\n )\n\n /** Persist ONE inline edit. The engine validates the whole document on update,\n * so send the full record with the cell change merged in (never a partial body). */\n const onEditCommit = useCallback(\n async (record: Record<string, unknown>, field: FieldDefinition, value: unknown) => {\n if (state.phase !== 'ready') return\n const name = typeof record.name === 'string' ? record.name : ''\n if (!name) return\n setMutationError(null)\n try {\n const body = savePayload({ ...record, [field.name]: value }, state.dt)\n const saved = await client.records.update(doctype, name, body)\n const next = enrichLinks(toRecord(saved, state.dt), state.dt, state.linkOptions)\n setState((s) => (s.phase === 'ready' ? { ...s, records: s.records.map((r) => (r.name === name ? next : r)) } : s))\n } catch (e) {\n setMutationError(classifyBackend(e).message)\n throw e // let the board revert its optimistic move\n }\n },\n [client, doctype, state],\n )\n\n if (state.phase === 'error') {\n return (\n <YStack onLayout={onLayout} width=\"100%\">\n <BackendStateCard state={state.error} onRetry={reload} hint={`framework · GET /v1/framework/${doctype}`} />\n </YStack>\n )\n }\n\n const refresh = phone ? (\n <Action phone icon={<RefreshCw size={15} />} onPress={reload}>\n Refresh\n </Action>\n ) : (\n <Button size=\"$2\" minH={TAP - 12} icon={<RefreshCw size={15} />} onPress={reload}>\n Refresh\n </Button>\n )\n\n // A media/asset library (a required Attach) gets the DAM gallery instead of the\n // record views — real upload to the host's object storage + presigned thumbnails.\n if (ready && (media || renderMedia) && isMediaDoctype(ready.dt)) {\n return (\n <YStack onLayout={onLayout} width=\"100%\">\n {renderMedia ? (\n renderMedia({ dt: ready.dt, docs: ready.docs, onOpen, onChanged: reload, toolbarExtra: refresh })\n ) : (\n <MediaGrid\n client={client}\n dt={ready.dt}\n docs={ready.docs}\n media={media!}\n onOpen={onOpen}\n onChanged={reload}\n toolbarExtra={refresh}\n />\n )}\n </YStack>\n )\n }\n\n const openByKey = (r: Record<string, unknown>) =>\n onOpen(String((r as { name?: unknown }).name ?? (r as { id?: unknown }).id ?? ''))\n\n return (\n <YStack onLayout={onLayout} gap=\"$3\" width=\"100%\">\n {mutationError ? <ErrorBar message={mutationError} /> : null}\n\n {phone ? (\n <RecordCards\n titleField={ready?.dt.titleField}\n fields={ready?.fields ?? []}\n cardFields={cards}\n records={ready?.records ?? []}\n loading={state.phase === 'loading'}\n empty={`No records in ${doctype} yet.`}\n onOpen={openByKey}\n onCreate={onCreate}\n toolbarExtra={refresh}\n />\n ) : (\n <YStack testID=\"doctype-table\" width=\"100%\">\n <RecordsView\n title={title}\n fields={ready?.fields ?? []}\n records={ready?.records ?? []}\n loading={state.phase === 'loading'}\n view={view}\n onViewChange={setView}\n onOpen={openByKey}\n onCreate={onCreate}\n createLabel=\"New record\"\n onEditCommit={onEditCommit}\n fieldOptions={fieldOptions}\n toolbarExtra={refresh}\n titleField={ready?.dt.titleField}\n empty={`No records in ${doctype} yet.`}\n />\n </YStack>\n )}\n </YStack>\n )\n}\n","'use client'\n\n/**\n * DocTypeDetail — view / edit / create / delete ONE framework document, plus the\n * lifecycle actions the engine exposes: PUBLISH (a status field flips Draft ⇆\n * Published) and, for a submittable DocType, SUBMIT / CANCEL (docstatus 0→1→2).\n * All metadata-driven: it loads the schema (→ @hanzo/data `FieldDefinition[]`) and\n * renders through `RecordDetail` (read) + `RecordForm` (edit) — the SAME field\n * routers the list uses — so every field type just works with zero per-doctype\n * code. Create (`name === 'new'`) opens the form over a defaulted blank draft.\n *\n * ONLY OFFERS WHAT THE ENGINE ALLOWS. `ops.go` refuses to edit a non-draft\n * (\"document is not a draft (docstatus %d); cannot edit\") and refuses to delete a\n * submitted document (\"must be cancelled before deletion\") — so Edit and Delete\n * are gated on `isDraft`. A user filling in a whole form on a submitted invoice\n * and getting an error card on Save is a bug, not a validation.\n *\n * MOBILE FIRST: the label-above-value form (@hanzo/data's `RecordForm`) already\n * reads top-to-bottom at any width; what did not fit was the header — a back\n * button, a title and up to five actions on one line. On a phone the actions take\n * their own full-width wrapping row at the 44px tap floor.\n *\n * The engine validates the WHOLE document on update, so save/publish always send\n * the full record (via `savePayload`, which slugifies the URL key + strips the\n * redacted Password). States are honest: backend-error, inline save error, and a\n * two-step delete confirmation — never optimistic fakery.\n */\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { Card, Text, XStack, YStack } from '@hanzo/gui'\nimport { ArrowLeft, Ban, Globe, Pencil, PenOff, Save, Send, Trash2, X } from '@hanzogui/lucide-icons-2'\nimport { RecordDetail, RecordForm, type FieldDefinition, type SelectOption } from '@hanzo/data'\n\nimport { BackendStateCard, classifyBackend, type BackendState } from '../product/BackendState'\nimport type { FrameworkClient } from './client'\nimport type { DocType, FrameworkDoc } from './types'\nimport { CANCELLED, SUBMITTED } from './types'\nimport {\n docTypeToFields,\n enrichLinks,\n hasProjectField,\n isDraft,\n newDraft,\n PROJECT_FIELD,\n savePayload,\n statusField,\n titleOf,\n toRecord,\n} from './fields'\nimport { loadLinkOptions, makeFieldOptions } from './data'\nimport { Action, Actions, ErrorBar, Loading, Panel } from './parts'\nimport { useContainerLayout } from './responsive'\n\nexport interface DocTypeDetailProps {\n client: FrameworkClient\n doctype: string\n /** Document name, or `'new'` to open the create form. */\n name: string\n /** Active project scope — stamped onto a NEW record when the collection has a `project` field. */\n project?: string\n onBack: () => void\n /** Land on a document (after create). */\n onView: (name: string) => void\n}\n\ntype LoadState =\n | { phase: 'loading' }\n | { phase: 'error'; error: BackendState }\n | { phase: 'ready'; dt: DocType; record: Record<string, unknown> | null; linkOptions: Record<string, SelectOption[]> }\n\nexport function DocTypeDetail({ client, doctype, name, project, onBack, onView }: DocTypeDetailProps) {\n const isNew = name === 'new'\n const [state, setState] = useState<LoadState>({ phase: 'loading' })\n const [editing, setEditing] = useState(isNew)\n const [draft, setDraft] = useState<Record<string, unknown>>({})\n const [busy, setBusy] = useState(false)\n const [saveError, setSaveError] = useState<string | null>(null)\n const [confirmingDelete, setConfirmingDelete] = useState(false)\n const { phone, onLayout } = useContainerLayout()\n\n const load = useCallback(\n async (signal: { cancelled: boolean }) => {\n setState({ phase: 'loading' })\n try {\n const dt = await client.doctypes.get(doctype)\n const linkOptions = await loadLinkOptions(client, dt)\n const doc = isNew ? null : await client.records.get(doctype, name)\n if (signal.cancelled) return\n const record = doc ? enrichLinks(toRecord(doc, dt), dt, linkOptions) : null\n setState({ phase: 'ready', dt, record, linkOptions })\n // A NEW record inherits the active project scope (when the collection has a\n // `project` field), so content created under a selected project is tagged\n // with it and shows up in that project's filtered list.\n const seed = newDraft(dt)\n if (record == null && project && hasProjectField(dt)) seed[PROJECT_FIELD] = project\n setDraft(record ? { ...record } : seed)\n setEditing(isNew)\n setSaveError(null)\n setConfirmingDelete(false)\n } catch (e) {\n if (!signal.cancelled) setState({ phase: 'error', error: classifyBackend(e) })\n }\n },\n [client, doctype, name, isNew, project],\n )\n\n useEffect(() => {\n const signal = { cancelled: false }\n void load(signal)\n return () => {\n signal.cancelled = true\n }\n }, [load])\n\n const reload = useCallback(() => void load({ cancelled: false }), [load])\n\n const ready = state.phase === 'ready' ? state : undefined\n const dt = ready?.dt\n const record = ready?.record ?? null\n const fields: FieldDefinition[] = useMemo(() => (dt ? docTypeToFields(dt, { editing: !isNew }) : []), [dt, isNew])\n const fieldOptions = useMemo(() => (ready ? makeFieldOptions(ready.linkOptions) : undefined), [ready])\n const title = dt ? (isNew ? `New ${doctype}` : titleOf(record ?? {}, dt)) : doctype\n\n const onChange = useCallback((field: string, value: unknown) => {\n setDraft((d) => ({ ...d, [field]: value }))\n }, [])\n\n const reflect = useCallback(\n (saved: FrameworkDoc) => {\n if (!dt || !ready) return\n const next = enrichLinks(toRecord(saved, dt), dt, ready.linkOptions)\n setState({ phase: 'ready', dt, record: next, linkOptions: ready.linkOptions })\n setDraft({ ...next })\n },\n [dt, ready],\n )\n\n const save = useCallback(async () => {\n if (!dt) return\n setBusy(true)\n setSaveError(null)\n try {\n const body = savePayload(draft, dt)\n if (isNew) {\n const created = await client.records.create(doctype, body)\n if (created.name) onView(String(created.name))\n else onBack()\n return\n }\n if (!record?.name) throw new Error('This record has no name to update.')\n reflect(await client.records.update(doctype, String(record.name), body))\n setEditing(false)\n } catch (e) {\n setSaveError(classifyBackend(e).message)\n } finally {\n setBusy(false)\n }\n }, [client, doctype, draft, dt, isNew, onBack, onView, record, reflect])\n\n /** Lifecycle op on the current record (publish/unpublish/submit/cancel). */\n const run = useCallback(\n async (op: () => Promise<FrameworkDoc | void>) => {\n setBusy(true)\n setSaveError(null)\n try {\n const saved = await op()\n if (saved) reflect(saved)\n } catch (e) {\n setSaveError(classifyBackend(e).message)\n } finally {\n setBusy(false)\n }\n },\n [reflect],\n )\n\n const remove = useCallback(async () => {\n if (!record?.name) return\n setBusy(true)\n setSaveError(null)\n try {\n await client.records.remove(doctype, String(record.name))\n onBack()\n } catch (e) {\n setSaveError(classifyBackend(e).message)\n setBusy(false)\n setConfirmingDelete(false)\n }\n }, [client, doctype, onBack, record])\n\n const backButton = (\n <Action phone={phone} icon={<ArrowLeft size={15} />} onPress={onBack}>\n Back\n </Action>\n )\n\n if (state.phase === 'loading') {\n return (\n <YStack onLayout={onLayout} width=\"100%\">\n <Loading label={`Loading ${doctype}…`} />\n </YStack>\n )\n }\n if (state.phase === 'error') {\n return (\n <YStack onLayout={onLayout} gap=\"$3\" width=\"100%\">\n <XStack>{backButton}</XStack>\n <BackendStateCard state={state.error} onRetry={reload} hint={`framework · ${doctype}/${name}`} />\n </YStack>\n )\n }\n if (!dt) {\n return (\n <YStack onLayout={onLayout} gap=\"$3\" width=\"100%\">\n <XStack>{backButton}</XStack>\n </YStack>\n )\n }\n\n // What the engine will actually accept, asked once. A submitted document is\n // immutable until cancelled; a cancelled one is a tombstone.\n const draftDoc = isDraft(record)\n const statusF = statusField(dt)\n const status = record ? String(record[statusF] ?? '') : ''\n const docstatus = record ? Number(record.docstatus ?? 0) : 0\n const canEdit = !editing && !isNew && draftDoc\n const canDelete = !editing && !isNew && draftDoc\n const canPublish = canEdit && Boolean(statusF)\n const canSubmit = !editing && !isNew && Boolean(dt.isSubmittable) && draftDoc\n const canCancel = !editing && !isNew && Boolean(dt.isSubmittable) && docstatus === SUBMITTED\n\n const lifecycle =\n docstatus === SUBMITTED ? ' · submitted' : docstatus === CANCELLED ? ' · cancelled' : ''\n\n return (\n <YStack onLayout={onLayout} gap=\"$3\" width=\"100%\">\n {/* Header. On a phone the title owns its row and the actions wrap onto their\n own full-width row below — nothing is pushed off-screen. */}\n <YStack gap=\"$3\" width=\"100%\">\n <XStack items=\"center\" gap=\"$3\" width=\"100%\" flexWrap=\"wrap\">\n {phone ? null : backButton}\n <YStack flex={1} minW={200}>\n <Text fontSize=\"$6\" fontWeight=\"800\" numberOfLines={2}>\n {title}\n </Text>\n <Text fontSize=\"$2\" color=\"$color10\" numberOfLines={1}>\n {doctype}\n {status ? ` · ${status}` : ''}\n {lifecycle}\n </Text>\n </YStack>\n </XStack>\n\n <Actions phone={phone}>\n {phone ? backButton : null}\n {editing ? (\n <>\n {!isNew ? (\n <Action\n phone={phone}\n icon={<X size={15} />}\n disabled={busy}\n onPress={() => {\n setDraft(record ? { ...record } : {})\n setEditing(false)\n setSaveError(null)\n }}\n >\n Cancel\n </Action>\n ) : null}\n <Action phone={phone} primary icon={<Save size={15} />} disabled={busy} onPress={save}>\n {busy ? 'Saving…' : isNew ? 'Create' : 'Save'}\n </Action>\n </>\n ) : (\n <>\n {canDelete ? (\n <Action phone={phone} danger icon={<Trash2 size={15} />} disabled={busy} onPress={() => setConfirmingDelete(true)}>\n Delete\n </Action>\n ) : null}\n {canCancel ? (\n <Action\n phone={phone}\n icon={<Ban size={15} />}\n disabled={busy}\n onPress={() => run(() => client.records.cancel(doctype, String(record!.name)))}\n >\n Cancel doc\n </Action>\n ) : null}\n {canSubmit ? (\n <Action\n phone={phone}\n icon={<Send size={15} />}\n disabled={busy}\n onPress={() => run(() => client.records.submit(doctype, String(record!.name)))}\n >\n Submit\n </Action>\n ) : null}\n {canPublish ? (\n status === 'Published' ? (\n <Action\n phone={phone}\n icon={<PenOff size={15} />}\n disabled={busy}\n onPress={() =>\n run(async () =>\n client.records.update(doctype, String(record!.name), savePayload({ ...record, [statusF]: 'Draft' }, dt)),\n )\n }\n >\n Unpublish\n </Action>\n ) : (\n <Action\n phone={phone}\n primary\n icon={<Globe size={15} />}\n disabled={busy}\n onPress={() =>\n run(async () =>\n client.records.update(\n doctype,\n String(record!.name),\n savePayload({ ...record, [statusF]: 'Published' }, dt),\n ),\n )\n }\n >\n Publish\n </Action>\n )\n ) : null}\n {canEdit ? (\n <Action phone={phone} primary icon={<Pencil size={15} />} onPress={() => setEditing(true)}>\n Edit\n </Action>\n ) : null}\n </>\n )}\n </Actions>\n </YStack>\n\n {/* Say WHY the actions are gone, rather than silently offering nothing. */}\n {!editing && !isNew && !draftDoc ? (\n <Card borderWidth={1} borderColor=\"$borderColor\" bg=\"$color2\" p=\"$3\" maxW={620}>\n <Text fontSize=\"$2\" color=\"$color11\">\n {docstatus === SUBMITTED\n ? 'This document is submitted. Cancel it to make further changes — the engine refuses edits and deletes on a submitted document.'\n : 'This document is cancelled. It is kept as a record and can no longer be edited or deleted.'}\n </Text>\n </Card>\n ) : null}\n\n {confirmingDelete ? (\n <Card borderWidth={1} borderColor=\"$red7\" bg=\"$red2\" p=\"$3\" gap=\"$3\" maxW={620}>\n <Text fontSize=\"$3\" fontWeight=\"700\">\n Delete “{title}”? This cannot be undone.\n </Text>\n <Actions phone={phone}>\n <Action phone={phone} danger disabled={busy} onPress={remove}>\n {busy ? 'Deleting…' : 'Confirm delete'}\n </Action>\n <Action phone={phone} disabled={busy} onPress={() => setConfirmingDelete(false)}>\n Keep\n </Action>\n </Actions>\n </Card>\n ) : null}\n\n {saveError ? <ErrorBar message={saveError} /> : null}\n\n <Panel phone={phone}>\n {editing ? (\n <RecordForm fields={fields} values={draft} onChange={onChange} fieldOptions={fieldOptions} />\n ) : record ? (\n <RecordDetail title={title} fields={fields} record={record} fieldOptions={fieldOptions} />\n ) : null}\n </Panel>\n </YStack>\n )\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"gitops.cjs","sourcesContent":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/gui-config.ts"],"names":["createGui","defaultConfig"],"mappings":"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","file":"gui-config.cjs","sourcesContent":["import { defaultConfig } from '@hanzogui/config/v5'\nimport { createGui } from '@hanzo/gui'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// THE ONE SCALE — shared, because a second app that copied it would fork it.\n//\n// This lived in the console's own gui.config.ts. The moment a second Hanzo admin\n// exists (the dedicated Hanzo Social app), a private scale is a scale that drifts:\n// the two products would render @hanzo/ui/product components at different sizes,\n// radii and spacing. So the scale ships WITH the components.\n//\n// Three scales used to disagree. `app/design/typography.css` declared the\n// intended compact register (11/13/14/15/17/21/26 — the linear.app density);\n// @hanzo/gui's Tamagui `$N` ladder is what components actually TYPE (thousands\n// of `fontSize=\"$N\"` call sites); and the rendered result was TEN distinct\n// sizes, including 217 nodes at the retired 16px base and 30 at 10px, while the\n// intended 11px label size rendered NOWHERE.\n//\n// The ladder is exactly why we do not edit thousands of call sites: REMAP IT\n// ONCE and every surface lands on the design scale. So this file is the single\n// place the console's type, radius and spacing scales are defined —\n// `app/design/*.css` declares them for CSS consumers, this maps the `$N` tokens\n// onto the same numbers for the component layer. Change a value here, the whole\n// product moves. Adding a fourth spelling of a size is the thing to refuse.\n//\n// Canonical face: Geist Sans for UI, Geist Mono for anything numeric/code/id\n// (`.hz-mono`). The host self-hosts both faces (its own fonts.css) — this only\n// names them.\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst GEIST = \"'Geist', system-ui, -apple-system, sans-serif\"\n\n/** Type — SIX sizes in the app, matching the host's `--text-*` design tokens.\n * $1 label · $2 nav + dense body · $3 base · $4/$5 emphasis · $6 section head ·\n * $7 page title · $8+ display. `$5` collapses onto 15 to retire the 16px base\n * (217 stray nodes); `$9` collapses onto 26 so a page title has ONE size. */\nconst FONT_SIZE = {\n 1: 11,\n 2: 13,\n 3: 14,\n 4: 15,\n 5: 15,\n 6: 17,\n 7: 21,\n 8: 26,\n 9: 26,\n 10: 32,\n 11: 40,\n 12: 48,\n 13: 56,\n 14: 64,\n 15: 80,\n 16: 96,\n true: 14,\n} as const\n\n/** Leading, paired 1:1 with the sizes above. A size token carries a line-height\n * tuned for ONE line, so these track the type scale rather than the inherited\n * ladder, which left an 11px label sitting in an 18px box. */\nconst LINE_HEIGHT = {\n 1: 16,\n 2: 18,\n 3: 20,\n 4: 22,\n 5: 22,\n 6: 24,\n 7: 28,\n 8: 32,\n 9: 32,\n 10: 38,\n 11: 46,\n 12: 54,\n 13: 62,\n 14: 70,\n 15: 86,\n 16: 102,\n true: 20,\n} as const\n\n/** Radius — FOUR values, no more. 6 control · 8 input/row · 12 panel · pill.\n * The inherited ladder had thirteen spellings rendering ten values, including\n * three different spellings of \"pill\" (`{999}`, `{99}`, `$10`). `$10`+ IS the\n * pill, so the 115 `rounded=\"$10\"` call sites finally mean one thing. */\nconst RADIUS = {\n 0: 0,\n 1: 6,\n 2: 6,\n 3: 8,\n 4: 8,\n 5: 12,\n 6: 12,\n 7: 12,\n 8: 12,\n 9: 12,\n 10: 9999,\n 11: 9999,\n 12: 9999,\n true: 8,\n} as const\n\n/** Spacing — the 4px ramp, and only the 4px ramp. The inherited ladder landed on\n * odd pixels belonging to no scale: `$2`=7, `$3`=13, `$4`=18 were the three\n * most-rendered paddings in the whole app. Mirrored into negative steps because\n * Tamagui resolves `-$3` from this same map. */\nconst STEP: Record<string, number> = {\n '0': 0,\n '0.25': 1,\n '0.5': 2,\n '0.75': 3,\n '1': 4,\n '1.5': 6,\n '2': 8,\n '2.5': 10,\n '3': 12,\n '3.5': 14,\n '4': 16,\n '4.5': 20,\n '5': 24,\n '6': 32,\n '7': 40,\n '8': 48,\n '9': 56,\n '10': 64,\n '11': 80,\n '12': 96,\n '13': 112,\n '14': 128,\n '15': 144,\n '16': 160,\n '17': 160,\n '18': 176,\n '19': 192,\n '20': 208,\n}\n\nconst space: Record<string, number> = {}\nfor (const [k, v] of Object.entries(STEP)) {\n space[`$${k}`] = v\n space[`-${k}`] = -v\n}\nspace.$true = STEP['4']\nspace['-true'] = -STEP['4']\n\nexport const config = createGui({\n ...defaultConfig,\n tokens: {\n ...defaultConfig.tokens,\n radius: RADIUS,\n space,\n },\n fonts: {\n ...defaultConfig.fonts,\n body: { ...defaultConfig.fonts.body, family: GEIST, size: FONT_SIZE, lineHeight: LINE_HEIGHT },\n heading: { ...defaultConfig.fonts.heading, family: GEIST, size: FONT_SIZE, lineHeight: LINE_HEIGHT },\n },\n})\n\nexport default config\n\nexport type Conf = typeof config\n"]}