@highstacklabs2026/ui 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,109 @@
1
+ # @highstacklabs2026/ui
2
+
3
+ Colección de componentes de UI premium para **Angular 21/22**, diseñados para funcionar de forma nativa con **Tailwind CSS v4**. Todos los componentes son standalone y usan **Angular Signals** para el estado reactivo.
4
+
5
+ ## Instalación
6
+
7
+ ```bash
8
+ npm install @highstacklabs2026/ui
9
+ ```
10
+
11
+ ### Peer dependencies
12
+
13
+ Requiere Angular 22+:
14
+
15
+ ```jsonc
16
+ "@angular/common": "^22.0.0",
17
+ "@angular/core": "^22.0.0"
18
+ ```
19
+
20
+ ## Configuración de estilos
21
+
22
+ La librería ya incluye su propio CSS precompilado con todas las utilidades que usan los componentes **y** los tokens de tema por defecto. Solo tienes que importarlo una vez en tu archivo global de estilos:
23
+
24
+ ```css
25
+ @import '@highstacklabs2026/ui/styles.css';
26
+ ```
27
+
28
+ No necesitas Tailwind en tu app, ni añadir `@source` apuntando a `node_modules`. El CSS **no incluye preflight** (el reset global de Tailwind), así que no pisa los estilos base de tu aplicación.
29
+
30
+ ### Re-tematizar
31
+
32
+ Los tokens vienen con valores por defecto. Para cambiar la apariencia, redefine las variables CSS **después** del import:
33
+
34
+ ```css
35
+ @import '@highstacklabs2026/ui/styles.css';
36
+
37
+ :root {
38
+ --color-primary: oklch(0.55 0.2 264); /* tu color de marca */
39
+ --color-primary-foreground: oklch(0.985 0 0);
40
+ --radius: 0.5rem;
41
+ }
42
+ ```
43
+
44
+ Tokens disponibles: `--color-background`, `--color-foreground`, `--color-primary(-foreground)`, `--color-destructive(-foreground)`, `--color-secondary(-foreground)`, `--color-accent(-foreground)`, `--color-muted(-foreground)`, `--color-border`, `--color-input`, `--color-ring`, `--radius`.
45
+
46
+ ## Uso
47
+
48
+ Los componentes son standalone, así que se importan directamente en el array `imports`:
49
+
50
+ ```ts
51
+ import { Component } from '@angular/core';
52
+ import { ButtonComponent } from '@highstacklabs2026/ui';
53
+
54
+ @Component({
55
+ selector: 'app-mi-componente',
56
+ imports: [ButtonComponent],
57
+ template: `<ui-button variant="gradient">Mi Botón</ui-button>`,
58
+ })
59
+ export class MiComponente {}
60
+ ```
61
+
62
+ ## Componentes
63
+
64
+ ### `<ui-button>`
65
+
66
+ ```html
67
+ <!-- Variantes -->
68
+ <ui-button variant="default">Default</ui-button>
69
+ <ui-button variant="secondary">Secondary</ui-button>
70
+ <ui-button variant="destructive">Destructive</ui-button>
71
+ <ui-button variant="outline">Outline</ui-button>
72
+ <ui-button variant="ghost">Ghost</ui-button>
73
+ <ui-button variant="link">Link</ui-button>
74
+ <ui-button variant="gradient">Gradient</ui-button>
75
+ <ui-button variant="glass">Glass</ui-button>
76
+
77
+ <!-- Tamaños -->
78
+ <ui-button size="sm">Small</ui-button>
79
+ <ui-button size="lg">Large</ui-button>
80
+ <ui-button size="icon">★</ui-button>
81
+
82
+ <!-- Estados -->
83
+ <ui-button [disabled]="true">Disabled</ui-button>
84
+ <ui-button [loading]="true">Loading</ui-button>
85
+ ```
86
+
87
+ | Prop | Tipo | Default |
88
+ | ---------- | --------------------------------------------------------------------------------------------- | ----------- |
89
+ | `variant` | `'default' \| 'secondary' \| 'destructive' \| 'outline' \| 'ghost' \| 'link' \| 'gradient' \| 'glass'` | `'default'` |
90
+ | `size` | `'sm' \| 'md' \| 'lg' \| 'icon'` | `'md'` |
91
+ | `disabled` | `boolean` | `false` |
92
+ | `loading` | `boolean` | `false` |
93
+ | `type` | `'button' \| 'submit' \| 'reset'` | `'button'` |
94
+
95
+ ## Desarrollo
96
+
97
+ ### Build de la librería
98
+
99
+ ```bash
100
+ npm run build:lib
101
+ ```
102
+
103
+ Esto compila la librería con ng-packagr **y** genera `styles.css` (vía Tailwind) dentro del paquete. Los artefactos quedan en `dist/highstack/ui`.
104
+
105
+ ### Publicar
106
+
107
+ ```bash
108
+ npm publish dist/highstack/ui --access public
109
+ ```
@@ -0,0 +1,61 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, Component } from '@angular/core';
3
+
4
+ class ButtonComponent {
5
+ variant = input('default', /* @ts-ignore */
6
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
7
+ size = input('md', /* @ts-ignore */
8
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
9
+ disabled = input(false, /* @ts-ignore */
10
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
11
+ loading = input(false, /* @ts-ignore */
12
+ ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
13
+ type = input('button', /* @ts-ignore */
14
+ ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
15
+ isDisabled = computed(() => this.disabled() || this.loading(), /* @ts-ignore */
16
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
17
+ hostClasses = computed(() => {
18
+ const base = [
19
+ 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[var(--radius)]',
20
+ 'text-sm font-medium transition-all',
21
+ 'outline-none focus-visible:ring-[3px] focus-visible:ring-[var(--color-ring)]/50',
22
+ 'disabled:pointer-events-none disabled:opacity-50',
23
+ 'cursor-pointer',
24
+ ].join(' ');
25
+ const variantMap = {
26
+ default: 'bg-[var(--color-primary)] text-[var(--color-primary-foreground)] shadow-xs hover:bg-[var(--color-primary)]/90',
27
+ destructive: 'bg-[var(--color-destructive)] text-[var(--color-destructive-foreground)] shadow-xs hover:bg-[var(--color-destructive)]/90 focus-visible:ring-[var(--color-destructive)]/20',
28
+ outline: 'border border-[var(--color-input)] bg-[var(--color-background)] shadow-xs hover:bg-[var(--color-accent)] hover:text-[var(--color-accent-foreground)]',
29
+ secondary: 'bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)] shadow-xs hover:bg-[var(--color-secondary)]/80',
30
+ ghost: 'hover:bg-[var(--color-accent)] hover:text-[var(--color-accent-foreground)]',
31
+ link: 'text-[var(--color-primary)] underline-offset-4 hover:underline',
32
+ gradient: 'bg-gradient-to-r from-zinc-900 to-zinc-700 text-white shadow-xs hover:from-zinc-800 hover:to-zinc-600',
33
+ glass: 'backdrop-blur-2xl bg-white/10 border border-white/15 text-white/90 shadow-[0_1px_2px_rgba(0,0,0,0.1)] hover:bg-white/[0.18] active:bg-white/[0.12]',
34
+ };
35
+ const sizeMap = {
36
+ sm: 'h-8 px-3 gap-1.5',
37
+ md: 'h-9 px-4 py-2',
38
+ lg: 'h-10 px-6',
39
+ icon: 'size-9',
40
+ };
41
+ return [base, variantMap[this.variant()], sizeMap[this.size()]].join(' ');
42
+ }, /* @ts-ignore */
43
+ ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
44
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
45
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: ButtonComponent, isStandalone: true, selector: "ui-button", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<button\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [class]=\"hostClasses()\"\n>\n @if (loading()) {\n <svg\n class=\"h-4 w-4 animate-spin\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n ></path>\n </svg>\n }\n <ng-content />\n</button>\n" });
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ButtonComponent, decorators: [{
48
+ type: Component,
49
+ args: [{ selector: 'ui-button', template: "<button\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [class]=\"hostClasses()\"\n>\n @if (loading()) {\n <svg\n class=\"h-4 w-4 animate-spin\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n ></path>\n </svg>\n }\n <ng-content />\n</button>\n" }]
50
+ }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }] } });
51
+
52
+ /*
53
+ * Public API Surface of @highstacklabs2026/ui
54
+ */
55
+
56
+ /**
57
+ * Generated bundle index. Do not edit.
58
+ */
59
+
60
+ export { ButtonComponent };
61
+ //# sourceMappingURL=highstacklabs2026-ui.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highstacklabs2026-ui.mjs","sources":["../../../../projects/highstack/ui/src/lib/atoms/button/button.component.ts","../../../../projects/highstack/ui/src/lib/atoms/button/button.component.html","../../../../projects/highstack/ui/src/public-api.ts","../../../../projects/highstack/ui/src/highstacklabs2026-ui.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nexport type ButtonVariant =\n | 'default'\n | 'destructive'\n | 'outline'\n | 'ghost'\n | 'link'\n | 'secondary'\n | 'gradient'\n | 'glass';\nexport type ButtonSize = 'sm' | 'md' | 'lg' | 'icon';\n\n@Component({\n selector: 'ui-button',\n templateUrl: './button.component.html',\n})\nexport class ButtonComponent {\n readonly variant = input<ButtonVariant>('default');\n readonly size = input<ButtonSize>('md');\n readonly disabled = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n\n protected readonly isDisabled = computed(() => this.disabled() || this.loading());\n\n protected readonly hostClasses = computed(() => {\n const base = [\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[var(--radius)]',\n 'text-sm font-medium transition-all',\n 'outline-none focus-visible:ring-[3px] focus-visible:ring-[var(--color-ring)]/50',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'cursor-pointer',\n ].join(' ');\n\n const variantMap: Record<ButtonVariant, string> = {\n default:\n 'bg-[var(--color-primary)] text-[var(--color-primary-foreground)] shadow-xs hover:bg-[var(--color-primary)]/90',\n destructive:\n 'bg-[var(--color-destructive)] text-[var(--color-destructive-foreground)] shadow-xs hover:bg-[var(--color-destructive)]/90 focus-visible:ring-[var(--color-destructive)]/20',\n outline:\n 'border border-[var(--color-input)] bg-[var(--color-background)] shadow-xs hover:bg-[var(--color-accent)] hover:text-[var(--color-accent-foreground)]',\n secondary:\n 'bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)] shadow-xs hover:bg-[var(--color-secondary)]/80',\n ghost:\n 'hover:bg-[var(--color-accent)] hover:text-[var(--color-accent-foreground)]',\n link: 'text-[var(--color-primary)] underline-offset-4 hover:underline',\n gradient:\n 'bg-gradient-to-r from-zinc-900 to-zinc-700 text-white shadow-xs hover:from-zinc-800 hover:to-zinc-600',\n glass:\n 'backdrop-blur-2xl bg-white/10 border border-white/15 text-white/90 shadow-[0_1px_2px_rgba(0,0,0,0.1)] hover:bg-white/[0.18] active:bg-white/[0.12]',\n };\n\n const sizeMap: Record<ButtonSize, string> = {\n sm: 'h-8 px-3 gap-1.5',\n md: 'h-9 px-4 py-2',\n lg: 'h-10 px-6',\n icon: 'size-9',\n };\n\n return [base, variantMap[this.variant()], sizeMap[this.size()]].join(' ');\n });\n}\n","<button\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [class]=\"hostClasses()\"\n>\n @if (loading()) {\n <svg\n class=\"h-4 w-4 animate-spin\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n ></path>\n </svg>\n }\n <ng-content />\n</button>\n","/*\n * Public API Surface of @highstacklabs2026/ui\n */\n\nexport * from './lib/atoms/button/button.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAiBa,eAAe,CAAA;IACjB,OAAO,GAAG,KAAK,CAAgB,SAAS;gFAAC;IACzC,IAAI,GAAG,KAAK,CAAa,IAAI;6EAAC;IAC9B,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;IAChC,OAAO,GAAG,KAAK,CAAU,KAAK;gFAAC;IAC/B,IAAI,GAAG,KAAK,CAAgC,QAAQ;6EAAC;AAE3C,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;mFAAC;AAE9D,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,IAAI,GAAG;YACX,yFAAyF;YACzF,oCAAoC;YACpC,iFAAiF;YACjF,kDAAkD;YAClD,gBAAgB;AACjB,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AAEX,QAAA,MAAM,UAAU,GAAkC;AAChD,YAAA,OAAO,EACL,+GAA+G;AACjH,YAAA,WAAW,EACT,4KAA4K;AAC9K,YAAA,OAAO,EACL,sJAAsJ;AACxJ,YAAA,SAAS,EACP,qHAAqH;AACvH,YAAA,KAAK,EACH,4EAA4E;AAC9E,YAAA,IAAI,EAAE,gEAAgE;AACtE,YAAA,QAAQ,EACN,uGAAuG;AACzG,YAAA,KAAK,EACH,oJAAoJ;SACvJ;AAED,QAAA,MAAM,OAAO,GAA+B;AAC1C,YAAA,EAAE,EAAE,kBAAkB;AACtB,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,IAAI,EAAE,QAAQ;SACf;QAED,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3E,CAAC;oFAAC;uGA5CS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,wrBCjB5B,goBA6BA,EAAA,CAAA;;2FDZa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;+BACE,WAAW,EAAA,QAAA,EAAA,goBAAA,EAAA;;;AEdvB;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@highstacklabs2026/ui",
3
+ "version": "1.1.1",
4
+ "peerDependencies": {
5
+ "@angular/common": "^22.0.0",
6
+ "@angular/core": "^22.0.0"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "sideEffects": [
12
+ "**/*.css"
13
+ ],
14
+ "exports": {
15
+ "./styles.css": {
16
+ "default": "./styles.css"
17
+ },
18
+ "./package.json": {
19
+ "default": "./package.json"
20
+ },
21
+ ".": {
22
+ "types": "./types/highstacklabs2026-ui.d.ts",
23
+ "default": "./fesm2022/highstacklabs2026-ui.mjs"
24
+ }
25
+ },
26
+ "module": "fesm2022/highstacklabs2026-ui.mjs",
27
+ "typings": "types/highstacklabs2026-ui.d.ts",
28
+ "type": "module"
29
+ }
package/styles.css ADDED
@@ -0,0 +1,898 @@
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
+ @layer properties;
3
+ @layer theme, base, components, utilities;
4
+ @layer theme {
5
+ :root, :host {
6
+ --font-sans: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
7
+ 'Noto Color Emoji';
8
+ --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',
9
+ monospace;
10
+ --color-emerald-400: oklch(76.5% 0.177 163.223);
11
+ --color-zinc-100: oklch(96.7% 0.001 286.375);
12
+ --color-zinc-200: oklch(92% 0.004 286.32);
13
+ --color-zinc-400: oklch(70.5% 0.015 286.067);
14
+ --color-zinc-600: oklch(44.2% 0.017 285.786);
15
+ --color-zinc-700: oklch(37% 0.013 285.805);
16
+ --color-zinc-800: oklch(27.4% 0.006 286.033);
17
+ --color-zinc-900: oklch(21% 0.006 285.885);
18
+ --color-zinc-950: oklch(14.1% 0.005 285.823);
19
+ --color-black: #000;
20
+ --color-white: #fff;
21
+ --spacing: 0.25rem;
22
+ --container-3xl: 48rem;
23
+ --text-xs: 0.75rem;
24
+ --text-xs--line-height: calc(1 / 0.75);
25
+ --text-sm: 0.875rem;
26
+ --text-sm--line-height: calc(1.25 / 0.875);
27
+ --text-lg: 1.125rem;
28
+ --text-lg--line-height: calc(1.75 / 1.125);
29
+ --text-2xl: 1.5rem;
30
+ --text-2xl--line-height: calc(2 / 1.5);
31
+ --font-weight-normal: 400;
32
+ --font-weight-medium: 500;
33
+ --font-weight-semibold: 600;
34
+ --tracking-tight: -0.025em;
35
+ --tracking-widest: 0.1em;
36
+ --leading-relaxed: 1.625;
37
+ --radius-md: 0.375rem;
38
+ --radius-2xl: 1rem;
39
+ --animate-spin: spin 1s linear infinite;
40
+ --blur-2xl: 40px;
41
+ --default-transition-duration: 150ms;
42
+ --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
43
+ }
44
+ }
45
+ @layer utilities {
46
+ .absolute {
47
+ position: absolute;
48
+ }
49
+ .relative {
50
+ position: relative;
51
+ }
52
+ .inset-0 {
53
+ inset: calc(var(--spacing) * 0);
54
+ }
55
+ .start {
56
+ inset-inline-start: var(--spacing);
57
+ }
58
+ .top-3 {
59
+ top: calc(var(--spacing) * 3);
60
+ }
61
+ .right-3 {
62
+ right: calc(var(--spacing) * 3);
63
+ }
64
+ .mx-auto {
65
+ margin-inline: auto;
66
+ }
67
+ .mt-1\.5 {
68
+ margin-top: calc(var(--spacing) * 1.5);
69
+ }
70
+ .mt-3 {
71
+ margin-top: calc(var(--spacing) * 3);
72
+ }
73
+ .mt-4 {
74
+ margin-top: calc(var(--spacing) * 4);
75
+ }
76
+ .mb-3 {
77
+ margin-bottom: calc(var(--spacing) * 3);
78
+ }
79
+ .mb-4 {
80
+ margin-bottom: calc(var(--spacing) * 4);
81
+ }
82
+ .mb-6 {
83
+ margin-bottom: calc(var(--spacing) * 6);
84
+ }
85
+ .mb-12 {
86
+ margin-bottom: calc(var(--spacing) * 12);
87
+ }
88
+ .mb-16 {
89
+ margin-bottom: calc(var(--spacing) * 16);
90
+ }
91
+ .flex {
92
+ display: flex;
93
+ }
94
+ .inline-flex {
95
+ display: inline-flex;
96
+ }
97
+ .size-6 {
98
+ width: calc(var(--spacing) * 6);
99
+ height: calc(var(--spacing) * 6);
100
+ }
101
+ .size-7 {
102
+ width: calc(var(--spacing) * 7);
103
+ height: calc(var(--spacing) * 7);
104
+ }
105
+ .size-9 {
106
+ width: calc(var(--spacing) * 9);
107
+ height: calc(var(--spacing) * 9);
108
+ }
109
+ .h-4 {
110
+ height: calc(var(--spacing) * 4);
111
+ }
112
+ .h-8 {
113
+ height: calc(var(--spacing) * 8);
114
+ }
115
+ .h-9 {
116
+ height: calc(var(--spacing) * 9);
117
+ }
118
+ .h-10 {
119
+ height: calc(var(--spacing) * 10);
120
+ }
121
+ .h-px {
122
+ height: 1px;
123
+ }
124
+ .h-screen {
125
+ height: 100vh;
126
+ }
127
+ .max-h-80 {
128
+ max-height: calc(var(--spacing) * 80);
129
+ }
130
+ .max-h-96 {
131
+ max-height: calc(var(--spacing) * 96);
132
+ }
133
+ .min-h-screen {
134
+ min-height: 100vh;
135
+ }
136
+ .w-4 {
137
+ width: calc(var(--spacing) * 4);
138
+ }
139
+ .w-52 {
140
+ width: calc(var(--spacing) * 52);
141
+ }
142
+ .w-full {
143
+ width: 100%;
144
+ }
145
+ .max-w-3xl {
146
+ max-width: var(--container-3xl);
147
+ }
148
+ .flex-1 {
149
+ flex: 1;
150
+ }
151
+ .shrink-0 {
152
+ flex-shrink: 0;
153
+ }
154
+ .animate-spin {
155
+ animation: var(--animate-spin);
156
+ }
157
+ .cursor-pointer {
158
+ cursor: pointer;
159
+ }
160
+ .flex-col {
161
+ flex-direction: column;
162
+ }
163
+ .flex-wrap {
164
+ flex-wrap: wrap;
165
+ }
166
+ .items-center {
167
+ align-items: center;
168
+ }
169
+ .justify-between {
170
+ justify-content: space-between;
171
+ }
172
+ .justify-center {
173
+ justify-content: center;
174
+ }
175
+ .gap-0\.5 {
176
+ gap: calc(var(--spacing) * 0.5);
177
+ }
178
+ .gap-1\.5 {
179
+ gap: calc(var(--spacing) * 1.5);
180
+ }
181
+ .gap-2 {
182
+ gap: calc(var(--spacing) * 2);
183
+ }
184
+ .gap-2\.5 {
185
+ gap: calc(var(--spacing) * 2.5);
186
+ }
187
+ .gap-3 {
188
+ gap: calc(var(--spacing) * 3);
189
+ }
190
+ .space-y-3 {
191
+ :where(& > :not(:last-child)) {
192
+ --tw-space-y-reverse: 0;
193
+ margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));
194
+ margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));
195
+ }
196
+ }
197
+ .space-y-4 {
198
+ :where(& > :not(:last-child)) {
199
+ --tw-space-y-reverse: 0;
200
+ margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));
201
+ margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));
202
+ }
203
+ }
204
+ .space-y-8 {
205
+ :where(& > :not(:last-child)) {
206
+ --tw-space-y-reverse: 0;
207
+ margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));
208
+ margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));
209
+ }
210
+ }
211
+ .space-y-12 {
212
+ :where(& > :not(:last-child)) {
213
+ --tw-space-y-reverse: 0;
214
+ margin-block-start: calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));
215
+ margin-block-end: calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)));
216
+ }
217
+ }
218
+ .space-y-14 {
219
+ :where(& > :not(:last-child)) {
220
+ --tw-space-y-reverse: 0;
221
+ margin-block-start: calc(calc(var(--spacing) * 14) * var(--tw-space-y-reverse));
222
+ margin-block-end: calc(calc(var(--spacing) * 14) * calc(1 - var(--tw-space-y-reverse)));
223
+ }
224
+ }
225
+ .overflow-hidden {
226
+ overflow: hidden;
227
+ }
228
+ .overflow-x-auto {
229
+ overflow-x: auto;
230
+ }
231
+ .overflow-y-auto {
232
+ overflow-y: auto;
233
+ }
234
+ .rounded-2xl {
235
+ border-radius: var(--radius-2xl);
236
+ }
237
+ .rounded-\[var\(--radius\)\] {
238
+ border-radius: var(--radius);
239
+ }
240
+ .rounded-full {
241
+ border-radius: calc(infinity * 1px);
242
+ }
243
+ .rounded-md {
244
+ border-radius: var(--radius-md);
245
+ }
246
+ .border {
247
+ border-style: var(--tw-border-style);
248
+ border-width: 1px;
249
+ }
250
+ .border-t {
251
+ border-top-style: var(--tw-border-style);
252
+ border-top-width: 1px;
253
+ }
254
+ .border-r {
255
+ border-right-style: var(--tw-border-style);
256
+ border-right-width: 1px;
257
+ }
258
+ .border-\[var\(--color-border\)\] {
259
+ border-color: var(--color-border);
260
+ }
261
+ .border-\[var\(--color-input\)\] {
262
+ border-color: var(--color-input);
263
+ }
264
+ .border-white\/15 {
265
+ border-color: color-mix(in srgb, #fff 15%, transparent);
266
+ @supports (color: color-mix(in lab, red, red)) {
267
+ border-color: color-mix(in oklab, var(--color-white) 15%, transparent);
268
+ }
269
+ }
270
+ .border-zinc-800 {
271
+ border-color: var(--color-zinc-800);
272
+ }
273
+ .border-zinc-900 {
274
+ border-color: var(--color-zinc-900);
275
+ }
276
+ .bg-\[var\(--color-accent\)\] {
277
+ background-color: var(--color-accent);
278
+ }
279
+ .bg-\[var\(--color-background\)\] {
280
+ background-color: var(--color-background);
281
+ }
282
+ .bg-\[var\(--color-border\)\] {
283
+ background-color: var(--color-border);
284
+ }
285
+ .bg-\[var\(--color-destructive\)\] {
286
+ background-color: var(--color-destructive);
287
+ }
288
+ .bg-\[var\(--color-muted\)\] {
289
+ background-color: var(--color-muted);
290
+ }
291
+ .bg-\[var\(--color-primary\)\] {
292
+ background-color: var(--color-primary);
293
+ }
294
+ .bg-\[var\(--color-secondary\)\] {
295
+ background-color: var(--color-secondary);
296
+ }
297
+ .bg-black\/30 {
298
+ background-color: color-mix(in srgb, #000 30%, transparent);
299
+ @supports (color: color-mix(in lab, red, red)) {
300
+ background-color: color-mix(in oklab, var(--color-black) 30%, transparent);
301
+ }
302
+ }
303
+ .bg-white\/10 {
304
+ background-color: color-mix(in srgb, #fff 10%, transparent);
305
+ @supports (color: color-mix(in lab, red, red)) {
306
+ background-color: color-mix(in oklab, var(--color-white) 10%, transparent);
307
+ }
308
+ }
309
+ .bg-zinc-900 {
310
+ background-color: var(--color-zinc-900);
311
+ }
312
+ .bg-zinc-950 {
313
+ background-color: var(--color-zinc-950);
314
+ }
315
+ .bg-gradient-to-br {
316
+ --tw-gradient-position: to bottom right in oklab;
317
+ background-image: linear-gradient(var(--tw-gradient-stops));
318
+ }
319
+ .bg-gradient-to-r {
320
+ --tw-gradient-position: to right in oklab;
321
+ background-image: linear-gradient(var(--tw-gradient-stops));
322
+ }
323
+ .bg-\[url\(\'https\:\/\/images\.unsplash\.com\/photo-1506744038136-46273834b3fb\?w\=800\&q\=80\'\)\] {
324
+ background-image: url('https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800&q=80');
325
+ }
326
+ .from-zinc-800 {
327
+ --tw-gradient-from: var(--color-zinc-800);
328
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
329
+ }
330
+ .from-zinc-900 {
331
+ --tw-gradient-from: var(--color-zinc-900);
332
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
333
+ }
334
+ .via-zinc-900 {
335
+ --tw-gradient-via: var(--color-zinc-900);
336
+ --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
337
+ --tw-gradient-stops: var(--tw-gradient-via-stops);
338
+ }
339
+ .to-black {
340
+ --tw-gradient-to: var(--color-black);
341
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
342
+ }
343
+ .to-zinc-700 {
344
+ --tw-gradient-to: var(--color-zinc-700);
345
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
346
+ }
347
+ .bg-cover {
348
+ background-size: cover;
349
+ }
350
+ .bg-center {
351
+ background-position: center;
352
+ }
353
+ .p-4 {
354
+ padding: calc(var(--spacing) * 4);
355
+ }
356
+ .p-6 {
357
+ padding: calc(var(--spacing) * 6);
358
+ }
359
+ .p-8 {
360
+ padding: calc(var(--spacing) * 8);
361
+ }
362
+ .px-2 {
363
+ padding-inline: calc(var(--spacing) * 2);
364
+ }
365
+ .px-3 {
366
+ padding-inline: calc(var(--spacing) * 3);
367
+ }
368
+ .px-4 {
369
+ padding-inline: calc(var(--spacing) * 4);
370
+ }
371
+ .px-6 {
372
+ padding-inline: calc(var(--spacing) * 6);
373
+ }
374
+ .py-2 {
375
+ padding-block: calc(var(--spacing) * 2);
376
+ }
377
+ .py-2\.5 {
378
+ padding-block: calc(var(--spacing) * 2.5);
379
+ }
380
+ .py-6 {
381
+ padding-block: calc(var(--spacing) * 6);
382
+ }
383
+ .pr-8 {
384
+ padding-right: calc(var(--spacing) * 8);
385
+ }
386
+ .pl-8 {
387
+ padding-left: calc(var(--spacing) * 8);
388
+ }
389
+ .text-left {
390
+ text-align: left;
391
+ }
392
+ .font-mono {
393
+ font-family: var(--font-mono);
394
+ }
395
+ .font-sans {
396
+ font-family: var(--font-sans);
397
+ }
398
+ .text-2xl {
399
+ font-size: var(--text-2xl);
400
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
401
+ }
402
+ .text-lg {
403
+ font-size: var(--text-lg);
404
+ line-height: var(--tw-leading, var(--text-lg--line-height));
405
+ }
406
+ .text-sm {
407
+ font-size: var(--text-sm);
408
+ line-height: var(--tw-leading, var(--text-sm--line-height));
409
+ }
410
+ .text-xs {
411
+ font-size: var(--text-xs);
412
+ line-height: var(--tw-leading, var(--text-xs--line-height));
413
+ }
414
+ .leading-relaxed {
415
+ --tw-leading: var(--leading-relaxed);
416
+ line-height: var(--leading-relaxed);
417
+ }
418
+ .font-medium {
419
+ --tw-font-weight: var(--font-weight-medium);
420
+ font-weight: var(--font-weight-medium);
421
+ }
422
+ .font-normal {
423
+ --tw-font-weight: var(--font-weight-normal);
424
+ font-weight: var(--font-weight-normal);
425
+ }
426
+ .font-semibold {
427
+ --tw-font-weight: var(--font-weight-semibold);
428
+ font-weight: var(--font-weight-semibold);
429
+ }
430
+ .tracking-tight {
431
+ --tw-tracking: var(--tracking-tight);
432
+ letter-spacing: var(--tracking-tight);
433
+ }
434
+ .tracking-widest {
435
+ --tw-tracking: var(--tracking-widest);
436
+ letter-spacing: var(--tracking-widest);
437
+ }
438
+ .whitespace-nowrap {
439
+ white-space: nowrap;
440
+ }
441
+ .text-\[var\(--color-accent-foreground\)\] {
442
+ color: var(--color-accent-foreground);
443
+ }
444
+ .text-\[var\(--color-destructive-foreground\)\] {
445
+ color: var(--color-destructive-foreground);
446
+ }
447
+ .text-\[var\(--color-foreground\)\] {
448
+ color: var(--color-foreground);
449
+ }
450
+ .text-\[var\(--color-muted-foreground\)\] {
451
+ color: var(--color-muted-foreground);
452
+ }
453
+ .text-\[var\(--color-primary\)\] {
454
+ color: var(--color-primary);
455
+ }
456
+ .text-\[var\(--color-primary-foreground\)\] {
457
+ color: var(--color-primary-foreground);
458
+ }
459
+ .text-\[var\(--color-secondary-foreground\)\] {
460
+ color: var(--color-secondary-foreground);
461
+ }
462
+ .text-emerald-400 {
463
+ color: var(--color-emerald-400);
464
+ }
465
+ .text-white {
466
+ color: var(--color-white);
467
+ }
468
+ .text-white\/90 {
469
+ color: color-mix(in srgb, #fff 90%, transparent);
470
+ @supports (color: color-mix(in lab, red, red)) {
471
+ color: color-mix(in oklab, var(--color-white) 90%, transparent);
472
+ }
473
+ }
474
+ .text-zinc-100 {
475
+ color: var(--color-zinc-100);
476
+ }
477
+ .text-zinc-400 {
478
+ color: var(--color-zinc-400);
479
+ }
480
+ .uppercase {
481
+ text-transform: uppercase;
482
+ }
483
+ .underline-offset-4 {
484
+ text-underline-offset: 4px;
485
+ }
486
+ .antialiased {
487
+ -webkit-font-smoothing: antialiased;
488
+ -moz-osx-font-smoothing: grayscale;
489
+ }
490
+ .opacity-25 {
491
+ opacity: 25%;
492
+ }
493
+ .opacity-75 {
494
+ opacity: 75%;
495
+ }
496
+ .shadow-\[0_1px_2px_rgba\(0\,0\,0\,0\.1\)\] {
497
+ --tw-shadow: 0 1px 2px var(--tw-shadow-color, rgba(0,0,0,0.1));
498
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
499
+ }
500
+ .shadow-sm {
501
+ --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
502
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
503
+ }
504
+ .shadow-xs {
505
+ --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));
506
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
507
+ }
508
+ .outline {
509
+ outline-style: var(--tw-outline-style);
510
+ outline-width: 1px;
511
+ }
512
+ .backdrop-blur-2xl {
513
+ --tw-backdrop-blur: blur(var(--blur-2xl));
514
+ -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
515
+ backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
516
+ }
517
+ .transition-all {
518
+ transition-property: all;
519
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
520
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
521
+ }
522
+ .outline-none {
523
+ --tw-outline-style: none;
524
+ outline-style: none;
525
+ }
526
+ .select-all {
527
+ -webkit-user-select: all;
528
+ user-select: all;
529
+ }
530
+ .hover\:bg-\[var\(--color-accent\)\] {
531
+ &:hover {
532
+ @media (hover: hover) {
533
+ background-color: var(--color-accent);
534
+ }
535
+ }
536
+ }
537
+ .hover\:bg-\[var\(--color-destructive\)\]\/90 {
538
+ &:hover {
539
+ @media (hover: hover) {
540
+ background-color: var(--color-destructive);
541
+ @supports (color: color-mix(in lab, red, red)) {
542
+ background-color: color-mix(in oklab, var(--color-destructive) 90%, transparent);
543
+ }
544
+ }
545
+ }
546
+ }
547
+ .hover\:bg-\[var\(--color-primary\)\]\/90 {
548
+ &:hover {
549
+ @media (hover: hover) {
550
+ background-color: var(--color-primary);
551
+ @supports (color: color-mix(in lab, red, red)) {
552
+ background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);
553
+ }
554
+ }
555
+ }
556
+ }
557
+ .hover\:bg-\[var\(--color-secondary\)\]\/80 {
558
+ &:hover {
559
+ @media (hover: hover) {
560
+ background-color: var(--color-secondary);
561
+ @supports (color: color-mix(in lab, red, red)) {
562
+ background-color: color-mix(in oklab, var(--color-secondary) 80%, transparent);
563
+ }
564
+ }
565
+ }
566
+ }
567
+ .hover\:bg-white\/\[0\.18\] {
568
+ &:hover {
569
+ @media (hover: hover) {
570
+ background-color: color-mix(in srgb, #fff 18%, transparent);
571
+ @supports (color: color-mix(in lab, red, red)) {
572
+ background-color: color-mix(in oklab, var(--color-white) 18%, transparent);
573
+ }
574
+ }
575
+ }
576
+ }
577
+ .hover\:bg-zinc-800 {
578
+ &:hover {
579
+ @media (hover: hover) {
580
+ background-color: var(--color-zinc-800);
581
+ }
582
+ }
583
+ }
584
+ .hover\:from-zinc-800 {
585
+ &:hover {
586
+ @media (hover: hover) {
587
+ --tw-gradient-from: var(--color-zinc-800);
588
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
589
+ }
590
+ }
591
+ }
592
+ .hover\:to-zinc-600 {
593
+ &:hover {
594
+ @media (hover: hover) {
595
+ --tw-gradient-to: var(--color-zinc-600);
596
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
597
+ }
598
+ }
599
+ }
600
+ .hover\:text-\[var\(--color-accent-foreground\)\] {
601
+ &:hover {
602
+ @media (hover: hover) {
603
+ color: var(--color-accent-foreground);
604
+ }
605
+ }
606
+ }
607
+ .hover\:text-zinc-200 {
608
+ &:hover {
609
+ @media (hover: hover) {
610
+ color: var(--color-zinc-200);
611
+ }
612
+ }
613
+ }
614
+ .hover\:underline {
615
+ &:hover {
616
+ @media (hover: hover) {
617
+ text-decoration-line: underline;
618
+ }
619
+ }
620
+ }
621
+ .focus-visible\:ring-\[3px\] {
622
+ &:focus-visible {
623
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
624
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
625
+ }
626
+ }
627
+ .focus-visible\:ring-\[var\(--color-destructive\)\]\/20 {
628
+ &:focus-visible {
629
+ --tw-ring-color: var(--color-destructive);
630
+ @supports (color: color-mix(in lab, red, red)) {
631
+ --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);
632
+ }
633
+ }
634
+ }
635
+ .focus-visible\:ring-\[var\(--color-ring\)\]\/50 {
636
+ &:focus-visible {
637
+ --tw-ring-color: var(--color-ring);
638
+ @supports (color: color-mix(in lab, red, red)) {
639
+ --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);
640
+ }
641
+ }
642
+ }
643
+ .active\:bg-white\/\[0\.12\] {
644
+ &:active {
645
+ background-color: color-mix(in srgb, #fff 12%, transparent);
646
+ @supports (color: color-mix(in lab, red, red)) {
647
+ background-color: color-mix(in oklab, var(--color-white) 12%, transparent);
648
+ }
649
+ }
650
+ }
651
+ .disabled\:pointer-events-none {
652
+ &:disabled {
653
+ pointer-events: none;
654
+ }
655
+ }
656
+ .disabled\:opacity-50 {
657
+ &:disabled {
658
+ opacity: 50%;
659
+ }
660
+ }
661
+ }
662
+ :root {
663
+ --color-background: oklch(1 0 0);
664
+ --color-foreground: oklch(0.145 0.005 285.82);
665
+ --color-primary: oklch(0.205 0.006 285.82);
666
+ --color-primary-foreground: oklch(0.985 0 0);
667
+ --color-destructive: oklch(0.577 0.245 27.33);
668
+ --color-destructive-foreground: oklch(0.985 0 0);
669
+ --color-secondary: oklch(0.965 0.003 285.82);
670
+ --color-secondary-foreground: oklch(0.205 0.006 285.82);
671
+ --color-accent: oklch(0.965 0.003 285.82);
672
+ --color-accent-foreground: oklch(0.205 0.006 285.82);
673
+ --color-muted: oklch(0.965 0.003 285.82);
674
+ --color-muted-foreground: oklch(0.556 0.015 285.82);
675
+ --color-border: oklch(0.922 0.005 285.82);
676
+ --color-input: oklch(0.922 0.005 285.82);
677
+ --color-ring: oklch(0.705 0.015 285.82);
678
+ --radius: 0.625rem;
679
+ }
680
+ @property --tw-space-y-reverse {
681
+ syntax: "*";
682
+ inherits: false;
683
+ initial-value: 0;
684
+ }
685
+ @property --tw-border-style {
686
+ syntax: "*";
687
+ inherits: false;
688
+ initial-value: solid;
689
+ }
690
+ @property --tw-gradient-position {
691
+ syntax: "*";
692
+ inherits: false;
693
+ }
694
+ @property --tw-gradient-from {
695
+ syntax: "<color>";
696
+ inherits: false;
697
+ initial-value: #0000;
698
+ }
699
+ @property --tw-gradient-via {
700
+ syntax: "<color>";
701
+ inherits: false;
702
+ initial-value: #0000;
703
+ }
704
+ @property --tw-gradient-to {
705
+ syntax: "<color>";
706
+ inherits: false;
707
+ initial-value: #0000;
708
+ }
709
+ @property --tw-gradient-stops {
710
+ syntax: "*";
711
+ inherits: false;
712
+ }
713
+ @property --tw-gradient-via-stops {
714
+ syntax: "*";
715
+ inherits: false;
716
+ }
717
+ @property --tw-gradient-from-position {
718
+ syntax: "<length-percentage>";
719
+ inherits: false;
720
+ initial-value: 0%;
721
+ }
722
+ @property --tw-gradient-via-position {
723
+ syntax: "<length-percentage>";
724
+ inherits: false;
725
+ initial-value: 50%;
726
+ }
727
+ @property --tw-gradient-to-position {
728
+ syntax: "<length-percentage>";
729
+ inherits: false;
730
+ initial-value: 100%;
731
+ }
732
+ @property --tw-leading {
733
+ syntax: "*";
734
+ inherits: false;
735
+ }
736
+ @property --tw-font-weight {
737
+ syntax: "*";
738
+ inherits: false;
739
+ }
740
+ @property --tw-tracking {
741
+ syntax: "*";
742
+ inherits: false;
743
+ }
744
+ @property --tw-shadow {
745
+ syntax: "*";
746
+ inherits: false;
747
+ initial-value: 0 0 #0000;
748
+ }
749
+ @property --tw-shadow-color {
750
+ syntax: "*";
751
+ inherits: false;
752
+ }
753
+ @property --tw-shadow-alpha {
754
+ syntax: "<percentage>";
755
+ inherits: false;
756
+ initial-value: 100%;
757
+ }
758
+ @property --tw-inset-shadow {
759
+ syntax: "*";
760
+ inherits: false;
761
+ initial-value: 0 0 #0000;
762
+ }
763
+ @property --tw-inset-shadow-color {
764
+ syntax: "*";
765
+ inherits: false;
766
+ }
767
+ @property --tw-inset-shadow-alpha {
768
+ syntax: "<percentage>";
769
+ inherits: false;
770
+ initial-value: 100%;
771
+ }
772
+ @property --tw-ring-color {
773
+ syntax: "*";
774
+ inherits: false;
775
+ }
776
+ @property --tw-ring-shadow {
777
+ syntax: "*";
778
+ inherits: false;
779
+ initial-value: 0 0 #0000;
780
+ }
781
+ @property --tw-inset-ring-color {
782
+ syntax: "*";
783
+ inherits: false;
784
+ }
785
+ @property --tw-inset-ring-shadow {
786
+ syntax: "*";
787
+ inherits: false;
788
+ initial-value: 0 0 #0000;
789
+ }
790
+ @property --tw-ring-inset {
791
+ syntax: "*";
792
+ inherits: false;
793
+ }
794
+ @property --tw-ring-offset-width {
795
+ syntax: "<length>";
796
+ inherits: false;
797
+ initial-value: 0px;
798
+ }
799
+ @property --tw-ring-offset-color {
800
+ syntax: "*";
801
+ inherits: false;
802
+ initial-value: #fff;
803
+ }
804
+ @property --tw-ring-offset-shadow {
805
+ syntax: "*";
806
+ inherits: false;
807
+ initial-value: 0 0 #0000;
808
+ }
809
+ @property --tw-outline-style {
810
+ syntax: "*";
811
+ inherits: false;
812
+ initial-value: solid;
813
+ }
814
+ @property --tw-backdrop-blur {
815
+ syntax: "*";
816
+ inherits: false;
817
+ }
818
+ @property --tw-backdrop-brightness {
819
+ syntax: "*";
820
+ inherits: false;
821
+ }
822
+ @property --tw-backdrop-contrast {
823
+ syntax: "*";
824
+ inherits: false;
825
+ }
826
+ @property --tw-backdrop-grayscale {
827
+ syntax: "*";
828
+ inherits: false;
829
+ }
830
+ @property --tw-backdrop-hue-rotate {
831
+ syntax: "*";
832
+ inherits: false;
833
+ }
834
+ @property --tw-backdrop-invert {
835
+ syntax: "*";
836
+ inherits: false;
837
+ }
838
+ @property --tw-backdrop-opacity {
839
+ syntax: "*";
840
+ inherits: false;
841
+ }
842
+ @property --tw-backdrop-saturate {
843
+ syntax: "*";
844
+ inherits: false;
845
+ }
846
+ @property --tw-backdrop-sepia {
847
+ syntax: "*";
848
+ inherits: false;
849
+ }
850
+ @keyframes spin {
851
+ to {
852
+ transform: rotate(360deg);
853
+ }
854
+ }
855
+ @layer properties {
856
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
857
+ *, ::before, ::after, ::backdrop {
858
+ --tw-space-y-reverse: 0;
859
+ --tw-border-style: solid;
860
+ --tw-gradient-position: initial;
861
+ --tw-gradient-from: #0000;
862
+ --tw-gradient-via: #0000;
863
+ --tw-gradient-to: #0000;
864
+ --tw-gradient-stops: initial;
865
+ --tw-gradient-via-stops: initial;
866
+ --tw-gradient-from-position: 0%;
867
+ --tw-gradient-via-position: 50%;
868
+ --tw-gradient-to-position: 100%;
869
+ --tw-leading: initial;
870
+ --tw-font-weight: initial;
871
+ --tw-tracking: initial;
872
+ --tw-shadow: 0 0 #0000;
873
+ --tw-shadow-color: initial;
874
+ --tw-shadow-alpha: 100%;
875
+ --tw-inset-shadow: 0 0 #0000;
876
+ --tw-inset-shadow-color: initial;
877
+ --tw-inset-shadow-alpha: 100%;
878
+ --tw-ring-color: initial;
879
+ --tw-ring-shadow: 0 0 #0000;
880
+ --tw-inset-ring-color: initial;
881
+ --tw-inset-ring-shadow: 0 0 #0000;
882
+ --tw-ring-inset: initial;
883
+ --tw-ring-offset-width: 0px;
884
+ --tw-ring-offset-color: #fff;
885
+ --tw-ring-offset-shadow: 0 0 #0000;
886
+ --tw-outline-style: solid;
887
+ --tw-backdrop-blur: initial;
888
+ --tw-backdrop-brightness: initial;
889
+ --tw-backdrop-contrast: initial;
890
+ --tw-backdrop-grayscale: initial;
891
+ --tw-backdrop-hue-rotate: initial;
892
+ --tw-backdrop-invert: initial;
893
+ --tw-backdrop-opacity: initial;
894
+ --tw-backdrop-saturate: initial;
895
+ --tw-backdrop-sepia: initial;
896
+ }
897
+ }
898
+ }
@@ -0,0 +1,18 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ type ButtonVariant = 'default' | 'destructive' | 'outline' | 'ghost' | 'link' | 'secondary' | 'gradient' | 'glass';
4
+ type ButtonSize = 'sm' | 'md' | 'lg' | 'icon';
5
+ declare class ButtonComponent {
6
+ readonly variant: _angular_core.InputSignal<ButtonVariant>;
7
+ readonly size: _angular_core.InputSignal<ButtonSize>;
8
+ readonly disabled: _angular_core.InputSignal<boolean>;
9
+ readonly loading: _angular_core.InputSignal<boolean>;
10
+ readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
11
+ protected readonly isDisabled: _angular_core.Signal<boolean>;
12
+ protected readonly hostClasses: _angular_core.Signal<string>;
13
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonComponent, never>;
14
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "ui-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
15
+ }
16
+
17
+ export { ButtonComponent };
18
+ export type { ButtonSize, ButtonVariant };