@equal-experts/kuat-vue 0.3.2 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,18 +1,30 @@
1
1
  # @equal-experts/kuat-vue
2
2
 
3
- A guide for integrating the Kuat Design System Vue component library into your application.
3
+ Custom Vue components and blocks for the Kuat Design System.
4
4
 
5
5
  ---
6
6
 
7
- ## Installation
7
+ ## Architecture
8
+
9
+ This package provides **custom components** and **blocks** that are unique to Kuat. For standard UI components (Button, Dialog, etc.), install them directly via shadcn-vue CLI with kuat-core theming.
8
10
 
9
- ### Prerequisites
11
+ ```
12
+ ┌─────────────────────────────────────────────────────┐
13
+ │ Your Application │
14
+ ├─────────────────────────────────────────────────────┤
15
+ │ Kuat Blocks (from this package) │
16
+ ├─────────────────────────────────────────────────────┤
17
+ │ Kuat Components (from this package) │
18
+ ├─────────────────────────────────────────────────────┤
19
+ │ shadcn-vue Components (installed directly) │
20
+ ├─────────────────────────────────────────────────────┤
21
+ │ @equal-experts/kuat-core (design tokens) │
22
+ └─────────────────────────────────────────────────────┘
23
+ ```
10
24
 
11
- - Vue 3.4.0 or higher
12
- - Node.js 18 or higher
13
- - A package manager (npm, pnpm, or yarn)
25
+ ---
14
26
 
15
- ### Install the Package
27
+ ## Installation
16
28
 
17
29
  ```bash
18
30
  # Using pnpm (recommended)
@@ -25,566 +37,264 @@ npm install @equal-experts/kuat-vue
25
37
  yarn add @equal-experts/kuat-vue
26
38
  ```
27
39
 
28
- ### Install Peer Dependencies
29
-
30
- The library requires Vue, Radix Vue, and Reka UI as peer dependencies:
40
+ ### Peer Dependencies
31
41
 
32
42
  ```bash
33
- # Required peer dependencies
34
43
  pnpm add vue radix-vue reka-ui
35
-
36
- # Optional: Install lucide-vue-next for icons (or use your preferred icon library)
37
- pnpm add lucide-vue-next
38
44
  ```
39
45
 
40
- **Note:** `@equal-experts/kuat-core` is bundled with this package. You don't need to install it separately when using kuat-vue. However, if you want to use design tokens without Vue components, you can install [`@equal-experts/kuat-core`](https://www.npmjs.com/package/@equal-experts/kuat-core) standalone. See the [kuat-core documentation](https://github.com/equalexperts/kuat-mono/tree/master/packages/kuat-core) for framework-agnostic usage.
41
-
42
- ### Using Design Tokens Without Components
43
-
44
- If you only need design tokens (CSS variables, Tailwind preset) without Vue components, install `@equal-experts/kuat-core` instead:
45
-
46
- ```bash
47
- pnpm add @equal-experts/kuat-core
48
- ```
49
-
50
- Then import the CSS variables and optionally use the Tailwind preset:
51
-
52
- ```typescript
53
- // Import CSS variables
54
- import '@equal-experts/kuat-core/variables.css';
55
-
56
- // Or use as a Tailwind preset
57
- import kuatPreset from '@equal-experts/kuat-core';
58
- ```
59
-
60
- See the [kuat-core documentation](https://github.com/equalexperts/kuat-mono/tree/master/packages/kuat-core) for detailed usage with Svelte, Angular, Astro, and other frameworks.
61
-
62
- ### Recommended: Use Subpath Imports
63
-
64
- To avoid installing all peer dependencies when you only need specific components, use **subpath imports**. This allows you to import only the components you need and only install their required peer dependencies.
46
+ ---
65
47
 
66
- **Example: Only using Button**
48
+ ## What's Included
67
49
 
68
- ```bash
69
- # Only install peer dependencies for Button
70
- pnpm add vue radix-vue reka-ui
71
- ```
50
+ ### Custom Components
72
51
 
73
- ```vue
74
- <script setup>
75
- // Import from subpath - only Button and its dependencies are required
76
- import { Button } from "@equal-experts/kuat-vue/button";
77
- </script>
78
- ```
79
-
80
- **Component Peer Dependencies:**
52
+ Components unique to Kuat, not available in shadcn-vue:
81
53
 
82
- - **Button**: `vue`, `radix-vue`, `reka-ui`
83
- - **Accordion**: `vue`, `radix-vue`, `reka-ui`, `lucide-vue-next`
84
- - **AlertDialog**: `vue`, `radix-vue`, `reka-ui`
85
- - **Badge**: `vue`, `radix-vue`, `reka-ui`
54
+ | Component | Description |
55
+ |-----------|-------------|
56
+ | `ButtonGroup` | Groups buttons together with proper styling |
57
+ | `ButtonGroupText` | Text element within a button group |
58
+ | `ButtonGroupSeparator` | Separator between button group items |
86
59
 
87
- **Using Main Export (All Components):**
60
+ ### Blocks (Coming Soon)
88
61
 
89
- If you import from the main package, you'll need all peer dependencies:
62
+ Pre-built compositions for common patterns:
90
63
 
91
- ```vue
92
- <script setup>
93
- // This requires ALL peer dependencies to be installed
94
- import { Button, Accordion, AlertDialog } from "@equal-experts/kuat-vue";
95
- </script>
96
- ```
64
+ | Block | Description |
65
+ |-------|-------------|
66
+ | `KuatHeader` | Brand header with logo, navigation, actions |
67
+ | `KuatFooter` | Brand footer with links and legal |
68
+ | `KuatSearchPattern` | Search input with suggestions |
97
69
 
98
- **lucide-vue-next Version Support:**
70
+ ### Utilities
99
71
 
100
- The package supports `lucide-vue-next` versions `^0.344.0 || >=0.400.0`, including the latest versions.
72
+ | Utility | Description |
73
+ |---------|-------------|
74
+ | `cn()` | Class name merger using clsx + tailwind-merge |
101
75
 
102
76
  ---
103
77
 
104
- ## Setup
78
+ ## Recommended Setup
105
79
 
106
- ### 1. Configure Tailwind CSS
80
+ For the best experience, combine this package with kuat-core and shadcn-vue:
107
81
 
108
- The Kuat Design System uses Tailwind CSS v4. You'll need to configure Tailwind in your project.
109
-
110
- #### Install Tailwind CSS v4
82
+ ### Step 1: Install Dependencies
111
83
 
112
84
  ```bash
113
- pnpm add -D tailwindcss@next @tailwindcss/vite
85
+ pnpm add @equal-experts/kuat-core @equal-experts/kuat-vue
114
86
  ```
115
87
 
116
- #### Create `tailwind.config.ts`
88
+ ### Step 2: Configure Tailwind
117
89
 
118
90
  ```typescript
119
- import type { Config } from "tailwindcss";
91
+ // tailwind.config.ts
92
+ import type { Config } from 'tailwindcss';
93
+ import kuatPreset from '@equal-experts/kuat-core';
120
94
 
121
- const config: Config = {
95
+ export default {
96
+ presets: [kuatPreset],
122
97
  content: [
123
- "./src/**/*.{js,ts,jsx,tsx,vue}",
124
- "./node_modules/@equal-experts/kuat-vue/**/*.{js,ts,vue}", // Include Kuat components
98
+ './src/**/*.{vue,js,ts}',
99
+ './node_modules/@equal-experts/kuat-vue/**/*.{vue,js,ts}',
125
100
  ],
126
- theme: {
127
- extend: {
128
- colors: {
129
- background: "var(--background)",
130
- foreground: "var(--foreground)",
131
- primary: {
132
- DEFAULT: "var(--primary)",
133
- foreground: "var(--primary-foreground)",
134
- },
135
- secondary: {
136
- DEFAULT: "var(--secondary)",
137
- foreground: "var(--secondary-foreground)",
138
- },
139
- // ... other color tokens from @equal-experts/kuat-core
140
- },
141
- borderRadius: {
142
- lg: "var(--radius)",
143
- md: "calc(var(--radius) - 2px)",
144
- sm: "calc(var(--radius) - 4px)",
145
- },
146
- fontFamily: {
147
- sans: ["var(--font-sans)"],
148
- serif: ["var(--font-serif)"],
149
- mono: ["var(--font-mono)"],
150
- },
151
- },
152
- },
153
- plugins: [],
154
- };
155
-
156
- export default config;
101
+ } satisfies Config;
157
102
  ```
158
103
 
159
- #### Configure Vite (if using Vite)
160
-
161
- ```typescript
162
- // vite.config.ts
163
- import { defineConfig } from "vite";
164
- import vue from "@vitejs/plugin-vue";
165
- import tailwindcss from "@tailwindcss/vite";
166
-
167
- export default defineConfig({
168
- plugins: [vue(), tailwindcss()],
169
- });
170
- ```
171
-
172
- ### 2. Import Styles
173
-
174
- Import the Kuat Design System styles in your application's entry point:
104
+ ### Step 3: Import Styles
175
105
 
176
106
  ```typescript
177
107
  // main.ts
178
- import { createApp } from "vue";
179
- import App from "./App.vue";
180
- import "@equal-experts/kuat-vue/styles";
181
-
182
- createApp(App).mount("#app");
183
- ```
184
-
185
- This imports the bundled CSS file which includes all design tokens from `@equal-experts/kuat-core` (no need to install `@equal-experts/kuat-core` separately).
186
-
187
- **Note:** The styles include:
188
- - Design tokens from `@equal-experts/kuat-core` (colors, spacing, typography)
189
- - Tailwind CSS base styles
190
- - Component-specific styles
191
-
192
- ### 3. (Optional) Configure Fonts
193
-
194
- The Kuat Design System uses Lexend (sans-serif), Lora (serif), and JetBrains Mono (monospace) fonts. These are loaded via Google Fonts in the core package.
195
-
196
- If you want to use different fonts or load them differently, you can override the CSS variables:
108
+ import { createApp } from 'vue';
109
+ import '@equal-experts/kuat-core/variables.css';
110
+ import App from './App.vue';
197
111
 
198
- ```css
199
- :root {
200
- --font-sans: 'Your Sans Font', sans-serif;
201
- --font-serif: 'Your Serif Font', serif;
202
- --font-mono: 'Your Mono Font', monospace;
203
- }
112
+ createApp(App).mount('#app');
204
113
  ```
205
114
 
206
- ---
207
-
208
- ## Basic Usage
115
+ ### Step 4: Install shadcn-vue Components
209
116
 
210
- ### Import Components
211
-
212
- You can import components in two ways:
213
-
214
- **Option 1: Subpath Import (Recommended for single components)**
215
-
216
- ```typescript
217
- // Import only Button - only requires Button's peer dependencies
218
- import { Button } from "@equal-experts/kuat-vue/button";
117
+ ```bash
118
+ npx shadcn-vue@latest init
119
+ npx shadcn-vue@latest add button dialog dropdown-menu
219
120
  ```
220
121
 
221
- **Option 2: Main Package Import**
122
+ ### Step 5: Use Components Together
222
123
 
223
- ```typescript
224
- // Import from main package - requires all peer dependencies
225
- import { Button } from "@equal-experts/kuat-vue";
226
- ```
124
+ ```vue
125
+ <script setup lang="ts">
126
+ // Kuat custom components from this package
127
+ import { ButtonGroup, ButtonGroupText } from '@equal-experts/kuat-vue';
227
128
 
228
- ### Use in Your App
129
+ // shadcn-vue components from your local installation
130
+ import { Button } from '@/components/ui/button';
131
+ </script>
229
132
 
230
- ```vue
231
133
  <template>
232
- <div>
233
- <Button>Click me</Button>
234
- <Button variant="outline">Outline button</Button>
134
+ <ButtonGroup>
135
+ <Button variant="outline">Edit</Button>
136
+ <Button variant="outline">Save</Button>
235
137
  <Button variant="destructive">Delete</Button>
236
- </div>
138
+ </ButtonGroup>
237
139
  </template>
238
-
239
- <script setup lang="ts">
240
- // Recommended: Subpath import
241
- import { Button } from "@equal-experts/kuat-vue/button";
242
-
243
- // Or: Main package import
244
- // import { Button } from "@equal-experts/kuat-vue";
245
- </script>
246
140
  ```
247
141
 
248
142
  ---
249
143
 
250
144
  ## Component Examples
251
145
 
252
- ### Button
146
+ ### ButtonGroup
253
147
 
254
- The Button component supports multiple variants and sizes:
255
-
256
- ```vue
257
- <template>
258
- <div class="space-x-4">
259
- <!-- Variants -->
260
- <Button variant="default">Default</Button>
261
- <Button variant="destructive">Destructive</Button>
262
- <Button variant="outline">Outline</Button>
263
- <Button variant="secondary">Secondary</Button>
264
- <Button variant="ghost">Ghost</Button>
265
- <Button variant="link">Link</Button>
266
-
267
- <!-- Sizes -->
268
- <Button size="sm">Small</Button>
269
- <Button size="default">Default</Button>
270
- <Button size="lg">Large</Button>
271
- <Button size="icon">🚀</Button>
272
- <Button size="icon-sm">📱</Button>
273
- <Button size="icon-lg">💻</Button>
274
-
275
- <!-- With click handler -->
276
- <Button @click="handleClick">
277
- Click me
278
- </Button>
279
-
280
- <!-- Disabled -->
281
- <Button disabled>Disabled</Button>
282
-
283
- <!-- As child (for composition) -->
284
- <Button as-child>
285
- <a href="/link">Link Button</a>
286
- </Button>
287
- </div>
288
- </template>
289
-
290
- <script setup lang="ts">
291
- import { Button } from "@equal-experts/kuat-vue";
292
-
293
- function handleClick() {
294
- alert("Clicked!");
295
- }
296
- </script>
297
- ```
298
-
299
- ### TypeScript Support
300
-
301
- All components are fully typed:
148
+ Groups buttons together with seamless borders:
302
149
 
303
150
  ```vue
304
151
  <script setup lang="ts">
305
- import { Button, type ButtonVariants } from "@equal-experts/kuat-vue";
306
-
307
- const variant: ButtonVariants["variant"] = "outline";
308
- const size: ButtonVariants["size"] = "lg";
152
+ import { ButtonGroup, ButtonGroupText } from '@equal-experts/kuat-vue';
153
+ import { Button } from '@/components/ui/button';
309
154
  </script>
310
155
 
311
156
  <template>
312
- <Button :variant="variant" :size="size">
313
- Typed Button
314
- </Button>
157
+ <!-- Horizontal (default) -->
158
+ <ButtonGroup>
159
+ <Button variant="outline">Left</Button>
160
+ <Button variant="outline">Center</Button>
161
+ <Button variant="outline">Right</Button>
162
+ </ButtonGroup>
163
+
164
+ <!-- Vertical -->
165
+ <ButtonGroup orientation="vertical">
166
+ <Button variant="outline">Top</Button>
167
+ <Button variant="outline">Middle</Button>
168
+ <Button variant="outline">Bottom</Button>
169
+ </ButtonGroup>
170
+
171
+ <!-- With text label -->
172
+ <ButtonGroup>
173
+ <ButtonGroupText>Filter:</ButtonGroupText>
174
+ <Button variant="outline">All</Button>
175
+ <Button variant="outline">Active</Button>
176
+ <Button variant="outline">Completed</Button>
177
+ </ButtonGroup>
315
178
  </template>
316
179
  ```
317
180
 
318
- ---
319
-
320
- ## Styling and Theming
321
-
322
- ### Using Design Tokens
181
+ ### cn() Utility
323
182
 
324
- The Kuat Design System provides CSS variables for all design tokens. Use them in your custom components:
183
+ Merge class names with Tailwind conflict resolution:
325
184
 
326
185
  ```vue
327
- <template>
328
- <div class="custom-component">
329
- Custom styled component
330
- </div>
331
- </template>
186
+ <script setup lang="ts">
187
+ import { cn } from '@equal-experts/kuat-vue';
332
188
 
333
- <style scoped>
334
- .custom-component {
335
- background-color: var(--background);
336
- color: var(--foreground);
337
- padding: var(--spacing);
338
- border-color: var(--border);
339
- border-radius: var(--radius);
340
- }
341
- </style>
342
- ```
189
+ const props = defineProps<{
190
+ class?: string;
191
+ }>();
343
192
 
344
- Or with Tailwind classes:
193
+ const containerClass = cn(
194
+ 'bg-background text-foreground p-4',
195
+ props.class
196
+ );
197
+ </script>
345
198
 
346
- ```vue
347
199
  <template>
348
- <div class="bg-background text-foreground p-4 rounded-lg border border-border">
349
- Custom styled component
200
+ <div :class="containerClass">
201
+ <slot />
350
202
  </div>
351
203
  </template>
352
204
  ```
353
205
 
354
- ### Dark Mode
206
+ ---
355
207
 
356
- Dark mode is supported via the `.dark` class. Apply it to your root element:
208
+ ## Migration Guide
357
209
 
358
- ```vue
359
- <!-- In your root component -->
360
- <template>
361
- <div :class="{ dark: isDark }">
362
- <App />
363
- </div>
364
- </template>
210
+ If you were importing standard components from this package, migrate to direct shadcn-vue installation:
365
211
 
366
- <script setup lang="ts">
367
- import { ref } from "vue";
212
+ ### Before (Deprecated)
368
213
 
369
- const isDark = ref(false);
214
+ ```vue
215
+ <script setup lang="ts">
216
+ import { Button, Dialog, Badge } from '@equal-experts/kuat-vue';
370
217
  </script>
371
218
  ```
372
219
 
373
- Or toggle dynamically:
220
+ ### After (Recommended)
374
221
 
375
222
  ```vue
376
- <template>
377
- <div :class="{ dark: isDark }">
378
- <button @click="isDark = !isDark">
379
- Toggle theme
380
- </button>
381
- <!-- Your app -->
382
- </div>
383
- </template>
384
-
385
223
  <script setup lang="ts">
386
- import { ref } from "vue";
224
+ // Standard components from your local shadcn-vue installation
225
+ import { Button } from '@/components/ui/button';
226
+ import { Dialog } from '@/components/ui/dialog';
227
+ import { Badge } from '@/components/ui/badge';
387
228
 
388
- const isDark = ref(false);
229
+ // Kuat-specific components from this package
230
+ import { ButtonGroup } from '@equal-experts/kuat-vue';
389
231
  </script>
390
232
  ```
391
233
 
392
- ### Customizing Colors
393
-
394
- Override CSS variables to customize the theme:
234
+ ### Migration Steps
395
235
 
396
- ```css
397
- /* In your global CSS file */
398
- :root {
399
- --primary: oklch(0.645 0.163 237.5); /* Your primary color */
400
- --primary-foreground: oklch(1.0 0.0 0.0); /* White */
401
- }
402
-
403
- .dark {
404
- --primary: oklch(0.585 0.145 237.5); /* Darker primary for dark mode */
405
- --primary-foreground: oklch(1.0 0.0 0.0); /* White */
406
- }
407
- ```
236
+ 1. Ensure `@equal-experts/kuat-core` is installed
237
+ 2. Initialize shadcn-vue: `npx shadcn-vue@latest init`
238
+ 3. Install needed components: `npx shadcn-vue@latest add button dialog badge`
239
+ 4. Update imports to use local components
240
+ 5. Keep imports for Kuat-specific components (ButtonGroup, etc.)
408
241
 
409
242
  ---
410
243
 
411
- ## Advanced Usage
244
+ ## Deprecated Exports
412
245
 
413
- ### Composing Components
246
+ The following exports are deprecated and will be removed in the next major version. Install them directly via shadcn-vue CLI instead:
414
247
 
415
- Use the `as-child` prop to compose components:
248
+ | Component | Replacement |
249
+ |-----------|-------------|
250
+ | `Button` | `npx shadcn-vue@latest add button` |
251
+ | `Accordion` | `npx shadcn-vue@latest add accordion` |
252
+ | `AlertDialog` | `npx shadcn-vue@latest add alert-dialog` |
253
+ | `Badge` | `npx shadcn-vue@latest add badge` |
416
254
 
417
- ```vue
418
- <template>
419
- <Button as-child variant="ghost">
420
- <router-link to="/dashboard">Dashboard</router-link>
421
- </Button>
422
- </template>
255
+ These components are still exported for backward compatibility but will be themed correctly only when using kuat-core.
423
256
 
424
- <script setup lang="ts">
425
- import { Button } from "@equal-experts/kuat-vue";
426
- </script>
427
- ```
257
+ ---
428
258
 
429
- ### Using Variants Programmatically
259
+ ## TypeScript Support
430
260
 
431
- Import and use variant functions:
261
+ All components are fully typed:
432
262
 
433
263
  ```vue
434
- <template>
435
- <button :class="buttonClass">
436
- Custom Button
437
- </button>
438
- </template>
439
-
440
264
  <script setup lang="ts">
441
- import { buttonVariants } from "@equal-experts/kuat-vue";
442
- import { cn } from "@equal-experts/kuat-vue";
265
+ import { ButtonGroup } from '@equal-experts/kuat-vue';
266
+ import type { ButtonGroupVariants } from '@equal-experts/kuat-vue';
443
267
 
444
- const buttonClass = cn(
445
- buttonVariants({ variant: "outline", size: "lg" }),
446
- "custom-class"
447
- );
268
+ const orientation: ButtonGroupVariants['orientation'] = 'horizontal';
448
269
  </script>
449
270
  ```
450
271
 
451
- ### Global Component Registration
452
-
453
- Register components globally if preferred:
454
-
455
- ```typescript
456
- // main.ts
457
- import { createApp } from "vue";
458
- import App from "./App.vue";
459
- import * as KuatComponents from "@equal-experts/kuat-vue";
460
-
461
- const app = createApp(App);
462
-
463
- // Register all components globally
464
- Object.entries(KuatComponents).forEach(([name, component]) => {
465
- if (name !== "default" && typeof component === "object") {
466
- app.component(name, component);
467
- }
468
- });
272
+ ---
469
273
 
470
- app.mount("#app");
471
- ```
274
+ ## Dark Mode
472
275
 
473
- Then use without importing:
276
+ Dark mode is supported via the `.dark` class on your root element:
474
277
 
475
278
  ```vue
476
279
  <template>
477
- <Button>No import needed</Button>
280
+ <div :class="{ dark: isDark }">
281
+ <App />
282
+ </div>
478
283
  </template>
479
- ```
480
-
481
- ---
482
-
483
- ## Troubleshooting
484
-
485
- ### Styles Not Loading
486
-
487
- 1. **Check import order**: Ensure you import `@equal-experts/kuat-vue/styles` before your own styles
488
- 2. **Verify Tailwind config**: Make sure `@equal-experts/kuat-vue` is included in your `content` paths
489
- 3. **Check build output**: Ensure the CSS file is being included in your build
490
- 4. **Vue SFC**: If using Single File Components, ensure styles are processed correctly
491
-
492
- ### TypeScript Errors
493
-
494
- 1. **Install types**: Ensure Vue TypeScript support is configured
495
- 2. **Check TypeScript version**: Requires TypeScript 5.3 or higher
496
- 3. **Verify imports**: Use named imports, not default imports
497
- 4. **Vue TSConfig**: Ensure your `tsconfig.json` includes Vue file types
498
-
499
- ### Components Not Rendering
500
-
501
- 1. **Check Vue version**: Requires Vue 3.4.0 or higher
502
- 2. **Verify peer dependencies**: Ensure `vue` is installed
503
- 3. **Check console**: Look for runtime errors in the browser console
504
- 4. **Build mode**: Ensure you're using the correct build mode (ES modules)
505
-
506
- ---
507
-
508
- ## Package Structure
509
-
510
- ```
511
- @equal-experts/kuat-vue
512
- ├── dist/
513
- │ ├── index.js # Compiled JavaScript
514
- │ ├── index.d.ts # TypeScript definitions
515
- │ └── index.css # Compiled styles
516
- └── src/
517
- ├── components/ # Component source files
518
- ├── lib/ # Utilities
519
- └── styles.css # Style source
520
- ```
521
-
522
- ---
523
-
524
- ## Additional Resources
525
-
526
- - **shadcn-vue Documentation**: [https://www.shadcn-vue.com](https://www.shadcn-vue.com)
527
- - **Tailwind CSS v4**: [https://tailwindcss.com](https://tailwindcss.com)
528
- - **Vue 3 Documentation**: [https://vuejs.org](https://vuejs.org)
529
- - **Radix Vue Documentation**: [https://www.radix-vue.com](https://www.radix-vue.com)
530
-
531
- ---
532
-
533
- ## Documentation for AI Agents
534
-
535
- The Kuat Design System includes LLM-optimized documentation for AI assistants.
536
-
537
- ### Quick Setup
538
-
539
- Add this snippet to your existing `.cursorrules`, `CLAUDE.md`, or agent config:
540
-
541
- ```markdown
542
- ## Kuat Design System
543
-
544
- This project uses the Kuat Design System for all UI work.
545
-
546
- **What it provides:**
547
- Design tokens, component patterns, layout guidance, and content guidelines for building consistent, accessible interfaces.
548
-
549
- **When to use it:**
550
- You MUST reference the Kuat documentation when:
551
- - Creating or modifying UI components
552
- - Making color, typography, spacing, or layout decisions
553
- - Writing user-facing content
554
-
555
- **How to use it:**
556
- 1. Check the documentation before making design decisions
557
- 2. Follow existing patterns; do not invent new ones
558
- 3. If the documentation doesn't cover your case, ask before proceeding
559
-
560
- **Quick reference (when docs unavailable):**
561
- Semantic tokens only (`bg-primary` not `bg-blue-500`), 8-point spacing grid, 6px radius for interactive elements, WCAG AA contrast.
562
284
 
563
- **Documentation:** https://github.com/equalexperts/kuat-mono/tree/master/kuat-docs
564
- ```
565
-
566
- ### Need Full Documentation Locally?
567
-
568
- For component patterns, layouts, or content guidelines, clone the docs:
569
-
570
- ```bash
571
- git clone --filter=blob:none --sparse https://github.com/equalexperts/kuat-mono.git
572
- cd kuat-mono && git sparse-checkout set kuat-docs
573
- cp -r kuat-docs /path/to/your-project/
285
+ <script setup lang="ts">
286
+ import { ref } from 'vue';
287
+ const isDark = ref(false);
288
+ </script>
574
289
  ```
575
290
 
576
- Then update your snippet: `Check the documentation in kuat-docs/rules/ before making design decisions`
577
-
578
- ### Verification
579
-
580
- Test your setup with these prompts:
581
- - "Create a card component" → Agent should reference Kuat docs
582
- - "What color for the primary button?" → Agent should check docs or use semantic tokens
583
- - "Add spacing between form fields" → Agent should reference spacing rules
291
+ Components automatically adapt when using kuat-core design tokens.
584
292
 
585
293
  ---
586
294
 
587
- ## Support
588
-
589
- For issues, questions, or contributions, please refer to the main repository documentation or open an issue in the project repository.
295
+ ## Related Documentation
590
296
 
297
+ - [Consumer Setup Guide](https://github.com/equalexperts/kuat-mono/blob/master/kuat-docs/setup/consumer-setup.md)
298
+ - [kuat-core Integration](https://github.com/equalexperts/kuat-mono/blob/master/kuat-docs/setup/kuat-core-integration.md)
299
+ - [Component Patterns](https://github.com/equalexperts/kuat-mono/blob/master/kuat-docs/rules/components/patterns.md)
300
+ - [shadcn-vue Documentation](https://www.shadcn-vue.com)
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as l, createBlock as d, openBlock as i, unref as e, normalizeProps as h, guardReactiveProps as y, withCtx as n, renderSlot as c, mergeProps as p, createElementVNode as B, normalizeClass as g, createVNode as _ } from "vue";
2
2
  import { useForwardPropsEmits as w, AccordionRoot as C, AccordionContent as A, useForwardProps as P, AccordionItem as b, AccordionHeader as v, AccordionTrigger as $ } from "reka-ui";
3
- import { c as m } from "./styles-qaFjX9_3.js";
3
+ import { c as m } from "./utils-qaFjX9_3.js";
4
4
  import { r as u } from "./index-A7umpmtg.js";
5
5
  import { ChevronDown as x } from "lucide-vue-next";
6
6
  const F = /* @__PURE__ */ l({
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as l, createBlock as p, openBlock as r, unref as e, normalizeProps as A, guardReactiveProps as D, withCtx as c, renderSlot as n, mergeProps as u, createVNode as g, createElementBlock as h, normalizeClass as x } from "vue";
2
2
  import { useForwardPropsEmits as $, AlertDialogRoot as B, AlertDialogAction as C, AlertDialogCancel as P, AlertDialogPortal as b, AlertDialogOverlay as w, AlertDialogContent as v, AlertDialogDescription as O, AlertDialogTitle as z, AlertDialogTrigger as k } from "reka-ui";
3
- import { c as d } from "./styles-qaFjX9_3.js";
4
- import { b as y } from "./index-DCxse3sU.js";
3
+ import { c as d } from "./utils-qaFjX9_3.js";
4
+ import { b as y } from "./index-D3egriua.js";
5
5
  import { r as m } from "./index-A7umpmtg.js";
6
6
  const H = /* @__PURE__ */ l({
7
7
  __name: "AlertDialog",
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as i, createBlock as n, openBlock as o, unref as t, normalizeClass as r, withCtx as l, renderSlot as c } from "vue";
2
2
  import { Primitive as m } from "reka-ui";
3
- import { c as f } from "./styles-qaFjX9_3.js";
4
- import { b as u } from "./index-DCxse3sU.js";
3
+ import { c as f } from "./utils-qaFjX9_3.js";
4
+ import { b as u } from "./index-D3egriua.js";
5
5
  const z = /* @__PURE__ */ i({
6
6
  __name: "Button",
7
7
  props: {
package/dist/accordion.js CHANGED
@@ -1,5 +1,5 @@
1
- import { c as r } from "./styles-qaFjX9_3.js";
2
- import { _ as a, c as e, a as i, b as s } from "./AccordionTrigger.vue_vue_type_script_setup_true_lang-vy6KzwI7.js";
1
+ import { c as r } from "./utils-qaFjX9_3.js";
2
+ import { _ as a, c as e, a as i, b as s } from "./AccordionTrigger.vue_vue_type_script_setup_true_lang-CG4FNPK2.js";
3
3
  export {
4
4
  a as Accordion,
5
5
  e as AccordionContent,
@@ -1,5 +1,5 @@
1
- import { c as l } from "./styles-qaFjX9_3.js";
2
- import { _ as r, a as t, b as i, c as g, d as s, e as A, f as D, g as c, h as n } from "./AlertDialogTrigger.vue_vue_type_script_setup_true_lang-DNFUKWlR.js";
1
+ import { c as l } from "./utils-qaFjX9_3.js";
2
+ import { _ as r, a as t, b as i, c as g, d as s, e as A, f as D, g as c, h as n } from "./AlertDialogTrigger.vue_vue_type_script_setup_true_lang-chev-oxU.js";
3
3
  export {
4
4
  r as AlertDialog,
5
5
  t as AlertDialogAction,
package/dist/badge.js CHANGED
@@ -1,5 +1,5 @@
1
- import { c as e } from "./styles-qaFjX9_3.js";
2
- import { _ as s, b as t } from "./index-BS0sZM3b.js";
1
+ import { c as e } from "./utils-qaFjX9_3.js";
2
+ import { _ as s, b as t } from "./index-CMJyKNIG.js";
3
3
  export {
4
4
  s as Badge,
5
5
  t as badgeVariants,
@@ -1,5 +1,5 @@
1
- import { c as r } from "./styles-qaFjX9_3.js";
2
- import { _ as u, a as p, b as n, c as s } from "./index-Cctx-joO.js";
1
+ import { c as r } from "./utils-qaFjX9_3.js";
2
+ import { _ as u, a as p, b as n, c as s } from "./index-B9dF2hh8.js";
3
3
  export {
4
4
  u as ButtonGroup,
5
5
  p as ButtonGroupSeparator,
package/dist/button.js CHANGED
@@ -1,6 +1,6 @@
1
- import { c as r } from "./styles-qaFjX9_3.js";
2
- import { b as n } from "./index-DCxse3sU.js";
3
- import { _ as e } from "./Button.vue_vue_type_script_setup_true_lang-Xhp6qpI9.js";
1
+ import { c as r } from "./utils-qaFjX9_3.js";
2
+ import { b as n } from "./index-D3egriua.js";
3
+ import { _ as e } from "./Button.vue_vue_type_script_setup_true_lang-CtAz6Sf_.js";
4
4
  export {
5
5
  e as Button,
6
6
  n as buttonVariants,
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as r, createElementBlock as h, openBlock as n, normalizeClass as c, unref as o, renderSlot as d, createBlock as l, mergeProps as u, withCtx as m } from "vue";
2
- import { c as s } from "./styles-qaFjX9_3.js";
3
- import { c as _ } from "./index-D5fkjZ2l.js";
2
+ import { c as s } from "./utils-qaFjX9_3.js";
3
+ import { c as _ } from "./index-DACAHwoB.js";
4
4
  import { Separator as g, Primitive as v } from "reka-ui";
5
5
  import { r as p } from "./index-A7umpmtg.js";
6
6
  const b = ["data-orientation"], k = /* @__PURE__ */ r({
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as n, createBlock as o, openBlock as s, unref as e, normalizeClass as i, withCtx as d, renderSlot as c } from "vue";
2
2
  import { Primitive as l } from "reka-ui";
3
- import { c as f } from "./styles-qaFjX9_3.js";
4
- import { c as u } from "./index-D5fkjZ2l.js";
3
+ import { c as f } from "./utils-qaFjX9_3.js";
4
+ import { c as u } from "./index-DACAHwoB.js";
5
5
  const y = /* @__PURE__ */ n({
6
6
  __name: "Badge",
7
7
  props: {
@@ -1,4 +1,4 @@
1
- import { c as e } from "./index-D5fkjZ2l.js";
1
+ import { c as e } from "./index-DACAHwoB.js";
2
2
  import "vue";
3
3
  import "reka-ui";
4
4
  const o = e(
@@ -1,4 +1,4 @@
1
- import { a as O } from "./styles-qaFjX9_3.js";
1
+ import { a as O } from "./utils-qaFjX9_3.js";
2
2
  const m = (e) => typeof e == "boolean" ? `${e}` : e === 0 ? "0" : e, y = O, j = (e, l) => (n) => {
3
3
  var u;
4
4
  if ((l == null ? void 0 : l.variants) == null) return y(e, n == null ? void 0 : n.class, n == null ? void 0 : n.className);
package/dist/index.d.ts CHANGED
@@ -1,9 +1,28 @@
1
+
1
2
  export { cn } from './lib/utils';
3
+ export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants, } from './components/ui/button-group';
4
+ export type { ButtonGroupVariants } from './components/ui/button-group';
5
+ /**
6
+ * @deprecated Install directly via `npx shadcn-vue@latest add button`.
7
+ * The component will be themed automatically when using kuat-core.
8
+ */
2
9
  export { Button, buttonVariants } from './components/ui/button';
10
+ /** @deprecated */
3
11
  export type { ButtonVariants } from './components/ui/button';
12
+ /**
13
+ * @deprecated Install directly via `npx shadcn-vue@latest add accordion`.
14
+ * The component will be themed automatically when using kuat-core.
15
+ */
4
16
  export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from './components/ui/accordion';
17
+ /**
18
+ * @deprecated Install directly via `npx shadcn-vue@latest add alert-dialog`.
19
+ * The component will be themed automatically when using kuat-core.
20
+ */
5
21
  export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from './components/ui/alert-dialog';
22
+ /**
23
+ * @deprecated Install directly via `npx shadcn-vue@latest add badge`.
24
+ * The component will be themed automatically when using kuat-core.
25
+ */
6
26
  export { Badge, badgeVariants } from './components/ui/badge';
27
+ /** @deprecated */
7
28
  export type { BadgeVariants } from './components/ui/badge';
8
- export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants, } from './components/ui/button-group';
9
- export type { ButtonGroupVariants } from './components/ui/button-group';
package/dist/index.js CHANGED
@@ -1,31 +1,31 @@
1
- import { c as r } from "./styles-qaFjX9_3.js";
2
- import { b as e } from "./index-DCxse3sU.js";
3
- import { _ as i, c as n, a as l, b as c } from "./AccordionTrigger.vue_vue_type_script_setup_true_lang-vy6KzwI7.js";
4
- import { _ as A, a as p, b as u, c as D, d as b, e as d, f, g as m, h as x } from "./AlertDialogTrigger.vue_vue_type_script_setup_true_lang-DNFUKWlR.js";
5
- import { _, b as G } from "./index-BS0sZM3b.js";
6
- import { _ as C, a as V, b as h, c as F } from "./index-Cctx-joO.js";
7
- import { _ as I } from "./Button.vue_vue_type_script_setup_true_lang-Xhp6qpI9.js";
1
+ import { c as r } from "./utils-qaFjX9_3.js";
2
+ import { _ as e, a as s, b as i, c as n } from "./index-B9dF2hh8.js";
3
+ import { b as c } from "./index-D3egriua.js";
4
+ import { _ as A, c as p, a as u, b as D } from "./AccordionTrigger.vue_vue_type_script_setup_true_lang-CG4FNPK2.js";
5
+ import { _ as d, a as f, b as m, c as x, d as B, e as _, f as G, g as T, h as C } from "./AlertDialogTrigger.vue_vue_type_script_setup_true_lang-chev-oxU.js";
6
+ import { _ as h, b as F } from "./index-CMJyKNIG.js";
7
+ import { _ as I } from "./Button.vue_vue_type_script_setup_true_lang-CtAz6Sf_.js";
8
8
  export {
9
- i as Accordion,
10
- n as AccordionContent,
11
- l as AccordionItem,
12
- c as AccordionTrigger,
13
- A as AlertDialog,
14
- p as AlertDialogAction,
15
- u as AlertDialogCancel,
16
- D as AlertDialogContent,
17
- b as AlertDialogDescription,
18
- d as AlertDialogFooter,
19
- f as AlertDialogHeader,
20
- m as AlertDialogTitle,
21
- x as AlertDialogTrigger,
22
- _ as Badge,
9
+ A as Accordion,
10
+ p as AccordionContent,
11
+ u as AccordionItem,
12
+ D as AccordionTrigger,
13
+ d as AlertDialog,
14
+ f as AlertDialogAction,
15
+ m as AlertDialogCancel,
16
+ x as AlertDialogContent,
17
+ B as AlertDialogDescription,
18
+ _ as AlertDialogFooter,
19
+ G as AlertDialogHeader,
20
+ T as AlertDialogTitle,
21
+ C as AlertDialogTrigger,
22
+ h as Badge,
23
23
  I as Button,
24
- C as ButtonGroup,
25
- V as ButtonGroupSeparator,
26
- h as ButtonGroupText,
27
- G as badgeVariants,
28
- F as buttonGroupVariants,
29
- e as buttonVariants,
24
+ e as ButtonGroup,
25
+ s as ButtonGroupSeparator,
26
+ i as ButtonGroupText,
27
+ F as badgeVariants,
28
+ n as buttonGroupVariants,
29
+ c as buttonVariants,
30
30
  r as cn
31
31
  };
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- @import"https://fonts.googleapis.com/css2?family=Lexend:wght@100..900&family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap";/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-duration:initial;--tw-ease:initial}}}:root{--font-sans:Lexend,ui-sans-serif,sans-serif,system-ui;--font-serif:Lora,serif;--font-mono:"JetBrains Mono",ui-monospace,monospace}@layer base{:root{--radius:.3rem;--tracking-normal:.01em;--spacing:.25rem;--slate-50:oklch(97.8% .005 240);--slate-100:oklch(93.6% .01 240);--slate-200:oklch(92.9% .013 255.5);--slate-300:oklch(87% .022 255.5);--slate-500:oklch(55.4% .046 257.4);--slate-600:oklch(47.5% .04 257.4);--slate-700:oklch(39.5% .035 257.4);--slate-800:oklch(29.5% .03 257.4);--slate-900:oklch(17.6% .033 244.5);--slate-950:oklch(12.9% .042 264.7);--red-300:oklch(85% .08 25);--red-600:oklch(57.7% .245 27.3);--black:oklch(0% 0 0);--white:oklch(100% 0 0);--ee-blue-50:oklch(94.5% .028 237.5);--ee-blue-100:oklch(88.5% .055 237.5);--ee-blue-200:oklch(82.5% .082 237.5);--ee-blue-300:oklch(76.5% .109 237.5);--ee-blue-400:oklch(70.5% .136 237.5);--ee-blue-500:oklch(64.5% .163 237.5);--ee-blue-600:oklch(58.5% .145 237.5);--ee-blue-700:oklch(52.5% .127 237.5);--ee-blue-800:oklch(36.5% .109 237.5);--ee-blue-900:oklch(24.5% .082 237.5);--ee-blue-950:oklch(14.5% .055 237.5);--tech-blue-50:oklch(93.5% .015 240);--tech-blue-100:oklch(83.5% .03 240);--tech-blue-200:oklch(73.5% .045 240);--tech-blue-300:oklch(63.5% .06 240);--tech-blue-400:oklch(53.5% .075 240);--tech-blue-500:oklch(43.5% .09 240);--tech-blue-600:oklch(36.5% .08 240);--tech-blue-700:oklch(29.5% .07 240);--tech-blue-800:oklch(20.5% .06 240);--tech-blue-900:oklch(12.5% .04 240);--tech-blue-950:oklch(7.5% .025 240);--transform-teal-50:oklch(94.5% .02 185);--transform-teal-100:oklch(88.5% .04 185);--transform-teal-200:oklch(82.5% .06 185);--transform-teal-300:oklch(76.5% .08 185);--transform-teal-400:oklch(70.5% .1 185);--transform-teal-500:oklch(64.5% .12 185);--transform-teal-600:oklch(54.5% .105 185);--transform-teal-700:oklch(44.5% .09 185);--transform-teal-800:oklch(30.5% .075 185);--transform-teal-900:oklch(18.5% .055 185);--transform-teal-950:oklch(10.5% .035 185);--equal-ember-50:oklch(97.5% .035 65);--equal-ember-100:oklch(92.5% .07 65);--equal-ember-200:oklch(87.5% .105 65);--equal-ember-300:oklch(82.5% .14 65);--equal-ember-400:oklch(77.5% .175 65);--equal-ember-500:oklch(62.5% .2 65);--equal-ember-600:oklch(52.5% .18 65);--equal-ember-700:oklch(42.5% .16 65);--equal-ember-800:oklch(32.5% .14 65);--equal-ember-900:oklch(22.5% .12 65);--equal-ember-950:oklch(12.5% .1 65);--brand-ee-blue:var(--ee-blue-500);--brand-tech-blue:var(--tech-blue-500);--brand-transform-teal:var(--transform-teal-500);--brand-equal-ember:var(--equal-ember-500);--brand-dark-data:oklch(20.8% .01 240);--brand-the-cloud:var(--slate-100);--brand-byte-white:var(--white);--brand-ee-blue-accent:var(--ee-blue-50);--background:var(--brand-byte-white);--foreground:var(--slate-950);--primary:var(--brand-ee-blue);--primary-foreground:var(--brand-byte-white);--secondary:var(--brand-transform-teal);--secondary-foreground:var(--brand-byte-white);--muted:var(--slate-100);--muted-foreground:var(--slate-500);--accent:var(--brand-ee-blue-accent);--accent-foreground:var(--slate-950);--destructive:var(--red-600);--destructive-foreground:var(--brand-byte-white);--border:var(--slate-200);--input:var(--brand-byte-white);--ring:var(--slate-300);--card:var(--brand-byte-white);--card-foreground:var(--slate-950);--popover:var(--black);--popover-foreground:var(--brand-byte-white);--chart-1:#1f77b4;--chart-2:#ff7f0e;--chart-3:#2ca02c;--chart-4:#d62728;--chart-5:#9467bd;--sidebar:var(--brand-tech-blue);--sidebar-foreground:var(--brand-byte-white);--sidebar-primary:var(--brand-ee-blue);--sidebar-primary-foreground:var(--brand-ee-blue-accent);--sidebar-accent:var(--slate-200);--sidebar-accent-foreground:var(--brand-tech-blue);--sidebar-border:var(--slate-200);--sidebar-ring:var(--slate-100);--shadow-x:0px;--shadow-y:4px;--shadow-blur:8px;--shadow-spread:-1px;--shadow-opacity:.1;--shadow-color:oklch(20.8% .042 265.755);--shadow-2xs:0px 4px 8px -1px #0f172b0d;--shadow-xs:0px 4px 8px -1px #0f172b0d;--shadow-sm:0px 4px 8px -1px #0f172b1a,0px 1px 2px -2px #0f172b1a;--shadow:0px 4px 8px -1px #0f172b1a,0px 1px 2px -2px #0f172b1a;--shadow-md:0px 4px 8px -1px #0f172b1a,0px 2px 4px -2px #0f172b1a;--shadow-lg:0px 4px 8px -1px #0f172b1a,0px 4px 6px -2px #0f172b1a;--shadow-xl:0px 4px 8px -1px #0f172b1a,0px 8px 10px -2px #0f172b1a;--shadow-2xl:0px 4px 8px -1px #0f172b40}.dark{--background:var(--slate-900);--foreground:var(--brand-byte-white);--primary:var(--brand-ee-blue);--primary-foreground:var(--brand-byte-white);--secondary:var(--brand-transform-teal);--secondary-foreground:var(--brand-byte-white);--muted:var(--slate-100);--muted-foreground:var(--slate-300);--accent:var(--ee-blue-800);--accent-foreground:var(--slate-950);--destructive:var(--red-600);--destructive-foreground:var(--brand-byte-white);--border:var(--slate-700);--input:var(--slate-600);--ring:var(--slate-300);--card:var(--tech-blue-800);--card-foreground:var(--slate-950);--popover:var(--black);--popover-foreground:var(--brand-byte-white);--chart-1:#1f77b4;--chart-2:#ff7f0e;--chart-3:#2ca02c;--chart-4:#d62728;--chart-5:#9467bd;--sidebar:var(--tech-blue-700);--sidebar-foreground:var(--brand-byte-white);--sidebar-primary:var(--brand-ee-blue);--sidebar-primary-foreground:var(--brand-ee-blue-accent);--sidebar-accent:var(--ee-blue-700);--sidebar-accent-foreground:var(--brand-tech-blue);--sidebar-border:var(--slate-200);--sidebar-ring:var(--slate-100);--font-sans:Lexend,ui-sans-serif,sans-serif,system-ui;--font-serif:Lora,serif;--font-mono:"JetBrains Mono",ui-monospace,monospace;--radius:.3rem;--tracking-normal:.01em;--spacing:.25rem;--shadow-x:0px;--shadow-y:4px;--shadow-blur:8px;--shadow-spread:-1px;--shadow-opacity:.1;--shadow-color:#000;--shadow-2xs:0px 4px 8px -1px #0000000d;--shadow-xs:0px 4px 8px -1px #0000000d;--shadow-sm:0px 4px 8px -1px #0000001a,0px 1px 2px -2px #0000001a;--shadow:0px 4px 8px -1px #0000001a,0px 1px 2px -2px #0000001a;--shadow-md:0px 4px 8px -1px #0000001a,0px 2px 4px -2px #0000001a;--shadow-lg:0px 4px 8px -1px #0000001a,0px 4px 6px -2px #0000001a;--shadow-xl:0px 4px 8px -1px #0000001a,0px 8px 10px -2px #0000001a;--shadow-2xl:0px 4px 8px -1px #00000040}:root,:host{--shadow-2xs:var(--shadow-2xs);--shadow-xs:var(--shadow-xs);--shadow-sm:var(--shadow-sm);--shadow:var(--shadow);--shadow-md:var(--shadow-md);--shadow-lg:var(--shadow-lg);--shadow-xl:var(--shadow-xl);--shadow-2xl:var(--shadow-2xl);--tracking-normal:var(--tracking-normal);--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-serif:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-medium:500;--font-weight-semibold:600;--ease-out:cubic-bezier(0,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}body{letter-spacing:var(--tracking-normal)}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground)}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer theme,components;@layer utilities{.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.left-1\/2{left:50%}.z-50{z-index:50}.\!m-0{margin:calc(var(--spacing)*0)!important}.mt-2{margin-top:calc(var(--spacing)*2)}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-11{width:calc(var(--spacing)*11);height:calc(var(--spacing)*11)}.h-4{height:calc(var(--spacing)*4)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.w-4{width:calc(var(--spacing)*4)}.w-10{width:calc(var(--spacing)*10)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-lg{max-width:var(--container-lg)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.gap-y-2{row-gap:calc(var(--spacing)*2)}.self-stretch{align-self:stretch}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-border{border-color:var(--border)}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.bg-background{background-color:var(--background)}.bg-black\/80{background-color:var(--black)}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--black)80%,transparent)}}.bg-border{background-color:var(--border)}.bg-destructive{background-color:var(--destructive)}.bg-input{background-color:var(--input)}.bg-muted{background-color:var(--muted)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-0{padding-top:calc(var(--spacing)*0)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.text-center{text-align:center}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.underline-offset-4{text-underline-offset:4px}.shadow-lg{--tw-shadow:var(--shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:var(--shadow-xs);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\>\[data-slot\=button-group\]\]\:gap-2:has(>[data-slot=button-group]){gap:calc(var(--spacing)*2)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-auto[data-orientation=vertical]{height:auto}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}@media (min-width:40rem){.sm\:mt-0{margin-top:calc(var(--spacing)*0)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-x-2{column-gap:calc(var(--spacing)*2)}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\\\'size-\\\'\]\)\]\:size-4 svg:not([class*="'size-'"]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>\*\:focus-visible\]\:relative>:focus-visible{position:relative}.\[\&\>\*\:focus-visible\]\:z-10>:focus-visible{z-index:10}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-t-none>:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-l-none>:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:border-t-0>:not(:first-child){border-top-style:var(--tw-border-style);border-top-width:0}.\[\&\>\*\:not\(\:first-child\)\]\:border-l-0>:not(:first-child){border-left-style:var(--tw-border-style);border-left-width:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-r-none>:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-b-none>:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.has-\[select\[aria-hidden\=true\]\:last-child\]\:\[\&\>\[data-slot\=select-trigger\]\:last-of-type\]\:rounded-r-md:has(:is(select[aria-hidden=true]:last-child))>[data-slot=select-trigger]:last-of-type{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[data-slot\=select-trigger\]\:not\(\[class\*\=\'w-\'\]\)\]\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:fit-content}.\[\&\>input\]\:flex-1>input{flex:1}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
1
+ @import"https://fonts.googleapis.com/css2?family=Lexend:wght@100..900&family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap";/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-duration:initial;--tw-ease:initial}}}:root{--font-sans:Lexend,ui-sans-serif,sans-serif,system-ui;--font-serif:Lora,serif;--font-mono:"JetBrains Mono",ui-monospace,monospace}@layer base{:root{--radius:.3rem;--tracking-normal:.01em;--spacing:.25rem;--slate-50:oklch(97.8% .005 240);--slate-100:oklch(93.6% .01 240);--slate-200:oklch(92.9% .013 255.5);--slate-300:oklch(87% .022 255.5);--slate-500:oklch(55.4% .046 257.4);--slate-600:oklch(47.5% .04 257.4);--slate-700:oklch(39.5% .035 257.4);--slate-800:oklch(29.5% .03 257.4);--slate-900:oklch(17.6% .033 244.5);--slate-950:oklch(12.9% .042 264.7);--red-300:oklch(85% .08 25);--red-600:oklch(57.7% .245 27.3);--black:oklch(0% 0 0);--white:oklch(100% 0 0);--ee-blue-50:oklch(94.5% .028 237.5);--ee-blue-100:oklch(88.5% .055 237.5);--ee-blue-200:oklch(82.5% .082 237.5);--ee-blue-300:oklch(76.5% .109 237.5);--ee-blue-400:oklch(70.5% .136 237.5);--ee-blue-500:oklch(64.5% .163 237.5);--ee-blue-600:oklch(58.5% .145 237.5);--ee-blue-700:oklch(52.5% .127 237.5);--ee-blue-800:oklch(36.5% .109 237.5);--ee-blue-900:oklch(24.5% .082 237.5);--ee-blue-950:oklch(14.5% .055 237.5);--tech-blue-50:oklch(93.5% .015 240);--tech-blue-100:oklch(83.5% .03 240);--tech-blue-200:oklch(73.5% .045 240);--tech-blue-300:oklch(63.5% .06 240);--tech-blue-400:oklch(53.5% .075 240);--tech-blue-500:oklch(43.5% .09 240);--tech-blue-600:oklch(36.5% .08 240);--tech-blue-700:oklch(29.5% .07 240);--tech-blue-800:oklch(20.5% .06 240);--tech-blue-900:oklch(12.5% .04 240);--tech-blue-950:oklch(7.5% .025 240);--transform-teal-50:oklch(94.5% .02 185);--transform-teal-100:oklch(88.5% .04 185);--transform-teal-200:oklch(82.5% .06 185);--transform-teal-300:oklch(76.5% .08 185);--transform-teal-400:oklch(70.5% .1 185);--transform-teal-500:oklch(64.5% .12 185);--transform-teal-600:oklch(54.5% .105 185);--transform-teal-700:oklch(44.5% .09 185);--transform-teal-800:oklch(30.5% .075 185);--transform-teal-900:oklch(18.5% .055 185);--transform-teal-950:oklch(10.5% .035 185);--equal-ember-50:oklch(97.5% .035 65);--equal-ember-100:oklch(92.5% .07 65);--equal-ember-200:oklch(87.5% .105 65);--equal-ember-300:oklch(82.5% .14 65);--equal-ember-400:oklch(77.5% .175 65);--equal-ember-500:oklch(62.5% .2 65);--equal-ember-600:oklch(52.5% .18 65);--equal-ember-700:oklch(42.5% .16 65);--equal-ember-800:oklch(32.5% .14 65);--equal-ember-900:oklch(22.5% .12 65);--equal-ember-950:oklch(12.5% .1 65);--brand-ee-blue:var(--ee-blue-500);--brand-tech-blue:var(--tech-blue-500);--brand-transform-teal:var(--transform-teal-500);--brand-equal-ember:var(--equal-ember-500);--brand-dark-data:oklch(20.8% .01 240);--brand-the-cloud:var(--slate-100);--brand-byte-white:var(--white);--brand-ee-blue-accent:var(--ee-blue-50);--background:var(--brand-byte-white);--foreground:var(--slate-950);--primary:var(--brand-ee-blue);--primary-foreground:var(--brand-byte-white);--secondary:var(--brand-transform-teal);--secondary-foreground:var(--brand-byte-white);--muted:var(--slate-100);--muted-foreground:var(--slate-500);--accent:var(--brand-ee-blue-accent);--accent-foreground:var(--slate-950);--destructive:var(--red-600);--destructive-foreground:var(--brand-byte-white);--border:var(--slate-200);--input:var(--brand-byte-white);--ring:var(--slate-300);--card:var(--brand-byte-white);--card-foreground:var(--slate-950);--popover:var(--black);--popover-foreground:var(--brand-byte-white);--chart-1:#1f77b4;--chart-2:#ff7f0e;--chart-3:#2ca02c;--chart-4:#d62728;--chart-5:#9467bd;--sidebar:var(--brand-tech-blue);--sidebar-foreground:var(--brand-byte-white);--sidebar-primary:var(--brand-ee-blue);--sidebar-primary-foreground:var(--brand-ee-blue-accent);--sidebar-accent:var(--slate-200);--sidebar-accent-foreground:var(--brand-tech-blue);--sidebar-border:var(--slate-200);--sidebar-ring:var(--slate-100);--shadow-x:0px;--shadow-y:4px;--shadow-blur:8px;--shadow-spread:-1px;--shadow-opacity:.1;--shadow-color:oklch(20.8% .042 265.755);--shadow-2xs:0px 4px 8px -1px #0f172b0d;--shadow-xs:0px 4px 8px -1px #0f172b0d;--shadow-sm:0px 4px 8px -1px #0f172b1a,0px 1px 2px -2px #0f172b1a;--shadow:0px 4px 8px -1px #0f172b1a,0px 1px 2px -2px #0f172b1a;--shadow-md:0px 4px 8px -1px #0f172b1a,0px 2px 4px -2px #0f172b1a;--shadow-lg:0px 4px 8px -1px #0f172b1a,0px 4px 6px -2px #0f172b1a;--shadow-xl:0px 4px 8px -1px #0f172b1a,0px 8px 10px -2px #0f172b1a;--shadow-2xl:0px 4px 8px -1px #0f172b40}.dark{--background:var(--slate-900);--foreground:var(--brand-byte-white);--primary:var(--brand-ee-blue);--primary-foreground:var(--brand-byte-white);--secondary:var(--brand-transform-teal);--secondary-foreground:var(--brand-byte-white);--muted:var(--slate-100);--muted-foreground:var(--slate-300);--accent:var(--ee-blue-800);--accent-foreground:var(--slate-950);--destructive:var(--red-600);--destructive-foreground:var(--brand-byte-white);--border:var(--slate-700);--input:var(--slate-600);--ring:var(--slate-300);--card:var(--tech-blue-800);--card-foreground:var(--slate-950);--popover:var(--black);--popover-foreground:var(--brand-byte-white);--chart-1:#1f77b4;--chart-2:#ff7f0e;--chart-3:#2ca02c;--chart-4:#d62728;--chart-5:#9467bd;--sidebar:var(--tech-blue-700);--sidebar-foreground:var(--brand-byte-white);--sidebar-primary:var(--brand-ee-blue);--sidebar-primary-foreground:var(--brand-ee-blue-accent);--sidebar-accent:var(--ee-blue-700);--sidebar-accent-foreground:var(--brand-tech-blue);--sidebar-border:var(--slate-200);--sidebar-ring:var(--slate-100);--font-sans:Lexend,ui-sans-serif,sans-serif,system-ui;--font-serif:Lora,serif;--font-mono:"JetBrains Mono",ui-monospace,monospace;--radius:.3rem;--tracking-normal:.01em;--spacing:.25rem;--shadow-x:0px;--shadow-y:4px;--shadow-blur:8px;--shadow-spread:-1px;--shadow-opacity:.1;--shadow-color:#000;--shadow-2xs:0px 4px 8px -1px #0000000d;--shadow-xs:0px 4px 8px -1px #0000000d;--shadow-sm:0px 4px 8px -1px #0000001a,0px 1px 2px -2px #0000001a;--shadow:0px 4px 8px -1px #0000001a,0px 1px 2px -2px #0000001a;--shadow-md:0px 4px 8px -1px #0000001a,0px 2px 4px -2px #0000001a;--shadow-lg:0px 4px 8px -1px #0000001a,0px 4px 6px -2px #0000001a;--shadow-xl:0px 4px 8px -1px #0000001a,0px 8px 10px -2px #0000001a;--shadow-2xl:0px 4px 8px -1px #00000040}:root,:host{--shadow-2xs:var(--shadow-2xs);--shadow-xs:var(--shadow-xs);--shadow-sm:var(--shadow-sm);--shadow:var(--shadow);--shadow-md:var(--shadow-md);--shadow-lg:var(--shadow-lg);--shadow-xl:var(--shadow-xl);--shadow-2xl:var(--shadow-2xl);--tracking-normal:var(--tracking-normal);--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-medium:500;--font-weight-semibold:600;--ease-out:cubic-bezier(0,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}body{letter-spacing:var(--tracking-normal)}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground)}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer theme,components;@layer utilities{.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.left-1\/2{left:50%}.z-50{z-index:50}.\!m-0{margin:calc(var(--spacing)*0)!important}.mt-2{margin-top:calc(var(--spacing)*2)}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-11{width:calc(var(--spacing)*11);height:calc(var(--spacing)*11)}.h-4{height:calc(var(--spacing)*4)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.w-4{width:calc(var(--spacing)*4)}.w-10{width:calc(var(--spacing)*10)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-lg{max-width:var(--container-lg)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-4{gap:calc(var(--spacing)*4)}.gap-y-2{row-gap:calc(var(--spacing)*2)}.self-stretch{align-self:stretch}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.bg-background{background-color:var(--background)}.bg-black\/80{background-color:var(--black)}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--black)80%,transparent)}}.bg-border{background-color:var(--border)}.bg-destructive{background-color:var(--destructive)}.bg-input{background-color:var(--input)}.bg-muted{background-color:var(--muted)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-0{padding-top:calc(var(--spacing)*0)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.text-center{text-align:center}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.underline-offset-4{text-underline-offset:4px}.shadow-lg{--tw-shadow:var(--shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:var(--shadow-xs);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\>\[data-slot\=button-group\]\]\:gap-2:has(>[data-slot=button-group]){gap:calc(var(--spacing)*2)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-auto[data-orientation=vertical]{height:auto}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}@media (min-width:40rem){.sm\:mt-0{margin-top:calc(var(--spacing)*0)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-x-2{column-gap:calc(var(--spacing)*2)}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\\\'size-\\\'\]\)\]\:size-4 svg:not([class*="'size-'"]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>\*\:focus-visible\]\:relative>:focus-visible{position:relative}.\[\&\>\*\:focus-visible\]\:z-10>:focus-visible{z-index:10}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-t-none>:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-l-none>:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:border-t-0>:not(:first-child){border-top-style:var(--tw-border-style);border-top-width:0}.\[\&\>\*\:not\(\:first-child\)\]\:border-l-0>:not(:first-child){border-left-style:var(--tw-border-style);border-left-width:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-r-none>:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-b-none>:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.has-\[select\[aria-hidden\=true\]\:last-child\]\:\[\&\>\[data-slot\=select-trigger\]\:last-of-type\]\:rounded-r-md:has(:is(select[aria-hidden=true]:last-child))>[data-slot=select-trigger]:last-of-type{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[data-slot\=select-trigger\]\:not\(\[class\*\=\'w-\'\]\)\]\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:fit-content}.\[\&\>input\]\:flex-1>input{flex:1}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@equal-experts/kuat-vue",
3
- "version": "0.3.2",
3
+ "version": "0.4.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
File without changes