@stellar-ui-kit/shared 1.0.0

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,193 @@
1
+ # @stellar-ui-kit/shared
2
+
3
+ Shared design tokens, types, and utilities for Stellar UI - Platform agnostic.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@stellar-ui-kit/shared.svg)](https://www.npmjs.com/package/@stellar-ui-kit/shared)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ ## Features
9
+
10
+ - 🎨 **Design Tokens** - Colors, themes, and design constants
11
+ - 🛠️ **Utilities** - Platform-agnostic helper functions
12
+ - 🎭 **Theme System** - Light, dark, and custom theme support
13
+ - 📦 **Tailwind Preset** - Pre-configured Tailwind CSS setup
14
+ - 🎯 **TypeScript** - Full type definitions
15
+
16
+ ## Installation
17
+
18
+ ```bash
19
+ npm install @stellar-ui-kit/shared
20
+ ```
21
+
22
+ ## Exports
23
+
24
+ ### Main Export
25
+
26
+ ```typescript
27
+ import { cn, colors, themes } from '@stellar-ui-kit/shared';
28
+ ```
29
+
30
+ ### Tokens
31
+
32
+ ```typescript
33
+ import { colors, themes } from '@stellar-ui-kit/shared/tokens';
34
+ ```
35
+
36
+ ### Utils
37
+
38
+ ```typescript
39
+ import { cn, tokenize, getTheme } from '@stellar-ui-kit/shared/utils';
40
+ ```
41
+
42
+ ### Tailwind Preset
43
+
44
+ ```typescript
45
+ import stellarPreset from '@stellar-ui-kit/shared/tailwind-preset';
46
+ ```
47
+
48
+ ## Usage
49
+
50
+ ### Using the `cn` Utility
51
+
52
+ Merge Tailwind CSS classes with proper precedence:
53
+
54
+ ```typescript
55
+ import { cn } from '@stellar-ui-kit/shared';
56
+
57
+ const className = cn(
58
+ 'px-4 py-2',
59
+ 'bg-primary text-white',
60
+ isActive && 'bg-primary-dark',
61
+ customClass
62
+ );
63
+ ```
64
+
65
+ ### Design Tokens
66
+
67
+ Access design tokens programmatically:
68
+
69
+ ```typescript
70
+ import { colors } from '@stellar-ui-kit/shared/tokens';
71
+
72
+ console.log(colors.light.primary); // Primary color for light theme
73
+ console.log(colors.dark.background); // Background color for dark theme
74
+ ```
75
+
76
+ ### Tailwind Preset
77
+
78
+ Add to your `tailwind.config.ts`:
79
+
80
+ ```typescript
81
+ import type { Config } from 'tailwindcss';
82
+ import stellarPreset from '@stellar-ui-kit/shared/tailwind-preset';
83
+
84
+ const config: Config = {
85
+ darkMode: ['class'],
86
+ content: ['./src/**/*.{js,ts,jsx,tsx}'],
87
+ presets: [stellarPreset],
88
+ };
89
+
90
+ export default config;
91
+ ```
92
+
93
+ The preset includes:
94
+
95
+ - Design tokens as Tailwind CSS variables
96
+ - Extended color palette (primary, secondary, success, warning, error, etc.)
97
+ - Typography scale
98
+ - Spacing scale
99
+ - Border radius tokens
100
+ - Shadow tokens
101
+
102
+ ### Theme System
103
+
104
+ ```typescript
105
+ import { themes } from '@stellar-ui-kit/shared/tokens';
106
+
107
+ // Available themes
108
+ const lightTheme = themes.light;
109
+ const darkTheme = themes.dark;
110
+ const oceanTheme = themes.ocean;
111
+ ```
112
+
113
+ ### TypeScript Types
114
+
115
+ ```typescript
116
+ import type { ColorScheme, ThemeVariant } from '@stellar-ui-kit/shared';
117
+
118
+ const scheme: ColorScheme = 'light' | 'dark';
119
+ const variant: ThemeVariant = 'light' | 'dark' | 'ocean';
120
+ ```
121
+
122
+ ## Available Tokens
123
+
124
+ ### Colors
125
+
126
+ - **Semantic Colors**: primary, secondary, success, warning, error
127
+ - **Neutral Colors**: foreground, background, surface, border, muted
128
+ - **Syntax Highlighting**: For code blocks and editors
129
+
130
+ ### Themes
131
+
132
+ - `light` - Default light theme
133
+ - `dark` - Default dark theme
134
+ - `ocean` - Ocean blue theme (custom)
135
+
136
+ ## Utilities
137
+
138
+ ### `cn(...classes)`
139
+
140
+ Merge and deduplicate Tailwind CSS classes using `clsx` and `tailwind-merge`.
141
+
142
+ ```typescript
143
+ cn('px-4', 'px-2'); // => 'px-2' (latter wins)
144
+ cn('text-red-500', 'text-blue-500'); // => 'text-blue-500'
145
+ ```
146
+
147
+ ### `tokenize(value, fallback?)`
148
+
149
+ Convert design token references to CSS variables:
150
+
151
+ ```typescript
152
+ tokenize('primary'); // => 'var(--primary)'
153
+ tokenize('primary', '#000'); // => 'var(--primary, #000)'
154
+ ```
155
+
156
+ ### `getTheme(variant)`
157
+
158
+ Get theme object by variant name:
159
+
160
+ ```typescript
161
+ const theme = getTheme('dark');
162
+ console.log(theme.primary); // Dark theme primary color
163
+ ```
164
+
165
+ ## Using with React
166
+
167
+ ```tsx
168
+ import { cn } from '@stellar-ui-kit/shared';
169
+
170
+ function Button({ className, variant }) {
171
+ return (
172
+ <button
173
+ className={cn(
174
+ 'px-4 py-2 rounded',
175
+ variant === 'primary' && 'bg-primary text-white',
176
+ className
177
+ )}
178
+ />
179
+ );
180
+ }
181
+ ```
182
+
183
+ ## Peer Dependencies
184
+
185
+ - React ^18.0.0 (for React-specific utilities)
186
+
187
+ ## License
188
+
189
+ MIT © Stellar UI
190
+
191
+ ## Related Packages
192
+
193
+ - [@stellar-ui-kit/web](https://www.npmjs.com/package/@stellar-ui-kit/web) - React web components
@@ -0,0 +1,14 @@
1
+ import { ClassValue } from 'clsx';
2
+ import { LIGHT_THEME } from './tokens/index.js';
3
+
4
+ declare function cn(...inputs: ClassValue[]): string;
5
+
6
+ type ThemeTokens = Record<string, string>;
7
+ type ThemeVariant = 'light' | 'dark' | 'ocean';
8
+ type ColorTokenKey = keyof typeof LIGHT_THEME;
9
+
10
+ declare function getTheme(variant: ThemeVariant): ThemeTokens;
11
+ declare function mergeTheme(base: ThemeTokens, override: Partial<ThemeTokens>): ThemeTokens;
12
+ declare function createCustomTheme(variant: ThemeVariant, customTokens: Partial<ThemeTokens>): ThemeTokens;
13
+
14
+ export { type ColorTokenKey as C, type ThemeTokens as T, createCustomTheme as a, type ThemeVariant as b, cn as c, getTheme as g, mergeTheme as m };
@@ -0,0 +1,14 @@
1
+ import { ClassValue } from 'clsx';
2
+ import { LIGHT_THEME } from './tokens/index.mjs';
3
+
4
+ declare function cn(...inputs: ClassValue[]): string;
5
+
6
+ type ThemeTokens = Record<string, string>;
7
+ type ThemeVariant = 'light' | 'dark' | 'ocean';
8
+ type ColorTokenKey = keyof typeof LIGHT_THEME;
9
+
10
+ declare function getTheme(variant: ThemeVariant): ThemeTokens;
11
+ declare function mergeTheme(base: ThemeTokens, override: Partial<ThemeTokens>): ThemeTokens;
12
+ declare function createCustomTheme(variant: ThemeVariant, customTokens: Partial<ThemeTokens>): ThemeTokens;
13
+
14
+ export { type ColorTokenKey as C, type ThemeTokens as T, createCustomTheme as a, type ThemeVariant as b, cn as c, getTheme as g, mergeTheme as m };
@@ -0,0 +1,5 @@
1
+ export { COMMON_THEME, DARK_THEME, LIGHT_THEME, OCEAN_THEME } from './tokens/index.mjs';
2
+ export { C as ColorTokenKey, T as ThemeTokens, b as ThemeVariant, c as cn, a as createCustomTheme, g as getTheme, m as mergeTheme } from './index-D3vJcNjg.mjs';
3
+ export { default as tailwindPreset } from './tailwind-preset/index.mjs';
4
+ import 'clsx';
5
+ import 'tailwindcss';
@@ -0,0 +1,5 @@
1
+ export { COMMON_THEME, DARK_THEME, LIGHT_THEME, OCEAN_THEME } from './tokens/index.js';
2
+ export { C as ColorTokenKey, T as ThemeTokens, b as ThemeVariant, c as cn, a as createCustomTheme, g as getTheme, m as mergeTheme } from './index-Cjy0YM3M.js';
3
+ export { default as tailwindPreset } from './tailwind-preset/index.js';
4
+ import 'clsx';
5
+ import 'tailwindcss';
package/dist/index.js ADDED
@@ -0,0 +1,134 @@
1
+ 'use strict';
2
+
3
+ var clsx = require('clsx');
4
+ var tailwindMerge = require('tailwind-merge');
5
+
6
+ // src/tokens/colors.ts
7
+ var COMMON_THEME = {
8
+ primary: "#3648ce",
9
+ "primary-soft": "#dbf1ff",
10
+ "primary-text": "#0e415d",
11
+ secondary: "#7f32a9",
12
+ "secondary-soft": "#cec7e6",
13
+ "secondary-text": "#521287",
14
+ success: "#136600",
15
+ "success-soft": "#dcfce7",
16
+ "success-text": "#14572e",
17
+ warning: "#705200",
18
+ "warning-soft": "#fef9c3",
19
+ "warning-text": "#73480c",
20
+ error: "#a80000",
21
+ "error-soft": "#fee2e2",
22
+ "error-text": "#8b0d0d"
23
+ };
24
+ var LIGHT_THEME = {
25
+ background: "#fafafa",
26
+ surface: "#ffffff",
27
+ border: "#CCCCCC",
28
+ foreground: "#000000",
29
+ muted: "#555555"
30
+ };
31
+ var DARK_THEME = {
32
+ background: "#171717",
33
+ surface: "#1f1f1f",
34
+ border: "#3f3f46",
35
+ foreground: "#f1f5f9",
36
+ muted: "#aaaab3"
37
+ };
38
+ var OCEAN_THEME = {
39
+ background: "#0f172a",
40
+ surface: "#1e293b",
41
+ border: "#334155",
42
+ foreground: "#f1f5f9",
43
+ muted: "#cbd5e1"
44
+ };
45
+ function cn(...inputs) {
46
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
47
+ }
48
+
49
+ // src/utils/theme.ts
50
+ function getTheme(variant) {
51
+ let theme = LIGHT_THEME;
52
+ if (variant === "dark") theme = DARK_THEME;
53
+ if (variant === "ocean") theme = OCEAN_THEME;
54
+ return { ...COMMON_THEME, ...theme };
55
+ }
56
+ function mergeTheme(base, override) {
57
+ const merged = { ...base };
58
+ for (const key of Object.keys(override)) {
59
+ const v = override[key];
60
+ if (v !== void 0) merged[key] = v;
61
+ }
62
+ return merged;
63
+ }
64
+ function createCustomTheme(variant, customTokens) {
65
+ const baseTheme = getTheme(variant);
66
+ return mergeTheme(baseTheme, customTokens);
67
+ }
68
+
69
+ // src/tailwind-preset/index.ts
70
+ var stellarPreset = {
71
+ theme: {
72
+ extend: {
73
+ colors: {
74
+ background: "var(--color-background)",
75
+ surface: "var(--color-surface)",
76
+ border: "var(--color-border)",
77
+ foreground: "var(--color-foreground)",
78
+ muted: "var(--color-muted)",
79
+ primary: "var(--color-primary)",
80
+ "primary-soft": "var(--color-primary-soft)",
81
+ "primary-text": "var(--color-primary-text)",
82
+ secondary: "var(--color-secondary)",
83
+ "secondary-soft": "var(--color-secondary-soft)",
84
+ "secondary-text": "var(--color-secondary-text)",
85
+ success: "var(--color-success)",
86
+ "success-soft": "var(--color-success-soft)",
87
+ "success-text": "var(--color-success-text)",
88
+ warning: "var(--color-warning)",
89
+ "warning-soft": "var(--color-warning-soft)",
90
+ "warning-text": "var(--color-warning-text)",
91
+ error: "var(--color-error)",
92
+ "error-soft": "var(--color-error-soft)",
93
+ "error-text": "var(--color-error-text)"
94
+ },
95
+ keyframes: {
96
+ "accordion-down": {
97
+ from: { height: "0" },
98
+ to: { height: "var(--radix-accordion-content-height)" }
99
+ },
100
+ "accordion-up": {
101
+ from: { height: "var(--radix-accordion-content-height)" },
102
+ to: { height: "0" }
103
+ },
104
+ "collapsible-down": {
105
+ from: { height: "0" },
106
+ to: { height: "var(--radix-collapsible-content-height)" }
107
+ },
108
+ "collapsible-up": {
109
+ from: { height: "var(--radix-collapsible-content-height)" },
110
+ to: { height: "0" }
111
+ }
112
+ },
113
+ animation: {
114
+ "accordion-down": "accordion-down 0.2s ease-out",
115
+ "accordion-up": "accordion-up 0.2s ease-out",
116
+ "collapsible-down": "collapsible-down 0.2s ease-out",
117
+ "collapsible-up": "collapsible-up 0.2s ease-out"
118
+ }
119
+ }
120
+ }
121
+ };
122
+ var tailwind_preset_default = stellarPreset;
123
+
124
+ exports.COMMON_THEME = COMMON_THEME;
125
+ exports.DARK_THEME = DARK_THEME;
126
+ exports.LIGHT_THEME = LIGHT_THEME;
127
+ exports.OCEAN_THEME = OCEAN_THEME;
128
+ exports.cn = cn;
129
+ exports.createCustomTheme = createCustomTheme;
130
+ exports.getTheme = getTheme;
131
+ exports.mergeTheme = mergeTheme;
132
+ exports.tailwindPreset = tailwind_preset_default;
133
+ //# sourceMappingURL=index.js.map
134
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tokens/colors.ts","../src/utils/cn.ts","../src/utils/theme.ts","../src/tailwind-preset/index.ts"],"names":["twMerge","clsx"],"mappings":"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","file":"index.js","sourcesContent":["export const COMMON_THEME = {\n primary: '#3648ce',\n 'primary-soft': '#dbf1ff',\n 'primary-text': '#0e415d',\n\n secondary: '#7f32a9',\n 'secondary-soft': '#cec7e6',\n 'secondary-text': '#521287',\n\n success: '#136600',\n 'success-soft': '#dcfce7',\n 'success-text': '#14572e',\n\n warning: '#705200',\n 'warning-soft': '#fef9c3',\n 'warning-text': '#73480c',\n\n error: '#a80000',\n 'error-soft': '#fee2e2',\n 'error-text': '#8b0d0d',\n} as const;\n\nexport const LIGHT_THEME = {\n background: '#fafafa',\n surface: '#ffffff',\n border: '#CCCCCC',\n foreground: '#000000',\n muted: '#555555',\n} as const;\n\nexport const DARK_THEME = {\n background: '#171717',\n surface: '#1f1f1f',\n border: '#3f3f46',\n foreground: '#f1f5f9',\n muted: '#aaaab3',\n} as const;\n\nexport const OCEAN_THEME = {\n background: '#0f172a',\n surface: '#1e293b',\n border: '#334155',\n foreground: '#f1f5f9',\n muted: '#cbd5e1',\n} as const;\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import {\n COMMON_THEME,\n LIGHT_THEME,\n DARK_THEME,\n OCEAN_THEME,\n} from '../tokens/colors';\n\nimport { ThemeVariant, ThemeTokens } from '../types';\n\nexport function getTheme(variant: ThemeVariant): ThemeTokens {\n let theme: ThemeTokens = LIGHT_THEME;\n\n if (variant === 'dark') theme = DARK_THEME;\n if (variant === 'ocean') theme = OCEAN_THEME;\n\n return { ...COMMON_THEME, ...theme };\n}\n\nexport function mergeTheme(\n base: ThemeTokens,\n override: Partial<ThemeTokens>\n): ThemeTokens {\n const merged = { ...base };\n\n for (const key of Object.keys(override) as (keyof ThemeTokens)[]) {\n const v = override[key];\n if (v !== undefined) merged[key] = v;\n }\n\n return merged;\n}\n\nexport function createCustomTheme(\n variant: ThemeVariant,\n customTokens: Partial<ThemeTokens>\n): ThemeTokens {\n const baseTheme = getTheme(variant);\n return mergeTheme(baseTheme, customTokens);\n}\n","import type { Config } from 'tailwindcss';\n\nconst stellarPreset: Partial<Config> = {\n theme: {\n extend: {\n colors: {\n background: 'var(--color-background)',\n surface: 'var(--color-surface)',\n border: 'var(--color-border)',\n foreground: 'var(--color-foreground)',\n muted: 'var(--color-muted)',\n\n primary: 'var(--color-primary)',\n 'primary-soft': 'var(--color-primary-soft)',\n 'primary-text': 'var(--color-primary-text)',\n\n secondary: 'var(--color-secondary)',\n 'secondary-soft': 'var(--color-secondary-soft)',\n 'secondary-text': 'var(--color-secondary-text)',\n\n success: 'var(--color-success)',\n 'success-soft': 'var(--color-success-soft)',\n 'success-text': 'var(--color-success-text)',\n\n warning: 'var(--color-warning)',\n 'warning-soft': 'var(--color-warning-soft)',\n 'warning-text': 'var(--color-warning-text)',\n\n error: 'var(--color-error)',\n 'error-soft': 'var(--color-error-soft)',\n 'error-text': 'var(--color-error-text)',\n },\n keyframes: {\n 'accordion-down': {\n from: { height: '0' },\n to: { height: 'var(--radix-accordion-content-height)' },\n },\n 'accordion-up': {\n from: { height: 'var(--radix-accordion-content-height)' },\n to: { height: '0' },\n },\n 'collapsible-down': {\n from: { height: '0' },\n to: { height: 'var(--radix-collapsible-content-height)' },\n },\n 'collapsible-up': {\n from: { height: 'var(--radix-collapsible-content-height)' },\n to: { height: '0' },\n },\n },\n animation: {\n 'accordion-down': 'accordion-down 0.2s ease-out',\n 'accordion-up': 'accordion-up 0.2s ease-out',\n 'collapsible-down': 'collapsible-down 0.2s ease-out',\n 'collapsible-up': 'collapsible-up 0.2s ease-out',\n },\n },\n },\n};\n\nexport default stellarPreset;\n"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,124 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+
4
+ // src/tokens/colors.ts
5
+ var COMMON_THEME = {
6
+ primary: "#3648ce",
7
+ "primary-soft": "#dbf1ff",
8
+ "primary-text": "#0e415d",
9
+ secondary: "#7f32a9",
10
+ "secondary-soft": "#cec7e6",
11
+ "secondary-text": "#521287",
12
+ success: "#136600",
13
+ "success-soft": "#dcfce7",
14
+ "success-text": "#14572e",
15
+ warning: "#705200",
16
+ "warning-soft": "#fef9c3",
17
+ "warning-text": "#73480c",
18
+ error: "#a80000",
19
+ "error-soft": "#fee2e2",
20
+ "error-text": "#8b0d0d"
21
+ };
22
+ var LIGHT_THEME = {
23
+ background: "#fafafa",
24
+ surface: "#ffffff",
25
+ border: "#CCCCCC",
26
+ foreground: "#000000",
27
+ muted: "#555555"
28
+ };
29
+ var DARK_THEME = {
30
+ background: "#171717",
31
+ surface: "#1f1f1f",
32
+ border: "#3f3f46",
33
+ foreground: "#f1f5f9",
34
+ muted: "#aaaab3"
35
+ };
36
+ var OCEAN_THEME = {
37
+ background: "#0f172a",
38
+ surface: "#1e293b",
39
+ border: "#334155",
40
+ foreground: "#f1f5f9",
41
+ muted: "#cbd5e1"
42
+ };
43
+ function cn(...inputs) {
44
+ return twMerge(clsx(inputs));
45
+ }
46
+
47
+ // src/utils/theme.ts
48
+ function getTheme(variant) {
49
+ let theme = LIGHT_THEME;
50
+ if (variant === "dark") theme = DARK_THEME;
51
+ if (variant === "ocean") theme = OCEAN_THEME;
52
+ return { ...COMMON_THEME, ...theme };
53
+ }
54
+ function mergeTheme(base, override) {
55
+ const merged = { ...base };
56
+ for (const key of Object.keys(override)) {
57
+ const v = override[key];
58
+ if (v !== void 0) merged[key] = v;
59
+ }
60
+ return merged;
61
+ }
62
+ function createCustomTheme(variant, customTokens) {
63
+ const baseTheme = getTheme(variant);
64
+ return mergeTheme(baseTheme, customTokens);
65
+ }
66
+
67
+ // src/tailwind-preset/index.ts
68
+ var stellarPreset = {
69
+ theme: {
70
+ extend: {
71
+ colors: {
72
+ background: "var(--color-background)",
73
+ surface: "var(--color-surface)",
74
+ border: "var(--color-border)",
75
+ foreground: "var(--color-foreground)",
76
+ muted: "var(--color-muted)",
77
+ primary: "var(--color-primary)",
78
+ "primary-soft": "var(--color-primary-soft)",
79
+ "primary-text": "var(--color-primary-text)",
80
+ secondary: "var(--color-secondary)",
81
+ "secondary-soft": "var(--color-secondary-soft)",
82
+ "secondary-text": "var(--color-secondary-text)",
83
+ success: "var(--color-success)",
84
+ "success-soft": "var(--color-success-soft)",
85
+ "success-text": "var(--color-success-text)",
86
+ warning: "var(--color-warning)",
87
+ "warning-soft": "var(--color-warning-soft)",
88
+ "warning-text": "var(--color-warning-text)",
89
+ error: "var(--color-error)",
90
+ "error-soft": "var(--color-error-soft)",
91
+ "error-text": "var(--color-error-text)"
92
+ },
93
+ keyframes: {
94
+ "accordion-down": {
95
+ from: { height: "0" },
96
+ to: { height: "var(--radix-accordion-content-height)" }
97
+ },
98
+ "accordion-up": {
99
+ from: { height: "var(--radix-accordion-content-height)" },
100
+ to: { height: "0" }
101
+ },
102
+ "collapsible-down": {
103
+ from: { height: "0" },
104
+ to: { height: "var(--radix-collapsible-content-height)" }
105
+ },
106
+ "collapsible-up": {
107
+ from: { height: "var(--radix-collapsible-content-height)" },
108
+ to: { height: "0" }
109
+ }
110
+ },
111
+ animation: {
112
+ "accordion-down": "accordion-down 0.2s ease-out",
113
+ "accordion-up": "accordion-up 0.2s ease-out",
114
+ "collapsible-down": "collapsible-down 0.2s ease-out",
115
+ "collapsible-up": "collapsible-up 0.2s ease-out"
116
+ }
117
+ }
118
+ }
119
+ };
120
+ var tailwind_preset_default = stellarPreset;
121
+
122
+ export { COMMON_THEME, DARK_THEME, LIGHT_THEME, OCEAN_THEME, cn, createCustomTheme, getTheme, mergeTheme, tailwind_preset_default as tailwindPreset };
123
+ //# sourceMappingURL=index.mjs.map
124
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tokens/colors.ts","../src/utils/cn.ts","../src/utils/theme.ts","../src/tailwind-preset/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["export const COMMON_THEME = {\n primary: '#3648ce',\n 'primary-soft': '#dbf1ff',\n 'primary-text': '#0e415d',\n\n secondary: '#7f32a9',\n 'secondary-soft': '#cec7e6',\n 'secondary-text': '#521287',\n\n success: '#136600',\n 'success-soft': '#dcfce7',\n 'success-text': '#14572e',\n\n warning: '#705200',\n 'warning-soft': '#fef9c3',\n 'warning-text': '#73480c',\n\n error: '#a80000',\n 'error-soft': '#fee2e2',\n 'error-text': '#8b0d0d',\n} as const;\n\nexport const LIGHT_THEME = {\n background: '#fafafa',\n surface: '#ffffff',\n border: '#CCCCCC',\n foreground: '#000000',\n muted: '#555555',\n} as const;\n\nexport const DARK_THEME = {\n background: '#171717',\n surface: '#1f1f1f',\n border: '#3f3f46',\n foreground: '#f1f5f9',\n muted: '#aaaab3',\n} as const;\n\nexport const OCEAN_THEME = {\n background: '#0f172a',\n surface: '#1e293b',\n border: '#334155',\n foreground: '#f1f5f9',\n muted: '#cbd5e1',\n} as const;\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import {\n COMMON_THEME,\n LIGHT_THEME,\n DARK_THEME,\n OCEAN_THEME,\n} from '../tokens/colors';\n\nimport { ThemeVariant, ThemeTokens } from '../types';\n\nexport function getTheme(variant: ThemeVariant): ThemeTokens {\n let theme: ThemeTokens = LIGHT_THEME;\n\n if (variant === 'dark') theme = DARK_THEME;\n if (variant === 'ocean') theme = OCEAN_THEME;\n\n return { ...COMMON_THEME, ...theme };\n}\n\nexport function mergeTheme(\n base: ThemeTokens,\n override: Partial<ThemeTokens>\n): ThemeTokens {\n const merged = { ...base };\n\n for (const key of Object.keys(override) as (keyof ThemeTokens)[]) {\n const v = override[key];\n if (v !== undefined) merged[key] = v;\n }\n\n return merged;\n}\n\nexport function createCustomTheme(\n variant: ThemeVariant,\n customTokens: Partial<ThemeTokens>\n): ThemeTokens {\n const baseTheme = getTheme(variant);\n return mergeTheme(baseTheme, customTokens);\n}\n","import type { Config } from 'tailwindcss';\n\nconst stellarPreset: Partial<Config> = {\n theme: {\n extend: {\n colors: {\n background: 'var(--color-background)',\n surface: 'var(--color-surface)',\n border: 'var(--color-border)',\n foreground: 'var(--color-foreground)',\n muted: 'var(--color-muted)',\n\n primary: 'var(--color-primary)',\n 'primary-soft': 'var(--color-primary-soft)',\n 'primary-text': 'var(--color-primary-text)',\n\n secondary: 'var(--color-secondary)',\n 'secondary-soft': 'var(--color-secondary-soft)',\n 'secondary-text': 'var(--color-secondary-text)',\n\n success: 'var(--color-success)',\n 'success-soft': 'var(--color-success-soft)',\n 'success-text': 'var(--color-success-text)',\n\n warning: 'var(--color-warning)',\n 'warning-soft': 'var(--color-warning-soft)',\n 'warning-text': 'var(--color-warning-text)',\n\n error: 'var(--color-error)',\n 'error-soft': 'var(--color-error-soft)',\n 'error-text': 'var(--color-error-text)',\n },\n keyframes: {\n 'accordion-down': {\n from: { height: '0' },\n to: { height: 'var(--radix-accordion-content-height)' },\n },\n 'accordion-up': {\n from: { height: 'var(--radix-accordion-content-height)' },\n to: { height: '0' },\n },\n 'collapsible-down': {\n from: { height: '0' },\n to: { height: 'var(--radix-collapsible-content-height)' },\n },\n 'collapsible-up': {\n from: { height: 'var(--radix-collapsible-content-height)' },\n to: { height: '0' },\n },\n },\n animation: {\n 'accordion-down': 'accordion-down 0.2s ease-out',\n 'accordion-up': 'accordion-up 0.2s ease-out',\n 'collapsible-down': 'collapsible-down 0.2s ease-out',\n 'collapsible-up': 'collapsible-up 0.2s ease-out',\n },\n },\n },\n};\n\nexport default stellarPreset;\n"]}
@@ -0,0 +1,5 @@
1
+ import { Config } from 'tailwindcss';
2
+
3
+ declare const stellarPreset: Partial<Config>;
4
+
5
+ export { stellarPreset as default };
@@ -0,0 +1,5 @@
1
+ import { Config } from 'tailwindcss';
2
+
3
+ declare const stellarPreset: Partial<Config>;
4
+
5
+ export { stellarPreset as default };
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+
3
+ // src/tailwind-preset/index.ts
4
+ var stellarPreset = {
5
+ theme: {
6
+ extend: {
7
+ colors: {
8
+ background: "var(--color-background)",
9
+ surface: "var(--color-surface)",
10
+ border: "var(--color-border)",
11
+ foreground: "var(--color-foreground)",
12
+ muted: "var(--color-muted)",
13
+ primary: "var(--color-primary)",
14
+ "primary-soft": "var(--color-primary-soft)",
15
+ "primary-text": "var(--color-primary-text)",
16
+ secondary: "var(--color-secondary)",
17
+ "secondary-soft": "var(--color-secondary-soft)",
18
+ "secondary-text": "var(--color-secondary-text)",
19
+ success: "var(--color-success)",
20
+ "success-soft": "var(--color-success-soft)",
21
+ "success-text": "var(--color-success-text)",
22
+ warning: "var(--color-warning)",
23
+ "warning-soft": "var(--color-warning-soft)",
24
+ "warning-text": "var(--color-warning-text)",
25
+ error: "var(--color-error)",
26
+ "error-soft": "var(--color-error-soft)",
27
+ "error-text": "var(--color-error-text)"
28
+ },
29
+ keyframes: {
30
+ "accordion-down": {
31
+ from: { height: "0" },
32
+ to: { height: "var(--radix-accordion-content-height)" }
33
+ },
34
+ "accordion-up": {
35
+ from: { height: "var(--radix-accordion-content-height)" },
36
+ to: { height: "0" }
37
+ },
38
+ "collapsible-down": {
39
+ from: { height: "0" },
40
+ to: { height: "var(--radix-collapsible-content-height)" }
41
+ },
42
+ "collapsible-up": {
43
+ from: { height: "var(--radix-collapsible-content-height)" },
44
+ to: { height: "0" }
45
+ }
46
+ },
47
+ animation: {
48
+ "accordion-down": "accordion-down 0.2s ease-out",
49
+ "accordion-up": "accordion-up 0.2s ease-out",
50
+ "collapsible-down": "collapsible-down 0.2s ease-out",
51
+ "collapsible-up": "collapsible-up 0.2s ease-out"
52
+ }
53
+ }
54
+ }
55
+ };
56
+ var tailwind_preset_default = stellarPreset;
57
+
58
+ module.exports = tailwind_preset_default;
59
+ //# sourceMappingURL=index.js.map
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/tailwind-preset/index.ts"],"names":[],"mappings":";;;AAEA,IAAM,aAAA,GAAiC;AAAA,EACrC,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,yBAAA;AAAA,QACZ,OAAA,EAAS,sBAAA;AAAA,QACT,MAAA,EAAQ,qBAAA;AAAA,QACR,UAAA,EAAY,yBAAA;AAAA,QACZ,KAAA,EAAO,oBAAA;AAAA,QAEP,OAAA,EAAS,sBAAA;AAAA,QACT,cAAA,EAAgB,2BAAA;AAAA,QAChB,cAAA,EAAgB,2BAAA;AAAA,QAEhB,SAAA,EAAW,wBAAA;AAAA,QACX,gBAAA,EAAkB,6BAAA;AAAA,QAClB,gBAAA,EAAkB,6BAAA;AAAA,QAElB,OAAA,EAAS,sBAAA;AAAA,QACT,cAAA,EAAgB,2BAAA;AAAA,QAChB,cAAA,EAAgB,2BAAA;AAAA,QAEhB,OAAA,EAAS,sBAAA;AAAA,QACT,cAAA,EAAgB,2BAAA;AAAA,QAChB,cAAA,EAAgB,2BAAA;AAAA,QAEhB,KAAA,EAAO,oBAAA;AAAA,QACP,YAAA,EAAc,yBAAA;AAAA,QACd,YAAA,EAAc;AAAA,OAChB;AAAA,MACA,SAAA,EAAW;AAAA,QACT,gBAAA,EAAkB;AAAA,UAChB,IAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAI;AAAA,UACpB,EAAA,EAAI,EAAE,MAAA,EAAQ,uCAAA;AAAwC,SACxD;AAAA,QACA,cAAA,EAAgB;AAAA,UACd,IAAA,EAAM,EAAE,MAAA,EAAQ,uCAAA,EAAwC;AAAA,UACxD,EAAA,EAAI,EAAE,MAAA,EAAQ,GAAA;AAAI,SACpB;AAAA,QACA,kBAAA,EAAoB;AAAA,UAClB,IAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAI;AAAA,UACpB,EAAA,EAAI,EAAE,MAAA,EAAQ,yCAAA;AAA0C,SAC1D;AAAA,QACA,gBAAA,EAAkB;AAAA,UAChB,IAAA,EAAM,EAAE,MAAA,EAAQ,yCAAA,EAA0C;AAAA,UAC1D,EAAA,EAAI,EAAE,MAAA,EAAQ,GAAA;AAAI;AACpB,OACF;AAAA,MACA,SAAA,EAAW;AAAA,QACT,gBAAA,EAAkB,8BAAA;AAAA,QAClB,cAAA,EAAgB,4BAAA;AAAA,QAChB,kBAAA,EAAoB,gCAAA;AAAA,QACpB,gBAAA,EAAkB;AAAA;AACpB;AACF;AAEJ,CAAA;AAEA,IAAO,uBAAA,GAAQ","file":"index.js","sourcesContent":["import type { Config } from 'tailwindcss';\n\nconst stellarPreset: Partial<Config> = {\n theme: {\n extend: {\n colors: {\n background: 'var(--color-background)',\n surface: 'var(--color-surface)',\n border: 'var(--color-border)',\n foreground: 'var(--color-foreground)',\n muted: 'var(--color-muted)',\n\n primary: 'var(--color-primary)',\n 'primary-soft': 'var(--color-primary-soft)',\n 'primary-text': 'var(--color-primary-text)',\n\n secondary: 'var(--color-secondary)',\n 'secondary-soft': 'var(--color-secondary-soft)',\n 'secondary-text': 'var(--color-secondary-text)',\n\n success: 'var(--color-success)',\n 'success-soft': 'var(--color-success-soft)',\n 'success-text': 'var(--color-success-text)',\n\n warning: 'var(--color-warning)',\n 'warning-soft': 'var(--color-warning-soft)',\n 'warning-text': 'var(--color-warning-text)',\n\n error: 'var(--color-error)',\n 'error-soft': 'var(--color-error-soft)',\n 'error-text': 'var(--color-error-text)',\n },\n keyframes: {\n 'accordion-down': {\n from: { height: '0' },\n to: { height: 'var(--radix-accordion-content-height)' },\n },\n 'accordion-up': {\n from: { height: 'var(--radix-accordion-content-height)' },\n to: { height: '0' },\n },\n 'collapsible-down': {\n from: { height: '0' },\n to: { height: 'var(--radix-collapsible-content-height)' },\n },\n 'collapsible-up': {\n from: { height: 'var(--radix-collapsible-content-height)' },\n to: { height: '0' },\n },\n },\n animation: {\n 'accordion-down': 'accordion-down 0.2s ease-out',\n 'accordion-up': 'accordion-up 0.2s ease-out',\n 'collapsible-down': 'collapsible-down 0.2s ease-out',\n 'collapsible-up': 'collapsible-up 0.2s ease-out',\n },\n },\n },\n};\n\nexport default stellarPreset;\n"]}
@@ -0,0 +1,58 @@
1
+ // src/tailwind-preset/index.ts
2
+ var stellarPreset = {
3
+ theme: {
4
+ extend: {
5
+ colors: {
6
+ background: "var(--color-background)",
7
+ surface: "var(--color-surface)",
8
+ border: "var(--color-border)",
9
+ foreground: "var(--color-foreground)",
10
+ muted: "var(--color-muted)",
11
+ primary: "var(--color-primary)",
12
+ "primary-soft": "var(--color-primary-soft)",
13
+ "primary-text": "var(--color-primary-text)",
14
+ secondary: "var(--color-secondary)",
15
+ "secondary-soft": "var(--color-secondary-soft)",
16
+ "secondary-text": "var(--color-secondary-text)",
17
+ success: "var(--color-success)",
18
+ "success-soft": "var(--color-success-soft)",
19
+ "success-text": "var(--color-success-text)",
20
+ warning: "var(--color-warning)",
21
+ "warning-soft": "var(--color-warning-soft)",
22
+ "warning-text": "var(--color-warning-text)",
23
+ error: "var(--color-error)",
24
+ "error-soft": "var(--color-error-soft)",
25
+ "error-text": "var(--color-error-text)"
26
+ },
27
+ keyframes: {
28
+ "accordion-down": {
29
+ from: { height: "0" },
30
+ to: { height: "var(--radix-accordion-content-height)" }
31
+ },
32
+ "accordion-up": {
33
+ from: { height: "var(--radix-accordion-content-height)" },
34
+ to: { height: "0" }
35
+ },
36
+ "collapsible-down": {
37
+ from: { height: "0" },
38
+ to: { height: "var(--radix-collapsible-content-height)" }
39
+ },
40
+ "collapsible-up": {
41
+ from: { height: "var(--radix-collapsible-content-height)" },
42
+ to: { height: "0" }
43
+ }
44
+ },
45
+ animation: {
46
+ "accordion-down": "accordion-down 0.2s ease-out",
47
+ "accordion-up": "accordion-up 0.2s ease-out",
48
+ "collapsible-down": "collapsible-down 0.2s ease-out",
49
+ "collapsible-up": "collapsible-up 0.2s ease-out"
50
+ }
51
+ }
52
+ }
53
+ };
54
+ var tailwind_preset_default = stellarPreset;
55
+
56
+ export { tailwind_preset_default as default };
57
+ //# sourceMappingURL=index.mjs.map
58
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/tailwind-preset/index.ts"],"names":[],"mappings":";AAEA,IAAM,aAAA,GAAiC;AAAA,EACrC,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,yBAAA;AAAA,QACZ,OAAA,EAAS,sBAAA;AAAA,QACT,MAAA,EAAQ,qBAAA;AAAA,QACR,UAAA,EAAY,yBAAA;AAAA,QACZ,KAAA,EAAO,oBAAA;AAAA,QAEP,OAAA,EAAS,sBAAA;AAAA,QACT,cAAA,EAAgB,2BAAA;AAAA,QAChB,cAAA,EAAgB,2BAAA;AAAA,QAEhB,SAAA,EAAW,wBAAA;AAAA,QACX,gBAAA,EAAkB,6BAAA;AAAA,QAClB,gBAAA,EAAkB,6BAAA;AAAA,QAElB,OAAA,EAAS,sBAAA;AAAA,QACT,cAAA,EAAgB,2BAAA;AAAA,QAChB,cAAA,EAAgB,2BAAA;AAAA,QAEhB,OAAA,EAAS,sBAAA;AAAA,QACT,cAAA,EAAgB,2BAAA;AAAA,QAChB,cAAA,EAAgB,2BAAA;AAAA,QAEhB,KAAA,EAAO,oBAAA;AAAA,QACP,YAAA,EAAc,yBAAA;AAAA,QACd,YAAA,EAAc;AAAA,OAChB;AAAA,MACA,SAAA,EAAW;AAAA,QACT,gBAAA,EAAkB;AAAA,UAChB,IAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAI;AAAA,UACpB,EAAA,EAAI,EAAE,MAAA,EAAQ,uCAAA;AAAwC,SACxD;AAAA,QACA,cAAA,EAAgB;AAAA,UACd,IAAA,EAAM,EAAE,MAAA,EAAQ,uCAAA,EAAwC;AAAA,UACxD,EAAA,EAAI,EAAE,MAAA,EAAQ,GAAA;AAAI,SACpB;AAAA,QACA,kBAAA,EAAoB;AAAA,UAClB,IAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAI;AAAA,UACpB,EAAA,EAAI,EAAE,MAAA,EAAQ,yCAAA;AAA0C,SAC1D;AAAA,QACA,gBAAA,EAAkB;AAAA,UAChB,IAAA,EAAM,EAAE,MAAA,EAAQ,yCAAA,EAA0C;AAAA,UAC1D,EAAA,EAAI,EAAE,MAAA,EAAQ,GAAA;AAAI;AACpB,OACF;AAAA,MACA,SAAA,EAAW;AAAA,QACT,gBAAA,EAAkB,8BAAA;AAAA,QAClB,cAAA,EAAgB,4BAAA;AAAA,QAChB,kBAAA,EAAoB,gCAAA;AAAA,QACpB,gBAAA,EAAkB;AAAA;AACpB;AACF;AAEJ,CAAA;AAEA,IAAO,uBAAA,GAAQ","file":"index.mjs","sourcesContent":["import type { Config } from 'tailwindcss';\n\nconst stellarPreset: Partial<Config> = {\n theme: {\n extend: {\n colors: {\n background: 'var(--color-background)',\n surface: 'var(--color-surface)',\n border: 'var(--color-border)',\n foreground: 'var(--color-foreground)',\n muted: 'var(--color-muted)',\n\n primary: 'var(--color-primary)',\n 'primary-soft': 'var(--color-primary-soft)',\n 'primary-text': 'var(--color-primary-text)',\n\n secondary: 'var(--color-secondary)',\n 'secondary-soft': 'var(--color-secondary-soft)',\n 'secondary-text': 'var(--color-secondary-text)',\n\n success: 'var(--color-success)',\n 'success-soft': 'var(--color-success-soft)',\n 'success-text': 'var(--color-success-text)',\n\n warning: 'var(--color-warning)',\n 'warning-soft': 'var(--color-warning-soft)',\n 'warning-text': 'var(--color-warning-text)',\n\n error: 'var(--color-error)',\n 'error-soft': 'var(--color-error-soft)',\n 'error-text': 'var(--color-error-text)',\n },\n keyframes: {\n 'accordion-down': {\n from: { height: '0' },\n to: { height: 'var(--radix-accordion-content-height)' },\n },\n 'accordion-up': {\n from: { height: 'var(--radix-accordion-content-height)' },\n to: { height: '0' },\n },\n 'collapsible-down': {\n from: { height: '0' },\n to: { height: 'var(--radix-collapsible-content-height)' },\n },\n 'collapsible-up': {\n from: { height: 'var(--radix-collapsible-content-height)' },\n to: { height: '0' },\n },\n },\n animation: {\n 'accordion-down': 'accordion-down 0.2s ease-out',\n 'accordion-up': 'accordion-up 0.2s ease-out',\n 'collapsible-down': 'collapsible-down 0.2s ease-out',\n 'collapsible-up': 'collapsible-up 0.2s ease-out',\n },\n },\n },\n};\n\nexport default stellarPreset;\n"]}
@@ -0,0 +1,40 @@
1
+ declare const COMMON_THEME: {
2
+ readonly primary: "#3648ce";
3
+ readonly 'primary-soft': "#dbf1ff";
4
+ readonly 'primary-text': "#0e415d";
5
+ readonly secondary: "#7f32a9";
6
+ readonly 'secondary-soft': "#cec7e6";
7
+ readonly 'secondary-text': "#521287";
8
+ readonly success: "#136600";
9
+ readonly 'success-soft': "#dcfce7";
10
+ readonly 'success-text': "#14572e";
11
+ readonly warning: "#705200";
12
+ readonly 'warning-soft': "#fef9c3";
13
+ readonly 'warning-text': "#73480c";
14
+ readonly error: "#a80000";
15
+ readonly 'error-soft': "#fee2e2";
16
+ readonly 'error-text': "#8b0d0d";
17
+ };
18
+ declare const LIGHT_THEME: {
19
+ readonly background: "#fafafa";
20
+ readonly surface: "#ffffff";
21
+ readonly border: "#CCCCCC";
22
+ readonly foreground: "#000000";
23
+ readonly muted: "#555555";
24
+ };
25
+ declare const DARK_THEME: {
26
+ readonly background: "#171717";
27
+ readonly surface: "#1f1f1f";
28
+ readonly border: "#3f3f46";
29
+ readonly foreground: "#f1f5f9";
30
+ readonly muted: "#aaaab3";
31
+ };
32
+ declare const OCEAN_THEME: {
33
+ readonly background: "#0f172a";
34
+ readonly surface: "#1e293b";
35
+ readonly border: "#334155";
36
+ readonly foreground: "#f1f5f9";
37
+ readonly muted: "#cbd5e1";
38
+ };
39
+
40
+ export { COMMON_THEME, DARK_THEME, LIGHT_THEME, OCEAN_THEME };
@@ -0,0 +1,40 @@
1
+ declare const COMMON_THEME: {
2
+ readonly primary: "#3648ce";
3
+ readonly 'primary-soft': "#dbf1ff";
4
+ readonly 'primary-text': "#0e415d";
5
+ readonly secondary: "#7f32a9";
6
+ readonly 'secondary-soft': "#cec7e6";
7
+ readonly 'secondary-text': "#521287";
8
+ readonly success: "#136600";
9
+ readonly 'success-soft': "#dcfce7";
10
+ readonly 'success-text': "#14572e";
11
+ readonly warning: "#705200";
12
+ readonly 'warning-soft': "#fef9c3";
13
+ readonly 'warning-text': "#73480c";
14
+ readonly error: "#a80000";
15
+ readonly 'error-soft': "#fee2e2";
16
+ readonly 'error-text': "#8b0d0d";
17
+ };
18
+ declare const LIGHT_THEME: {
19
+ readonly background: "#fafafa";
20
+ readonly surface: "#ffffff";
21
+ readonly border: "#CCCCCC";
22
+ readonly foreground: "#000000";
23
+ readonly muted: "#555555";
24
+ };
25
+ declare const DARK_THEME: {
26
+ readonly background: "#171717";
27
+ readonly surface: "#1f1f1f";
28
+ readonly border: "#3f3f46";
29
+ readonly foreground: "#f1f5f9";
30
+ readonly muted: "#aaaab3";
31
+ };
32
+ declare const OCEAN_THEME: {
33
+ readonly background: "#0f172a";
34
+ readonly surface: "#1e293b";
35
+ readonly border: "#334155";
36
+ readonly foreground: "#f1f5f9";
37
+ readonly muted: "#cbd5e1";
38
+ };
39
+
40
+ export { COMMON_THEME, DARK_THEME, LIGHT_THEME, OCEAN_THEME };
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ // src/tokens/colors.ts
4
+ var COMMON_THEME = {
5
+ primary: "#3648ce",
6
+ "primary-soft": "#dbf1ff",
7
+ "primary-text": "#0e415d",
8
+ secondary: "#7f32a9",
9
+ "secondary-soft": "#cec7e6",
10
+ "secondary-text": "#521287",
11
+ success: "#136600",
12
+ "success-soft": "#dcfce7",
13
+ "success-text": "#14572e",
14
+ warning: "#705200",
15
+ "warning-soft": "#fef9c3",
16
+ "warning-text": "#73480c",
17
+ error: "#a80000",
18
+ "error-soft": "#fee2e2",
19
+ "error-text": "#8b0d0d"
20
+ };
21
+ var LIGHT_THEME = {
22
+ background: "#fafafa",
23
+ surface: "#ffffff",
24
+ border: "#CCCCCC",
25
+ foreground: "#000000",
26
+ muted: "#555555"
27
+ };
28
+ var DARK_THEME = {
29
+ background: "#171717",
30
+ surface: "#1f1f1f",
31
+ border: "#3f3f46",
32
+ foreground: "#f1f5f9",
33
+ muted: "#aaaab3"
34
+ };
35
+ var OCEAN_THEME = {
36
+ background: "#0f172a",
37
+ surface: "#1e293b",
38
+ border: "#334155",
39
+ foreground: "#f1f5f9",
40
+ muted: "#cbd5e1"
41
+ };
42
+
43
+ exports.COMMON_THEME = COMMON_THEME;
44
+ exports.DARK_THEME = DARK_THEME;
45
+ exports.LIGHT_THEME = LIGHT_THEME;
46
+ exports.OCEAN_THEME = OCEAN_THEME;
47
+ //# sourceMappingURL=index.js.map
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/tokens/colors.ts"],"names":[],"mappings":";;;AAAO,IAAM,YAAA,GAAe;AAAA,EAC1B,OAAA,EAAS,SAAA;AAAA,EACT,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAEhB,SAAA,EAAW,SAAA;AAAA,EACX,gBAAA,EAAkB,SAAA;AAAA,EAClB,gBAAA,EAAkB,SAAA;AAAA,EAElB,OAAA,EAAS,SAAA;AAAA,EACT,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAEhB,OAAA,EAAS,SAAA;AAAA,EACT,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAEhB,KAAA,EAAO,SAAA;AAAA,EACP,YAAA,EAAc,SAAA;AAAA,EACd,YAAA,EAAc;AAChB;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT","file":"index.js","sourcesContent":["export const COMMON_THEME = {\n primary: '#3648ce',\n 'primary-soft': '#dbf1ff',\n 'primary-text': '#0e415d',\n\n secondary: '#7f32a9',\n 'secondary-soft': '#cec7e6',\n 'secondary-text': '#521287',\n\n success: '#136600',\n 'success-soft': '#dcfce7',\n 'success-text': '#14572e',\n\n warning: '#705200',\n 'warning-soft': '#fef9c3',\n 'warning-text': '#73480c',\n\n error: '#a80000',\n 'error-soft': '#fee2e2',\n 'error-text': '#8b0d0d',\n} as const;\n\nexport const LIGHT_THEME = {\n background: '#fafafa',\n surface: '#ffffff',\n border: '#CCCCCC',\n foreground: '#000000',\n muted: '#555555',\n} as const;\n\nexport const DARK_THEME = {\n background: '#171717',\n surface: '#1f1f1f',\n border: '#3f3f46',\n foreground: '#f1f5f9',\n muted: '#aaaab3',\n} as const;\n\nexport const OCEAN_THEME = {\n background: '#0f172a',\n surface: '#1e293b',\n border: '#334155',\n foreground: '#f1f5f9',\n muted: '#cbd5e1',\n} as const;\n"]}
@@ -0,0 +1,43 @@
1
+ // src/tokens/colors.ts
2
+ var COMMON_THEME = {
3
+ primary: "#3648ce",
4
+ "primary-soft": "#dbf1ff",
5
+ "primary-text": "#0e415d",
6
+ secondary: "#7f32a9",
7
+ "secondary-soft": "#cec7e6",
8
+ "secondary-text": "#521287",
9
+ success: "#136600",
10
+ "success-soft": "#dcfce7",
11
+ "success-text": "#14572e",
12
+ warning: "#705200",
13
+ "warning-soft": "#fef9c3",
14
+ "warning-text": "#73480c",
15
+ error: "#a80000",
16
+ "error-soft": "#fee2e2",
17
+ "error-text": "#8b0d0d"
18
+ };
19
+ var LIGHT_THEME = {
20
+ background: "#fafafa",
21
+ surface: "#ffffff",
22
+ border: "#CCCCCC",
23
+ foreground: "#000000",
24
+ muted: "#555555"
25
+ };
26
+ var DARK_THEME = {
27
+ background: "#171717",
28
+ surface: "#1f1f1f",
29
+ border: "#3f3f46",
30
+ foreground: "#f1f5f9",
31
+ muted: "#aaaab3"
32
+ };
33
+ var OCEAN_THEME = {
34
+ background: "#0f172a",
35
+ surface: "#1e293b",
36
+ border: "#334155",
37
+ foreground: "#f1f5f9",
38
+ muted: "#cbd5e1"
39
+ };
40
+
41
+ export { COMMON_THEME, DARK_THEME, LIGHT_THEME, OCEAN_THEME };
42
+ //# sourceMappingURL=index.mjs.map
43
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/tokens/colors.ts"],"names":[],"mappings":";AAAO,IAAM,YAAA,GAAe;AAAA,EAC1B,OAAA,EAAS,SAAA;AAAA,EACT,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAEhB,SAAA,EAAW,SAAA;AAAA,EACX,gBAAA,EAAkB,SAAA;AAAA,EAClB,gBAAA,EAAkB,SAAA;AAAA,EAElB,OAAA,EAAS,SAAA;AAAA,EACT,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAEhB,OAAA,EAAS,SAAA;AAAA,EACT,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAEhB,KAAA,EAAO,SAAA;AAAA,EACP,YAAA,EAAc,SAAA;AAAA,EACd,YAAA,EAAc;AAChB;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT","file":"index.mjs","sourcesContent":["export const COMMON_THEME = {\n primary: '#3648ce',\n 'primary-soft': '#dbf1ff',\n 'primary-text': '#0e415d',\n\n secondary: '#7f32a9',\n 'secondary-soft': '#cec7e6',\n 'secondary-text': '#521287',\n\n success: '#136600',\n 'success-soft': '#dcfce7',\n 'success-text': '#14572e',\n\n warning: '#705200',\n 'warning-soft': '#fef9c3',\n 'warning-text': '#73480c',\n\n error: '#a80000',\n 'error-soft': '#fee2e2',\n 'error-text': '#8b0d0d',\n} as const;\n\nexport const LIGHT_THEME = {\n background: '#fafafa',\n surface: '#ffffff',\n border: '#CCCCCC',\n foreground: '#000000',\n muted: '#555555',\n} as const;\n\nexport const DARK_THEME = {\n background: '#171717',\n surface: '#1f1f1f',\n border: '#3f3f46',\n foreground: '#f1f5f9',\n muted: '#aaaab3',\n} as const;\n\nexport const OCEAN_THEME = {\n background: '#0f172a',\n surface: '#1e293b',\n border: '#334155',\n foreground: '#f1f5f9',\n muted: '#cbd5e1',\n} as const;\n"]}
@@ -0,0 +1,3 @@
1
+ export { c as cn, a as createCustomTheme, g as getTheme, m as mergeTheme } from '../index-D3vJcNjg.mjs';
2
+ import 'clsx';
3
+ import '../tokens/index.mjs';
@@ -0,0 +1,3 @@
1
+ export { c as cn, a as createCustomTheme, g as getTheme, m as mergeTheme } from '../index-Cjy0YM3M.js';
2
+ import 'clsx';
3
+ import '../tokens/index.js';
@@ -0,0 +1,76 @@
1
+ 'use strict';
2
+
3
+ var clsx = require('clsx');
4
+ var tailwindMerge = require('tailwind-merge');
5
+
6
+ // src/utils/cn.ts
7
+ function cn(...inputs) {
8
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
9
+ }
10
+
11
+ // src/tokens/colors.ts
12
+ var COMMON_THEME = {
13
+ primary: "#3648ce",
14
+ "primary-soft": "#dbf1ff",
15
+ "primary-text": "#0e415d",
16
+ secondary: "#7f32a9",
17
+ "secondary-soft": "#cec7e6",
18
+ "secondary-text": "#521287",
19
+ success: "#136600",
20
+ "success-soft": "#dcfce7",
21
+ "success-text": "#14572e",
22
+ warning: "#705200",
23
+ "warning-soft": "#fef9c3",
24
+ "warning-text": "#73480c",
25
+ error: "#a80000",
26
+ "error-soft": "#fee2e2",
27
+ "error-text": "#8b0d0d"
28
+ };
29
+ var LIGHT_THEME = {
30
+ background: "#fafafa",
31
+ surface: "#ffffff",
32
+ border: "#CCCCCC",
33
+ foreground: "#000000",
34
+ muted: "#555555"
35
+ };
36
+ var DARK_THEME = {
37
+ background: "#171717",
38
+ surface: "#1f1f1f",
39
+ border: "#3f3f46",
40
+ foreground: "#f1f5f9",
41
+ muted: "#aaaab3"
42
+ };
43
+ var OCEAN_THEME = {
44
+ background: "#0f172a",
45
+ surface: "#1e293b",
46
+ border: "#334155",
47
+ foreground: "#f1f5f9",
48
+ muted: "#cbd5e1"
49
+ };
50
+
51
+ // src/utils/theme.ts
52
+ function getTheme(variant) {
53
+ let theme = LIGHT_THEME;
54
+ if (variant === "dark") theme = DARK_THEME;
55
+ if (variant === "ocean") theme = OCEAN_THEME;
56
+ return { ...COMMON_THEME, ...theme };
57
+ }
58
+ function mergeTheme(base, override) {
59
+ const merged = { ...base };
60
+ for (const key of Object.keys(override)) {
61
+ const v = override[key];
62
+ if (v !== void 0) merged[key] = v;
63
+ }
64
+ return merged;
65
+ }
66
+ function createCustomTheme(variant, customTokens) {
67
+ const baseTheme = getTheme(variant);
68
+ return mergeTheme(baseTheme, customTokens);
69
+ }
70
+
71
+ exports.cn = cn;
72
+ exports.createCustomTheme = createCustomTheme;
73
+ exports.getTheme = getTheme;
74
+ exports.mergeTheme = mergeTheme;
75
+ //# sourceMappingURL=index.js.map
76
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/tokens/colors.ts","../../src/utils/theme.ts"],"names":["twMerge","clsx"],"mappings":";;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAOA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;;;ACLO,IAAM,YAAA,GAAe;AAAA,EAC1B,OAAA,EAAS,SAAA;AAAA,EACT,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAEhB,SAAA,EAAW,SAAA;AAAA,EACX,gBAAA,EAAkB,SAAA;AAAA,EAClB,gBAAA,EAAkB,SAAA;AAAA,EAElB,OAAA,EAAS,SAAA;AAAA,EACT,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAEhB,OAAA,EAAS,SAAA;AAAA,EACT,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAEhB,KAAA,EAAO,SAAA;AAAA,EACP,YAAA,EAAc,SAAA;AAAA,EACd,YAAA,EAAc;AAChB,CAAA;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;;;ACnCO,SAAS,SAAS,OAAA,EAAoC;AAC3D,EAAA,IAAI,KAAA,GAAqB,WAAA;AAEzB,EAAA,IAAI,OAAA,KAAY,QAAQ,KAAA,GAAQ,UAAA;AAChC,EAAA,IAAI,OAAA,KAAY,SAAS,KAAA,GAAQ,WAAA;AAEjC,EAAA,OAAO,EAAE,GAAG,YAAA,EAAc,GAAG,KAAA,EAAM;AACrC;AAEO,SAAS,UAAA,CACd,MACA,QAAA,EACa;AACb,EAAA,MAAM,MAAA,GAAS,EAAE,GAAG,IAAA,EAAK;AAEzB,EAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,EAA4B;AAChE,IAAA,MAAM,CAAA,GAAI,SAAS,GAAG,CAAA;AACtB,IAAA,IAAI,CAAA,KAAM,MAAA,EAAW,MAAA,CAAO,GAAG,CAAA,GAAI,CAAA;AAAA,EACrC;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,iBAAA,CACd,SACA,YAAA,EACa;AACb,EAAA,MAAM,SAAA,GAAY,SAAS,OAAO,CAAA;AAClC,EAAA,OAAO,UAAA,CAAW,WAAW,YAAY,CAAA;AAC3C","file":"index.js","sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","export const COMMON_THEME = {\n primary: '#3648ce',\n 'primary-soft': '#dbf1ff',\n 'primary-text': '#0e415d',\n\n secondary: '#7f32a9',\n 'secondary-soft': '#cec7e6',\n 'secondary-text': '#521287',\n\n success: '#136600',\n 'success-soft': '#dcfce7',\n 'success-text': '#14572e',\n\n warning: '#705200',\n 'warning-soft': '#fef9c3',\n 'warning-text': '#73480c',\n\n error: '#a80000',\n 'error-soft': '#fee2e2',\n 'error-text': '#8b0d0d',\n} as const;\n\nexport const LIGHT_THEME = {\n background: '#fafafa',\n surface: '#ffffff',\n border: '#CCCCCC',\n foreground: '#000000',\n muted: '#555555',\n} as const;\n\nexport const DARK_THEME = {\n background: '#171717',\n surface: '#1f1f1f',\n border: '#3f3f46',\n foreground: '#f1f5f9',\n muted: '#aaaab3',\n} as const;\n\nexport const OCEAN_THEME = {\n background: '#0f172a',\n surface: '#1e293b',\n border: '#334155',\n foreground: '#f1f5f9',\n muted: '#cbd5e1',\n} as const;\n","import {\n COMMON_THEME,\n LIGHT_THEME,\n DARK_THEME,\n OCEAN_THEME,\n} from '../tokens/colors';\n\nimport { ThemeVariant, ThemeTokens } from '../types';\n\nexport function getTheme(variant: ThemeVariant): ThemeTokens {\n let theme: ThemeTokens = LIGHT_THEME;\n\n if (variant === 'dark') theme = DARK_THEME;\n if (variant === 'ocean') theme = OCEAN_THEME;\n\n return { ...COMMON_THEME, ...theme };\n}\n\nexport function mergeTheme(\n base: ThemeTokens,\n override: Partial<ThemeTokens>\n): ThemeTokens {\n const merged = { ...base };\n\n for (const key of Object.keys(override) as (keyof ThemeTokens)[]) {\n const v = override[key];\n if (v !== undefined) merged[key] = v;\n }\n\n return merged;\n}\n\nexport function createCustomTheme(\n variant: ThemeVariant,\n customTokens: Partial<ThemeTokens>\n): ThemeTokens {\n const baseTheme = getTheme(variant);\n return mergeTheme(baseTheme, customTokens);\n}\n"]}
@@ -0,0 +1,71 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+
4
+ // src/utils/cn.ts
5
+ function cn(...inputs) {
6
+ return twMerge(clsx(inputs));
7
+ }
8
+
9
+ // src/tokens/colors.ts
10
+ var COMMON_THEME = {
11
+ primary: "#3648ce",
12
+ "primary-soft": "#dbf1ff",
13
+ "primary-text": "#0e415d",
14
+ secondary: "#7f32a9",
15
+ "secondary-soft": "#cec7e6",
16
+ "secondary-text": "#521287",
17
+ success: "#136600",
18
+ "success-soft": "#dcfce7",
19
+ "success-text": "#14572e",
20
+ warning: "#705200",
21
+ "warning-soft": "#fef9c3",
22
+ "warning-text": "#73480c",
23
+ error: "#a80000",
24
+ "error-soft": "#fee2e2",
25
+ "error-text": "#8b0d0d"
26
+ };
27
+ var LIGHT_THEME = {
28
+ background: "#fafafa",
29
+ surface: "#ffffff",
30
+ border: "#CCCCCC",
31
+ foreground: "#000000",
32
+ muted: "#555555"
33
+ };
34
+ var DARK_THEME = {
35
+ background: "#171717",
36
+ surface: "#1f1f1f",
37
+ border: "#3f3f46",
38
+ foreground: "#f1f5f9",
39
+ muted: "#aaaab3"
40
+ };
41
+ var OCEAN_THEME = {
42
+ background: "#0f172a",
43
+ surface: "#1e293b",
44
+ border: "#334155",
45
+ foreground: "#f1f5f9",
46
+ muted: "#cbd5e1"
47
+ };
48
+
49
+ // src/utils/theme.ts
50
+ function getTheme(variant) {
51
+ let theme = LIGHT_THEME;
52
+ if (variant === "dark") theme = DARK_THEME;
53
+ if (variant === "ocean") theme = OCEAN_THEME;
54
+ return { ...COMMON_THEME, ...theme };
55
+ }
56
+ function mergeTheme(base, override) {
57
+ const merged = { ...base };
58
+ for (const key of Object.keys(override)) {
59
+ const v = override[key];
60
+ if (v !== void 0) merged[key] = v;
61
+ }
62
+ return merged;
63
+ }
64
+ function createCustomTheme(variant, customTokens) {
65
+ const baseTheme = getTheme(variant);
66
+ return mergeTheme(baseTheme, customTokens);
67
+ }
68
+
69
+ export { cn, createCustomTheme, getTheme, mergeTheme };
70
+ //# sourceMappingURL=index.mjs.map
71
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/tokens/colors.ts","../../src/utils/theme.ts"],"names":[],"mappings":";;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;;;ACLO,IAAM,YAAA,GAAe;AAAA,EAC1B,OAAA,EAAS,SAAA;AAAA,EACT,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAEhB,SAAA,EAAW,SAAA;AAAA,EACX,gBAAA,EAAkB,SAAA;AAAA,EAClB,gBAAA,EAAkB,SAAA;AAAA,EAElB,OAAA,EAAS,SAAA;AAAA,EACT,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAEhB,OAAA,EAAS,SAAA;AAAA,EACT,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAEhB,KAAA,EAAO,SAAA;AAAA,EACP,YAAA,EAAc,SAAA;AAAA,EACd,YAAA,EAAc;AAChB,CAAA;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;;;ACnCO,SAAS,SAAS,OAAA,EAAoC;AAC3D,EAAA,IAAI,KAAA,GAAqB,WAAA;AAEzB,EAAA,IAAI,OAAA,KAAY,QAAQ,KAAA,GAAQ,UAAA;AAChC,EAAA,IAAI,OAAA,KAAY,SAAS,KAAA,GAAQ,WAAA;AAEjC,EAAA,OAAO,EAAE,GAAG,YAAA,EAAc,GAAG,KAAA,EAAM;AACrC;AAEO,SAAS,UAAA,CACd,MACA,QAAA,EACa;AACb,EAAA,MAAM,MAAA,GAAS,EAAE,GAAG,IAAA,EAAK;AAEzB,EAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,EAA4B;AAChE,IAAA,MAAM,CAAA,GAAI,SAAS,GAAG,CAAA;AACtB,IAAA,IAAI,CAAA,KAAM,MAAA,EAAW,MAAA,CAAO,GAAG,CAAA,GAAI,CAAA;AAAA,EACrC;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,iBAAA,CACd,SACA,YAAA,EACa;AACb,EAAA,MAAM,SAAA,GAAY,SAAS,OAAO,CAAA;AAClC,EAAA,OAAO,UAAA,CAAW,WAAW,YAAY,CAAA;AAC3C","file":"index.mjs","sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","export const COMMON_THEME = {\n primary: '#3648ce',\n 'primary-soft': '#dbf1ff',\n 'primary-text': '#0e415d',\n\n secondary: '#7f32a9',\n 'secondary-soft': '#cec7e6',\n 'secondary-text': '#521287',\n\n success: '#136600',\n 'success-soft': '#dcfce7',\n 'success-text': '#14572e',\n\n warning: '#705200',\n 'warning-soft': '#fef9c3',\n 'warning-text': '#73480c',\n\n error: '#a80000',\n 'error-soft': '#fee2e2',\n 'error-text': '#8b0d0d',\n} as const;\n\nexport const LIGHT_THEME = {\n background: '#fafafa',\n surface: '#ffffff',\n border: '#CCCCCC',\n foreground: '#000000',\n muted: '#555555',\n} as const;\n\nexport const DARK_THEME = {\n background: '#171717',\n surface: '#1f1f1f',\n border: '#3f3f46',\n foreground: '#f1f5f9',\n muted: '#aaaab3',\n} as const;\n\nexport const OCEAN_THEME = {\n background: '#0f172a',\n surface: '#1e293b',\n border: '#334155',\n foreground: '#f1f5f9',\n muted: '#cbd5e1',\n} as const;\n","import {\n COMMON_THEME,\n LIGHT_THEME,\n DARK_THEME,\n OCEAN_THEME,\n} from '../tokens/colors';\n\nimport { ThemeVariant, ThemeTokens } from '../types';\n\nexport function getTheme(variant: ThemeVariant): ThemeTokens {\n let theme: ThemeTokens = LIGHT_THEME;\n\n if (variant === 'dark') theme = DARK_THEME;\n if (variant === 'ocean') theme = OCEAN_THEME;\n\n return { ...COMMON_THEME, ...theme };\n}\n\nexport function mergeTheme(\n base: ThemeTokens,\n override: Partial<ThemeTokens>\n): ThemeTokens {\n const merged = { ...base };\n\n for (const key of Object.keys(override) as (keyof ThemeTokens)[]) {\n const v = override[key];\n if (v !== undefined) merged[key] = v;\n }\n\n return merged;\n}\n\nexport function createCustomTheme(\n variant: ThemeVariant,\n customTokens: Partial<ThemeTokens>\n): ThemeTokens {\n const baseTheme = getTheme(variant);\n return mergeTheme(baseTheme, customTokens);\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "@stellar-ui-kit/shared",
3
+ "version": "1.0.0",
4
+ "description": "Shared design tokens, types, and utilities (platform agnostic)",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.js"
13
+ },
14
+ "./tokens": {
15
+ "types": "./dist/tokens/index.d.ts",
16
+ "import": "./dist/tokens/index.mjs",
17
+ "require": "./dist/tokens/index.js"
18
+ },
19
+ "./utils": {
20
+ "types": "./dist/utils/index.d.ts",
21
+ "import": "./dist/utils/index.mjs",
22
+ "require": "./dist/utils/index.js"
23
+ },
24
+ "./tailwind-preset": {
25
+ "types": "./dist/tailwind-preset/index.d.ts",
26
+ "import": "./dist/tailwind-preset/index.mjs",
27
+ "require": "./dist/tailwind-preset/index.js"
28
+ }
29
+ },
30
+ "files": [
31
+ "dist"
32
+ ],
33
+ "sideEffects": false,
34
+ "scripts": {
35
+ "build": "tsup",
36
+ "dev": "tsup --watch",
37
+ "clean": "node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"",
38
+ "type-check": "tsc --noEmit",
39
+ "lint": "eslint src --ext .ts,.tsx"
40
+ },
41
+ "keywords": [
42
+ "design-system",
43
+ "tokens",
44
+ "types",
45
+ "shared"
46
+ ],
47
+ "author": "Stellar UI",
48
+ "license": "MIT",
49
+ "repository": {
50
+ "type": "git",
51
+ "url": "https://github.com/vs-front-end/stellar-ui.git",
52
+ "directory": "packages/shared"
53
+ },
54
+ "homepage": "https://stellar-ui-one.vercel.app",
55
+ "bugs": {
56
+ "url": "https://github.com/vs-front-end/stellar-ui/issues"
57
+ },
58
+ "publishConfig": {
59
+ "access": "public"
60
+ },
61
+ "dependencies": {
62
+ "clsx": "^2.1.1",
63
+ "tailwind-merge": "^2.5.4"
64
+ },
65
+ "devDependencies": {
66
+ "@typescript-eslint/eslint-plugin": "^8.15.0",
67
+ "@typescript-eslint/parser": "^8.15.0",
68
+ "eslint": "^9.15.0",
69
+ "tailwindcss": "^3.4.17",
70
+ "tsup": "^8.3.0",
71
+ "typescript": "^5.7.2"
72
+ },
73
+ "peerDependencies": {
74
+ "react": ">=18.0.0"
75
+ }
76
+ }