@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,129 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { usePathname, useRouter } from "next/navigation";
|
|
5
|
+
import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "@/components/ui/command";
|
|
6
|
+
import { Clock3Icon, SearchIcon } from "lucide-react";
|
|
7
|
+
import { Button } from "@/components/ui/button";
|
|
8
|
+
// ── Component ─────────────────────────────────────────────────────────────────
|
|
9
|
+
const DEFAULT_STORAGE_KEY = "app:search:recent";
|
|
10
|
+
const MAX_RECENT = 6;
|
|
11
|
+
export function SearchCommand({ variant = "header", placeholder = "Type a command or search...", triggerLabel = "Search", storageKey = DEFAULT_STORAGE_KEY, groups = [], keySequenceRoutes = {}, }) {
|
|
12
|
+
const [open, setOpen] = React.useState(false);
|
|
13
|
+
const [recentActivity, setRecentActivity] = React.useState([]);
|
|
14
|
+
const keySequenceRef = React.useRef("");
|
|
15
|
+
const keySequenceTimeoutRef = React.useRef(null);
|
|
16
|
+
const router = useRouter();
|
|
17
|
+
const pathname = usePathname();
|
|
18
|
+
// Flat list of all entries across all groups for route-tracking and shortcut lookup
|
|
19
|
+
const allEntries = React.useMemo(() => groups.flatMap((g) => g.entries), [groups]);
|
|
20
|
+
// ── Recent activity persistence ──────────────────────────────────────────
|
|
21
|
+
const readRecent = React.useCallback(() => {
|
|
22
|
+
if (typeof window === "undefined")
|
|
23
|
+
return [];
|
|
24
|
+
try {
|
|
25
|
+
const raw = window.localStorage.getItem(storageKey);
|
|
26
|
+
if (!raw)
|
|
27
|
+
return [];
|
|
28
|
+
const parsed = JSON.parse(raw);
|
|
29
|
+
return parsed
|
|
30
|
+
.filter((e) => Boolean(e?.title && e?.href))
|
|
31
|
+
.map((e) => ({
|
|
32
|
+
title: e.title,
|
|
33
|
+
description: e.description,
|
|
34
|
+
href: e.href,
|
|
35
|
+
icon: Clock3Icon,
|
|
36
|
+
keywords: ["recent", "activity"],
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
}, [storageKey]);
|
|
43
|
+
const writeRecent = React.useCallback((entries) => {
|
|
44
|
+
if (typeof window === "undefined")
|
|
45
|
+
return;
|
|
46
|
+
window.localStorage.setItem(storageKey, JSON.stringify(entries.map((e) => ({
|
|
47
|
+
title: e.title,
|
|
48
|
+
description: e.description,
|
|
49
|
+
href: e.href,
|
|
50
|
+
}))));
|
|
51
|
+
}, [storageKey]);
|
|
52
|
+
const addRecent = React.useCallback((entry) => {
|
|
53
|
+
setRecentActivity((prev) => {
|
|
54
|
+
const deduped = prev.filter((item) => item.href !== entry.href);
|
|
55
|
+
const next = [
|
|
56
|
+
{
|
|
57
|
+
...entry,
|
|
58
|
+
icon: Clock3Icon,
|
|
59
|
+
keywords: ["recent", "activity", ...(entry.keywords ?? [])],
|
|
60
|
+
},
|
|
61
|
+
...deduped,
|
|
62
|
+
].slice(0, MAX_RECENT);
|
|
63
|
+
writeRecent(next);
|
|
64
|
+
return next;
|
|
65
|
+
});
|
|
66
|
+
}, [writeRecent]);
|
|
67
|
+
// ── Navigation helpers ────────────────────────────────────────────────────
|
|
68
|
+
const runByHref = React.useCallback((href) => {
|
|
69
|
+
const entry = allEntries.find((e) => e.href === href);
|
|
70
|
+
setOpen(false);
|
|
71
|
+
if (entry)
|
|
72
|
+
addRecent(entry);
|
|
73
|
+
router.push(href);
|
|
74
|
+
}, [addRecent, allEntries, router]);
|
|
75
|
+
const runCommand = React.useCallback((entry) => {
|
|
76
|
+
setOpen(false);
|
|
77
|
+
addRecent(entry);
|
|
78
|
+
router.push(entry.href);
|
|
79
|
+
}, [addRecent, router]);
|
|
80
|
+
// ── Keyboard shortcuts ────────────────────────────────────────────────────
|
|
81
|
+
React.useEffect(() => {
|
|
82
|
+
const down = (e) => {
|
|
83
|
+
if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
|
|
84
|
+
e.preventDefault();
|
|
85
|
+
setOpen((o) => !o);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (e.metaKey || e.ctrlKey || e.altKey)
|
|
89
|
+
return;
|
|
90
|
+
const target = e.target;
|
|
91
|
+
if (target?.closest("input, textarea, [contenteditable='true']"))
|
|
92
|
+
return;
|
|
93
|
+
if (!/^[a-z]$/i.test(e.key))
|
|
94
|
+
return;
|
|
95
|
+
const next = `${keySequenceRef.current}${e.key.toLowerCase()}`.slice(-2);
|
|
96
|
+
keySequenceRef.current = next;
|
|
97
|
+
if (keySequenceTimeoutRef.current)
|
|
98
|
+
window.clearTimeout(keySequenceTimeoutRef.current);
|
|
99
|
+
keySequenceTimeoutRef.current = window.setTimeout(() => {
|
|
100
|
+
keySequenceRef.current = "";
|
|
101
|
+
}, 700);
|
|
102
|
+
const nextHref = keySequenceRoutes[next];
|
|
103
|
+
if (nextHref) {
|
|
104
|
+
e.preventDefault();
|
|
105
|
+
keySequenceRef.current = "";
|
|
106
|
+
runByHref(nextHref);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
document.addEventListener("keydown", down);
|
|
110
|
+
return () => {
|
|
111
|
+
document.removeEventListener("keydown", down);
|
|
112
|
+
if (keySequenceTimeoutRef.current)
|
|
113
|
+
window.clearTimeout(keySequenceTimeoutRef.current);
|
|
114
|
+
};
|
|
115
|
+
}, [keySequenceRoutes, runByHref]);
|
|
116
|
+
// ── Pathname tracking ─────────────────────────────────────────────────────
|
|
117
|
+
React.useEffect(() => {
|
|
118
|
+
setRecentActivity(readRecent());
|
|
119
|
+
}, [readRecent]);
|
|
120
|
+
React.useEffect(() => {
|
|
121
|
+
const active = allEntries.find((e) => e.href === pathname);
|
|
122
|
+
if (active)
|
|
123
|
+
addRecent(active);
|
|
124
|
+
}, [addRecent, allEntries, pathname]);
|
|
125
|
+
// ── Render helpers ────────────────────────────────────────────────────────
|
|
126
|
+
const renderItem = React.useCallback((entry) => (_jsxs(CommandItem, { value: `${entry.title} ${entry.description ?? ""} ${entry.keywords?.join(" ") ?? ""}`, onSelect: () => runCommand(entry), children: [_jsx("div", { className: "text-muted-foreground mr-2 flex h-8 w-8 items-center justify-center rounded-md border", children: _jsx(entry.icon, { className: "h-4 w-4" }) }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsx("span", { className: "truncate text-sm font-medium", children: entry.title }), entry.description ? (_jsx("span", { className: "text-muted-foreground truncate text-xs", children: entry.description })) : null] }), entry.shortcut ? (_jsx("kbd", { className: "text-muted-foreground bg-muted ml-2 hidden rounded border px-1.5 py-0.5 font-mono text-[10px] font-semibold tracking-wider sm:inline-flex", children: entry.shortcut })) : null] }, entry.href)), [runCommand]);
|
|
127
|
+
return (_jsxs(_Fragment, { children: [variant === "large" ? (_jsxs(Button, { onClick: () => setOpen(true), className: "group dark:bg-muted text-muted-foreground hover:bg-muted focus-visible:bg-background focus-visible:ring-primary relative mx-auto flex h-12 w-full max-w-4xl items-center justify-start rounded-full bg-neutral-100 px-4 pl-12 text-base font-medium transition-colors focus-visible:ring-1 focus-visible:outline-hidden", children: [_jsx("div", { className: "text-muted-foreground group-focus-within:text-primary absolute top-1/2 left-4 -translate-y-1/2 transition-colors", children: _jsx(SearchIcon, { className: "h-5 w-5" }) }), triggerLabel, _jsxs("kbd", { className: "bg-muted pointer-events-none absolute top-1/2 right-4 hidden h-6 -translate-y-1/2 items-center gap-1 rounded border px-2 font-mono text-[11px] font-medium opacity-100 select-none sm:flex", children: [_jsx("span", { className: "text-xs", children: "\u2318" }), "K"] })] })) : (_jsxs(Button, { onClick: () => setOpen(true), className: "group dark:bg-muted text-muted-foreground hover:bg-muted focus-visible:bg-background focus-visible:ring-primary relative flex h-9 w-full items-center justify-start rounded-full bg-neutral-100 px-4 text-sm font-medium transition-colors focus-visible:ring-1 focus-visible:outline-hidden sm:w-64 lg:w-80", children: [_jsx(SearchIcon, { className: "mr-2 h-4 w-4" }), _jsx("span", { className: "hidden lg:inline-flex", children: triggerLabel }), _jsx("span", { className: "lg:hidden", children: "Search..." }), _jsxs("kbd", { className: "dark:bg-muted pointer-events-none absolute top-1/2 right-2 hidden h-5 -translate-y-1/2 items-center gap-1 rounded-lg border bg-neutral-50 px-1.5 font-mono text-[10px] font-medium opacity-100 select-none sm:flex", children: [_jsx("span", { className: "text-xs", children: "\u2318" }), "K"] })] })), _jsxs(CommandDialog, { open: open, onOpenChange: setOpen, children: [_jsx(CommandInput, { placeholder: placeholder }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: "No results found." }), recentActivity.length > 0 && (_jsx(CommandGroup, { heading: "Recent Activity", children: recentActivity.map(renderItem) })), groups.map((group) => group.entries.length > 0 ? (_jsx(CommandGroup, { heading: group.heading, children: group.entries.map(renderItem) }, group.heading)) : null)] })] })] }));
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=search-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-command.js","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/search-command.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAkBhD,iFAAiF;AAEjF,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAChD,MAAM,UAAU,GAAG,CAAC,CAAC;AAgBrB,MAAM,UAAU,aAAa,CAAC,EAC5B,OAAO,GAAG,QAAQ,EAClB,WAAW,GAAG,6BAA6B,EAC3C,YAAY,GAAG,QAAQ,EACvB,UAAU,GAAG,mBAAmB,EAChC,MAAM,GAAG,EAAE,EACX,iBAAiB,GAAG,EAAE,GACH;IACnB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAiB,EAAE,CAAC,CAAC;IAC/E,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,qBAAqB,GAAG,KAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,oFAAoF;IACpF,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAC9B,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EACtC,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,4EAA4E;IAE5E,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,GAAmB,EAAE;QACxD,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAI3B,CAAC;YACH,OAAO,MAAM;iBACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;iBAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACX,KAAK,EAAE,CAAC,CAAC,KAAM;gBACf,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,IAAI,EAAE,CAAC,CAAC,IAAK;gBACb,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;aACjC,CAAC,CAAC,CAAC;QACR,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,CAAC,OAAuB,EAAE,EAAE;QAC1B,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAC1C,MAAM,CAAC,YAAY,CAAC,OAAO,CACzB,UAAU,EACV,IAAI,CAAC,SAAS,CACZ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC,CAAC,CACJ,CACF,CAAC;IACJ,CAAC,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CACjC,CAAC,KAAmB,EAAE,EAAE;QACtB,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG;gBACX;oBACE,GAAG,KAAK;oBACR,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;iBAC5D;gBACD,GAAG,OAAO;aACX,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YACvB,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,6EAA6E;IAE7E,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CACjC,CAAC,IAAY,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,IAAI,KAAK;YAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,EACD,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAChC,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAClC,CAAC,KAAmB,EAAE,EAAE;QACtB,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,EACD,CAAC,SAAS,EAAE,MAAM,CAAC,CACpB,CAAC;IAEF,6EAA6E;IAE7E,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,IAAI,GAAG,CAAC,CAAgB,EAAE,EAAE;YAChC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM;gBAAE,OAAO;YAE/C,MAAM,MAAM,GAAG,CAAC,CAAC,MAA4B,CAAC;YAC9C,IAAI,MAAM,EAAE,OAAO,CAAC,2CAA2C,CAAC;gBAAE,OAAO;YACzE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,OAAO;YAEpC,MAAM,IAAI,GAAG,GAAG,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;YAE9B,IAAI,qBAAqB,CAAC,OAAO;gBAC/B,MAAM,CAAC,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;YACrD,qBAAqB,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBACrD,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC;YAC9B,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,QAAQ,EAAE,CAAC;gBACb,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC;gBAC5B,SAAS,CAAC,QAAQ,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC9C,IAAI,qBAAqB,CAAC,OAAO;gBAC/B,MAAM,CAAC,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnC,6EAA6E;IAE7E,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC;IAClC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC3D,IAAI,MAAM;YAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtC,6EAA6E;IAE7E,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAClC,CAAC,KAAmB,EAAE,EAAE,CAAC,CACvB,MAAC,WAAW,IAEV,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EACrF,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,aAEjC,cAAK,SAAS,EAAC,uFAAuF,YACpG,KAAC,KAAK,CAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,GAC9B,EACN,eAAK,SAAS,EAAC,8BAA8B,aAC3C,eAAM,SAAS,EAAC,8BAA8B,YAAE,KAAK,CAAC,KAAK,GAAQ,EAClE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACnB,eAAM,SAAS,EAAC,wCAAwC,YACrD,KAAK,CAAC,WAAW,GACb,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,EACL,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAChB,cAAK,SAAS,EAAC,2IAA2I,YACvJ,KAAK,CAAC,QAAQ,GACX,CACP,CAAC,CAAC,CAAC,IAAI,KAnBH,KAAK,CAAC,IAAI,CAoBH,CACf,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,OAAO,CACL,8BACG,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CACrB,MAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAC5B,SAAS,EAAC,yTAAyT,aAEnU,cAAK,SAAS,EAAC,kHAAkH,YAC/H,KAAC,UAAU,IAAC,SAAS,EAAC,SAAS,GAAG,GAC9B,EACL,YAAY,EACb,eAAK,SAAS,EAAC,4LAA4L,aACzM,eAAM,SAAS,EAAC,SAAS,uBAAS,SAC9B,IACC,CACV,CAAC,CAAC,CAAC,CACF,MAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAC5B,SAAS,EAAC,8SAA8S,aAExT,KAAC,UAAU,IAAC,SAAS,EAAC,cAAc,GAAG,EACvC,eAAM,SAAS,EAAC,uBAAuB,YAAE,YAAY,GAAQ,EAC7D,eAAM,SAAS,EAAC,WAAW,0BAAiB,EAC5C,eAAK,SAAS,EAAC,oNAAoN,aACjO,eAAM,SAAS,EAAC,SAAS,uBAAS,SAC9B,IACC,CACV,EAED,MAAC,aAAa,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,aAC9C,KAAC,YAAY,IAAC,WAAW,EAAE,WAAW,GAAI,EAC1C,MAAC,WAAW,eACV,KAAC,YAAY,oCAAiC,EAE7C,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5B,KAAC,YAAY,IAAC,OAAO,EAAC,iBAAiB,YACpC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,GAClB,CAChB,EAEA,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACpB,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACzB,KAAC,YAAY,IAAqB,OAAO,EAAE,KAAK,CAAC,OAAO,YACrD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IADb,KAAK,CAAC,OAAO,CAEjB,CAChB,CAAC,CAAC,CAAC,IAAI,CACT,IACW,IACA,IACf,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const SettingsCard: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
3
|
+
declare const SettingsCardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
4
|
+
declare const SettingsCardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLHeadingElement>>;
|
|
5
|
+
declare const SettingsCardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
|
|
6
|
+
declare const SettingsCardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
7
|
+
declare const SettingsRow: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
8
|
+
asChild?: boolean;
|
|
9
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
declare const SettingsRowContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
declare const SettingsRowLabel: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
|
|
12
|
+
declare const SettingsRowValue: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
|
|
13
|
+
declare const SettingsRowAction: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
14
|
+
export { SettingsCard, SettingsCardHeader, SettingsCardTitle, SettingsCardDescription, SettingsCardContent, SettingsRow, SettingsRowContent, SettingsRowLabel, SettingsRowValue, SettingsRowAction, };
|
|
15
|
+
//# sourceMappingURL=settings-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-card.d.ts","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/settings-card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,YAAY,6GAYhB,CAAC;AAGH,QAAA,MAAM,kBAAkB,6GAStB,CAAC;AAGH,QAAA,MAAM,iBAAiB,qHASrB,CAAC;AAGH,QAAA,MAAM,uBAAuB,yHAS3B,CAAC;AAGH,QAAA,MAAM,mBAAmB,6GAYvB,CAAC;AAGH,QAAA,MAAM,WAAW;cAEoC,OAAO;wCAa1D,CAAC;AAGH,QAAA,MAAM,kBAAkB,6GAStB,CAAC;AAGH,QAAA,MAAM,gBAAgB,yHASpB,CAAC;AAGH,QAAA,MAAM,gBAAgB,yHASpB,CAAC;AAGH,QAAA,MAAM,iBAAiB,6GASrB,CAAC;AAGH,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "@/lib/utils";
|
|
5
|
+
const SettingsCard = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("text-card-foreground border-border/60 overflow-hidden rounded-(--settings-card-radius) border bg-transparent [--settings-card-radius:1.5rem]", className), ...props })));
|
|
6
|
+
SettingsCard.displayName = "SettingsCard";
|
|
7
|
+
const SettingsCardHeader = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })));
|
|
8
|
+
SettingsCardHeader.displayName = "SettingsCardHeader";
|
|
9
|
+
const SettingsCardTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx("h3", { ref: ref, className: cn("leading-none font-semibold tracking-tight", className), ...props })));
|
|
10
|
+
SettingsCardTitle.displayName = "SettingsCardTitle";
|
|
11
|
+
const SettingsCardDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx("p", { ref: ref, className: cn("text-muted-foreground text-sm", className), ...props })));
|
|
12
|
+
SettingsCardDescription.displayName = "SettingsCardDescription";
|
|
13
|
+
const SettingsCardContent = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("flex flex-col [&>*:first-child]:rounded-t-(--settings-card-radius) [&>*:last-child]:rounded-b-(--settings-card-radius)", className), ...props })));
|
|
14
|
+
SettingsCardContent.displayName = "SettingsCardContent";
|
|
15
|
+
const SettingsRow = React.forwardRef(({ className, asChild = false, ...props }, ref) => {
|
|
16
|
+
const Comp = asChild ? Slot : "div";
|
|
17
|
+
return (_jsx(Comp, { ref: ref, className: cn("hover:bg-muted/50 focus-visible:ring-ring/60 focus-visible:bg-muted/50 focus-within:ring-ring/60 focus-within:bg-muted/50 flex items-center justify-between gap-4 rounded-none border-b p-4 transition-colors last:border-0 focus-within:relative focus-within:z-10 focus-within:ring-2 focus-within:ring-inset focus-visible:relative focus-visible:z-10 focus-visible:ring-2 focus-visible:outline-none focus-visible:ring-inset sm:px-6", className), ...props }));
|
|
18
|
+
});
|
|
19
|
+
SettingsRow.displayName = "SettingsRow";
|
|
20
|
+
const SettingsRowContent = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("flex min-w-0 flex-1 items-center gap-4", className), ...props })));
|
|
21
|
+
SettingsRowContent.displayName = "SettingsRowContent";
|
|
22
|
+
const SettingsRowLabel = React.forwardRef(({ className, ...props }, ref) => (_jsx("p", { ref: ref, className: cn("text-sm leading-none font-medium", className), ...props })));
|
|
23
|
+
SettingsRowLabel.displayName = "SettingsRowLabel";
|
|
24
|
+
const SettingsRowValue = React.forwardRef(({ className, ...props }, ref) => (_jsx("p", { ref: ref, className: cn("text-muted-foreground text-sm", className), ...props })));
|
|
25
|
+
SettingsRowValue.displayName = "SettingsRowValue";
|
|
26
|
+
const SettingsRowAction = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("flex shrink-0 items-center gap-2", className), ...props })));
|
|
27
|
+
SettingsRowAction.displayName = "SettingsRowAction";
|
|
28
|
+
export { SettingsCard, SettingsCardHeader, SettingsCardTitle, SettingsCardDescription, SettingsCardContent, SettingsRow, SettingsRowContent, SettingsRowLabel, SettingsRowValue, SettingsRowAction, };
|
|
29
|
+
//# sourceMappingURL=settings-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-card.js","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/settings-card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface SettingsHeaderProps {
|
|
2
|
+
title: string;
|
|
3
|
+
backHref?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function SettingsHeader({ title, backHref, className, }: SettingsHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=settings-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-header.d.ts","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/settings-header.tsx"],"names":[],"mappings":"AAMA,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,mBAAmB,2CA2BrB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Link from "next/link";
|
|
3
|
+
import { ArrowLeftIcon } from "lucide-react";
|
|
4
|
+
import { cn } from "@/lib/utils";
|
|
5
|
+
import { Button } from "../button";
|
|
6
|
+
export function SettingsHeader({ title, backHref, className, }) {
|
|
7
|
+
return (_jsxs("header", { className: cn("relative mb-2 flex items-center justify-start gap-4", className), children: [backHref && (_jsx(Button, { asChild: true, variant: "outline", size: "icon", className: "absolute left-0", children: _jsx(Link, { href: backHref, "aria-label": "Back", children: _jsx(ArrowLeftIcon, { className: "size-5" }) }) })), _jsx("h1", { className: "ml-12 text-xl font-bold tracking-tight", children: title })] }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=settings-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-header.js","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/settings-header.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAQnC,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,SAAS,GACW;IACpB,OAAO,CACL,kBACE,SAAS,EAAE,EAAE,CACX,qDAAqD,EACrD,SAAS,CACV,aAEA,QAAQ,IAAI,CACX,KAAC,MAAM,IACL,OAAO,QACP,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAC,iBAAiB,YAE3B,KAAC,IAAI,IACH,IAAI,EAAE,QAAQ,gBAEH,MAAM,YAEjB,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,GAAG,GAC/B,GACA,CACV,EACD,aAAI,SAAS,EAAC,wCAAwC,YAAE,KAAK,GAAM,IAC5D,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface StatItem {
|
|
3
|
+
label: React.ReactNode;
|
|
4
|
+
value: React.ReactNode;
|
|
5
|
+
}
|
|
6
|
+
interface StatCardProps {
|
|
7
|
+
/** Primary stat — label on the left, value on the right */
|
|
8
|
+
label: React.ReactNode;
|
|
9
|
+
value: React.ReactNode;
|
|
10
|
+
/**
|
|
11
|
+
* Additional stat rows stacked below the primary one inside the inner card.
|
|
12
|
+
* Each row shares the same label/value layout, separated by a hairline divider.
|
|
13
|
+
*/
|
|
14
|
+
stats?: StatItem[];
|
|
15
|
+
/**
|
|
16
|
+
* Variant of the stats rows. Split stats are separated by a gap, stacked are separated by a border.
|
|
17
|
+
*/
|
|
18
|
+
statsVariant?: "split" | "stacked";
|
|
19
|
+
/** Freeform body content rendered below all stat rows (e.g. SplitProgressBar) */
|
|
20
|
+
children?: React.ReactNode;
|
|
21
|
+
/** Footer — left side (icon + text) */
|
|
22
|
+
footerLabel?: React.ReactNode;
|
|
23
|
+
/** Footer — right side (buttons / actions) */
|
|
24
|
+
footerAction?: React.ReactNode;
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* StatCard
|
|
29
|
+
*
|
|
30
|
+
* Muted outer shell + white inner card.
|
|
31
|
+
*
|
|
32
|
+
* The primary stat (`label` + `value`) always appears at the top.
|
|
33
|
+
* Pass `stats` to stack additional label/value rows below it — each row
|
|
34
|
+
* is separated by a hairline divider and shares the same layout.
|
|
35
|
+
* Freeform `children` (e.g. a SplitProgressBar) render after all rows.
|
|
36
|
+
*
|
|
37
|
+
* ```tsx
|
|
38
|
+
* // Single stat
|
|
39
|
+
* <StatCard label="Avg Latency" value={<>3423 <span>ms</span></>}
|
|
40
|
+
* footerLabel={<><Clock className="size-4" /> Last 30 days</>} />
|
|
41
|
+
*
|
|
42
|
+
* // Multiple stats
|
|
43
|
+
* <StatCard
|
|
44
|
+
* label="Avg Latency" value={<>3423 <span>ms</span></>}
|
|
45
|
+
* stats={[
|
|
46
|
+
* { label: "P95 Latency", value: <>8120 <span>ms</span></> },
|
|
47
|
+
* { label: "Cache hit rate", value: <>41 <span>%</span></> },
|
|
48
|
+
* ]}
|
|
49
|
+
* footerLabel={<><Clock className="size-4" /> Last 30 days</>}
|
|
50
|
+
* />
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function StatCard({ label, value, stats, statsVariant, children, footerLabel, footerAction, className, }: StatCardProps): import("react/jsx-runtime").JSX.Element;
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=stat-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat-card.d.ts","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/stat-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,UAAU,aAAa;IACrB,2DAA2D;IAC3D,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,iFAAiF;IACjF,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,uCAAuC;IACvC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,KAAK,EACL,YAAsB,EACtB,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,GACV,EAAE,aAAa,2CA8Ef"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "@/lib/utils";
|
|
3
|
+
import { Card, CardContent, CardFooter, CardHeader, } from "@/components/ui/card";
|
|
4
|
+
/**
|
|
5
|
+
* StatCard
|
|
6
|
+
*
|
|
7
|
+
* Muted outer shell + white inner card.
|
|
8
|
+
*
|
|
9
|
+
* The primary stat (`label` + `value`) always appears at the top.
|
|
10
|
+
* Pass `stats` to stack additional label/value rows below it — each row
|
|
11
|
+
* is separated by a hairline divider and shares the same layout.
|
|
12
|
+
* Freeform `children` (e.g. a SplitProgressBar) render after all rows.
|
|
13
|
+
*
|
|
14
|
+
* ```tsx
|
|
15
|
+
* // Single stat
|
|
16
|
+
* <StatCard label="Avg Latency" value={<>3423 <span>ms</span></>}
|
|
17
|
+
* footerLabel={<><Clock className="size-4" /> Last 30 days</>} />
|
|
18
|
+
*
|
|
19
|
+
* // Multiple stats
|
|
20
|
+
* <StatCard
|
|
21
|
+
* label="Avg Latency" value={<>3423 <span>ms</span></>}
|
|
22
|
+
* stats={[
|
|
23
|
+
* { label: "P95 Latency", value: <>8120 <span>ms</span></> },
|
|
24
|
+
* { label: "Cache hit rate", value: <>41 <span>%</span></> },
|
|
25
|
+
* ]}
|
|
26
|
+
* footerLabel={<><Clock className="size-4" /> Last 30 days</>}
|
|
27
|
+
* />
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export function StatCard({ label, value, stats, statsVariant = "split", children, footerLabel, footerAction, className, }) {
|
|
31
|
+
const extraStats = stats?.length ? stats : null;
|
|
32
|
+
return (_jsxs(Card, { variant: "stat", className: cn("justify-between", className), children: [_jsxs("div", { className: cn("bg-card rounded-lg", statsVariant == "split" && (stats?.length || 0) > 0 && "bg-muted"), children: [_jsxs(CardHeader, { className: cn("flex items-baseline-last justify-between gap-4 p-4", statsVariant == "split" &&
|
|
33
|
+
(stats?.length || 0) > 0 &&
|
|
34
|
+
"bg-card rounded-lg"), children: [_jsx("span", { children: label }), _jsx("span", { className: "text-2xl", children: value })] }), extraStats && (_jsx("div", { className: cn("flex flex-col", statsVariant == "split" && "bg-muted gap-2 pt-2"), children: extraStats.map((stat, i) => (_jsxs("div", { className: cn("border-border/50 flex items-baseline justify-between gap-4 border-t-2 px-4 py-3", statsVariant == "split" && "bg-card rounded-lg border-0 px-4"), children: [_jsx("span", { className: "text-muted-foreground text-sm", children: stat.label }), _jsx("span", { className: "text-xl", children: stat.value })] }, i))) })), children && (_jsx(CardContent, { className: cn("flex flex-col items-end gap-1 p-0 px-4 pb-4",
|
|
35
|
+
// Avoid double spacing when extra rows are also present
|
|
36
|
+
!extraStats && "pt-0"), children: children }))] }), (footerLabel || footerAction) && (_jsx(CardFooter, { className: "p-0", children: _jsxs("div", { className: "flex w-full items-center justify-between gap-4 px-0", children: [footerLabel && (_jsx("span", { className: "text-muted-foreground flex items-center gap-1 p-2 py-1 text-sm", children: footerLabel })), footerAction && _jsx("div", { className: "flex gap-2", children: footerAction })] }) }))] }));
|
|
37
|
+
}
|
|
38
|
+
{
|
|
39
|
+
/* <Card className="bg-muted gap-3 border-0 p-1.5">
|
|
40
|
+
<div className="bg-card rounded-lg">
|
|
41
|
+
<CardHeader className="flex items-baseline-last justify-between gap-4 p-4">
|
|
42
|
+
<span>Extractions Usage</span>
|
|
43
|
+
<span className="text-2xl">
|
|
44
|
+
{Math.ceil(
|
|
45
|
+
((usageAnalytics?.summary.monthlyCount || 0) /
|
|
46
|
+
(usageAnalytics?.limits?.monthlyQuota || 1)) *
|
|
47
|
+
100,
|
|
48
|
+
)}
|
|
49
|
+
<span className="text-muted-foreground text-base">%</span>
|
|
50
|
+
</span>
|
|
51
|
+
</CardHeader>
|
|
52
|
+
<CardContent className="p-0">
|
|
53
|
+
<div className="flex flex-col items-end gap-1 px-4">
|
|
54
|
+
<SplitProgressBar
|
|
55
|
+
value={
|
|
56
|
+
(usageAnalytics?.summary.monthlyCount || 0) /
|
|
57
|
+
(usageAnalytics?.limits?.monthlyQuota || 1)
|
|
58
|
+
}
|
|
59
|
+
filledClassName="bg-primary"
|
|
60
|
+
/>
|
|
61
|
+
<span>
|
|
62
|
+
{usageAnalytics?.summary.monthlyCount || 0} of{" "}
|
|
63
|
+
{usageAnalytics?.limits?.monthlyQuota || 0} requests
|
|
64
|
+
</span>
|
|
65
|
+
</div>
|
|
66
|
+
</CardContent>
|
|
67
|
+
</div>
|
|
68
|
+
<CardFooter className="p-0">
|
|
69
|
+
<div className="flex w-full items-center justify-between gap-4 px-0">
|
|
70
|
+
<span className="text-muted-foreground flex items-center gap-1 px-2">
|
|
71
|
+
<PieChart className="size-4" />
|
|
72
|
+
<span className="text-sm">Usage</span>
|
|
73
|
+
</span>
|
|
74
|
+
|
|
75
|
+
<div className="flex gap-2">
|
|
76
|
+
<Button asChild size={"sm"} variant={"modern"}>
|
|
77
|
+
<Link href={`/teams/${activeTeam?.team.slug}`}>
|
|
78
|
+
Upgrade
|
|
79
|
+
</Link>
|
|
80
|
+
</Button>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
</CardFooter>
|
|
84
|
+
</Card> */
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=stat-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat-card.js","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/stat-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,IAAI,EACJ,WAAW,EACX,UAAU,EACV,UAAU,GACX,MAAM,sBAAsB,CAAC;AA6B9B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,KAAK,EACL,YAAY,GAAG,OAAO,EACtB,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,GACK;IACd,MAAM,UAAU,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAEhD,OAAO,CACL,MAAC,IAAI,IAAC,OAAO,EAAC,MAAM,EAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,aAE9D,eACE,SAAS,EAAE,EAAE,CACX,oBAAoB,EACpB,YAAY,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAClE,aAGD,MAAC,UAAU,IACT,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,YAAY,IAAI,OAAO;4BACrB,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;4BACxB,oBAAoB,CACvB,aAED,yBAAO,KAAK,GAAQ,EACpB,eAAM,SAAS,EAAC,UAAU,YAAE,KAAK,GAAQ,IAC9B,EAGZ,UAAU,IAAI,CACb,cACE,SAAS,EAAE,EAAE,CACX,eAAe,EACf,YAAY,IAAI,OAAO,IAAI,qBAAqB,CACjD,YAEA,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC3B,eAEE,SAAS,EAAE,EAAE,CACX,iFAAiF,EACjF,YAAY,IAAI,OAAO,IAAI,kCAAkC,CAC9D,aAED,eAAM,SAAS,EAAC,+BAA+B,YAC5C,IAAI,CAAC,KAAK,GACN,EACP,eAAM,SAAS,EAAC,SAAS,YAAE,IAAI,CAAC,KAAK,GAAQ,KATxC,CAAC,CAUF,CACP,CAAC,GACE,CACP,EAGA,QAAQ,IAAI,CACX,KAAC,WAAW,IACV,SAAS,EAAE,EAAE,CACX,6CAA6C;wBAC7C,wDAAwD;wBACxD,CAAC,UAAU,IAAI,MAAM,CACtB,YAEA,QAAQ,GACG,CACf,IACG,EAEL,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAChC,KAAC,UAAU,IAAC,SAAS,EAAC,KAAK,YACzB,eAAK,SAAS,EAAC,qDAAqD,aACjE,WAAW,IAAI,CACd,eAAM,SAAS,EAAC,gEAAgE,YAC7E,WAAW,GACP,CACR,EACA,YAAY,IAAI,cAAK,SAAS,EAAC,YAAY,YAAE,YAAY,GAAO,IAC7D,GACK,CACd,IACI,CACR,CAAC;AACJ,CAAC;AAED,CAAC;IACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA6CsB;AACxB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
export interface SummaryItem {
|
|
3
|
+
label: string;
|
|
4
|
+
value: ReactNode;
|
|
5
|
+
price?: {
|
|
6
|
+
amount: Maybe<number>;
|
|
7
|
+
currency: Maybe<string>;
|
|
8
|
+
};
|
|
9
|
+
content?: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
type Maybe<T> = T | null | undefined;
|
|
12
|
+
declare const SummaryCard: React.FC<{
|
|
13
|
+
items: SummaryItem[];
|
|
14
|
+
summary?: Maybe<SummaryItem>;
|
|
15
|
+
layout?: "vertical" | "horizontal";
|
|
16
|
+
className?: string;
|
|
17
|
+
itemClassName?: string;
|
|
18
|
+
}>;
|
|
19
|
+
export default SummaryCard;
|
|
20
|
+
//# sourceMappingURL=summary-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary-card.d.ts","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/summary-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACzB,CAAC;IACF,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAErC,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IAC1B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAmGA,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { formatCurrency } from "@/utils/aevr/number-formatter";
|
|
3
|
+
import { cn } from "@/lib/utils";
|
|
4
|
+
const SummaryCard = ({ items, summary, layout = "vertical", className, itemClassName }) => {
|
|
5
|
+
const isHorizontal = layout === "horizontal";
|
|
6
|
+
return (_jsxs("div", { className: cn(`flex w-full ${isHorizontal ? "flex-col" : "flex-col"} bg-background gap-0 ${summary ? "bg-muted rounded-t-2xl rounded-b-2xl" : "rounded-2xl"}`, className), children: [_jsx("div", { className: `flex ${isHorizontal ? "flex-row" : "flex-col"} gap-0`, children: items.map((item, index) => (_jsxs("div", { className: cn(`bg-card border-muted flex w-full flex-wrap items-end justify-between border border-b-[0.5] px-3 py-3 ${isHorizontal
|
|
7
|
+
? // Horizontal layout classes
|
|
8
|
+
`flex-1 ${index === 0
|
|
9
|
+
? "rounded-l-xl border-r-0"
|
|
10
|
+
: index === items.length - 1
|
|
11
|
+
? "rounded-r-xl border-l-0"
|
|
12
|
+
: "border-r-0 border-l-0"} ${summary && index === items.length - 1
|
|
13
|
+
? "rounded-br-2xl"
|
|
14
|
+
: ""} ${summary && index === 0 ? "rounded-bl-2xl" : ""}`
|
|
15
|
+
: // Vertical layout classes (original)
|
|
16
|
+
`${index === 0 && "rounded-t-xl"} ${index === items.length - 1 ? "rounded-b-2xl border-b" : ""} ${summary
|
|
17
|
+
? index === items.length - 1
|
|
18
|
+
? "rounded-b-2xl border-b"
|
|
19
|
+
: ""
|
|
20
|
+
: ""}`}`, itemClassName), children: [_jsxs("div", { className: "flex flex-col gap-0", children: [_jsx("span", { className: "text-xs text-neutral-500 dark:text-neutral-400", children: item.label }), typeof item.value === "string" && item.value.length > 0 ? (_jsx("span", { className: "font-medium text-neutral-900 dark:text-neutral-100", children: item.value })) : (item.value)] }), item?.content ? (_jsx(_Fragment, { children: item?.content })) : item?.price ? (_jsx("div", { className: "flex text-lg font-bold", children: formatCurrency(item?.price?.amount || 0, {
|
|
21
|
+
currency: item?.price?.currency || "USD",
|
|
22
|
+
locale: "en-US",
|
|
23
|
+
}) })) : null] }, index))) }), summary && (_jsxs("div", { className: "bg-muted flex items-end justify-between rounded-b-2xl border-t-0 p-3", children: [_jsxs("div", { className: "flex flex-col gap-0", children: [_jsx("span", { className: "text-sm text-neutral-500 dark:text-neutral-400", children: summary.label }), _jsx("span", { className: "font-medium text-neutral-900 dark:text-neutral-100", children: summary.value || "Not provided" })] }), summary?.content ? (_jsx(_Fragment, { children: summary?.content })) : summary.price ? (_jsx("div", { className: "flex text-lg font-bold", children: formatCurrency(summary?.price?.amount || 0, {
|
|
24
|
+
currency: summary?.price?.currency || "USD",
|
|
25
|
+
locale: "en-US",
|
|
26
|
+
}) })) : null] }))] }));
|
|
27
|
+
};
|
|
28
|
+
export default SummaryCard;
|
|
29
|
+
//# sourceMappingURL=summary-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary-card.js","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/summary-card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare const tagVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "outline" | "ghost" | "blue" | "coral" | "gray" | "green" | "pink" | "purple" | "red" | "teal" | "amber" | null | undefined;
|
|
5
|
+
size?: "default" | "xs" | "sm" | "lg" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export interface TagProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof tagVariants> {
|
|
8
|
+
/** Renders a filled circle dot before the label */
|
|
9
|
+
dot?: boolean;
|
|
10
|
+
/** Shows a dismiss (×) button and fires this callback when clicked */
|
|
11
|
+
onDismiss?: () => void;
|
|
12
|
+
}
|
|
13
|
+
declare function Tag({ className, variant, size, dot, onDismiss, children, ...props }: TagProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export { Tag, tagVariants };
|
|
15
|
+
//# sourceMappingURL=tag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/tag.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKlE,QAAA,MAAM,WAAW;;;8EAsChB,CAAC;AAEF,MAAM,WAAW,QACf,SACE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EACrC,YAAY,CAAC,OAAO,WAAW,CAAC;IAClC,mDAAmD;IACnD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,iBAAS,GAAG,CAAC,EACX,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAW,EACX,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,QAAQ,2CA+BV;AAED,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cva } from "class-variance-authority";
|
|
3
|
+
import { X } from "lucide-react";
|
|
4
|
+
import { cn } from "@/lib/utils";
|
|
5
|
+
const tagVariants = cva("inline-flex items-center gap-1.5 whitespace-nowrap rounded-full text-xs font-medium transition-colors select-none", {
|
|
6
|
+
variants: {
|
|
7
|
+
variant: {
|
|
8
|
+
default: "bg-secondary text-secondary-foreground border border-border/50",
|
|
9
|
+
outline: "border border-border bg-transparent text-foreground",
|
|
10
|
+
ghost: "bg-transparent text-muted-foreground border border-transparent",
|
|
11
|
+
// Color variants — 50 fill + 600 border + 800 text (light)
|
|
12
|
+
// Dark: 800 fill + 500 border + 100 text (via dark: classes)
|
|
13
|
+
blue: "bg-[#E6F1FB] text-[#0C447C] border border-[#85B7EB] dark:bg-[#0C447C] dark:text-[#B5D4F4] dark:border-[#185FA5]",
|
|
14
|
+
green: "bg-[#EAF3DE] text-[#27500A] border border-[#97C459] dark:bg-[#27500A] dark:text-[#C0DD97] dark:border-[#3B6D11]",
|
|
15
|
+
amber: "bg-[#FAEEDA] text-[#633806] border border-[#EF9F27] dark:bg-[#633806] dark:text-[#FAC775] dark:border-[#854F0B]",
|
|
16
|
+
red: "bg-[#FCEBEB] text-[#791F1F] border border-[#F09595] dark:bg-[#791F1F] dark:text-[#F7C1C1] dark:border-[#A32D2D]",
|
|
17
|
+
purple: "bg-[#EEEDFE] text-[#3C3489] border border-[#AFA9EC] dark:bg-[#3C3489] dark:text-[#CECBF6] dark:border-[#534AB7]",
|
|
18
|
+
teal: "bg-[#E1F5EE] text-[#085041] border border-[#5DCAA5] dark:bg-[#085041] dark:text-[#9FE1CB] dark:border-[#0F6E56]",
|
|
19
|
+
coral: "bg-[#FAECE7] text-[#712B13] border border-[#F0997B] dark:bg-[#712B13] dark:text-[#F5C4B3] dark:border-[#993C1D]",
|
|
20
|
+
pink: "bg-[#FBEAF0] text-[#72243E] border border-[#ED93B1] dark:bg-[#72243E] dark:text-[#F4C0D1] dark:border-[#993556]",
|
|
21
|
+
gray: "bg-[#F1EFE8] text-[#444441] border border-[#B4B2A9] dark:bg-[#444441] dark:text-[#D3D1C7] dark:border-[#5F5E5A]",
|
|
22
|
+
},
|
|
23
|
+
size: {
|
|
24
|
+
xs: "h-[18px] px-1.5 text-[11px] gap-1",
|
|
25
|
+
sm: "h-[22px] px-2 text-xs",
|
|
26
|
+
default: "h-[26px] px-2.5 text-[13px]",
|
|
27
|
+
lg: "h-[30px] px-3 text-sm",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
defaultVariants: {
|
|
31
|
+
variant: "default",
|
|
32
|
+
size: "default",
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
function Tag({ className, variant = "default", size = "default", dot = false, onDismiss, children, ...props }) {
|
|
36
|
+
return (_jsxs("span", { "data-slot": "tag", "data-variant": variant, "data-size": size, className: cn(tagVariants({ variant, size, className })), ...props, children: [dot && (_jsx("span", { "aria-hidden": "true", className: "size-1.5 shrink-0 rounded-full bg-current opacity-60" })), children, onDismiss && (_jsx("button", { type: "button", "aria-label": "Remove", onClick: (e) => {
|
|
37
|
+
e.stopPropagation();
|
|
38
|
+
onDismiss();
|
|
39
|
+
}, className: "inline-flex size-3.5 cursor-pointer items-center justify-center rounded-full border-none bg-transparent p-0 text-current opacity-60 transition-opacity hover:opacity-100", children: _jsx(X, { className: "size-2.5" }) }))] }));
|
|
40
|
+
}
|
|
41
|
+
export { Tag, tagVariants };
|
|
42
|
+
//# sourceMappingURL=tag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag.js","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/tag.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,WAAW,GAAG,GAAG,CACrB,mHAAmH,EACnH;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EACL,gEAAgE;YAClE,OAAO,EAAE,qDAAqD;YAC9D,KAAK,EAAE,gEAAgE;YAEvE,2DAA2D;YAC3D,6DAA6D;YAC7D,IAAI,EAAE,iHAAiH;YACvH,KAAK,EACH,iHAAiH;YACnH,KAAK,EACH,iHAAiH;YACnH,GAAG,EAAE,iHAAiH;YACtH,MAAM,EACJ,iHAAiH;YACnH,IAAI,EAAE,iHAAiH;YACvH,KAAK,EACH,iHAAiH;YACnH,IAAI,EAAE,iHAAiH;YACvH,IAAI,EAAE,iHAAiH;SACxH;QACD,IAAI,EAAE;YACJ,EAAE,EAAE,mCAAmC;YACvC,EAAE,EAAE,uBAAuB;YAC3B,OAAO,EAAE,6BAA6B;YACtC,EAAE,EAAE,uBAAuB;SAC5B;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAC;AAYF,SAAS,GAAG,CAAC,EACX,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,GAAG,GAAG,KAAK,EACX,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACC;IACT,OAAO,CACL,6BACY,KAAK,kBACD,OAAO,eACV,IAAI,EACf,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KACpD,KAAK,aAER,GAAG,IAAI,CACN,8BACc,MAAM,EAClB,SAAS,EAAC,sDAAsD,GAChE,CACH,EACA,QAAQ,EACR,SAAS,IAAI,CACZ,iBACE,IAAI,EAAC,QAAQ,gBACF,QAAQ,EACnB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,CAAC,CAAC,eAAe,EAAE,CAAC;oBACpB,SAAS,EAAE,CAAC;gBACd,CAAC,EACD,SAAS,EAAC,0KAA0K,YAEpL,KAAC,CAAC,IAAC,SAAS,EAAC,UAAU,GAAG,GACnB,CACV,IACI,CACR,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-toggle.d.ts","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/theme-toggle.tsx"],"names":[],"mappings":"AAQA,wBAAgB,WAAW,4CAsD1B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { useTheme } from "next-themes";
|
|
5
|
+
import { Button } from "@/components/ui/button";
|
|
6
|
+
import { motion, AnimatePresence } from "motion/react";
|
|
7
|
+
import { MoonIcon, SunIcon } from "lucide-react";
|
|
8
|
+
export function ThemeToggle() {
|
|
9
|
+
const { resolvedTheme, setTheme } = useTheme();
|
|
10
|
+
const [mounted, setMounted] = React.useState(false);
|
|
11
|
+
React.useEffect(() => {
|
|
12
|
+
setMounted(true);
|
|
13
|
+
}, []);
|
|
14
|
+
if (!mounted) {
|
|
15
|
+
return (_jsxs(Button, { variant: "ghost", size: "icon", className: "relative rounded-full", children: [_jsx("span", { className: "h-[1.2rem] w-[1.2rem]" }), _jsx("span", { className: "sr-only", children: "Toggle theme" })] }));
|
|
16
|
+
}
|
|
17
|
+
const isDark = resolvedTheme === "dark";
|
|
18
|
+
return (_jsxs(Button, { variant: "ghost", size: "icon", onClick: () => setTheme(isDark ? "light" : "dark"), className: "relative overflow-hidden rounded-full", children: [_jsx(AnimatePresence, { mode: "popLayout", initial: false, children: isDark ? (_jsx(motion.div, { initial: { opacity: 0, scale: 0.5, rotate: -90 }, animate: { opacity: 1, scale: 1, rotate: 0 }, exit: { opacity: 0, scale: 0.5, rotate: 90 }, transition: { type: "spring", stiffness: 300, damping: 20 }, className: "absolute inset-0 flex items-center justify-center", children: _jsx(MoonIcon, { className: "h-[1.2rem] w-[1.2rem]" }) }, "dark")) : (_jsx(motion.div, { initial: { opacity: 0, scale: 0.5, rotate: 90 }, animate: { opacity: 1, scale: 1, rotate: 0 }, exit: { opacity: 0, scale: 0.5, rotate: -90 }, transition: { type: "spring", stiffness: 300, damping: 20 }, className: "absolute inset-0 flex items-center justify-center", children: _jsx(SunIcon, { className: "h-[1.2rem] w-[1.2rem]" }) }, "light")) }), _jsx("span", { className: "sr-only", children: "Toggle theme" })] }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=theme-toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-toggle.js","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/theme-toggle.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC/C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,MAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,uBAAuB,aACnE,eAAM,SAAS,EAAC,uBAAuB,GAAG,EAC1C,eAAM,SAAS,EAAC,SAAS,6BAAoB,IACtC,CACV,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,KAAK,MAAM,CAAC;IAExC,OAAO,CACL,MAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAClD,SAAS,EAAC,uCAAuC,aAEjD,KAAC,eAAe,IAAC,IAAI,EAAC,WAAW,EAAC,OAAO,EAAE,KAAK,YAC7C,MAAM,CAAC,CAAC,CAAC,CACR,KAAC,MAAM,CAAC,GAAG,IAET,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAChD,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAC5C,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAC5C,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,EAC3D,SAAS,EAAC,mDAAmD,YAE7D,KAAC,QAAQ,IAAC,SAAS,EAAC,uBAAuB,GAAG,IAP1C,MAAM,CAQC,CACd,CAAC,CAAC,CAAC,CACF,KAAC,MAAM,CAAC,GAAG,IAET,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAC/C,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAC5C,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAC7C,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,EAC3D,SAAS,EAAC,mDAAmD,YAE7D,KAAC,OAAO,IAAC,SAAS,EAAC,uBAAuB,GAAG,IAPzC,OAAO,CAQA,CACd,GACe,EAClB,eAAM,SAAS,EAAC,SAAS,6BAAoB,IACtC,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface TransactionPreviewField {
|
|
3
|
+
label: string;
|
|
4
|
+
value: React.ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export interface TransactionPinConfirmProps {
|
|
7
|
+
open: boolean;
|
|
8
|
+
onOpenChange: (open: boolean) => void;
|
|
9
|
+
title?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
/** Fields shown on the preview step */
|
|
12
|
+
previewFields: TransactionPreviewField[];
|
|
13
|
+
/** Called with the entered PIN once all digits are filled */
|
|
14
|
+
onConfirm: (pin: string) => Promise<void> | void;
|
|
15
|
+
/** Whether the confirm action is currently processing */
|
|
16
|
+
isProcessing?: boolean;
|
|
17
|
+
/** When true, the PIN entry step is skipped and onConfirm is called immediately from the preview step */
|
|
18
|
+
skipPin?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function TransactionPinConfirm({ open, onOpenChange, title, description, previewFields, onConfirm, isProcessing, skipPin, }: TransactionPinConfirmProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=transaction-pin-confirm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-pin-confirm.d.ts","sourceRoot":"","sources":["../../../../src/ui/aevr/aevr/transaction-pin-confirm.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgB/B,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,aAAa,EAAE,uBAAuB,EAAE,CAAC;IACzC,6DAA6D;IAC7D,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjD,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yGAAyG;IACzG,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA+ID,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,YAAY,EACZ,KAA6B,EAC7B,WAAiE,EACjE,aAAa,EACb,SAAS,EACT,YAAoB,EACpB,OAAe,GAChB,EAAE,0BAA0B,2CA4D5B"}
|