diff --git a/packages/vuetify/build/rollup.types.config.js b/packages/vuetify/build/rollup.types.config.js index 08eb5dd27c1..1f1f292bfda 100644 --- a/packages/vuetify/build/rollup.types.config.js +++ b/packages/vuetify/build/rollup.types.config.js @@ -29,6 +29,8 @@ function createTypesConfig (input, output, renderChunk, filter) { const options = { input: file, output: [{ file: outputFile, format: 'es', sourcemap: false }], + // prevent inlining types from internal-types on ESM build + external: output.startsWith('dist/') ? undefined : ['./internal-types.js'], plugins: [ dts(), { diff --git a/packages/vuetify/build/transform-types.js b/packages/vuetify/build/transform-types.js index a41e9ac67bb..9afed81f314 100644 --- a/packages/vuetify/build/transform-types.js +++ b/packages/vuetify/build/transform-types.js @@ -3,6 +3,7 @@ import fs from 'node:fs/promises' import { codeTransform } from './types-code-transform.js' import path from 'upath' +/** @type {string[]} */ const files = fg.sync('lib/**/*.d.ts') const importRegexp = /(?(?:import|export)(?:[^;])*?from ['"])(?(?:\.\.?|@)(?:\/[^;'"]*)?)(?['"];)|(?import\(['"])(?(?:\.\.?|@)(?:\/[^;'"]*)?)(?['"]\))/gm @@ -10,6 +11,7 @@ const importRegexp = /(?(?:import|export)(?:[^;])*?from ['"])(?(?:\.\.?| for (const name of files) { const code = await fs.readFile(name, 'utf-8') + /** @type {string} */ let newCode = codeTransform(code) for (const match of code.matchAll(importRegexp)) { diff --git a/packages/vuetify/package.json b/packages/vuetify/package.json index 1b1c1e198fc..d86cd6deb81 100755 --- a/packages/vuetify/package.json +++ b/packages/vuetify/package.json @@ -73,6 +73,9 @@ "./locale": "./lib/locale/index.js", "./locale/adapters/*": "./lib/locale/adapters/*.js", "./iconsets/*": "./lib/iconsets/*.js", + "./internal-types": { + "types": "./lib/internal-types.d.ts" + }, "./labs/components": "./lib/labs/components.js", "./labs/*": "./lib/labs/*/index.js", "./util/colors": "./lib/util/colors.js", diff --git a/packages/vuetify/src/composables/theme.ts b/packages/vuetify/src/composables/theme.ts index baa674ec8ef..dbad89d8a9e 100644 --- a/packages/vuetify/src/composables/theme.ts +++ b/packages/vuetify/src/composables/theme.ts @@ -33,7 +33,7 @@ import type { VueHeadClient } from '@unhead/vue/client' import type { HeadClient } from '@vueuse/head' import type { App, DeepReadonly, InjectionKey, Ref } from 'vue' -type DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial } : T +export type DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial } : T export type ThemeOptions = false | { cspNonce?: string @@ -46,7 +46,7 @@ export type ThemeOptions = false | { } export type ThemeDefinition = DeepPartial -interface InternalThemeOptions { +export interface InternalThemeOptions { cspNonce?: string isDisabled: boolean defaultTheme: 'light' | 'dark' | 'system' | string & {} @@ -60,13 +60,13 @@ interface InternalThemeOptions { utilities: boolean } -interface VariationsOptions { +export interface VariationsOptions { colors: string[] lighten: number darken: number } -interface InternalThemeDefinition { +export interface InternalThemeDefinition { dark: boolean colors: Colors variables: Record @@ -76,7 +76,7 @@ export interface Colors extends BaseColors, OnColors { [key: string]: string } -interface BaseColors { +export interface BaseColors { background: string surface: string primary: string diff --git a/packages/vuetify/src/framework.ts b/packages/vuetify/src/framework.ts index 365a29411a2..a5a4d5b2b73 100644 --- a/packages/vuetify/src/framework.ts +++ b/packages/vuetify/src/framework.ts @@ -13,13 +13,17 @@ import { defineComponent, IN_BROWSER, mergeDeep } from '@/util' // Types import type { App, ComponentPublicInstance, InjectionKey } from 'vue' -import type { DateOptions } from '@/composables/date' -import type { DefaultsOptions } from '@/composables/defaults' -import type { DisplayOptions, SSROptions } from '@/composables/display' -import type { GoToOptions } from '@/composables/goto' -import type { IconOptions } from '@/composables/icons' -import type { LocaleOptions, RtlOptions } from '@/composables/locale' -import type { ThemeOptions } from '@/composables/theme' +import type { + DateOptions, + DefaultsOptions, + DisplayOptions, + GoToOptions, + IconOptions, + LocaleOptions, + RtlOptions, + SSROptions, + ThemeOptions, +} from './internal-types' // Exports export * from './composables' diff --git a/packages/vuetify/src/internal-types.ts b/packages/vuetify/src/internal-types.ts new file mode 100644 index 00000000000..218dac5bc83 --- /dev/null +++ b/packages/vuetify/src/internal-types.ts @@ -0,0 +1,8 @@ +// Types +export type * from '@/composables/date' +export type * from '@/composables/defaults' +export type * from '@/composables/display' +export type * from '@/composables/goto' +export type * from '@/composables/icons' +export type * from '@/composables/locale' +export type * from '@/composables/theme'