@pyric/ui 0.1.0-alpha.7
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/README.md +79 -0
- package/dist/agents/ContextWindowUsage.d.ts +67 -0
- package/dist/agents/ContextWindowUsage.d.ts.map +1 -0
- package/dist/agents/ContextWindowUsage.js +115 -0
- package/dist/agents/ContextWindowUsage.js.map +1 -0
- package/dist/agents/EmptyState.d.ts +18 -0
- package/dist/agents/EmptyState.d.ts.map +1 -0
- package/dist/agents/EmptyState.js +11 -0
- package/dist/agents/EmptyState.js.map +1 -0
- package/dist/agents/Fold.d.ts +37 -0
- package/dist/agents/Fold.d.ts.map +1 -0
- package/dist/agents/Fold.js +18 -0
- package/dist/agents/Fold.js.map +1 -0
- package/dist/agents/Modal.d.ts +25 -0
- package/dist/agents/Modal.d.ts.map +1 -0
- package/dist/agents/Modal.js +28 -0
- package/dist/agents/Modal.js.map +1 -0
- package/dist/agents/PulsingDot.d.ts +21 -0
- package/dist/agents/PulsingDot.d.ts.map +1 -0
- package/dist/agents/PulsingDot.js +18 -0
- package/dist/agents/PulsingDot.js.map +1 -0
- package/dist/agents/index.d.ts +15 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +15 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/auth/authApi.d.ts +32 -0
- package/dist/auth/authApi.d.ts.map +1 -0
- package/dist/auth/authApi.js +27 -0
- package/dist/auth/authApi.js.map +1 -0
- package/dist/auth/claims.d.ts +27 -0
- package/dist/auth/claims.d.ts.map +1 -0
- package/dist/auth/claims.js +58 -0
- package/dist/auth/claims.js.map +1 -0
- package/dist/auth/components/AuthProviderToggles.d.ts +31 -0
- package/dist/auth/components/AuthProviderToggles.d.ts.map +1 -0
- package/dist/auth/components/AuthProviderToggles.js +48 -0
- package/dist/auth/components/AuthProviderToggles.js.map +1 -0
- package/dist/auth/components/AuthSignInHelper.d.ts +57 -0
- package/dist/auth/components/AuthSignInHelper.d.ts.map +1 -0
- package/dist/auth/components/AuthSignInHelper.js +69 -0
- package/dist/auth/components/AuthSignInHelper.js.map +1 -0
- package/dist/auth/components/AuthUserForm.d.ts +84 -0
- package/dist/auth/components/AuthUserForm.d.ts.map +1 -0
- package/dist/auth/components/AuthUserForm.js +89 -0
- package/dist/auth/components/AuthUserForm.js.map +1 -0
- package/dist/auth/components/AuthUserList.d.ts +51 -0
- package/dist/auth/components/AuthUserList.d.ts.map +1 -0
- package/dist/auth/components/AuthUserList.js +46 -0
- package/dist/auth/components/AuthUserList.js.map +1 -0
- package/dist/auth/components/ClaimsField.d.ts +22 -0
- package/dist/auth/components/ClaimsField.d.ts.map +1 -0
- package/dist/auth/components/ClaimsField.js +11 -0
- package/dist/auth/components/ClaimsField.js.map +1 -0
- package/dist/auth/components/confirmActions.d.ts +40 -0
- package/dist/auth/components/confirmActions.d.ts.map +1 -0
- package/dist/auth/components/confirmActions.js +49 -0
- package/dist/auth/components/confirmActions.js.map +1 -0
- package/dist/auth/controller.d.ts +73 -0
- package/dist/auth/controller.d.ts.map +1 -0
- package/dist/auth/controller.js +139 -0
- package/dist/auth/controller.js.map +1 -0
- package/dist/auth/hooks/index.d.ts +7 -0
- package/dist/auth/hooks/index.d.ts.map +1 -0
- package/dist/auth/hooks/index.js +7 -0
- package/dist/auth/hooks/index.js.map +1 -0
- package/dist/auth/hooks/useAuthFlowHelper.d.ts +30 -0
- package/dist/auth/hooks/useAuthFlowHelper.d.ts.map +1 -0
- package/dist/auth/hooks/useAuthFlowHelper.js +30 -0
- package/dist/auth/hooks/useAuthFlowHelper.js.map +1 -0
- package/dist/auth/hooks/useAuthProviderConfig.d.ts +37 -0
- package/dist/auth/hooks/useAuthProviderConfig.d.ts.map +1 -0
- package/dist/auth/hooks/useAuthProviderConfig.js +98 -0
- package/dist/auth/hooks/useAuthProviderConfig.js.map +1 -0
- package/dist/auth/hooks/useAuthUserEditor.d.ts +30 -0
- package/dist/auth/hooks/useAuthUserEditor.d.ts.map +1 -0
- package/dist/auth/hooks/useAuthUserEditor.js +27 -0
- package/dist/auth/hooks/useAuthUserEditor.js.map +1 -0
- package/dist/auth/hooks/useAuthUsers.d.ts +38 -0
- package/dist/auth/hooks/useAuthUsers.d.ts.map +1 -0
- package/dist/auth/hooks/useAuthUsers.js +111 -0
- package/dist/auth/hooks/useAuthUsers.js.map +1 -0
- package/dist/auth/index.d.ts +11 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +13 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/providers.d.ts +11 -0
- package/dist/auth/providers.d.ts.map +1 -0
- package/dist/auth/providers.js +28 -0
- package/dist/auth/providers.js.map +1 -0
- package/dist/auth/reducers/userEditor.d.ts +55 -0
- package/dist/auth/reducers/userEditor.d.ts.map +1 -0
- package/dist/auth/reducers/userEditor.js +136 -0
- package/dist/auth/reducers/userEditor.js.map +1 -0
- package/dist/events/components/ActivityActionItems.d.ts +45 -0
- package/dist/events/components/ActivityActionItems.d.ts.map +1 -0
- package/dist/events/components/ActivityActionItems.js +68 -0
- package/dist/events/components/ActivityActionItems.js.map +1 -0
- package/dist/events/components/ActivityGrid.d.ts +65 -0
- package/dist/events/components/ActivityGrid.d.ts.map +1 -0
- package/dist/events/components/ActivityGrid.js +61 -0
- package/dist/events/components/ActivityGrid.js.map +1 -0
- package/dist/events/components/ActivityGridRow.d.ts +31 -0
- package/dist/events/components/ActivityGridRow.d.ts.map +1 -0
- package/dist/events/components/ActivityGridRow.js +23 -0
- package/dist/events/components/ActivityGridRow.js.map +1 -0
- package/dist/events/components/ProposedChangeDiff.d.ts +46 -0
- package/dist/events/components/ProposedChangeDiff.d.ts.map +1 -0
- package/dist/events/components/ProposedChangeDiff.js +60 -0
- package/dist/events/components/ProposedChangeDiff.js.map +1 -0
- package/dist/events/components/format.d.ts +11 -0
- package/dist/events/components/format.d.ts.map +1 -0
- package/dist/events/components/format.js +26 -0
- package/dist/events/components/format.js.map +1 -0
- package/dist/events/components/index.d.ts +6 -0
- package/dist/events/components/index.d.ts.map +1 -0
- package/dist/events/components/index.js +6 -0
- package/dist/events/components/index.js.map +1 -0
- package/dist/events/digest.d.ts +167 -0
- package/dist/events/digest.d.ts.map +1 -0
- package/dist/events/digest.js +426 -0
- package/dist/events/digest.js.map +1 -0
- package/dist/events/hooks/index.d.ts +3 -0
- package/dist/events/hooks/index.d.ts.map +1 -0
- package/dist/events/hooks/index.js +3 -0
- package/dist/events/hooks/index.js.map +1 -0
- package/dist/events/hooks/useActivityDigest.d.ts +27 -0
- package/dist/events/hooks/useActivityDigest.d.ts.map +1 -0
- package/dist/events/hooks/useActivityDigest.js +18 -0
- package/dist/events/hooks/useActivityDigest.js.map +1 -0
- package/dist/events/hooks/useActivityStream.d.ts +44 -0
- package/dist/events/hooks/useActivityStream.d.ts.map +1 -0
- package/dist/events/hooks/useActivityStream.js +38 -0
- package/dist/events/hooks/useActivityStream.js.map +1 -0
- package/dist/events/index.d.ts +15 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +14 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/types.d.ts +160 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +21 -0
- package/dist/events/types.js.map +1 -0
- package/dist/firestore/components/CollectionList.d.ts +22 -0
- package/dist/firestore/components/CollectionList.d.ts.map +1 -0
- package/dist/firestore/components/CollectionList.js +21 -0
- package/dist/firestore/components/CollectionList.js.map +1 -0
- package/dist/firestore/components/DeleteWithConfirm.d.ts +38 -0
- package/dist/firestore/components/DeleteWithConfirm.d.ts.map +1 -0
- package/dist/firestore/components/DeleteWithConfirm.js +33 -0
- package/dist/firestore/components/DeleteWithConfirm.js.map +1 -0
- package/dist/firestore/components/DocumentEditor.d.ts +47 -0
- package/dist/firestore/components/DocumentEditor.d.ts.map +1 -0
- package/dist/firestore/components/DocumentEditor.js +176 -0
- package/dist/firestore/components/DocumentEditor.js.map +1 -0
- package/dist/firestore/components/DocumentList.d.ts +60 -0
- package/dist/firestore/components/DocumentList.d.ts.map +1 -0
- package/dist/firestore/components/DocumentList.js +39 -0
- package/dist/firestore/components/DocumentList.js.map +1 -0
- package/dist/firestore/components/DocumentPreview.d.ts +68 -0
- package/dist/firestore/components/DocumentPreview.d.ts.map +1 -0
- package/dist/firestore/components/DocumentPreview.js +76 -0
- package/dist/firestore/components/DocumentPreview.js.map +1 -0
- package/dist/firestore/components/FieldRenderer.d.ts +17 -0
- package/dist/firestore/components/FieldRenderer.d.ts.map +1 -0
- package/dist/firestore/components/FieldRenderer.js +16 -0
- package/dist/firestore/components/FieldRenderer.js.map +1 -0
- package/dist/firestore/components/QueryBuilder.d.ts +25 -0
- package/dist/firestore/components/QueryBuilder.d.ts.map +1 -0
- package/dist/firestore/components/QueryBuilder.js +78 -0
- package/dist/firestore/components/QueryBuilder.js.map +1 -0
- package/dist/firestore/components/ReferencePicker.d.ts +33 -0
- package/dist/firestore/components/ReferencePicker.d.ts.map +1 -0
- package/dist/firestore/components/ReferencePicker.js +42 -0
- package/dist/firestore/components/ReferencePicker.js.map +1 -0
- package/dist/firestore/components/TreeEntry.d.ts +15 -0
- package/dist/firestore/components/TreeEntry.d.ts.map +1 -0
- package/dist/firestore/components/TreeEntry.js +23 -0
- package/dist/firestore/components/TreeEntry.js.map +1 -0
- package/dist/firestore/components/context.d.ts +18 -0
- package/dist/firestore/components/context.d.ts.map +1 -0
- package/dist/firestore/components/context.js +7 -0
- package/dist/firestore/components/context.js.map +1 -0
- package/dist/firestore/fieldEditors/array.d.ts +3 -0
- package/dist/firestore/fieldEditors/array.d.ts.map +1 -0
- package/dist/firestore/fieldEditors/array.js +16 -0
- package/dist/firestore/fieldEditors/array.js.map +1 -0
- package/dist/firestore/fieldEditors/boolean.d.ts +3 -0
- package/dist/firestore/fieldEditors/boolean.d.ts.map +1 -0
- package/dist/firestore/fieldEditors/boolean.js +13 -0
- package/dist/firestore/fieldEditors/boolean.js.map +1 -0
- package/dist/firestore/fieldEditors/bytes.d.ts +4 -0
- package/dist/firestore/fieldEditors/bytes.d.ts.map +1 -0
- package/dist/firestore/fieldEditors/bytes.js +31 -0
- package/dist/firestore/fieldEditors/bytes.js.map +1 -0
- package/dist/firestore/fieldEditors/geopoint.d.ts +4 -0
- package/dist/firestore/fieldEditors/geopoint.d.ts.map +1 -0
- package/dist/firestore/fieldEditors/geopoint.js +32 -0
- package/dist/firestore/fieldEditors/geopoint.js.map +1 -0
- package/dist/firestore/fieldEditors/map.d.ts +3 -0
- package/dist/firestore/fieldEditors/map.d.ts.map +1 -0
- package/dist/firestore/fieldEditors/map.js +19 -0
- package/dist/firestore/fieldEditors/map.js.map +1 -0
- package/dist/firestore/fieldEditors/null.d.ts +3 -0
- package/dist/firestore/fieldEditors/null.d.ts.map +1 -0
- package/dist/firestore/fieldEditors/null.js +17 -0
- package/dist/firestore/fieldEditors/null.js.map +1 -0
- package/dist/firestore/fieldEditors/number.d.ts +3 -0
- package/dist/firestore/fieldEditors/number.d.ts.map +1 -0
- package/dist/firestore/fieldEditors/number.js +24 -0
- package/dist/firestore/fieldEditors/number.js.map +1 -0
- package/dist/firestore/fieldEditors/reference.d.ts +4 -0
- package/dist/firestore/fieldEditors/reference.d.ts.map +1 -0
- package/dist/firestore/fieldEditors/reference.js +49 -0
- package/dist/firestore/fieldEditors/reference.js.map +1 -0
- package/dist/firestore/fieldEditors/registry.d.ts +16 -0
- package/dist/firestore/fieldEditors/registry.d.ts.map +1 -0
- package/dist/firestore/fieldEditors/registry.js +42 -0
- package/dist/firestore/fieldEditors/registry.js.map +1 -0
- package/dist/firestore/fieldEditors/string.d.ts +3 -0
- package/dist/firestore/fieldEditors/string.d.ts.map +1 -0
- package/dist/firestore/fieldEditors/string.js +13 -0
- package/dist/firestore/fieldEditors/string.js.map +1 -0
- package/dist/firestore/fieldEditors/timestamp.d.ts +4 -0
- package/dist/firestore/fieldEditors/timestamp.d.ts.map +1 -0
- package/dist/firestore/fieldEditors/timestamp.js +52 -0
- package/dist/firestore/fieldEditors/timestamp.js.map +1 -0
- package/dist/firestore/fieldEditors/types.d.ts +64 -0
- package/dist/firestore/fieldEditors/types.d.ts.map +1 -0
- package/dist/firestore/fieldEditors/types.js +2 -0
- package/dist/firestore/fieldEditors/types.js.map +1 -0
- package/dist/firestore/fieldEditors/vector.d.ts +29 -0
- package/dist/firestore/fieldEditors/vector.d.ts.map +1 -0
- package/dist/firestore/fieldEditors/vector.js +93 -0
- package/dist/firestore/fieldEditors/vector.js.map +1 -0
- package/dist/firestore/firestoreApi.d.ts +35 -0
- package/dist/firestore/firestoreApi.d.ts.map +1 -0
- package/dist/firestore/firestoreApi.js +28 -0
- package/dist/firestore/firestoreApi.js.map +1 -0
- package/dist/firestore/hooks/coerceError.d.ts +17 -0
- package/dist/firestore/hooks/coerceError.d.ts.map +1 -0
- package/dist/firestore/hooks/coerceError.js +41 -0
- package/dist/firestore/hooks/coerceError.js.map +1 -0
- package/dist/firestore/hooks/index.d.ts +10 -0
- package/dist/firestore/hooks/index.d.ts.map +1 -0
- package/dist/firestore/hooks/index.js +10 -0
- package/dist/firestore/hooks/index.js.map +1 -0
- package/dist/firestore/hooks/useCollectionList.d.ts +37 -0
- package/dist/firestore/hooks/useCollectionList.d.ts.map +1 -0
- package/dist/firestore/hooks/useCollectionList.js +51 -0
- package/dist/firestore/hooks/useCollectionList.js.map +1 -0
- package/dist/firestore/hooks/useDocumentEditor.d.ts +58 -0
- package/dist/firestore/hooks/useDocumentEditor.d.ts.map +1 -0
- package/dist/firestore/hooks/useDocumentEditor.js +68 -0
- package/dist/firestore/hooks/useDocumentEditor.js.map +1 -0
- package/dist/firestore/hooks/useDocumentList.d.ts +45 -0
- package/dist/firestore/hooks/useDocumentList.d.ts.map +1 -0
- package/dist/firestore/hooks/useDocumentList.js +112 -0
- package/dist/firestore/hooks/useDocumentList.js.map +1 -0
- package/dist/firestore/hooks/useDocumentSubcollections.d.ts +29 -0
- package/dist/firestore/hooks/useDocumentSubcollections.d.ts.map +1 -0
- package/dist/firestore/hooks/useDocumentSubcollections.js +48 -0
- package/dist/firestore/hooks/useDocumentSubcollections.js.map +1 -0
- package/dist/firestore/hooks/useFirestoreCollection.d.ts +14 -0
- package/dist/firestore/hooks/useFirestoreCollection.d.ts.map +1 -0
- package/dist/firestore/hooks/useFirestoreCollection.js +35 -0
- package/dist/firestore/hooks/useFirestoreCollection.js.map +1 -0
- package/dist/firestore/hooks/useFirestoreDoc.d.ts +17 -0
- package/dist/firestore/hooks/useFirestoreDoc.d.ts.map +1 -0
- package/dist/firestore/hooks/useFirestoreDoc.js +34 -0
- package/dist/firestore/hooks/useFirestoreDoc.js.map +1 -0
- package/dist/firestore/hooks/useQueryBuilder.d.ts +51 -0
- package/dist/firestore/hooks/useQueryBuilder.d.ts.map +1 -0
- package/dist/firestore/hooks/useQueryBuilder.js +110 -0
- package/dist/firestore/hooks/useQueryBuilder.js.map +1 -0
- package/dist/firestore/hooks/useRecursiveDelete.d.ts +40 -0
- package/dist/firestore/hooks/useRecursiveDelete.d.ts.map +1 -0
- package/dist/firestore/hooks/useRecursiveDelete.js +44 -0
- package/dist/firestore/hooks/useRecursiveDelete.js.map +1 -0
- package/dist/firestore/hooks/useReferencePicker.d.ts +70 -0
- package/dist/firestore/hooks/useReferencePicker.d.ts.map +1 -0
- package/dist/firestore/hooks/useReferencePicker.js +140 -0
- package/dist/firestore/hooks/useReferencePicker.js.map +1 -0
- package/dist/firestore/import/parseImport.d.ts +55 -0
- package/dist/firestore/import/parseImport.d.ts.map +1 -0
- package/dist/firestore/import/parseImport.js +101 -0
- package/dist/firestore/import/parseImport.js.map +1 -0
- package/dist/firestore/index.d.ts +20 -0
- package/dist/firestore/index.d.ts.map +1 -0
- package/dist/firestore/index.js +28 -0
- package/dist/firestore/index.js.map +1 -0
- package/dist/firestore/reducers/defaults.d.ts +10 -0
- package/dist/firestore/reducers/defaults.d.ts.map +1 -0
- package/dist/firestore/reducers/defaults.js +37 -0
- package/dist/firestore/reducers/defaults.js.map +1 -0
- package/dist/firestore/reducers/documentEditor.d.ts +23 -0
- package/dist/firestore/reducers/documentEditor.d.ts.map +1 -0
- package/dist/firestore/reducers/documentEditor.js +199 -0
- package/dist/firestore/reducers/documentEditor.js.map +1 -0
- package/dist/firestore/reducers/tree.d.ts +28 -0
- package/dist/firestore/reducers/tree.d.ts.map +1 -0
- package/dist/firestore/reducers/tree.js +129 -0
- package/dist/firestore/reducers/tree.js.map +1 -0
- package/dist/firestore/reducers/types.d.ts +112 -0
- package/dist/firestore/reducers/types.d.ts.map +1 -0
- package/dist/firestore/reducers/types.js +2 -0
- package/dist/firestore/reducers/types.js.map +1 -0
- package/dist/firestore/reducers/validation.d.ts +25 -0
- package/dist/firestore/reducers/validation.d.ts.map +1 -0
- package/dist/firestore/reducers/validation.js +121 -0
- package/dist/firestore/reducers/validation.js.map +1 -0
- package/dist/firestore/types.d.ts +77 -0
- package/dist/firestore/types.d.ts.map +1 -0
- package/dist/firestore/types.js +196 -0
- package/dist/firestore/types.js.map +1 -0
- package/dist/firestore/validation/ids.d.ts +23 -0
- package/dist/firestore/validation/ids.d.ts.map +1 -0
- package/dist/firestore/validation/ids.js +46 -0
- package/dist/firestore/validation/ids.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/primitives/Badge.d.ts +28 -0
- package/dist/primitives/Badge.d.ts.map +1 -0
- package/dist/primitives/Badge.js +11 -0
- package/dist/primitives/Badge.js.map +1 -0
- package/dist/primitives/ConfirmDialog.d.ts +42 -0
- package/dist/primitives/ConfirmDialog.d.ts.map +1 -0
- package/dist/primitives/ConfirmDialog.js +61 -0
- package/dist/primitives/ConfirmDialog.js.map +1 -0
- package/dist/primitives/CopyButton.d.ts +28 -0
- package/dist/primitives/CopyButton.d.ts.map +1 -0
- package/dist/primitives/CopyButton.js +27 -0
- package/dist/primitives/CopyButton.js.map +1 -0
- package/dist/primitives/JsonView.d.ts +29 -0
- package/dist/primitives/JsonView.d.ts.map +1 -0
- package/dist/primitives/JsonView.js +56 -0
- package/dist/primitives/JsonView.js.map +1 -0
- package/dist/primitives/SegmentedControl.d.ts +37 -0
- package/dist/primitives/SegmentedControl.d.ts.map +1 -0
- package/dist/primitives/SegmentedControl.js +18 -0
- package/dist/primitives/SegmentedControl.js.map +1 -0
- package/dist/primitives/Toast.d.ts +48 -0
- package/dist/primitives/Toast.d.ts.map +1 -0
- package/dist/primitives/Toast.js +60 -0
- package/dist/primitives/Toast.js.map +1 -0
- package/dist/primitives/VirtualList.d.ts +37 -0
- package/dist/primitives/VirtualList.d.ts.map +1 -0
- package/dist/primitives/VirtualList.js +47 -0
- package/dist/primitives/VirtualList.js.map +1 -0
- package/dist/primitives/hooks/useContainerSize.d.ts +29 -0
- package/dist/primitives/hooks/useContainerSize.d.ts.map +1 -0
- package/dist/primitives/hooks/useContainerSize.js +45 -0
- package/dist/primitives/hooks/useContainerSize.js.map +1 -0
- package/dist/primitives/index.d.ts +10 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +10 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/useConfirm.d.ts +34 -0
- package/dist/primitives/useConfirm.d.ts.map +1 -0
- package/dist/primitives/useConfirm.js +63 -0
- package/dist/primitives/useConfirm.js.map +1 -0
- package/dist/rtdb/components/RtdbPathBar.d.ts +31 -0
- package/dist/rtdb/components/RtdbPathBar.d.ts.map +1 -0
- package/dist/rtdb/components/RtdbPathBar.js +47 -0
- package/dist/rtdb/components/RtdbPathBar.js.map +1 -0
- package/dist/rtdb/components/RtdbTree.d.ts +38 -0
- package/dist/rtdb/components/RtdbTree.d.ts.map +1 -0
- package/dist/rtdb/components/RtdbTree.js +103 -0
- package/dist/rtdb/components/RtdbTree.js.map +1 -0
- package/dist/rtdb/editor.d.ts +25 -0
- package/dist/rtdb/editor.d.ts.map +1 -0
- package/dist/rtdb/editor.js +79 -0
- package/dist/rtdb/editor.js.map +1 -0
- package/dist/rtdb/hooks/useRtdbTree.d.ts +31 -0
- package/dist/rtdb/hooks/useRtdbTree.d.ts.map +1 -0
- package/dist/rtdb/hooks/useRtdbTree.js +49 -0
- package/dist/rtdb/hooks/useRtdbTree.js.map +1 -0
- package/dist/rtdb/index.d.ts +17 -0
- package/dist/rtdb/index.d.ts.map +1 -0
- package/dist/rtdb/index.js +21 -0
- package/dist/rtdb/index.js.map +1 -0
- package/dist/rtdb/pathInput.d.ts +28 -0
- package/dist/rtdb/pathInput.d.ts.map +1 -0
- package/dist/rtdb/pathInput.js +40 -0
- package/dist/rtdb/pathInput.js.map +1 -0
- package/dist/rtdb/reducers/tree.d.ts +86 -0
- package/dist/rtdb/reducers/tree.d.ts.map +1 -0
- package/dist/rtdb/reducers/tree.js +131 -0
- package/dist/rtdb/reducers/tree.js.map +1 -0
- package/dist/rtdb/rtdbApi.d.ts +20 -0
- package/dist/rtdb/rtdbApi.d.ts.map +1 -0
- package/dist/rtdb/rtdbApi.js +2 -0
- package/dist/rtdb/rtdbApi.js.map +1 -0
- package/dist/rtdb/values.d.ts +44 -0
- package/dist/rtdb/values.d.ts.map +1 -0
- package/dist/rtdb/values.js +143 -0
- package/dist/rtdb/values.js.map +1 -0
- package/dist/rules/components/DenialInspector.d.ts +18 -0
- package/dist/rules/components/DenialInspector.d.ts.map +1 -0
- package/dist/rules/components/DenialInspector.js +58 -0
- package/dist/rules/components/DenialInspector.js.map +1 -0
- package/dist/rules/components/format.d.ts +56 -0
- package/dist/rules/components/format.d.ts.map +1 -0
- package/dist/rules/components/format.js +137 -0
- package/dist/rules/components/format.js.map +1 -0
- package/dist/rules/components/index.d.ts +4 -0
- package/dist/rules/components/index.d.ts.map +1 -0
- package/dist/rules/components/index.js +4 -0
- package/dist/rules/components/index.js.map +1 -0
- package/dist/rules/components/scope.d.ts +10 -0
- package/dist/rules/components/scope.d.ts.map +1 -0
- package/dist/rules/components/scope.js +72 -0
- package/dist/rules/components/scope.js.map +1 -0
- package/dist/rules/hooks/index.d.ts +2 -0
- package/dist/rules/hooks/index.d.ts.map +1 -0
- package/dist/rules/hooks/index.js +2 -0
- package/dist/rules/hooks/index.js.map +1 -0
- package/dist/rules/hooks/useDenialTrace.d.ts +51 -0
- package/dist/rules/hooks/useDenialTrace.d.ts.map +1 -0
- package/dist/rules/hooks/useDenialTrace.js +58 -0
- package/dist/rules/hooks/useDenialTrace.js.map +1 -0
- package/dist/rules/index.d.ts +14 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +13 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/types.d.ts +75 -0
- package/dist/rules/types.d.ts.map +1 -0
- package/dist/rules/types.js +2 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/storage/collisionRename.d.ts +73 -0
- package/dist/storage/collisionRename.d.ts.map +1 -0
- package/dist/storage/collisionRename.js +113 -0
- package/dist/storage/collisionRename.js.map +1 -0
- package/dist/storage/components/DeleteSelectionWithConfirm.d.ts +68 -0
- package/dist/storage/components/DeleteSelectionWithConfirm.d.ts.map +1 -0
- package/dist/storage/components/DeleteSelectionWithConfirm.js +82 -0
- package/dist/storage/components/DeleteSelectionWithConfirm.js.map +1 -0
- package/dist/storage/components/ObjectBrowser.d.ts +75 -0
- package/dist/storage/components/ObjectBrowser.d.ts.map +1 -0
- package/dist/storage/components/ObjectBrowser.js +59 -0
- package/dist/storage/components/ObjectBrowser.js.map +1 -0
- package/dist/storage/components/ObjectInspector.d.ts +43 -0
- package/dist/storage/components/ObjectInspector.d.ts.map +1 -0
- package/dist/storage/components/ObjectInspector.js +92 -0
- package/dist/storage/components/ObjectInspector.js.map +1 -0
- package/dist/storage/components/PathBreadcrumb.d.ts +30 -0
- package/dist/storage/components/PathBreadcrumb.d.ts.map +1 -0
- package/dist/storage/components/PathBreadcrumb.js +26 -0
- package/dist/storage/components/PathBreadcrumb.js.map +1 -0
- package/dist/storage/components/UploadDropzone.d.ts +50 -0
- package/dist/storage/components/UploadDropzone.d.ts.map +1 -0
- package/dist/storage/components/UploadDropzone.js +109 -0
- package/dist/storage/components/UploadDropzone.js.map +1 -0
- package/dist/storage/folderPlaceholder.d.ts +14 -0
- package/dist/storage/folderPlaceholder.d.ts.map +1 -0
- package/dist/storage/folderPlaceholder.js +27 -0
- package/dist/storage/folderPlaceholder.js.map +1 -0
- package/dist/storage/hooks/index.d.ts +9 -0
- package/dist/storage/hooks/index.d.ts.map +1 -0
- package/dist/storage/hooks/index.js +9 -0
- package/dist/storage/hooks/index.js.map +1 -0
- package/dist/storage/hooks/useMetadataEditor.d.ts +114 -0
- package/dist/storage/hooks/useMetadataEditor.d.ts.map +1 -0
- package/dist/storage/hooks/useMetadataEditor.js +193 -0
- package/dist/storage/hooks/useMetadataEditor.js.map +1 -0
- package/dist/storage/hooks/useObjectUpload.d.ts +109 -0
- package/dist/storage/hooks/useObjectUpload.d.ts.map +1 -0
- package/dist/storage/hooks/useObjectUpload.js +134 -0
- package/dist/storage/hooks/useObjectUpload.js.map +1 -0
- package/dist/storage/hooks/usePathState.d.ts +43 -0
- package/dist/storage/hooks/usePathState.d.ts.map +1 -0
- package/dist/storage/hooks/usePathState.js +42 -0
- package/dist/storage/hooks/usePathState.js.map +1 -0
- package/dist/storage/hooks/useStorageDelete.d.ts +73 -0
- package/dist/storage/hooks/useStorageDelete.d.ts.map +1 -0
- package/dist/storage/hooks/useStorageDelete.js +114 -0
- package/dist/storage/hooks/useStorageDelete.js.map +1 -0
- package/dist/storage/hooks/useStorageList.d.ts +74 -0
- package/dist/storage/hooks/useStorageList.d.ts.map +1 -0
- package/dist/storage/hooks/useStorageList.js +167 -0
- package/dist/storage/hooks/useStorageList.js.map +1 -0
- package/dist/storage/hooks/useStorageObject.d.ts +34 -0
- package/dist/storage/hooks/useStorageObject.d.ts.map +1 -0
- package/dist/storage/hooks/useStorageObject.js +114 -0
- package/dist/storage/hooks/useStorageObject.js.map +1 -0
- package/dist/storage/hooks/useStorageRulesGate.d.ts +128 -0
- package/dist/storage/hooks/useStorageRulesGate.d.ts.map +1 -0
- package/dist/storage/hooks/useStorageRulesGate.js +158 -0
- package/dist/storage/hooks/useStorageRulesGate.js.map +1 -0
- package/dist/storage/hooks/useStorageSelection.d.ts +32 -0
- package/dist/storage/hooks/useStorageSelection.d.ts.map +1 -0
- package/dist/storage/hooks/useStorageSelection.js +55 -0
- package/dist/storage/hooks/useStorageSelection.js.map +1 -0
- package/dist/storage/index.d.ts +11 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +17 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/pendingPrefixes.d.ts +73 -0
- package/dist/storage/pendingPrefixes.d.ts.map +1 -0
- package/dist/storage/pendingPrefixes.js +98 -0
- package/dist/storage/pendingPrefixes.js.map +1 -0
- package/dist/storage/previews.d.ts +51 -0
- package/dist/storage/previews.d.ts.map +1 -0
- package/dist/storage/previews.js +73 -0
- package/dist/storage/previews.js.map +1 -0
- package/dist/storage/storageApi.d.ts +30 -0
- package/dist/storage/storageApi.d.ts.map +1 -0
- package/dist/storage/storageApi.js +13 -0
- package/dist/storage/storageApi.js.map +1 -0
- package/dist/traffic/components/RuleHeatmap.d.ts +34 -0
- package/dist/traffic/components/RuleHeatmap.d.ts.map +1 -0
- package/dist/traffic/components/RuleHeatmap.js +40 -0
- package/dist/traffic/components/RuleHeatmap.js.map +1 -0
- package/dist/traffic/components/TrafficDetail.d.ts +33 -0
- package/dist/traffic/components/TrafficDetail.d.ts.map +1 -0
- package/dist/traffic/components/TrafficDetail.js +28 -0
- package/dist/traffic/components/TrafficDetail.js.map +1 -0
- package/dist/traffic/components/TrafficGroupRow.d.ts +28 -0
- package/dist/traffic/components/TrafficGroupRow.d.ts.map +1 -0
- package/dist/traffic/components/TrafficGroupRow.js +18 -0
- package/dist/traffic/components/TrafficGroupRow.js.map +1 -0
- package/dist/traffic/components/TrafficLineChart.d.ts +34 -0
- package/dist/traffic/components/TrafficLineChart.d.ts.map +1 -0
- package/dist/traffic/components/TrafficLineChart.js +49 -0
- package/dist/traffic/components/TrafficLineChart.js.map +1 -0
- package/dist/traffic/components/TrafficLog.d.ts +52 -0
- package/dist/traffic/components/TrafficLog.d.ts.map +1 -0
- package/dist/traffic/components/TrafficLog.js +34 -0
- package/dist/traffic/components/TrafficLog.js.map +1 -0
- package/dist/traffic/components/TrafficMetricCards.d.ts +26 -0
- package/dist/traffic/components/TrafficMetricCards.d.ts.map +1 -0
- package/dist/traffic/components/TrafficMetricCards.js +24 -0
- package/dist/traffic/components/TrafficMetricCards.js.map +1 -0
- package/dist/traffic/components/TrafficRow.d.ts +40 -0
- package/dist/traffic/components/TrafficRow.d.ts.map +1 -0
- package/dist/traffic/components/TrafficRow.js +27 -0
- package/dist/traffic/components/TrafficRow.js.map +1 -0
- package/dist/traffic/components/TrafficStats.d.ts +18 -0
- package/dist/traffic/components/TrafficStats.d.ts.map +1 -0
- package/dist/traffic/components/TrafficStats.js +19 -0
- package/dist/traffic/components/TrafficStats.js.map +1 -0
- package/dist/traffic/components/TrafficTimeline.d.ts +81 -0
- package/dist/traffic/components/TrafficTimeline.d.ts.map +1 -0
- package/dist/traffic/components/TrafficTimeline.js +72 -0
- package/dist/traffic/components/TrafficTimeline.js.map +1 -0
- package/dist/traffic/components/format.d.ts +13 -0
- package/dist/traffic/components/format.d.ts.map +1 -0
- package/dist/traffic/components/format.js +24 -0
- package/dist/traffic/components/format.js.map +1 -0
- package/dist/traffic/components/index.d.ts +11 -0
- package/dist/traffic/components/index.d.ts.map +1 -0
- package/dist/traffic/components/index.js +11 -0
- package/dist/traffic/components/index.js.map +1 -0
- package/dist/traffic/hooks/index.d.ts +8 -0
- package/dist/traffic/hooks/index.d.ts.map +1 -0
- package/dist/traffic/hooks/index.js +8 -0
- package/dist/traffic/hooks/index.js.map +1 -0
- package/dist/traffic/hooks/useRuleHeatmap.d.ts +33 -0
- package/dist/traffic/hooks/useRuleHeatmap.d.ts.map +1 -0
- package/dist/traffic/hooks/useRuleHeatmap.js +54 -0
- package/dist/traffic/hooks/useRuleHeatmap.js.map +1 -0
- package/dist/traffic/hooks/useTrafficBuckets.d.ts +71 -0
- package/dist/traffic/hooks/useTrafficBuckets.d.ts.map +1 -0
- package/dist/traffic/hooks/useTrafficBuckets.js +74 -0
- package/dist/traffic/hooks/useTrafficBuckets.js.map +1 -0
- package/dist/traffic/hooks/useTrafficFilter.d.ts +40 -0
- package/dist/traffic/hooks/useTrafficFilter.d.ts.map +1 -0
- package/dist/traffic/hooks/useTrafficFilter.js +33 -0
- package/dist/traffic/hooks/useTrafficFilter.js.map +1 -0
- package/dist/traffic/hooks/useTrafficGroups.d.ts +47 -0
- package/dist/traffic/hooks/useTrafficGroups.d.ts.map +1 -0
- package/dist/traffic/hooks/useTrafficGroups.js +73 -0
- package/dist/traffic/hooks/useTrafficGroups.js.map +1 -0
- package/dist/traffic/hooks/useTrafficMetrics.d.ts +66 -0
- package/dist/traffic/hooks/useTrafficMetrics.d.ts.map +1 -0
- package/dist/traffic/hooks/useTrafficMetrics.js +156 -0
- package/dist/traffic/hooks/useTrafficMetrics.js.map +1 -0
- package/dist/traffic/hooks/useTrafficMonitor.d.ts +56 -0
- package/dist/traffic/hooks/useTrafficMonitor.d.ts.map +1 -0
- package/dist/traffic/hooks/useTrafficMonitor.js +58 -0
- package/dist/traffic/hooks/useTrafficMonitor.js.map +1 -0
- package/dist/traffic/hooks/useTrafficStats.d.ts +32 -0
- package/dist/traffic/hooks/useTrafficStats.d.ts.map +1 -0
- package/dist/traffic/hooks/useTrafficStats.js +45 -0
- package/dist/traffic/hooks/useTrafficStats.js.map +1 -0
- package/dist/traffic/index.d.ts +4 -0
- package/dist/traffic/index.d.ts.map +1 -0
- package/dist/traffic/index.js +3 -0
- package/dist/traffic/index.js.map +1 -0
- package/dist/traffic/types.d.ts +72 -0
- package/dist/traffic/types.d.ts.map +1 -0
- package/dist/traffic/types.js +10 -0
- package/dist/traffic/types.js.map +1 -0
- package/package.json +116 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createContext, createElement, useContext } from 'react';
|
|
2
|
+
import { sandbox as authSandbox } from 'pyric/auth';
|
|
3
|
+
const inProcessAuthApi = {
|
|
4
|
+
listUsers: authSandbox.listUsers,
|
|
5
|
+
subscribeUsers: authSandbox.subscribeUsers,
|
|
6
|
+
createUser: authSandbox.createUser,
|
|
7
|
+
updateUser: authSandbox.updateUser,
|
|
8
|
+
deleteUser: authSandbox.deleteUser,
|
|
9
|
+
clearUsers: authSandbox.clearUsers,
|
|
10
|
+
getAuthProviderConfig: authSandbox.getAuthProviderConfig,
|
|
11
|
+
setAuthProviderConfig: authSandbox.setAuthProviderConfig,
|
|
12
|
+
subscribeAuthProviderConfig: authSandbox.subscribeAuthProviderConfig,
|
|
13
|
+
};
|
|
14
|
+
const AuthApiContext = createContext(inProcessAuthApi);
|
|
15
|
+
/** Read the active auth API bundle (defaults to in-process `pyric/auth`). */
|
|
16
|
+
export function useAuthApi() {
|
|
17
|
+
return useContext(AuthApiContext);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Provide an auth API bundle to the subtree. Pyric Studio supplies the
|
|
21
|
+
* in-process bundle for dev-seed review and the SharedWorker client bundle under
|
|
22
|
+
* `pyric dev --ui`.
|
|
23
|
+
*/
|
|
24
|
+
export function AuthApiProvider({ value, children, }) {
|
|
25
|
+
return createElement(AuthApiContext.Provider, { value }, children);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=authApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authApi.js","sourceRoot":"","sources":["../../src/auth/authApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC;AAsCpD,MAAM,gBAAgB,GAAY;IAChC,SAAS,EAAE,WAAW,CAAC,SAAS;IAChC,cAAc,EAAE,WAAW,CAAC,cAAc;IAC1C,UAAU,EAAE,WAAW,CAAC,UAAU;IAClC,UAAU,EAAE,WAAW,CAAC,UAAU;IAClC,UAAU,EAAE,WAAW,CAAC,UAAU;IAClC,UAAU,EAAE,WAAW,CAAC,UAAU;IAClC,qBAAqB,EAAE,WAAW,CAAC,qBAAqB;IACxD,qBAAqB,EAAE,WAAW,CAAC,qBAAqB;IACxD,2BAA2B,EAAE,WAAW,CAAC,2BAA2B;CACrE,CAAC;AAEF,MAAM,cAAc,GAAG,aAAa,CAAU,gBAAgB,CAAC,CAAC;AAEhE,6EAA6E;AAC7E,MAAM,UAAU,UAAU;IACxB,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,GAIT;IACC,OAAO,aAAa,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom-claims validation for the add-account form — same checks and
|
|
3
|
+
* user-facing messages as the Firebase emulator UI (which reuses the
|
|
4
|
+
* Auth emulator's server validation: JSON-object shape, 1000-char cap,
|
|
5
|
+
* reserved-key deny list).
|
|
6
|
+
*/
|
|
7
|
+
/** Reserved JWT/OIDC keys the Auth emulator rejects as custom claims.
|
|
8
|
+
* https://firebase.google.com/docs/auth/admin/create-custom-tokens */
|
|
9
|
+
export declare const FORBIDDEN_CUSTOM_CLAIMS: readonly string[];
|
|
10
|
+
/** Serialized-length cap, matching the emulator's `CUSTOM_ATTRIBUTES_MAX_LENGTH`. */
|
|
11
|
+
export declare const CUSTOM_CLAIMS_MAX_LENGTH = 1000;
|
|
12
|
+
export type ClaimsValidationResult =
|
|
13
|
+
/** `claims` is `undefined` when the input was empty/whitespace. */
|
|
14
|
+
{
|
|
15
|
+
ok: true;
|
|
16
|
+
claims: Record<string, unknown> | undefined;
|
|
17
|
+
} | {
|
|
18
|
+
ok: false;
|
|
19
|
+
message: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Validate the claims textarea's raw text. Empty input is valid (no
|
|
23
|
+
* claims). Messages match the emulator UI verbatim so users see the
|
|
24
|
+
* same wording in both tools.
|
|
25
|
+
*/
|
|
26
|
+
export declare function validateSerializedClaims(text: string): ClaimsValidationResult;
|
|
27
|
+
//# sourceMappingURL=claims.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../../src/auth/claims.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;uEACuE;AACvE,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAiBpD,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,MAAM,MAAM,sBAAsB;AAChC,mEAAmE;AACjE;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;CAAE,GACzD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAqB7E"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom-claims validation for the add-account form — same checks and
|
|
3
|
+
* user-facing messages as the Firebase emulator UI (which reuses the
|
|
4
|
+
* Auth emulator's server validation: JSON-object shape, 1000-char cap,
|
|
5
|
+
* reserved-key deny list).
|
|
6
|
+
*/
|
|
7
|
+
/** Reserved JWT/OIDC keys the Auth emulator rejects as custom claims.
|
|
8
|
+
* https://firebase.google.com/docs/auth/admin/create-custom-tokens */
|
|
9
|
+
export const FORBIDDEN_CUSTOM_CLAIMS = [
|
|
10
|
+
'iss',
|
|
11
|
+
'aud',
|
|
12
|
+
'sub',
|
|
13
|
+
'iat',
|
|
14
|
+
'exp',
|
|
15
|
+
'nbf',
|
|
16
|
+
'jti',
|
|
17
|
+
'nonce',
|
|
18
|
+
'azp',
|
|
19
|
+
'acr',
|
|
20
|
+
'amr',
|
|
21
|
+
'cnf',
|
|
22
|
+
'auth_time',
|
|
23
|
+
'firebase',
|
|
24
|
+
'at_hash',
|
|
25
|
+
'c_hash',
|
|
26
|
+
];
|
|
27
|
+
/** Serialized-length cap, matching the emulator's `CUSTOM_ATTRIBUTES_MAX_LENGTH`. */
|
|
28
|
+
export const CUSTOM_CLAIMS_MAX_LENGTH = 1000;
|
|
29
|
+
/**
|
|
30
|
+
* Validate the claims textarea's raw text. Empty input is valid (no
|
|
31
|
+
* claims). Messages match the emulator UI verbatim so users see the
|
|
32
|
+
* same wording in both tools.
|
|
33
|
+
*/
|
|
34
|
+
export function validateSerializedClaims(text) {
|
|
35
|
+
const trimmed = text.trim();
|
|
36
|
+
if (!trimmed)
|
|
37
|
+
return { ok: true, claims: undefined };
|
|
38
|
+
if (trimmed.length > CUSTOM_CLAIMS_MAX_LENGTH) {
|
|
39
|
+
return { ok: false, message: 'Custom claims length must not exceed 1000 characters' };
|
|
40
|
+
}
|
|
41
|
+
let parsed;
|
|
42
|
+
try {
|
|
43
|
+
parsed = JSON.parse(trimmed);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return { ok: false, message: 'Custom claims must be a valid JSON object' };
|
|
47
|
+
}
|
|
48
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
49
|
+
return { ok: false, message: 'Custom claims must be a valid JSON object' };
|
|
50
|
+
}
|
|
51
|
+
for (const key of FORBIDDEN_CUSTOM_CLAIMS) {
|
|
52
|
+
if (key in parsed) {
|
|
53
|
+
return { ok: false, message: `Custom claims must not have forbidden key: ${key}` };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return { ok: true, claims: parsed };
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=claims.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../src/auth/claims.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;uEACuE;AACvE,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACxD,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,WAAW;IACX,UAAU;IACV,SAAS;IACT,QAAQ;CACT,CAAC;AAEF,qFAAqF;AACrF,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAO7C;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACrD,IAAI,OAAO,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;QAC9C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,sDAAsD,EAAE,CAAC;IACxF,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;IAC7E,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;IAC7E,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC1C,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YAClB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,8CAA8C,GAAG,EAAE,EAAE,CAAC;QACrF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAiC,EAAE,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { AuthProviderConfigEntry } from '../hooks/useAuthProviderConfig.js';
|
|
2
|
+
/** Providers always shown as a toggle row, regardless of whether the
|
|
3
|
+
* backend has an explicit entry for them yet (an unconfigured provider
|
|
4
|
+
* simply reads as disabled — same default the sandbox backend applies). */
|
|
5
|
+
export declare const DEFAULT_KNOWN_PROVIDER_IDS: readonly ["password", "anonymous", "google.com", "github.com", "apple.com", "microsoft.com"];
|
|
6
|
+
export interface AuthProviderTogglesProps {
|
|
7
|
+
/** Current config — usually `useAuthProviderConfig(auth).config`. */
|
|
8
|
+
config: AuthProviderConfigEntry[];
|
|
9
|
+
/** Fired when a toggle (known or custom) flips. */
|
|
10
|
+
onToggle: (providerId: string, enabled: boolean) => void;
|
|
11
|
+
/** Always-shown rows, in this order. Default: {@link DEFAULT_KNOWN_PROVIDER_IDS}. */
|
|
12
|
+
knownProviderIds?: readonly string[];
|
|
13
|
+
isLoading?: boolean;
|
|
14
|
+
error?: Error;
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Headless "Sign-in providers" toggle grid — the Authentication → Sign-in
|
|
19
|
+
* method surface. Known providers (password / anonymous / the built-in OAuth
|
|
20
|
+
* set) always render as a row; any OTHER provider already present in
|
|
21
|
+
* `config` (a custom OAuth id a host previously added) also gets a row. A
|
|
22
|
+
* free-text field lets a consumer enable an arbitrary OAuth provider id not
|
|
23
|
+
* in the known set — this is a SECTION, not a dialog: the add row lives
|
|
24
|
+
* inline, no modal.
|
|
25
|
+
*
|
|
26
|
+
* Fully headless: styling hangs off `data-pyric-*`, matching the rest of
|
|
27
|
+
* `@pyric/ui/auth` (`AuthUserList`, `AuthUserForm`, …). Data + mutation come
|
|
28
|
+
* from `useAuthProviderConfig`; this component only renders + fires events.
|
|
29
|
+
*/
|
|
30
|
+
export declare function AuthProviderToggles({ config, onToggle, knownProviderIds, isLoading, error, className, }: AuthProviderTogglesProps): import("react").JSX.Element;
|
|
31
|
+
//# sourceMappingURL=AuthProviderToggles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthProviderToggles.d.ts","sourceRoot":"","sources":["../../../src/auth/components/AuthProviderToggles.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAEjF;;4EAE4E;AAC5E,eAAO,MAAM,0BAA0B,8FAO7B,CAAC;AAEX,MAAM,WAAW,wBAAwB;IACvC,qEAAqE;IACrE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAClC,mDAAmD;IACnD,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,QAAQ,EACR,gBAA6C,EAC7C,SAAS,EACT,KAAK,EACL,SAAS,GACV,EAAE,wBAAwB,+BA2D1B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { providerLabel } from '../providers.js';
|
|
4
|
+
/** Providers always shown as a toggle row, regardless of whether the
|
|
5
|
+
* backend has an explicit entry for them yet (an unconfigured provider
|
|
6
|
+
* simply reads as disabled — same default the sandbox backend applies). */
|
|
7
|
+
export const DEFAULT_KNOWN_PROVIDER_IDS = [
|
|
8
|
+
'password',
|
|
9
|
+
'anonymous',
|
|
10
|
+
'google.com',
|
|
11
|
+
'github.com',
|
|
12
|
+
'apple.com',
|
|
13
|
+
'microsoft.com',
|
|
14
|
+
];
|
|
15
|
+
function isEnabled(config, providerId) {
|
|
16
|
+
return config.find((c) => c.providerId === providerId)?.enabled ?? false;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Headless "Sign-in providers" toggle grid — the Authentication → Sign-in
|
|
20
|
+
* method surface. Known providers (password / anonymous / the built-in OAuth
|
|
21
|
+
* set) always render as a row; any OTHER provider already present in
|
|
22
|
+
* `config` (a custom OAuth id a host previously added) also gets a row. A
|
|
23
|
+
* free-text field lets a consumer enable an arbitrary OAuth provider id not
|
|
24
|
+
* in the known set — this is a SECTION, not a dialog: the add row lives
|
|
25
|
+
* inline, no modal.
|
|
26
|
+
*
|
|
27
|
+
* Fully headless: styling hangs off `data-pyric-*`, matching the rest of
|
|
28
|
+
* `@pyric/ui/auth` (`AuthUserList`, `AuthUserForm`, …). Data + mutation come
|
|
29
|
+
* from `useAuthProviderConfig`; this component only renders + fires events.
|
|
30
|
+
*/
|
|
31
|
+
export function AuthProviderToggles({ config, onToggle, knownProviderIds = DEFAULT_KNOWN_PROVIDER_IDS, isLoading, error, className, }) {
|
|
32
|
+
const [customId, setCustomId] = useState('');
|
|
33
|
+
const customEntries = config.filter((c) => !knownProviderIds.includes(c.providerId));
|
|
34
|
+
const handleAdd = (e) => {
|
|
35
|
+
e.preventDefault();
|
|
36
|
+
const id = customId.trim();
|
|
37
|
+
if (!id)
|
|
38
|
+
return;
|
|
39
|
+
onToggle(id, true);
|
|
40
|
+
setCustomId('');
|
|
41
|
+
};
|
|
42
|
+
return (_jsxs("div", { className: className, "data-pyric-ui": "auth-provider-toggles", children: [error ? (_jsx("p", { "data-pyric-provider-toggles-error": true, role: "alert", children: error.message })) : null, _jsxs("div", { role: "list", "aria-label": "Sign-in providers", "data-pyric-provider-toggle-list": true, "data-pyric-loading": isLoading ? '' : undefined, children: [knownProviderIds.map((providerId) => (_jsx(ProviderToggleRow, { providerId: providerId, enabled: isEnabled(config, providerId), onToggle: onToggle }, providerId))), customEntries.map((entry) => (_jsx(ProviderToggleRow, { providerId: entry.providerId, enabled: entry.enabled, onToggle: onToggle, custom: true }, entry.providerId)))] }), _jsxs("form", { "data-pyric-add-provider-form": true, onSubmit: handleAdd, children: [_jsxs("label", { "data-pyric-field-label": "custom-provider-id", children: [_jsx("span", { "data-pyric-label-text": true, children: "Add a custom OAuth provider" }), _jsx("input", { type: "text", "data-pyric-field": "custom-provider-id", placeholder: "e.g. yahoo.com", value: customId, onChange: (e) => setCustomId(e.target.value) })] }), _jsx("button", { type: "submit", "data-pyric-add-provider": true, disabled: !customId.trim(), children: "Add" })] })] }));
|
|
43
|
+
}
|
|
44
|
+
function ProviderToggleRow({ providerId, enabled, onToggle, custom, }) {
|
|
45
|
+
const inputId = `auth-provider-toggle-${providerId}`;
|
|
46
|
+
return (_jsx("div", { role: "listitem", "data-pyric-provider-toggle": true, "data-pyric-provider-id": providerId, "data-pyric-provider-enabled": enabled ? '' : undefined, "data-pyric-provider-custom": custom ? '' : undefined, children: _jsxs("label", { htmlFor: inputId, "data-pyric-provider-toggle-label": true, children: [_jsx("input", { id: inputId, type: "checkbox", "data-pyric-field": "enabled", checked: enabled, onChange: (e) => onToggle(providerId, e.target.checked) }), _jsx("span", { "data-pyric-provider-toggle-name": true, children: providerLabel(providerId) }), _jsx("span", { "data-pyric-provider-toggle-id": true, children: providerId })] }) }));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=AuthProviderToggles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthProviderToggles.js","sourceRoot":"","sources":["../../../src/auth/components/AuthProviderToggles.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { HelperState, NewIdentitySpec, SandboxIdentity } from '../controller.js';
|
|
3
|
+
export interface AuthSignInHelperProps {
|
|
4
|
+
/** Snapshot from `useAuthFlowHelper`. Renders nothing while
|
|
5
|
+
* `state.request` is null. */
|
|
6
|
+
state: HelperState;
|
|
7
|
+
/** Settle with an existing identity (wire to the hook's `pick`). */
|
|
8
|
+
onPick: (uid: string) => void;
|
|
9
|
+
/** Create + sign in as a new identity (wire to the hook's `add`). */
|
|
10
|
+
onAdd: (spec: NewIdentitySpec) => void;
|
|
11
|
+
/** Dismiss the flow (wire to the hook's `cancel`). Rejects the app's
|
|
12
|
+
* sign-in promise with `auth/popup-closed-by-user`. */
|
|
13
|
+
onCancel: () => void;
|
|
14
|
+
/**
|
|
15
|
+
* Optional renderer for an account row's content. Default renders
|
|
16
|
+
* the display name (or email, or uid) plus the email when both
|
|
17
|
+
* exist. The row button + data attributes stay owned by the
|
|
18
|
+
* component; this slot only fills the button's children.
|
|
19
|
+
*/
|
|
20
|
+
renderAccount?: (identity: SandboxIdentity) => ReactNode;
|
|
21
|
+
/** Heading text. Default: `Sign in with <provider label>`. */
|
|
22
|
+
title?: ReactNode;
|
|
23
|
+
/** Optional helper text rendered under the title
|
|
24
|
+
* (`[data-pyric-helper-description]`). Default: none. */
|
|
25
|
+
description?: ReactNode;
|
|
26
|
+
/** Prefill for the add-account form (e.g. a host-suggested email).
|
|
27
|
+
* Read once on mount; `claims` is the raw textarea JSON text. */
|
|
28
|
+
initialValues?: {
|
|
29
|
+
email?: string;
|
|
30
|
+
displayName?: string;
|
|
31
|
+
claims?: string;
|
|
32
|
+
};
|
|
33
|
+
className?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Headless emulator-style sign-in helper: an account picker over the
|
|
37
|
+
* sandbox's known identities plus an add-account form (email, display
|
|
38
|
+
* name, custom-claims JSON with emulator-grade validation messages).
|
|
39
|
+
*
|
|
40
|
+
* Ships zero styling. Structure is addressable via the
|
|
41
|
+
* `data-pyric-*` contract:
|
|
42
|
+
*
|
|
43
|
+
* - root: `[data-pyric-ui="auth-signin-helper"]`,
|
|
44
|
+
* `[data-pyric-provider-id]`, `[data-pyric-auth-type]`
|
|
45
|
+
* - picker: `[data-pyric-account-list]` > `[data-pyric-account-entry]`
|
|
46
|
+
* > `button[data-pyric-account-pick]`
|
|
47
|
+
* - form: `form[data-pyric-add-account-form]`, fields
|
|
48
|
+
* `[data-pyric-field="email" | "display-name" | "claims"]`,
|
|
49
|
+
* `[data-pyric-claims-error]` (role=alert),
|
|
50
|
+
* `button[data-pyric-cancel]`, `button[data-pyric-submit]`
|
|
51
|
+
*
|
|
52
|
+
* Positioning is the consumer's job — render it inside your own modal
|
|
53
|
+
* or panel (the flow is host-UI-agnostic; only `onCancel` carries the
|
|
54
|
+
* popup-closed semantics).
|
|
55
|
+
*/
|
|
56
|
+
export declare function AuthSignInHelper({ state, onPick, onAdd, onCancel, renderAccount, title, description, initialValues, className, }: AuthSignInHelperProps): import("react").JSX.Element | null;
|
|
57
|
+
//# sourceMappingURL=AuthSignInHelper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthSignInHelper.d.ts","sourceRoot":"","sources":["../../../src/auth/components/AuthSignInHelper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAItF,MAAM,WAAW,qBAAqB;IACpC;mCAC+B;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,oEAAoE;IACpE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,qEAAqE;IACrE,KAAK,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACvC;4DACwD;IACxD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,SAAS,CAAC;IACzD,8DAA8D;IAC9D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;8DAC0D;IAC1D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;sEACkE;IAClE,aAAa,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,MAAM,EACN,KAAK,EACL,QAAQ,EACR,aAAa,EACb,KAAK,EACL,WAAW,EACX,aAAa,EACb,SAAS,GACV,EAAE,qBAAqB,sCAmIvB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { validateSerializedClaims } from '../claims.js';
|
|
4
|
+
import { providerLabel } from '../providers.js';
|
|
5
|
+
/**
|
|
6
|
+
* Headless emulator-style sign-in helper: an account picker over the
|
|
7
|
+
* sandbox's known identities plus an add-account form (email, display
|
|
8
|
+
* name, custom-claims JSON with emulator-grade validation messages).
|
|
9
|
+
*
|
|
10
|
+
* Ships zero styling. Structure is addressable via the
|
|
11
|
+
* `data-pyric-*` contract:
|
|
12
|
+
*
|
|
13
|
+
* - root: `[data-pyric-ui="auth-signin-helper"]`,
|
|
14
|
+
* `[data-pyric-provider-id]`, `[data-pyric-auth-type]`
|
|
15
|
+
* - picker: `[data-pyric-account-list]` > `[data-pyric-account-entry]`
|
|
16
|
+
* > `button[data-pyric-account-pick]`
|
|
17
|
+
* - form: `form[data-pyric-add-account-form]`, fields
|
|
18
|
+
* `[data-pyric-field="email" | "display-name" | "claims"]`,
|
|
19
|
+
* `[data-pyric-claims-error]` (role=alert),
|
|
20
|
+
* `button[data-pyric-cancel]`, `button[data-pyric-submit]`
|
|
21
|
+
*
|
|
22
|
+
* Positioning is the consumer's job — render it inside your own modal
|
|
23
|
+
* or panel (the flow is host-UI-agnostic; only `onCancel` carries the
|
|
24
|
+
* popup-closed semantics).
|
|
25
|
+
*/
|
|
26
|
+
export function AuthSignInHelper({ state, onPick, onAdd, onCancel, renderAccount, title, description, initialValues, className, }) {
|
|
27
|
+
const [email, setEmail] = useState(initialValues?.email ?? '');
|
|
28
|
+
const [displayName, setDisplayName] = useState(initialValues?.displayName ?? '');
|
|
29
|
+
const [claims, setClaims] = useState(initialValues?.claims ?? '');
|
|
30
|
+
const [claimsError, setClaimsError] = useState(null);
|
|
31
|
+
if (!state.request)
|
|
32
|
+
return null;
|
|
33
|
+
const { providerId, authType } = state.request;
|
|
34
|
+
const label = providerLabel(providerId);
|
|
35
|
+
const reset = () => {
|
|
36
|
+
setEmail('');
|
|
37
|
+
setDisplayName('');
|
|
38
|
+
setClaims('');
|
|
39
|
+
setClaimsError(null);
|
|
40
|
+
};
|
|
41
|
+
const cancel = () => {
|
|
42
|
+
onCancel();
|
|
43
|
+
reset();
|
|
44
|
+
};
|
|
45
|
+
const submit = (e) => {
|
|
46
|
+
e.preventDefault();
|
|
47
|
+
const result = validateSerializedClaims(claims);
|
|
48
|
+
if (!result.ok) {
|
|
49
|
+
setClaimsError(result.message);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (!email.trim())
|
|
53
|
+
return;
|
|
54
|
+
onAdd({
|
|
55
|
+
email: email.trim(),
|
|
56
|
+
displayName: displayName.trim() || undefined,
|
|
57
|
+
customClaims: result.claims,
|
|
58
|
+
});
|
|
59
|
+
reset();
|
|
60
|
+
};
|
|
61
|
+
return (_jsxs("section", { className: className, "data-pyric-ui": "auth-signin-helper", "data-pyric-provider-id": providerId, "data-pyric-auth-type": authType, "aria-label": `Sign in with ${label}`, children: [_jsxs("header", { "data-pyric-helper-header": true, children: [_jsx("h2", { "data-pyric-helper-title": true, children: title ?? `Sign in with ${label}` }), description != null && _jsx("p", { "data-pyric-helper-description": true, children: description })] }), state.identities.length > 0 && (_jsx("ul", { "data-pyric-account-list": true, children: state.identities.map((identity) => (_jsx("li", { "data-pyric-account-entry": true, "data-pyric-account-uid": identity.uid, "data-pyric-provider-id": identity.providerId, children: _jsx("button", { type: "button", "data-pyric-account-pick": true, onClick: () => {
|
|
62
|
+
onPick(identity.uid);
|
|
63
|
+
reset();
|
|
64
|
+
}, children: renderAccount ? (renderAccount(identity)) : (_jsxs(_Fragment, { children: [_jsx("span", { "data-pyric-account-name": true, children: identity.displayName || identity.email || identity.uid }), identity.email && identity.displayName ? (_jsx("span", { "data-pyric-account-email": true, children: identity.email })) : null] })) }) }, identity.uid))) })), _jsxs("form", { "data-pyric-add-account-form": true, onSubmit: submit, children: [_jsx("input", { type: "email", "data-pyric-field": "email", "aria-label": "Email", placeholder: "email@example.com", value: email, onChange: (e) => setEmail(e.target.value) }), _jsx("input", { type: "text", "data-pyric-field": "display-name", "aria-label": "Display name (optional)", placeholder: "Display name (optional)", value: displayName, onChange: (e) => setDisplayName(e.target.value) }), _jsx("textarea", { "data-pyric-field": "claims", "data-pyric-claims-invalid": claimsError != null ? '' : undefined, "aria-label": "Custom claims (optional)", "aria-invalid": claimsError != null || undefined, placeholder: 'Enter valid json, e.g. {"role":"admin"}', value: claims, onChange: (e) => {
|
|
65
|
+
setClaims(e.target.value);
|
|
66
|
+
setClaimsError(null);
|
|
67
|
+
} }), claimsError != null && (_jsx("p", { role: "alert", "data-pyric-claims-error": true, children: claimsError })), _jsxs("footer", { "data-pyric-helper-actions": true, children: [_jsx("button", { type: "button", "data-pyric-cancel": true, onClick: cancel, children: "Cancel" }), _jsx("button", { type: "submit", "data-pyric-submit": true, disabled: !email.trim(), children: "Sign in" })] })] })] }));
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=AuthSignInHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthSignInHelper.js","sourceRoot":"","sources":["../../../src/auth/components/AuthSignInHelper.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { AuthUserRecord, CreateUserRequest, UpdateUserRequest } from 'pyric/auth';
|
|
3
|
+
/** What `onSubmit` receives — discriminated on the form's mode. */
|
|
4
|
+
export type AuthUserFormSubmit = {
|
|
5
|
+
mode: 'create';
|
|
6
|
+
request: CreateUserRequest;
|
|
7
|
+
} | {
|
|
8
|
+
mode: 'edit';
|
|
9
|
+
uid: string;
|
|
10
|
+
request: UpdateUserRequest;
|
|
11
|
+
};
|
|
12
|
+
/** Field names the {@link AuthUserFormProps.renderField} slot receives,
|
|
13
|
+
* in render order. Claims is NOT a slot field — it stays the standalone
|
|
14
|
+
* `<ClaimsField>` (override it by composing `useAuthUserEditor`). */
|
|
15
|
+
export type AuthUserFormFieldName = 'email' | 'password' | 'display-name' | 'phone-number' | 'photo-url' | 'providers' | 'email-verified' | 'disabled';
|
|
16
|
+
/** What the {@link AuthUserFormProps.renderField} slot receives per field. */
|
|
17
|
+
export interface AuthUserFormField {
|
|
18
|
+
name: AuthUserFormFieldName;
|
|
19
|
+
/** The visible label text the default rendering uses. */
|
|
20
|
+
label: string;
|
|
21
|
+
/** The wired, controlled input element (carries `data-pyric-field`).
|
|
22
|
+
* Place it anywhere; state/validation stay connected. */
|
|
23
|
+
input: ReactNode;
|
|
24
|
+
/** Current validation message for this field, or null. */
|
|
25
|
+
error: string | null;
|
|
26
|
+
/** `'text' | 'checkbox' | 'group'` — lets one slot impl branch on
|
|
27
|
+
* layout (`group` = a multi-control block, e.g. the provider
|
|
28
|
+
* checklist; create mode only). */
|
|
29
|
+
kind: 'text' | 'checkbox' | 'group';
|
|
30
|
+
/** The default rendering (label wrapper + label text + input + error).
|
|
31
|
+
* Call it to keep the stock layout for fields you don't customize. */
|
|
32
|
+
defaultRender: () => ReactNode;
|
|
33
|
+
}
|
|
34
|
+
export interface AuthUserFormProps {
|
|
35
|
+
/** Existing record → edit mode (delta payloads); omit → create mode. */
|
|
36
|
+
initial?: AuthUserRecord;
|
|
37
|
+
/** Receives the validated payload. Wire `create` to
|
|
38
|
+
* `useAuthUsers().createUser` and `edit` to `updateUser`. */
|
|
39
|
+
onSubmit: (submit: AuthUserFormSubmit) => void;
|
|
40
|
+
onCancel?: () => void;
|
|
41
|
+
submitLabel?: string;
|
|
42
|
+
cancelLabel?: string;
|
|
43
|
+
/** Extra content rendered before the action row (e.g. an error from a
|
|
44
|
+
* failed `createUser` call). */
|
|
45
|
+
children?: ReactNode;
|
|
46
|
+
className?: string;
|
|
47
|
+
/** Per-field layout override. Called for each field (see
|
|
48
|
+
* {@link AuthUserFormFieldName} order); return your own markup around
|
|
49
|
+
* `field.input`, or `field.defaultRender()` to keep the stock label
|
|
50
|
+
* wrapper for that field. Omit the prop for the default layout. */
|
|
51
|
+
renderField?: (field: AuthUserFormField) => ReactNode;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Headless add/edit-user form over `useAuthUserEditor` — the emulator
|
|
55
|
+
* UI's user dialog fields (email, password, display name, phone, photo
|
|
56
|
+
* URL, verified/disabled toggles, custom claims) with its validation
|
|
57
|
+
* messages. Zero CSS; structure addressable via `data-pyric-*`:
|
|
58
|
+
*
|
|
59
|
+
* - root `form[data-pyric-ui="auth-user-form"]` with `data-pyric-mode`,
|
|
60
|
+
* `data-pyric-is-dirty`, `data-pyric-is-valid` state attrs
|
|
61
|
+
* - every field (text inputs AND checkboxes) is wrapped in a
|
|
62
|
+
* `label[data-pyric-field-label="<name>"]` carrying a visible
|
|
63
|
+
* `span[data-pyric-label-text]` — labeled grid layouts are pure CSS
|
|
64
|
+
* (`display: grid` on the wrappers); label-less designs hide
|
|
65
|
+
* `[data-pyric-label-text]` and lean on the placeholders
|
|
66
|
+
* - inputs `[data-pyric-field="email" | "password" | "display-name" |
|
|
67
|
+
* "phone-number" | "photo-url" | "email-verified" | "disabled"]`
|
|
68
|
+
* - CREATE mode only: a "Sign-in providers" group
|
|
69
|
+
* (`fieldset[data-pyric-field-label="providers"]` wrapping
|
|
70
|
+
* `[data-pyric-provider-checklist]`) — one checkbox per federated
|
|
71
|
+
* provider the sandbox supports (`FEDERATED_PROVIDER_IDS` from
|
|
72
|
+
* `pyric/auth`; multiple selectable, entries land on
|
|
73
|
+
* `CreateUserRequest.providerUserInfo`)
|
|
74
|
+
* - claims via the standalone `<ClaimsField>`
|
|
75
|
+
* - per-field messages `[data-pyric-field-error="email" | "password"]`
|
|
76
|
+
* render INSIDE the field's label wrapper, after the input
|
|
77
|
+
* - `button[data-pyric-cancel]` / `button[data-pyric-submit]` (submit is
|
|
78
|
+
* disabled while invalid, or pristine in edit mode)
|
|
79
|
+
*
|
|
80
|
+
* Submit emits payloads only — no sandbox calls — so the same form works
|
|
81
|
+
* for create and edit and the consumer owns error handling.
|
|
82
|
+
*/
|
|
83
|
+
export declare function AuthUserForm({ initial, onSubmit, onCancel, submitLabel, cancelLabel, children, className, renderField, }: AuthUserFormProps): import("react").JSX.Element;
|
|
84
|
+
//# sourceMappingURL=AuthUserForm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthUserForm.d.ts","sourceRoot":"","sources":["../../../src/auth/components/AuthUserForm.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAsCvF,mEAAmE;AACnE,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAE9D;;sEAEsE;AACtE,MAAM,MAAM,qBAAqB,GAC7B,OAAO,GACP,UAAU,GACV,cAAc,GACd,cAAc,GACd,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,UAAU,CAAC;AAEf,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd;8DAC0D;IAC1D,KAAK,EAAE,SAAS,CAAC;IACjB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;wCAEoC;IACpC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;IACpC;2EACuE;IACvE,aAAa,EAAE,MAAM,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;kEAC8D;IAC9D,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;qCACiC;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;wEAGoE;IACpE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,SAAS,CAAC;CACvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAoB,EACpB,WAAsB,EACtB,QAAQ,EACR,SAAS,EACT,WAAW,GACZ,EAAE,iBAAiB,+BA8LnB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Fragment } from 'react';
|
|
3
|
+
import { FEDERATED_PROVIDER_IDS } from 'pyric/auth';
|
|
4
|
+
import { useAuthUserEditor } from '../hooks/useAuthUserEditor.js';
|
|
5
|
+
import { providerLabel } from '../providers.js';
|
|
6
|
+
import { ClaimsField } from './ClaimsField.js';
|
|
7
|
+
/** Create-mode provider multi-select: one checkbox per federated provider
|
|
8
|
+
* id the sandbox supports (the canonical `FEDERATED_PROVIDER_IDS` set from
|
|
9
|
+
* `pyric/auth` — derived from the shipped provider classes, not a UI-side
|
|
10
|
+
* copy). A user can link one or several. Headless: style
|
|
11
|
+
* `[data-pyric-provider-checklist]` / `[data-pyric-provider-option]`. */
|
|
12
|
+
function ProviderChecklist({ selected, onChange, }) {
|
|
13
|
+
return (_jsx("div", { "data-pyric-provider-checklist": true, children: FEDERATED_PROVIDER_IDS.map((id) => (_jsxs("label", { "data-pyric-provider-option": id, children: [_jsx("input", { type: "checkbox", checked: selected.includes(id), onChange: (e) => onChange(e.target.checked ? [...selected, id] : selected.filter((p) => p !== id)) }), _jsx("span", { "data-pyric-provider-option-label": true, children: providerLabel(id) }), _jsx("span", { "data-pyric-provider-option-id": true, children: id })] }, id))) }));
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Headless add/edit-user form over `useAuthUserEditor` — the emulator
|
|
17
|
+
* UI's user dialog fields (email, password, display name, phone, photo
|
|
18
|
+
* URL, verified/disabled toggles, custom claims) with its validation
|
|
19
|
+
* messages. Zero CSS; structure addressable via `data-pyric-*`:
|
|
20
|
+
*
|
|
21
|
+
* - root `form[data-pyric-ui="auth-user-form"]` with `data-pyric-mode`,
|
|
22
|
+
* `data-pyric-is-dirty`, `data-pyric-is-valid` state attrs
|
|
23
|
+
* - every field (text inputs AND checkboxes) is wrapped in a
|
|
24
|
+
* `label[data-pyric-field-label="<name>"]` carrying a visible
|
|
25
|
+
* `span[data-pyric-label-text]` — labeled grid layouts are pure CSS
|
|
26
|
+
* (`display: grid` on the wrappers); label-less designs hide
|
|
27
|
+
* `[data-pyric-label-text]` and lean on the placeholders
|
|
28
|
+
* - inputs `[data-pyric-field="email" | "password" | "display-name" |
|
|
29
|
+
* "phone-number" | "photo-url" | "email-verified" | "disabled"]`
|
|
30
|
+
* - CREATE mode only: a "Sign-in providers" group
|
|
31
|
+
* (`fieldset[data-pyric-field-label="providers"]` wrapping
|
|
32
|
+
* `[data-pyric-provider-checklist]`) — one checkbox per federated
|
|
33
|
+
* provider the sandbox supports (`FEDERATED_PROVIDER_IDS` from
|
|
34
|
+
* `pyric/auth`; multiple selectable, entries land on
|
|
35
|
+
* `CreateUserRequest.providerUserInfo`)
|
|
36
|
+
* - claims via the standalone `<ClaimsField>`
|
|
37
|
+
* - per-field messages `[data-pyric-field-error="email" | "password"]`
|
|
38
|
+
* render INSIDE the field's label wrapper, after the input
|
|
39
|
+
* - `button[data-pyric-cancel]` / `button[data-pyric-submit]` (submit is
|
|
40
|
+
* disabled while invalid, or pristine in edit mode)
|
|
41
|
+
*
|
|
42
|
+
* Submit emits payloads only — no sandbox calls — so the same form works
|
|
43
|
+
* for create and edit and the consumer owns error handling.
|
|
44
|
+
*/
|
|
45
|
+
export function AuthUserForm({ initial, onSubmit, onCancel, submitLabel = 'Save', cancelLabel = 'Cancel', children, className, renderField, }) {
|
|
46
|
+
const editor = useAuthUserEditor({ initial });
|
|
47
|
+
const mode = initial ? 'edit' : 'create';
|
|
48
|
+
const submittable = editor.isValid && (mode === 'create' || editor.isDirty);
|
|
49
|
+
/** Build one field descriptor: the wired input + the stock label-wrapper
|
|
50
|
+
* rendering. `renderField` consumers place `input` themselves. */
|
|
51
|
+
const field = (name, label, kind, input, error = null) => ({
|
|
52
|
+
name,
|
|
53
|
+
label,
|
|
54
|
+
input,
|
|
55
|
+
error,
|
|
56
|
+
kind,
|
|
57
|
+
defaultRender: () => kind === 'checkbox' ? (_jsxs("label", { "data-pyric-field-label": name, children: [input, _jsx("span", { "data-pyric-label-text": true, children: label })] }, name)) : kind === 'group' ? (_jsxs("fieldset", { "data-pyric-field-label": name, children: [_jsx("legend", { "data-pyric-label-text": true, children: label }), input] }, name)) : (_jsxs("label", { "data-pyric-field-label": name, children: [_jsx("span", { "data-pyric-label-text": true, children: label }), input, error != null && (_jsx("p", { role: "alert", "data-pyric-field-error": name, children: error }))] }, name)),
|
|
58
|
+
});
|
|
59
|
+
const fields = [
|
|
60
|
+
field('email', 'Email', 'text', _jsx("input", { type: "email", "data-pyric-field": "email", placeholder: "email@example.com", value: editor.fields.email, onChange: (e) => editor.setField('email', e.target.value) }), editor.errors.email ?? null),
|
|
61
|
+
field('password', 'Password', 'text', _jsx("input", { type: "password", "data-pyric-field": "password", placeholder: mode === 'edit' ? 'New password (unchanged if empty)' : 'Password', value: editor.fields.password, onChange: (e) => editor.setField('password', e.target.value) }), editor.errors.password ?? null),
|
|
62
|
+
field('display-name', 'Display name', 'text', _jsx("input", { type: "text", "data-pyric-field": "display-name", placeholder: "Display name (optional)", value: editor.fields.displayName, onChange: (e) => editor.setField('displayName', e.target.value) })),
|
|
63
|
+
field('phone-number', 'Phone number', 'text', _jsx("input", { type: "tel", "data-pyric-field": "phone-number", placeholder: "+1 555 555 0100", value: editor.fields.phoneNumber, onChange: (e) => editor.setField('phoneNumber', e.target.value) })),
|
|
64
|
+
field('photo-url', 'Photo URL', 'text', _jsx("input", { type: "url", "data-pyric-field": "photo-url", placeholder: "https://example.com/avatar.png", value: editor.fields.photoUrl, onChange: (e) => editor.setField('photoUrl', e.target.value) })),
|
|
65
|
+
// Provider selection is CREATE-only: in edit mode linked providers are
|
|
66
|
+
// managed by the consumer's own affordance over `updateUser` (Studio's
|
|
67
|
+
// per-user ProvidersEditor), not the delta form.
|
|
68
|
+
...(mode === 'create'
|
|
69
|
+
? [
|
|
70
|
+
field('providers', 'Sign-in providers', 'group', _jsx(ProviderChecklist, { selected: editor.fields.providerIds, onChange: (ids) => editor.setField('providerIds', ids) })),
|
|
71
|
+
]
|
|
72
|
+
: []),
|
|
73
|
+
field('email-verified', 'Verified email', 'checkbox', _jsx("input", { type: "checkbox", "data-pyric-field": "email-verified", checked: editor.fields.emailVerified, onChange: (e) => editor.setField('emailVerified', e.target.checked) })),
|
|
74
|
+
field('disabled', 'Disabled (sign-in attempts are rejected)', 'checkbox', _jsx("input", { type: "checkbox", "data-pyric-field": "disabled", checked: editor.fields.disabled, onChange: (e) => editor.setField('disabled', e.target.checked) })),
|
|
75
|
+
];
|
|
76
|
+
const submit = (e) => {
|
|
77
|
+
e.preventDefault();
|
|
78
|
+
if (!submittable)
|
|
79
|
+
return;
|
|
80
|
+
if (mode === 'edit') {
|
|
81
|
+
onSubmit({ mode, uid: initial.uid, request: editor.toUpdateRequest() });
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
onSubmit({ mode, request: editor.toCreateRequest() });
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
return (_jsxs("form", { className: className, "data-pyric-ui": "auth-user-form", "data-pyric-mode": mode, "data-pyric-is-dirty": editor.isDirty ? '' : undefined, "data-pyric-is-valid": editor.isValid ? '' : undefined, onSubmit: submit, children: [fields.map((f) => renderField ? (_jsx(Fragment, { children: renderField(f) }, f.name)) : (f.defaultRender())), _jsx(ClaimsField, { value: editor.fields.claimsText, onChange: (text) => editor.setField('claimsText', text), error: editor.errors.claims }), children, _jsxs("footer", { "data-pyric-form-actions": true, children: [onCancel ? (_jsx("button", { type: "button", "data-pyric-cancel": true, onClick: onCancel, children: cancelLabel })) : null, _jsx("button", { type: "submit", "data-pyric-submit": true, disabled: !submittable, children: submitLabel })] })] }));
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=AuthUserForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthUserForm.js","sourceRoot":"","sources":["../../../src/auth/components/AuthUserForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { AuthUserRecord } from 'pyric/auth';
|
|
3
|
+
export interface AuthUserListProps {
|
|
4
|
+
/** Rows to render — usually `useAuthUsers().users`. */
|
|
5
|
+
users: AuthUserRecord[];
|
|
6
|
+
isLoading?: boolean;
|
|
7
|
+
error?: Error;
|
|
8
|
+
/** The active filter text. Distinguishes the "no users yet" zero state
|
|
9
|
+
* (empty filter) from "no results" (non-empty). */
|
|
10
|
+
filter?: string;
|
|
11
|
+
/** Fired when the identifier cell is clicked. When omitted, the
|
|
12
|
+
* identifier renders as plain text. */
|
|
13
|
+
onSelect?: (user: AuthUserRecord) => void;
|
|
14
|
+
/** Identifier-cell override. Default: email, else phone, else
|
|
15
|
+
* `anonymous`, else the uid. */
|
|
16
|
+
renderIdentifier?: (user: AuthUserRecord) => ReactNode;
|
|
17
|
+
/** Providers-cell override. Default: one `<span data-pyric-provider-id>`
|
|
18
|
+
* per linked provider with its text label (`anonymous` for anonymous
|
|
19
|
+
* users) — hook icons off the attribute. */
|
|
20
|
+
renderProviders?: (user: AuthUserRecord) => ReactNode;
|
|
21
|
+
/** Per-row action slot (edit / disable / delete menu). Rendered in a
|
|
22
|
+
* trailing cell; column header is added when this is provided. */
|
|
23
|
+
renderActions?: (user: AuthUserRecord) => ReactNode;
|
|
24
|
+
/** Timestamp formatter for Created / Signed In. Default: locale date,
|
|
25
|
+
* em dash for null. */
|
|
26
|
+
formatDate?: (iso: string | null) => ReactNode;
|
|
27
|
+
/** Zero state when the project has no users at all. */
|
|
28
|
+
emptyState?: ReactNode;
|
|
29
|
+
/** Zero state when the filter matches nothing. */
|
|
30
|
+
noResultsState?: ReactNode;
|
|
31
|
+
className?: string;
|
|
32
|
+
/** Above this row count, rows render through `<VirtualList>`.
|
|
33
|
+
* Default 100. `Infinity` disables. */
|
|
34
|
+
virtualizeThreshold?: number;
|
|
35
|
+
/** Estimated row height when virtualizing. Default 44. */
|
|
36
|
+
rowHeight?: number | ((index: number) => number);
|
|
37
|
+
/** Scroll-container height when virtualized. Default `'60vh'`. */
|
|
38
|
+
virtualizedHeight?: number | string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Headless users table — the emulator UI's columns (Identifier,
|
|
42
|
+
* Provider, Created, Signed In, User UID, actions) over the
|
|
43
|
+
* `data-pyric-*` styling contract, with role-based table semantics so
|
|
44
|
+
* rows can virtualize (a real `<table>` can't wrap a scroll container).
|
|
45
|
+
*
|
|
46
|
+
* The hook (`useAuthUsers`) owns data + filter state; this component
|
|
47
|
+
* just renders. Disabled accounts carry `data-pyric-user-disabled` for
|
|
48
|
+
* dimmed styling.
|
|
49
|
+
*/
|
|
50
|
+
export declare function AuthUserList({ users, isLoading, error, filter, onSelect, renderIdentifier, renderProviders, renderActions, formatDate, emptyState, noResultsState, className, virtualizeThreshold, rowHeight, virtualizedHeight, }: AuthUserListProps): import("react").JSX.Element;
|
|
51
|
+
//# sourceMappingURL=AuthUserList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthUserList.d.ts","sourceRoot":"","sources":["../../../src/auth/components/AuthUserList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;wDACoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;4CACwC;IACxC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1C;qCACiC;IACjC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,SAAS,CAAC;IACvD;;iDAE6C;IAC7C,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,SAAS,CAAC;IACtD;uEACmE;IACnE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,SAAS,CAAC;IACpD;4BACwB;IACxB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC;IAC/C,uDAAuD;IACvD,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,kDAAkD;IAClD,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;4CACwC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACjD,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrC;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,UAA8B,EAC9B,UAAU,EACV,cAAc,EACd,SAAS,EACT,mBAAyB,EACzB,SAAc,EACd,iBAA0B,GAC3B,EAAE,iBAAiB,+BAmGnB"}
|