@voyantjs/identity-ui 0.30.7 → 0.31.1

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 CHANGED
@@ -25,7 +25,3 @@ import { identityUiRo } from "@voyantjs/identity-ui/i18n/ro"
25
25
 
26
26
  English-only apps should import only `./i18n/en`. Bilingual apps can import
27
27
  `./i18n/en` and `./i18n/ro`.
28
-
29
- ## Not included (registry-only)
30
-
31
- Some components couple to TanStack Router or template-local helpers and remain available only via the shadcn registry: `identity-page`. Import via `npx shadcn add @voyant/<component>` and customize per-project.
@@ -0,0 +1,20 @@
1
+ export type IdentityTab = "contact-points" | "addresses" | "named-contacts";
2
+ export interface IdentityPageProps {
3
+ entityType?: string;
4
+ entityId?: string;
5
+ tab?: IdentityTab;
6
+ onScopeChange?: (scope: {
7
+ entityType: string;
8
+ entityId: string;
9
+ }) => void;
10
+ onTabChange?: (tab: IdentityTab) => void;
11
+ }
12
+ export declare function IdentityPage({ entityType, entityId, tab, onScopeChange, onTabChange, }?: IdentityPageProps): import("react/jsx-runtime").JSX.Element;
13
+ export interface IdentityEntityTabProps {
14
+ entityType: string;
15
+ entityId: string;
16
+ }
17
+ export declare function ContactPointsTab({ entityType, entityId }: IdentityEntityTabProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function AddressesTab({ entityType, entityId }: IdentityEntityTabProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare function NamedContactsTab({ entityType, entityId }: IdentityEntityTabProps): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=identity-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-page.d.ts","sourceRoot":"","sources":["../../src/components/identity-page.tsx"],"names":[],"mappings":"AA2BA,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,WAAW,GAAG,gBAAgB,CAAA;AAE3E,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACzE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAA;CACzC;AAED,wBAAgB,YAAY,CAAC,EAC3B,UAAU,EACV,QAAQ,EACR,GAAG,EACH,aAAa,EACb,WAAW,GACZ,GAAE,iBAAsB,2CAiFxB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CAmHhF;AAED,wBAAgB,YAAY,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CA4H5E;AAED,wBAAgB,gBAAgB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CAiIhF"}
@@ -0,0 +1,222 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useAddresses, useAddressMutation, useContactPointMutation, useContactPoints, useNamedContactMutation, useNamedContacts, } from "@voyantjs/identity-react";
4
+ import { Badge, Button, Input, Label } from "@voyantjs/ui/components";
5
+ import { DataTable } from "@voyantjs/ui/components/data-table";
6
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@voyantjs/ui/components/tabs";
7
+ import { IdCard, Pencil, Plus, Star, Trash2 } from "lucide-react";
8
+ import { useMemo, useState } from "react";
9
+ import { useIdentityUiMessagesOrDefault } from "../i18n/index.js";
10
+ import { AddressDialog } from "./address-dialog.js";
11
+ import { ContactPointDialog } from "./contact-point-dialog.js";
12
+ import { NamedContactDialog } from "./named-contact-dialog.js";
13
+ const PAGE_SIZE = 25;
14
+ export function IdentityPage({ entityType, entityId, tab, onScopeChange, onTabChange, } = {}) {
15
+ const messages = useIdentityUiMessagesOrDefault();
16
+ const pageMessages = messages.identityPage;
17
+ const [innerEntityType, setInnerEntityType] = useState(entityType ?? "");
18
+ const [innerEntityId, setInnerEntityId] = useState(entityId ?? "");
19
+ const [innerTab, setInnerTab] = useState(tab ?? "contact-points");
20
+ const activeEntityType = entityType ?? innerEntityType;
21
+ const activeEntityId = entityId ?? innerEntityId;
22
+ const activeTab = tab ?? innerTab;
23
+ const scopeReady = activeEntityType.trim().length > 0 && activeEntityId.trim().length > 0;
24
+ const updateScope = (next) => {
25
+ const nextEntityType = next.entityType ?? activeEntityType;
26
+ const nextEntityId = next.entityId ?? activeEntityId;
27
+ if (entityType === undefined)
28
+ setInnerEntityType(nextEntityType);
29
+ if (entityId === undefined)
30
+ setInnerEntityId(nextEntityId);
31
+ onScopeChange?.({ entityType: nextEntityType, entityId: nextEntityId });
32
+ };
33
+ const updateTab = (next) => {
34
+ if (tab === undefined)
35
+ setInnerTab(next);
36
+ onTabChange?.(next);
37
+ };
38
+ return (_jsxs("div", { className: "flex flex-col gap-6 p-6", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx(IdCard, { className: "size-5 text-muted-foreground", "aria-hidden": "true" }), _jsx("h1", { className: "text-2xl font-bold tracking-tight", children: pageMessages.title })] }), _jsx("p", { className: "max-w-2xl text-sm text-muted-foreground", children: pageMessages.description }), _jsxs("div", { className: "grid max-w-2xl grid-cols-2 gap-4", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: pageMessages.fields.entityType }), _jsx(Input, { value: activeEntityType, onChange: (event) => updateScope({ entityType: event.target.value }), placeholder: pageMessages.placeholders.entityType })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: pageMessages.fields.entityId }), _jsx(Input, { value: activeEntityId, onChange: (event) => updateScope({ entityId: event.target.value }), placeholder: pageMessages.placeholders.entityId, className: "font-mono text-xs" })] })] }), !scopeReady ? (_jsx("div", { className: "rounded-md border border-dashed p-12 text-center", children: _jsx("p", { className: "text-sm text-muted-foreground", children: pageMessages.emptyScope }) })) : (_jsxs(Tabs, { value: activeTab, onValueChange: (value) => updateTab(value), className: "w-full", children: [_jsxs(TabsList, { children: [_jsx(TabsTrigger, { value: "contact-points", children: pageMessages.tabs.contactPoints }), _jsx(TabsTrigger, { value: "addresses", children: pageMessages.tabs.addresses }), _jsx(TabsTrigger, { value: "named-contacts", children: pageMessages.tabs.namedContacts })] }), _jsx(TabsContent, { value: "contact-points", className: "mt-4", children: _jsx(ContactPointsTab, { entityType: activeEntityType, entityId: activeEntityId }) }), _jsx(TabsContent, { value: "addresses", className: "mt-4", children: _jsx(AddressesTab, { entityType: activeEntityType, entityId: activeEntityId }) }), _jsx(TabsContent, { value: "named-contacts", className: "mt-4", children: _jsx(NamedContactsTab, { entityType: activeEntityType, entityId: activeEntityId }) })] }))] }));
39
+ }
40
+ export function ContactPointsTab({ entityType, entityId }) {
41
+ const messages = useIdentityUiMessagesOrDefault();
42
+ const tabMessages = messages.contactPointsTab;
43
+ const [dialogOpen, setDialogOpen] = useState(false);
44
+ const [editing, setEditing] = useState();
45
+ const { data, isPending, refetch } = useContactPoints({
46
+ entityType,
47
+ entityId,
48
+ limit: PAGE_SIZE,
49
+ offset: 0,
50
+ enabled: Boolean(entityType) && Boolean(entityId),
51
+ });
52
+ const { remove } = useContactPointMutation();
53
+ const columns = useMemo(() => [
54
+ {
55
+ accessorKey: "kind",
56
+ header: tabMessages.columns.kind,
57
+ cell: ({ row }) => (_jsx(Badge, { variant: "outline", children: messages.common.contactPointKindLabels[row.original.kind] })),
58
+ },
59
+ {
60
+ accessorKey: "value",
61
+ header: tabMessages.columns.value,
62
+ cell: ({ row }) => _jsx("span", { className: "font-medium", children: row.original.value }),
63
+ },
64
+ {
65
+ accessorKey: "label",
66
+ header: tabMessages.columns.label,
67
+ cell: ({ row }) => (_jsx("span", { className: "text-muted-foreground", children: row.original.label ?? "-" })),
68
+ },
69
+ {
70
+ accessorKey: "isPrimary",
71
+ header: tabMessages.columns.primary,
72
+ cell: ({ row }) => row.original.isPrimary ? (_jsx(Star, { className: "size-3.5 fill-current text-amber-500", "aria-hidden": "true" })) : null,
73
+ },
74
+ {
75
+ id: "actions",
76
+ header: () => _jsx("div", { className: "w-20" }),
77
+ cell: ({ row }) => (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { type: "button", onClick: () => {
78
+ setEditing(row.original);
79
+ setDialogOpen(true);
80
+ }, className: "text-muted-foreground hover:text-foreground", children: _jsx(Pencil, { className: "size-3.5", "aria-hidden": "true" }) }), _jsx("button", { type: "button", onClick: () => {
81
+ if (confirm(tabMessages.actions.deleteConfirm)) {
82
+ remove.mutate(row.original.id, { onSuccess: () => void refetch() });
83
+ }
84
+ }, className: "text-muted-foreground hover:text-destructive", children: _jsx(Trash2, { className: "size-3.5", "aria-hidden": "true" }) })] })),
85
+ },
86
+ ], [refetch, remove, messages.common.contactPointKindLabels, tabMessages]);
87
+ return (_jsxs("div", { className: "flex flex-col gap-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("p", { className: "text-sm text-muted-foreground", children: tabMessages.description }), _jsxs(Button, { size: "sm", onClick: () => {
88
+ setEditing(undefined);
89
+ setDialogOpen(true);
90
+ }, children: [_jsx(Plus, { className: "mr-2 size-4", "aria-hidden": "true" }), tabMessages.add] })] }), _jsx(DataTable, { columns: columns, data: data?.data ?? [], emptyMessage: isPending ? tabMessages.empty.loading : tabMessages.empty.none, pageSize: PAGE_SIZE }), _jsx(ContactPointDialog, { open: dialogOpen, onOpenChange: setDialogOpen, entityType: entityType, entityId: entityId, contactPoint: editing, onSuccess: () => {
91
+ setDialogOpen(false);
92
+ setEditing(undefined);
93
+ void refetch();
94
+ } })] }));
95
+ }
96
+ export function AddressesTab({ entityType, entityId }) {
97
+ const messages = useIdentityUiMessagesOrDefault();
98
+ const tabMessages = messages.addressesTab;
99
+ const [dialogOpen, setDialogOpen] = useState(false);
100
+ const [editing, setEditing] = useState();
101
+ const { data, isPending, refetch } = useAddresses({
102
+ entityType,
103
+ entityId,
104
+ limit: PAGE_SIZE,
105
+ offset: 0,
106
+ enabled: Boolean(entityType) && Boolean(entityId),
107
+ });
108
+ const { remove } = useAddressMutation();
109
+ const columns = useMemo(() => [
110
+ {
111
+ accessorKey: "label",
112
+ header: tabMessages.columns.label,
113
+ cell: ({ row }) => (_jsx(Badge, { variant: "outline", children: messages.common.addressLabelLabels[row.original.label] })),
114
+ },
115
+ {
116
+ accessorKey: "line1",
117
+ header: tabMessages.columns.street,
118
+ cell: ({ row }) => (_jsx("span", { className: "text-muted-foreground", children: row.original.line1 ?? "-" })),
119
+ },
120
+ {
121
+ accessorKey: "city",
122
+ header: tabMessages.columns.city,
123
+ cell: ({ row }) => (_jsx("span", { className: "text-muted-foreground", children: row.original.city ?? "-" })),
124
+ },
125
+ {
126
+ accessorKey: "country",
127
+ header: tabMessages.columns.country,
128
+ cell: ({ row }) => (_jsx("span", { className: "font-mono text-xs text-muted-foreground", children: row.original.country ?? "-" })),
129
+ },
130
+ {
131
+ accessorKey: "isPrimary",
132
+ header: tabMessages.columns.primary,
133
+ cell: ({ row }) => row.original.isPrimary ? (_jsx(Star, { className: "size-3.5 fill-current text-amber-500", "aria-hidden": "true" })) : null,
134
+ },
135
+ {
136
+ id: "actions",
137
+ header: () => _jsx("div", { className: "w-20" }),
138
+ cell: ({ row }) => (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { type: "button", onClick: () => {
139
+ setEditing(row.original);
140
+ setDialogOpen(true);
141
+ }, className: "text-muted-foreground hover:text-foreground", children: _jsx(Pencil, { className: "size-3.5", "aria-hidden": "true" }) }), _jsx("button", { type: "button", onClick: () => {
142
+ if (confirm(tabMessages.actions.deleteConfirm)) {
143
+ remove.mutate(row.original.id, { onSuccess: () => void refetch() });
144
+ }
145
+ }, className: "text-muted-foreground hover:text-destructive", children: _jsx(Trash2, { className: "size-3.5", "aria-hidden": "true" }) })] })),
146
+ },
147
+ ], [refetch, remove, messages.common.addressLabelLabels, tabMessages]);
148
+ return (_jsxs("div", { className: "flex flex-col gap-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("p", { className: "text-sm text-muted-foreground", children: tabMessages.description }), _jsxs(Button, { size: "sm", onClick: () => {
149
+ setEditing(undefined);
150
+ setDialogOpen(true);
151
+ }, children: [_jsx(Plus, { className: "mr-2 size-4", "aria-hidden": "true" }), tabMessages.add] })] }), _jsx(DataTable, { columns: columns, data: data?.data ?? [], emptyMessage: isPending ? tabMessages.empty.loading : tabMessages.empty.none, pageSize: PAGE_SIZE }), _jsx(AddressDialog, { open: dialogOpen, onOpenChange: setDialogOpen, entityType: entityType, entityId: entityId, address: editing, onSuccess: () => {
152
+ setDialogOpen(false);
153
+ setEditing(undefined);
154
+ void refetch();
155
+ } })] }));
156
+ }
157
+ export function NamedContactsTab({ entityType, entityId }) {
158
+ const messages = useIdentityUiMessagesOrDefault();
159
+ const tabMessages = messages.namedContactsTab;
160
+ const [dialogOpen, setDialogOpen] = useState(false);
161
+ const [editing, setEditing] = useState();
162
+ const { data, isPending, refetch } = useNamedContacts({
163
+ entityType,
164
+ entityId,
165
+ limit: PAGE_SIZE,
166
+ offset: 0,
167
+ enabled: Boolean(entityType) && Boolean(entityId),
168
+ });
169
+ const { remove } = useNamedContactMutation();
170
+ const columns = useMemo(() => [
171
+ {
172
+ accessorKey: "role",
173
+ header: tabMessages.columns.role,
174
+ cell: ({ row }) => (_jsx(Badge, { variant: "outline", children: messages.common.namedContactRoleLabels[row.original.role] })),
175
+ },
176
+ {
177
+ accessorKey: "name",
178
+ header: tabMessages.columns.name,
179
+ cell: ({ row }) => _jsx("span", { className: "font-medium", children: row.original.name }),
180
+ },
181
+ {
182
+ accessorKey: "title",
183
+ header: tabMessages.columns.title,
184
+ cell: ({ row }) => (_jsx("span", { className: "text-muted-foreground", children: row.original.title ?? "-" })),
185
+ },
186
+ {
187
+ accessorKey: "email",
188
+ header: tabMessages.columns.email,
189
+ cell: ({ row }) => (_jsx("span", { className: "text-muted-foreground", children: row.original.email ?? "-" })),
190
+ },
191
+ {
192
+ accessorKey: "phone",
193
+ header: tabMessages.columns.phone,
194
+ cell: ({ row }) => (_jsx("span", { className: "text-muted-foreground", children: row.original.phone ?? "-" })),
195
+ },
196
+ {
197
+ accessorKey: "isPrimary",
198
+ header: tabMessages.columns.primary,
199
+ cell: ({ row }) => row.original.isPrimary ? (_jsx(Star, { className: "size-3.5 fill-current text-amber-500", "aria-hidden": "true" })) : null,
200
+ },
201
+ {
202
+ id: "actions",
203
+ header: () => _jsx("div", { className: "w-20" }),
204
+ cell: ({ row }) => (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { type: "button", onClick: () => {
205
+ setEditing(row.original);
206
+ setDialogOpen(true);
207
+ }, className: "text-muted-foreground hover:text-foreground", children: _jsx(Pencil, { className: "size-3.5", "aria-hidden": "true" }) }), _jsx("button", { type: "button", onClick: () => {
208
+ if (confirm(tabMessages.actions.deleteConfirm)) {
209
+ remove.mutate(row.original.id, { onSuccess: () => void refetch() });
210
+ }
211
+ }, className: "text-muted-foreground hover:text-destructive", children: _jsx(Trash2, { className: "size-3.5", "aria-hidden": "true" }) })] })),
212
+ },
213
+ ], [refetch, remove, messages.common.namedContactRoleLabels, tabMessages]);
214
+ return (_jsxs("div", { className: "flex flex-col gap-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("p", { className: "text-sm text-muted-foreground", children: tabMessages.description }), _jsxs(Button, { size: "sm", onClick: () => {
215
+ setEditing(undefined);
216
+ setDialogOpen(true);
217
+ }, children: [_jsx(Plus, { className: "mr-2 size-4", "aria-hidden": "true" }), tabMessages.add] })] }), _jsx(DataTable, { columns: columns, data: data?.data ?? [], emptyMessage: isPending ? tabMessages.empty.loading : tabMessages.empty.none, pageSize: PAGE_SIZE }), _jsx(NamedContactDialog, { open: dialogOpen, onOpenChange: setDialogOpen, entityType: entityType, entityId: entityId, namedContact: editing, onSuccess: () => {
218
+ setDialogOpen(false);
219
+ setEditing(undefined);
220
+ void refetch();
221
+ } })] }));
222
+ }
package/dist/i18n/en.d.ts CHANGED
@@ -37,6 +37,78 @@ export declare const identityUiEn: {
37
37
  other: string;
38
38
  };
39
39
  };
40
+ identityPage: {
41
+ title: string;
42
+ description: string;
43
+ fields: {
44
+ entityType: string;
45
+ entityId: string;
46
+ };
47
+ placeholders: {
48
+ entityType: string;
49
+ entityId: string;
50
+ };
51
+ emptyScope: string;
52
+ tabs: {
53
+ contactPoints: string;
54
+ addresses: string;
55
+ namedContacts: string;
56
+ };
57
+ };
58
+ contactPointsTab: {
59
+ description: string;
60
+ add: string;
61
+ empty: {
62
+ loading: string;
63
+ none: string;
64
+ };
65
+ columns: {
66
+ kind: string;
67
+ value: string;
68
+ label: string;
69
+ primary: string;
70
+ };
71
+ actions: {
72
+ deleteConfirm: string;
73
+ };
74
+ };
75
+ addressesTab: {
76
+ description: string;
77
+ add: string;
78
+ empty: {
79
+ loading: string;
80
+ none: string;
81
+ };
82
+ columns: {
83
+ label: string;
84
+ street: string;
85
+ city: string;
86
+ country: string;
87
+ primary: string;
88
+ };
89
+ actions: {
90
+ deleteConfirm: string;
91
+ };
92
+ };
93
+ namedContactsTab: {
94
+ description: string;
95
+ add: string;
96
+ empty: {
97
+ loading: string;
98
+ none: string;
99
+ };
100
+ columns: {
101
+ role: string;
102
+ name: string;
103
+ title: string;
104
+ email: string;
105
+ phone: string;
106
+ primary: string;
107
+ };
108
+ actions: {
109
+ deleteConfirm: string;
110
+ };
111
+ };
40
112
  addressDialog: {
41
113
  titles: {
42
114
  create: string;
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+GK,CAAA"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuLK,CAAA"}
package/dist/i18n/en.js CHANGED
@@ -37,6 +37,78 @@ export const identityUiEn = {
37
37
  other: "Other",
38
38
  },
39
39
  },
40
+ identityPage: {
41
+ title: "Identity",
42
+ description: "Manage contact points, addresses and named contacts attached to any entity.",
43
+ fields: {
44
+ entityType: "Entity type",
45
+ entityId: "Entity ID",
46
+ },
47
+ placeholders: {
48
+ entityType: "person, organization, supplier...",
49
+ entityId: "pers_... / org_... / supp_...",
50
+ },
51
+ emptyScope: "Enter an entity type and ID above to browse its identity records.",
52
+ tabs: {
53
+ contactPoints: "Contact Points",
54
+ addresses: "Addresses",
55
+ namedContacts: "Named Contacts",
56
+ },
57
+ },
58
+ contactPointsTab: {
59
+ description: "Phone numbers, emails and other communication channels for this entity.",
60
+ add: "Add Contact Point",
61
+ empty: {
62
+ loading: "Loading contact points...",
63
+ none: "No contact points yet.",
64
+ },
65
+ columns: {
66
+ kind: "Kind",
67
+ value: "Value",
68
+ label: "Label",
69
+ primary: "Primary",
70
+ },
71
+ actions: {
72
+ deleteConfirm: "Delete contact point?",
73
+ },
74
+ },
75
+ addressesTab: {
76
+ description: "Physical and postal addresses associated with this entity.",
77
+ add: "Add Address",
78
+ empty: {
79
+ loading: "Loading addresses...",
80
+ none: "No addresses yet.",
81
+ },
82
+ columns: {
83
+ label: "Label",
84
+ street: "Street",
85
+ city: "City",
86
+ country: "Country",
87
+ primary: "Primary",
88
+ },
89
+ actions: {
90
+ deleteConfirm: "Delete address?",
91
+ },
92
+ },
93
+ namedContactsTab: {
94
+ description: "Named people associated with this entity.",
95
+ add: "Add Named Contact",
96
+ empty: {
97
+ loading: "Loading named contacts...",
98
+ none: "No named contacts yet.",
99
+ },
100
+ columns: {
101
+ role: "Role",
102
+ name: "Name",
103
+ title: "Title",
104
+ email: "Email",
105
+ phone: "Phone",
106
+ primary: "Primary",
107
+ },
108
+ actions: {
109
+ deleteConfirm: "Delete named contact?",
110
+ },
111
+ },
40
112
  addressDialog: {
41
113
  titles: {
42
114
  create: "Add Address",
@@ -11,6 +11,78 @@ export type IdentityUiMessages = {
11
11
  contactPointKindLabels: Record<ContactPointKind, string>;
12
12
  namedContactRoleLabels: Record<NamedContactRole, string>;
13
13
  };
14
+ identityPage: {
15
+ title: string;
16
+ description: string;
17
+ fields: {
18
+ entityType: string;
19
+ entityId: string;
20
+ };
21
+ placeholders: {
22
+ entityType: string;
23
+ entityId: string;
24
+ };
25
+ emptyScope: string;
26
+ tabs: {
27
+ contactPoints: string;
28
+ addresses: string;
29
+ namedContacts: string;
30
+ };
31
+ };
32
+ contactPointsTab: {
33
+ description: string;
34
+ add: string;
35
+ empty: {
36
+ loading: string;
37
+ none: string;
38
+ };
39
+ columns: {
40
+ kind: string;
41
+ value: string;
42
+ label: string;
43
+ primary: string;
44
+ };
45
+ actions: {
46
+ deleteConfirm: string;
47
+ };
48
+ };
49
+ addressesTab: {
50
+ description: string;
51
+ add: string;
52
+ empty: {
53
+ loading: string;
54
+ none: string;
55
+ };
56
+ columns: {
57
+ label: string;
58
+ street: string;
59
+ city: string;
60
+ country: string;
61
+ primary: string;
62
+ };
63
+ actions: {
64
+ deleteConfirm: string;
65
+ };
66
+ };
67
+ namedContactsTab: {
68
+ description: string;
69
+ add: string;
70
+ empty: {
71
+ loading: string;
72
+ none: string;
73
+ };
74
+ columns: {
75
+ role: string;
76
+ name: string;
77
+ title: string;
78
+ email: string;
79
+ phone: string;
80
+ primary: string;
81
+ };
82
+ actions: {
83
+ deleteConfirm: string;
84
+ };
85
+ };
14
86
  addressDialog: {
15
87
  titles: {
16
88
  create: string;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,0BAA0B,CAAA;AAEjC,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;AACjD,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;AACzD,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAEzD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAA;QACd,WAAW,EAAE,MAAM,CAAA;QACnB,OAAO,EAAE,MAAM,CAAA;QACf,kBAAkB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QAChD,sBAAsB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;QACxD,sBAAsB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;KACzD,CAAA;IACD,aAAa,EAAE;QACb,MAAM,EAAE;YACN,MAAM,EAAE,MAAM,CAAA;YACd,IAAI,EAAE,MAAM,CAAA;SACb,CAAA;QACD,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;YACb,IAAI,EAAE,MAAM,CAAA;YACZ,MAAM,EAAE,MAAM,CAAA;YACd,UAAU,EAAE,MAAM,CAAA;YAClB,OAAO,EAAE,MAAM,CAAA;YACf,QAAQ,EAAE,MAAM,CAAA;YAChB,QAAQ,EAAE,MAAM,CAAA;YAChB,SAAS,EAAE,MAAM,CAAA;YACjB,KAAK,EAAE,MAAM,CAAA;SACd,CAAA;QACD,YAAY,EAAE;YACZ,QAAQ,EAAE,MAAM,CAAA;SACjB,CAAA;QACD,OAAO,EAAE;YACP,MAAM,EAAE,MAAM,CAAA;SACf,CAAA;KACF,CAAA;IACD,kBAAkB,EAAE;QAClB,MAAM,EAAE;YACN,MAAM,EAAE,MAAM,CAAA;YACd,IAAI,EAAE,MAAM,CAAA;SACb,CAAA;QACD,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAA;YACZ,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;SACd,CAAA;QACD,YAAY,EAAE;YACZ,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;SACd,CAAA;QACD,OAAO,EAAE;YACP,MAAM,EAAE,MAAM,CAAA;SACf,CAAA;QACD,UAAU,EAAE;YACV,aAAa,EAAE,MAAM,CAAA;SACtB,CAAA;KACF,CAAA;IACD,kBAAkB,EAAE;QAClB,MAAM,EAAE;YACN,MAAM,EAAE,MAAM,CAAA;YACd,IAAI,EAAE,MAAM,CAAA;SACb,CAAA;QACD,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAA;YACZ,IAAI,EAAE,MAAM,CAAA;YACZ,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;SACd,CAAA;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,MAAM,CAAA;YACZ,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;SACd,CAAA;QACD,OAAO,EAAE;YACP,MAAM,EAAE,MAAM,CAAA;SACf,CAAA;QACD,UAAU,EAAE;YACV,YAAY,EAAE,MAAM,CAAA;SACrB,CAAA;KACF,CAAA;CACF,CAAA"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,78 @@ export declare const identityUiMessageDefinitions: {
41
41
  other: string;
42
42
  };
43
43
  };
44
+ identityPage: {
45
+ title: string;
46
+ description: string;
47
+ fields: {
48
+ entityType: string;
49
+ entityId: string;
50
+ };
51
+ placeholders: {
52
+ entityType: string;
53
+ entityId: string;
54
+ };
55
+ emptyScope: string;
56
+ tabs: {
57
+ contactPoints: string;
58
+ addresses: string;
59
+ namedContacts: string;
60
+ };
61
+ };
62
+ contactPointsTab: {
63
+ description: string;
64
+ add: string;
65
+ empty: {
66
+ loading: string;
67
+ none: string;
68
+ };
69
+ columns: {
70
+ kind: string;
71
+ value: string;
72
+ label: string;
73
+ primary: string;
74
+ };
75
+ actions: {
76
+ deleteConfirm: string;
77
+ };
78
+ };
79
+ addressesTab: {
80
+ description: string;
81
+ add: string;
82
+ empty: {
83
+ loading: string;
84
+ none: string;
85
+ };
86
+ columns: {
87
+ label: string;
88
+ street: string;
89
+ city: string;
90
+ country: string;
91
+ primary: string;
92
+ };
93
+ actions: {
94
+ deleteConfirm: string;
95
+ };
96
+ };
97
+ namedContactsTab: {
98
+ description: string;
99
+ add: string;
100
+ empty: {
101
+ loading: string;
102
+ none: string;
103
+ };
104
+ columns: {
105
+ role: string;
106
+ name: string;
107
+ title: string;
108
+ email: string;
109
+ phone: string;
110
+ primary: string;
111
+ };
112
+ actions: {
113
+ deleteConfirm: string;
114
+ };
115
+ };
44
116
  addressDialog: {
45
117
  titles: {
46
118
  create: string;
@@ -153,6 +225,78 @@ export declare const identityUiMessageDefinitions: {
153
225
  other: string;
154
226
  };
155
227
  };
228
+ identityPage: {
229
+ title: string;
230
+ description: string;
231
+ fields: {
232
+ entityType: string;
233
+ entityId: string;
234
+ };
235
+ placeholders: {
236
+ entityType: string;
237
+ entityId: string;
238
+ };
239
+ emptyScope: string;
240
+ tabs: {
241
+ contactPoints: string;
242
+ addresses: string;
243
+ namedContacts: string;
244
+ };
245
+ };
246
+ contactPointsTab: {
247
+ description: string;
248
+ add: string;
249
+ empty: {
250
+ loading: string;
251
+ none: string;
252
+ };
253
+ columns: {
254
+ kind: string;
255
+ value: string;
256
+ label: string;
257
+ primary: string;
258
+ };
259
+ actions: {
260
+ deleteConfirm: string;
261
+ };
262
+ };
263
+ addressesTab: {
264
+ description: string;
265
+ add: string;
266
+ empty: {
267
+ loading: string;
268
+ none: string;
269
+ };
270
+ columns: {
271
+ label: string;
272
+ street: string;
273
+ city: string;
274
+ country: string;
275
+ primary: string;
276
+ };
277
+ actions: {
278
+ deleteConfirm: string;
279
+ };
280
+ };
281
+ namedContactsTab: {
282
+ description: string;
283
+ add: string;
284
+ empty: {
285
+ loading: string;
286
+ none: string;
287
+ };
288
+ columns: {
289
+ role: string;
290
+ name: string;
291
+ title: string;
292
+ email: string;
293
+ phone: string;
294
+ primary: string;
295
+ };
296
+ actions: {
297
+ deleteConfirm: string;
298
+ };
299
+ };
156
300
  addressDialog: {
157
301
  titles: {
158
302
  create: string;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/i18n/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAKvD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGe,CAAA;AAExD,MAAM,MAAM,0BAA0B,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;AASnF,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACjC,SAAS,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;CAC9C,sBAOA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAClC,SAAS,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;CAC9C,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CASvC;AAED,wBAAgB,0BAA0B,CAAC,EACzC,QAAQ,EACR,MAAM,EACN,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACjC,SAAS,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;CAC9C,2CAWA;AAED,eAAO,MAAM,iBAAiB,4CAA4B,CAAA;AAC1D,eAAO,MAAM,qBAAqB,0BAAgC,CAAA;AAElE,wBAAgB,0BAA0B,yCAEzC;AAED,wBAAgB,8BAA8B,uBAE7C"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/i18n/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAKvD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGe,CAAA;AAExD,MAAM,MAAM,0BAA0B,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;AASnF,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACjC,SAAS,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;CAC9C,sBAOA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAClC,SAAS,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;CAC9C,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CASvC;AAED,wBAAgB,0BAA0B,CAAC,EACzC,QAAQ,EACR,MAAM,EACN,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACjC,SAAS,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;CAC9C,2CAWA;AAED,eAAO,MAAM,iBAAiB,4CAA4B,CAAA;AAC1D,eAAO,MAAM,qBAAqB,0BAAgC,CAAA;AAElE,wBAAgB,0BAA0B,yCAEzC;AAED,wBAAgB,8BAA8B,uBAE7C"}
package/dist/i18n/ro.d.ts CHANGED
@@ -37,6 +37,78 @@ export declare const identityUiRo: {
37
37
  other: string;
38
38
  };
39
39
  };
40
+ identityPage: {
41
+ title: string;
42
+ description: string;
43
+ fields: {
44
+ entityType: string;
45
+ entityId: string;
46
+ };
47
+ placeholders: {
48
+ entityType: string;
49
+ entityId: string;
50
+ };
51
+ emptyScope: string;
52
+ tabs: {
53
+ contactPoints: string;
54
+ addresses: string;
55
+ namedContacts: string;
56
+ };
57
+ };
58
+ contactPointsTab: {
59
+ description: string;
60
+ add: string;
61
+ empty: {
62
+ loading: string;
63
+ none: string;
64
+ };
65
+ columns: {
66
+ kind: string;
67
+ value: string;
68
+ label: string;
69
+ primary: string;
70
+ };
71
+ actions: {
72
+ deleteConfirm: string;
73
+ };
74
+ };
75
+ addressesTab: {
76
+ description: string;
77
+ add: string;
78
+ empty: {
79
+ loading: string;
80
+ none: string;
81
+ };
82
+ columns: {
83
+ label: string;
84
+ street: string;
85
+ city: string;
86
+ country: string;
87
+ primary: string;
88
+ };
89
+ actions: {
90
+ deleteConfirm: string;
91
+ };
92
+ };
93
+ namedContactsTab: {
94
+ description: string;
95
+ add: string;
96
+ empty: {
97
+ loading: string;
98
+ none: string;
99
+ };
100
+ columns: {
101
+ role: string;
102
+ name: string;
103
+ title: string;
104
+ email: string;
105
+ phone: string;
106
+ primary: string;
107
+ };
108
+ actions: {
109
+ deleteConfirm: string;
110
+ };
111
+ };
40
112
  addressDialog: {
41
113
  titles: {
42
114
  create: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ro.d.ts","sourceRoot":"","sources":["../../src/i18n/ro.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+GK,CAAA"}
1
+ {"version":3,"file":"ro.d.ts","sourceRoot":"","sources":["../../src/i18n/ro.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0LK,CAAA"}
package/dist/i18n/ro.js CHANGED
@@ -37,6 +37,78 @@ export const identityUiRo = {
37
37
  other: "Altul",
38
38
  },
39
39
  },
40
+ identityPage: {
41
+ title: "Identitate",
42
+ description: "Gestioneaza punctele de contact, adresele si contactele nominale atasate oricarei entitati.",
43
+ fields: {
44
+ entityType: "Tip entitate",
45
+ entityId: "ID entitate",
46
+ },
47
+ placeholders: {
48
+ entityType: "person, organization, supplier...",
49
+ entityId: "pers_... / org_... / supp_...",
50
+ },
51
+ emptyScope: "Introdu mai sus tipul entitatii si ID-ul pentru a vedea inregistrarile de identitate.",
52
+ tabs: {
53
+ contactPoints: "Puncte de contact",
54
+ addresses: "Adrese",
55
+ namedContacts: "Contacte nominale",
56
+ },
57
+ },
58
+ contactPointsTab: {
59
+ description: "Numere de telefon, emailuri si alte canale de comunicare pentru aceasta entitate.",
60
+ add: "Adauga punct de contact",
61
+ empty: {
62
+ loading: "Se incarca punctele de contact...",
63
+ none: "Nu exista puncte de contact inca.",
64
+ },
65
+ columns: {
66
+ kind: "Tip",
67
+ value: "Valoare",
68
+ label: "Eticheta",
69
+ primary: "Primar",
70
+ },
71
+ actions: {
72
+ deleteConfirm: "Stergi punctul de contact?",
73
+ },
74
+ },
75
+ addressesTab: {
76
+ description: "Adrese fizice si postale asociate acestei entitati.",
77
+ add: "Adauga adresa",
78
+ empty: {
79
+ loading: "Se incarca adresele...",
80
+ none: "Nu exista adrese inca.",
81
+ },
82
+ columns: {
83
+ label: "Eticheta",
84
+ street: "Strada",
85
+ city: "Oras",
86
+ country: "Tara",
87
+ primary: "Primara",
88
+ },
89
+ actions: {
90
+ deleteConfirm: "Stergi adresa?",
91
+ },
92
+ },
93
+ namedContactsTab: {
94
+ description: "Persoane nominale asociate acestei entitati.",
95
+ add: "Adauga contact nominal",
96
+ empty: {
97
+ loading: "Se incarca contactele nominale...",
98
+ none: "Nu exista contacte nominale inca.",
99
+ },
100
+ columns: {
101
+ role: "Rol",
102
+ name: "Nume",
103
+ title: "Titlu",
104
+ email: "Email",
105
+ phone: "Telefon",
106
+ primary: "Primar",
107
+ },
108
+ actions: {
109
+ deleteConfirm: "Stergi contactul nominal?",
110
+ },
111
+ },
40
112
  addressDialog: {
41
113
  titles: {
42
114
  create: "Adauga Adresa",
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { AddressDialog, type AddressDialogProps } from "./components/address-dialog.js";
2
2
  export { ContactPointDialog, type ContactPointDialogProps, } from "./components/contact-point-dialog.js";
3
+ export { AddressesTab, ContactPointsTab, type IdentityEntityTabProps, IdentityPage, type IdentityPageProps, type IdentityTab, NamedContactsTab, } from "./components/identity-page.js";
3
4
  export { NamedContactDialog, type NamedContactDialogProps, } from "./components/named-contact-dialog.js";
4
5
  export { getIdentityUiI18n, type IdentityUiMessageOverrides, type IdentityUiMessages, IdentityUiMessagesProvider, identityUiEn, identityUiMessageDefinitions, identityUiRo, resolveIdentityUiMessages, useIdentityUiI18n, useIdentityUiI18nOrDefault, useIdentityUiMessages, useIdentityUiMessagesOrDefault, } from "./i18n/index.js";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACvF,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,iBAAiB,EACjB,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,0BAA0B,EAC1B,YAAY,EACZ,4BAA4B,EAC5B,YAAY,EACZ,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACvF,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,gBAAgB,GACjB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,iBAAiB,EACjB,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,0BAA0B,EAC1B,YAAY,EACZ,4BAA4B,EAC5B,YAAY,EACZ,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,iBAAiB,CAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { AddressDialog } from "./components/address-dialog.js";
2
2
  export { ContactPointDialog, } from "./components/contact-point-dialog.js";
3
+ export { AddressesTab, ContactPointsTab, IdentityPage, NamedContactsTab, } from "./components/identity-page.js";
3
4
  export { NamedContactDialog, } from "./components/named-contact-dialog.js";
4
5
  export { getIdentityUiI18n, IdentityUiMessagesProvider, identityUiEn, identityUiMessageDefinitions, identityUiRo, resolveIdentityUiMessages, useIdentityUiI18n, useIdentityUiI18nOrDefault, useIdentityUiMessages, useIdentityUiMessagesOrDefault, } from "./i18n/index.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyantjs/identity-ui",
3
- "version": "0.30.7",
3
+ "version": "0.31.1",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -46,11 +46,11 @@
46
46
  "react-dom": "^19.0.0",
47
47
  "react-hook-form": "^7.60.0",
48
48
  "zod": "^4.3.6",
49
- "@voyantjs/identity-react": "0.30.7",
50
- "@voyantjs/ui": "0.30.7"
49
+ "@voyantjs/identity-react": "0.31.1",
50
+ "@voyantjs/ui": "0.31.1"
51
51
  },
52
52
  "dependencies": {
53
- "@voyantjs/i18n": "0.30.7"
53
+ "@voyantjs/i18n": "0.31.1"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@tanstack/react-query": "^5.96.2",
@@ -64,10 +64,10 @@
64
64
  "typescript": "^6.0.2",
65
65
  "vitest": "^4.1.2",
66
66
  "zod": "^4.3.6",
67
- "@voyantjs/i18n": "0.30.7",
68
- "@voyantjs/identity-react": "0.30.7",
67
+ "@voyantjs/i18n": "0.31.1",
68
+ "@voyantjs/identity-react": "0.31.1",
69
69
  "@voyantjs/voyant-typescript-config": "0.1.0",
70
- "@voyantjs/ui": "0.30.7"
70
+ "@voyantjs/ui": "0.31.1"
71
71
  },
72
72
  "files": [
73
73
  "dist",