@cloudflare/kumo 1.2.0 → 1.3.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 +6 -0
- package/ai/component-registry.json +92 -3
- package/ai/component-registry.md +2 -8
- package/dist/.build-complete +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/{dialog-BxXPA2vI.js → dialog-x9n9wI13.js} +18 -18
- package/dist/dialog-x9n9wI13.js.map +1 -0
- package/dist/index.js +268 -122
- package/dist/index.js.map +1 -1
- package/dist/{popover-BfGLC2s6.js → popover-CtKDH8Yc.js} +8 -8
- package/dist/{popover-BfGLC2s6.js.map → popover-CtKDH8Yc.js.map} +1 -1
- package/dist/src/blocks/delete-resource/delete-resource.d.ts +46 -0
- package/dist/src/blocks/delete-resource/delete-resource.d.ts.map +1 -0
- package/dist/src/blocks/delete-resource/index.d.ts +2 -0
- package/dist/src/blocks/delete-resource/index.d.ts.map +1 -0
- package/dist/src/components/dialog/dialog.d.ts +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/styles/kumo-standalone.css +1 -1
- package/package.json +1 -1
- package/dist/dialog-BxXPA2vI.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1250,7 +1250,7 @@
|
|
|
1250
1250
|
"xl": "Extra large dialog for detailed views"
|
|
1251
1251
|
},
|
|
1252
1252
|
"classes": {
|
|
1253
|
-
"base": "min-w-96",
|
|
1253
|
+
"base": "sm:min-w-96",
|
|
1254
1254
|
"sm": "min-w-72",
|
|
1255
1255
|
"lg": "min-w-[32rem]",
|
|
1256
1256
|
"xl": "min-w-[48rem]"
|
|
@@ -1260,7 +1260,7 @@
|
|
|
1260
1260
|
},
|
|
1261
1261
|
"examples": [
|
|
1262
1262
|
"<Dialog.Root>\n <Dialog.Trigger render={(p) => <Button {...p}>Click me</Button>} />\n <Dialog className=\"p-8\">\n <div className=\"mb-4 flex items-start justify-between gap-4\">\n <Dialog.Title className=\"text-2xl font-semibold\">\n Modal Title\n </Dialog.Title>\n <Dialog.Close\n aria-label=\"Close\"\n render={(props) => (\n <Button\n {...props}\n variant=\"secondary\"\n shape=\"square\"\n icon={<X />}\n />\n )}\n />\n </div>\n <Dialog.Description className=\"text-kumo-subtle\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do\n eiusmod tempor incididunt ut labore et dolore magna aliqua.\n </Dialog.Description>\n </Dialog>\n </Dialog.Root>",
|
|
1263
|
-
"<Dialog.Root>\n <Dialog.Trigger render={(p) => <Button {...p}>Delete</Button>} />\n <Dialog className=\"p-8\">\n <div className=\"mb-4 flex items-start justify-between gap-4\">\n <Dialog.Title className=\"text-2xl font-semibold\">\n Modal Title\n </Dialog.Title>\n <Dialog.Close\n aria-label=\"Close\"\n render={(props) => (\n <Button\n {...props}\n variant=\"secondary\"\n shape=\"square\"\n icon={<X />}\n />\n )}\n />\n </div>\n <Dialog.Description className=\"text-kumo-subtle\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do\n eiusmod tempor incididunt ut labore et dolore magna aliqua.\n </Dialog.Description>\n <div className=\"mt-8 flex justify-end gap-2\">\n <
|
|
1263
|
+
"<Dialog.Root>\n <Dialog.Trigger render={(p) => <Button {...p}>Delete</Button>} />\n <Dialog className=\"p-8\">\n <div className=\"mb-4 flex items-start justify-between gap-4\">\n <Dialog.Title className=\"text-2xl font-semibold\">\n Modal Title\n </Dialog.Title>\n <Dialog.Close\n aria-label=\"Close\"\n render={(props) => (\n <Button\n {...props}\n variant=\"secondary\"\n shape=\"square\"\n icon={<X />}\n />\n )}\n />\n </div>\n <Dialog.Description className=\"text-kumo-subtle\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do\n eiusmod tempor incididunt ut labore et dolore magna aliqua.\n </Dialog.Description>\n <div className=\"mt-8 flex justify-end gap-2\">\n <Button variant=\"secondary\">Cancel</Button>\n <Dialog.Close\n render={(props) => (\n <Button variant=\"destructive\" {...props}>\n Delete\n </Button>\n )}\n />\n </div>\n </Dialog>\n </Dialog.Root>"
|
|
1264
1264
|
],
|
|
1265
1265
|
"colors": [
|
|
1266
1266
|
"bg-kumo-base",
|
|
@@ -3505,6 +3505,92 @@
|
|
|
3505
3505
|
}
|
|
3506
3506
|
},
|
|
3507
3507
|
"blocks": {
|
|
3508
|
+
"DeleteResource": {
|
|
3509
|
+
"name": "DeleteResource",
|
|
3510
|
+
"type": "block",
|
|
3511
|
+
"description": "DeleteResource component",
|
|
3512
|
+
"importPath": "@cloudflare/kumo",
|
|
3513
|
+
"category": "Other",
|
|
3514
|
+
"props": {
|
|
3515
|
+
"size": {
|
|
3516
|
+
"type": "enum",
|
|
3517
|
+
"optional": true,
|
|
3518
|
+
"values": [
|
|
3519
|
+
"sm",
|
|
3520
|
+
"base"
|
|
3521
|
+
],
|
|
3522
|
+
"descriptions": {
|
|
3523
|
+
"sm": "Small dialog for simple delete confirmations",
|
|
3524
|
+
"base": "Default delete confirmation dialog size"
|
|
3525
|
+
},
|
|
3526
|
+
"default": "base"
|
|
3527
|
+
},
|
|
3528
|
+
"open": {
|
|
3529
|
+
"type": "boolean",
|
|
3530
|
+
"required": true,
|
|
3531
|
+
"description": "Whether the dialog is open"
|
|
3532
|
+
},
|
|
3533
|
+
"resourceType": {
|
|
3534
|
+
"type": "string",
|
|
3535
|
+
"required": true,
|
|
3536
|
+
"description": "The type of resource being deleted (e.g., \"Zone\", \"Worker\", \"KV Namespace\")"
|
|
3537
|
+
},
|
|
3538
|
+
"resourceName": {
|
|
3539
|
+
"type": "string",
|
|
3540
|
+
"required": true,
|
|
3541
|
+
"description": "The name of the specific resource being deleted"
|
|
3542
|
+
},
|
|
3543
|
+
"isDeleting": {
|
|
3544
|
+
"type": "boolean",
|
|
3545
|
+
"optional": true,
|
|
3546
|
+
"description": "Whether the delete action is in progress"
|
|
3547
|
+
},
|
|
3548
|
+
"caseSensitive": {
|
|
3549
|
+
"type": "boolean",
|
|
3550
|
+
"optional": true,
|
|
3551
|
+
"description": "Whether the confirmation input should be case-sensitive (default: true)"
|
|
3552
|
+
},
|
|
3553
|
+
"deleteButtonText": {
|
|
3554
|
+
"type": "string",
|
|
3555
|
+
"optional": true,
|
|
3556
|
+
"description": "Custom delete button text (defaults to \"Delete {resourceType}\")"
|
|
3557
|
+
},
|
|
3558
|
+
"className": {
|
|
3559
|
+
"type": "string",
|
|
3560
|
+
"optional": true,
|
|
3561
|
+
"description": "Additional className for the dialog"
|
|
3562
|
+
},
|
|
3563
|
+
"errorMessage": {
|
|
3564
|
+
"type": "string",
|
|
3565
|
+
"optional": true,
|
|
3566
|
+
"description": "Error message to display if the delete action fails"
|
|
3567
|
+
}
|
|
3568
|
+
},
|
|
3569
|
+
"examples": [
|
|
3570
|
+
"<>\n <Button variant=\"destructive\" onClick={() => setOpen(true)}>\n Delete Zone\n </Button>\n <DeleteResource\n open={open}\n onOpenChange={setOpen}\n resourceType=\"Zone\"\n resourceName=\"example.com\"\n onDelete={handleDelete}\n isDeleting={isDeleting}\n />\n </>",
|
|
3571
|
+
"<>\n <Button variant=\"destructive\" onClick={() => setOpen(true)}>\n Delete Worker\n </Button>\n <DeleteResource\n open={open}\n onOpenChange={setOpen}\n resourceType=\"Worker\"\n resourceName=\"api-gateway-worker\"\n onDelete={handleDelete}\n isDeleting={isDeleting}\n />\n </>",
|
|
3572
|
+
"<>\n <Button variant=\"destructive\" onClick={() => setOpen(true)}>\n Delete Zone\n </Button>\n <DeleteResource\n open={open}\n onOpenChange={setOpen}\n resourceType=\"Zone\"\n resourceName=\"example.com\"\n onDelete={handleDelete}\n isDeleting={isDeleting}\n errorMessage={errorMsg}\n />\n </>"
|
|
3573
|
+
],
|
|
3574
|
+
"colors": [
|
|
3575
|
+
"bg-kumo-fill",
|
|
3576
|
+
"bg-kumo-tint",
|
|
3577
|
+
"border-kumo-line",
|
|
3578
|
+
"text-kumo-default",
|
|
3579
|
+
"text-kumo-subtle"
|
|
3580
|
+
],
|
|
3581
|
+
"files": [
|
|
3582
|
+
"delete-resource/delete-resource.tsx"
|
|
3583
|
+
],
|
|
3584
|
+
"dependencies": [
|
|
3585
|
+
"Banner",
|
|
3586
|
+
"Button",
|
|
3587
|
+
"Dialog",
|
|
3588
|
+
"DialogClose",
|
|
3589
|
+
"DialogRoot",
|
|
3590
|
+
"DialogTitle",
|
|
3591
|
+
"Input"
|
|
3592
|
+
]
|
|
3593
|
+
},
|
|
3508
3594
|
"PageHeader": {
|
|
3509
3595
|
"name": "PageHeader",
|
|
3510
3596
|
"type": "block",
|
|
@@ -3684,7 +3770,8 @@
|
|
|
3684
3770
|
"Label",
|
|
3685
3771
|
"Link",
|
|
3686
3772
|
"SensitiveInput",
|
|
3687
|
-
"Table"
|
|
3773
|
+
"Table",
|
|
3774
|
+
"DeleteResource"
|
|
3688
3775
|
]
|
|
3689
3776
|
},
|
|
3690
3777
|
"byName": [
|
|
@@ -3699,6 +3786,7 @@
|
|
|
3699
3786
|
"Combobox",
|
|
3700
3787
|
"CommandPalette",
|
|
3701
3788
|
"DateRangePicker",
|
|
3789
|
+
"DeleteResource",
|
|
3702
3790
|
"Dialog",
|
|
3703
3791
|
"DropdownMenu",
|
|
3704
3792
|
"Empty",
|
|
@@ -3765,6 +3853,7 @@
|
|
|
3765
3853
|
"Tooltip"
|
|
3766
3854
|
],
|
|
3767
3855
|
"block": [
|
|
3856
|
+
"DeleteResource",
|
|
3768
3857
|
"PageHeader",
|
|
3769
3858
|
"ResourceListPage"
|
|
3770
3859
|
]
|
package/ai/component-registry.md
CHANGED
|
@@ -1530,13 +1530,7 @@ Usage:
|
|
|
1530
1530
|
eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
|
1531
1531
|
</Dialog.Description>
|
|
1532
1532
|
<div className="mt-8 flex justify-end gap-2">
|
|
1533
|
-
<
|
|
1534
|
-
render={(props) => (
|
|
1535
|
-
<Button variant="secondary" {...props}>
|
|
1536
|
-
Cancel
|
|
1537
|
-
</Button>
|
|
1538
|
-
)}
|
|
1539
|
-
/>
|
|
1533
|
+
<Button variant="secondary">Cancel</Button>
|
|
1540
1534
|
<Dialog.Close
|
|
1541
1535
|
render={(props) => (
|
|
1542
1536
|
<Button variant="destructive" {...props}>
|
|
@@ -4032,4 +4026,4 @@ Multi-line textarea input with Input variants and InputArea-specific dimensions
|
|
|
4032
4026
|
- **Navigation:** CommandPalette, MenuBar, Pagination, Tabs
|
|
4033
4027
|
- **Overlay:** Dialog, DropdownMenu, Popover, Tooltip
|
|
4034
4028
|
- **Layout:** Grid, Surface, PageHeader, ResourceListPage
|
|
4035
|
-
- **Other:** Label, Link, SensitiveInput, Table
|
|
4029
|
+
- **Other:** Label, Link, SensitiveInput, Table, DeleteResource
|
package/dist/.build-complete
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1770731526552
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { g as r, K as s, P, f as a, c as p, e as t, a as v, d as O, b as i } from "../popover-CtKDH8Yc.js";
|
|
3
3
|
export {
|
|
4
4
|
r as KUMO_POPOVER_DEFAULT_VARIANTS,
|
|
5
5
|
s as KUMO_POPOVER_VARIANTS,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsxs as r, jsx as
|
|
2
|
+
import { jsxs as r, jsx as s } from "react/jsx-runtime";
|
|
3
3
|
import { S as c } from "./surface-BIC6CXiz.js";
|
|
4
|
-
import { c as
|
|
5
|
-
import { a9 as g, aa as d, ab as
|
|
6
|
-
const
|
|
4
|
+
import { c as o } from "./cn-Bhsu1vx2.js";
|
|
5
|
+
import { a9 as g, aa as d, ab as m, ac as p, ad as D, ae as f, af as u, ag as x } from "./vendor-base-ui-kX0wjdav.js";
|
|
6
|
+
const w = {
|
|
7
7
|
size: {
|
|
8
8
|
base: {
|
|
9
|
-
classes: "min-w-96",
|
|
9
|
+
classes: "sm:min-w-96",
|
|
10
10
|
description: "Default dialog width"
|
|
11
11
|
},
|
|
12
12
|
sm: {
|
|
@@ -25,14 +25,14 @@ const y = {
|
|
|
25
25
|
}, t = {
|
|
26
26
|
size: "base"
|
|
27
27
|
};
|
|
28
|
-
function
|
|
28
|
+
function y({
|
|
29
29
|
size: i = t.size
|
|
30
30
|
} = {}) {
|
|
31
|
-
return
|
|
31
|
+
return o(
|
|
32
32
|
// Base styles
|
|
33
|
-
"shadow-m z-modal fixed top-1/2 left-1/2 max-w-[calc(100vw-3rem)] -translate-x-1/2 -translate-y-1/2 overflow-hidden rounded-xl bg-kumo-base text-kumo-default duration-150 data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0",
|
|
33
|
+
"shadow-m z-modal fixed top-1/2 left-1/2 w-full sm:w-auto max-w-[calc(100vw-2rem)] sm:max-w-[calc(100vw-3rem)] -translate-x-1/2 -translate-y-1/2 overflow-hidden rounded-xl bg-kumo-base text-kumo-default duration-150 data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0",
|
|
34
34
|
// Apply size from KUMO_DIALOG_VARIANTS
|
|
35
|
-
|
|
35
|
+
w.size[i].classes
|
|
36
36
|
);
|
|
37
37
|
}
|
|
38
38
|
function T({
|
|
@@ -42,12 +42,12 @@ function T({
|
|
|
42
42
|
size: n = t.size
|
|
43
43
|
}) {
|
|
44
44
|
return /* @__PURE__ */ r(f, { children: [
|
|
45
|
-
/* @__PURE__ */
|
|
46
|
-
/* @__PURE__ */
|
|
45
|
+
/* @__PURE__ */ s(u, { className: "z-modal fixed inset-0 bg-kumo-overlay opacity-80 transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0" }),
|
|
46
|
+
/* @__PURE__ */ s(
|
|
47
47
|
c,
|
|
48
48
|
{
|
|
49
49
|
as: x,
|
|
50
|
-
className:
|
|
50
|
+
className: o(y({ size: n }), i),
|
|
51
51
|
style: {
|
|
52
52
|
transitionProperty: "scale, opacity",
|
|
53
53
|
transitionTimingFunction: "var(--default-transition-timing-function)",
|
|
@@ -61,17 +61,17 @@ function T({
|
|
|
61
61
|
}
|
|
62
62
|
const a = Object.assign(T, {
|
|
63
63
|
Root: D,
|
|
64
|
-
Trigger:
|
|
65
|
-
Title:
|
|
64
|
+
Trigger: p,
|
|
65
|
+
Title: m,
|
|
66
66
|
Description: d,
|
|
67
67
|
Close: g
|
|
68
|
-
}),
|
|
68
|
+
}), R = a.Root, h = a.Trigger, C = a.Title, O = a.Description, S = a.Close;
|
|
69
69
|
export {
|
|
70
70
|
a as D,
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
R as a,
|
|
72
|
+
h as b,
|
|
73
73
|
C as c,
|
|
74
74
|
O as d,
|
|
75
75
|
S as e
|
|
76
76
|
};
|
|
77
|
-
//# sourceMappingURL=dialog-
|
|
77
|
+
//# sourceMappingURL=dialog-x9n9wI13.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-x9n9wI13.js","sources":["../src/components/dialog/dialog.tsx"],"sourcesContent":["import type { CSSProperties, FC, ReactNode } from \"react\";\nimport { Dialog as DialogBase } from \"@base-ui/react/dialog\";\nimport { Surface } from \"../surface\";\nimport { cn } from \"../../utils/cn\";\n\nexport const KUMO_DIALOG_VARIANTS = {\n size: {\n base: {\n classes: \"sm:min-w-96\",\n description: \"Default dialog width\",\n },\n sm: {\n classes: \"min-w-72\",\n description: \"Small dialog for simple confirmations\",\n },\n lg: {\n classes: \"min-w-[32rem]\",\n description: \"Large dialog for complex content\",\n },\n xl: {\n classes: \"min-w-[48rem]\",\n description: \"Extra large dialog for detailed views\",\n },\n },\n} as const;\n\nexport const KUMO_DIALOG_DEFAULT_VARIANTS = {\n size: \"base\",\n} as const;\n\nexport const KUMO_DIALOG_STYLING = {\n dimensions: {\n sm: {\n width: 350,\n titleSize: 20,\n descSize: 16,\n padding: 16,\n gap: 8,\n buttonSize: \"sm\",\n },\n base: {\n width: 384,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n lg: {\n width: 512,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n xl: {\n width: 768,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n },\n baseTokens: {\n background: \"color-surface\",\n text: \"text-color-surface\",\n borderRadius: 12,\n shadow: \"shadow-m\",\n },\n backdrop: {\n background: \"color-surface-secondary\",\n opacity: 0.8,\n },\n header: {\n title: { fontWeight: 600, color: \"text-color-surface\" },\n closeIcon: { name: \"ph-x\", size: 20, color: \"text-color-muted\" },\n },\n description: {\n fontWeight: 400,\n color: \"text-color-muted\",\n },\n buttons: {\n primary: { background: \"color-primary\", text: \"white\" },\n secondary: { ring: \"color-border\", text: \"text-color-surface\" },\n },\n} as const;\n\n// Derived types from KUMO_DIALOG_VARIANTS\nexport type KumoDialogSize = keyof typeof KUMO_DIALOG_VARIANTS.size;\n\nexport interface KumoDialogVariantsProps {\n size?: KumoDialogSize;\n}\n\nexport function dialogVariants({\n size = KUMO_DIALOG_DEFAULT_VARIANTS.size,\n}: KumoDialogVariantsProps = {}) {\n return cn(\n // Base styles\n \"shadow-m z-modal fixed top-1/2 left-1/2 w-full sm:w-auto max-w-[calc(100vw-2rem)] sm:max-w-[calc(100vw-3rem)] -translate-x-1/2 -translate-y-1/2 overflow-hidden rounded-xl bg-kumo-base text-kumo-default duration-150 data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0\",\n // Apply size from KUMO_DIALOG_VARIANTS\n KUMO_DIALOG_VARIANTS.size[size].classes,\n );\n}\n\nexport type DialogProps = KumoDialogVariantsProps & {\n className?: string;\n children: ReactNode;\n style?: CSSProperties;\n};\n\nfunction DialogContent({\n className,\n children,\n style,\n size = KUMO_DIALOG_DEFAULT_VARIANTS.size,\n}: DialogProps) {\n return (\n <DialogBase.Portal>\n <DialogBase.Backdrop className=\"z-modal fixed inset-0 bg-kumo-overlay opacity-80 transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0\" />\n <Surface\n as={DialogBase.Popup}\n className={cn(dialogVariants({ size }), className)}\n style={\n {\n transitionProperty: \"scale, opacity\",\n transitionTimingFunction:\n \"var(--default-transition-timing-function)\",\n \"--tw-shadow\":\n \"0 20px 25px -5px rgb(0 0 0 / 0.03), 0 8px 10px -6px rgb(0 0 0 / 0.03)\",\n ...style,\n } as CSSProperties\n }\n >\n {children}\n </Surface>\n </DialogBase.Portal>\n );\n}\n\ntype DialogComponent = FC<DialogProps> & {\n Root: typeof DialogBase.Root;\n Trigger: typeof DialogBase.Trigger;\n Title: typeof DialogBase.Title;\n Description: typeof DialogBase.Description;\n Close: typeof DialogBase.Close;\n};\n\nconst Dialog = Object.assign(DialogContent, {\n Root: DialogBase.Root,\n Trigger: DialogBase.Trigger,\n Title: DialogBase.Title,\n Description: DialogBase.Description,\n Close: DialogBase.Close,\n}) as DialogComponent;\n\nconst DialogRoot = Dialog.Root;\nconst DialogTrigger = Dialog.Trigger;\nconst DialogTitle = Dialog.Title;\nconst DialogDescription = Dialog.Description;\nconst DialogClose = Dialog.Close;\n\nexport {\n Dialog,\n DialogRoot,\n DialogTrigger,\n DialogTitle,\n DialogDescription,\n DialogClose,\n};\n"],"names":["KUMO_DIALOG_VARIANTS","KUMO_DIALOG_DEFAULT_VARIANTS","dialogVariants","size","cn","DialogContent","className","children","style","jsxs","DialogBase.Portal","jsx","DialogBase.Backdrop","Surface","DialogBase.Popup","Dialog","DialogBase.Root","DialogBase.Trigger","DialogBase.Title","DialogBase.Description","DialogBase.Close","DialogRoot","DialogTrigger","DialogTitle","DialogDescription","DialogClose"],"mappings":";;;;;AAKO,MAAMA,IAAuB;AAAA,EAClC,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GAEaC,IAA+B;AAAA,EAC1C,MAAM;AACR;AAoEO,SAASC,EAAe;AAAA,EAC7B,MAAAC,IAAOF,EAA6B;AACtC,IAA6B,IAAI;AAC/B,SAAOG;AAAA;AAAA,IAEL;AAAA;AAAA,IAEAJ,EAAqB,KAAKG,CAAI,EAAE;AAAA,EAAA;AAEpC;AAQA,SAASE,EAAc;AAAA,EACrB,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAL,IAAOF,EAA6B;AACtC,GAAgB;AACd,SACE,gBAAAQ,EAACC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAoB,WAAU,yIAAA,CAAyI;AAAA,IACxK,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,IAAIC;AAAAA,QACJ,WAAWV,EAAGF,EAAe,EAAE,MAAAC,EAAA,CAAM,GAAGG,CAAS;AAAA,QACjD,OACE;AAAA,UACE,oBAAoB;AAAA,UACpB,0BACE;AAAA,UACF,eACE;AAAA,UACF,GAAGE;AAAA,QAAA;AAAA,QAIN,UAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;AAUA,MAAMQ,IAAS,OAAO,OAAOV,GAAe;AAAA,EAC1C,MAAMW;AAAAA,EACN,SAASC;AAAAA,EACT,OAAOC;AAAAA,EACP,aAAaC;AAAAA,EACb,OAAOC;AACT,CAAC,GAEKC,IAAaN,EAAO,MACpBO,IAAgBP,EAAO,SACvBQ,IAAcR,EAAO,OACrBS,IAAoBT,EAAO,aAC3BU,IAAcV,EAAO;"}
|