@sudobility/entity-components 1.0.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/dist/__tests__/setup.d.ts +1 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/components/EntityCard.d.ts +16 -0
- package/dist/components/EntityCard.d.ts.map +1 -0
- package/dist/components/EntityList.d.ts +20 -0
- package/dist/components/EntityList.d.ts.map +1 -0
- package/dist/components/EntitySelector.d.ts +20 -0
- package/dist/components/EntitySelector.d.ts.map +1 -0
- package/dist/components/InvitationForm.d.ts +16 -0
- package/dist/components/InvitationForm.d.ts.map +1 -0
- package/dist/components/InvitationList.d.ts +24 -0
- package/dist/components/InvitationList.d.ts.map +1 -0
- package/dist/components/MemberList.d.ts +24 -0
- package/dist/components/MemberList.d.ts.map +1 -0
- package/dist/components/MemberRoleSelector.d.ts +16 -0
- package/dist/components/MemberRoleSelector.d.ts.map +1 -0
- package/dist/components/index.d.ts +11 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +3392 -0
- package/dist/index.umd.js +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EntityWithRole } from '@sudobility/types';
|
|
2
|
+
export interface EntityCardProps {
|
|
3
|
+
/** Entity to display */
|
|
4
|
+
entity: EntityWithRole;
|
|
5
|
+
/** Whether this is the currently selected entity */
|
|
6
|
+
isSelected?: boolean;
|
|
7
|
+
/** Click handler */
|
|
8
|
+
onClick?: () => void;
|
|
9
|
+
/** Additional class names */
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Card component for displaying an entity.
|
|
14
|
+
*/
|
|
15
|
+
export declare function EntityCard({ entity, isSelected, onClick, className, }: EntityCardProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=EntityCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityCard.d.ts","sourceRoot":"","sources":["../../src/components/EntityCard.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,mBAAmB,CAAC;AAGpE,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,UAAkB,EAClB,OAAO,EACP,SAAS,GACV,EAAE,eAAe,2CAsEjB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { EntityWithRole } from '@sudobility/types';
|
|
2
|
+
export interface EntityListProps {
|
|
3
|
+
/** Entities to display */
|
|
4
|
+
entities: EntityWithRole[];
|
|
5
|
+
/** Currently selected entity slug */
|
|
6
|
+
selectedSlug?: string | null;
|
|
7
|
+
/** Selection handler */
|
|
8
|
+
onSelect?: (entity: EntityWithRole) => void;
|
|
9
|
+
/** Whether data is loading */
|
|
10
|
+
isLoading?: boolean;
|
|
11
|
+
/** Empty state message */
|
|
12
|
+
emptyMessage?: string;
|
|
13
|
+
/** Additional class names */
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* List component for displaying multiple entities.
|
|
18
|
+
*/
|
|
19
|
+
export declare function EntityList({ entities, selectedSlug, onSelect, isLoading, emptyMessage, className, }: EntityListProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=EntityList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityList.d.ts","sourceRoot":"","sources":["../../src/components/EntityList.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC5C,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,SAAiB,EACjB,YAAoC,EACpC,SAAS,GACV,EAAE,eAAe,2CAkCjB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { EntityWithRole } from '@sudobility/types';
|
|
2
|
+
export interface EntitySelectorProps {
|
|
3
|
+
/** Available entities */
|
|
4
|
+
entities: EntityWithRole[];
|
|
5
|
+
/** Currently selected entity */
|
|
6
|
+
currentEntity: EntityWithRole | null;
|
|
7
|
+
/** Selection handler */
|
|
8
|
+
onSelect: (entity: EntityWithRole) => void;
|
|
9
|
+
/** Handler for creating a new organization */
|
|
10
|
+
onCreateNew?: () => void;
|
|
11
|
+
/** Whether data is loading */
|
|
12
|
+
isLoading?: boolean;
|
|
13
|
+
/** Additional class names */
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Dropdown selector for switching between entities.
|
|
18
|
+
*/
|
|
19
|
+
export declare function EntitySelector({ entities, currentEntity, onSelect, onCreateNew, isLoading, className, }: EntitySelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=EntitySelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntitySelector.d.ts","sourceRoot":"","sources":["../../src/components/EntitySelector.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,WAAW,mBAAmB;IAClC,yBAAyB;IACzB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,gCAAgC;IAChC,aAAa,EAAE,cAAc,GAAG,IAAI,CAAC;IACrC,wBAAwB;IACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,WAAW,EACX,SAAiB,EACjB,SAAS,GACV,EAAE,mBAAmB,2CA0HrB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EntityRole, InviteMemberRequest } from '@sudobility/types';
|
|
2
|
+
export interface InvitationFormProps {
|
|
3
|
+
/** Submit handler */
|
|
4
|
+
onSubmit: (request: InviteMemberRequest) => Promise<void>;
|
|
5
|
+
/** Whether submission is in progress */
|
|
6
|
+
isSubmitting?: boolean;
|
|
7
|
+
/** Default role for new invitations */
|
|
8
|
+
defaultRole?: EntityRole;
|
|
9
|
+
/** Additional class names */
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Form for inviting new members.
|
|
14
|
+
*/
|
|
15
|
+
export declare function InvitationForm({ onSubmit, isSubmitting, defaultRole, className, }: InvitationFormProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=InvitationForm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvitationForm.d.ts","sourceRoot":"","sources":["../../src/components/InvitationForm.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,UAAU,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAIzE,MAAM,WAAW,mBAAmB;IAClC,qBAAqB;IACrB,QAAQ,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,wCAAwC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uCAAuC;IACvC,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,YAAoB,EACpB,WAA+B,EAC/B,SAAS,GACV,EAAE,mBAAmB,2CAkFrB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EntityInvitation } from '@sudobility/types';
|
|
2
|
+
export interface InvitationListProps {
|
|
3
|
+
/** Invitations to display */
|
|
4
|
+
invitations: EntityInvitation[];
|
|
5
|
+
/** Whether this is for entity admin (can cancel) or user (can accept/decline) */
|
|
6
|
+
mode: 'admin' | 'user';
|
|
7
|
+
/** Cancel invitation handler (admin mode) */
|
|
8
|
+
onCancel?: (invitationId: string) => void;
|
|
9
|
+
/** Accept invitation handler (user mode) */
|
|
10
|
+
onAccept?: (token: string) => void;
|
|
11
|
+
/** Decline invitation handler (user mode) */
|
|
12
|
+
onDecline?: (token: string) => void;
|
|
13
|
+
/** Whether data is loading */
|
|
14
|
+
isLoading?: boolean;
|
|
15
|
+
/** Empty state message */
|
|
16
|
+
emptyMessage?: string;
|
|
17
|
+
/** Additional class names */
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* List component for displaying invitations.
|
|
22
|
+
*/
|
|
23
|
+
export declare function InvitationList({ invitations, mode, onCancel, onAccept, onDecline, isLoading, emptyMessage, className, }: InvitationListProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
//# sourceMappingURL=InvitationList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvitationList.d.ts","sourceRoot":"","sources":["../../src/components/InvitationList.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,mBAAmB,CAAC;AAGtE,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,iFAAiF;IACjF,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,6CAA6C;IAC7C,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAiB,EACjB,YAAuC,EACvC,SAAS,GACV,EAAE,mBAAmB,2CAyCrB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EntityMember, EntityRole } from '@sudobility/types';
|
|
2
|
+
export interface MemberListProps {
|
|
3
|
+
/** Members to display */
|
|
4
|
+
members: EntityMember[];
|
|
5
|
+
/** Current user's ID (to identify self) */
|
|
6
|
+
currentUserId?: string;
|
|
7
|
+
/** Whether current user can manage members */
|
|
8
|
+
canManage?: boolean;
|
|
9
|
+
/** Role change handler */
|
|
10
|
+
onRoleChange?: (memberId: string, role: EntityRole) => void;
|
|
11
|
+
/** Remove member handler */
|
|
12
|
+
onRemove?: (memberId: string) => void;
|
|
13
|
+
/** Whether data is loading */
|
|
14
|
+
isLoading?: boolean;
|
|
15
|
+
/** Empty state message */
|
|
16
|
+
emptyMessage?: string;
|
|
17
|
+
/** Additional class names */
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* List component for displaying entity members.
|
|
22
|
+
*/
|
|
23
|
+
export declare function MemberList({ members, currentUserId, canManage, onRoleChange, onRemove, isLoading, emptyMessage, className, }: MemberListProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
//# sourceMappingURL=MemberList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemberList.d.ts","sourceRoot":"","sources":["../../src/components/MemberList.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIlE,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5D,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,aAAa,EACb,SAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,SAAiB,EACjB,YAAiC,EACjC,SAAS,GACV,EAAE,eAAe,2CAoCjB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EntityRole } from '@sudobility/types';
|
|
2
|
+
export interface MemberRoleSelectorProps {
|
|
3
|
+
/** Current role value */
|
|
4
|
+
value: EntityRole;
|
|
5
|
+
/** Change handler */
|
|
6
|
+
onChange: (role: EntityRole) => void;
|
|
7
|
+
/** Whether the selector is disabled */
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
/** Additional class names */
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Dropdown selector for member roles.
|
|
14
|
+
*/
|
|
15
|
+
export declare function MemberRoleSelector({ value, onChange, disabled, className, }: MemberRoleSelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=MemberRoleSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemberRoleSelector.d.ts","sourceRoot":"","sources":["../../src/components/MemberRoleSelector.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,MAAM,WAAW,uBAAuB;IACtC,yBAAyB;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,qBAAqB;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACrC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkCD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,SAAS,GACV,EAAE,uBAAuB,2CAkFzB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Component Exports
|
|
3
|
+
*/
|
|
4
|
+
export { EntityCard, type EntityCardProps } from './EntityCard';
|
|
5
|
+
export { EntityList, type EntityListProps } from './EntityList';
|
|
6
|
+
export { EntitySelector, type EntitySelectorProps } from './EntitySelector';
|
|
7
|
+
export { MemberList, type MemberListProps } from './MemberList';
|
|
8
|
+
export { MemberRoleSelector, type MemberRoleSelectorProps, } from './MemberRoleSelector';
|
|
9
|
+
export { InvitationForm, type InvitationFormProps } from './InvitationForm';
|
|
10
|
+
export { InvitationList, type InvitationListProps } from './InvitationList';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Entity Components Library
|
|
3
|
+
* @description UI components for entity/organization management
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```tsx
|
|
7
|
+
* import {
|
|
8
|
+
* EntitySelector,
|
|
9
|
+
* EntityList,
|
|
10
|
+
* MemberList,
|
|
11
|
+
* InvitationForm,
|
|
12
|
+
* } from '@sudobility/entity-components';
|
|
13
|
+
*
|
|
14
|
+
* function WorkspaceSwitcher() {
|
|
15
|
+
* return (
|
|
16
|
+
* <EntitySelector
|
|
17
|
+
* entities={entities}
|
|
18
|
+
* currentEntity={currentEntity}
|
|
19
|
+
* onSelect={handleSelect}
|
|
20
|
+
* onCreateNew={handleCreateNew}
|
|
21
|
+
* />
|
|
22
|
+
* );
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export { EntityCard, type EntityCardProps, EntityList, type EntityListProps, EntitySelector, type EntitySelectorProps, MemberList, type MemberListProps, MemberRoleSelector, type MemberRoleSelectorProps, InvitationForm, type InvitationFormProps, InvitationList, type InvitationListProps, } from './components';
|
|
27
|
+
export { cn } from './lib/utils';
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,UAAU,EACV,KAAK,eAAe,EACpB,cAAc,EACd,KAAK,mBAAmB,EACxB,UAAU,EACV,KAAK,eAAe,EACpB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,cAAc,EACd,KAAK,mBAAmB,EACxB,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC"}
|