@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,185 @@
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 { Dialog as DialogPrimitive } from "radix-ui";
5
+ import { X } from "lucide-react";
6
+ import { cn } from "../lib/cn.js";
7
+ import { useLabels } from "../lib/labels.js";
8
+ import { useControllableState, useLatest } from "../lib/use-controllable-state.js";
9
+ import { Layer, useLayerDepth } from "../lib/layer.js";
10
+ import { usePortalContainer } from "../lib/theme-scope.js";
11
+ import { IconButton } from "./button.js";
12
+ const PlainTitle = ({ asChild: _a, ...props }) => _jsx("h2", { ...props });
13
+ const PlainDescription = ({ asChild: _a, ...props }) => _jsx("p", { ...props });
14
+ const LayerPartsContext = React.createContext({ Title: PlainTitle, Description: PlainDescription });
15
+ /** Lets a layer (Dialog, Alert Dialog, Sheet…) plug its accessible Title/Description into the shared header. */
16
+ export function LayerPartsProvider({ value, children }) {
17
+ return _jsx(LayerPartsContext.Provider, { value: value, children: children });
18
+ }
19
+ function LayerDescriptionMount() {
20
+ const { registerDescription } = React.useContext(LayerPartsContext);
21
+ React.useLayoutEffect(() => registerDescription?.(), [registerDescription]);
22
+ return null;
23
+ }
24
+ /**
25
+ * The fixed top of a layer: title, optional description, icon and action. Shared by Dialog,
26
+ * Alert Dialog, Sheet and Drawer (exported under each name: `DialogHeader`, `SheetHeader`…).
27
+ */
28
+ export const LayerHeader = React.forwardRef(function LayerHeader({ title, description, icon, action, srOnly, className, children, ...props }, ref) {
29
+ const { Title, Description } = React.useContext(LayerPartsContext);
30
+ const text = (_jsxs(_Fragment, { children: [_jsx(Title, { "data-slot": "layer-title", className: cn("font-display text-[1.3rem] leading-[1.2] text-balance text-fg", srOnly && "sr-only"), children: title }), description ? (_jsx(Description, { "data-slot": "layer-description", className: cn("mt-1 text-[13.5px] leading-relaxed text-pretty text-fg-muted", srOnly && "sr-only"), children: description })) : null, description ? _jsx(LayerDescriptionMount, {}) : null] }));
31
+ if (srOnly)
32
+ return _jsxs(_Fragment, { children: [text, children] });
33
+ return (_jsxs("div", { ref: ref, "data-slot": "layer-header", className: cn("vui-layer-header flex flex-none items-start gap-3.5 px-6 pt-5 pb-4 [[data-has-close]_&]:pe-14", className), ...props, children: [icon ? _jsx("div", { className: "flex flex-none items-center", children: icon }) : null, _jsxs("div", { className: "min-w-0 flex-1", children: [text, children] }), action ? _jsx("div", { className: "flex flex-none items-center gap-1.5 self-center", children: action }) : null] }));
34
+ });
35
+ /** The scrolling middle of a layer. Header and footer stay fixed; only the body scrolls. */
36
+ export const LayerBody = React.forwardRef(function LayerBody({ flush, className, onScroll, ...props }, ref) {
37
+ const [scrolled, setScrolled] = React.useState(false);
38
+ return (_jsx("div", { ref: ref, "data-slot": "layer-body", "data-scrolled": scrolled ? "" : undefined, onScroll: (e) => {
39
+ onScroll?.(e);
40
+ setScrolled(e.currentTarget.scrollTop > 0);
41
+ }, className: cn("vui-layer-body content-start text-sm text-fg", !flush && "px-6 pt-5 pb-5 [[data-slot=layer-header]+&]:pt-0", className), ...props }));
42
+ });
43
+ /** The fixed bottom of a layer: actions, primary last. Stacks (primary on top) inside a mobile sheet. */
44
+ export const LayerFooter = React.forwardRef(function LayerFooter({ align = "end", className, ...props }, ref) {
45
+ return (_jsx("div", { ref: ref, "data-slot": "layer-footer", className: cn("vui-layer-footer flex flex-none flex-wrap items-center gap-2 border-t border-line px-6 py-3.5", align === "end" && "justify-end", align === "between" && "justify-end [&>:first-child]:me-auto", align === "stretch" && "[&>*]:flex-1", className), ...props }));
46
+ });
47
+ const DialogRootContext = React.createContext(null);
48
+ /** Read the nearest Dialog/Sheet/Drawer root — e.g. to close it from custom code (`requestOpenChange(false)`). */
49
+ export function useDialogRoot() {
50
+ const ctx = React.useContext(DialogRootContext);
51
+ if (!ctx)
52
+ throw new Error("useDialogRoot must be used inside <Dialog>, <Sheet> or <Drawer>.");
53
+ return ctx;
54
+ }
55
+ /**
56
+ * A focused task that keeps the user in context (modal by default).
57
+ *
58
+ * ```tsx
59
+ * <Dialog>
60
+ * <DialogTrigger asChild><Button>New contact</Button></DialogTrigger>
61
+ * <DialogContent size="md">
62
+ * <DialogHeader title="New contact" description="Add a contact manually." />
63
+ * <DialogBody>…</DialogBody>
64
+ * <DialogFooter>
65
+ * <DialogClose asChild><Button>Cancel</Button></DialogClose>
66
+ * <Button variant="primary">Save</Button>
67
+ * </DialogFooter>
68
+ * </DialogContent>
69
+ * </Dialog>
70
+ * ```
71
+ */
72
+ export function Dialog({ open: openProp, defaultOpen = false, onOpenChange, modal = true, children }) {
73
+ const [open, setOpen] = useControllableState({ value: openProp, defaultValue: defaultOpen, onChange: onOpenChange, name: "Dialog" });
74
+ const guardRef = React.useRef(undefined);
75
+ const pending = React.useRef(false);
76
+ const requestOpenChange = React.useCallback((next) => {
77
+ if (next || !guardRef.current)
78
+ return setOpen(next);
79
+ if (pending.current)
80
+ return;
81
+ const result = guardRef.current();
82
+ if (result === true)
83
+ return setOpen(false);
84
+ if (result === false)
85
+ return;
86
+ pending.current = true;
87
+ Promise.resolve(result)
88
+ .then((ok) => ok && setOpen(false))
89
+ .catch(() => { })
90
+ .finally(() => (pending.current = false));
91
+ }, [setOpen]);
92
+ const setGuard = React.useCallback((g) => (guardRef.current = g), []);
93
+ const ctx = React.useMemo(() => ({ open, requestOpenChange, setGuard, modal }), [open, requestOpenChange, setGuard, modal]);
94
+ return (_jsx(DialogRootContext.Provider, { value: ctx, children: _jsx(DialogPrimitive.Root, { open: open, onOpenChange: requestOpenChange, modal: modal, children: children }) }));
95
+ }
96
+ export const DialogTrigger = DialogPrimitive.Trigger;
97
+ export const DialogClose = DialogPrimitive.Close;
98
+ export const DialogPortal = DialogPrimitive.Portal;
99
+ export const DialogTitle = DialogPrimitive.Title;
100
+ export const DialogDescription = DialogPrimitive.Description;
101
+ /** The dimmed backdrop. `DialogContent` renders its own; export for custom layers. */
102
+ export const DialogOverlay = React.forwardRef(function DialogOverlay({ className, blurred = true, ...props }, ref) {
103
+ return (_jsx(DialogPrimitive.Overlay, { ref: ref, "data-slot": "dialog-overlay", "data-overlay-blurred": blurred ? "" : undefined, className: cn("vui-overlay ui-fade", className), ...props }));
104
+ });
105
+ const dialogLabels = { close: "Close" };
106
+ /**
107
+ * Internal: portal + overlay + layer depth + close guard + × button around a Radix Dialog.Content.
108
+ * Exported so other layers (Sheet, Drawer, Notification panel) share one implementation.
109
+ */
110
+ export const LayerContentShell = React.forwardRef(function LayerContentShell({ dismissible = true, onBeforeClose, hideClose, container, labels, overlayClassName, className, children, onEscapeKeyDown, onPointerDownOutside, onInteractOutside, onOpenAutoFocus, onCloseAutoFocus, ...props }, ref) {
111
+ const root = React.useContext(DialogRootContext);
112
+ // What had focus when the panel opened. Radix returns focus only to a Dialog.Trigger; a
113
+ // controlled dialog opened from a plain button (or a menu) would drop focus to <body> on close.
114
+ const returnTo = React.useRef(null);
115
+ const t = useLabels("dialog", dialogLabels, labels);
116
+ const scope = usePortalContainer();
117
+ const depth = useLayerDepth() + 1;
118
+ const modal = root?.modal ?? true;
119
+ const guard = useLatest(onBeforeClose);
120
+ // Register the guard with the root while mounted.
121
+ React.useEffect(() => {
122
+ if (!root)
123
+ return;
124
+ root.setGuard(onBeforeClose ? () => guard.current() : undefined);
125
+ return () => root.setGuard(undefined);
126
+ }, [root, Boolean(onBeforeClose)]); // eslint-disable-line react-hooks/exhaustive-deps
127
+ // Drop aria-describedby when no description is mounted (no dangling reference, no Radix warning).
128
+ const [descriptions, setDescriptions] = React.useState(0);
129
+ const parts = React.useMemo(() => ({
130
+ Title: DialogPrimitive.Title,
131
+ Description: DialogPrimitive.Description,
132
+ registerDescription: () => {
133
+ setDescriptions((n) => n + 1);
134
+ return () => setDescriptions((n) => n - 1);
135
+ },
136
+ }), []);
137
+ const described = descriptions > 0 || "aria-describedby" in props;
138
+ return (_jsxs(DialogPrimitive.Portal, { container: container ?? scope, children: [modal ? _jsx(DialogOverlay, { blurred: depth === 1, className: overlayClassName }) : null, _jsx(Layer, { asChild: true, children: _jsxs(DialogPrimitive.Content, { ref: ref, "data-has-close": hideClose ? undefined : "", "aria-modal": modal, ...(described ? {} : { "aria-describedby": undefined }), className: cn("vui-layer-panel surface-popover", className), onEscapeKeyDown: (e) => {
139
+ onEscapeKeyDown?.(e);
140
+ if (!dismissible)
141
+ e.preventDefault();
142
+ }, onPointerDownOutside: (e) => {
143
+ onPointerDownOutside?.(e);
144
+ if (!dismissible)
145
+ e.preventDefault();
146
+ }, onInteractOutside: (e) => {
147
+ onInteractOutside?.(e);
148
+ // A non-modal panel (record preview) stays open while the page behind is used.
149
+ if (!modal)
150
+ e.preventDefault();
151
+ }, onCloseAutoFocus: (e) => {
152
+ onCloseAutoFocus?.(e);
153
+ if (e.defaultPrevented)
154
+ return;
155
+ const el = returnTo.current;
156
+ if (el && el.isConnected && el !== document.body) {
157
+ e.preventDefault();
158
+ el.focus();
159
+ }
160
+ }, onOpenAutoFocus: (e) => {
161
+ // Fires before the focus scope moves focus in: activeElement is still the opener.
162
+ returnTo.current = document.activeElement;
163
+ onOpenAutoFocus?.(e);
164
+ if (e.defaultPrevented)
165
+ return;
166
+ const target = e.currentTarget?.querySelector("[data-autofocus]");
167
+ if (target) {
168
+ e.preventDefault();
169
+ target.focus();
170
+ }
171
+ }, ...props, children: [_jsx(LayerPartsProvider, { value: parts, children: children }), hideClose ? null : (_jsx(DialogPrimitive.Close, { asChild: true, children: _jsx(IconButton, { label: t("close"), size: "sm", variant: "ghost", "data-slot": "layer-close", className: "absolute end-3 top-3 text-fg-muted hover:text-fg", children: _jsx(X, {}) }) }))] }) })] }));
172
+ });
173
+ /**
174
+ * The dialog panel. Renders its own portal and overlay, traps focus, closes on Esc, returns
175
+ * focus to the trigger. Initial focus goes to `[data-autofocus]` if present, else the first field.
176
+ */
177
+ export const DialogContent = React.forwardRef(function DialogContent({ size = "md", mobile = "sheet", className, ...props }, ref) {
178
+ return (_jsx(LayerContentShell, { ref: ref, "data-slot": "dialog-content", "data-size": size, "data-mobile": mobile, className: cn("vui-dialog ui-dialog", className), ...props }));
179
+ });
180
+ /** `LayerHeader` for dialogs. */
181
+ export const DialogHeader = LayerHeader;
182
+ /** `LayerBody` for dialogs. */
183
+ export const DialogBody = LayerBody;
184
+ /** `LayerFooter` for dialogs. */
185
+ export const DialogFooter = LayerFooter;
@@ -0,0 +1,100 @@
1
+ import * as React from "react";
2
+ import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
3
+ import type { MenuEntry } from "../lib/variants.js";
4
+ /** Root. Controlled (`open` / `onOpenChange`) or uncontrolled. */
5
+ export declare const DropdownMenu: React.FC<DropdownMenuPrimitive.DropdownMenuProps>;
6
+ export declare const DropdownMenuTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
7
+ export declare const DropdownMenuGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
8
+ export declare const DropdownMenuSub: React.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
9
+ export interface DropdownMenuContentProps extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content> {
10
+ /** Minimum width: `sm` 180px, `md` 220px. Item size follows. */
11
+ size?: "sm" | "md";
12
+ }
13
+ /** The menu panel. Portals into the nearest `ThemeScope`; only the first layer blurs in glass mode. */
14
+ export declare const DropdownMenuContent: React.ForwardRefExoticComponent<DropdownMenuContentProps & React.RefAttributes<HTMLDivElement>>;
15
+ export interface DropdownMenuItemProps extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> {
16
+ /** Leading icon (lucide element). */
17
+ icon?: React.ReactNode;
18
+ /** Second line under the label. */
19
+ description?: React.ReactNode;
20
+ /** Shortcut hint, e.g. `"mod+d"` (rendered with Kbd). Display only — bind it with `useHotkeys`. */
21
+ shortcut?: string | string[];
22
+ /** Trailing count or badge. */
23
+ badge?: React.ReactNode;
24
+ /** `"danger"` for destructive actions (Delete, Move to trash). */
25
+ tone?: "default" | "danger";
26
+ /** Reserve the indicator gutter so labels align with checkbox/radio items. */
27
+ inset?: boolean;
28
+ }
29
+ /**
30
+ * One action. `onSelect` fires on click, Enter and Space, then the menu closes; call
31
+ * `event.preventDefault()` in `onSelect` to keep it open (async actions).
32
+ * With `asChild` the child (a link) is rendered as the item and must hold its own content.
33
+ */
34
+ export declare const DropdownMenuItem: React.ForwardRefExoticComponent<DropdownMenuItemProps & React.RefAttributes<HTMLDivElement>>;
35
+ export interface DropdownMenuCheckboxItemProps extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem> {
36
+ shortcut?: string | string[];
37
+ description?: React.ReactNode;
38
+ }
39
+ /** A toggle (`menuitemcheckbox`). Selecting closes the menu; call `event.preventDefault()` in `onSelect` to keep it open (column toggles). */
40
+ export declare const DropdownMenuCheckboxItem: React.ForwardRefExoticComponent<DropdownMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>>;
41
+ export declare const DropdownMenuRadioGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
42
+ export interface DropdownMenuRadioItemProps extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem> {
43
+ shortcut?: string | string[];
44
+ description?: React.ReactNode;
45
+ }
46
+ /** One choice inside a `DropdownMenuRadioGroup` (`menuitemradio`). */
47
+ export declare const DropdownMenuRadioItem: React.ForwardRefExoticComponent<DropdownMenuRadioItemProps & React.RefAttributes<HTMLDivElement>>;
48
+ export declare const DropdownMenuLabel: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
49
+ inset?: boolean;
50
+ } & React.RefAttributes<HTMLDivElement>>;
51
+ export declare const DropdownMenuSeparator: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
52
+ /** Trailing text hint (when you don't want keycaps). */
53
+ export declare function DropdownMenuShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): React.JSX.Element;
54
+ export interface DropdownMenuSubTriggerProps extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> {
55
+ icon?: React.ReactNode;
56
+ inset?: boolean;
57
+ }
58
+ /** Opens a submenu on hover, Enter, Space or → (← in RTL). */
59
+ export declare const DropdownMenuSubTrigger: React.ForwardRefExoticComponent<DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>>;
60
+ /** A submenu panel. It is one layer deeper, so it is opaque in glass mode. */
61
+ export declare const DropdownMenuSubContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
62
+ size?: "sm" | "md";
63
+ } & React.RefAttributes<HTMLDivElement>>;
64
+ /** Renders `MenuEntry[]` as dropdown items (use inside your own `DropdownMenuContent`). */
65
+ export declare function DropdownMenuEntries({ items }: {
66
+ items: MenuEntry[];
67
+ }): React.JSX.Element;
68
+ declare const actionMenuLabels: {
69
+ trigger: string;
70
+ };
71
+ export type ActionMenuLabels = typeof actionMenuLabels;
72
+ export interface ActionMenuProps extends Omit<DropdownMenuContentProps, "children"> {
73
+ /** The menu model, shared with Context Menu and Command. Entries with a failing `permission` are hidden. */
74
+ items: MenuEntry[];
75
+ /** Custom trigger element (rendered with `asChild`). Default: a "⋯" IconButton. */
76
+ trigger?: React.ReactElement;
77
+ /** Accessible name of the default trigger. Default "More actions". */
78
+ triggerLabel?: string;
79
+ /** Size of the default trigger. Default `"sm"`. */
80
+ triggerSize?: "xs" | "sm" | "md";
81
+ open?: boolean;
82
+ defaultOpen?: boolean;
83
+ onOpenChange?: (open: boolean) => void;
84
+ /** Non-modal: the page stays scrollable and interactive while open. Default `true` (modal). */
85
+ modal?: boolean;
86
+ labels?: Partial<ActionMenuLabels>;
87
+ }
88
+ /**
89
+ * A one-line menu from data — the "⋯" in a table row, card or toolbar.
90
+ *
91
+ * ```tsx
92
+ * <ActionMenu items={[
93
+ * { id: "edit", label: "Edit", icon: <Pencil />, shortcut: "mod+e", onSelect: edit },
94
+ * { type: "separator" },
95
+ * { id: "trash", label: "Move to trash", icon: <Trash2 />, tone: "danger", onSelect: trash },
96
+ * ]} />
97
+ * ```
98
+ */
99
+ export declare function ActionMenu({ items, trigger, triggerLabel, triggerSize, open, defaultOpen, onOpenChange, modal, labels, align, ...contentProps }: ActionMenuProps): React.JSX.Element | null;
100
+ export {};
@@ -0,0 +1,102 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
5
+ import { MoreHorizontal } from "lucide-react";
6
+ import { cn } from "../lib/cn.js";
7
+ import { usePortalContainer } from "../lib/theme-scope.js";
8
+ import { Layer } from "../lib/layer.js";
9
+ import { useLabels } from "../lib/labels.js";
10
+ import { MenuCheckIcon, MenuEntries, MenuItemContent, MenuRadioDot, MenuSizeContext, menuContentVariants, menuIndicatorClass, menuItemClass, menuLabelClass, menuSeparatorClass, useVisibleEntries, } from "../lib/menu.js";
11
+ import { IconButton } from "./button.js";
12
+ /** Root. Controlled (`open` / `onOpenChange`) or uncontrolled. */
13
+ export const DropdownMenu = DropdownMenuPrimitive.Root;
14
+ export const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
15
+ export const DropdownMenuGroup = DropdownMenuPrimitive.Group;
16
+ export const DropdownMenuSub = DropdownMenuPrimitive.Sub;
17
+ /** The menu panel. Portals into the nearest `ThemeScope`; only the first layer blurs in glass mode. */
18
+ export const DropdownMenuContent = React.forwardRef(function DropdownMenuContent({ className, size = "md", sideOffset = 6, collisionPadding = 12, align = "start", ...props }, ref) {
19
+ const container = usePortalContainer();
20
+ return (_jsx(DropdownMenuPrimitive.Portal, { container: container, children: _jsx(MenuSizeContext.Provider, { value: size, children: _jsx(Layer, { asChild: true, children: _jsx(DropdownMenuPrimitive.Content, { ref: ref, "data-slot": "dropdown-menu-content", sideOffset: sideOffset, collisionPadding: collisionPadding, align: align, className: cn(menuContentVariants({ size }), "max-h-(--radix-dropdown-menu-content-available-height)", className), ...props }) }) }) }));
21
+ });
22
+ /**
23
+ * One action. `onSelect` fires on click, Enter and Space, then the menu closes; call
24
+ * `event.preventDefault()` in `onSelect` to keep it open (async actions).
25
+ * With `asChild` the child (a link) is rendered as the item and must hold its own content.
26
+ */
27
+ export const DropdownMenuItem = React.forwardRef(function DropdownMenuItem({ className, icon, description, shortcut, badge, tone = "default", inset, asChild, children, ...props }, ref) {
28
+ const size = React.useContext(MenuSizeContext);
29
+ return (_jsx(DropdownMenuPrimitive.Item, { ref: ref, "data-slot": "dropdown-menu-item", "data-tone": tone, asChild: asChild, className: menuItemClass({ size, tone, inset, className }), ...props, children: asChild ? (children) : (_jsx(MenuItemContent, { icon: icon, description: description, shortcut: shortcut, badge: badge, children: children })) }));
30
+ });
31
+ /** A toggle (`menuitemcheckbox`). Selecting closes the menu; call `event.preventDefault()` in `onSelect` to keep it open (column toggles). */
32
+ export const DropdownMenuCheckboxItem = React.forwardRef(function DropdownMenuCheckboxItem({ className, shortcut, description, children, ...props }, ref) {
33
+ const size = React.useContext(MenuSizeContext);
34
+ return (_jsxs(DropdownMenuPrimitive.CheckboxItem, { ref: ref, "data-slot": "dropdown-menu-checkbox-item", className: menuItemClass({ size, inset: true, className }), ...props, children: [_jsx("span", { className: menuIndicatorClass, children: _jsx(DropdownMenuPrimitive.ItemIndicator, { children: _jsx(MenuCheckIcon, {}) }) }), _jsx(MenuItemContent, { shortcut: shortcut, description: description, children: children })] }));
35
+ });
36
+ export const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
37
+ /** One choice inside a `DropdownMenuRadioGroup` (`menuitemradio`). */
38
+ export const DropdownMenuRadioItem = React.forwardRef(function DropdownMenuRadioItem({ className, shortcut, description, children, ...props }, ref) {
39
+ const size = React.useContext(MenuSizeContext);
40
+ return (_jsxs(DropdownMenuPrimitive.RadioItem, { ref: ref, "data-slot": "dropdown-menu-radio-item", className: menuItemClass({ size, inset: true, className }), ...props, children: [_jsx("span", { className: menuIndicatorClass, children: _jsx(DropdownMenuPrimitive.ItemIndicator, { children: _jsx(MenuRadioDot, {}) }) }), _jsx(MenuItemContent, { shortcut: shortcut, description: description, children: children })] }));
41
+ });
42
+ export const DropdownMenuLabel = React.forwardRef(function DropdownMenuLabel({ className, inset, ...props }, ref) {
43
+ return _jsx(DropdownMenuPrimitive.Label, { ref: ref, "data-slot": "dropdown-menu-label", className: cn(menuLabelClass, inset && "ps-8", className), ...props });
44
+ });
45
+ export const DropdownMenuSeparator = React.forwardRef(function DropdownMenuSeparator({ className, ...props }, ref) {
46
+ return _jsx(DropdownMenuPrimitive.Separator, { ref: ref, "data-slot": "dropdown-menu-separator", className: cn(menuSeparatorClass, className), ...props });
47
+ });
48
+ /** Trailing text hint (when you don't want keycaps). */
49
+ export function DropdownMenuShortcut({ className, ...props }) {
50
+ return _jsx("span", { "data-slot": "dropdown-menu-shortcut", className: cn("ms-auto ps-4 font-mono text-[11px] tracking-wide text-fg-subtle", className), ...props });
51
+ }
52
+ /** Opens a submenu on hover, Enter, Space or → (← in RTL). */
53
+ export const DropdownMenuSubTrigger = React.forwardRef(function DropdownMenuSubTrigger({ className, icon, inset, children, ...props }, ref) {
54
+ const size = React.useContext(MenuSizeContext);
55
+ return (_jsx(DropdownMenuPrimitive.SubTrigger, { ref: ref, "data-slot": "dropdown-menu-sub-trigger", className: menuItemClass({ size, inset, className: cn("data-[state=open]:bg-hover", className) }), ...props, children: _jsx(MenuItemContent, { icon: icon, chevron: true, children: children }) }));
56
+ });
57
+ /** A submenu panel. It is one layer deeper, so it is opaque in glass mode. */
58
+ export const DropdownMenuSubContent = React.forwardRef(function DropdownMenuSubContent({ className, size: sizeProp, sideOffset = 4, collisionPadding = 12, ...props }, ref) {
59
+ const container = usePortalContainer();
60
+ const parentSize = React.useContext(MenuSizeContext);
61
+ const size = sizeProp ?? parentSize;
62
+ return (_jsx(DropdownMenuPrimitive.Portal, { container: container, children: _jsx(Layer, { asChild: true, children: _jsx(DropdownMenuPrimitive.SubContent, { ref: ref, "data-slot": "dropdown-menu-sub-content", sideOffset: sideOffset, alignOffset: -5, collisionPadding: collisionPadding, className: cn(menuContentVariants({ size }), "max-h-(--radix-dropdown-menu-content-available-height)", className), ...props }) }) }));
63
+ });
64
+ /* ------------------------------------------------------------------ */
65
+ /* Data-driven */
66
+ /* ------------------------------------------------------------------ */
67
+ const dropdownParts = {
68
+ Item: DropdownMenuItem,
69
+ CheckboxItem: DropdownMenuCheckboxItem,
70
+ RadioGroup: DropdownMenuRadioGroup,
71
+ RadioItem: DropdownMenuRadioItem,
72
+ Label: DropdownMenuLabel,
73
+ Separator: DropdownMenuSeparator,
74
+ Group: DropdownMenuGroup,
75
+ Sub: DropdownMenuSub,
76
+ SubTrigger: DropdownMenuSubTrigger,
77
+ SubContent: DropdownMenuSubContent,
78
+ };
79
+ /** Renders `MenuEntry[]` as dropdown items (use inside your own `DropdownMenuContent`). */
80
+ export function DropdownMenuEntries({ items }) {
81
+ const visible = useVisibleEntries(items);
82
+ return _jsx(MenuEntries, { entries: visible, parts: dropdownParts });
83
+ }
84
+ const actionMenuLabels = { trigger: "More actions" };
85
+ /**
86
+ * A one-line menu from data — the "⋯" in a table row, card or toolbar.
87
+ *
88
+ * ```tsx
89
+ * <ActionMenu items={[
90
+ * { id: "edit", label: "Edit", icon: <Pencil />, shortcut: "mod+e", onSelect: edit },
91
+ * { type: "separator" },
92
+ * { id: "trash", label: "Move to trash", icon: <Trash2 />, tone: "danger", onSelect: trash },
93
+ * ]} />
94
+ * ```
95
+ */
96
+ export function ActionMenu({ items, trigger, triggerLabel, triggerSize = "sm", open, defaultOpen, onOpenChange, modal, labels, align = "end", ...contentProps }) {
97
+ const t = useLabels("actionMenu", actionMenuLabels, labels);
98
+ const visible = useVisibleEntries(items);
99
+ if (visible.length === 0)
100
+ return null;
101
+ return (_jsxs(DropdownMenu, { open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, modal: modal, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: trigger ?? (_jsx(IconButton, { label: triggerLabel ?? t("trigger"), size: triggerSize, tooltip: false, children: _jsx(MoreHorizontal, {}) })) }), _jsx(DropdownMenuContent, { align: align, ...contentProps, children: _jsx(MenuEntries, { entries: visible, parts: dropdownParts }) })] }));
102
+ }
@@ -0,0 +1,166 @@
1
+ import * as React from "react";
2
+ import type { MenuEntry } from "../lib/variants.js";
3
+ import { TabsContent } from "./tabs.js";
4
+ declare const editorLabels: {
5
+ panel: string;
6
+ togglePanel: string;
7
+ resizePanel: string;
8
+ focusMode: string;
9
+ exitFocusMode: string;
10
+ moreActions: string;
11
+ dirty: string;
12
+ saving: string;
13
+ saved: string;
14
+ savedJustNow: string;
15
+ savedPlain: string;
16
+ error: string;
17
+ retry: string;
18
+ offline: string;
19
+ loading: string;
20
+ };
21
+ export type EditorLayoutLabels = Partial<typeof editorLabels>;
22
+ export interface EditorLayoutProps extends React.HTMLAttributes<HTMLDivElement> {
23
+ /** Side panel visibility (controlled). On narrow layouts this drives the sheet. */
24
+ panelOpen?: boolean;
25
+ /** Default `true` on wide layouts. Narrow layouts always start with the sheet closed. */
26
+ defaultPanelOpen?: boolean;
27
+ onPanelOpenChange?: (open: boolean) => void;
28
+ /** Panel width in px (controlled with `onPanelWidthChange`). */
29
+ panelWidth?: number;
30
+ /** Default 320. */
31
+ defaultPanelWidth?: number;
32
+ onPanelWidthChange?: (width: number) => void;
33
+ /** Drag (or arrow-key) the panel edge. */
34
+ resizable?: boolean;
35
+ /** Hides the panel and dims the bar until the pointer moves. `mod+shift+f` toggles it; Esc leaves it. */
36
+ focusMode?: boolean;
37
+ defaultFocusMode?: boolean;
38
+ /**
39
+ * Called when focus mode changes — hide the App shell sidebar from here
40
+ * (`<AppShell showSidebar={!focus}>`).
41
+ */
42
+ onFocusModeChange?: (on: boolean) => void;
43
+ /** Locked version: bar actions hidden, panel controls disabled. Show an Alert in `EditorCanvas notice`. */
44
+ readOnly?: boolean;
45
+ /**
46
+ * `"page"` (default): the page scrolls, bar and panel stick under the top bar.
47
+ * `"panes"`: the layout fills its parent's height and canvas and panel scroll on their own.
48
+ */
49
+ scroll?: "page" | "panes";
50
+ /** Where the bar sticks in `"page"` mode. Default `"var(--topbar-h)"`. Use `0` in your own scroll box. */
51
+ stickyTop?: number | string;
52
+ /** Register `mod+shift+,` (panel) and `mod+shift+f` (focus mode). Default `true`. */
53
+ shortcuts?: boolean;
54
+ labels?: EditorLayoutLabels;
55
+ }
56
+ /**
57
+ * The "edit one thing" page: a sticky bar with back link, title, save status and publish
58
+ * actions; a wide content canvas; and a side panel of collapsible settings sections (status,
59
+ * SEO, taxonomy…). Below 44rem (704px) of its own width the panel opens as a non-modal sheet.
60
+ *
61
+ * ```tsx
62
+ * <EditorLayout>
63
+ * <EditorBar back={{ href: "/posts", label: "Posts" }} title="Spring menu launch"
64
+ * status={<SaveStatus state="saved" at={savedAt} />}
65
+ * actions={<><Button>Preview</Button><Button variant="primary">Publish</Button></>} />
66
+ * <EditorCanvas width="prose">{editor}</EditorCanvas>
67
+ * <EditorPanel>
68
+ * <EditorPanelSection id="status" title="Status" summary="Draft">…</EditorPanelSection>
69
+ * </EditorPanel>
70
+ * </EditorLayout>
71
+ * ```
72
+ */
73
+ export declare const EditorLayout: React.ForwardRefExoticComponent<EditorLayoutProps & React.RefAttributes<HTMLDivElement>>;
74
+ export interface EditorBarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
75
+ /** "← Posts". The label hides on narrow layouts (it stays the accessible name). */
76
+ back?: {
77
+ href: string;
78
+ label: string;
79
+ };
80
+ /** Document title — text or an inline-editable title. */
81
+ title?: React.ReactNode;
82
+ /** `SaveStatus`. */
83
+ status?: React.ReactNode;
84
+ /** Primary actions, always visible ("Publish"). Hidden when the layout is `readOnly`. */
85
+ actions?: React.ReactNode;
86
+ /** Secondary actions ("Preview", "Schedule"); hidden below 640px — mirror them in `menu`. */
87
+ secondaryActions?: React.ReactNode;
88
+ /** "⋯" menu at the end. */
89
+ menu?: MenuEntry[];
90
+ /** Show the panel toggle button. Default `true`. */
91
+ panelToggle?: boolean;
92
+ /** Show the focus-mode button. Default `false` (the shortcut always works). */
93
+ focusToggle?: boolean;
94
+ labels?: EditorLayoutLabels;
95
+ }
96
+ /** The sticky publish bar: back, title, save status, actions, panel toggle. */
97
+ export declare const EditorBar: React.ForwardRefExoticComponent<EditorBarProps & React.RefAttributes<HTMLDivElement>>;
98
+ export type SaveState = "idle" | "dirty" | "saving" | "saved" | "error" | "offline";
99
+ export interface SaveStatusProps extends React.HTMLAttributes<HTMLSpanElement> {
100
+ state: SaveState;
101
+ /** Time of the last save, for "Saved 2 min ago". */
102
+ at?: Date | number;
103
+ /** Shows "Retry" in the error state. */
104
+ onRetry?: () => void;
105
+ /** Warn before leaving the page while `dirty` or `saving` (`beforeunload`). Default `true`. */
106
+ guard?: boolean;
107
+ /** Fixed "now" for docs and tests. */
108
+ now?: Date | number;
109
+ labels?: EditorLayoutLabels;
110
+ }
111
+ /**
112
+ * Where the document's changes are: "Unsaved changes" · "Saving…" · "Saved 2 min ago" ·
113
+ * "Couldn't save · Retry" · "Offline · changes kept locally". A polite status; the error is an alert.
114
+ */
115
+ export declare const SaveStatus: React.ForwardRefExoticComponent<SaveStatusProps & React.RefAttributes<HTMLSpanElement>>;
116
+ export interface EditorCanvasProps extends React.HTMLAttributes<HTMLDivElement> {
117
+ /** Column width: `prose` 720px (default) · `wide` 1080px · `full`. */
118
+ width?: "prose" | "wide" | "full";
119
+ /** `surface` (default) or `scene` — the bare page background for distraction-free writing. */
120
+ tone?: "surface" | "scene";
121
+ /** Banner above the content (a read-only Alert, a conflict warning). */
122
+ notice?: React.ReactNode;
123
+ /** Skeleton title and paragraphs. */
124
+ loading?: boolean;
125
+ labels?: EditorLayoutLabels;
126
+ }
127
+ /** The writing area: a centred column with generous margins. */
128
+ export declare const EditorCanvas: React.ForwardRefExoticComponent<EditorCanvasProps & React.RefAttributes<HTMLDivElement>>;
129
+ export interface EditorPanelProps extends Omit<React.HTMLAttributes<HTMLElement>, "defaultValue"> {
130
+ /** Panel tabs ("Document" / "Block"). Put each tab's sections in an `EditorPanelContent`. */
131
+ tabs?: {
132
+ id: string;
133
+ label: string;
134
+ }[];
135
+ value?: string;
136
+ defaultValue?: string;
137
+ onValueChange?: (id: string) => void;
138
+ /** Sticky footer inside the panel (e.g. "Move to trash"). */
139
+ footer?: React.ReactNode;
140
+ /** Accessible name of the complementary landmark. Default "Settings". */
141
+ "aria-label"?: string;
142
+ labels?: EditorLayoutLabels;
143
+ }
144
+ /** The side panel: `<aside>` of collapsible settings sections; a non-modal sheet on narrow layouts. */
145
+ export declare const EditorPanel: React.ForwardRefExoticComponent<EditorPanelProps & React.RefAttributes<HTMLElement>>;
146
+ export interface EditorPanelContentProps extends React.ComponentPropsWithoutRef<typeof TabsContent> {
147
+ }
148
+ /** The sections of one panel tab (`value` matches a tab `id`). */
149
+ export declare const EditorPanelContent: React.ForwardRefExoticComponent<EditorPanelContentProps & React.RefAttributes<HTMLDivElement>>;
150
+ export interface EditorPanelSectionProps extends Omit<React.HTMLAttributes<HTMLElement>, "title"> {
151
+ /** Stable id: the open/closed state is remembered per id (localStorage). */
152
+ id?: string;
153
+ title: React.ReactNode;
154
+ /** One-line summary shown while folded ("Draft · Visible to everyone"). */
155
+ summary?: React.ReactNode;
156
+ defaultOpen?: boolean;
157
+ open?: boolean;
158
+ onOpenChange?: (open: boolean) => void;
159
+ /** Controls at the end of the header (kept outside the toggle button). */
160
+ actions?: React.ReactNode;
161
+ /** Heading level to fit the page outline. Default 2. */
162
+ headingLevel?: 2 | 3;
163
+ }
164
+ /** A folding meta box in the panel: Status, Permalink, Categories, Featured image, SEO. */
165
+ export declare const EditorPanelSection: React.ForwardRefExoticComponent<EditorPanelSectionProps & React.RefAttributes<HTMLElement>>;
166
+ export {};