@sykoramaros/marosh-components 0.1.15 → 0.2.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/dist/cli/index.cjs +3 -3
- package/dist/index.d.ts +1006 -6
- package/dist/index.js +26 -25
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2662 -3614
- package/dist/index.mjs.map +1 -1
- package/package.json +22 -7
- package/src/components/basicComponents/CustomButton.stories.tsx +60 -0
- package/src/components/basicComponents/Footer.stories.tsx +47 -0
- package/src/components/basicComponents/Footer.tsx +25 -14
- package/src/components/basicComponents/MainNav.stories.tsx +34 -0
- package/src/components/basicComponents/MainNav.tsx +24 -6
- package/src/components/basicComponents/MainSidebarLayout.stories.tsx +77 -0
- package/src/components/basicComponents/MainSidebarLayout.tsx +32 -27
- package/src/components/basicComponents/Switcher.stories.tsx +42 -0
- package/src/components/basicComponents/Switcher.tsx +2 -0
- package/src/index.ts +26 -1
- package/src/providers/BaseUrlProvider.tsx +24 -0
- package/src/providers/ThemeContextProvider.tsx +272 -0
- package/src/themes/bubblegum.json +134 -0
- package/src/themes/default.json +134 -0
- package/src/themes/index.ts +17 -0
- package/src/themes/marosh-theme.json +135 -0
- package/src/themes/nature.json +134 -0
- package/src/themes/new-theme.json +139 -0
- package/src/themes/retro-arcade.json +134 -0
- package/src/themes/tangerine.json +134 -0
- package/src/themes/themes/bubblegum.json +134 -0
- package/src/themes/themes/default.json +134 -0
- package/src/themes/themes/marosh-theme.json +135 -0
- package/src/themes/themes/nature.json +134 -0
- package/src/themes/themes/new-theme.json +139 -0
- package/src/themes/themes/retro-arcade.json +134 -0
- package/src/themes/themes/tangerine.json +134 -0
- package/src/vite-env.d.ts +1 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
// src/providers/ThemeContextProvider.tsx
|
|
2
|
+
import React, { createContext, useContext, useEffect, useRef, useState } from "react"
|
|
3
|
+
|
|
4
|
+
// Typy - EXPORTUJ JE!
|
|
5
|
+
export type ThemeMode = "light" | "dark"
|
|
6
|
+
|
|
7
|
+
export interface ThemeConfig {
|
|
8
|
+
name: string
|
|
9
|
+
cssVars: {
|
|
10
|
+
theme: Record<string, string>
|
|
11
|
+
light: Record<string, string>
|
|
12
|
+
dark: Record<string, string>
|
|
13
|
+
}
|
|
14
|
+
css?: {
|
|
15
|
+
"@layer base"?: Record<string, any>
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type ThemeRegistry = Record<string, ThemeConfig>
|
|
20
|
+
|
|
21
|
+
// Context
|
|
22
|
+
interface ThemeContextType {
|
|
23
|
+
isDarkMode: boolean
|
|
24
|
+
setIsDarkMode: (value: boolean) => void
|
|
25
|
+
themeName: string
|
|
26
|
+
setThemeName: (value: string) => void
|
|
27
|
+
availableThemes: string[]
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const ThemeContext = createContext<ThemeContextType | undefined>(undefined)
|
|
31
|
+
|
|
32
|
+
export const useThemeContext = () => {
|
|
33
|
+
const context = useContext(ThemeContext)
|
|
34
|
+
if (!context) {
|
|
35
|
+
throw new Error("useThemeContext must be used within ThemeContextProvider")
|
|
36
|
+
}
|
|
37
|
+
return context
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Provider Props
|
|
41
|
+
export interface ThemeContextProviderProps {
|
|
42
|
+
children: React.ReactNode
|
|
43
|
+
themes: ThemeRegistry // <- Uživatel předá své themes!
|
|
44
|
+
defaultTheme?: string
|
|
45
|
+
defaultMode?: ThemeMode
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Provider
|
|
49
|
+
export const ThemeContextProvider = ({
|
|
50
|
+
children,
|
|
51
|
+
themes,
|
|
52
|
+
defaultTheme,
|
|
53
|
+
defaultMode = "light",
|
|
54
|
+
}: ThemeContextProviderProps) => {
|
|
55
|
+
// Určit default theme
|
|
56
|
+
const initialTheme = defaultTheme || Object.keys(themes)[0] || "default"
|
|
57
|
+
|
|
58
|
+
const [isDarkMode, setIsDarkMode] = useState(defaultMode === "dark")
|
|
59
|
+
const [themeName, setThemeName] = useState<string>(initialTheme)
|
|
60
|
+
const appliedVarsRef = useRef<string[]>([])
|
|
61
|
+
|
|
62
|
+
const mode: ThemeMode = isDarkMode ? "dark" : "light"
|
|
63
|
+
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
const theme = themes[themeName] || Object.values(themes)[0]
|
|
66
|
+
|
|
67
|
+
if (!theme) {
|
|
68
|
+
console.warn(`Theme "${themeName}" not found`)
|
|
69
|
+
return
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Smazat CSS proměnné předchozího tématu
|
|
73
|
+
appliedVarsRef.current.forEach((key) => {
|
|
74
|
+
document.documentElement.style.removeProperty(key)
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
const newKeys: string[] = []
|
|
78
|
+
|
|
79
|
+
// Aplikovat CSS proměnné pro mode (light/dark)
|
|
80
|
+
Object.entries(theme.cssVars[mode] || {}).forEach(([key, value]) => {
|
|
81
|
+
document.documentElement.style.setProperty(`--${key}`, value)
|
|
82
|
+
newKeys.push(`--${key}`)
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
// Aplikovat CSS proměnné z theme (včetně fontů)
|
|
86
|
+
Object.entries(theme.cssVars.theme || {}).forEach(([key, value]) => {
|
|
87
|
+
document.documentElement.style.setProperty(`--${key}`, value)
|
|
88
|
+
newKeys.push(`--${key}`)
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
appliedVarsRef.current = newKeys
|
|
92
|
+
|
|
93
|
+
// Vytvořit a přidat @layer base styly
|
|
94
|
+
const styleId = "theme-base-styles"
|
|
95
|
+
let styleElement = document.getElementById(styleId) as HTMLStyleElement
|
|
96
|
+
|
|
97
|
+
if (!styleElement) {
|
|
98
|
+
styleElement = document.createElement("style")
|
|
99
|
+
styleElement.id = styleId
|
|
100
|
+
document.head.appendChild(styleElement)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Převést objekt @layer base na CSS řetězec
|
|
104
|
+
const baseStyles = theme.css?.["@layer base"]
|
|
105
|
+
if (baseStyles) {
|
|
106
|
+
const cssString = Object.entries(baseStyles)
|
|
107
|
+
.map(([selector, styles]) => {
|
|
108
|
+
const styleString = Object.entries(styles as Record<string, string>)
|
|
109
|
+
.map(([prop, val]) => `${prop}: ${val};`)
|
|
110
|
+
.join(" ")
|
|
111
|
+
return `${selector} { ${styleString} }`
|
|
112
|
+
})
|
|
113
|
+
.join("\n")
|
|
114
|
+
|
|
115
|
+
styleElement.textContent = `@layer base { ${cssString} }`
|
|
116
|
+
} else {
|
|
117
|
+
styleElement.textContent = ""
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Nastavit data atributy
|
|
121
|
+
document.documentElement.setAttribute("data-theme", themeName)
|
|
122
|
+
document.documentElement.setAttribute("data-mode", mode)
|
|
123
|
+
}, [themeName, mode, themes])
|
|
124
|
+
|
|
125
|
+
const availableThemes = Object.keys(themes)
|
|
126
|
+
|
|
127
|
+
return (
|
|
128
|
+
<ThemeContext.Provider
|
|
129
|
+
value={{
|
|
130
|
+
isDarkMode,
|
|
131
|
+
setIsDarkMode,
|
|
132
|
+
themeName,
|
|
133
|
+
setThemeName,
|
|
134
|
+
availableThemes,
|
|
135
|
+
}}
|
|
136
|
+
>
|
|
137
|
+
{children}
|
|
138
|
+
</ThemeContext.Provider>
|
|
139
|
+
)
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// // src/providers/ThemeContextProvider.tsx
|
|
143
|
+
// import React, { createContext, useContext, useEffect, useState } from "react"
|
|
144
|
+
|
|
145
|
+
// // Přímý import JSON
|
|
146
|
+
// import defaultJson from "@/themes/default.json"
|
|
147
|
+
// import maroshThemeJson from "@/themes/marosh-theme.json"
|
|
148
|
+
// import newThemeJson from "@/themes/new-theme.json"
|
|
149
|
+
// import natureJson from "@/themes/nature.json"
|
|
150
|
+
// import retroArcadeJson from "@/themes/retro-arcade.json"
|
|
151
|
+
// import tangerineJson from "@/themes/tangerine.json"
|
|
152
|
+
// import bubblegumJson from "@/themes/bubblegum.json"
|
|
153
|
+
|
|
154
|
+
// // Typy
|
|
155
|
+
// type ThemeMode = "light" | "dark"
|
|
156
|
+
// type ThemeName =
|
|
157
|
+
// | "default"
|
|
158
|
+
// | "marosh"
|
|
159
|
+
// | "newTheme"
|
|
160
|
+
// | "nature"
|
|
161
|
+
// | "retro-arcade"
|
|
162
|
+
// | "tangerine"
|
|
163
|
+
// | "bubblegum"
|
|
164
|
+
|
|
165
|
+
// interface ThemeConfig {
|
|
166
|
+
// name: string
|
|
167
|
+
// cssVars: {
|
|
168
|
+
// theme: Record<string, string>
|
|
169
|
+
// light: Record<string, string>
|
|
170
|
+
// dark: Record<string, string>
|
|
171
|
+
// }
|
|
172
|
+
// css: {
|
|
173
|
+
// "@layer base": Record<string, any>
|
|
174
|
+
// }
|
|
175
|
+
// }
|
|
176
|
+
|
|
177
|
+
// // Data
|
|
178
|
+
// const themeData = {
|
|
179
|
+
// default: defaultJson as ThemeConfig,
|
|
180
|
+
// marosh: maroshThemeJson as ThemeConfig,
|
|
181
|
+
// newTheme: newThemeJson as ThemeConfig,
|
|
182
|
+
// nature: natureJson as ThemeConfig,
|
|
183
|
+
// "retro-arcade": retroArcadeJson as ThemeConfig,
|
|
184
|
+
// tangerine: tangerineJson as ThemeConfig,
|
|
185
|
+
// bubblegum: bubblegumJson as ThemeConfig,
|
|
186
|
+
// }
|
|
187
|
+
|
|
188
|
+
// // Context
|
|
189
|
+
// interface ThemeContextType {
|
|
190
|
+
// isDarkMode: boolean
|
|
191
|
+
// setIsDarkMode: (value: boolean) => void
|
|
192
|
+
// themeName: ThemeName
|
|
193
|
+
// setThemeName: (value: ThemeName) => void
|
|
194
|
+
// }
|
|
195
|
+
|
|
196
|
+
// const ThemeContext = createContext<ThemeContextType>({
|
|
197
|
+
// isDarkMode: false,
|
|
198
|
+
// setIsDarkMode: () => {},
|
|
199
|
+
// themeName: "marosh",
|
|
200
|
+
// setThemeName: () => {},
|
|
201
|
+
// })
|
|
202
|
+
|
|
203
|
+
// export const useThemeContext = () => useContext(ThemeContext)
|
|
204
|
+
|
|
205
|
+
// // Provider
|
|
206
|
+
// export const ThemeContextProvider = ({
|
|
207
|
+
// children,
|
|
208
|
+
// defaultTheme = "marosh",
|
|
209
|
+
// }: {
|
|
210
|
+
// children: React.ReactNode
|
|
211
|
+
// defaultTheme?: ThemeName
|
|
212
|
+
// }) => {
|
|
213
|
+
// const [isDarkMode, setIsDarkMode] = useState(false)
|
|
214
|
+
// const [themeName, setThemeName] = useState<ThemeName>(defaultTheme)
|
|
215
|
+
|
|
216
|
+
// const mode: ThemeMode = isDarkMode ? "dark" : "light"
|
|
217
|
+
|
|
218
|
+
// console.log("ThemeContextProvider - isDarkMode:", isDarkMode, "mode:", mode)
|
|
219
|
+
|
|
220
|
+
// useEffect(() => {
|
|
221
|
+
// const theme = themeData[themeName] || themeData.default
|
|
222
|
+
|
|
223
|
+
// // Aplikovat CSS proměnné
|
|
224
|
+
// Object.entries(theme.cssVars[mode]).forEach(([key, value]) => {
|
|
225
|
+
// document.documentElement.style.setProperty(`--${key}`, value)
|
|
226
|
+
// })
|
|
227
|
+
|
|
228
|
+
// // Aplikovat CSS proměnné z theme (včetně fontů)
|
|
229
|
+
// Object.entries(theme.cssVars.theme).forEach(([key, value]) => {
|
|
230
|
+
// document.documentElement.style.setProperty(`--${key}`, value)
|
|
231
|
+
// })
|
|
232
|
+
|
|
233
|
+
// // Vytvořit a přidat @layer base styly
|
|
234
|
+
// const styleId = "theme-base-styles"
|
|
235
|
+
// let styleElement = document.getElementById(styleId) as HTMLStyleElement
|
|
236
|
+
|
|
237
|
+
// if (!styleElement) {
|
|
238
|
+
// styleElement = document.createElement("style")
|
|
239
|
+
// styleElement.id = styleId
|
|
240
|
+
// document.head.appendChild(styleElement)
|
|
241
|
+
// }
|
|
242
|
+
|
|
243
|
+
// // Převést objekt @layer base na CSS řetězec
|
|
244
|
+
// const baseStyles = theme.css?.["@layer base"]
|
|
245
|
+
// if (baseStyles) {
|
|
246
|
+
// const cssString = Object.entries(baseStyles)
|
|
247
|
+
// .map(([selector, styles]) => {
|
|
248
|
+
// const styleString = Object.entries(styles as Record<string, string>)
|
|
249
|
+
// .map(([prop, val]) => `${prop}: ${val};`)
|
|
250
|
+
// .join(" ")
|
|
251
|
+
// return `${selector} { ${styleString} }`
|
|
252
|
+
// })
|
|
253
|
+
// .join("\n")
|
|
254
|
+
|
|
255
|
+
// styleElement.textContent = `@layer base { ${cssString} }`
|
|
256
|
+
// } else {
|
|
257
|
+
// styleElement.textContent = ""
|
|
258
|
+
// }
|
|
259
|
+
|
|
260
|
+
// // Nastavit data atributy
|
|
261
|
+
// document.documentElement.setAttribute("data-theme", themeName)
|
|
262
|
+
// document.documentElement.setAttribute("data-mode", mode)
|
|
263
|
+
// }, [themeName, mode])
|
|
264
|
+
|
|
265
|
+
// return (
|
|
266
|
+
// <ThemeContext.Provider
|
|
267
|
+
// value={{ isDarkMode, setIsDarkMode, themeName, setThemeName }}
|
|
268
|
+
// >
|
|
269
|
+
// {children}
|
|
270
|
+
// </ThemeContext.Provider>
|
|
271
|
+
// )
|
|
272
|
+
// }
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "bubblegum",
|
|
4
|
+
"type": "registry:style",
|
|
5
|
+
"css": {
|
|
6
|
+
"@layer base": {
|
|
7
|
+
"body": {
|
|
8
|
+
"letter-spacing": "var(--tracking-normal)"
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"cssVars": {
|
|
13
|
+
"theme": {
|
|
14
|
+
"font-sans": "Poppins, sans-serif",
|
|
15
|
+
"font-mono": "Fira Code, monospace",
|
|
16
|
+
"font-serif": "Lora, serif",
|
|
17
|
+
"radius": "0.4rem",
|
|
18
|
+
"tracking-tighter": "calc(var(--tracking-normal) - 0.05em)",
|
|
19
|
+
"tracking-tight": "calc(var(--tracking-normal) - 0.025em)",
|
|
20
|
+
"tracking-wide": "calc(var(--tracking-normal) + 0.025em)",
|
|
21
|
+
"tracking-wider": "calc(var(--tracking-normal) + 0.05em)",
|
|
22
|
+
"tracking-widest": "calc(var(--tracking-normal) + 0.1em)"
|
|
23
|
+
},
|
|
24
|
+
"light": {
|
|
25
|
+
"background": "oklch(0.9399 0.0203 345.6985)",
|
|
26
|
+
"foreground": "oklch(0.4712 0 0)",
|
|
27
|
+
"card": "oklch(0.9498 0.0500 86.8891)",
|
|
28
|
+
"card-foreground": "oklch(0.4712 0 0)",
|
|
29
|
+
"popover": "oklch(1.0000 0 0)",
|
|
30
|
+
"popover-foreground": "oklch(0.4712 0 0)",
|
|
31
|
+
"primary": "oklch(0.6209 0.1801 348.1385)",
|
|
32
|
+
"primary-foreground": "oklch(1.0000 0 0)",
|
|
33
|
+
"secondary": "oklch(0.8095 0.0694 198.1863)",
|
|
34
|
+
"secondary-foreground": "oklch(0.3211 0 0)",
|
|
35
|
+
"muted": "oklch(0.8800 0.0504 212.0952)",
|
|
36
|
+
"muted-foreground": "oklch(0.5795 0 0)",
|
|
37
|
+
"accent": "oklch(0.9195 0.0801 87.6670)",
|
|
38
|
+
"accent-foreground": "oklch(0.3211 0 0)",
|
|
39
|
+
"destructive": "oklch(0.7091 0.1697 21.9551)",
|
|
40
|
+
"destructive-foreground": "oklch(1.0000 0 0)",
|
|
41
|
+
"border": "oklch(0.6209 0.1801 348.1385)",
|
|
42
|
+
"input": "oklch(0.9189 0 0)",
|
|
43
|
+
"ring": "oklch(0.7002 0.1597 350.7532)",
|
|
44
|
+
"chart-1": "oklch(0.7002 0.1597 350.7532)",
|
|
45
|
+
"chart-2": "oklch(0.8189 0.0799 212.0892)",
|
|
46
|
+
"chart-3": "oklch(0.9195 0.0801 87.6670)",
|
|
47
|
+
"chart-4": "oklch(0.7998 0.1110 348.1791)",
|
|
48
|
+
"chart-5": "oklch(0.6197 0.1899 353.9091)",
|
|
49
|
+
"radius": "0.4rem",
|
|
50
|
+
"sidebar": "oklch(0.9140 0.0424 343.0913)",
|
|
51
|
+
"sidebar-foreground": "oklch(0.3211 0 0)",
|
|
52
|
+
"sidebar-primary": "oklch(0.6559 0.2118 354.3084)",
|
|
53
|
+
"sidebar-primary-foreground": "oklch(1.0000 0 0)",
|
|
54
|
+
"sidebar-accent": "oklch(0.8228 0.1095 346.0184)",
|
|
55
|
+
"sidebar-accent-foreground": "oklch(0.3211 0 0)",
|
|
56
|
+
"sidebar-border": "oklch(0.9464 0.0327 307.1745)",
|
|
57
|
+
"sidebar-ring": "oklch(0.6559 0.2118 354.3084)",
|
|
58
|
+
"font-sans": "Poppins, sans-serif",
|
|
59
|
+
"font-serif": "Lora, serif",
|
|
60
|
+
"font-mono": "Fira Code, monospace",
|
|
61
|
+
"shadow-color": "hsl(325.78 58.18% 56.86% / 0.5)",
|
|
62
|
+
"shadow-opacity": "1.0",
|
|
63
|
+
"shadow-blur": "0px",
|
|
64
|
+
"shadow-spread": "0px",
|
|
65
|
+
"shadow-offset-x": "3px",
|
|
66
|
+
"shadow-offset-y": "3px",
|
|
67
|
+
"letter-spacing": "0em",
|
|
68
|
+
"spacing": "0.25rem",
|
|
69
|
+
"shadow-2xs": "3px 3px 0px 0px hsl(325.7800 58.1800% 56.8600% / 0.50)",
|
|
70
|
+
"shadow-xs": "3px 3px 0px 0px hsl(325.7800 58.1800% 56.8600% / 0.50)",
|
|
71
|
+
"shadow-sm": "3px 3px 0px 0px hsl(325.7800 58.1800% 56.8600% / 1.00), 3px 1px 2px -1px hsl(325.7800 58.1800% 56.8600% / 1.00)",
|
|
72
|
+
"shadow": "3px 3px 0px 0px hsl(325.7800 58.1800% 56.8600% / 1.00), 3px 1px 2px -1px hsl(325.7800 58.1800% 56.8600% / 1.00)",
|
|
73
|
+
"shadow-md": "3px 3px 0px 0px hsl(325.7800 58.1800% 56.8600% / 1.00), 3px 2px 4px -1px hsl(325.7800 58.1800% 56.8600% / 1.00)",
|
|
74
|
+
"shadow-lg": "3px 3px 0px 0px hsl(325.7800 58.1800% 56.8600% / 1.00), 3px 4px 6px -1px hsl(325.7800 58.1800% 56.8600% / 1.00)",
|
|
75
|
+
"shadow-xl": "3px 3px 0px 0px hsl(325.7800 58.1800% 56.8600% / 1.00), 3px 8px 10px -1px hsl(325.7800 58.1800% 56.8600% / 1.00)",
|
|
76
|
+
"shadow-2xl": "3px 3px 0px 0px hsl(325.7800 58.1800% 56.8600% / 2.50)",
|
|
77
|
+
"tracking-normal": "0em"
|
|
78
|
+
},
|
|
79
|
+
"dark": {
|
|
80
|
+
"background": "oklch(0.2497 0.0305 234.1628)",
|
|
81
|
+
"foreground": "oklch(0.9306 0.0197 349.0785)",
|
|
82
|
+
"card": "oklch(0.2902 0.0299 233.5352)",
|
|
83
|
+
"card-foreground": "oklch(0.9306 0.0197 349.0785)",
|
|
84
|
+
"popover": "oklch(0.2902 0.0299 233.5352)",
|
|
85
|
+
"popover-foreground": "oklch(0.9306 0.0197 349.0785)",
|
|
86
|
+
"primary": "oklch(0.9195 0.0801 87.6670)",
|
|
87
|
+
"primary-foreground": "oklch(0.2497 0.0305 234.1628)",
|
|
88
|
+
"secondary": "oklch(0.7794 0.0803 4.1330)",
|
|
89
|
+
"secondary-foreground": "oklch(0.2497 0.0305 234.1628)",
|
|
90
|
+
"muted": "oklch(0.2713 0.0086 255.5780)",
|
|
91
|
+
"muted-foreground": "oklch(0.7794 0.0803 4.1330)",
|
|
92
|
+
"accent": "oklch(0.6699 0.0988 356.9762)",
|
|
93
|
+
"accent-foreground": "oklch(0.9306 0.0197 349.0785)",
|
|
94
|
+
"destructive": "oklch(0.6702 0.1806 350.3599)",
|
|
95
|
+
"destructive-foreground": "oklch(0.2497 0.0305 234.1628)",
|
|
96
|
+
"border": "oklch(0.3907 0.0399 242.2181)",
|
|
97
|
+
"input": "oklch(0.3093 0.0305 232.0027)",
|
|
98
|
+
"ring": "oklch(0.6998 0.0896 201.8672)",
|
|
99
|
+
"chart-1": "oklch(0.6998 0.0896 201.8672)",
|
|
100
|
+
"chart-2": "oklch(0.7794 0.0803 4.1330)",
|
|
101
|
+
"chart-3": "oklch(0.6699 0.0988 356.9762)",
|
|
102
|
+
"chart-4": "oklch(0.4408 0.0702 217.0848)",
|
|
103
|
+
"chart-5": "oklch(0.2713 0.0086 255.5780)",
|
|
104
|
+
"radius": "0.4rem",
|
|
105
|
+
"sidebar": "oklch(0.2303 0.0270 235.9743)",
|
|
106
|
+
"sidebar-foreground": "oklch(0.9670 0.0029 264.5419)",
|
|
107
|
+
"sidebar-primary": "oklch(0.6559 0.2118 354.3084)",
|
|
108
|
+
"sidebar-primary-foreground": "oklch(1.0000 0 0)",
|
|
109
|
+
"sidebar-accent": "oklch(0.8228 0.1095 346.0184)",
|
|
110
|
+
"sidebar-accent-foreground": "oklch(0.2781 0.0296 256.8480)",
|
|
111
|
+
"sidebar-border": "oklch(0.3729 0.0306 259.7328)",
|
|
112
|
+
"sidebar-ring": "oklch(0.6559 0.2118 354.3084)",
|
|
113
|
+
"font-sans": "Poppins, sans-serif",
|
|
114
|
+
"font-serif": "Lora, serif",
|
|
115
|
+
"font-mono": "Fira Code, monospace",
|
|
116
|
+
"shadow-color": "#324859",
|
|
117
|
+
"shadow-opacity": "1.0",
|
|
118
|
+
"shadow-blur": "0px",
|
|
119
|
+
"shadow-spread": "0px",
|
|
120
|
+
"shadow-offset-x": "3px",
|
|
121
|
+
"shadow-offset-y": "3px",
|
|
122
|
+
"letter-spacing": "0em",
|
|
123
|
+
"spacing": "0.25rem",
|
|
124
|
+
"shadow-2xs": "3px 3px 0px 0px hsl(206.1538 28.0576% 27.2549% / 0.50)",
|
|
125
|
+
"shadow-xs": "3px 3px 0px 0px hsl(206.1538 28.0576% 27.2549% / 0.50)",
|
|
126
|
+
"shadow-sm": "3px 3px 0px 0px hsl(206.1538 28.0576% 27.2549% / 1.00), 3px 1px 2px -1px hsl(206.1538 28.0576% 27.2549% / 1.00)",
|
|
127
|
+
"shadow": "3px 3px 0px 0px hsl(206.1538 28.0576% 27.2549% / 1.00), 3px 1px 2px -1px hsl(206.1538 28.0576% 27.2549% / 1.00)",
|
|
128
|
+
"shadow-md": "3px 3px 0px 0px hsl(206.1538 28.0576% 27.2549% / 1.00), 3px 2px 4px -1px hsl(206.1538 28.0576% 27.2549% / 1.00)",
|
|
129
|
+
"shadow-lg": "3px 3px 0px 0px hsl(206.1538 28.0576% 27.2549% / 1.00), 3px 4px 6px -1px hsl(206.1538 28.0576% 27.2549% / 1.00)",
|
|
130
|
+
"shadow-xl": "3px 3px 0px 0px hsl(206.1538 28.0576% 27.2549% / 1.00), 3px 8px 10px -1px hsl(206.1538 28.0576% 27.2549% / 1.00)",
|
|
131
|
+
"shadow-2xl": "3px 3px 0px 0px hsl(206.1538 28.0576% 27.2549% / 2.50)"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "default",
|
|
4
|
+
"type": "registry:style",
|
|
5
|
+
"css": {
|
|
6
|
+
"@layer base": {
|
|
7
|
+
"body": {
|
|
8
|
+
"letter-spacing": "var(--tracking-normal)"
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"cssVars": {
|
|
13
|
+
"theme": {
|
|
14
|
+
"font-sans": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
|
|
15
|
+
"font-mono": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace",
|
|
16
|
+
"font-serif": "ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif",
|
|
17
|
+
"radius": "0.5rem",
|
|
18
|
+
"tracking-tighter": "calc(var(--tracking-normal) - 0.05em)",
|
|
19
|
+
"tracking-tight": "calc(var(--tracking-normal) - 0.025em)",
|
|
20
|
+
"tracking-wide": "calc(var(--tracking-normal) + 0.025em)",
|
|
21
|
+
"tracking-wider": "calc(var(--tracking-normal) + 0.05em)",
|
|
22
|
+
"tracking-widest": "calc(var(--tracking-normal) + 0.1em)"
|
|
23
|
+
},
|
|
24
|
+
"light": {
|
|
25
|
+
"background": "oklch(1 0 0)",
|
|
26
|
+
"foreground": "oklch(0.147 0.004 265.731)",
|
|
27
|
+
"card": "oklch(1 0 0)",
|
|
28
|
+
"card-foreground": "oklch(0.147 0.004 265.731)",
|
|
29
|
+
"popover": "oklch(1 0 0)",
|
|
30
|
+
"popover-foreground": "oklch(0.147 0.004 265.731)",
|
|
31
|
+
"primary": "oklch(0.216 0.006 265.755)",
|
|
32
|
+
"primary-foreground": "oklch(0.984 0.003 247.858)",
|
|
33
|
+
"secondary": "oklch(0.968 0.007 247.896)",
|
|
34
|
+
"secondary-foreground": "oklch(0.216 0.006 265.755)",
|
|
35
|
+
"muted": "oklch(0.968 0.007 247.896)",
|
|
36
|
+
"muted-foreground": "oklch(0.553 0.013 256.802)",
|
|
37
|
+
"accent": "oklch(0.968 0.007 247.896)",
|
|
38
|
+
"accent-foreground": "oklch(0.216 0.006 265.755)",
|
|
39
|
+
"destructive": "oklch(0.577 0.245 27.325)",
|
|
40
|
+
"destructive-foreground": "oklch(0.984 0.003 247.858)",
|
|
41
|
+
"border": "oklch(0.928 0.006 264.531)",
|
|
42
|
+
"input": "oklch(0.928 0.006 264.531)",
|
|
43
|
+
"ring": "oklch(0.147 0.004 265.731)",
|
|
44
|
+
"chart-1": "oklch(0.646 0.222 16.439)",
|
|
45
|
+
"chart-2": "oklch(0.6 0.118 184.704)",
|
|
46
|
+
"chart-3": "oklch(0.398 0.07 227.392)",
|
|
47
|
+
"chart-4": "oklch(0.828 0.189 84.429)",
|
|
48
|
+
"chart-5": "oklch(0.769 0.188 55.934)",
|
|
49
|
+
"radius": "0.5rem",
|
|
50
|
+
"sidebar": "oklch(0.984 0.003 247.858)",
|
|
51
|
+
"sidebar-foreground": "oklch(0.147 0.004 265.731)",
|
|
52
|
+
"sidebar-primary": "oklch(0.216 0.006 265.755)",
|
|
53
|
+
"sidebar-primary-foreground": "oklch(0.984 0.003 247.858)",
|
|
54
|
+
"sidebar-accent": "oklch(0.968 0.007 247.896)",
|
|
55
|
+
"sidebar-accent-foreground": "oklch(0.216 0.006 265.755)",
|
|
56
|
+
"sidebar-border": "oklch(0.928 0.006 264.531)",
|
|
57
|
+
"sidebar-ring": "oklch(0.147 0.004 265.731)",
|
|
58
|
+
"font-sans": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
|
|
59
|
+
"font-serif": "ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif",
|
|
60
|
+
"font-mono": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace",
|
|
61
|
+
"shadow-color": "oklch(0 0 0)",
|
|
62
|
+
"shadow-opacity": "0.1",
|
|
63
|
+
"shadow-blur": "3px",
|
|
64
|
+
"shadow-spread": "0px",
|
|
65
|
+
"shadow-offset-x": "0px",
|
|
66
|
+
"shadow-offset-y": "1px",
|
|
67
|
+
"letter-spacing": "0em",
|
|
68
|
+
"spacing": "0.25rem",
|
|
69
|
+
"shadow-2xs": "0px 1px 3px 0px oklch(0 0 0 / 0.05)",
|
|
70
|
+
"shadow-xs": "0px 1px 3px 0px oklch(0 0 0 / 0.05)",
|
|
71
|
+
"shadow-sm": "0px 1px 3px 0px oklch(0 0 0 / 0.10), 0px 1px 2px -1px oklch(0 0 0 / 0.10)",
|
|
72
|
+
"shadow": "0px 1px 3px 0px oklch(0 0 0 / 0.10), 0px 1px 2px -1px oklch(0 0 0 / 0.10)",
|
|
73
|
+
"shadow-md": "0px 1px 3px 0px oklch(0 0 0 / 0.10), 0px 2px 4px -1px oklch(0 0 0 / 0.10)",
|
|
74
|
+
"shadow-lg": "0px 1px 3px 0px oklch(0 0 0 / 0.10), 0px 4px 6px -1px oklch(0 0 0 / 0.10)",
|
|
75
|
+
"shadow-xl": "0px 1px 3px 0px oklch(0 0 0 / 0.10), 0px 8px 10px -1px oklch(0 0 0 / 0.10)",
|
|
76
|
+
"shadow-2xl": "0px 1px 3px 0px oklch(0 0 0 / 0.25)",
|
|
77
|
+
"tracking-normal": "0em"
|
|
78
|
+
},
|
|
79
|
+
"dark": {
|
|
80
|
+
"background": "oklch(0.147 0.004 265.731)",
|
|
81
|
+
"foreground": "oklch(0.984 0.003 247.858)",
|
|
82
|
+
"card": "oklch(0.147 0.004 265.731)",
|
|
83
|
+
"card-foreground": "oklch(0.984 0.003 247.858)",
|
|
84
|
+
"popover": "oklch(0.147 0.004 265.731)",
|
|
85
|
+
"popover-foreground": "oklch(0.984 0.003 247.858)",
|
|
86
|
+
"primary": "oklch(0.984 0.003 247.858)",
|
|
87
|
+
"primary-foreground": "oklch(0.216 0.006 265.755)",
|
|
88
|
+
"secondary": "oklch(0.268 0.007 260.031)",
|
|
89
|
+
"secondary-foreground": "oklch(0.984 0.003 247.858)",
|
|
90
|
+
"muted": "oklch(0.268 0.007 260.031)",
|
|
91
|
+
"muted-foreground": "oklch(0.707 0.022 261.325)",
|
|
92
|
+
"accent": "oklch(0.268 0.007 260.031)",
|
|
93
|
+
"accent-foreground": "oklch(0.984 0.003 247.858)",
|
|
94
|
+
"destructive": "oklch(0.396 0.141 25.723)",
|
|
95
|
+
"destructive-foreground": "oklch(0.984 0.003 247.858)",
|
|
96
|
+
"border": "oklch(0.268 0.007 260.031)",
|
|
97
|
+
"input": "oklch(0.268 0.007 260.031)",
|
|
98
|
+
"ring": "oklch(0.84 0.042 260.03)",
|
|
99
|
+
"chart-1": "oklch(0.488 0.243 264.376)",
|
|
100
|
+
"chart-2": "oklch(0.696 0.17 162.48)",
|
|
101
|
+
"chart-3": "oklch(0.769 0.188 55.934)",
|
|
102
|
+
"chart-4": "oklch(0.627 0.265 303.9)",
|
|
103
|
+
"chart-5": "oklch(0.645 0.246 16.439)",
|
|
104
|
+
"radius": "0.5rem",
|
|
105
|
+
"sidebar": "oklch(0.147 0.004 265.731)",
|
|
106
|
+
"sidebar-foreground": "oklch(0.984 0.003 247.858)",
|
|
107
|
+
"sidebar-primary": "oklch(0.984 0.003 247.858)",
|
|
108
|
+
"sidebar-primary-foreground": "oklch(0.216 0.006 265.755)",
|
|
109
|
+
"sidebar-accent": "oklch(0.268 0.007 260.031)",
|
|
110
|
+
"sidebar-accent-foreground": "oklch(0.984 0.003 247.858)",
|
|
111
|
+
"sidebar-border": "oklch(0.268 0.007 260.031)",
|
|
112
|
+
"sidebar-ring": "oklch(0.84 0.042 260.03)",
|
|
113
|
+
"font-sans": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
|
|
114
|
+
"font-serif": "ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif",
|
|
115
|
+
"font-mono": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace",
|
|
116
|
+
"shadow-color": "oklch(0 0 0)",
|
|
117
|
+
"shadow-opacity": "0.1",
|
|
118
|
+
"shadow-blur": "3px",
|
|
119
|
+
"shadow-spread": "0px",
|
|
120
|
+
"shadow-offset-x": "0px",
|
|
121
|
+
"shadow-offset-y": "1px",
|
|
122
|
+
"letter-spacing": "0em",
|
|
123
|
+
"spacing": "0.25rem",
|
|
124
|
+
"shadow-2xs": "0px 1px 3px 0px oklch(0 0 0 / 0.05)",
|
|
125
|
+
"shadow-xs": "0px 1px 3px 0px oklch(0 0 0 / 0.05)",
|
|
126
|
+
"shadow-sm": "0px 1px 3px 0px oklch(0 0 0 / 0.10), 0px 1px 2px -1px oklch(0 0 0 / 0.10)",
|
|
127
|
+
"shadow": "0px 1px 3px 0px oklch(0 0 0 / 0.10), 0px 1px 2px -1px oklch(0 0 0 / 0.10)",
|
|
128
|
+
"shadow-md": "0px 1px 3px 0px oklch(0 0 0 / 0.10), 0px 2px 4px -1px oklch(0 0 0 / 0.10)",
|
|
129
|
+
"shadow-lg": "0px 1px 3px 0px oklch(0 0 0 / 0.10), 0px 4px 6px -1px oklch(0 0 0 / 0.10)",
|
|
130
|
+
"shadow-xl": "0px 1px 3px 0px oklch(0 0 0 / 0.10), 0px 8px 10px -1px oklch(0 0 0 / 0.10)",
|
|
131
|
+
"shadow-2xl": "0px 1px 3px 0px oklch(0 0 0 / 0.25)"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import maroshTheme from "./marosh-theme.json"
|
|
2
|
+
import defaultTheme from "./default.json"
|
|
3
|
+
import bubblegumTheme from "./bubblegum.json"
|
|
4
|
+
import natureTheme from "./nature.json"
|
|
5
|
+
import retroArcadeTheme from "./retro-arcade.json"
|
|
6
|
+
import tangerineTheme from "./tangerine.json"
|
|
7
|
+
import newTheme from "./new-theme.json"
|
|
8
|
+
|
|
9
|
+
export const themeData = {
|
|
10
|
+
default: defaultTheme,
|
|
11
|
+
marosh: maroshTheme,
|
|
12
|
+
bubblegum: bubblegumTheme,
|
|
13
|
+
nature: natureTheme,
|
|
14
|
+
"retro-arcade": retroArcadeTheme,
|
|
15
|
+
tangerine: tangerineTheme,
|
|
16
|
+
"new-theme": newTheme,
|
|
17
|
+
}
|