sos-portal-components-react 0.4.0 → 0.5.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 +18 -1
- package/README.md +22 -0
- package/dist/PortalCurrentSubject.d.ts +29 -0
- package/dist/PortalCurrentSubject.d.ts.map +1 -0
- package/dist/PortalCurrentSubject.js +62 -0
- package/dist/PortalCurrentSubject.js.map +1 -0
- package/dist/PortalHeader.d.ts +10 -0
- package/dist/PortalHeader.d.ts.map +1 -0
- package/dist/PortalHeader.js +11 -0
- package/dist/PortalHeader.js.map +1 -0
- package/dist/PortalSettingsPanel.d.ts +8 -0
- package/dist/PortalSettingsPanel.d.ts.map +1 -0
- package/dist/PortalSettingsPanel.js +10 -0
- package/dist/PortalSettingsPanel.js.map +1 -0
- package/dist/care/AnimalCardArtifact.d.ts +42 -0
- package/dist/care/AnimalCardArtifact.d.ts.map +1 -0
- package/dist/care/AnimalCardArtifact.js +32 -0
- package/dist/care/AnimalCardArtifact.js.map +1 -0
- package/dist/care/BrowserRealtimeCallPanel.d.ts +39 -0
- package/dist/care/BrowserRealtimeCallPanel.d.ts.map +1 -0
- package/dist/care/BrowserRealtimeCallPanel.js +43 -0
- package/dist/care/BrowserRealtimeCallPanel.js.map +1 -0
- package/dist/care/CardPreview.d.ts +6 -0
- package/dist/care/CardPreview.d.ts.map +1 -0
- package/dist/care/CardPreview.js +6 -0
- package/dist/care/CardPreview.js.map +1 -0
- package/dist/care/CommunicationsWorkspace.d.ts +18 -0
- package/dist/care/CommunicationsWorkspace.d.ts.map +1 -0
- package/dist/care/CommunicationsWorkspace.js +13 -0
- package/dist/care/CommunicationsWorkspace.js.map +1 -0
- package/dist/care/EmergencyTaskHub.d.ts +27 -0
- package/dist/care/EmergencyTaskHub.d.ts.map +1 -0
- package/dist/care/EmergencyTaskHub.js +25 -0
- package/dist/care/EmergencyTaskHub.js.map +1 -0
- package/dist/care/LegalMarkdownDocument.d.ts +6 -0
- package/dist/care/LegalMarkdownDocument.d.ts.map +1 -0
- package/dist/care/LegalMarkdownDocument.js +57 -0
- package/dist/care/LegalMarkdownDocument.js.map +1 -0
- package/dist/care/NotificationComposer.d.ts +49 -0
- package/dist/care/NotificationComposer.d.ts.map +1 -0
- package/dist/care/NotificationComposer.js +83 -0
- package/dist/care/NotificationComposer.js.map +1 -0
- package/dist/care/ProtectedIndexEmergencyData.d.ts +32 -0
- package/dist/care/ProtectedIndexEmergencyData.d.ts.map +1 -0
- package/dist/care/ProtectedIndexEmergencyData.js +13 -0
- package/dist/care/ProtectedIndexEmergencyData.js.map +1 -0
- package/dist/care/SelectedSubjectWorkspace.d.ts +32 -0
- package/dist/care/SelectedSubjectWorkspace.d.ts.map +1 -0
- package/dist/care/SelectedSubjectWorkspace.js +32 -0
- package/dist/care/SelectedSubjectWorkspace.js.map +1 -0
- package/dist/care/SoschainWorkspace.d.ts +119 -0
- package/dist/care/SoschainWorkspace.d.ts.map +1 -0
- package/dist/care/SoschainWorkspace.js +61 -0
- package/dist/care/SoschainWorkspace.js.map +1 -0
- package/dist/care/SubjectCommunicationCenter.d.ts +45 -0
- package/dist/care/SubjectCommunicationCenter.d.ts.map +1 -0
- package/dist/care/SubjectCommunicationCenter.js +40 -0
- package/dist/care/SubjectCommunicationCenter.js.map +1 -0
- package/dist/care/SubjectDemographicsFields.d.ts +42 -0
- package/dist/care/SubjectDemographicsFields.d.ts.map +1 -0
- package/dist/care/SubjectDemographicsFields.js +71 -0
- package/dist/care/SubjectDemographicsFields.js.map +1 -0
- package/dist/care/SubjectSectionIndex.d.ts +22 -0
- package/dist/care/SubjectSectionIndex.d.ts.map +1 -0
- package/dist/care/SubjectSectionIndex.js +34 -0
- package/dist/care/SubjectSectionIndex.js.map +1 -0
- package/dist/care/SubjectWorkspace.d.ts +29 -0
- package/dist/care/SubjectWorkspace.d.ts.map +1 -0
- package/dist/care/SubjectWorkspace.js +59 -0
- package/dist/care/SubjectWorkspace.js.map +1 -0
- package/dist/care/care.css +215 -0
- package/dist/care/index.d.ts +16 -0
- package/dist/care/index.d.ts.map +1 -0
- package/dist/care/index.js +16 -0
- package/dist/care/index.js.map +1 -0
- package/dist/care/notification-bff-client.d.ts +44 -0
- package/dist/care/notification-bff-client.d.ts.map +1 -0
- package/dist/care/notification-bff-client.js +89 -0
- package/dist/care/notification-bff-client.js.map +1 -0
- package/dist/clinical/BrowserClinicalSpeechInput.d.ts +25 -0
- package/dist/clinical/BrowserClinicalSpeechInput.d.ts.map +1 -0
- package/dist/clinical/BrowserClinicalSpeechInput.js +32 -0
- package/dist/clinical/BrowserClinicalSpeechInput.js.map +1 -0
- package/dist/clinical/ClinicalActionButton.d.ts +9 -0
- package/dist/clinical/ClinicalActionButton.d.ts.map +1 -0
- package/dist/clinical/ClinicalActionButton.js +13 -0
- package/dist/clinical/ClinicalActionButton.js.map +1 -0
- package/dist/clinical/ClinicalArtifactEditor.d.ts +147 -0
- package/dist/clinical/ClinicalArtifactEditor.d.ts.map +1 -0
- package/dist/clinical/ClinicalArtifactEditor.js +382 -0
- package/dist/clinical/ClinicalArtifactEditor.js.map +1 -0
- package/dist/clinical/ClinicalArtifactEditorV2.d.ts +77 -0
- package/dist/clinical/ClinicalArtifactEditorV2.d.ts.map +1 -0
- package/dist/clinical/ClinicalArtifactEditorV2.js +89 -0
- package/dist/clinical/ClinicalArtifactEditorV2.js.map +1 -0
- package/dist/clinical/ClinicalArtifactPropertiesV2.d.ts +83 -0
- package/dist/clinical/ClinicalArtifactPropertiesV2.d.ts.map +1 -0
- package/dist/clinical/ClinicalArtifactPropertiesV2.js +46 -0
- package/dist/clinical/ClinicalArtifactPropertiesV2.js.map +1 -0
- package/dist/clinical/ClinicalBundleDraftEditor.d.ts +99 -0
- package/dist/clinical/ClinicalBundleDraftEditor.d.ts.map +1 -0
- package/dist/clinical/ClinicalBundleDraftEditor.js +225 -0
- package/dist/clinical/ClinicalBundleDraftEditor.js.map +1 -0
- package/dist/clinical/ClinicalEditorLayer.d.ts +8 -0
- package/dist/clinical/ClinicalEditorLayer.d.ts.map +1 -0
- package/dist/clinical/ClinicalEditorLayer.js +12 -0
- package/dist/clinical/ClinicalEditorLayer.js.map +1 -0
- package/dist/clinical/ClinicalSectionSummary.d.ts +36 -0
- package/dist/clinical/ClinicalSectionSummary.d.ts.map +1 -0
- package/dist/clinical/ClinicalSectionSummary.js +24 -0
- package/dist/clinical/ClinicalSectionSummary.js.map +1 -0
- package/dist/clinical/ClinicalSpeechInput.d.ts +58 -0
- package/dist/clinical/ClinicalSpeechInput.d.ts.map +1 -0
- package/dist/clinical/ClinicalSpeechInput.js +84 -0
- package/dist/clinical/ClinicalSpeechInput.js.map +1 -0
- package/dist/clinical/ClinicalTimeline.d.ts +52 -0
- package/dist/clinical/ClinicalTimeline.d.ts.map +1 -0
- package/dist/clinical/ClinicalTimeline.js +48 -0
- package/dist/clinical/ClinicalTimeline.js.map +1 -0
- package/dist/clinical/ImmunizationArtifactEditorV2.d.ts +15 -0
- package/dist/clinical/ImmunizationArtifactEditorV2.d.ts.map +1 -0
- package/dist/clinical/ImmunizationArtifactEditorV2.js +62 -0
- package/dist/clinical/ImmunizationArtifactEditorV2.js.map +1 -0
- package/dist/clinical/IpsBundleSummary.d.ts +34 -0
- package/dist/clinical/IpsBundleSummary.d.ts.map +1 -0
- package/dist/clinical/IpsBundleSummary.js +75 -0
- package/dist/clinical/IpsBundleSummary.js.map +1 -0
- package/dist/clinical/SchemaClinicalArtifactEditorV2.d.ts +11 -0
- package/dist/clinical/SchemaClinicalArtifactEditorV2.d.ts.map +1 -0
- package/dist/clinical/SchemaClinicalArtifactEditorV2.js +62 -0
- package/dist/clinical/SchemaClinicalArtifactEditorV2.js.map +1 -0
- package/dist/clinical/clinical.css +148 -0
- package/dist/clinical/index.d.ts +14 -0
- package/dist/clinical/index.d.ts.map +1 -0
- package/dist/clinical/index.js +14 -0
- package/dist/clinical/index.js.map +1 -0
- package/dist/identity/AnimalIdentityDetailsV2.d.ts +43 -0
- package/dist/identity/AnimalIdentityDetailsV2.d.ts.map +1 -0
- package/dist/identity/AnimalIdentityDetailsV2.js +9 -0
- package/dist/identity/AnimalIdentityDetailsV2.js.map +1 -0
- package/dist/identity/AnimalIdentityOnboarding.d.ts +91 -0
- package/dist/identity/AnimalIdentityOnboarding.d.ts.map +1 -0
- package/dist/identity/AnimalIdentityOnboarding.js +73 -0
- package/dist/identity/AnimalIdentityOnboarding.js.map +1 -0
- package/dist/identity/AnimalIdentityOnboardingV2.d.ts +56 -0
- package/dist/identity/AnimalIdentityOnboardingV2.d.ts.map +1 -0
- package/dist/identity/AnimalIdentityOnboardingV2.js +174 -0
- package/dist/identity/AnimalIdentityOnboardingV2.js.map +1 -0
- package/dist/identity/current-subject.css +11 -0
- package/dist/identity/identity.css +64 -0
- package/dist/identity/index.d.ts +9 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +10 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/preferences.d.ts +12 -0
- package/dist/preferences.d.ts.map +1 -0
- package/dist/preferences.js +57 -0
- package/dist/preferences.js.map +1 -0
- package/dist/styles.css +24 -0
- package/dist/usePortalUiPreferences.d.ts +9 -0
- package/dist/usePortalUiPreferences.d.ts.map +1 -0
- package/dist/usePortalUiPreferences.js +39 -0
- package/dist/usePortalUiPreferences.js.map +1 -0
- package/package.json +20 -4
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export type AnimalIdentityDetailsV2Copy = Readonly<{
|
|
3
|
+
animalStep: string;
|
|
4
|
+
controllerStep: string;
|
|
5
|
+
animalName: string;
|
|
6
|
+
species: string;
|
|
7
|
+
identifierType: string;
|
|
8
|
+
identifierValue: string;
|
|
9
|
+
controllerName: string;
|
|
10
|
+
relationship: string;
|
|
11
|
+
edit?: string;
|
|
12
|
+
jurisdiction?: string;
|
|
13
|
+
legalIdentifier?: string;
|
|
14
|
+
officialAddress?: string;
|
|
15
|
+
telephone?: string;
|
|
16
|
+
email?: string;
|
|
17
|
+
source?: string;
|
|
18
|
+
}>;
|
|
19
|
+
export type AnimalIdentityDetailsV2Value = Readonly<{
|
|
20
|
+
animalName: string;
|
|
21
|
+
species: string;
|
|
22
|
+
identifierType: string;
|
|
23
|
+
identifierValue: string;
|
|
24
|
+
animalPhotoUrl?: string;
|
|
25
|
+
animalPhotoAlt?: string;
|
|
26
|
+
controllerName: string;
|
|
27
|
+
relationship: string;
|
|
28
|
+
controllerKind?: 'person' | 'organization';
|
|
29
|
+
controllerJurisdiction?: string;
|
|
30
|
+
controllerIdentifier?: string;
|
|
31
|
+
controllerOfficialAddress?: string;
|
|
32
|
+
controllerTelephone?: string;
|
|
33
|
+
controllerEmail?: string;
|
|
34
|
+
controllerSource?: string;
|
|
35
|
+
}>;
|
|
36
|
+
/** Read-only counterpart of AnimalIdentityOnboardingV2 using the same progressive sections. */
|
|
37
|
+
export declare function AnimalIdentityDetailsV2({ copy, value, onEdit, actions }: Readonly<{
|
|
38
|
+
copy: AnimalIdentityDetailsV2Copy;
|
|
39
|
+
value: AnimalIdentityDetailsV2Value;
|
|
40
|
+
onEdit?: () => void;
|
|
41
|
+
actions?: ReactNode;
|
|
42
|
+
}>): import("react").JSX.Element;
|
|
43
|
+
//# sourceMappingURL=AnimalIdentityDetailsV2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimalIdentityDetailsV2.d.ts","sourceRoot":"","sources":["../../src/identity/AnimalIdentityDetailsV2.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAAC;IACjD,UAAU,EAAC,MAAM,CAAC;IAAC,cAAc,EAAC,MAAM,CAAC;IAAC,UAAU,EAAC,MAAM,CAAC;IAAC,OAAO,EAAC,MAAM,CAAC;IAAC,cAAc,EAAC,MAAM,CAAC;IAAC,eAAe,EAAC,MAAM,CAAC;IAAC,cAAc,EAAC,MAAM,CAAC;IAAC,YAAY,EAAC,MAAM,CAAC;IAAC,IAAI,CAAC,EAAC,MAAM,CAAA;IACpL,YAAY,CAAC,EAAC,MAAM,CAAC;IAAC,eAAe,CAAC,EAAC,MAAM,CAAC;IAAC,eAAe,CAAC,EAAC,MAAM,CAAC;IAAC,SAAS,CAAC,EAAC,MAAM,CAAC;IAAC,KAAK,CAAC,EAAC,MAAM,CAAC;IAAC,MAAM,CAAC,EAAC,MAAM,CAAA;CACzH,CAAC,CAAA;AACF,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAClD,UAAU,EAAC,MAAM,CAAC;IAAC,OAAO,EAAC,MAAM,CAAC;IAAC,cAAc,EAAC,MAAM,CAAC;IAAC,eAAe,EAAC,MAAM,CAAC;IAAC,cAAc,CAAC,EAAC,MAAM,CAAC;IAAC,cAAc,CAAC,EAAC,MAAM,CAAA;IAChI,cAAc,EAAC,MAAM,CAAC;IAAC,YAAY,EAAC,MAAM,CAAC;IAAC,cAAc,CAAC,EAAC,QAAQ,GAAC,cAAc,CAAC;IAAC,sBAAsB,CAAC,EAAC,MAAM,CAAC;IAAC,oBAAoB,CAAC,EAAC,MAAM,CAAA;IACjJ,yBAAyB,CAAC,EAAC,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAC,MAAM,CAAC;IAAC,eAAe,CAAC,EAAC,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAC,MAAM,CAAA;CAClH,CAAC,CAAA;AAEF,+FAA+F;AAC/F,wBAAgB,uBAAuB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC;IAAE,IAAI,EAAC,2BAA2B,CAAC;IAAC,KAAK,EAAC,4BAA4B,CAAC;IAAC,MAAM,CAAC,EAAC,MAAI,IAAI,CAAC;IAAC,OAAO,CAAC,EAAC,SAAS,CAAA;CAAE,CAAC,+BAMjM"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/** Read-only counterpart of AnimalIdentityOnboardingV2 using the same progressive sections. */
|
|
3
|
+
export function AnimalIdentityDetailsV2({ copy, value, onEdit, actions }) {
|
|
4
|
+
return _jsxs("section", { className: "uhcp-animal-onboarding uhcp-animal-onboarding-v2 uhcp-animal-identity-details-v2", children: [_jsxs("details", { children: [_jsxs("summary", { children: [_jsx(StepNumber, { value: 1 }), " ", copy.animalStep] }), _jsxs("div", { className: "uhcp-animal-identity-readonly", children: [_jsx(_Fragment, { children: value.animalPhotoUrl ? _jsx("img", { className: "uhcp-animal-identity-photo", src: value.animalPhotoUrl, alt: value.animalPhotoAlt ?? value.animalName }) : null }), _jsxs("dl", { className: "uhcp-animal-identity-readonly-grid", children: [_jsx(Fact, { label: copy.animalName, value: value.animalName }), _jsx(Fact, { label: copy.species, value: value.species }), _jsx(Fact, { label: copy.identifierType, value: value.identifierType }), _jsx(Fact, { label: copy.identifierValue, value: value.identifierValue })] })] })] }), _jsxs("details", { children: [_jsxs("summary", { children: [_jsx(StepNumber, { value: 2 }), " ", copy.controllerStep] }), _jsxs("dl", { className: "uhcp-animal-identity-readonly-grid", children: [_jsx(Fact, { label: copy.controllerName, value: value.controllerName }), _jsx(Fact, { label: copy.relationship, value: value.relationship }), _jsx(OptionalFact, { label: copy.jurisdiction, value: value.controllerJurisdiction }), _jsx(OptionalFact, { label: copy.legalIdentifier, value: value.controllerIdentifier }), _jsx(OptionalFact, { label: copy.officialAddress, value: value.controllerOfficialAddress }), _jsx(OptionalFact, { label: copy.telephone, value: value.controllerTelephone }), _jsx(OptionalFact, { label: copy.email, value: value.controllerEmail }), _jsx(OptionalFact, { label: copy.source, value: value.controllerSource })] })] }), onEdit || actions ? _jsxs("div", { className: "uhcp-animal-onboarding-actions", children: [actions, onEdit ? _jsx("button", { type: "button", onClick: onEdit, "aria-label": copy.edit, title: copy.edit, children: copy.edit }) : null] }) : null] });
|
|
5
|
+
}
|
|
6
|
+
function StepNumber({ value }) { return _jsx("span", { className: "uhcp-identity-step-number", "aria-hidden": "true", children: value }); }
|
|
7
|
+
function Fact({ label, value }) { return _jsxs("div", { children: [_jsx("dt", { children: label }), _jsx("dd", { children: value })] }); }
|
|
8
|
+
function OptionalFact({ label, value }) { return label && value ? _jsx(Fact, { label: label, value: value }) : null; }
|
|
9
|
+
//# sourceMappingURL=AnimalIdentityDetailsV2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimalIdentityDetailsV2.js","sourceRoot":"","sources":["../../src/identity/AnimalIdentityDetailsV2.tsx"],"names":[],"mappings":";AAaA,+FAA+F;AAC/F,MAAM,UAAU,uBAAuB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAA4H;IAChM,OAAO,mBAAS,SAAS,EAAC,kFAAkF,aAC1G,8BAAS,8BAAS,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,GAAG,OAAE,IAAI,CAAC,UAAU,IAAW,EAAA,eAAK,SAAS,EAAC,+BAA+B,aAAC,4BAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,4BAA4B,EAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,GAAI,EAAA,cAAI,SAAS,EAAC,oCAAoC,aAAC,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,EAAA,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,GAAG,EAAA,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,EAAA,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,eAAe,GAAG,IAAK,IAAM,IAAU,EACpkB,8BAAS,8BAAS,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,GAAG,OAAE,IAAI,CAAC,cAAc,IAAW,EAAA,cAAI,SAAS,EAAC,oCAAoC,aAAC,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,EAAA,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,GAAG,EAAA,KAAC,YAAY,IAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,sBAAsB,GAAG,EAAA,KAAC,YAAY,IAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,oBAAoB,GAAG,EAAA,KAAC,YAAY,IAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,yBAAyB,GAAG,EAAA,KAAC,YAAY,IAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,mBAAmB,GAAG,EAAA,KAAC,YAAY,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,eAAe,GAAG,EAAA,KAAC,YAAY,IAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,gBAAgB,GAAG,IAAK,IAAU,EACjsB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,eAAK,SAAS,EAAC,gCAAgC,aAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,MAAM,gBAAc,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,YAAG,IAAI,CAAC,IAAI,GAAU,CAAC,CAAC,CAAC,IAAI,IAAO,CAAC,CAAC,CAAC,IAAI,IACzM,CAAA;AACZ,CAAC;AACD,SAAS,UAAU,CAAC,EAAE,KAAK,EAA2B,IAAI,OAAO,eAAM,SAAS,EAAC,2BAA2B,iBAAa,MAAM,YAAE,KAAK,GAAQ,CAAA,CAAC,CAAC;AAChJ,SAAS,IAAI,CAAC,EAAE,KAAK,EAAC,KAAK,EAAwC,IAAI,OAAO,0BAAK,uBAAK,KAAK,GAAM,EAAA,uBAAK,KAAK,GAAM,IAAM,CAAA,CAAC,CAAC;AAC3H,SAAS,YAAY,CAAC,EAAE,KAAK,EAAC,KAAK,EAAkE,IAAI,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA,CAAC,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { IdentityEvidenceStatus } from 'antifraud-portal-components-react/identity-evidence-workspace';
|
|
2
|
+
export type AnimalControllerRelationship = 'owner' | 'caregiver';
|
|
3
|
+
export type AnimalIdentityOnboardingInput = Readonly<{
|
|
4
|
+
animalName: string;
|
|
5
|
+
taxonomyId: string;
|
|
6
|
+
birthDate?: string | undefined;
|
|
7
|
+
sex: 'female' | 'male' | 'other' | 'unknown';
|
|
8
|
+
identifierSystem: string;
|
|
9
|
+
identifierValue: string;
|
|
10
|
+
controllerLegalName: string;
|
|
11
|
+
controllerIdentifierType: string;
|
|
12
|
+
controllerIdentifierValue: string;
|
|
13
|
+
controllerCountry: string;
|
|
14
|
+
controllerKind?: 'person' | 'organization';
|
|
15
|
+
controllerRegion?: string | undefined;
|
|
16
|
+
controllerEmail?: string | undefined;
|
|
17
|
+
controllerTelephone?: string | undefined;
|
|
18
|
+
verificationMethod?: 'pipp' | 'sripp' | 'eid' | 'uripp';
|
|
19
|
+
relationship: AnimalControllerRelationship;
|
|
20
|
+
ownerDocument?: File | undefined;
|
|
21
|
+
animalDocument: File;
|
|
22
|
+
relationshipDocument?: File | undefined;
|
|
23
|
+
controllerPin?: string;
|
|
24
|
+
}>;
|
|
25
|
+
export type AnimalIdentityOnboardingCopy = Readonly<{
|
|
26
|
+
title: string;
|
|
27
|
+
intro: string;
|
|
28
|
+
animalStep: string;
|
|
29
|
+
controllerStep: string;
|
|
30
|
+
evidenceStep: string;
|
|
31
|
+
animalName: string;
|
|
32
|
+
taxonomyId: string;
|
|
33
|
+
birthDate: string;
|
|
34
|
+
sex: string;
|
|
35
|
+
sexUnknown: string;
|
|
36
|
+
sexFemale: string;
|
|
37
|
+
sexMale: string;
|
|
38
|
+
sexOther: string;
|
|
39
|
+
identifierSystem: string;
|
|
40
|
+
identifierValue: string;
|
|
41
|
+
controllerLegalName: string;
|
|
42
|
+
controllerIdentifierType: string;
|
|
43
|
+
controllerIdentifierValue: string;
|
|
44
|
+
controllerCountry: string;
|
|
45
|
+
relationship: string;
|
|
46
|
+
owner: string;
|
|
47
|
+
caregiver: string;
|
|
48
|
+
ownerDocument: string;
|
|
49
|
+
animalDocument: string;
|
|
50
|
+
relationshipDocument: string;
|
|
51
|
+
controllerPin?: string;
|
|
52
|
+
submit: string;
|
|
53
|
+
}>;
|
|
54
|
+
/**
|
|
55
|
+
* Brand-neutral animal identity and controller-evidence editor recovered from
|
|
56
|
+
* the progressive VetChain Expo journey. The host persists and verifies the
|
|
57
|
+
* result; this component never grants authority or marks evidence verified.
|
|
58
|
+
*/
|
|
59
|
+
export declare function AnimalIdentityOnboarding({ copy, onSubmit, submitAction, speciesOptions, busy }: Readonly<{
|
|
60
|
+
copy: AnimalIdentityOnboardingCopy;
|
|
61
|
+
onSubmit: (input: AnimalIdentityOnboardingInput) => Promise<void> | void;
|
|
62
|
+
submitAction?: string;
|
|
63
|
+
speciesOptions?: readonly Readonly<{
|
|
64
|
+
taxonomyId: string;
|
|
65
|
+
label: string;
|
|
66
|
+
}>[];
|
|
67
|
+
busy?: boolean;
|
|
68
|
+
}>): import("react").JSX.Element;
|
|
69
|
+
export type SubjectIdentityCardSubject = Readonly<{
|
|
70
|
+
displayName: string;
|
|
71
|
+
kind: 'person' | 'animal';
|
|
72
|
+
imageUrl?: string;
|
|
73
|
+
facts: readonly Readonly<{
|
|
74
|
+
label: string;
|
|
75
|
+
value: string;
|
|
76
|
+
}>[];
|
|
77
|
+
}>;
|
|
78
|
+
/** Capability-aware readback. Values and status must come from the provider. */
|
|
79
|
+
export declare function SubjectIdentityCard({ subject, relationship, statusLabels, editLabel, canEdit, onEdit }: Readonly<{
|
|
80
|
+
subject: SubjectIdentityCardSubject;
|
|
81
|
+
relationship?: Readonly<{
|
|
82
|
+
label: string;
|
|
83
|
+
displayName: string;
|
|
84
|
+
status: IdentityEvidenceStatus;
|
|
85
|
+
}>;
|
|
86
|
+
statusLabels: Readonly<Record<IdentityEvidenceStatus, string>>;
|
|
87
|
+
editLabel?: string;
|
|
88
|
+
canEdit?: boolean;
|
|
89
|
+
onEdit?: () => void;
|
|
90
|
+
}>): import("react").JSX.Element;
|
|
91
|
+
//# sourceMappingURL=AnimalIdentityOnboarding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimalIdentityOnboarding.d.ts","sourceRoot":"","sources":["../../src/identity/AnimalIdentityOnboarding.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* Brand-neutral animal identity and controller-evidence editor recovered from
|
|
5
|
+
* the progressive VetChain Expo journey. The host persists and verifies the
|
|
6
|
+
* result; this component never grants authority or marks evidence verified.
|
|
7
|
+
*/
|
|
8
|
+
export function AnimalIdentityOnboarding({ copy, onSubmit, submitAction, speciesOptions = [], busy = false }) {
|
|
9
|
+
const [submitting, setSubmitting] = useState(false);
|
|
10
|
+
async function submit(event) {
|
|
11
|
+
event.preventDefault();
|
|
12
|
+
const formElement = event.currentTarget;
|
|
13
|
+
const form = new FormData(formElement);
|
|
14
|
+
const ownerDocument = requiredFile(formElement, 'ownerDocument');
|
|
15
|
+
const animalDocument = requiredFile(formElement, 'animalDocument');
|
|
16
|
+
const relationshipDocument = requiredFile(formElement, 'relationshipDocument');
|
|
17
|
+
setSubmitting(true);
|
|
18
|
+
try {
|
|
19
|
+
await onSubmit({
|
|
20
|
+
animalName: requiredText(form, 'animalName'),
|
|
21
|
+
taxonomyId: requiredText(form, 'taxonomyId'),
|
|
22
|
+
birthDate: optionalText(form, 'birthDate'),
|
|
23
|
+
sex: requiredText(form, 'sex'),
|
|
24
|
+
identifierSystem: requiredText(form, 'identifierSystem'),
|
|
25
|
+
identifierValue: requiredText(form, 'identifierValue'),
|
|
26
|
+
controllerLegalName: requiredText(form, 'controllerLegalName'),
|
|
27
|
+
controllerIdentifierType: requiredText(form, 'controllerIdentifierType'),
|
|
28
|
+
controllerIdentifierValue: requiredText(form, 'controllerIdentifierValue'),
|
|
29
|
+
controllerCountry: requiredText(form, 'controllerCountry').toUpperCase(),
|
|
30
|
+
relationship: requiredText(form, 'relationship'),
|
|
31
|
+
ownerDocument,
|
|
32
|
+
animalDocument,
|
|
33
|
+
relationshipDocument,
|
|
34
|
+
controllerPin: requiredText(form, 'controllerPin'),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
setSubmitting(false);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const disabled = busy || submitting;
|
|
42
|
+
return _jsxs("section", { className: "uhcp-animal-onboarding", "aria-labelledby": "animal-identity-onboarding-title", children: [_jsxs("header", { children: [_jsx("h2", { id: "animal-identity-onboarding-title", children: copy.title }), _jsx("p", { children: copy.intro })] }), _jsxs("form", { onSubmit: submit, children: [_jsxs("fieldset", { children: [_jsxs("legend", { children: [_jsx(StepNumber, { value: 1 }), " ", copy.animalStep] }), _jsxs("div", { className: "uhcp-animal-onboarding-fields", children: [_jsxs("label", { children: [copy.animalName, _jsx("input", { name: "animalName", required: true, maxLength: 80 })] }), _jsxs("label", { children: [copy.taxonomyId, speciesOptions.length > 0
|
|
43
|
+
? _jsx("select", { name: "taxonomyId", required: true, defaultValue: speciesOptions[0]?.taxonomyId, children: speciesOptions.map(option => _jsx("option", { value: option.taxonomyId, children: option.label }, option.taxonomyId)) })
|
|
44
|
+
: _jsx("input", { name: "taxonomyId", required: true, inputMode: "numeric", pattern: "[1-9][0-9]{0,6}", defaultValue: "9615" })] }), _jsxs("label", { children: [copy.birthDate, _jsx("input", { name: "birthDate", type: "date" })] }), _jsxs("label", { children: [copy.sex, _jsxs("select", { name: "sex", defaultValue: "unknown", children: [_jsx("option", { value: "unknown", children: copy.sexUnknown }), _jsx("option", { value: "female", children: copy.sexFemale }), _jsx("option", { value: "male", children: copy.sexMale }), _jsx("option", { value: "other", children: copy.sexOther })] })] }), _jsxs("label", { children: [copy.identifierSystem, _jsxs("select", { name: "identifierSystem", defaultValue: "urn:iso:std:iso:11784:11785", children: [_jsx("option", { value: "urn:iso:std:iso:11784:11785", children: "Microchip (ISO 11784/11785)" }), _jsx("option", { value: "https://europa.eu/pet-passport", children: "EU pet passport" }), _jsx("option", { value: "https://vetchain.app/identifier/tattoo", children: "Tattoo" })] })] }), _jsxs("label", { children: [copy.identifierValue, _jsx("input", { name: "identifierValue", required: true, maxLength: 80, autoComplete: "off" })] })] })] }), _jsxs("fieldset", { children: [_jsxs("legend", { children: [_jsx(StepNumber, { value: 2 }), " ", copy.controllerStep] }), _jsxs("div", { className: "uhcp-animal-onboarding-fields", children: [_jsxs("label", { children: [copy.controllerLegalName, _jsx("input", { name: "controllerLegalName", required: true, maxLength: 160, autoComplete: "name" })] }), _jsxs("label", { children: [copy.controllerIdentifierType, _jsx("input", { name: "controllerIdentifierType", required: true, defaultValue: "national_identity_card", maxLength: 80 })] }), _jsxs("label", { children: [copy.controllerIdentifierValue, _jsx("input", { name: "controllerIdentifierValue", required: true, maxLength: 120, autoComplete: "off" })] }), _jsxs("label", { children: [copy.controllerCountry, _jsx("input", { name: "controllerCountry", required: true, pattern: "[A-Za-z]{2}", maxLength: 2, autoComplete: "country" })] }), _jsxs("label", { children: [copy.relationship, _jsxs("select", { name: "relationship", defaultValue: "owner", children: [_jsx("option", { value: "owner", children: copy.owner }), _jsx("option", { value: "caregiver", children: copy.caregiver })] })] })] })] }), _jsxs("fieldset", { children: [_jsxs("legend", { children: [_jsx(StepNumber, { value: 3 }), " ", copy.evidenceStep] }), _jsxs("div", { className: "uhcp-animal-onboarding-fields", children: [_jsxs("label", { children: [copy.ownerDocument, _jsx("input", { name: "ownerDocument", type: "file", accept: "application/pdf,image/jpeg,image/png", required: true })] }), _jsxs("label", { children: [copy.animalDocument, _jsx("input", { name: "animalDocument", type: "file", accept: "application/pdf,image/jpeg,image/png", required: true })] }), _jsxs("label", { children: [copy.relationshipDocument, _jsx("input", { name: "relationshipDocument", type: "file", accept: "application/pdf,image/jpeg,image/png", required: true })] }), _jsxs("label", { children: [copy.controllerPin, _jsx("input", { name: "controllerPin", type: "password", inputMode: "numeric", pattern: "[0-9]{6,12}", required: true, autoComplete: "new-password" })] })] })] }), _jsx("button", { type: "submit", className: "uhcp-animal-onboarding-submit", "data-portal-action": submitAction, disabled: disabled, children: copy.submit })] })] });
|
|
45
|
+
}
|
|
46
|
+
/** Capability-aware readback. Values and status must come from the provider. */
|
|
47
|
+
export function SubjectIdentityCard({ subject, relationship, statusLabels, editLabel, canEdit = false, onEdit }) {
|
|
48
|
+
const initial = subject.displayName.trim().slice(0, 1).toUpperCase() || '•';
|
|
49
|
+
return _jsxs("article", { className: "uhcp-subject-identity-card", children: [_jsxs("header", { children: [subject.imageUrl
|
|
50
|
+
? _jsx("img", { src: subject.imageUrl, alt: "" })
|
|
51
|
+
: _jsx("span", { className: "uhcp-subject-identity-avatar", "aria-hidden": "true", children: initial }), _jsxs("div", { children: [_jsx("small", { children: subject.kind }), _jsx("h3", { children: subject.displayName })] }), canEdit && onEdit && editLabel ? _jsx("button", { className: "uhcp-subject-identity-edit", type: "button", "aria-label": editLabel, title: editLabel, onClick: onEdit, children: _jsx("span", { "aria-hidden": "true", children: "\u270E" }) }) : null] }), _jsx("dl", { children: subject.facts.map(fact => _jsxs("div", { children: [_jsx("dt", { children: fact.label }), _jsx("dd", { children: fact.value })] }, `${fact.label}:${fact.value}`)) }), relationship ? _jsxs("section", { className: "uhcp-subject-identity-relationship", children: [_jsx("span", { children: relationship.label }), _jsx("strong", { children: relationship.displayName }), _jsx("small", { className: `uhcp-identity-status uhcp-identity-status-${relationship.status}`, children: statusLabels[relationship.status] })] }) : null] });
|
|
52
|
+
}
|
|
53
|
+
function StepNumber({ value }) {
|
|
54
|
+
return _jsx("span", { className: "uhcp-identity-step-number", "aria-hidden": "true", children: value });
|
|
55
|
+
}
|
|
56
|
+
function requiredText(form, name) {
|
|
57
|
+
const value = form.get(name);
|
|
58
|
+
if (typeof value !== 'string' || !value.trim())
|
|
59
|
+
throw new Error(`animal_identity_${name}_required`);
|
|
60
|
+
return value.trim();
|
|
61
|
+
}
|
|
62
|
+
function optionalText(form, name) {
|
|
63
|
+
const value = form.get(name);
|
|
64
|
+
return typeof value === 'string' && value.trim() ? value.trim() : undefined;
|
|
65
|
+
}
|
|
66
|
+
function requiredFile(form, name) {
|
|
67
|
+
const input = form.elements.namedItem(name);
|
|
68
|
+
const value = input instanceof HTMLInputElement ? input.files?.[0] : undefined;
|
|
69
|
+
if (!value || value.size < 1)
|
|
70
|
+
throw new Error(`animal_identity_${name}_required`);
|
|
71
|
+
return value;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=AnimalIdentityOnboarding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimalIdentityOnboarding.js","sourceRoot":"","sources":["../../src/identity/AnimalIdentityOnboarding.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { AnimalIdentityOnboardingCopy, AnimalIdentityOnboardingInput } from './AnimalIdentityOnboarding.js';
|
|
3
|
+
export type AnimalIdentityOnboardingV2Copy = AnimalIdentityOnboardingCopy & Readonly<{
|
|
4
|
+
controllerIsLegalRepresentative: string;
|
|
5
|
+
animalPreview: string;
|
|
6
|
+
addAnimalPhoto: string;
|
|
7
|
+
removeAnimalPhoto: string;
|
|
8
|
+
photoHelp: string;
|
|
9
|
+
photoTooLarge: string;
|
|
10
|
+
photoDimensionsInvalid: string;
|
|
11
|
+
ownerKind: string;
|
|
12
|
+
responsibleParty?: string;
|
|
13
|
+
personOwner: string;
|
|
14
|
+
organizationOwner: string;
|
|
15
|
+
regionalIdentifier: string;
|
|
16
|
+
controllerRegion: string;
|
|
17
|
+
controllerEmail: string;
|
|
18
|
+
controllerTelephone: string;
|
|
19
|
+
contactRequired: string;
|
|
20
|
+
verificationMethod: string;
|
|
21
|
+
physicalInPerson: string;
|
|
22
|
+
supervisedRemote: string;
|
|
23
|
+
electronicId: string;
|
|
24
|
+
unsupervisedRemote: string;
|
|
25
|
+
countryPlaceholder?: string;
|
|
26
|
+
}>;
|
|
27
|
+
type SelectOption = Readonly<{
|
|
28
|
+
value: string;
|
|
29
|
+
label: string;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Progressive animal onboarding presentation. It preserves the V1 payload so
|
|
33
|
+
* hosts can adopt it without changing evidence, authorization or persistence.
|
|
34
|
+
*/
|
|
35
|
+
export declare function AnimalIdentityOnboardingV2({ copy, onSubmit, submitAction, speciesOptions, countryOptions, regionOptionsByCountry, identifierTypeOptions, showHeader, requireEmail, requireTelephone, busy, footerActions }: Readonly<{
|
|
36
|
+
copy: AnimalIdentityOnboardingV2Copy;
|
|
37
|
+
onSubmit: (input: AnimalIdentityOnboardingInput) => Promise<void> | void;
|
|
38
|
+
submitAction?: string;
|
|
39
|
+
speciesOptions?: readonly Readonly<{
|
|
40
|
+
taxonomyId: string;
|
|
41
|
+
label: string;
|
|
42
|
+
}>[];
|
|
43
|
+
countryOptions?: readonly SelectOption[];
|
|
44
|
+
regionOptionsByCountry?: Readonly<Record<string, readonly SelectOption[]>>;
|
|
45
|
+
identifierTypeOptions?: Readonly<{
|
|
46
|
+
person: readonly SelectOption[];
|
|
47
|
+
organization: readonly SelectOption[];
|
|
48
|
+
}>;
|
|
49
|
+
showHeader?: boolean;
|
|
50
|
+
requireEmail?: boolean;
|
|
51
|
+
requireTelephone?: boolean;
|
|
52
|
+
busy?: boolean;
|
|
53
|
+
footerActions?: ReactNode;
|
|
54
|
+
}>): import("react").JSX.Element;
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=AnimalIdentityOnboardingV2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimalIdentityOnboardingV2.d.ts","sourceRoot":"","sources":["../../src/identity/AnimalIdentityOnboardingV2.tsx"],"names":[],"mappings":"AACA,OAAO,EAA+C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACnF,OAAO,KAAK,EAEV,4BAA4B,EAC5B,6BAA6B,EAC9B,MAAM,+BAA+B,CAAA;AAGtC,MAAM,MAAM,8BAA8B,GAAG,4BAA4B,GAAG,QAAQ,CAAC;IACnF,+BAA+B,EAAE,MAAM,CAAA;IACvC,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAC,CAAA;AAEF,KAAK,YAAY,GAAG,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAG9D;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAmB,EAAE,cAAmB,EAAE,sBAA2B,EAAE,qBAAqB,EAAE,UAAiB,EAAE,YAAoB,EAAE,gBAAwB,EAAE,IAAY,EAAE,aAAa,EAAE,EAAE,QAAQ,CAAC;IAClR,IAAI,EAAE,8BAA8B,CAAA;IACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACxE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,SAAS,QAAQ,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAA;IAC3E,cAAc,CAAC,EAAE,SAAS,YAAY,EAAE,CAAA;IACxC,sBAAsB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC,CAAC,CAAA;IAC1E,qBAAqB,CAAC,EAAE,QAAQ,CAAC;QAAE,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;QAAC,YAAY,EAAE,SAAS,YAAY,EAAE,CAAA;KAAE,CAAC,CAAA;IAC5G,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,aAAa,CAAC,EAAE,SAAS,CAAA;CAC1B,CAAC,+BA4ID"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// Copyright 2026 Connecting Solution & Applications Ltd under the Apache License, Version 2.0.
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { IdentityEntityEditorV2 } from 'antifraud-portal-components-react/identity-entity-editor-v2';
|
|
5
|
+
const MAX_ANIMAL_PHOTO_BYTES = 2 * 1024 * 1024;
|
|
6
|
+
/**
|
|
7
|
+
* Progressive animal onboarding presentation. It preserves the V1 payload so
|
|
8
|
+
* hosts can adopt it without changing evidence, authorization or persistence.
|
|
9
|
+
*/
|
|
10
|
+
export function AnimalIdentityOnboardingV2({ copy, onSubmit, submitAction, speciesOptions = [], countryOptions = [], regionOptionsByCountry = {}, identifierTypeOptions, showHeader = true, requireEmail = false, requireTelephone = false, busy = false, footerActions }) {
|
|
11
|
+
const formRef = useRef(null);
|
|
12
|
+
const [submitting, setSubmitting] = useState(false);
|
|
13
|
+
const [animalName, setAnimalName] = useState('');
|
|
14
|
+
const [previewUrl, setPreviewUrl] = useState('');
|
|
15
|
+
const [animalDocument, setAnimalDocument] = useState();
|
|
16
|
+
const [photoError, setPhotoError] = useState('');
|
|
17
|
+
const [contactError, setContactError] = useState('');
|
|
18
|
+
const [formReady, setFormReady] = useState(false);
|
|
19
|
+
function refreshFormReady(formElement = formRef.current) {
|
|
20
|
+
if (!formElement)
|
|
21
|
+
return setFormReady(false);
|
|
22
|
+
const form = new FormData(formElement);
|
|
23
|
+
const hasContact = Boolean(optionalText(form, 'controllerEmail') || optionalText(form, 'controllerTelephone'));
|
|
24
|
+
setFormReady(formElement.checkValidity() && hasContact && Boolean(animalDocument));
|
|
25
|
+
}
|
|
26
|
+
useEffect(() => { refreshFormReady(); }, [animalDocument]);
|
|
27
|
+
useEffect(() => () => {
|
|
28
|
+
if (previewUrl.startsWith('blob:'))
|
|
29
|
+
URL.revokeObjectURL(previewUrl);
|
|
30
|
+
}, [previewUrl]);
|
|
31
|
+
async function previewAnimal(file) {
|
|
32
|
+
if (previewUrl.startsWith('blob:'))
|
|
33
|
+
URL.revokeObjectURL(previewUrl);
|
|
34
|
+
setPhotoError('');
|
|
35
|
+
if (!file?.type.startsWith('image/')) {
|
|
36
|
+
setAnimalDocument(undefined);
|
|
37
|
+
return setPreviewUrl('');
|
|
38
|
+
}
|
|
39
|
+
if (file.size > MAX_ANIMAL_PHOTO_BYTES) {
|
|
40
|
+
setAnimalDocument(undefined);
|
|
41
|
+
setPreviewUrl('');
|
|
42
|
+
return setPhotoError(copy.photoTooLarge);
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
const dimensions = await readImageDimensions(file);
|
|
46
|
+
if (!hasAcceptedPhotoDimensions(dimensions.width, dimensions.height)) {
|
|
47
|
+
setAnimalDocument(undefined);
|
|
48
|
+
setPreviewUrl('');
|
|
49
|
+
return setPhotoError(copy.photoDimensionsInvalid);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
setAnimalDocument(undefined);
|
|
54
|
+
setPreviewUrl('');
|
|
55
|
+
return setPhotoError(copy.photoDimensionsInvalid);
|
|
56
|
+
}
|
|
57
|
+
setAnimalDocument(file);
|
|
58
|
+
if (typeof URL.createObjectURL === 'function')
|
|
59
|
+
return setPreviewUrl(URL.createObjectURL(file));
|
|
60
|
+
const reader = new FileReader();
|
|
61
|
+
reader.onload = () => setPreviewUrl(typeof reader.result === 'string' ? reader.result : '');
|
|
62
|
+
reader.readAsDataURL(file);
|
|
63
|
+
}
|
|
64
|
+
function removeAnimalPhoto() {
|
|
65
|
+
if (previewUrl.startsWith('blob:'))
|
|
66
|
+
URL.revokeObjectURL(previewUrl);
|
|
67
|
+
setAnimalDocument(undefined);
|
|
68
|
+
setPreviewUrl('');
|
|
69
|
+
setPhotoError('');
|
|
70
|
+
}
|
|
71
|
+
async function submit(event) {
|
|
72
|
+
event.preventDefault();
|
|
73
|
+
const formElement = event.currentTarget;
|
|
74
|
+
const form = new FormData(formElement);
|
|
75
|
+
const controllerEmail = optionalText(form, 'controllerEmail');
|
|
76
|
+
const controllerTelephone = optionalText(form, 'controllerTelephone');
|
|
77
|
+
if (!controllerEmail && !controllerTelephone) {
|
|
78
|
+
setContactError(copy.contactRequired);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
setContactError('');
|
|
82
|
+
setSubmitting(true);
|
|
83
|
+
try {
|
|
84
|
+
await onSubmit({
|
|
85
|
+
animalName: requiredText(form, 'animalName'),
|
|
86
|
+
taxonomyId: requiredText(form, 'taxonomyId'),
|
|
87
|
+
birthDate: optionalText(form, 'birthDate'),
|
|
88
|
+
sex: requiredText(form, 'sex'),
|
|
89
|
+
identifierSystem: requiredText(form, 'identifierSystem'),
|
|
90
|
+
identifierValue: requiredText(form, 'identifierValue'),
|
|
91
|
+
controllerLegalName: requiredText(form, 'controllerLegalName'),
|
|
92
|
+
controllerIdentifierType: requiredText(form, 'controllerIdentifierType'),
|
|
93
|
+
controllerIdentifierValue: requiredText(form, 'controllerIdentifierValue'),
|
|
94
|
+
controllerCountry: requiredText(form, 'controllerCountry').toUpperCase(),
|
|
95
|
+
controllerKind: requiredText(form, 'controllerKind'),
|
|
96
|
+
controllerRegion: optionalText(form, 'controllerRegion'),
|
|
97
|
+
controllerEmail,
|
|
98
|
+
controllerTelephone,
|
|
99
|
+
relationship: requiredText(form, 'relationship'),
|
|
100
|
+
ownerDocument: optionalFile(formElement, 'ownerDocument'),
|
|
101
|
+
animalDocument: animalDocument || requiredFile(formElement, 'animalDocument'),
|
|
102
|
+
relationshipDocument: optionalFile(formElement, 'relationshipDocument'),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
setSubmitting(false);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const disabled = busy || submitting || !formReady;
|
|
110
|
+
return _jsxs("section", { className: "uhcp-animal-onboarding uhcp-animal-onboarding-v2", "aria-labelledby": showHeader ? 'animal-identity-onboarding-v2-title' : undefined, "aria-label": showHeader ? undefined : copy.title, children: [showHeader ? _jsxs("header", { children: [_jsx("h2", { id: "animal-identity-onboarding-v2-title", children: copy.title }), _jsx("p", { children: copy.intro })] }) : null, _jsxs("form", { ref: formRef, onInput: event => refreshFormReady(event.currentTarget), onChange: event => refreshFormReady(event.currentTarget), onSubmit: submit, children: [_jsxs("details", { "aria-labelledby": "animal-onboarding-v2-animal-step", children: [_jsxs("summary", { id: "animal-onboarding-v2-animal-step", children: [_jsx(StepNumber, { value: 1 }), " ", copy.animalStep] }), _jsxs("div", { className: "uhcp-animal-onboarding-primary", children: [_jsxs("div", { className: "uhcp-animal-photo", children: [_jsxs("label", { className: "uhcp-animal-photo-dropzone", role: "button", "aria-label": copy.addAnimalPhoto, onDragOver: event => event.preventDefault(), onDrop: event => { event.preventDefault(); void previewAnimal(event.dataTransfer.files?.[0]); }, children: [previewUrl
|
|
111
|
+
? _jsx("img", { src: previewUrl, alt: copy.animalPreview.replace('{name}', animalName || copy.animalName) })
|
|
112
|
+
: _jsx("span", { "aria-hidden": "true", children: "\uFF0B" }), _jsx("input", { name: "animalDocument", type: "file", accept: "image/jpeg,image/png", required: !animalDocument, "aria-label": copy.addAnimalPhoto, onChange: event => void previewAnimal(event.currentTarget.files?.[0]) })] }), previewUrl ? _jsx("button", { type: "button", className: "uhcp-animal-photo-remove", "aria-label": copy.removeAnimalPhoto, title: copy.removeAnimalPhoto, onClick: removeAnimalPhoto, children: "\u00D7" }) : null, _jsx("small", { children: copy.photoHelp }), photoError ? _jsx("p", { role: "alert", children: photoError }) : null] }), _jsxs("div", { className: "uhcp-animal-onboarding-fields", children: [_jsxs("label", { children: [copy.animalName, _jsx("input", { name: "animalName", required: true, maxLength: 80, value: animalName, onChange: event => setAnimalName(event.currentTarget.value) })] }), _jsxs("label", { children: [copy.taxonomyId, speciesOptions.length > 0
|
|
113
|
+
? _jsx("select", { name: "taxonomyId", required: true, defaultValue: speciesOptions[0]?.taxonomyId, children: speciesOptions.map(option => _jsx("option", { value: option.taxonomyId, children: option.label }, option.taxonomyId)) })
|
|
114
|
+
: _jsx("input", { name: "taxonomyId", required: true, inputMode: "numeric", pattern: "[1-9][0-9]{0,6}", defaultValue: "9615" })] }), _jsxs("label", { children: [copy.birthDate, _jsx("input", { name: "birthDate", type: "date" })] }), _jsxs("label", { children: [copy.sex, _jsxs("select", { name: "sex", defaultValue: "unknown", children: [_jsx("option", { value: "unknown", children: copy.sexUnknown }), _jsx("option", { value: "female", children: copy.sexFemale }), _jsx("option", { value: "male", children: copy.sexMale }), _jsx("option", { value: "other", children: copy.sexOther })] })] }), _jsxs("label", { children: [copy.identifierSystem, _jsxs("select", { name: "identifierSystem", defaultValue: "urn:iso:std:iso:11784:11785", children: [_jsx("option", { value: "urn:iso:std:iso:11784:11785", children: "Microchip (ISO 11784/11785)" }), _jsx("option", { value: "https://europa.eu/pet-passport", children: "EU pet passport" }), _jsx("option", { value: "https://vetchain.app/identifier/tattoo", children: "Tattoo" })] })] }), _jsxs("label", { children: [copy.identifierValue, _jsx("input", { name: "identifierValue", required: true, maxLength: 80, autoComplete: "off" })] })] })] })] }), _jsxs("details", { "aria-labelledby": "animal-onboarding-v2-controller-step", children: [_jsxs("summary", { id: "animal-onboarding-v2-controller-step", children: [_jsx(StepNumber, { value: 2 }), " ", copy.controllerStep] }), _jsx(IdentityEntityEditorV2, { mode: "controller", showEvidence: false, countryOptions: countryOptions, regionOptionsByCountry: regionOptionsByCountry, ...(identifierTypeOptions === undefined ? {} : { identifierTypeOptions }), contactError: contactError, requireEmail: requireEmail, requireTelephone: requireTelephone, copy: {
|
|
115
|
+
entityType: copy.ownerKind, personEntity: copy.personOwner, organizationEntity: copy.organizationOwner,
|
|
116
|
+
fullLegalName: copy.controllerLegalName, country: copy.controllerCountry, regionalIdentifier: copy.regionalIdentifier,
|
|
117
|
+
region: copy.controllerRegion, identifierType: copy.controllerIdentifierType, identifierValue: copy.controllerIdentifierValue,
|
|
118
|
+
email: copy.controllerEmail, telephone: copy.controllerTelephone, relationship: copy.relationship,
|
|
119
|
+
responsibleParty: copy.responsibleParty ?? copy.owner, evidence: copy.evidenceStep,
|
|
120
|
+
verificationMethod: copy.verificationMethod, physicalInPerson: copy.physicalInPerson,
|
|
121
|
+
supervisedRemote: copy.supervisedRemote, electronicId: copy.electronicId, unsupervisedRemote: copy.unsupervisedRemote,
|
|
122
|
+
identityDocument: copy.ownerDocument, relationshipDocument: copy.relationshipDocument,
|
|
123
|
+
...(copy.countryPlaceholder === undefined ? {} : { countryPlaceholder: copy.countryPlaceholder }), controllerConfirmation: copy.controllerIsLegalRepresentative,
|
|
124
|
+
} })] }), _jsxs("div", { className: "uhcp-animal-onboarding-actions", children: [footerActions, _jsx("button", { type: "submit", className: "uhcp-animal-onboarding-submit", "data-portal-action": submitAction, disabled: disabled, children: copy.submit })] })] })] });
|
|
125
|
+
}
|
|
126
|
+
function StepNumber({ value }) {
|
|
127
|
+
return _jsx("span", { className: "uhcp-identity-step-number", "aria-hidden": "true", children: value });
|
|
128
|
+
}
|
|
129
|
+
function requiredText(form, name) {
|
|
130
|
+
const value = form.get(name);
|
|
131
|
+
if (typeof value !== 'string' || !value.trim())
|
|
132
|
+
throw new Error(`animal_identity_${name}_required`);
|
|
133
|
+
return value.trim();
|
|
134
|
+
}
|
|
135
|
+
function optionalText(form, name) {
|
|
136
|
+
const value = form.get(name);
|
|
137
|
+
return typeof value === 'string' && value.trim() ? value.trim() : undefined;
|
|
138
|
+
}
|
|
139
|
+
function requiredFile(form, name) {
|
|
140
|
+
const input = form.elements.namedItem(name);
|
|
141
|
+
const value = input instanceof HTMLInputElement ? input.files?.[0] : undefined;
|
|
142
|
+
if (!value || value.size < 1)
|
|
143
|
+
throw new Error(`animal_identity_${name}_required`);
|
|
144
|
+
return value;
|
|
145
|
+
}
|
|
146
|
+
function optionalFile(form, name) {
|
|
147
|
+
const input = form.elements.namedItem(name);
|
|
148
|
+
const value = input instanceof HTMLInputElement ? input.files?.[0] : undefined;
|
|
149
|
+
return value && value.size > 0 ? value : undefined;
|
|
150
|
+
}
|
|
151
|
+
async function readImageDimensions(file) {
|
|
152
|
+
if (typeof createImageBitmap === 'function') {
|
|
153
|
+
const bitmap = await createImageBitmap(file);
|
|
154
|
+
const dimensions = { width: bitmap.width, height: bitmap.height };
|
|
155
|
+
bitmap.close();
|
|
156
|
+
return dimensions;
|
|
157
|
+
}
|
|
158
|
+
return new Promise((resolve, reject) => {
|
|
159
|
+
const reader = new FileReader();
|
|
160
|
+
reader.onerror = () => reject(new Error('animal_photo_unreadable'));
|
|
161
|
+
reader.onload = () => {
|
|
162
|
+
const image = new Image();
|
|
163
|
+
image.onerror = () => reject(new Error('animal_photo_unreadable'));
|
|
164
|
+
image.onload = () => resolve({ width: image.naturalWidth, height: image.naturalHeight });
|
|
165
|
+
image.src = String(reader.result || '');
|
|
166
|
+
};
|
|
167
|
+
reader.readAsDataURL(file);
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
function hasAcceptedPhotoDimensions(width, height) {
|
|
171
|
+
const ratio = width / height;
|
|
172
|
+
return width >= 300 && height >= 400 && Math.abs(ratio - 3 / 4) <= 0.06;
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=AnimalIdentityOnboardingV2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimalIdentityOnboardingV2.js","sourceRoot":"","sources":["../../src/identity/AnimalIdentityOnboardingV2.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* SOS current-subject presentation; host-authorized state and neutral theme tokens only. */
|
|
2
|
+
.uhcp-current-subject { margin-inline-start:auto; position:relative; }
|
|
3
|
+
.uhcp-current-subject-trigger { align-items:center; background:var(--uhcp-surface, #fff); border:1px solid var(--uhcp-border, #d8e0e8); border-radius:999px; color:inherit; cursor:pointer; display:flex; gap:.55rem; min-height:2.75rem; padding:.3rem .7rem .3rem .3rem; }
|
|
4
|
+
.uhcp-current-subject-avatar { align-items:center; aspect-ratio:1; background:var(--uhcp-accent-soft, #e9f3ff); border-radius:50%; display:flex; flex:0 0 auto; height:2.15rem; justify-content:center; object-fit:cover; width:2.15rem; }
|
|
5
|
+
.uhcp-current-subject-initial { font-size:.9rem; font-weight:850; }
|
|
6
|
+
.uhcp-current-subject-trigger > span:nth-child(2) { font-size:.88rem; font-weight:800; max-width:10rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
7
|
+
.uhcp-current-subject-menu { background:var(--uhcp-surface, #fff); border:1px solid var(--uhcp-border, #d8e0e8); border-radius:1rem; box-shadow:0 18px 50px rgb(20 42 66 / 18%); display:grid; gap:.75rem; inset-inline-end:0; min-width:17rem; padding:1rem; position:absolute; top:calc(100% + .55rem); z-index:60; }
|
|
8
|
+
.uhcp-current-subject-summary { align-items:center; display:flex; gap:.75rem; }
|
|
9
|
+
.uhcp-current-subject-summary > span { display:grid; min-width:0; }
|
|
10
|
+
.uhcp-current-subject-summary small,.uhcp-current-subject-summary span span { color:var(--uhcp-muted, #637083); }
|
|
11
|
+
.uhcp-current-subject-menu > button { background:transparent; border:1px solid var(--uhcp-border, #d8e0e8); border-radius:.75rem; color:inherit; cursor:pointer; font:inherit; font-weight:750; padding:.7rem .9rem; text-align:start; }
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/* SOS-owned animal/subject identity composition. Host state and neutral compatibility tokens only. */
|
|
2
|
+
.uhcp-animal-identity-readonly { align-items:start; display:grid; gap:1rem; grid-template-columns:minmax(8rem,12rem) minmax(0,1fr); }
|
|
3
|
+
.uhcp-animal-identity-photo { aspect-ratio:3/4; border:1px solid var(--uhcp-border); border-radius:1rem; display:block; object-fit:cover; width:100%; }
|
|
4
|
+
@media (max-width:620px) { .uhcp-animal-identity-readonly { grid-template-columns:minmax(0,1fr); } .uhcp-animal-identity-photo { max-width:12rem; } }
|
|
5
|
+
.uhcp-identity-step-number {
|
|
6
|
+
align-items: center;
|
|
7
|
+
background: var(--uhcp-surface-accent);
|
|
8
|
+
border: 1px solid color-mix(in srgb, var(--uhcp-turquoise) 42%, var(--uhcp-border));
|
|
9
|
+
border-radius: 999px;
|
|
10
|
+
color: var(--uhcp-turquoise);
|
|
11
|
+
display: flex;
|
|
12
|
+
font-weight: 900;
|
|
13
|
+
height: 2.25rem;
|
|
14
|
+
justify-content: center;
|
|
15
|
+
position: relative;
|
|
16
|
+
width: 2.25rem;
|
|
17
|
+
z-index: 1;
|
|
18
|
+
}
|
|
19
|
+
.uhcp-identity-status { border-radius: 999px; font-size: .72rem; font-weight: 800; padding: .35rem .6rem; }
|
|
20
|
+
.uhcp-identity-status-verified { background: color-mix(in srgb, var(--uhcp-emerald) 15%, transparent); color: var(--uhcp-emerald); }
|
|
21
|
+
.uhcp-identity-status-pending { background: color-mix(in srgb, var(--uhcp-attention) 18%, transparent); color: color-mix(in srgb, var(--uhcp-attention) 72%, var(--uhcp-text)); }
|
|
22
|
+
.uhcp-identity-status-rejected { background: color-mix(in srgb, #c64747 14%, transparent); color: #c64747; }
|
|
23
|
+
.uhcp-animal-onboarding { display: grid; gap: 1.25rem; }
|
|
24
|
+
.uhcp-animal-onboarding > header p { color: var(--uhcp-muted, #5f6875); margin: .35rem 0 0; }
|
|
25
|
+
.uhcp-animal-onboarding form { display: grid; gap: 1rem; }
|
|
26
|
+
.uhcp-animal-onboarding fieldset { border: 1px solid var(--uhcp-border, #d9dee7); border-radius: 1rem; margin: 0; padding: 1rem; }
|
|
27
|
+
.uhcp-animal-onboarding legend { align-items: center; display: flex; font-weight: 800; gap: .55rem; padding: 0 .35rem; }
|
|
28
|
+
.uhcp-animal-onboarding-fields { display: grid; gap: .85rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); }
|
|
29
|
+
.uhcp-animal-onboarding-fields label { display: grid; gap: .35rem; }
|
|
30
|
+
.uhcp-animal-onboarding-fields input, .uhcp-animal-onboarding-fields select { box-sizing: border-box; min-height: 2.8rem; width: 100%; }
|
|
31
|
+
.uhcp-animal-onboarding-submit { justify-self: start; }
|
|
32
|
+
.uhcp-animal-onboarding-v2 details { background:var(--uhcp-surface, #fff); border:1px solid var(--uhcp-border, #d9dee7); border-radius:1rem; overflow:hidden; }
|
|
33
|
+
.uhcp-animal-onboarding-v2 summary { align-items:center; cursor:pointer; display:flex; font-weight:850; gap:.55rem; list-style:none; padding:1rem; }
|
|
34
|
+
.uhcp-animal-onboarding-v2 summary::-webkit-details-marker { display:none; }
|
|
35
|
+
.uhcp-animal-onboarding-v2 summary::after { content:'⌄'; margin-inline-start:auto; transition:transform .18s ease; }
|
|
36
|
+
.uhcp-animal-onboarding-v2 details[open] summary::after { transform:rotate(180deg); }
|
|
37
|
+
.uhcp-animal-onboarding-v2 details > .uhcp-animal-onboarding-fields,
|
|
38
|
+
.uhcp-animal-onboarding-v2 details > .uhcp-animal-onboarding-primary,
|
|
39
|
+
.uhcp-animal-onboarding-v2 details > .uhcp-identity-entity-editor { border-top:1px solid var(--uhcp-border, #d9dee7); padding:1rem; }
|
|
40
|
+
.uhcp-animal-onboarding-primary { align-items:start; display:grid; gap:1rem; grid-template-columns:minmax(10rem, 14rem) minmax(0, 1fr); }
|
|
41
|
+
.uhcp-animal-photo { display:grid; gap:.45rem; position:relative; }
|
|
42
|
+
.uhcp-animal-photo-dropzone { align-items:center; aspect-ratio:1; background:var(--uhcp-accent-soft, #e9f3ff); border:2px dashed color-mix(in srgb, var(--uhcp-turquoise, #1597a6) 58%, var(--uhcp-border, #d9dee7)); border-radius:1.25rem; cursor:pointer; display:flex; font-size:4rem; font-weight:850; justify-content:center; overflow:hidden; width:100%; }
|
|
43
|
+
.uhcp-animal-photo-dropzone:hover,.uhcp-animal-photo-dropzone:focus-within { background:color-mix(in srgb, var(--uhcp-accent-soft, #e9f3ff) 70%, var(--uhcp-turquoise, #1597a6)); border-style:solid; }
|
|
44
|
+
.uhcp-animal-photo-dropzone img { height:100%; object-fit:cover; width:100%; }
|
|
45
|
+
.uhcp-animal-photo-dropzone input { height:1px; opacity:0; overflow:hidden; position:absolute; width:1px; }
|
|
46
|
+
.uhcp-animal-photo-remove { background:#b42318; border:2px solid #fff; border-radius:999px; block-size:2.25rem; color:#fff; cursor:pointer; font-size:1.45rem; inline-size:2.25rem; inset-block-start:.65rem; inset-inline-end:.65rem; line-height:1; position:absolute; }
|
|
47
|
+
.uhcp-animal-photo small { color:var(--uhcp-muted, #5f6875); }
|
|
48
|
+
@media (max-width: 42rem) { .uhcp-animal-onboarding-primary { grid-template-columns:1fr; } .uhcp-animal-photo { justify-self:center; max-width:15rem; width:100%; } }
|
|
49
|
+
.uhcp-subject-identity-card { border: 1px solid var(--uhcp-border, #d9dee7); border-radius: 1rem; display: grid; gap: 1rem; padding: 1rem; }
|
|
50
|
+
.uhcp-subject-identity-card > header { align-items: center; display: grid; gap: .8rem; grid-template-columns: auto 1fr auto; }
|
|
51
|
+
.uhcp-subject-identity-edit { align-items: center; background: var(--uhcp-action-soft, #e8f3ff); border: 1px solid var(--uhcp-action-end, #2563a9); border-radius: 50%; color: var(--uhcp-action-end, #2563a9); cursor: pointer; display: inline-flex; font: inherit; font-size: 1.25rem; height: 2.75rem; justify-content: center; width: 2.75rem; }
|
|
52
|
+
.uhcp-subject-identity-edit:hover, .uhcp-subject-identity-edit:focus-visible { background: var(--uhcp-action-end, #2563a9); color: #fff; }
|
|
53
|
+
.uhcp-subject-identity-card img, .uhcp-subject-identity-avatar { align-items: center; aspect-ratio: 1; border-radius: 50%; display: flex; height: 3.5rem; justify-content: center; object-fit: cover; width: 3.5rem; }
|
|
54
|
+
.uhcp-subject-identity-avatar { background: var(--uhcp-accent-soft, #e9f3ff); font-size: 1.4rem; font-weight: 850; }
|
|
55
|
+
.uhcp-subject-identity-card h3 { margin: .15rem 0 0; }
|
|
56
|
+
.uhcp-subject-identity-card dl { display: grid; gap: .65rem; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); margin: 0; }
|
|
57
|
+
.uhcp-subject-identity-card dt { color: var(--uhcp-muted, #5f6875); font-size: .8rem; }
|
|
58
|
+
.uhcp-subject-identity-card dd { font-weight: 700; margin: .15rem 0 0; overflow-wrap: anywhere; }
|
|
59
|
+
.uhcp-subject-identity-relationship { align-items: center; background: var(--uhcp-surface-soft, #f6f8fb); border-radius: .8rem; display: grid; gap: .25rem; padding: .8rem; }
|
|
60
|
+
.uhcp-animal-onboarding-actions { align-items:center; display:flex; flex-wrap:wrap; gap:.75rem; justify-content:flex-end; }
|
|
61
|
+
.uhcp-animal-identity-readonly-grid { display:grid; gap:1rem; grid-template-columns:repeat(2,minmax(0,1fr)); margin:0; padding:1rem; }
|
|
62
|
+
.uhcp-animal-identity-readonly-grid div { background:var(--uhcp-surface,#fff); border:1px solid var(--uhcp-border,#cbd5e1); border-radius:.8rem; padding:.8rem; }
|
|
63
|
+
.uhcp-animal-identity-readonly-grid dt { color:var(--uhcp-muted,#475569); font-size:.82rem; font-weight:700; }
|
|
64
|
+
.uhcp-animal-identity-readonly-grid dd { color:var(--uhcp-text,#0f172a); font-weight:750; margin:.25rem 0 0; overflow-wrap:anywhere; }
|