@fastsprout/reacd-shadcn 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (643) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +28 -2
  3. package/THIRD_PARTY_NOTICES.md +21 -0
  4. package/dist/accordion/accordion.adapter.d.ts +2 -0
  5. package/dist/accordion/accordion.adapter.js +10 -0
  6. package/dist/action-menu/menu-content.d.ts +5 -0
  7. package/dist/action-menu/menu-content.js +15 -0
  8. package/dist/action-menu/menu-items.d.ts +5 -0
  9. package/dist/action-menu/menu-items.js +46 -0
  10. package/dist/action-menu/menu-surface.d.ts +7 -0
  11. package/dist/action-menu/menu-surface.js +15 -0
  12. package/dist/action-menu/use-menu-frame.d.ts +8 -0
  13. package/dist/action-menu/use-menu-frame.js +24 -0
  14. package/dist/alert/alert.adapter.d.ts +2 -0
  15. package/dist/alert/alert.adapter.js +13 -0
  16. package/dist/app/app.adapter.d.ts +2 -0
  17. package/dist/app/app.adapter.js +7 -0
  18. package/dist/auth-form/auth-form.adapter.d.ts +2 -0
  19. package/dist/auth-form/auth-form.adapter.js +21 -0
  20. package/dist/avatar/avatar.adapter.d.ts +2 -0
  21. package/dist/avatar/avatar.adapter.js +8 -0
  22. package/dist/avatar-group/avatar-group.adapter.d.ts +2 -0
  23. package/dist/avatar-group/avatar-group.adapter.js +9 -0
  24. package/dist/avatar-group/overflow.adapter.d.ts +5 -0
  25. package/dist/avatar-group/overflow.adapter.js +5 -0
  26. package/dist/badge/badge.adapter.d.ts +2 -0
  27. package/dist/badge/badge.adapter.js +9 -0
  28. package/dist/banner/banner.adapter.d.ts +2 -0
  29. package/dist/banner/banner.adapter.js +12 -0
  30. package/dist/blog-post/blog-post.adapter.d.ts +3 -0
  31. package/dist/blog-post/blog-post.adapter.js +5 -0
  32. package/dist/blog-posts/blog-posts.adapter.d.ts +3 -0
  33. package/dist/blog-posts/blog-posts.adapter.js +7 -0
  34. package/dist/breadcrumb/breadcrumb.adapter.d.ts +2 -0
  35. package/dist/breadcrumb/breadcrumb.adapter.js +13 -0
  36. package/dist/button/button.adapter.d.ts +2 -0
  37. package/dist/button/button.adapter.js +8 -0
  38. package/dist/calendar/calendar-date.d.ts +7 -0
  39. package/dist/calendar/calendar-date.js +24 -0
  40. package/dist/calendar/calendar-day-button.d.ts +2 -0
  41. package/dist/calendar/calendar-day-button.js +9 -0
  42. package/dist/calendar/calendar-form-bridge.d.ts +6 -0
  43. package/dist/calendar/calendar-form-bridge.js +11 -0
  44. package/dist/calendar/calendar-localization.d.ts +15 -0
  45. package/dist/calendar/calendar-localization.js +28 -0
  46. package/dist/calendar/calendar.adapter.d.ts +2 -0
  47. package/dist/calendar/calendar.adapter.js +47 -0
  48. package/dist/card/card.adapter.d.ts +2 -0
  49. package/dist/card/card.adapter.js +13 -0
  50. package/dist/carousel/carousel-panel.d.ts +7 -0
  51. package/dist/carousel/carousel-panel.js +8 -0
  52. package/dist/carousel/carousel.adapter.d.ts +2 -0
  53. package/dist/carousel/carousel.adapter.js +43 -0
  54. package/dist/carousel/focus-boundary.d.ts +16 -0
  55. package/dist/carousel/focus-boundary.js +19 -0
  56. package/dist/changelog-version/changelog-version.adapter.d.ts +3 -0
  57. package/dist/changelog-version/changelog-version.adapter.js +5 -0
  58. package/dist/changelog-versions/changelog-versions.adapter.d.ts +3 -0
  59. package/dist/changelog-versions/changelog-versions.adapter.js +8 -0
  60. package/dist/chart/cartesian.d.ts +5 -0
  61. package/dist/chart/cartesian.js +15 -0
  62. package/dist/chart/chart-graphic.d.ts +2 -0
  63. package/dist/chart/chart-graphic.js +14 -0
  64. package/dist/chart/chart-table.d.ts +2 -0
  65. package/dist/chart/chart-table.js +6 -0
  66. package/dist/chart/chart.adapter.d.ts +2 -0
  67. package/dist/chart/chart.adapter.js +17 -0
  68. package/dist/chart/legend.d.ts +3 -0
  69. package/dist/chart/legend.js +14 -0
  70. package/dist/chart/patterns.d.ts +9 -0
  71. package/dist/chart/patterns.js +8 -0
  72. package/dist/chat-attachment/chat-attachment.adapter.d.ts +2 -0
  73. package/dist/chat-attachment/chat-attachment.adapter.js +12 -0
  74. package/dist/chat-disclosure/chat-disclosure.d.ts +9 -0
  75. package/dist/chat-disclosure/chat-disclosure.js +10 -0
  76. package/dist/chat-message/chat-message.adapter.d.ts +2 -0
  77. package/dist/chat-message/chat-message.adapter.js +12 -0
  78. package/dist/chat-messages/chat-messages.adapter.d.ts +2 -0
  79. package/dist/chat-messages/chat-messages.adapter.js +13 -0
  80. package/dist/chat-messages/use-follow-latest.d.ts +6 -0
  81. package/dist/chat-messages/use-follow-latest.js +33 -0
  82. package/dist/chat-palette/chat-palette.adapter.d.ts +2 -0
  83. package/dist/chat-palette/chat-palette.adapter.js +4 -0
  84. package/dist/chat-prompt/chat-prompt.adapter.d.ts +2 -0
  85. package/dist/chat-prompt/chat-prompt.adapter.js +30 -0
  86. package/dist/chat-prompt/use-prompt-controls.d.ts +22 -0
  87. package/dist/chat-prompt/use-prompt-controls.js +69 -0
  88. package/dist/chat-prompt/use-prompt-escape.d.ts +5 -0
  89. package/dist/chat-prompt/use-prompt-escape.js +39 -0
  90. package/dist/chat-prompt-submit/chat-prompt-submit.adapter.d.ts +2 -0
  91. package/dist/chat-prompt-submit/chat-prompt-submit.adapter.js +14 -0
  92. package/dist/chat-prompt-submit/prompt-action.d.ts +12 -0
  93. package/dist/chat-prompt-submit/prompt-action.js +45 -0
  94. package/dist/chat-reasoning/chat-reasoning.adapter.d.ts +2 -0
  95. package/dist/chat-reasoning/chat-reasoning.adapter.js +15 -0
  96. package/dist/chat-reasoning/use-reasoning-disclosure.d.ts +10 -0
  97. package/dist/chat-reasoning/use-reasoning-disclosure.js +23 -0
  98. package/dist/chat-shimmer/chat-shimmer.adapter.d.ts +2 -0
  99. package/dist/chat-shimmer/chat-shimmer.adapter.js +5 -0
  100. package/dist/chat-tool/chat-tool.adapter.d.ts +2 -0
  101. package/dist/chat-tool/chat-tool.adapter.js +7 -0
  102. package/dist/checkbox/checkbox.adapter.d.ts +2 -0
  103. package/dist/checkbox/checkbox.adapter.js +27 -0
  104. package/dist/checkbox-group/checkbox-group.adapter.d.ts +2 -0
  105. package/dist/checkbox-group/checkbox-group.adapter.js +18 -0
  106. package/dist/chip/chip.adapter.d.ts +2 -0
  107. package/dist/chip/chip.adapter.js +12 -0
  108. package/dist/code-editor/code-editor.adapter.d.ts +2 -0
  109. package/dist/code-editor/code-editor.adapter.js +9 -0
  110. package/dist/collapsible/collapsible.adapter.d.ts +2 -0
  111. package/dist/collapsible/collapsible.adapter.js +11 -0
  112. package/dist/color-mode-avatar/color-mode-avatar.adapter.d.ts +2 -0
  113. package/dist/color-mode-avatar/color-mode-avatar.adapter.js +6 -0
  114. package/dist/color-mode-button/color-mode-button.adapter.d.ts +2 -0
  115. package/dist/color-mode-button/color-mode-button.adapter.js +11 -0
  116. package/dist/color-mode-image/color-mode-image.adapter.d.ts +2 -0
  117. package/dist/color-mode-image/color-mode-image.adapter.js +6 -0
  118. package/dist/color-mode-image/mode-image.d.ts +4 -0
  119. package/dist/color-mode-image/mode-image.js +8 -0
  120. package/dist/color-mode-select/color-mode-select.adapter.d.ts +2 -0
  121. package/dist/color-mode-select/color-mode-select.adapter.js +16 -0
  122. package/dist/color-mode-switch/color-mode-switch.adapter.d.ts +2 -0
  123. package/dist/color-mode-switch/color-mode-switch.adapter.js +5 -0
  124. package/dist/color-picker/color-hex.d.ts +11 -0
  125. package/dist/color-picker/color-hex.js +57 -0
  126. package/dist/color-picker/color-picker.adapter.d.ts +2 -0
  127. package/dist/color-picker/color-picker.adapter.js +20 -0
  128. package/dist/color-picker/use-color-model.d.ts +6 -0
  129. package/dist/color-picker/use-color-model.js +18 -0
  130. package/dist/command-palette/command-palette.adapter.d.ts +2 -0
  131. package/dist/command-palette/command-palette.adapter.js +44 -0
  132. package/dist/container/container.adapter.d.ts +2 -0
  133. package/dist/container/container.adapter.js +4 -0
  134. package/dist/content-navigation/content-navigation.adapter.d.ts +2 -0
  135. package/dist/content-navigation/content-navigation.adapter.js +10 -0
  136. package/dist/content-search/content-search.adapter.d.ts +2 -0
  137. package/dist/content-search/content-search.adapter.js +27 -0
  138. package/dist/content-search-button/content-search-button.adapter.d.ts +2 -0
  139. package/dist/content-search-button/content-search-button.adapter.js +6 -0
  140. package/dist/content-surround/content-surround.adapter.d.ts +2 -0
  141. package/dist/content-surround/content-surround.adapter.js +14 -0
  142. package/dist/content-toc/content-toc.adapter.d.ts +2 -0
  143. package/dist/content-toc/content-toc.adapter.js +10 -0
  144. package/dist/context-menu/context-menu.adapter.d.ts +2 -0
  145. package/dist/context-menu/context-menu.adapter.js +13 -0
  146. package/dist/context-menu/keyboard-trigger.d.ts +2 -0
  147. package/dist/context-menu/keyboard-trigger.js +13 -0
  148. package/dist/dashboard-group/dashboard-group.adapter.d.ts +3 -0
  149. package/dist/dashboard-group/dashboard-group.adapter.js +54 -0
  150. package/dist/dashboard-navbar/dashboard-navbar.adapter.d.ts +2 -0
  151. package/dist/dashboard-navbar/dashboard-navbar.adapter.js +12 -0
  152. package/dist/dashboard-panel/dashboard-panel.adapter.d.ts +2 -0
  153. package/dist/dashboard-panel/dashboard-panel.adapter.js +18 -0
  154. package/dist/dashboard-resize-handle/dashboard-resize-handle.adapter.d.ts +2 -0
  155. package/dist/dashboard-resize-handle/dashboard-resize-handle.adapter.js +46 -0
  156. package/dist/dashboard-search/dashboard-search.adapter.d.ts +2 -0
  157. package/dist/dashboard-search/dashboard-search.adapter.js +24 -0
  158. package/dist/dashboard-search-button/dashboard-search-button.adapter.d.ts +2 -0
  159. package/dist/dashboard-search-button/dashboard-search-button.adapter.js +6 -0
  160. package/dist/dashboard-sidebar/dashboard-sidebar.adapter.d.ts +2 -0
  161. package/dist/dashboard-sidebar/dashboard-sidebar.adapter.js +19 -0
  162. package/dist/dashboard-sidebar-collapse/dashboard-sidebar-collapse.adapter.d.ts +2 -0
  163. package/dist/dashboard-sidebar-collapse/dashboard-sidebar-collapse.adapter.js +22 -0
  164. package/dist/dashboard-sidebar-toggle/dashboard-sidebar-toggle.adapter.d.ts +2 -0
  165. package/dist/dashboard-sidebar-toggle/dashboard-sidebar-toggle.adapter.js +22 -0
  166. package/dist/dashboard-toolbar/dashboard-toolbar.adapter.d.ts +2 -0
  167. package/dist/dashboard-toolbar/dashboard-toolbar.adapter.js +4 -0
  168. package/dist/data-table/data-table.adapter.d.ts +2 -0
  169. package/dist/data-table/data-table.adapter.js +28 -0
  170. package/dist/data-table/filters.adapter.d.ts +8 -0
  171. package/dist/data-table/filters.adapter.js +40 -0
  172. package/dist/data-table/pagination.adapter.d.ts +2 -0
  173. package/dist/data-table/pagination.adapter.js +21 -0
  174. package/dist/divider/divider.adapter.d.ts +1 -0
  175. package/dist/divider/divider.adapter.js +5 -0
  176. package/dist/drawer/drawer.adapter.d.ts +2 -0
  177. package/dist/drawer/drawer.adapter.js +14 -0
  178. package/dist/dropdown-menu/dropdown-menu.adapter.d.ts +2 -0
  179. package/dist/dropdown-menu/dropdown-menu.adapter.js +14 -0
  180. package/dist/editor/drag-session.d.ts +7 -0
  181. package/dist/editor/drag-session.js +41 -0
  182. package/dist/editor/editor.adapter.d.ts +2 -0
  183. package/dist/editor/editor.adapter.js +21 -0
  184. package/dist/editor/publish-edit.d.ts +3 -0
  185. package/dist/editor/publish-edit.js +12 -0
  186. package/dist/editor/use-editor-port.d.ts +5 -0
  187. package/dist/editor/use-editor-port.js +40 -0
  188. package/dist/editor/use-editor-session.d.ts +14 -0
  189. package/dist/editor/use-editor-session.js +198 -0
  190. package/dist/editor-conversion/attribute.d.ts +3 -0
  191. package/dist/editor-conversion/attribute.js +3 -0
  192. package/dist/editor-conversion/budget.d.ts +2 -0
  193. package/dist/editor-conversion/budget.js +61 -0
  194. package/dist/editor-conversion/from-sdk-block.d.ts +5 -0
  195. package/dist/editor-conversion/from-sdk-block.js +73 -0
  196. package/dist/editor-conversion/from-sdk-inline.d.ts +3 -0
  197. package/dist/editor-conversion/from-sdk-inline.js +57 -0
  198. package/dist/editor-conversion/from-sdk.d.ts +4 -0
  199. package/dist/editor-conversion/from-sdk.js +35 -0
  200. package/dist/editor-conversion/id-allocator.d.ts +2 -0
  201. package/dist/editor-conversion/id-allocator.js +29 -0
  202. package/dist/editor-conversion/projection-weight.d.ts +8 -0
  203. package/dist/editor-conversion/projection-weight.js +124 -0
  204. package/dist/editor-conversion/text-chunks.d.ts +6 -0
  205. package/dist/editor-conversion/text-chunks.js +18 -0
  206. package/dist/editor-conversion/to-sdk.d.ts +3 -0
  207. package/dist/editor-conversion/to-sdk.js +58 -0
  208. package/dist/editor-drag-handle/editor-drag-handle.adapter.d.ts +2 -0
  209. package/dist/editor-drag-handle/editor-drag-handle.adapter.js +54 -0
  210. package/dist/editor-drag-handle/use-drag-session.d.ts +9 -0
  211. package/dist/editor-drag-handle/use-drag-session.js +22 -0
  212. package/dist/editor-emoji-menu/editor-emoji-menu.adapter.d.ts +2 -0
  213. package/dist/editor-emoji-menu/editor-emoji-menu.adapter.js +9 -0
  214. package/dist/editor-mention-menu/editor-mention-menu.adapter.d.ts +2 -0
  215. package/dist/editor-mention-menu/editor-mention-menu.adapter.js +17 -0
  216. package/dist/editor-menu/lookup-controller.d.ts +24 -0
  217. package/dist/editor-menu/lookup-controller.js +83 -0
  218. package/dist/editor-menu/menu-panel.d.ts +10 -0
  219. package/dist/editor-menu/menu-panel.js +17 -0
  220. package/dist/editor-menu/menu-plugin.d.ts +3 -0
  221. package/dist/editor-menu/menu-plugin.js +190 -0
  222. package/dist/editor-menu/menu-port.d.ts +3 -0
  223. package/dist/editor-menu/menu-port.js +27 -0
  224. package/dist/editor-menu/menu-store.d.ts +20 -0
  225. package/dist/editor-menu/menu-store.js +92 -0
  226. package/dist/editor-menu/use-editor-menu.d.ts +9 -0
  227. package/dist/editor-menu/use-editor-menu.js +21 -0
  228. package/dist/editor-sdk/apply-paste.d.ts +3 -0
  229. package/dist/editor-sdk/apply-paste.js +12 -0
  230. package/dist/editor-sdk/atom-data.d.ts +7 -0
  231. package/dist/editor-sdk/atom-data.js +41 -0
  232. package/dist/editor-sdk/atoms.d.ts +3 -0
  233. package/dist/editor-sdk/atoms.js +25 -0
  234. package/dist/editor-sdk/block-types.d.ts +1 -0
  235. package/dist/editor-sdk/block-types.js +10 -0
  236. package/dist/editor-sdk/command-chain.d.ts +3 -0
  237. package/dist/editor-sdk/command-chain.js +25 -0
  238. package/dist/editor-sdk/commands.d.ts +5 -0
  239. package/dist/editor-sdk/commands.js +38 -0
  240. package/dist/editor-sdk/controlled-selection.d.ts +2 -0
  241. package/dist/editor-sdk/controlled-selection.js +8 -0
  242. package/dist/editor-sdk/extensions.d.ts +2 -0
  243. package/dist/editor-sdk/extensions.js +21 -0
  244. package/dist/editor-sdk/identity-plugin.d.ts +18 -0
  245. package/dist/editor-sdk/identity-plugin.js +107 -0
  246. package/dist/editor-sdk/identity.d.ts +3 -0
  247. package/dist/editor-sdk/identity.js +28 -0
  248. package/dist/editor-sdk/plain-paste.d.ts +3 -0
  249. package/dist/editor-sdk/plain-paste.js +66 -0
  250. package/dist/editor-sdk/resources.d.ts +5 -0
  251. package/dist/editor-sdk/resources.js +14 -0
  252. package/dist/editor-sdk/select-block.d.ts +2 -0
  253. package/dist/editor-sdk/select-block.js +31 -0
  254. package/dist/editor-sdk/selection-mapping.d.ts +9 -0
  255. package/dist/editor-sdk/selection-mapping.js +92 -0
  256. package/dist/editor-sdk/structural-selection.d.ts +4 -0
  257. package/dist/editor-sdk/structural-selection.js +21 -0
  258. package/dist/editor-suggestion-menu/editor-suggestion-menu.adapter.d.ts +2 -0
  259. package/dist/editor-suggestion-menu/editor-suggestion-menu.adapter.js +13 -0
  260. package/dist/editor-toolbar/editor-toolbar.adapter.d.ts +2 -0
  261. package/dist/editor-toolbar/editor-toolbar.adapter.js +38 -0
  262. package/dist/element/variants.d.ts +5 -0
  263. package/dist/element/variants.js +5 -0
  264. package/dist/empty/empty.adapter.d.ts +2 -0
  265. package/dist/empty/empty.adapter.js +10 -0
  266. package/dist/error/error.adapter.d.ts +2 -0
  267. package/dist/error/error.adapter.js +9 -0
  268. package/dist/field-group/field-group.adapter.d.ts +2 -0
  269. package/dist/field-group/field-group.adapter.js +5 -0
  270. package/dist/file-upload/file-upload.adapter.d.ts +2 -0
  271. package/dist/file-upload/file-upload.adapter.js +60 -0
  272. package/dist/file-upload/intake-validation.d.ts +8 -0
  273. package/dist/file-upload/intake-validation.js +48 -0
  274. package/dist/file-upload/intake.d.ts +36 -0
  275. package/dist/file-upload/intake.js +112 -0
  276. package/dist/file-upload/read-file.d.ts +5 -0
  277. package/dist/file-upload/read-file.js +32 -0
  278. package/dist/footer/footer.adapter.d.ts +2 -0
  279. package/dist/footer/footer.adapter.js +4 -0
  280. package/dist/footer-columns/footer-columns.adapter.d.ts +2 -0
  281. package/dist/footer-columns/footer-columns.adapter.js +8 -0
  282. package/dist/form-field/focus-control.d.ts +1 -0
  283. package/dist/form-field/focus-control.js +21 -0
  284. package/dist/form-field/form-field.adapter.d.ts +2 -0
  285. package/dist/form-field/form-field.adapter.js +22 -0
  286. package/dist/form-menu-shared/request.d.ts +4 -0
  287. package/dist/form-menu-shared/request.js +14 -0
  288. package/dist/grid/grid.adapter.d.ts +2 -0
  289. package/dist/grid/grid.adapter.js +5 -0
  290. package/dist/h-stack/h-stack.adapter.d.ts +2 -0
  291. package/dist/h-stack/h-stack.adapter.js +5 -0
  292. package/dist/header/header-menu.d.ts +7 -0
  293. package/dist/header/header-menu.js +25 -0
  294. package/dist/header/header.adapter.d.ts +2 -0
  295. package/dist/header/header.adapter.js +5 -0
  296. package/dist/icon/icon-map.d.ts +16 -0
  297. package/dist/icon/icon-map.js +17 -0
  298. package/dist/icon/icon.adapter.d.ts +2 -0
  299. package/dist/icon/icon.adapter.js +7 -0
  300. package/dist/index.d.ts +1 -0
  301. package/dist/index.js +1 -0
  302. package/dist/input/input.adapter.d.ts +2 -0
  303. package/dist/input/input.adapter.js +34 -0
  304. package/dist/input/validation-message.d.ts +1 -0
  305. package/dist/input/validation-message.js +13 -0
  306. package/dist/input-date/date-control.d.ts +16 -0
  307. package/dist/input-date/date-control.js +35 -0
  308. package/dist/input-date/input-date.adapter.d.ts +2 -0
  309. package/dist/input-date/input-date.adapter.js +36 -0
  310. package/dist/input-menu/input-menu-form.d.ts +7 -0
  311. package/dist/input-menu/input-menu-form.js +8 -0
  312. package/dist/input-menu/input-menu-popup.d.ts +8 -0
  313. package/dist/input-menu/input-menu-popup.js +13 -0
  314. package/dist/input-menu/input-menu.adapter.d.ts +2 -0
  315. package/dist/input-menu/input-menu.adapter.js +74 -0
  316. package/dist/input-menu/use-input-menu.d.ts +26 -0
  317. package/dist/input-menu/use-input-menu.js +92 -0
  318. package/dist/input-number/input-number.adapter.d.ts +2 -0
  319. package/dist/input-number/input-number.adapter.js +13 -0
  320. package/dist/input-rating/input-rating.adapter.d.ts +2 -0
  321. package/dist/input-rating/input-rating.adapter.js +33 -0
  322. package/dist/input-rating/rating-stars.d.ts +4 -0
  323. package/dist/input-rating/rating-stars.js +9 -0
  324. package/dist/input-tags/input-tags.adapter.d.ts +2 -0
  325. package/dist/input-tags/input-tags.adapter.js +47 -0
  326. package/dist/input-tags/use-tag-draft.d.ts +9 -0
  327. package/dist/input-tags/use-tag-draft.js +43 -0
  328. package/dist/input-time/anchored-time.d.ts +1 -0
  329. package/dist/input-time/anchored-time.js +5 -0
  330. package/dist/input-time/draft-validation.d.ts +1 -0
  331. package/dist/input-time/draft-validation.js +1 -0
  332. package/dist/input-time/focus-draft.d.ts +1 -0
  333. package/dist/input-time/focus-draft.js +1 -0
  334. package/dist/input-time/input-time.adapter.d.ts +2 -0
  335. package/dist/input-time/input-time.adapter.js +32 -0
  336. package/dist/input-time/time-control.d.ts +15 -0
  337. package/dist/input-time/time-control.js +37 -0
  338. package/dist/input-time/use-time-change.d.ts +10 -0
  339. package/dist/input-time/use-time-change.js +4 -0
  340. package/dist/kbd/kbd-key.adapter.d.ts +5 -0
  341. package/dist/kbd/kbd-key.adapter.js +5 -0
  342. package/dist/kbd/kbd.adapter.d.ts +2 -0
  343. package/dist/kbd/kbd.adapter.js +8 -0
  344. package/dist/listbox/clear-focus.d.ts +1 -0
  345. package/dist/listbox/clear-focus.js +8 -0
  346. package/dist/listbox/form-bridge.d.ts +14 -0
  347. package/dist/listbox/form-bridge.js +34 -0
  348. package/dist/listbox/listbox.adapter.d.ts +2 -0
  349. package/dist/listbox/listbox.adapter.js +79 -0
  350. package/dist/listbox/native-semantics.d.ts +9 -0
  351. package/dist/listbox/native-semantics.js +33 -0
  352. package/dist/listbox/selection.d.ts +4 -0
  353. package/dist/listbox/selection.js +31 -0
  354. package/dist/listbox/use-listbox-request.d.ts +10 -0
  355. package/dist/listbox/use-listbox-request.js +73 -0
  356. package/dist/locale-select/locale-select.adapter.d.ts +2 -0
  357. package/dist/locale-select/locale-select.adapter.js +15 -0
  358. package/dist/main/main.adapter.d.ts +2 -0
  359. package/dist/main/main.adapter.js +7 -0
  360. package/dist/marquee/marquee.adapter.d.ts +2 -0
  361. package/dist/marquee/marquee.adapter.js +23 -0
  362. package/dist/modal/modal.adapter.d.ts +2 -0
  363. package/dist/modal/modal.adapter.js +30 -0
  364. package/dist/navigation/navigation.adapter.d.ts +2 -0
  365. package/dist/navigation/navigation.adapter.js +5 -0
  366. package/dist/navigation-menu/menu-target.d.ts +4 -0
  367. package/dist/navigation-menu/menu-target.js +13 -0
  368. package/dist/navigation-menu/navigation-menu.adapter.d.ts +2 -0
  369. package/dist/navigation-menu/navigation-menu.adapter.js +16 -0
  370. package/dist/page-anchors/page-anchors.adapter.d.ts +3 -0
  371. package/dist/page-anchors/page-anchors.adapter.js +5 -0
  372. package/dist/page-aside/page-aside.adapter.d.ts +2 -0
  373. package/dist/page-aside/page-aside.adapter.js +6 -0
  374. package/dist/page-body/page-body.adapter.d.ts +2 -0
  375. package/dist/page-body/page-body.adapter.js +4 -0
  376. package/dist/page-card/page-card.adapter.d.ts +3 -0
  377. package/dist/page-card/page-card.adapter.js +5 -0
  378. package/dist/page-columns/page-columns.adapter.d.ts +2 -0
  379. package/dist/page-columns/page-columns.adapter.js +5 -0
  380. package/dist/page-cta/page-cta.adapter.d.ts +3 -0
  381. package/dist/page-cta/page-cta.adapter.js +5 -0
  382. package/dist/page-feature/page-feature.adapter.d.ts +3 -0
  383. package/dist/page-feature/page-feature.adapter.js +6 -0
  384. package/dist/page-grid/page-grid.adapter.d.ts +2 -0
  385. package/dist/page-grid/page-grid.adapter.js +4 -0
  386. package/dist/page-header/page-header.adapter.d.ts +3 -0
  387. package/dist/page-header/page-header.adapter.js +5 -0
  388. package/dist/page-hero/page-hero.adapter.d.ts +3 -0
  389. package/dist/page-hero/page-hero.adapter.js +5 -0
  390. package/dist/page-links/page-links.adapter.d.ts +3 -0
  391. package/dist/page-links/page-links.adapter.js +5 -0
  392. package/dist/page-list/page-list.adapter.d.ts +2 -0
  393. package/dist/page-list/page-list.adapter.js +6 -0
  394. package/dist/page-logos/page-logos.adapter.d.ts +2 -0
  395. package/dist/page-logos/page-logos.adapter.js +11 -0
  396. package/dist/page-section/page-section.adapter.d.ts +3 -0
  397. package/dist/page-section/page-section.adapter.js +5 -0
  398. package/dist/pagination/pagination-control.d.ts +13 -0
  399. package/dist/pagination/pagination-control.js +31 -0
  400. package/dist/pagination/pagination.adapter.d.ts +2 -0
  401. package/dist/pagination/pagination.adapter.js +23 -0
  402. package/dist/panel/use-panel-frame.d.ts +15 -0
  403. package/dist/panel/use-panel-frame.js +36 -0
  404. package/dist/pin-input/pin-input.adapter.d.ts +2 -0
  405. package/dist/pin-input/pin-input.adapter.js +18 -0
  406. package/dist/pin-input/pin-slots.d.ts +6 -0
  407. package/dist/pin-input/pin-slots.js +9 -0
  408. package/dist/popover/popover.adapter.d.ts +2 -0
  409. package/dist/popover/popover.adapter.js +55 -0
  410. package/dist/pricing-plan/pricing-plan.adapter.d.ts +3 -0
  411. package/dist/pricing-plan/pricing-plan.adapter.js +15 -0
  412. package/dist/pricing-plans/pricing-plans.adapter.d.ts +3 -0
  413. package/dist/pricing-plans/pricing-plans.adapter.js +8 -0
  414. package/dist/pricing-table/pricing-table.adapter.d.ts +3 -0
  415. package/dist/pricing-table/pricing-table.adapter.js +9 -0
  416. package/dist/progress/progress.adapter.d.ts +2 -0
  417. package/dist/progress/progress.adapter.js +10 -0
  418. package/dist/progress-group/progress-group.adapter.d.ts +2 -0
  419. package/dist/progress-group/progress-group.adapter.js +9 -0
  420. package/dist/radio-group/radio-group.adapter.d.ts +2 -0
  421. package/dist/radio-group/radio-group.adapter.js +14 -0
  422. package/dist/registry/action-menus.d.ts +4 -0
  423. package/dist/registry/action-menus.js +9 -0
  424. package/dist/registry/auth-form.d.ts +3 -0
  425. package/dist/registry/auth-form.js +6 -0
  426. package/dist/registry/calendar.d.ts +3 -0
  427. package/dist/registry/calendar.js +6 -0
  428. package/dist/registry/carousel.d.ts +3 -0
  429. package/dist/registry/carousel.js +6 -0
  430. package/dist/registry/chart.d.ts +3 -0
  431. package/dist/registry/chart.js +4 -0
  432. package/dist/registry/chat-composer.d.ts +5 -0
  433. package/dist/registry/chat-composer.js +12 -0
  434. package/dist/registry/chat-feedback.d.ts +5 -0
  435. package/dist/registry/chat-feedback.js +12 -0
  436. package/dist/registry/chat.d.ts +5 -0
  437. package/dist/registry/chat.js +12 -0
  438. package/dist/registry/color-mode.d.ts +7 -0
  439. package/dist/registry/color-mode.js +18 -0
  440. package/dist/registry/color-picker.d.ts +3 -0
  441. package/dist/registry/color-picker.js +6 -0
  442. package/dist/registry/command-palette.d.ts +3 -0
  443. package/dist/registry/command-palette.js +6 -0
  444. package/dist/registry/content-outline.d.ts +4 -0
  445. package/dist/registry/content-outline.js +9 -0
  446. package/dist/registry/content-search.d.ts +4 -0
  447. package/dist/registry/content-search.js +9 -0
  448. package/dist/registry/content.d.ts +26 -0
  449. package/dist/registry/content.js +75 -0
  450. package/dist/registry/dashboard.d.ts +12 -0
  451. package/dist/registry/dashboard.js +33 -0
  452. package/dist/registry/edge-panels.d.ts +4 -0
  453. package/dist/registry/edge-panels.js +9 -0
  454. package/dist/registry/editor-drag-handle.d.ts +3 -0
  455. package/dist/registry/editor-drag-handle.js +6 -0
  456. package/dist/registry/editor-menus.d.ts +5 -0
  457. package/dist/registry/editor-menus.js +12 -0
  458. package/dist/registry/editor.d.ts +4 -0
  459. package/dist/registry/editor.js +9 -0
  460. package/dist/registry/editorial.d.ts +6 -0
  461. package/dist/registry/editorial.js +15 -0
  462. package/dist/registry/element.d.ts +3 -0
  463. package/dist/registry/element.js +4 -0
  464. package/dist/registry/feedback.d.ts +8 -0
  465. package/dist/registry/feedback.js +21 -0
  466. package/dist/registry/fields.d.ts +24 -0
  467. package/dist/registry/fields.js +69 -0
  468. package/dist/registry/file-upload.d.ts +3 -0
  469. package/dist/registry/file-upload.js +6 -0
  470. package/dist/registry/listbox.d.ts +3 -0
  471. package/dist/registry/listbox.js +6 -0
  472. package/dist/registry/marquee.d.ts +3 -0
  473. package/dist/registry/marquee.js +6 -0
  474. package/dist/registry/navigation-composition.d.ts +5 -0
  475. package/dist/registry/navigation-composition.js +12 -0
  476. package/dist/registry/page-composition.d.ts +7 -0
  477. package/dist/registry/page-composition.js +18 -0
  478. package/dist/registry/page-logos.d.ts +3 -0
  479. package/dist/registry/page-logos.js +6 -0
  480. package/dist/registry/page-navigation.d.ts +5 -0
  481. package/dist/registry/page-navigation.js +12 -0
  482. package/dist/registry/page-presentation.d.ts +7 -0
  483. package/dist/registry/page-presentation.js +18 -0
  484. package/dist/registry/pricing.d.ts +5 -0
  485. package/dist/registry/pricing.js +12 -0
  486. package/dist/registry/shells.d.ts +10 -0
  487. package/dist/registry/shells.js +27 -0
  488. package/dist/registry/sidebar-splitter.d.ts +4 -0
  489. package/dist/registry/sidebar-splitter.js +9 -0
  490. package/dist/registry/structure.d.ts +10 -0
  491. package/dist/registry/structure.js +27 -0
  492. package/dist/registry/toast.d.ts +3 -0
  493. package/dist/registry/toast.js +4 -0
  494. package/dist/scroll-area/scroll-area.adapter.d.ts +2 -0
  495. package/dist/scroll-area/scroll-area.adapter.js +6 -0
  496. package/dist/select/display-text.d.ts +2 -0
  497. package/dist/select/display-text.js +18 -0
  498. package/dist/select/select-base-content.adapter.d.ts +6 -0
  499. package/dist/select/select-base-content.adapter.js +16 -0
  500. package/dist/select/select-content.adapter.d.ts +4 -0
  501. package/dist/select/select-content.adapter.js +11 -0
  502. package/dist/select/select-option.d.ts +5 -0
  503. package/dist/select/select-option.js +6 -0
  504. package/dist/select/select.adapter.d.ts +2 -0
  505. package/dist/select/select.adapter.js +47 -0
  506. package/dist/select/use-select-change.d.ts +2 -0
  507. package/dist/select/use-select-change.js +29 -0
  508. package/dist/select-menu/select-menu-form.d.ts +7 -0
  509. package/dist/select-menu/select-menu-form.js +14 -0
  510. package/dist/select-menu/select-menu-popup.d.ts +8 -0
  511. package/dist/select-menu/select-menu-popup.js +39 -0
  512. package/dist/select-menu/select-menu-root.d.ts +8 -0
  513. package/dist/select-menu/select-menu-root.js +34 -0
  514. package/dist/select-menu/select-menu.adapter.d.ts +2 -0
  515. package/dist/select-menu/select-menu.adapter.js +63 -0
  516. package/dist/select-menu/use-select-menu.d.ts +22 -0
  517. package/dist/select-menu/use-select-menu.js +111 -0
  518. package/dist/separator/separator.adapter.d.ts +2 -0
  519. package/dist/separator/separator.adapter.js +6 -0
  520. package/dist/shadcn.adapter.d.ts +2 -0
  521. package/dist/shadcn.adapter.js +102 -0
  522. package/dist/sidebar/sidebar.adapter.d.ts +2 -0
  523. package/dist/sidebar/sidebar.adapter.js +63 -0
  524. package/dist/skeleton/skeleton.adapter.d.ts +2 -0
  525. package/dist/skeleton/skeleton.adapter.js +8 -0
  526. package/dist/slideover/slideover.adapter.d.ts +2 -0
  527. package/dist/slideover/slideover.adapter.js +14 -0
  528. package/dist/slider/request-change.d.ts +2 -0
  529. package/dist/slider/request-change.js +34 -0
  530. package/dist/slider/slider-thumb.d.ts +7 -0
  531. package/dist/slider/slider-thumb.js +18 -0
  532. package/dist/slider/slider.adapter.d.ts +2 -0
  533. package/dist/slider/slider.adapter.js +36 -0
  534. package/dist/splitter/splitter.adapter.d.ts +3 -0
  535. package/dist/splitter/splitter.adapter.js +50 -0
  536. package/dist/stepper/stepper.adapter.d.ts +2 -0
  537. package/dist/stepper/stepper.adapter.js +30 -0
  538. package/dist/styles-contract.d.ts +1 -0
  539. package/dist/styles-contract.js +1 -0
  540. package/dist/styles.css +2 -0
  541. package/dist/styles.d.ts +1 -0
  542. package/dist/styles.js +1 -0
  543. package/dist/submit-button/submit-button.adapter.d.ts +2 -0
  544. package/dist/submit-button/submit-button.adapter.js +11 -0
  545. package/dist/surface/surface.adapter.d.ts +2 -0
  546. package/dist/surface/surface.adapter.js +8 -0
  547. package/dist/switch/switch.adapter.d.ts +2 -0
  548. package/dist/switch/switch.adapter.js +26 -0
  549. package/dist/table/interactive-table.d.ts +2 -0
  550. package/dist/table/interactive-table.js +24 -0
  551. package/dist/table/table.adapter.d.ts +2 -0
  552. package/dist/table/table.adapter.js +14 -0
  553. package/dist/tabs/tabs.adapter.d.ts +2 -0
  554. package/dist/tabs/tabs.adapter.js +17 -0
  555. package/dist/temporal/draft-validity.d.ts +13 -0
  556. package/dist/temporal/draft-validity.js +18 -0
  557. package/dist/temporal/focus-incomplete-segment.d.ts +1 -0
  558. package/dist/temporal/focus-incomplete-segment.js +7 -0
  559. package/dist/temporal/range-reset-focus.d.ts +1 -0
  560. package/dist/temporal/range-reset-focus.js +16 -0
  561. package/dist/temporal/temporal-recovery.d.ts +6 -0
  562. package/dist/temporal/temporal-recovery.js +4 -0
  563. package/dist/temporal/use-range-reset.d.ts +6 -0
  564. package/dist/temporal/use-range-reset.js +55 -0
  565. package/dist/temporal/use-temporal-change.d.ts +10 -0
  566. package/dist/temporal/use-temporal-change.js +21 -0
  567. package/dist/text/text.adapter.d.ts +1 -0
  568. package/dist/text/text.adapter.js +1 -0
  569. package/dist/text-area/text-area.adapter.d.ts +2 -0
  570. package/dist/text-area/text-area.adapter.js +9 -0
  571. package/dist/textarea/textarea.adapter.d.ts +2 -0
  572. package/dist/textarea/textarea.adapter.js +40 -0
  573. package/dist/textarea/use-auto-rows.d.ts +2 -0
  574. package/dist/textarea/use-auto-rows.js +33 -0
  575. package/dist/theme/theme.adapter.d.ts +2 -0
  576. package/dist/theme/theme.adapter.js +23 -0
  577. package/dist/timeline/timeline.adapter.d.ts +2 -0
  578. package/dist/timeline/timeline.adapter.js +13 -0
  579. package/dist/toast/toast-data.d.ts +17 -0
  580. package/dist/toast/toast-data.js +1 -0
  581. package/dist/toast/toast-focus.d.ts +12 -0
  582. package/dist/toast/toast-focus.js +38 -0
  583. package/dist/toast/toast-provider.d.ts +4 -0
  584. package/dist/toast/toast-provider.js +11 -0
  585. package/dist/toast/toast-queue-context.d.ts +24 -0
  586. package/dist/toast/toast-queue-context.js +8 -0
  587. package/dist/toast/toast-queue.d.ts +12 -0
  588. package/dist/toast/toast-queue.js +29 -0
  589. package/dist/toast/toast-registration.d.ts +9 -0
  590. package/dist/toast/toast-registration.js +149 -0
  591. package/dist/toast/toast-viewport.d.ts +1 -0
  592. package/dist/toast/toast-viewport.js +36 -0
  593. package/dist/toast/toast.adapter.d.ts +2 -0
  594. package/dist/toast/toast.adapter.js +14 -0
  595. package/dist/toggle/toggle.adapter.d.ts +2 -0
  596. package/dist/toggle/toggle.adapter.js +8 -0
  597. package/dist/tooltip/tooltip.adapter.d.ts +2 -0
  598. package/dist/tooltip/tooltip.adapter.js +29 -0
  599. package/dist/tooltip/use-tooltip-anchor.d.ts +5 -0
  600. package/dist/tooltip/use-tooltip-anchor.js +36 -0
  601. package/dist/tree/focus-element.d.ts +1 -0
  602. package/dist/tree/focus-element.js +4 -0
  603. package/dist/tree/tree.adapter.d.ts +2 -0
  604. package/dist/tree/tree.adapter.js +27 -0
  605. package/dist/tree/use-tree.d.ts +13 -0
  606. package/dist/tree/use-tree.js +73 -0
  607. package/dist/user/user.adapter.d.ts +2 -0
  608. package/dist/user/user.adapter.js +24 -0
  609. package/dist/v-stack/v-stack.adapter.d.ts +2 -0
  610. package/dist/v-stack/v-stack.adapter.js +5 -0
  611. package/dist/vendor/lib/utils.d.ts +2 -0
  612. package/dist/vendor/lib/utils.js +5 -0
  613. package/dist/vendor/ui/accordion.d.ts +7 -0
  614. package/dist/vendor/ui/accordion.js +14 -0
  615. package/dist/vendor/ui/alert.d.ts +8 -0
  616. package/dist/vendor/ui/alert.js +22 -0
  617. package/dist/vendor/ui/badge.d.ts +9 -0
  618. package/dist/vendor/ui/badge.js +21 -0
  619. package/dist/vendor/ui/button.d.ts +11 -0
  620. package/dist/vendor/ui/button.js +33 -0
  621. package/dist/vendor/ui/card.d.ts +8 -0
  622. package/dist/vendor/ui/card.js +16 -0
  623. package/dist/vendor/ui/checkbox.d.ts +4 -0
  624. package/dist/vendor/ui/checkbox.js +9 -0
  625. package/dist/vendor/ui/input.d.ts +3 -0
  626. package/dist/vendor/ui/input.js +8 -0
  627. package/dist/vendor/ui/label.d.ts +5 -0
  628. package/dist/vendor/ui/label.js +10 -0
  629. package/dist/vendor/ui/progress.d.ts +4 -0
  630. package/dist/vendor/ui/progress.js +8 -0
  631. package/dist/vendor/ui/select.d.ts +13 -0
  632. package/dist/vendor/ui/select.js +27 -0
  633. package/dist/vendor/ui/separator.d.ts +4 -0
  634. package/dist/vendor/ui/separator.js +8 -0
  635. package/dist/vendor/ui/slider.d.ts +4 -0
  636. package/dist/vendor/ui/slider.js +8 -0
  637. package/dist/vendor/ui/switch.d.ts +4 -0
  638. package/dist/vendor/ui/switch.js +8 -0
  639. package/dist/vendor/ui/tabs.d.ts +7 -0
  640. package/dist/vendor/ui/tabs.js +13 -0
  641. package/dist/vendor/ui/textarea.d.ts +3 -0
  642. package/dist/vendor/ui/textarea.js +8 -0
  643. package/package.json +71 -3
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/policy.js';
3
+ import { Button } from '../vendor/ui/button.js';
4
+ import { ShadcnIcon } from '../icon/icon.adapter.js';
5
+ import { ELEMENT_BUTTON_VARIANTS } from '../element/variants.js';
6
+ export function ShadcnButton({ label, onPress, intent, disabled, leadingIcon, trailingIcon, loading, loadingLabel, }) {
7
+ return (_jsxs(Button, { className: "reacd-node reacd-button", variant: ELEMENT_BUTTON_VARIANTS[intent ?? DEFAULTS.buttonIntent], type: "button", "data-intent": intent ?? DEFAULTS.buttonIntent, disabled: disabled || loading, "aria-busy": loading || undefined, onClick: () => onPress(), children: [loading ? (_jsx(ShadcnIcon, { name: "loading", decorative: true })) : leadingIcon === undefined ? null : (_jsx(ShadcnIcon, { name: leadingIcon, decorative: true })), _jsx("span", { className: "reacd-button-label", children: loading ? (loadingLabel ?? label) : label }), trailingIcon === undefined ? null : (_jsx(ShadcnIcon, { name: trailingIcon, decorative: true }))] }));
8
+ }
@@ -0,0 +1,7 @@
1
+ import type { TemporalLimits, TemporalRange } from '@fastsprout/reacd/adapter-runtime/core/date-time.js';
2
+ export declare function toCalendarDate(value: string): Date;
3
+ export declare function fromCalendarDate(value: Date): string;
4
+ export declare function calendarInitialDate({ value, referenceDate, min, max, }: TemporalLimits & {
5
+ value: string | null | TemporalRange;
6
+ referenceDate: string;
7
+ }): Date;
@@ -0,0 +1,24 @@
1
+ import { CALENDAR_POLICY } from '@fastsprout/reacd/adapter-runtime/core/calendar-policy.js';
2
+ export function toCalendarDate(value) {
3
+ const parts = value.split('-');
4
+ const date = new Date(0);
5
+ date.setUTCFullYear(Number(parts[0]), Number(parts[1]) - 1, Number(parts[2]));
6
+ date.setUTCHours(CALENDAR_POLICY.utcHour, 0, 0, 0);
7
+ return date;
8
+ }
9
+ export function fromCalendarDate(value) {
10
+ const year = String(value.getUTCFullYear()).padStart(CALENDAR_POLICY.yearDigits, '0');
11
+ const month = String(value.getUTCMonth() + 1).padStart(CALENDAR_POLICY.partDigits, '0');
12
+ const day = String(value.getUTCDate()).padStart(CALENDAR_POLICY.partDigits, '0');
13
+ return `${year}-${month}-${day}`;
14
+ }
15
+ export function calendarInitialDate({ value, referenceDate, min, max, }) {
16
+ let selected = typeof value === 'object' && value !== null
17
+ ? (value.start ?? value.end ?? referenceDate)
18
+ : (value ?? referenceDate);
19
+ if (min !== undefined && selected < min)
20
+ selected = min;
21
+ if (max !== undefined && selected > max)
22
+ selected = max;
23
+ return toCalendarDate(selected);
24
+ }
@@ -0,0 +1,2 @@
1
+ import type { DayButtonProps } from '@daypicker/react';
2
+ export declare function CalendarDayButton({ day, modifiers, ...properties }: DayButtonProps): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Button } from '../vendor/ui/button.js';
3
+ import { fromCalendarDate } from './calendar-date.js';
4
+ export function CalendarDayButton({ day, modifiers, ...properties }) {
5
+ return (_jsx(Button, { ...properties, ref: (element) => {
6
+ if (element !== null && modifiers['focused'])
7
+ element.focus();
8
+ }, variant: "ghost", className: "reacd-calendar-day", "data-calendar-day": fromCalendarDate(day.date), "data-selected": modifiers['selected'] || undefined }));
9
+ }
@@ -0,0 +1,6 @@
1
+ import type { RefObject } from 'react';
2
+ import type { CalendarProps } from '@fastsprout/reacd/adapter-runtime/components/calendar/index.js';
3
+ export declare function CalendarFormBridge({ properties, region, }: {
4
+ properties: CalendarProps;
5
+ region: RefObject<HTMLDivElement | null>;
6
+ }): import("react").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function CalendarFormBridge({ properties, region, }) {
3
+ const { name, disabled, required } = properties;
4
+ const complete = properties.mode === 'range'
5
+ ? properties.value.start !== null && properties.value.end !== null
6
+ : properties.value !== null;
7
+ return (_jsxs(_Fragment, { children: [properties.mode === 'range' ? (_jsxs(_Fragment, { children: [_jsx("input", { type: "hidden", name: name === undefined ? undefined : `${name}.start`, value: properties.value.start ?? '', disabled: disabled }), _jsx("input", { type: "hidden", name: name === undefined ? undefined : `${name}.end`, value: properties.value.end ?? '', disabled: disabled })] })) : (_jsx("input", { type: "hidden", name: name, value: properties.value ?? '', disabled: disabled })), _jsx("input", { className: "reacd-calendar-validation", tabIndex: -1, "aria-hidden": "true", defaultValue: complete ? 'selected' : '', required: required, disabled: disabled, onInvalid: (event) => {
8
+ event.preventDefault();
9
+ region.current?.focus();
10
+ } }, String(complete))] }));
11
+ }
@@ -0,0 +1,15 @@
1
+ export declare function calendarLocalization(locale: string): {
2
+ formatters: {
3
+ formatCaption: (value: Date) => string;
4
+ formatDay: (value: Date) => string;
5
+ formatWeekdayName: (value: Date) => string;
6
+ };
7
+ labels: {
8
+ labelDayButton: (value: Date) => string;
9
+ labelGrid: (value: Date) => string;
10
+ labelWeekday: (value: Date) => string;
11
+ labelNext: () => "Next month";
12
+ labelPrevious: () => "Previous month";
13
+ labelNav: () => "Calendar navigation";
14
+ };
15
+ };
@@ -0,0 +1,28 @@
1
+ import { CALENDAR_DEFAULTS, CALENDAR_POLICY, } from '@fastsprout/reacd/adapter-runtime/core/calendar-policy.js';
2
+ export function calendarLocalization(locale) {
3
+ const options = { calendar: 'gregory', timeZone: CALENDAR_POLICY.timeZone };
4
+ const month = new Intl.DateTimeFormat(locale, {
5
+ ...options,
6
+ year: 'numeric',
7
+ month: 'long',
8
+ });
9
+ const full = new Intl.DateTimeFormat(locale, { ...options, dateStyle: 'full' });
10
+ const weekday = new Intl.DateTimeFormat(locale, { ...options, weekday: 'short' });
11
+ const weekdayName = new Intl.DateTimeFormat(locale, { ...options, weekday: 'long' });
12
+ const day = new Intl.NumberFormat(locale, { useGrouping: false });
13
+ return {
14
+ formatters: {
15
+ formatCaption: (value) => month.format(value),
16
+ formatDay: (value) => day.format(value.getUTCDate()),
17
+ formatWeekdayName: (value) => weekday.format(value),
18
+ },
19
+ labels: {
20
+ labelDayButton: (value) => full.format(value),
21
+ labelGrid: (value) => month.format(value),
22
+ labelWeekday: (value) => weekdayName.format(value),
23
+ labelNext: () => CALENDAR_DEFAULTS.nextLabel,
24
+ labelPrevious: () => CALENDAR_DEFAULTS.previousLabel,
25
+ labelNav: () => CALENDAR_DEFAULTS.navigationLabel,
26
+ },
27
+ };
28
+ }
@@ -0,0 +1,2 @@
1
+ import type { CalendarProps } from '@fastsprout/reacd/adapter-runtime/components/calendar/index.js';
2
+ export declare function ShadcnCalendar(properties: CalendarProps): import("react").JSX.Element;
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useId, useRef } from 'react';
3
+ import { useDirection } from '@base-ui/react/direction-provider';
4
+ import { DayPicker } from '@daypicker/react';
5
+ import { CALENDAR_DEFAULTS, CALENDAR_POLICY, } from '@fastsprout/reacd/adapter-runtime/core/calendar-policy.js';
6
+ import { DATE_TIME_POLICY } from '@fastsprout/reacd/adapter-runtime/core/date-time-policy.js';
7
+ import { nextCalendarRange } from '@fastsprout/reacd/adapter-runtime/core/calendar-range.js';
8
+ import { CalendarDayButton } from './calendar-day-button.js';
9
+ import { CalendarFormBridge } from './calendar-form-bridge.js';
10
+ import { calendarInitialDate, fromCalendarDate, toCalendarDate, } from './calendar-date.js';
11
+ import { calendarLocalization } from './calendar-localization.js';
12
+ export function ShadcnCalendar(properties) {
13
+ const { label, referenceDate, description, locale = CALENDAR_DEFAULTS.locale, numberOfMonths = CALENDAR_DEFAULTS.numberOfMonths, weekStartsOn = CALENDAR_DEFAULTS.weekStartsOn, disabled = CALENDAR_DEFAULTS.disabled, readOnly = CALENDAR_DEFAULTS.readOnly, required = CALENDAR_DEFAULTS.required, min = DATE_TIME_POLICY.minimumDate, max = DATE_TIME_POLICY.maximumDate, } = properties;
14
+ const id = useId();
15
+ const region = useRef(null);
16
+ const direction = useDirection();
17
+ const common = {
18
+ ...calendarLocalization(locale),
19
+ defaultMonth: calendarInitialDate(properties),
20
+ today: toCalendarDate(referenceDate),
21
+ startMonth: toCalendarDate(min),
22
+ endMonth: toCalendarDate(max),
23
+ disabled: disabled
24
+ ? true
25
+ : [{ before: toCalendarDate(min) }, { after: toCalendarDate(max) }],
26
+ disableNavigation: disabled,
27
+ timeZone: CALENDAR_POLICY.timeZone,
28
+ numberOfMonths,
29
+ weekStartsOn,
30
+ dir: direction,
31
+ components: { DayButton: CalendarDayButton },
32
+ };
33
+ return (_jsxs("div", { ref: region, role: "group", "aria-labelledby": id, "aria-describedby": description === undefined ? undefined : `${id}-help`, "aria-disabled": disabled, "data-readonly": readOnly, "data-direction": direction, "data-slot": "calendar", tabIndex: -1, className: "reacd-node reacd-calendar", children: [_jsx("span", { id: id, className: "reacd-calendar-label", children: label }), _jsx("div", { className: "reacd-calendar-viewport", role: "region", "aria-label": `${label} grid`, children: properties.mode === 'range' ? (_jsx(DayPicker, { ...common, mode: "range", selected: {
34
+ from: properties.value.start === null
35
+ ? undefined
36
+ : toCalendarDate(properties.value.start),
37
+ to: properties.value.end === null
38
+ ? undefined
39
+ : toCalendarDate(properties.value.end),
40
+ }, onSelect: (_next, trigger) => {
41
+ if (!disabled && !readOnly)
42
+ properties.onValueChange(nextCalendarRange(properties.value, fromCalendarDate(trigger)));
43
+ } })) : (_jsx(DayPicker, { ...common, mode: "single", selected: properties.value === null ? undefined : toCalendarDate(properties.value), onSelect: (next) => {
44
+ if (!disabled && !readOnly && (!required || next !== undefined))
45
+ properties.onValueChange(next === undefined ? null : fromCalendarDate(next));
46
+ } })) }), _jsx(CalendarFormBridge, { properties: properties, region: region }), description === undefined ? null : (_jsx("span", { id: `${id}-help`, className: "reacd-field-description", children: description }))] }));
47
+ }
@@ -0,0 +1,2 @@
1
+ import type { CardProps } from '@fastsprout/reacd/adapter-runtime/components/card/card.js';
2
+ export declare function ShadcnCard({ children, spacing, label, header, footer }: CardProps): import("react").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Children } from 'react';
3
+ import { DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/policy.js';
4
+ import { Card, CardHeader, CardFooter } from '../vendor/ui/card.js';
5
+ function hasContent(value) {
6
+ return Children.toArray(value).some((child) => child !== '');
7
+ }
8
+ export function ShadcnCard({ children, spacing, label, header, footer }) {
9
+ const variables = {
10
+ '--reacd-gap': `var(--reacd-${spacing ?? DEFAULTS.spacing})`,
11
+ };
12
+ return (_jsxs(Card, { className: "reacd-node reacd-card", style: variables, role: label === undefined ? undefined : 'region', "aria-label": label, children: [!hasContent(header) ? null : (_jsx(CardHeader, { className: "reacd-card-slot", "data-slot": "reacd-card-header", children: header })), children, !hasContent(footer) ? null : (_jsx(CardFooter, { className: "reacd-card-slot", "data-slot": "reacd-card-footer", children: footer }))] }));
13
+ }
@@ -0,0 +1,7 @@
1
+ import type { ReactNode } from 'react';
2
+ export declare function CarouselPanel({ children, active, label, index, }: {
3
+ children: ReactNode;
4
+ active: boolean;
5
+ label: string;
6
+ index: number;
7
+ }): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useContext, useState } from 'react';
3
+ import { PortalActiveContext, PortalHostContext, } from '@fastsprout/reacd/adapter-runtime/renderer/theme/portal-context.js';
4
+ export function CarouselPanel({ children, active, label, index, }) {
5
+ const ancestorActive = useContext(PortalActiveContext);
6
+ const [host, setHost] = useState(null);
7
+ return (_jsxs("fieldset", { className: "reacd-carousel-panel", "data-carousel-index": index, disabled: !active, hidden: !active, inert: !active, role: "group", "aria-roledescription": "slide", "aria-label": label, children: [_jsx(PortalActiveContext.Provider, { value: ancestorActive && active, children: _jsx(PortalHostContext.Provider, { value: host, children: children }) }), _jsx("div", { ref: setHost, className: "reacd-carousel-portal-host" })] }));
8
+ }
@@ -0,0 +1,2 @@
1
+ import type { CarouselProps } from '@fastsprout/reacd/adapter-runtime/components/carousel/index.js';
2
+ export declare function ShadcnCarousel({ label, items, value, onValueChange, disabled, readOnly, orientation, loop, state, emptyMessage, loadingMessage, errorMessage, retryLabel, onRetry, }: CarouselProps): import("react").JSX.Element;
@@ -0,0 +1,43 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useDirection } from '@base-ui/react/direction-provider';
3
+ import { CAROUSEL_DEFAULTS, CAROUSEL_POLICY, } from '@fastsprout/reacd/adapter-runtime/core/carousel-policy.js';
4
+ import { carouselSlideLabel, carouselTarget, } from '@fastsprout/reacd/adapter-runtime/core/carousel-navigation.js';
5
+ import { Button } from '../vendor/ui/button.js';
6
+ import { CarouselFocusBoundary } from './focus-boundary.js';
7
+ import { CarouselPanel } from './carousel-panel.js';
8
+ export function ShadcnCarousel({ label, items, value, onValueChange, disabled, readOnly, orientation = CAROUSEL_DEFAULTS.orientation, loop = CAROUSEL_DEFAULTS.loop, state = CAROUSEL_DEFAULTS.state, emptyMessage = CAROUSEL_DEFAULTS.emptyMessage, loadingMessage = CAROUSEL_DEFAULTS.loadingMessage, errorMessage = CAROUSEL_DEFAULTS.errorMessage, retryLabel = CAROUSEL_DEFAULTS.retryLabel, onRetry, }) {
9
+ const direction = useDirection();
10
+ const protectedValue = disabled || readOnly;
11
+ function move(key) {
12
+ const next = carouselTarget(value, items.length, key, orientation, direction, loop);
13
+ if (next !== undefined && next !== value)
14
+ onValueChange(next);
15
+ }
16
+ function onKeyDown(event) {
17
+ if (event.target !== event.currentTarget || protectedValue || state !== 'ready')
18
+ return;
19
+ const next = carouselTarget(value, items.length, event.key, orientation, direction, loop);
20
+ if (next !== undefined) {
21
+ event.preventDefault();
22
+ move(event.key);
23
+ }
24
+ }
25
+ const forward = orientation === 'vertical'
26
+ ? 'ArrowDown'
27
+ : direction === 'rtl'
28
+ ? 'ArrowLeft'
29
+ : 'ArrowRight';
30
+ const backward = orientation === 'vertical'
31
+ ? 'ArrowUp'
32
+ : direction === 'rtl'
33
+ ? 'ArrowRight'
34
+ : 'ArrowLeft';
35
+ const currentItem = items[value];
36
+ const activeKey = state === 'ready'
37
+ ? currentItem === undefined
38
+ ? 'empty'
39
+ : `slide:${currentItem.id}`
40
+ : state;
41
+ return (_jsx(CarouselFocusBoundary, { label: label, value: value, activeKey: activeKey, onKeyDown: onKeyDown, children: state === 'loading' ? (_jsx("p", { role: "status", children: loadingMessage })) : state === 'error' ? (_jsxs("div", { children: [_jsx("p", { role: "alert", children: errorMessage }), onRetry === undefined ? null : (_jsx(Button, { type: "button", className: "reacd-button", onClick: () => onRetry(), children: retryLabel }))] })) : items.length === 0 ? (_jsx("p", { role: "status", children: emptyMessage })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "reacd-carousel-panels", "aria-live": "polite", children: items.map((item, index) => (_jsx(CarouselPanel, { index: index, active: index === value, label: carouselSlideLabel(item.label, index, items.length), children: item.children }, item.id))) }), items.length < CAROUSEL_POLICY.minimumNavigationItems ? null : (_jsxs("div", { className: "reacd-carousel-controls", children: [_jsx(Button, { type: "button", className: "reacd-button", variant: "outline", disabled: protectedValue || (!loop && value === 0), onClick: () => move(backward), children: CAROUSEL_DEFAULTS.previousLabel }), _jsx(Button, { type: "button", className: "reacd-button", variant: "outline", disabled: protectedValue ||
42
+ (!loop && value === items.length - CAROUSEL_POLICY.step), onClick: () => move(forward), children: CAROUSEL_DEFAULTS.nextLabel }), _jsx("div", { role: "group", "aria-label": CAROUSEL_DEFAULTS.chooserLabel, className: "reacd-carousel-chooser", children: items.map((item, index) => (_jsx(Button, { type: "button", className: "reacd-button", variant: "ghost", "aria-label": `${item.label}, slide ${index + CAROUSEL_POLICY.step}`, "aria-pressed": index === value, disabled: protectedValue || index === value, onClick: () => onValueChange(index), children: index + CAROUSEL_POLICY.step }, item.id))) })] }))] })) }));
43
+ }
@@ -0,0 +1,16 @@
1
+ import { Component } from 'react';
2
+ import type { KeyboardEvent, ReactNode } from 'react';
3
+ interface FocusProps {
4
+ children: ReactNode;
5
+ label: string;
6
+ value: number;
7
+ activeKey: string;
8
+ onKeyDown: (event: KeyboardEvent<HTMLDivElement>) => void;
9
+ }
10
+ export declare class CarouselFocusBoundary extends Component<FocusProps, Record<string, never>, boolean> {
11
+ readonly container: import("react").RefObject<HTMLDivElement | null>;
12
+ getSnapshotBeforeUpdate(previous: Readonly<FocusProps>): boolean;
13
+ componentDidUpdate(_previous: Readonly<FocusProps>, _state: Readonly<Record<string, never>>, repair: boolean): void;
14
+ render(): ReactNode;
15
+ }
16
+ export {};
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Component, createRef } from 'react';
3
+ export class CarouselFocusBoundary extends Component {
4
+ container = createRef();
5
+ getSnapshotBeforeUpdate(previous) {
6
+ const root = this.container.current;
7
+ if (previous.activeKey === this.props.activeKey || root === null)
8
+ return false;
9
+ const panel = root.querySelector(`[data-carousel-index="${previous.value}"]`);
10
+ return panel !== null && panel.contains(root.ownerDocument.activeElement);
11
+ }
12
+ componentDidUpdate(_previous, _state, repair) {
13
+ if (repair)
14
+ this.container.current?.focus();
15
+ }
16
+ render() {
17
+ return (_jsx("div", { ref: this.container, className: "reacd-node reacd-carousel", role: "region", "aria-label": this.props.label, "aria-roledescription": "carousel", tabIndex: 0, onKeyDown: this.props.onKeyDown, children: this.props.children }));
18
+ }
19
+ }
@@ -0,0 +1,3 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ChangelogVersionProps } from '@fastsprout/reacd/adapter-runtime/components/changelog-version/index.js';
3
+ export declare function ShadcnChangelogVersion(props: ChangelogVersionProps): ReactNode;
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { EditorialEntrySurface } from '@fastsprout/reacd/adapter-runtime/renderer/editorial/editorial-entry.js';
3
+ export function ShadcnChangelogVersion(props) {
4
+ return _jsx(EditorialEntrySurface, { ...props, kind: "changelog" });
5
+ }
@@ -0,0 +1,3 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ChangelogVersionsProps } from '@fastsprout/reacd/adapter-runtime/components/changelog-versions/index.js';
3
+ export declare function ShadcnChangelogVersions({ children, versions, indicator, }: ChangelogVersionsProps): ReactNode;
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Children } from 'react';
3
+ import { ChangelogVersion } from '@fastsprout/reacd/adapter-runtime/components/changelog-version/changelog-version.js';
4
+ import { EDITORIAL_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/editorial-policy.js';
5
+ import { EditorialIndicatorContext } from '@fastsprout/reacd/adapter-runtime/renderer/editorial/indicator-context.js';
6
+ export function ShadcnChangelogVersions({ children, versions = EDITORIAL_DEFAULTS.entries, indicator = EDITORIAL_DEFAULTS.indicator, }) {
7
+ return (_jsx(EditorialIndicatorContext.Provider, { value: indicator, children: _jsxs("ul", { className: "reacd-node reacd-editorial-collection", "data-orientation": "vertical", children: [versions.map(({ key, ...entry }) => (_jsx("li", { children: _jsx(ChangelogVersion, { ...entry }) }, key))), Children.map(children, (child) => (child == null ? null : _jsx("li", { children: child })))] }) }));
8
+ }
@@ -0,0 +1,5 @@
1
+ import type { ChartProps } from '@fastsprout/reacd/adapter-runtime/components/chart/index.js';
2
+ export declare function ChartCartesian({ series, categories, kind, reverse, id, }: Pick<ChartProps, 'series' | 'categories' | 'kind'> & {
3
+ reverse: boolean;
4
+ id: string;
5
+ }): import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CHART_POLICY as P } from '@fastsprout/reacd/adapter-runtime/core/chart-policy.js';
3
+ import { chartPoints, chartDomain, chartY, chartLinePath, chartAreaPath, } from '@fastsprout/reacd/adapter-runtime/core/chart-geometry.js';
4
+ import { ChartMarker, ChartPattern } from './patterns.js';
5
+ import { chartDash } from './legend.js';
6
+ export function ChartCartesian({ series, categories, kind, reverse, id, }) {
7
+ const domain = chartDomain(series.map((item) => item.values));
8
+ const baseline = chartY(P.zero, domain);
9
+ const barWidth = (((P.width - P.padding * P.midpoint) / (categories.length + P.unitDomain)) *
10
+ P.barGroupRatio) /
11
+ series.length;
12
+ return (_jsxs(_Fragment, { children: [_jsx("defs", { children: series.map((item, index) => (_jsx(ChartPattern, { id: id, index: index }, item.id))) }), _jsx("line", { x1: P.padding, x2: P.width - P.padding, y1: baseline, y2: baseline, stroke: "currentColor", strokeWidth: P.strokeWidth }), series.map((item, index) => (_jsx("g", { "data-series": item.id, children: chartPoints(item.values, domain, reverse).map((points, segment) => (_jsx("g", { children: kind === 'bar' ? (points.map((point) => (_jsx("rect", { x: point.x + (index - series.length / P.midpoint) * barWidth, y: Math.min(baseline, point.y), width: barWidth, height: Math.abs(baseline - point.y), fill: `url(#${id}-${index})`, stroke: "currentColor", strokeWidth: P.strokeWidth }, point.index)))) : (_jsxs(_Fragment, { children: [_jsx("path", { d: kind === 'area'
13
+ ? chartAreaPath(points, baseline)
14
+ : chartLinePath(points), fill: kind === 'area' ? `url(#${id}-${index})` : 'none', stroke: "currentColor", strokeWidth: P.strokeWidth, strokeDasharray: chartDash(index) }), points.map((point) => (_jsx(ChartMarker, { x: point.x, y: point.y, index: index }, point.index)))] })) }, segment))) }, item.id)))] }));
15
+ }
@@ -0,0 +1,2 @@
1
+ import type { ChartProps } from '@fastsprout/reacd/adapter-runtime/components/chart/index.js';
2
+ export declare function ChartGraphic({ kind, ...props }: ChartProps): import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useId } from 'react';
3
+ import { useDirection } from '@base-ui/react/direction-provider';
4
+ import { CHART_POLICY as P, CHART_DEFAULTS as D, } from '@fastsprout/reacd/adapter-runtime/core/chart-policy.js';
5
+ import { chartDonutSlices } from '@fastsprout/reacd/adapter-runtime/core/chart-geometry.js';
6
+ import { ChartCartesian } from './cartesian.js';
7
+ import { ChartPattern } from './patterns.js';
8
+ export function ChartGraphic({ kind = D.kind, ...props }) {
9
+ const id = useId();
10
+ const direction = useDirection();
11
+ return (_jsxs("svg", { className: "reacd-chart-graphic", role: "img", viewBox: `${P.zero} ${P.zero} ${P.width} ${P.height}`, "aria-labelledby": `${id}-title`, "aria-describedby": `${id}-description`, children: [_jsx("title", { id: `${id}-title`, children: props.label }), _jsx("desc", { id: `${id}-description`, children: props.description }), kind === 'donut' ? (_jsxs(_Fragment, { children: [_jsx("defs", { children: props.categories.map((item, index) => (_jsx(ChartPattern, { id: id, index: index }, item.id))) }), props.series
12
+ .flatMap((item) => chartDonutSlices(item.values))
13
+ .map((slice) => (_jsx("path", { "data-slice": slice.index, d: slice.path, fill: `url(#${id}-${slice.index})`, stroke: "currentColor", strokeWidth: P.strokeWidth }, slice.index)))] })) : (_jsx(ChartCartesian, { ...props, kind: kind, reverse: direction === 'rtl', id: id }))] }));
14
+ }
@@ -0,0 +1,2 @@
1
+ import type { ChartProps } from '@fastsprout/reacd/adapter-runtime/components/chart/index.js';
2
+ export declare function ChartTable({ label, categories, series }: ChartProps): import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CHART_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/chart-policy.js';
3
+ export function ChartTable({ label, categories, series }) {
4
+ const caption = `${label} data`;
5
+ return (_jsx("div", { className: "reacd-table-scroll", role: "region", "aria-label": caption, tabIndex: 0, children: _jsxs("table", { className: "reacd-table reacd-chart-table", children: [_jsx("caption", { children: caption }), _jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: CHART_DEFAULTS.categoryLabel }), series.map((item) => (_jsx("th", { scope: "col", children: item.label }, item.id)))] }) }), _jsx("tbody", { children: categories.map((category, index) => (_jsxs("tr", { children: [_jsx("th", { scope: "row", children: category.label }), series.map((item) => (_jsx("td", { children: item.values.at(index) ?? CHART_DEFAULTS.missingValue }, item.id)))] }, category.id))) })] }) }));
6
+ }
@@ -0,0 +1,2 @@
1
+ import type { ChartProps } from '@fastsprout/reacd/adapter-runtime/components/chart/index.js';
2
+ export declare function ShadcnChart({ kind, state, emptyMessage, loadingMessage, errorMessage, retryLabel, onRetry, ...data }: ChartProps): import("react").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CHART_DEFAULTS as D, CHART_POLICY as P, } from '@fastsprout/reacd/adapter-runtime/core/chart-policy.js';
3
+ import { ChartGraphic } from './chart-graphic.js';
4
+ import { ChartTable } from './chart-table.js';
5
+ import { ChartLegend } from './legend.js';
6
+ import { Button } from '../vendor/ui/button.js';
7
+ export function ShadcnChart({ kind = D.kind, state, emptyMessage = D.emptyMessage, loadingMessage = D.loadingMessage, errorMessage = D.errorMessage, retryLabel = D.retryLabel, onRetry, ...data }) {
8
+ if (state === 'loading')
9
+ return _jsx("p", { role: "status", children: loadingMessage });
10
+ if (state === 'error')
11
+ return (_jsxs("div", { className: "reacd-vstack", children: [_jsx("p", { role: "alert", children: errorMessage }), onRetry === undefined ? null : (_jsx(Button, { className: "reacd-button", type: "button", onClick: () => onRetry(), children: retryLabel }))] }));
12
+ if (data.categories.length === P.zero || data.series.length === P.zero)
13
+ return _jsx("p", { role: "status", children: emptyMessage });
14
+ const emptyDonut = kind === 'donut' &&
15
+ !data.series.some((item) => item.values.some((value) => value !== null && value > P.zero));
16
+ return (_jsxs("figure", { className: "reacd-node reacd-chart", children: [_jsx("figcaption", { children: data.label }), _jsx("p", { children: data.description }), emptyDonut ? (_jsx("p", { role: "status", children: emptyMessage })) : (_jsx(ChartGraphic, { ...data, kind: kind })), _jsx(ChartLegend, { ...data, kind: kind }), _jsx(ChartTable, { ...data })] }));
17
+ }
@@ -0,0 +1,3 @@
1
+ import type { ChartProps } from '@fastsprout/reacd/adapter-runtime/components/chart/index.js';
2
+ export declare function chartDash(index: number): string;
3
+ export declare function ChartLegend({ kind, categories, series }: ChartProps): import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useId } from 'react';
3
+ import { CHART_POLICY as P, CHART_DEFAULTS as D, } from '@fastsprout/reacd/adapter-runtime/core/chart-policy.js';
4
+ import { ChartMarker, ChartPattern } from './patterns.js';
5
+ export function chartDash(index) {
6
+ return index === P.zero
7
+ ? 'none'
8
+ : `${(index + P.unitDomain) * P.dashUnit} ${P.dashGap}`;
9
+ }
10
+ export function ChartLegend({ kind, categories, series }) {
11
+ const id = useId();
12
+ const items = kind === 'donut' ? categories : series;
13
+ return (_jsx("ul", { className: "reacd-chart-legend", "aria-label": D.seriesLabel, children: items.map((item, index) => (_jsxs("li", { children: [_jsxs("svg", { "aria-hidden": "true", viewBox: `${P.zero} ${P.zero} ${P.padding} ${P.padding}`, children: [_jsx("defs", { children: _jsx(ChartPattern, { id: id, index: index }) }), kind === 'line' ? (_jsxs(_Fragment, { children: [_jsx("line", { x1: P.zero, x2: P.padding, y1: P.padding / P.midpoint, y2: P.padding / P.midpoint, stroke: "currentColor", strokeWidth: P.strokeWidth, strokeDasharray: chartDash(index) }), _jsx(ChartMarker, { x: P.padding / P.midpoint, y: P.padding / P.midpoint, index: index })] })) : (_jsx("rect", { x: P.markerRadius, y: P.markerRadius, width: P.padding - P.markerRadius * P.midpoint, height: P.padding - P.markerRadius * P.midpoint, fill: `url(#${id}-${index})`, stroke: "currentColor", strokeWidth: P.strokeWidth }))] }), item.label] }, item.id))) }));
14
+ }
@@ -0,0 +1,9 @@
1
+ export declare function ChartPattern({ id, index }: {
2
+ id: string;
3
+ index: number;
4
+ }): import("react").JSX.Element;
5
+ export declare function ChartMarker({ x, y, index }: {
6
+ x: number;
7
+ y: number;
8
+ index: number;
9
+ }): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { CHART_POLICY as P } from '@fastsprout/reacd/adapter-runtime/core/chart-policy.js';
3
+ export function ChartPattern({ id, index }) {
4
+ return (_jsx("pattern", { id: `${id}-${index}`, patternUnits: "userSpaceOnUse", width: P.patternSize, height: P.patternSize, patternTransform: `rotate(${index * P.patternRotationStep})`, children: _jsx("path", { d: `M ${P.zero} ${P.zero} L ${P.zero} ${P.patternSize}`, fill: "none", stroke: "currentColor", strokeWidth: P.strokeWidth }) }));
5
+ }
6
+ export function ChartMarker({ x, y, index }) {
7
+ return index % P.midpoint === P.zero ? (_jsx("circle", { cx: x, cy: y, r: P.markerRadius, fill: "currentColor" })) : (_jsx("rect", { x: x - P.markerRadius, y: y - P.markerRadius, width: P.markerRadius * P.midpoint, height: P.markerRadius * P.midpoint, fill: "currentColor" }));
8
+ }
@@ -0,0 +1,2 @@
1
+ import type { ChatAttachmentProps } from '@fastsprout/reacd/adapter-runtime/components/chat-attachment/index.js';
2
+ export declare function ShadcnChatAttachment({ name, mediaType, url, description, status, onRemove, disabled, }: ChatAttachmentProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { CHAT_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/chat-policy.js';
4
+ import { useChatLoadingRole } from '@fastsprout/reacd/adapter-runtime/renderer/chat-feedback/loading-scope.js';
5
+ import { Button } from '../vendor/ui/button.js';
6
+ import { Card } from '../vendor/ui/card.js';
7
+ export function ShadcnChatAttachment({ name, mediaType, url, description, status = CHAT_DEFAULTS.attachmentStatus, onRemove, disabled, }) {
8
+ const [failedUrl, setFailedUrl] = useState();
9
+ const loadingRole = useChatLoadingRole();
10
+ const image = mediaType.startsWith('image/') && url !== undefined && url !== failedUrl;
11
+ return (_jsxs(Card, { className: "reacd-node reacd-chat-attachment", "data-status": status, "aria-label": name, children: [image ? (_jsx("img", { className: "reacd-chat-file-image", src: url, alt: name, "aria-busy": status === 'uploading', decoding: "async", loading: "lazy", referrerPolicy: "no-referrer", onError: () => setFailedUrl(url) })) : (_jsx("span", { className: "reacd-chat-file-kind", "aria-hidden": "true", children: CHAT_DEFAULTS.fileLabel })), _jsxs("span", { className: "reacd-chat-file-description", children: [_jsx("span", { className: "reacd-chat-file-name", "aria-busy": status === 'uploading', children: name }), _jsx("span", { "aria-busy": status === 'uploading', children: description ?? mediaType }), status === 'uploading' && (_jsx("span", { role: loadingRole, children: CHAT_DEFAULTS.uploadingLabel })), status === 'error' && (_jsx("span", { role: "alert", children: CHAT_DEFAULTS.uploadErrorLabel }))] }), onRemove !== undefined && (_jsx(Button, { className: "reacd-button", variant: "outline", type: "button", disabled: disabled, onClick: () => onRemove(), children: `${CHAT_DEFAULTS.removePrefix} ${name}` }))] }));
12
+ }
@@ -0,0 +1,9 @@
1
+ import type { ReactNode } from 'react';
2
+ export declare function ChatDisclosure({ label, open, onOpenChange, disabled, active, children, }: {
3
+ label: string;
4
+ open: boolean;
5
+ onOpenChange: (value: boolean) => void;
6
+ disabled: boolean | undefined;
7
+ active: boolean;
8
+ children: ReactNode;
9
+ }): import("react").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useContext } from 'react';
3
+ import { Collapsible as Primitive } from '@base-ui/react/collapsible';
4
+ import { PortalActiveContext } from '@fastsprout/reacd/adapter-runtime/renderer/theme/portal-context.js';
5
+ import { ShadcnChatShimmer } from '../chat-shimmer/chat-shimmer.adapter.js';
6
+ import { Button } from '../vendor/ui/button.js';
7
+ export function ChatDisclosure({ label, open, onOpenChange, disabled, active, children, }) {
8
+ const ancestorActive = useContext(PortalActiveContext);
9
+ return (_jsxs(Primitive.Root, { className: "reacd-node reacd-collapsible reacd-chat-disclosure", open: open, disabled: disabled, onOpenChange: (value) => onOpenChange(value), children: [_jsxs(Primitive.Trigger, { "aria-label": label, className: "reacd-collapsible-trigger", render: _jsx(Button, { variant: "outline" }), children: [_jsx(ShadcnChatShimmer, { text: label, active: active }), _jsx("span", { "aria-hidden": "true", children: open ? '−' : '+' })] }), _jsx(Primitive.Panel, { className: "reacd-collapsible-panel reacd-chat-feedback-details", role: "region", "aria-label": label, hidden: !open, "aria-busy": active, children: _jsx(PortalActiveContext.Provider, { value: open && ancestorActive, children: children }) })] }));
10
+ }
@@ -0,0 +1,2 @@
1
+ import type { ChatMessageProps } from '@fastsprout/reacd/adapter-runtime/components/chat-message/index.js';
2
+ export declare function ShadcnChatMessage({ id, author, role, content, attachments, actions, status, error, }: ChatMessageProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useId } from 'react';
3
+ import { CHAT_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/chat-policy.js';
4
+ import { useChatLoadingRole } from '@fastsprout/reacd/adapter-runtime/renderer/chat-feedback/loading-scope.js';
5
+ import { ShadcnChatAttachment } from '../chat-attachment/chat-attachment.adapter.js';
6
+ import { Button } from '../vendor/ui/button.js';
7
+ import { Card } from '../vendor/ui/card.js';
8
+ export function ShadcnChatMessage({ id, author, role, content, attachments, actions, status = CHAT_DEFAULTS.messageStatus, error, }) {
9
+ const authorId = useId();
10
+ const loadingRole = useChatLoadingRole();
11
+ return (_jsx("article", { className: "reacd-node reacd-chat-message", "data-message-id": id, "data-role": role, "data-status": status, "aria-labelledby": authorId, children: _jsxs(Card, { className: "reacd-chat-message-content", children: [_jsxs("header", { className: "reacd-chat-message-author", children: [_jsx("strong", { id: authorId, children: author }), _jsx("span", { children: role })] }), _jsx("p", { className: "reacd-chat-message-text", "aria-busy": status === 'streaming', children: content }), attachments !== undefined && (_jsx("ul", { className: "reacd-chat-attachments", "aria-label": "Message attachments", children: attachments.map((attachment, index) => (_jsx("li", { children: _jsx(ShadcnChatAttachment, { ...attachment }) }, index))) })), status === 'streaming' && (_jsx("p", { role: loadingRole, children: CHAT_DEFAULTS.streamingLabel })), status === 'error' && _jsx("p", { role: "alert", children: error ?? CHAT_DEFAULTS.errorLabel }), actions !== undefined && (_jsx("div", { className: "reacd-chat-actions", role: "group", "aria-label": "Message actions", children: actions.map((action) => (_jsx(Button, { className: "reacd-button", variant: "outline", type: "button", onClick: () => action.onPress(), disabled: action.disabled, children: action.label }, action.id))) }))] }) }));
12
+ }
@@ -0,0 +1,2 @@
1
+ import type { ChatMessagesProps } from '@fastsprout/reacd/adapter-runtime/components/chat-messages/index.js';
2
+ export declare function ShadcnChatMessages({ label, messages, status, error, onRetry, followLatest, emptyLabel, }: ChatMessagesProps): import("react").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CHAT_DEFAULTS } from '@fastsprout/reacd/adapter-runtime/core/chat-policy.js';
3
+ import { ChatLoadingScopeContext } from '@fastsprout/reacd/adapter-runtime/renderer/chat-feedback/loading-scope.js';
4
+ import { ShadcnChatMessage } from '../chat-message/chat-message.adapter.js';
5
+ import { Button } from '../vendor/ui/button.js';
6
+ import { useFollowLatest } from './use-follow-latest.js';
7
+ export function ShadcnChatMessages({ label, messages, status = CHAT_DEFAULTS.status, error, onRetry, followLatest = CHAT_DEFAULTS.followLatest, emptyLabel = CHAT_DEFAULTS.emptyLabel, }) {
8
+ const { viewport, latest, scroll, showLatest } = useFollowLatest(followLatest, messages, status);
9
+ const pending = status === 'submitted' || status === 'streaming';
10
+ return (_jsxs("section", { className: "reacd-node reacd-chat-messages", "aria-label": label, children: [_jsx(ChatLoadingScopeContext, { value: pending, children: _jsxs("div", { className: "reacd-chat-log", ref: viewport, role: "log", "aria-label": label, "aria-live": "polite", "aria-atomic": "false", "aria-busy": pending, tabIndex: 0, onScroll: scroll, children: [messages.length === 0 && status === 'ready' && _jsx("p", { children: emptyLabel }), messages.map((message) => (_jsx(ShadcnChatMessage, { ...message }, message.id)))] }) }), pending && (_jsx("p", { role: "status", children: status === 'submitted'
11
+ ? CHAT_DEFAULTS.submittedLabel
12
+ : CHAT_DEFAULTS.streamingLabel })), status === 'error' && (_jsxs("div", { className: "reacd-chat-error", children: [_jsx("p", { role: "alert", children: error ?? CHAT_DEFAULTS.errorLabel }), onRetry !== undefined && (_jsx(Button, { className: "reacd-button", type: "button", onClick: () => onRetry(), children: CHAT_DEFAULTS.retryLabel }))] })), showLatest && (_jsx(Button, { className: "reacd-button", variant: "outline", type: "button", onClick: latest, children: CHAT_DEFAULTS.latestLabel }))] }));
13
+ }
@@ -0,0 +1,6 @@
1
+ export declare function useFollowLatest(enabled: boolean, revision: object, status: string): {
2
+ viewport: import("react").RefObject<HTMLDivElement | null>;
3
+ latest: () => void;
4
+ scroll: () => void;
5
+ showLatest: boolean;
6
+ };
@@ -0,0 +1,33 @@
1
+ import { useLayoutEffect, useRef, useState } from 'react';
2
+ import { CHAT_POLICY } from '@fastsprout/reacd/adapter-runtime/core/chat-policy.js';
3
+ export function useFollowLatest(enabled, revision, status) {
4
+ const viewport = useRef(null);
5
+ const following = useRef(true);
6
+ const [showLatest, setShowLatest] = useState(false);
7
+ function follow() {
8
+ const element = viewport.current;
9
+ if (element === null)
10
+ return;
11
+ element.scrollTop = element.scrollHeight;
12
+ following.current = true;
13
+ setShowLatest(false);
14
+ return element;
15
+ }
16
+ function latest() {
17
+ follow()?.focus({ preventScroll: true });
18
+ }
19
+ function scroll() {
20
+ const element = viewport.current;
21
+ if (element === null || !enabled)
22
+ return;
23
+ following.current =
24
+ element.scrollHeight - element.scrollTop - element.clientHeight <=
25
+ CHAT_POLICY.bottomDistancePx;
26
+ setShowLatest(!following.current);
27
+ }
28
+ useLayoutEffect(() => {
29
+ if (enabled && following.current)
30
+ follow();
31
+ }, [enabled, revision, status]);
32
+ return { viewport, latest, scroll, showLatest: enabled && showLatest };
33
+ }
@@ -0,0 +1,2 @@
1
+ import type { ChatPaletteProps } from '@fastsprout/reacd/adapter-runtime/components/chat-palette/index.js';
2
+ export declare function ShadcnChatPalette({ label, children, prompt }: ChatPaletteProps): import("react").JSX.Element;