@compose-market/theme 0.0.2 → 0.0.4

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.
Files changed (82) hide show
  1. package/dist/css/dark.css +38 -0
  2. package/dist/css/index.css +10 -0
  3. package/dist/css/index.d.ts +16 -0
  4. package/dist/css/index.d.ts.map +1 -0
  5. package/dist/css/index.js +97 -0
  6. package/dist/css/index.js.map +1 -0
  7. package/dist/css/light.css +70 -0
  8. package/dist/css/shell.css +414 -0
  9. package/dist/css/tokens.css +24 -0
  10. package/dist/index.d.ts +7 -5
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +7 -5
  13. package/dist/index.js.map +1 -1
  14. package/dist/shell/index.d.ts +67 -0
  15. package/dist/shell/index.d.ts.map +1 -0
  16. package/dist/shell/index.js +45 -0
  17. package/dist/shell/index.js.map +1 -0
  18. package/dist/shell/styles.d.ts +2 -0
  19. package/dist/shell/styles.d.ts.map +1 -0
  20. package/dist/shell/styles.js +416 -0
  21. package/dist/shell/styles.js.map +1 -0
  22. package/dist/tailwind/preset.d.ts +282 -0
  23. package/dist/tailwind/preset.d.ts.map +1 -0
  24. package/dist/tailwind/preset.js +144 -0
  25. package/dist/tailwind/preset.js.map +1 -0
  26. package/package.json +16 -41
  27. package/dist/components/brand/Logo.d.ts +0 -25
  28. package/dist/components/brand/Logo.d.ts.map +0 -1
  29. package/dist/components/brand/Logo.js +0 -20
  30. package/dist/components/brand/Logo.js.map +0 -1
  31. package/dist/components/brand/index.d.ts +0 -2
  32. package/dist/components/brand/index.d.ts.map +0 -1
  33. package/dist/components/brand/index.js +0 -2
  34. package/dist/components/brand/index.js.map +0 -1
  35. package/dist/components/session.d.ts +0 -58
  36. package/dist/components/session.d.ts.map +0 -1
  37. package/dist/components/session.js +0 -280
  38. package/dist/components/session.js.map +0 -1
  39. package/dist/components/ui/badge.d.ts +0 -10
  40. package/dist/components/ui/badge.d.ts.map +0 -1
  41. package/dist/components/ui/badge.js +0 -24
  42. package/dist/components/ui/badge.js.map +0 -1
  43. package/dist/components/ui/button.d.ts +0 -14
  44. package/dist/components/ui/button.d.ts.map +0 -1
  45. package/dist/components/ui/button.js +0 -43
  46. package/dist/components/ui/button.js.map +0 -1
  47. package/dist/components/ui/card.d.ts +0 -13
  48. package/dist/components/ui/card.d.ts.map +0 -1
  49. package/dist/components/ui/card.js +0 -18
  50. package/dist/components/ui/card.js.map +0 -1
  51. package/dist/components/ui/dialog.d.ts +0 -20
  52. package/dist/components/ui/dialog.d.ts.map +0 -1
  53. package/dist/components/ui/dialog.js +0 -23
  54. package/dist/components/ui/dialog.js.map +0 -1
  55. package/dist/components/ui/dropdown-menu.d.ts +0 -28
  56. package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
  57. package/dist/components/ui/dropdown-menu.js +0 -37
  58. package/dist/components/ui/dropdown-menu.js.map +0 -1
  59. package/dist/components/ui/index.d.ts +0 -7
  60. package/dist/components/ui/index.d.ts.map +0 -1
  61. package/dist/components/ui/index.js +0 -7
  62. package/dist/components/ui/index.js.map +0 -1
  63. package/dist/components/ui/progress.d.ts +0 -5
  64. package/dist/components/ui/progress.d.ts.map +0 -1
  65. package/dist/components/ui/progress.js +0 -9
  66. package/dist/components/ui/progress.js.map +0 -1
  67. package/dist/components/ui/surface-variant.d.ts +0 -4
  68. package/dist/components/ui/surface-variant.d.ts.map +0 -1
  69. package/dist/components/ui/surface-variant.js +0 -10
  70. package/dist/components/ui/surface-variant.js.map +0 -1
  71. package/dist/lib/utils.d.ts +0 -3
  72. package/dist/lib/utils.d.ts.map +0 -1
  73. package/dist/lib/utils.js +0 -6
  74. package/dist/lib/utils.js.map +0 -1
  75. package/dist/lib/visual-system.d.ts +0 -39
  76. package/dist/lib/visual-system.d.ts.map +0 -1
  77. package/dist/lib/visual-system.js +0 -129
  78. package/dist/lib/visual-system.js.map +0 -1
  79. package/dist/utils/index.d.ts +0 -2
  80. package/dist/utils/index.d.ts.map +0 -1
  81. package/dist/utils/index.js +0 -2
  82. package/dist/utils/index.js.map +0 -1
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Compose.Market Dark Theme
3
+ * @compose-market/theme
4
+ *
5
+ * Cyberpunk-inspired dark theme with neon accents.
6
+ * DO NOT EDIT - This file is generated from the theme package.
7
+ */
8
+
9
+ :root {
10
+ /* Colors */
11
+ --background: 222 47% 3%;
12
+ --foreground: 210 40% 80%;
13
+ --card: 222 40% 5%;
14
+ --card-foreground: 210 30% 75%;
15
+ --popover: 222 40% 4%;
16
+ --popover-foreground: 210 30% 75%;
17
+ --primary: 188 95% 43%;
18
+ --primary-foreground: 222 47% 3%;
19
+ --secondary: 270 60% 20%;
20
+ --secondary-foreground: 270 80% 90%;
21
+ --muted: 217 33% 15%;
22
+ --muted-foreground: 215 16% 47%;
23
+ --accent: 292 85% 55%;
24
+ --accent-foreground: 0 0% 100%;
25
+ --destructive: 0 90% 50%;
26
+ --destructive-foreground: 0 0% 100%;
27
+ --border: 217 33% 15%;
28
+ --input: 217 33% 10%;
29
+ --ring: 188 95% 43%;
30
+ --sidebar: 222 47% 3%;
31
+ --sidebar-foreground: 210 30% 75%;
32
+ --sidebar-primary: 188 95% 43%;
33
+ --sidebar-primary-foreground: 222 47% 3%;
34
+ --sidebar-accent: 222 40% 8%;
35
+ --sidebar-accent-foreground: 210 40% 90%;
36
+ --sidebar-border: 217 33% 15%;
37
+ --sidebar-ring: 188 95% 43%;
38
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Compose.Market Theme System
3
+ * @compose-market/theme/css
4
+ *
5
+ * Import this file for the complete theme (dark by default).
6
+ */
7
+
8
+ @import './tokens.css';
9
+ @import './dark.css';
10
+ @import './shell.css';
@@ -0,0 +1,16 @@
1
+ /**
2
+ * CSS Custom Properties Generator
3
+ *
4
+ * This file is the source for generating CSS. The actual CSS files
5
+ * are generated via the build script, but we also export static
6
+ * templates that can be used directly.
7
+ */
8
+ import { darkTheme } from '../themes/dark';
9
+ export declare function generateThemeCss(theme: typeof darkTheme, themeName: string): string;
10
+ export declare function generateFontCss(): string;
11
+ export declare function generateRadiusCss(): string;
12
+ export declare const baseTokensCss: string;
13
+ export declare const darkThemeCss: string;
14
+ export declare const lightThemeCss: string;
15
+ export declare const indexCss = "/**\n * Compose.Market Theme System\n * @compose-market/theme/css\n * \n * Import this file for the complete theme (dark by default).\n * For light mode support, also import ./light.css\n */\n\n@import './tokens.css';\n@import './dark.css';\n@import './shell.css';\n";
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/css/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAanF;AAED,wBAAgB,eAAe,IAAI,MAAM,CASxC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAS1C;AAED,eAAO,MAAM,aAAa,QAazB,CAAC;AAEF,eAAO,MAAM,YAAY,QAaxB,CAAC;AAEF,eAAO,MAAM,aAAa,QAiBzB,CAAC;AAEF,eAAO,MAAM,QAAQ,+QAWpB,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * CSS Custom Properties Generator
3
+ *
4
+ * This file is the source for generating CSS. The actual CSS files
5
+ * are generated via the build script, but we also export static
6
+ * templates that can be used directly.
7
+ */
8
+ import { fontFamilies } from '../tokens/typography';
9
+ import { radius } from '../tokens/radius';
10
+ import { darkTheme } from '../themes/dark';
11
+ import { lightTheme } from '../themes/light';
12
+ export function generateThemeCss(theme, themeName) {
13
+ const lines = [];
14
+ lines.push(`/* Compose.Market Theme: ${themeName} */`);
15
+ lines.push(`/* Generated from @compose-market/theme */`);
16
+ lines.push('');
17
+ for (const [key, value] of Object.entries(theme)) {
18
+ const cssVarName = `--${key.replace(/([A-Z])/g, '-$1').toLowerCase()}`;
19
+ lines.push(` ${cssVarName}: ${value};`);
20
+ }
21
+ return lines.join('\n');
22
+ }
23
+ export function generateFontCss() {
24
+ const lines = [];
25
+ lines.push('/* Typography */');
26
+ for (const font of Object.values(fontFamilies)) {
27
+ lines.push(` ${font.cssVar}: ${font.value}, ${font.fallback};`);
28
+ }
29
+ return lines.join('\n');
30
+ }
31
+ export function generateRadiusCss() {
32
+ const lines = [];
33
+ lines.push('/* Border Radius */');
34
+ for (const r of Object.values(radius)) {
35
+ lines.push(` ${r.cssVar}: ${r.value};`);
36
+ }
37
+ return lines.join('\n');
38
+ }
39
+ export const baseTokensCss = `/**
40
+ * Compose.Market Design Tokens
41
+ * @compose-market/theme
42
+ *
43
+ * DO NOT EDIT - This file is generated from the theme package.
44
+ * Source: backend/services/packages/theme/src/css/tokens.css
45
+ */
46
+
47
+ :root {
48
+ ${generateFontCss()}
49
+
50
+ ${generateRadiusCss()}
51
+ }
52
+ `;
53
+ export const darkThemeCss = `/**
54
+ * Compose.Market Dark Theme
55
+ * @compose-market/theme
56
+ *
57
+ * Cyberpunk-inspired dark theme with neon accents.
58
+ * DO NOT EDIT - This file is generated from the theme package.
59
+ */
60
+
61
+ :root {
62
+ ${generateThemeCss(darkTheme, 'dark')}
63
+ }
64
+
65
+ /* Dark mode is default - no @media query needed */
66
+ `;
67
+ export const lightThemeCss = `/**
68
+ * Compose.Market Light Theme
69
+ * @compose-market/theme
70
+ *
71
+ * Clean, professional light theme.
72
+ * DO NOT EDIT - This file is generated from the theme package.
73
+ */
74
+
75
+ :root {
76
+ ${generateThemeCss(lightTheme, 'light')}
77
+ }
78
+
79
+ /* Light mode activation via class or data attribute */
80
+ .light,
81
+ [data-theme="light"] {
82
+ ${generateThemeCss(lightTheme, 'light').split('\n').slice(3).join('\n')}
83
+ }
84
+ `;
85
+ export const indexCss = `/**
86
+ * Compose.Market Theme System
87
+ * @compose-market/theme/css
88
+ *
89
+ * Import this file for the complete theme (dark by default).
90
+ * For light mode support, also import ./light.css
91
+ */
92
+
93
+ @import './tokens.css';
94
+ @import './dark.css';
95
+ @import './shell.css';
96
+ `;
97
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/css/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,UAAU,gBAAgB,CAAC,KAAuB,EAAE,SAAiB;IACzE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,4BAA4B,SAAS,KAAK,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACvE,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,KAAK,KAAK,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;EAS3B,eAAe,EAAE;;EAEjB,iBAAiB,EAAE;;CAEpB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;EAS1B,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC;;;;CAIpC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;EAS3B,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC;;;;;;EAMrC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;CAEtE,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;CAWvB,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Compose.Market Light Theme
3
+ * @compose-market/theme
4
+ *
5
+ * Clean, professional light theme.
6
+ * DO NOT EDIT - This file is generated from the theme package.
7
+ */
8
+
9
+ :root {
10
+ /* Colors */
11
+ --background: 0 0% 100%;
12
+ --foreground: 222 47% 11%;
13
+ --card: 0 0% 100%;
14
+ --card-foreground: 222 47% 11%;
15
+ --popover: 0 0% 100%;
16
+ --popover-foreground: 222 47% 11%;
17
+ --primary: 188 95% 43%;
18
+ --primary-foreground: 0 0% 100%;
19
+ --secondary: 210 40% 96%;
20
+ --secondary-foreground: 222 47% 11%;
21
+ --muted: 210 40% 96%;
22
+ --muted-foreground: 215 16% 47%;
23
+ --accent: 292 85% 55%;
24
+ --accent-foreground: 0 0% 100%;
25
+ --destructive: 0 84% 60%;
26
+ --destructive-foreground: 0 0% 100%;
27
+ --border: 214 32% 91%;
28
+ --input: 214 32% 91%;
29
+ --ring: 188 95% 43%;
30
+ --sidebar: 0 0% 98%;
31
+ --sidebar-foreground: 222 47% 11%;
32
+ --sidebar-primary: 188 95% 43%;
33
+ --sidebar-primary-foreground: 0 0% 100%;
34
+ --sidebar-accent: 210 40% 96%;
35
+ --sidebar-accent-foreground: 222 47% 11%;
36
+ --sidebar-border: 214 32% 91%;
37
+ --sidebar-ring: 188 95% 43%;
38
+ }
39
+
40
+ /* Light mode activation */
41
+ .light,
42
+ [data-theme="light"] {
43
+ --background: 0 0% 100%;
44
+ --foreground: 222 47% 11%;
45
+ --card: 0 0% 100%;
46
+ --card-foreground: 222 47% 11%;
47
+ --popover: 0 0% 100%;
48
+ --popover-foreground: 222 47% 11%;
49
+ --primary: 188 95% 43%;
50
+ --primary-foreground: 0 0% 100%;
51
+ --secondary: 210 40% 96%;
52
+ --secondary-foreground: 222 47% 11%;
53
+ --muted: 210 40% 96%;
54
+ --muted-foreground: 215 16% 47%;
55
+ --accent: 292 85% 55%;
56
+ --accent-foreground: 0 0% 100%;
57
+ --destructive: 0 84% 60%;
58
+ --destructive-foreground: 0 0% 100%;
59
+ --border: 214 32% 91%;
60
+ --input: 214 32% 91%;
61
+ --ring: 188 95% 43%;
62
+ --sidebar: 0 0% 98%;
63
+ --sidebar-foreground: 222 47% 11%;
64
+ --sidebar-primary: 188 95% 43%;
65
+ --sidebar-primary-foreground: 0 0% 100%;
66
+ --sidebar-accent: 210 40% 96%;
67
+ --sidebar-accent-foreground: 222 47% 11%;
68
+ --sidebar-border: 214 32% 91%;
69
+ --sidebar-ring: 188 95% 43%;
70
+ }
@@ -0,0 +1,414 @@
1
+ /**
2
+ * Compose.Market Shared Shell
3
+ * @compose-market/theme/css/shell
4
+ */
5
+
6
+ :root {
7
+ --cm-shell-glow-primary: hsl(var(--primary) / 0.32);
8
+ --cm-shell-glow-accent: hsl(314 100% 64% / 0.18);
9
+ --cm-shell-surface: linear-gradient(180deg, hsl(var(--card) / 0.9), hsl(var(--background) / 0.92));
10
+ --cm-shell-border: hsl(var(--border) / 0.78);
11
+ --cm-shell-shadow:
12
+ 0 24px 72px hsl(240 30% 2% / 0.45),
13
+ inset 0 1px 0 hsl(0 0% 100% / 0.05);
14
+ }
15
+
16
+ .cm-shell-stack {
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: 1rem;
20
+ }
21
+
22
+ .cm-shell-cluster {
23
+ display: flex;
24
+ align-items: center;
25
+ gap: 0.75rem;
26
+ flex-wrap: wrap;
27
+ }
28
+
29
+ .cm-shell-button {
30
+ display: inline-flex;
31
+ align-items: center;
32
+ justify-content: center;
33
+ gap: 0.55rem;
34
+ min-height: 2.5rem;
35
+ padding: 0 1rem;
36
+ border-radius: 0.55rem;
37
+ border: 1px solid transparent;
38
+ background: transparent;
39
+ color: hsl(var(--foreground));
40
+ font-family: var(--font-sans), sans-serif;
41
+ font-size: 0.9rem;
42
+ font-weight: 600;
43
+ line-height: 1;
44
+ cursor: pointer;
45
+ transition:
46
+ transform 180ms ease,
47
+ background-color 180ms ease,
48
+ border-color 180ms ease,
49
+ color 180ms ease,
50
+ box-shadow 180ms ease;
51
+ }
52
+
53
+ .cm-shell-button:hover:not(:disabled) {
54
+ transform: translateY(-1px);
55
+ }
56
+
57
+ .cm-shell-button:disabled {
58
+ opacity: 0.55;
59
+ cursor: not-allowed;
60
+ }
61
+
62
+ .cm-shell-button--primary {
63
+ background:
64
+ linear-gradient(135deg, hsl(var(--primary) / 0.9), hsl(314 100% 64% / 0.78));
65
+ color: hsl(var(--primary-foreground));
66
+ border-color: hsl(var(--primary) / 0.42);
67
+ box-shadow: 0 0 24px var(--cm-shell-glow-primary);
68
+ }
69
+
70
+ .cm-shell-button--primary:hover:not(:disabled) {
71
+ box-shadow:
72
+ 0 0 30px var(--cm-shell-glow-primary),
73
+ 0 0 22px var(--cm-shell-glow-accent);
74
+ }
75
+
76
+ .cm-shell-button--secondary {
77
+ background: hsl(var(--muted) / 0.32);
78
+ border-color: hsl(var(--border) / 0.88);
79
+ }
80
+
81
+ .cm-shell-button--secondary:hover:not(:disabled) {
82
+ border-color: hsl(var(--primary) / 0.4);
83
+ background: hsl(var(--muted) / 0.52);
84
+ }
85
+
86
+ .cm-shell-button--ghost {
87
+ background: transparent;
88
+ border-color: transparent;
89
+ color: hsl(var(--muted-foreground));
90
+ }
91
+
92
+ .cm-shell-button--ghost:hover:not(:disabled) {
93
+ color: hsl(var(--foreground));
94
+ background: hsl(var(--muted) / 0.2);
95
+ }
96
+
97
+ .cm-shell-button--danger {
98
+ background: hsl(var(--destructive) / 0.12);
99
+ border-color: hsl(var(--destructive) / 0.3);
100
+ color: hsl(var(--destructive-foreground));
101
+ }
102
+
103
+ .cm-shell-button--danger:hover:not(:disabled) {
104
+ background: hsl(var(--destructive) / 0.2);
105
+ }
106
+
107
+ .cm-shell-button--sm {
108
+ min-height: 2rem;
109
+ padding: 0 0.8rem;
110
+ font-size: 0.78rem;
111
+ }
112
+
113
+ .cm-shell-button--lg {
114
+ min-height: 2.9rem;
115
+ padding: 0 1.15rem;
116
+ }
117
+
118
+ .cm-shell-button--icon {
119
+ width: 2.5rem;
120
+ padding: 0;
121
+ }
122
+
123
+ .cm-shell-pill {
124
+ display: inline-flex;
125
+ align-items: center;
126
+ gap: 0.45rem;
127
+ min-height: 1.9rem;
128
+ padding: 0 0.8rem;
129
+ border-radius: 999px;
130
+ border: 1px solid hsl(var(--border) / 0.72);
131
+ background: hsl(var(--muted) / 0.28);
132
+ color: hsl(var(--muted-foreground));
133
+ font-size: 0.76rem;
134
+ letter-spacing: 0.02em;
135
+ text-transform: uppercase;
136
+ }
137
+
138
+ .cm-shell-pill strong,
139
+ .cm-shell-pill span {
140
+ color: inherit;
141
+ }
142
+
143
+ .cm-shell-panel {
144
+ border: 1px solid var(--cm-shell-border);
145
+ border-radius: 1rem;
146
+ background: var(--cm-shell-surface);
147
+ box-shadow: var(--cm-shell-shadow);
148
+ backdrop-filter: blur(14px);
149
+ }
150
+
151
+ .cm-shell-panel--muted {
152
+ background:
153
+ linear-gradient(180deg, hsl(var(--muted) / 0.38), hsl(var(--background) / 0.84));
154
+ }
155
+
156
+ .cm-shell-panel--ghost {
157
+ background: transparent;
158
+ box-shadow: none;
159
+ }
160
+
161
+ .cm-shell-panel__body {
162
+ padding: 1.2rem;
163
+ }
164
+
165
+ .cm-shell-page-header {
166
+ display: flex;
167
+ align-items: flex-start;
168
+ justify-content: space-between;
169
+ gap: 1rem;
170
+ padding: 1.35rem 1.45rem;
171
+ }
172
+
173
+ .cm-shell-page-header__copy {
174
+ display: flex;
175
+ flex-direction: column;
176
+ gap: 0.45rem;
177
+ }
178
+
179
+ .cm-shell-page-header__eyebrow {
180
+ color: hsl(var(--primary));
181
+ font-family: var(--font-mono), monospace;
182
+ font-size: 0.76rem;
183
+ letter-spacing: 0.16em;
184
+ text-transform: uppercase;
185
+ }
186
+
187
+ .cm-shell-page-header__title {
188
+ color: hsl(var(--foreground));
189
+ font-family: var(--font-display), sans-serif;
190
+ font-size: clamp(1.2rem, 2vw, 1.65rem);
191
+ letter-spacing: 0.02em;
192
+ }
193
+
194
+ .cm-shell-page-header__subtitle {
195
+ color: hsl(var(--muted-foreground));
196
+ font-size: 0.92rem;
197
+ max-width: 56rem;
198
+ }
199
+
200
+ .cm-shell-stat-grid {
201
+ display: grid;
202
+ grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
203
+ gap: 0.8rem;
204
+ }
205
+
206
+ .cm-shell-stat {
207
+ display: flex;
208
+ flex-direction: column;
209
+ gap: 0.25rem;
210
+ padding: 0.9rem 1rem;
211
+ }
212
+
213
+ .cm-shell-stat__label {
214
+ color: hsl(var(--muted-foreground));
215
+ font-size: 0.76rem;
216
+ letter-spacing: 0.08em;
217
+ text-transform: uppercase;
218
+ }
219
+
220
+ .cm-shell-stat__value {
221
+ color: hsl(var(--foreground));
222
+ font-family: var(--font-display), sans-serif;
223
+ font-size: 1.1rem;
224
+ }
225
+
226
+ .cm-shell-stat__hint {
227
+ color: hsl(var(--muted-foreground));
228
+ font-size: 0.78rem;
229
+ }
230
+
231
+ .cm-shell-tab-strip {
232
+ display: inline-flex;
233
+ align-items: center;
234
+ gap: 0.35rem;
235
+ padding: 0.35rem;
236
+ border: 1px solid hsl(var(--border) / 0.75);
237
+ border-radius: 999px;
238
+ background: hsl(var(--muted) / 0.16);
239
+ }
240
+
241
+ .cm-shell-tab {
242
+ display: inline-flex;
243
+ align-items: center;
244
+ gap: 0.5rem;
245
+ min-height: 2.35rem;
246
+ padding: 0 1rem;
247
+ border-radius: 999px;
248
+ border: 1px solid transparent;
249
+ background: transparent;
250
+ color: hsl(var(--muted-foreground));
251
+ font-family: var(--font-mono), monospace;
252
+ font-size: 0.76rem;
253
+ letter-spacing: 0.08em;
254
+ text-transform: uppercase;
255
+ cursor: pointer;
256
+ transition:
257
+ background-color 180ms ease,
258
+ color 180ms ease,
259
+ border-color 180ms ease,
260
+ box-shadow 180ms ease;
261
+ }
262
+
263
+ .cm-shell-tab:hover {
264
+ color: hsl(var(--foreground));
265
+ }
266
+
267
+ .cm-shell-tab[data-active="true"] {
268
+ background: linear-gradient(135deg, hsl(var(--primary) / 0.22), hsl(314 100% 64% / 0.18));
269
+ border-color: hsl(var(--primary) / 0.34);
270
+ color: hsl(var(--foreground));
271
+ box-shadow: 0 0 22px hsl(var(--primary) / 0.18);
272
+ }
273
+
274
+ .cm-shell-notice {
275
+ display: flex;
276
+ align-items: center;
277
+ gap: 0.7rem;
278
+ padding: 0.9rem 1rem;
279
+ border-radius: 0.9rem;
280
+ border: 1px solid;
281
+ }
282
+
283
+ .cm-shell-notice--info {
284
+ background: hsl(var(--primary) / 0.08);
285
+ border-color: hsl(var(--primary) / 0.22);
286
+ color: hsl(var(--foreground));
287
+ }
288
+
289
+ .cm-shell-notice--success {
290
+ background: hsl(148 75% 24% / 0.18);
291
+ border-color: hsl(148 75% 46% / 0.3);
292
+ color: hsl(var(--foreground));
293
+ }
294
+
295
+ .cm-shell-notice--warning {
296
+ background: hsl(42 100% 48% / 0.12);
297
+ border-color: hsl(42 100% 52% / 0.25);
298
+ color: hsl(var(--foreground));
299
+ }
300
+
301
+ .cm-shell-notice--error {
302
+ background: hsl(var(--destructive) / 0.13);
303
+ border-color: hsl(var(--destructive) / 0.28);
304
+ color: hsl(var(--foreground));
305
+ }
306
+
307
+ .cm-shell-banner {
308
+ display: flex;
309
+ align-items: center;
310
+ justify-content: space-between;
311
+ gap: 1rem;
312
+ padding: 1rem 1.15rem;
313
+ }
314
+
315
+ .cm-shell-banner__copy {
316
+ display: flex;
317
+ flex-direction: column;
318
+ gap: 0.35rem;
319
+ }
320
+
321
+ .cm-shell-banner__title {
322
+ color: hsl(var(--foreground));
323
+ font-weight: 700;
324
+ }
325
+
326
+ .cm-shell-banner__subtitle {
327
+ color: hsl(var(--muted-foreground));
328
+ font-size: 0.9rem;
329
+ }
330
+
331
+ .cm-shell-empty {
332
+ display: flex;
333
+ flex-direction: column;
334
+ align-items: center;
335
+ justify-content: center;
336
+ gap: 0.75rem;
337
+ min-height: 18rem;
338
+ padding: 2.4rem 1.5rem;
339
+ text-align: center;
340
+ }
341
+
342
+ .cm-shell-empty__icon {
343
+ color: hsl(var(--primary));
344
+ }
345
+
346
+ .cm-shell-empty__title {
347
+ color: hsl(var(--foreground));
348
+ font-family: var(--font-display), sans-serif;
349
+ font-size: 1.2rem;
350
+ }
351
+
352
+ .cm-shell-empty__description {
353
+ color: hsl(var(--muted-foreground));
354
+ max-width: 38rem;
355
+ }
356
+
357
+ .cm-shell-modal-overlay {
358
+ position: fixed;
359
+ inset: 0;
360
+ display: flex;
361
+ align-items: center;
362
+ justify-content: center;
363
+ padding: 1.5rem;
364
+ background: hsl(240 30% 2% / 0.68);
365
+ backdrop-filter: blur(10px);
366
+ z-index: 100;
367
+ }
368
+
369
+ .cm-shell-modal {
370
+ width: min(100%, 46rem);
371
+ max-height: min(90vh, 56rem);
372
+ overflow: auto;
373
+ }
374
+
375
+ .cm-shell-modal__header {
376
+ display: flex;
377
+ align-items: flex-start;
378
+ justify-content: space-between;
379
+ gap: 1rem;
380
+ padding: 1.25rem 1.3rem 0;
381
+ }
382
+
383
+ .cm-shell-modal__title {
384
+ color: hsl(var(--foreground));
385
+ font-family: var(--font-display), sans-serif;
386
+ font-size: 1.1rem;
387
+ }
388
+
389
+ .cm-shell-modal__subtitle {
390
+ color: hsl(var(--muted-foreground));
391
+ font-size: 0.92rem;
392
+ margin-top: 0.35rem;
393
+ }
394
+
395
+ .cm-shell-modal__body {
396
+ padding: 1.2rem 1.3rem 1.3rem;
397
+ }
398
+
399
+ @media (max-width: 720px) {
400
+ .cm-shell-page-header,
401
+ .cm-shell-banner {
402
+ flex-direction: column;
403
+ align-items: stretch;
404
+ }
405
+
406
+ .cm-shell-stat-grid {
407
+ grid-template-columns: 1fr;
408
+ }
409
+
410
+ .cm-shell-tab-strip {
411
+ width: 100%;
412
+ overflow-x: auto;
413
+ }
414
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Compose.Market Design Tokens
3
+ * @compose-market/theme
4
+ *
5
+ * DO NOT EDIT - This file is generated from the theme package.
6
+ */
7
+
8
+ :root {
9
+ /* Typography */
10
+ --font-display: "Orbitron", sans-serif;
11
+ --font-sans: "Rajdhani", sans-serif;
12
+ --font-mono: "Fira Code", monospace;
13
+
14
+ /* Border Radius */
15
+ --radius-none: 0;
16
+ --radius-sm: 0.125rem;
17
+ --radius: 0.25rem;
18
+ --radius-md: 0.25rem;
19
+ --radius-lg: 0.5rem;
20
+ --radius-xl: 0.75rem;
21
+ --radius-2xl: 1rem;
22
+ --radius-3xl: 1.5rem;
23
+ --radius-full: 9999px;
24
+ }
package/dist/index.d.ts CHANGED
@@ -1,12 +1,14 @@
1
+ /**
2
+ * @compose-market/theme
3
+ *
4
+ * Official design tokens and theme system for Compose.Market
5
+ */
1
6
  export * from './tokens';
2
7
  export * from './themes';
3
- export * from './utils';
8
+ export * from './shell';
4
9
  import { tokens, type DesignTokens } from './tokens';
5
10
  import { themes, defaultTheme, getTheme, getThemeColors, type ThemeName, type Theme } from './themes';
6
11
  export { tokens, themes, defaultTheme, getTheme, getThemeColors, type ThemeName, type Theme, type DesignTokens, };
7
- export * from './components/ui';
8
- export * from './components/brand';
9
- export { type SessionState as SessionStateType, type ComposeKeyRecord, type SessionActions, type SessionBudgetDialogProps, type SessionStatusCardProps, type SessionIndicatorProps, type SessionManageDialogProps, type ComposeKeyDialogProps, BUDGET_PRESETS, SessionBudgetDialog, SessionStatusCard, SessionIndicator, } from './components/session';
10
- export declare const packageVersion = "0.0.2";
12
+ export declare const packageVersion = "1.0.0";
11
13
  export declare const packageName = "@compose-market/theme";
12
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtG,OAAO,EACL,MAAM,EACN,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,YAAY,GAClB,CAAC;AAEF,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EACL,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,cAAc,UAAU,CAAC;AACtC,eAAO,MAAM,WAAW,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtG,OAAO,EACL,MAAM,EACN,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,YAAY,GAClB,CAAC;AAEF,eAAO,MAAM,cAAc,UAAU,CAAC;AACtC,eAAO,MAAM,WAAW,0BAA0B,CAAC"}