@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.
- package/CHANGELOG.md +5 -0
- package/dist/AcceptInviteForm.d.ts +22 -0
- package/dist/AcceptInviteForm.d.ts.map +1 -0
- package/dist/AcceptInviteForm.js +52 -0
- package/dist/AcceptInviteForm.js.map +1 -0
- package/dist/AuditLogViewer.d.ts +42 -0
- package/dist/AuditLogViewer.d.ts.map +1 -0
- package/dist/AuditLogViewer.js +95 -0
- package/dist/AuditLogViewer.js.map +1 -0
- package/dist/CollectionManager.d.ts +26 -0
- package/dist/CollectionManager.d.ts.map +1 -0
- package/dist/CollectionManager.js +100 -0
- package/dist/CollectionManager.js.map +1 -0
- package/dist/CollectionsIndex.d.ts +25 -0
- package/dist/CollectionsIndex.d.ts.map +1 -0
- package/dist/CollectionsIndex.js +42 -0
- package/dist/CollectionsIndex.js.map +1 -0
- package/dist/ContentManager.d.ts +26 -0
- package/dist/ContentManager.d.ts.map +1 -0
- package/dist/ContentManager.js +110 -0
- package/dist/ContentManager.js.map +1 -0
- package/dist/EntryEditor.d.ts +25 -0
- package/dist/EntryEditor.d.ts.map +1 -0
- package/dist/EntryEditor.js +190 -0
- package/dist/EntryEditor.js.map +1 -0
- package/dist/LoginForm.d.ts +18 -0
- package/dist/LoginForm.d.ts.map +1 -0
- package/dist/LoginForm.js +41 -0
- package/dist/LoginForm.js.map +1 -0
- package/dist/MediaManager.d.ts +21 -0
- package/dist/MediaManager.d.ts.map +1 -0
- package/dist/MediaManager.js +59 -0
- package/dist/MediaManager.js.map +1 -0
- package/dist/SchemaEditor.d.ts +22 -0
- package/dist/SchemaEditor.d.ts.map +1 -0
- package/dist/SchemaEditor.js +35 -0
- package/dist/SchemaEditor.js.map +1 -0
- package/dist/SchemaEditorContent.d.ts +4 -0
- package/dist/SchemaEditorContent.d.ts.map +1 -0
- package/dist/SchemaEditorContent.js +82 -0
- package/dist/SchemaEditorContent.js.map +1 -0
- package/dist/SchemaEditorFieldDrawer.d.ts +2 -0
- package/dist/SchemaEditorFieldDrawer.d.ts.map +1 -0
- package/dist/SchemaEditorFieldDrawer.js +126 -0
- package/dist/SchemaEditorFieldDrawer.js.map +1 -0
- package/dist/SchemaEditorRoot.d.ts +59 -0
- package/dist/SchemaEditorRoot.d.ts.map +1 -0
- package/dist/SchemaEditorRoot.js +71 -0
- package/dist/SchemaEditorRoot.js.map +1 -0
- package/dist/SchemaEditorSidebar.d.ts +4 -0
- package/dist/SchemaEditorSidebar.d.ts.map +1 -0
- package/dist/SchemaEditorSidebar.js +67 -0
- package/dist/SchemaEditorSidebar.js.map +1 -0
- package/dist/TeamManager.d.ts +18 -0
- package/dist/TeamManager.d.ts.map +1 -0
- package/dist/TeamManager.js +90 -0
- package/dist/TeamManager.js.map +1 -0
- package/dist/components/CmsAdminHeader.d.ts +11 -0
- package/dist/components/CmsAdminHeader.d.ts.map +1 -0
- package/dist/components/CmsAdminHeader.js +119 -0
- package/dist/components/CmsAdminHeader.js.map +1 -0
- package/dist/components/ConfirmDialog.d.ts +19 -0
- package/dist/components/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/ConfirmDialog.js +12 -0
- package/dist/components/ConfirmDialog.js.map +1 -0
- package/dist/components/EmptyState.d.ts +9 -0
- package/dist/components/EmptyState.d.ts.map +1 -0
- package/dist/components/EmptyState.js +7 -0
- package/dist/components/EmptyState.js.map +1 -0
- package/dist/components/EntryRow.d.ts +12 -0
- package/dist/components/EntryRow.d.ts.map +1 -0
- package/dist/components/EntryRow.js +20 -0
- package/dist/components/EntryRow.js.map +1 -0
- package/dist/components/ErrorAlert.d.ts +32 -0
- package/dist/components/ErrorAlert.d.ts.map +1 -0
- package/dist/components/ErrorAlert.js +40 -0
- package/dist/components/ErrorAlert.js.map +1 -0
- package/dist/components/InviteRow.d.ts +18 -0
- package/dist/components/InviteRow.d.ts.map +1 -0
- package/dist/components/InviteRow.js +28 -0
- package/dist/components/InviteRow.js.map +1 -0
- package/dist/components/MediaCard.d.ts +10 -0
- package/dist/components/MediaCard.d.ts.map +1 -0
- package/dist/components/MediaCard.js +29 -0
- package/dist/components/MediaCard.js.map +1 -0
- package/dist/components/MemberRow.d.ts +19 -0
- package/dist/components/MemberRow.d.ts.map +1 -0
- package/dist/components/MemberRow.js +19 -0
- package/dist/components/MemberRow.js.map +1 -0
- package/dist/components/PageHeader.d.ts +8 -0
- package/dist/components/PageHeader.d.ts.map +1 -0
- package/dist/components/PageHeader.js +7 -0
- package/dist/components/PageHeader.js.map +1 -0
- package/dist/components/RoleBadge.d.ts +7 -0
- package/dist/components/RoleBadge.d.ts.map +1 -0
- package/dist/components/RoleBadge.js +12 -0
- package/dist/components/RoleBadge.js.map +1 -0
- package/dist/components/StatusBadge.d.ts +8 -0
- package/dist/components/StatusBadge.d.ts.map +1 -0
- package/dist/components/StatusBadge.js +16 -0
- package/dist/components/StatusBadge.js.map +1 -0
- package/dist/components/TagInput.d.ts +12 -0
- package/dist/components/TagInput.d.ts.map +1 -0
- package/dist/components/TagInput.js +76 -0
- package/dist/components/TagInput.js.map +1 -0
- package/dist/components/UploadZone.d.ts +9 -0
- package/dist/components/UploadZone.d.ts.map +1 -0
- package/dist/components/UploadZone.js +21 -0
- package/dist/components/UploadZone.js.map +1 -0
- package/dist/components/index.d.ts +27 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +15 -0
- package/dist/components/index.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +16 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/hooks/useMediaQuery.d.ts +2 -0
- package/dist/hooks/useMediaQuery.d.ts.map +1 -0
- package/dist/hooks/useMediaQuery.js +16 -0
- package/dist/hooks/useMediaQuery.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +6 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/ui/accordion.d.ts +8 -0
- package/dist/ui/accordion.d.ts.map +1 -0
- package/dist/ui/accordion.js +19 -0
- package/dist/ui/accordion.js.map +1 -0
- package/dist/ui/aevr/aevr/activity-item.d.ts +107 -0
- package/dist/ui/aevr/aevr/activity-item.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/activity-item.js +154 -0
- package/dist/ui/aevr/aevr/activity-item.js.map +1 -0
- package/dist/ui/aevr/aevr/blurred-background.d.ts +10 -0
- package/dist/ui/aevr/aevr/blurred-background.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/blurred-background.js +31 -0
- package/dist/ui/aevr/aevr/blurred-background.js.map +1 -0
- package/dist/ui/aevr/aevr/button.d.ts +11 -0
- package/dist/ui/aevr/aevr/button.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/button.js +37 -0
- package/dist/ui/aevr/aevr/button.js.map +1 -0
- package/dist/ui/aevr/aevr/country-dropdown.d.ts +25 -0
- package/dist/ui/aevr/aevr/country-dropdown.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/country-dropdown.js +38 -0
- package/dist/ui/aevr/aevr/country-dropdown.js.map +1 -0
- package/dist/ui/aevr/aevr/currency-amount-input.d.ts +19 -0
- package/dist/ui/aevr/aevr/currency-amount-input.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/currency-amount-input.js +89 -0
- package/dist/ui/aevr/aevr/currency-amount-input.js.map +1 -0
- package/dist/ui/aevr/aevr/currency-select.d.ts +16 -0
- package/dist/ui/aevr/aevr/currency-select.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/currency-select.js +38 -0
- package/dist/ui/aevr/aevr/currency-select.js.map +1 -0
- package/dist/ui/aevr/aevr/file-upload.d.ts +70 -0
- package/dist/ui/aevr/aevr/file-upload.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/file-upload.js +388 -0
- package/dist/ui/aevr/aevr/file-upload.js.map +1 -0
- package/dist/ui/aevr/aevr/info-box.d.ts +32 -0
- package/dist/ui/aevr/aevr/info-box.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/info-box.js +248 -0
- package/dist/ui/aevr/aevr/info-box.js.map +1 -0
- package/dist/ui/aevr/aevr/loader.d.ts +6 -0
- package/dist/ui/aevr/aevr/loader.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/loader.js +14 -0
- package/dist/ui/aevr/aevr/loader.js.map +1 -0
- package/dist/ui/aevr/aevr/mini-wallet-card.d.ts +29 -0
- package/dist/ui/aevr/aevr/mini-wallet-card.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/mini-wallet-card.js +31 -0
- package/dist/ui/aevr/aevr/mini-wallet-card.js.map +1 -0
- package/dist/ui/aevr/aevr/multistep.d.ts +40 -0
- package/dist/ui/aevr/aevr/multistep.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/multistep.js +95 -0
- package/dist/ui/aevr/aevr/multistep.js.map +1 -0
- package/dist/ui/aevr/aevr/nav-user.d.ts +35 -0
- package/dist/ui/aevr/aevr/nav-user.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/nav-user.js +47 -0
- package/dist/ui/aevr/aevr/nav-user.js.map +1 -0
- package/dist/ui/aevr/aevr/page-header.d.ts +46 -0
- package/dist/ui/aevr/aevr/page-header.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/page-header.js +68 -0
- package/dist/ui/aevr/aevr/page-header.js.map +1 -0
- package/dist/ui/aevr/aevr/phone-input.d.ts +8 -0
- package/dist/ui/aevr/aevr/phone-input.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/phone-input.js +60 -0
- package/dist/ui/aevr/aevr/phone-input.js.map +1 -0
- package/dist/ui/aevr/aevr/progress.d.ts +38 -0
- package/dist/ui/aevr/aevr/progress.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/progress.js +65 -0
- package/dist/ui/aevr/aevr/progress.js.map +1 -0
- package/dist/ui/aevr/aevr/responsive-breadcrumb.d.ts +14 -0
- package/dist/ui/aevr/aevr/responsive-breadcrumb.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/responsive-breadcrumb.js +17 -0
- package/dist/ui/aevr/aevr/responsive-breadcrumb.js.map +1 -0
- package/dist/ui/aevr/aevr/responsive-dialog.d.ts +16 -0
- package/dist/ui/aevr/aevr/responsive-dialog.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/responsive-dialog.js +29 -0
- package/dist/ui/aevr/aevr/responsive-dialog.js.map +1 -0
- package/dist/ui/aevr/aevr/search-command.d.ts +31 -0
- package/dist/ui/aevr/aevr/search-command.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/search-command.js +129 -0
- package/dist/ui/aevr/aevr/search-command.js.map +1 -0
- package/dist/ui/aevr/aevr/settings-card.d.ts +15 -0
- package/dist/ui/aevr/aevr/settings-card.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/settings-card.js +29 -0
- package/dist/ui/aevr/aevr/settings-card.js.map +1 -0
- package/dist/ui/aevr/aevr/settings-header.d.ts +8 -0
- package/dist/ui/aevr/aevr/settings-header.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/settings-header.js +9 -0
- package/dist/ui/aevr/aevr/settings-header.js.map +1 -0
- package/dist/ui/aevr/aevr/stat-card.d.ts +55 -0
- package/dist/ui/aevr/aevr/stat-card.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/stat-card.js +86 -0
- package/dist/ui/aevr/aevr/stat-card.js.map +1 -0
- package/dist/ui/aevr/aevr/summary-card.d.ts +20 -0
- package/dist/ui/aevr/aevr/summary-card.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/summary-card.js +29 -0
- package/dist/ui/aevr/aevr/summary-card.js.map +1 -0
- package/dist/ui/aevr/aevr/tag.d.ts +15 -0
- package/dist/ui/aevr/aevr/tag.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/tag.js +42 -0
- package/dist/ui/aevr/aevr/tag.js.map +1 -0
- package/dist/ui/aevr/aevr/theme-toggle.d.ts +2 -0
- package/dist/ui/aevr/aevr/theme-toggle.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/theme-toggle.js +20 -0
- package/dist/ui/aevr/aevr/theme-toggle.js.map +1 -0
- package/dist/ui/aevr/aevr/transaction-pin-confirm.d.ts +21 -0
- package/dist/ui/aevr/aevr/transaction-pin-confirm.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/transaction-pin-confirm.js +65 -0
- package/dist/ui/aevr/aevr/transaction-pin-confirm.js.map +1 -0
- package/dist/ui/aevr/aevr/wallet-activity-item.d.ts +36 -0
- package/dist/ui/aevr/aevr/wallet-activity-item.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/wallet-activity-item.js +288 -0
- package/dist/ui/aevr/aevr/wallet-activity-item.js.map +1 -0
- package/dist/ui/aevr/aevr/wallet-topup-form.d.ts +26 -0
- package/dist/ui/aevr/aevr/wallet-topup-form.d.ts.map +1 -0
- package/dist/ui/aevr/aevr/wallet-topup-form.js +13 -0
- package/dist/ui/aevr/aevr/wallet-topup-form.js.map +1 -0
- package/dist/ui/aevr/blurred-background.d.ts +10 -0
- package/dist/ui/aevr/blurred-background.d.ts.map +1 -0
- package/dist/ui/aevr/blurred-background.js +31 -0
- package/dist/ui/aevr/blurred-background.js.map +1 -0
- package/dist/ui/aevr/loader.d.ts +7 -0
- package/dist/ui/aevr/loader.d.ts.map +1 -0
- package/dist/ui/aevr/loader.js +15 -0
- package/dist/ui/aevr/loader.js.map +1 -0
- package/dist/ui/aevr/nav-user.d.ts +35 -0
- package/dist/ui/aevr/nav-user.d.ts.map +1 -0
- package/dist/ui/aevr/nav-user.js +38 -0
- package/dist/ui/aevr/nav-user.js.map +1 -0
- package/dist/ui/aevr/page-header.d.ts +46 -0
- package/dist/ui/aevr/page-header.d.ts.map +1 -0
- package/dist/ui/aevr/page-header.js +72 -0
- package/dist/ui/aevr/page-header.js.map +1 -0
- package/dist/ui/aevr/progress.d.ts +38 -0
- package/dist/ui/aevr/progress.d.ts.map +1 -0
- package/dist/ui/aevr/progress.js +65 -0
- package/dist/ui/aevr/progress.js.map +1 -0
- package/dist/ui/aevr/responsive-breadcrumb.d.ts +14 -0
- package/dist/ui/aevr/responsive-breadcrumb.d.ts.map +1 -0
- package/dist/ui/aevr/responsive-breadcrumb.js +17 -0
- package/dist/ui/aevr/responsive-breadcrumb.js.map +1 -0
- package/dist/ui/aevr/search-command.d.ts +31 -0
- package/dist/ui/aevr/search-command.d.ts.map +1 -0
- package/dist/ui/aevr/search-command.js +129 -0
- package/dist/ui/aevr/search-command.js.map +1 -0
- package/dist/ui/aevr/theme-toggle.d.ts +2 -0
- package/dist/ui/aevr/theme-toggle.d.ts.map +1 -0
- package/dist/ui/aevr/theme-toggle.js +20 -0
- package/dist/ui/aevr/theme-toggle.js.map +1 -0
- package/dist/ui/alert-dialog.d.ts +19 -0
- package/dist/ui/alert-dialog.d.ts.map +1 -0
- package/dist/ui/alert-dialog.js +42 -0
- package/dist/ui/alert-dialog.js.map +1 -0
- package/dist/ui/alert.d.ts +11 -0
- package/dist/ui/alert.d.ts.map +1 -0
- package/dist/ui/alert.js +28 -0
- package/dist/ui/alert.js.map +1 -0
- package/dist/ui/avatar.d.ts +12 -0
- package/dist/ui/avatar.d.ts.map +1 -0
- package/dist/ui/avatar.js +24 -0
- package/dist/ui/avatar.js.map +1 -0
- package/dist/ui/badge.d.ts +10 -0
- package/dist/ui/badge.d.ts.map +1 -0
- package/dist/ui/badge.js +25 -0
- package/dist/ui/badge.js.map +1 -0
- package/dist/ui/breadcrumb.d.ts +12 -0
- package/dist/ui/breadcrumb.d.ts.map +1 -0
- package/dist/ui/breadcrumb.js +28 -0
- package/dist/ui/breadcrumb.js.map +1 -0
- package/dist/ui/button.d.ts +11 -0
- package/dist/ui/button.d.ts.map +1 -0
- package/dist/ui/button.js +36 -0
- package/dist/ui/button.js.map +1 -0
- package/dist/ui/checkbox.d.ts +5 -0
- package/dist/ui/checkbox.d.ts.map +1 -0
- package/dist/ui/checkbox.js +9 -0
- package/dist/ui/checkbox.js.map +1 -0
- package/dist/ui/command.d.ts +19 -0
- package/dist/ui/command.d.ts.map +1 -0
- package/dist/ui/command.js +35 -0
- package/dist/ui/command.js.map +1 -0
- package/dist/ui/dialog.d.ts +18 -0
- package/dist/ui/dialog.d.ts.map +1 -0
- package/dist/ui/dialog.js +37 -0
- package/dist/ui/dialog.js.map +1 -0
- package/dist/ui/drawer.d.ts +14 -0
- package/dist/ui/drawer.d.ts.map +1 -0
- package/dist/ui/drawer.js +35 -0
- package/dist/ui/drawer.js.map +1 -0
- package/dist/ui/dropdown-menu.d.ts +30 -0
- package/dist/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/ui/dropdown-menu.js +52 -0
- package/dist/ui/dropdown-menu.js.map +1 -0
- package/dist/ui/field.d.ts +25 -0
- package/dist/ui/field.d.ts.map +1 -0
- package/dist/ui/field.js +68 -0
- package/dist/ui/field.js.map +1 -0
- package/dist/ui/hover-card.d.ts +7 -0
- package/dist/ui/hover-card.d.ts.map +1 -0
- package/dist/ui/hover-card.js +14 -0
- package/dist/ui/hover-card.js.map +1 -0
- package/dist/ui/input-group.d.ts +17 -0
- package/dist/ui/input-group.d.ts.map +1 -0
- package/dist/ui/input-group.js +57 -0
- package/dist/ui/input-group.js.map +1 -0
- package/dist/ui/input.d.ts +4 -0
- package/dist/ui/input.d.ts.map +1 -0
- package/dist/ui/input.js +7 -0
- package/dist/ui/input.js.map +1 -0
- package/dist/ui/item.d.ts +24 -0
- package/dist/ui/item.d.ts.map +1 -0
- package/dist/ui/item.js +68 -0
- package/dist/ui/item.js.map +1 -0
- package/dist/ui/label.d.ts +5 -0
- package/dist/ui/label.d.ts.map +1 -0
- package/dist/ui/label.js +8 -0
- package/dist/ui/label.js.map +1 -0
- package/dist/ui/radio-group.d.ts +6 -0
- package/dist/ui/radio-group.d.ts.map +1 -0
- package/dist/ui/radio-group.js +11 -0
- package/dist/ui/radio-group.js.map +1 -0
- package/dist/ui/select.d.ts +16 -0
- package/dist/ui/select.d.ts.map +1 -0
- package/dist/ui/select.js +36 -0
- package/dist/ui/select.js.map +1 -0
- package/dist/ui/separator.d.ts +5 -0
- package/dist/ui/separator.d.ts.map +1 -0
- package/dist/ui/separator.js +9 -0
- package/dist/ui/separator.js.map +1 -0
- package/dist/ui/sheet.d.ts +15 -0
- package/dist/ui/sheet.d.ts.map +1 -0
- package/dist/ui/sheet.js +37 -0
- package/dist/ui/sheet.js.map +1 -0
- package/dist/ui/sidebar.d.ts +70 -0
- package/dist/ui/sidebar.d.ts.map +1 -0
- package/dist/ui/sidebar.js +207 -0
- package/dist/ui/sidebar.js.map +1 -0
- package/dist/ui/skeleton.d.ts +3 -0
- package/dist/ui/skeleton.d.ts.map +1 -0
- package/dist/ui/skeleton.js +7 -0
- package/dist/ui/skeleton.js.map +1 -0
- package/dist/ui/switch.d.ts +7 -0
- package/dist/ui/switch.d.ts.map +1 -0
- package/dist/ui/switch.js +8 -0
- package/dist/ui/switch.js.map +1 -0
- package/dist/ui/table.d.ts +11 -0
- package/dist/ui/table.d.ts.map +1 -0
- package/dist/ui/table.js +28 -0
- package/dist/ui/table.js.map +1 -0
- package/dist/ui/textarea.d.ts +4 -0
- package/dist/ui/textarea.d.ts.map +1 -0
- package/dist/ui/textarea.js +7 -0
- package/dist/ui/textarea.js.map +1 -0
- package/dist/ui/toggle-group.d.ts +11 -0
- package/dist/ui/toggle-group.d.ts.map +1 -0
- package/dist/ui/toggle-group.js +24 -0
- package/dist/ui/toggle-group.js.map +1 -0
- package/dist/ui/toggle.d.ts +10 -0
- package/dist/ui/toggle.d.ts.map +1 -0
- package/dist/ui/toggle.js +26 -0
- package/dist/ui/toggle.js.map +1 -0
- package/dist/ui/tooltip.d.ts +8 -0
- package/dist/ui/tooltip.d.ts.map +1 -0
- package/dist/ui/tooltip.js +17 -0
- package/dist/ui/tooltip.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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":"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"}
|
|
@@ -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 @@
|
|
|
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":"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"}
|
|
@@ -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"}
|