@intent-driven/adapter-shadcn 0.1.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/CHANGELOG.md +16 -0
- package/LICENSE +21 -0
- package/README.md +82 -0
- package/dist/index.cjs +676 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +136 -0
- package/dist/index.d.ts +136 -0
- package/dist/index.mjs +709 -0
- package/dist/index.mjs.map +1 -0
- package/dist/theme.css +82 -0
- package/package.json +73 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/adapter.jsx","../src/provider.jsx"],"sourcesContent":["/**\n * shadcn/ui адаптер — doodle-стилистика для lifequest.\n * Заменяет Mantine-адаптер через registerUIAdapter(shadcnAdapter).\n * Все компоненты стилизованы через Tailwind + doodle CSS variables.\n */\nimport * as React from \"react\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { clsx } from \"clsx\";\nimport {\n Pencil, Trash2, Plus, Check, X, MoreHorizontal, Search,\n ChevronDown, Pin, PinOff, Reply, Send, Star, Bell, BellOff,\n Archive, Copy, Eye, Lock, Unlock, Settings, User, LogOut,\n Play, Square, Save, Download, Upload, RefreshCw, Filter,\n Calendar, Clock, Heart, ThumbsUp, ThumbsDown, Flag,\n MessageSquare, Phone, Video, Mic, MicOff, Volume2, VolumeX,\n Link, Unlink, Move, Maximize2, AlertTriangle, Info, HelpCircle,\n ArrowRight, ArrowLeft, Home, Target, Award, TrendingUp,\n Flame, Zap, BookOpen, Dumbbell, DollarSign, Briefcase, Users,\n Smile, Palette, Umbrella, Globe, Compass, CheckSquare,\n} from \"lucide-react\";\nimport \"./theme.css\";\n\n// ─── EMOJI → LUCIDE ───\n\nconst EMOJI_TO_LUCIDE = {\n \"✎\": Pencil, \"✏️\": Pencil, \"🗑\": Trash2, \"🗑️\": Trash2,\n \"➕\": Plus, \"+\": Plus, \"✓\": Check, \"✔\": Check, \"✔️\": Check,\n \"✕\": X, \"✗\": X, \"❌\": X, \"⋯\": MoreHorizontal, \"…\": MoreHorizontal,\n \"🔍\": Search, \"📌\": Pin, \"📍\": Pin, \"↩\": Reply, \"↩️\": Reply,\n \"📤\": Send, \"⭐\": Star, \"🔔\": Bell, \"🔕\": BellOff,\n \"📦\": Archive, \"📋\": Copy, \"👁\": Eye, \"🔒\": Lock, \"🔓\": Unlock,\n \"⚙\": Settings, \"⚙️\": Settings, \"👤\": User, \"🚪\": LogOut,\n \"▶\": Play, \"⏹\": Square, \"💾\": Save, \"📥\": Download, \"📤\": Upload,\n \"🔄\": RefreshCw, \"🔃\": RefreshCw, \"🗂\": Filter,\n \"📅\": Calendar, \"🕐\": Clock, \"❤️\": Heart, \"👍\": ThumbsUp, \"👎\": ThumbsDown,\n \"🚩\": Flag, \"💬\": MessageSquare, \"📞\": Phone, \"📹\": Video,\n \"🎤\": Mic, \"🔇\": MicOff, \"🔊\": Volume2, \"🔈\": VolumeX,\n \"🔗\": Link, \"✂\": Unlink, \"↔\": Move, \"⤢\": Maximize2,\n \"⚠\": AlertTriangle, \"⚠️\": AlertTriangle, \"ℹ\": Info, \"ℹ️\": Info, \"❓\": HelpCircle,\n \"→\": ArrowRight, \"←\": ArrowLeft, \"🏠\": Home,\n \"🎯\": Target, \"🏆\": Award, \"📈\": TrendingUp,\n \"🔥\": Flame, \"⚡\": Zap, \"📚\": BookOpen, \"💪\": Dumbbell,\n \"💰\": DollarSign, \"💼\": Briefcase, \"🤝\": Users,\n \"🧘\": Smile, \"🎨\": Palette, \"🏖️\": Umbrella, \"🌍\": Globe, \"🧭\": Compass,\n \"✅\": CheckSquare, \"☐\": CheckSquare,\n};\n\nfunction resolveLucide(emoji) {\n if (!emoji) return null;\n return EMOJI_TO_LUCIDE[emoji] || null;\n}\n\n// ─── Shared styles ───\n\nconst inputBase = [\n \"w-full rounded-[var(--radius-doodle)] border-2 border-dashed\",\n \"border-[var(--color-doodle-border)] bg-[var(--color-doodle-bg)]\",\n \"px-3 py-2 font-[var(--font-doodle)] text-[var(--color-doodle-ink)]\",\n \"placeholder:text-[var(--color-doodle-ink-light)]/50\",\n \"focus:outline-none focus:border-[var(--color-doodle-accent)] transition-colors\",\n].join(\" \");\n\n// ─── Parameter Controls ───\n\nfunction ShadcnTextInput({ spec, value, onChange }) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n {spec.label && <label style={{ fontSize: 13, fontWeight: 500, color: \"var(--color-doodle-ink-light)\", fontFamily: \"var(--font-doodle)\" }}>{spec.label}</label>}\n <input\n type={spec.type === \"email\" ? \"email\" : spec.type === \"url\" ? \"url\" : spec.type === \"tel\" ? \"tel\" : \"text\"}\n style={{\n width: \"100%\", borderRadius: \"var(--radius-doodle)\",\n border: \"1.5px solid var(--color-doodle-ink)\",\n background: \"var(--color-doodle-bg)\",\n padding: \"8px 12px\", fontFamily: \"var(--font-doodle)\",\n color: \"var(--color-doodle-ink)\", fontSize: 14,\n outline: \"none\",\n }}\n placeholder={spec.placeholder || \"\"}\n value={value || \"\"}\n onChange={e => onChange(e.target.value)}\n required={spec.required}\n />\n </div>\n );\n}\n\nfunction ShadcnTextarea({ spec, value, onChange }) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n {spec.label && <label style={{ fontSize: 13, fontWeight: 500, color: \"var(--color-doodle-ink-light)\", fontFamily: \"var(--font-doodle)\" }}>{spec.label}</label>}\n <textarea\n style={{\n width: \"100%\", borderRadius: \"var(--radius-doodle)\",\n border: \"1.5px solid var(--color-doodle-ink)\",\n background: \"var(--color-doodle-bg)\",\n padding: \"8px 12px\", fontFamily: \"var(--font-doodle)\",\n color: \"var(--color-doodle-ink)\", fontSize: 14,\n minHeight: 80, resize: \"vertical\", outline: \"none\",\n }}\n placeholder={spec.placeholder || \"\"}\n value={value || \"\"}\n onChange={e => onChange(e.target.value)}\n rows={3}\n />\n </div>\n );\n}\n\nfunction ShadcnNumber({ spec, value, onChange }) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n {spec.label && <label style={{ fontSize: 13, fontWeight: 500, color: \"var(--color-doodle-ink-light)\", fontFamily: \"var(--font-doodle)\" }}>{spec.label}</label>}\n <input\n type=\"number\"\n style={{\n width: \"100%\", borderRadius: \"var(--radius-doodle)\",\n border: \"1.5px solid var(--color-doodle-ink)\",\n background: \"var(--color-doodle-bg)\",\n padding: \"8px 12px\", fontFamily: \"var(--font-doodle)\",\n color: \"var(--color-doodle-ink)\", fontSize: 14, outline: \"none\",\n }}\n value={value ?? \"\"}\n onChange={e => onChange(e.target.value === \"\" ? null : Number(e.target.value))}\n min={spec.min}\n max={spec.max}\n />\n </div>\n );\n}\n\nfunction ShadcnDateTime({ spec, value, onChange }) {\n const isTimeOnly = spec.name && /time/i.test(spec.name) && !/date/i.test(spec.name);\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n {spec.label && <label style={{ fontSize: 13, fontWeight: 500, color: \"var(--color-doodle-ink-light)\", fontFamily: \"var(--font-doodle)\" }}>{spec.label}</label>}\n <input\n type={isTimeOnly ? \"time\" : \"date\"}\n style={{\n width: \"100%\", borderRadius: \"var(--radius-doodle)\",\n border: \"1.5px solid var(--color-doodle-ink)\",\n background: \"var(--color-doodle-bg)\",\n padding: \"8px 12px\", fontFamily: \"var(--font-doodle)\",\n color: \"var(--color-doodle-ink)\", fontSize: 14, outline: \"none\",\n }}\n value={value || \"\"}\n onChange={e => onChange(e.target.value)}\n />\n </div>\n );\n}\n\nfunction ShadcnSelect({ spec, value, onChange }) {\n const options = spec.options || [];\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n {spec.label && <label style={{ fontSize: 13, fontWeight: 500, color: \"var(--color-doodle-ink-light)\", fontFamily: \"var(--font-doodle)\" }}>{spec.label}</label>}\n <SelectPrimitive.Root value={value || \"\"} onValueChange={onChange}>\n <SelectPrimitive.Trigger\n style={{\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n width: \"100%\", borderRadius: \"var(--radius-doodle)\",\n border: \"2px dashed var(--color-doodle-border)\",\n background: \"var(--color-doodle-bg)\",\n padding: \"8px 12px\", fontFamily: \"var(--font-doodle)\",\n color: \"var(--color-doodle-ink)\", fontSize: 14, cursor: \"pointer\",\n }}\n >\n <SelectPrimitive.Value placeholder={spec.placeholder || \"Выбрать...\"} />\n <SelectPrimitive.Icon><ChevronDown size={16} /></SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n style={{\n background: \"var(--color-doodle-bg)\",\n border: \"2px solid var(--color-doodle-border)\",\n borderRadius: \"var(--radius-doodle)\",\n boxShadow: \"4px 4px 0 var(--color-doodle-border)\",\n zIndex: 9999, fontFamily: \"var(--font-doodle)\",\n }}\n position=\"popper\" sideOffset={4}\n >\n <SelectPrimitive.Viewport style={{ padding: 4 }}>\n {options.map(opt => (\n <SelectPrimitive.Item\n key={opt.value || opt}\n value={opt.value || opt}\n style={{\n padding: \"8px 12px\", borderRadius: 8, cursor: \"pointer\",\n color: \"var(--color-doodle-ink)\", outline: \"none\", fontSize: 14,\n }}\n >\n <SelectPrimitive.ItemText>{opt.label || opt}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n );\n}\n\n// ─── Buttons ───\n\nconst btnBase = {\n borderRadius: \"var(--radius-doodle)\",\n fontFamily: \"var(--font-doodle)\",\n cursor: \"pointer\",\n transition: \"all 0.15s\",\n border: \"2px solid\",\n fontSize: 14,\n};\n\nfunction ShadcnPrimaryButton({ children, onClick, disabled, ...props }) {\n return (\n <button\n onClick={onClick} disabled={disabled}\n style={{\n ...btnBase, padding: \"8px 16px\", fontWeight: 700,\n background: \"var(--color-doodle-accent)\", color: \"white\",\n borderColor: \"var(--color-doodle-accent)\",\n boxShadow: \"2px 2px 0 var(--color-doodle-ink)\",\n opacity: disabled ? 0.5 : 1,\n }}\n {...props}\n >{children}</button>\n );\n}\n\nfunction ShadcnSecondaryButton({ children, onClick, disabled, ...props }) {\n return (\n <button\n onClick={onClick} disabled={disabled}\n style={{\n ...btnBase, padding: \"8px 16px\",\n background: \"transparent\", color: \"var(--color-doodle-ink)\",\n borderColor: \"var(--color-doodle-border)\", borderStyle: \"dashed\",\n opacity: disabled ? 0.5 : 1,\n }}\n {...props}\n >{children}</button>\n );\n}\n\nfunction ShadcnDangerButton({ children, onClick, disabled, ...props }) {\n return (\n <button\n onClick={onClick} disabled={disabled}\n style={{\n ...btnBase, padding: \"8px 16px\", fontWeight: 700,\n background: \"var(--color-doodle-warn)\", color: \"white\",\n borderColor: \"var(--color-doodle-warn)\",\n boxShadow: \"2px 2px 0 var(--color-doodle-ink)\",\n opacity: disabled ? 0.5 : 1,\n }}\n {...props}\n >{children}</button>\n );\n}\n\nfunction ShadcnIntentButton({ spec, onClick, disabled }) {\n const Icon = spec.icon ? resolveLucide(spec.icon) : null;\n const label = spec.label || spec.intentId;\n const isDanger = spec.irreversibility === \"high\" || spec.variant === \"danger\";\n\n return (\n <button\n onClick={onClick} disabled={disabled}\n style={{\n ...btnBase, display: \"inline-flex\", alignItems: \"center\", gap: 6,\n padding: \"6px 14px\", fontSize: 14,\n background: isDanger ? \"transparent\" : \"var(--color-doodle-bg)\",\n color: isDanger ? \"var(--color-doodle-warn)\" : \"var(--color-doodle-ink)\",\n borderColor: isDanger ? \"var(--color-doodle-warn)\" : \"var(--color-doodle-ink)\",\n borderStyle: \"solid\", borderWidth: 1.5,\n boxShadow: \"1.5px 1.5px 0 var(--color-doodle-ink)\",\n opacity: disabled ? 0.5 : 1,\n }}\n title={label}\n >\n {Icon && <Icon size={16} />}\n <span>{label}</span>\n </button>\n );\n}\n\nfunction ShadcnOverflowMenu({ items, triggerIcon, triggerLabel }) {\n if (!items || items.length === 0) return null;\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <button style={{\n ...btnBase, padding: 8, background: \"transparent\",\n color: \"var(--color-doodle-ink)\",\n borderColor: \"var(--color-doodle-border)\", borderStyle: \"dashed\",\n }}>\n <MoreHorizontal size={16} />\n </button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n align=\"end\"\n collisionPadding={16}\n style={{\n background: \"var(--color-doodle-bg)\",\n border: \"2px solid var(--color-doodle-ink)\",\n borderRadius: \"var(--radius-doodle)\",\n boxShadow: \"3px 3px 0 var(--color-doodle-ink)\",\n padding: 4, zIndex: 9999, fontFamily: \"var(--font-doodle)\",\n minWidth: 180, maxWidth: \"90vw\",\n }}\n sideOffset={6}\n >\n {items.map((item, i) => {\n if (item.divider) return <DropdownMenu.Separator key={item.key} style={{ height: 1, background: \"var(--color-doodle-border)\", margin: \"4px 0\" }} />;\n const IconCmp = item.icon ? resolveLucide(item.icon) : null;\n return (\n <DropdownMenu.Item\n key={item.key || i}\n style={{\n display: \"flex\", alignItems: \"center\", gap: 8,\n padding: \"8px 12px\", borderRadius: 8, fontSize: 13,\n color: \"var(--color-doodle-ink)\", outline: \"none\", cursor: \"pointer\",\n }}\n onSelect={() => item.onClick?.()}\n >\n {IconCmp && <IconCmp size={14} />}\n <span>{item.label}</span>\n </DropdownMenu.Item>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n}\n\n// ─── Shell ───\n\nfunction ShadcnModalShell({ opened, onClose, title, children }) {\n return (\n <Dialog.Root open={opened} onOpenChange={v => { if (!v) onClose(); }}>\n <Dialog.Portal>\n <Dialog.Overlay style={{\n position: \"fixed\", inset: 0, background: \"rgba(0,0,0,0.4)\",\n backdropFilter: \"blur(4px)\", zIndex: 9999,\n }} />\n <Dialog.Content style={{\n position: \"fixed\", left: \"50%\", top: \"50%\",\n transform: \"translate(-50%, -50%)\", zIndex: 9999,\n width: \"calc(100% - 32px)\", maxWidth: 420, maxHeight: \"85vh\",\n overflowY: \"auto\",\n background: \"var(--color-doodle-bg)\",\n border: \"2px solid var(--color-doodle-border)\",\n borderRadius: \"var(--radius-doodle)\",\n padding: \"var(--spacing-doodle)\",\n fontFamily: \"var(--font-doodle)\",\n boxShadow: \"4px 4px 0 var(--color-doodle-ink)\",\n }}>\n <Dialog.Title style={{\n fontSize: 18, fontWeight: 700,\n color: \"var(--color-doodle-ink)\",\n textDecoration: \"underline\", textDecorationStyle: \"wavy\",\n textDecorationColor: \"var(--color-doodle-border)\",\n textUnderlineOffset: 4, marginBottom: 16,\n }}>\n {title}\n </Dialog.Title>\n {children}\n <Dialog.Close asChild>\n <button style={{\n position: \"absolute\", top: 12, right: 12, background: \"none\",\n border: \"none\", color: \"var(--color-doodle-ink-light)\", cursor: \"pointer\",\n padding: 4,\n }}>\n <X size={18} />\n </button>\n </Dialog.Close>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n\nfunction ShadcnTabs({ tabs, value, onChange }) {\n return (\n <TabsPrimitive.Root value={value} onValueChange={onChange}>\n <TabsPrimitive.List style={{\n display: \"flex\", borderBottom: \"2px dashed var(--color-doodle-border)\",\n fontFamily: \"var(--font-doodle)\", overflowX: \"auto\", gap: 0,\n }}>\n {tabs.map(tab => (\n <TabsPrimitive.Trigger\n key={tab.value}\n value={tab.value}\n style={{\n padding: \"8px 16px\", fontSize: 13, whiteSpace: \"nowrap\",\n background: \"transparent\", border: \"none\", cursor: \"pointer\",\n fontFamily: \"inherit\",\n borderBottom: \"2px solid transparent\", marginBottom: -2,\n color: \"var(--color-doodle-ink-light)\",\n }}\n >\n {tab.label}\n </TabsPrimitive.Trigger>\n ))}\n </TabsPrimitive.List>\n </TabsPrimitive.Root>\n );\n}\n\n// ─── Primitives ───\n\nfunction ShadcnHeading({ children, level = 2, ...props }) {\n const Tag = `h${Math.min(level, 6)}`;\n const sizes = { 1: 24, 2: 20, 3: 18, 4: 16, 5: 14, 6: 13 };\n return (\n <Tag style={{\n fontSize: sizes[level] || 18, fontWeight: 700,\n fontFamily: \"var(--font-doodle)\", color: \"var(--color-doodle-ink)\",\n textDecoration: \"underline\", textDecorationStyle: \"wavy\",\n textDecorationColor: \"var(--color-doodle-border)\",\n textUnderlineOffset: 4, margin: 0,\n }} {...props}>\n {children}\n </Tag>\n );\n}\n\nfunction ShadcnText({ children, preset, ...props }) {\n const colors = {\n dimmed: \"var(--color-doodle-ink-light)\",\n accent: \"var(--color-doodle-accent)\",\n danger: \"var(--color-doodle-warn)\",\n success: \"var(--color-doodle-accent)\",\n };\n return (\n <span style={{\n fontFamily: \"var(--font-doodle)\",\n color: colors[preset] || \"var(--color-doodle-ink)\",\n }} {...props}>\n {children}\n </span>\n );\n}\n\nfunction ShadcnBadge({ children, color, ...props }) {\n return (\n <span style={{\n display: \"inline-flex\", alignItems: \"center\",\n padding: \"2px 8px\", borderRadius: 20,\n fontSize: 12, fontWeight: 700, fontFamily: \"var(--font-doodle)\",\n border: `2px solid ${color || \"var(--color-doodle-border)\"}`,\n background: \"var(--color-doodle-highlight)\",\n color: color || \"var(--color-doodle-ink)\",\n }} {...props}>\n {children}\n </span>\n );\n}\n\nfunction ShadcnAvatar({ src, name, size = 32, ...props }) {\n const initials = (name || \"?\").split(\" \").map(w => w[0]).join(\"\").slice(0, 2).toUpperCase();\n return (\n <AvatarPrimitive.Root style={{\n display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\",\n borderRadius: \"50%\", overflow: \"hidden\",\n border: \"2px solid var(--color-doodle-border)\",\n background: \"var(--color-doodle-highlight)\",\n fontFamily: \"var(--font-doodle)\",\n width: size, height: size,\n }} {...props}>\n <AvatarPrimitive.Image src={src} alt={name} style={{ width: \"100%\", height: \"100%\", objectFit: \"cover\" }} />\n <AvatarPrimitive.Fallback style={{\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n width: \"100%\", height: \"100%\",\n color: \"var(--color-doodle-ink)\", fontSize: Math.round(size * 0.4), fontWeight: 700,\n }}>\n {initials}\n </AvatarPrimitive.Fallback>\n </AvatarPrimitive.Root>\n );\n}\n\nfunction ShadcnPaper({ children, ...props }) {\n return (\n <div style={{\n borderRadius: \"var(--radius-doodle)\",\n border: \"1.5px solid var(--color-doodle-ink)\",\n background: \"var(--color-doodle-bg)\",\n padding: \"var(--spacing-doodle)\",\n boxShadow: \"2px 2px 0 var(--color-doodle-ink)\",\n }} {...props}>\n {children}\n </div>\n );\n}\n\n// ─── Adapter Export ───\n\nexport const shadcnAdapter = {\n name: \"shadcn\",\n parameter: {\n text: ShadcnTextInput,\n textarea: ShadcnTextarea,\n email: ShadcnTextInput,\n url: ShadcnTextInput,\n tel: ShadcnTextInput,\n number: ShadcnNumber,\n datetime: ShadcnDateTime,\n select: ShadcnSelect,\n },\n button: {\n primary: ShadcnPrimaryButton,\n secondary: ShadcnSecondaryButton,\n danger: ShadcnDangerButton,\n intent: ShadcnIntentButton,\n overflow: ShadcnOverflowMenu,\n },\n shell: {\n modal: ShadcnModalShell,\n tabs: ShadcnTabs,\n },\n primitive: {\n heading: ShadcnHeading,\n text: ShadcnText,\n badge: ShadcnBadge,\n avatar: ShadcnAvatar,\n paper: ShadcnPaper,\n },\n icon: {\n resolve: resolveLucide,\n },\n};\n","import React from \"react\";\nimport { registerUIAdapter } from \"@intent-driven/renderer\";\nimport { shadcnAdapter } from \"./adapter.jsx\";\n\n/**\n * Оборачивает приложение: регистрирует shadcnAdapter в @intent-driven/renderer.\n * Doodle-стилистика подключается через theme.css — хост обязан явно\n * импортировать \"@intent-driven/adapter-shadcn/styles.css\" из своего entry-файла,\n * чтобы Vite/Tailwind-плагин правильно обработал @import \"tailwindcss\".\n */\nexport function ShadcnAdapterProvider({ children }) {\n React.useEffect(() => {\n registerUIAdapter(shadcnAdapter);\n }, []);\n return <>{children}</>;\n}\n"],"mappings":";AAKA,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,kBAAkB;AAC9B,YAAY,qBAAqB;AACjC,YAAY,mBAAmB;AAC/B,YAAY,qBAAqB;AACjC,SAAS,YAAY;AACrB;AAAA,EACE;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAM;AAAA,EAAO;AAAA,EAAG;AAAA,EAAgB;AAAA,EAChD;AAAA,EAAa;AAAA,EAAK;AAAA,EAAQ;AAAA,EAAO;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EACnD;AAAA,EAAS;AAAA,EAAM;AAAA,EAAK;AAAA,EAAM;AAAA,EAAQ;AAAA,EAAU;AAAA,EAAM;AAAA,EAClD;AAAA,EAAM;AAAA,EAAQ;AAAA,EAAM;AAAA,EAAU;AAAA,EAAQ;AAAA,EAAW;AAAA,EACjD;AAAA,EAAU;AAAA,EAAO;AAAA,EAAO;AAAA,EAAU;AAAA,EAAY;AAAA,EAC9C;AAAA,EAAe;AAAA,EAAO;AAAA,EAAO;AAAA,EAAK;AAAA,EAAQ;AAAA,EAAS;AAAA,EACnD;AAAA,EAAM;AAAA,EAAQ;AAAA,EAAM;AAAA,EAAW;AAAA,EAAe;AAAA,EAAM;AAAA,EACpD;AAAA,EAAY;AAAA,EAAW;AAAA,EAAM;AAAA,EAAQ;AAAA,EAAO;AAAA,EAC5C;AAAA,EAAO;AAAA,EAAK;AAAA,EAAU;AAAA,EAAU;AAAA,EAAY;AAAA,EAAW;AAAA,EACvD;AAAA,EAAO;AAAA,EAAS;AAAA,EAAU;AAAA,EAAO;AAAA,EAAS;AAAA,OACrC;AACP,OAAO;AA8CH,SACiB,KADjB;AA1CJ,IAAM,kBAAkB;AAAA,EACtB,UAAK;AAAA,EAAQ,gBAAM;AAAA,EAAQ,aAAM;AAAA,EAAQ,mBAAO;AAAA,EAChD,UAAK;AAAA,EAAM,KAAK;AAAA,EAAM,UAAK;AAAA,EAAO,UAAK;AAAA,EAAO,gBAAM;AAAA,EACpD,UAAK;AAAA,EAAG,UAAK;AAAA,EAAG,UAAK;AAAA,EAAG,UAAK;AAAA,EAAgB,UAAK;AAAA,EAClD,aAAM;AAAA,EAAQ,aAAM;AAAA,EAAK,aAAM;AAAA,EAAK,UAAK;AAAA,EAAO,gBAAM;AAAA,EACtD,aAAM;AAAA,EAAM,UAAK;AAAA,EAAM,aAAM;AAAA,EAAM,aAAM;AAAA,EACzC,aAAM;AAAA,EAAS,aAAM;AAAA,EAAM,aAAM;AAAA,EAAK,aAAM;AAAA,EAAM,aAAM;AAAA,EACxD,UAAK;AAAA,EAAU,gBAAM;AAAA,EAAU,aAAM;AAAA,EAAM,aAAM;AAAA,EACjD,UAAK;AAAA,EAAM,UAAK;AAAA,EAAQ,aAAM;AAAA,EAAM,aAAM;AAAA,EAAU,aAAM;AAAA,EAC1D,aAAM;AAAA,EAAW,aAAM;AAAA,EAAW,aAAM;AAAA,EACxC,aAAM;AAAA,EAAU,aAAM;AAAA,EAAO,gBAAM;AAAA,EAAO,aAAM;AAAA,EAAU,aAAM;AAAA,EAChE,aAAM;AAAA,EAAM,aAAM;AAAA,EAAe,aAAM;AAAA,EAAO,aAAM;AAAA,EACpD,aAAM;AAAA,EAAK,aAAM;AAAA,EAAQ,aAAM;AAAA,EAAS,aAAM;AAAA,EAC9C,aAAM;AAAA,EAAM,UAAK;AAAA,EAAQ,UAAK;AAAA,EAAM,UAAK;AAAA,EACzC,UAAK;AAAA,EAAe,gBAAM;AAAA,EAAe,UAAK;AAAA,EAAM,gBAAM;AAAA,EAAM,UAAK;AAAA,EACrE,UAAK;AAAA,EAAY,UAAK;AAAA,EAAW,aAAM;AAAA,EACvC,aAAM;AAAA,EAAQ,aAAM;AAAA,EAAO,aAAM;AAAA,EACjC,aAAM;AAAA,EAAO,UAAK;AAAA,EAAK,aAAM;AAAA,EAAU,aAAM;AAAA,EAC7C,aAAM;AAAA,EAAY,aAAM;AAAA,EAAW,aAAM;AAAA,EACzC,aAAM;AAAA,EAAO,aAAM;AAAA,EAAS,mBAAO;AAAA,EAAU,aAAM;AAAA,EAAO,aAAM;AAAA,EAChE,UAAK;AAAA,EAAa,UAAK;AACzB;AAEA,SAAS,cAAc,OAAO;AAC5B,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,gBAAgB,KAAK,KAAK;AACnC;AAIA,IAAM,YAAY;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAIV,SAAS,gBAAgB,EAAE,MAAM,OAAO,SAAS,GAAG;AAClD,SACE,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GAC5D;AAAA,SAAK,SAAS,oBAAC,WAAM,OAAO,EAAE,UAAU,IAAI,YAAY,KAAK,OAAO,iCAAiC,YAAY,qBAAqB,GAAI,eAAK,OAAM;AAAA,IACtJ;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,KAAK,SAAS,UAAU,UAAU,KAAK,SAAS,QAAQ,QAAQ,KAAK,SAAS,QAAQ,QAAQ;AAAA,QACpG,OAAO;AAAA,UACL,OAAO;AAAA,UAAQ,cAAc;AAAA,UAC7B,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,SAAS;AAAA,UAAY,YAAY;AAAA,UACjC,OAAO;AAAA,UAA2B,UAAU;AAAA,UAC5C,SAAS;AAAA,QACX;AAAA,QACA,aAAa,KAAK,eAAe;AAAA,QACjC,OAAO,SAAS;AAAA,QAChB,UAAU,OAAK,SAAS,EAAE,OAAO,KAAK;AAAA,QACtC,UAAU,KAAK;AAAA;AAAA,IACjB;AAAA,KACF;AAEJ;AAEA,SAAS,eAAe,EAAE,MAAM,OAAO,SAAS,GAAG;AACjD,SACE,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GAC5D;AAAA,SAAK,SAAS,oBAAC,WAAM,OAAO,EAAE,UAAU,IAAI,YAAY,KAAK,OAAO,iCAAiC,YAAY,qBAAqB,GAAI,eAAK,OAAM;AAAA,IACtJ;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,OAAO;AAAA,UAAQ,cAAc;AAAA,UAC7B,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,SAAS;AAAA,UAAY,YAAY;AAAA,UACjC,OAAO;AAAA,UAA2B,UAAU;AAAA,UAC5C,WAAW;AAAA,UAAI,QAAQ;AAAA,UAAY,SAAS;AAAA,QAC9C;AAAA,QACA,aAAa,KAAK,eAAe;AAAA,QACjC,OAAO,SAAS;AAAA,QAChB,UAAU,OAAK,SAAS,EAAE,OAAO,KAAK;AAAA,QACtC,MAAM;AAAA;AAAA,IACR;AAAA,KACF;AAEJ;AAEA,SAAS,aAAa,EAAE,MAAM,OAAO,SAAS,GAAG;AAC/C,SACE,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GAC5D;AAAA,SAAK,SAAS,oBAAC,WAAM,OAAO,EAAE,UAAU,IAAI,YAAY,KAAK,OAAO,iCAAiC,YAAY,qBAAqB,GAAI,eAAK,OAAM;AAAA,IACtJ;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO;AAAA,UACL,OAAO;AAAA,UAAQ,cAAc;AAAA,UAC7B,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,SAAS;AAAA,UAAY,YAAY;AAAA,UACjC,OAAO;AAAA,UAA2B,UAAU;AAAA,UAAI,SAAS;AAAA,QAC3D;AAAA,QACA,OAAO,SAAS;AAAA,QAChB,UAAU,OAAK,SAAS,EAAE,OAAO,UAAU,KAAK,OAAO,OAAO,EAAE,OAAO,KAAK,CAAC;AAAA,QAC7E,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA;AAAA,IACZ;AAAA,KACF;AAEJ;AAEA,SAAS,eAAe,EAAE,MAAM,OAAO,SAAS,GAAG;AACjD,QAAM,aAAa,KAAK,QAAQ,QAAQ,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,IAAI;AAClF,SACE,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GAC5D;AAAA,SAAK,SAAS,oBAAC,WAAM,OAAO,EAAE,UAAU,IAAI,YAAY,KAAK,OAAO,iCAAiC,YAAY,qBAAqB,GAAI,eAAK,OAAM;AAAA,IACtJ;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,aAAa,SAAS;AAAA,QAC5B,OAAO;AAAA,UACL,OAAO;AAAA,UAAQ,cAAc;AAAA,UAC7B,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,SAAS;AAAA,UAAY,YAAY;AAAA,UACjC,OAAO;AAAA,UAA2B,UAAU;AAAA,UAAI,SAAS;AAAA,QAC3D;AAAA,QACA,OAAO,SAAS;AAAA,QAChB,UAAU,OAAK,SAAS,EAAE,OAAO,KAAK;AAAA;AAAA,IACxC;AAAA,KACF;AAEJ;AAEA,SAAS,aAAa,EAAE,MAAM,OAAO,SAAS,GAAG;AAC/C,QAAM,UAAU,KAAK,WAAW,CAAC;AACjC,SACE,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GAC5D;AAAA,SAAK,SAAS,oBAAC,WAAM,OAAO,EAAE,UAAU,IAAI,YAAY,KAAK,OAAO,iCAAiC,YAAY,qBAAqB,GAAI,eAAK,OAAM;AAAA,IACtJ,qBAAiB,sBAAhB,EAAqB,OAAO,SAAS,IAAI,eAAe,UACvD;AAAA;AAAA,QAAiB;AAAA,QAAhB;AAAA,UACC,OAAO;AAAA,YACL,SAAS;AAAA,YAAQ,YAAY;AAAA,YAAU,gBAAgB;AAAA,YACvD,OAAO;AAAA,YAAQ,cAAc;AAAA,YAC7B,QAAQ;AAAA,YACR,YAAY;AAAA,YACZ,SAAS;AAAA,YAAY,YAAY;AAAA,YACjC,OAAO;AAAA,YAA2B,UAAU;AAAA,YAAI,QAAQ;AAAA,UAC1D;AAAA,UAEA;AAAA,gCAAiB,uBAAhB,EAAsB,aAAa,KAAK,eAAe,iDAAc;AAAA,YACtE,oBAAiB,sBAAhB,EAAqB,8BAAC,eAAY,MAAM,IAAI,GAAE;AAAA;AAAA;AAAA,MACjD;AAAA,MACA,oBAAiB,wBAAhB,EACC;AAAA,QAAiB;AAAA,QAAhB;AAAA,UACC,OAAO;AAAA,YACL,YAAY;AAAA,YACZ,QAAQ;AAAA,YACR,cAAc;AAAA,YACd,WAAW;AAAA,YACX,QAAQ;AAAA,YAAM,YAAY;AAAA,UAC5B;AAAA,UACA,UAAS;AAAA,UAAS,YAAY;AAAA,UAE9B,8BAAiB,0BAAhB,EAAyB,OAAO,EAAE,SAAS,EAAE,GAC3C,kBAAQ,IAAI,SACX;AAAA,YAAiB;AAAA,YAAhB;AAAA,cAEC,OAAO,IAAI,SAAS;AAAA,cACpB,OAAO;AAAA,gBACL,SAAS;AAAA,gBAAY,cAAc;AAAA,gBAAG,QAAQ;AAAA,gBAC9C,OAAO;AAAA,gBAA2B,SAAS;AAAA,gBAAQ,UAAU;AAAA,cAC/D;AAAA,cAEA,8BAAiB,0BAAhB,EAA0B,cAAI,SAAS,KAAI;AAAA;AAAA,YAPvC,IAAI,SAAS;AAAA,UAQpB,CACD,GACH;AAAA;AAAA,MACF,GACF;AAAA,OACF;AAAA,KACF;AAEJ;AAIA,IAAM,UAAU;AAAA,EACd,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,UAAU;AACZ;AAEA,SAAS,oBAAoB,EAAE,UAAU,SAAS,UAAU,GAAG,MAAM,GAAG;AACtE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MAAkB;AAAA,MAClB,OAAO;AAAA,QACL,GAAG;AAAA,QAAS,SAAS;AAAA,QAAY,YAAY;AAAA,QAC7C,YAAY;AAAA,QAA8B,OAAO;AAAA,QACjD,aAAa;AAAA,QACb,WAAW;AAAA,QACX,SAAS,WAAW,MAAM;AAAA,MAC5B;AAAA,MACC,GAAG;AAAA,MACJ;AAAA;AAAA,EAAS;AAEf;AAEA,SAAS,sBAAsB,EAAE,UAAU,SAAS,UAAU,GAAG,MAAM,GAAG;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MAAkB;AAAA,MAClB,OAAO;AAAA,QACL,GAAG;AAAA,QAAS,SAAS;AAAA,QACrB,YAAY;AAAA,QAAe,OAAO;AAAA,QAClC,aAAa;AAAA,QAA8B,aAAa;AAAA,QACxD,SAAS,WAAW,MAAM;AAAA,MAC5B;AAAA,MACC,GAAG;AAAA,MACJ;AAAA;AAAA,EAAS;AAEf;AAEA,SAAS,mBAAmB,EAAE,UAAU,SAAS,UAAU,GAAG,MAAM,GAAG;AACrE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MAAkB;AAAA,MAClB,OAAO;AAAA,QACL,GAAG;AAAA,QAAS,SAAS;AAAA,QAAY,YAAY;AAAA,QAC7C,YAAY;AAAA,QAA4B,OAAO;AAAA,QAC/C,aAAa;AAAA,QACb,WAAW;AAAA,QACX,SAAS,WAAW,MAAM;AAAA,MAC5B;AAAA,MACC,GAAG;AAAA,MACJ;AAAA;AAAA,EAAS;AAEf;AAEA,SAAS,mBAAmB,EAAE,MAAM,SAAS,SAAS,GAAG;AACvD,QAAMA,QAAO,KAAK,OAAO,cAAc,KAAK,IAAI,IAAI;AACpD,QAAM,QAAQ,KAAK,SAAS,KAAK;AACjC,QAAM,WAAW,KAAK,oBAAoB,UAAU,KAAK,YAAY;AAErE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MAAkB;AAAA,MAClB,OAAO;AAAA,QACL,GAAG;AAAA,QAAS,SAAS;AAAA,QAAe,YAAY;AAAA,QAAU,KAAK;AAAA,QAC/D,SAAS;AAAA,QAAY,UAAU;AAAA,QAC/B,YAAY,WAAW,gBAAgB;AAAA,QACvC,OAAO,WAAW,6BAA6B;AAAA,QAC/C,aAAa,WAAW,6BAA6B;AAAA,QACrD,aAAa;AAAA,QAAS,aAAa;AAAA,QACnC,WAAW;AAAA,QACX,SAAS,WAAW,MAAM;AAAA,MAC5B;AAAA,MACA,OAAO;AAAA,MAEN;AAAA,QAAAA,SAAQ,oBAACA,OAAA,EAAK,MAAM,IAAI;AAAA,QACzB,oBAAC,UAAM,iBAAM;AAAA;AAAA;AAAA,EACf;AAEJ;AAEA,SAAS,mBAAmB,EAAE,OAAO,aAAa,aAAa,GAAG;AAChE,MAAI,CAAC,SAAS,MAAM,WAAW,EAAG,QAAO;AAEzC,SACE,qBAAc,mBAAb,EACC;AAAA,wBAAc,sBAAb,EAAqB,SAAO,MAC3B,8BAAC,YAAO,OAAO;AAAA,MACb,GAAG;AAAA,MAAS,SAAS;AAAA,MAAG,YAAY;AAAA,MACpC,OAAO;AAAA,MACP,aAAa;AAAA,MAA8B,aAAa;AAAA,IAC1D,GACE,8BAAC,kBAAe,MAAM,IAAI,GAC5B,GACF;AAAA,IACA,oBAAc,qBAAb,EACC;AAAA,MAAc;AAAA,MAAb;AAAA,QACC,OAAM;AAAA,QACN,kBAAkB;AAAA,QAClB,OAAO;AAAA,UACL,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,WAAW;AAAA,UACX,SAAS;AAAA,UAAG,QAAQ;AAAA,UAAM,YAAY;AAAA,UACtC,UAAU;AAAA,UAAK,UAAU;AAAA,QAC3B;AAAA,QACA,YAAY;AAAA,QAEX,gBAAM,IAAI,CAAC,MAAM,MAAM;AACtB,cAAI,KAAK,QAAS,QAAO,oBAAc,wBAAb,EAAsC,OAAO,EAAE,QAAQ,GAAG,YAAY,8BAA8B,QAAQ,QAAQ,KAAxF,KAAK,GAAsF;AACjJ,gBAAM,UAAU,KAAK,OAAO,cAAc,KAAK,IAAI,IAAI;AACvD,iBACE;AAAA,YAAc;AAAA,YAAb;AAAA,cAEC,OAAO;AAAA,gBACL,SAAS;AAAA,gBAAQ,YAAY;AAAA,gBAAU,KAAK;AAAA,gBAC5C,SAAS;AAAA,gBAAY,cAAc;AAAA,gBAAG,UAAU;AAAA,gBAChD,OAAO;AAAA,gBAA2B,SAAS;AAAA,gBAAQ,QAAQ;AAAA,cAC7D;AAAA,cACA,UAAU,MAAM,KAAK,UAAU;AAAA,cAE9B;AAAA,2BAAW,oBAAC,WAAQ,MAAM,IAAI;AAAA,gBAC/B,oBAAC,UAAM,eAAK,OAAM;AAAA;AAAA;AAAA,YATb,KAAK,OAAO;AAAA,UAUnB;AAAA,QAEJ,CAAC;AAAA;AAAA,IACH,GACF;AAAA,KACF;AAEJ;AAIA,SAAS,iBAAiB,EAAE,QAAQ,SAAS,OAAO,SAAS,GAAG;AAC9D,SACE,oBAAQ,aAAP,EAAY,MAAM,QAAQ,cAAc,OAAK;AAAE,QAAI,CAAC,EAAG,SAAQ;AAAA,EAAG,GACjE,+BAAQ,eAAP,EACC;AAAA,wBAAQ,gBAAP,EAAe,OAAO;AAAA,MACrB,UAAU;AAAA,MAAS,OAAO;AAAA,MAAG,YAAY;AAAA,MACzC,gBAAgB;AAAA,MAAa,QAAQ;AAAA,IACvC,GAAG;AAAA,IACH,qBAAQ,gBAAP,EAAe,OAAO;AAAA,MACrB,UAAU;AAAA,MAAS,MAAM;AAAA,MAAO,KAAK;AAAA,MACrC,WAAW;AAAA,MAAyB,QAAQ;AAAA,MAC5C,OAAO;AAAA,MAAqB,UAAU;AAAA,MAAK,WAAW;AAAA,MACtD,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,WAAW;AAAA,IACb,GACE;AAAA,0BAAQ,cAAP,EAAa,OAAO;AAAA,QACnB,UAAU;AAAA,QAAI,YAAY;AAAA,QAC1B,OAAO;AAAA,QACP,gBAAgB;AAAA,QAAa,qBAAqB;AAAA,QAClD,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QAAG,cAAc;AAAA,MACxC,GACG,iBACH;AAAA,MACC;AAAA,MACD,oBAAQ,cAAP,EAAa,SAAO,MACnB,8BAAC,YAAO,OAAO;AAAA,QACb,UAAU;AAAA,QAAY,KAAK;AAAA,QAAI,OAAO;AAAA,QAAI,YAAY;AAAA,QACtD,QAAQ;AAAA,QAAQ,OAAO;AAAA,QAAiC,QAAQ;AAAA,QAChE,SAAS;AAAA,MACX,GACE,8BAAC,KAAE,MAAM,IAAI,GACf,GACF;AAAA,OACF;AAAA,KACF,GACF;AAEJ;AAEA,SAAS,WAAW,EAAE,MAAM,OAAO,SAAS,GAAG;AAC7C,SACE,oBAAe,oBAAd,EAAmB,OAAc,eAAe,UAC/C,8BAAe,oBAAd,EAAmB,OAAO;AAAA,IACzB,SAAS;AAAA,IAAQ,cAAc;AAAA,IAC/B,YAAY;AAAA,IAAsB,WAAW;AAAA,IAAQ,KAAK;AAAA,EAC5D,GACG,eAAK,IAAI,SACR;AAAA,IAAe;AAAA,IAAd;AAAA,MAEC,OAAO,IAAI;AAAA,MACX,OAAO;AAAA,QACL,SAAS;AAAA,QAAY,UAAU;AAAA,QAAI,YAAY;AAAA,QAC/C,YAAY;AAAA,QAAe,QAAQ;AAAA,QAAQ,QAAQ;AAAA,QACnD,YAAY;AAAA,QACZ,cAAc;AAAA,QAAyB,cAAc;AAAA,QACrD,OAAO;AAAA,MACT;AAAA,MAEC,cAAI;AAAA;AAAA,IAVA,IAAI;AAAA,EAWX,CACD,GACH,GACF;AAEJ;AAIA,SAAS,cAAc,EAAE,UAAU,QAAQ,GAAG,GAAG,MAAM,GAAG;AACxD,QAAM,MAAM,IAAI,KAAK,IAAI,OAAO,CAAC,CAAC;AAClC,QAAM,QAAQ,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG;AACzD,SACE,oBAAC,OAAI,OAAO;AAAA,IACV,UAAU,MAAM,KAAK,KAAK;AAAA,IAAI,YAAY;AAAA,IAC1C,YAAY;AAAA,IAAsB,OAAO;AAAA,IACzC,gBAAgB;AAAA,IAAa,qBAAqB;AAAA,IAClD,qBAAqB;AAAA,IACrB,qBAAqB;AAAA,IAAG,QAAQ;AAAA,EAClC,GAAI,GAAG,OACJ,UACH;AAEJ;AAEA,SAAS,WAAW,EAAE,UAAU,QAAQ,GAAG,MAAM,GAAG;AAClD,QAAM,SAAS;AAAA,IACb,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AACA,SACE,oBAAC,UAAK,OAAO;AAAA,IACX,YAAY;AAAA,IACZ,OAAO,OAAO,MAAM,KAAK;AAAA,EAC3B,GAAI,GAAG,OACJ,UACH;AAEJ;AAEA,SAAS,YAAY,EAAE,UAAU,OAAO,GAAG,MAAM,GAAG;AAClD,SACE,oBAAC,UAAK,OAAO;AAAA,IACX,SAAS;AAAA,IAAe,YAAY;AAAA,IACpC,SAAS;AAAA,IAAW,cAAc;AAAA,IAClC,UAAU;AAAA,IAAI,YAAY;AAAA,IAAK,YAAY;AAAA,IAC3C,QAAQ,aAAa,SAAS,4BAA4B;AAAA,IAC1D,YAAY;AAAA,IACZ,OAAO,SAAS;AAAA,EAClB,GAAI,GAAG,OACJ,UACH;AAEJ;AAEA,SAAS,aAAa,EAAE,KAAK,MAAM,OAAO,IAAI,GAAG,MAAM,GAAG;AACxD,QAAM,YAAY,QAAQ,KAAK,MAAM,GAAG,EAAE,IAAI,OAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,YAAY;AAC1F,SACE,qBAAiB,sBAAhB,EAAqB,OAAO;AAAA,IAC3B,SAAS;AAAA,IAAe,YAAY;AAAA,IAAU,gBAAgB;AAAA,IAC9D,cAAc;AAAA,IAAO,UAAU;AAAA,IAC/B,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,OAAO;AAAA,IAAM,QAAQ;AAAA,EACvB,GAAI,GAAG,OACL;AAAA,wBAAiB,uBAAhB,EAAsB,KAAU,KAAK,MAAM,OAAO,EAAE,OAAO,QAAQ,QAAQ,QAAQ,WAAW,QAAQ,GAAG;AAAA,IAC1G,oBAAiB,0BAAhB,EAAyB,OAAO;AAAA,MAC/B,SAAS;AAAA,MAAQ,YAAY;AAAA,MAAU,gBAAgB;AAAA,MACvD,OAAO;AAAA,MAAQ,QAAQ;AAAA,MACvB,OAAO;AAAA,MAA2B,UAAU,KAAK,MAAM,OAAO,GAAG;AAAA,MAAG,YAAY;AAAA,IAClF,GACG,oBACH;AAAA,KACF;AAEJ;AAEA,SAAS,YAAY,EAAE,UAAU,GAAG,MAAM,GAAG;AAC3C,SACE,oBAAC,SAAI,OAAO;AAAA,IACV,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,WAAW;AAAA,EACb,GAAI,GAAG,OACJ,UACH;AAEJ;AAIO,IAAM,gBAAgB;AAAA,EAC3B,MAAM;AAAA,EACN,WAAW;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AAAA,EACA,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,OAAO;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA,WAAW;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EACA,MAAM;AAAA,IACJ,SAAS;AAAA,EACX;AACF;;;AC3hBA,OAAOC,YAAW;AAClB,SAAS,yBAAyB;AAazB,0BAAAC,YAAA;AAJF,SAAS,sBAAsB,EAAE,SAAS,GAAG;AAClD,EAAAC,OAAM,UAAU,MAAM;AACpB,sBAAkB,aAAa;AAAA,EACjC,GAAG,CAAC,CAAC;AACL,SAAO,gBAAAD,KAAA,YAAG,UAAS;AACrB;","names":["Icon","React","jsx","React"]}
|
package/dist/theme.css
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
|
|
2
|
+
@theme {
|
|
3
|
+
--color-doodle-bg: #fdfaf3;
|
|
4
|
+
--color-doodle-line: #e8d5b7;
|
|
5
|
+
--color-doodle-ink: #2c2420;
|
|
6
|
+
--color-doodle-ink-light: #6b5d52;
|
|
7
|
+
--color-doodle-accent: #4a7c59;
|
|
8
|
+
--color-doodle-warn: #c25a3a;
|
|
9
|
+
--color-doodle-gold: #c98f3f;
|
|
10
|
+
--color-doodle-border: #2c2420;
|
|
11
|
+
--color-doodle-border-soft: #b8a890;
|
|
12
|
+
--color-doodle-highlight: #fff3cd;
|
|
13
|
+
--font-doodle: 'Caveat', 'Comic Sans MS', 'Segoe Print', cursive;
|
|
14
|
+
--font-doodle-ui: 'Architects Daughter', 'Caveat', 'Comic Sans MS', cursive;
|
|
15
|
+
--radius-doodle: 14px;
|
|
16
|
+
--spacing-doodle: 16px;
|
|
17
|
+
--spacing-doodle-lg: 20px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* Sketch-шрифты для рукописного UI (как в wireframe-mockup) */
|
|
21
|
+
@import url('https://fonts.googleapis.com/css2?family=Caveat:wght@400;600;700&family=Architects+Daughter&display=swap');
|
|
22
|
+
|
|
23
|
+
/* Глобально предотвращаем горизонтальный scroll на корне */
|
|
24
|
+
html, body {
|
|
25
|
+
overflow-x: hidden;
|
|
26
|
+
max-width: 100vw;
|
|
27
|
+
}
|
|
28
|
+
body {
|
|
29
|
+
background-color: var(--color-doodle-bg);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* Кастомный scrollbar в doodle-стиле */
|
|
33
|
+
*::-webkit-scrollbar {
|
|
34
|
+
width: 10px;
|
|
35
|
+
height: 10px;
|
|
36
|
+
}
|
|
37
|
+
*::-webkit-scrollbar-track {
|
|
38
|
+
background: transparent;
|
|
39
|
+
}
|
|
40
|
+
*::-webkit-scrollbar-thumb {
|
|
41
|
+
background: var(--color-doodle-border-soft);
|
|
42
|
+
border-radius: 5px;
|
|
43
|
+
}
|
|
44
|
+
*::-webkit-scrollbar-thumb:hover {
|
|
45
|
+
background: var(--color-doodle-ink-light);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Линованная бумага */
|
|
49
|
+
.doodle-paper {
|
|
50
|
+
background-color: var(--color-doodle-bg);
|
|
51
|
+
background-image: repeating-linear-gradient(
|
|
52
|
+
transparent, transparent 27px, var(--color-doodle-line) 28px
|
|
53
|
+
);
|
|
54
|
+
font-family: var(--font-doodle);
|
|
55
|
+
color: var(--color-doodle-ink);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* Прогресс-бар со штриховкой */
|
|
59
|
+
.doodle-progress-fill {
|
|
60
|
+
background: repeating-linear-gradient(
|
|
61
|
+
45deg,
|
|
62
|
+
var(--color-doodle-accent),
|
|
63
|
+
var(--color-doodle-accent) 4px,
|
|
64
|
+
#5a8c69 4px,
|
|
65
|
+
#5a8c69 8px
|
|
66
|
+
);
|
|
67
|
+
border-radius: calc(var(--radius-doodle) / 2);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* Разделитель */
|
|
71
|
+
.doodle-divider {
|
|
72
|
+
border: none;
|
|
73
|
+
border-top: 2px dashed var(--color-doodle-border);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Wavy заголовок */
|
|
77
|
+
.doodle-heading {
|
|
78
|
+
text-decoration: underline;
|
|
79
|
+
text-decoration-style: wavy;
|
|
80
|
+
text-decoration-color: var(--color-doodle-border);
|
|
81
|
+
text-underline-offset: 4px;
|
|
82
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@intent-driven/adapter-shadcn",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "shadcn/ui doodle-style adapter for @intent-driven/renderer",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.mjs",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.mjs",
|
|
13
|
+
"require": "./dist/index.cjs"
|
|
14
|
+
},
|
|
15
|
+
"./styles.css": "./dist/theme.css"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"README.md",
|
|
20
|
+
"CHANGELOG.md",
|
|
21
|
+
"LICENSE"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsup && node -e \"require('fs').writeFileSync('dist/theme.css', require('fs').readFileSync('src/theme.css','utf8').replace(/@import \\\"tailwindcss\\\";\\n?/g, ''))\"",
|
|
25
|
+
"test": "vitest run"
|
|
26
|
+
},
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"react": ">=18",
|
|
29
|
+
"@intent-driven/renderer": ">=0.2.0",
|
|
30
|
+
"lucide-react": ">=1.0"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"tsup": "^8.5.0",
|
|
34
|
+
"vitest": "^4.1.0",
|
|
35
|
+
"jsdom": "^25.0.0",
|
|
36
|
+
"@testing-library/react": "^16.1.0",
|
|
37
|
+
"react": "^19.0.0",
|
|
38
|
+
"react-dom": "^19.0.0",
|
|
39
|
+
"typescript": "^5.7.0",
|
|
40
|
+
"@intent-driven/renderer": "workspace:*",
|
|
41
|
+
"lucide-react": "^1.8.0",
|
|
42
|
+
"@radix-ui/react-dialog": "^1.1.0",
|
|
43
|
+
"@radix-ui/react-dropdown-menu": "^2.1.0",
|
|
44
|
+
"@radix-ui/react-select": "^2.2.0",
|
|
45
|
+
"@radix-ui/react-tabs": "^1.1.0",
|
|
46
|
+
"@radix-ui/react-avatar": "^1.1.0",
|
|
47
|
+
"clsx": "^2.1.0"
|
|
48
|
+
},
|
|
49
|
+
"publishConfig": {
|
|
50
|
+
"access": "public"
|
|
51
|
+
},
|
|
52
|
+
"license": "MIT",
|
|
53
|
+
"author": "Игнат Дубовский <dubovskyy.im@gmail.com>",
|
|
54
|
+
"homepage": "https://github.com/ignatdubovskiy/idf-sdk/tree/main/packages/adapter-shadcn",
|
|
55
|
+
"repository": {
|
|
56
|
+
"type": "git",
|
|
57
|
+
"url": "https://github.com/ignatdubovskiy/idf-sdk.git",
|
|
58
|
+
"directory": "packages/adapter-shadcn"
|
|
59
|
+
},
|
|
60
|
+
"bugs": {
|
|
61
|
+
"url": "https://github.com/ignatdubovskiy/idf-sdk/issues"
|
|
62
|
+
},
|
|
63
|
+
"keywords": [
|
|
64
|
+
"idf",
|
|
65
|
+
"shadcn",
|
|
66
|
+
"ui-adapter",
|
|
67
|
+
"tailwind",
|
|
68
|
+
"react"
|
|
69
|
+
],
|
|
70
|
+
"sideEffects": [
|
|
71
|
+
"**/*.css"
|
|
72
|
+
]
|
|
73
|
+
}
|