uhc-portal-components-react 0.2.25 → 0.2.27
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 +14 -0
- package/dist/ProfessionalProfileActivationPanel.d.ts +28 -0
- package/dist/ProfessionalProfileActivationPanel.d.ts.map +1 -0
- package/dist/ProfessionalProfileActivationPanel.js +24 -0
- package/dist/SubjectDemographicsFields.d.ts +4 -2
- package/dist/SubjectDemographicsFields.d.ts.map +1 -1
- package/dist/SubjectDemographicsFields.js +50 -15
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/styles.css +8 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.2.27 - 2026-10-22
|
|
6
|
+
|
|
7
|
+
- Add one brand-neutral Professional profile activation screen that accepts a
|
|
8
|
+
single organization-issued credential and a local PIN. Product BFFs resolve
|
|
9
|
+
organization, sector, role, licence and technical identities; the browser no
|
|
10
|
+
longer asks employees to reconstruct separate DID and URN values.
|
|
11
|
+
|
|
12
|
+
## 0.2.26 - 2026-10-22
|
|
13
|
+
|
|
14
|
+
- Keep race and ethnicity outside the universal human profile: trusted
|
|
15
|
+
jurisdictional profiles may enable either, both or neither.
|
|
16
|
+
- Present enabled human demographic concepts as optional additions and omit
|
|
17
|
+
empty optional concepts from read-only views.
|
|
18
|
+
|
|
5
19
|
## 0.2.25 - 2026-10-22
|
|
6
20
|
|
|
7
21
|
- Add one shared read/edit demographics slot whose trusted profile renders
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type ProfessionalProfileActivationCopy = Readonly<{
|
|
2
|
+
eyebrow?: string;
|
|
3
|
+
title: string;
|
|
4
|
+
description: string;
|
|
5
|
+
credentialLabel: string;
|
|
6
|
+
pinLabel: string;
|
|
7
|
+
pinConfirmationLabel: string;
|
|
8
|
+
pinMismatch: string;
|
|
9
|
+
submit: string;
|
|
10
|
+
submitting: string;
|
|
11
|
+
}>;
|
|
12
|
+
export type ProfessionalProfileActivationInput = Readonly<{
|
|
13
|
+
credential: string;
|
|
14
|
+
pin: string;
|
|
15
|
+
}>;
|
|
16
|
+
export type ProfessionalProfileActivationPanelProps = Readonly<{
|
|
17
|
+
copy: ProfessionalProfileActivationCopy;
|
|
18
|
+
busy: boolean;
|
|
19
|
+
error?: string;
|
|
20
|
+
onSubmit: (input: ProfessionalProfileActivationInput) => void | Promise<void>;
|
|
21
|
+
}>;
|
|
22
|
+
/**
|
|
23
|
+
* Brand-neutral first-device activation for an authorized employee.
|
|
24
|
+
* The BFF resolves trusted routing and authority from one organization-issued
|
|
25
|
+
* value; the browser never reconstructs a sector, organization, DID and URN.
|
|
26
|
+
*/
|
|
27
|
+
export declare function ProfessionalProfileActivationPanel({ copy, busy, error, onSubmit }: ProfessionalProfileActivationPanelProps): import("react").JSX.Element;
|
|
28
|
+
//# sourceMappingURL=ProfessionalProfileActivationPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProfessionalProfileActivationPanel.d.ts","sourceRoot":"","sources":["../src/ProfessionalProfileActivationPanel.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,iCAAiC,GAAG,QAAQ,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB,CAAC,CAAA;AAEF,MAAM,MAAM,kCAAkC,GAAG,QAAQ,CAAC;IACxD,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;CACZ,CAAC,CAAA;AAEF,MAAM,MAAM,uCAAuC,GAAG,QAAQ,CAAC;IAC7D,IAAI,EAAE,iCAAiC,CAAA;IACvC,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,kCAAkC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9E,CAAC,CAAA;AAEF;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,uCAAuC,+BA8B1H"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
/**
|
|
5
|
+
* Brand-neutral first-device activation for an authorized employee.
|
|
6
|
+
* The BFF resolves trusted routing and authority from one organization-issued
|
|
7
|
+
* value; the browser never reconstructs a sector, organization, DID and URN.
|
|
8
|
+
*/
|
|
9
|
+
export function ProfessionalProfileActivationPanel({ copy, busy, error, onSubmit }) {
|
|
10
|
+
const [credential, setCredential] = useState('');
|
|
11
|
+
const [pin, setPin] = useState('');
|
|
12
|
+
const [pinConfirmation, setPinConfirmation] = useState('');
|
|
13
|
+
const [localError, setLocalError] = useState('');
|
|
14
|
+
function submit(event) {
|
|
15
|
+
event.preventDefault();
|
|
16
|
+
if (pin !== pinConfirmation) {
|
|
17
|
+
setLocalError(copy.pinMismatch);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
setLocalError('');
|
|
21
|
+
void onSubmit({ credential: credential.trim(), pin });
|
|
22
|
+
}
|
|
23
|
+
return _jsx("section", { className: "uhcp-professional-activation", "aria-labelledby": "uhcp-professional-activation-title", children: _jsxs("form", { onSubmit: submit, children: [_jsxs("header", { children: [copy.eyebrow ? _jsx("p", { className: "uhcp-eyebrow", children: copy.eyebrow }) : null, _jsx("h1", { id: "uhcp-professional-activation-title", children: copy.title }), _jsx("p", { children: copy.description })] }), _jsxs("label", { children: [_jsx("span", { children: copy.credentialLabel }), _jsx("input", { name: "professionalCredential", value: credential, onChange: event => setCredential(event.currentTarget.value), autoComplete: "one-time-code", required: true })] }), _jsxs("label", { children: [_jsx("span", { children: copy.pinLabel }), _jsx("input", { name: "newPin", type: "password", inputMode: "numeric", minLength: 6, maxLength: 12, autoComplete: "new-password", value: pin, onChange: event => setPin(event.currentTarget.value), required: true })] }), _jsxs("label", { children: [_jsx("span", { children: copy.pinConfirmationLabel }), _jsx("input", { name: "confirmPin", type: "password", inputMode: "numeric", minLength: 6, maxLength: 12, autoComplete: "new-password", value: pinConfirmation, onChange: event => setPinConfirmation(event.currentTarget.value), required: true })] }), (localError || error) ? _jsx("p", { role: "alert", children: localError || error }) : null, _jsx("button", { type: "submit", disabled: busy, children: busy ? copy.submitting : copy.submit })] }) });
|
|
24
|
+
}
|
|
@@ -4,8 +4,8 @@ export type SubjectDemographicsOption = Readonly<{
|
|
|
4
4
|
}>;
|
|
5
5
|
export type SubjectDemographicsProfile = Readonly<{
|
|
6
6
|
subjectKind: 'human';
|
|
7
|
-
raceOptions
|
|
8
|
-
ethnicityOptions
|
|
7
|
+
raceOptions?: readonly SubjectDemographicsOption[];
|
|
8
|
+
ethnicityOptions?: readonly SubjectDemographicsOption[];
|
|
9
9
|
}> | Readonly<{
|
|
10
10
|
subjectKind: 'animal';
|
|
11
11
|
speciesOptions: readonly SubjectDemographicsOption[];
|
|
@@ -14,6 +14,8 @@ export type SubjectDemographicsProfile = Readonly<{
|
|
|
14
14
|
export type SubjectDemographicsCopy = Readonly<{
|
|
15
15
|
race?: string;
|
|
16
16
|
ethnicity?: string;
|
|
17
|
+
addRace?: string;
|
|
18
|
+
addEthnicity?: string;
|
|
17
19
|
species?: string;
|
|
18
20
|
breed?: string;
|
|
19
21
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubjectDemographicsFields.d.ts","sourceRoot":"","sources":["../src/SubjectDemographicsFields.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAC,CAAA;AAEF,MAAM,MAAM,0BAA0B,GAClC,QAAQ,CAAC;IACP,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"SubjectDemographicsFields.d.ts","sourceRoot":"","sources":["../src/SubjectDemographicsFields.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAC,CAAA;AAEF,MAAM,MAAM,0BAA0B,GAClC,QAAQ,CAAC;IACP,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAA;IAClD,gBAAgB,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAA;CACxD,CAAC,GACF,QAAQ,CAAC;IACP,WAAW,EAAE,QAAQ,CAAA;IACrB,cAAc,EAAE,SAAS,yBAAyB,EAAE,CAAA;IACpD,YAAY,EAAE,SAAS,yBAAyB,EAAE,CAAA;CACnD,CAAC,CAAA;AAEN,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,MAAM,EACN,cAAc,GACf,EAAE,QAAQ,CAAC;IACV,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,OAAO,EAAE,0BAA0B,CAAA;IACnC,IAAI,EAAE,uBAAuB,CAAA;IAC7B,MAAM,CAAC,EAAE,QAAQ,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3D,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI,CAAA;CACtF,CAAC,+BAgFD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
2
3
|
/**
|
|
3
4
|
* Shared presentation slot for human or animal demographics.
|
|
4
5
|
*
|
|
@@ -7,26 +8,60 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
7
8
|
* the submitted fields to their own canonical persistence adapters.
|
|
8
9
|
*/
|
|
9
10
|
export function SubjectDemographicsFields({ mode, profile, copy, values, onValuesChange, }) {
|
|
11
|
+
const [visibleHumanFields, setVisibleHumanFields] = useState(() => new Set([
|
|
12
|
+
...(values?.primary ? ['race'] : []),
|
|
13
|
+
...(values?.secondary ? ['ethnicity'] : []),
|
|
14
|
+
]));
|
|
10
15
|
const fields = profile.subjectKind === 'human'
|
|
11
16
|
? [
|
|
12
|
-
|
|
13
|
-
|
|
17
|
+
...(profile.raceOptions === undefined ? [] : [{
|
|
18
|
+
concept: 'race',
|
|
19
|
+
valueKey: 'primary',
|
|
20
|
+
name: 'human.race',
|
|
21
|
+
label: requiredCopy(copy.race, 'race'),
|
|
22
|
+
addLabel: mode === 'edit' ? requiredCopy(copy.addRace, 'add_race') : '',
|
|
23
|
+
options: profile.raceOptions,
|
|
24
|
+
value: values?.primary,
|
|
25
|
+
required: false,
|
|
26
|
+
}]),
|
|
27
|
+
...(profile.ethnicityOptions === undefined ? [] : [{
|
|
28
|
+
concept: 'ethnicity',
|
|
29
|
+
valueKey: 'secondary',
|
|
30
|
+
name: 'human.ethnicity',
|
|
31
|
+
label: requiredCopy(copy.ethnicity, 'ethnicity'),
|
|
32
|
+
addLabel: mode === 'edit' ? requiredCopy(copy.addEthnicity, 'add_ethnicity') : '',
|
|
33
|
+
options: profile.ethnicityOptions,
|
|
34
|
+
value: values?.secondary,
|
|
35
|
+
required: false,
|
|
36
|
+
}]),
|
|
14
37
|
]
|
|
15
38
|
: [
|
|
16
|
-
{ name: 'animal.species', label: requiredCopy(copy.species, 'species'), options: profile.speciesOptions, value: values?.primary },
|
|
17
|
-
{ name: 'animal.breed', label: requiredCopy(copy.breed, 'breed'), options: profile.breedOptions, value: values?.secondary },
|
|
39
|
+
{ concept: 'species', valueKey: 'primary', name: 'animal.species', label: requiredCopy(copy.species, 'species'), addLabel: '', options: profile.speciesOptions, value: values?.primary, required: true },
|
|
40
|
+
{ concept: 'breed', valueKey: 'secondary', name: 'animal.breed', label: requiredCopy(copy.breed, 'breed'), addLabel: '', options: profile.breedOptions, value: values?.secondary, required: true },
|
|
18
41
|
];
|
|
19
|
-
return _jsx("div", { className: "uhcp-subject-demographics-fields", "data-subject-kind": profile.subjectKind, children: mode === 'edit'
|
|
20
|
-
? fields.map((field) =>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
42
|
+
return _jsx("div", { className: "uhcp-subject-demographics-fields", "data-subject-kind": profile.subjectKind, children: mode === 'edit' && profile.subjectKind === 'human'
|
|
43
|
+
? fields.map((field) => visibleHumanFields.has(field.concept)
|
|
44
|
+
? _jsxs("label", { children: [_jsx("span", { children: field.label }), _jsxs("select", { name: field.name, "aria-label": field.label, ...(onValuesChange
|
|
45
|
+
? {
|
|
46
|
+
value: field.value ?? '',
|
|
47
|
+
onChange: (event) => onValuesChange({
|
|
48
|
+
primary: field.valueKey === 'primary' ? event.currentTarget.value : values?.primary,
|
|
49
|
+
secondary: field.valueKey === 'secondary' ? event.currentTarget.value : values?.secondary,
|
|
50
|
+
}),
|
|
51
|
+
}
|
|
52
|
+
: { defaultValue: field.value ?? '' }), children: [_jsx("option", { value: "", disabled: true, children: field.label }), field.options.map((option) => _jsx("option", { value: option.value, children: option.label }, option.value))] })] }, field.name)
|
|
53
|
+
: _jsx("button", { className: "uhcp-subject-demographics-add", type: "button", onClick: () => setVisibleHumanFields((current) => new Set([...current, field.concept])), children: field.addLabel }, field.name))
|
|
54
|
+
: mode === 'edit'
|
|
55
|
+
? fields.map((field) => _jsxs("label", { children: [_jsx("span", { children: field.label }), _jsxs("select", { name: field.name, "aria-label": field.label, required: field.required, ...(onValuesChange
|
|
56
|
+
? {
|
|
57
|
+
value: field.value ?? '',
|
|
58
|
+
onChange: (event) => onValuesChange({
|
|
59
|
+
primary: field.valueKey === 'primary' ? event.currentTarget.value : values?.primary,
|
|
60
|
+
secondary: field.valueKey === 'secondary' ? event.currentTarget.value : values?.secondary,
|
|
61
|
+
}),
|
|
62
|
+
}
|
|
63
|
+
: { defaultValue: field.value ?? '' }), children: [_jsx("option", { value: "", disabled: true, children: field.label }), field.options.map((option) => _jsx("option", { value: option.value, children: option.label }, option.value))] })] }, field.name))
|
|
64
|
+
: _jsx("dl", { children: fields.filter((field) => profile.subjectKind === 'animal' || field.value).map((field) => _jsxs("div", { children: [_jsx("dt", { children: field.label }), _jsx("dd", { children: field.value || '—' })] }, field.name)) }) });
|
|
30
65
|
}
|
|
31
66
|
function requiredCopy(value, field) {
|
|
32
67
|
const normalized = String(value || '').trim();
|
package/dist/index.d.ts
CHANGED
|
@@ -55,5 +55,6 @@ export * from './CardPreview.js';
|
|
|
55
55
|
export * from './CollapsiblePortalSection.js';
|
|
56
56
|
export * from './ElapsedOperationStatus.js';
|
|
57
57
|
export * from './ProfileRecoveryPanel.js';
|
|
58
|
+
export * from './ProfessionalProfileActivationPanel.js';
|
|
58
59
|
export * from './passkey-policy.js';
|
|
59
60
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,2BAA2B,CAAA;AACzC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wCAAwC,CAAA;AACtD,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mCAAmC,CAAA;AACjD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,qCAAqC,CAAA;AACnD,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wBAAwB,CAAA;AACtC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0CAA0C,CAAA;AACxD,cAAc,kCAAkC,CAAA;AAChD,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oCAAoC,CAAA;AAClD,cAAc,sCAAsC,CAAA;AACpD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,uCAAuC,CAAA;AACrD,cAAc,uBAAuB,CAAA;AACrC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,uBAAuB,CAAA;AACrC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kBAAkB,CAAA;AAChC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,2BAA2B,CAAA;AACzC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wCAAwC,CAAA;AACtD,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mCAAmC,CAAA;AACjD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,qCAAqC,CAAA;AACnD,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wBAAwB,CAAA;AACtC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0CAA0C,CAAA;AACxD,cAAc,kCAAkC,CAAA;AAChD,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oCAAoC,CAAA;AAClD,cAAc,sCAAsC,CAAA;AACpD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,uCAAuC,CAAA;AACrD,cAAc,uBAAuB,CAAA;AACrC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,uBAAuB,CAAA;AACrC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kBAAkB,CAAA;AAChC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,yCAAyC,CAAA;AACvD,cAAc,qBAAqB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -55,4 +55,5 @@ export * from './CardPreview.js';
|
|
|
55
55
|
export * from './CollapsiblePortalSection.js';
|
|
56
56
|
export * from './ElapsedOperationStatus.js';
|
|
57
57
|
export * from './ProfileRecoveryPanel.js';
|
|
58
|
+
export * from './ProfessionalProfileActivationPanel.js';
|
|
58
59
|
export * from './passkey-policy.js';
|
package/dist/styles.css
CHANGED
|
@@ -926,6 +926,14 @@ html[data-theme='dark'] .uhcp-brand-artwork-dark { display: block !important; }
|
|
|
926
926
|
.uhcp-professional-access button { background: linear-gradient(135deg, var(--uhcp-action-start, #0f9ca8), var(--uhcp-action-end, #2563a9)); border: 0; border-radius: 999px; color: #fff; cursor: pointer; font: inherit; font-weight: 800; min-height: 2.8rem; padding: .7rem 1rem; }
|
|
927
927
|
.uhcp-professional-access button:disabled { cursor: wait; opacity: .55; }
|
|
928
928
|
.uhcp-professional-access .uhcp-secondary { background: transparent; border: 1px solid var(--uhcp-line, #cbd5e1); color: inherit; }
|
|
929
|
+
.uhcp-professional-activation { display:grid; margin-inline:auto; max-width:42rem; }
|
|
930
|
+
.uhcp-professional-activation form { display:grid; gap:1rem; }
|
|
931
|
+
.uhcp-professional-activation header { display:grid; gap:.55rem; }
|
|
932
|
+
.uhcp-professional-activation h1,.uhcp-professional-activation p { margin:0; }
|
|
933
|
+
.uhcp-professional-activation label { display:grid; font-weight:700; gap:.4rem; }
|
|
934
|
+
.uhcp-professional-activation input { background:var(--uhcp-surface,#fff); border:1px solid var(--uhcp-line,#cbd5e1); border-radius:.8rem; color:inherit; font:inherit; min-height:2.8rem; padding-inline:.85rem; }
|
|
935
|
+
.uhcp-professional-activation button { background:linear-gradient(135deg,var(--uhcp-action-start,#0f9ca8),var(--uhcp-action-end,#2563a9)); border:0; border-radius:999px; color:#fff; cursor:pointer; font:inherit; font-weight:800; justify-self:start; min-height:2.8rem; padding:.7rem 1rem; }
|
|
936
|
+
.uhcp-professional-activation button:disabled { cursor:wait; opacity:.55; }
|
|
929
937
|
.uhcp-animal-onboarding-actions { align-items:center; display:flex; flex-wrap:wrap; gap:.75rem; justify-content:flex-end; }
|
|
930
938
|
.uhcp-animal-identity-readonly-grid { display:grid; gap:1rem; grid-template-columns:repeat(2,minmax(0,1fr)); margin:0; padding:1rem; }
|
|
931
939
|
.uhcp-animal-identity-readonly-grid div { background:var(--uhcp-surface,#fff); border:1px solid var(--uhcp-border,#cbd5e1); border-radius:.8rem; padding:.8rem; }
|