@vamos-ui/react 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (665) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -2
  3. package/dist/blocks/block-heading.d.ts +29 -0
  4. package/dist/blocks/block-heading.js +39 -0
  5. package/dist/blocks/block-image.d.ts +52 -0
  6. package/dist/blocks/block-image.js +48 -0
  7. package/dist/blocks/block-link.d.ts +30 -0
  8. package/dist/blocks/block-link.js +36 -0
  9. package/dist/blocks/create-blocks.d.ts +54 -0
  10. package/dist/blocks/create-blocks.js +52 -0
  11. package/dist/blocks/index.d.ts +55 -0
  12. package/dist/blocks/index.js +59 -0
  13. package/dist/blocks/json-ld.d.ts +18 -0
  14. package/dist/blocks/json-ld.js +44 -0
  15. package/dist/blocks/labels.d.ts +20 -0
  16. package/dist/blocks/labels.js +43 -0
  17. package/dist/blocks/rich-text.d.ts +36 -0
  18. package/dist/blocks/rich-text.js +106 -0
  19. package/dist/blocks/schema/define-block.d.ts +151 -0
  20. package/dist/blocks/schema/define-block.js +120 -0
  21. package/dist/blocks/schema/emphasis.d.ts +17 -0
  22. package/dist/blocks/schema/emphasis.js +69 -0
  23. package/dist/blocks/schema/fields.d.ts +497 -0
  24. package/dist/blocks/schema/fields.js +240 -0
  25. package/dist/blocks/schema/icons.d.ts +2 -0
  26. package/dist/blocks/schema/icons.js +26 -0
  27. package/dist/blocks/schema/index.d.ts +18 -0
  28. package/dist/blocks/schema/index.js +21 -0
  29. package/dist/blocks/schema/lint-types.d.ts +16 -0
  30. package/dist/blocks/schema/lint-types.js +2 -0
  31. package/dist/blocks/schema/lint.d.ts +32 -0
  32. package/dist/blocks/schema/lint.js +164 -0
  33. package/dist/blocks/schema/localize.d.ts +20 -0
  34. package/dist/blocks/schema/localize.js +29 -0
  35. package/dist/blocks/schema/localized.d.ts +25 -0
  36. package/dist/blocks/schema/localized.js +53 -0
  37. package/dist/blocks/schema/migrate.d.ts +24 -0
  38. package/dist/blocks/schema/migrate.js +75 -0
  39. package/dist/blocks/schema/nodes.d.ts +196 -0
  40. package/dist/blocks/schema/nodes.js +78 -0
  41. package/dist/blocks/schema/rich-doc-schema.d.ts +32 -0
  42. package/dist/blocks/schema/rich-doc-schema.js +66 -0
  43. package/dist/blocks/schema/rich-doc.d.ts +90 -0
  44. package/dist/blocks/schema/rich-doc.js +62 -0
  45. package/dist/blocks/schema/safety.d.ts +20 -0
  46. package/dist/blocks/schema/safety.js +49 -0
  47. package/dist/blocks/schema/types.d.ts +172 -0
  48. package/dist/blocks/schema/types.js +3 -0
  49. package/dist/blocks/schema/validate.d.ts +17 -0
  50. package/dist/blocks/schema/validate.js +32 -0
  51. package/dist/blocks/schema/walk.d.ts +22 -0
  52. package/dist/blocks/schema/walk.js +60 -0
  53. package/dist/blocks/section-header.d.ts +38 -0
  54. package/dist/blocks/section-header.js +22 -0
  55. package/dist/blocks/section.d.ts +59 -0
  56. package/dist/blocks/section.js +66 -0
  57. package/dist/blocks/site/_kit-1.d.ts +100 -0
  58. package/dist/blocks/site/_kit-1.js +135 -0
  59. package/dist/blocks/site/_site-icon-1.d.ts +6 -0
  60. package/dist/blocks/site/_site-icon-1.js +15 -0
  61. package/dist/blocks/site/announcement-bar.d.ts +42 -0
  62. package/dist/blocks/site/announcement-bar.js +38 -0
  63. package/dist/blocks/site/announcement-dismiss.d.ts +18 -0
  64. package/dist/blocks/site/announcement-dismiss.js +28 -0
  65. package/dist/blocks/site/article-layout.d.ts +65 -0
  66. package/dist/blocks/site/article-layout.js +88 -0
  67. package/dist/blocks/site/blog-list.d.ts +79 -0
  68. package/dist/blocks/site/blog-list.js +78 -0
  69. package/dist/blocks/site/comparison-table.d.ts +54 -0
  70. package/dist/blocks/site/comparison-table.js +38 -0
  71. package/dist/blocks/site/consent-banner.d.ts +52 -0
  72. package/dist/blocks/site/consent-banner.js +33 -0
  73. package/dist/blocks/site/contact-dock.d.ts +52 -0
  74. package/dist/blocks/site/contact-dock.js +55 -0
  75. package/dist/blocks/site/contact-form.d.ts +60 -0
  76. package/dist/blocks/site/contact-form.js +45 -0
  77. package/dist/blocks/site/cta-booking.d.ts +43 -0
  78. package/dist/blocks/site/cta-booking.js +69 -0
  79. package/dist/blocks/site/cta.d.ts +74 -0
  80. package/dist/blocks/site/cta.js +112 -0
  81. package/dist/blocks/site/embed-facade.d.ts +20 -0
  82. package/dist/blocks/site/embed-facade.js +21 -0
  83. package/dist/blocks/site/faq.d.ts +48 -0
  84. package/dist/blocks/site/faq.js +51 -0
  85. package/dist/blocks/site/feature-grid.d.ts +46 -0
  86. package/dist/blocks/site/feature-grid.js +49 -0
  87. package/dist/blocks/site/feature-tabs.d.ts +22 -0
  88. package/dist/blocks/site/feature-tabs.js +11 -0
  89. package/dist/blocks/site/footer.d.ts +68 -0
  90. package/dist/blocks/site/footer.js +61 -0
  91. package/dist/blocks/site/gallery-section.d.ts +42 -0
  92. package/dist/blocks/site/gallery-section.js +47 -0
  93. package/dist/blocks/site/hero-video.d.ts +15 -0
  94. package/dist/blocks/site/hero-video.js +31 -0
  95. package/dist/blocks/site/hero.d.ts +64 -0
  96. package/dist/blocks/site/hero.js +67 -0
  97. package/dist/blocks/site/logo-strip.d.ts +42 -0
  98. package/dist/blocks/site/logo-strip.js +26 -0
  99. package/dist/blocks/site/map-hours.d.ts +83 -0
  100. package/dist/blocks/site/map-hours.js +125 -0
  101. package/dist/blocks/site/media-text.d.ts +45 -0
  102. package/dist/blocks/site/media-text.js +55 -0
  103. package/dist/blocks/site/menu-list.d.ts +74 -0
  104. package/dist/blocks/site/menu-list.js +84 -0
  105. package/dist/blocks/site/navbar-submenu.d.ts +18 -0
  106. package/dist/blocks/site/navbar-submenu.js +51 -0
  107. package/dist/blocks/site/navbar.d.ts +67 -0
  108. package/dist/blocks/site/navbar.js +64 -0
  109. package/dist/blocks/site/not-found.d.ts +40 -0
  110. package/dist/blocks/site/not-found.js +38 -0
  111. package/dist/blocks/site/page-intro.d.ts +46 -0
  112. package/dist/blocks/site/page-intro.js +44 -0
  113. package/dist/blocks/site/pricing-table.d.ts +67 -0
  114. package/dist/blocks/site/pricing-table.js +82 -0
  115. package/dist/blocks/site/process.d.ts +36 -0
  116. package/dist/blocks/site/process.js +41 -0
  117. package/dist/blocks/site/registry-1.d.ts +720 -0
  118. package/dist/blocks/site/registry-1.js +783 -0
  119. package/dist/blocks/site/registry-2.d.ts +914 -0
  120. package/dist/blocks/site/registry-2.js +563 -0
  121. package/dist/blocks/site/rich-text-section.d.ts +34 -0
  122. package/dist/blocks/site/rich-text-section.js +32 -0
  123. package/dist/blocks/site/shared/brand-icons.d.ts +21 -0
  124. package/dist/blocks/site/shared/brand-icons.js +56 -0
  125. package/dist/blocks/site/shared/consent-gate.d.ts +41 -0
  126. package/dist/blocks/site/shared/consent-gate.js +43 -0
  127. package/dist/blocks/site/shared/consent-island.d.ts +38 -0
  128. package/dist/blocks/site/shared/consent-island.js +63 -0
  129. package/dist/blocks/site/shared/consent.d.ts +49 -0
  130. package/dist/blocks/site/shared/consent.js +130 -0
  131. package/dist/blocks/site/shared/contact-form-island.d.ts +41 -0
  132. package/dist/blocks/site/shared/contact-form-island.js +100 -0
  133. package/dist/blocks/site/shared/copy-link.d.ts +10 -0
  134. package/dist/blocks/site/shared/copy-link.js +25 -0
  135. package/dist/blocks/site/shared/dock-avoid.d.ts +15 -0
  136. package/dist/blocks/site/shared/dock-avoid.js +107 -0
  137. package/dist/blocks/site/shared/dock-hours.d.ts +13 -0
  138. package/dist/blocks/site/shared/dock-hours.js +25 -0
  139. package/dist/blocks/site/shared/gallery-lightbox.d.ts +12 -0
  140. package/dist/blocks/site/shared/gallery-lightbox.js +10 -0
  141. package/dist/blocks/site/shared/island-keys.d.ts +10 -0
  142. package/dist/blocks/site/shared/island-keys.js +44 -0
  143. package/dist/blocks/site/shared/kit-2.d.ts +55 -0
  144. package/dist/blocks/site/shared/kit-2.js +84 -0
  145. package/dist/blocks/site/shared/labels-2.d.ts +209 -0
  146. package/dist/blocks/site/shared/labels-2.js +427 -0
  147. package/dist/blocks/site/shared/open-now.d.ts +22 -0
  148. package/dist/blocks/site/shared/open-now.js +27 -0
  149. package/dist/blocks/site/shared/opening-hours.d.ts +117 -0
  150. package/dist/blocks/site/shared/opening-hours.js +245 -0
  151. package/dist/blocks/site/shared/site-accent.d.ts +48 -0
  152. package/dist/blocks/site/shared/site-accent.js +249 -0
  153. package/dist/blocks/site/shared/site-form.d.ts +79 -0
  154. package/dist/blocks/site/shared/site-form.js +111 -0
  155. package/dist/blocks/site/shared/site-routing.d.ts +54 -0
  156. package/dist/blocks/site/shared/site-routing.js +86 -0
  157. package/dist/blocks/site/shared/testimonials-carousel.d.ts +17 -0
  158. package/dist/blocks/site/shared/testimonials-carousel.js +64 -0
  159. package/dist/blocks/site/site-shell.d.ts +97 -0
  160. package/dist/blocks/site/site-shell.js +227 -0
  161. package/dist/blocks/site/stats-band.d.ts +40 -0
  162. package/dist/blocks/site/stats-band.js +41 -0
  163. package/dist/blocks/site/team.d.ts +44 -0
  164. package/dist/blocks/site/team.js +48 -0
  165. package/dist/blocks/site/testimonials.d.ts +68 -0
  166. package/dist/blocks/site/testimonials.js +65 -0
  167. package/dist/blocks/types.d.ts +63 -0
  168. package/dist/blocks/types.js +2 -0
  169. package/dist/business/approval-flow.d.ts +152 -0
  170. package/dist/business/approval-flow.js +221 -0
  171. package/dist/business/export-core.d.ts +55 -0
  172. package/dist/business/export-core.js +101 -0
  173. package/dist/business/export.d.ts +148 -0
  174. package/dist/business/export.js +264 -0
  175. package/dist/business/import-core.d.ts +104 -0
  176. package/dist/business/import-core.js +281 -0
  177. package/dist/business/import-wizard.d.ts +186 -0
  178. package/dist/business/import-wizard.js +401 -0
  179. package/dist/business/index.d.ts +11 -0
  180. package/dist/business/index.js +20 -0
  181. package/dist/business/line-items-core.d.ts +129 -0
  182. package/dist/business/line-items-core.js +183 -0
  183. package/dist/business/line-items.d.ts +119 -0
  184. package/dist/business/line-items.js +299 -0
  185. package/dist/business/multi-step-form.d.ts +131 -0
  186. package/dist/business/multi-step-form.js +337 -0
  187. package/dist/business/permission-core.d.ts +59 -0
  188. package/dist/business/permission-core.js +99 -0
  189. package/dist/business/permission-matrix.d.ts +158 -0
  190. package/dist/business/permission-matrix.js +341 -0
  191. package/dist/business/setup-checklist.d.ts +80 -0
  192. package/dist/business/setup-checklist.js +92 -0
  193. package/dist/charts/area-chart.d.ts +35 -0
  194. package/dist/charts/area-chart.js +33 -0
  195. package/dist/charts/bar-chart.d.ts +27 -0
  196. package/dist/charts/bar-chart.js +42 -0
  197. package/dist/charts/bar-list.d.ts +47 -0
  198. package/dist/charts/bar-list.js +60 -0
  199. package/dist/charts/chart-shell.d.ts +173 -0
  200. package/dist/charts/chart-shell.js +205 -0
  201. package/dist/charts/chart.d.ts +73 -0
  202. package/dist/charts/chart.js +106 -0
  203. package/dist/charts/combo-chart.d.ts +29 -0
  204. package/dist/charts/combo-chart.js +47 -0
  205. package/dist/charts/donut-chart.d.ts +33 -0
  206. package/dist/charts/donut-chart.js +113 -0
  207. package/dist/charts/funnel.d.ts +51 -0
  208. package/dist/charts/funnel.js +69 -0
  209. package/dist/charts/gauge.d.ts +62 -0
  210. package/dist/charts/gauge.js +104 -0
  211. package/dist/charts/heatmap.d.ts +81 -0
  212. package/dist/charts/heatmap.js +338 -0
  213. package/dist/charts/index.d.ts +12 -0
  214. package/dist/charts/index.js +14 -0
  215. package/dist/charts/line-chart.d.ts +21 -0
  216. package/dist/charts/line-chart.js +36 -0
  217. package/dist/charts/test-utils.d.ts +2 -0
  218. package/dist/charts/test-utils.js +38 -0
  219. package/dist/charts/utils.d.ts +130 -0
  220. package/dist/charts/utils.js +262 -0
  221. package/dist/components/accordion.d.ts +47 -0
  222. package/dist/components/accordion.js +70 -0
  223. package/dist/components/activity-timeline.d.ts +149 -0
  224. package/dist/components/activity-timeline.js +122 -0
  225. package/dist/components/address-field.d.ts +116 -0
  226. package/dist/components/address-field.js +219 -0
  227. package/dist/components/alert-dialog.d.ts +99 -0
  228. package/dist/components/alert-dialog.js +192 -0
  229. package/dist/components/alert.d.ts +42 -0
  230. package/dist/components/alert.js +82 -0
  231. package/dist/components/app-shell.d.ts +159 -0
  232. package/dist/components/app-shell.js +289 -0
  233. package/dist/components/attachment-list.d.ts +96 -0
  234. package/dist/components/attachment-list.js +196 -0
  235. package/dist/components/audit-log.d.ts +150 -0
  236. package/dist/components/audit-log.js +205 -0
  237. package/dist/components/avatar.d.ts +87 -0
  238. package/dist/components/avatar.js +126 -0
  239. package/dist/components/badge.d.ts +41 -0
  240. package/dist/components/badge.js +68 -0
  241. package/dist/components/breadcrumb.d.ts +78 -0
  242. package/dist/components/breadcrumb.js +106 -0
  243. package/dist/components/button-group.d.ts +52 -0
  244. package/dist/components/button-group.js +77 -0
  245. package/dist/components/button.d.ts +58 -0
  246. package/dist/components/button.js +107 -0
  247. package/dist/components/calendar.d.ts +240 -0
  248. package/dist/components/calendar.js +483 -0
  249. package/dist/components/card.d.ts +66 -0
  250. package/dist/components/card.js +76 -0
  251. package/dist/components/carousel.d.ts +170 -0
  252. package/dist/components/carousel.js +348 -0
  253. package/dist/components/checkbox.d.ts +78 -0
  254. package/dist/components/checkbox.js +138 -0
  255. package/dist/components/color-picker.d.ts +112 -0
  256. package/dist/components/color-picker.js +235 -0
  257. package/dist/components/combobox.d.ts +136 -0
  258. package/dist/components/combobox.js +294 -0
  259. package/dist/components/command.d.ts +275 -0
  260. package/dist/components/command.js +493 -0
  261. package/dist/components/comment-thread.d.ts +252 -0
  262. package/dist/components/comment-thread.js +449 -0
  263. package/dist/components/context-menu.d.ts +77 -0
  264. package/dist/components/context-menu.js +82 -0
  265. package/dist/components/currency-input.d.ts +43 -0
  266. package/dist/components/currency-input.js +85 -0
  267. package/dist/components/date-picker.d.ts +141 -0
  268. package/dist/components/date-picker.js +241 -0
  269. package/dist/components/date-range-picker.d.ts +91 -0
  270. package/dist/components/date-range-picker.js +251 -0
  271. package/dist/components/description-list.d.ts +92 -0
  272. package/dist/components/description-list.js +42 -0
  273. package/dist/components/dialog.d.ts +139 -0
  274. package/dist/components/dialog.js +185 -0
  275. package/dist/components/dropdown-menu.d.ts +100 -0
  276. package/dist/components/dropdown-menu.js +102 -0
  277. package/dist/components/editor-layout.d.ts +166 -0
  278. package/dist/components/editor-layout.js +237 -0
  279. package/dist/components/empty-state.d.ts +49 -0
  280. package/dist/components/empty-state.js +68 -0
  281. package/dist/components/entity-card.d.ts +83 -0
  282. package/dist/components/entity-card.js +92 -0
  283. package/dist/components/file-upload.d.ts +256 -0
  284. package/dist/components/file-upload.js +490 -0
  285. package/dist/components/formatted-input.d.ts +177 -0
  286. package/dist/components/formatted-input.js +399 -0
  287. package/dist/components/hierarchy-chart.d.ts +190 -0
  288. package/dist/components/hierarchy-chart.js +890 -0
  289. package/dist/components/hover-card.d.ts +21 -0
  290. package/dist/components/hover-card.js +32 -0
  291. package/dist/components/iban-input.d.ts +38 -0
  292. package/dist/components/iban-input.js +112 -0
  293. package/dist/components/id-input.d.ts +65 -0
  294. package/dist/components/id-input.js +130 -0
  295. package/dist/components/image.d.ts +130 -0
  296. package/dist/components/image.js +168 -0
  297. package/dist/components/input-otp.d.ts +62 -0
  298. package/dist/components/input-otp.js +73 -0
  299. package/dist/components/input.d.ts +141 -0
  300. package/dist/components/input.js +187 -0
  301. package/dist/components/item.d.ts +96 -0
  302. package/dist/components/item.js +113 -0
  303. package/dist/components/kbd.d.ts +64 -0
  304. package/dist/components/kbd.js +119 -0
  305. package/dist/components/list-layout.d.ts +144 -0
  306. package/dist/components/list-layout.js +210 -0
  307. package/dist/components/native-select.d.ts +33 -0
  308. package/dist/components/native-select.js +48 -0
  309. package/dist/components/navigation-menu.d.ts +127 -0
  310. package/dist/components/navigation-menu.js +129 -0
  311. package/dist/components/notification-center.d.ts +164 -0
  312. package/dist/components/notification-center.js +399 -0
  313. package/dist/components/page-header.d.ts +60 -0
  314. package/dist/components/page-header.js +60 -0
  315. package/dist/components/pagination.d.ts +121 -0
  316. package/dist/components/pagination.js +174 -0
  317. package/dist/components/phone-input.d.ts +49 -0
  318. package/dist/components/phone-input.js +266 -0
  319. package/dist/components/popover.d.ts +38 -0
  320. package/dist/components/popover.js +69 -0
  321. package/dist/components/progress.d.ts +79 -0
  322. package/dist/components/progress.js +97 -0
  323. package/dist/components/radio-group.d.ts +43 -0
  324. package/dist/components/radio-group.js +81 -0
  325. package/dist/components/record-detail-layout.d.ts +167 -0
  326. package/dist/components/record-detail-layout.js +233 -0
  327. package/dist/components/record-picker.d.ts +199 -0
  328. package/dist/components/record-picker.js +650 -0
  329. package/dist/components/resizable.d.ts +50 -0
  330. package/dist/components/resizable.js +88 -0
  331. package/dist/components/scroll-area.d.ts +40 -0
  332. package/dist/components/scroll-area.js +56 -0
  333. package/dist/components/select.d.ts +126 -0
  334. package/dist/components/select.js +137 -0
  335. package/dist/components/separator.d.ts +31 -0
  336. package/dist/components/separator.js +41 -0
  337. package/dist/components/settings-layout.d.ts +134 -0
  338. package/dist/components/settings-layout.js +180 -0
  339. package/dist/components/sheet.d.ts +103 -0
  340. package/dist/components/sheet.js +165 -0
  341. package/dist/components/sidebar.d.ts +171 -0
  342. package/dist/components/sidebar.js +421 -0
  343. package/dist/components/signature-pad.d.ts +85 -0
  344. package/dist/components/signature-pad.js +283 -0
  345. package/dist/components/skeleton.d.ts +64 -0
  346. package/dist/components/skeleton.js +53 -0
  347. package/dist/components/slider.d.ts +57 -0
  348. package/dist/components/slider.js +133 -0
  349. package/dist/components/slug-input.d.ts +69 -0
  350. package/dist/components/slug-input.js +201 -0
  351. package/dist/components/sparkline.d.ts +54 -0
  352. package/dist/components/sparkline.js +122 -0
  353. package/dist/components/spinner.d.ts +34 -0
  354. package/dist/components/spinner.js +34 -0
  355. package/dist/components/stat.d.ts +135 -0
  356. package/dist/components/stat.js +130 -0
  357. package/dist/components/status-picker.d.ts +107 -0
  358. package/dist/components/status-picker.js +175 -0
  359. package/dist/components/stepper.d.ts +86 -0
  360. package/dist/components/stepper.js +103 -0
  361. package/dist/components/switch.d.ts +34 -0
  362. package/dist/components/switch.js +70 -0
  363. package/dist/components/table.d.ts +101 -0
  364. package/dist/components/table.js +72 -0
  365. package/dist/components/tabs.d.ts +103 -0
  366. package/dist/components/tabs.js +173 -0
  367. package/dist/components/tag-input.d.ts +77 -0
  368. package/dist/components/tag-input.js +305 -0
  369. package/dist/components/task-list.d.ts +89 -0
  370. package/dist/components/task-list.js +238 -0
  371. package/dist/components/time-picker.d.ts +119 -0
  372. package/dist/components/time-picker.js +399 -0
  373. package/dist/components/toast.d.ts +87 -0
  374. package/dist/components/toast.js +142 -0
  375. package/dist/components/toggle.d.ts +77 -0
  376. package/dist/components/toggle.js +109 -0
  377. package/dist/components/tooltip.d.ts +69 -0
  378. package/dist/components/tooltip.js +105 -0
  379. package/dist/components/top-bar.d.ts +87 -0
  380. package/dist/components/top-bar.js +99 -0
  381. package/dist/components/tree-select.d.ts +89 -0
  382. package/dist/components/tree-select.js +243 -0
  383. package/dist/components/tree-view.d.ts +109 -0
  384. package/dist/components/tree-view.js +170 -0
  385. package/dist/components/typography.d.ts +107 -0
  386. package/dist/components/typography.js +128 -0
  387. package/dist/components/user-picker.d.ts +89 -0
  388. package/dist/components/user-picker.js +162 -0
  389. package/dist/components/version-history.d.ts +191 -0
  390. package/dist/components/version-history.js +431 -0
  391. package/dist/data-table/csv.d.ts +27 -0
  392. package/dist/data-table/csv.js +68 -0
  393. package/dist/data-table/data-table.d.ts +423 -0
  394. package/dist/data-table/data-table.js +1259 -0
  395. package/dist/data-table/filter-bar.d.ts +146 -0
  396. package/dist/data-table/filter-bar.js +569 -0
  397. package/dist/data-table/filter-fns.d.ts +65 -0
  398. package/dist/data-table/filter-fns.js +382 -0
  399. package/dist/data-table/index.d.ts +8 -0
  400. package/dist/data-table/index.js +9 -0
  401. package/dist/data-table/saved-views.d.ts +100 -0
  402. package/dist/data-table/saved-views.js +251 -0
  403. package/dist/data-table/types.d.ts +168 -0
  404. package/dist/data-table/types.js +87 -0
  405. package/dist/data-table/url-state.d.ts +94 -0
  406. package/dist/data-table/url-state.js +303 -0
  407. package/dist/data-table/view-state.d.ts +16 -0
  408. package/dist/data-table/view-state.js +81 -0
  409. package/dist/editor/_test-setup.d.ts +1 -0
  410. package/dist/editor/_test-setup.js +33 -0
  411. package/dist/editor/block-editor.d.ts +137 -0
  412. package/dist/editor/block-editor.js +280 -0
  413. package/dist/editor/commands.d.ts +31 -0
  414. package/dist/editor/commands.js +150 -0
  415. package/dist/editor/context.d.ts +108 -0
  416. package/dist/editor/context.js +30 -0
  417. package/dist/editor/convert.d.ts +66 -0
  418. package/dist/editor/convert.js +567 -0
  419. package/dist/editor/drag-handle.d.ts +10 -0
  420. package/dist/editor/drag-handle.js +69 -0
  421. package/dist/editor/extensions.d.ts +34 -0
  422. package/dist/editor/extensions.js +239 -0
  423. package/dist/editor/index.d.ts +14 -0
  424. package/dist/editor/index.js +17 -0
  425. package/dist/editor/inserter.d.ts +12 -0
  426. package/dist/editor/inserter.js +88 -0
  427. package/dist/editor/inspector.d.ts +17 -0
  428. package/dist/editor/inspector.js +65 -0
  429. package/dist/editor/items.d.ts +62 -0
  430. package/dist/editor/items.js +195 -0
  431. package/dist/editor/labels.d.ts +119 -0
  432. package/dist/editor/labels.js +130 -0
  433. package/dist/editor/markdown.d.ts +14 -0
  434. package/dist/editor/markdown.js +209 -0
  435. package/dist/editor/menus.d.ts +20 -0
  436. package/dist/editor/menus.js +236 -0
  437. package/dist/editor/nodes.d.ts +14 -0
  438. package/dist/editor/nodes.js +201 -0
  439. package/dist/editor/outline.d.ts +11 -0
  440. package/dist/editor/outline.js +52 -0
  441. package/dist/editor/schema-form.d.ts +64 -0
  442. package/dist/editor/schema-form.js +290 -0
  443. package/dist/editor/slash-menu.d.ts +15 -0
  444. package/dist/editor/slash-menu.js +119 -0
  445. package/dist/fonts/catalog.d.ts +53 -0
  446. package/dist/fonts/catalog.js +121 -0
  447. package/dist/fonts/font-picker.d.ts +70 -0
  448. package/dist/fonts/font-picker.js +225 -0
  449. package/dist/fonts/index.d.ts +6 -0
  450. package/dist/fonts/index.js +7 -0
  451. package/dist/fonts/loader.d.ts +66 -0
  452. package/dist/fonts/loader.js +161 -0
  453. package/dist/fonts/pairing-picker.d.ts +31 -0
  454. package/dist/fonts/pairing-picker.js +81 -0
  455. package/dist/fonts/pairings.d.ts +84 -0
  456. package/dist/fonts/pairings.js +149 -0
  457. package/dist/fonts/provider.d.ts +34 -0
  458. package/dist/fonts/provider.js +51 -0
  459. package/dist/form/index.d.ts +1 -0
  460. package/dist/form/index.js +1 -0
  461. package/dist/format/core.d.ts +149 -0
  462. package/dist/format/core.js +357 -0
  463. package/dist/format/index.d.ts +4 -0
  464. package/dist/format/index.js +5 -0
  465. package/dist/format/use-format.d.ts +1 -0
  466. package/dist/format/use-format.js +3 -0
  467. package/dist/index.d.ts +86 -0
  468. package/dist/index.js +87 -0
  469. package/dist/lib/cn.d.ts +3 -0
  470. package/dist/lib/cn.js +16 -0
  471. package/dist/lib/color.d.ts +64 -0
  472. package/dist/lib/color.js +177 -0
  473. package/dist/lib/compose-refs.d.ts +24 -0
  474. package/dist/lib/compose-refs.js +45 -0
  475. package/dist/lib/data-islands.d.ts +194 -0
  476. package/dist/lib/data-islands.js +368 -0
  477. package/dist/lib/date.d.ts +129 -0
  478. package/dist/lib/date.js +386 -0
  479. package/dist/lib/field-context.d.ts +64 -0
  480. package/dist/lib/field-context.js +62 -0
  481. package/dist/lib/floating-arrow.d.ts +18 -0
  482. package/dist/lib/floating-arrow.js +15 -0
  483. package/dist/lib/islands.d.ts +38 -0
  484. package/dist/lib/islands.js +40 -0
  485. package/dist/lib/labels.d.ts +51 -0
  486. package/dist/lib/labels.js +56 -0
  487. package/dist/lib/layer.d.ts +36 -0
  488. package/dist/lib/layer.js +42 -0
  489. package/dist/lib/locale.d.ts +85 -0
  490. package/dist/lib/locale.js +105 -0
  491. package/dist/lib/menu.d.ts +58 -0
  492. package/dist/lib/menu.js +99 -0
  493. package/dist/lib/message-format.d.ts +20 -0
  494. package/dist/lib/message-format.js +116 -0
  495. package/dist/lib/nav.d.ts +132 -0
  496. package/dist/lib/nav.js +178 -0
  497. package/dist/lib/provider.d.ts +100 -0
  498. package/dist/lib/provider.js +105 -0
  499. package/dist/lib/public.d.ts +22 -0
  500. package/dist/lib/public.js +33 -0
  501. package/dist/lib/sr-name.d.ts +18 -0
  502. package/dist/lib/sr-name.js +17 -0
  503. package/dist/lib/text.d.ts +100 -0
  504. package/dist/lib/text.js +233 -0
  505. package/dist/lib/theme-scope.d.ts +58 -0
  506. package/dist/lib/theme-scope.js +59 -0
  507. package/dist/lib/use-async-list.d.ts +60 -0
  508. package/dist/lib/use-async-list.js +119 -0
  509. package/dist/lib/use-container-width.d.ts +19 -0
  510. package/dist/lib/use-container-width.js +39 -0
  511. package/dist/lib/use-controllable-state.d.ts +33 -0
  512. package/dist/lib/use-controllable-state.js +56 -0
  513. package/dist/lib/use-edge-fade.d.ts +13 -0
  514. package/dist/lib/use-edge-fade.js +43 -0
  515. package/dist/lib/use-formatted-input.d.ts +69 -0
  516. package/dist/lib/use-formatted-input.js +152 -0
  517. package/dist/lib/use-hotkeys.d.ts +80 -0
  518. package/dist/lib/use-hotkeys.js +221 -0
  519. package/dist/lib/use-hover-intent.d.ts +44 -0
  520. package/dist/lib/use-hover-intent.js +119 -0
  521. package/dist/lib/use-media-query.d.ts +21 -0
  522. package/dist/lib/use-media-query.js +28 -0
  523. package/dist/lib/use-reduced-motion.d.ts +8 -0
  524. package/dist/lib/use-reduced-motion.js +13 -0
  525. package/dist/lib/use-tree.d.ts +153 -0
  526. package/dist/lib/use-tree.js +534 -0
  527. package/dist/lib/value-format.d.ts +25 -0
  528. package/dist/lib/value-format.js +56 -0
  529. package/dist/lib/variants.d.ts +131 -0
  530. package/dist/lib/variants.js +109 -0
  531. package/dist/locale-data/core/date.d.ts +24 -0
  532. package/dist/locale-data/core/date.js +68 -0
  533. package/dist/locale-data/core/decimal.d.ts +19 -0
  534. package/dist/locale-data/core/decimal.js +79 -0
  535. package/dist/locale-data/core/holidays.d.ts +30 -0
  536. package/dist/locale-data/core/holidays.js +79 -0
  537. package/dist/locale-data/core/iban.d.ts +29 -0
  538. package/dist/locale-data/core/iban.js +74 -0
  539. package/dist/locale-data/core/index.d.ts +7 -0
  540. package/dist/locale-data/core/index.js +6 -0
  541. package/dist/locale-data/core/types.d.ts +173 -0
  542. package/dist/locale-data/core/types.js +6 -0
  543. package/dist/locale-data/core/week-info.d.ts +23 -0
  544. package/dist/locale-data/core/week-info.js +85 -0
  545. package/dist/locale-data/core/working-days.d.ts +27 -0
  546. package/dist/locale-data/core/working-days.js +133 -0
  547. package/dist/locale-data/index.d.ts +2 -0
  548. package/dist/locale-data/index.js +4 -0
  549. package/dist/locale-data/tr/address-tr.json +1 -0
  550. package/dist/locale-data/tr/address.d.ts +23 -0
  551. package/dist/locale-data/tr/address.js +52 -0
  552. package/dist/locale-data/tr/holidays.d.ts +31 -0
  553. package/dist/locale-data/tr/holidays.js +81 -0
  554. package/dist/locale-data/tr/iban.d.ts +21 -0
  555. package/dist/locale-data/tr/iban.js +45 -0
  556. package/dist/locale-data/tr/id.d.ts +36 -0
  557. package/dist/locale-data/tr/id.js +120 -0
  558. package/dist/locale-data/tr/index.d.ts +12 -0
  559. package/dist/locale-data/tr/index.js +33 -0
  560. package/dist/locale-data/tr/kdv.d.ts +91 -0
  561. package/dist/locale-data/tr/kdv.js +222 -0
  562. package/dist/locales/en.d.ts +2102 -0
  563. package/dist/locales/en.js +2088 -0
  564. package/dist/locales/tr.d.ts +2086 -0
  565. package/dist/locales/tr.js +2087 -0
  566. package/dist/media/focal-point.d.ts +42 -0
  567. package/dist/media/focal-point.js +96 -0
  568. package/dist/media/gallery-layout.d.ts +19 -0
  569. package/dist/media/gallery-layout.js +61 -0
  570. package/dist/media/gallery.d.ts +64 -0
  571. package/dist/media/gallery.js +138 -0
  572. package/dist/media/image-cropper.d.ts +86 -0
  573. package/dist/media/image-cropper.js +170 -0
  574. package/dist/media/image-field.d.ts +115 -0
  575. package/dist/media/image-field.js +212 -0
  576. package/dist/media/index.d.ts +19 -0
  577. package/dist/media/index.js +23 -0
  578. package/dist/media/lightbox.d.ts +82 -0
  579. package/dist/media/lightbox.js +171 -0
  580. package/dist/media/link-preview.d.ts +97 -0
  581. package/dist/media/link-preview.js +177 -0
  582. package/dist/media/media-library.d.ts +244 -0
  583. package/dist/media/media-library.js +776 -0
  584. package/dist/media/media-picker.d.ts +96 -0
  585. package/dist/media/media-picker.js +209 -0
  586. package/dist/media/media-provider.d.ts +23 -0
  587. package/dist/media/media-provider.js +44 -0
  588. package/dist/media/media-utils.d.ts +39 -0
  589. package/dist/media/media-utils.js +145 -0
  590. package/dist/media/memory-adapter.d.ts +22 -0
  591. package/dist/media/memory-adapter.js +162 -0
  592. package/dist/media/rest-adapter.d.ts +90 -0
  593. package/dist/media/rest-adapter.js +208 -0
  594. package/dist/media/serp.d.ts +62 -0
  595. package/dist/media/serp.js +108 -0
  596. package/dist/media/test-fixtures.d.ts +3 -0
  597. package/dist/media/test-fixtures.js +37 -0
  598. package/dist/media/types.d.ts +183 -0
  599. package/dist/media/types.js +3 -0
  600. package/dist/media/use-pan-zoom.d.ts +51 -0
  601. package/dist/media/use-pan-zoom.js +156 -0
  602. package/dist/media/use-upload-queue.d.ts +64 -0
  603. package/dist/media/use-upload-queue.js +115 -0
  604. package/dist/media/video-player.d.ts +135 -0
  605. package/dist/media/video-player.js +319 -0
  606. package/dist/next/index.d.ts +42 -0
  607. package/dist/next/index.js +36 -0
  608. package/dist/render/block-renderer.d.ts +56 -0
  609. package/dist/render/block-renderer.js +137 -0
  610. package/dist/render/index.d.ts +6 -0
  611. package/dist/render/index.js +7 -0
  612. package/dist/render/prepare.d.ts +61 -0
  613. package/dist/render/prepare.js +119 -0
  614. package/dist/scheduler/core/duration.d.ts +83 -0
  615. package/dist/scheduler/core/duration.js +174 -0
  616. package/dist/scheduler/core/gantt.d.ts +63 -0
  617. package/dist/scheduler/core/gantt.js +226 -0
  618. package/dist/scheduler/core/index.d.ts +6 -0
  619. package/dist/scheduler/core/index.js +7 -0
  620. package/dist/scheduler/core/layout.d.ts +97 -0
  621. package/dist/scheduler/core/layout.js +249 -0
  622. package/dist/scheduler/core/time-scale.d.ts +89 -0
  623. package/dist/scheduler/core/time-scale.js +173 -0
  624. package/dist/scheduler/gantt.d.ts +125 -0
  625. package/dist/scheduler/gantt.js +532 -0
  626. package/dist/scheduler/index.d.ts +6 -0
  627. package/dist/scheduler/index.js +7 -0
  628. package/dist/scheduler/resource-calendar.d.ts +218 -0
  629. package/dist/scheduler/resource-calendar.js +661 -0
  630. package/dist/scheduler/scheduler.d.ts +168 -0
  631. package/dist/scheduler/scheduler.js +768 -0
  632. package/dist/scheduler/shared.d.ts +63 -0
  633. package/dist/scheduler/shared.js +145 -0
  634. package/dist/scheduler/time-tracker.d.ts +138 -0
  635. package/dist/scheduler/time-tracker.js +403 -0
  636. package/dist/sortable/core.d.ts +67 -0
  637. package/dist/sortable/core.js +167 -0
  638. package/dist/sortable/index.d.ts +8 -0
  639. package/dist/sortable/index.js +10 -0
  640. package/dist/sortable/kanban-core.d.ts +70 -0
  641. package/dist/sortable/kanban-core.js +67 -0
  642. package/dist/sortable/kanban.d.ts +147 -0
  643. package/dist/sortable/kanban.js +472 -0
  644. package/dist/sortable/sortable-list.d.ts +71 -0
  645. package/dist/sortable/sortable-list.js +76 -0
  646. package/dist/sortable/sortable-tree.d.ts +101 -0
  647. package/dist/sortable/sortable-tree.js +450 -0
  648. package/dist/sortable/sortable.d.ts +188 -0
  649. package/dist/sortable/sortable.js +485 -0
  650. package/dist/sortable/use-pointer-drag.d.ts +75 -0
  651. package/dist/sortable/use-pointer-drag.js +173 -0
  652. package/dist/sortable/use-time-scale.d.ts +11 -0
  653. package/dist/sortable/use-time-scale.js +19 -0
  654. package/dist/styles/base.css +51 -0
  655. package/dist/styles/blocks.css +949 -0
  656. package/dist/styles/calendar.css +642 -0
  657. package/dist/styles/charts.css +264 -0
  658. package/dist/styles/data.css +474 -0
  659. package/dist/styles/editors.css +1022 -0
  660. package/dist/styles/forms.css +406 -0
  661. package/dist/styles/media.css +515 -0
  662. package/dist/styles/navigation.css +293 -0
  663. package/dist/styles/overlays.css +244 -0
  664. package/dist/styles.css +742 -0
  665. package/package.json +156 -4
@@ -0,0 +1,128 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { Slot } from "radix-ui";
4
+ import { cva } from "class-variance-authority";
5
+ import { cn } from "../lib/cn.js";
6
+ /*
7
+ * Typography — server-compatible. Headings read the data-font axis: --font-heading,
8
+ * --display-weight / --display-tracking / --display-em, and scale with --display-scale.
9
+ */
10
+ export const headingVariants = cva("text-balance text-fg [overflow-wrap:break-word]", {
11
+ variants: {
12
+ size: {
13
+ /** 56px × display-scale (fluid down to 38px on phones). Hero / page title on websites. */
14
+ display: "font-display [font-weight:var(--display-weight)] [letter-spacing:var(--display-tracking)] [&_em]:[font-style:var(--display-em)] text-[length:calc(clamp(38px,4.2vw+20px,56px)*var(--display-scale))] leading-[1.02]",
15
+ /** 44px × display-scale. Admin page title. */
16
+ xl: "font-display [font-weight:var(--display-weight)] [letter-spacing:var(--display-tracking)] [&_em]:[font-style:var(--display-em)] text-[length:calc(clamp(32px,2.6vw+22px,44px)*var(--display-scale))] leading-[1.05]",
17
+ /** 32px × display-scale. Section title. */
18
+ lg: "font-sans font-semibold tracking-[-0.022em] text-[length:calc(32px*var(--display-scale))] leading-[1.12]",
19
+ /** 22px. Card / panel title. */
20
+ md: "font-sans font-semibold tracking-[-0.016em] text-[22px] leading-[1.25]",
21
+ /** 17px. Group heading inside a panel. */
22
+ sm: "font-sans font-semibold tracking-[-0.01em] text-[17px] leading-[1.35]",
23
+ },
24
+ },
25
+ defaultVariants: { size: "md" },
26
+ });
27
+ const defaultSize = { 1: "xl", 2: "lg", 3: "md", 4: "sm", 5: "sm", 6: "sm" };
28
+ /**
29
+ * A heading whose look (`size`) is decoupled from its level, so the outline never skips a
30
+ * level for visual reasons. `display` and `xl` use the preset's heading face; `<em>` inside
31
+ * follows the preset (italic in serif presets, plain in sans).
32
+ *
33
+ * ```tsx
34
+ * <Heading level={1} size="display">Dinner, <em>slowly</em>.</Heading>
35
+ * <Heading level={2} size="md">Billing details</Heading>
36
+ * ```
37
+ */
38
+ export const Heading = React.forwardRef(function Heading({ level = 2, size, asChild, className, ...props }, ref) {
39
+ const Comp = (asChild ? Slot.Root : `h${level}`);
40
+ return _jsx(Comp, { ref: ref, "data-slot": "heading", "data-size": size ?? defaultSize[level], className: cn(headingVariants({ size: size ?? defaultSize[level] }), className), ...props });
41
+ });
42
+ /* ------------------------------------------------------------------ */
43
+ /* Text */
44
+ /* ------------------------------------------------------------------ */
45
+ export const textVariants = cva("", {
46
+ variants: {
47
+ size: {
48
+ xs: "text-xs leading-[1.45]",
49
+ sm: "text-[13px] leading-[1.5]",
50
+ md: "text-sm leading-[1.55]",
51
+ lg: "text-base leading-[1.6]",
52
+ },
53
+ tone: {
54
+ default: "text-fg",
55
+ muted: "text-fg-muted",
56
+ subtle: "text-fg-subtle",
57
+ accent: "text-accent-ink",
58
+ danger: "text-danger",
59
+ success: "text-success",
60
+ warning: "text-warning",
61
+ /** Keep the parent colour. */
62
+ inherit: "",
63
+ },
64
+ weight: {
65
+ regular: "font-normal",
66
+ medium: "font-medium",
67
+ semibold: "font-semibold",
68
+ },
69
+ },
70
+ defaultVariants: { size: "md", tone: "default" },
71
+ });
72
+ /**
73
+ * Body text: 12 / 13 / 14 / 16 px, seven tones, three weights, single-line truncation or
74
+ * multi-line clamp. Paragraphs wrap with `text-wrap: pretty`.
75
+ *
76
+ * ```tsx
77
+ * <Text tone="muted" size="sm">Last edited 3 minutes ago by Elif.</Text>
78
+ * <Text truncate={2}>{post.excerpt}</Text>
79
+ * ```
80
+ */
81
+ export const Text = React.forwardRef(function Text({ as = "p", size, tone, weight, truncate, tabular, asChild, className, style, title, children, ...props }, ref) {
82
+ const Comp = (asChild ? Slot.Root : as);
83
+ const lines = typeof truncate === "number" && truncate > 1 ? truncate : undefined;
84
+ const autoTitle = truncate && title === undefined && (typeof children === "string" || typeof children === "number") ? String(children) : title;
85
+ return (_jsx(Comp, { ref: ref, "data-slot": "text", title: autoTitle, className: cn(textVariants({ size, tone, weight }), as === "p" && !truncate && "text-pretty", (truncate === true || truncate === 1) && "truncate", lines && "overflow-hidden [display:-webkit-box] [-webkit-box-orient:vertical]", tabular && "tabular", className), style: lines ? { ...style, WebkitLineClamp: lines } : style, ...props, children: children }));
86
+ });
87
+ /** The opening paragraph under a page or article title. */
88
+ export const Lead = React.forwardRef(function Lead({ className, ...props }, ref) {
89
+ return _jsx("p", { ref: ref, "data-slot": "lead", className: cn("text-pretty text-[length:var(--text-lead)] leading-[1.5] text-fg-muted", className), ...props });
90
+ });
91
+ /** Inline code: `slug`, `npm run build`, a field key. */
92
+ export const Code = React.forwardRef(function Code({ className, ...props }, ref) {
93
+ return (_jsx("code", { ref: ref, "data-slot": "code", className: cn("rounded-[5px] border border-line bg-selected px-[0.36em] py-[0.08em] font-mono text-[0.86em] text-fg [overflow-wrap:anywhere]", className), ...props }));
94
+ });
95
+ /** A pulled quote or testimonial, set in the heading face. */
96
+ export const Blockquote = React.forwardRef(function Blockquote({ attribution, className, children, ...props }, ref) {
97
+ return (_jsxs("figure", { "data-slot": "blockquote", className: cn("grid gap-2.5 border-s-2 border-accent-ink ps-5", className), children: [_jsx("blockquote", { ref: ref, className: "font-display text-[length:calc(22px*var(--display-scale))] leading-[1.4] text-fg [&_em]:[font-style:var(--display-em)]", ...props, children: children }), attribution ? _jsx("figcaption", { className: "text-[13px] text-fg-subtle", children: attribution }) : null] }));
98
+ });
99
+ /**
100
+ * Numbers that line up: tabular figures, no wrapping. Format the value first (`useFormat()` or
101
+ * `createFormatter` from `@vamos-ui/react/format`), then render it here.
102
+ *
103
+ * ```tsx
104
+ * <Numeric>{f.currency("1250.50")}</Numeric>
105
+ * <Numeric signOf={-4.2}>−4.2%</Numeric>
106
+ * ```
107
+ */
108
+ export const Numeric = React.forwardRef(function Numeric({ mono, signOf, className, ...props }, ref) {
109
+ return (_jsx("span", { ref: ref, "data-slot": "numeric", className: cn("tabular whitespace-nowrap", mono && "font-mono text-[0.94em]", signOf !== undefined && (signOf < 0 ? "text-danger" : signOf > 0 ? "text-success" : "text-fg-muted"), className), ...props }));
110
+ });
111
+ /**
112
+ * Styles rich content you don't control element by element: an article body from the editor,
113
+ * a CMS page, release notes. Headings, lists, quotes, code, tables and media follow the
114
+ * `data-font` preset and tokens. Put long prose on a `surface` (not straight on the glass scene).
115
+ *
116
+ * ```tsx
117
+ * <Prose html={post.bodyHtml} />
118
+ * <Prose size="lg" lang="en"><h2>Opening hours</h2><p>…</p></Prose>
119
+ * ```
120
+ */
121
+ export const Prose = React.forwardRef(function Prose({ size = "md", html, fullWidth, asChild, className, children, ...props }, ref) {
122
+ const Comp = asChild ? Slot.Root : "div";
123
+ return (_jsx(Comp, { ref: ref, "data-slot": "prose", className: cn("prose-ui", size === "sm" && "prose-ui-sm", size === "lg" && "prose-ui-lg", fullWidth && "max-w-none", className), ...(html !== undefined ? { dangerouslySetInnerHTML: { __html: html } } : { children }), ...props }));
124
+ });
125
+ /** Wraps a wide table inside Prose in a keyboard-scrollable region. */
126
+ export const ProseTable = React.forwardRef(function ProseTable({ label, className, ...props }, ref) {
127
+ return _jsx("div", { ref: ref, role: "region", "aria-label": label, tabIndex: 0, "data-slot": "prose-table", className: cn(className), ...props });
128
+ });
@@ -0,0 +1,89 @@
1
+ import * as React from "react";
2
+ import { type AvatarStatus } from "./avatar.js";
3
+ import { type RecordPickerMultipleProps, type RecordPickerSingleProps, type RecordSource } from "./record-picker.js";
4
+ /** A person you can assign, mention or share with. */
5
+ export interface PickerUser {
6
+ id: string;
7
+ name: string;
8
+ email?: string;
9
+ avatarUrl?: string | null;
10
+ status?: AvatarStatus;
11
+ /** Deactivated / left the company: dimmed, not selectable, still shown when already assigned. */
12
+ disabled?: boolean;
13
+ /** Role or department ("Account executive · Sales"). */
14
+ meta?: string;
15
+ }
16
+ /** A team or group; picking it adds its members (or the team itself). */
17
+ export interface PickerTeam {
18
+ id: string;
19
+ name: string;
20
+ memberCount: number;
21
+ }
22
+ declare const userPickerLabels: {
23
+ unassigned: string;
24
+ assignToMe: string;
25
+ you: string;
26
+ teams: string;
27
+ people: string;
28
+ members: string;
29
+ assignees: string;
30
+ assigneesLabel: string;
31
+ andMore: string;
32
+ deactivated: string;
33
+ add: string;
34
+ search: string;
35
+ };
36
+ export type UserPickerLabels = typeof userPickerLabels;
37
+ interface UserPickerBaseProps {
38
+ /** People: an array (searched in memory, locale-folded) or a server `RecordSource`. */
39
+ source: RecordSource<PickerUser> | PickerUser[];
40
+ /** Teams shown in their own group. */
41
+ teams?: RecordSource<PickerTeam> | PickerTeam[];
42
+ /** Resolve a picked team to people. Without it the team's id (`"team:<id>"`) is selected. */
43
+ getTeamMembers?: (team: PickerTeam, signal: AbortSignal) => Promise<PickerUser[]>;
44
+ /** Adds "Assign to me" and the "(you)" suffix. */
45
+ currentUserId?: string;
46
+ /** Field box (default), an avatar stack button (table cells, headers) or an always-open list. */
47
+ trigger?: "field" | "avatars" | "inline";
48
+ /** Avatars shown in the avatar trigger before "+N". Default 3. */
49
+ maxAvatars?: number;
50
+ /** Name of the role being assigned, for the trigger's accessible name ("Reviewers: …"). Default "Assignees". */
51
+ roleLabel?: string;
52
+ size?: "sm" | "md" | "lg";
53
+ placeholder?: string;
54
+ name?: string;
55
+ disabled?: boolean;
56
+ readOnly?: boolean;
57
+ invalid?: boolean;
58
+ required?: boolean;
59
+ /** Records for the initial value when `source` is a server source. */
60
+ selectedRecords?: PickerUser[];
61
+ open?: boolean;
62
+ defaultOpen?: boolean;
63
+ onOpenChange?: (open: boolean) => void;
64
+ labels?: Partial<UserPickerLabels>;
65
+ id?: string;
66
+ className?: string;
67
+ "aria-label"?: string;
68
+ "aria-labelledby"?: string;
69
+ "aria-describedby"?: string;
70
+ }
71
+ export interface UserPickerSingleProps extends UserPickerBaseProps, Pick<RecordPickerSingleProps<PickerUser>, "value" | "defaultValue" | "onValueChange"> {
72
+ multiple?: false;
73
+ }
74
+ export interface UserPickerMultipleProps extends UserPickerBaseProps, Pick<RecordPickerMultipleProps<PickerUser>, "value" | "defaultValue" | "onValueChange" | "max"> {
75
+ multiple: true;
76
+ }
77
+ export type UserPickerProps = UserPickerSingleProps | UserPickerMultipleProps;
78
+ /**
79
+ * Assign or mention people and teams: task assignee, approvers, deal owner, reviewers, shift staff,
80
+ * share-with. A Record picker specialised for people — avatars with presence, role line,
81
+ * "Assign to me", deactivated users, teams, and an avatar-stack trigger for table cells.
82
+ *
83
+ * ```tsx
84
+ * <Field label="Owner"><UserPicker source={people} currentUserId={me.id} value={ownerId} onValueChange={setOwnerId} /></Field>
85
+ * <UserPicker multiple trigger="avatars" source={people} value={assignees} onValueChange={setAssignees} aria-label="Assignees" />
86
+ * ```
87
+ */
88
+ export declare const UserPicker: React.ForwardRefExoticComponent<UserPickerProps & React.RefAttributes<HTMLDivElement>>;
89
+ export {};
@@ -0,0 +1,162 @@
1
+ "use client";
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Plus, UserRound, UsersRound } from "lucide-react";
5
+ import { cn } from "../lib/cn.js";
6
+ import { useLabels } from "../lib/labels.js";
7
+ import { useLocale } from "../lib/locale.js";
8
+ import { compareText, highlightParts, matchText } from "../lib/text.js";
9
+ import { itemSlots } from "../lib/variants.js";
10
+ import { Avatar, AvatarGroup } from "./avatar.js";
11
+ import { RecordPicker } from "./record-picker.js";
12
+ const userPickerLabels = {
13
+ unassigned: "Unassigned",
14
+ assignToMe: "Assign to me",
15
+ you: "you",
16
+ teams: "Teams",
17
+ people: "People",
18
+ members: "{count, plural, one {# member} other {# members}}",
19
+ assignees: "{label}: {names}",
20
+ assigneesLabel: "Assignees",
21
+ andMore: "{names} and {count} more",
22
+ deactivated: "Deactivated",
23
+ add: "Assign",
24
+ search: "Search people…",
25
+ };
26
+ const TEAM_PREFIX = "team:";
27
+ // RecordPicker caches results per `source.key` for the session, so every array needs its own key:
28
+ // with a shared "users" key, two pickers on one page showed each other's people.
29
+ const arrayKeys = new WeakMap();
30
+ let arrayKeySeq = 0;
31
+ function keyForArray(prefix, input) {
32
+ let key = arrayKeys.get(input);
33
+ if (!key)
34
+ arrayKeys.set(input, (key = `${prefix}#${++arrayKeySeq}`));
35
+ return key;
36
+ }
37
+ function toSource(key, input, getId, getText, sortBy) {
38
+ if (!Array.isArray(input))
39
+ return input;
40
+ return {
41
+ key: keyForArray(key, input),
42
+ getId,
43
+ getLabel: sortBy,
44
+ async search(q, { locale }) {
45
+ const cmp = compareText(locale);
46
+ const items = (q.trim() ? input.filter((x) => matchText(getText(x), q, locale)) : input).slice().sort((a, b) => cmp(sortBy(a), sortBy(b)));
47
+ return { items };
48
+ },
49
+ async getByIds(ids) {
50
+ const set = new Set(ids);
51
+ return input.filter((x) => set.has(getId(x)));
52
+ },
53
+ };
54
+ }
55
+ function Bold({ text, query, locale }) {
56
+ if (!query.trim())
57
+ return _jsx(_Fragment, { children: text });
58
+ return (_jsx(_Fragment, { children: highlightParts(text, query, locale).map((p, i) => p.match ? (_jsx("mark", { className: "bg-transparent font-semibold text-fg", children: p.text }, i)) : (_jsx(React.Fragment, { children: p.text }, i))) }));
59
+ }
60
+ /**
61
+ * Assign or mention people and teams: task assignee, approvers, deal owner, reviewers, shift staff,
62
+ * share-with. A Record picker specialised for people — avatars with presence, role line,
63
+ * "Assign to me", deactivated users, teams, and an avatar-stack trigger for table cells.
64
+ *
65
+ * ```tsx
66
+ * <Field label="Owner"><UserPicker source={people} currentUserId={me.id} value={ownerId} onValueChange={setOwnerId} /></Field>
67
+ * <UserPicker multiple trigger="avatars" source={people} value={assignees} onValueChange={setAssignees} aria-label="Assignees" />
68
+ * ```
69
+ */
70
+ export const UserPicker = React.forwardRef(function UserPicker(props, ref) {
71
+ const { source, teams, getTeamMembers, currentUserId, trigger = "field", maxAvatars = 3, roleLabel, labels, selectedRecords, ...rest } = props;
72
+ const t = useLabels("userPicker", userPickerLabels, labels);
73
+ const { locale } = useLocale();
74
+ const people = React.useMemo(() => toSource("users", source, (u) => u.id, (u) => [u.name, u.email ?? "", u.meta ?? ""].join(" "), (u) => u.name), [source]);
75
+ const teamSource = React.useMemo(() => (teams ? toSource("teams", teams, (x) => x.id, (x) => x.name, (x) => x.name) : undefined), [teams]);
76
+ // One combined source: people, then teams (prefixed ids) in their own group.
77
+ const combined = React.useMemo(() => ({
78
+ key: `${people.key}${teamSource ? `+${teamSource.key}` : ""}`,
79
+ getId: (r) => (r.kind === "team" ? `${TEAM_PREFIX}${r.id}` : r.id),
80
+ getLabel: (r) => r.name,
81
+ getDescription: (r) => (r.kind === "team" ? undefined : (r.meta ?? r.email)),
82
+ getAvatar: (r) => ({ name: r.name, src: r.avatarUrl, shape: r.kind === "team" ? "square" : "circle" }),
83
+ async search(q, ctx) {
84
+ const [p, tm] = await Promise.all([people.search(q, ctx), teamSource && !ctx.cursor ? teamSource.search(q, { ...ctx, cursor: undefined }) : Promise.resolve({ items: [] })]);
85
+ const teamRows = tm.items.map((x) => ({ id: x.id, name: x.name, kind: "team", memberCount: x.memberCount }));
86
+ return { items: [...p.items, ...teamRows], nextCursor: p.nextCursor };
87
+ },
88
+ getByIds: people.getByIds
89
+ ? async (ids, signal) => {
90
+ const userIds = ids.filter((id) => !id.startsWith(TEAM_PREFIX));
91
+ const teamIds = ids.filter((id) => id.startsWith(TEAM_PREFIX)).map((id) => id.slice(TEAM_PREFIX.length));
92
+ const [u, tm] = await Promise.all([
93
+ userIds.length ? people.getByIds(userIds, signal) : Promise.resolve([]),
94
+ teamIds.length && teamSource?.getByIds ? teamSource.getByIds(teamIds, signal) : Promise.resolve([]),
95
+ ]);
96
+ return [...u, ...tm.map((x) => ({ id: x.id, name: x.name, kind: "team", memberCount: x.memberCount }))];
97
+ }
98
+ : undefined,
99
+ }), [people, teamSource]);
100
+ const me = React.useCallback((u) => (currentUserId && u.id === currentUserId ? `${u.name} (${t("you")})` : u.name), [currentUserId, t]);
101
+ const actions = React.useMemo(() => {
102
+ if (!currentUserId)
103
+ return [];
104
+ return [
105
+ {
106
+ id: "me",
107
+ label: t("assignToMe"),
108
+ icon: _jsx(UserRound, { "aria-hidden": true }),
109
+ onSelect: async ({ select }) => {
110
+ const ctrl = new AbortController();
111
+ const found = (await combined.getByIds?.([currentUserId], ctrl.signal))?.[0];
112
+ if (found)
113
+ select(found);
114
+ },
115
+ },
116
+ ];
117
+ }, [combined, currentUserId, t]);
118
+ const renderItem = (r, s) => {
119
+ if (r.kind === "team") {
120
+ return (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": true, className: "inline-flex size-6 shrink-0 items-center justify-center rounded-[28%] bg-selected text-fg-muted [&_svg]:size-3.5", children: _jsx(UsersRound, {}) }), _jsx("span", { className: "min-w-0 flex-1 truncate", children: _jsx(Bold, { text: r.name, query: s.query, locale: locale }) }), _jsx("span", { className: itemSlots.shortcut, children: t("members", { count: r.memberCount ?? 0 }) })] }));
121
+ }
122
+ const isMe = currentUserId === r.id;
123
+ return (_jsxs(_Fragment, { children: [_jsx(Avatar, { name: r.name, src: r.avatarUrl, status: r.status, size: "sm", "aria-hidden": true }), _jsxs("span", { className: "min-w-0 flex-1", children: [_jsxs("span", { className: "block truncate", children: [_jsx(Bold, { text: r.name, query: s.query, locale: locale }), isMe ? _jsxs(_Fragment, { children: [" ", _jsxs("span", { className: "text-fg-subtle", children: ["(", t("you"), ")"] })] }) : null] }), r.disabled ? (_jsx("span", { className: itemSlots.description, children: t("deactivated") })) : r.meta || r.email ? (_jsx("span", { className: cn(itemSlots.description, "truncate"), children: _jsx(Bold, { text: r.meta ?? r.email ?? "", query: s.query, locale: locale }) })) : null] })] }));
124
+ };
125
+ const resolveSelection = React.useCallback(async (r) => {
126
+ if (r.kind !== "team" || !getTeamMembers)
127
+ return r;
128
+ const members = await getTeamMembers({ id: r.id, name: r.name, memberCount: r.memberCount ?? 0 }, new AbortController().signal);
129
+ return members.filter((m) => !m.disabled);
130
+ }, [getTeamMembers]);
131
+ const shared = {
132
+ ...rest,
133
+ source: combined,
134
+ renderItem,
135
+ actions,
136
+ selectedRecords: selectedRecords,
137
+ getDisabled: (r) => Boolean(r.disabled),
138
+ getGroup: (r) => (teamSource ? (r.kind === "team" ? t("teams") : t("people")) : undefined),
139
+ resolveSelection,
140
+ recent: false,
141
+ searchPlaceholder: t("search"),
142
+ placeholder: rest.placeholder ?? (props.multiple ? t("add") : t("unassigned")),
143
+ mode: trigger === "inline" ? "inline" : "popover",
144
+ };
145
+ const renderTrigger = trigger === "avatars"
146
+ ? ({ selected, disabled }) => {
147
+ const names = selected.map((u) => me(u));
148
+ const shown = names.slice(0, 2).join(", ");
149
+ const list = names.length > 2 ? t("andMore", { names: shown, count: names.length - 2 }) : shown || t("unassigned");
150
+ return (_jsx(AvatarsTrigger, { "aria-label": rest["aria-label"] ? `${rest["aria-label"]}: ${list}` : t("assignees", { label: roleLabel ?? t("assigneesLabel"), names: list }), disabled: disabled, selected: selected, max: maxAvatars, size: props.size }));
151
+ }
152
+ : undefined;
153
+ if (props.multiple) {
154
+ return _jsx(RecordPicker, { ref: ref, ...shared, source: combined, multiple: true, renderTrigger: renderTrigger });
155
+ }
156
+ return _jsx(RecordPicker, { ref: ref, ...shared, source: combined, multiple: false, renderTrigger: renderTrigger });
157
+ });
158
+ /** Avatar stack + "+" — the compact trigger for table cells and record headers. */
159
+ const AvatarsTrigger = React.forwardRef(function AvatarsTrigger({ selected, max, size = "md", className, "aria-label": label, ...props }, ref) {
160
+ const avatarSize = size === "sm" ? "xs" : size === "lg" ? "md" : "sm";
161
+ return (_jsxs("button", { ref: ref, type: "button", "data-slot": "user-picker-avatars", className: cn("group/avatars inline-flex items-center gap-1 rounded-full p-0.5 pe-1 outline-none transition-colors hover:bg-hover focus-ring disabled:pointer-events-none disabled:opacity-50", className), ...props, children: [label ? _jsx("span", { className: "sr-only", children: label }) : null, selected.length ? (_jsx(AvatarGroup, { max: max, size: avatarSize, "aria-hidden": true, children: selected.map((u) => (_jsx(Avatar, { name: u.name, src: u.avatarUrl }, u.id))) })) : null, _jsx("span", { "aria-hidden": true, className: cn("inline-flex items-center justify-center rounded-full border border-dashed border-field-border-hover text-fg-subtle transition-colors group-hover/avatars:border-fg-subtle group-hover/avatars:text-fg", avatarSize === "xs" ? "size-5 [&_svg]:size-3" : avatarSize === "sm" ? "size-6 [&_svg]:size-3.5" : "size-8 [&_svg]:size-4"), children: _jsx(Plus, {}) })] }));
162
+ });
@@ -0,0 +1,191 @@
1
+ import * as React from "react";
2
+ import { type ValueFormat } from "../lib/value-format.js";
3
+ export declare const versionHistoryLabels: {
4
+ versions: string;
5
+ current: string;
6
+ autosave: string;
7
+ published: string;
8
+ manual: string;
9
+ system: string;
10
+ before: string;
11
+ after: string;
12
+ comparing: string;
13
+ split: string;
14
+ unified: string;
15
+ viewMode: string;
16
+ onlyChanges: string;
17
+ identical: string;
18
+ identicalHint: string;
19
+ loading: string;
20
+ loadError: string;
21
+ retry: string;
22
+ added: string;
23
+ removed: string;
24
+ changed: string;
25
+ unchanged: string;
26
+ addedLine: string;
27
+ removedLine: string;
28
+ stats: string;
29
+ prevChange: string;
30
+ nextChange: string;
31
+ changeOf: string;
32
+ unchangedLines: string;
33
+ expandAll: string;
34
+ diffRegion: string;
35
+ field: string;
36
+ restore: string;
37
+ restoreTitle: string;
38
+ restoreBody: string;
39
+ restoreConfirm: string;
40
+ restored: string;
41
+ restoreError: string;
42
+ yes: string;
43
+ no: string;
44
+ empty: string;
45
+ selectHint: string;
46
+ };
47
+ export type VersionHistoryLabels = Partial<typeof versionHistoryLabels>;
48
+ export type DiffGranularity = "line" | "word" | "char";
49
+ type SegKind = "same" | "add" | "del";
50
+ interface Seg {
51
+ text: string;
52
+ kind: SegKind;
53
+ }
54
+ export interface DiffLine {
55
+ type: SegKind;
56
+ text: string;
57
+ oldNo?: number;
58
+ newNo?: number;
59
+ /** Word / char highlights inside a changed line. */
60
+ segments?: Seg[];
61
+ }
62
+ /** Line diff with optional word / char highlights inside changed lines (jsdiff). */
63
+ export declare function diffText(before: string, after: string, granularity?: DiffGranularity): DiffLine[];
64
+ export interface DiffViewProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
65
+ before: string;
66
+ after: string;
67
+ /** Highlight changes inside lines by word (default), char, or not at all (`"line"`). */
68
+ granularity?: DiffGranularity;
69
+ /** `unified` (default) or `split` (before at the start side, after at the end). */
70
+ mode?: "split" | "unified";
71
+ /** Unchanged lines kept around each change; longer runs collapse behind "Show N unchanged lines". Default 3. `Infinity` shows all. */
72
+ context?: number;
73
+ /** Column / region names ("v12 · Nov 8", "Current"). */
74
+ beforeLabel?: string;
75
+ afterLabel?: string;
76
+ /** Line number gutters. Default `true`. */
77
+ lineNumbers?: boolean;
78
+ /** Previous / next change buttons and the +/− summary. Default `true`. */
79
+ toolbar?: boolean;
80
+ /** Extra toolbar content (mode switch, restore). */
81
+ actions?: React.ReactNode;
82
+ /** Wrap long lines (prose) instead of scrolling (code). Default `true`. */
83
+ wrap?: boolean;
84
+ labels?: VersionHistoryLabels;
85
+ }
86
+ /**
87
+ * Text diff of two versions — line diff with word-level highlights (jsdiff), unified or
88
+ * side by side, with collapsed unchanged runs and change navigation (buttons and `n` / `p`).
89
+ * Colour is never the only signal: `+` / `−` gutters, `<ins>` / `<del>` and screen-reader text.
90
+ *
91
+ * ```tsx
92
+ * <DiffView before={v11.body} after={v12.body} mode="split" beforeLabel="v11" afterLabel="v12" />
93
+ * ```
94
+ */
95
+ export declare const DiffView: React.ForwardRefExoticComponent<DiffViewProps & React.RefAttributes<HTMLDivElement>>;
96
+ export interface FieldDiffField {
97
+ key: string;
98
+ label: string;
99
+ /** Number / date / money formatting of the value. */
100
+ format?: ValueFormat;
101
+ /** `"text-long"` renders a word diff (descriptions, notes). */
102
+ type?: "text" | "text-long" | "boolean" | "list" | "json";
103
+ /** Custom value renderer. */
104
+ render?: (value: unknown) => React.ReactNode;
105
+ }
106
+ export type FieldChange = "added" | "removed" | "changed" | "same";
107
+ export interface RecordDiffEntry {
108
+ key: string;
109
+ change: FieldChange;
110
+ before?: unknown;
111
+ after?: unknown;
112
+ }
113
+ /** Field-by-field comparison of two records. Pass `fields` to pick and order keys; default: every key of both. */
114
+ export declare function diffRecords(a: Record<string, unknown> | null | undefined, b: Record<string, unknown> | null | undefined, fields?: Array<{
115
+ key: string;
116
+ }> | string[]): RecordDiffEntry[];
117
+ export interface FieldDiffProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
118
+ before: Record<string, unknown> | null | undefined;
119
+ after: Record<string, unknown> | null | undefined;
120
+ /** Fields to compare, in order. Default: every key, humanized labels. */
121
+ fields?: FieldDiffField[];
122
+ /** Hide unchanged fields. Default `true`. */
123
+ onlyChanges?: boolean;
124
+ beforeLabel?: string;
125
+ afterLabel?: string;
126
+ labels?: VersionHistoryLabels;
127
+ }
128
+ /**
129
+ * Record changes field by field — price, status, owner, permissions. Before is struck through,
130
+ * after is marked; long text fields get a word diff.
131
+ *
132
+ * ```tsx
133
+ * <FieldDiff before={v1} after={v2} fields={[
134
+ * { key: "amount", label: "Amount", format: "currency" },
135
+ * { key: "stage", label: "Stage" },
136
+ * ]} />
137
+ * ```
138
+ */
139
+ export declare const FieldDiff: React.ForwardRefExoticComponent<FieldDiffProps & React.RefAttributes<HTMLDivElement>>;
140
+ export interface Version {
141
+ id: string;
142
+ /** ISO instant. */
143
+ createdAt: string;
144
+ author?: {
145
+ name: string;
146
+ avatar?: string;
147
+ };
148
+ /** "v12 · Pricing update". Default: the date. */
149
+ label?: string;
150
+ /** Default `"manual"`. */
151
+ kind?: "manual" | "autosave" | "published" | "system";
152
+ current?: boolean;
153
+ /** Short note ("Changed hero copy and pricing"). */
154
+ summary?: string;
155
+ }
156
+ export type VersionContent = string | Record<string, unknown>;
157
+ export interface VersionHistoryProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
158
+ versions: Version[];
159
+ /** Pair to compare (any order; older is "before"). Default: the newest non-current version vs current. */
160
+ compare?: [string, string];
161
+ defaultCompare?: [string, string];
162
+ onCompareChange?: (pair: [string, string]) => void;
163
+ /** Content of a version: text (DiffView) or a record (FieldDiff). Cached per id. */
164
+ loadVersion: (id: string) => VersionContent | Promise<VersionContent>;
165
+ /** Record versions: which fields to compare. */
166
+ fields?: FieldDiffField[];
167
+ /** Shows "Restore this version" (with confirmation) for the older selected version. */
168
+ onRestore?: (id: string) => void | Promise<void>;
169
+ /** `page` (list beside the diff) or `panel` (stacked, for a Sheet). Default `"page"`. */
170
+ layout?: "panel" | "page";
171
+ /** Text diff layout. Uncontrolled; default `"unified"` (`"split"` on `page` layout). */
172
+ defaultMode?: "split" | "unified";
173
+ granularity?: DiffGranularity;
174
+ /** Collapsed context lines (DiffView). Default 3. */
175
+ context?: number;
176
+ labels?: VersionHistoryLabels;
177
+ }
178
+ /**
179
+ * Revisions of a record: pick two (listbox with two-selection), see what changed — text with
180
+ * word highlights or record fields — and restore an older one after confirmation.
181
+ *
182
+ * ```tsx
183
+ * <VersionHistory
184
+ * versions={revisions}
185
+ * loadVersion={(id) => api.revision(id).then((r) => r.body)}
186
+ * onRestore={(id) => api.restore(postId, id)}
187
+ * />
188
+ * ```
189
+ */
190
+ export declare const VersionHistory: React.ForwardRefExoticComponent<VersionHistoryProps & React.RefAttributes<HTMLDivElement>>;
191
+ export {};