@hyddenlabs/hydn-ui 0.3.13 → 0.3.14
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/components/data-display/code-block/code-block.js +1 -1
- package/dist/components/data-display/code-block/code-block.js.map +1 -1
- package/dist/components/data-display/data-grid/data-grid.js +1 -1
- package/dist/components/data-display/data-grid/data-grid.js.map +1 -1
- package/dist/components/feedback/tooltip/tooltip.d.ts +3 -1
- package/dist/components/feedback/tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/feedback/tooltip/tooltip.js +3 -2
- package/dist/components/feedback/tooltip/tooltip.js.map +1 -1
- package/dist/components/forms/button/button.d.ts +2 -2
- package/dist/components/forms/button/button.d.ts.map +1 -1
- package/dist/components/forms/button/button.js +2 -0
- package/dist/components/forms/button/button.js.map +1 -1
- package/dist/components/forms/switch/switch.js +1 -1
- package/dist/components/forms/switch/switch.js.map +1 -1
- package/dist/components/typography/code/code.js +1 -1
- package/dist/components/typography/code/code.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/theme/tokens.d.ts +1 -0
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +10 -0
- package/dist/theme/tokens.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.js","sources":["../../../../src/components/forms/switch/switch.tsx"],"sourcesContent":["import React from 'react';\n\nexport type SwitchProps = {\n /** Controlled checked state - true for on, false for off */\n checked?: boolean;\n /** Change handler receiving the new boolean checked state */\n onChange?: (checked: boolean) => void;\n /** Disables switch interaction and applies disabled styling */\n disabled?: boolean;\n /** Additional CSS classes applied to the switch container */\n className?: string;\n /** Accessible label for screen readers when visual label is not present */\n ariaLabel?: string;\n /** HTML id attribute for the underlying input element */\n id?: string;\n /** Form input name attribute */\n name?: string;\n /** Size variant affecting switch dimensions - uses unified size system */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Color variant affecting background when checked - defaults to primary if not specified */\n variant?: 'primary' | 'accent' | 'success' | 'warning' | 'info' | 'error' | 'neutral';\n};\n\n/**\n * Accessible Switch/Toggle component - DaisyUI inspired\n * Uses pure Tailwind classes for styling\n */\nfunction Switch({\n checked = false,\n onChange,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name,\n size = 'md',\n variant\n}: Readonly<SwitchProps>) {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.checked);\n };\n\n // Size configurations\n const sizeStyles = {\n xs: {\n container: 'h-4 w-8',\n handle: 'h-3 w-3',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-4' : 'translate-x-0'\n },\n sm: {\n container: 'h-5 w-10',\n handle: 'h-4 w-4',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-5' : 'translate-x-0'\n },\n md: {\n container: 'h-6 w-12',\n handle: 'h-5 w-5',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-6' : 'translate-x-0'\n },\n lg: {\n container: 'h-7 w-14',\n handle: 'h-6 w-6',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-7' : 'translate-x-0'\n },\n xl: {\n container: 'h-8 w-16',\n handle: 'h-7 w-7',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-8' : 'translate-x-0'\n }\n };\n\n // Color variants\n const getVariantColors = () => {\n if (!checked) {\n return 'bg-
|
|
1
|
+
{"version":3,"file":"switch.js","sources":["../../../../src/components/forms/switch/switch.tsx"],"sourcesContent":["import React from 'react';\n\nexport type SwitchProps = {\n /** Controlled checked state - true for on, false for off */\n checked?: boolean;\n /** Change handler receiving the new boolean checked state */\n onChange?: (checked: boolean) => void;\n /** Disables switch interaction and applies disabled styling */\n disabled?: boolean;\n /** Additional CSS classes applied to the switch container */\n className?: string;\n /** Accessible label for screen readers when visual label is not present */\n ariaLabel?: string;\n /** HTML id attribute for the underlying input element */\n id?: string;\n /** Form input name attribute */\n name?: string;\n /** Size variant affecting switch dimensions - uses unified size system */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Color variant affecting background when checked - defaults to primary if not specified */\n variant?: 'primary' | 'accent' | 'success' | 'warning' | 'info' | 'error' | 'neutral';\n};\n\n/**\n * Accessible Switch/Toggle component - DaisyUI inspired\n * Uses pure Tailwind classes for styling\n */\nfunction Switch({\n checked = false,\n onChange,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name,\n size = 'md',\n variant\n}: Readonly<SwitchProps>) {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.checked);\n };\n\n // Size configurations\n const sizeStyles = {\n xs: {\n container: 'h-4 w-8',\n handle: 'h-3 w-3',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-4' : 'translate-x-0'\n },\n sm: {\n container: 'h-5 w-10',\n handle: 'h-4 w-4',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-5' : 'translate-x-0'\n },\n md: {\n container: 'h-6 w-12',\n handle: 'h-5 w-5',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-6' : 'translate-x-0'\n },\n lg: {\n container: 'h-7 w-14',\n handle: 'h-6 w-6',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-7' : 'translate-x-0'\n },\n xl: {\n container: 'h-8 w-16',\n handle: 'h-7 w-7',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-8' : 'translate-x-0'\n }\n };\n\n // Color variants\n const getVariantColors = () => {\n if (!checked) {\n return 'bg-neutral/50 border-input ';\n }\n\n switch (variant) {\n case 'accent':\n return 'bg-accent border-accent';\n case 'success':\n return 'bg-success border-success';\n case 'warning':\n return 'bg-warning border-warning';\n case 'info':\n return 'bg-info border-info';\n case 'error':\n return 'bg-error border-error';\n case 'neutral':\n return 'bg-neutral border-neutral';\n case 'primary':\n default:\n return 'bg-primary border-primary';\n }\n };\n\n const styles = sizeStyles[size];\n\n return (\n <label\n className={`relative inline-flex ${styles.container} ${styles.padding} items-center rounded-full border transition-all duration-200 cursor-pointer ${\n disabled ? 'opacity-30 cursor-not-allowed' : ''\n } ${getVariantColors()} ${className}`}\n >\n <input\n type=\"checkbox\"\n role=\"switch\"\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n aria-label={ariaLabel}\n id={id}\n name={name}\n className=\"sr-only\"\n />\n <span\n className={`inline-block ${styles.handle} rounded-full bg-background shadow-sm transition-transform duration-200 ${styles.translate}`}\n />\n </label>\n );\n}\n\nSwitch.displayName = 'Switch';\n\nexport default Switch;\n"],"names":[],"mappings":";AA2BA,SAAS,OAAO;AAAA,EACd,UAAU;AAAA,EACV;AAAA,EACA,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AACF,GAA0B;AACxB,QAAM,eAAe,CAAC,MAA2C;AAC/D,eAAW,EAAE,OAAO,OAAO;AAAA,EAC7B;AAGA,QAAM,aAAa;AAAA,IACjB,IAAI;AAAA,MACF,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW,UAAU,kBAAkB;AAAA,IAAA;AAAA,IAEzC,IAAI;AAAA,MACF,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW,UAAU,kBAAkB;AAAA,IAAA;AAAA,IAEzC,IAAI;AAAA,MACF,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW,UAAU,kBAAkB;AAAA,IAAA;AAAA,IAEzC,IAAI;AAAA,MACF,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW,UAAU,kBAAkB;AAAA,IAAA;AAAA,IAEzC,IAAI;AAAA,MACF,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW,UAAU,kBAAkB;AAAA,IAAA;AAAA,EACzC;AAIF,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AAEA,YAAQ,SAAA;AAAA,MACN,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL;AACE,eAAO;AAAA,IAAA;AAAA,EAEb;AAEA,QAAM,SAAS,WAAW,IAAI;AAE9B,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,wBAAwB,OAAO,SAAS,IAAI,OAAO,OAAO,gFACnE,WAAW,kCAAkC,EAC/C,IAAI,iBAAA,CAAkB,IAAI,SAAS;AAAA,MAEnC,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,MAAK;AAAA,YACL;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA,cAAY;AAAA,YACZ;AAAA,YACA;AAAA,YACA,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAEZ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,gBAAgB,OAAO,MAAM,2EAA2E,OAAO,SAAS;AAAA,UAAA;AAAA,QAAA;AAAA,MACrI;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,OAAO,cAAc;"}
|
|
@@ -16,7 +16,7 @@ function Code({ children, block = false, variant = "default", copy = false, clas
|
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
const variantClasses = {
|
|
19
|
-
default: "bg-muted-active text-foreground",
|
|
19
|
+
default: "bg-muted-active/50 text-foreground",
|
|
20
20
|
primary: "text-primary",
|
|
21
21
|
muted: "text-muted-foreground"
|
|
22
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code.js","sources":["../../../../src/components/typography/code/code.tsx"],"sourcesContent":["import { ReactNode, useRef, useState } from 'react';\nimport Icon from '../../system/icon/icon';\n\nexport type CodeProps = {\n /** Code content to be displayed */\n children: ReactNode;\n /** Whether to render as a code block (pre + code) or inline code\n * @default false\n */\n block?: boolean;\n /** Visual style variant\n * @default 'default'\n */\n variant?: 'default' | 'primary' | 'muted';\n /** Show copy-to-clipboard button\n * @default false\n */\n copy?: boolean;\n /** Additional CSS classes for custom styling */\n className?: string;\n};\n\n/**\n * Code - Styled code snippets (inline or block)\n */\nfunction Code({ children, block = false, variant = 'default', copy = false, className = '' }: Readonly<CodeProps>) {\n const codeRef = useRef<HTMLElement>(null);\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n if (!codeRef.current) return;\n\n try {\n const textContent = codeRef.current.textContent || '';\n await navigator.clipboard.writeText(textContent);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Failed to copy code:', err);\n }\n };\n\n const variantClasses = {\n default: 'bg-muted-active text-foreground',\n primary: 'text-primary',\n muted: 'text-muted-foreground'\n };\n\n const baseClasses = `font-mono ${variantClasses[variant]}`;\n\n if (block) {\n const blockElement = (\n <pre className={`${baseClasses} p-4 rounded-lg overflow-x-auto border border-border ${className}`} ref={codeRef}>\n <code>{children}</code>\n </pre>\n );\n\n if (copy) {\n return (\n <div className=\"relative group\">\n {blockElement}\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"absolute top-2 right-2 inline-flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity focus:opacity-100 cursor-pointer bg-background/80 backdrop-blur-sm p-1.5 rounded border border-border hover:bg-muted-hover\"\n aria-label=\"Copy to clipboard\"\n >\n <Icon\n name={copied ? 'check' : 'copy'}\n size=\"sm\"\n color={copied ? 'success' : 'currentColor'}\n className=\"transition-all\"\n />\n </button>\n </div>\n );\n }\n\n return blockElement;\n }\n\n const inlineElement = (\n <code className={`${baseClasses} px-1.5 py-0.5 rounded text-sm ${className}`} ref={codeRef}>\n {children}\n </code>\n );\n\n if (copy) {\n return (\n <span className=\"inline-flex items-center gap-2 group\">\n {inlineElement}\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"inline-flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity focus:opacity-100 cursor-pointer\"\n aria-label=\"Copy to clipboard\"\n >\n <Icon\n name={copied ? 'check' : 'copy'}\n size=\"sm\"\n color={copied ? 'success' : 'currentColor'}\n className=\"transition-all\"\n />\n </button>\n </span>\n );\n }\n\n return inlineElement;\n}\n\nCode.displayName = 'Code';\n\nexport default Code;\n"],"names":[],"mappings":";;;AAyBA,SAAS,KAAK,EAAE,UAAU,QAAQ,OAAO,UAAU,WAAW,OAAO,OAAO,YAAY,GAAA,GAA2B;AACjH,QAAM,UAAU,OAAoB,IAAI;AACxC,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAE1C,QAAM,aAAa,YAAY;AAC7B,QAAI,CAAC,QAAQ,QAAS;AAEtB,QAAI;AACF,YAAM,cAAc,QAAQ,QAAQ,eAAe;AACnD,YAAM,UAAU,UAAU,UAAU,WAAW;AAC/C,gBAAU,IAAI;AACd,iBAAW,MAAM,UAAU,KAAK,GAAG,GAAI;AAAA,IACzC,SAAS,KAAK;AAEZ,cAAQ,MAAM,wBAAwB,GAAG;AAAA,IAC3C;AAAA,EACF;AAEA,QAAM,iBAAiB;AAAA,IACrB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,EAAA;AAGT,QAAM,cAAc,aAAa,eAAe,OAAO,CAAC;AAExD,MAAI,OAAO;AACT,UAAM,eACJ,oBAAC,OAAA,EAAI,WAAW,GAAG,WAAW,wDAAwD,SAAS,IAAI,KAAK,SACtG,UAAA,oBAAC,QAAA,EAAM,UAAS,GAClB;AAGF,QAAI,MAAM;AACR,aACE,qBAAC,OAAA,EAAI,WAAU,kBACZ,UAAA;AAAA,QAAA;AAAA,QACD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS;AAAA,YACT,WAAU;AAAA,YACV,cAAW;AAAA,YAEX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM,SAAS,UAAU;AAAA,gBACzB,MAAK;AAAA,gBACL,OAAO,SAAS,YAAY;AAAA,gBAC5B,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,MACF,GACF;AAAA,IAEJ;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,gBACJ,oBAAC,QAAA,EAAK,WAAW,GAAG,WAAW,kCAAkC,SAAS,IAAI,KAAK,SAChF,SAAA,CACH;AAGF,MAAI,MAAM;AACR,WACE,qBAAC,QAAA,EAAK,WAAU,wCACb,UAAA;AAAA,MAAA;AAAA,MACD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACV,cAAW;AAAA,UAEX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAM,SAAS,UAAU;AAAA,cACzB,MAAK;AAAA,cACL,OAAO,SAAS,YAAY;AAAA,cAC5B,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QACZ;AAAA,MAAA;AAAA,IACF,GACF;AAAA,EAEJ;AAEA,SAAO;AACT;AAEA,KAAK,cAAc;"}
|
|
1
|
+
{"version":3,"file":"code.js","sources":["../../../../src/components/typography/code/code.tsx"],"sourcesContent":["import { ReactNode, useRef, useState } from 'react';\nimport Icon from '../../system/icon/icon';\n\nexport type CodeProps = {\n /** Code content to be displayed */\n children: ReactNode;\n /** Whether to render as a code block (pre + code) or inline code\n * @default false\n */\n block?: boolean;\n /** Visual style variant\n * @default 'default'\n */\n variant?: 'default' | 'primary' | 'muted';\n /** Show copy-to-clipboard button\n * @default false\n */\n copy?: boolean;\n /** Additional CSS classes for custom styling */\n className?: string;\n};\n\n/**\n * Code - Styled code snippets (inline or block)\n */\nfunction Code({ children, block = false, variant = 'default', copy = false, className = '' }: Readonly<CodeProps>) {\n const codeRef = useRef<HTMLElement>(null);\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n if (!codeRef.current) return;\n\n try {\n const textContent = codeRef.current.textContent || '';\n await navigator.clipboard.writeText(textContent);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Failed to copy code:', err);\n }\n };\n\n const variantClasses = {\n default: 'bg-muted-active/50 text-foreground',\n primary: 'text-primary',\n muted: 'text-muted-foreground'\n };\n\n const baseClasses = `font-mono ${variantClasses[variant]}`;\n\n if (block) {\n const blockElement = (\n <pre className={`${baseClasses} p-4 rounded-lg overflow-x-auto border border-border ${className}`} ref={codeRef}>\n <code>{children}</code>\n </pre>\n );\n\n if (copy) {\n return (\n <div className=\"relative group\">\n {blockElement}\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"absolute top-2 right-2 inline-flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity focus:opacity-100 cursor-pointer bg-background/80 backdrop-blur-sm p-1.5 rounded border border-border hover:bg-muted-hover\"\n aria-label=\"Copy to clipboard\"\n >\n <Icon\n name={copied ? 'check' : 'copy'}\n size=\"sm\"\n color={copied ? 'success' : 'currentColor'}\n className=\"transition-all\"\n />\n </button>\n </div>\n );\n }\n\n return blockElement;\n }\n\n const inlineElement = (\n <code className={`${baseClasses} px-1.5 py-0.5 rounded text-sm ${className}`} ref={codeRef}>\n {children}\n </code>\n );\n\n if (copy) {\n return (\n <span className=\"inline-flex items-center gap-2 group\">\n {inlineElement}\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"inline-flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity focus:opacity-100 cursor-pointer\"\n aria-label=\"Copy to clipboard\"\n >\n <Icon\n name={copied ? 'check' : 'copy'}\n size=\"sm\"\n color={copied ? 'success' : 'currentColor'}\n className=\"transition-all\"\n />\n </button>\n </span>\n );\n }\n\n return inlineElement;\n}\n\nCode.displayName = 'Code';\n\nexport default Code;\n"],"names":[],"mappings":";;;AAyBA,SAAS,KAAK,EAAE,UAAU,QAAQ,OAAO,UAAU,WAAW,OAAO,OAAO,YAAY,GAAA,GAA2B;AACjH,QAAM,UAAU,OAAoB,IAAI;AACxC,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAE1C,QAAM,aAAa,YAAY;AAC7B,QAAI,CAAC,QAAQ,QAAS;AAEtB,QAAI;AACF,YAAM,cAAc,QAAQ,QAAQ,eAAe;AACnD,YAAM,UAAU,UAAU,UAAU,WAAW;AAC/C,gBAAU,IAAI;AACd,iBAAW,MAAM,UAAU,KAAK,GAAG,GAAI;AAAA,IACzC,SAAS,KAAK;AAEZ,cAAQ,MAAM,wBAAwB,GAAG;AAAA,IAC3C;AAAA,EACF;AAEA,QAAM,iBAAiB;AAAA,IACrB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,EAAA;AAGT,QAAM,cAAc,aAAa,eAAe,OAAO,CAAC;AAExD,MAAI,OAAO;AACT,UAAM,eACJ,oBAAC,OAAA,EAAI,WAAW,GAAG,WAAW,wDAAwD,SAAS,IAAI,KAAK,SACtG,UAAA,oBAAC,QAAA,EAAM,UAAS,GAClB;AAGF,QAAI,MAAM;AACR,aACE,qBAAC,OAAA,EAAI,WAAU,kBACZ,UAAA;AAAA,QAAA;AAAA,QACD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS;AAAA,YACT,WAAU;AAAA,YACV,cAAW;AAAA,YAEX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM,SAAS,UAAU;AAAA,gBACzB,MAAK;AAAA,gBACL,OAAO,SAAS,YAAY;AAAA,gBAC5B,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,MACF,GACF;AAAA,IAEJ;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,gBACJ,oBAAC,QAAA,EAAK,WAAW,GAAG,WAAW,kCAAkC,SAAS,IAAI,KAAK,SAChF,SAAA,CACH;AAGF,MAAI,MAAM;AACR,WACE,qBAAC,QAAA,EAAK,WAAU,wCACb,UAAA;AAAA,MAAA;AAAA,MACD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACV,cAAW;AAAA,UAEX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAM,SAAS,UAAU;AAAA,cACzB,MAAK;AAAA,cACL,OAAO,SAAS,YAAY;AAAA,cAC5B,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QACZ;AAAA,MAAA;AAAA,IACF,GACF;AAAA,EAEJ;AAEA,SAAO;AACT;AAEA,KAAK,cAAc;"}
|