@vamos-ui/react 0.0.0-stage → 0.3.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 (704) 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 +101 -0
  58. package/dist/blocks/site/_kit-1.js +137 -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 +113 -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 +52 -0
  85. package/dist/blocks/site/feature-grid.d.ts +46 -0
  86. package/dist/blocks/site/feature-grid.js +50 -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 +48 -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 +73 -0
  97. package/dist/blocks/site/logo-strip.d.ts +44 -0
  98. package/dist/blocks/site/logo-strip.js +27 -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 +56 -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 +83 -0
  115. package/dist/blocks/site/process.d.ts +36 -0
  116. package/dist/blocks/site/process.js +42 -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 +108 -0
  160. package/dist/blocks/site/site-shell.js +254 -0
  161. package/dist/blocks/site/stats-band.d.ts +42 -0
  162. package/dist/blocks/site/stats-band.js +45 -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 +66 -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 +12 -0
  180. package/dist/business/index.js +22 -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/business/signer-status.d.ts +53 -0
  194. package/dist/business/signer-status.js +76 -0
  195. package/dist/charts/area-chart.d.ts +35 -0
  196. package/dist/charts/area-chart.js +33 -0
  197. package/dist/charts/bar-chart.d.ts +27 -0
  198. package/dist/charts/bar-chart.js +46 -0
  199. package/dist/charts/bar-list.d.ts +47 -0
  200. package/dist/charts/bar-list.js +60 -0
  201. package/dist/charts/chart-shell.d.ts +173 -0
  202. package/dist/charts/chart-shell.js +205 -0
  203. package/dist/charts/chart.d.ts +73 -0
  204. package/dist/charts/chart.js +106 -0
  205. package/dist/charts/combo-chart.d.ts +29 -0
  206. package/dist/charts/combo-chart.js +47 -0
  207. package/dist/charts/donut-chart.d.ts +33 -0
  208. package/dist/charts/donut-chart.js +113 -0
  209. package/dist/charts/funnel.d.ts +51 -0
  210. package/dist/charts/funnel.js +69 -0
  211. package/dist/charts/gauge.d.ts +62 -0
  212. package/dist/charts/gauge.js +104 -0
  213. package/dist/charts/heatmap.d.ts +81 -0
  214. package/dist/charts/heatmap.js +338 -0
  215. package/dist/charts/index.d.ts +12 -0
  216. package/dist/charts/index.js +14 -0
  217. package/dist/charts/line-chart.d.ts +21 -0
  218. package/dist/charts/line-chart.js +36 -0
  219. package/dist/charts/test-utils.d.ts +2 -0
  220. package/dist/charts/test-utils.js +38 -0
  221. package/dist/charts/utils.d.ts +130 -0
  222. package/dist/charts/utils.js +262 -0
  223. package/dist/components/_qr-core.d.ts +26 -0
  224. package/dist/components/_qr-core.js +376 -0
  225. package/dist/components/accordion.d.ts +47 -0
  226. package/dist/components/accordion.js +70 -0
  227. package/dist/components/activity-timeline.d.ts +149 -0
  228. package/dist/components/activity-timeline.js +122 -0
  229. package/dist/components/address-field.d.ts +116 -0
  230. package/dist/components/address-field.js +219 -0
  231. package/dist/components/alert-dialog.d.ts +99 -0
  232. package/dist/components/alert-dialog.js +192 -0
  233. package/dist/components/alert.d.ts +42 -0
  234. package/dist/components/alert.js +82 -0
  235. package/dist/components/app-shell.d.ts +159 -0
  236. package/dist/components/app-shell.js +289 -0
  237. package/dist/components/attachment-list.d.ts +96 -0
  238. package/dist/components/attachment-list.js +196 -0
  239. package/dist/components/audit-log.d.ts +150 -0
  240. package/dist/components/audit-log.js +205 -0
  241. package/dist/components/avatar.d.ts +87 -0
  242. package/dist/components/avatar.js +126 -0
  243. package/dist/components/backup-codes.d.ts +42 -0
  244. package/dist/components/backup-codes.js +67 -0
  245. package/dist/components/badge.d.ts +41 -0
  246. package/dist/components/badge.js +68 -0
  247. package/dist/components/breadcrumb.d.ts +78 -0
  248. package/dist/components/breadcrumb.js +106 -0
  249. package/dist/components/button-group.d.ts +52 -0
  250. package/dist/components/button-group.js +77 -0
  251. package/dist/components/button.d.ts +58 -0
  252. package/dist/components/button.js +107 -0
  253. package/dist/components/calendar.d.ts +240 -0
  254. package/dist/components/calendar.js +483 -0
  255. package/dist/components/card.d.ts +66 -0
  256. package/dist/components/card.js +76 -0
  257. package/dist/components/carousel.d.ts +170 -0
  258. package/dist/components/carousel.js +348 -0
  259. package/dist/components/checkbox.d.ts +78 -0
  260. package/dist/components/checkbox.js +138 -0
  261. package/dist/components/color-picker.d.ts +112 -0
  262. package/dist/components/color-picker.js +235 -0
  263. package/dist/components/combobox.d.ts +136 -0
  264. package/dist/components/combobox.js +294 -0
  265. package/dist/components/command.d.ts +281 -0
  266. package/dist/components/command.js +498 -0
  267. package/dist/components/comment-thread.d.ts +252 -0
  268. package/dist/components/comment-thread.js +449 -0
  269. package/dist/components/context-menu.d.ts +77 -0
  270. package/dist/components/context-menu.js +82 -0
  271. package/dist/components/currency-input.d.ts +43 -0
  272. package/dist/components/currency-input.js +85 -0
  273. package/dist/components/date-picker.d.ts +141 -0
  274. package/dist/components/date-picker.js +241 -0
  275. package/dist/components/date-range-picker.d.ts +91 -0
  276. package/dist/components/date-range-picker.js +251 -0
  277. package/dist/components/description-list.d.ts +92 -0
  278. package/dist/components/description-list.js +42 -0
  279. package/dist/components/dialog.d.ts +139 -0
  280. package/dist/components/dialog.js +185 -0
  281. package/dist/components/dropdown-menu.d.ts +100 -0
  282. package/dist/components/dropdown-menu.js +102 -0
  283. package/dist/components/editor-layout.d.ts +166 -0
  284. package/dist/components/editor-layout.js +237 -0
  285. package/dist/components/empty-state.d.ts +49 -0
  286. package/dist/components/empty-state.js +68 -0
  287. package/dist/components/entity-card.d.ts +83 -0
  288. package/dist/components/entity-card.js +92 -0
  289. package/dist/components/file-upload.d.ts +256 -0
  290. package/dist/components/file-upload.js +490 -0
  291. package/dist/components/formatted-input.d.ts +177 -0
  292. package/dist/components/formatted-input.js +399 -0
  293. package/dist/components/hierarchy-chart.d.ts +190 -0
  294. package/dist/components/hierarchy-chart.js +890 -0
  295. package/dist/components/hover-card.d.ts +21 -0
  296. package/dist/components/hover-card.js +32 -0
  297. package/dist/components/iban-input.d.ts +38 -0
  298. package/dist/components/iban-input.js +112 -0
  299. package/dist/components/id-input.d.ts +65 -0
  300. package/dist/components/id-input.js +130 -0
  301. package/dist/components/image.d.ts +130 -0
  302. package/dist/components/image.js +168 -0
  303. package/dist/components/input-otp.d.ts +62 -0
  304. package/dist/components/input-otp.js +73 -0
  305. package/dist/components/input.d.ts +141 -0
  306. package/dist/components/input.js +187 -0
  307. package/dist/components/item.d.ts +96 -0
  308. package/dist/components/item.js +113 -0
  309. package/dist/components/kbd.d.ts +64 -0
  310. package/dist/components/kbd.js +119 -0
  311. package/dist/components/list-layout.d.ts +144 -0
  312. package/dist/components/list-layout.js +210 -0
  313. package/dist/components/native-select.d.ts +33 -0
  314. package/dist/components/native-select.js +48 -0
  315. package/dist/components/navigation-menu.d.ts +127 -0
  316. package/dist/components/navigation-menu.js +129 -0
  317. package/dist/components/notification-center.d.ts +164 -0
  318. package/dist/components/notification-center.js +399 -0
  319. package/dist/components/page-header.d.ts +60 -0
  320. package/dist/components/page-header.js +60 -0
  321. package/dist/components/pagination.d.ts +121 -0
  322. package/dist/components/pagination.js +174 -0
  323. package/dist/components/phone-input.d.ts +49 -0
  324. package/dist/components/phone-input.js +266 -0
  325. package/dist/components/pin-map.d.ts +58 -0
  326. package/dist/components/pin-map.js +167 -0
  327. package/dist/components/popover.d.ts +38 -0
  328. package/dist/components/popover.js +69 -0
  329. package/dist/components/progress.d.ts +79 -0
  330. package/dist/components/progress.js +97 -0
  331. package/dist/components/qr-code.d.ts +36 -0
  332. package/dist/components/qr-code.js +27 -0
  333. package/dist/components/radio-group.d.ts +43 -0
  334. package/dist/components/radio-group.js +81 -0
  335. package/dist/components/record-detail-layout.d.ts +167 -0
  336. package/dist/components/record-detail-layout.js +233 -0
  337. package/dist/components/record-picker.d.ts +199 -0
  338. package/dist/components/record-picker.js +650 -0
  339. package/dist/components/resizable.d.ts +50 -0
  340. package/dist/components/resizable.js +88 -0
  341. package/dist/components/scroll-area.d.ts +40 -0
  342. package/dist/components/scroll-area.js +56 -0
  343. package/dist/components/select.d.ts +126 -0
  344. package/dist/components/select.js +137 -0
  345. package/dist/components/separator.d.ts +31 -0
  346. package/dist/components/separator.js +41 -0
  347. package/dist/components/settings-layout.d.ts +134 -0
  348. package/dist/components/settings-layout.js +180 -0
  349. package/dist/components/sheet.d.ts +103 -0
  350. package/dist/components/sheet.js +165 -0
  351. package/dist/components/sidebar.d.ts +171 -0
  352. package/dist/components/sidebar.js +421 -0
  353. package/dist/components/signature-pad.d.ts +85 -0
  354. package/dist/components/signature-pad.js +283 -0
  355. package/dist/components/skeleton.d.ts +64 -0
  356. package/dist/components/skeleton.js +53 -0
  357. package/dist/components/sla-timer.d.ts +75 -0
  358. package/dist/components/sla-timer.js +142 -0
  359. package/dist/components/slider.d.ts +57 -0
  360. package/dist/components/slider.js +133 -0
  361. package/dist/components/slug-input.d.ts +69 -0
  362. package/dist/components/slug-input.js +201 -0
  363. package/dist/components/sparkline.d.ts +54 -0
  364. package/dist/components/sparkline.js +122 -0
  365. package/dist/components/spinner.d.ts +34 -0
  366. package/dist/components/spinner.js +34 -0
  367. package/dist/components/stat.d.ts +135 -0
  368. package/dist/components/stat.js +130 -0
  369. package/dist/components/status-picker.d.ts +107 -0
  370. package/dist/components/status-picker.js +175 -0
  371. package/dist/components/stepper.d.ts +86 -0
  372. package/dist/components/stepper.js +103 -0
  373. package/dist/components/switch.d.ts +34 -0
  374. package/dist/components/switch.js +70 -0
  375. package/dist/components/table.d.ts +101 -0
  376. package/dist/components/table.js +72 -0
  377. package/dist/components/tabs.d.ts +103 -0
  378. package/dist/components/tabs.js +173 -0
  379. package/dist/components/tag-input.d.ts +77 -0
  380. package/dist/components/tag-input.js +305 -0
  381. package/dist/components/task-list.d.ts +89 -0
  382. package/dist/components/task-list.js +238 -0
  383. package/dist/components/time-picker.d.ts +119 -0
  384. package/dist/components/time-picker.js +399 -0
  385. package/dist/components/toast.d.ts +87 -0
  386. package/dist/components/toast.js +142 -0
  387. package/dist/components/toggle.d.ts +77 -0
  388. package/dist/components/toggle.js +109 -0
  389. package/dist/components/tooltip.d.ts +69 -0
  390. package/dist/components/tooltip.js +105 -0
  391. package/dist/components/top-bar.d.ts +87 -0
  392. package/dist/components/top-bar.js +99 -0
  393. package/dist/components/tour.d.ts +60 -0
  394. package/dist/components/tour.js +139 -0
  395. package/dist/components/tree-select.d.ts +89 -0
  396. package/dist/components/tree-select.js +243 -0
  397. package/dist/components/tree-view.d.ts +109 -0
  398. package/dist/components/tree-view.js +170 -0
  399. package/dist/components/typography.d.ts +107 -0
  400. package/dist/components/typography.js +128 -0
  401. package/dist/components/user-picker.d.ts +89 -0
  402. package/dist/components/user-picker.js +162 -0
  403. package/dist/components/version-history.d.ts +191 -0
  404. package/dist/components/version-history.js +431 -0
  405. package/dist/data-table/csv.d.ts +27 -0
  406. package/dist/data-table/csv.js +68 -0
  407. package/dist/data-table/data-table.d.ts +423 -0
  408. package/dist/data-table/data-table.js +1259 -0
  409. package/dist/data-table/filter-bar.d.ts +146 -0
  410. package/dist/data-table/filter-bar.js +569 -0
  411. package/dist/data-table/filter-fns.d.ts +65 -0
  412. package/dist/data-table/filter-fns.js +382 -0
  413. package/dist/data-table/index.d.ts +8 -0
  414. package/dist/data-table/index.js +9 -0
  415. package/dist/data-table/saved-views.d.ts +100 -0
  416. package/dist/data-table/saved-views.js +251 -0
  417. package/dist/data-table/types.d.ts +168 -0
  418. package/dist/data-table/types.js +87 -0
  419. package/dist/data-table/url-state.d.ts +94 -0
  420. package/dist/data-table/url-state.js +303 -0
  421. package/dist/data-table/view-state.d.ts +16 -0
  422. package/dist/data-table/view-state.js +81 -0
  423. package/dist/editor/_test-setup.d.ts +1 -0
  424. package/dist/editor/_test-setup.js +33 -0
  425. package/dist/editor/block-editor.d.ts +137 -0
  426. package/dist/editor/block-editor.js +280 -0
  427. package/dist/editor/commands.d.ts +31 -0
  428. package/dist/editor/commands.js +150 -0
  429. package/dist/editor/context.d.ts +108 -0
  430. package/dist/editor/context.js +30 -0
  431. package/dist/editor/convert.d.ts +66 -0
  432. package/dist/editor/convert.js +567 -0
  433. package/dist/editor/drag-handle.d.ts +10 -0
  434. package/dist/editor/drag-handle.js +69 -0
  435. package/dist/editor/extensions.d.ts +34 -0
  436. package/dist/editor/extensions.js +239 -0
  437. package/dist/editor/index.d.ts +14 -0
  438. package/dist/editor/index.js +17 -0
  439. package/dist/editor/inserter.d.ts +12 -0
  440. package/dist/editor/inserter.js +88 -0
  441. package/dist/editor/inspector.d.ts +17 -0
  442. package/dist/editor/inspector.js +65 -0
  443. package/dist/editor/items.d.ts +62 -0
  444. package/dist/editor/items.js +195 -0
  445. package/dist/editor/labels.d.ts +119 -0
  446. package/dist/editor/labels.js +130 -0
  447. package/dist/editor/markdown.d.ts +14 -0
  448. package/dist/editor/markdown.js +209 -0
  449. package/dist/editor/menus.d.ts +20 -0
  450. package/dist/editor/menus.js +236 -0
  451. package/dist/editor/nodes.d.ts +14 -0
  452. package/dist/editor/nodes.js +201 -0
  453. package/dist/editor/outline.d.ts +11 -0
  454. package/dist/editor/outline.js +52 -0
  455. package/dist/editor/schema-form.d.ts +64 -0
  456. package/dist/editor/schema-form.js +290 -0
  457. package/dist/editor/slash-menu.d.ts +15 -0
  458. package/dist/editor/slash-menu.js +119 -0
  459. package/dist/fonts/catalog.d.ts +53 -0
  460. package/dist/fonts/catalog.js +121 -0
  461. package/dist/fonts/font-picker.d.ts +70 -0
  462. package/dist/fonts/font-picker.js +225 -0
  463. package/dist/fonts/index.d.ts +6 -0
  464. package/dist/fonts/index.js +7 -0
  465. package/dist/fonts/loader.d.ts +66 -0
  466. package/dist/fonts/loader.js +161 -0
  467. package/dist/fonts/pairing-picker.d.ts +31 -0
  468. package/dist/fonts/pairing-picker.js +81 -0
  469. package/dist/fonts/pairings.d.ts +84 -0
  470. package/dist/fonts/pairings.js +149 -0
  471. package/dist/fonts/provider.d.ts +34 -0
  472. package/dist/fonts/provider.js +51 -0
  473. package/dist/form/index.d.ts +1 -0
  474. package/dist/form/index.js +1 -0
  475. package/dist/format/core.d.ts +149 -0
  476. package/dist/format/core.js +357 -0
  477. package/dist/format/index.d.ts +4 -0
  478. package/dist/format/index.js +5 -0
  479. package/dist/format/use-format.d.ts +1 -0
  480. package/dist/format/use-format.js +3 -0
  481. package/dist/index.d.ts +91 -0
  482. package/dist/index.js +92 -0
  483. package/dist/lib/cn.d.ts +3 -0
  484. package/dist/lib/cn.js +16 -0
  485. package/dist/lib/color.d.ts +64 -0
  486. package/dist/lib/color.js +177 -0
  487. package/dist/lib/compose-refs.d.ts +24 -0
  488. package/dist/lib/compose-refs.js +45 -0
  489. package/dist/lib/data-islands.d.ts +194 -0
  490. package/dist/lib/data-islands.js +368 -0
  491. package/dist/lib/date.d.ts +129 -0
  492. package/dist/lib/date.js +386 -0
  493. package/dist/lib/field-context.d.ts +64 -0
  494. package/dist/lib/field-context.js +62 -0
  495. package/dist/lib/floating-arrow.d.ts +18 -0
  496. package/dist/lib/floating-arrow.js +15 -0
  497. package/dist/lib/islands.d.ts +38 -0
  498. package/dist/lib/islands.js +40 -0
  499. package/dist/lib/labels.d.ts +51 -0
  500. package/dist/lib/labels.js +56 -0
  501. package/dist/lib/layer.d.ts +36 -0
  502. package/dist/lib/layer.js +42 -0
  503. package/dist/lib/locale.d.ts +85 -0
  504. package/dist/lib/locale.js +105 -0
  505. package/dist/lib/menu.d.ts +58 -0
  506. package/dist/lib/menu.js +99 -0
  507. package/dist/lib/message-format.d.ts +20 -0
  508. package/dist/lib/message-format.js +116 -0
  509. package/dist/lib/nav.d.ts +132 -0
  510. package/dist/lib/nav.js +178 -0
  511. package/dist/lib/provider.d.ts +100 -0
  512. package/dist/lib/provider.js +105 -0
  513. package/dist/lib/public.d.ts +23 -0
  514. package/dist/lib/public.js +34 -0
  515. package/dist/lib/sr-name.d.ts +18 -0
  516. package/dist/lib/sr-name.js +17 -0
  517. package/dist/lib/text.d.ts +100 -0
  518. package/dist/lib/text.js +233 -0
  519. package/dist/lib/theme-scope.d.ts +58 -0
  520. package/dist/lib/theme-scope.js +59 -0
  521. package/dist/lib/use-async-list.d.ts +60 -0
  522. package/dist/lib/use-async-list.js +119 -0
  523. package/dist/lib/use-container-width.d.ts +19 -0
  524. package/dist/lib/use-container-width.js +39 -0
  525. package/dist/lib/use-controllable-state.d.ts +33 -0
  526. package/dist/lib/use-controllable-state.js +56 -0
  527. package/dist/lib/use-edge-fade.d.ts +13 -0
  528. package/dist/lib/use-edge-fade.js +43 -0
  529. package/dist/lib/use-formatted-input.d.ts +69 -0
  530. package/dist/lib/use-formatted-input.js +152 -0
  531. package/dist/lib/use-hotkeys.d.ts +80 -0
  532. package/dist/lib/use-hotkeys.js +221 -0
  533. package/dist/lib/use-hover-intent.d.ts +44 -0
  534. package/dist/lib/use-hover-intent.js +119 -0
  535. package/dist/lib/use-media-query.d.ts +21 -0
  536. package/dist/lib/use-media-query.js +28 -0
  537. package/dist/lib/use-reduced-motion.d.ts +8 -0
  538. package/dist/lib/use-reduced-motion.js +13 -0
  539. package/dist/lib/use-tree.d.ts +153 -0
  540. package/dist/lib/use-tree.js +534 -0
  541. package/dist/lib/value-format.d.ts +25 -0
  542. package/dist/lib/value-format.js +56 -0
  543. package/dist/lib/variants.d.ts +131 -0
  544. package/dist/lib/variants.js +109 -0
  545. package/dist/locale-data/core/date.d.ts +24 -0
  546. package/dist/locale-data/core/date.js +68 -0
  547. package/dist/locale-data/core/decimal.d.ts +19 -0
  548. package/dist/locale-data/core/decimal.js +79 -0
  549. package/dist/locale-data/core/holidays.d.ts +30 -0
  550. package/dist/locale-data/core/holidays.js +79 -0
  551. package/dist/locale-data/core/iban.d.ts +29 -0
  552. package/dist/locale-data/core/iban.js +74 -0
  553. package/dist/locale-data/core/index.d.ts +7 -0
  554. package/dist/locale-data/core/index.js +6 -0
  555. package/dist/locale-data/core/types.d.ts +173 -0
  556. package/dist/locale-data/core/types.js +6 -0
  557. package/dist/locale-data/core/week-info.d.ts +23 -0
  558. package/dist/locale-data/core/week-info.js +85 -0
  559. package/dist/locale-data/core/working-days.d.ts +27 -0
  560. package/dist/locale-data/core/working-days.js +133 -0
  561. package/dist/locale-data/index.d.ts +2 -0
  562. package/dist/locale-data/index.js +4 -0
  563. package/dist/locale-data/tr/address-tr.json +1 -0
  564. package/dist/locale-data/tr/address.d.ts +23 -0
  565. package/dist/locale-data/tr/address.js +52 -0
  566. package/dist/locale-data/tr/holidays.d.ts +31 -0
  567. package/dist/locale-data/tr/holidays.js +81 -0
  568. package/dist/locale-data/tr/iban.d.ts +21 -0
  569. package/dist/locale-data/tr/iban.js +45 -0
  570. package/dist/locale-data/tr/id.d.ts +36 -0
  571. package/dist/locale-data/tr/id.js +120 -0
  572. package/dist/locale-data/tr/index.d.ts +12 -0
  573. package/dist/locale-data/tr/index.js +33 -0
  574. package/dist/locale-data/tr/kdv.d.ts +91 -0
  575. package/dist/locale-data/tr/kdv.js +222 -0
  576. package/dist/locales/en.d.ts +2102 -0
  577. package/dist/locales/en.js +2088 -0
  578. package/dist/locales/tr.d.ts +2086 -0
  579. package/dist/locales/tr.js +2087 -0
  580. package/dist/media/focal-point.d.ts +42 -0
  581. package/dist/media/focal-point.js +96 -0
  582. package/dist/media/gallery-layout.d.ts +19 -0
  583. package/dist/media/gallery-layout.js +61 -0
  584. package/dist/media/gallery.d.ts +64 -0
  585. package/dist/media/gallery.js +140 -0
  586. package/dist/media/image-cropper.d.ts +86 -0
  587. package/dist/media/image-cropper.js +170 -0
  588. package/dist/media/image-field.d.ts +115 -0
  589. package/dist/media/image-field.js +212 -0
  590. package/dist/media/index.d.ts +19 -0
  591. package/dist/media/index.js +23 -0
  592. package/dist/media/lightbox.d.ts +82 -0
  593. package/dist/media/lightbox.js +171 -0
  594. package/dist/media/link-preview.d.ts +97 -0
  595. package/dist/media/link-preview.js +177 -0
  596. package/dist/media/media-library.d.ts +244 -0
  597. package/dist/media/media-library.js +776 -0
  598. package/dist/media/media-picker.d.ts +96 -0
  599. package/dist/media/media-picker.js +209 -0
  600. package/dist/media/media-provider.d.ts +23 -0
  601. package/dist/media/media-provider.js +44 -0
  602. package/dist/media/media-utils.d.ts +39 -0
  603. package/dist/media/media-utils.js +145 -0
  604. package/dist/media/memory-adapter.d.ts +22 -0
  605. package/dist/media/memory-adapter.js +162 -0
  606. package/dist/media/rest-adapter.d.ts +90 -0
  607. package/dist/media/rest-adapter.js +208 -0
  608. package/dist/media/serp.d.ts +62 -0
  609. package/dist/media/serp.js +108 -0
  610. package/dist/media/test-fixtures.d.ts +3 -0
  611. package/dist/media/test-fixtures.js +37 -0
  612. package/dist/media/types.d.ts +183 -0
  613. package/dist/media/types.js +3 -0
  614. package/dist/media/use-pan-zoom.d.ts +51 -0
  615. package/dist/media/use-pan-zoom.js +156 -0
  616. package/dist/media/use-upload-queue.d.ts +64 -0
  617. package/dist/media/use-upload-queue.js +115 -0
  618. package/dist/media/video-player.d.ts +135 -0
  619. package/dist/media/video-player.js +319 -0
  620. package/dist/motion/core.d.ts +32 -0
  621. package/dist/motion/core.js +77 -0
  622. package/dist/motion/count-up.d.ts +29 -0
  623. package/dist/motion/count-up.js +92 -0
  624. package/dist/motion/index.d.ts +11 -0
  625. package/dist/motion/index.js +13 -0
  626. package/dist/motion/motion-scope.d.ts +17 -0
  627. package/dist/motion/motion-scope.js +16 -0
  628. package/dist/motion/page-transition.d.ts +33 -0
  629. package/dist/motion/page-transition.js +61 -0
  630. package/dist/motion/parallax.d.ts +37 -0
  631. package/dist/motion/parallax.js +90 -0
  632. package/dist/motion/pointer.d.ts +38 -0
  633. package/dist/motion/pointer.js +117 -0
  634. package/dist/motion/reveal.d.ts +72 -0
  635. package/dist/motion/reveal.js +133 -0
  636. package/dist/motion/scroll-shrink.d.ts +18 -0
  637. package/dist/motion/scroll-shrink.js +47 -0
  638. package/dist/motion/skeleton-swap.d.ts +17 -0
  639. package/dist/motion/skeleton-swap.js +43 -0
  640. package/dist/motion/text-reveal.d.ts +30 -0
  641. package/dist/motion/text-reveal.js +29 -0
  642. package/dist/motion/ticker.d.ts +35 -0
  643. package/dist/motion/ticker.js +16 -0
  644. package/dist/next/index.d.ts +42 -0
  645. package/dist/next/index.js +36 -0
  646. package/dist/render/block-renderer.d.ts +56 -0
  647. package/dist/render/block-renderer.js +137 -0
  648. package/dist/render/index.d.ts +6 -0
  649. package/dist/render/index.js +7 -0
  650. package/dist/render/prepare.d.ts +61 -0
  651. package/dist/render/prepare.js +119 -0
  652. package/dist/scheduler/core/duration.d.ts +83 -0
  653. package/dist/scheduler/core/duration.js +174 -0
  654. package/dist/scheduler/core/gantt.d.ts +63 -0
  655. package/dist/scheduler/core/gantt.js +226 -0
  656. package/dist/scheduler/core/index.d.ts +6 -0
  657. package/dist/scheduler/core/index.js +7 -0
  658. package/dist/scheduler/core/layout.d.ts +97 -0
  659. package/dist/scheduler/core/layout.js +249 -0
  660. package/dist/scheduler/core/time-scale.d.ts +89 -0
  661. package/dist/scheduler/core/time-scale.js +173 -0
  662. package/dist/scheduler/gantt.d.ts +125 -0
  663. package/dist/scheduler/gantt.js +532 -0
  664. package/dist/scheduler/index.d.ts +6 -0
  665. package/dist/scheduler/index.js +7 -0
  666. package/dist/scheduler/resource-calendar.d.ts +218 -0
  667. package/dist/scheduler/resource-calendar.js +661 -0
  668. package/dist/scheduler/scheduler.d.ts +168 -0
  669. package/dist/scheduler/scheduler.js +768 -0
  670. package/dist/scheduler/shared.d.ts +63 -0
  671. package/dist/scheduler/shared.js +145 -0
  672. package/dist/scheduler/time-tracker.d.ts +138 -0
  673. package/dist/scheduler/time-tracker.js +403 -0
  674. package/dist/sortable/core.d.ts +67 -0
  675. package/dist/sortable/core.js +167 -0
  676. package/dist/sortable/index.d.ts +8 -0
  677. package/dist/sortable/index.js +10 -0
  678. package/dist/sortable/kanban-core.d.ts +70 -0
  679. package/dist/sortable/kanban-core.js +67 -0
  680. package/dist/sortable/kanban.d.ts +147 -0
  681. package/dist/sortable/kanban.js +472 -0
  682. package/dist/sortable/sortable-list.d.ts +71 -0
  683. package/dist/sortable/sortable-list.js +76 -0
  684. package/dist/sortable/sortable-tree.d.ts +105 -0
  685. package/dist/sortable/sortable-tree.js +462 -0
  686. package/dist/sortable/sortable.d.ts +188 -0
  687. package/dist/sortable/sortable.js +485 -0
  688. package/dist/sortable/use-pointer-drag.d.ts +75 -0
  689. package/dist/sortable/use-pointer-drag.js +173 -0
  690. package/dist/sortable/use-time-scale.d.ts +11 -0
  691. package/dist/sortable/use-time-scale.js +19 -0
  692. package/dist/styles/base.css +51 -0
  693. package/dist/styles/blocks.css +949 -0
  694. package/dist/styles/calendar.css +642 -0
  695. package/dist/styles/charts.css +264 -0
  696. package/dist/styles/data.css +474 -0
  697. package/dist/styles/editors.css +1022 -0
  698. package/dist/styles/forms.css +406 -0
  699. package/dist/styles/media.css +515 -0
  700. package/dist/styles/motion.css +389 -0
  701. package/dist/styles/navigation.css +293 -0
  702. package/dist/styles/overlays.css +244 -0
  703. package/dist/styles.css +743 -0
  704. package/package.json +160 -4
@@ -0,0 +1,142 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Toaster as Sonner, toast as sonner } from "sonner";
5
+ import { CircleAlert, CircleCheck, Info, TriangleAlert, X } from "lucide-react";
6
+ import { cn } from "../lib/cn.js";
7
+ import { useLabels } from "../lib/labels.js";
8
+ import { useLocale } from "../lib/locale.js";
9
+ import { useMediaQuery } from "../lib/use-media-query.js";
10
+ import { buttonVariants } from "./button.js";
11
+ import { Spinner } from "./spinner.js";
12
+ const DURATION = { neutral: 4000, success: 4000, info: 4000, warning: 6000, danger: 8000, loading: Infinity };
13
+ const ENGINE = {
14
+ neutral: sonner,
15
+ success: sonner.success,
16
+ info: sonner.info,
17
+ warning: sonner.warning,
18
+ danger: sonner.error,
19
+ loading: sonner.loading,
20
+ };
21
+ let seq = 0;
22
+ function show(tone, title, o = {}) {
23
+ const assertive = tone === "danger" || o.important;
24
+ const duration = o.duration ?? (o.action && tone !== "loading" ? Math.max(6000, DURATION[tone]) : DURATION[tone]);
25
+ // Own string ids, so the id we return is exactly the one that updates the toast later.
26
+ const id = o.id ?? `toast-${++seq}`;
27
+ ENGINE[tone](assertive ? _jsx("span", { role: "alert", children: title }) : title, {
28
+ id,
29
+ description: o.description,
30
+ duration,
31
+ closeButton: o.closeButton,
32
+ action: o.action ? { label: o.action.label, onClick: () => o.action.onClick() } : undefined,
33
+ cancel: o.cancel ? { label: o.cancel.label, onClick: () => o.cancel.onClick?.() } : undefined,
34
+ onDismiss: o.onDismiss ? () => o.onDismiss() : undefined,
35
+ onAutoClose: o.onAutoClose ? () => o.onAutoClose() : undefined,
36
+ });
37
+ return id;
38
+ }
39
+ /**
40
+ * Report the result of an action without interrupting. Import it from the kit only — never
41
+ * from the engine underneath — so it can be swapped later.
42
+ *
43
+ * ```ts
44
+ * toast.success("Post published", { action: { label: "View", onClick: open } });
45
+ * toast("Contact moved to trash", { action: { label: "Undo", onClick: restore } });
46
+ * const id = toast.loading("Preparing export…");
47
+ * toast.success("Export ready", { id });
48
+ * ```
49
+ *
50
+ * Needs one `<Toaster />` in the tree (App shell includes it).
51
+ */
52
+ export const toast = Object.assign((title, o) => show("neutral", title, o), {
53
+ success: (title, o) => show("success", title, o),
54
+ warning: (title, o) => show("warning", title, o),
55
+ danger: (title, o) => show("danger", title, o),
56
+ info: (title, o) => show("info", title, o),
57
+ loading: (title, o) => show("loading", title, o),
58
+ promise(promise, m) {
59
+ const p = typeof promise === "function" ? promise() : promise;
60
+ const id = show("loading", m.loading, { id: m.id, description: m.description });
61
+ p.then((data) => show("success", typeof m.success === "function" ? m.success(data) : m.success, { id }), (err) => show("danger", typeof m.error === "function" ? m.error(err) : m.error, { id }));
62
+ return p;
63
+ },
64
+ dismiss(id) {
65
+ sonner.dismiss(id);
66
+ },
67
+ });
68
+ const toasterLabels = { region: "Notifications", close: "Close" };
69
+ // Only the first mounted <Toaster/> renders, so a second one (a page plus the app shell) never doubles toasts.
70
+ const mounted = [];
71
+ const listeners = new Set();
72
+ const emit = () => listeners.forEach((l) => l());
73
+ const subscribe = (l) => {
74
+ listeners.add(l);
75
+ return () => listeners.delete(l);
76
+ };
77
+ function useIsPrimary() {
78
+ const [id] = React.useState(() => Symbol("toaster"));
79
+ React.useEffect(() => {
80
+ mounted.push(id);
81
+ emit();
82
+ return () => {
83
+ mounted.splice(mounted.indexOf(id), 1);
84
+ emit();
85
+ };
86
+ }, [id]);
87
+ return React.useSyncExternalStore(subscribe, () => mounted[0] === id, () => false);
88
+ }
89
+ function physical(pos, dir) {
90
+ const [y, x] = pos.split("-");
91
+ const side = x === "center" ? "center" : (x === "end") === (dir === "ltr") ? "right" : "left";
92
+ return `${y}-${side}`;
93
+ }
94
+ const toneClass = {
95
+ default: "tone-neutral",
96
+ success: "tone-success",
97
+ info: "tone-info",
98
+ warning: "tone-warning",
99
+ error: "tone-danger",
100
+ loading: "tone-accent",
101
+ };
102
+ /**
103
+ * Where toasts appear. Mount once near the app root (App shell already does). Styled with
104
+ * tokens: popover surface, a thin edge in the status colour, the front toast alone blurs.
105
+ */
106
+ export function Toaster({ position = "bottom-end", mobilePosition = "top-center", max = 3, expand, closeButton, hotkey, offset, className, labels }) {
107
+ const primary = useIsPrimary();
108
+ const { dir } = useLocale();
109
+ const t = useLabels("toast", toasterLabels, labels);
110
+ const mobile = useMediaQuery("(max-width: 639px)");
111
+ if (!primary)
112
+ return null;
113
+ return (_jsx(Sonner, { position: physical(mobile ? mobilePosition : position, dir), dir: dir, visibleToasts: max, expand: expand, closeButton: closeButton, hotkey: hotkey, offset: offset, gap: 10, containerAriaLabel: t("region"), className: cn("vui-toaster", className), icons: {
114
+ success: _jsx(CircleCheck, { "aria-hidden": true }),
115
+ info: _jsx(Info, { "aria-hidden": true }),
116
+ warning: _jsx(TriangleAlert, { "aria-hidden": true }),
117
+ error: _jsx(CircleAlert, { "aria-hidden": true }),
118
+ loading: _jsx(Spinner, { size: "sm" }),
119
+ close: _jsx(X, { "aria-hidden": true, className: "size-3.5" }),
120
+ }, toastOptions: {
121
+ unstyled: true,
122
+ closeButtonAriaLabel: t("close"),
123
+ classNames: {
124
+ toast: cn("vui-toast surface-popover relative flex w-full items-start gap-3 overflow-hidden rounded-ui py-3 ps-4 pe-3 text-sm text-fg [&:has([data-close-button])]:pe-9",
125
+ // thin status edge (never the accent colour)
126
+ "before:absolute before:inset-y-2.5 before:start-0 before:w-[3px] before:rounded-e-full before:bg-(--tone)"),
127
+ default: toneClass.default,
128
+ success: toneClass.success,
129
+ info: toneClass.info,
130
+ warning: toneClass.warning,
131
+ error: toneClass.error,
132
+ loading: cn(toneClass.loading, "before:bg-transparent"),
133
+ icon: "relative mt-px flex size-[1.15rem] flex-none items-center justify-center text-(--tone)",
134
+ content: "flex min-w-0 flex-1 flex-col gap-0.5 py-px",
135
+ title: "leading-[1.35] font-medium text-pretty",
136
+ description: "text-[13px] leading-[1.4] text-pretty text-fg-muted",
137
+ actionButton: cn(buttonVariants({ variant: "secondary", size: "xs" }), "self-center"),
138
+ cancelButton: cn(buttonVariants({ variant: "ghost", size: "xs" }), "self-center text-fg-muted"),
139
+ closeButton: cn(buttonVariants({ variant: "ghost", size: "icon-xs" }), "absolute end-1.5 top-1.5 size-6! text-fg-subtle hover:text-fg"),
140
+ },
141
+ } }));
142
+ }
@@ -0,0 +1,77 @@
1
+ import * as React from "react";
2
+ import { Toggle as TogglePrimitive, ToggleGroup as ToggleGroupPrimitive } from "radix-ui";
3
+ export declare const toggleVariants: (props?: ({
4
+ variant?: "outline" | "ghost" | "segmented" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | "xs" | null | undefined;
6
+ iconOnly?: boolean | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ type ToggleVariant = "ghost" | "outline" | "segmented";
9
+ type ToggleSize = "xs" | "sm" | "md" | "lg";
10
+ export interface ToggleProps extends Omit<React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root>, "aria-label"> {
11
+ variant?: Exclude<ToggleVariant, "segmented">;
12
+ size?: ToggleSize;
13
+ /** Accessible name — required when the toggle shows only an icon. */
14
+ label?: string;
15
+ "aria-label"?: string;
16
+ }
17
+ /**
18
+ * A two-state button (`aria-pressed`): Bold in an editor toolbar, "Show archived", pin.
19
+ *
20
+ * ```tsx
21
+ * <Toggle label="Bold" size="sm"><Bold /></Toggle>
22
+ * <Toggle variant="outline" defaultPressed>Show archived</Toggle>
23
+ * ```
24
+ */
25
+ export declare const Toggle: React.ForwardRefExoticComponent<ToggleProps & React.RefAttributes<HTMLButtonElement>>;
26
+ interface ToggleGroupBaseProps {
27
+ /**
28
+ * `"segmented"` (default): an inset track with a raised thumb — view switches (List / Board).
29
+ * `"outline"`: attached bordered buttons — text alignment, formatting.
30
+ * `"ghost"`: loose toolbar buttons.
31
+ */
32
+ variant?: ToggleVariant;
33
+ size?: ToggleSize;
34
+ orientation?: "horizontal" | "vertical";
35
+ /** Stretch to the container width; items share the space. */
36
+ block?: boolean;
37
+ disabled?: boolean;
38
+ className?: string;
39
+ children?: React.ReactNode;
40
+ }
41
+ export interface ToggleGroupSingleProps extends ToggleGroupBaseProps, Omit<React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>, "type" | "value" | "defaultValue" | "onValueChange" | "orientation" | "dir"> {
42
+ type?: "single";
43
+ value?: string;
44
+ defaultValue?: string;
45
+ onValueChange?: (value: string) => void;
46
+ /** Allow pressing the active item again to clear the selection. Default `false` — a view switch always has a view. */
47
+ allowEmpty?: boolean;
48
+ }
49
+ export interface ToggleGroupMultipleProps extends ToggleGroupBaseProps, Omit<React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>, "type" | "value" | "defaultValue" | "onValueChange" | "orientation" | "dir"> {
50
+ type: "multiple";
51
+ value?: string[];
52
+ defaultValue?: string[];
53
+ onValueChange?: (value: string[]) => void;
54
+ allowEmpty?: never;
55
+ }
56
+ export type ToggleGroupProps = ToggleGroupSingleProps | ToggleGroupMultipleProps;
57
+ /**
58
+ * A set of toggles with roving focus (one tab stop, arrow keys move): view switches, alignment,
59
+ * filters. `type="single"` (default) keeps exactly one item on; `type="multiple"` for B / I / U.
60
+ * Use RadioGroup `variant="segmented"` instead when the choice is a form value.
61
+ *
62
+ * ```tsx
63
+ * <ToggleGroup aria-label="View" defaultValue="board">
64
+ * <ToggleGroupItem value="list"><List /> List</ToggleGroupItem>
65
+ * <ToggleGroupItem value="board"><Kanban /> Board</ToggleGroupItem>
66
+ * </ToggleGroup>
67
+ * ```
68
+ */
69
+ export declare const ToggleGroup: React.ForwardRefExoticComponent<ToggleGroupProps & React.RefAttributes<HTMLDivElement>>;
70
+ export interface ToggleGroupItemProps extends Omit<React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item>, "aria-label"> {
71
+ /** Accessible name — required when the item shows only an icon. */
72
+ label?: string;
73
+ "aria-label"?: string;
74
+ }
75
+ /** One toggle inside a `ToggleGroup`. */
76
+ export declare const ToggleGroupItem: React.ForwardRefExoticComponent<ToggleGroupItemProps & React.RefAttributes<HTMLButtonElement>>;
77
+ export {};
@@ -0,0 +1,109 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Toggle as TogglePrimitive, ToggleGroup as ToggleGroupPrimitive } from "radix-ui";
5
+ import { cva } from "class-variance-authority";
6
+ import { cn } from "../lib/cn.js";
7
+ export const toggleVariants = cva([
8
+ "relative inline-flex shrink-0 select-none items-center justify-center gap-1.5 whitespace-nowrap font-medium outline-none",
9
+ "transition-[background-color,color,box-shadow,border-color] duration-150 focus-ring [&_svg]:shrink-0",
10
+ "disabled:pointer-events-none disabled:opacity-45",
11
+ ], {
12
+ variants: {
13
+ variant: {
14
+ /** Toolbar look: transparent until hovered; pressed = tinted. */
15
+ ghost: "text-fg-muted hover:bg-hover hover:text-fg data-[state=on]:bg-selected data-[state=on]:text-fg",
16
+ /** Bordered, like a secondary button; pressed = tinted + stronger edge. */
17
+ outline: "border border-field-border bg-field text-fg-muted hover:border-field-border-hover hover:text-fg glass:border-field-border-hover data-[state=on]:border-field-border-hover data-[state=on]:bg-selected data-[state=on]:text-fg",
18
+ /** Moving-thumb look used inside a segmented ToggleGroup. */
19
+ segmented: "text-fg-muted hover:text-fg data-[state=on]:bg-(--segment-thumb) data-[state=on]:text-fg data-[state=on]:shadow-(--segment-thumb-shadow) focus-visible:outline-offset-0",
20
+ },
21
+ size: {
22
+ xs: "h-7 rounded-ui-sm px-2 text-xs [&_svg]:size-3.5",
23
+ sm: "h-8 rounded-ui-sm px-2.5 text-[13px] [&_svg]:size-4",
24
+ md: "h-(--control-h) rounded-ui px-3 text-sm [&_svg]:size-4",
25
+ lg: "h-12 rounded-ui px-4 text-[15px] [&_svg]:size-[18px]",
26
+ },
27
+ iconOnly: { true: "aspect-square px-0" },
28
+ },
29
+ defaultVariants: { variant: "ghost", size: "md" },
30
+ });
31
+ /**
32
+ * A two-state button (`aria-pressed`): Bold in an editor toolbar, "Show archived", pin.
33
+ *
34
+ * ```tsx
35
+ * <Toggle label="Bold" size="sm"><Bold /></Toggle>
36
+ * <Toggle variant="outline" defaultPressed>Show archived</Toggle>
37
+ * ```
38
+ */
39
+ export const Toggle = React.forwardRef(function Toggle({ variant = "ghost", size = "md", label, className, children, title, ...props }, ref) {
40
+ const iconOnly = Boolean(label) && !hasText(children);
41
+ return (_jsx(TogglePrimitive.Root, { ref: ref, "data-slot": "toggle", "aria-label": props["aria-label"] ?? (iconOnly ? label : undefined), title: title ?? (iconOnly ? label : undefined), className: cn(toggleVariants({ variant, size, iconOnly }), className), ...props, children: children }));
42
+ });
43
+ function hasText(node) {
44
+ let found = false;
45
+ React.Children.forEach(node, (c) => {
46
+ if (typeof c === "string" ? c.trim() !== "" : typeof c === "number")
47
+ found = true;
48
+ else if (React.isValidElement(c) && c.props.children && (typeof c.type === "string" || c.type === React.Fragment))
49
+ found ||= hasText(c.props.children);
50
+ });
51
+ return found;
52
+ }
53
+ const ToggleGroupContext = React.createContext({ variant: "outline", size: "md" });
54
+ const trackClass = (orientation) => cn("gap-0.5 rounded-ui border border-line bg-selected p-[3px]", orientation === "vertical" ? "flex-col" : "");
55
+ /**
56
+ * A set of toggles with roving focus (one tab stop, arrow keys move): view switches, alignment,
57
+ * filters. `type="single"` (default) keeps exactly one item on; `type="multiple"` for B / I / U.
58
+ * Use RadioGroup `variant="segmented"` instead when the choice is a form value.
59
+ *
60
+ * ```tsx
61
+ * <ToggleGroup aria-label="View" defaultValue="board">
62
+ * <ToggleGroupItem value="list"><List /> List</ToggleGroupItem>
63
+ * <ToggleGroupItem value="board"><Kanban /> Board</ToggleGroupItem>
64
+ * </ToggleGroup>
65
+ * ```
66
+ */
67
+ export const ToggleGroup = React.forwardRef(function ToggleGroup(props, ref) {
68
+ const { variant = "segmented", size = "md", orientation = "horizontal", block, className, children, ...rest } = props;
69
+ const ctx = React.useMemo(() => ({ variant, size }), [variant, size]);
70
+ const layout = cn("relative isolate items-stretch", block ? "flex w-full [&>*]:flex-1" : "inline-flex w-fit max-w-full", orientation === "vertical" && "flex-col", variant === "segmented" && trackClass(orientation),
71
+ // A segmented track wider than its column (long labels on a phone) scrolls inside itself
72
+ // instead of pushing the page sideways; its padding keeps the items' focus ring visible.
73
+ variant === "segmented" && orientation === "horizontal" && !block && "scrollbar-none overflow-x-auto overscroll-x-contain", variant === "ghost" && "gap-0.5", variant === "outline" &&
74
+ (orientation === "vertical"
75
+ ? "[&>*:not(:first-child)]:-mt-px [&>*:not(:first-child)]:rounded-t-none [&>*:not(:last-child)]:rounded-b-none"
76
+ : "[&>*:not(:first-child)]:-ms-px [&>*:not(:first-child)]:rounded-s-none [&>*:not(:last-child)]:rounded-e-none"), variant === "outline" && "[&>*:focus-visible]:z-10 [&>[data-state=on]]:z-[1]", className);
77
+ const common = { ref, "data-slot": "toggle-group", "data-variant": variant, orientation, className: layout };
78
+ if (rest.type === "multiple") {
79
+ const { type: _t, allowEmpty: _a, ...multi } = rest;
80
+ return (_jsx(ToggleGroupPrimitive.Root, { type: "multiple", ...multi, ...common, children: _jsx(ToggleGroupContext.Provider, { value: ctx, children: children }) }));
81
+ }
82
+ return (_jsx(SingleToggleGroup, { ...rest, common: common, children: _jsx(ToggleGroupContext.Provider, { value: ctx, children: children }) }));
83
+ });
84
+ function SingleToggleGroup({ value, defaultValue, onValueChange, allowEmpty = false, type: _type, common, children, ...props }) {
85
+ const [inner, setInner] = React.useState(defaultValue ?? "");
86
+ const current = value !== undefined ? value : inner;
87
+ return (_jsx(ToggleGroupPrimitive.Root, { type: "single", ...props, ...common, value: current, onValueChange: (next) => {
88
+ if (!next && !allowEmpty)
89
+ return;
90
+ if (value === undefined)
91
+ setInner(next);
92
+ onValueChange?.(next);
93
+ }, children: children }));
94
+ }
95
+ /** One toggle inside a `ToggleGroup`. */
96
+ export const ToggleGroupItem = React.forwardRef(function ToggleGroupItem({ label, className, children, title, ...props }, ref) {
97
+ const { variant, size } = React.useContext(ToggleGroupContext);
98
+ const iconOnly = Boolean(label) && !hasText(children);
99
+ const segmentSize = variant === "segmented"
100
+ ? size === "xs"
101
+ ? "h-[calc(1.75rem-8px)] rounded-[4px]"
102
+ : size === "sm"
103
+ ? "h-[calc(2rem-8px)] rounded-[5px]"
104
+ : size === "lg"
105
+ ? "h-[calc(3rem-8px)] rounded-[calc(var(--radius)-5px)]"
106
+ : "h-[calc(var(--control-h)-8px)] rounded-[calc(var(--radius)-5px)]"
107
+ : undefined;
108
+ return (_jsx(ToggleGroupPrimitive.Item, { ref: ref, "data-slot": "toggle-group-item", "aria-label": props["aria-label"] ?? (iconOnly ? label : undefined), title: title ?? (iconOnly ? label : undefined), className: cn(toggleVariants({ variant, size, iconOnly }), segmentSize, className), ...props, children: children }));
109
+ });
@@ -0,0 +1,69 @@
1
+ import * as React from "react";
2
+ import { Tooltip as TooltipPrimitive } from "radix-ui";
3
+ import { type VariantProps } from "class-variance-authority";
4
+ /** `true` when a `TooltipProvider` is above this point (IconButton switches from `title` to Tooltip). */
5
+ export declare function useHasTooltipProvider(): boolean;
6
+ export interface TooltipProviderProps extends React.ComponentProps<typeof TooltipPrimitive.Provider> {
7
+ }
8
+ /**
9
+ * Shares open/skip timing between every tooltip below it: once one tooltip has opened, moving
10
+ * to the next opens it instantly. Put one at the app root (App shell ships it).
11
+ * Inside a provider, `IconButton` shows its `label` as a Tooltip instead of the native `title`.
12
+ */
13
+ export declare function TooltipProvider({ delayDuration, skipDelayDuration, ...props }: TooltipProviderProps): React.JSX.Element;
14
+ export interface TooltipRootProps extends React.ComponentProps<typeof TooltipPrimitive.Root> {
15
+ }
16
+ /** Compound root. Works with or without a surrounding `TooltipProvider`. */
17
+ export declare function TooltipRoot(props: TooltipRootProps): React.JSX.Element;
18
+ export declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
19
+ export declare const tooltipContentVariants: (props?: ({
20
+ tone?: "default" | "inverted" | null | undefined;
21
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
22
+ export interface TooltipContentProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>, VariantProps<typeof tooltipContentVariants> {
23
+ /** Show the pointer arrow. Default `false`. */
24
+ arrow?: boolean;
25
+ /** Shortcut hint after the text, e.g. `"mod+e"` or `["mod", "e"]` (rendered with Kbd). */
26
+ shortcut?: string | string[];
27
+ }
28
+ export declare const TooltipContent: React.ForwardRefExoticComponent<TooltipContentProps & React.RefAttributes<HTMLDivElement>>;
29
+ export interface TooltipProps extends Omit<TooltipContentProps, "content" | "children"> {
30
+ /** Tooltip text. Empty / `null` renders the trigger without a tooltip. */
31
+ content: React.ReactNode;
32
+ /** The trigger. Rendered with `asChild`, so it must accept a ref (Button, IconButton, `<a>`…). */
33
+ children: React.ReactElement;
34
+ /** Open delay in ms (overrides the provider's 400 ms). */
35
+ delay?: number;
36
+ /** Render the trigger without a tooltip. */
37
+ disabled?: boolean;
38
+ open?: boolean;
39
+ defaultOpen?: boolean;
40
+ onOpenChange?: (open: boolean) => void;
41
+ }
42
+ /**
43
+ * A short label for an icon button or abbreviation. Opens on hover and focus, closes on Esc.
44
+ * Never shown on touch screens, so it can't be the only place a piece of information lives.
45
+ *
46
+ * ```tsx
47
+ * <Tooltip content="Edit post" shortcut="mod+e">
48
+ * <IconButton label="Edit post"><Pencil /></IconButton>
49
+ * </Tooltip>
50
+ * ```
51
+ *
52
+ * A disabled button fires no pointer events, so a disabled child is wrapped in a focusable
53
+ * `<span>` automatically — use it to explain *why* the action is unavailable.
54
+ */
55
+ export declare function Tooltip({ content, children, delay, disabled, open, defaultOpen, onOpenChange, ...contentProps }: TooltipProps): React.JSX.Element;
56
+ export interface IconButtonTooltipProps {
57
+ /** Text shown in the tooltip (or the `title` fallback). */
58
+ label: string;
59
+ /** `"auto"`: Tooltip inside a `TooltipProvider`, native `title` otherwise. `true`: always a Tooltip. */
60
+ mode?: "auto" | "always";
61
+ side?: TooltipContentProps["side"];
62
+ shortcut?: TooltipContentProps["shortcut"];
63
+ children: React.ReactElement;
64
+ }
65
+ /**
66
+ * Used by `IconButton`: shows `label` as a Tooltip when a `TooltipProvider` is present,
67
+ * and falls back to the native `title` attribute when it isn't (so code without a provider keeps working).
68
+ */
69
+ export declare function IconButtonTooltip({ label, mode, side, shortcut, children }: IconButtonTooltipProps): React.JSX.Element;
@@ -0,0 +1,105 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Slot, Tooltip as TooltipPrimitive } from "radix-ui";
5
+ import { cva } from "class-variance-authority";
6
+ import { cn } from "../lib/cn.js";
7
+ import { usePortalContainer } from "../lib/theme-scope.js";
8
+ import { FloatingArrow } from "../lib/floating-arrow.js";
9
+ import { KbdGroup } from "./kbd.js";
10
+ /* ------------------------------------------------------------------ */
11
+ /* Provider */
12
+ /* ------------------------------------------------------------------ */
13
+ const TooltipProviderContext = React.createContext(false);
14
+ /** `true` when a `TooltipProvider` is above this point (IconButton switches from `title` to Tooltip). */
15
+ export function useHasTooltipProvider() {
16
+ return React.useContext(TooltipProviderContext);
17
+ }
18
+ /**
19
+ * Shares open/skip timing between every tooltip below it: once one tooltip has opened, moving
20
+ * to the next opens it instantly. Put one at the app root (App shell ships it).
21
+ * Inside a provider, `IconButton` shows its `label` as a Tooltip instead of the native `title`.
22
+ */
23
+ export function TooltipProvider({ delayDuration = 400, skipDelayDuration = 300, ...props }) {
24
+ return (_jsx(TooltipProviderContext.Provider, { value: true, children: _jsx(TooltipPrimitive.Provider, { delayDuration: delayDuration, skipDelayDuration: skipDelayDuration, ...props }) }));
25
+ }
26
+ /** Wraps in a provider only when none is present (Radix requires one). */
27
+ function EnsureProvider({ children }) {
28
+ return useHasTooltipProvider() ? _jsx(_Fragment, { children: children }) : _jsx(TooltipProvider, { children: children });
29
+ }
30
+ /** Compound root. Works with or without a surrounding `TooltipProvider`. */
31
+ export function TooltipRoot(props) {
32
+ return (_jsx(EnsureProvider, { children: _jsx(TooltipPrimitive.Root, { ...props }) }));
33
+ }
34
+ export const TooltipTrigger = TooltipPrimitive.Trigger;
35
+ export const tooltipContentVariants = cva([
36
+ "ui-pop z-(--z-tooltip) max-w-[min(18rem,calc(100vw-1.5rem))] select-none rounded-ui-sm px-2 py-1 text-[12.5px] leading-snug font-medium",
37
+ // tooltips never blur — they open and close too often to spend the glass budget on
38
+ "[--blur:0px] backdrop-filter-none",
39
+ // Close instantly: while a tooltip animates out it stays the top dismissable layer, so an Esc
40
+ // pressed just after tabbing past an IconButton closed the tooltip instead of the dialog.
41
+ "data-[state=closed]:animate-none",
42
+ "flex items-center gap-2 text-balance",
43
+ ], {
44
+ variants: {
45
+ tone: {
46
+ /** Opaque, high-contrast chip. Stays readable on glass. */
47
+ inverted: "bg-fg text-scene shadow-[0_4px_14px_-4px_rgb(0_0_0/0.35)]",
48
+ /** Floating-layer look, for longer hints. */
49
+ default: "border border-popover-border bg-popover-nested text-fg shadow-(--popover-shadow)",
50
+ },
51
+ },
52
+ defaultVariants: { tone: "inverted" },
53
+ });
54
+ export const TooltipContent = React.forwardRef(function TooltipContent({ className, tone, arrow = false, shortcut, sideOffset = 6, collisionPadding = 8, children, ...props }, ref) {
55
+ const container = usePortalContainer();
56
+ const inverted = (tone ?? "inverted") === "inverted";
57
+ return (_jsx(TooltipPrimitive.Portal, { container: container, children: _jsxs(TooltipPrimitive.Content, { ref: ref, "data-slot": "tooltip-content", "data-tone": tone ?? "inverted", sideOffset: sideOffset, collisionPadding: collisionPadding, className: cn(tooltipContentVariants({ tone }), className), ...props, children: [_jsx("span", { className: "min-w-0", children: children }), shortcut ? (_jsx(KbdGroup, { keys: shortcut, size: "sm", variant: "ghost", className: cn("-me-0.5", inverted && "[&_kbd_kbd]:border-[color-mix(in_srgb,var(--scene)_28%,transparent)] [&_kbd_kbd]:text-[color-mix(in_srgb,var(--scene)_78%,transparent)]") })) : null, arrow ? (_jsx(TooltipPrimitive.Arrow, { asChild: true, width: 10, height: 5, children: _jsx(FloatingArrow, { width: 10, height: 5, fill: inverted ? "var(--fg)" : "var(--popover-nested)", stroke: inverted ? "none" : "var(--popover-border)" }) })) : null] }) }));
58
+ });
59
+ function isDisabledElement(el) {
60
+ // A child rendered by a server component reaches this client component as a lazy reference
61
+ // without `props` in production (RSC), so this can only be a hint; see the DOM check below.
62
+ const p = el?.props;
63
+ return p?.disabled === true;
64
+ }
65
+ /**
66
+ * A short label for an icon button or abbreviation. Opens on hover and focus, closes on Esc.
67
+ * Never shown on touch screens, so it can't be the only place a piece of information lives.
68
+ *
69
+ * ```tsx
70
+ * <Tooltip content="Edit post" shortcut="mod+e">
71
+ * <IconButton label="Edit post"><Pencil /></IconButton>
72
+ * </Tooltip>
73
+ * ```
74
+ *
75
+ * A disabled button fires no pointer events, so a disabled child is wrapped in a focusable
76
+ * `<span>` automatically — use it to explain *why* the action is unavailable.
77
+ */
78
+ export function Tooltip({ content, children, delay, disabled, open, defaultOpen, onOpenChange, ...contentProps }) {
79
+ // When the child's props are not readable (server-rendered child), detect a disabled trigger
80
+ // from the DOM after mount and switch to the focusable wrapper.
81
+ const triggerRef = React.useRef(null);
82
+ const [domDisabled, setDomDisabled] = React.useState(false);
83
+ const off = disabled || content == null || content === false || content === "";
84
+ React.useEffect(() => {
85
+ const el = triggerRef.current;
86
+ if (!off && el && el.dataset.slot !== "tooltip-disabled-trigger" && el.matches(":disabled"))
87
+ setDomDisabled(true);
88
+ }, [off]);
89
+ if (off)
90
+ return children;
91
+ const trigger = isDisabledElement(children) || domDisabled ? (
92
+ // tabIndex keeps the explanation reachable from the keyboard
93
+ _jsx("span", { "data-slot": "tooltip-disabled-trigger", tabIndex: 0, className: "inline-flex cursor-not-allowed rounded-ui focus-ring", children: children })) : (children);
94
+ return (_jsxs(TooltipRoot, { delayDuration: delay, open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, children: [_jsx(TooltipPrimitive.Trigger, { ref: triggerRef, asChild: true, children: trigger }), _jsx(TooltipContent, { ...contentProps, children: content })] }));
95
+ }
96
+ /**
97
+ * Used by `IconButton`: shows `label` as a Tooltip when a `TooltipProvider` is present,
98
+ * and falls back to the native `title` attribute when it isn't (so code without a provider keeps working).
99
+ */
100
+ export function IconButtonTooltip({ label, mode = "auto", side, shortcut, children }) {
101
+ const hasProvider = useHasTooltipProvider();
102
+ if (mode === "auto" && !hasProvider)
103
+ return _jsx(Slot.Root, { title: label, children: children });
104
+ return (_jsx(Tooltip, { content: label, side: side, shortcut: shortcut, children: children }));
105
+ }
@@ -0,0 +1,87 @@
1
+ import * as React from "react";
2
+ import type { MenuEntry } from "../lib/variants.js";
3
+ declare const topBarLabels: {
4
+ search: string;
5
+ searchShort: string;
6
+ menu: string;
7
+ account: string;
8
+ };
9
+ export type TopBarLabels = typeof topBarLabels;
10
+ /**
11
+ * Bridge between the top bar and the App shell (mobile nav button). App shell provides it; outside
12
+ * a shell the menu button needs its own `onClick`.
13
+ */
14
+ export declare const TopBarShellContext: React.Context<{
15
+ openMobileNav: () => void;
16
+ mobileNavOpen: boolean;
17
+ } | null>;
18
+ export interface TopBarProps extends React.HTMLAttributes<HTMLElement> {
19
+ /** Sticks to the top of the scrolling area. Default `true`. */
20
+ sticky?: boolean;
21
+ /** `bar`: translucent bar with a hairline. `transparent`: blends in until the page scrolls (`data-scrolled`). */
22
+ variant?: "bar" | "transparent";
23
+ /** Element whose scroll sets `data-scrolled`. Default `window`. */
24
+ scrollTarget?: React.RefObject<HTMLElement | null>;
25
+ }
26
+ /**
27
+ * The sticky bar above the content: mobile menu button, ⌘K search, contextual actions,
28
+ * notifications and the user menu. The same in every app.
29
+ *
30
+ * ```tsx
31
+ * <TopBar>
32
+ * <TopBarStart><TopBarMenuButton /></TopBarStart>
33
+ * <TopBarSearch />
34
+ * <TopBarSpacer />
35
+ * <TopBarActions><NotificationCenter adapter={inbox} /><UserMenu name="Ada Lovelace" items={account} /></TopBarActions>
36
+ * </TopBar>
37
+ * ```
38
+ */
39
+ export declare const TopBar: React.ForwardRefExoticComponent<TopBarProps & React.RefAttributes<HTMLElement>>;
40
+ /** Leading slot: menu button, breadcrumb. */
41
+ export declare function TopBarStart({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
42
+ /** Pushes the following slots to the end. */
43
+ export declare function TopBarSpacer({ className }: {
44
+ className?: string;
45
+ }): React.JSX.Element;
46
+ /** Trailing slot: theme switch, notifications, "New", user menu. */
47
+ export declare function TopBarActions({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
48
+ /** A short vertical rule between action groups. */
49
+ export declare function TopBarSeparator({ className }: {
50
+ className?: string;
51
+ }): React.JSX.Element;
52
+ export interface TopBarMenuButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
53
+ labels?: Partial<TopBarLabels>;
54
+ }
55
+ /** Opens the App shell's mobile navigation. Visible only below 768px. */
56
+ export declare const TopBarMenuButton: React.ForwardRefExoticComponent<TopBarMenuButtonProps & React.RefAttributes<HTMLButtonElement>>;
57
+ export interface TopBarSearchProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
58
+ /** Default "Search or run a command…" (`topBar.search`). */
59
+ placeholder?: string;
60
+ /** Shortcut hint. Default `"mod+k"`; `false` hides it. */
61
+ shortcut?: string | false;
62
+ /** Default: opens the command palette of the nearest `CommandProvider`. */
63
+ onOpen?: () => void;
64
+ labels?: Partial<TopBarLabels>;
65
+ }
66
+ /**
67
+ * The ⌘K trigger: a real button that looks like a field. Collapses to an icon button when the bar is
68
+ * narrower than 560px.
69
+ */
70
+ export declare const TopBarSearch: React.ForwardRefExoticComponent<TopBarSearchProps & React.RefAttributes<HTMLButtonElement>>;
71
+ export interface UserMenuProps {
72
+ name: string;
73
+ email?: string;
74
+ avatar?: string | null;
75
+ /** Account entries: profile, settings, theme, sign out. Same model as Dropdown Menu. */
76
+ items: MenuEntry[];
77
+ /** Show the name next to the avatar (wide bars). Default `false`. */
78
+ showName?: boolean;
79
+ /** Extra content under the header (a plan badge, a workspace line). */
80
+ children?: React.ReactNode;
81
+ align?: "start" | "center" | "end";
82
+ className?: string;
83
+ labels?: Partial<TopBarLabels>;
84
+ }
85
+ /** The avatar button with the account menu. */
86
+ export declare function UserMenu({ name, email, avatar, items, showName, children, align, className, labels }: UserMenuProps): React.JSX.Element;
87
+ export {};