vuetify
Version:
Vue.js 2 Semantic Component Framework
185 lines (168 loc) • 4.69 kB
TypeScript
import Vue, { Component, PluginFunction, PluginObject, VueConstructor, DirectiveFunction, DirectiveOptions } from 'vue'
import { VuetifyLanguage } from './lang'
import './lib'
import './alacarte'
import './colors'
declare const Vuetify: Vuetify
export default Vuetify
export interface Vuetify {
install: PluginFunction<VuetifyUseOptions>
version: string
}
export type ComponentOrPack = Component & { $_vuetify_subcomponents?: Record<string, ComponentOrPack> }
export interface VuetifyUseOptions {
transitions?: Record<string, VueConstructor>
directives?: Record<string, DirectiveOptions>
components?: Record<string, ComponentOrPack>
/** @see https://vuetifyjs.com/style/theme */
theme?: Partial<VuetifyTheme> | false
/**
* Select a base icon font to use. Note that none of these are included, you must install them yourself
*
* md: <a href="https://material.io/icons">material.io</a> (default)
* mdi: <a href="https://materialdesignicons.com">MDI</a>
* fa: <a href="https://fontawesome.com/get-started/web-fonts-with-css">FontAwesome 5</a>
* fa4: <a href="">FontAwesome 4</a> TODO: link
*/
iconfont?: 'md' | 'mdi' | 'fa' | 'fa4' // TODO: camelCase
/**
* Override specific icon names. You can also specify your own custom ones that can then be accessed from v-icon
*
* @example <v-icon>$vuetify.icons.(name)</v-icon>
*/
icons?: Partial<VuetifyIcons>
/** @see https://vuetifyjs.com/style/theme#options */
options?: Partial<VuetifyOptions>
lang?: Partial<VuetifyLanguage>
rtl?: boolean
}
export interface VuetifyObject extends Vue {
readonly breakpoint: Readonly<VuetifyBreakpoint>
readonly dark: boolean
readonly goTo: <T extends string | number | HTMLElement | Vue>(target: T, options?: VuetifyGoToOptions) => Promise<T>
readonly t: VuetifyLanguage['t']
application: VuetifyApplication
theme: VuetifyTheme
icons: VuetifyIcons
lang: VuetifyLanguage
options: VuetifyOptions
rtl: boolean
}
declare module 'vue/types/vue' {
export interface Vue {
$vuetify: VuetifyObject
}
}
export interface VuetifyIcons {
[name: string]: string
cancel: string
close: string
delete: string
clear: string
success: string
info: string
warning: string
error: string
prev: string
next: string
checkboxOn: string
checkboxOff: string
checkboxIndeterminate: string
delimiter: string
sort: string
expand: string
menu: string
subgroup: string
dropdown: string
radioOn: string
radioOff: string
edit: string
ratingEmpty: string
ratingFull: string
ratingHalf: string
}
export interface VuetifyApplication {
bar: number
bottom: number
footer: number
left: number
right: number
top: number
bind (uid: number, target: string, value: number): void
unbind (uid: number, target: string): void
update (target: string): void
}
export interface VuetifyBreakpoint {
height: number
lg: boolean
lgAndDown: boolean
lgAndUp: boolean
lgOnly: boolean
md: boolean
mdAndDown: boolean
mdAndUp: boolean
mdOnly: boolean
name: string
sm: boolean
smAndDown: boolean
smAndUp: boolean
smOnly: boolean
width: number
xl: boolean
xlOnly: boolean
xs: boolean
xsOnly: boolean
}
export type VuetifyThemeItem = string | number | {
base: string | number
lighten5: string | number
lighten4: string | number
lighten3: string | number
lighten2: string | number
lighten1: string | number
darken1: string | number
darken2: string | number
darken3: string | number
darken4: string | number
}
export interface VuetifyTheme {
[name: string]: VuetifyThemeItem
primary: VuetifyThemeItem
accent: VuetifyThemeItem
secondary: VuetifyThemeItem
info: VuetifyThemeItem
warning: VuetifyThemeItem
error: VuetifyThemeItem
success: VuetifyThemeItem
}
export interface VuetifyThemeCache {
get: (parsedTheme: VuetifyTheme) => string | null
set: (parsedTheme: VuetifyTheme, css: string) => void
}
export interface VuetifyOptions {
minifyTheme: ((css: string) => string) | null
themeCache: VuetifyThemeCache | null
customProperties: boolean
/** @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#Unsafe_inline_script */
cspNonce: string | null
}
export type VuetifyGoToEasing =
((t: number) => number) |
'linear' |
'easeInQuad' |
'easeOutQuad' |
'easeInOutQuad' |
'easeInCubic' |
'easeOutCubic' |
'easeInOutCubic' |
'easeInQuart' |
'easeOutQuart' |
'easeInOutQuart' |
'easeInQuint' |
'easeOutQuint' |
'easeInOutQuint'
export interface VuetifyGoToOptions {
duration?: number
offset?: number
easing?: VuetifyGoToEasing
}