@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.
- package/README.md +285 -285
- package/dist/{chunk-2HRO6CFU.js → chunk-57VDL5UC.js} +2 -2
- package/dist/chunk-57VDL5UC.js.map +1 -0
- package/dist/{chunk-KX75VCMM.mjs → chunk-5RGEQPF3.mjs} +2 -2
- package/dist/chunk-5RGEQPF3.mjs.map +1 -0
- package/dist/globals.css +138 -0
- package/dist/index.css.map +1 -1
- package/dist/index.js +192 -192
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/server.js +13 -13
- package/dist/server.mjs +1 -1
- package/dist/styles.css +4 -0
- package/dist/theme.css +102 -0
- package/package.json +111 -111
- package/dist/chunk-2HRO6CFU.js.map +0 -1
- package/dist/chunk-KX75VCMM.mjs.map +0 -1
|
@@ -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"]}
|
package/dist/globals.css
ADDED
|
@@ -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
|
+
}
|
package/dist/index.css.map
CHANGED
|
@@ -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":[]}
|