@airdraft/react-ui 0.1.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 (390) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/AcceptInviteForm.d.ts +22 -0
  3. package/dist/AcceptInviteForm.d.ts.map +1 -0
  4. package/dist/AcceptInviteForm.js +52 -0
  5. package/dist/AcceptInviteForm.js.map +1 -0
  6. package/dist/AuditLogViewer.d.ts +42 -0
  7. package/dist/AuditLogViewer.d.ts.map +1 -0
  8. package/dist/AuditLogViewer.js +95 -0
  9. package/dist/AuditLogViewer.js.map +1 -0
  10. package/dist/CollectionManager.d.ts +26 -0
  11. package/dist/CollectionManager.d.ts.map +1 -0
  12. package/dist/CollectionManager.js +100 -0
  13. package/dist/CollectionManager.js.map +1 -0
  14. package/dist/CollectionsIndex.d.ts +25 -0
  15. package/dist/CollectionsIndex.d.ts.map +1 -0
  16. package/dist/CollectionsIndex.js +42 -0
  17. package/dist/CollectionsIndex.js.map +1 -0
  18. package/dist/ContentManager.d.ts +26 -0
  19. package/dist/ContentManager.d.ts.map +1 -0
  20. package/dist/ContentManager.js +110 -0
  21. package/dist/ContentManager.js.map +1 -0
  22. package/dist/EntryEditor.d.ts +25 -0
  23. package/dist/EntryEditor.d.ts.map +1 -0
  24. package/dist/EntryEditor.js +190 -0
  25. package/dist/EntryEditor.js.map +1 -0
  26. package/dist/LoginForm.d.ts +18 -0
  27. package/dist/LoginForm.d.ts.map +1 -0
  28. package/dist/LoginForm.js +41 -0
  29. package/dist/LoginForm.js.map +1 -0
  30. package/dist/MediaManager.d.ts +21 -0
  31. package/dist/MediaManager.d.ts.map +1 -0
  32. package/dist/MediaManager.js +59 -0
  33. package/dist/MediaManager.js.map +1 -0
  34. package/dist/SchemaEditor.d.ts +22 -0
  35. package/dist/SchemaEditor.d.ts.map +1 -0
  36. package/dist/SchemaEditor.js +35 -0
  37. package/dist/SchemaEditor.js.map +1 -0
  38. package/dist/SchemaEditorContent.d.ts +4 -0
  39. package/dist/SchemaEditorContent.d.ts.map +1 -0
  40. package/dist/SchemaEditorContent.js +82 -0
  41. package/dist/SchemaEditorContent.js.map +1 -0
  42. package/dist/SchemaEditorFieldDrawer.d.ts +2 -0
  43. package/dist/SchemaEditorFieldDrawer.d.ts.map +1 -0
  44. package/dist/SchemaEditorFieldDrawer.js +126 -0
  45. package/dist/SchemaEditorFieldDrawer.js.map +1 -0
  46. package/dist/SchemaEditorRoot.d.ts +59 -0
  47. package/dist/SchemaEditorRoot.d.ts.map +1 -0
  48. package/dist/SchemaEditorRoot.js +71 -0
  49. package/dist/SchemaEditorRoot.js.map +1 -0
  50. package/dist/SchemaEditorSidebar.d.ts +4 -0
  51. package/dist/SchemaEditorSidebar.d.ts.map +1 -0
  52. package/dist/SchemaEditorSidebar.js +67 -0
  53. package/dist/SchemaEditorSidebar.js.map +1 -0
  54. package/dist/TeamManager.d.ts +18 -0
  55. package/dist/TeamManager.d.ts.map +1 -0
  56. package/dist/TeamManager.js +90 -0
  57. package/dist/TeamManager.js.map +1 -0
  58. package/dist/components/CmsAdminHeader.d.ts +11 -0
  59. package/dist/components/CmsAdminHeader.d.ts.map +1 -0
  60. package/dist/components/CmsAdminHeader.js +119 -0
  61. package/dist/components/CmsAdminHeader.js.map +1 -0
  62. package/dist/components/ConfirmDialog.d.ts +19 -0
  63. package/dist/components/ConfirmDialog.d.ts.map +1 -0
  64. package/dist/components/ConfirmDialog.js +12 -0
  65. package/dist/components/ConfirmDialog.js.map +1 -0
  66. package/dist/components/EmptyState.d.ts +9 -0
  67. package/dist/components/EmptyState.d.ts.map +1 -0
  68. package/dist/components/EmptyState.js +7 -0
  69. package/dist/components/EmptyState.js.map +1 -0
  70. package/dist/components/EntryRow.d.ts +12 -0
  71. package/dist/components/EntryRow.d.ts.map +1 -0
  72. package/dist/components/EntryRow.js +20 -0
  73. package/dist/components/EntryRow.js.map +1 -0
  74. package/dist/components/ErrorAlert.d.ts +32 -0
  75. package/dist/components/ErrorAlert.d.ts.map +1 -0
  76. package/dist/components/ErrorAlert.js +40 -0
  77. package/dist/components/ErrorAlert.js.map +1 -0
  78. package/dist/components/InviteRow.d.ts +18 -0
  79. package/dist/components/InviteRow.d.ts.map +1 -0
  80. package/dist/components/InviteRow.js +28 -0
  81. package/dist/components/InviteRow.js.map +1 -0
  82. package/dist/components/MediaCard.d.ts +10 -0
  83. package/dist/components/MediaCard.d.ts.map +1 -0
  84. package/dist/components/MediaCard.js +29 -0
  85. package/dist/components/MediaCard.js.map +1 -0
  86. package/dist/components/MemberRow.d.ts +19 -0
  87. package/dist/components/MemberRow.d.ts.map +1 -0
  88. package/dist/components/MemberRow.js +19 -0
  89. package/dist/components/MemberRow.js.map +1 -0
  90. package/dist/components/PageHeader.d.ts +8 -0
  91. package/dist/components/PageHeader.d.ts.map +1 -0
  92. package/dist/components/PageHeader.js +7 -0
  93. package/dist/components/PageHeader.js.map +1 -0
  94. package/dist/components/RoleBadge.d.ts +7 -0
  95. package/dist/components/RoleBadge.d.ts.map +1 -0
  96. package/dist/components/RoleBadge.js +12 -0
  97. package/dist/components/RoleBadge.js.map +1 -0
  98. package/dist/components/StatusBadge.d.ts +8 -0
  99. package/dist/components/StatusBadge.d.ts.map +1 -0
  100. package/dist/components/StatusBadge.js +16 -0
  101. package/dist/components/StatusBadge.js.map +1 -0
  102. package/dist/components/TagInput.d.ts +12 -0
  103. package/dist/components/TagInput.d.ts.map +1 -0
  104. package/dist/components/TagInput.js +76 -0
  105. package/dist/components/TagInput.js.map +1 -0
  106. package/dist/components/UploadZone.d.ts +9 -0
  107. package/dist/components/UploadZone.d.ts.map +1 -0
  108. package/dist/components/UploadZone.js +21 -0
  109. package/dist/components/UploadZone.js.map +1 -0
  110. package/dist/components/index.d.ts +27 -0
  111. package/dist/components/index.d.ts.map +1 -0
  112. package/dist/components/index.js +15 -0
  113. package/dist/components/index.js.map +1 -0
  114. package/dist/hooks/use-mobile.d.ts +2 -0
  115. package/dist/hooks/use-mobile.d.ts.map +1 -0
  116. package/dist/hooks/use-mobile.js +16 -0
  117. package/dist/hooks/use-mobile.js.map +1 -0
  118. package/dist/hooks/useMediaQuery.d.ts +2 -0
  119. package/dist/hooks/useMediaQuery.d.ts.map +1 -0
  120. package/dist/hooks/useMediaQuery.js +16 -0
  121. package/dist/hooks/useMediaQuery.js.map +1 -0
  122. package/dist/index.d.ts +29 -0
  123. package/dist/index.d.ts.map +1 -0
  124. package/dist/index.js +23 -0
  125. package/dist/index.js.map +1 -0
  126. package/dist/lib/utils.d.ts +3 -0
  127. package/dist/lib/utils.d.ts.map +1 -0
  128. package/dist/lib/utils.js +6 -0
  129. package/dist/lib/utils.js.map +1 -0
  130. package/dist/ui/accordion.d.ts +8 -0
  131. package/dist/ui/accordion.d.ts.map +1 -0
  132. package/dist/ui/accordion.js +19 -0
  133. package/dist/ui/accordion.js.map +1 -0
  134. package/dist/ui/aevr/aevr/activity-item.d.ts +107 -0
  135. package/dist/ui/aevr/aevr/activity-item.d.ts.map +1 -0
  136. package/dist/ui/aevr/aevr/activity-item.js +154 -0
  137. package/dist/ui/aevr/aevr/activity-item.js.map +1 -0
  138. package/dist/ui/aevr/aevr/blurred-background.d.ts +10 -0
  139. package/dist/ui/aevr/aevr/blurred-background.d.ts.map +1 -0
  140. package/dist/ui/aevr/aevr/blurred-background.js +31 -0
  141. package/dist/ui/aevr/aevr/blurred-background.js.map +1 -0
  142. package/dist/ui/aevr/aevr/button.d.ts +11 -0
  143. package/dist/ui/aevr/aevr/button.d.ts.map +1 -0
  144. package/dist/ui/aevr/aevr/button.js +37 -0
  145. package/dist/ui/aevr/aevr/button.js.map +1 -0
  146. package/dist/ui/aevr/aevr/country-dropdown.d.ts +25 -0
  147. package/dist/ui/aevr/aevr/country-dropdown.d.ts.map +1 -0
  148. package/dist/ui/aevr/aevr/country-dropdown.js +38 -0
  149. package/dist/ui/aevr/aevr/country-dropdown.js.map +1 -0
  150. package/dist/ui/aevr/aevr/currency-amount-input.d.ts +19 -0
  151. package/dist/ui/aevr/aevr/currency-amount-input.d.ts.map +1 -0
  152. package/dist/ui/aevr/aevr/currency-amount-input.js +89 -0
  153. package/dist/ui/aevr/aevr/currency-amount-input.js.map +1 -0
  154. package/dist/ui/aevr/aevr/currency-select.d.ts +16 -0
  155. package/dist/ui/aevr/aevr/currency-select.d.ts.map +1 -0
  156. package/dist/ui/aevr/aevr/currency-select.js +38 -0
  157. package/dist/ui/aevr/aevr/currency-select.js.map +1 -0
  158. package/dist/ui/aevr/aevr/file-upload.d.ts +70 -0
  159. package/dist/ui/aevr/aevr/file-upload.d.ts.map +1 -0
  160. package/dist/ui/aevr/aevr/file-upload.js +388 -0
  161. package/dist/ui/aevr/aevr/file-upload.js.map +1 -0
  162. package/dist/ui/aevr/aevr/info-box.d.ts +32 -0
  163. package/dist/ui/aevr/aevr/info-box.d.ts.map +1 -0
  164. package/dist/ui/aevr/aevr/info-box.js +248 -0
  165. package/dist/ui/aevr/aevr/info-box.js.map +1 -0
  166. package/dist/ui/aevr/aevr/loader.d.ts +6 -0
  167. package/dist/ui/aevr/aevr/loader.d.ts.map +1 -0
  168. package/dist/ui/aevr/aevr/loader.js +14 -0
  169. package/dist/ui/aevr/aevr/loader.js.map +1 -0
  170. package/dist/ui/aevr/aevr/mini-wallet-card.d.ts +29 -0
  171. package/dist/ui/aevr/aevr/mini-wallet-card.d.ts.map +1 -0
  172. package/dist/ui/aevr/aevr/mini-wallet-card.js +31 -0
  173. package/dist/ui/aevr/aevr/mini-wallet-card.js.map +1 -0
  174. package/dist/ui/aevr/aevr/multistep.d.ts +40 -0
  175. package/dist/ui/aevr/aevr/multistep.d.ts.map +1 -0
  176. package/dist/ui/aevr/aevr/multistep.js +95 -0
  177. package/dist/ui/aevr/aevr/multistep.js.map +1 -0
  178. package/dist/ui/aevr/aevr/nav-user.d.ts +35 -0
  179. package/dist/ui/aevr/aevr/nav-user.d.ts.map +1 -0
  180. package/dist/ui/aevr/aevr/nav-user.js +47 -0
  181. package/dist/ui/aevr/aevr/nav-user.js.map +1 -0
  182. package/dist/ui/aevr/aevr/page-header.d.ts +46 -0
  183. package/dist/ui/aevr/aevr/page-header.d.ts.map +1 -0
  184. package/dist/ui/aevr/aevr/page-header.js +68 -0
  185. package/dist/ui/aevr/aevr/page-header.js.map +1 -0
  186. package/dist/ui/aevr/aevr/phone-input.d.ts +8 -0
  187. package/dist/ui/aevr/aevr/phone-input.d.ts.map +1 -0
  188. package/dist/ui/aevr/aevr/phone-input.js +60 -0
  189. package/dist/ui/aevr/aevr/phone-input.js.map +1 -0
  190. package/dist/ui/aevr/aevr/progress.d.ts +38 -0
  191. package/dist/ui/aevr/aevr/progress.d.ts.map +1 -0
  192. package/dist/ui/aevr/aevr/progress.js +65 -0
  193. package/dist/ui/aevr/aevr/progress.js.map +1 -0
  194. package/dist/ui/aevr/aevr/responsive-breadcrumb.d.ts +14 -0
  195. package/dist/ui/aevr/aevr/responsive-breadcrumb.d.ts.map +1 -0
  196. package/dist/ui/aevr/aevr/responsive-breadcrumb.js +17 -0
  197. package/dist/ui/aevr/aevr/responsive-breadcrumb.js.map +1 -0
  198. package/dist/ui/aevr/aevr/responsive-dialog.d.ts +16 -0
  199. package/dist/ui/aevr/aevr/responsive-dialog.d.ts.map +1 -0
  200. package/dist/ui/aevr/aevr/responsive-dialog.js +29 -0
  201. package/dist/ui/aevr/aevr/responsive-dialog.js.map +1 -0
  202. package/dist/ui/aevr/aevr/search-command.d.ts +31 -0
  203. package/dist/ui/aevr/aevr/search-command.d.ts.map +1 -0
  204. package/dist/ui/aevr/aevr/search-command.js +129 -0
  205. package/dist/ui/aevr/aevr/search-command.js.map +1 -0
  206. package/dist/ui/aevr/aevr/settings-card.d.ts +15 -0
  207. package/dist/ui/aevr/aevr/settings-card.d.ts.map +1 -0
  208. package/dist/ui/aevr/aevr/settings-card.js +29 -0
  209. package/dist/ui/aevr/aevr/settings-card.js.map +1 -0
  210. package/dist/ui/aevr/aevr/settings-header.d.ts +8 -0
  211. package/dist/ui/aevr/aevr/settings-header.d.ts.map +1 -0
  212. package/dist/ui/aevr/aevr/settings-header.js +9 -0
  213. package/dist/ui/aevr/aevr/settings-header.js.map +1 -0
  214. package/dist/ui/aevr/aevr/stat-card.d.ts +55 -0
  215. package/dist/ui/aevr/aevr/stat-card.d.ts.map +1 -0
  216. package/dist/ui/aevr/aevr/stat-card.js +86 -0
  217. package/dist/ui/aevr/aevr/stat-card.js.map +1 -0
  218. package/dist/ui/aevr/aevr/summary-card.d.ts +20 -0
  219. package/dist/ui/aevr/aevr/summary-card.d.ts.map +1 -0
  220. package/dist/ui/aevr/aevr/summary-card.js +29 -0
  221. package/dist/ui/aevr/aevr/summary-card.js.map +1 -0
  222. package/dist/ui/aevr/aevr/tag.d.ts +15 -0
  223. package/dist/ui/aevr/aevr/tag.d.ts.map +1 -0
  224. package/dist/ui/aevr/aevr/tag.js +42 -0
  225. package/dist/ui/aevr/aevr/tag.js.map +1 -0
  226. package/dist/ui/aevr/aevr/theme-toggle.d.ts +2 -0
  227. package/dist/ui/aevr/aevr/theme-toggle.d.ts.map +1 -0
  228. package/dist/ui/aevr/aevr/theme-toggle.js +20 -0
  229. package/dist/ui/aevr/aevr/theme-toggle.js.map +1 -0
  230. package/dist/ui/aevr/aevr/transaction-pin-confirm.d.ts +21 -0
  231. package/dist/ui/aevr/aevr/transaction-pin-confirm.d.ts.map +1 -0
  232. package/dist/ui/aevr/aevr/transaction-pin-confirm.js +65 -0
  233. package/dist/ui/aevr/aevr/transaction-pin-confirm.js.map +1 -0
  234. package/dist/ui/aevr/aevr/wallet-activity-item.d.ts +36 -0
  235. package/dist/ui/aevr/aevr/wallet-activity-item.d.ts.map +1 -0
  236. package/dist/ui/aevr/aevr/wallet-activity-item.js +288 -0
  237. package/dist/ui/aevr/aevr/wallet-activity-item.js.map +1 -0
  238. package/dist/ui/aevr/aevr/wallet-topup-form.d.ts +26 -0
  239. package/dist/ui/aevr/aevr/wallet-topup-form.d.ts.map +1 -0
  240. package/dist/ui/aevr/aevr/wallet-topup-form.js +13 -0
  241. package/dist/ui/aevr/aevr/wallet-topup-form.js.map +1 -0
  242. package/dist/ui/aevr/blurred-background.d.ts +10 -0
  243. package/dist/ui/aevr/blurred-background.d.ts.map +1 -0
  244. package/dist/ui/aevr/blurred-background.js +31 -0
  245. package/dist/ui/aevr/blurred-background.js.map +1 -0
  246. package/dist/ui/aevr/loader.d.ts +7 -0
  247. package/dist/ui/aevr/loader.d.ts.map +1 -0
  248. package/dist/ui/aevr/loader.js +15 -0
  249. package/dist/ui/aevr/loader.js.map +1 -0
  250. package/dist/ui/aevr/nav-user.d.ts +35 -0
  251. package/dist/ui/aevr/nav-user.d.ts.map +1 -0
  252. package/dist/ui/aevr/nav-user.js +38 -0
  253. package/dist/ui/aevr/nav-user.js.map +1 -0
  254. package/dist/ui/aevr/page-header.d.ts +46 -0
  255. package/dist/ui/aevr/page-header.d.ts.map +1 -0
  256. package/dist/ui/aevr/page-header.js +72 -0
  257. package/dist/ui/aevr/page-header.js.map +1 -0
  258. package/dist/ui/aevr/progress.d.ts +38 -0
  259. package/dist/ui/aevr/progress.d.ts.map +1 -0
  260. package/dist/ui/aevr/progress.js +65 -0
  261. package/dist/ui/aevr/progress.js.map +1 -0
  262. package/dist/ui/aevr/responsive-breadcrumb.d.ts +14 -0
  263. package/dist/ui/aevr/responsive-breadcrumb.d.ts.map +1 -0
  264. package/dist/ui/aevr/responsive-breadcrumb.js +17 -0
  265. package/dist/ui/aevr/responsive-breadcrumb.js.map +1 -0
  266. package/dist/ui/aevr/search-command.d.ts +31 -0
  267. package/dist/ui/aevr/search-command.d.ts.map +1 -0
  268. package/dist/ui/aevr/search-command.js +129 -0
  269. package/dist/ui/aevr/search-command.js.map +1 -0
  270. package/dist/ui/aevr/theme-toggle.d.ts +2 -0
  271. package/dist/ui/aevr/theme-toggle.d.ts.map +1 -0
  272. package/dist/ui/aevr/theme-toggle.js +20 -0
  273. package/dist/ui/aevr/theme-toggle.js.map +1 -0
  274. package/dist/ui/alert-dialog.d.ts +19 -0
  275. package/dist/ui/alert-dialog.d.ts.map +1 -0
  276. package/dist/ui/alert-dialog.js +42 -0
  277. package/dist/ui/alert-dialog.js.map +1 -0
  278. package/dist/ui/alert.d.ts +11 -0
  279. package/dist/ui/alert.d.ts.map +1 -0
  280. package/dist/ui/alert.js +28 -0
  281. package/dist/ui/alert.js.map +1 -0
  282. package/dist/ui/avatar.d.ts +12 -0
  283. package/dist/ui/avatar.d.ts.map +1 -0
  284. package/dist/ui/avatar.js +24 -0
  285. package/dist/ui/avatar.js.map +1 -0
  286. package/dist/ui/badge.d.ts +10 -0
  287. package/dist/ui/badge.d.ts.map +1 -0
  288. package/dist/ui/badge.js +25 -0
  289. package/dist/ui/badge.js.map +1 -0
  290. package/dist/ui/breadcrumb.d.ts +12 -0
  291. package/dist/ui/breadcrumb.d.ts.map +1 -0
  292. package/dist/ui/breadcrumb.js +28 -0
  293. package/dist/ui/breadcrumb.js.map +1 -0
  294. package/dist/ui/button.d.ts +11 -0
  295. package/dist/ui/button.d.ts.map +1 -0
  296. package/dist/ui/button.js +36 -0
  297. package/dist/ui/button.js.map +1 -0
  298. package/dist/ui/checkbox.d.ts +5 -0
  299. package/dist/ui/checkbox.d.ts.map +1 -0
  300. package/dist/ui/checkbox.js +9 -0
  301. package/dist/ui/checkbox.js.map +1 -0
  302. package/dist/ui/command.d.ts +19 -0
  303. package/dist/ui/command.d.ts.map +1 -0
  304. package/dist/ui/command.js +35 -0
  305. package/dist/ui/command.js.map +1 -0
  306. package/dist/ui/dialog.d.ts +18 -0
  307. package/dist/ui/dialog.d.ts.map +1 -0
  308. package/dist/ui/dialog.js +37 -0
  309. package/dist/ui/dialog.js.map +1 -0
  310. package/dist/ui/drawer.d.ts +14 -0
  311. package/dist/ui/drawer.d.ts.map +1 -0
  312. package/dist/ui/drawer.js +35 -0
  313. package/dist/ui/drawer.js.map +1 -0
  314. package/dist/ui/dropdown-menu.d.ts +30 -0
  315. package/dist/ui/dropdown-menu.d.ts.map +1 -0
  316. package/dist/ui/dropdown-menu.js +52 -0
  317. package/dist/ui/dropdown-menu.js.map +1 -0
  318. package/dist/ui/field.d.ts +25 -0
  319. package/dist/ui/field.d.ts.map +1 -0
  320. package/dist/ui/field.js +68 -0
  321. package/dist/ui/field.js.map +1 -0
  322. package/dist/ui/hover-card.d.ts +7 -0
  323. package/dist/ui/hover-card.d.ts.map +1 -0
  324. package/dist/ui/hover-card.js +14 -0
  325. package/dist/ui/hover-card.js.map +1 -0
  326. package/dist/ui/input-group.d.ts +17 -0
  327. package/dist/ui/input-group.d.ts.map +1 -0
  328. package/dist/ui/input-group.js +57 -0
  329. package/dist/ui/input-group.js.map +1 -0
  330. package/dist/ui/input.d.ts +4 -0
  331. package/dist/ui/input.d.ts.map +1 -0
  332. package/dist/ui/input.js +7 -0
  333. package/dist/ui/input.js.map +1 -0
  334. package/dist/ui/item.d.ts +24 -0
  335. package/dist/ui/item.d.ts.map +1 -0
  336. package/dist/ui/item.js +68 -0
  337. package/dist/ui/item.js.map +1 -0
  338. package/dist/ui/label.d.ts +5 -0
  339. package/dist/ui/label.d.ts.map +1 -0
  340. package/dist/ui/label.js +8 -0
  341. package/dist/ui/label.js.map +1 -0
  342. package/dist/ui/radio-group.d.ts +6 -0
  343. package/dist/ui/radio-group.d.ts.map +1 -0
  344. package/dist/ui/radio-group.js +11 -0
  345. package/dist/ui/radio-group.js.map +1 -0
  346. package/dist/ui/select.d.ts +16 -0
  347. package/dist/ui/select.d.ts.map +1 -0
  348. package/dist/ui/select.js +36 -0
  349. package/dist/ui/select.js.map +1 -0
  350. package/dist/ui/separator.d.ts +5 -0
  351. package/dist/ui/separator.d.ts.map +1 -0
  352. package/dist/ui/separator.js +9 -0
  353. package/dist/ui/separator.js.map +1 -0
  354. package/dist/ui/sheet.d.ts +15 -0
  355. package/dist/ui/sheet.d.ts.map +1 -0
  356. package/dist/ui/sheet.js +37 -0
  357. package/dist/ui/sheet.js.map +1 -0
  358. package/dist/ui/sidebar.d.ts +70 -0
  359. package/dist/ui/sidebar.d.ts.map +1 -0
  360. package/dist/ui/sidebar.js +207 -0
  361. package/dist/ui/sidebar.js.map +1 -0
  362. package/dist/ui/skeleton.d.ts +3 -0
  363. package/dist/ui/skeleton.d.ts.map +1 -0
  364. package/dist/ui/skeleton.js +7 -0
  365. package/dist/ui/skeleton.js.map +1 -0
  366. package/dist/ui/switch.d.ts +7 -0
  367. package/dist/ui/switch.d.ts.map +1 -0
  368. package/dist/ui/switch.js +8 -0
  369. package/dist/ui/switch.js.map +1 -0
  370. package/dist/ui/table.d.ts +11 -0
  371. package/dist/ui/table.d.ts.map +1 -0
  372. package/dist/ui/table.js +28 -0
  373. package/dist/ui/table.js.map +1 -0
  374. package/dist/ui/textarea.d.ts +4 -0
  375. package/dist/ui/textarea.d.ts.map +1 -0
  376. package/dist/ui/textarea.js +7 -0
  377. package/dist/ui/textarea.js.map +1 -0
  378. package/dist/ui/toggle-group.d.ts +11 -0
  379. package/dist/ui/toggle-group.d.ts.map +1 -0
  380. package/dist/ui/toggle-group.js +24 -0
  381. package/dist/ui/toggle-group.js.map +1 -0
  382. package/dist/ui/toggle.d.ts +10 -0
  383. package/dist/ui/toggle.d.ts.map +1 -0
  384. package/dist/ui/toggle.js +26 -0
  385. package/dist/ui/toggle.js.map +1 -0
  386. package/dist/ui/tooltip.d.ts +8 -0
  387. package/dist/ui/tooltip.d.ts.map +1 -0
  388. package/dist/ui/tooltip.js +17 -0
  389. package/dist/ui/tooltip.js.map +1 -0
  390. package/package.json +57 -0
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { SchemaEditorRoot, useSchemaEditorContext, } from "./SchemaEditorRoot.js";
4
+ import { SchemaEditorSidebar } from "./SchemaEditorSidebar.js";
5
+ import { SchemaEditorContent } from "./SchemaEditorContent.js";
6
+ import { SchemaEditorFieldDrawer } from "./SchemaEditorFieldDrawer.js";
7
+ import { cn } from "./lib/utils.js";
8
+ import { ErrorAlert } from "./components/ErrorAlert.js";
9
+ import Loader from "./ui/aevr/loader.js";
10
+ /**
11
+ * Tier 3 — drop-in schema editor. Zero configuration required.
12
+ *
13
+ * ```tsx
14
+ * import { SchemaEditor } from '@airdraft/react-ui'
15
+ *
16
+ * export default function SchemaPage() {
17
+ * return <SchemaEditor />
18
+ * }
19
+ * ```
20
+ */
21
+ export function SchemaEditor({ value, labels, className }) {
22
+ return (_jsx(SchemaEditorRoot, { value: value, labels: labels, children: _jsx(SchemaEditorInner, { className: className }) }));
23
+ }
24
+ // Internal layout component (needs context, so must be a child of Root)
25
+ function SchemaEditorInner({ className }) {
26
+ const { loading, error, refresh, labels } = useSchemaEditorContext();
27
+ if (loading) {
28
+ return (_jsx("div", { className: "flex justify-center py-10", children: _jsx(Loader, {}) }));
29
+ }
30
+ if (error) {
31
+ return _jsx(ErrorAlert, { error: error, onRetry: refresh });
32
+ }
33
+ return (_jsxs("div", { className: cn("flex max-lg:flex-col gap-4 min-h-120", className), children: [_jsx(SchemaEditorSidebar, {}), _jsx(SchemaEditorContent, {}), _jsx(SchemaEditorFieldDrawer, {})] }));
34
+ }
35
+ //# sourceMappingURL=SchemaEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaEditor.js","sourceRoot":"","sources":["../src/SchemaEditor.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GAEvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,MAAM,MAAM,qBAAqB,CAAC;AAUzC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAqB;IAC1E,OAAO,CACL,KAAC,gBAAgB,IAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAC5C,KAAC,iBAAiB,IAAC,SAAS,EAAE,SAAS,GAAI,GAC1B,CACpB,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,SAAS,iBAAiB,CAAC,EAAE,SAAS,EAA0B;IAC9D,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAErE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,cAAK,SAAS,EAAC,2BAA2B,YACxC,KAAC,MAAM,KAAG,GACN,CACP,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;IACxD,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,sCAAsC,EAAE,SAAS,CAAC,aACnE,KAAC,mBAAmB,KAAG,EACvB,KAAC,mBAAmB,KAAG,EACvB,KAAC,uBAAuB,KAAG,IACvB,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function SchemaEditorContent({ className }: {
2
+ className?: string;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=SchemaEditorContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaEditorContent.d.ts","sourceRoot":"","sources":["../src/SchemaEditorContent.tsx"],"names":[],"mappings":"AAqCA,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAqLxE"}
@@ -0,0 +1,82 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from 'react';
4
+ import { ConfirmDialog } from './components/ConfirmDialog.js';
5
+ import { ErrorAlert } from './components/ErrorAlert.js';
6
+ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from './ui/accordion.js';
7
+ import { useSchemaEditorContext } from './SchemaEditorRoot.js';
8
+ import { Button } from './ui/button.js';
9
+ import Loader from './ui/aevr/loader.js';
10
+ import { Input } from './ui/input.js';
11
+ import { Label } from './ui/label.js';
12
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from './ui/select.js';
13
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './ui/table.js';
14
+ // ---------------------------------------------------------------------------
15
+ // SchemaEditorContent
16
+ // ---------------------------------------------------------------------------
17
+ export function SchemaEditorContent({ className }) {
18
+ const { collections, selectedCollection, setSelectedCollection, saving, updateCollection, deleteCollection, openDrawer, labels, } = useSchemaEditorContext();
19
+ const [saveError, setSaveError] = useState(null);
20
+ const activeCollection = selectedCollection ?? null;
21
+ const collectionConfig = activeCollection && collections ? collections[activeCollection] : null;
22
+ const fields = collectionConfig
23
+ ? Object.entries(collectionConfig.fields ?? {}).map(([key, config]) => ({ key, config }))
24
+ : [];
25
+ async function handleDeleteField(fieldKey) {
26
+ if (!activeCollection || !collectionConfig)
27
+ return;
28
+ const updated = {
29
+ ...collectionConfig,
30
+ fields: Object.fromEntries(Object.entries(collectionConfig.fields ?? {}).filter(([k]) => k !== fieldKey)),
31
+ };
32
+ setSaveError(null);
33
+ try {
34
+ await updateCollection(activeCollection, updated);
35
+ }
36
+ catch (err) {
37
+ setSaveError(err instanceof Error ? err.message : 'Delete failed.');
38
+ }
39
+ }
40
+ async function handleDeleteCollection() {
41
+ if (!activeCollection)
42
+ return;
43
+ try {
44
+ await deleteCollection(activeCollection);
45
+ setSelectedCollection(null);
46
+ }
47
+ catch (err) {
48
+ setSaveError(err instanceof Error ? err.message : 'Delete failed.');
49
+ }
50
+ }
51
+ async function handleSettingsSave(patch) {
52
+ if (!activeCollection || !collectionConfig)
53
+ return;
54
+ setSaveError(null);
55
+ try {
56
+ await updateCollection(activeCollection, { ...collectionConfig, ...patch });
57
+ }
58
+ catch (err) {
59
+ setSaveError(err instanceof Error ? err.message : 'Save failed.');
60
+ }
61
+ }
62
+ if (!activeCollection || !collectionConfig) {
63
+ return (_jsx("div", { className: className, children: _jsx("p", { className: "text-sm text-muted-foreground", children: labels.noCollectionSelected }) }));
64
+ }
65
+ const fieldNames = Object.keys(collectionConfig.fields ?? {});
66
+ return (_jsxs("div", { className: `flex flex-col gap-4 min-w-0 flex-1 ${className ?? ''}`, children: [_jsxs("div", { className: "flex items-start justify-between gap-4 flex-wrap", children: [_jsxs("div", { children: [_jsx("h3", { className: "font-medium text-sm", children: activeCollection }), _jsxs("p", { className: "text-xs text-muted-foreground mt-0.5", children: [collectionConfig.path, " \u00B7 ", collectionConfig.format, collectionConfig.publish ? ' · publish workflow' : ''] })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { size: "sm", disabled: saving, onClick: () => {
67
+ setSaveError(null);
68
+ openDrawer(null, null);
69
+ }, children: labels.addFieldButton }), _jsx(ConfirmDialog, { trigger: _jsx(Button, { size: "sm", variant: "destructive", children: labels.deleteCollectionButton }), title: labels.deleteCollectionConfirmTitle, description: labels.deleteCollectionConfirmDescription, confirmLabel: labels.confirmDeleteButton, cancelLabel: labels.cancelButton, onConfirm: handleDeleteCollection })] })] }), saveError && _jsx(ErrorAlert, { error: saveError, compact: true }), fields.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: labels.noFieldsYet })) : (_jsx("div", { className: "rounded-md border overflow-hidden", children: _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { className: "bg-muted/40 hover:bg-muted/40", children: [_jsx(TableHead, { className: "h-auto py-2 text-xs", children: "Key" }), _jsx(TableHead, { className: "h-auto py-2 text-xs", children: "Type" }), _jsx(TableHead, { className: "h-auto py-2 text-xs", children: "Required" }), _jsx(TableHead, { className: "h-auto py-2 text-xs", children: "Details" }), _jsx(TableHead, { className: "h-auto py-2" })] }) }), _jsx(TableBody, { children: fields.map(({ key, config }) => (_jsxs(TableRow, { children: [_jsx(TableCell, { className: "py-2 font-mono text-xs", children: key }), _jsx(TableCell, { className: "py-2", children: _jsx("span", { className: "inline-flex items-center rounded-full bg-muted px-2 py-0.5 text-xs font-medium", children: config.type }) }), _jsx(TableCell, { className: "py-2 text-xs text-muted-foreground", children: config.required ? 'Yes' : '—' }), _jsxs(TableCell, { className: "py-2 text-xs text-muted-foreground", children: [config.collection ? `→ ${config.collection}` : '', config.options?.length ? config.options.join(', ') : ''] }), _jsx(TableCell, { className: "py-2 text-right", children: _jsxs("div", { className: "flex items-center justify-end gap-1", children: [_jsx(Button, { variant: "ghost", size: "sm", className: "h-auto py-1 px-2 text-xs", onClick: () => openDrawer(key, config), children: "Edit" }), _jsx(ConfirmDialog, { trigger: _jsx(Button, { variant: "ghost", size: "sm", className: "h-auto py-1 px-2 text-xs text-destructive hover:text-destructive", children: "Delete" }), title: labels.deleteFieldConfirmTitle, description: labels.deleteFieldConfirmDescription, confirmLabel: labels.confirmDeleteButton, cancelLabel: labels.cancelButton, onConfirm: () => handleDeleteField(key) })] }) })] }, key))) })] }) })), _jsx(CollectionSettingsAccordion, { config: collectionConfig, fieldNames: fieldNames, onSave: handleSettingsSave, saving: saving, labels: labels })] }));
70
+ }
71
+ // ---------------------------------------------------------------------------
72
+ // Collection settings accordion (titleField + path)
73
+ // ---------------------------------------------------------------------------
74
+ function CollectionSettingsAccordion({ config, fieldNames, onSave, saving, labels, }) {
75
+ const [titleField, setTitleField] = useState(config.titleField ?? '');
76
+ const [path, setPath] = useState(config.path);
77
+ async function handleSave() {
78
+ await onSave({ path, ...(titleField ? { titleField } : {}) });
79
+ }
80
+ return (_jsx(Accordion, { type: "single", collapsible: true, className: "border rounded-md", children: _jsxs(AccordionItem, { value: "settings", className: "border-0", children: [_jsx(AccordionTrigger, { className: "px-4 py-3 text-sm font-medium hover:no-underline", children: labels.settingsAccordionTitle }), _jsxs(AccordionContent, { className: "px-0 pb-4 space-y-4", children: [_jsxs("div", { className: "space-y-1", children: [_jsx(Label, { className: "text-xs font-medium text-muted-foreground", children: labels.titleFieldLabel }), _jsxs(Select, { value: titleField || '__none__', onValueChange: (v) => setTitleField(v === '__none__' ? '' : v), children: [_jsx(SelectTrigger, { className: "w-full", children: _jsx(SelectValue, { placeholder: "\u2014 none \u2014" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "__none__", children: "\u2014 none \u2014" }), fieldNames.map((f) => (_jsx(SelectItem, { value: f, children: f }, f)))] })] })] }), _jsxs("div", { className: "space-y-1", children: [_jsx(Label, { className: "text-xs font-medium text-muted-foreground", children: labels.pathLabel }), _jsx(Input, { value: path, onChange: (e) => setPath(e.target.value), placeholder: "e.g. posts/{slug}.mdx" })] }), _jsxs(Button, { size: "sm", disabled: saving, onClick: handleSave, children: [_jsx(Loader, { loading: saving, className: "size-3.5" }), saving ? 'Saving…' : labels.saveButton] })] })] }) }));
81
+ }
82
+ //# sourceMappingURL=SchemaEditorContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaEditorContent.js","sourceRoot":"","sources":["../src/SchemaEditorContent.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function SchemaEditorFieldDrawer(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=SchemaEditorFieldDrawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaEditorFieldDrawer.d.ts","sourceRoot":"","sources":["../src/SchemaEditorFieldDrawer.tsx"],"names":[],"mappings":"AAiKA,wBAAgB,uBAAuB,4CAqNtC"}
@@ -0,0 +1,126 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState, useEffect } from "react";
4
+ import { FIELD_TYPE_META, validateFieldKey, } from "@airdraft/ui-core";
5
+ import { Type, AlignLeft, Hash, ToggleLeft, Calendar, CalendarClock, List, ChevronDown, ListChecks, FileText, Link, Network, Braces, Image, } from "lucide-react";
6
+ import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerFooter, } from "./ui/drawer.js";
7
+ import { useSchemaEditorContext } from "./SchemaEditorRoot.js";
8
+ import { useMediaQuery } from "./hooks/useMediaQuery.js";
9
+ import { Item, ItemMedia, ItemContent, ItemTitle, ItemDescription, ItemHeader, } from "./ui/item.js";
10
+ import { cn } from "./lib/utils.js";
11
+ import { Button } from "./ui/button.js";
12
+ import Loader from "./ui/aevr/loader.js";
13
+ import { Input } from "./ui/input.js";
14
+ import { Label } from "./ui/label.js";
15
+ import { Switch } from "./ui/switch.js";
16
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "./ui/select.js";
17
+ import { ErrorAlert } from "./components/ErrorAlert.js";
18
+ const ICON_MAP = {
19
+ Type,
20
+ AlignLeft,
21
+ Hash,
22
+ ToggleLeft,
23
+ Calendar,
24
+ CalendarClock,
25
+ List,
26
+ ChevronDown,
27
+ ListChecks,
28
+ FileText,
29
+ Link,
30
+ Network,
31
+ Braces,
32
+ Image,
33
+ };
34
+ function FieldIcon({ name, className }) {
35
+ const Icon = ICON_MAP[name];
36
+ if (!Icon)
37
+ return null;
38
+ return _jsx(Icon, { className: cn("size-4", className) });
39
+ }
40
+ // ---------------------------------------------------------------------------
41
+ // FieldTypeSelector — icon grid
42
+ // ---------------------------------------------------------------------------
43
+ const FIELD_TYPES = Object.values(FIELD_TYPE_META);
44
+ function FieldTypeSelector({ selected, onSelect, }) {
45
+ const meta = FIELD_TYPE_META[selected];
46
+ return (_jsxs("div", { className: "space-y-2", children: [_jsxs(Item, { variant: "muted", size: "sm", children: [_jsx(ItemMedia, { variant: "icon", className: "", children: _jsx(FieldIcon, { name: meta.icon }) }), _jsxs(ItemContent, { children: [_jsx(ItemTitle, { children: meta.label }), _jsx(ItemDescription, { children: meta.description })] })] }), _jsx("div", { className: "grid grid-cols-3 gap-1.5 sm:grid-cols-4", children: FIELD_TYPES.map(({ type, label, icon }) => (_jsx(Item, { asChild: true, onClick: () => onSelect(type), className: cn("font-medium transition-colors items-start p-1 gap-1", "hover:bg-muted active:scale-[0.97]", selected === type
47
+ ? "border-primary bg-primary/10 text-primary"
48
+ : "border-input text-foreground"), children: _jsxs("button", { children: [_jsx(ItemHeader, { className: cn("w-full rounded-lg p-2 flex items-center justify-center", selected === type ? "bg-primary" : "bg-primary/20"), children: _jsx(FieldIcon, { name: icon, className: selected === type
49
+ ? "text-primary-foreground"
50
+ : "text-primary" }) }), _jsx(ItemContent, { className: "items-center", children: _jsx(ItemTitle, { className: "text-xs text-center", children: label }) })] }) }, type))) })] }));
51
+ }
52
+ // ---------------------------------------------------------------------------
53
+ // SchemaEditorFieldDrawer
54
+ // ---------------------------------------------------------------------------
55
+ export function SchemaEditorFieldDrawer() {
56
+ const { collections, selectedCollection, updateCollection, drawerOpen, drawerField, closeDrawer, saving, labels, } = useSchemaEditorContext();
57
+ const isDesktop = useMediaQuery("(min-width: 768px)");
58
+ const editingKey = drawerField.key;
59
+ const editingConfig = drawerField.config;
60
+ const isEditing = editingKey !== null;
61
+ const [key, setKey] = useState(editingKey ?? "");
62
+ const [type, setType] = useState(editingConfig?.type ?? "string");
63
+ const [required, setRequired] = useState(editingConfig?.required ?? false);
64
+ const [collection, setCollection] = useState(editingConfig?.collection ?? "");
65
+ const [options, setOptions] = useState((editingConfig?.options ?? []).join(", "));
66
+ const [error, setError] = useState(null);
67
+ // Sync form state whenever the drawer opens for a different field
68
+ useEffect(() => {
69
+ setKey(drawerField.key ?? "");
70
+ setType(drawerField.config?.type ?? "string");
71
+ setRequired(drawerField.config?.required ?? false);
72
+ setCollection(drawerField.config?.collection ?? "");
73
+ setOptions((drawerField.config?.options ?? []).join(", "));
74
+ setError(null);
75
+ }, [drawerField]);
76
+ async function handleSave() {
77
+ const trimmedKey = key.trim();
78
+ const keyError = validateFieldKey(trimmedKey);
79
+ if (keyError) {
80
+ setError(keyError);
81
+ return;
82
+ }
83
+ const colConfig = selectedCollection && collections
84
+ ? collections[selectedCollection]
85
+ : null;
86
+ if (!colConfig || !selectedCollection) {
87
+ setError("No collection selected.");
88
+ return;
89
+ }
90
+ const fieldConfig = { type };
91
+ if (required)
92
+ fieldConfig.required = true;
93
+ if ((type === "relation" || type === "relations") && collection.trim()) {
94
+ fieldConfig.collection = collection.trim();
95
+ }
96
+ if ((type === "select" || type === "multiselect") && options.trim()) {
97
+ fieldConfig.options = options
98
+ .split(",")
99
+ .map((o) => o.trim())
100
+ .filter(Boolean);
101
+ }
102
+ setError(null);
103
+ try {
104
+ const updatedFields = {
105
+ ...(colConfig.fields ?? {}),
106
+ [trimmedKey]: fieldConfig,
107
+ };
108
+ await updateCollection(selectedCollection, {
109
+ ...colConfig,
110
+ fields: updatedFields,
111
+ });
112
+ closeDrawer();
113
+ }
114
+ catch (err) {
115
+ setError(err instanceof Error ? err.message : "Save failed.");
116
+ }
117
+ }
118
+ const collectionNames = Object.keys(collections ?? {});
119
+ return (_jsx(Drawer, { open: drawerOpen, onOpenChange: (open) => {
120
+ if (!open)
121
+ closeDrawer();
122
+ }, direction: isDesktop ? "right" : "bottom", dismissible: false, children: _jsxs(DrawerContent, { className: cn(isDesktop
123
+ ? "right-0 top-0 bottom-0 left-auto mt-0 w-96 rounded-none border-l"
124
+ : "bottom-0 left-0 right-0 max-h-[90dvh] rounded-t-2xl", "flex flex-col overflow-hidden"), children: [_jsx(DrawerHeader, { className: "border-b px-5 py-4 shrink-0", children: _jsx(DrawerTitle, { className: "text-sm font-semibold", children: isEditing ? labels.editFieldTitle : labels.addFieldTitle }) }), _jsxs("div", { className: "flex-1 overflow-y-auto px-5 py-4 space-y-5", children: [error && _jsx(ErrorAlert, { error: error, compact: true }), _jsxs("div", { className: "space-y-1.5", children: [_jsx(Label, { className: "text-xs font-medium text-muted-foreground", children: labels.fieldKeyLabel }), _jsx(Input, { placeholder: labels.fieldKeyPlaceholder, value: key, disabled: isEditing, onChange: (e) => setKey(e.target.value) }), isEditing && (_jsx("p", { className: "text-xs text-muted-foreground", children: labels.fieldKeyImmutableNote }))] }), _jsxs("div", { className: "space-y-1.5", children: [_jsx(Label, { className: "text-xs font-medium text-muted-foreground", children: labels.fieldTypeLabel }), _jsx(FieldTypeSelector, { selected: type, onSelect: setType })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Switch, { id: "field-required", checked: required, onCheckedChange: setRequired }), _jsx(Label, { htmlFor: "field-required", className: "text-sm font-normal cursor-pointer", children: labels.requiredLabel })] }), (type === "relation" || type === "relations") && (_jsxs("div", { className: "space-y-1.5", children: [_jsx(Label, { className: "text-xs font-medium text-muted-foreground", children: labels.targetCollectionLabel }), collectionNames.length > 0 ? (_jsxs(Select, { value: collection || "__none__", onValueChange: (v) => setCollection(v === "__none__" ? "" : v), children: [_jsx(SelectTrigger, { className: "w-full", children: _jsx(SelectValue, { placeholder: "\u2014 select \u2014" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "__none__", children: "\u2014 select \u2014" }), collectionNames.map((n) => (_jsx(SelectItem, { value: n, children: n }, n)))] })] })) : (_jsx(Input, { placeholder: "e.g. authors", value: collection, onChange: (e) => setCollection(e.target.value) }))] })), (type === "select" || type === "multiselect") && (_jsxs("div", { className: "space-y-1.5", children: [_jsx(Label, { className: "text-xs font-medium text-muted-foreground", children: labels.optionsLabel }), _jsx(Input, { placeholder: labels.optionsPlaceholder, value: options, onChange: (e) => setOptions(e.target.value) })] }))] }), _jsxs(DrawerFooter, { className: "border-t px-5 py-4 shrink-0 flex-row gap-2", children: [_jsxs(Button, { className: "flex-1", disabled: saving, onClick: handleSave, children: [_jsx(Loader, { loading: saving, className: "size-3.5" }), saving ? "Saving…" : labels.saveButton] }), _jsx(Button, { variant: "outline", onClick: closeDrawer, children: labels.cancelButton })] })] }) }));
125
+ }
126
+ //# sourceMappingURL=SchemaEditorFieldDrawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaEditorFieldDrawer.js","sourceRoot":"","sources":["../src/SchemaEditorFieldDrawer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EACL,eAAe,EACf,gBAAgB,GAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,aAAa,EACb,IAAI,EACJ,WAAW,EACX,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,MAAM,EACN,KAAK,GAEN,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,MAAM,EACN,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,IAAI,EACJ,SAAS,EACT,WAAW,EACX,SAAS,EACT,eAAe,EACf,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,MAAM,EACN,aAAa,EACb,UAAU,EACV,aAAa,EACb,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAQxD,MAAM,QAAQ,GAA+B;IAC3C,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,UAAU;IACV,QAAQ;IACR,aAAa;IACb,IAAI;IACJ,WAAW;IACX,UAAU;IACV,QAAQ;IACR,IAAI;IACJ,OAAO;IACP,MAAM;IACN,KAAK;CACN,CAAC;AAEF,SAAS,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAwC;IAC1E,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAI,CAAC;AACtD,CAAC;AAED,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,MAAM,WAAW,GAAoB,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAEpE,SAAS,iBAAiB,CAAC,EACzB,QAAQ,EACR,QAAQ,GAIT;IACC,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAEvC,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aAExB,MAAC,IAAI,IAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,aAC7B,KAAC,SAAS,IAAC,OAAO,EAAC,MAAM,EAAC,SAAS,EAAC,EAAE,YACpC,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,GACpB,EACZ,MAAC,WAAW,eACV,KAAC,SAAS,cAAE,IAAI,CAAC,KAAK,GAAa,EACnC,KAAC,eAAe,cAAE,IAAI,CAAC,WAAW,GAAmB,IACzC,IACT,EAGP,cAAK,SAAS,EAAC,yCAAyC,YACrD,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAC1C,KAAC,IAAI,IAEH,OAAO,QACP,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC7B,SAAS,EAAE,EAAE,CACX,qDAAqD,EACrD,oCAAoC,EACpC,QAAQ,KAAK,IAAI;wBACf,CAAC,CAAC,2CAA2C;wBAC7C,CAAC,CAAC,8BAA8B,CACnC,YAED,6BACE,KAAC,UAAU,IACT,SAAS,EAAE,EAAE,CACX,wDAAwD,EACxD,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CACnD,YAED,KAAC,SAAS,IACR,IAAI,EAAE,IAAI,EACV,SAAS,EACP,QAAQ,KAAK,IAAI;wCACf,CAAC,CAAC,yBAAyB;wCAC3B,CAAC,CAAC,cAAc,GAEpB,GACS,EACb,KAAC,WAAW,IAAC,SAAS,EAAC,cAAc,YACnC,KAAC,SAAS,IAAC,SAAS,EAAC,qBAAqB,YAAE,KAAK,GAAa,GAClD,IACP,IA9BJ,IAAI,CA+BJ,CACR,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,MAAM,UAAU,uBAAuB;IACrC,MAAM,EACJ,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,WAAW,EACX,MAAM,EACN,MAAM,GACP,GAAG,sBAAsB,EAAE,CAAC;IAE7B,MAAM,SAAS,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC;IACnC,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,KAAK,IAAI,CAAC;IAEtC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAY,aAAa,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC;IAC7E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,IAAI,KAAK,CAAC,CAAC;IAC3E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;IAC9E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CACpC,CAAC,aAAa,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC1C,CAAC;IACF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,kEAAkE;IAClE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC;QAC9C,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,IAAI,KAAK,CAAC,CAAC;QACnD,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;QACpD,UAAU,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,KAAK,UAAU,UAAU;QACvB,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GACb,kBAAkB,IAAI,WAAW;YAC/B,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC;YACjC,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,CAAC,SAAS,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAgB,EAAE,IAAI,EAAE,CAAC;QAC1C,IAAI,QAAQ;YAAE,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,WAAW,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YACvE,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,aAAa,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACpE,WAAW,CAAC,OAAO,GAAG,OAAO;iBAC1B,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpB,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,aAAa,GAAG;gBACpB,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC3B,CAAC,UAAU,CAAC,EAAE,WAAW;aAC1B,CAAC;YACF,MAAM,gBAAgB,CAAC,kBAAkB,EAAE;gBACzC,GAAG,SAAS;gBACZ,MAAM,EAAE,aAAa;aACtB,CAAC,CAAC;YACH,WAAW,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAEvD,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,UAAU,EAChB,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,CAAC,IAAI;gBAAE,WAAW,EAAE,CAAC;QAC3B,CAAC,EACD,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EACzC,WAAW,EAAE,KAAK,YAElB,MAAC,aAAa,IACZ,SAAS,EAAE,EAAE,CACX,SAAS;gBACP,CAAC,CAAC,kEAAkE;gBACpE,CAAC,CAAC,qDAAqD,EACzD,+BAA+B,CAChC,aAED,KAAC,YAAY,IAAC,SAAS,EAAC,6BAA6B,YACnD,KAAC,WAAW,IAAC,SAAS,EAAC,uBAAuB,YAC3C,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,GAC7C,GACD,EAEf,eAAK,SAAS,EAAC,4CAA4C,aACxD,KAAK,IAAI,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,SAAG,EAG9C,eAAK,SAAS,EAAC,aAAa,aAC1B,KAAC,KAAK,IAAC,SAAS,EAAC,2CAA2C,YACzD,MAAM,CAAC,aAAa,GACf,EACR,KAAC,KAAK,IACJ,WAAW,EAAE,MAAM,CAAC,mBAAmB,EACvC,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GACvC,EACD,SAAS,IAAI,CACZ,YAAG,SAAS,EAAC,+BAA+B,YACzC,MAAM,CAAC,qBAAqB,GAC3B,CACL,IACG,EAGN,eAAK,SAAS,EAAC,aAAa,aAC1B,KAAC,KAAK,IAAC,SAAS,EAAC,2CAA2C,YACzD,MAAM,CAAC,cAAc,GAChB,EACR,KAAC,iBAAiB,IAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAI,IACpD,EAGN,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,MAAM,IACL,EAAE,EAAC,gBAAgB,EACnB,OAAO,EAAE,QAAQ,EACjB,eAAe,EAAE,WAAW,GAC5B,EACF,KAAC,KAAK,IACJ,OAAO,EAAC,gBAAgB,EACxB,SAAS,EAAC,oCAAoC,YAE7C,MAAM,CAAC,aAAa,GACf,IACJ,EAGL,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,WAAW,CAAC,IAAI,CAChD,eAAK,SAAS,EAAC,aAAa,aAC1B,KAAC,KAAK,IAAC,SAAS,EAAC,2CAA2C,YACzD,MAAM,CAAC,qBAAqB,GACvB,EACP,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC5B,MAAC,MAAM,IACL,KAAK,EAAE,UAAU,IAAI,UAAU,EAC/B,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CACnB,aAAa,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAG1C,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,YAC/B,KAAC,WAAW,IAAC,WAAW,EAAC,sBAAY,GAAG,GAC1B,EAChB,MAAC,aAAa,eACZ,KAAC,UAAU,IAAC,KAAK,EAAC,UAAU,qCAAwB,EACnD,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC1B,KAAC,UAAU,IAAS,KAAK,EAAE,CAAC,YACzB,CAAC,IADa,CAAC,CAEL,CACd,CAAC,IACY,IACT,CACV,CAAC,CAAC,CAAC,CACF,KAAC,KAAK,IACJ,WAAW,EAAC,cAAc,EAC1B,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAC9C,CACH,IACG,CACP,EAGA,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,aAAa,CAAC,IAAI,CAChD,eAAK,SAAS,EAAC,aAAa,aAC1B,KAAC,KAAK,IAAC,SAAS,EAAC,2CAA2C,YACzD,MAAM,CAAC,YAAY,GACd,EACR,KAAC,KAAK,IACJ,WAAW,EAAE,MAAM,CAAC,kBAAkB,EACtC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAC3C,IACE,CACP,IACG,EAEN,MAAC,YAAY,IAAC,SAAS,EAAC,4CAA4C,aAClE,MAAC,MAAM,IAAC,SAAS,EAAC,QAAQ,EAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,aAC9D,KAAC,MAAM,IAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAC,UAAU,GAAG,EAC/C,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,IAChC,EACT,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,WAAW,YAC3C,MAAM,CAAC,YAAY,GACb,IACI,IACD,GACT,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { FieldConfig } from '@airdraft/core';
3
+ import { type UseSchemaEditorState } from '@airdraft/react';
4
+ export interface SchemaEditorLabels {
5
+ title?: string;
6
+ collectionsHeading?: string;
7
+ newCollectionButton?: string;
8
+ newCollectionTitle?: string;
9
+ newCollectionNamePlaceholder?: string;
10
+ newCollectionPathHint?: string;
11
+ createButton?: string;
12
+ cancelButton?: string;
13
+ addFieldButton?: string;
14
+ deleteCollectionButton?: string;
15
+ noCollectionSelected?: string;
16
+ noFieldsYet?: string;
17
+ settingsAccordionTitle?: string;
18
+ titleFieldLabel?: string;
19
+ pathLabel?: string;
20
+ saveButton?: string;
21
+ fieldKeyLabel?: string;
22
+ fieldKeyPlaceholder?: string;
23
+ fieldKeyImmutableNote?: string;
24
+ fieldTypeLabel?: string;
25
+ requiredLabel?: string;
26
+ targetCollectionLabel?: string;
27
+ optionsLabel?: string;
28
+ optionsPlaceholder?: string;
29
+ addFieldTitle?: string;
30
+ editFieldTitle?: string;
31
+ deleteFieldConfirmTitle?: string;
32
+ deleteFieldConfirmDescription?: string;
33
+ deleteCollectionConfirmTitle?: string;
34
+ deleteCollectionConfirmDescription?: string;
35
+ confirmDeleteButton?: string;
36
+ loading?: string;
37
+ }
38
+ interface SchemaEditorContextValue extends UseSchemaEditorState {
39
+ selectedCollection: string | null;
40
+ setSelectedCollection: (name: string | null) => void;
41
+ drawerOpen: boolean;
42
+ drawerField: {
43
+ key: string | null;
44
+ config: FieldConfig | null;
45
+ };
46
+ openDrawer: (key: string | null, config: FieldConfig | null) => void;
47
+ closeDrawer: () => void;
48
+ labels: Required<SchemaEditorLabels>;
49
+ }
50
+ export declare function useSchemaEditorContext(): SchemaEditorContextValue;
51
+ export interface SchemaEditorRootProps {
52
+ /** Override with a consumer-controlled useSchemaEditor() result (escape hatch). */
53
+ value?: UseSchemaEditorState;
54
+ labels?: SchemaEditorLabels;
55
+ children: ReactNode;
56
+ }
57
+ export declare function SchemaEditorRoot({ value, labels, children }: SchemaEditorRootProps): import("react/jsx-runtime").JSX.Element;
58
+ export {};
59
+ //# sourceMappingURL=SchemaEditorRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaEditorRoot.d.ts","sourceRoot":"","sources":["../src/SchemaEditorRoot.tsx"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AACd,OAAO,KAAK,EAAoB,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAM5E,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,6BAA6B,CAAC,EAAE,MAAM,CAAA;IACtC,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC,kCAAkC,CAAC,EAAE,MAAM,CAAA;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AA2CD,UAAU,wBAAyB,SAAQ,oBAAoB;IAC7D,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,qBAAqB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACpD,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE,CAAA;IAC/D,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAA;IACpE,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAA;CACrC;AAID,wBAAgB,sBAAsB,6BAIrC;AAMD,MAAM,WAAW,qBAAqB;IACpC,mFAAmF;IACnF,KAAK,CAAC,EAAE,oBAAoB,CAAA;IAC5B,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAsClF"}
@@ -0,0 +1,71 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext, useState, useCallback, } from 'react';
4
+ import { useSchemaEditor } from '@airdraft/react';
5
+ const DEFAULT_LABELS = {
6
+ title: 'Schema editor',
7
+ collectionsHeading: 'Collections',
8
+ newCollectionButton: '+ New collection',
9
+ newCollectionTitle: 'New collection',
10
+ newCollectionNamePlaceholder: 'e.g. authors',
11
+ newCollectionPathHint: 'e.g. {name}/{slug}.json',
12
+ createButton: 'Create',
13
+ cancelButton: 'Cancel',
14
+ addFieldButton: '+ Add field',
15
+ deleteCollectionButton: 'Delete collection',
16
+ noCollectionSelected: 'Select a collection to view its fields.',
17
+ noFieldsYet: 'No fields yet. Add one to get started.',
18
+ settingsAccordionTitle: 'Collection settings',
19
+ titleFieldLabel: 'Title field',
20
+ pathLabel: 'Path template',
21
+ saveButton: 'Save field',
22
+ fieldKeyLabel: 'Field key',
23
+ fieldKeyPlaceholder: 'e.g. authorId',
24
+ fieldKeyImmutableNote: 'Keys cannot be renamed after creation.',
25
+ fieldTypeLabel: 'Type',
26
+ requiredLabel: 'Required',
27
+ targetCollectionLabel: 'Target collection',
28
+ optionsLabel: 'Options (comma-separated)',
29
+ optionsPlaceholder: 'draft, published, archived',
30
+ addFieldTitle: 'Add field',
31
+ editFieldTitle: 'Edit field',
32
+ deleteFieldConfirmTitle: 'Delete field?',
33
+ deleteFieldConfirmDescription: 'This removes the field from the schema. Existing content data is not affected.',
34
+ deleteCollectionConfirmTitle: 'Delete collection?',
35
+ deleteCollectionConfirmDescription: 'This permanently removes the collection from the schema. Content files are not deleted.',
36
+ confirmDeleteButton: 'Delete',
37
+ loading: 'Loading schema…',
38
+ };
39
+ const SchemaEditorContext = createContext(null);
40
+ export function useSchemaEditorContext() {
41
+ const ctx = useContext(SchemaEditorContext);
42
+ if (!ctx)
43
+ throw new Error('useSchemaEditorContext must be used inside <SchemaEditorRoot>');
44
+ return ctx;
45
+ }
46
+ export function SchemaEditorRoot({ value, labels, children }) {
47
+ const internalState = useSchemaEditor();
48
+ const state = value ?? internalState;
49
+ const [selectedCollection, setSelectedCollection] = useState(null);
50
+ const [drawerOpen, setDrawerOpen] = useState(false);
51
+ const [drawerField, setDrawerField] = useState({ key: null, config: null });
52
+ const openDrawer = useCallback((key, config) => {
53
+ setDrawerField({ key, config });
54
+ setDrawerOpen(true);
55
+ }, []);
56
+ const closeDrawer = useCallback(() => {
57
+ setDrawerOpen(false);
58
+ }, []);
59
+ const mergedLabels = { ...DEFAULT_LABELS, ...labels };
60
+ return (_jsx(SchemaEditorContext.Provider, { value: {
61
+ ...state,
62
+ selectedCollection,
63
+ setSelectedCollection,
64
+ drawerOpen,
65
+ drawerField,
66
+ openDrawer,
67
+ closeDrawer,
68
+ labels: mergedLabels,
69
+ }, children: children }));
70
+ }
71
+ //# sourceMappingURL=SchemaEditorRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaEditorRoot.js","sourceRoot":"","sources":["../src/SchemaEditorRoot.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function SchemaEditorSidebar({ className }: {
2
+ className?: string;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=SchemaEditorSidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaEditorSidebar.d.ts","sourceRoot":"","sources":["../src/SchemaEditorSidebar.tsx"],"names":[],"mappings":"AA4GA,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAgDxE"}
@@ -0,0 +1,67 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect } from 'react';
4
+ import { useState } from 'react';
5
+ import { validateCollectionName, buildDefaultPath } from '@airdraft/ui-core';
6
+ import { useSchemaEditorContext } from './SchemaEditorRoot.js';
7
+ import { cn } from './lib/utils.js';
8
+ import { Button } from './ui/button.js';
9
+ import Loader from './ui/aevr/loader.js';
10
+ import { Input } from './ui/input.js';
11
+ import { Label } from './ui/label.js';
12
+ import { Switch } from './ui/switch.js';
13
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from './ui/select.js';
14
+ import { ErrorAlert } from './components/ErrorAlert.js';
15
+ // ---------------------------------------------------------------------------
16
+ function NewCollectionForm({ onDone }) {
17
+ const { createCollection, setSelectedCollection, labels } = useSchemaEditorContext();
18
+ const [name, setName] = useState('');
19
+ const [format, setFormat] = useState('json');
20
+ const [publish, setPublish] = useState(false);
21
+ const [error, setError] = useState(null);
22
+ const [saving, setSaving] = useState(false);
23
+ async function handleSubmit(e) {
24
+ e.preventDefault();
25
+ const slug = name.trim().toLowerCase();
26
+ const validationError = validateCollectionName(slug);
27
+ if (validationError) {
28
+ setError(validationError);
29
+ return;
30
+ }
31
+ setSaving(true);
32
+ setError(null);
33
+ const config = {
34
+ path: buildDefaultPath(slug, format),
35
+ format,
36
+ fields: {},
37
+ ...(publish ? { publish: true } : {}),
38
+ };
39
+ try {
40
+ await createCollection(slug, config);
41
+ setSelectedCollection(slug);
42
+ onDone();
43
+ }
44
+ catch (err) {
45
+ setError(err instanceof Error ? err.message : 'Failed to create.');
46
+ setSaving(false);
47
+ }
48
+ }
49
+ return (_jsxs("form", { onSubmit: handleSubmit, className: "mt-2 rounded-lg border bg-muted/30 p-3 space-y-3", children: [_jsx("p", { className: "text-xs font-medium", children: labels.newCollectionTitle }), error && _jsx(ErrorAlert, { error: error, compact: true }), _jsx(Input, { placeholder: labels.newCollectionNamePlaceholder, value: name, onChange: (e) => setName(e.target.value), autoFocus: true }), _jsxs(Select, { value: format, onValueChange: (v) => setFormat(v), children: [_jsx(SelectTrigger, { className: "w-full", children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "json", children: "JSON" }), _jsx(SelectItem, { value: "mdx", children: "MDX" }), _jsx(SelectItem, { value: "yaml", children: "YAML" })] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Switch, { id: "new-col-publish", checked: publish, onCheckedChange: setPublish }), _jsx(Label, { htmlFor: "new-col-publish", className: "text-xs font-normal cursor-pointer", children: "Publish / draft workflow" })] }), _jsxs("div", { className: "flex gap-2", children: [_jsxs(Button, { type: "submit", disabled: saving, className: "flex-1", children: [_jsx(Loader, { loading: saving, className: "size-3.5" }), saving ? 'Creating…' : labels.createButton] }), _jsx(Button, { type: "button", variant: "outline", onClick: onDone, children: labels.cancelButton })] })] }));
50
+ }
51
+ // ---------------------------------------------------------------------------
52
+ // SchemaEditorSidebar
53
+ // ---------------------------------------------------------------------------
54
+ export function SchemaEditorSidebar({ className }) {
55
+ const { collections, selectedCollection, setSelectedCollection, labels } = useSchemaEditorContext();
56
+ const [showNewForm, setShowNewForm] = useState(false);
57
+ // Auto-select first collection on load
58
+ useEffect(() => {
59
+ if (!selectedCollection && collections) {
60
+ const first = Object.keys(collections)[0] ?? null;
61
+ setSelectedCollection(first);
62
+ }
63
+ }, [collections, selectedCollection, setSelectedCollection]);
64
+ const names = Object.keys(collections ?? {});
65
+ return (_jsxs("aside", { className: cn('w-44 shrink-0 flex flex-col gap-1', className), children: [_jsx("p", { className: "text-xs font-medium text-muted-foreground mb-1", children: labels.collectionsHeading }), names.map((name) => (_jsx(Button, { variant: selectedCollection === name ? 'default' : 'ghost', size: "sm", className: "w-full justify-start", onClick: () => setSelectedCollection(name), children: name }, name))), showNewForm ? (_jsx(NewCollectionForm, { onDone: () => setShowNewForm(false) })) : (_jsx(Button, { onClick: () => setShowNewForm(true), variant: "outline", size: "sm", className: "w-full", children: labels.newCollectionButton }))] }));
66
+ }
67
+ //# sourceMappingURL=SchemaEditorSidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaEditorSidebar.js","sourceRoot":"","sources":["../src/SchemaEditorSidebar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,MAAM,MAAM,qBAAqB,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EACL,MAAM,EACN,aAAa,EACb,UAAU,EACV,aAAa,EACb,WAAW,GACZ,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,EAAE,MAAM,EAA0B;IAC3D,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,EAAE,GAAG,sBAAsB,EAAE,CAAA;IACpF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACpC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAA0B,MAAM,CAAC,CAAA;IACrE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACvD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE3C,KAAK,UAAU,YAAY,CAAC,CAAkB;QAC5C,CAAC,CAAC,cAAc,EAAE,CAAA;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QACtC,MAAM,eAAe,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;QACpD,IAAI,eAAe,EAAE,CAAC;YAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QAC1D,SAAS,CAAC,IAAI,CAAC,CAAA;QACf,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,MAAM,GAAqB;YAC/B,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC;YACpC,MAAM;YACN,MAAM,EAAE,EAAE;YACV,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtC,CAAA;QACD,IAAI,CAAC;YACH,MAAM,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACpC,qBAAqB,CAAC,IAAI,CAAC,CAAA;YAC3B,MAAM,EAAE,CAAA;QACV,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAA;YAClE,SAAS,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC;IACH,CAAC;IAED,OAAO,CACL,gBACE,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAC,kDAAkD,aAE5D,YAAG,SAAS,EAAC,qBAAqB,YAAE,MAAM,CAAC,kBAAkB,GAAK,EACjE,KAAK,IAAI,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,SAAG,EAE9C,KAAC,KAAK,IACJ,WAAW,EAAE,MAAM,CAAC,4BAA4B,EAChD,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACxC,SAAS,SACT,EAEF,MAAC,MAAM,IAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAkB,CAAC,aACxE,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,YAC/B,KAAC,WAAW,KAAG,GACD,EAChB,MAAC,aAAa,eACZ,KAAC,UAAU,IAAC,KAAK,EAAC,MAAM,qBAAkB,EAC1C,KAAC,UAAU,IAAC,KAAK,EAAC,KAAK,oBAAiB,EACxC,KAAC,UAAU,IAAC,KAAK,EAAC,MAAM,qBAAkB,IAC5B,IACT,EAET,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,MAAM,IACL,EAAE,EAAC,iBAAiB,EACpB,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,UAAU,GAC3B,EACF,KAAC,KAAK,IAAC,OAAO,EAAC,iBAAiB,EAAC,SAAS,EAAC,oCAAoC,yCAEvE,IACJ,EAEN,eAAK,SAAS,EAAC,YAAY,aACzB,MAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAC,QAAQ,aACxD,KAAC,MAAM,IAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAC,UAAU,GAAG,EAC/C,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,IACpC,EACT,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,MAAM,YACpD,MAAM,CAAC,YAAY,GACb,IACL,IACD,CACR,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,UAAU,mBAAmB,CAAC,EAAE,SAAS,EAA0B;IACvE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,EAAE,GACtE,sBAAsB,EAAE,CAAA;IAE1B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAErD,uCAAuC;IACvC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,kBAAkB,IAAI,WAAW,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;YACjD,qBAAqB,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,CAAC,CAAA;IAE5D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;IAE5C,OAAO,CACL,iBAAO,SAAS,EAAE,EAAE,CAAC,mCAAmC,EAAE,SAAS,CAAC,aAClE,YAAG,SAAS,EAAC,gDAAgD,YAC1D,MAAM,CAAC,kBAAkB,GACxB,EAEH,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,MAAM,IAEL,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAC1D,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,sBAAsB,EAChC,OAAO,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAEzC,IAAI,IANA,IAAI,CAOF,CACV,CAAC,EAED,WAAW,CAAC,CAAC,CAAC,CACb,KAAC,iBAAiB,IAAC,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,GAAI,CAC3D,CAAC,CAAC,CAAC,CACF,KAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EACnC,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,QAAQ,YAEjB,MAAM,CAAC,mBAAmB,GACpB,CACV,IACK,CACT,CAAA;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface TeamManagerProps {
2
+ className?: string;
3
+ /**
4
+ * Base path used to build invite links, e.g. `https://mysite.com`.
5
+ * Defaults to the current origin (browser only).
6
+ */
7
+ inviteBasePath?: string;
8
+ /**
9
+ * Whether the current user has admin privileges.
10
+ * When true, role change, remove, and invite controls are shown.
11
+ * Defaults to `true` — the server enforces permissions regardless.
12
+ */
13
+ isAdmin?: boolean;
14
+ /** Email of the currently logged-in user — disables the self-remove button. */
15
+ currentUserEmail?: string;
16
+ }
17
+ export declare function TeamManager({ className, inviteBasePath, isAdmin, currentUserEmail }: TeamManagerProps): import("react/jsx-runtime").JSX.Element;
18
+ //# sourceMappingURL=TeamManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamManager.d.ts","sourceRoot":"","sources":["../src/TeamManager.tsx"],"names":[],"mappings":"AA+BA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AA4MD,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,OAAc,EAAE,gBAAgB,EAAE,EAAE,gBAAgB,2CAoB5G"}