@framingui/ui 0.6.5 → 0.6.6

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 (40) hide show
  1. package/README.md +30 -31
  2. package/dist/chunk-VV6WUMYC.mjs +170 -0
  3. package/dist/index.mjs +9 -27
  4. package/dist/src/components/card.d.ts.map +1 -1
  5. package/dist/src/components/card.js.map +1 -1
  6. package/dist/src/components/sheet.d.ts +1 -1
  7. package/dist/src/components/sheet.d.ts.map +1 -1
  8. package/dist/src/components/sheet.js.map +1 -1
  9. package/dist/src/components/sidebar.d.ts.map +1 -1
  10. package/dist/src/components/sidebar.js.map +1 -1
  11. package/dist/src/components/skeleton.d.ts.map +1 -1
  12. package/dist/src/components/skeleton.js.map +1 -1
  13. package/dist/src/components/table.d.ts.map +1 -1
  14. package/dist/src/components/table.js.map +1 -1
  15. package/dist/src/templates/auth/login.d.ts.map +1 -1
  16. package/dist/src/templates/auth/login.js.map +1 -1
  17. package/dist/src/templates/auth/signup.d.ts.map +1 -1
  18. package/dist/src/templates/auth/signup.js.map +1 -1
  19. package/dist/src/templates/auth/verification.d.ts.map +1 -1
  20. package/dist/src/templates/auth/verification.js.map +1 -1
  21. package/dist/src/templates/core/landing.d.ts.map +1 -1
  22. package/dist/src/templates/core/landing.js +1 -1
  23. package/dist/src/templates/core/landing.js.map +1 -1
  24. package/dist/src/templates/core/profile.d.ts.map +1 -1
  25. package/dist/src/templates/core/profile.js +1 -1
  26. package/dist/src/templates/core/profile.js.map +1 -1
  27. package/dist/src/templates/feedback/loading.d.ts.map +1 -1
  28. package/dist/src/templates/feedback/loading.js +1 -1
  29. package/dist/src/templates/feedback/loading.js.map +1 -1
  30. package/dist/src/templates/feedback/success.d.ts.map +1 -1
  31. package/dist/src/templates/feedback/success.js.map +1 -1
  32. package/dist/src/theme-loader.d.ts +3 -0
  33. package/dist/src/theme-loader.d.ts.map +1 -0
  34. package/dist/src/theme-loader.js +2 -0
  35. package/dist/src/theme-loader.js.map +1 -0
  36. package/dist/templates/index.mjs +1 -1
  37. package/dist/theme-loader.d.mts +71 -0
  38. package/dist/theme-loader.mjs +150 -0
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/package.json +6 -2
@@ -1 +1 @@
1
- {"version":3,"file":"success.d.ts","sourceRoot":"","sources":["../../../../src/templates/feedback/success.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAMpD,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,SAAc,EACd,KAAU,EACV,KAAU,EACV,OAAY,GACb,EAAE,mBAAmB,2CAiErB;AAKD,eAAO,MAAM,eAAe,6BAG3B,CAAC"}
1
+ {"version":3,"file":"success.d.ts","sourceRoot":"","sources":["../../../../src/templates/feedback/success.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAMpD,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,SAAc,EACd,KAAU,EACV,KAAU,EACV,OAAY,GACb,EAAE,mBAAmB,2CA+DrB;AAKD,eAAO,MAAM,eAAe,6BAG3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"success.js","sourceRoot":"","sources":["../../../../src/templates/feedback/success.tsx"],"names":[],"mappings":";AAmBA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAK/D,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,EACV,KAAK,GAAG,EAAE,EACV,OAAO,GAAG,EAAE,GACQ;IACpB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,wCAAwC,CAAC;IAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;IAEzC,OAAO,CACL,eACE,SAAS,EAAE,sEAAsE,SAAS,EAAE,aAE5F,eAAK,SAAS,EAAC,iDAAiD,aAE7D,KAAK,CAAC,IAAI,IAAI,CACb,cAAK,SAAS,EAAC,qBAAqB,YAClC,cAAK,SAAS,EAAC,wEAAwE,YACrF,cACE,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,sCAAsC,EAChD,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,MAAM,EAAC,cAAc,YAErB,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,EACd,CAAC,EAAC,+CAA+C,GACjD,GACE,GACF,GACF,CACP,EAGD,eAAK,SAAS,EAAC,4BAA4B,aACzC,aAAI,SAAS,EAAC,oBAAoB,YAAE,KAAK,GAAM,EAC/C,YAAG,SAAS,EAAC,qCAAqC,YAAE,OAAO,GAAK,IAC5D,EAGL,KAAK,CAAC,OAAO,IAAI,CAChB,cAAK,SAAS,EAAC,wFAAwF,YACpG,KAAK,CAAC,OAAO,GACV,CACP,EAGA,OAAO,IAAI,CACV,wBACE,KAAC,MAAM,IAAC,SAAS,EAAC,QAAQ,EAAC,IAAI,EAAC,IAAI,YACjC,QAAQ,GACF,GACL,CACP,EAGA,KAAK,CAAC,iBAAiB,IAAI,CAC1B,cAAK,SAAS,EAAC,sCAAsC,YAClD,KAAK,CAAC,iBAAiB,GACpB,CACP,IACG,EACL,QAAQ,IACL,CACP,CAAC;AACJ,CAAC;AAKD,MAAM,CAAC,MAAM,eAAe,GAAG,yBAAyB,CACtD,kBAAkB,EAClB,wBAAwB,CACzB,CAAC"}
1
+ {"version":3,"file":"success.js","sourceRoot":"","sources":["../../../../src/templates/feedback/success.tsx"],"names":[],"mappings":";AAmBA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAK/D,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,EACV,KAAK,GAAG,EAAE,EACV,OAAO,GAAG,EAAE,GACQ;IACpB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,wCAAwC,CAAC;IAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;IAEzC,OAAO,CACL,eACE,SAAS,EAAE,sEAAsE,SAAS,EAAE,aAE5F,eAAK,SAAS,EAAC,iDAAiD,aAE7D,KAAK,CAAC,IAAI,IAAI,CACb,cAAK,SAAS,EAAC,qBAAqB,YAClC,cAAK,SAAS,EAAC,wEAAwE,YACrF,cACE,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,sCAAsC,EAChD,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,MAAM,EAAC,cAAc,YAErB,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,EACd,CAAC,EAAC,+CAA+C,GACjD,GACE,GACF,GACF,CACP,EAGD,eAAK,SAAS,EAAC,4BAA4B,aACzC,aAAI,SAAS,EAAC,oBAAoB,YAAE,KAAK,GAAM,EAC/C,YAAG,SAAS,EAAC,qCAAqC,YAAE,OAAO,GAAK,IAC5D,EAGL,KAAK,CAAC,OAAO,IAAI,CAChB,cAAK,SAAS,EAAC,wFAAwF,YACpG,KAAK,CAAC,OAAO,GACV,CACP,EAGA,OAAO,IAAI,CACV,wBACE,KAAC,MAAM,IAAC,SAAS,EAAC,QAAQ,EAAC,IAAI,EAAC,IAAI,YACjC,QAAQ,GACF,GACL,CACP,EAGA,KAAK,CAAC,iBAAiB,IAAI,CAC1B,cAAK,SAAS,EAAC,sCAAsC,YAAE,KAAK,CAAC,iBAAiB,GAAO,CACtF,IACG,EACL,QAAQ,IACL,CACP,CAAC;AACJ,CAAC;AAKD,MAAM,CAAC,MAAM,eAAe,GAAG,yBAAyB,CACtD,kBAAkB,EAClB,wBAAwB,CACzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { themeToCSS, injectThemeCSS, getCurrentThemeId, setThemeId, oklchToCSS, resolveSemanticToken, } from './lib/theme-loader';
2
+ export type { ThemeDefinition, OKLCHColor } from './lib/theme-loader';
3
+ //# sourceMappingURL=theme-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-loader.d.ts","sourceRoot":"","sources":["../../src/theme-loader.ts"],"names":[],"mappings":"AASA,OAAO,EACL,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { themeToCSS, injectThemeCSS, getCurrentThemeId, setThemeId, oklchToCSS, resolveSemanticToken, } from './lib/theme-loader';
2
+ //# sourceMappingURL=theme-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-loader.js","sourceRoot":"","sources":["../../src/theme-loader.ts"],"names":[],"mappings":"AASA,OAAO,EACL,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,oBAAoB,GACrB,MAAM,oBAAoB,CAAC"}
@@ -10,7 +10,7 @@ import {
10
10
  Input,
11
11
  Label,
12
12
  Separator
13
- } from "../chunk-RWYATDH5.mjs";
13
+ } from "../chunk-VV6WUMYC.mjs";
14
14
 
15
15
  // src/templates/types.ts
16
16
  var DEFAULT_RESPONSIVE_LAYOUT = {
@@ -0,0 +1,71 @@
1
+ interface ThemeDefinition {
2
+ id: string;
3
+ name: string;
4
+ schemaVersion: string;
5
+ tokens: {
6
+ atomic: {
7
+ color: {
8
+ brand?: Record<string, OKLCHColor>;
9
+ neutral?: Record<string, OKLCHColor>;
10
+ accent?: Record<string, OKLCHColor>;
11
+ white?: OKLCHColor;
12
+ };
13
+ spacing: Record<string, string>;
14
+ radius: Record<string, string>;
15
+ };
16
+ semantic: {
17
+ background: {
18
+ canvas: string;
19
+ surface: {
20
+ subtle: string;
21
+ default: string;
22
+ emphasis: string;
23
+ };
24
+ brand: {
25
+ subtle: string;
26
+ default: string;
27
+ emphasis: string;
28
+ };
29
+ };
30
+ border: {
31
+ default: {
32
+ subtle: string;
33
+ default: string;
34
+ emphasis: string;
35
+ };
36
+ };
37
+ text?: {
38
+ primary: string;
39
+ secondary: string;
40
+ muted: string;
41
+ };
42
+ };
43
+ };
44
+ recipes?: Record<string, any>;
45
+ stateLayer?: {
46
+ hover?: {
47
+ opacity: number;
48
+ };
49
+ disabled?: {
50
+ opacity: number;
51
+ contentOpacity: number;
52
+ };
53
+ };
54
+ typography?: {
55
+ fontFamily?: Record<string, string>;
56
+ fontWeight?: Record<string, string>;
57
+ };
58
+ }
59
+ interface OKLCHColor {
60
+ l: number;
61
+ c: number;
62
+ h: number;
63
+ }
64
+ declare function oklchToCSS(color: OKLCHColor): string;
65
+ declare function resolveSemanticToken(reference: string, theme: ThemeDefinition): OKLCHColor | string;
66
+ declare function themeToCSS(theme: ThemeDefinition): string;
67
+ declare function injectThemeCSS(theme: ThemeDefinition): void;
68
+ declare function getCurrentThemeId(): string | null;
69
+ declare function setThemeId(themeId: string): void;
70
+
71
+ export { type OKLCHColor, type ThemeDefinition, getCurrentThemeId, injectThemeCSS, oklchToCSS, resolveSemanticToken, setThemeId, themeToCSS };
@@ -0,0 +1,150 @@
1
+ // src/lib/theme-loader.ts
2
+ function oklchToCSS(color) {
3
+ return `oklch(${color.l} ${color.c} ${color.h})`;
4
+ }
5
+ function resolveSemanticToken(reference, theme) {
6
+ const parts = reference.split(".");
7
+ if (parts[0] !== "atomic") {
8
+ return reference;
9
+ }
10
+ let current = theme.tokens;
11
+ for (const part of parts) {
12
+ if (current && typeof current === "object") {
13
+ current = current[part];
14
+ } else {
15
+ return reference;
16
+ }
17
+ }
18
+ return current;
19
+ }
20
+ function getWhiteColor(theme) {
21
+ const { color } = theme.tokens.atomic;
22
+ if (color.neutral && "white" in color.neutral) {
23
+ return color.neutral.white;
24
+ }
25
+ if (color.white) {
26
+ return color.white;
27
+ }
28
+ return { l: 1, c: 0, h: 0 };
29
+ }
30
+ function themeToCSS(theme) {
31
+ const { tokens } = theme;
32
+ const white = getWhiteColor(theme);
33
+ const resolveColor = (ref) => {
34
+ const resolved = resolveSemanticToken(ref, theme);
35
+ if (typeof resolved === "object" && "l" in resolved) {
36
+ return oklchToCSS(resolved);
37
+ }
38
+ return String(resolved);
39
+ };
40
+ const textPrimary = tokens.semantic.text ? resolveColor(tokens.semantic.text.primary) : tokens.atomic.color.neutral?.[900] ? oklchToCSS(tokens.atomic.color.neutral[900]) : oklchToCSS({ l: 0.12, c: 0.01, h: 0 });
41
+ const textSecondary = tokens.semantic.text ? resolveColor(tokens.semantic.text.secondary) : tokens.atomic.color.neutral?.[500] ? oklchToCSS(tokens.atomic.color.neutral[500]) : oklchToCSS({ l: 0.58, c: 0.02, h: 0 });
42
+ const textTertiary = tokens.semantic.text?.muted ? resolveColor(tokens.semantic.text.muted) : tokens.atomic.color.neutral?.[400] ? oklchToCSS(tokens.atomic.color.neutral[400]) : oklchToCSS({ l: 0.72, c: 0.02, h: 0 });
43
+ const css = `
44
+ :root, [data-theme="${theme.id}"] {
45
+ /* ========================================
46
+ Component Tokens (@framingui/ui \uCEF4\uD3EC\uB10C\uD2B8\uC6A9)
47
+ ======================================== */
48
+ --bg-background: ${resolveColor(tokens.semantic.background.canvas)};
49
+ --bg-foreground: ${textPrimary};
50
+
51
+ --bg-card: ${resolveColor(tokens.semantic.background.surface.default)};
52
+ --bg-card-foreground: ${textPrimary};
53
+
54
+ --bg-popover: ${resolveColor(tokens.semantic.background.surface.default)};
55
+ --bg-popover-foreground: ${textPrimary};
56
+
57
+ --bg-primary: ${resolveColor(tokens.semantic.background.brand.default)};
58
+ --bg-primary-foreground: ${oklchToCSS(white)};
59
+
60
+ --bg-secondary: ${resolveColor(tokens.semantic.background.surface.emphasis)};
61
+ --bg-secondary-foreground: ${textPrimary};
62
+
63
+ --bg-muted: ${resolveColor(tokens.semantic.background.surface.subtle)};
64
+ --bg-muted-foreground: ${textSecondary};
65
+
66
+ --bg-accent: ${resolveColor(tokens.semantic.background.surface.emphasis)};
67
+ --bg-accent-foreground: ${textPrimary};
68
+
69
+ --bg-destructive: ${oklchToCSS({ l: 0.5, c: 0.2, h: 30 })}; /* Default red */
70
+ --bg-destructive-foreground: ${oklchToCSS(white)};
71
+
72
+ --bg-base: ${resolveColor(tokens.semantic.background.canvas)};
73
+ --bg-success: ${resolveColor(tokens.semantic.background.brand.emphasis)};
74
+
75
+ /* ========================================
76
+ Border Tokens
77
+ ======================================== */
78
+ --border-default: ${resolveColor(tokens.semantic.border.default.default)};
79
+ --border-input: ${resolveColor(tokens.semantic.border.default.subtle)};
80
+ --border-ring: ${resolveColor(tokens.semantic.background.brand.default)};
81
+ --border-border: ${resolveColor(tokens.semantic.border.default.default)};
82
+ --border-primary: ${resolveColor(tokens.semantic.background.brand.default)};
83
+
84
+ /* ========================================
85
+ Page Semantic Tokens (\uD398\uC774\uC9C0 \uD15C\uD50C\uB9BF \uC778\uB77C\uC778 \uC2A4\uD0C0\uC77C\uC6A9)
86
+ ======================================== */
87
+ --bg-canvas: ${resolveColor(tokens.semantic.background.canvas)};
88
+ --bg-surface: ${resolveColor(tokens.semantic.background.surface.default)};
89
+ --text-primary: ${textPrimary};
90
+ --text-secondary: ${textSecondary};
91
+ --text-tertiary: ${textTertiary};
92
+ --text-foreground: ${textPrimary};
93
+ --text-card-foreground: ${textPrimary};
94
+ --text-popover-foreground: ${textPrimary};
95
+ --text-muted-foreground: ${textSecondary};
96
+ --text-link: ${resolveColor(tokens.semantic.background.brand.default)};
97
+ --text-success: ${resolveColor(tokens.semantic.background.brand.emphasis)};
98
+ --text-destructive: ${oklchToCSS({ l: 0.5, c: 0.2, h: 30 })};
99
+ --action-primary: ${textPrimary};
100
+ --action-primary-text: ${oklchToCSS(white)};
101
+ --border-emphasis: ${resolveColor(tokens.semantic.border.default.emphasis)};
102
+
103
+ /* ========================================
104
+ Radius Tokens
105
+ ======================================== */
106
+ ${Object.entries(tokens.atomic.radius).map(([key, val]) => `--radius-${key}: ${val};`).join("\n ")}
107
+
108
+ /* ========================================
109
+ Spacing Tokens
110
+ ======================================== */
111
+ ${Object.entries(tokens.atomic.spacing).map(([key, val]) => `--spacing-${key}: ${val};`).join("\n ")}
112
+ }
113
+ `;
114
+ return css.trim();
115
+ }
116
+ function injectThemeCSS(theme) {
117
+ if (typeof document === "undefined") {
118
+ return;
119
+ }
120
+ const css = themeToCSS(theme);
121
+ const existingStyle = document.getElementById("tekton-theme");
122
+ if (existingStyle) {
123
+ existingStyle.remove();
124
+ }
125
+ const style = document.createElement("style");
126
+ style.id = "tekton-theme";
127
+ style.textContent = css;
128
+ document.head.appendChild(style);
129
+ }
130
+ function getCurrentThemeId() {
131
+ if (typeof document === "undefined") {
132
+ return null;
133
+ }
134
+ const root = document.documentElement;
135
+ return root.getAttribute("data-theme");
136
+ }
137
+ function setThemeId(themeId) {
138
+ if (typeof document === "undefined") {
139
+ return;
140
+ }
141
+ document.documentElement.setAttribute("data-theme", themeId);
142
+ }
143
+ export {
144
+ getCurrentThemeId,
145
+ injectThemeCSS,
146
+ oklchToCSS,
147
+ resolveSemanticToken,
148
+ setThemeId,
149
+ themeToCSS
150
+ };