@leanmcp/ui 0.3.3 → 0.3.5

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/decorator/UIApp.ts","../src/decorator/GPTApp.ts"],"names":["UI_APP_COMPONENT_KEY","UI_APP_URI_KEY","UI_APP_OPTIONS_KEY","UIApp","options","target","propertyKey","descriptor","methodName","String","className","name","toLowerCase","replace","uri","Reflect","defineMetadata","component","value","existingMeta","getMetadata","ui","resourceUri","getUIAppMetadata","undefined","getUIAppUri","GPT_APP_COMPONENT_KEY","GPT_APP_URI_KEY","GPT_APP_OPTIONS_KEY","GPTApp","uiMeta","visibility","openAiMeta","widgetAccessible","prefersBorder","widgetDomain","widgetDescription","csp","fileParams","invocation","invoking","invoked","getGPTAppMetadata","getGPTAppUri"],"mappings":"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","file":"chunk-5RGEQPF3.mjs","sourcesContent":["/**\n * @UIApp Decorator\n * \n * Links an MCP tool to a React UI component.\n * When applied to a tool method, it:\n * 1. Adds _meta.ui/resourceUri to the tool definition\n * 2. Auto-registers a resource that renders the component to HTML\n * \n * This decorator is designed to work with @leanmcp/core decorators.\n */\nimport 'reflect-metadata';\nimport type React from 'react';\n\n// Metadata keys\nexport const UI_APP_COMPONENT_KEY = 'ui:app:component';\nexport const UI_APP_URI_KEY = 'ui:app:uri';\nexport const UI_APP_OPTIONS_KEY = 'ui:app:options';\n\n/**\n * Options for @UIApp decorator\n */\nexport interface UIAppOptions {\n /** \n * React component or path to component file (relative to service file).\n * - Use path string (e.g., './WeatherCard') for CLI build - avoids importing browser code in server\n * - Use component reference for direct SSR rendering\n */\n component: React.ComponentType<any> | string;\n /** Custom resource URI (auto-generated if not provided) */\n uri?: string;\n /** HTML document title */\n title?: string;\n /** Additional CSS styles */\n styles?: string;\n}\n\n\n/**\n * Decorator that links a tool to a UI component.\n * \n * When the tool is called, the host will fetch the UI resource\n * which returns the component rendered as HTML.\n * \n * @example\n * ```typescript\n * import { Tool } from '@leanmcp/core';\n * import { UIApp } from '@leanmcp/ui';\n * import { WeatherCard } from './WeatherCard';\n * \n * class WeatherService {\n * @Tool({ description: 'Get weather for a city' })\n * @UIApp({ component: WeatherCard })\n * async getWeather(args: { city: string }) {\n * return { city: args.city, temp: 22 };\n * }\n * }\n * ```\n */\nexport function UIApp(options: UIAppOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const methodName = String(propertyKey);\n // Use same pattern as @Resource in @leanmcp/core: className without 'service' suffix\n const className = target.constructor.name.toLowerCase().replace('service', '');\n\n // Generate URI using ui:// scheme (required by ext-apps hosts)\n const uri = options.uri ?? `ui://${className}/${methodName}`;\n\n // Store metadata on the method\n Reflect.defineMetadata(UI_APP_COMPONENT_KEY, options.component, descriptor.value!);\n Reflect.defineMetadata(UI_APP_URI_KEY, uri, descriptor.value!);\n Reflect.defineMetadata(UI_APP_OPTIONS_KEY, options, descriptor.value!);\n\n // Also store the resource URI for the @Tool decorator to pick up\n // The @Tool decorator in @leanmcp/core should check for this\n const existingMeta = Reflect.getMetadata('tool:meta', descriptor.value) || {};\n Reflect.defineMetadata('tool:meta', {\n ...existingMeta,\n // New nested format (preferred by ext-apps 0.2.2)\n ui: {\n resourceUri: uri,\n },\n // Legacy flat format (for backwards compatibility)\n 'ui/resourceUri': uri,\n }, descriptor.value!);\n\n return descriptor;\n };\n}\n\n/**\n * Helper to get UIApp metadata from a method\n */\nexport function getUIAppMetadata(target: Function): UIAppOptions | undefined {\n const component = Reflect.getMetadata(UI_APP_COMPONENT_KEY, target);\n if (!component) return undefined;\n\n return {\n component,\n uri: Reflect.getMetadata(UI_APP_URI_KEY, target),\n ...Reflect.getMetadata(UI_APP_OPTIONS_KEY, target),\n };\n}\n\n/**\n * Helper to get the resource URI from a method\n */\nexport function getUIAppUri(target: Function): string | undefined {\n return Reflect.getMetadata(UI_APP_URI_KEY, target);\n}\n","/**\n * @GPTApp Decorator\n * \n * Links an MCP tool to a React UI component compliant with ChatGPT Apps SDK.\n * \n * When applied to a tool method, it:\n * 1. Adds _meta.ui/resourceUri to the tool definition\n * 2. Adds OpenAI-specific metadata (widgetAccessible, outputTemplate, etc.)\n * 3. Auto-registers a resource that renders the component to HTML with 'text/html+skybridge' mimeType\n */\nimport 'reflect-metadata';\nimport type React from 'react';\n\n// Metadata keys\nexport const GPT_APP_COMPONENT_KEY = 'gptapp:component';\nexport const GPT_APP_URI_KEY = 'gptapp:uri';\nexport const GPT_APP_OPTIONS_KEY = 'gptapp:options';\n\n/**\n * Options for @GPTApp decorator\n */\nexport interface GPTAppOptions {\n /** \n * React component or path to component file (relative to service file).\n * - Use path string (e.g., './WeatherCard') for CLI build - avoids importing browser code in server\n * - Use component reference for direct SSR rendering\n */\n component: React.ComponentType<any> | string;\n\n /** Custom resource URI (auto-generated ui://... if not provided) */\n uri?: string;\n\n /** HTML document title */\n title?: string;\n\n /** Additional CSS styles */\n styles?: string;\n\n // ========== GPT-specific options ==========\n\n /** \n * Allow widget to call tools via window.openai.callTool.\n * Maps to _meta[\"openai/widgetAccessible\"]\n */\n widgetAccessible?: boolean;\n\n /** \n * Tool visibility: 'public' (default) or 'private'.\n * 'private' hides the tool from the model but keeps it callable by the widget.\n * Maps to _meta[\"openai/visibility\"]\n */\n visibility?: 'public' | 'private';\n\n /** \n * Widget prefers border around iframe.\n * Maps to _meta[\"openai/widgetPrefersBorder\"]\n */\n prefersBorder?: boolean;\n\n /** \n * Widget domain for API allowlists.\n * Maps to _meta[\"openai/widgetDomain\"]\n */\n widgetDomain?: string;\n\n /** \n * Widget description for the model.\n * Maps to _meta[\"openai/widgetDescription\"]\n */\n widgetDescription?: string;\n\n /** \n * Content Security Policy configuration.\n * Maps to _meta[\"openai/widgetCSP\"]\n */\n csp?: {\n connect_domains?: string[];\n resource_domains?: string[];\n redirect_domains?: string[];\n frame_domains?: string[];\n };\n\n /** \n * File parameters (fields treated as file uploads).\n * Maps to _meta[\"openai/fileParams\"]\n */\n fileParams?: string[];\n\n /** \n * Invocation messages shown during tool call.\n * Maps to _meta[\"openai/toolInvocation\"]\n */\n invocation?: {\n invoking?: string; // e.g., \"Preparing the board…\"\n invoked?: string; // e.g., \"Board ready.\"\n };\n}\n\n\n/**\n * Decorator that links a tool to a UI component for ChatGPT Apps.\n * \n * When the tool is called, the host will fetch the UI resource\n * which returns the component rendered as HTML with 'text/html+skybridge'.\n * \n * @example\n * ```typescript\n * import { Tool } from '@leanmcp/core';\n * import { GPTApp } from '@leanmcp/ui';\n * import { KanbanBoard } from './KanbanBoard';\n * \n * class KanbanService {\n * @Tool({ description: 'Show Kanban Board' })\n * @GPTApp({ \n * component: KanbanBoard,\n * widgetAccessible: true,\n * invocation: { invoking: 'Loading board...' }\n * })\n * async showBoard() { ... }\n * }\n * ```\n */\nexport function GPTApp(options: GPTAppOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const methodName = String(propertyKey);\n // Use same pattern as @Resource in @leanmcp/core: className without 'service' suffix\n const className = target.constructor.name.toLowerCase().replace('service', '');\n\n // Generate URI using ui:// scheme (required by ext-apps hosts)\n const uri = options.uri ?? `ui://${className}/${methodName}`;\n\n // Store metadata on the method\n Reflect.defineMetadata(GPT_APP_COMPONENT_KEY, options.component, descriptor.value!);\n Reflect.defineMetadata(GPT_APP_URI_KEY, uri, descriptor.value!);\n Reflect.defineMetadata(GPT_APP_OPTIONS_KEY, options, descriptor.value!);\n\n // Also store the resource URI and OpenAI-specific metadata for the @Tool decorator to pick up\n const existingMeta = Reflect.getMetadata('tool:meta', descriptor.value) || {};\n\n // Build nested ui metadata (preferred by ext-apps 0.2.2)\n const uiMeta: Record<string, any> = {\n resourceUri: uri,\n };\n\n // Map visibility to ext-apps format\n if (options.visibility) {\n uiMeta.visibility = options.visibility === 'private' ? ['app'] : ['model', 'app'];\n }\n\n const openAiMeta: Record<string, any> = {\n // New nested format (preferred by ext-apps 0.2.2)\n ui: uiMeta,\n // Legacy flat format (for backwards compatibility)\n 'ui/resourceUri': uri,\n 'openai/outputTemplate': uri,\n };\n\n if (options.widgetAccessible !== undefined) {\n openAiMeta['openai/widgetAccessible'] = options.widgetAccessible;\n }\n\n if (options.visibility) {\n openAiMeta['openai/visibility'] = options.visibility;\n }\n\n if (options.prefersBorder !== undefined) {\n openAiMeta['openai/widgetPrefersBorder'] = options.prefersBorder;\n }\n\n if (options.widgetDomain) {\n openAiMeta['openai/widgetDomain'] = options.widgetDomain;\n }\n\n if (options.widgetDescription) {\n openAiMeta['openai/widgetDescription'] = options.widgetDescription;\n }\n\n if (options.csp) {\n openAiMeta['openai/widgetCSP'] = options.csp;\n }\n\n if (options.fileParams) {\n openAiMeta['openai/fileParams'] = options.fileParams;\n }\n\n if (options.invocation) {\n if (options.invocation.invoking) openAiMeta['openai/toolInvocation/invoking'] = options.invocation.invoking;\n if (options.invocation.invoked) openAiMeta['openai/toolInvocation/invoked'] = options.invocation.invoked;\n }\n\n Reflect.defineMetadata('tool:meta', {\n ...existingMeta,\n ...openAiMeta,\n }, descriptor.value!);\n\n return descriptor;\n };\n}\n\n/**\n * Helper to get GPTApp metadata from a method\n */\nexport function getGPTAppMetadata(target: Function): GPTAppOptions | undefined {\n const component = Reflect.getMetadata(GPT_APP_COMPONENT_KEY, target);\n if (!component) return undefined;\n\n return {\n component,\n uri: Reflect.getMetadata(GPT_APP_URI_KEY, target),\n ...Reflect.getMetadata(GPT_APP_OPTIONS_KEY, target),\n };\n}\n\n/**\n * Helper to get the resource URI from a method\n */\nexport function getGPTAppUri(target: Function): string | undefined {\n return Reflect.getMetadata(GPT_APP_URI_KEY, target);\n}\n"]}
@@ -0,0 +1,138 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ /**
6
+ * MCP-Native UI SDK - Global Styles
7
+ *
8
+ * CSS variables that integrate with MCP Host theming.
9
+ * MCP hosts provide variables like --color-background-primary, --color-text-primary, etc.
10
+ * We map these to shadcn-compatible variables for seamless theming.
11
+ */
12
+
13
+ @layer base {
14
+ :root {
15
+ /* === Background colors === */
16
+ /* Map MCP host variables to shadcn variables, with fallbacks */
17
+ --background: var(--color-background-primary, 0 0% 100%);
18
+ --foreground: var(--color-text-primary, 222.2 84% 4.9%);
19
+
20
+ --card: var(--color-background-secondary, 0 0% 100%);
21
+ --card-foreground: var(--color-text-primary, 222.2 84% 4.9%);
22
+
23
+ --popover: 0 0% 100%;
24
+ --popover-foreground: 222.2 84% 4.9%;
25
+
26
+ /* === Brand colors === */
27
+ --primary: 222.2 47.4% 11.2%;
28
+ --primary-foreground: 210 40% 98%;
29
+
30
+ --secondary: var(--color-background-tertiary, 210 40% 96.1%);
31
+ --secondary-foreground: 222.2 47.4% 11.2%;
32
+
33
+ --muted: 210 40% 96.1%;
34
+ --muted-foreground: var(--color-text-secondary, 215.4 16.3% 46.9%);
35
+
36
+ --accent: 210 40% 96.1%;
37
+ --accent-foreground: 222.2 47.4% 11.2%;
38
+
39
+ /* === Semantic colors === */
40
+ --destructive: var(--color-background-danger, 0 84.2% 60.2%);
41
+ --destructive-foreground: 210 40% 98%;
42
+
43
+ --success: var(--color-background-success, 142 76% 36%);
44
+ --success-foreground: 0 0% 100%;
45
+
46
+ --warning: var(--color-background-warning, 38 92% 50%);
47
+ --warning-foreground: 0 0% 0%;
48
+
49
+ --info: var(--color-background-info, 199 89% 48%);
50
+ --info-foreground: 0 0% 100%;
51
+
52
+ /* === Border and focus === */
53
+ --border: var(--color-border-primary, 214.3 31.8% 91.4%);
54
+ --input: 214.3 31.8% 91.4%;
55
+ --ring: var(--color-ring-primary, 222.2 84% 4.9%);
56
+
57
+ /* === Geometry === */
58
+ --radius: var(--border-radius-md, 0.5rem);
59
+
60
+ /* === Typography === */
61
+ --font-sans: var(--font-sans, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif);
62
+ --font-mono: var(--font-mono, ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace);
63
+ }
64
+
65
+ /* Dark mode - activated by class or data attribute */
66
+ .dark,
67
+ [data-theme="dark"] {
68
+ --background: var(--color-background-primary, 222.2 84% 4.9%);
69
+ --foreground: var(--color-text-primary, 210 40% 98%);
70
+
71
+ --card: var(--color-background-secondary, 222.2 84% 4.9%);
72
+ --card-foreground: var(--color-text-primary, 210 40% 98%);
73
+
74
+ --popover: 222.2 84% 4.9%;
75
+ --popover-foreground: 210 40% 98%;
76
+
77
+ --primary: 210 40% 98%;
78
+ --primary-foreground: 222.2 47.4% 11.2%;
79
+
80
+ --secondary: var(--color-background-tertiary, 217.2 32.6% 17.5%);
81
+ --secondary-foreground: 210 40% 98%;
82
+
83
+ --muted: 217.2 32.6% 17.5%;
84
+ --muted-foreground: var(--color-text-secondary, 215 20.2% 65.1%);
85
+
86
+ --accent: 217.2 32.6% 17.5%;
87
+ --accent-foreground: 210 40% 98%;
88
+
89
+ --destructive: var(--color-background-danger, 0 62.8% 30.6%);
90
+ --destructive-foreground: 210 40% 98%;
91
+
92
+ --success: var(--color-background-success, 142 69% 58%);
93
+ --success-foreground: 0 0% 0%;
94
+
95
+ --warning: var(--color-background-warning, 38 92% 50%);
96
+ --warning-foreground: 0 0% 0%;
97
+
98
+ --info: var(--color-background-info, 199 89% 48%);
99
+ --info-foreground: 0 0% 0%;
100
+
101
+ --border: var(--color-border-primary, 217.2 32.6% 17.5%);
102
+ --input: 217.2 32.6% 17.5%;
103
+ --ring: var(--color-ring-primary, 212.7 26.8% 83.9%);
104
+ }
105
+ }
106
+
107
+ @layer base {
108
+ * {
109
+ @apply border-border;
110
+ }
111
+
112
+ body {
113
+ @apply bg-background text-foreground;
114
+ font-feature-settings: "rlig" 1, "calt" 1;
115
+ }
116
+
117
+ /* Focus visible styles for accessibility */
118
+ :focus-visible {
119
+ @apply outline-none ring-2 ring-ring ring-offset-2 ring-offset-background;
120
+ }
121
+ }
122
+
123
+ /* === MCP App Root Styles === */
124
+ .lui-root {
125
+ @apply bg-background text-foreground min-h-full;
126
+ font-family: var(--font-sans);
127
+ }
128
+
129
+ /* === Loading spinner animation === */
130
+ @keyframes lui-spinner {
131
+ to {
132
+ transform: rotate(360deg);
133
+ }
134
+ }
135
+
136
+ .lui-spinner {
137
+ animation: lui-spinner 1s linear infinite;
138
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/Button.css","../src/data/DataGrid.css","../src/data/Chart.css","../src/layout/AppShell.css","../src/layout/Tabs.css","../src/layout/Modal.css","../src/media/CodeBlock.css","../src/core/Card.css","../src/core/Input.css"],"sourcesContent":["/* Button Component Styles */\r\n\r\n.lui-button {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: var(--lui-space-2);\r\n font-family: var(--lui-font-sans);\r\n font-weight: 500;\r\n border: none;\r\n border-radius: var(--lui-radius-md);\r\n cursor: pointer;\r\n transition: all var(--lui-transition);\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n user-select: none;\r\n white-space: nowrap;\r\n}\r\n\r\n.lui-button:focus-visible {\r\n outline: 2px solid var(--lui-border-focus);\r\n outline-offset: 2px;\r\n}\r\n\r\n.lui-button:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* Variants */\r\n.lui-button--primary {\r\n background: var(--lui-primary);\r\n color: var(--lui-text-inverse);\r\n}\r\n\r\n.lui-button--primary:hover:not(:disabled) {\r\n background: var(--lui-primary-hover);\r\n}\r\n\r\n.lui-button--primary:active:not(:disabled) {\r\n background: var(--lui-primary-active);\r\n}\r\n\r\n.lui-button--secondary {\r\n background: var(--lui-surface);\r\n color: var(--lui-text);\r\n}\r\n\r\n.lui-button--secondary:hover:not(:disabled) {\r\n background: var(--lui-surface-hover);\r\n}\r\n\r\n.lui-button--ghost {\r\n background: transparent;\r\n color: var(--lui-text);\r\n}\r\n\r\n.lui-button--ghost:hover:not(:disabled) {\r\n background: var(--lui-surface);\r\n}\r\n\r\n.lui-button--outline {\r\n background: transparent;\r\n color: var(--lui-primary);\r\n border: 1px solid var(--lui-border);\r\n}\r\n\r\n.lui-button--outline:hover:not(:disabled) {\r\n background: var(--lui-surface);\r\n border-color: var(--lui-primary);\r\n}\r\n\r\n.lui-button--destructive {\r\n background: var(--lui-error);\r\n color: var(--lui-text-inverse);\r\n}\r\n\r\n.lui-button--destructive:hover:not(:disabled) {\r\n background: #dc2626;\r\n}\r\n\r\n/* Sizes */\r\n.lui-button--sm {\r\n height: 32px;\r\n padding: 0 var(--lui-space-3);\r\n font-size: var(--lui-text-sm);\r\n}\r\n\r\n.lui-button--md {\r\n height: 40px;\r\n padding: 0 var(--lui-space-4);\r\n font-size: var(--lui-text-sm);\r\n}\r\n\r\n.lui-button--lg {\r\n height: 48px;\r\n padding: 0 var(--lui-space-6);\r\n font-size: var(--lui-text-base);\r\n}\r\n\r\n.lui-button--icon {\r\n width: 40px;\r\n height: 40px;\r\n padding: 0;\r\n}\r\n\r\n.lui-button--icon.lui-button--sm {\r\n width: 32px;\r\n height: 32px;\r\n}\r\n\r\n.lui-button--icon.lui-button--lg {\r\n width: 48px;\r\n height: 48px;\r\n}\r\n\r\n/* Loading state */\r\n.lui-button--loading {\r\n position: relative;\r\n}\r\n\r\n.lui-button__spinner {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.lui-spinner-icon {\r\n width: 16px;\r\n height: 16px;\r\n animation: lui-spin 1s linear infinite;\r\n}\r\n\r\n@keyframes lui-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n}\r\n\r\n.lui-button__icon {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.lui-button__icon svg {\r\n width: 16px;\r\n height: 16px;\r\n}\r\n\r\n.lui-button--lg .lui-button__icon svg {\r\n width: 20px;\r\n height: 20px;\r\n}","/* DataGrid Component Styles */\r\n\r\n.lui-datagrid {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--lui-space-3);\r\n width: 100%;\r\n}\r\n\r\n.lui-datagrid-search {\r\n display: flex;\r\n}\r\n\r\n.lui-datagrid-search-input {\r\n flex: 1;\r\n height: 36px;\r\n padding: 0 var(--lui-space-3);\r\n font-family: var(--lui-font-sans);\r\n font-size: var(--lui-text-sm);\r\n color: var(--lui-text);\r\n background: var(--lui-bg);\r\n border: 1px solid var(--lui-border);\r\n border-radius: var(--lui-radius-md);\r\n outline: none;\r\n transition: all var(--lui-transition);\r\n}\r\n\r\n.lui-datagrid-search-input:focus {\r\n border-color: var(--lui-border-focus);\r\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\r\n}\r\n\r\n.lui-datagrid-search-input::-moz-placeholder {\r\n color: var(--lui-text-muted);\r\n}\r\n\r\n.lui-datagrid-search-input::placeholder {\r\n color: var(--lui-text-muted);\r\n}\r\n\r\n.lui-datagrid-container {\r\n overflow-x: auto;\r\n border: 1px solid var(--lui-border);\r\n border-radius: var(--lui-radius-md);\r\n}\r\n\r\n.lui-datagrid-table {\r\n width: 100%;\r\n border-collapse: collapse;\r\n font-size: var(--lui-text-sm);\r\n}\r\n\r\n.lui-datagrid-th {\r\n padding: var(--lui-space-3) var(--lui-space-4);\r\n text-align: left;\r\n font-weight: 600;\r\n color: var(--lui-text);\r\n background: var(--lui-bg-secondary);\r\n border-bottom: 1px solid var(--lui-border);\r\n white-space: nowrap;\r\n}\r\n\r\n.lui-datagrid-th--sortable {\r\n cursor: pointer;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.lui-datagrid-th--sortable:hover {\r\n background: var(--lui-surface);\r\n}\r\n\r\n.lui-datagrid-th-content {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--lui-space-2);\r\n}\r\n\r\n.lui-datagrid-sort-icon {\r\n font-size: var(--lui-text-xs);\r\n color: var(--lui-primary);\r\n}\r\n\r\n.lui-datagrid-td {\r\n padding: var(--lui-space-3) var(--lui-space-4);\r\n color: var(--lui-text);\r\n border-bottom: 1px solid var(--lui-border);\r\n}\r\n\r\n.lui-datagrid-row:last-child .lui-datagrid-td {\r\n border-bottom: none;\r\n}\r\n\r\n.lui-datagrid-row--clickable {\r\n cursor: pointer;\r\n transition: background var(--lui-transition);\r\n}\r\n\r\n.lui-datagrid-row--clickable:hover {\r\n background: var(--lui-surface);\r\n}\r\n\r\n.lui-datagrid-loading,\r\n.lui-datagrid-empty {\r\n padding: var(--lui-space-8);\r\n text-align: center;\r\n color: var(--lui-text-muted);\r\n}","/* Chart Component Styles */\r\n\r\n.lui-chart {\r\n position: relative;\r\n background: var(--lui-bg);\r\n border-radius: var(--lui-radius-md);\r\n padding: var(--lui-space-4);\r\n}","/* AppShell Component Styles */\r\n\r\n.lui-app-shell {\r\n display: flex;\r\n flex-direction: column;\r\n min-height: 100%;\r\n background: var(--lui-bg);\r\n color: var(--lui-text);\r\n font-family: var(--lui-font-sans);\r\n}\r\n\r\n/* Padding variants */\r\n.lui-app-shell--padding-none .lui-app-shell-main {\r\n padding: 0;\r\n}\r\n\r\n.lui-app-shell--padding-sm .lui-app-shell-main {\r\n padding: var(--lui-space-3);\r\n}\r\n\r\n.lui-app-shell--padding-md .lui-app-shell-main {\r\n padding: var(--lui-space-4);\r\n}\r\n\r\n.lui-app-shell--padding-lg .lui-app-shell-main {\r\n padding: var(--lui-space-6);\r\n}\r\n\r\n/* Header */\r\n.lui-app-shell-header {\r\n flex-shrink: 0;\r\n padding: var(--lui-space-3) var(--lui-space-4);\r\n background: var(--lui-bg);\r\n border-bottom: 1px solid var(--lui-border);\r\n}\r\n\r\n/* Body (sidebar + main) */\r\n.lui-app-shell-body {\r\n display: flex;\r\n flex: 1;\r\n min-height: 0;\r\n}\r\n\r\n/* Sidebar */\r\n.lui-app-shell-sidebar {\r\n flex-shrink: 0;\r\n padding: var(--lui-space-4);\r\n background: var(--lui-bg-secondary);\r\n border-right: 1px solid var(--lui-border);\r\n overflow-y: auto;\r\n}\r\n\r\n.lui-app-shell-sidebar:last-child {\r\n border-right: none;\r\n border-left: 1px solid var(--lui-border);\r\n}\r\n\r\n/* Main */\r\n.lui-app-shell-main {\r\n flex: 1;\r\n min-width: 0;\r\n overflow-y: auto;\r\n}\r\n\r\n/* Footer */\r\n.lui-app-shell-footer {\r\n flex-shrink: 0;\r\n padding: var(--lui-space-3) var(--lui-space-4);\r\n background: var(--lui-bg-secondary);\r\n border-top: 1px solid var(--lui-border);\r\n}",".lui-tabs {\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.lui-tabs-list {\r\n display: flex;\r\n border-bottom: 1px solid var(--lui-border, #e0e0e0);\r\n gap: 0.25rem;\r\n}\r\n\r\n.lui-tabs-trigger {\r\n padding: 0.5rem 1rem;\r\n background: none;\r\n border: none;\r\n border-bottom: 2px solid transparent;\r\n margin-bottom: -1px;\r\n font-size: 0.875rem;\r\n font-weight: 500;\r\n color: var(--lui-text-secondary, #666);\r\n cursor: pointer;\r\n transition: color 0.15s, border-color 0.15s;\r\n}\r\n\r\n.lui-tabs-trigger:hover:not(:disabled) {\r\n color: var(--lui-text-primary, #1a1a1a);\r\n}\r\n\r\n.lui-tabs-trigger[data-state=\"active\"] {\r\n color: var(--lui-primary, #3b82f6);\r\n border-bottom-color: var(--lui-primary, #3b82f6);\r\n}\r\n\r\n.lui-tabs-trigger:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n}\r\n\r\n.lui-tabs-content {\r\n padding: 1rem 0;\r\n}\r\n\r\n.lui-tabs-content[data-state=\"inactive\"] {\r\n display: none;\r\n}\r\n\r\n[data-theme=\"dark\"] .lui-tabs-list {\r\n border-bottom-color: var(--lui-border, #444);\r\n}\r\n\r\n[data-theme=\"dark\"] .lui-tabs-trigger {\r\n color: var(--lui-text-secondary, #999);\r\n}\r\n\r\n[data-theme=\"dark\"] .lui-tabs-trigger:hover:not(:disabled) {\r\n color: var(--lui-text-primary, #f5f5f5);\r\n}",".lui-modal-overlay {\r\n position: fixed;\r\n inset: 0;\r\n /* Edge Compatibility: No backdrop-filter, higher opacity */\r\n background: rgba(0, 0, 0, 0.7);\r\n animation: lui-modal-overlay-show 0.15s ease;\r\n z-index: 1000;\r\n}\r\n\r\n@keyframes lui-modal-overlay-show {\r\n from {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.lui-modal-content {\r\n position: fixed;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n background: var(--lui-bg-primary, #fff);\r\n border-radius: var(--lui-radius-lg, 8px);\r\n font-family: var(--lui-font-sans);\r\n box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);\r\n padding: 1.5rem;\r\n max-width: 90vw;\r\n max-height: 90vh;\r\n overflow: auto;\r\n animation: lui-modal-content-show 0.2s ease;\r\n z-index: 1001;\r\n}\r\n\r\n@keyframes lui-modal-content-show {\r\n from {\r\n opacity: 0;\r\n transform: translate(-50%, -48%) scale(0.96);\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n transform: translate(-50%, -50%) scale(1);\r\n }\r\n}\r\n\r\n.lui-modal-title {\r\n font-size: 1.125rem;\r\n font-weight: 600;\r\n color: var(--lui-text-primary, #1a1a1a);\r\n margin: 0 0 0.5rem 0;\r\n padding-right: 2rem;\r\n}\r\n\r\n.lui-modal-description {\r\n font-size: 0.875rem;\r\n color: var(--lui-text-secondary, #666);\r\n margin: 0 0 1rem 0;\r\n}\r\n\r\n.lui-modal-close {\r\n position: absolute;\r\n top: 1rem;\r\n right: 1rem;\r\n background: none;\r\n border: none;\r\n padding: 0.25rem;\r\n cursor: pointer;\r\n color: var(--lui-text-secondary, #666);\r\n opacity: 0.7;\r\n transition: opacity 0.15s;\r\n}\r\n\r\n.lui-modal-close:hover {\r\n opacity: 1;\r\n}\r\n\r\n[data-theme=\"dark\"] .lui-modal-content {\r\n background: var(--lui-bg-primary, #1a1a1a);\r\n}\r\n\r\n[data-theme=\"dark\"] .lui-modal-title {\r\n color: var(--lui-text-primary, #f5f5f5);\r\n}\r\n\r\n[data-theme=\"dark\"] .lui-modal-description {\r\n color: var(--lui-text-secondary, #999);\r\n}\r\n\r\n[data-theme=\"dark\"] .lui-modal-close {\r\n color: var(--lui-text-secondary, #999);\r\n}","/* CodeBlock Component Styles */\r\n\r\n.lui-code-block {\r\n position: relative;\r\n border-radius: var(--lui-radius-md);\r\n overflow: hidden;\r\n}\r\n\r\n.lui-code-block-pre {\r\n margin: 0;\r\n padding: var(--lui-space-4);\r\n font-family: var(--lui-font-mono);\r\n font-size: var(--lui-text-sm);\r\n line-height: 1.6;\r\n overflow-x: auto;\r\n}\r\n\r\n.lui-code-block-copy {\r\n position: absolute;\r\n top: var(--lui-space-2);\r\n right: var(--lui-space-2);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 32px;\r\n height: 32px;\r\n padding: 0;\r\n color: #94a3b8;\r\n background: rgba(30, 41, 59, 0.8);\r\n border: 1px solid rgba(148, 163, 184, 0.2);\r\n border-radius: var(--lui-radius-sm);\r\n cursor: pointer;\r\n opacity: 0;\r\n transition: all var(--lui-transition);\r\n}\r\n\r\n.lui-code-block:hover .lui-code-block-copy {\r\n opacity: 1;\r\n}\r\n\r\n.lui-code-block-copy:hover {\r\n color: #f1f5f9;\r\n background: rgba(30, 41, 59, 1);\r\n border-color: rgba(148, 163, 184, 0.4);\r\n}\r\n\r\n.lui-code-block-copy svg {\r\n width: 16px;\r\n height: 16px;\r\n}\r\n\r\n.lui-code-block-line-number {\r\n display: inline-block;\r\n width: 2em;\r\n margin-right: var(--lui-space-3);\r\n color: #64748b;\r\n text-align: right;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n user-select: none;\r\n}","/* Card Component Styles */\r\n\r\n.lui-card {\r\n background: var(--lui-bg);\r\n border-radius: var(--lui-radius-lg);\r\n overflow: hidden;\r\n}\r\n\r\n/* Variants */\r\n.lui-card--default {\r\n border: 1px solid var(--lui-border);\r\n}\r\n\r\n.lui-card--outline {\r\n border: 1px solid var(--lui-border);\r\n background: transparent;\r\n}\r\n\r\n.lui-card--elevated {\r\n border: none;\r\n box-shadow: var(--lui-shadow-md);\r\n}\r\n\r\n/* Padding */\r\n.lui-card--padding-none {\r\n padding: 0;\r\n}\r\n\r\n.lui-card--padding-sm {\r\n padding: var(--lui-space-3);\r\n}\r\n\r\n.lui-card--padding-md {\r\n padding: var(--lui-space-4);\r\n}\r\n\r\n.lui-card--padding-lg {\r\n padding: var(--lui-space-6);\r\n}\r\n\r\n/* Interactive */\r\n.lui-card--interactive {\r\n cursor: pointer;\r\n transition: all var(--lui-transition);\r\n}\r\n\r\n.lui-card--interactive:hover {\r\n border-color: var(--lui-primary);\r\n box-shadow: var(--lui-shadow-md);\r\n}\r\n\r\n/* Card Header */\r\n.lui-card-header {\r\n display: flex;\r\n align-items: flex-start;\r\n justify-content: space-between;\r\n gap: var(--lui-space-4);\r\n padding: var(--lui-space-4);\r\n border-bottom: 1px solid var(--lui-border);\r\n}\r\n\r\n.lui-card--padding-none .lui-card-header {\r\n padding: var(--lui-space-4);\r\n}\r\n\r\n.lui-card-header__text {\r\n flex: 1;\r\n min-width: 0;\r\n}\r\n\r\n.lui-card-header__title {\r\n margin: 0;\r\n font-size: var(--lui-text-lg);\r\n font-weight: 600;\r\n color: var(--lui-text);\r\n line-height: 1.4;\r\n}\r\n\r\n.lui-card-header__description {\r\n margin: var(--lui-space-1) 0 0;\r\n font-size: var(--lui-text-sm);\r\n color: var(--lui-text-muted);\r\n line-height: 1.5;\r\n}\r\n\r\n.lui-card-header__action {\r\n flex-shrink: 0;\r\n}\r\n\r\n/* Card Content */\r\n.lui-card-content {\r\n padding: var(--lui-space-4);\r\n}\r\n\r\n.lui-card--padding-none .lui-card-content {\r\n padding: var(--lui-space-4);\r\n}\r\n\r\n/* Card Footer */\r\n.lui-card-footer {\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n gap: var(--lui-space-3);\r\n padding: var(--lui-space-4);\r\n border-top: 1px solid var(--lui-border);\r\n background: var(--lui-bg-secondary);\r\n}\r\n\r\n.lui-card--padding-none .lui-card-footer {\r\n padding: var(--lui-space-4);\r\n}","/* Input Component Styles */\r\n\r\n.lui-input-wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--lui-space-1);\r\n}\r\n\r\n.lui-input-wrapper--full-width {\r\n width: 100%;\r\n}\r\n\r\n.lui-input-label {\r\n font-size: var(--lui-text-sm);\r\n font-weight: 500;\r\n color: var(--lui-text);\r\n}\r\n\r\n.lui-input-container {\r\n display: flex;\r\n align-items: center;\r\n background: var(--lui-bg);\r\n border: 1px solid var(--lui-border);\r\n border-radius: var(--lui-radius-md);\r\n transition: all var(--lui-transition);\r\n}\r\n\r\n.lui-input-container:focus-within {\r\n border-color: var(--lui-border-focus);\r\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\r\n}\r\n\r\n.lui-input-container--error {\r\n border-color: var(--lui-error);\r\n}\r\n\r\n.lui-input-container--error:focus-within {\r\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);\r\n}\r\n\r\n/* Sizes */\r\n.lui-input-container--sm {\r\n height: 32px;\r\n}\r\n\r\n.lui-input-container--md {\r\n height: 40px;\r\n}\r\n\r\n.lui-input-container--lg {\r\n height: 48px;\r\n}\r\n\r\n.lui-input {\r\n flex: 1;\r\n min-width: 0;\r\n height: 100%;\r\n padding: 0 var(--lui-space-3);\r\n font-family: var(--lui-font-sans);\r\n font-size: var(--lui-text-sm);\r\n color: var(--lui-text);\r\n background: transparent;\r\n border: none;\r\n outline: none;\r\n}\r\n\r\n.lui-input::-moz-placeholder {\r\n color: var(--lui-text-muted);\r\n}\r\n\r\n.lui-input::placeholder {\r\n color: var(--lui-text-muted);\r\n}\r\n\r\n.lui-input-container--has-left .lui-input {\r\n padding-left: 0;\r\n}\r\n\r\n.lui-input-container--has-right .lui-input {\r\n padding-right: 0;\r\n}\r\n\r\n/* Input elements (icons) */\r\n.lui-input-element {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 0 var(--lui-space-3);\r\n color: var(--lui-text-muted);\r\n}\r\n\r\n.lui-input-element svg {\r\n width: 16px;\r\n height: 16px;\r\n}\r\n\r\n/* Messages */\r\n.lui-input-message {\r\n margin: 0;\r\n font-size: var(--lui-text-xs);\r\n color: var(--lui-text-muted);\r\n}\r\n\r\n.lui-input-message--error {\r\n color: var(--lui-error);\r\n}"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/core/Button.css","../src/data/DataGrid.css","../src/data/Chart.css","../src/layout/AppShell.css","../src/layout/Tabs.css","../src/layout/Modal.css","../src/media/CodeBlock.css","../src/core/Card.css","../src/core/Input.css"],"sourcesContent":["/* Button Component Styles */\n\n.lui-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--lui-space-2);\n font-family: var(--lui-font-sans);\n font-weight: 500;\n border: none;\n border-radius: var(--lui-radius-md);\n cursor: pointer;\n transition: all var(--lui-transition);\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n white-space: nowrap;\n}\n\n.lui-button:focus-visible {\n outline: 2px solid var(--lui-border-focus);\n outline-offset: 2px;\n}\n\n.lui-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Variants */\n.lui-button--primary {\n background: var(--lui-primary);\n color: var(--lui-text-inverse);\n}\n\n.lui-button--primary:hover:not(:disabled) {\n background: var(--lui-primary-hover);\n}\n\n.lui-button--primary:active:not(:disabled) {\n background: var(--lui-primary-active);\n}\n\n.lui-button--secondary {\n background: var(--lui-surface);\n color: var(--lui-text);\n}\n\n.lui-button--secondary:hover:not(:disabled) {\n background: var(--lui-surface-hover);\n}\n\n.lui-button--ghost {\n background: transparent;\n color: var(--lui-text);\n}\n\n.lui-button--ghost:hover:not(:disabled) {\n background: var(--lui-surface);\n}\n\n.lui-button--outline {\n background: transparent;\n color: var(--lui-primary);\n border: 1px solid var(--lui-border);\n}\n\n.lui-button--outline:hover:not(:disabled) {\n background: var(--lui-surface);\n border-color: var(--lui-primary);\n}\n\n.lui-button--destructive {\n background: var(--lui-error);\n color: var(--lui-text-inverse);\n}\n\n.lui-button--destructive:hover:not(:disabled) {\n background: #dc2626;\n}\n\n/* Sizes */\n.lui-button--sm {\n height: 32px;\n padding: 0 var(--lui-space-3);\n font-size: var(--lui-text-sm);\n}\n\n.lui-button--md {\n height: 40px;\n padding: 0 var(--lui-space-4);\n font-size: var(--lui-text-sm);\n}\n\n.lui-button--lg {\n height: 48px;\n padding: 0 var(--lui-space-6);\n font-size: var(--lui-text-base);\n}\n\n.lui-button--icon {\n width: 40px;\n height: 40px;\n padding: 0;\n}\n\n.lui-button--icon.lui-button--sm {\n width: 32px;\n height: 32px;\n}\n\n.lui-button--icon.lui-button--lg {\n width: 48px;\n height: 48px;\n}\n\n/* Loading state */\n.lui-button--loading {\n position: relative;\n}\n\n.lui-button__spinner {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.lui-spinner-icon {\n width: 16px;\n height: 16px;\n animation: lui-spin 1s linear infinite;\n}\n\n@keyframes lui-spin {\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n}\n\n.lui-button__icon {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.lui-button__icon svg {\n width: 16px;\n height: 16px;\n}\n\n.lui-button--lg .lui-button__icon svg {\n width: 20px;\n height: 20px;\n}","/* DataGrid Component Styles */\n\n.lui-datagrid {\n display: flex;\n flex-direction: column;\n gap: var(--lui-space-3);\n width: 100%;\n}\n\n.lui-datagrid-search {\n display: flex;\n}\n\n.lui-datagrid-search-input {\n flex: 1;\n height: 36px;\n padding: 0 var(--lui-space-3);\n font-family: var(--lui-font-sans);\n font-size: var(--lui-text-sm);\n color: var(--lui-text);\n background: var(--lui-bg);\n border: 1px solid var(--lui-border);\n border-radius: var(--lui-radius-md);\n outline: none;\n transition: all var(--lui-transition);\n}\n\n.lui-datagrid-search-input:focus {\n border-color: var(--lui-border-focus);\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n}\n\n.lui-datagrid-search-input::-moz-placeholder {\n color: var(--lui-text-muted);\n}\n\n.lui-datagrid-search-input::placeholder {\n color: var(--lui-text-muted);\n}\n\n.lui-datagrid-container {\n overflow-x: auto;\n border: 1px solid var(--lui-border);\n border-radius: var(--lui-radius-md);\n}\n\n.lui-datagrid-table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--lui-text-sm);\n}\n\n.lui-datagrid-th {\n padding: var(--lui-space-3) var(--lui-space-4);\n text-align: left;\n font-weight: 600;\n color: var(--lui-text);\n background: var(--lui-bg-secondary);\n border-bottom: 1px solid var(--lui-border);\n white-space: nowrap;\n}\n\n.lui-datagrid-th--sortable {\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n.lui-datagrid-th--sortable:hover {\n background: var(--lui-surface);\n}\n\n.lui-datagrid-th-content {\n display: flex;\n align-items: center;\n gap: var(--lui-space-2);\n}\n\n.lui-datagrid-sort-icon {\n font-size: var(--lui-text-xs);\n color: var(--lui-primary);\n}\n\n.lui-datagrid-td {\n padding: var(--lui-space-3) var(--lui-space-4);\n color: var(--lui-text);\n border-bottom: 1px solid var(--lui-border);\n}\n\n.lui-datagrid-row:last-child .lui-datagrid-td {\n border-bottom: none;\n}\n\n.lui-datagrid-row--clickable {\n cursor: pointer;\n transition: background var(--lui-transition);\n}\n\n.lui-datagrid-row--clickable:hover {\n background: var(--lui-surface);\n}\n\n.lui-datagrid-loading,\n.lui-datagrid-empty {\n padding: var(--lui-space-8);\n text-align: center;\n color: var(--lui-text-muted);\n}","/* Chart Component Styles */\n\n.lui-chart {\n position: relative;\n background: var(--lui-bg);\n border-radius: var(--lui-radius-md);\n padding: var(--lui-space-4);\n}","/* AppShell Component Styles */\n\n.lui-app-shell {\n display: flex;\n flex-direction: column;\n min-height: 100%;\n background: var(--lui-bg);\n color: var(--lui-text);\n font-family: var(--lui-font-sans);\n}\n\n/* Padding variants */\n.lui-app-shell--padding-none .lui-app-shell-main {\n padding: 0;\n}\n\n.lui-app-shell--padding-sm .lui-app-shell-main {\n padding: var(--lui-space-3);\n}\n\n.lui-app-shell--padding-md .lui-app-shell-main {\n padding: var(--lui-space-4);\n}\n\n.lui-app-shell--padding-lg .lui-app-shell-main {\n padding: var(--lui-space-6);\n}\n\n/* Header */\n.lui-app-shell-header {\n flex-shrink: 0;\n padding: var(--lui-space-3) var(--lui-space-4);\n background: var(--lui-bg);\n border-bottom: 1px solid var(--lui-border);\n}\n\n/* Body (sidebar + main) */\n.lui-app-shell-body {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n\n/* Sidebar */\n.lui-app-shell-sidebar {\n flex-shrink: 0;\n padding: var(--lui-space-4);\n background: var(--lui-bg-secondary);\n border-right: 1px solid var(--lui-border);\n overflow-y: auto;\n}\n\n.lui-app-shell-sidebar:last-child {\n border-right: none;\n border-left: 1px solid var(--lui-border);\n}\n\n/* Main */\n.lui-app-shell-main {\n flex: 1;\n min-width: 0;\n overflow-y: auto;\n}\n\n/* Footer */\n.lui-app-shell-footer {\n flex-shrink: 0;\n padding: var(--lui-space-3) var(--lui-space-4);\n background: var(--lui-bg-secondary);\n border-top: 1px solid var(--lui-border);\n}",".lui-tabs {\n display: flex;\n flex-direction: column;\n}\n\n.lui-tabs-list {\n display: flex;\n border-bottom: 1px solid var(--lui-border, #e0e0e0);\n gap: 0.25rem;\n}\n\n.lui-tabs-trigger {\n padding: 0.5rem 1rem;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n margin-bottom: -1px;\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--lui-text-secondary, #666);\n cursor: pointer;\n transition: color 0.15s, border-color 0.15s;\n}\n\n.lui-tabs-trigger:hover:not(:disabled) {\n color: var(--lui-text-primary, #1a1a1a);\n}\n\n.lui-tabs-trigger[data-state=\"active\"] {\n color: var(--lui-primary, #3b82f6);\n border-bottom-color: var(--lui-primary, #3b82f6);\n}\n\n.lui-tabs-trigger:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.lui-tabs-content {\n padding: 1rem 0;\n}\n\n.lui-tabs-content[data-state=\"inactive\"] {\n display: none;\n}\n\n[data-theme=\"dark\"] .lui-tabs-list {\n border-bottom-color: var(--lui-border, #444);\n}\n\n[data-theme=\"dark\"] .lui-tabs-trigger {\n color: var(--lui-text-secondary, #999);\n}\n\n[data-theme=\"dark\"] .lui-tabs-trigger:hover:not(:disabled) {\n color: var(--lui-text-primary, #f5f5f5);\n}",".lui-modal-overlay {\n position: fixed;\n inset: 0;\n /* Edge Compatibility: No backdrop-filter, higher opacity */\n background: rgba(0, 0, 0, 0.7);\n animation: lui-modal-overlay-show 0.15s ease;\n z-index: 1000;\n}\n\n@keyframes lui-modal-overlay-show {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.lui-modal-content {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: var(--lui-bg-primary, #fff);\n border-radius: var(--lui-radius-lg, 8px);\n font-family: var(--lui-font-sans);\n box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);\n padding: 1.5rem;\n max-width: 90vw;\n max-height: 90vh;\n overflow: auto;\n animation: lui-modal-content-show 0.2s ease;\n z-index: 1001;\n}\n\n@keyframes lui-modal-content-show {\n from {\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.96);\n }\n\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n.lui-modal-title {\n font-size: 1.125rem;\n font-weight: 600;\n color: var(--lui-text-primary, #1a1a1a);\n margin: 0 0 0.5rem 0;\n padding-right: 2rem;\n}\n\n.lui-modal-description {\n font-size: 0.875rem;\n color: var(--lui-text-secondary, #666);\n margin: 0 0 1rem 0;\n}\n\n.lui-modal-close {\n position: absolute;\n top: 1rem;\n right: 1rem;\n background: none;\n border: none;\n padding: 0.25rem;\n cursor: pointer;\n color: var(--lui-text-secondary, #666);\n opacity: 0.7;\n transition: opacity 0.15s;\n}\n\n.lui-modal-close:hover {\n opacity: 1;\n}\n\n[data-theme=\"dark\"] .lui-modal-content {\n background: var(--lui-bg-primary, #1a1a1a);\n}\n\n[data-theme=\"dark\"] .lui-modal-title {\n color: var(--lui-text-primary, #f5f5f5);\n}\n\n[data-theme=\"dark\"] .lui-modal-description {\n color: var(--lui-text-secondary, #999);\n}\n\n[data-theme=\"dark\"] .lui-modal-close {\n color: var(--lui-text-secondary, #999);\n}","/* CodeBlock Component Styles */\n\n.lui-code-block {\n position: relative;\n border-radius: var(--lui-radius-md);\n overflow: hidden;\n}\n\n.lui-code-block-pre {\n margin: 0;\n padding: var(--lui-space-4);\n font-family: var(--lui-font-mono);\n font-size: var(--lui-text-sm);\n line-height: 1.6;\n overflow-x: auto;\n}\n\n.lui-code-block-copy {\n position: absolute;\n top: var(--lui-space-2);\n right: var(--lui-space-2);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n color: #94a3b8;\n background: rgba(30, 41, 59, 0.8);\n border: 1px solid rgba(148, 163, 184, 0.2);\n border-radius: var(--lui-radius-sm);\n cursor: pointer;\n opacity: 0;\n transition: all var(--lui-transition);\n}\n\n.lui-code-block:hover .lui-code-block-copy {\n opacity: 1;\n}\n\n.lui-code-block-copy:hover {\n color: #f1f5f9;\n background: rgba(30, 41, 59, 1);\n border-color: rgba(148, 163, 184, 0.4);\n}\n\n.lui-code-block-copy svg {\n width: 16px;\n height: 16px;\n}\n\n.lui-code-block-line-number {\n display: inline-block;\n width: 2em;\n margin-right: var(--lui-space-3);\n color: #64748b;\n text-align: right;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}","/* Card Component Styles */\n\n.lui-card {\n background: var(--lui-bg);\n border-radius: var(--lui-radius-lg);\n overflow: hidden;\n}\n\n/* Variants */\n.lui-card--default {\n border: 1px solid var(--lui-border);\n}\n\n.lui-card--outline {\n border: 1px solid var(--lui-border);\n background: transparent;\n}\n\n.lui-card--elevated {\n border: none;\n box-shadow: var(--lui-shadow-md);\n}\n\n/* Padding */\n.lui-card--padding-none {\n padding: 0;\n}\n\n.lui-card--padding-sm {\n padding: var(--lui-space-3);\n}\n\n.lui-card--padding-md {\n padding: var(--lui-space-4);\n}\n\n.lui-card--padding-lg {\n padding: var(--lui-space-6);\n}\n\n/* Interactive */\n.lui-card--interactive {\n cursor: pointer;\n transition: all var(--lui-transition);\n}\n\n.lui-card--interactive:hover {\n border-color: var(--lui-primary);\n box-shadow: var(--lui-shadow-md);\n}\n\n/* Card Header */\n.lui-card-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--lui-space-4);\n padding: var(--lui-space-4);\n border-bottom: 1px solid var(--lui-border);\n}\n\n.lui-card--padding-none .lui-card-header {\n padding: var(--lui-space-4);\n}\n\n.lui-card-header__text {\n flex: 1;\n min-width: 0;\n}\n\n.lui-card-header__title {\n margin: 0;\n font-size: var(--lui-text-lg);\n font-weight: 600;\n color: var(--lui-text);\n line-height: 1.4;\n}\n\n.lui-card-header__description {\n margin: var(--lui-space-1) 0 0;\n font-size: var(--lui-text-sm);\n color: var(--lui-text-muted);\n line-height: 1.5;\n}\n\n.lui-card-header__action {\n flex-shrink: 0;\n}\n\n/* Card Content */\n.lui-card-content {\n padding: var(--lui-space-4);\n}\n\n.lui-card--padding-none .lui-card-content {\n padding: var(--lui-space-4);\n}\n\n/* Card Footer */\n.lui-card-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--lui-space-3);\n padding: var(--lui-space-4);\n border-top: 1px solid var(--lui-border);\n background: var(--lui-bg-secondary);\n}\n\n.lui-card--padding-none .lui-card-footer {\n padding: var(--lui-space-4);\n}","/* Input Component Styles */\n\n.lui-input-wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--lui-space-1);\n}\n\n.lui-input-wrapper--full-width {\n width: 100%;\n}\n\n.lui-input-label {\n font-size: var(--lui-text-sm);\n font-weight: 500;\n color: var(--lui-text);\n}\n\n.lui-input-container {\n display: flex;\n align-items: center;\n background: var(--lui-bg);\n border: 1px solid var(--lui-border);\n border-radius: var(--lui-radius-md);\n transition: all var(--lui-transition);\n}\n\n.lui-input-container:focus-within {\n border-color: var(--lui-border-focus);\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n}\n\n.lui-input-container--error {\n border-color: var(--lui-error);\n}\n\n.lui-input-container--error:focus-within {\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);\n}\n\n/* Sizes */\n.lui-input-container--sm {\n height: 32px;\n}\n\n.lui-input-container--md {\n height: 40px;\n}\n\n.lui-input-container--lg {\n height: 48px;\n}\n\n.lui-input {\n flex: 1;\n min-width: 0;\n height: 100%;\n padding: 0 var(--lui-space-3);\n font-family: var(--lui-font-sans);\n font-size: var(--lui-text-sm);\n color: var(--lui-text);\n background: transparent;\n border: none;\n outline: none;\n}\n\n.lui-input::-moz-placeholder {\n color: var(--lui-text-muted);\n}\n\n.lui-input::placeholder {\n color: var(--lui-text-muted);\n}\n\n.lui-input-container--has-left .lui-input {\n padding-left: 0;\n}\n\n.lui-input-container--has-right .lui-input {\n padding-right: 0;\n}\n\n/* Input elements (icons) */\n.lui-input-element {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 var(--lui-space-3);\n color: var(--lui-text-muted);\n}\n\n.lui-input-element svg {\n width: 16px;\n height: 16px;\n}\n\n/* Messages */\n.lui-input-message {\n margin: 0;\n font-size: var(--lui-text-xs);\n color: var(--lui-text-muted);\n}\n\n.lui-input-message--error {\n color: var(--lui-error);\n}"],"mappings":"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","names":[]}