@vuetify/nightly 3.8.0-master.2025-04-06 → 3.8.1-master.2025-04-07
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/CHANGELOG.md +3 -18
- package/dist/json/attributes.json +375 -375
- package/dist/json/importMap-labs.json +30 -30
- package/dist/json/importMap.json +152 -152
- package/dist/json/web-types.json +820 -820
- package/dist/vuetify-labs.cjs +107 -85
- package/dist/vuetify-labs.css +5452 -5452
- package/dist/vuetify-labs.d.ts +57 -57
- package/dist/vuetify-labs.esm.js +107 -85
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +107 -85
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +107 -85
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3868 -3868
- package/dist/vuetify.d.ts +57 -57
- package/dist/vuetify.esm.js +107 -85
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +107 -85
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +791 -790
- package/dist/vuetify.min.js.map +1 -1
- package/lib/composables/theme.js +105 -83
- package/lib/composables/theme.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +57 -57
- package/lib/framework.js +1 -1
- package/package.json +2 -2
package/lib/composables/theme.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
// Utilities
|
2
|
-
import { computed, inject, provide, ref, watch, watchEffect } from 'vue';
|
2
|
+
import { computed, inject, provide, ref, shallowRef, watch, watchEffect } from 'vue';
|
3
3
|
import { createRange, darken, getCurrentInstance, getForeground, getLuma, IN_BROWSER, lighten, mergeDeep, parseColor, propsFactory, RGBtoHex } from "../util/index.js"; // Types
|
4
4
|
export const ThemeSymbol = Symbol.for('vuetify:theme');
|
5
5
|
export const makeThemeProps = propsFactory({
|
@@ -109,93 +109,144 @@ function parseThemeOptions() {
|
|
109
109
|
themes
|
110
110
|
});
|
111
111
|
}
|
112
|
+
function createCssClass(lines, selector, content, scope) {
|
113
|
+
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
114
|
+
}
|
115
|
+
function genCssVariables(theme) {
|
116
|
+
const lightOverlay = theme.dark ? 2 : 1;
|
117
|
+
const darkOverlay = theme.dark ? 1 : 2;
|
118
|
+
const variables = [];
|
119
|
+
for (const [key, value] of Object.entries(theme.colors)) {
|
120
|
+
const rgb = parseColor(value);
|
121
|
+
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
122
|
+
if (!key.startsWith('on-')) {
|
123
|
+
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
124
|
+
}
|
125
|
+
}
|
126
|
+
for (const [key, value] of Object.entries(theme.variables)) {
|
127
|
+
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
128
|
+
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
129
|
+
variables.push(`--v-${key}: ${rgb ?? value}`);
|
130
|
+
}
|
131
|
+
return variables;
|
132
|
+
}
|
133
|
+
function genVariation(name, color, variations) {
|
134
|
+
const object = {};
|
135
|
+
if (variations) {
|
136
|
+
for (const variation of ['lighten', 'darken']) {
|
137
|
+
const fn = variation === 'lighten' ? lighten : darken;
|
138
|
+
for (const amount of createRange(variations[variation], 1)) {
|
139
|
+
object[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount));
|
140
|
+
}
|
141
|
+
}
|
142
|
+
}
|
143
|
+
return object;
|
144
|
+
}
|
145
|
+
function genVariations(colors, variations) {
|
146
|
+
if (!variations) return {};
|
147
|
+
let variationColors = {};
|
148
|
+
for (const name of variations.colors) {
|
149
|
+
const color = colors[name];
|
150
|
+
if (!color) continue;
|
151
|
+
variationColors = {
|
152
|
+
...variationColors,
|
153
|
+
...genVariation(name, color, variations)
|
154
|
+
};
|
155
|
+
}
|
156
|
+
return variationColors;
|
157
|
+
}
|
158
|
+
function genOnColors(colors) {
|
159
|
+
const onColors = {};
|
160
|
+
for (const color of Object.keys(colors)) {
|
161
|
+
if (color.startsWith('on-') || colors[`on-${color}`]) continue;
|
162
|
+
const onColor = `on-${color}`;
|
163
|
+
const colorVal = parseColor(colors[color]);
|
164
|
+
onColors[onColor] = getForeground(colorVal);
|
165
|
+
}
|
166
|
+
return onColors;
|
167
|
+
}
|
168
|
+
function getScopedSelector(selector, scope) {
|
169
|
+
if (!scope) return selector;
|
170
|
+
const scopeSelector = `:where(${scope})`;
|
171
|
+
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
172
|
+
}
|
173
|
+
function upsertStyles(styleEl, styles) {
|
174
|
+
if (!styleEl) return;
|
175
|
+
styleEl.innerHTML = styles;
|
176
|
+
}
|
177
|
+
function getOrCreateStyleElement(id, cspNonce) {
|
178
|
+
if (!IN_BROWSER) return null;
|
179
|
+
let style = document.getElementById(id);
|
180
|
+
if (!style) {
|
181
|
+
style = document.createElement('style');
|
182
|
+
style.id = id;
|
183
|
+
style.type = 'text/css';
|
184
|
+
if (cspNonce) style.setAttribute('nonce', cspNonce);
|
185
|
+
document.head.appendChild(style);
|
186
|
+
}
|
187
|
+
return style;
|
188
|
+
}
|
112
189
|
|
113
190
|
// Composables
|
114
191
|
export function createTheme(options) {
|
115
192
|
const parsedOptions = parseThemeOptions(options);
|
116
|
-
const name =
|
193
|
+
const name = shallowRef(parsedOptions.defaultTheme);
|
117
194
|
const themes = ref(parsedOptions.themes);
|
118
195
|
const computedThemes = computed(() => {
|
119
196
|
const acc = {};
|
120
197
|
for (const [name, original] of Object.entries(themes.value)) {
|
121
|
-
const
|
198
|
+
const colors = {
|
199
|
+
...original.colors,
|
200
|
+
...genVariations(original.colors, parsedOptions.variations)
|
201
|
+
};
|
202
|
+
acc[name] = {
|
122
203
|
...original,
|
123
204
|
colors: {
|
124
|
-
...
|
205
|
+
...colors,
|
206
|
+
...genOnColors(colors)
|
125
207
|
}
|
126
208
|
};
|
127
|
-
if (parsedOptions.variations) {
|
128
|
-
for (const name of parsedOptions.variations.colors) {
|
129
|
-
const color = theme.colors[name];
|
130
|
-
if (!color) continue;
|
131
|
-
for (const variation of ['lighten', 'darken']) {
|
132
|
-
const fn = variation === 'lighten' ? lighten : darken;
|
133
|
-
for (const amount of createRange(parsedOptions.variations[variation], 1)) {
|
134
|
-
theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount));
|
135
|
-
}
|
136
|
-
}
|
137
|
-
}
|
138
|
-
}
|
139
|
-
for (const color of Object.keys(theme.colors)) {
|
140
|
-
if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue;
|
141
|
-
const onColor = `on-${color}`;
|
142
|
-
const colorVal = parseColor(theme.colors[color]);
|
143
|
-
theme.colors[onColor] = getForeground(colorVal);
|
144
|
-
}
|
145
209
|
}
|
146
210
|
return acc;
|
147
211
|
});
|
148
212
|
const current = computed(() => computedThemes.value[name.value]);
|
149
|
-
function createCssClass(lines, selector, content) {
|
150
|
-
lines.push(`${getScopedSelector(selector)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
151
|
-
}
|
152
|
-
function getScopedSelector(selector) {
|
153
|
-
if (!parsedOptions.scope) {
|
154
|
-
return selector;
|
155
|
-
}
|
156
|
-
const scopeSelector = `:where(${parsedOptions.scope})`;
|
157
|
-
if (selector === ':root') {
|
158
|
-
return scopeSelector;
|
159
|
-
}
|
160
|
-
return `${scopeSelector} ${selector}`;
|
161
|
-
}
|
162
213
|
const styles = computed(() => {
|
163
214
|
const lines = [];
|
164
215
|
if (current.value?.dark) {
|
165
|
-
createCssClass(lines, ':root', ['color-scheme: dark']);
|
216
|
+
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
166
217
|
}
|
167
|
-
createCssClass(lines, ':root', genCssVariables(current.value));
|
218
|
+
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
168
219
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
169
|
-
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)]);
|
220
|
+
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
|
170
221
|
}
|
171
222
|
const bgLines = [];
|
172
223
|
const fgLines = [];
|
173
224
|
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
174
225
|
for (const key of colors) {
|
175
|
-
if (
|
176
|
-
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`]);
|
226
|
+
if (key.startsWith('on-')) {
|
227
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
177
228
|
} else {
|
178
|
-
createCssClass(bgLines, `.bg-${key}`, [`--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--v-theme-${key})) !important`, `color: rgb(var(--v-theme-on-${key})) !important`]);
|
179
|
-
createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`]);
|
180
|
-
createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`]);
|
229
|
+
createCssClass(bgLines, `.bg-${key}`, [`--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--v-theme-${key})) !important`, `color: rgb(var(--v-theme-on-${key})) !important`], parsedOptions.scope);
|
230
|
+
createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
231
|
+
createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
|
181
232
|
}
|
182
233
|
}
|
183
234
|
lines.push(...bgLines, ...fgLines);
|
184
235
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
185
236
|
});
|
186
|
-
function getHead() {
|
187
|
-
return {
|
188
|
-
style: [{
|
189
|
-
textContent: styles.value,
|
190
|
-
id: parsedOptions.stylesheetId,
|
191
|
-
nonce: parsedOptions.cspNonce || false
|
192
|
-
}]
|
193
|
-
};
|
194
|
-
}
|
195
237
|
function install(app) {
|
196
238
|
if (parsedOptions.isDisabled) return;
|
197
239
|
const head = app._context.provides.usehead;
|
198
240
|
if (head) {
|
241
|
+
function getHead() {
|
242
|
+
return {
|
243
|
+
style: [{
|
244
|
+
textContent: styles.value,
|
245
|
+
id: parsedOptions.stylesheetId,
|
246
|
+
nonce: parsedOptions.cspNonce || false
|
247
|
+
}]
|
248
|
+
};
|
249
|
+
}
|
199
250
|
if (head.push) {
|
200
251
|
const entry = head.push(getHead);
|
201
252
|
if (IN_BROWSER) {
|
@@ -212,7 +263,6 @@ export function createTheme(options) {
|
|
212
263
|
}
|
213
264
|
}
|
214
265
|
} else {
|
215
|
-
let styleEl = IN_BROWSER ? document.getElementById(parsedOptions.stylesheetId) : null;
|
216
266
|
if (IN_BROWSER) {
|
217
267
|
watch(styles, updateStyles, {
|
218
268
|
immediate: true
|
@@ -221,15 +271,7 @@ export function createTheme(options) {
|
|
221
271
|
updateStyles();
|
222
272
|
}
|
223
273
|
function updateStyles() {
|
224
|
-
|
225
|
-
const el = document.createElement('style');
|
226
|
-
el.type = 'text/css';
|
227
|
-
el.id = parsedOptions.stylesheetId;
|
228
|
-
if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce);
|
229
|
-
styleEl = el;
|
230
|
-
document.head.appendChild(styleEl);
|
231
|
-
}
|
232
|
-
if (styleEl) styleEl.innerHTML = styles.value;
|
274
|
+
upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
|
233
275
|
}
|
234
276
|
}
|
235
277
|
}
|
@@ -253,9 +295,7 @@ export function provideTheme(props) {
|
|
253
295
|
getCurrentInstance('provideTheme');
|
254
296
|
const theme = inject(ThemeSymbol, null);
|
255
297
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
256
|
-
const name = computed(() =>
|
257
|
-
return props.theme ?? theme.name.value;
|
258
|
-
});
|
298
|
+
const name = computed(() => props.theme ?? theme.name.value);
|
259
299
|
const current = computed(() => theme.themes.value[name.value]);
|
260
300
|
const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
|
261
301
|
const newTheme = {
|
@@ -273,22 +313,4 @@ export function useTheme() {
|
|
273
313
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
274
314
|
return theme;
|
275
315
|
}
|
276
|
-
function genCssVariables(theme) {
|
277
|
-
const lightOverlay = theme.dark ? 2 : 1;
|
278
|
-
const darkOverlay = theme.dark ? 1 : 2;
|
279
|
-
const variables = [];
|
280
|
-
for (const [key, value] of Object.entries(theme.colors)) {
|
281
|
-
const rgb = parseColor(value);
|
282
|
-
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
283
|
-
if (!key.startsWith('on-')) {
|
284
|
-
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
285
|
-
}
|
286
|
-
}
|
287
|
-
for (const [key, value] of Object.entries(theme.variables)) {
|
288
|
-
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
289
|
-
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
290
|
-
variables.push(`--v-${key}: ${rgb ?? value}`);
|
291
|
-
}
|
292
|
-
return variables;
|
293
|
-
}
|
294
316
|
//# sourceMappingURL=theme.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"theme.js","names":["computed","inject","provide","ref","watch","watchEffect","createRange","darken","getCurrentInstance","getForeground","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","genDefaults","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","stylesheetId","parseThemeOptions","options","arguments","length","undefined","defaults","isDisabled","key","Object","entries","createTheme","parsedOptions","name","computedThemes","acc","original","value","color","variation","fn","amount","keys","test","onColor","colorVal","current","createCssClass","lines","selector","content","push","getScopedSelector","map","line","scope","scopeSelector","styles","genCssVariables","themeName","bgLines","fgLines","Set","values","flatMap","str","i","join","getHead","style","textContent","id","nonce","cspNonce","install","app","head","_context","provides","usehead","entry","patch","addHeadObjs","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","type","setAttribute","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","lightOverlay","darkOverlay","rgb","r","g","b","startsWith"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n createRange,\n darken,\n getCurrentInstance,\n getForeground,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\n\n// Types\nimport type { VueHeadClient } from '@unhead/vue'\nimport type { HeadClient } from '@vueuse/head'\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n stylesheetId?: string\n scope?: string\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n stylesheetId: string\n scope?: string\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nfunction genDefaults () {\n return {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-bright': '#FFFFFF',\n 'surface-light': '#EEEEEE',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#1867C0',\n 'primary-darken-1': '#1F5592',\n secondary: '#48A9A6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-bright': '#ccbfd6',\n 'surface-light': '#424242',\n 'surface-variant': '#a3a3a3',\n 'on-surface-variant': '#424242',\n primary: '#2196F3',\n 'primary-darken-1': '#277CC1',\n secondary: '#54B6B2',\n 'secondary-darken-1': '#48A9A6',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 1,\n 'medium-emphasis-opacity': 0.70,\n 'disabled-opacity': 0.50,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC',\n },\n },\n },\n stylesheetId: 'vuetify-theme-stylesheet',\n }\n}\n\nfunction parseThemeOptions (options: ThemeOptions = genDefaults()): InternalThemeOptions {\n const defaults = genDefaults()\n\n if (!options) return { ...defaults, isDisabled: true } as any\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaults.themes?.dark\n : defaults.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaults,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = parseThemeOptions(options)\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n\n if (!color) continue\n\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(theme.colors[color]!)\n\n theme.colors[onColor] = getForeground(colorVal)\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n function createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${getScopedSelector(selector)} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n }\n\n function getScopedSelector (selector: string) {\n if (!parsedOptions.scope) {\n return selector\n }\n const scopeSelector = `:where(${parsedOptions.scope})`\n if (selector === ':root') {\n return scopeSelector\n }\n return `${scopeSelector} ${selector}`\n }\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value?.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n createCssClass(lines, ':root', genCssVariables(current.value))\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ])\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background-color: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function getHead () {\n return {\n style: [{\n textContent: styles.value,\n id: parsedOptions.stylesheetId,\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\n function install (app: App) {\n if (parsedOptions.isDisabled) return\n\n const head = app._context.provides.usehead as HeadClient & VueHeadClient<any> | undefined\n if (head) {\n if (head.push) {\n const entry = head.push(getHead)\n if (IN_BROWSER) {\n watch(styles, () => { entry.patch(getHead) })\n }\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById(parsedOptions.stylesheetId)\n : null\n\n if (IN_BROWSER) {\n watch(styles, updateStyles, { immediate: true })\n } else {\n updateStyles()\n }\n\n function updateStyles () {\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = parsedOptions.stylesheetId\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme.name.value\n })\n const current = computed(() => theme.themes.value[name.value])\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n current,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n variables.push(`--v-${key}: ${rgb ?? value}`)\n }\n\n return variables\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"theme.js","names":["computed","inject","provide","ref","shallowRef","watch","watchEffect","createRange","darken","getCurrentInstance","getForeground","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","genDefaults","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","stylesheetId","parseThemeOptions","options","arguments","length","undefined","defaults","isDisabled","key","Object","entries","createCssClass","lines","selector","content","scope","push","getScopedSelector","map","line","genCssVariables","lightOverlay","darkOverlay","value","rgb","r","g","b","startsWith","color","genVariation","name","object","variation","fn","amount","genVariations","variationColors","genOnColors","onColors","keys","onColor","colorVal","scopeSelector","upsertStyles","styleEl","styles","innerHTML","getOrCreateStyleElement","id","cspNonce","style","document","getElementById","createElement","type","setAttribute","head","appendChild","createTheme","parsedOptions","computedThemes","acc","original","current","themeName","bgLines","fgLines","Set","values","flatMap","str","i","join","install","app","_context","provides","usehead","getHead","textContent","nonce","entry","patch","addHeadObjs","updateDOM","updateStyles","immediate","themeClasses","global","provideTheme","props","Error","newTheme","useTheme"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n ref,\n shallowRef,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n createRange,\n darken,\n getCurrentInstance,\n getForeground,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\n\n// Types\nimport type { VueHeadClient } from '@unhead/vue'\nimport type { HeadClient } from '@vueuse/head'\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n stylesheetId?: string\n scope?: string\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n stylesheetId: string\n scope?: string\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nfunction genDefaults () {\n return {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-bright': '#FFFFFF',\n 'surface-light': '#EEEEEE',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#1867C0',\n 'primary-darken-1': '#1F5592',\n secondary: '#48A9A6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-bright': '#ccbfd6',\n 'surface-light': '#424242',\n 'surface-variant': '#a3a3a3',\n 'on-surface-variant': '#424242',\n primary: '#2196F3',\n 'primary-darken-1': '#277CC1',\n secondary: '#54B6B2',\n 'secondary-darken-1': '#48A9A6',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 1,\n 'medium-emphasis-opacity': 0.70,\n 'disabled-opacity': 0.50,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC',\n },\n },\n },\n stylesheetId: 'vuetify-theme-stylesheet',\n }\n}\n\nfunction parseThemeOptions (options: ThemeOptions = genDefaults()): InternalThemeOptions {\n const defaults = genDefaults()\n\n if (!options) return { ...defaults, isDisabled: true } as any\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaults.themes?.dark\n : defaults.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaults,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[], scope?: string) {\n lines.push(\n `${getScopedSelector(selector, scope)} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n variables.push(`--v-${key}: ${rgb ?? value}`)\n }\n\n return variables\n}\n\nfunction genVariation (name: string, color: string, variations: VariationsOptions | false) {\n const object: Record<string, string> = {}\n if (variations) {\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(variations[variation], 1)) {\n object[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n return object\n}\n\nfunction genVariations (colors: InternalThemeDefinition['colors'], variations: VariationsOptions | false) {\n if (!variations) return {}\n\n let variationColors = {}\n for (const name of variations.colors) {\n const color = colors[name]\n\n if (!color) continue\n\n variationColors = {\n ...variationColors,\n ...genVariation(name, color, variations),\n }\n }\n return variationColors\n}\n\nfunction genOnColors (colors: InternalThemeDefinition['colors']) {\n const onColors = {} as InternalThemeDefinition['colors']\n\n for (const color of Object.keys(colors)) {\n if (color.startsWith('on-') || colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(colors[color])\n\n onColors[onColor] = getForeground(colorVal)\n }\n\n return onColors\n}\n\nfunction getScopedSelector (selector: string, scope?: string) {\n if (!scope) return selector\n\n const scopeSelector = `:where(${scope})`\n\n return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`\n}\n\nfunction upsertStyles (styleEl: HTMLStyleElement | null, styles: string) {\n if (!styleEl) return\n\n styleEl.innerHTML = styles\n}\n\nfunction getOrCreateStyleElement (id: string, cspNonce?: string) {\n if (!IN_BROWSER) return null\n\n let style = document.getElementById(id) as HTMLStyleElement | null\n\n if (!style) {\n style = document.createElement('style')\n style.id = id\n style.type = 'text/css'\n\n if (cspNonce) style.setAttribute('nonce', cspNonce)\n\n document.head.appendChild(style)\n }\n\n return style\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = parseThemeOptions(options)\n const name = shallowRef(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const colors = {\n ...original.colors,\n ...genVariations(original.colors, parsedOptions.variations),\n }\n\n acc[name] = {\n ...original,\n colors: {\n ...colors,\n ...genOnColors(colors),\n },\n }\n }\n return acc\n })\n\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value?.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope)\n }\n\n createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope)\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ], parsedOptions.scope)\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (key.startsWith('on-')) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope)\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background-color: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ], parsedOptions.scope)\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope)\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope)\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function install (app: App) {\n if (parsedOptions.isDisabled) return\n\n const head = app._context.provides.usehead as HeadClient & VueHeadClient<any> | undefined\n if (head) {\n function getHead () {\n return {\n style: [{\n textContent: styles.value,\n id: parsedOptions.stylesheetId,\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\n if (head.push) {\n const entry = head.push(getHead)\n if (IN_BROWSER) {\n watch(styles, () => { entry.patch(getHead) })\n }\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\n }\n } else {\n if (IN_BROWSER) {\n watch(styles, updateStyles, { immediate: true })\n } else {\n updateStyles()\n }\n\n function updateStyles () {\n upsertStyles(\n getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce),\n styles.value\n )\n }\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed(() => props.theme ?? theme.name.value)\n const current = computed(() => theme.themes.value[name.value])\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n current,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/entry-bundler.js
CHANGED
@@ -16,7 +16,7 @@ export const createVuetify = function () {
|
|
16
16
|
...options
|
17
17
|
});
|
18
18
|
};
|
19
|
-
export const version = "3.8.
|
19
|
+
export const version = "3.8.1-master.2025-04-07";
|
20
20
|
createVuetify.version = version;
|
21
21
|
export { blueprints, components, directives };
|
22
22
|
export * from "./composables/index.js";
|