routie dev init since i didn't adhere to any proper guidance up until now

This commit is contained in:
2026-04-29 22:27:29 -06:00
commit e1dabb71e2
15301 changed files with 3562618 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
export { md1 } from './md1.js';
export { md2 } from './md2.js';
export { md3 } from './md3.js';
+4
View File
@@ -0,0 +1,4 @@
export { md1 } from "./md1.js";
export { md2 } from "./md2.js";
export { md3 } from "./md3.js";
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["md1","md2","md3"],"sources":["../../src/blueprints/index.ts"],"sourcesContent":["export { md1 } from './md1'\nexport { md2 } from './md2'\nexport { md3 } from './md3'\n"],"mappings":"SAASA,GAAG;AAAA,SACHC,GAAG;AAAA,SACHC,GAAG","ignoreList":[]}
+2
View File
@@ -0,0 +1,2 @@
import type { Blueprint } from '../framework.js';
export declare const md1: Blueprint;
+93
View File
@@ -0,0 +1,93 @@
// Icons
import { mdi } from "../iconsets/mdi.js"; // Types
export const md1 = {
defaults: {
global: {
rounded: 'sm'
},
VAvatar: {
rounded: 'circle'
},
VAutocomplete: {
variant: 'underlined'
},
VBanner: {
color: 'primary'
},
VBtn: {
class: 'text-uppercase',
color: 'primary',
rounded: 0
},
VCheckbox: {
color: 'secondary',
indentDetails: false
},
VCombobox: {
variant: 'underlined'
},
VDatePicker: {
color: 'primary',
controlHeight: 44,
elevation: 1,
rounded: 0,
controlVariant: 'modal',
VBtn: {
color: 'high-emphasis',
rounded: 'circle'
}
},
VSelect: {
variant: 'underlined'
},
VSlider: {
color: 'primary',
indentDetails: false
},
VSwitch: {
indentDetails: false
},
VRadioGroup: {
indentDetails: false
},
VRangeSlider: {
indentDetails: false
},
VTabs: {
color: 'primary'
},
VTextarea: {
variant: 'underlined'
},
VTextField: {
variant: 'underlined'
},
VToolbar: {
VBtn: {
color: null
}
}
},
icons: {
defaultSet: 'mdi',
sets: {
mdi
}
},
theme: {
themes: {
light: {
colors: {
primary: '#3F51B5',
'primary-darken-1': '#303F9F',
'primary-lighten-1': '#C5CAE9',
secondary: '#FF4081',
'secondary-darken-1': '#F50057',
'secondary-lighten-1': '#FF80AB',
accent: '#009688'
}
}
}
}
};
//# sourceMappingURL=md1.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"md1.js","names":["mdi","md1","defaults","global","rounded","VAvatar","VAutocomplete","variant","VBanner","color","VBtn","class","VCheckbox","indentDetails","VCombobox","VDatePicker","controlHeight","elevation","controlVariant","VSelect","VSlider","VSwitch","VRadioGroup","VRangeSlider","VTabs","VTextarea","VTextField","VToolbar","icons","defaultSet","sets","theme","themes","light","colors","primary","secondary","accent"],"sources":["../../src/blueprints/md1.ts"],"sourcesContent":["// Icons\nimport { mdi } from '@/iconsets/mdi'\n\n// Types\nimport type { Blueprint } from '@/framework'\n\nexport const md1: Blueprint = {\n defaults: {\n global: {\n rounded: 'sm',\n },\n VAvatar: {\n rounded: 'circle',\n },\n VAutocomplete: {\n variant: 'underlined',\n },\n VBanner: {\n color: 'primary',\n },\n VBtn: {\n class: 'text-uppercase',\n color: 'primary',\n rounded: 0,\n },\n VCheckbox: {\n color: 'secondary',\n indentDetails: false,\n },\n VCombobox: {\n variant: 'underlined',\n },\n VDatePicker: {\n color: 'primary',\n controlHeight: 44,\n elevation: 1,\n rounded: 0,\n controlVariant: 'modal',\n\n VBtn: {\n color: 'high-emphasis',\n rounded: 'circle',\n },\n },\n VSelect: {\n variant: 'underlined',\n },\n VSlider: {\n color: 'primary',\n indentDetails: false,\n },\n VSwitch: {\n indentDetails: false,\n },\n VRadioGroup: {\n indentDetails: false,\n },\n VRangeSlider: {\n indentDetails: false,\n },\n VTabs: {\n color: 'primary',\n },\n VTextarea: {\n variant: 'underlined',\n },\n VTextField: {\n variant: 'underlined',\n },\n VToolbar: {\n VBtn: {\n color: null,\n },\n },\n },\n icons: {\n defaultSet: 'mdi',\n sets: {\n mdi,\n },\n },\n theme: {\n themes: {\n light: {\n colors: {\n primary: '#3F51B5',\n 'primary-darken-1': '#303F9F',\n 'primary-lighten-1': '#C5CAE9',\n secondary: '#FF4081',\n 'secondary-darken-1': '#F50057',\n 'secondary-lighten-1': '#FF80AB',\n accent: '#009688',\n },\n },\n },\n },\n}\n"],"mappings":"AAAA;AAAA,SACSA,GAAG,8BAEZ;AAGA,OAAO,MAAMC,GAAc,GAAG;EAC5BC,QAAQ,EAAE;IACRC,MAAM,EAAE;MACNC,OAAO,EAAE;IACX,CAAC;IACDC,OAAO,EAAE;MACPD,OAAO,EAAE;IACX,CAAC;IACDE,aAAa,EAAE;MACbC,OAAO,EAAE;IACX,CAAC;IACDC,OAAO,EAAE;MACPC,KAAK,EAAE;IACT,CAAC;IACDC,IAAI,EAAE;MACJC,KAAK,EAAE,gBAAgB;MACvBF,KAAK,EAAE,SAAS;MAChBL,OAAO,EAAE;IACX,CAAC;IACDQ,SAAS,EAAE;MACTH,KAAK,EAAE,WAAW;MAClBI,aAAa,EAAE;IACjB,CAAC;IACDC,SAAS,EAAE;MACTP,OAAO,EAAE;IACX,CAAC;IACDQ,WAAW,EAAE;MACXN,KAAK,EAAE,SAAS;MAChBO,aAAa,EAAE,EAAE;MACjBC,SAAS,EAAE,CAAC;MACZb,OAAO,EAAE,CAAC;MACVc,cAAc,EAAE,OAAO;MAEvBR,IAAI,EAAE;QACJD,KAAK,EAAE,eAAe;QACtBL,OAAO,EAAE;MACX;IACF,CAAC;IACDe,OAAO,EAAE;MACPZ,OAAO,EAAE;IACX,CAAC;IACDa,OAAO,EAAE;MACPX,KAAK,EAAE,SAAS;MAChBI,aAAa,EAAE;IACjB,CAAC;IACDQ,OAAO,EAAE;MACPR,aAAa,EAAE;IACjB,CAAC;IACDS,WAAW,EAAE;MACXT,aAAa,EAAE;IACjB,CAAC;IACDU,YAAY,EAAE;MACZV,aAAa,EAAE;IACjB,CAAC;IACDW,KAAK,EAAE;MACLf,KAAK,EAAE;IACT,CAAC;IACDgB,SAAS,EAAE;MACTlB,OAAO,EAAE;IACX,CAAC;IACDmB,UAAU,EAAE;MACVnB,OAAO,EAAE;IACX,CAAC;IACDoB,QAAQ,EAAE;MACRjB,IAAI,EAAE;QACJD,KAAK,EAAE;MACT;IACF;EACF,CAAC;EACDmB,KAAK,EAAE;IACLC,UAAU,EAAE,KAAK;IACjBC,IAAI,EAAE;MACJ9B;IACF;EACF,CAAC;EACD+B,KAAK,EAAE;IACLC,MAAM,EAAE;MACNC,KAAK,EAAE;QACLC,MAAM,EAAE;UACNC,OAAO,EAAE,SAAS;UAClB,kBAAkB,EAAE,SAAS;UAC7B,mBAAmB,EAAE,SAAS;UAC9BC,SAAS,EAAE,SAAS;UACpB,oBAAoB,EAAE,SAAS;UAC/B,qBAAqB,EAAE,SAAS;UAChCC,MAAM,EAAE;QACV;MACF;IACF;EACF;AACF,CAAC","ignoreList":[]}
+2
View File
@@ -0,0 +1,2 @@
import type { Blueprint } from '../framework.js';
export declare const md2: Blueprint;
+87
View File
@@ -0,0 +1,87 @@
// Icons
import { mdi } from "../iconsets/mdi.js"; // Types
export const md2 = {
defaults: {
VAvatar: {
rounded: 'circle'
},
VAutocomplete: {
variant: 'filled'
},
VBanner: {
color: 'primary'
},
VBtn: {
class: 'text-uppercase',
color: 'primary'
},
VCheckbox: {
color: 'secondary',
indentDetails: true
},
VCombobox: {
variant: 'filled'
},
VDatePicker: {
color: 'primary',
controlHeight: 56,
elevation: 2,
rounded: 'md',
controlVariant: 'modal',
VBtn: {
color: 'high-emphasis',
rounded: 'circle'
}
},
VRadioGroup: {
indentDetails: true
},
VSelect: {
variant: 'filled'
},
VSlider: {
color: 'primary',
indentDetails: true
},
VRangeSlider: {
indentDetails: true
},
VSwitch: {
indentDetails: true
},
VTabs: {
color: 'primary'
},
VTextarea: {
variant: 'filled'
},
VTextField: {
variant: 'filled'
},
VToolbar: {
VBtn: {
color: null
}
}
},
icons: {
defaultSet: 'mdi',
sets: {
mdi
}
},
theme: {
themes: {
light: {
colors: {
primary: '#6200EE',
'primary-darken-1': '#3700B3',
secondary: '#03DAC6',
'secondary-darken-1': '#018786',
error: '#B00020'
}
}
}
}
};
//# sourceMappingURL=md2.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"md2.js","names":["mdi","md2","defaults","VAvatar","rounded","VAutocomplete","variant","VBanner","color","VBtn","class","VCheckbox","indentDetails","VCombobox","VDatePicker","controlHeight","elevation","controlVariant","VRadioGroup","VSelect","VSlider","VRangeSlider","VSwitch","VTabs","VTextarea","VTextField","VToolbar","icons","defaultSet","sets","theme","themes","light","colors","primary","secondary","error"],"sources":["../../src/blueprints/md2.ts"],"sourcesContent":["// Icons\nimport { mdi } from '@/iconsets/mdi'\n\n// Types\nimport type { Blueprint } from '@/framework'\n\nexport const md2: Blueprint = {\n defaults: {\n VAvatar: {\n rounded: 'circle',\n },\n VAutocomplete: {\n variant: 'filled',\n },\n VBanner: {\n color: 'primary',\n },\n VBtn: {\n class: 'text-uppercase',\n color: 'primary',\n },\n VCheckbox: {\n color: 'secondary',\n indentDetails: true,\n },\n VCombobox: {\n variant: 'filled',\n },\n VDatePicker: {\n color: 'primary',\n controlHeight: 56,\n elevation: 2,\n rounded: 'md',\n controlVariant: 'modal',\n\n VBtn: {\n color: 'high-emphasis',\n rounded: 'circle',\n },\n },\n VRadioGroup: {\n indentDetails: true,\n },\n VSelect: {\n variant: 'filled',\n },\n VSlider: {\n color: 'primary',\n indentDetails: true,\n },\n VRangeSlider: {\n indentDetails: true,\n },\n VSwitch: {\n indentDetails: true,\n },\n VTabs: {\n color: 'primary',\n },\n VTextarea: {\n variant: 'filled',\n },\n VTextField: {\n variant: 'filled',\n },\n VToolbar: {\n VBtn: {\n color: null,\n },\n },\n },\n icons: {\n defaultSet: 'mdi',\n sets: {\n mdi,\n },\n },\n theme: {\n themes: {\n light: {\n colors: {\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n },\n },\n },\n },\n}\n"],"mappings":"AAAA;AAAA,SACSA,GAAG,8BAEZ;AAGA,OAAO,MAAMC,GAAc,GAAG;EAC5BC,QAAQ,EAAE;IACRC,OAAO,EAAE;MACPC,OAAO,EAAE;IACX,CAAC;IACDC,aAAa,EAAE;MACbC,OAAO,EAAE;IACX,CAAC;IACDC,OAAO,EAAE;MACPC,KAAK,EAAE;IACT,CAAC;IACDC,IAAI,EAAE;MACJC,KAAK,EAAE,gBAAgB;MACvBF,KAAK,EAAE;IACT,CAAC;IACDG,SAAS,EAAE;MACTH,KAAK,EAAE,WAAW;MAClBI,aAAa,EAAE;IACjB,CAAC;IACDC,SAAS,EAAE;MACTP,OAAO,EAAE;IACX,CAAC;IACDQ,WAAW,EAAE;MACXN,KAAK,EAAE,SAAS;MAChBO,aAAa,EAAE,EAAE;MACjBC,SAAS,EAAE,CAAC;MACZZ,OAAO,EAAE,IAAI;MACba,cAAc,EAAE,OAAO;MAEvBR,IAAI,EAAE;QACJD,KAAK,EAAE,eAAe;QACtBJ,OAAO,EAAE;MACX;IACF,CAAC;IACDc,WAAW,EAAE;MACXN,aAAa,EAAE;IACjB,CAAC;IACDO,OAAO,EAAE;MACPb,OAAO,EAAE;IACX,CAAC;IACDc,OAAO,EAAE;MACPZ,KAAK,EAAE,SAAS;MAChBI,aAAa,EAAE;IACjB,CAAC;IACDS,YAAY,EAAE;MACZT,aAAa,EAAE;IACjB,CAAC;IACDU,OAAO,EAAE;MACPV,aAAa,EAAE;IACjB,CAAC;IACDW,KAAK,EAAE;MACLf,KAAK,EAAE;IACT,CAAC;IACDgB,SAAS,EAAE;MACTlB,OAAO,EAAE;IACX,CAAC;IACDmB,UAAU,EAAE;MACVnB,OAAO,EAAE;IACX,CAAC;IACDoB,QAAQ,EAAE;MACRjB,IAAI,EAAE;QACJD,KAAK,EAAE;MACT;IACF;EACF,CAAC;EACDmB,KAAK,EAAE;IACLC,UAAU,EAAE,KAAK;IACjBC,IAAI,EAAE;MACJ7B;IACF;EACF,CAAC;EACD8B,KAAK,EAAE;IACLC,MAAM,EAAE;MACNC,KAAK,EAAE;QACLC,MAAM,EAAE;UACNC,OAAO,EAAE,SAAS;UAClB,kBAAkB,EAAE,SAAS;UAC7BC,SAAS,EAAE,SAAS;UACpB,oBAAoB,EAAE,SAAS;UAC/BC,KAAK,EAAE;QACT;MACF;IACF;EACF;AACF,CAAC","ignoreList":[]}
+2
View File
@@ -0,0 +1,2 @@
import type { Blueprint } from '../framework.js';
export declare const md3: Blueprint;
+128
View File
@@ -0,0 +1,128 @@
// Icons
import { mdi } from "../iconsets/mdi.js"; // Types
export const md3 = {
defaults: {
VAppBar: {
flat: true
},
VAutocomplete: {
variant: 'outlined'
},
VBanner: {
color: 'primary'
},
VBottomSheet: {
contentClass: 'rounded-t-xl overflow-hidden'
},
VBtn: {
color: 'primary',
rounded: 'xl'
},
VBtnGroup: {
rounded: 'xl',
VBtn: {
rounded: null
}
},
VCard: {
rounded: 'lg'
},
VCheckbox: {
color: 'secondary',
inset: true,
indentDetails: true
},
VChip: {
rounded: 'sm'
},
VCombobox: {
variant: 'outlined'
},
VDateInput: {
variant: 'outlined'
},
VDatePicker: {
controlHeight: 48,
color: 'primary',
divided: true,
headerColor: '',
elevation: 1,
rounded: 'xl',
VBtn: {
color: 'high-emphasis',
rounded: 'circle'
}
},
VFileInput: {
variant: 'outlined'
},
VList: {
prependGap: 16
},
VNavigationDrawer: {
// VList: {
// nav: true,
// VListItem: {
// rounded: 'xl',
// },
// },
},
VNumberInput: {
variant: 'outlined',
VBtn: {
color: undefined,
rounded: undefined
}
},
VRadioGroup: {
indentDetails: true
},
VSelect: {
variant: 'outlined'
},
VSlider: {
color: 'primary',
indentDetails: true
},
VRangeSlider: {
indentDetails: true
},
VSwitch: {
indentDetails: true
},
VTabs: {
color: 'primary'
},
VTextarea: {
variant: 'outlined'
},
VTextField: {
variant: 'outlined'
},
VToolbar: {
VBtn: {
color: null
}
}
},
icons: {
defaultSet: 'mdi',
sets: {
mdi
}
},
theme: {
themes: {
light: {
colors: {
primary: '#6750a4',
secondary: '#b4b0bb',
tertiary: '#7d5260',
error: '#b3261e',
surface: '#fffbfe'
}
}
}
}
};
//# sourceMappingURL=md3.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"md3.js","names":["mdi","md3","defaults","VAppBar","flat","VAutocomplete","variant","VBanner","color","VBottomSheet","contentClass","VBtn","rounded","VBtnGroup","VCard","VCheckbox","inset","indentDetails","VChip","VCombobox","VDateInput","VDatePicker","controlHeight","divided","headerColor","elevation","VFileInput","VList","prependGap","VNavigationDrawer","VNumberInput","undefined","VRadioGroup","VSelect","VSlider","VRangeSlider","VSwitch","VTabs","VTextarea","VTextField","VToolbar","icons","defaultSet","sets","theme","themes","light","colors","primary","secondary","tertiary","error","surface"],"sources":["../../src/blueprints/md3.ts"],"sourcesContent":["// Icons\nimport { mdi } from '@/iconsets/mdi'\n\n// Types\nimport type { Blueprint } from '@/framework'\n\nexport const md3: Blueprint = {\n defaults: {\n VAppBar: {\n flat: true,\n },\n VAutocomplete: {\n variant: 'outlined',\n },\n VBanner: {\n color: 'primary',\n },\n VBottomSheet: {\n contentClass: 'rounded-t-xl overflow-hidden',\n },\n VBtn: {\n color: 'primary',\n rounded: 'xl',\n },\n VBtnGroup: {\n rounded: 'xl',\n VBtn: { rounded: null },\n },\n VCard: {\n rounded: 'lg',\n },\n VCheckbox: {\n color: 'secondary',\n inset: true,\n indentDetails: true,\n },\n VChip: {\n rounded: 'sm',\n },\n VCombobox: {\n variant: 'outlined',\n },\n VDateInput: {\n variant: 'outlined',\n },\n VDatePicker: {\n controlHeight: 48,\n color: 'primary',\n divided: true,\n headerColor: '',\n elevation: 1,\n rounded: 'xl',\n\n VBtn: {\n color: 'high-emphasis',\n rounded: 'circle',\n },\n },\n VFileInput: {\n variant: 'outlined',\n },\n VList: {\n prependGap: 16,\n },\n VNavigationDrawer: {\n // VList: {\n // nav: true,\n // VListItem: {\n // rounded: 'xl',\n // },\n // },\n },\n VNumberInput: {\n variant: 'outlined',\n\n VBtn: {\n color: undefined,\n rounded: undefined,\n },\n },\n VRadioGroup: {\n indentDetails: true,\n },\n VSelect: {\n variant: 'outlined',\n },\n VSlider: {\n color: 'primary',\n indentDetails: true,\n },\n VRangeSlider: {\n indentDetails: true,\n },\n VSwitch: {\n indentDetails: true,\n },\n VTabs: {\n color: 'primary',\n },\n VTextarea: {\n variant: 'outlined',\n },\n VTextField: {\n variant: 'outlined',\n },\n VToolbar: {\n VBtn: {\n color: null,\n },\n },\n },\n icons: {\n defaultSet: 'mdi',\n sets: {\n mdi,\n },\n },\n theme: {\n themes: {\n light: {\n colors: {\n primary: '#6750a4',\n secondary: '#b4b0bb',\n tertiary: '#7d5260',\n error: '#b3261e',\n surface: '#fffbfe',\n },\n },\n },\n },\n}\n"],"mappings":"AAAA;AAAA,SACSA,GAAG,8BAEZ;AAGA,OAAO,MAAMC,GAAc,GAAG;EAC5BC,QAAQ,EAAE;IACRC,OAAO,EAAE;MACPC,IAAI,EAAE;IACR,CAAC;IACDC,aAAa,EAAE;MACbC,OAAO,EAAE;IACX,CAAC;IACDC,OAAO,EAAE;MACPC,KAAK,EAAE;IACT,CAAC;IACDC,YAAY,EAAE;MACZC,YAAY,EAAE;IAChB,CAAC;IACDC,IAAI,EAAE;MACJH,KAAK,EAAE,SAAS;MAChBI,OAAO,EAAE;IACX,CAAC;IACDC,SAAS,EAAE;MACTD,OAAO,EAAE,IAAI;MACbD,IAAI,EAAE;QAAEC,OAAO,EAAE;MAAK;IACxB,CAAC;IACDE,KAAK,EAAE;MACLF,OAAO,EAAE;IACX,CAAC;IACDG,SAAS,EAAE;MACTP,KAAK,EAAE,WAAW;MAClBQ,KAAK,EAAE,IAAI;MACXC,aAAa,EAAE;IACjB,CAAC;IACDC,KAAK,EAAE;MACLN,OAAO,EAAE;IACX,CAAC;IACDO,SAAS,EAAE;MACTb,OAAO,EAAE;IACX,CAAC;IACDc,UAAU,EAAE;MACVd,OAAO,EAAE;IACX,CAAC;IACDe,WAAW,EAAE;MACXC,aAAa,EAAE,EAAE;MACjBd,KAAK,EAAE,SAAS;MAChBe,OAAO,EAAE,IAAI;MACbC,WAAW,EAAE,EAAE;MACfC,SAAS,EAAE,CAAC;MACZb,OAAO,EAAE,IAAI;MAEbD,IAAI,EAAE;QACJH,KAAK,EAAE,eAAe;QACtBI,OAAO,EAAE;MACX;IACF,CAAC;IACDc,UAAU,EAAE;MACVpB,OAAO,EAAE;IACX,CAAC;IACDqB,KAAK,EAAE;MACLC,UAAU,EAAE;IACd,CAAC;IACDC,iBAAiB,EAAE;MACjB;MACA;MACA;MACA;MACA;MACA;IAAA,CACD;IACDC,YAAY,EAAE;MACZxB,OAAO,EAAE,UAAU;MAEnBK,IAAI,EAAE;QACJH,KAAK,EAAEuB,SAAS;QAChBnB,OAAO,EAAEmB;MACX;IACF,CAAC;IACDC,WAAW,EAAE;MACXf,aAAa,EAAE;IACjB,CAAC;IACDgB,OAAO,EAAE;MACP3B,OAAO,EAAE;IACX,CAAC;IACD4B,OAAO,EAAE;MACP1B,KAAK,EAAE,SAAS;MAChBS,aAAa,EAAE;IACjB,CAAC;IACDkB,YAAY,EAAE;MACZlB,aAAa,EAAE;IACjB,CAAC;IACDmB,OAAO,EAAE;MACPnB,aAAa,EAAE;IACjB,CAAC;IACDoB,KAAK,EAAE;MACL7B,KAAK,EAAE;IACT,CAAC;IACD8B,SAAS,EAAE;MACThC,OAAO,EAAE;IACX,CAAC;IACDiC,UAAU,EAAE;MACVjC,OAAO,EAAE;IACX,CAAC;IACDkC,QAAQ,EAAE;MACR7B,IAAI,EAAE;QACJH,KAAK,EAAE;MACT;IACF;EACF,CAAC;EACDiC,KAAK,EAAE;IACLC,UAAU,EAAE,KAAK;IACjBC,IAAI,EAAE;MACJ3C;IACF;EACF,CAAC;EACD4C,KAAK,EAAE;IACLC,MAAM,EAAE;MACNC,KAAK,EAAE;QACLC,MAAM,EAAE;UACNC,OAAO,EAAE,SAAS;UAClBC,SAAS,EAAE,SAAS;UACpBC,QAAQ,EAAE,SAAS;UACnBC,KAAK,EAAE,SAAS;UAChBC,OAAO,EAAE;QACX;MACF;IACF;EACF;AACF,CAAC","ignoreList":[]}
+238
View File
@@ -0,0 +1,238 @@
@layer vuetify-components {
.v-alert {
display: grid;
flex: 1 1;
grid-template-areas: "prepend content append close" ". content . .";
grid-template-columns: max-content auto max-content max-content;
position: relative;
padding: 16px;
overflow: hidden;
--v-border-color: currentColor;
}
.v-alert--absolute {
position: absolute;
}
.v-alert--fixed {
position: fixed;
}
.v-alert--sticky {
position: sticky;
}
.v-alert {
border-radius: 4px;
}
.v-alert--variant-plain, .v-alert--variant-outlined, .v-alert--variant-text, .v-alert--variant-tonal {
background: transparent;
color: inherit;
}
.v-alert--variant-plain {
opacity: 0.62;
}
.v-alert--variant-plain:focus, .v-alert--variant-plain:hover {
opacity: 1;
}
.v-alert--variant-plain .v-alert__overlay {
display: none;
}
.v-alert--variant-elevated, .v-alert--variant-flat {
background: rgb(var(--v-theme-surface-light));
color: color-mix(in srgb, rgb(var(--v-theme-on-surface-light)) calc(var(--v-high-emphasis-opacity) * 100%), transparent);
}
.v-alert--variant-elevated {
box-shadow: 0px 1px 2px 0px rgba(var(--v-shadow-color), var(--v-shadow-key-opacity, 0.3)), 0px 1px 3px 1px rgba(var(--v-shadow-color), var(--v-shadow-ambient-opacity, 0.15));
--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) 2%, transparent);
}
.v-alert--variant-flat {
box-shadow: 0px 0px 0px 0px rgba(var(--v-shadow-color), var(--v-shadow-key-opacity, 0.3)), 0px 0px 0px 0px rgba(var(--v-shadow-color), var(--v-shadow-ambient-opacity, 0.15));
--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) 0%, transparent);
}
.v-alert--variant-outlined {
border: thin solid currentColor;
}
.v-alert--variant-text .v-alert__overlay {
background: currentColor;
}
.v-alert--variant-tonal .v-alert__underlay {
background: currentColor;
opacity: var(--v-activated-opacity);
border-radius: inherit;
top: 0;
right: 0;
bottom: 0;
left: 0;
pointer-events: none;
}
.v-alert .v-alert__underlay {
position: absolute;
}
.v-alert--prominent {
grid-template-areas: "prepend content append close" "prepend content . .";
}
.v-alert.v-alert--border {
--v-border-opacity: 0.38;
}
.v-alert.v-alert--border.v-alert--border-start {
padding-inline-start: 24px;
}
.v-alert.v-alert--border.v-alert--border-end {
padding-inline-end: 24px;
}
.v-alert--variant-plain {
transition: 0.2s opacity cubic-bezier(0.4, 0, 0.2, 1);
}
.v-alert--density-default {
padding-bottom: 16px;
padding-top: 16px;
}
.v-alert--density-default.v-alert--border-top {
padding-top: 24px;
}
.v-alert--density-default.v-alert--border-bottom {
padding-bottom: 24px;
}
.v-alert--density-comfortable {
padding-bottom: 12px;
padding-top: 12px;
}
.v-alert--density-comfortable.v-alert--border-top {
padding-top: 20px;
}
.v-alert--density-comfortable.v-alert--border-bottom {
padding-bottom: 20px;
}
.v-alert--density-compact {
padding-bottom: 8px;
padding-top: 8px;
}
.v-alert--density-compact.v-alert--border-top {
padding-top: 16px;
}
.v-alert--density-compact.v-alert--border-bottom {
padding-bottom: 16px;
}
.v-alert:not(:has(.v-alert-title)) .v-alert__content {
padding-block: calc((1.75rem - 1.5 * 1rem) / 2);
}
.v-alert__border {
border-radius: inherit;
bottom: 0;
left: 0;
opacity: var(--v-border-opacity);
position: absolute;
pointer-events: none;
right: 0;
top: 0;
width: 100%;
}
.v-alert__border {
border-color: currentColor;
border-style: solid;
border-width: 0;
}
.v-alert__border--border {
border-width: 8px;
box-shadow: none;
}
.v-alert--border-start .v-alert__border {
border-inline-start-width: 8px;
}
.v-alert--border-end .v-alert__border {
border-inline-end-width: 8px;
}
.v-alert--border-top .v-alert__border {
border-top-width: 8px;
}
.v-alert--border-bottom .v-alert__border {
border-bottom-width: 8px;
}
.v-alert__close {
flex: 0 1 auto;
grid-area: close;
}
.v-alert__close > .v-btn {
margin-block: calc(-1 * (var(--v-btn-height) + 12px - 1.75rem) / 2);
}
.v-alert__content {
align-self: center;
grid-area: content;
overflow: hidden;
}
.v-alert__content > :first-child {
margin-top: 0;
}
.v-alert__content > :last-child {
margin-bottom: 0;
}
.v-alert__append,
.v-alert__close {
margin-inline-start: 16px;
}
.v-alert__append {
align-self: flex-start;
grid-area: append;
}
.v-alert__append + .v-alert__close {
margin-inline-start: 16px;
}
.v-alert__prepend {
align-self: flex-start;
display: flex;
align-items: center;
grid-area: prepend;
margin-inline-end: 16px;
min-height: 1.75rem;
}
.v-alert__prepend > .v-icon {
font-size: 1.75rem;
height: 1.75rem;
width: 1.75rem;
}
.v-alert--prominent .v-alert__prepend {
align-self: center;
}
.v-alert__underlay {
grid-area: none;
position: absolute;
}
.v-alert--border-start .v-alert__underlay {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.v-alert--border-end .v-alert__underlay {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.v-alert--border-top .v-alert__underlay {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.v-alert--border-bottom .v-alert__underlay {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.v-alert-title {
align-items: center;
align-self: center;
display: flex;
font-size: 1.5rem;
font-weight: 400;
hyphens: auto;
letter-spacing: normal;
line-height: 1.75rem;
overflow-wrap: normal;
text-transform: none;
word-break: normal;
word-wrap: break-word;
}
@media (forced-colors: active) {
.v-alert:not(.v-alert--variant-text, .v-alert--variant-plain) {
border-style: solid;
}
.v-alert--variant-outlined, .v-alert--variant-tonal {
border-width: medium;
}
.v-alert--variant-elevated, .v-alert--variant-flat {
border-width: thick;
}
}
}
+734
View File
@@ -0,0 +1,734 @@
import { IconValue } from '../../composables/icons.js';
import type { PropType } from 'vue';
declare const allowedTypes: readonly ['success', 'info', 'warning', 'error'];
type ContextualType = (typeof allowedTypes)[number];
export declare const makeVAlertProps: <Defaults extends {
theme?: unknown;
class?: unknown;
style?: unknown;
density?: unknown;
elevation?: unknown;
rounded?: unknown;
tile?: unknown;
tag?: unknown;
color?: unknown;
variant?: unknown;
height?: unknown;
maxHeight?: unknown;
maxWidth?: unknown;
minHeight?: unknown;
minWidth?: unknown;
width?: unknown;
location?: unknown;
position?: unknown;
iconSize?: unknown;
iconSizes?: unknown;
border?: unknown;
borderColor?: unknown;
closable?: unknown;
closeIcon?: unknown;
closeLabel?: unknown;
icon?: unknown;
modelValue?: unknown;
prominent?: unknown;
title?: unknown;
text?: unknown;
type?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
theme: unknown extends Defaults["theme"] ? StringConstructor : {
type: PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
};
class: unknown extends Defaults["class"] ? PropType<any> : {
type: PropType<unknown extends Defaults["class"] ? any : any>;
default: unknown extends Defaults["class"] ? any : any;
};
style: unknown extends Defaults["style"] ? {
type: PropType<import("vue").StyleValue>;
default: null;
} : Omit<{
type: PropType<import("vue").StyleValue>;
default: null;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
};
density: unknown extends Defaults["density"] ? {
type: PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
} : Omit<{
type: PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | import("../../composables/density.js").Density>;
default: unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | NonNullable<import("../../composables/density.js").Density>;
};
elevation: unknown extends Defaults["elevation"] ? {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
} : Omit<{
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["elevation"] ? string | number : string | number | Defaults["elevation"]>;
default: unknown extends Defaults["elevation"] ? string | number : Defaults["elevation"] | NonNullable<string | number>;
};
rounded: unknown extends Defaults["rounded"] ? {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
} : Omit<{
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["rounded"] ? string | number | boolean : string | number | boolean | Defaults["rounded"]>;
default: unknown extends Defaults["rounded"] ? string | number | boolean : Defaults["rounded"] | NonNullable<string | number | boolean>;
};
tile: unknown extends Defaults["tile"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
};
tag: unknown extends Defaults["tag"] ? {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
} : Omit<{
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
};
color: unknown extends Defaults["color"] ? StringConstructor : {
type: PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
};
variant: unknown extends Defaults["variant"] ? Omit<{
type: PropType<import("../../composables/variant.js").Variant>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
} : Omit<Omit<{
type: PropType<import("../../composables/variant.js").Variant>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["variant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" | Defaults["variant"]>;
default: unknown extends Defaults["variant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : Defaults["variant"] | NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
};
height: unknown extends Defaults["height"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
};
maxHeight: unknown extends Defaults["maxHeight"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["maxHeight"] ? string | number : string | number | Defaults["maxHeight"]>;
default: unknown extends Defaults["maxHeight"] ? string | number : Defaults["maxHeight"] | NonNullable<string | number>;
};
maxWidth: unknown extends Defaults["maxWidth"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["maxWidth"] ? string | number : string | number | Defaults["maxWidth"]>;
default: unknown extends Defaults["maxWidth"] ? string | number : Defaults["maxWidth"] | NonNullable<string | number>;
};
minHeight: unknown extends Defaults["minHeight"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["minHeight"] ? string | number : string | number | Defaults["minHeight"]>;
default: unknown extends Defaults["minHeight"] ? string | number : Defaults["minHeight"] | NonNullable<string | number>;
};
minWidth: unknown extends Defaults["minWidth"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["minWidth"] ? string | number : string | number | Defaults["minWidth"]>;
default: unknown extends Defaults["minWidth"] ? string | number : Defaults["minWidth"] | NonNullable<string | number>;
};
width: unknown extends Defaults["width"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["width"] ? string | number : string | number | Defaults["width"]>;
default: unknown extends Defaults["width"] ? string | number : Defaults["width"] | NonNullable<string | number>;
};
location: unknown extends Defaults["location"] ? PropType<import("../../util/index.js").Anchor | null> : {
type: PropType<unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | import("../../util/index.js").Anchor | null>;
default: unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | NonNullable<import("../../util/index.js").Anchor | null>;
};
position: unknown extends Defaults["position"] ? {
type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
validator: (v: any) => boolean;
} : Omit<{
type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["position"] ? "absolute" | "fixed" | "relative" | "static" | "sticky" : "absolute" | "fixed" | "relative" | "static" | "sticky" | Defaults["position"]>;
default: unknown extends Defaults["position"] ? "absolute" | "fixed" | "relative" | "static" | "sticky" : Defaults["position"] | NonNullable<"absolute" | "fixed" | "relative" | "static" | "sticky">;
};
iconSize: unknown extends Defaults["iconSize"] ? PropType<string | number> : {
type: PropType<unknown extends Defaults["iconSize"] ? string | number : string | number | Defaults["iconSize"]>;
default: unknown extends Defaults["iconSize"] ? string | number : Defaults["iconSize"] | NonNullable<string | number>;
};
iconSizes: unknown extends Defaults["iconSizes"] ? {
type: PropType<[import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][]>;
default: () => (string | number)[][];
} : Omit<{
type: PropType<[import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][]>;
default: () => (string | number)[][];
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["iconSizes"] ? [import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][] : [import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][] | Defaults["iconSizes"]>;
default: unknown extends Defaults["iconSizes"] ? [import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][] : [import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][] | Defaults["iconSizes"];
};
border: unknown extends Defaults["border"] ? {
type: PropType<boolean | 'top' | 'end' | 'bottom' | 'start'>;
validator: (val: boolean | string) => boolean;
} : Omit<{
type: PropType<boolean | 'top' | 'end' | 'bottom' | 'start'>;
validator: (val: boolean | string) => boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["border"] ? "bottom" | "end" | "start" | "top" | boolean : "bottom" | "end" | "start" | "top" | boolean | Defaults["border"]>;
default: unknown extends Defaults["border"] ? "bottom" | "end" | "start" | "top" | boolean : Defaults["border"] | NonNullable<"bottom" | "end" | "start" | "top" | boolean>;
};
borderColor: unknown extends Defaults["borderColor"] ? StringConstructor : {
type: PropType<unknown extends Defaults["borderColor"] ? string : string | Defaults["borderColor"]>;
default: unknown extends Defaults["borderColor"] ? string : string | Defaults["borderColor"];
};
closable: unknown extends Defaults["closable"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["closable"] ? boolean : boolean | Defaults["closable"]>;
default: unknown extends Defaults["closable"] ? boolean : boolean | Defaults["closable"];
};
closeIcon: unknown extends Defaults["closeIcon"] ? {
type: PropType<IconValue>;
default: string;
} : Omit<{
type: PropType<IconValue>;
default: string;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["closeIcon"] ? IconValue : Defaults["closeIcon"] | IconValue>;
default: unknown extends Defaults["closeIcon"] ? IconValue : Defaults["closeIcon"] | NonNullable<IconValue>;
};
closeLabel: unknown extends Defaults["closeLabel"] ? {
type: StringConstructor;
default: string;
} : Omit<{
type: StringConstructor;
default: string;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["closeLabel"] ? string : string | Defaults["closeLabel"]>;
default: unknown extends Defaults["closeLabel"] ? string : string | Defaults["closeLabel"];
};
icon: unknown extends Defaults["icon"] ? {
type: PropType<false | IconValue>;
default: null;
} : Omit<{
type: PropType<false | IconValue>;
default: null;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["icon"] ? false | IconValue : false | Defaults["icon"] | IconValue>;
default: unknown extends Defaults["icon"] ? false | IconValue : Defaults["icon"] | NonNullable<false | IconValue>;
};
modelValue: unknown extends Defaults["modelValue"] ? {
type: BooleanConstructor;
default: boolean;
} : Omit<{
type: BooleanConstructor;
default: boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["modelValue"] ? boolean : boolean | Defaults["modelValue"]>;
default: unknown extends Defaults["modelValue"] ? boolean : boolean | Defaults["modelValue"];
};
prominent: unknown extends Defaults["prominent"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["prominent"] ? boolean : boolean | Defaults["prominent"]>;
default: unknown extends Defaults["prominent"] ? boolean : boolean | Defaults["prominent"];
};
title: unknown extends Defaults["title"] ? StringConstructor : {
type: PropType<unknown extends Defaults["title"] ? string : string | Defaults["title"]>;
default: unknown extends Defaults["title"] ? string : string | Defaults["title"];
};
text: unknown extends Defaults["text"] ? StringConstructor : {
type: PropType<unknown extends Defaults["text"] ? string : string | Defaults["text"]>;
default: unknown extends Defaults["text"] ? string : string | Defaults["text"];
};
type: unknown extends Defaults["type"] ? {
type: PropType<ContextualType>;
validator: (val: ContextualType) => boolean;
} : Omit<{
type: PropType<ContextualType>;
validator: (val: ContextualType) => boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["type"] ? "error" | "info" | "success" | "warning" : "error" | "info" | "success" | "warning" | Defaults["type"]>;
default: unknown extends Defaults["type"] ? "error" | "info" | "success" | "warning" : Defaults["type"] | NonNullable<"error" | "info" | "success" | "warning">;
};
};
export type VAlertSlots = {
default: never;
prepend: never;
title: never;
text: never;
append: never;
close: {
props: Record<string, any>;
};
};
export declare const VAlert: {
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
iconSizes: [import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][];
closable: boolean;
closeIcon: IconValue;
closeLabel: string;
icon: false | IconValue;
modelValue: boolean;
prominent: boolean;
} & {
theme?: string | undefined;
class?: any;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
color?: string | undefined;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location?: import("../../util/index.js").Anchor | null | undefined;
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
iconSize?: string | number | undefined;
border?: "bottom" | "end" | "start" | "top" | boolean | undefined;
borderColor?: string | undefined;
title?: string | undefined;
text?: string | undefined;
type?: "error" | "info" | "success" | "warning" | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
prepend?: (() => import("vue").VNodeChild) | undefined;
title?: (() => import("vue").VNodeChild) | undefined;
text?: (() => import("vue").VNodeChild) | undefined;
append?: (() => import("vue").VNodeChild) | undefined;
close?: ((arg: {
props: Record<string, any>;
}) => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
prepend?: false | (() => import("vue").VNodeChild) | undefined;
title?: false | (() => import("vue").VNodeChild) | undefined;
text?: false | (() => import("vue").VNodeChild) | undefined;
append?: false | (() => import("vue").VNodeChild) | undefined;
close?: false | ((arg: {
props: Record<string, any>;
}) => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:append"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:close"?: false | ((arg: {
props: Record<string, any>;
}) => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:prepend"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:text"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
} & {
"onClick:close"?: ((e: MouseEvent) => any) | undefined;
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
}, () => false | JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
'click:close': (e: MouseEvent) => true;
'update:modelValue': (value: boolean) => true;
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
style: import("vue").StyleValue;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
iconSizes: [import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][];
closable: boolean;
closeIcon: IconValue;
closeLabel: string;
icon: false | IconValue;
modelValue: boolean;
prominent: boolean;
}, true, {}, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
prepend: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
title: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
text: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
append: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
close: (arg: {
props: Record<string, any>;
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
iconSizes: [import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][];
closable: boolean;
closeIcon: IconValue;
closeLabel: string;
icon: false | IconValue;
modelValue: boolean;
prominent: boolean;
} & {
theme?: string | undefined;
class?: any;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
color?: string | undefined;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location?: import("../../util/index.js").Anchor | null | undefined;
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
iconSize?: string | number | undefined;
border?: "bottom" | "end" | "start" | "top" | boolean | undefined;
borderColor?: string | undefined;
title?: string | undefined;
text?: string | undefined;
type?: "error" | "info" | "success" | "warning" | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
prepend?: (() => import("vue").VNodeChild) | undefined;
title?: (() => import("vue").VNodeChild) | undefined;
text?: (() => import("vue").VNodeChild) | undefined;
append?: (() => import("vue").VNodeChild) | undefined;
close?: ((arg: {
props: Record<string, any>;
}) => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
prepend?: false | (() => import("vue").VNodeChild) | undefined;
title?: false | (() => import("vue").VNodeChild) | undefined;
text?: false | (() => import("vue").VNodeChild) | undefined;
append?: false | (() => import("vue").VNodeChild) | undefined;
close?: false | ((arg: {
props: Record<string, any>;
}) => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:append"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:close"?: false | ((arg: {
props: Record<string, any>;
}) => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:prepend"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:text"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
} & {
"onClick:close"?: ((e: MouseEvent) => any) | undefined;
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
}, () => false | JSX.Element, {}, {}, {}, {
style: import("vue").StyleValue;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
iconSizes: [import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][];
closable: boolean;
closeIcon: IconValue;
closeLabel: string;
icon: false | IconValue;
modelValue: boolean;
prominent: boolean;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
iconSizes: [import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][];
closable: boolean;
closeIcon: IconValue;
closeLabel: string;
icon: false | IconValue;
modelValue: boolean;
prominent: boolean;
} & {
theme?: string | undefined;
class?: any;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
color?: string | undefined;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location?: import("../../util/index.js").Anchor | null | undefined;
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
iconSize?: string | number | undefined;
border?: "bottom" | "end" | "start" | "top" | boolean | undefined;
borderColor?: string | undefined;
title?: string | undefined;
text?: string | undefined;
type?: "error" | "info" | "success" | "warning" | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
prepend?: (() => import("vue").VNodeChild) | undefined;
title?: (() => import("vue").VNodeChild) | undefined;
text?: (() => import("vue").VNodeChild) | undefined;
append?: (() => import("vue").VNodeChild) | undefined;
close?: ((arg: {
props: Record<string, any>;
}) => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
prepend?: false | (() => import("vue").VNodeChild) | undefined;
title?: false | (() => import("vue").VNodeChild) | undefined;
text?: false | (() => import("vue").VNodeChild) | undefined;
append?: false | (() => import("vue").VNodeChild) | undefined;
close?: false | ((arg: {
props: Record<string, any>;
}) => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:append"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:close"?: false | ((arg: {
props: Record<string, any>;
}) => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:prepend"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:text"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
} & {
"onClick:close"?: ((e: MouseEvent) => any) | undefined;
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
}, () => false | JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
'click:close': (e: MouseEvent) => true;
'update:modelValue': (value: boolean) => true;
}, string, {
style: import("vue").StyleValue;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
iconSizes: [import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][];
closable: boolean;
closeIcon: IconValue;
closeLabel: string;
icon: false | IconValue;
modelValue: boolean;
prominent: boolean;
}, {}, string, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
prepend: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
title: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
text: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
append: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
close: (arg: {
props: Record<string, any>;
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
theme: StringConstructor;
class: PropType<import("../../composables/component.js").ClassValue>;
style: {
type: PropType<import("vue").StyleValue>;
default: null;
};
density: {
type: PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
};
elevation: {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
};
color: StringConstructor;
variant: Omit<{
type: PropType<import("../../composables/variant.js").Variant>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
};
height: (NumberConstructor | StringConstructor)[];
maxHeight: (NumberConstructor | StringConstructor)[];
maxWidth: (NumberConstructor | StringConstructor)[];
minHeight: (NumberConstructor | StringConstructor)[];
minWidth: (NumberConstructor | StringConstructor)[];
width: (NumberConstructor | StringConstructor)[];
location: PropType<import("../../util/index.js").Anchor | null>;
position: {
type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
validator: (v: any) => boolean;
};
iconSize: PropType<import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes | number | string>;
iconSizes: {
type: PropType<[import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][]>;
default: () => (string | number)[][];
};
border: {
type: PropType<boolean | 'top' | 'end' | 'bottom' | 'start'>;
validator: (val: boolean | string) => boolean;
};
borderColor: StringConstructor;
closable: BooleanConstructor;
closeIcon: {
type: PropType<IconValue>;
default: string;
};
closeLabel: {
type: StringConstructor;
default: string;
};
icon: {
type: PropType<false | IconValue>;
default: null;
};
modelValue: {
type: BooleanConstructor;
default: boolean;
};
prominent: BooleanConstructor;
title: StringConstructor;
text: StringConstructor;
type: {
type: PropType<ContextualType>;
validator: (val: ContextualType) => boolean;
};
}, import("vue").ExtractPropTypes<{
theme: StringConstructor;
class: PropType<import("../../composables/component.js").ClassValue>;
style: {
type: PropType<import("vue").StyleValue>;
default: null;
};
density: {
type: PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
};
elevation: {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
};
color: StringConstructor;
variant: Omit<{
type: PropType<import("../../composables/variant.js").Variant>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
};
height: (NumberConstructor | StringConstructor)[];
maxHeight: (NumberConstructor | StringConstructor)[];
maxWidth: (NumberConstructor | StringConstructor)[];
minHeight: (NumberConstructor | StringConstructor)[];
minWidth: (NumberConstructor | StringConstructor)[];
width: (NumberConstructor | StringConstructor)[];
location: PropType<import("../../util/index.js").Anchor | null>;
position: {
type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
validator: (v: any) => boolean;
};
iconSize: PropType<import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes | number | string>;
iconSizes: {
type: PropType<[import("../../labs/VIconBtn/VIconBtn.js").VIconBtnSizes, number][]>;
default: () => (string | number)[][];
};
border: {
type: PropType<boolean | 'top' | 'end' | 'bottom' | 'start'>;
validator: (val: boolean | string) => boolean;
};
borderColor: StringConstructor;
closable: BooleanConstructor;
closeIcon: {
type: PropType<IconValue>;
default: string;
};
closeLabel: {
type: StringConstructor;
default: string;
};
icon: {
type: PropType<false | IconValue>;
default: null;
};
modelValue: {
type: BooleanConstructor;
default: boolean;
};
prominent: BooleanConstructor;
title: StringConstructor;
text: StringConstructor;
type: {
type: PropType<ContextualType>;
validator: (val: ContextualType) => boolean;
};
}>>;
export type VAlert = InstanceType<typeof VAlert>;
+208
View File
@@ -0,0 +1,208 @@
import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
// Styles
import "./VAlert.css";
// Components
import { VAlertTitle } from "./VAlertTitle.js";
import { VBtn } from "../VBtn/index.js";
import { VDefaultsProvider } from "../VDefaultsProvider/index.js";
import { VIcon } from "../VIcon/index.js"; // Composables
import { useTextColor } from "../../composables/color.js";
import { makeComponentProps } from "../../composables/component.js";
import { makeDensityProps, useDensity } from "../../composables/density.js";
import { makeDimensionProps, useDimension } from "../../composables/dimensions.js";
import { makeElevationProps, useElevation } from "../../composables/elevation.js";
import { IconValue } from "../../composables/icons.js";
import { makeIconSizeProps, useIconSizes } from "../../composables/iconSizes.js";
import { useLocale } from "../../composables/locale.js";
import { makeLocationProps, useLocation } from "../../composables/location.js";
import { makePositionProps, usePosition } from "../../composables/position.js";
import { useProxiedModel } from "../../composables/proxiedModel.js";
import { makeRoundedProps, useRounded } from "../../composables/rounded.js";
import { makeTagProps } from "../../composables/tag.js";
import { makeThemeProps, provideTheme } from "../../composables/theme.js";
import { genOverlays, makeVariantProps, useVariant } from "../../composables/variant.js"; // Utilities
import { toRef } from 'vue';
import { genericComponent, propsFactory } from "../../util/index.js"; // Types
const allowedTypes = ['success', 'info', 'warning', 'error'];
export const makeVAlertProps = propsFactory({
border: {
type: [Boolean, String],
validator: val => {
return typeof val === 'boolean' || ['top', 'end', 'bottom', 'start'].includes(val);
}
},
borderColor: String,
closable: Boolean,
closeIcon: {
type: IconValue,
default: '$close'
},
closeLabel: {
type: String,
default: '$vuetify.close'
},
icon: {
type: [Boolean, String, Function, Object],
default: null
},
modelValue: {
type: Boolean,
default: true
},
prominent: Boolean,
title: String,
text: String,
type: {
type: String,
validator: val => allowedTypes.includes(val)
},
...makeComponentProps(),
...makeDensityProps(),
...makeDimensionProps(),
...makeElevationProps(),
...makeIconSizeProps(),
...makeLocationProps(),
...makePositionProps(),
...makeRoundedProps(),
...makeTagProps(),
...makeThemeProps(),
...makeVariantProps({
variant: 'flat'
})
}, 'VAlert');
export const VAlert = genericComponent()({
name: 'VAlert',
props: makeVAlertProps(),
emits: {
'click:close': e => true,
'update:modelValue': value => true
},
setup(props, {
emit,
slots
}) {
const isActive = useProxiedModel(props, 'modelValue');
const icon = toRef(() => {
if (props.icon === false) return undefined;
if (!props.type) return props.icon;
return props.icon ?? `$${props.type}`;
});
const {
iconSize
} = useIconSizes(props, () => props.prominent ? 44 : undefined);
const {
themeClasses
} = provideTheme(props);
const {
colorClasses,
colorStyles,
variantClasses
} = useVariant(() => ({
color: props.color ?? props.type,
variant: props.variant
}));
const {
densityClasses
} = useDensity(props);
const {
dimensionStyles
} = useDimension(props);
const {
elevationClasses
} = useElevation(props);
const {
locationStyles
} = useLocation(props);
const {
positionClasses
} = usePosition(props);
const {
roundedClasses
} = useRounded(props);
const {
textColorClasses,
textColorStyles
} = useTextColor(() => props.borderColor);
const {
t
} = useLocale();
const closeProps = toRef(() => ({
'aria-label': t(props.closeLabel),
onClick(e) {
isActive.value = false;
emit('click:close', e);
}
}));
return () => {
const hasPrepend = !!(slots.prepend || icon.value);
const hasTitle = !!(slots.title || props.title);
const hasClose = !!(slots.close || props.closable);
const iconProps = {
density: props.density,
icon: icon.value,
size: props.iconSize || props.prominent ? iconSize.value : undefined
};
return isActive.value && _createVNode(props.tag, {
"class": _normalizeClass(['v-alert', props.border && {
'v-alert--border': !!props.border,
[`v-alert--border-${props.border === true ? 'start' : props.border}`]: true
}, {
'v-alert--prominent': props.prominent
}, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class]),
"style": _normalizeStyle([colorStyles.value, dimensionStyles.value, locationStyles.value, props.style]),
"role": "alert"
}, {
default: () => [genOverlays(false, 'v-alert'), props.border && _createElementVNode("div", {
"key": "border",
"class": _normalizeClass(['v-alert__border', textColorClasses.value]),
"style": _normalizeStyle(textColorStyles.value)
}, null), hasPrepend && _createElementVNode("div", {
"key": "prepend",
"class": "v-alert__prepend"
}, [!slots.prepend ? _createVNode(VIcon, _mergeProps({
"key": "prepend-icon"
}, iconProps), null) : _createVNode(VDefaultsProvider, {
"key": "prepend-defaults",
"disabled": !icon.value,
"defaults": {
VIcon: {
...iconProps
}
}
}, slots.prepend)]), _createElementVNode("div", {
"class": "v-alert__content"
}, [hasTitle && _createVNode(VAlertTitle, {
"key": "title"
}, {
default: () => [slots.title?.() ?? props.title]
}), slots.text?.() ?? props.text, slots.default?.()]), slots.append && _createElementVNode("div", {
"key": "append",
"class": "v-alert__append"
}, [slots.append()]), hasClose && _createElementVNode("div", {
"key": "close",
"class": "v-alert__close"
}, [!slots.close ? _createVNode(VBtn, _mergeProps({
"key": "close-btn",
"icon": props.closeIcon,
"size": "x-small",
"variant": "text"
}, closeProps.value), null) : _createVNode(VDefaultsProvider, {
"key": "close-defaults",
"defaults": {
VBtn: {
icon: props.closeIcon,
size: 'x-small',
variant: 'text'
}
}
}, {
default: () => [slots.close?.({
props: closeProps.value
})]
})])]
});
};
}
});
//# sourceMappingURL=VAlert.js.map
File diff suppressed because one or more lines are too long
+165
View File
@@ -0,0 +1,165 @@
@use '../../styles/settings'
@use '../../styles/tools'
@use './variables' as *
@include tools.layer('components')
.v-alert
display: grid
flex: 1 1
grid-template-areas: "prepend content append close" ". content . ."
grid-template-columns: max-content auto max-content max-content
position: relative
padding: $alert-padding
overflow: hidden
--v-border-color: #{$alert-border-color}
@include tools.position($alert-positions)
@include tools.rounded($alert-border-radius)
@include tools.variant($alert-variants...)
&--prominent
grid-template-areas: "prepend content append close" "prepend content . ."
&.v-alert--border
--v-border-opacity: #{$alert-border-opacity}
&.v-alert--border-start
padding-inline-start: $alert-padding + $alert-border-thin-width
&.v-alert--border-end
padding-inline-end: $alert-padding + $alert-border-thin-width
&--variant-plain
transition: $alert-plain-transition
@at-root
@include tools.density('v-alert', $alert-density) using ($modifier)
padding-bottom: $alert-padding + $modifier
padding-top: $alert-padding + $modifier
&.v-alert--border-top
padding-top: $alert-padding + $alert-border-thin-width + $modifier
&.v-alert--border-bottom
padding-bottom: $alert-padding + $alert-border-thin-width + $modifier
&:not(:has(.v-alert-title))
.v-alert__content
padding-block: calc((#{$alert-prepend-icon-size} - #{settings.$line-height-root} * 1rem) / 2)
.v-alert__border
border-radius: inherit
bottom: 0
left: 0
opacity: var(--v-border-opacity)
position: absolute
pointer-events: none
right: 0
top: 0
width: 100%
@include tools.border($alert-border...)
.v-alert--border-start &
border-inline-start-width: $alert-border-thin-width
.v-alert--border-end &
border-inline-end-width: $alert-border-thin-width
.v-alert--border-top &
border-top-width: $alert-border-thin-width
.v-alert--border-bottom &
border-bottom-width: $alert-border-thin-width
.v-alert__close
flex: 0 1 auto
grid-area: close
> .v-btn
margin-block: calc(-1 * (var(--v-btn-height) + 12px - #{$alert-prepend-icon-size}) / 2)
.v-alert__content
align-self: center
grid-area: content
overflow: hidden
> :first-child
margin-top: 0
> :last-child
margin-bottom: 0
.v-alert__append,
.v-alert__close
margin-inline-start: $alert-append-margin-inline-start
.v-alert__append
align-self: flex-start
grid-area: append
+ .v-alert__close
margin-inline-start: $alert-append-close-margin-inline-start
.v-alert__prepend
align-self: flex-start
display: flex
align-items: center
grid-area: prepend
margin-inline-end: $alert-prepend-margin-inline-end
min-height: $alert-prepend-icon-size
> .v-icon
font-size: $alert-prepend-icon-size
height: $alert-prepend-icon-size
width: $alert-prepend-icon-size
.v-alert--prominent &
align-self: center
.v-alert__underlay
grid-area: none
position: absolute
.v-alert--border-start &
border-top-left-radius: 0
border-bottom-left-radius: 0
.v-alert--border-end &
border-top-right-radius: 0
border-bottom-right-radius: 0
.v-alert--border-top &
border-top-left-radius: 0
border-top-right-radius: 0
.v-alert--border-bottom &
border-bottom-left-radius: 0
border-bottom-right-radius: 0
.v-alert-title
align-items: center
align-self: center
display: flex
font-size: $alert-title-font-size
font-weight: $alert-title-font-weight
hyphens: $alert-title-hyphens
letter-spacing: $alert-title-letter-spacing
line-height: $alert-title-line-height
overflow-wrap: $alert-title-overflow-wrap
text-transform: $alert-title-text-transform
word-break: $alert-title-word-break
word-wrap: $alert-title-word-wrap
@media (forced-colors: active)
.v-alert
&:not(&--variant-text, &--variant-plain)
border-style: solid
&--variant-outlined,
&--variant-tonal
border-width: medium
&--variant-elevated,
&--variant-flat
border-width: thick
+105
View File
@@ -0,0 +1,105 @@
export declare const VAlertTitle: {
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tag: string;
} & {
class?: any;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
style: import("vue").StyleValue;
tag: string;
}, true, {}, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tag: string;
} & {
class?: any;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>, {}, {}, {}, {
style: import("vue").StyleValue;
tag: string;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tag: string;
} & {
class?: any;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
style: import("vue").StyleValue;
tag: string;
}, {}, string, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
tag: {
type: StringConstructor;
default: string;
};
}, import("vue").ExtractPropTypes<{
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
tag: {
type: StringConstructor;
default: string;
};
}>>;
export type VAlertTitle = InstanceType<typeof VAlertTitle>;
+4
View File
@@ -0,0 +1,4 @@
// Utilities
import { createSimpleFunctional } from "../../util/index.js";
export const VAlertTitle = createSimpleFunctional('v-alert-title');
//# sourceMappingURL=VAlertTitle.js.map
@@ -0,0 +1 @@
{"version":3,"file":"VAlertTitle.js","names":["createSimpleFunctional","VAlertTitle"],"sources":["../../../src/components/VAlert/VAlertTitle.ts"],"sourcesContent":["// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VAlertTitle = createSimpleFunctional('v-alert-title')\n\nexport type VAlertTitle = InstanceType<typeof VAlertTitle>\n"],"mappings":"AAAA;AAAA,SACSA,sBAAsB;AAE/B,OAAO,MAAMC,WAAW,GAAGD,sBAAsB,CAAC,eAAe,CAAC","ignoreList":[]}
+52
View File
@@ -0,0 +1,52 @@
@use '../../styles/settings';
@use '../../styles/tools';
// VAlert
$alert-background: rgb(var(--v-theme-surface-light)) !default;
$alert-border-color: currentColor !default;
$alert-border-opacity: .38 !default;
$alert-border-radius: settings.$border-radius-root !default;
$alert-border-style: settings.$border-style-root !default;
$alert-border-thin-width: 8px !default;
$alert-border-width: 0 !default;
$alert-color: tools.theme-color('on-surface-light', var(--v-high-emphasis-opacity)) !default;
$alert-density: ('default': 0, 'comfortable': -1, 'compact': -2) !default;
$alert-elevation: 1 !default;
$alert-padding: 16px !default;
$alert-plain-opacity: .62 !default;
$alert-plain-transition: .2s opacity settings.$standard-easing !default;
$alert-positions: absolute fixed sticky !default;
$alert-prepend-margin-inline-end: 16px !default;
$alert-prepend-icon-size: 1.75rem !default;
$alert-append-margin-inline-start: 16px !default;
$alert-append-close-margin-inline-start: 16px !default;
// VAlertTitle
$alert-title-font-size: tools.map-deep-get(settings.$typography, 'headline-small', 'size') !default;
$alert-title-font-weight: tools.map-deep-get(settings.$typography, 'headline-small', 'weight') !default;
$alert-title-hyphens: auto !default;
$alert-title-letter-spacing: tools.map-deep-get(settings.$typography, 'headline-small', 'letter-spacing') !default;
$alert-title-line-height: 1.75rem !default;
$alert-title-overflow-wrap: normal !default;
$alert-title-text-transform: none !default;
$alert-title-word-break: normal !default;
$alert-title-word-wrap: break-word !default;
// VAlertText
$alert-text-line-height: 1.35 !default;
// Lists
$alert-border: (
$alert-border-color,
$alert-border-style,
$alert-border-width,
$alert-border-thin-width
) !default;
$alert-variants: (
$alert-background,
$alert-color,
$alert-elevation,
$alert-plain-opacity,
'v-alert'
) !default;
+2
View File
@@ -0,0 +1,2 @@
export { VAlert } from './VAlert.js';
export { VAlertTitle } from './VAlertTitle.js';
+3
View File
@@ -0,0 +1,3 @@
export { VAlert } from "./VAlert.js";
export { VAlertTitle } from "./VAlertTitle.js";
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["VAlert","VAlertTitle"],"sources":["../../../src/components/VAlert/index.ts"],"sourcesContent":["export { VAlert } from './VAlert'\nexport { VAlertTitle } from './VAlertTitle'\n"],"mappings":"SAASA,MAAM;AAAA,SACNC,WAAW","ignoreList":[]}
+17
View File
@@ -0,0 +1,17 @@
@layer vuetify-components {
.v-application {
display: flex;
background: rgb(var(--v-theme-background));
color: color-mix(in srgb, rgb(var(--v-theme-on-background)) calc(var(--v-high-emphasis-opacity) * 100%), transparent);
}
.v-application__wrap {
backface-visibility: hidden;
display: flex;
flex-direction: column;
flex: 1 1 auto;
max-width: 100%;
min-height: 100vh;
min-height: 100dvh;
position: relative;
}
}
+185
View File
@@ -0,0 +1,185 @@
export declare const makeVAppProps: <Defaults extends {
theme?: unknown;
class?: unknown;
style?: unknown;
overlaps?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
theme: unknown extends Defaults["theme"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
};
class: unknown extends Defaults["class"] ? import("vue").PropType<any> : {
type: import("vue").PropType<unknown extends Defaults["class"] ? any : any>;
default: unknown extends Defaults["class"] ? any : any;
};
style: unknown extends Defaults["style"] ? {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
} : Omit<{
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
};
overlaps: unknown extends Defaults["overlaps"] ? import("vue").Prop<string[]> : {
type: import("vue").PropType<unknown extends Defaults["overlaps"] ? string[] : string[] | Defaults["overlaps"]>;
default: unknown extends Defaults["overlaps"] ? string[] : string[] | Defaults["overlaps"];
};
};
export declare const VApp: {
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
} & {
theme?: string | undefined;
class?: any;
overlaps?: string[] | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, {
getLayoutItem: (id: string) => {
top: number;
bottom: number;
left: number;
right: number;
id: string;
size: number;
position: import("../../composables/layout.js").Position;
} | undefined;
items: import("vue").ComputedRef<{
top: number;
bottom: number;
left: number;
right: number;
id: string;
size: number;
position: import("../../composables/layout.js").Position;
}[]>;
theme: import("../../types.js").ThemeInstance;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
style: import("vue").StyleValue;
}, true, {}, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
} & {
theme?: string | undefined;
class?: any;
overlaps?: string[] | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, {
getLayoutItem: (id: string) => {
top: number;
bottom: number;
left: number;
right: number;
id: string;
size: number;
position: import("../../composables/layout.js").Position;
} | undefined;
items: import("vue").ComputedRef<{
top: number;
bottom: number;
left: number;
right: number;
id: string;
size: number;
position: import("../../composables/layout.js").Position;
}[]>;
theme: import("../../types.js").ThemeInstance;
}, {}, {}, {}, {
style: import("vue").StyleValue;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
} & {
theme?: string | undefined;
class?: any;
overlaps?: string[] | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, {
getLayoutItem: (id: string) => {
top: number;
bottom: number;
left: number;
right: number;
id: string;
size: number;
position: import("../../composables/layout.js").Position;
} | undefined;
items: import("vue").ComputedRef<{
top: number;
bottom: number;
left: number;
right: number;
id: string;
size: number;
position: import("../../composables/layout.js").Position;
}[]>;
theme: import("../../types.js").ThemeInstance;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
style: import("vue").StyleValue;
}, {}, string, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
theme: StringConstructor;
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
overlaps: import("vue").Prop<string[]>;
}, import("vue").ExtractPropTypes<{
theme: StringConstructor;
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
overlaps: import("vue").Prop<string[]>;
}>>;
export type VApp = InstanceType<typeof VApp>;
+49
View File
@@ -0,0 +1,49 @@
import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from "vue";
// Styles
import "./VApp.css";
// Composables
import { makeComponentProps } from "../../composables/component.js";
import { createLayout, makeLayoutProps } from "../../composables/layout.js";
import { useRtl } from "../../composables/locale.js";
import { makeThemeProps, provideTheme } from "../../composables/theme.js"; // Utilities
import { genericComponent, omit, propsFactory, useRender } from "../../util/index.js";
export const makeVAppProps = propsFactory({
...makeComponentProps(),
...omit(makeLayoutProps(), ['fullHeight']),
...makeThemeProps()
}, 'VApp');
export const VApp = genericComponent()({
name: 'VApp',
props: makeVAppProps(),
setup(props, {
slots
}) {
const theme = provideTheme(props);
const {
layoutClasses,
getLayoutItem,
items,
layoutRef
} = createLayout({
...props,
fullHeight: true
});
const {
rtlClasses
} = useRtl();
useRender(() => _createElementVNode("div", {
"ref": layoutRef,
"class": _normalizeClass(['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class]),
"style": _normalizeStyle([props.style])
}, [_createElementVNode("div", {
"class": "v-application__wrap"
}, [slots.default?.()])]));
return {
getLayoutItem,
items,
theme
};
}
});
//# sourceMappingURL=VApp.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"VApp.js","names":["makeComponentProps","createLayout","makeLayoutProps","useRtl","makeThemeProps","provideTheme","genericComponent","omit","propsFactory","useRender","makeVAppProps","VApp","name","props","setup","slots","theme","layoutClasses","getLayoutItem","items","layoutRef","fullHeight","rtlClasses","_createElementVNode","_normalizeClass","themeClasses","value","class","_normalizeStyle","style","default"],"sources":["../../../src/components/VApp/VApp.tsx"],"sourcesContent":["// Styles\nimport './VApp.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { createLayout, makeLayoutProps } from '@/composables/layout'\nimport { useRtl } from '@/composables/locale'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\nexport const makeVAppProps = propsFactory({\n ...makeComponentProps(),\n ...omit(makeLayoutProps(), ['fullHeight']),\n ...makeThemeProps(),\n}, 'VApp')\n\nexport const VApp = genericComponent()({\n name: 'VApp',\n\n props: makeVAppProps(),\n\n setup (props, { slots }) {\n const theme = provideTheme(props)\n const { layoutClasses, getLayoutItem, items, layoutRef } = createLayout({ ...props, fullHeight: true })\n const { rtlClasses } = useRtl()\n\n useRender(() => (\n <div\n ref={ layoutRef }\n class={[\n 'v-application',\n theme.themeClasses.value,\n layoutClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n props.style,\n ]}\n >\n <div class=\"v-application__wrap\">\n { slots.default?.() }\n </div>\n </div>\n ))\n\n return {\n getLayoutItem,\n items,\n theme,\n }\n },\n})\n\nexport type VApp = InstanceType<typeof VApp>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,YAAY,EAAEC,eAAe;AAAA,SAC7BC,MAAM;AAAA,SACNC,cAAc,EAAEC,YAAY,sCAErC;AAAA,SACSC,gBAAgB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS;AAExD,OAAO,MAAMC,aAAa,GAAGF,YAAY,CAAC;EACxC,GAAGR,kBAAkB,CAAC,CAAC;EACvB,GAAGO,IAAI,CAACL,eAAe,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;EAC1C,GAAGE,cAAc,CAAC;AACpB,CAAC,EAAE,MAAM,CAAC;AAEV,OAAO,MAAMO,IAAI,GAAGL,gBAAgB,CAAC,CAAC,CAAC;EACrCM,IAAI,EAAE,MAAM;EAEZC,KAAK,EAAEH,aAAa,CAAC,CAAC;EAEtBI,KAAKA,CAAED,KAAK,EAAE;IAAEE;EAAM,CAAC,EAAE;IACvB,MAAMC,KAAK,GAAGX,YAAY,CAACQ,KAAK,CAAC;IACjC,MAAM;MAAEI,aAAa;MAAEC,aAAa;MAAEC,KAAK;MAAEC;IAAU,CAAC,GAAGnB,YAAY,CAAC;MAAE,GAAGY,KAAK;MAAEQ,UAAU,EAAE;IAAK,CAAC,CAAC;IACvG,MAAM;MAAEC;IAAW,CAAC,GAAGnB,MAAM,CAAC,CAAC;IAE/BM,SAAS,CAAC,MAAAc,mBAAA;MAAA,OAEAH,SAAS;MAAA,SAAAI,eAAA,CACR,CACL,eAAe,EACfR,KAAK,CAACS,YAAY,CAACC,KAAK,EACxBT,aAAa,CAACS,KAAK,EACnBJ,UAAU,CAACI,KAAK,EAChBb,KAAK,CAACc,KAAK,CACZ;MAAA,SAAAC,eAAA,CACM,CACLf,KAAK,CAACgB,KAAK,CACZ;IAAA,IAAAN,mBAAA;MAAA;IAAA,IAGGR,KAAK,CAACe,OAAO,GAAG,CAAC,IAGxB,CAAC;IAEF,OAAO;MACLZ,aAAa;MACbC,KAAK;MACLH;IACF,CAAC;EACH;AACF,CAAC,CAAC","ignoreList":[]}
+18
View File
@@ -0,0 +1,18 @@
@use '../../styles/tools'
@use './variables' as *
@include tools.layer('components')
.v-application
display: flex
background: $application-background
color: $application-color
.v-application__wrap
backface-visibility: hidden
display: flex
flex-direction: column
flex: 1 1 auto
max-width: 100%
min-height: 100vh
min-height: 100dvh
position: relative
+6
View File
@@ -0,0 +1,6 @@
@use '../../styles/settings';
@use '../../styles/tools';
// VApp
$application-background: rgb(var(--v-theme-background)) !default;
$application-color: tools.theme-color('on-background', var(--v-high-emphasis-opacity)) !default;
+1
View File
@@ -0,0 +1 @@
export { VApp } from './VApp.js';
+2
View File
@@ -0,0 +1,2 @@
export { VApp } from "./VApp.js";
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["VApp"],"sources":["../../../src/components/VApp/index.ts"],"sourcesContent":["export { VApp } from './VApp'\n"],"mappings":"SAASA,IAAI","ignoreList":[]}
+16
View File
@@ -0,0 +1,16 @@
@layer vuetify-components {
.v-app-bar {
display: flex;
}
.v-app-bar.v-toolbar {
background: rgb(var(--v-theme-surface));
color: color-mix(in srgb, rgb(var(--v-theme-on-surface)) calc(var(--v-high-emphasis-opacity) * 100%), transparent);
}
.v-app-bar.v-toolbar:not(.v-toolbar--flat) {
box-shadow: 0px 1px 2px 0px rgba(var(--v-shadow-color), var(--v-shadow-key-opacity, 0.3)), 0px 2px 6px 2px rgba(var(--v-shadow-color), var(--v-shadow-ambient-opacity, 0.15));
--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) 4%, transparent);
}
.v-app-bar:not(.v-toolbar--absolute) {
padding-inline-end: var(--v-scrollbar-offset);
}
}
+669
View File
@@ -0,0 +1,669 @@
import type { PropType } from 'vue';
export declare const makeVAppBarProps: <Defaults extends {
theme?: unknown;
class?: unknown;
style?: unknown;
name?: unknown;
order?: unknown;
absolute?: unknown;
border?: unknown;
elevation?: unknown;
rounded?: unknown;
tile?: unknown;
tag?: unknown;
collapse?: unknown;
collapsePosition?: unknown;
color?: unknown;
density?: unknown;
extended?: unknown;
extensionHeight?: unknown;
flat?: unknown;
floating?: unknown;
image?: unknown;
title?: unknown;
scrollTarget?: unknown;
scrollThreshold?: unknown;
scrollBehavior?: unknown;
modelValue?: unknown;
location?: unknown;
height?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
theme: unknown extends Defaults["theme"] ? StringConstructor : {
type: PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
};
class: unknown extends Defaults["class"] ? PropType<any> : {
type: PropType<unknown extends Defaults["class"] ? any : any>;
default: unknown extends Defaults["class"] ? any : any;
};
style: unknown extends Defaults["style"] ? {
type: PropType<import("vue").StyleValue>;
default: null;
} : Omit<{
type: PropType<import("vue").StyleValue>;
default: null;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
};
name: unknown extends Defaults["name"] ? {
type: StringConstructor;
} : Omit<{
type: StringConstructor;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["name"] ? string : string | Defaults["name"]>;
default: unknown extends Defaults["name"] ? string : string | Defaults["name"];
};
order: unknown extends Defaults["order"] ? {
type: (NumberConstructor | StringConstructor)[];
default: number;
} : Omit<{
type: (NumberConstructor | StringConstructor)[];
default: number;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["order"] ? string | number : string | number | Defaults["order"]>;
default: unknown extends Defaults["order"] ? string | number : Defaults["order"] | NonNullable<string | number>;
};
absolute: unknown extends Defaults["absolute"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["absolute"] ? boolean : boolean | Defaults["absolute"]>;
default: unknown extends Defaults["absolute"] ? boolean : boolean | Defaults["absolute"];
};
border: unknown extends Defaults["border"] ? (BooleanConstructor | NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["border"] ? string | number | boolean : string | number | boolean | Defaults["border"]>;
default: unknown extends Defaults["border"] ? string | number | boolean : Defaults["border"] | NonNullable<string | number | boolean>;
};
elevation: unknown extends Defaults["elevation"] ? {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
} : Omit<{
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["elevation"] ? string | number : string | number | Defaults["elevation"]>;
default: unknown extends Defaults["elevation"] ? string | number : Defaults["elevation"] | NonNullable<string | number>;
};
rounded: unknown extends Defaults["rounded"] ? {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
} : Omit<{
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["rounded"] ? string | number | boolean : string | number | boolean | Defaults["rounded"]>;
default: unknown extends Defaults["rounded"] ? string | number | boolean : Defaults["rounded"] | NonNullable<string | number | boolean>;
};
tile: unknown extends Defaults["tile"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
};
tag: unknown extends Defaults["tag"] ? Omit<{
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
} : Omit<Omit<{
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
};
collapse: unknown extends Defaults["collapse"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["collapse"] ? boolean : boolean | Defaults["collapse"]>;
default: unknown extends Defaults["collapse"] ? boolean : boolean | Defaults["collapse"];
};
collapsePosition: unknown extends Defaults["collapsePosition"] ? {
type: PropType<'start' | 'end'>;
default: string;
} : Omit<{
type: PropType<'start' | 'end'>;
default: string;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["collapsePosition"] ? "end" | "start" : "end" | "start" | Defaults["collapsePosition"]>;
default: unknown extends Defaults["collapsePosition"] ? "end" | "start" : Defaults["collapsePosition"] | NonNullable<"end" | "start">;
};
color: unknown extends Defaults["color"] ? StringConstructor : {
type: PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
};
density: unknown extends Defaults["density"] ? {
type: PropType<import("../VToolbar/VToolbar.js").Density>;
default: string;
validator: (v: any) => boolean;
} : Omit<{
type: PropType<import("../VToolbar/VToolbar.js").Density>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["density"] ? import("../VToolbar/VToolbar.js").Density : Defaults["density"] | import("../VToolbar/VToolbar.js").Density>;
default: unknown extends Defaults["density"] ? import("../VToolbar/VToolbar.js").Density : Defaults["density"] | NonNullable<import("../VToolbar/VToolbar.js").Density>;
};
extended: unknown extends Defaults["extended"] ? {
type: BooleanConstructor;
default: null;
} : Omit<{
type: BooleanConstructor;
default: null;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["extended"] ? boolean : boolean | Defaults["extended"]>;
default: unknown extends Defaults["extended"] ? boolean : boolean | Defaults["extended"];
};
extensionHeight: unknown extends Defaults["extensionHeight"] ? {
type: (NumberConstructor | StringConstructor)[];
default: number;
} : Omit<{
type: (NumberConstructor | StringConstructor)[];
default: number;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["extensionHeight"] ? string | number : string | number | Defaults["extensionHeight"]>;
default: unknown extends Defaults["extensionHeight"] ? string | number : Defaults["extensionHeight"] | NonNullable<string | number>;
};
flat: unknown extends Defaults["flat"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["flat"] ? boolean : boolean | Defaults["flat"]>;
default: unknown extends Defaults["flat"] ? boolean : boolean | Defaults["flat"];
};
floating: unknown extends Defaults["floating"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["floating"] ? boolean : boolean | Defaults["floating"]>;
default: unknown extends Defaults["floating"] ? boolean : boolean | Defaults["floating"];
};
image: unknown extends Defaults["image"] ? StringConstructor : {
type: PropType<unknown extends Defaults["image"] ? string : string | Defaults["image"]>;
default: unknown extends Defaults["image"] ? string : string | Defaults["image"];
};
title: unknown extends Defaults["title"] ? StringConstructor : {
type: PropType<unknown extends Defaults["title"] ? string : string | Defaults["title"]>;
default: unknown extends Defaults["title"] ? string : string | Defaults["title"];
};
scrollTarget: unknown extends Defaults["scrollTarget"] ? {
type: StringConstructor;
} : Omit<{
type: StringConstructor;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["scrollTarget"] ? string : string | Defaults["scrollTarget"]>;
default: unknown extends Defaults["scrollTarget"] ? string : string | Defaults["scrollTarget"];
};
scrollThreshold: unknown extends Defaults["scrollThreshold"] ? {
type: (NumberConstructor | StringConstructor)[];
default: number;
} : Omit<{
type: (NumberConstructor | StringConstructor)[];
default: number;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["scrollThreshold"] ? string | number : string | number | Defaults["scrollThreshold"]>;
default: unknown extends Defaults["scrollThreshold"] ? string | number : Defaults["scrollThreshold"] | NonNullable<string | number>;
};
scrollBehavior: unknown extends Defaults["scrollBehavior"] ? PropType<"collapse" | "elevate" | "fade-image" | "fully-hide" | "hide" | "inverted" | (string & {})> : {
type: PropType<unknown extends Defaults["scrollBehavior"] ? "collapse" | "elevate" | "fade-image" | "fully-hide" | "hide" | "inverted" | (string & {}) : "collapse" | "elevate" | "fade-image" | "fully-hide" | "hide" | "inverted" | Defaults["scrollBehavior"] | (string & {})>;
default: unknown extends Defaults["scrollBehavior"] ? "collapse" | "elevate" | "fade-image" | "fully-hide" | "hide" | "inverted" | (string & {}) : string | Defaults["scrollBehavior"];
};
modelValue: unknown extends Defaults["modelValue"] ? {
type: BooleanConstructor;
default: boolean;
} : Omit<{
type: BooleanConstructor;
default: boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["modelValue"] ? boolean : boolean | Defaults["modelValue"]>;
default: unknown extends Defaults["modelValue"] ? boolean : boolean | Defaults["modelValue"];
};
location: unknown extends Defaults["location"] ? {
type: PropType<'top' | 'bottom'>;
default: string;
validator: (value: any) => boolean;
} : Omit<{
type: PropType<'top' | 'bottom'>;
default: string;
validator: (value: any) => boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["location"] ? "bottom" | "top" : "bottom" | "top" | Defaults["location"]>;
default: unknown extends Defaults["location"] ? "bottom" | "top" : Defaults["location"] | NonNullable<"bottom" | "top">;
};
height: unknown extends Defaults["height"] ? {
type: (NumberConstructor | StringConstructor)[];
default: number;
} : Omit<{
type: (NumberConstructor | StringConstructor)[];
default: number;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
};
};
export declare const VAppBar: {
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
order: string | number;
absolute: boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
collapse: boolean;
collapsePosition: "end" | "start";
density: import("../VToolbar/VToolbar.js").Density;
extended: boolean;
extensionHeight: string | number;
flat: boolean;
floating: boolean;
scrollThreshold: string | number;
modelValue: boolean;
location: "bottom" | "top";
height: string | number;
} & {
theme?: string | undefined;
class?: any;
name?: string | undefined;
border?: string | number | boolean | undefined;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
color?: string | undefined;
image?: string | undefined;
title?: string | undefined;
scrollTarget?: string | undefined;
scrollBehavior?: "collapse" | "elevate" | "fade-image" | "fully-hide" | "hide" | "inverted" | (string & {}) | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
image?: (() => import("vue").VNodeChild) | undefined;
prepend?: (() => import("vue").VNodeChild) | undefined;
append?: (() => import("vue").VNodeChild) | undefined;
title?: (() => import("vue").VNodeChild) | undefined;
extension?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
image?: false | (() => import("vue").VNodeChild) | undefined;
prepend?: false | (() => import("vue").VNodeChild) | undefined;
append?: false | (() => import("vue").VNodeChild) | undefined;
title?: false | (() => import("vue").VNodeChild) | undefined;
extension?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:append"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:extension"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:image"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:prepend"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
} & {
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
'update:modelValue': (value: boolean) => true;
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
style: import("vue").StyleValue;
order: string | number;
absolute: boolean;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
collapse: boolean;
collapsePosition: "end" | "start";
density: import("../VToolbar/VToolbar.js").Density;
extended: boolean;
extensionHeight: string | number;
flat: boolean;
floating: boolean;
scrollThreshold: string | number;
modelValue: boolean;
location: "bottom" | "top";
height: string | number;
}, true, {}, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
image: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
prepend: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
append: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
title: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
extension: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
order: string | number;
absolute: boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
collapse: boolean;
collapsePosition: "end" | "start";
density: import("../VToolbar/VToolbar.js").Density;
extended: boolean;
extensionHeight: string | number;
flat: boolean;
floating: boolean;
scrollThreshold: string | number;
modelValue: boolean;
location: "bottom" | "top";
height: string | number;
} & {
theme?: string | undefined;
class?: any;
name?: string | undefined;
border?: string | number | boolean | undefined;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
color?: string | undefined;
image?: string | undefined;
title?: string | undefined;
scrollTarget?: string | undefined;
scrollBehavior?: "collapse" | "elevate" | "fade-image" | "fully-hide" | "hide" | "inverted" | (string & {}) | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
image?: (() => import("vue").VNodeChild) | undefined;
prepend?: (() => import("vue").VNodeChild) | undefined;
append?: (() => import("vue").VNodeChild) | undefined;
title?: (() => import("vue").VNodeChild) | undefined;
extension?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
image?: false | (() => import("vue").VNodeChild) | undefined;
prepend?: false | (() => import("vue").VNodeChild) | undefined;
append?: false | (() => import("vue").VNodeChild) | undefined;
title?: false | (() => import("vue").VNodeChild) | undefined;
extension?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:append"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:extension"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:image"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:prepend"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
} & {
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
}, {}, {}, {}, {}, {
style: import("vue").StyleValue;
order: string | number;
absolute: boolean;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
collapse: boolean;
collapsePosition: "end" | "start";
density: import("../VToolbar/VToolbar.js").Density;
extended: boolean;
extensionHeight: string | number;
flat: boolean;
floating: boolean;
scrollThreshold: string | number;
modelValue: boolean;
location: "bottom" | "top";
height: string | number;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
order: string | number;
absolute: boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
collapse: boolean;
collapsePosition: "end" | "start";
density: import("../VToolbar/VToolbar.js").Density;
extended: boolean;
extensionHeight: string | number;
flat: boolean;
floating: boolean;
scrollThreshold: string | number;
modelValue: boolean;
location: "bottom" | "top";
height: string | number;
} & {
theme?: string | undefined;
class?: any;
name?: string | undefined;
border?: string | number | boolean | undefined;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
color?: string | undefined;
image?: string | undefined;
title?: string | undefined;
scrollTarget?: string | undefined;
scrollBehavior?: "collapse" | "elevate" | "fade-image" | "fully-hide" | "hide" | "inverted" | (string & {}) | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
image?: (() => import("vue").VNodeChild) | undefined;
prepend?: (() => import("vue").VNodeChild) | undefined;
append?: (() => import("vue").VNodeChild) | undefined;
title?: (() => import("vue").VNodeChild) | undefined;
extension?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
image?: false | (() => import("vue").VNodeChild) | undefined;
prepend?: false | (() => import("vue").VNodeChild) | undefined;
append?: false | (() => import("vue").VNodeChild) | undefined;
title?: false | (() => import("vue").VNodeChild) | undefined;
extension?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:append"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:extension"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:image"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:prepend"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
} & {
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
'update:modelValue': (value: boolean) => true;
}, string, {
style: import("vue").StyleValue;
order: string | number;
absolute: boolean;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
collapse: boolean;
collapsePosition: "end" | "start";
density: import("../VToolbar/VToolbar.js").Density;
extended: boolean;
extensionHeight: string | number;
flat: boolean;
floating: boolean;
scrollThreshold: string | number;
modelValue: boolean;
location: "bottom" | "top";
height: string | number;
}, {}, string, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
image: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
prepend: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
append: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
title: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
extension: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
theme: StringConstructor;
class: PropType<import("../../composables/component.js").ClassValue>;
style: {
type: PropType<import("vue").StyleValue>;
default: null;
};
name: {
type: StringConstructor;
};
order: {
type: (NumberConstructor | StringConstructor)[];
default: number;
};
absolute: BooleanConstructor;
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
elevation: {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: Omit<{
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
};
collapse: BooleanConstructor;
collapsePosition: {
type: PropType<'start' | 'end'>;
default: string;
};
color: StringConstructor;
density: {
type: PropType<import("../VToolbar/VToolbar.js").Density>;
default: string;
validator: (v: any) => boolean;
};
extended: {
type: BooleanConstructor;
default: null;
};
extensionHeight: {
type: (NumberConstructor | StringConstructor)[];
default: number;
};
flat: BooleanConstructor;
floating: BooleanConstructor;
image: StringConstructor;
title: StringConstructor;
scrollTarget: {
type: StringConstructor;
};
scrollThreshold: {
type: (NumberConstructor | StringConstructor)[];
default: number;
};
scrollBehavior: PropType<'hide' | 'fully-hide' | 'inverted' | 'collapse' | 'elevate' | 'fade-image' | (string & {})>;
modelValue: {
type: BooleanConstructor;
default: boolean;
};
location: {
type: PropType<'top' | 'bottom'>;
default: string;
validator: (value: any) => boolean;
};
height: {
type: (NumberConstructor | StringConstructor)[];
default: number;
};
}, import("vue").ExtractPropTypes<{
theme: StringConstructor;
class: PropType<import("../../composables/component.js").ClassValue>;
style: {
type: PropType<import("vue").StyleValue>;
default: null;
};
name: {
type: StringConstructor;
};
order: {
type: (NumberConstructor | StringConstructor)[];
default: number;
};
absolute: BooleanConstructor;
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
elevation: {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: Omit<{
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
};
collapse: BooleanConstructor;
collapsePosition: {
type: PropType<'start' | 'end'>;
default: string;
};
color: StringConstructor;
density: {
type: PropType<import("../VToolbar/VToolbar.js").Density>;
default: string;
validator: (v: any) => boolean;
};
extended: {
type: BooleanConstructor;
default: null;
};
extensionHeight: {
type: (NumberConstructor | StringConstructor)[];
default: number;
};
flat: BooleanConstructor;
floating: BooleanConstructor;
image: StringConstructor;
title: StringConstructor;
scrollTarget: {
type: StringConstructor;
};
scrollThreshold: {
type: (NumberConstructor | StringConstructor)[];
default: number;
};
scrollBehavior: PropType<'hide' | 'fully-hide' | 'inverted' | 'collapse' | 'elevate' | 'fade-image' | (string & {})>;
modelValue: {
type: BooleanConstructor;
default: boolean;
};
location: {
type: PropType<'top' | 'bottom'>;
default: string;
validator: (value: any) => boolean;
};
height: {
type: (NumberConstructor | StringConstructor)[];
default: number;
};
}>>;
export type VAppBar = InstanceType<typeof VAppBar>;
+154
View File
@@ -0,0 +1,154 @@
import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
// Styles
import "./VAppBar.css";
// Components
import { makeVToolbarProps, VToolbar } from "../VToolbar/VToolbar.js"; // Composables
import { makeLayoutItemProps, useLayoutItem } from "../../composables/layout.js";
import { useProxiedModel } from "../../composables/proxiedModel.js";
import { makeScrollProps, useScroll } from "../../composables/scroll.js";
import { useSsrBoot } from "../../composables/ssrBoot.js";
import { useToggleScope } from "../../composables/toggleScope.js"; // Utilities
import { computed, ref, shallowRef, toRef, watchEffect } from 'vue';
import { genericComponent, omit, propsFactory, useRender } from "../../util/index.js"; // Types
export const makeVAppBarProps = propsFactory({
scrollBehavior: String,
modelValue: {
type: Boolean,
default: true
},
location: {
type: String,
default: 'top',
validator: value => ['top', 'bottom'].includes(value)
},
...omit(makeVToolbarProps(), ['location']),
...makeLayoutItemProps(),
...makeScrollProps(),
height: {
type: [Number, String],
default: 64
}
}, 'VAppBar');
export const VAppBar = genericComponent()({
name: 'VAppBar',
props: makeVAppBarProps(),
emits: {
'update:modelValue': value => true
},
setup(props, {
slots
}) {
const vToolbarRef = ref();
const isActive = useProxiedModel(props, 'modelValue');
const scrollBehavior = computed(() => {
const behavior = new Set(props.scrollBehavior?.split(' ') ?? []);
return {
hide: behavior.has('hide'),
fullyHide: behavior.has('fully-hide'),
inverted: behavior.has('inverted'),
collapse: behavior.has('collapse'),
elevate: behavior.has('elevate'),
fadeImage: behavior.has('fade-image')
// shrink: behavior.has('shrink'),
};
});
const canScroll = computed(() => {
const behavior = scrollBehavior.value;
return behavior.hide || behavior.fullyHide || behavior.inverted || behavior.collapse || behavior.elevate || behavior.fadeImage ||
// behavior.shrink ||
!isActive.value;
});
const appBarHeight = computed(() => {
const height = vToolbarRef.value?.contentHeight ?? 0;
const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
return height + extensionHeight;
});
const {
currentScroll,
scrollThreshold,
isScrollingUp,
scrollRatio,
isAtBottom,
reachedBottomWhileScrollingDown,
hasEnoughScrollableSpace
} = useScroll(props, {
canScroll,
layoutSize: appBarHeight
});
const canHide = toRef(() => scrollBehavior.value.hide || scrollBehavior.value.fullyHide);
const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
const isFlat = computed(() => props.flat || scrollBehavior.value.fullyHide && !isActive.value || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
const height = computed(() => {
if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
const height = vToolbarRef.value?.contentHeight ?? 0;
const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
if (!canHide.value) return height + extensionHeight;
return currentScroll.value < scrollThreshold.value || scrollBehavior.value.fullyHide ? height + extensionHeight : height;
});
useToggleScope(() => !!props.scrollBehavior, () => {
watchEffect(() => {
if (!canHide.value) {
isActive.value = true;
return;
}
if (scrollBehavior.value.inverted) {
isActive.value = currentScroll.value > scrollThreshold.value;
return;
}
// If there's not enough scrollable space, don't apply scroll-hide behavior at all
// This prevents flickering/bouncing animations on short pages
if (!hasEnoughScrollableSpace.value) {
isActive.value = true;
return;
}
// Prevent navbar from showing when we reached bottom while scrolling down
// This handles the case where scroll momentum causes to hit bottom during hide transition
if (reachedBottomWhileScrollingDown.value) {
isActive.value = false;
return;
}
// Normal behavior: show when scrolling up (and not at bottom) or above threshold
isActive.value = isScrollingUp.value && !isAtBottom.value || currentScroll.value < scrollThreshold.value;
});
});
const {
ssrBootStyles
} = useSsrBoot();
const {
layoutItemStyles
} = useLayoutItem({
id: props.name,
order: computed(() => parseInt(props.order, 10)),
position: toRef(() => props.location),
layoutSize: height,
elementSize: shallowRef(undefined),
active: isActive,
absolute: toRef(() => props.absolute)
});
useRender(() => {
const toolbarProps = omit(VToolbar.filterProps(props), ['location']);
return _createVNode(VToolbar, _mergeProps({
"ref": vToolbarRef,
"class": ['v-app-bar', {
'v-app-bar--bottom': props.location === 'bottom'
}, props.class],
"style": [{
...layoutItemStyles.value,
'--v-toolbar-image-opacity': opacity.value,
height: undefined,
...ssrBootStyles.value
}, props.style]
}, toolbarProps, {
"collapse": isCollapsed.value,
"flat": isFlat.value
}), slots);
});
return {};
}
});
//# sourceMappingURL=VAppBar.js.map
File diff suppressed because one or more lines are too long
+15
View File
@@ -0,0 +1,15 @@
@use '../../styles/tools'
@use './variables' as *
@include tools.layer('components')
.v-app-bar
display: flex
&.v-toolbar
@include tools.theme($app-bar-theme...)
&:not(.v-toolbar--flat)
@include tools.elevation($app-bar-elevation)
&:not(.v-toolbar--absolute)
padding-inline-end: var(--v-scrollbar-offset)
@@ -0,0 +1,836 @@
export declare const makeVAppBarNavIconProps: <Defaults extends {
theme?: unknown;
class?: unknown;
style?: unknown;
border?: unknown;
density?: unknown;
elevation?: unknown;
rounded?: unknown;
tile?: unknown;
tag?: unknown;
color?: unknown;
variant?: unknown;
value?: unknown;
disabled?: unknown;
selectedClass?: unknown;
size?: unknown;
height?: unknown;
maxHeight?: unknown;
maxWidth?: unknown;
minHeight?: unknown;
minWidth?: unknown;
width?: unknown;
location?: unknown;
loading?: unknown;
position?: unknown;
href?: unknown;
replace?: unknown;
to?: unknown;
exact?: unknown;
active?: unknown;
activeColor?: unknown;
baseColor?: unknown;
symbol?: unknown;
flat?: unknown;
icon?: unknown;
prependIcon?: unknown;
appendIcon?: unknown;
block?: unknown;
readonly?: unknown;
slim?: unknown;
stacked?: unknown;
ripple?: unknown;
text?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
theme: unknown extends Defaults["theme"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
};
class: unknown extends Defaults["class"] ? import("vue").PropType<any> : {
type: import("vue").PropType<unknown extends Defaults["class"] ? any : any>;
default: unknown extends Defaults["class"] ? any : any;
};
style: unknown extends Defaults["style"] ? {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
} : Omit<{
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
};
border: unknown extends Defaults["border"] ? (BooleanConstructor | NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["border"] ? string | number | boolean : string | number | boolean | Defaults["border"]>;
default: unknown extends Defaults["border"] ? string | number | boolean : Defaults["border"] | NonNullable<string | number | boolean>;
};
density: unknown extends Defaults["density"] ? {
type: import("vue").PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
} : Omit<{
type: import("vue").PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | import("../../composables/density.js").Density>;
default: unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | NonNullable<import("../../composables/density.js").Density>;
};
elevation: unknown extends Defaults["elevation"] ? {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
} : Omit<{
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["elevation"] ? string | number : string | number | Defaults["elevation"]>;
default: unknown extends Defaults["elevation"] ? string | number : Defaults["elevation"] | NonNullable<string | number>;
};
rounded: unknown extends Defaults["rounded"] ? {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
} : Omit<{
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["rounded"] ? string | number | boolean : string | number | boolean | Defaults["rounded"]>;
default: unknown extends Defaults["rounded"] ? string | number | boolean : Defaults["rounded"] | NonNullable<string | number | boolean>;
};
tile: unknown extends Defaults["tile"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
};
tag: unknown extends Defaults["tag"] ? Omit<{
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
} : Omit<Omit<{
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
};
color: unknown extends Defaults["color"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
};
variant: unknown extends Defaults["variant"] ? Omit<Omit<{
type: import("vue").PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: import("vue").PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
}, "default" | "type"> & {
type: import("vue").PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
} : Omit<Omit<Omit<{
type: import("vue").PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: import("vue").PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
}, "default" | "type"> & {
type: import("vue").PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["variant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" | Defaults["variant"]>;
default: unknown extends Defaults["variant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : Defaults["variant"] | NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
};
value: unknown extends Defaults["value"] ? null : {
type: import("vue").PropType<unknown extends Defaults["value"] ? any : any>;
default: unknown extends Defaults["value"] ? any : any;
};
disabled: unknown extends Defaults["disabled"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"]>;
default: unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"];
};
selectedClass: unknown extends Defaults["selectedClass"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["selectedClass"] ? string : string | Defaults["selectedClass"]>;
default: unknown extends Defaults["selectedClass"] ? string : string | Defaults["selectedClass"];
};
size: unknown extends Defaults["size"] ? {
type: (NumberConstructor | StringConstructor)[];
default: string;
} : Omit<{
type: (NumberConstructor | StringConstructor)[];
default: string;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["size"] ? string | number : string | number | Defaults["size"]>;
default: unknown extends Defaults["size"] ? string | number : Defaults["size"] | NonNullable<string | number>;
};
height: unknown extends Defaults["height"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
};
maxHeight: unknown extends Defaults["maxHeight"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["maxHeight"] ? string | number : string | number | Defaults["maxHeight"]>;
default: unknown extends Defaults["maxHeight"] ? string | number : Defaults["maxHeight"] | NonNullable<string | number>;
};
maxWidth: unknown extends Defaults["maxWidth"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["maxWidth"] ? string | number : string | number | Defaults["maxWidth"]>;
default: unknown extends Defaults["maxWidth"] ? string | number : Defaults["maxWidth"] | NonNullable<string | number>;
};
minHeight: unknown extends Defaults["minHeight"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["minHeight"] ? string | number : string | number | Defaults["minHeight"]>;
default: unknown extends Defaults["minHeight"] ? string | number : Defaults["minHeight"] | NonNullable<string | number>;
};
minWidth: unknown extends Defaults["minWidth"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["minWidth"] ? string | number : string | number | Defaults["minWidth"]>;
default: unknown extends Defaults["minWidth"] ? string | number : Defaults["minWidth"] | NonNullable<string | number>;
};
width: unknown extends Defaults["width"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["width"] ? string | number : string | number | Defaults["width"]>;
default: unknown extends Defaults["width"] ? string | number : Defaults["width"] | NonNullable<string | number>;
};
location: unknown extends Defaults["location"] ? import("vue").PropType<import("../../util/index.js").Anchor | null> : {
type: import("vue").PropType<unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | import("../../util/index.js").Anchor | null>;
default: unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | NonNullable<import("../../util/index.js").Anchor | null>;
};
loading: unknown extends Defaults["loading"] ? (BooleanConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["loading"] ? string | boolean : string | boolean | Defaults["loading"]>;
default: unknown extends Defaults["loading"] ? string | boolean : Defaults["loading"] | NonNullable<string | boolean>;
};
position: unknown extends Defaults["position"] ? {
type: import("vue").PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
validator: (v: any) => boolean;
} : Omit<{
type: import("vue").PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["position"] ? "absolute" | "fixed" | "relative" | "static" | "sticky" : "absolute" | "fixed" | "relative" | "static" | "sticky" | Defaults["position"]>;
default: unknown extends Defaults["position"] ? "absolute" | "fixed" | "relative" | "static" | "sticky" : Defaults["position"] | NonNullable<"absolute" | "fixed" | "relative" | "static" | "sticky">;
};
href: unknown extends Defaults["href"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["href"] ? string : string | Defaults["href"]>;
default: unknown extends Defaults["href"] ? string : string | Defaults["href"];
};
replace: unknown extends Defaults["replace"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["replace"] ? boolean : boolean | Defaults["replace"]>;
default: unknown extends Defaults["replace"] ? boolean : boolean | Defaults["replace"];
};
to: unknown extends Defaults["to"] ? import("vue").PropType<string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric> : {
type: import("vue").PropType<unknown extends Defaults["to"] ? string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric : string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric | Defaults["to"]>;
default: unknown extends Defaults["to"] ? string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric : Defaults["to"] | NonNullable<string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric>;
};
exact: unknown extends Defaults["exact"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["exact"] ? boolean : boolean | Defaults["exact"]>;
default: unknown extends Defaults["exact"] ? boolean : boolean | Defaults["exact"];
};
active: unknown extends Defaults["active"] ? {
type: BooleanConstructor;
default: undefined;
} : Omit<{
type: BooleanConstructor;
default: undefined;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["active"] ? boolean : boolean | Defaults["active"]>;
default: unknown extends Defaults["active"] ? boolean : boolean | Defaults["active"];
};
activeColor: unknown extends Defaults["activeColor"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["activeColor"] ? string : string | Defaults["activeColor"]>;
default: unknown extends Defaults["activeColor"] ? string : string | Defaults["activeColor"];
};
baseColor: unknown extends Defaults["baseColor"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["baseColor"] ? string : string | Defaults["baseColor"]>;
default: unknown extends Defaults["baseColor"] ? string : string | Defaults["baseColor"];
};
symbol: unknown extends Defaults["symbol"] ? {
type: null;
default: import("vue").InjectionKey<import("../../composables/group.js").GroupProvide>;
} : Omit<{
type: null;
default: import("vue").InjectionKey<import("../../composables/group.js").GroupProvide>;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["symbol"] ? any : any>;
default: unknown extends Defaults["symbol"] ? any : any;
};
flat: unknown extends Defaults["flat"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["flat"] ? boolean : boolean | Defaults["flat"]>;
default: unknown extends Defaults["flat"] ? boolean : boolean | Defaults["flat"];
};
icon: unknown extends Defaults["icon"] ? {
type: import("vue").PropType<boolean | import("../../composables/icons.js").IconValue>;
default: NonNullable<boolean | import("../../composables/icons.js").IconValue>;
} : Omit<{
type: import("vue").PropType<boolean | import("../../composables/icons.js").IconValue>;
default: NonNullable<boolean | import("../../composables/icons.js").IconValue>;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["icon"] ? boolean | import("../../composables/icons.js").IconValue : boolean | Defaults["icon"] | import("../../composables/icons.js").IconValue>;
default: unknown extends Defaults["icon"] ? boolean | import("../../composables/icons.js").IconValue : Defaults["icon"] | NonNullable<boolean | import("../../composables/icons.js").IconValue>;
};
prependIcon: unknown extends Defaults["prependIcon"] ? import("vue").PropType<import("../../composables/icons.js").IconValue> : {
type: import("vue").PropType<unknown extends Defaults["prependIcon"] ? import("../../composables/icons.js").IconValue : Defaults["prependIcon"] | import("../../composables/icons.js").IconValue>;
default: unknown extends Defaults["prependIcon"] ? import("../../composables/icons.js").IconValue : Defaults["prependIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
};
appendIcon: unknown extends Defaults["appendIcon"] ? import("vue").PropType<import("../../composables/icons.js").IconValue> : {
type: import("vue").PropType<unknown extends Defaults["appendIcon"] ? import("../../composables/icons.js").IconValue : Defaults["appendIcon"] | import("../../composables/icons.js").IconValue>;
default: unknown extends Defaults["appendIcon"] ? import("../../composables/icons.js").IconValue : Defaults["appendIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
};
block: unknown extends Defaults["block"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["block"] ? boolean : boolean | Defaults["block"]>;
default: unknown extends Defaults["block"] ? boolean : boolean | Defaults["block"];
};
readonly: unknown extends Defaults["readonly"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["readonly"] ? boolean : boolean | Defaults["readonly"]>;
default: unknown extends Defaults["readonly"] ? boolean : boolean | Defaults["readonly"];
};
slim: unknown extends Defaults["slim"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["slim"] ? boolean : boolean | Defaults["slim"]>;
default: unknown extends Defaults["slim"] ? boolean : boolean | Defaults["slim"];
};
stacked: unknown extends Defaults["stacked"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["stacked"] ? boolean : boolean | Defaults["stacked"]>;
default: unknown extends Defaults["stacked"] ? boolean : boolean | Defaults["stacked"];
};
ripple: unknown extends Defaults["ripple"] ? {
type: import("vue").PropType<boolean | {
class?: string;
keys?: string[];
} | undefined>;
default: boolean;
} : Omit<{
type: import("vue").PropType<boolean | {
class?: string;
keys?: string[];
} | undefined>;
default: boolean;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["ripple"] ? boolean | {
class?: string;
keys?: string[];
} | undefined : boolean | {
class?: string;
keys?: string[];
} | Defaults["ripple"] | undefined>;
default: unknown extends Defaults["ripple"] ? boolean | {
class?: string;
keys?: string[];
} | undefined : Defaults["ripple"] | NonNullable<boolean | {
class?: string;
keys?: string[];
} | undefined>;
};
text: unknown extends Defaults["text"] ? {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
} : Omit<{
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["text"] ? string | number | boolean : string | number | boolean | Defaults["text"]>;
default: unknown extends Defaults["text"] ? string | number | boolean : Defaults["text"] | NonNullable<string | number | boolean>;
};
};
export declare const VAppBarNavIcon: {
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
disabled: boolean;
size: string | number;
replace: boolean;
exact: boolean;
symbol: any;
flat: boolean;
icon: boolean | import("../../composables/icons.js").IconValue;
block: boolean;
readonly: boolean;
slim: boolean;
stacked: boolean;
ripple: boolean | {
class?: string;
keys?: string[];
};
} & {
theme?: string | undefined;
class?: any;
border?: string | number | boolean | undefined;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
color?: string | undefined;
value?: any;
selectedClass?: string | undefined;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location?: import("../../util/index.js").Anchor | null | undefined;
loading?: string | boolean | undefined;
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
href?: string | undefined;
to?: string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric | undefined;
active?: boolean | undefined;
activeColor?: string | undefined;
baseColor?: string | undefined;
prependIcon?: import("../../composables/icons.js").IconValue | undefined;
appendIcon?: import("../../composables/icons.js").IconValue | undefined;
text?: string | number | boolean | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
prepend?: (() => import("vue").VNodeChild) | undefined;
append?: (() => import("vue").VNodeChild) | undefined;
loader?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
prepend?: false | (() => import("vue").VNodeChild) | undefined;
append?: false | (() => import("vue").VNodeChild) | undefined;
loader?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:append"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:loader"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:prepend"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
style: import("vue").StyleValue;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
disabled: boolean;
size: string | number;
replace: boolean;
exact: boolean;
active: boolean;
symbol: any;
flat: boolean;
icon: boolean | import("../../composables/icons.js").IconValue;
block: boolean;
readonly: boolean;
slim: boolean;
stacked: boolean;
ripple: boolean | {
class?: string;
keys?: string[];
} | undefined;
text: string | number | boolean;
}, true, {}, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
prepend: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
append: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
loader: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
disabled: boolean;
size: string | number;
replace: boolean;
exact: boolean;
symbol: any;
flat: boolean;
icon: boolean | import("../../composables/icons.js").IconValue;
block: boolean;
readonly: boolean;
slim: boolean;
stacked: boolean;
ripple: boolean | {
class?: string;
keys?: string[];
};
} & {
theme?: string | undefined;
class?: any;
border?: string | number | boolean | undefined;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
color?: string | undefined;
value?: any;
selectedClass?: string | undefined;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location?: import("../../util/index.js").Anchor | null | undefined;
loading?: string | boolean | undefined;
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
href?: string | undefined;
to?: string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric | undefined;
active?: boolean | undefined;
activeColor?: string | undefined;
baseColor?: string | undefined;
prependIcon?: import("../../composables/icons.js").IconValue | undefined;
appendIcon?: import("../../composables/icons.js").IconValue | undefined;
text?: string | number | boolean | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
prepend?: (() => import("vue").VNodeChild) | undefined;
append?: (() => import("vue").VNodeChild) | undefined;
loader?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
prepend?: false | (() => import("vue").VNodeChild) | undefined;
append?: false | (() => import("vue").VNodeChild) | undefined;
loader?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:append"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:loader"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:prepend"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, {}, {}, {}, {
style: import("vue").StyleValue;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
disabled: boolean;
size: string | number;
replace: boolean;
exact: boolean;
active: boolean;
symbol: any;
flat: boolean;
icon: boolean | import("../../composables/icons.js").IconValue;
block: boolean;
readonly: boolean;
slim: boolean;
stacked: boolean;
ripple: boolean | {
class?: string;
keys?: string[];
} | undefined;
text: string | number | boolean;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
disabled: boolean;
size: string | number;
replace: boolean;
exact: boolean;
symbol: any;
flat: boolean;
icon: boolean | import("../../composables/icons.js").IconValue;
block: boolean;
readonly: boolean;
slim: boolean;
stacked: boolean;
ripple: boolean | {
class?: string;
keys?: string[];
};
} & {
theme?: string | undefined;
class?: any;
border?: string | number | boolean | undefined;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
color?: string | undefined;
value?: any;
selectedClass?: string | undefined;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location?: import("../../util/index.js").Anchor | null | undefined;
loading?: string | boolean | undefined;
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
href?: string | undefined;
to?: string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric | undefined;
active?: boolean | undefined;
activeColor?: string | undefined;
baseColor?: string | undefined;
prependIcon?: import("../../composables/icons.js").IconValue | undefined;
appendIcon?: import("../../composables/icons.js").IconValue | undefined;
text?: string | number | boolean | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
prepend?: (() => import("vue").VNodeChild) | undefined;
append?: (() => import("vue").VNodeChild) | undefined;
loader?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
prepend?: false | (() => import("vue").VNodeChild) | undefined;
append?: false | (() => import("vue").VNodeChild) | undefined;
loader?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:append"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:loader"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:prepend"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
style: import("vue").StyleValue;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
disabled: boolean;
size: string | number;
replace: boolean;
exact: boolean;
active: boolean;
symbol: any;
flat: boolean;
icon: boolean | import("../../composables/icons.js").IconValue;
block: boolean;
readonly: boolean;
slim: boolean;
stacked: boolean;
ripple: boolean | {
class?: string;
keys?: string[];
} | undefined;
text: string | number | boolean;
}, {}, string, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
prepend: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
append: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
loader: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
theme: StringConstructor;
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
density: {
type: import("vue").PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
};
elevation: {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: Omit<{
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
};
color: StringConstructor;
variant: Omit<Omit<{
type: import("vue").PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: import("vue").PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
}, "default" | "type"> & {
type: import("vue").PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
};
value: null;
disabled: BooleanConstructor;
selectedClass: StringConstructor;
size: {
type: (NumberConstructor | StringConstructor)[];
default: string;
};
height: (NumberConstructor | StringConstructor)[];
maxHeight: (NumberConstructor | StringConstructor)[];
maxWidth: (NumberConstructor | StringConstructor)[];
minHeight: (NumberConstructor | StringConstructor)[];
minWidth: (NumberConstructor | StringConstructor)[];
width: (NumberConstructor | StringConstructor)[];
location: import("vue").PropType<import("../../util/index.js").Anchor | null>;
loading: (BooleanConstructor | StringConstructor)[];
position: {
type: import("vue").PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
validator: (v: any) => boolean;
};
href: StringConstructor;
replace: BooleanConstructor;
to: import("vue").PropType<string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric>;
exact: BooleanConstructor;
active: {
type: BooleanConstructor;
default: undefined;
};
activeColor: StringConstructor;
baseColor: StringConstructor;
symbol: {
type: null;
default: import("vue").InjectionKey<import("../../composables/group.js").GroupProvide>;
};
flat: BooleanConstructor;
icon: {
type: import("vue").PropType<boolean | import("../../composables/icons.js").IconValue>;
default: NonNullable<boolean | import("../../composables/icons.js").IconValue>;
};
prependIcon: import("vue").PropType<import("../../composables/icons.js").IconValue>;
appendIcon: import("vue").PropType<import("../../composables/icons.js").IconValue>;
block: BooleanConstructor;
readonly: BooleanConstructor;
slim: BooleanConstructor;
stacked: BooleanConstructor;
ripple: {
type: import("vue").PropType<boolean | {
class?: string;
keys?: string[];
} | undefined>;
default: boolean;
};
text: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
}, import("vue").ExtractPropTypes<{
theme: StringConstructor;
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
density: {
type: import("vue").PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
};
elevation: {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: Omit<{
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
};
color: StringConstructor;
variant: Omit<Omit<{
type: import("vue").PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: import("vue").PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
}, "default" | "type"> & {
type: import("vue").PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
};
value: null;
disabled: BooleanConstructor;
selectedClass: StringConstructor;
size: {
type: (NumberConstructor | StringConstructor)[];
default: string;
};
height: (NumberConstructor | StringConstructor)[];
maxHeight: (NumberConstructor | StringConstructor)[];
maxWidth: (NumberConstructor | StringConstructor)[];
minHeight: (NumberConstructor | StringConstructor)[];
minWidth: (NumberConstructor | StringConstructor)[];
width: (NumberConstructor | StringConstructor)[];
location: import("vue").PropType<import("../../util/index.js").Anchor | null>;
loading: (BooleanConstructor | StringConstructor)[];
position: {
type: import("vue").PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
validator: (v: any) => boolean;
};
href: StringConstructor;
replace: BooleanConstructor;
to: import("vue").PropType<string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric>;
exact: BooleanConstructor;
active: {
type: BooleanConstructor;
default: undefined;
};
activeColor: StringConstructor;
baseColor: StringConstructor;
symbol: {
type: null;
default: import("vue").InjectionKey<import("../../composables/group.js").GroupProvide>;
};
flat: BooleanConstructor;
icon: {
type: import("vue").PropType<boolean | import("../../composables/icons.js").IconValue>;
default: NonNullable<boolean | import("../../composables/icons.js").IconValue>;
};
prependIcon: import("vue").PropType<import("../../composables/icons.js").IconValue>;
appendIcon: import("vue").PropType<import("../../composables/icons.js").IconValue>;
block: BooleanConstructor;
readonly: BooleanConstructor;
slim: BooleanConstructor;
stacked: BooleanConstructor;
ripple: {
type: import("vue").PropType<boolean | {
class?: string;
keys?: string[];
} | undefined>;
default: boolean;
};
text: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
}>>;
export type VAppBarNavIcon = InstanceType<typeof VAppBarNavIcon>;
+23
View File
@@ -0,0 +1,23 @@
import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
// Components
import { makeVBtnProps, VBtn } from "../VBtn/VBtn.js"; // Utilities
import { genericComponent, omit, propsFactory, useRender } from "../../util/index.js"; // Types
export const makeVAppBarNavIconProps = propsFactory({
...omit(makeVBtnProps({
icon: '$menu',
variant: 'text'
}), ['spaced'])
}, 'VAppBarNavIcon');
export const VAppBarNavIcon = genericComponent()({
name: 'VAppBarNavIcon',
props: makeVAppBarNavIconProps(),
setup(props, {
slots
}) {
useRender(() => _createVNode(VBtn, _mergeProps(props, {
"class": ['v-app-bar-nav-icon']
}), slots));
return {};
}
});
//# sourceMappingURL=VAppBarNavIcon.js.map
@@ -0,0 +1 @@
{"version":3,"file":"VAppBarNavIcon.js","names":["makeVBtnProps","VBtn","genericComponent","omit","propsFactory","useRender","makeVAppBarNavIconProps","icon","variant","VAppBarNavIcon","name","props","setup","slots","_createVNode","_mergeProps"],"sources":["../../../src/components/VAppBar/VAppBarNavIcon.tsx"],"sourcesContent":["// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Utilities\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VBtnSlots } from '@/components/VBtn/VBtn'\n\nexport const makeVAppBarNavIconProps = propsFactory({\n ...omit(makeVBtnProps({\n icon: '$menu',\n variant: 'text' as const,\n }), ['spaced']),\n}, 'VAppBarNavIcon')\n\nexport const VAppBarNavIcon = genericComponent<VBtnSlots>()({\n name: 'VAppBarNavIcon',\n\n props: makeVAppBarNavIconProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n <VBtn\n { ...props }\n class={[\n 'v-app-bar-nav-icon',\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VAppBarNavIcon = InstanceType<typeof VAppBarNavIcon>\n"],"mappings":";AAAA;AAAA,SACSA,aAAa,EAAEC,IAAI,2BAE5B;AAAA,SACSC,gBAAgB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS,+BAExD;AAGA,OAAO,MAAMC,uBAAuB,GAAGF,YAAY,CAAC;EAClD,GAAGD,IAAI,CAACH,aAAa,CAAC;IACpBO,IAAI,EAAE,OAAO;IACbC,OAAO,EAAE;EACX,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;AAChB,CAAC,EAAE,gBAAgB,CAAC;AAEpB,OAAO,MAAMC,cAAc,GAAGP,gBAAgB,CAAY,CAAC,CAAC;EAC1DQ,IAAI,EAAE,gBAAgB;EAEtBC,KAAK,EAAEL,uBAAuB,CAAC,CAAC;EAEhCM,KAAKA,CAAED,KAAK,EAAE;IAAEE;EAAM,CAAC,EAAE;IACvBR,SAAS,CAAC,MAAAS,YAAA,CAAAb,IAAA,EAAAc,WAAA,CAEDJ,KAAK;MAAA,SACH,CACL,oBAAoB;IACrB,IACSE,KAAK,CAElB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
+119
View File
@@ -0,0 +1,119 @@
export declare const VAppBarTitle: {
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tag: string | import("../../util/index.js").JSXComponent;
} & {
class?: any;
text?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
text?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
text?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:text"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
style: import("vue").StyleValue;
tag: string | import("../../util/index.js").JSXComponent;
}, true, {}, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
text: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tag: string | import("../../util/index.js").JSXComponent;
} & {
class?: any;
text?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
text?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
text?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:text"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, {}, {}, {}, {
style: import("vue").StyleValue;
tag: string | import("../../util/index.js").JSXComponent;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tag: string | import("../../util/index.js").JSXComponent;
} & {
class?: any;
text?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
text?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
text?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:text"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
style: import("vue").StyleValue;
tag: string | import("../../util/index.js").JSXComponent;
}, {}, string, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
text: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
tag: {
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
};
text: StringConstructor;
}, import("vue").ExtractPropTypes<{
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
tag: {
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
};
text: StringConstructor;
}>>;
export type VAppBarTitle = InstanceType<typeof VAppBarTitle>;
+17
View File
@@ -0,0 +1,17 @@
import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
// Components
import { makeVToolbarTitleProps, VToolbarTitle } from "../VToolbar/VToolbarTitle.js"; // Utilities
import { genericComponent, useRender } from "../../util/index.js"; // Types
export const VAppBarTitle = genericComponent()({
name: 'VAppBarTitle',
props: makeVToolbarTitleProps(),
setup(props, {
slots
}) {
useRender(() => _createVNode(VToolbarTitle, _mergeProps(props, {
"class": "v-app-bar-title"
}), slots));
return {};
}
});
//# sourceMappingURL=VAppBarTitle.js.map
@@ -0,0 +1 @@
{"version":3,"file":"VAppBarTitle.js","names":["makeVToolbarTitleProps","VToolbarTitle","genericComponent","useRender","VAppBarTitle","name","props","setup","slots","_createVNode","_mergeProps"],"sources":["../../../src/components/VAppBar/VAppBarTitle.tsx"],"sourcesContent":["// Components\nimport { makeVToolbarTitleProps, VToolbarTitle } from '@/components/VToolbar/VToolbarTitle'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { VToolbarTitleSlots } from '@/components/VToolbar/VToolbarTitle'\n\nexport const VAppBarTitle = genericComponent<VToolbarTitleSlots>()({\n name: 'VAppBarTitle',\n\n props: makeVToolbarTitleProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n <VToolbarTitle\n { ...props }\n class=\"v-app-bar-title\"\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VAppBarTitle = InstanceType<typeof VAppBarTitle>\n"],"mappings":";AAAA;AAAA,SACSA,sBAAsB,EAAEC,aAAa,wCAE9C;AAAA,SACSC,gBAAgB,EAAEC,SAAS,+BAEpC;AAGA,OAAO,MAAMC,YAAY,GAAGF,gBAAgB,CAAqB,CAAC,CAAC;EACjEG,IAAI,EAAE,cAAc;EAEpBC,KAAK,EAAEN,sBAAsB,CAAC,CAAC;EAE/BO,KAAKA,CAAED,KAAK,EAAE;IAAEE;EAAM,CAAC,EAAE;IACvBL,SAAS,CAAC,MAAAM,YAAA,CAAAR,aAAA,EAAAS,WAAA,CAEDJ,KAAK;MAAA;IAAA,IAEAE,KAAK,CAElB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
+44
View File
@@ -0,0 +1,44 @@
@use "sass:map";
@use "../../styles/settings/variables";
@use "../../styles/tools/functions";
// VAppBar
$app-bar-background: rgb(var(--v-theme-surface)) !default;
$app-bar-border-color: variables.$border-color-root !default;
$app-bar-border-radius: map.get(variables.$rounded, '0') !default;
$app-bar-border-style: variables.$border-style-root !default;
$app-bar-border-thin-width: 0 0 thin !default;
$app-bar-border-width: 0 !default;
$app-bar-collapsed-border-radius: 24px !default;
$app-bar-collapsed-max-width: 112px !default;
$app-bar-color: functions.theme-color('on-surface', var(--v-high-emphasis-opacity)) !default;
$app-bar-density-comfortable-padding: 4px !default;
$app-bar-density-compact-padding: 0 !default;
$app-bar-density-default-padding: 8px !default;
$app-bar-elevation: 2 !default;
$app-bar-flat-elevation: 0 !default;
$app-bar-image-height: inherit !default;
$app-bar-image-object-fit: cover !default;
$app-bar-image-width: inherit !default;
$app-bar-padding-end: 4px !default;
$app-bar-padding-start: 4px !default;
$app-bar-prominent-height: 128px !default;
$app-bar-rounded-border-radius: variables.$border-radius-root !default;
$app-bar-scrolled-title-padding-bottom: 9px !default;
$app-bar-shaped-border-radius: map.get(variables.$rounded, 'xl') $app-bar-border-radius !default;
$app-bar-title-font-size: functions.map-deep-get(variables.$typography, 'headline-medium', 'size') !default;
$app-bar-title-padding: 6px 20px !default;
$app-bar-transition: .2s variables.$standard-easing !default;
// Lists
$app-bar-border: (
$app-bar-border-color,
$app-bar-border-style,
$app-bar-border-width,
$app-bar-border-thin-width
) !default;
$app-bar-theme: (
$app-bar-background,
$app-bar-color
) !default;
+3
View File
@@ -0,0 +1,3 @@
export { VAppBar } from './VAppBar.js';
export { VAppBarNavIcon } from './VAppBarNavIcon.js';
export { VAppBarTitle } from './VAppBarTitle.js';
+4
View File
@@ -0,0 +1,4 @@
export { VAppBar } from "./VAppBar.js";
export { VAppBarNavIcon } from "./VAppBarNavIcon.js";
export { VAppBarTitle } from "./VAppBarTitle.js";
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["VAppBar","VAppBarNavIcon","VAppBarTitle"],"sources":["../../../src/components/VAppBar/index.ts"],"sourcesContent":["export { VAppBar } from './VAppBar'\nexport { VAppBarNavIcon } from './VAppBarNavIcon'\nexport { VAppBarTitle } from './VAppBarTitle'\n"],"mappings":"SAASA,OAAO;AAAA,SACPC,cAAc;AAAA,SACdC,YAAY","ignoreList":[]}
@@ -0,0 +1,92 @@
@layer vuetify-components {
.v-autocomplete--chips.v-input--density-compact .v-field--variant-solo .v-label.v-field-label--floating,
.v-autocomplete--chips.v-input--density-compact .v-field--variant-solo-inverted .v-label.v-field-label--floating,
.v-autocomplete--chips.v-input--density-compact .v-field--variant-filled .v-label.v-field-label--floating,
.v-autocomplete--chips.v-input--density-compact .v-field--variant-solo-filled .v-label.v-field-label--floating {
top: 0px;
}
.v-autocomplete .v-field .v-text-field__prefix,
.v-autocomplete .v-field .v-text-field__suffix,
.v-autocomplete .v-field .v-field__input,
.v-autocomplete .v-field .v-field__input > input, .v-autocomplete .v-field.v-field {
cursor: text;
}
.v-autocomplete .v-field .v-field__input > input {
flex: 1 1;
}
.v-autocomplete .v-field input {
min-width: 64px;
}
.v-autocomplete .v-field:not(.v-field--focused) input {
min-width: 0;
}
.v-autocomplete .v-field--dirty .v-autocomplete__selection {
margin-inline-end: 2px;
}
.v-autocomplete .v-autocomplete__selection-text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.v-autocomplete__content {
overflow: hidden;
}
.v-autocomplete__content {
box-shadow: 0px 1px 2px 0px rgba(var(--v-shadow-color), var(--v-shadow-key-opacity, 0.3)), 0px 2px 6px 2px rgba(var(--v-shadow-color), var(--v-shadow-ambient-opacity, 0.15));
--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) 4%, transparent);
}
.v-menu > .v-overlay__content.v-autocomplete__content {
border-radius: 4px;
}
.v-autocomplete__content > .v-sheet {
display: flex;
flex-direction: column;
}
.v-autocomplete__mask {
background: rgb(var(--v-theme-surface-light));
}
.v-autocomplete__selection {
display: inline-flex;
align-items: center;
height: 1.5rem;
letter-spacing: inherit;
line-height: inherit;
max-width: calc(100% - 2px - 2px);
}
.v-autocomplete__selection:first-child {
margin-inline-start: 0;
}
.v-autocomplete--selecting-index .v-autocomplete__selection {
opacity: var(--v-medium-emphasis-opacity);
}
.v-autocomplete--selecting-index .v-autocomplete__selection--selected {
opacity: 1;
}
.v-autocomplete--selecting-index .v-field__input > input {
caret-color: transparent;
}
.v-autocomplete--single:not(.v-autocomplete--selection-slot).v-text-field input {
flex: 1 1;
position: absolute;
left: 0;
right: 0;
width: 100%;
padding-inline: inherit;
}
.v-autocomplete--single:not(.v-autocomplete--selection-slot) .v-field--active input {
transition: none;
}
.v-autocomplete--single:not(.v-autocomplete--selection-slot) .v-field--dirty:not(.v-field--focused) input {
opacity: 0;
}
.v-autocomplete--single:not(.v-autocomplete--selection-slot) .v-field--focused .v-autocomplete__selection {
opacity: 0;
}
.v-autocomplete__menu-icon {
margin-inline-start: 4px;
transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.v-autocomplete--active-menu .v-autocomplete__menu-icon {
transform: rotate(180deg);
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,571 @@
import { Fragment as _Fragment, createElementVNode as _createElementVNode, createVNode as _createVNode, mergeProps as _mergeProps, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from "vue";
// Styles
import "./VAutocomplete.css";
// Components
import { VAvatar } from "../VAvatar/index.js";
import { VCheckboxBtn } from "../VCheckbox/index.js";
import { VChip } from "../VChip/index.js";
import { VDefaultsProvider } from "../VDefaultsProvider/index.js";
import { VDivider } from "../VDivider/index.js";
import { VIcon } from "../VIcon/index.js";
import { useInputIcon } from "../VInput/InputIcon.js";
import { VList, VListItem, VListSubheader } from "../VList/index.js";
import { VMenu } from "../VMenu/index.js";
import { makeSelectProps } from "../VSelect/VSelect.js";
import { VSheet } from "../VSheet/index.js";
import { makeVTextFieldProps, VTextField } from "../VTextField/VTextField.js";
import { VVirtualScroll } from "../VVirtualScroll/index.js"; // Composables
import { useScrolling } from "../VSelect/useScrolling.js";
import { useTextColor } from "../../composables/color.js";
import { highlightResult, makeFilterProps, useFilter } from "../../composables/filter.js";
import { useFocusGroups } from "../../composables/focusGroups.js";
import { useForm } from "../../composables/form.js";
import { forwardRefs } from "../../composables/forwardRefs.js";
import { useItems } from "../../composables/list-items.js";
import { useLocale } from "../../composables/locale.js";
import { useMenuActivator } from "../../composables/menuActivator.js";
import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
import { computed, mergeProps, nextTick, ref, shallowRef, toRef, watch } from 'vue';
import { checkPrintable, deepEqual, ensureValidVNode, genericComponent, IN_BROWSER, matchesSelector, noop, omit, propsFactory, useRender, wrapInArray } from "../../util/index.js"; // Types
export const makeVAutocompleteProps = propsFactory({
autoSelectFirst: {
type: [Boolean, String]
},
clearOnSelect: Boolean,
search: String,
...makeFilterProps({
filterKeys: ['title']
}),
...makeSelectProps(),
...omit(makeVTextFieldProps({
modelValue: null,
role: 'combobox'
}), ['validationValue', 'dirty'])
}, 'VAutocomplete');
export const VAutocomplete = genericComponent()({
name: 'VAutocomplete',
props: makeVAutocompleteProps(),
emits: {
'update:focused': focused => true,
'update:search': value => true,
'update:modelValue': value => true,
'update:menu': value => true
},
setup(props, {
slots
}) {
const {
t
} = useLocale();
const vTextFieldRef = ref();
const isFocused = shallowRef(false);
const isPristine = shallowRef(true);
const listHasFocus = shallowRef(false);
const vMenuRef = ref();
const vVirtualScrollRef = ref();
const selectionIndex = shallowRef(-1);
const _searchLock = shallowRef(null);
const {
items,
transformIn,
transformOut
} = useItems(props);
const {
textColorClasses,
textColorStyles
} = useTextColor(() => vTextFieldRef.value?.color);
const {
InputIcon
} = useInputIcon(props);
const search = useProxiedModel(props, 'search', '');
const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {
const transformed = transformOut(v);
return props.multiple ? transformed : transformed[0] ?? null;
});
const counterValue = computed(() => {
return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;
});
const form = useForm(props);
const {
filteredItems,
getMatches
} = useFilter(props, items, () => _searchLock.value ?? (isPristine.value ? '' : search.value));
const displayItems = computed(() => {
if (props.hideSelected && _searchLock.value === null) {
return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
}
return filteredItems.value;
});
const closableChips = toRef(() => props.closableChips && !form.isReadonly.value && !form.isDisabled.value);
const hasChips = computed(() => !!(props.chips || slots.chip));
const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);
const selectedValues = computed(() => model.value.map(selection => selection.props.value));
const firstSelectableItem = computed(() => displayItems.value.find(x => x.type === 'item' && !x.props.disabled));
const highlightFirst = computed(() => {
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === firstSelectableItem.value?.title;
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
});
const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
const _menu = useProxiedModel(props, 'menu');
const menu = computed({
get: () => _menu.value,
set: v => {
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
if (v && menuDisabled.value) return;
_menu.value = v;
}
});
const {
menuId,
ariaExpanded,
ariaControls
} = useMenuActivator(props, menu);
const listRef = ref();
const headerRef = ref();
const footerRef = ref();
const listEvents = useScrolling(listRef, vTextFieldRef);
const {
onTabKeydown
} = useFocusGroups({
groups: [{
type: 'element',
contentRef: headerRef
}, {
type: 'list',
contentRef: listRef,
displayItemsCount: () => displayItems.value.length
}, {
type: 'element',
contentRef: footerRef
}],
onLeave: () => {
menu.value = false;
vTextFieldRef.value?.focus();
}
});
function onClear(e) {
if (props.openOnClear) {
menu.value = true;
}
search.value = '';
}
function onMousedownControl() {
if (menuDisabled.value) return;
menu.value = true;
}
function onMousedownMenuIcon(e) {
if (menuDisabled.value) return;
if (isFocused.value) {
e.preventDefault();
e.stopPropagation();
}
menu.value = !menu.value;
}
function onMenuKeydown(e) {
if (e.key === 'Tab') {
onTabKeydown(e);
}
if (listRef.value?.$el.contains(e.target) && (checkPrintable(e) || e.key === 'Backspace')) {
vTextFieldRef.value?.focus();
}
}
// eslint-disable-next-line complexity
function onKeydown(e) {
if (form.isReadonly.value) return;
const selectionStart = vTextFieldRef.value?.selectionStart;
const length = model.value.length;
if (['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
e.preventDefault();
}
if (['Enter', 'ArrowDown'].includes(e.key)) {
menu.value = true;
}
if (['Escape'].includes(e.key)) {
menu.value = false;
}
if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key) && firstSelectableItem.value && !model.value.some(({
value
}) => value === firstSelectableItem.value.value)) {
select(firstSelectableItem.value);
}
if (e.key === 'ArrowDown' && highlightFirst.value) {
listRef.value?.focus('next');
}
if (['Backspace', 'Delete'].includes(e.key)) {
if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);
if (~selectionIndex.value) {
e.preventDefault();
const originalSelectionIndex = selectionIndex.value;
select(model.value[selectionIndex.value], false);
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
} else if (e.key === 'Backspace' && !search.value) {
selectionIndex.value = length - 1;
}
return;
}
if (!props.multiple) return;
if (e.key === 'ArrowLeft') {
if (selectionIndex.value < 0 && selectionStart && selectionStart > 0) return;
const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
if (model.value[prev]) {
selectionIndex.value = prev;
} else {
const searchLength = search.value?.length ?? null;
selectionIndex.value = -1;
vTextFieldRef.value?.setSelectionRange(searchLength, searchLength);
}
} else if (e.key === 'ArrowRight') {
if (selectionIndex.value < 0) return;
const next = selectionIndex.value + 1;
if (model.value[next]) {
selectionIndex.value = next;
} else {
selectionIndex.value = -1;
vTextFieldRef.value?.setSelectionRange(0, 0);
}
} else if (~selectionIndex.value && checkPrintable(e)) {
selectionIndex.value = -1;
}
}
function onChange(e) {
if (matchesSelector(vTextFieldRef.value, ':autofill') || matchesSelector(vTextFieldRef.value, ':-webkit-autofill')) {
const item = items.value.find(item => item.title === e.target.value);
if (item) {
select(item);
}
}
}
function onAfterEnter() {
if (props.eager) {
vVirtualScrollRef.value?.calculateVisibleItems();
}
}
function onAfterLeave() {
if (isFocused.value) {
isPristine.value = true;
vTextFieldRef.value?.focus();
}
_searchLock.value = null;
}
function onFocusin(e) {
isFocused.value = true;
setTimeout(() => {
listHasFocus.value = true;
});
}
function onFocusout(e) {
listHasFocus.value = false;
if (!vTextFieldRef.value?.$el.contains(e.relatedTarget)) {
isFocused.value = false;
}
}
function onUpdateModelValue(v) {
if (v == null || v === '' && !props.multiple && !hasSelectionSlot.value) model.value = [];
}
function onBlur(e) {
const menuContent = vMenuRef.value?.contentEl;
if (menuContent?.contains(e.relatedTarget)) {
isFocused.value = true;
}
}
const isSelecting = shallowRef(false);
/** @param set - null means toggle */
function select(item, set = true) {
if (!item || item.props.disabled) return;
if (props.multiple) {
const index = model.value.findIndex(selection => (props.valueComparator || deepEqual)(selection.value, item.value));
const add = set == null ? !~index : set;
if (~index) {
const value = add ? [...model.value, item] : [...model.value];
value.splice(index, 1);
model.value = value;
} else if (add) {
model.value = [...model.value, item];
}
if (props.clearOnSelect) {
search.value = '';
}
} else {
const add = set !== false;
model.value = add ? [item] : [];
_searchLock.value = isPristine.value ? '' : search.value ?? '';
search.value = add && !hasSelectionSlot.value ? item.title : '';
// watch for search watcher to trigger
nextTick(() => {
menu.value = false;
isPristine.value = true;
});
}
}
watch(isFocused, (val, oldVal) => {
if (val === oldVal) return;
if (val) {
isSelecting.value = true;
search.value = props.multiple || hasSelectionSlot.value ? '' : String(model.value.at(-1)?.props.title ?? '');
isPristine.value = true;
nextTick(() => isSelecting.value = false);
} else {
if (!props.multiple && search.value == null) model.value = [];
menu.value = false;
if (!isPristine.value && search.value) {
_searchLock.value = search.value;
}
search.value = '';
selectionIndex.value = -1;
}
});
watch(search, val => {
if (!isFocused.value || isSelecting.value) return;
if (val) menu.value = true;
isPristine.value = !val;
});
watch(menu, val => {
if (!props.hideSelected && val && model.value.length && isPristine.value) {
const index = displayItems.value.findIndex(item => model.value.some(s => item.value === s.value));
IN_BROWSER && window.requestAnimationFrame(() => {
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
});
}
if (val) _searchLock.value = null;
});
watch(items, (newVal, oldVal) => {
if (menu.value) return;
if (isFocused.value && !oldVal.length && newVal.length) {
menu.value = true;
}
});
useRender(() => {
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
const isDirty = model.value.length > 0;
const textFieldProps = VTextField.filterProps(props);
const menuSlotProps = {
search,
filteredItems: filteredItems.value
};
return _createVNode(VTextField, _mergeProps({
"ref": vTextFieldRef
}, textFieldProps, {
"modelValue": search.value,
"onUpdate:modelValue": [$event => search.value = $event, onUpdateModelValue],
"focused": isFocused.value,
"onUpdate:focused": $event => isFocused.value = $event,
"validationValue": model.externalValue,
"counterValue": counterValue.value,
"dirty": isDirty,
"onChange": onChange,
"class": ['v-autocomplete', `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`, {
'v-autocomplete--active-menu': menu.value,
'v-autocomplete--chips': !!props.chips,
'v-autocomplete--selection-slot': !!hasSelectionSlot.value,
'v-autocomplete--selecting-index': selectionIndex.value > -1
}, props.class],
"style": props.style,
"readonly": form.isReadonly.value,
"placeholder": isDirty ? undefined : props.placeholder,
"onClick:clear": onClear,
"onMousedown:control": onMousedownControl,
"onKeydown": onKeydown,
"onBlur": onBlur,
"aria-expanded": ariaExpanded.value,
"aria-controls": ariaControls.value
}), {
...slots,
default: ({
id
}) => _createElementVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({
"id": menuId.value,
"ref": vMenuRef,
"modelValue": menu.value,
"onUpdate:modelValue": $event => menu.value = $event,
"activator": "parent",
"contentClass": "v-autocomplete__content",
"disabled": menuDisabled.value,
"eager": props.eager,
"maxHeight": 310,
"openOnClick": false,
"closeOnContentClick": false,
"onAfterEnter": onAfterEnter,
"onAfterLeave": onAfterLeave
}, props.menuProps), {
default: () => [_createVNode(VSheet, {
"elevation": props.menuElevation,
"onFocusin": onFocusin,
"onKeydown": onMenuKeydown
}, {
default: () => [slots['menu-header'] && _createElementVNode("header", {
"ref": headerRef
}, [slots['menu-header'](menuSlotProps)]), hasList && _createVNode(VList, _mergeProps({
"key": "autocomplete-list",
"ref": listRef,
"filterable": true,
"selected": selectedValues.value,
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
"onMousedown": e => e.preventDefault(),
"onFocusout": onFocusout,
"tabindex": "-1",
"selectable": !!displayItems.value.length,
"aria-live": "polite",
"aria-labelledby": `${id.value}-label`,
"aria-multiselectable": props.multiple,
"color": props.itemColor ?? props.color
}, listEvents, props.listProps), {
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VListItem, {
"key": "no-data",
"title": t(props.noDataText)
}, null)), _createVNode(VVirtualScroll, {
"ref": vVirtualScrollRef,
"renderless": true,
"items": displayItems.value,
"itemKey": "value"
}, {
default: ({
item,
index,
itemRef
}) => {
const itemProps = mergeProps(item.props, {
ref: itemRef,
key: item.value,
active: highlightFirst.value && item === firstSelectableItem.value ? true : undefined,
onClick: () => select(item, null),
'aria-posinset': index + 1,
'aria-setsize': displayItems.value.length
});
if (item.type === 'divider') {
return slots.divider?.({
props: item.raw,
index
}) ?? _createVNode(VDivider, _mergeProps(item.props, {
"key": `divider-${index}`
}), null);
}
if (item.type === 'subheader') {
return slots.subheader?.({
props: item.raw,
index
}) ?? _createVNode(VListSubheader, _mergeProps(item.props, {
"key": `subheader-${index}`
}), null);
}
return slots.item?.({
item: item.raw,
internalItem: item,
index,
props: itemProps
}) ?? _createVNode(VListItem, _mergeProps(itemProps, {
"role": "option"
}), {
prepend: ({
isSelected
}) => _createElementVNode(_Fragment, null, [props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {
"key": item.value,
"modelValue": isSelected,
"ripple": false,
"tabindex": "-1",
"aria-hidden": true,
"onClick": event => event.preventDefault()
}, null) : undefined, item.props.prependAvatar && _createVNode(VAvatar, {
"image": item.props.prependAvatar
}, null), item.props.prependIcon && _createVNode(VIcon, {
"icon": item.props.prependIcon
}, null)]),
title: () => {
return isPristine.value ? item.title : highlightResult('v-autocomplete', item.title, getMatches(item)?.title);
}
});
}
}), slots['append-item']?.()]
}), slots['menu-footer'] && _createElementVNode("footer", {
"ref": footerRef
}, [slots['menu-footer'](menuSlotProps)])]
})]
}), model.value.map((item, index) => {
function onChipClose(e) {
e.stopPropagation();
e.preventDefault();
select(item, false);
}
const slotProps = mergeProps(VChip.filterProps(item.props), {
'onClick:close': onChipClose,
onKeydown(e) {
if (e.key !== 'Enter' && e.key !== ' ') return;
e.preventDefault();
e.stopPropagation();
onChipClose(e);
},
onMousedown(e) {
e.preventDefault();
e.stopPropagation();
},
modelValue: true,
'onUpdate:modelValue': undefined
});
const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
item: item.raw,
internalItem: item,
index,
props: slotProps
}) : slots.selection({
item: item.raw,
internalItem: item,
index
})) : undefined;
if (hasSlot && !slotContent) return undefined;
return _createElementVNode("div", {
"key": item.value,
"class": _normalizeClass(['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]]),
"style": _normalizeStyle(index === selectionIndex.value ? textColorStyles.value : {})
}, [hasChips.value ? !slots.chip ? _createVNode(VChip, _mergeProps({
"key": "chip",
"closable": closableChips.value,
"size": "small",
"text": item.title,
"disabled": item.props.disabled
}, slotProps), null) : _createVNode(VDefaultsProvider, {
"key": "chip-defaults",
"defaults": {
VChip: {
closable: closableChips.value,
size: 'small',
text: item.title
}
}
}, {
default: () => [slotContent]
}) : slotContent ?? _createElementVNode("span", {
"class": "v-autocomplete__selection-text"
}, [item.title, props.multiple && index < model.value.length - 1 && _createElementVNode("span", {
"class": "v-autocomplete__selection-comma"
}, [_createTextVNode(",")])])]);
})]),
'append-inner': (...args) => _createElementVNode(_Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? _createVNode(VIcon, {
"class": "v-autocomplete__menu-icon",
"color": vTextFieldRef.value?.fieldIconColor,
"icon": props.menuIcon,
"onMousedown": onMousedownMenuIcon,
"onClick": noop,
"aria-hidden": true,
"tabindex": "-1"
}, null) : undefined, props.appendInnerIcon && _createVNode(InputIcon, {
"key": "append-icon",
"name": "appendInner",
"color": args[0].iconColor.value
}, null)])
});
});
return forwardRefs({
isFocused,
isPristine,
menu,
search,
filteredItems,
select
}, vTextFieldRef);
}
});
//# sourceMappingURL=VAutocomplete.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,105 @@
@use 'sass:selector'
@use 'sass:math'
@use '../../styles/settings'
@use '../../styles/tools'
@use './variables' as *
@use '../VSelect/mixins' as *
@include tools.layer('components')
.v-autocomplete
@include select-compact-chip-label
.v-field
.v-text-field__prefix,
.v-text-field__suffix,
.v-field__input,
.v-field__input > input,
&.v-field
cursor: text
.v-field
.v-field__input
> input
flex: 1 1
.v-field
input
min-width: $autocomplete-focused-input
&:not(.v-field--focused)
input
min-width: 0
.v-field--dirty
.v-autocomplete__selection
margin-inline-end: $autocomplete-selection-gap
.v-autocomplete__selection-text
overflow: hidden
text-overflow: ellipsis
white-space: nowrap
.v-autocomplete
&__content
overflow: hidden
@include tools.elevation($autocomplete-content-elevation)
@at-root #{selector.append('.v-menu > .v-overlay__content', &)}
@include tools.rounded($autocomplete-content-border-radius)
> .v-sheet
display: flex
flex-direction: column
&__mask
background: rgb(var(--v-theme-surface-light))
&__selection
display: inline-flex
align-items: center
height: calc($input-font-size * $input-line-height)
letter-spacing: inherit
line-height: inherit
max-width: calc(100% - $autocomplete-selection-gap - $autocomplete-input-buffer)
&__selection
&:first-child
margin-inline-start: 0
&--selecting-index
.v-autocomplete__selection
opacity: var(--v-medium-emphasis-opacity)
&--selected
opacity: 1
.v-field__input > input
caret-color: transparent
&--single:not(.v-autocomplete--selection-slot)
&.v-text-field input
flex: 1 1
position: absolute
left: 0
right: 0
width: 100%
padding-inline: inherit
.v-field--active
input
transition: none
.v-field--dirty:not(.v-field--focused)
input
opacity: 0
.v-field--focused
.v-autocomplete__selection
opacity: 0
&__menu-icon
margin-inline-start: 4px
transition: $autocomplete-transition
.v-autocomplete--active-menu &
transform: rotate(180deg)
@@ -0,0 +1,14 @@
@forward '../VInput/variables';
@use '../../styles/settings';
// Defaults
$autocomplete-content-border-radius: 4px !default;
$autocomplete-content-elevation: 2 !default;
$autocomplete-focused-input: 64px !default;
$autocomplete-input-buffer: 2px !default;
$autocomplete-line-height: 1.75 !default;
$autocomplete-selection-gap: 2px !default;
$autocomplete-transition: .2s settings.$standard-easing !default;
$autocomplete-chips-control-min-height: 64px !default;
$autocomplete-chips-margin-top: null !default;
$autocomplete-chips-margin-bottom: null !default;
@@ -0,0 +1 @@
export { VAutocomplete } from './VAutocomplete.js';
+2
View File
@@ -0,0 +1,2 @@
export { VAutocomplete } from "./VAutocomplete.js";
//# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["VAutocomplete"],"sources":["../../../src/components/VAutocomplete/index.ts"],"sourcesContent":["export { VAutocomplete } from './VAutocomplete'\n"],"mappings":"SAASA,aAAa","ignoreList":[]}
+111
View File
@@ -0,0 +1,111 @@
@layer vuetify-components {
.v-avatar {
flex: none;
align-items: center;
display: inline-flex;
justify-content: center;
line-height: normal;
overflow: hidden;
position: relative;
text-align: center;
transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
transition-property: width, height;
vertical-align: middle;
}
.v-avatar.v-avatar--size-x-small {
--v-avatar-height: 24px;
}
.v-avatar.v-avatar--size-small {
--v-avatar-height: 32px;
}
.v-avatar.v-avatar--size-default {
--v-avatar-height: 40px;
}
.v-avatar.v-avatar--size-large {
--v-avatar-height: 48px;
}
.v-avatar.v-avatar--size-x-large {
--v-avatar-height: 56px;
}
.v-avatar.v-avatar--density-default {
height: calc(var(--v-avatar-height) + 0px);
width: calc(var(--v-avatar-height) + 0px);
}
.v-avatar.v-avatar--density-comfortable {
height: calc(var(--v-avatar-height) + -4px);
width: calc(var(--v-avatar-height) + -4px);
}
.v-avatar.v-avatar--density-compact {
height: calc(var(--v-avatar-height) + -8px);
width: calc(var(--v-avatar-height) + -8px);
}
.v-avatar {
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
border-style: solid;
border-width: 0;
}
.v-avatar--border {
border-width: thin;
box-shadow: none;
}
.v-avatar {
border-radius: 50%;
}
.v-avatar--variant-plain, .v-avatar--variant-outlined, .v-avatar--variant-text, .v-avatar--variant-tonal {
background: transparent;
color: inherit;
}
.v-avatar--variant-plain {
opacity: 0.62;
}
.v-avatar--variant-plain:focus, .v-avatar--variant-plain:hover {
opacity: 1;
}
.v-avatar--variant-plain .v-avatar__overlay {
display: none;
}
.v-avatar--variant-elevated, .v-avatar--variant-flat {
background: rgb(var(--v-theme-surface));
color: color-mix(in srgb, rgb(var(--v-theme-on-surface)) calc(var(--v-medium-emphasis-opacity) * 100%), transparent);
}
.v-avatar--variant-elevated {
box-shadow: 0px 1px 2px 0px rgba(var(--v-shadow-color), var(--v-shadow-key-opacity, 0.3)), 0px 1px 3px 1px rgba(var(--v-shadow-color), var(--v-shadow-ambient-opacity, 0.15));
--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) 2%, transparent);
}
.v-avatar--variant-flat {
box-shadow: 0px 0px 0px 0px rgba(var(--v-shadow-color), var(--v-shadow-key-opacity, 0.3)), 0px 0px 0px 0px rgba(var(--v-shadow-color), var(--v-shadow-ambient-opacity, 0.15));
--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) 0%, transparent);
}
.v-avatar--variant-outlined {
border: thin solid currentColor;
}
.v-avatar--variant-text .v-avatar__overlay {
background: currentColor;
}
.v-avatar--variant-tonal .v-avatar__underlay {
background: currentColor;
opacity: var(--v-activated-opacity);
border-radius: inherit;
top: 0;
right: 0;
bottom: 0;
left: 0;
pointer-events: none;
}
.v-avatar .v-avatar__underlay {
position: absolute;
}
.v-avatar--rounded {
border-radius: 4px;
}
.v-avatar--start {
margin-inline-end: 8px;
}
.v-avatar--end {
margin-inline-start: 8px;
}
.v-avatar .v-img {
height: 100%;
width: 100%;
}
}
+976
View File
@@ -0,0 +1,976 @@
import { VBadge } from '../VBadge/VBadge.js';
import { IconValue } from '../../composables/icons.js';
import type { PropType } from 'vue';
export declare const makeVAvatarProps: <Defaults extends {
theme?: unknown;
class?: unknown;
style?: unknown;
border?: unknown;
density?: unknown;
rounded?: unknown;
tile?: unknown;
tag?: unknown;
color?: unknown;
variant?: unknown;
size?: unknown;
badge?: unknown;
start?: unknown;
end?: unknown;
icon?: unknown;
image?: unknown;
text?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
theme: unknown extends Defaults["theme"] ? StringConstructor : {
type: PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
};
class: unknown extends Defaults["class"] ? PropType<any> : {
type: PropType<unknown extends Defaults["class"] ? any : any>;
default: unknown extends Defaults["class"] ? any : any;
};
style: unknown extends Defaults["style"] ? {
type: PropType<import("vue").StyleValue>;
default: null;
} : Omit<{
type: PropType<import("vue").StyleValue>;
default: null;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
};
border: unknown extends Defaults["border"] ? (BooleanConstructor | NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["border"] ? string | number | boolean : string | number | boolean | Defaults["border"]>;
default: unknown extends Defaults["border"] ? string | number | boolean : Defaults["border"] | NonNullable<string | number | boolean>;
};
density: unknown extends Defaults["density"] ? {
type: PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
} : Omit<{
type: PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | import("../../composables/density.js").Density>;
default: unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | NonNullable<import("../../composables/density.js").Density>;
};
rounded: unknown extends Defaults["rounded"] ? {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
} : Omit<{
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["rounded"] ? string | number | boolean : string | number | boolean | Defaults["rounded"]>;
default: unknown extends Defaults["rounded"] ? string | number | boolean : Defaults["rounded"] | NonNullable<string | number | boolean>;
};
tile: unknown extends Defaults["tile"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
};
tag: unknown extends Defaults["tag"] ? {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
} : Omit<{
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
};
color: unknown extends Defaults["color"] ? StringConstructor : {
type: PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
};
variant: unknown extends Defaults["variant"] ? Omit<{
type: PropType<import("../../composables/variant.js").Variant>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
} : Omit<Omit<{
type: PropType<import("../../composables/variant.js").Variant>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["variant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" | Defaults["variant"]>;
default: unknown extends Defaults["variant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : Defaults["variant"] | NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
};
size: unknown extends Defaults["size"] ? {
type: (NumberConstructor | StringConstructor)[];
default: string;
} : Omit<{
type: (NumberConstructor | StringConstructor)[];
default: string;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["size"] ? string | number : string | number | Defaults["size"]>;
default: unknown extends Defaults["size"] ? string | number : Defaults["size"] | NonNullable<string | number>;
};
badge: unknown extends Defaults["badge"] ? {
type: PropType<boolean | VBadge['$props']>;
default: boolean;
} : Omit<{
type: PropType<boolean | VBadge['$props']>;
default: boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["badge"] ? boolean | (Partial<{
style: import("vue").StyleValue;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
}> & Omit<{
theme?: string | undefined;
class?: any;
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
rounded?: string | number | boolean | undefined;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
color?: string | undefined;
content?: string | number | undefined;
dot: boolean;
dotSize?: string | number | undefined;
floating: boolean;
icon?: IconValue | undefined;
inline: boolean;
label: string;
max?: string | number | undefined;
modelValue: boolean;
offsetX?: string | number | undefined;
offsetY?: string | number | undefined;
textColor?: string | undefined;
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "dot" | "floating" | "inline" | "label" | "location" | "modelValue" | "rounded" | "style" | "tag" | "tile" | "transition">) : boolean | Defaults["badge"] | (Partial<{
style: import("vue").StyleValue;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
}> & Omit<{
theme?: string | undefined;
class?: any;
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
rounded?: string | number | boolean | undefined;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
color?: string | undefined;
content?: string | number | undefined;
dot: boolean;
dotSize?: string | number | undefined;
floating: boolean;
icon?: IconValue | undefined;
inline: boolean;
label: string;
max?: string | number | undefined;
modelValue: boolean;
offsetX?: string | number | undefined;
offsetY?: string | number | undefined;
textColor?: string | undefined;
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "dot" | "floating" | "inline" | "label" | "location" | "modelValue" | "rounded" | "style" | "tag" | "tile" | "transition">)>;
default: unknown extends Defaults["badge"] ? boolean | (Partial<{
style: import("vue").StyleValue;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
}> & Omit<{
theme?: string | undefined;
class?: any;
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
rounded?: string | number | boolean | undefined;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
color?: string | undefined;
content?: string | number | undefined;
dot: boolean;
dotSize?: string | number | undefined;
floating: boolean;
icon?: IconValue | undefined;
inline: boolean;
label: string;
max?: string | number | undefined;
modelValue: boolean;
offsetX?: string | number | undefined;
offsetY?: string | number | undefined;
textColor?: string | undefined;
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "dot" | "floating" | "inline" | "label" | "location" | "modelValue" | "rounded" | "style" | "tag" | "tile" | "transition">) : Defaults["badge"] | NonNullable<boolean | (Partial<{
style: import("vue").StyleValue;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
}> & Omit<{
theme?: string | undefined;
class?: any;
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
rounded?: string | number | boolean | undefined;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
color?: string | undefined;
content?: string | number | undefined;
dot: boolean;
dotSize?: string | number | undefined;
floating: boolean;
icon?: IconValue | undefined;
inline: boolean;
label: string;
max?: string | number | undefined;
modelValue: boolean;
offsetX?: string | number | undefined;
offsetY?: string | number | undefined;
textColor?: string | undefined;
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "dot" | "floating" | "inline" | "label" | "location" | "modelValue" | "rounded" | "style" | "tag" | "tile" | "transition">)>;
};
start: unknown extends Defaults["start"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["start"] ? boolean : boolean | Defaults["start"]>;
default: unknown extends Defaults["start"] ? boolean : boolean | Defaults["start"];
};
end: unknown extends Defaults["end"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["end"] ? boolean : boolean | Defaults["end"]>;
default: unknown extends Defaults["end"] ? boolean : boolean | Defaults["end"];
};
icon: unknown extends Defaults["icon"] ? PropType<IconValue> : {
type: PropType<unknown extends Defaults["icon"] ? IconValue : Defaults["icon"] | IconValue>;
default: unknown extends Defaults["icon"] ? IconValue : Defaults["icon"] | NonNullable<IconValue>;
};
image: unknown extends Defaults["image"] ? StringConstructor : {
type: PropType<unknown extends Defaults["image"] ? string : string | Defaults["image"]>;
default: unknown extends Defaults["image"] ? string : string | Defaults["image"];
};
text: unknown extends Defaults["text"] ? StringConstructor : {
type: PropType<unknown extends Defaults["text"] ? string : string | Defaults["text"]>;
default: unknown extends Defaults["text"] ? string : string | Defaults["text"];
};
};
export type VAvatarSlots = {
default: never;
badge: never;
};
export declare const VAvatar: {
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
size: string | number;
badge: boolean | (Partial<{
style: import("vue").StyleValue;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
}> & Omit<{
theme?: string | undefined;
class?: any;
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
rounded?: string | number | boolean | undefined;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
color?: string | undefined;
content?: string | number | undefined;
dot: boolean;
dotSize?: string | number | undefined;
floating: boolean;
icon?: IconValue | undefined;
inline: boolean;
label: string;
max?: string | number | undefined;
modelValue: boolean;
offsetX?: string | number | undefined;
offsetY?: string | number | undefined;
textColor?: string | undefined;
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "dot" | "floating" | "inline" | "label" | "location" | "modelValue" | "rounded" | "style" | "tag" | "tile" | "transition">);
start: boolean;
end: boolean;
} & {
theme?: string | undefined;
class?: any;
border?: string | number | boolean | undefined;
rounded?: string | number | boolean | undefined;
color?: string | undefined;
icon?: IconValue | undefined;
image?: string | undefined;
text?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
style: import("vue").StyleValue;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
size: string | number;
badge: boolean | (Partial<{
style: import("vue").StyleValue;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
}> & Omit<{
theme?: string | undefined;
class?: any;
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
rounded?: string | number | boolean | undefined;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
color?: string | undefined;
content?: string | number | undefined;
dot: boolean;
dotSize?: string | number | undefined;
floating: boolean;
icon?: IconValue | undefined;
inline: boolean;
label: string;
max?: string | number | undefined;
modelValue: boolean;
offsetX?: string | number | undefined;
offsetY?: string | number | undefined;
textColor?: string | undefined;
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "dot" | "floating" | "inline" | "label" | "location" | "modelValue" | "rounded" | "style" | "tag" | "tile" | "transition">);
start: boolean;
end: boolean;
}, true, {}, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
badge: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
size: string | number;
badge: boolean | (Partial<{
style: import("vue").StyleValue;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
}> & Omit<{
theme?: string | undefined;
class?: any;
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
rounded?: string | number | boolean | undefined;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
color?: string | undefined;
content?: string | number | undefined;
dot: boolean;
dotSize?: string | number | undefined;
floating: boolean;
icon?: IconValue | undefined;
inline: boolean;
label: string;
max?: string | number | undefined;
modelValue: boolean;
offsetX?: string | number | undefined;
offsetY?: string | number | undefined;
textColor?: string | undefined;
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "dot" | "floating" | "inline" | "label" | "location" | "modelValue" | "rounded" | "style" | "tag" | "tile" | "transition">);
start: boolean;
end: boolean;
} & {
theme?: string | undefined;
class?: any;
border?: string | number | boolean | undefined;
rounded?: string | number | boolean | undefined;
color?: string | undefined;
icon?: IconValue | undefined;
image?: string | undefined;
text?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, {}, {}, {}, {
style: import("vue").StyleValue;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
size: string | number;
badge: boolean | (Partial<{
style: import("vue").StyleValue;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
}> & Omit<{
theme?: string | undefined;
class?: any;
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
rounded?: string | number | boolean | undefined;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
color?: string | undefined;
content?: string | number | undefined;
dot: boolean;
dotSize?: string | number | undefined;
floating: boolean;
icon?: IconValue | undefined;
inline: boolean;
label: string;
max?: string | number | undefined;
modelValue: boolean;
offsetX?: string | number | undefined;
offsetY?: string | number | undefined;
textColor?: string | undefined;
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "dot" | "floating" | "inline" | "label" | "location" | "modelValue" | "rounded" | "style" | "tag" | "tile" | "transition">);
start: boolean;
end: boolean;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
size: string | number;
badge: boolean | (Partial<{
style: import("vue").StyleValue;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
}> & Omit<{
theme?: string | undefined;
class?: any;
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
rounded?: string | number | boolean | undefined;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
color?: string | undefined;
content?: string | number | undefined;
dot: boolean;
dotSize?: string | number | undefined;
floating: boolean;
icon?: IconValue | undefined;
inline: boolean;
label: string;
max?: string | number | undefined;
modelValue: boolean;
offsetX?: string | number | undefined;
offsetY?: string | number | undefined;
textColor?: string | undefined;
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "dot" | "floating" | "inline" | "label" | "location" | "modelValue" | "rounded" | "style" | "tag" | "tile" | "transition">);
start: boolean;
end: boolean;
} & {
theme?: string | undefined;
class?: any;
border?: string | number | boolean | undefined;
rounded?: string | number | boolean | undefined;
color?: string | undefined;
icon?: IconValue | undefined;
image?: string | undefined;
text?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
style: import("vue").StyleValue;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
size: string | number;
badge: boolean | (Partial<{
style: import("vue").StyleValue;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
}> & Omit<{
theme?: string | undefined;
class?: any;
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
rounded?: string | number | boolean | undefined;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
color?: string | undefined;
content?: string | number | undefined;
dot: boolean;
dotSize?: string | number | undefined;
floating: boolean;
icon?: IconValue | undefined;
inline: boolean;
label: string;
max?: string | number | undefined;
modelValue: boolean;
offsetX?: string | number | undefined;
offsetY?: string | number | undefined;
textColor?: string | undefined;
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "dot" | "floating" | "inline" | "label" | "location" | "modelValue" | "rounded" | "style" | "tag" | "tile" | "transition">);
start: boolean;
end: boolean;
}, {}, string, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
badge: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
theme: StringConstructor;
class: PropType<import("../../composables/component.js").ClassValue>;
style: {
type: PropType<import("vue").StyleValue>;
default: null;
};
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
density: {
type: PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
};
color: StringConstructor;
variant: Omit<{
type: PropType<import("../../composables/variant.js").Variant>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
};
size: {
type: (NumberConstructor | StringConstructor)[];
default: string;
};
badge: {
type: PropType<boolean | VBadge['$props']>;
default: boolean;
};
start: BooleanConstructor;
end: BooleanConstructor;
icon: PropType<IconValue>;
image: StringConstructor;
text: StringConstructor;
}, import("vue").ExtractPropTypes<{
theme: StringConstructor;
class: PropType<import("../../composables/component.js").ClassValue>;
style: {
type: PropType<import("vue").StyleValue>;
default: null;
};
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
density: {
type: PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
};
color: StringConstructor;
variant: Omit<{
type: PropType<import("../../composables/variant.js").Variant>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
};
size: {
type: (NumberConstructor | StringConstructor)[];
default: string;
};
badge: {
type: PropType<boolean | VBadge['$props']>;
default: boolean;
};
start: BooleanConstructor;
end: BooleanConstructor;
icon: PropType<IconValue>;
image: StringConstructor;
text: StringConstructor;
}>>;
export type VAvatar = InstanceType<typeof VAvatar>;
+139
View File
@@ -0,0 +1,139 @@
import { createVNode as _createVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from "vue";
// Styles
import "./VAvatar.css";
// Components
import { VBadge } from "../VBadge/VBadge.js";
import { VDefaultsProvider } from "../VDefaultsProvider/index.js";
import { VIcon } from "../VIcon/index.js";
import { VImg } from "../VImg/index.js"; // Composables
import { makeBorderProps, useBorder } from "../../composables/border.js";
import { makeComponentProps } from "../../composables/component.js";
import { makeDensityProps, useDensity } from "../../composables/density.js";
import { IconValue } from "../../composables/icons.js";
import { makeRoundedProps, useRounded } from "../../composables/rounded.js";
import { makeSizeProps, useSize } from "../../composables/size.js";
import { makeTagProps } from "../../composables/tag.js";
import { makeThemeProps, provideTheme } from "../../composables/theme.js";
import { genOverlays, makeVariantProps, useVariant } from "../../composables/variant.js"; // Utilities
import { computed } from 'vue';
import { genericComponent, isObject, propsFactory, useRender } from "../../util/index.js"; // Types
export const makeVAvatarProps = propsFactory({
badge: {
type: [Boolean, Object],
default: false
},
start: Boolean,
end: Boolean,
icon: IconValue,
image: String,
text: String,
...makeBorderProps(),
...makeComponentProps(),
...makeDensityProps(),
...makeRoundedProps(),
...makeSizeProps(),
...makeTagProps(),
...makeThemeProps(),
...makeVariantProps({
variant: 'flat'
})
}, 'VAvatar');
export const VAvatar = genericComponent()({
name: 'VAvatar',
props: makeVAvatarProps(),
setup(props, {
slots
}) {
const {
themeClasses
} = provideTheme(props);
const {
borderClasses
} = useBorder(props);
const {
colorClasses,
colorStyles,
variantClasses
} = useVariant(props);
const {
densityClasses
} = useDensity(props);
const {
roundedClasses
} = useRounded(props);
const {
sizeClasses,
sizeStyles
} = useSize(props);
const badgeDotSize = computed(() => {
switch (props.size) {
case 'x-small':
return 8;
case 'small':
return 10;
case 'large':
return 14;
case 'x-large':
return 16;
default:
return 12;
}
});
const badgeOffset = computed(() => {
const {
floating
} = isObject(props.badge) ? props.badge : {};
return (floating ? badgeDotSize.value / 2 : 0) - 1.5;
});
const badgeProps = computed(() => {
return {
bordered: true,
dot: !slots.badge,
dotSize: badgeDotSize.value,
offsetX: badgeOffset.value,
offsetY: badgeOffset.value,
color: typeof props.badge === 'string' ? props.badge : 'primary',
...(isObject(props.badge) ? props.badge : {})
};
});
useRender(() => {
const avatar = _createVNode(props.tag, {
"class": _normalizeClass(['v-avatar', {
'v-avatar--start': props.start,
'v-avatar--end': props.end
}, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class]),
"style": _normalizeStyle([colorStyles.value, sizeStyles.value, props.style])
}, {
default: () => [!slots.default ? props.image ? _createVNode(VImg, {
"key": "image",
"src": props.image,
"alt": "",
"cover": true
}, null) : props.icon ? _createVNode(VIcon, {
"key": "icon",
"icon": props.icon
}, null) : props.text : _createVNode(VDefaultsProvider, {
"key": "content-defaults",
"defaults": {
VImg: {
cover: true,
src: props.image
},
VIcon: {
icon: props.icon
}
}
}, {
default: () => [slots.default()]
}), genOverlays(false, 'v-avatar')]
});
return props.badge ? _createVNode(VBadge, badgeProps.value, {
default: () => avatar,
badge: slots.badge
}) : avatar;
});
return {};
}
});
//# sourceMappingURL=VAvatar.js.map
File diff suppressed because one or more lines are too long
+37
View File
@@ -0,0 +1,37 @@
@use '../../styles/settings'
@use '../../styles/tools'
@use './mixins' as *
@use './variables' as *
@include tools.layer('components')
.v-avatar
flex: none
align-items: center
display: inline-flex
justify-content: center
line-height: $avatar-line-height
overflow: hidden
position: relative
text-align: center
transition: 0.2s settings.$standard-easing
transition-property: width, height
vertical-align: $avatar-vertical-align
@include avatar-sizes($avatar-sizes)
@include avatar-density(('height', 'width'), $avatar-density)
@include tools.border($avatar-border...)
@include tools.rounded($avatar-border-radius)
@include tools.variant($avatar-variants...)
&--rounded
@include tools.rounded($avatar-rounded-border-radius)
&--start
margin-inline-end: $avatar-margin-start
&--end
margin-inline-start: $avatar-margin-end
.v-img
height: 100%
width: 100%
+31
View File
@@ -0,0 +1,31 @@
@use 'sass:map';
@use 'sass:meta';
@use '../../styles/settings';
@use './variables' as *;
@mixin avatar-sizes ($map: $avatar-sizes) {
@each $sizeName, $multiplier in settings.$size-scales {
$size: map.get($map, 'height') + (8 * $multiplier);
&.v-avatar--size-#{$sizeName} {
--v-avatar-height: #{$size};
}
}
}
@mixin avatar-density ($properties, $densities) {
@each $density, $multiplier in $densities {
$value: calc(var(--v-avatar-height) + #{$multiplier * settings.$spacer});
&.v-avatar--density-#{$density} {
@if meta.type-of($properties) == "list" {
@each $property in $properties {
#{$property}: $value;
}
}
@else {
#{$properties}: $value;
}
}
}
}
+48
View File
@@ -0,0 +1,48 @@
@use "sass:map";
@use '../../styles/settings';
@use "../../styles/settings/variables";
@use "../../styles/tools/functions";
// Defaults
$avatar-background: rgb(var(--v-theme-surface)) !default;
$avatar-border-radius: map.get(variables.$rounded, 'circle') !default;
$avatar-border-color: settings.$border-color-root !default;
$avatar-border-radius: map.get(settings.$rounded, 0) !default;
$avatar-border-style: settings.$border-style-root !default;
$avatar-border-thin-width: thin !default;
$avatar-border-width: 0 !default;
$avatar-color: functions.theme-color('on-surface', var(--v-medium-emphasis-opacity)) !default;
$avatar-density: ('default': 0, 'comfortable': -1, 'compact': -2) !default;
$avatar-elevation: 1 !default;
$avatar-height: 40px !default;
$avatar-line-height: normal !default;
$avatar-plain-opacity: .62 !default;
$avatar-rounded-border-radius: variables.$border-radius-root !default;
$avatar-vertical-align: middle !default;
$avatar-width: 40px !default;
$avatar-margin-end: 8px !default;
$avatar-margin-start: 8px !default;
$avatar-sizes: () !default;
$avatar-sizes: functions.map-deep-merge(
(
'height': $avatar-height,
'width': $avatar-width
),
$avatar-sizes
);
$avatar-border: (
$avatar-border-color,
$avatar-border-style,
$avatar-border-width,
$avatar-border-thin-width
) !default;
$avatar-variants: (
$avatar-background,
$avatar-color,
$avatar-elevation,
$avatar-plain-opacity,
'v-avatar'
) !default;
+1
View File
@@ -0,0 +1 @@
export { VAvatar } from './VAvatar.js';
+2
View File
@@ -0,0 +1,2 @@
export { VAvatar } from "./VAvatar.js";
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["VAvatar"],"sources":["../../../src/components/VAvatar/index.ts"],"sourcesContent":["export { VAvatar } from './VAvatar'\n"],"mappings":"SAASA,OAAO","ignoreList":[]}
+83
View File
@@ -0,0 +1,83 @@
@layer vuetify-components {
.v-badge {
display: inline-block;
line-height: 1;
}
.v-badge__badge {
align-items: center;
display: inline-flex;
border-radius: 10px;
font-family: var(--v-font-body, "Roboto", sans-serif);
font-size: 0.75rem;
font-weight: 500;
height: 1.25rem;
justify-content: center;
min-width: 20px;
padding: 4px 6px;
position: absolute;
text-align: center;
text-indent: 0;
transition: 0.225s cubic-bezier(0.4, 0, 0.2, 1);
white-space: nowrap;
}
.v-badge__badge {
background: rgb(var(--v-theme-surface-variant));
color: color-mix(in srgb, rgb(var(--v-theme-on-surface-variant)) calc(var(--v-high-emphasis-opacity) * 100%), transparent);
}
.v-badge__badge:has(.v-icon) {
padding: 4px 6px;
}
.v-badge--bordered .v-badge__badge::after {
border-radius: inherit;
border-style: solid;
border-width: 2px;
color: rgb(var(--v-theme-background));
content: "";
position: absolute;
inset: 0;
transform: scale(1.05);
}
.v-badge--dot .v-badge__badge {
border-radius: 50%;
height: 9px;
min-width: 0;
padding: 0;
width: 9px;
}
.v-badge--dot .v-badge__badge::after {
border-width: 1.5px;
}
.v-badge--inline .v-badge__badge {
position: relative;
vertical-align: middle;
}
.v-badge__badge .v-icon {
color: inherit;
font-size: 0.75rem;
margin: 0 -2px;
}
.v-badge__badge img,
.v-badge__badge .v-img {
height: 100%;
width: 100%;
}
.v-badge__wrapper {
display: flex;
position: relative;
}
.v-badge--inline .v-badge__wrapper {
align-items: center;
display: inline-flex;
justify-content: center;
margin: 0 4px;
}
}
@layer vuetify-final.trumps {
@media (forced-colors: active) {
.v-badge__badge {
forced-color-adjust: preserve-parent-color;
background: highlight;
color: highlighttext;
}
}
}
+526
View File
@@ -0,0 +1,526 @@
import { IconValue } from '../../composables/icons.js';
export type VBadgeSlots = {
default: never;
badge: never;
};
export declare const makeVBadgeProps: <Defaults extends {
theme?: unknown;
class?: unknown;
style?: unknown;
rounded?: unknown;
tile?: unknown;
tag?: unknown;
height?: unknown;
maxHeight?: unknown;
maxWidth?: unknown;
minHeight?: unknown;
minWidth?: unknown;
width?: unknown;
location?: unknown;
transition?: unknown;
bordered?: unknown;
color?: unknown;
content?: unknown;
dot?: unknown;
dotSize?: unknown;
floating?: unknown;
icon?: unknown;
inline?: unknown;
label?: unknown;
max?: unknown;
modelValue?: unknown;
offsetX?: unknown;
offsetY?: unknown;
textColor?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
theme: unknown extends Defaults["theme"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
};
class: unknown extends Defaults["class"] ? import("vue").PropType<any> : {
type: import("vue").PropType<unknown extends Defaults["class"] ? any : any>;
default: unknown extends Defaults["class"] ? any : any;
};
style: unknown extends Defaults["style"] ? {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
} : Omit<{
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
};
rounded: unknown extends Defaults["rounded"] ? {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
} : Omit<{
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["rounded"] ? string | number | boolean : string | number | boolean | Defaults["rounded"]>;
default: unknown extends Defaults["rounded"] ? string | number | boolean : Defaults["rounded"] | NonNullable<string | number | boolean>;
};
tile: unknown extends Defaults["tile"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
};
tag: unknown extends Defaults["tag"] ? {
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
} : Omit<{
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
};
height: unknown extends Defaults["height"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
};
maxHeight: unknown extends Defaults["maxHeight"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["maxHeight"] ? string | number : string | number | Defaults["maxHeight"]>;
default: unknown extends Defaults["maxHeight"] ? string | number : Defaults["maxHeight"] | NonNullable<string | number>;
};
maxWidth: unknown extends Defaults["maxWidth"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["maxWidth"] ? string | number : string | number | Defaults["maxWidth"]>;
default: unknown extends Defaults["maxWidth"] ? string | number : Defaults["maxWidth"] | NonNullable<string | number>;
};
minHeight: unknown extends Defaults["minHeight"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["minHeight"] ? string | number : string | number | Defaults["minHeight"]>;
default: unknown extends Defaults["minHeight"] ? string | number : Defaults["minHeight"] | NonNullable<string | number>;
};
minWidth: unknown extends Defaults["minWidth"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["minWidth"] ? string | number : string | number | Defaults["minWidth"]>;
default: unknown extends Defaults["minWidth"] ? string | number : Defaults["minWidth"] | NonNullable<string | number>;
};
width: unknown extends Defaults["width"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["width"] ? string | number : string | number | Defaults["width"]>;
default: unknown extends Defaults["width"] ? string | number : Defaults["width"] | NonNullable<string | number>;
};
location: unknown extends Defaults["location"] ? {
type: import("vue").PropType<import("../../util/index.js").Anchor | null>;
default: NonNullable<import("../../util/index.js").Anchor | null>;
} : Omit<{
type: import("vue").PropType<import("../../util/index.js").Anchor | null>;
default: NonNullable<import("../../util/index.js").Anchor | null>;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | import("../../util/index.js").Anchor | null>;
default: unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | NonNullable<import("../../util/index.js").Anchor | null>;
};
transition: unknown extends Defaults["transition"] ? {
type: import("vue").PropType<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
default: NonNullable<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
} : Omit<{
type: import("vue").PropType<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
default: NonNullable<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["transition"] ? string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null : string | boolean | Defaults["transition"] | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
default: unknown extends Defaults["transition"] ? string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null : Defaults["transition"] | NonNullable<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
};
bordered: unknown extends Defaults["bordered"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["bordered"] ? boolean : boolean | Defaults["bordered"]>;
default: unknown extends Defaults["bordered"] ? boolean : boolean | Defaults["bordered"];
};
color: unknown extends Defaults["color"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
};
content: unknown extends Defaults["content"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["content"] ? string | number : string | number | Defaults["content"]>;
default: unknown extends Defaults["content"] ? string | number : Defaults["content"] | NonNullable<string | number>;
};
dot: unknown extends Defaults["dot"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["dot"] ? boolean : boolean | Defaults["dot"]>;
default: unknown extends Defaults["dot"] ? boolean : boolean | Defaults["dot"];
};
dotSize: unknown extends Defaults["dotSize"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["dotSize"] ? string | number : string | number | Defaults["dotSize"]>;
default: unknown extends Defaults["dotSize"] ? string | number : Defaults["dotSize"] | NonNullable<string | number>;
};
floating: unknown extends Defaults["floating"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["floating"] ? boolean : boolean | Defaults["floating"]>;
default: unknown extends Defaults["floating"] ? boolean : boolean | Defaults["floating"];
};
icon: unknown extends Defaults["icon"] ? import("vue").PropType<IconValue> : {
type: import("vue").PropType<unknown extends Defaults["icon"] ? IconValue : Defaults["icon"] | IconValue>;
default: unknown extends Defaults["icon"] ? IconValue : Defaults["icon"] | NonNullable<IconValue>;
};
inline: unknown extends Defaults["inline"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["inline"] ? boolean : boolean | Defaults["inline"]>;
default: unknown extends Defaults["inline"] ? boolean : boolean | Defaults["inline"];
};
label: unknown extends Defaults["label"] ? {
type: StringConstructor;
default: string;
} : Omit<{
type: StringConstructor;
default: string;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["label"] ? string : string | Defaults["label"]>;
default: unknown extends Defaults["label"] ? string : string | Defaults["label"];
};
max: unknown extends Defaults["max"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["max"] ? string | number : string | number | Defaults["max"]>;
default: unknown extends Defaults["max"] ? string | number : Defaults["max"] | NonNullable<string | number>;
};
modelValue: unknown extends Defaults["modelValue"] ? {
type: BooleanConstructor;
default: boolean;
} : Omit<{
type: BooleanConstructor;
default: boolean;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["modelValue"] ? boolean : boolean | Defaults["modelValue"]>;
default: unknown extends Defaults["modelValue"] ? boolean : boolean | Defaults["modelValue"];
};
offsetX: unknown extends Defaults["offsetX"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["offsetX"] ? string | number : string | number | Defaults["offsetX"]>;
default: unknown extends Defaults["offsetX"] ? string | number : Defaults["offsetX"] | NonNullable<string | number>;
};
offsetY: unknown extends Defaults["offsetY"] ? (NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["offsetY"] ? string | number : string | number | Defaults["offsetY"]>;
default: unknown extends Defaults["offsetY"] ? string | number : Defaults["offsetY"] | NonNullable<string | number>;
};
textColor: unknown extends Defaults["textColor"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["textColor"] ? string : string | Defaults["textColor"]>;
default: unknown extends Defaults["textColor"] ? string : string | Defaults["textColor"];
};
};
export declare const VBadge: {
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
} & {
theme?: string | undefined;
class?: any;
rounded?: string | number | boolean | undefined;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
color?: string | undefined;
content?: string | number | undefined;
dotSize?: string | number | undefined;
icon?: IconValue | undefined;
max?: string | number | undefined;
offsetX?: string | number | undefined;
offsetY?: string | number | undefined;
textColor?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
style: import("vue").StyleValue;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
}, true, {}, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
badge: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
} & {
theme?: string | undefined;
class?: any;
rounded?: string | number | boolean | undefined;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
color?: string | undefined;
content?: string | number | undefined;
dotSize?: string | number | undefined;
icon?: IconValue | undefined;
max?: string | number | undefined;
offsetX?: string | number | undefined;
offsetY?: string | number | undefined;
textColor?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, {}, {}, {}, {
style: import("vue").StyleValue;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
} & {
theme?: string | undefined;
class?: any;
rounded?: string | number | boolean | undefined;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
color?: string | undefined;
content?: string | number | undefined;
dotSize?: string | number | undefined;
icon?: IconValue | undefined;
max?: string | number | undefined;
offsetX?: string | number | undefined;
offsetY?: string | number | undefined;
textColor?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
badge?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
badge?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:badge"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
style: import("vue").StyleValue;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
location: import("../../util/index.js").Anchor | null;
transition: string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null;
bordered: boolean;
dot: boolean;
floating: boolean;
inline: boolean;
label: string;
modelValue: boolean;
}, {}, string, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
badge: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
theme: StringConstructor;
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: {
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
};
height: (NumberConstructor | StringConstructor)[];
maxHeight: (NumberConstructor | StringConstructor)[];
maxWidth: (NumberConstructor | StringConstructor)[];
minHeight: (NumberConstructor | StringConstructor)[];
minWidth: (NumberConstructor | StringConstructor)[];
width: (NumberConstructor | StringConstructor)[];
location: {
type: import("vue").PropType<import("../../util/index.js").Anchor | null>;
default: NonNullable<import("../../util/index.js").Anchor | null>;
};
transition: {
type: import("vue").PropType<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
default: NonNullable<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
};
bordered: BooleanConstructor;
color: StringConstructor;
content: (NumberConstructor | StringConstructor)[];
dot: BooleanConstructor;
dotSize: (NumberConstructor | StringConstructor)[];
floating: BooleanConstructor;
icon: import("vue").PropType<IconValue>;
inline: BooleanConstructor;
label: {
type: StringConstructor;
default: string;
};
max: (NumberConstructor | StringConstructor)[];
modelValue: {
type: BooleanConstructor;
default: boolean;
};
offsetX: (NumberConstructor | StringConstructor)[];
offsetY: (NumberConstructor | StringConstructor)[];
textColor: StringConstructor;
}, import("vue").ExtractPropTypes<{
theme: StringConstructor;
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: {
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
};
height: (NumberConstructor | StringConstructor)[];
maxHeight: (NumberConstructor | StringConstructor)[];
maxWidth: (NumberConstructor | StringConstructor)[];
minHeight: (NumberConstructor | StringConstructor)[];
minWidth: (NumberConstructor | StringConstructor)[];
width: (NumberConstructor | StringConstructor)[];
location: {
type: import("vue").PropType<import("../../util/index.js").Anchor | null>;
default: NonNullable<import("../../util/index.js").Anchor | null>;
};
transition: {
type: import("vue").PropType<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
default: NonNullable<string | boolean | (import("vue").TransitionProps & {
component?: import("vue").Component;
}) | null>;
};
bordered: BooleanConstructor;
color: StringConstructor;
content: (NumberConstructor | StringConstructor)[];
dot: BooleanConstructor;
dotSize: (NumberConstructor | StringConstructor)[];
floating: BooleanConstructor;
icon: import("vue").PropType<IconValue>;
inline: BooleanConstructor;
label: {
type: StringConstructor;
default: string;
};
max: (NumberConstructor | StringConstructor)[];
modelValue: {
type: BooleanConstructor;
default: boolean;
};
offsetX: (NumberConstructor | StringConstructor)[];
offsetY: (NumberConstructor | StringConstructor)[];
textColor: StringConstructor;
}>>;
export type VBadge = InstanceType<typeof VBadge>;
+120
View File
@@ -0,0 +1,120 @@
import { createVNode as _createVNode, vShow as _vShow, mergeProps as _mergeProps, createElementVNode as _createElementVNode, withDirectives as _withDirectives } from "vue";
// Styles
import "./VBadge.css";
// Components
import { VIcon } from "../VIcon/index.js"; // Composables
import { useBackgroundColor, useTextColor } from "../../composables/color.js";
import { makeComponentProps } from "../../composables/component.js";
import { makeDimensionProps, useDimension } from "../../composables/dimensions.js";
import { IconValue } from "../../composables/icons.js";
import { useLocale } from "../../composables/locale.js";
import { makeLocationProps, useLocation } from "../../composables/location.js";
import { makeRoundedProps, useRounded } from "../../composables/rounded.js";
import { makeTagProps } from "../../composables/tag.js";
import { makeThemeProps, useTheme } from "../../composables/theme.js";
import { makeTransitionProps, MaybeTransition } from "../../composables/transition.js"; // Utilities
import { convertToUnit, genericComponent, pickWithRest, propsFactory, useRender } from "../../util/index.js";
export const makeVBadgeProps = propsFactory({
bordered: Boolean,
color: String,
content: [Number, String],
dot: Boolean,
dotSize: [Number, String],
floating: Boolean,
icon: IconValue,
inline: Boolean,
label: {
type: String,
default: '$vuetify.badge'
},
max: [Number, String],
modelValue: {
type: Boolean,
default: true
},
offsetX: [Number, String],
offsetY: [Number, String],
textColor: String,
...makeComponentProps(),
...makeLocationProps({
location: 'top end'
}),
...makeRoundedProps(),
...makeTagProps(),
...makeThemeProps(),
...makeTransitionProps({
transition: 'scale-rotate-transition'
}),
...makeDimensionProps()
}, 'VBadge');
export const VBadge = genericComponent()({
name: 'VBadge',
inheritAttrs: false,
props: makeVBadgeProps(),
setup(props, ctx) {
const {
backgroundColorClasses,
backgroundColorStyles
} = useBackgroundColor(() => props.color);
const {
roundedClasses
} = useRounded(props);
const {
t
} = useLocale();
const {
textColorClasses,
textColorStyles
} = useTextColor(() => props.textColor);
const {
themeClasses
} = useTheme();
const {
locationStyles
} = useLocation(props, true, side => {
const base = props.floating ? props.dot ? 2 : 4 : props.dot ? Number(props.dotSize ?? 8) : 12;
return base + (['top', 'bottom'].includes(side) ? Number(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? Number(props.offsetX ?? 0) : 0);
});
const {
dimensionStyles
} = useDimension(props);
useRender(() => {
const value = Number(props.content);
const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
const [badgeAttrs, attrs] = pickWithRest(ctx.attrs, ['aria-atomic', 'aria-label', 'aria-live', 'role', 'title']);
return _createVNode(props.tag, _mergeProps({
"class": ['v-badge', {
'v-badge--bordered': props.bordered,
'v-badge--dot': props.dot,
'v-badge--floating': props.floating,
'v-badge--inline': props.inline
}, props.class]
}, attrs, {
"style": props.style
}), {
default: () => [_createElementVNode("div", {
"class": "v-badge__wrapper"
}, [ctx.slots.default?.(), _createVNode(MaybeTransition, {
"transition": props.transition
}, {
default: () => [_withDirectives(_createElementVNode("span", _mergeProps({
"class": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],
"style": [backgroundColorStyles.value, textColorStyles.value, dimensionStyles.value, props.inline ? {} : locationStyles.value, props.dot && props.dotSize ? {
width: convertToUnit(props.dotSize),
height: convertToUnit(props.dotSize)
} : {}],
"aria-atomic": "true",
"aria-label": t(props.label, value),
"aria-live": "polite",
"role": "status"
}, badgeAttrs), [props.dot ? undefined : ctx.slots.badge ? ctx.slots.badge?.() : props.icon ? _createVNode(VIcon, {
"icon": props.icon
}, null) : content]), [[_vShow, props.modelValue]])]
})])]
});
});
return {};
}
});
//# sourceMappingURL=VBadge.js.map
File diff suppressed because one or more lines are too long
+81
View File
@@ -0,0 +1,81 @@
@use '../../styles/tools'
@use './variables' as *
@include tools.layer('components')
.v-badge
display: inline-block
line-height: $badge-line-height
.v-badge__badge
align-items: center
display: inline-flex
border-radius: $badge-border-radius
font-family: $badge-font-family
font-size: $badge-font-size
font-weight: $badge-font-weight
height: $badge-height
justify-content: center
min-width: $badge-min-width
padding: $badge-padding
position: absolute
text-align: center
text-indent: 0
transition: $badge-transition
white-space: nowrap
@include tools.theme($badge-theme...)
&:has(.v-icon)
padding: $badge-icon-padding
.v-badge--bordered &
&::after
border-radius: inherit
border-style: $badge-border-style
border-width: $badge-border-width
color: $badge-border-color
content: ''
position: absolute
inset: 0
transform: $badge-border-transform
.v-badge--dot &
border-radius: $badge-dot-border-radius
height: $badge-dot-height
min-width: 0
padding: 0
width: $badge-dot-width
&::after
border-width: $badge-dot-border-width
.v-badge--inline &
position: relative
vertical-align: $badge-inline-vertical-align
.v-icon
color: inherit
font-size: $badge-font-size
margin: $badge-icon-margin
img,
.v-img
height: 100%
width: 100%
.v-badge__wrapper
display: flex
position: relative
.v-badge--inline &
align-items: center
display: inline-flex
justify-content: center
margin: $badge-wrapper-margin
@include tools.layer('trumps')
@media (forced-colors: active)
.v-badge__badge
forced-color-adjust: preserve-parent-color
background: highlight
color: highlighttext
+33
View File
@@ -0,0 +1,33 @@
@use '../../styles/settings';
@use '../../styles/tools';
// VBadge
$badge-background: rgb(var(--v-theme-surface-variant)) !default;
$badge-color: tools.theme-color('on-surface-variant', var(--v-high-emphasis-opacity)) !default;
$badge-border-color: rgb(var(--v-theme-background)) !default;
$badge-border-radius: 10px !default;
$badge-border-style: solid !default;
$badge-border-transform: scale(1.05) !default;
$badge-border-width: 2px !default;
$badge-dot-border-radius: 50% !default;
$badge-dot-border-width: 1.5px !default;
$badge-dot-height: 9px !default;
$badge-dot-width: 9px !default;
$badge-font-family: settings.$body-font-family !default;
$badge-font-size: .75rem !default;
$badge-font-weight: 500 !default;
$badge-height: 1.25rem !default;
$badge-icon-margin: 0 -2px !default;
$badge-icon-padding: 4px 6px !default;
$badge-inline-vertical-align: middle !default;
$badge-line-height: 1 !default;
$badge-min-width: 20px !default;
$badge-padding: 4px 6px !default;
$badge-transition: .225s settings.$standard-easing !default;
$badge-wrapper-margin: 0 4px !default;
// Lists
$badge-theme: (
$badge-background,
$badge-color
) !default;
+1
View File
@@ -0,0 +1 @@
export { VBadge } from './VBadge.js';
+2
View File
@@ -0,0 +1,2 @@
export { VBadge } from "./VBadge.js";
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["VBadge"],"sources":["../../../src/components/VBadge/index.ts"],"sourcesContent":["export { VBadge } from './VBadge'\n"],"mappings":"SAASA,MAAM","ignoreList":[]}
+163
View File
@@ -0,0 +1,163 @@
@layer vuetify-components {
.v-banner {
display: grid;
flex: 1 1;
font-size: 0.875rem;
grid-template-areas: "prepend content actions";
grid-template-columns: max-content auto max-content;
grid-template-rows: max-content max-content;
line-height: 1.4285714286;
overflow: hidden;
padding-inline: 16px 8px;
padding-top: 16px;
padding-bottom: 16px;
position: relative;
width: 100%;
}
.v-banner {
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
border-style: solid;
border-width: 0 0 thin 0;
}
.v-banner--border {
border-width: thin;
box-shadow: none;
}
.v-banner {
box-shadow: 0px 0px 0px 0px rgba(var(--v-shadow-color), var(--v-shadow-key-opacity, 0.3)), 0px 0px 0px 0px rgba(var(--v-shadow-color), var(--v-shadow-ambient-opacity, 0.15));
--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) 0%, transparent);
}
.v-banner--absolute {
position: absolute;
}
.v-banner--fixed {
position: fixed;
}
.v-banner--sticky {
position: sticky;
}
.v-banner {
border-radius: 0;
}
.v-banner {
background: rgb(var(--v-theme-surface));
color: color-mix(in srgb, rgb(var(--v-theme-on-surface)) calc(var(--v-high-emphasis-opacity) * 100%), transparent);
}
.v-banner--rounded {
border-radius: 4px;
}
.v-banner--stacked:not(.v-banner--one-line) {
grid-template-areas: "prepend content" ". actions";
}
.v-banner--stacked .v-banner-text {
padding-inline-end: 36px;
}
.v-banner--density-default .v-banner-actions {
margin-bottom: -8px;
}
.v-banner--density-default.v-banner--one-line {
padding-top: 8px;
padding-bottom: 8px;
}
.v-banner--density-default.v-banner--one-line .v-banner-actions {
margin-bottom: 0;
}
.v-banner--density-default.v-banner--one-line {
padding-top: 10px;
}
.v-banner--density-default.v-banner--two-line {
padding-top: 16px;
padding-bottom: 16px;
}
.v-banner--density-default.v-banner--three-line {
padding-top: 24px;
padding-bottom: 16px;
}
.v-banner--density-default:not(.v-banner--one-line) .v-banner-actions, .v-banner--density-default.v-banner--two-line .v-banner-actions, .v-banner--density-default.v-banner--three-line .v-banner-actions {
margin-top: 20px;
}
.v-banner--density-comfortable .v-banner-actions {
margin-bottom: -4px;
}
.v-banner--density-comfortable.v-banner--one-line {
padding-top: 4px;
padding-bottom: 4px;
}
.v-banner--density-comfortable.v-banner--one-line .v-banner-actions {
margin-bottom: 0;
}
.v-banner--density-comfortable.v-banner--two-line {
padding-top: 12px;
padding-bottom: 12px;
}
.v-banner--density-comfortable.v-banner--three-line {
padding-top: 20px;
padding-bottom: 12px;
}
.v-banner--density-comfortable:not(.v-banner--one-line) .v-banner-actions, .v-banner--density-comfortable.v-banner--two-line .v-banner-actions, .v-banner--density-comfortable.v-banner--three-line .v-banner-actions {
margin-top: 16px;
}
.v-banner--density-compact .v-banner-actions {
margin-bottom: 0px;
}
.v-banner--density-compact.v-banner--one-line {
padding-top: 0px;
padding-bottom: 0px;
}
.v-banner--density-compact.v-banner--one-line .v-banner-actions {
margin-bottom: 0;
}
.v-banner--density-compact.v-banner--two-line {
padding-top: 8px;
padding-bottom: 8px;
}
.v-banner--density-compact.v-banner--three-line {
padding-top: 16px;
padding-bottom: 8px;
}
.v-banner--density-compact:not(.v-banner--one-line) .v-banner-actions, .v-banner--density-compact.v-banner--two-line .v-banner-actions, .v-banner--density-compact.v-banner--three-line .v-banner-actions {
margin-top: 12px;
}
.v-banner--sticky {
top: 0;
z-index: 1;
}
.v-banner__content {
align-items: center;
display: flex;
grid-area: content;
}
.v-banner__prepend {
align-self: flex-start;
grid-area: prepend;
margin-inline-end: 24px;
}
.v-banner-actions {
align-self: flex-end;
display: flex;
flex: 0 1;
grid-area: actions;
justify-content: flex-end;
}
.v-banner--two-line .v-banner-actions, .v-banner--three-line .v-banner-actions {
margin-top: 20px;
}
.v-banner-text {
-webkit-box-orient: vertical;
display: -webkit-box;
padding-inline-end: 90px;
overflow: hidden;
}
.v-banner--one-line .v-banner-text {
-webkit-line-clamp: 1;
}
.v-banner--two-line .v-banner-text {
-webkit-line-clamp: 2;
}
.v-banner--three-line .v-banner-text {
-webkit-line-clamp: 3;
}
.v-banner--two-line .v-banner-text, .v-banner--three-line .v-banner-text {
align-self: flex-start;
}
}
+517
View File
@@ -0,0 +1,517 @@
import { IconValue } from '../../composables/icons.js';
import type { PropType } from 'vue';
export type VBannerSlots = {
default: never;
prepend: never;
text: never;
actions: never;
};
export declare const makeVBannerProps: <Defaults extends {
theme?: unknown;
class?: unknown;
style?: unknown;
mobile?: unknown;
mobileBreakpoint?: unknown;
border?: unknown;
density?: unknown;
elevation?: unknown;
rounded?: unknown;
tile?: unknown;
tag?: unknown;
height?: unknown;
maxHeight?: unknown;
maxWidth?: unknown;
minHeight?: unknown;
minWidth?: unknown;
width?: unknown;
location?: unknown;
position?: unknown;
avatar?: unknown;
bgColor?: unknown;
color?: unknown;
icon?: unknown;
lines?: unknown;
stacked?: unknown;
sticky?: unknown;
text?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
theme: unknown extends Defaults["theme"] ? StringConstructor : {
type: PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
};
class: unknown extends Defaults["class"] ? PropType<any> : {
type: PropType<unknown extends Defaults["class"] ? any : any>;
default: unknown extends Defaults["class"] ? any : any;
};
style: unknown extends Defaults["style"] ? {
type: PropType<import("vue").StyleValue>;
default: null;
} : Omit<{
type: PropType<import("vue").StyleValue>;
default: null;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
};
mobile: unknown extends Defaults["mobile"] ? Omit<{
type: PropType<boolean | null>;
default: boolean;
}, "default" | "type"> & {
type: PropType<boolean | null>;
default: NonNullable<boolean | null> | null;
} : Omit<Omit<{
type: PropType<boolean | null>;
default: boolean;
}, "default" | "type"> & {
type: PropType<boolean | null>;
default: NonNullable<boolean | null> | null;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["mobile"] ? boolean | null : boolean | Defaults["mobile"] | null>;
default: unknown extends Defaults["mobile"] ? boolean | null : Defaults["mobile"] | NonNullable<boolean | null>;
};
mobileBreakpoint: unknown extends Defaults["mobileBreakpoint"] ? PropType<number | import("../../types.js").DisplayBreakpoint> : {
type: PropType<unknown extends Defaults["mobileBreakpoint"] ? number | import("../../types.js").DisplayBreakpoint : number | Defaults["mobileBreakpoint"] | import("../../types.js").DisplayBreakpoint>;
default: unknown extends Defaults["mobileBreakpoint"] ? number | import("../../types.js").DisplayBreakpoint : Defaults["mobileBreakpoint"] | NonNullable<number | import("../../types.js").DisplayBreakpoint>;
};
border: unknown extends Defaults["border"] ? (BooleanConstructor | NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["border"] ? string | number | boolean : string | number | boolean | Defaults["border"]>;
default: unknown extends Defaults["border"] ? string | number | boolean : Defaults["border"] | NonNullable<string | number | boolean>;
};
density: unknown extends Defaults["density"] ? {
type: PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
} : Omit<{
type: PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | import("../../composables/density.js").Density>;
default: unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | NonNullable<import("../../composables/density.js").Density>;
};
elevation: unknown extends Defaults["elevation"] ? {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
} : Omit<{
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["elevation"] ? string | number : string | number | Defaults["elevation"]>;
default: unknown extends Defaults["elevation"] ? string | number : Defaults["elevation"] | NonNullable<string | number>;
};
rounded: unknown extends Defaults["rounded"] ? {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
} : Omit<{
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["rounded"] ? string | number | boolean : string | number | boolean | Defaults["rounded"]>;
default: unknown extends Defaults["rounded"] ? string | number | boolean : Defaults["rounded"] | NonNullable<string | number | boolean>;
};
tile: unknown extends Defaults["tile"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
};
tag: unknown extends Defaults["tag"] ? {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
} : Omit<{
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
};
height: unknown extends Defaults["height"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
};
maxHeight: unknown extends Defaults["maxHeight"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["maxHeight"] ? string | number : string | number | Defaults["maxHeight"]>;
default: unknown extends Defaults["maxHeight"] ? string | number : Defaults["maxHeight"] | NonNullable<string | number>;
};
maxWidth: unknown extends Defaults["maxWidth"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["maxWidth"] ? string | number : string | number | Defaults["maxWidth"]>;
default: unknown extends Defaults["maxWidth"] ? string | number : Defaults["maxWidth"] | NonNullable<string | number>;
};
minHeight: unknown extends Defaults["minHeight"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["minHeight"] ? string | number : string | number | Defaults["minHeight"]>;
default: unknown extends Defaults["minHeight"] ? string | number : Defaults["minHeight"] | NonNullable<string | number>;
};
minWidth: unknown extends Defaults["minWidth"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["minWidth"] ? string | number : string | number | Defaults["minWidth"]>;
default: unknown extends Defaults["minWidth"] ? string | number : Defaults["minWidth"] | NonNullable<string | number>;
};
width: unknown extends Defaults["width"] ? (NumberConstructor | StringConstructor)[] : {
type: PropType<unknown extends Defaults["width"] ? string | number : string | number | Defaults["width"]>;
default: unknown extends Defaults["width"] ? string | number : Defaults["width"] | NonNullable<string | number>;
};
location: unknown extends Defaults["location"] ? PropType<import("../../util/index.js").Anchor | null> : {
type: PropType<unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | import("../../util/index.js").Anchor | null>;
default: unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | NonNullable<import("../../util/index.js").Anchor | null>;
};
position: unknown extends Defaults["position"] ? {
type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
validator: (v: any) => boolean;
} : Omit<{
type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: PropType<unknown extends Defaults["position"] ? "absolute" | "fixed" | "relative" | "static" | "sticky" : "absolute" | "fixed" | "relative" | "static" | "sticky" | Defaults["position"]>;
default: unknown extends Defaults["position"] ? "absolute" | "fixed" | "relative" | "static" | "sticky" : Defaults["position"] | NonNullable<"absolute" | "fixed" | "relative" | "static" | "sticky">;
};
avatar: unknown extends Defaults["avatar"] ? StringConstructor : {
type: PropType<unknown extends Defaults["avatar"] ? string : string | Defaults["avatar"]>;
default: unknown extends Defaults["avatar"] ? string : string | Defaults["avatar"];
};
bgColor: unknown extends Defaults["bgColor"] ? StringConstructor : {
type: PropType<unknown extends Defaults["bgColor"] ? string : string | Defaults["bgColor"]>;
default: unknown extends Defaults["bgColor"] ? string : string | Defaults["bgColor"];
};
color: unknown extends Defaults["color"] ? StringConstructor : {
type: PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
};
icon: unknown extends Defaults["icon"] ? PropType<IconValue> : {
type: PropType<unknown extends Defaults["icon"] ? IconValue : Defaults["icon"] | IconValue>;
default: unknown extends Defaults["icon"] ? IconValue : Defaults["icon"] | NonNullable<IconValue>;
};
lines: unknown extends Defaults["lines"] ? PropType<"one" | "three" | "two"> : {
type: PropType<unknown extends Defaults["lines"] ? "one" | "three" | "two" : "one" | "three" | "two" | Defaults["lines"]>;
default: unknown extends Defaults["lines"] ? "one" | "three" | "two" : Defaults["lines"] | NonNullable<"one" | "three" | "two">;
};
stacked: unknown extends Defaults["stacked"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["stacked"] ? boolean : boolean | Defaults["stacked"]>;
default: unknown extends Defaults["stacked"] ? boolean : boolean | Defaults["stacked"];
};
sticky: unknown extends Defaults["sticky"] ? BooleanConstructor : {
type: PropType<unknown extends Defaults["sticky"] ? boolean : boolean | Defaults["sticky"]>;
default: unknown extends Defaults["sticky"] ? boolean : boolean | Defaults["sticky"];
};
text: unknown extends Defaults["text"] ? StringConstructor : {
type: PropType<unknown extends Defaults["text"] ? string : string | Defaults["text"]>;
default: unknown extends Defaults["text"] ? string : string | Defaults["text"];
};
};
export declare const VBanner: {
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
mobile: boolean | null;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
stacked: boolean;
sticky: boolean;
} & {
theme?: string | undefined;
class?: any;
mobileBreakpoint?: number | import("../../types.js").DisplayBreakpoint | undefined;
border?: string | number | boolean | undefined;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location?: import("../../util/index.js").Anchor | null | undefined;
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
avatar?: string | undefined;
bgColor?: string | undefined;
color?: string | undefined;
icon?: IconValue | undefined;
lines?: "one" | "three" | "two" | undefined;
text?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
prepend?: (() => import("vue").VNodeChild) | undefined;
text?: (() => import("vue").VNodeChild) | undefined;
actions?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
prepend?: false | (() => import("vue").VNodeChild) | undefined;
text?: false | (() => import("vue").VNodeChild) | undefined;
actions?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:actions"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:prepend"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:text"?: false | (() => import("vue").VNodeChild) | undefined;
}, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
style: import("vue").StyleValue;
mobile: boolean | null;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
stacked: boolean;
sticky: boolean;
}, true, {}, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
prepend: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
text: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
actions: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
mobile: boolean | null;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
stacked: boolean;
sticky: boolean;
} & {
theme?: string | undefined;
class?: any;
mobileBreakpoint?: number | import("../../types.js").DisplayBreakpoint | undefined;
border?: string | number | boolean | undefined;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location?: import("../../util/index.js").Anchor | null | undefined;
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
avatar?: string | undefined;
bgColor?: string | undefined;
color?: string | undefined;
icon?: IconValue | undefined;
lines?: "one" | "three" | "two" | undefined;
text?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
prepend?: (() => import("vue").VNodeChild) | undefined;
text?: (() => import("vue").VNodeChild) | undefined;
actions?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
prepend?: false | (() => import("vue").VNodeChild) | undefined;
text?: false | (() => import("vue").VNodeChild) | undefined;
actions?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:actions"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:prepend"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:text"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, {}, {}, {}, {
style: import("vue").StyleValue;
mobile: boolean | null;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
stacked: boolean;
sticky: boolean;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
mobile: boolean | null;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
stacked: boolean;
sticky: boolean;
} & {
theme?: string | undefined;
class?: any;
mobileBreakpoint?: number | import("../../types.js").DisplayBreakpoint | undefined;
border?: string | number | boolean | undefined;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
height?: string | number | undefined;
maxHeight?: string | number | undefined;
maxWidth?: string | number | undefined;
minHeight?: string | number | undefined;
minWidth?: string | number | undefined;
width?: string | number | undefined;
location?: import("../../util/index.js").Anchor | null | undefined;
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
avatar?: string | undefined;
bgColor?: string | undefined;
color?: string | undefined;
icon?: IconValue | undefined;
lines?: "one" | "three" | "two" | undefined;
text?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
prepend?: (() => import("vue").VNodeChild) | undefined;
text?: (() => import("vue").VNodeChild) | undefined;
actions?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
prepend?: false | (() => import("vue").VNodeChild) | undefined;
text?: false | (() => import("vue").VNodeChild) | undefined;
actions?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:actions"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:prepend"?: false | (() => import("vue").VNodeChild) | undefined;
"v-slot:text"?: false | (() => import("vue").VNodeChild) | undefined;
}, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
style: import("vue").StyleValue;
mobile: boolean | null;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
stacked: boolean;
sticky: boolean;
}, {}, string, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
prepend: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
text: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
actions: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
theme: StringConstructor;
class: PropType<import("../../composables/component.js").ClassValue>;
style: {
type: PropType<import("vue").StyleValue>;
default: null;
};
mobile: Omit<{
type: PropType<boolean | null>;
default: boolean;
}, "default" | "type"> & {
type: PropType<boolean | null>;
default: NonNullable<boolean | null> | null;
};
mobileBreakpoint: PropType<number | import("../../types.js").DisplayBreakpoint>;
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
density: {
type: PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
};
elevation: {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
};
height: (NumberConstructor | StringConstructor)[];
maxHeight: (NumberConstructor | StringConstructor)[];
maxWidth: (NumberConstructor | StringConstructor)[];
minHeight: (NumberConstructor | StringConstructor)[];
minWidth: (NumberConstructor | StringConstructor)[];
width: (NumberConstructor | StringConstructor)[];
location: PropType<import("../../util/index.js").Anchor | null>;
position: {
type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
validator: (v: any) => boolean;
};
avatar: StringConstructor;
bgColor: StringConstructor;
color: StringConstructor;
icon: PropType<IconValue>;
lines: PropType<'one' | 'two' | 'three'>;
stacked: BooleanConstructor;
sticky: BooleanConstructor;
text: StringConstructor;
}, import("vue").ExtractPropTypes<{
theme: StringConstructor;
class: PropType<import("../../composables/component.js").ClassValue>;
style: {
type: PropType<import("vue").StyleValue>;
default: null;
};
mobile: Omit<{
type: PropType<boolean | null>;
default: boolean;
}, "default" | "type"> & {
type: PropType<boolean | null>;
default: NonNullable<boolean | null> | null;
};
mobileBreakpoint: PropType<number | import("../../types.js").DisplayBreakpoint>;
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
density: {
type: PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
};
elevation: {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: {
type: PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
};
height: (NumberConstructor | StringConstructor)[];
maxHeight: (NumberConstructor | StringConstructor)[];
maxWidth: (NumberConstructor | StringConstructor)[];
minHeight: (NumberConstructor | StringConstructor)[];
minWidth: (NumberConstructor | StringConstructor)[];
width: (NumberConstructor | StringConstructor)[];
location: PropType<import("../../util/index.js").Anchor | null>;
position: {
type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
validator: (v: any) => boolean;
};
avatar: StringConstructor;
bgColor: StringConstructor;
color: StringConstructor;
icon: PropType<IconValue>;
lines: PropType<'one' | 'two' | 'three'>;
stacked: BooleanConstructor;
sticky: BooleanConstructor;
text: StringConstructor;
}>>;
export type VBanner = InstanceType<typeof VBanner>;
+141
View File
@@ -0,0 +1,141 @@
import { createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from "vue";
// Styles
import "./VBanner.css";
// Components
import { VBannerActions } from "./VBannerActions.js";
import { VBannerText } from "./VBannerText.js";
import { VAvatar } from "../VAvatar/index.js";
import { VDefaultsProvider } from "../VDefaultsProvider/index.js"; // Composables
import { makeBorderProps, useBorder } from "../../composables/border.js";
import { useBackgroundColor } from "../../composables/color.js";
import { makeComponentProps } from "../../composables/component.js";
import { provideDefaults } from "../../composables/defaults.js";
import { makeDensityProps, useDensity } from "../../composables/density.js";
import { makeDimensionProps, useDimension } from "../../composables/dimensions.js";
import { makeDisplayProps, useDisplay } from "../../composables/display.js";
import { makeElevationProps, useElevation } from "../../composables/elevation.js";
import { IconValue } from "../../composables/icons.js";
import { makeLocationProps, useLocation } from "../../composables/location.js";
import { makePositionProps, usePosition } from "../../composables/position.js";
import { makeRoundedProps, useRounded } from "../../composables/rounded.js";
import { makeTagProps } from "../../composables/tag.js";
import { makeThemeProps, provideTheme } from "../../composables/theme.js"; // Utilities
import { toRef } from 'vue';
import { genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
export const makeVBannerProps = propsFactory({
avatar: String,
bgColor: String,
color: String,
icon: IconValue,
lines: String,
stacked: Boolean,
sticky: Boolean,
text: String,
...makeBorderProps(),
...makeComponentProps(),
...makeDensityProps(),
...makeDimensionProps(),
...makeDisplayProps({
mobile: null
}),
...makeElevationProps(),
...makeLocationProps(),
...makePositionProps(),
...makeRoundedProps(),
...makeTagProps(),
...makeThemeProps()
}, 'VBanner');
export const VBanner = genericComponent()({
name: 'VBanner',
props: makeVBannerProps(),
setup(props, {
slots
}) {
const {
backgroundColorClasses,
backgroundColorStyles
} = useBackgroundColor(() => props.bgColor);
const {
borderClasses
} = useBorder(props);
const {
densityClasses
} = useDensity(props);
const {
displayClasses,
mobile
} = useDisplay(props);
const {
dimensionStyles
} = useDimension(props);
const {
elevationClasses
} = useElevation(props);
const {
locationStyles
} = useLocation(props);
const {
positionClasses
} = usePosition(props);
const {
roundedClasses
} = useRounded(props);
const {
themeClasses
} = provideTheme(props);
const color = toRef(() => props.color);
const density = toRef(() => props.density);
provideDefaults({
VBannerActions: {
color,
density
}
});
useRender(() => {
const hasText = !!(props.text || slots.text);
const hasPrependMedia = !!(props.avatar || props.icon);
const hasPrepend = !!(hasPrependMedia || slots.prepend);
return _createVNode(props.tag, {
"class": _normalizeClass(['v-banner', {
'v-banner--stacked': props.stacked || mobile.value,
'v-banner--sticky': props.sticky,
[`v-banner--${props.lines}-line`]: !!props.lines
}, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, displayClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class]),
"style": _normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]),
"role": "banner"
}, {
default: () => [hasPrepend && _createElementVNode("div", {
"key": "prepend",
"class": "v-banner__prepend"
}, [!slots.prepend ? _createVNode(VAvatar, {
"key": "prepend-avatar",
"color": color.value,
"density": density.value,
"icon": props.icon,
"image": props.avatar
}, null) : _createVNode(VDefaultsProvider, {
"key": "prepend-defaults",
"disabled": !hasPrependMedia,
"defaults": {
VAvatar: {
color: color.value,
density: density.value,
icon: props.icon,
image: props.avatar
}
}
}, slots.prepend)]), _createElementVNode("div", {
"class": "v-banner__content"
}, [hasText && _createVNode(VBannerText, {
"key": "text"
}, {
default: () => [slots.text?.() ?? props.text]
}), slots.default?.()]), slots.actions && _createVNode(VBannerActions, {
"key": "actions"
}, slots.actions)]
});
});
}
});
//# sourceMappingURL=VBanner.js.map
File diff suppressed because one or more lines are too long
+109
View File
@@ -0,0 +1,109 @@
@use 'sass:math'
@use '../../styles/tools'
@use './variables' as *
@include tools.layer('components')
.v-banner
display: grid
flex: 1 1
font-size: $banner-font-size
grid-template-areas: "prepend content actions"
grid-template-columns: max-content auto max-content
grid-template-rows: max-content max-content
line-height: $banner-line-height
overflow: hidden
padding-inline: $banner-padding-inline-start $banner-padding-inline-end
padding-top: $banner-padding * 2
padding-bottom: $banner-padding * 2
position: relative
width: $banner-width
@include tools.border($banner-border...)
@include tools.elevation($banner-elevation)
@include tools.position($banner-positions)
@include tools.rounded($banner-border-radius)
@include tools.theme($banner-theme...)
&--rounded
@include tools.rounded($banner-rounded-border-radius)
&--stacked
&:not(.v-banner--one-line)
grid-template-areas: "prepend content" ". actions"
.v-banner-text
padding-inline-end: $banner-stacked-padding-inline-end
@at-root
@include tools.density('v-banner', $banner-density) using ($modifier)
.v-banner-actions
margin-bottom: -($banner-padding + $modifier)
&.v-banner--one-line
padding-top: $banner-padding + $modifier
padding-bottom: $banner-padding + $modifier
.v-banner-actions
margin-bottom: 0
@if ($modifier == 0px)
&.v-banner--one-line
padding-top: $banner-padding + $modifier + 2
&.v-banner--two-line
padding-top: $banner-padding * 2 + $modifier
padding-bottom: $banner-padding * 2 + $modifier
&.v-banner--three-line
padding-top: $banner-padding * 3 + $modifier
padding-bottom: $banner-padding * 2 + $modifier
&:not(.v-banner--one-line),
&.v-banner--two-line,
&.v-banner--three-line
.v-banner-actions
margin-top: $banner-action-margin + $modifier
&--sticky
top: $banner-sticky-top
z-index: $banner-sticky-z-index
.v-banner__content
align-items: center
display: flex
grid-area: content
.v-banner__prepend
align-self: flex-start
grid-area: prepend
margin-inline-end: $banner-prepend-margin-end
.v-banner-actions
align-self: flex-end
display: flex
flex: 0 1
grid-area: actions
justify-content: flex-end
.v-banner--two-line &,
.v-banner--three-line &
margin-top: $banner-actions-line-margin-top
.v-banner-text
-webkit-box-orient: vertical
display: -webkit-box
padding-inline-end: $banner-text-padding-end
overflow: hidden
.v-banner--one-line &
-webkit-line-clamp: 1
.v-banner--two-line &
-webkit-line-clamp: 2
.v-banner--three-line &
-webkit-line-clamp: 3
.v-banner--two-line &,
.v-banner--three-line &
align-self: flex-start
@@ -0,0 +1,124 @@
export declare const makeVBannerActionsProps: <Defaults extends {
class?: unknown;
style?: unknown;
color?: unknown;
density?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
class: unknown extends Defaults["class"] ? import("vue").PropType<any> : {
type: import("vue").PropType<unknown extends Defaults["class"] ? any : any>;
default: unknown extends Defaults["class"] ? any : any;
};
style: unknown extends Defaults["style"] ? {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
} : Omit<{
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
};
color: unknown extends Defaults["color"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
};
density: unknown extends Defaults["density"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["density"] ? string : string | Defaults["density"]>;
default: unknown extends Defaults["density"] ? string : string | Defaults["density"];
};
};
export declare const VBannerActions: {
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
} & {
class?: any;
color?: string | undefined;
density?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
style: import("vue").StyleValue;
}, true, {}, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
} & {
class?: any;
color?: string | undefined;
density?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, {}, {}, {}, {
style: import("vue").StyleValue;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
} & {
class?: any;
color?: string | undefined;
density?: string | undefined;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
style: import("vue").StyleValue;
}, {}, string, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
color: StringConstructor;
density: StringConstructor;
}, import("vue").ExtractPropTypes<{
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
color: StringConstructor;
density: StringConstructor;
}>>;
export type VBannerActions = InstanceType<typeof VBannerActions>;
+32
View File
@@ -0,0 +1,32 @@
import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode } from "vue";
// Composables
import { makeComponentProps } from "../../composables/component.js";
import { provideDefaults } from "../../composables/defaults.js"; // Utilities
import { genericComponent, propsFactory, useRender } from "../../util/index.js";
export const makeVBannerActionsProps = propsFactory({
color: String,
density: String,
...makeComponentProps()
}, 'VBannerActions');
export const VBannerActions = genericComponent()({
name: 'VBannerActions',
props: makeVBannerActionsProps(),
setup(props, {
slots
}) {
provideDefaults({
VBtn: {
color: props.color,
density: props.density,
slim: true,
variant: 'text'
}
});
useRender(() => _createElementVNode("div", {
"class": _normalizeClass(['v-banner-actions', props.class]),
"style": _normalizeStyle(props.style)
}, [slots.default?.()]));
return {};
}
});
//# sourceMappingURL=VBannerActions.js.map
@@ -0,0 +1 @@
{"version":3,"file":"VBannerActions.js","names":["makeComponentProps","provideDefaults","genericComponent","propsFactory","useRender","makeVBannerActionsProps","color","String","density","VBannerActions","name","props","setup","slots","VBtn","slim","variant","_createElementVNode","_normalizeClass","class","_normalizeStyle","style","default"],"sources":["../../../src/components/VBanner/VBannerActions.tsx"],"sourcesContent":["// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVBannerActionsProps = propsFactory({\n color: String,\n density: String,\n\n ...makeComponentProps(),\n}, 'VBannerActions')\n\nexport const VBannerActions = genericComponent()({\n name: 'VBannerActions',\n\n props: makeVBannerActionsProps(),\n\n setup (props, { slots }) {\n provideDefaults({\n VBtn: {\n color: props.color,\n density: props.density,\n slim: true,\n variant: 'text',\n },\n })\n\n useRender(() => (\n <div\n class={[\n 'v-banner-actions',\n props.class,\n ]}\n style={ props.style }\n >\n { slots.default?.() }\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VBannerActions = InstanceType<typeof VBannerActions>\n"],"mappings":";AAAA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,eAAe,yCAExB;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAElD,OAAO,MAAMC,uBAAuB,GAAGF,YAAY,CAAC;EAClDG,KAAK,EAAEC,MAAM;EACbC,OAAO,EAAED,MAAM;EAEf,GAAGP,kBAAkB,CAAC;AACxB,CAAC,EAAE,gBAAgB,CAAC;AAEpB,OAAO,MAAMS,cAAc,GAAGP,gBAAgB,CAAC,CAAC,CAAC;EAC/CQ,IAAI,EAAE,gBAAgB;EAEtBC,KAAK,EAAEN,uBAAuB,CAAC,CAAC;EAEhCO,KAAKA,CAAED,KAAK,EAAE;IAAEE;EAAM,CAAC,EAAE;IACvBZ,eAAe,CAAC;MACda,IAAI,EAAE;QACJR,KAAK,EAAEK,KAAK,CAACL,KAAK;QAClBE,OAAO,EAAEG,KAAK,CAACH,OAAO;QACtBO,IAAI,EAAE,IAAI;QACVC,OAAO,EAAE;MACX;IACF,CAAC,CAAC;IAEFZ,SAAS,CAAC,MAAAa,mBAAA;MAAA,SAAAC,eAAA,CAEC,CACL,kBAAkB,EAClBP,KAAK,CAACQ,KAAK,CACZ;MAAA,SAAAC,eAAA,CACOT,KAAK,CAACU,KAAK;IAAA,IAEjBR,KAAK,CAACS,OAAO,GAAG,CAAC,EAEtB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
+105
View File
@@ -0,0 +1,105 @@
export declare const VBannerText: {
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tag: string;
} & {
class?: any;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
style: import("vue").StyleValue;
tag: string;
}, true, {}, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tag: string;
} & {
class?: any;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>, {}, {}, {}, {
style: import("vue").StyleValue;
tag: string;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
tag: string;
} & {
class?: any;
} & {
$children?: {
default?: (() => import("vue").VNodeChild) | undefined;
} | {
$stable?: boolean;
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
'v-slots'?: {
default?: false | (() => import("vue").VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
style: import("vue").StyleValue;
tag: string;
}, {}, string, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
tag: {
type: StringConstructor;
default: string;
};
}, import("vue").ExtractPropTypes<{
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
tag: {
type: StringConstructor;
default: string;
};
}>>;
export type VBannerText = InstanceType<typeof VBannerText>;
+4
View File
@@ -0,0 +1,4 @@
// Utilities
import { createSimpleFunctional } from "../../util/index.js";
export const VBannerText = createSimpleFunctional('v-banner-text');
//# sourceMappingURL=VBannerText.js.map
@@ -0,0 +1 @@
{"version":3,"file":"VBannerText.js","names":["createSimpleFunctional","VBannerText"],"sources":["../../../src/components/VBanner/VBannerText.ts"],"sourcesContent":["// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VBannerText = createSimpleFunctional('v-banner-text')\n\nexport type VBannerText = InstanceType<typeof VBannerText>\n"],"mappings":"AAAA;AAAA,SACSA,sBAAsB;AAE/B,OAAO,MAAMC,WAAW,GAAGD,sBAAsB,CAAC,eAAe,CAAC","ignoreList":[]}
+47
View File
@@ -0,0 +1,47 @@
@use 'sass:map';
@use '../../styles/settings';
@use '../../styles/tools';
// Defaults
$banner-action-margin: 20px !default;
$banner-actions-line-margin-top: 20px !default;
$banner-background: rgb(var(--v-theme-surface)) !default;
$banner-border-color: settings.$border-color-root !default;
$banner-border-radius: map.get(settings.$rounded, 0) !default;
$banner-border-style: settings.$border-style-root !default;
$banner-border-thin-width: thin !default;
$banner-border-width: 0 0 thin 0 !default;
$banner-color: tools.theme-color('on-surface', var(--v-high-emphasis-opacity)) !default;
$banner-density: ('default': 0, 'comfortable': -1, 'compact': -2) !default;
$banner-elevation: 0 !default;
$banner-font-size: tools.map-deep-get(settings.$typography, 'body-medium', 'size') !default;
$banner-line-height: tools.map-deep-get(settings.$typography, 'label-large', 'line-height') !default;
$banner-padding-inline-start: 16px !default;
$banner-padding-inline-end: 8px !default;
$banner-padding: 8px !default;
$banner-positions: absolute fixed sticky !default;
$banner-prepend-margin-end: 24px !default;
$banner-rounded-border-radius: settings.$border-radius-root !default;
$banner-stacked-padding-inline-end: 36px !default;
$banner-sticky-top: 0 !default;
$banner-sticky-z-index: 1 !default;
$banner-text-padding-end: 90px !default;
$banner-width: 100% !default;
// Mobile
$banner-mobile-avatar-margin-end: 16px !default;
$banner-mobile-content-padding-end: 8px !default;
$banner-mobile-padding-end: 8px !default;
$banner-mobile-padding-start: 16px !default;
$banner-border: (
$banner-border-color,
$banner-border-style,
$banner-border-width,
$banner-border-thin-width
) !default;
$banner-theme: (
$banner-background,
$banner-color
) !default;
+3
View File
@@ -0,0 +1,3 @@
export { VBanner } from './VBanner.js';
export { VBannerActions } from './VBannerActions.js';
export { VBannerText } from './VBannerText.js';
+4
View File
@@ -0,0 +1,4 @@
export { VBanner } from "./VBanner.js";
export { VBannerActions } from "./VBannerActions.js";
export { VBannerText } from "./VBannerText.js";
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["VBanner","VBannerActions","VBannerText"],"sources":["../../../src/components/VBanner/index.ts"],"sourcesContent":["export { VBanner } from './VBanner'\nexport { VBannerActions } from './VBannerActions'\nexport { VBannerText } from './VBannerText'\n"],"mappings":"SAASA,OAAO;AAAA,SACPC,cAAc;AAAA,SACdC,WAAW","ignoreList":[]}
@@ -0,0 +1,67 @@
@layer vuetify-components {
.v-bottom-navigation {
display: flex;
max-width: 100%;
overflow: hidden;
position: absolute;
transition: transform, color, 0.2s, 0.1s cubic-bezier(0.4, 0, 0.2, 1);
}
.v-bottom-navigation {
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
border-style: solid;
border-width: 0;
}
.v-bottom-navigation--border {
border-width: thin;
box-shadow: none;
}
.v-bottom-navigation {
border-radius: 0;
}
.v-bottom-navigation {
background: rgb(var(--v-theme-surface));
color: color-mix(in srgb, rgb(var(--v-theme-on-surface)) calc(var(--v-high-emphasis-opacity) * 100%), transparent);
}
.v-bottom-navigation--active {
box-shadow: 0px 1px 2px 0px rgba(var(--v-shadow-color), var(--v-shadow-key-opacity, 0.3)), 0px 2px 6px 2px rgba(var(--v-shadow-color), var(--v-shadow-ambient-opacity, 0.15));
--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) 4%, transparent);
}
.v-bottom-navigation__content {
display: flex;
flex: none;
font-size: 0.6875rem;
justify-content: center;
transition: inherit;
width: 100%;
}
.v-bottom-navigation .v-bottom-navigation__content > .v-btn {
font-size: inherit;
height: 100%;
max-width: 168px;
min-width: 80px;
text-transform: none;
transition: inherit;
width: auto;
}
.v-bottom-navigation .v-bottom-navigation__content > .v-btn {
border-radius: 0;
}
.v-bottom-navigation .v-bottom-navigation__content > .v-btn .v-btn__content,
.v-bottom-navigation .v-bottom-navigation__content > .v-btn .v-btn__icon {
transition: inherit;
}
.v-bottom-navigation .v-bottom-navigation__content > .v-btn .v-btn__icon {
font-size: 1.5rem;
}
.v-bottom-navigation--grow .v-bottom-navigation__content > .v-btn {
flex-basis: 0;
flex-grow: 1;
}
.v-bottom-navigation--shift .v-bottom-navigation__content .v-btn:not(.v-btn--selected) .v-btn__content > span {
transition: inherit;
opacity: 0;
}
.v-bottom-navigation--shift .v-bottom-navigation__content .v-btn:not(.v-btn--selected) .v-btn__content {
transform: translateY(0.5rem);
}
}
@@ -0,0 +1,512 @@
import type { GenericProps } from '../../util/index.js';
export declare const makeVBottomNavigationProps: <Defaults extends {
theme?: unknown;
class?: unknown;
style?: unknown;
name?: unknown;
order?: unknown;
absolute?: unknown;
border?: unknown;
density?: unknown;
elevation?: unknown;
rounded?: unknown;
tile?: unknown;
tag?: unknown;
modelValue?: unknown;
multiple?: unknown;
mandatory?: unknown;
max?: unknown;
selectedClass?: unknown;
disabled?: unknown;
baseColor?: unknown;
bgColor?: unknown;
color?: unknown;
grow?: unknown;
mode?: unknown;
height?: unknown;
active?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
theme: unknown extends Defaults["theme"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
};
class: unknown extends Defaults["class"] ? import("vue").PropType<any> : {
type: import("vue").PropType<unknown extends Defaults["class"] ? any : any>;
default: unknown extends Defaults["class"] ? any : any;
};
style: unknown extends Defaults["style"] ? {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
} : Omit<{
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
};
name: unknown extends Defaults["name"] ? Omit<{
type: StringConstructor;
}, "default" | "type"> & {
type: import("vue").PropType<string>;
default: string;
} : Omit<Omit<{
type: StringConstructor;
}, "default" | "type"> & {
type: import("vue").PropType<string>;
default: string;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["name"] ? string : string | Defaults["name"]>;
default: unknown extends Defaults["name"] ? string : string | Defaults["name"];
};
order: unknown extends Defaults["order"] ? {
type: (NumberConstructor | StringConstructor)[];
default: number;
} : Omit<{
type: (NumberConstructor | StringConstructor)[];
default: number;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["order"] ? string | number : string | number | Defaults["order"]>;
default: unknown extends Defaults["order"] ? string | number : Defaults["order"] | NonNullable<string | number>;
};
absolute: unknown extends Defaults["absolute"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["absolute"] ? boolean : boolean | Defaults["absolute"]>;
default: unknown extends Defaults["absolute"] ? boolean : boolean | Defaults["absolute"];
};
border: unknown extends Defaults["border"] ? (BooleanConstructor | NumberConstructor | StringConstructor)[] : {
type: import("vue").PropType<unknown extends Defaults["border"] ? string | number | boolean : string | number | boolean | Defaults["border"]>;
default: unknown extends Defaults["border"] ? string | number | boolean : Defaults["border"] | NonNullable<string | number | boolean>;
};
density: unknown extends Defaults["density"] ? {
type: import("vue").PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
} : Omit<{
type: import("vue").PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | import("../../composables/density.js").Density>;
default: unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | NonNullable<import("../../composables/density.js").Density>;
};
elevation: unknown extends Defaults["elevation"] ? {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
} : Omit<{
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["elevation"] ? string | number : string | number | Defaults["elevation"]>;
default: unknown extends Defaults["elevation"] ? string | number : Defaults["elevation"] | NonNullable<string | number>;
};
rounded: unknown extends Defaults["rounded"] ? {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
} : Omit<{
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["rounded"] ? string | number | boolean : string | number | boolean | Defaults["rounded"]>;
default: unknown extends Defaults["rounded"] ? string | number | boolean : Defaults["rounded"] | NonNullable<string | number | boolean>;
};
tile: unknown extends Defaults["tile"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
};
tag: unknown extends Defaults["tag"] ? Omit<{
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
} : Omit<Omit<{
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
};
modelValue: unknown extends Defaults["modelValue"] ? {
type: null;
default: undefined;
} : Omit<{
type: null;
default: undefined;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["modelValue"] ? any : any>;
default: unknown extends Defaults["modelValue"] ? any : any;
};
multiple: unknown extends Defaults["multiple"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["multiple"] ? boolean : boolean | Defaults["multiple"]>;
default: unknown extends Defaults["multiple"] ? boolean : boolean | Defaults["multiple"];
};
mandatory: unknown extends Defaults["mandatory"] ? import("vue").PropType<"force" | boolean> : {
type: import("vue").PropType<unknown extends Defaults["mandatory"] ? "force" | boolean : "force" | boolean | Defaults["mandatory"]>;
default: unknown extends Defaults["mandatory"] ? "force" | boolean : Defaults["mandatory"] | NonNullable<"force" | boolean>;
};
max: unknown extends Defaults["max"] ? NumberConstructor : {
type: import("vue").PropType<unknown extends Defaults["max"] ? number : number | Defaults["max"]>;
default: unknown extends Defaults["max"] ? number : number | Defaults["max"];
};
selectedClass: unknown extends Defaults["selectedClass"] ? {
type: import("vue").PropType<string>;
default: string;
} : Omit<{
type: import("vue").PropType<string>;
default: string;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["selectedClass"] ? string : string | Defaults["selectedClass"]>;
default: unknown extends Defaults["selectedClass"] ? string : string | Defaults["selectedClass"];
};
disabled: unknown extends Defaults["disabled"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"]>;
default: unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"];
};
baseColor: unknown extends Defaults["baseColor"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["baseColor"] ? string : string | Defaults["baseColor"]>;
default: unknown extends Defaults["baseColor"] ? string : string | Defaults["baseColor"];
};
bgColor: unknown extends Defaults["bgColor"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["bgColor"] ? string : string | Defaults["bgColor"]>;
default: unknown extends Defaults["bgColor"] ? string : string | Defaults["bgColor"];
};
color: unknown extends Defaults["color"] ? StringConstructor : {
type: import("vue").PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
};
grow: unknown extends Defaults["grow"] ? BooleanConstructor : {
type: import("vue").PropType<unknown extends Defaults["grow"] ? boolean : boolean | Defaults["grow"]>;
default: unknown extends Defaults["grow"] ? boolean : boolean | Defaults["grow"];
};
mode: unknown extends Defaults["mode"] ? {
type: StringConstructor;
validator: (v: any) => boolean;
} : Omit<{
type: StringConstructor;
validator: (v: any) => boolean;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["mode"] ? string : string | Defaults["mode"]>;
default: unknown extends Defaults["mode"] ? string : string | Defaults["mode"];
};
height: unknown extends Defaults["height"] ? {
type: (NumberConstructor | StringConstructor)[];
default: number;
} : Omit<{
type: (NumberConstructor | StringConstructor)[];
default: number;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
};
active: unknown extends Defaults["active"] ? {
type: BooleanConstructor;
default: boolean;
} : Omit<{
type: BooleanConstructor;
default: boolean;
}, "default" | "type"> & {
type: import("vue").PropType<unknown extends Defaults["active"] ? boolean : boolean | Defaults["active"]>;
default: unknown extends Defaults["active"] ? boolean : boolean | Defaults["active"];
};
};
export declare const VBottomNavigation: {
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
name: string;
order: string | number;
absolute: boolean;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
multiple: boolean;
selectedClass: string;
disabled: boolean;
grow: boolean;
height: string | number;
active: boolean;
} & {
theme?: string | undefined;
class?: any;
border?: string | number | boolean | undefined;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
mandatory?: "force" | boolean | undefined;
max?: number | undefined;
baseColor?: string | undefined;
bgColor?: string | undefined;
color?: string | undefined;
mode?: string | undefined;
} & {
"onUpdate:active"?: ((value: any) => any) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Omit<{
'update:active': (value: any) => true;
'update:modelValue': (value: any) => true;
}, "$children" | "modelValue" | "update:modelValue" | "v-slot:default" | "v-slots">, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
style: import("vue").StyleValue;
name: string;
order: string | number;
absolute: boolean;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
multiple: boolean;
selectedClass: string;
disabled: boolean;
grow: boolean;
height: string | number;
active: boolean;
}, true, {}, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
name: string;
order: string | number;
absolute: boolean;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
multiple: boolean;
selectedClass: string;
disabled: boolean;
grow: boolean;
height: string | number;
active: boolean;
} & {
theme?: string | undefined;
class?: any;
border?: string | number | boolean | undefined;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
mandatory?: "force" | boolean | undefined;
max?: number | undefined;
baseColor?: string | undefined;
bgColor?: string | undefined;
color?: string | undefined;
mode?: string | undefined;
} & {
"onUpdate:active"?: ((value: any) => any) | undefined;
}, {}, {}, {}, {}, {
style: import("vue").StyleValue;
name: string;
order: string | number;
absolute: boolean;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
multiple: boolean;
selectedClass: string;
disabled: boolean;
grow: boolean;
height: string | number;
active: boolean;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase<{
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
name: string;
order: string | number;
absolute: boolean;
density: import("../../composables/density.js").Density;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
multiple: boolean;
selectedClass: string;
disabled: boolean;
grow: boolean;
height: string | number;
active: boolean;
} & {
theme?: string | undefined;
class?: any;
border?: string | number | boolean | undefined;
elevation?: string | number | undefined;
rounded?: string | number | boolean | undefined;
mandatory?: "force" | boolean | undefined;
max?: number | undefined;
baseColor?: string | undefined;
bgColor?: string | undefined;
color?: string | undefined;
mode?: string | undefined;
} & {
"onUpdate:active"?: ((value: any) => any) | undefined;
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Omit<{
'update:active': (value: any) => true;
'update:modelValue': (value: any) => true;
}, "$children" | "modelValue" | "update:modelValue" | "v-slot:default" | "v-slots">, string, {
style: import("vue").StyleValue;
name: string;
order: string | number;
absolute: boolean;
density: import("../../composables/density.js").Density;
rounded: string | number | boolean;
tile: boolean;
tag: string | import("../../util/index.js").JSXComponent;
multiple: boolean;
selectedClass: string;
disabled: boolean;
grow: boolean;
height: string | number;
active: boolean;
}, {}, string, import("vue").SlotsType<Partial<{
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[];
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new <T>(props: {
modelValue?: T;
'onUpdate:modelValue'?: (value: T) => void;
}, slots: {
default: never;
}) => GenericProps<typeof props, typeof slots>) & import("../../util/index.js").FilterPropsOptions<{
theme: StringConstructor;
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
name: Omit<{
type: StringConstructor;
}, "default" | "type"> & {
type: import("vue").PropType<string>;
default: string;
};
order: {
type: (NumberConstructor | StringConstructor)[];
default: number;
};
absolute: BooleanConstructor;
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
density: {
type: import("vue").PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
};
elevation: {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: Omit<{
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
};
modelValue: {
type: null;
default: undefined;
};
multiple: BooleanConstructor;
mandatory: import("vue").PropType<"force" | boolean>;
max: NumberConstructor;
selectedClass: {
type: import("vue").PropType<string>;
default: string;
};
disabled: BooleanConstructor;
baseColor: StringConstructor;
bgColor: StringConstructor;
color: StringConstructor;
grow: BooleanConstructor;
mode: {
type: StringConstructor;
validator: (v: any) => boolean;
};
height: {
type: (NumberConstructor | StringConstructor)[];
default: number;
};
active: {
type: BooleanConstructor;
default: boolean;
};
}, import("vue").ExtractPropTypes<{
theme: StringConstructor;
class: import("vue").PropType<any>;
style: {
type: import("vue").PropType<import("vue").StyleValue>;
default: null;
};
name: Omit<{
type: StringConstructor;
}, "default" | "type"> & {
type: import("vue").PropType<string>;
default: string;
};
order: {
type: (NumberConstructor | StringConstructor)[];
default: number;
};
absolute: BooleanConstructor;
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
density: {
type: import("vue").PropType<import("../../composables/density.js").Density>;
default: string;
validator: (v: any) => boolean;
};
elevation: {
type: (NumberConstructor | StringConstructor)[];
validator: (value: string | number) => boolean;
};
rounded: {
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
default: undefined;
};
tile: BooleanConstructor;
tag: Omit<{
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: string;
}, "default" | "type"> & {
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
};
modelValue: {
type: null;
default: undefined;
};
multiple: BooleanConstructor;
mandatory: import("vue").PropType<"force" | boolean>;
max: NumberConstructor;
selectedClass: {
type: import("vue").PropType<string>;
default: string;
};
disabled: BooleanConstructor;
baseColor: StringConstructor;
bgColor: StringConstructor;
color: StringConstructor;
grow: BooleanConstructor;
mode: {
type: StringConstructor;
validator: (v: any) => boolean;
};
height: {
type: (NumberConstructor | StringConstructor)[];
default: number;
};
active: {
type: BooleanConstructor;
default: boolean;
};
}>>;
export type VBottomNavigation = InstanceType<typeof VBottomNavigation>;
@@ -0,0 +1,131 @@
import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createVNode as _createVNode } from "vue";
// Styles
import "./VBottomNavigation.css";
// Components
import { VBtnToggleSymbol } from "../VBtnToggle/VBtnToggle.js"; // Composables
import { makeBorderProps, useBorder } from "../../composables/border.js";
import { useBackgroundColor } from "../../composables/color.js";
import { makeComponentProps } from "../../composables/component.js";
import { provideDefaults } from "../../composables/defaults.js";
import { makeDensityProps, useDensity } from "../../composables/density.js";
import { makeElevationProps, useElevation } from "../../composables/elevation.js";
import { makeGroupProps, useGroup } from "../../composables/group.js";
import { makeLayoutItemProps, useLayoutItem } from "../../composables/layout.js";
import { useProxiedModel } from "../../composables/proxiedModel.js";
import { makeRoundedProps, useRounded } from "../../composables/rounded.js";
import { useSsrBoot } from "../../composables/ssrBoot.js";
import { makeTagProps } from "../../composables/tag.js";
import { makeThemeProps, useTheme } from "../../composables/theme.js"; // Utilities
import { computed, toRef } from 'vue';
import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
export const makeVBottomNavigationProps = propsFactory({
baseColor: String,
bgColor: String,
color: String,
grow: Boolean,
mode: {
type: String,
validator: v => !v || ['horizontal', 'shift'].includes(v)
},
height: {
type: [Number, String],
default: 56
},
active: {
type: Boolean,
default: true
},
...makeBorderProps(),
...makeComponentProps(),
...makeDensityProps(),
...makeElevationProps(),
...makeRoundedProps(),
...makeLayoutItemProps({
name: 'bottom-navigation'
}),
...makeTagProps({
tag: 'header'
}),
...makeGroupProps({
selectedClass: 'v-btn--selected'
}),
...makeThemeProps()
}, 'VBottomNavigation');
export const VBottomNavigation = genericComponent()({
name: 'VBottomNavigation',
props: makeVBottomNavigationProps(),
emits: {
'update:active': value => true,
'update:modelValue': value => true
},
setup(props, {
slots
}) {
const {
themeClasses
} = useTheme();
const {
borderClasses
} = useBorder(props);
const {
backgroundColorClasses,
backgroundColorStyles
} = useBackgroundColor(() => props.bgColor);
const {
densityClasses
} = useDensity(props);
const {
elevationClasses
} = useElevation(props);
const {
roundedClasses
} = useRounded(props);
const {
ssrBootStyles
} = useSsrBoot();
const height = computed(() => Number(props.height) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0));
const isActive = useProxiedModel(props, 'active', props.active);
const {
layoutItemStyles
} = useLayoutItem({
id: props.name,
order: computed(() => parseInt(props.order, 10)),
position: toRef(() => 'bottom'),
layoutSize: toRef(() => isActive.value ? height.value : 0),
elementSize: height,
active: isActive,
absolute: toRef(() => props.absolute)
});
useGroup(props, VBtnToggleSymbol);
provideDefaults({
VBtn: {
baseColor: toRef(() => props.baseColor),
color: toRef(() => props.color),
density: toRef(() => props.density),
stacked: toRef(() => props.mode !== 'horizontal'),
variant: 'text'
}
}, {
scoped: true
});
useRender(() => {
return _createVNode(props.tag, {
"class": _normalizeClass(['v-bottom-navigation', {
'v-bottom-navigation--active': isActive.value,
'v-bottom-navigation--grow': props.grow,
'v-bottom-navigation--shift': props.mode === 'shift'
}, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
"style": _normalizeStyle([backgroundColorStyles.value, layoutItemStyles.value, {
height: convertToUnit(height.value)
}, ssrBootStyles.value, props.style])
}, {
default: () => [slots.default && _createElementVNode("div", {
"class": "v-bottom-navigation__content"
}, [slots.default()])]
});
});
return {};
}
});
//# sourceMappingURL=VBottomNavigation.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,59 @@
@use '../../styles/tools'
@use './variables' as *
@include tools.layer('components')
.v-bottom-navigation
display: flex
max-width: 100%
overflow: hidden
position: absolute
transition: $bottom-navigation-transition
@include tools.border($bottom-navigation-border...)
@include tools.rounded($bottom-navigation-border-radius)
@include tools.theme($bottom-navigation-theme...)
&--active
@include tools.elevation($bottom-navigation-elevation)
.v-bottom-navigation__content
display: flex
flex: none
font-size: $bottom-navigation-content-font-size
justify-content: center
transition: inherit
width: 100%
.v-bottom-navigation &
> .v-btn
font-size: inherit
height: $bottom-navigation-height
max-width: $bottom-navigation-max-width
min-width: $bottom-navigation-min-width
text-transform: $bottom-navigation-text-transform
transition: inherit
width: auto
@include tools.rounded(0)
.v-btn__content,
.v-btn__icon
transition: inherit
.v-btn__icon
font-size: $bottom-navigation-icon-font-size
.v-bottom-navigation--grow &
> .v-btn
flex-basis: 0
flex-grow: 1
.v-bottom-navigation--shift &
.v-btn
&:not(.v-btn--selected)
.v-btn__content > span
transition: inherit
opacity: 0
.v-btn__content
transform: $bottom-navigation-shift-icon-transform
@@ -0,0 +1,42 @@
@use 'sass:map';
@use 'sass:math';
@use '../../styles/settings';
@use "../../styles/settings/variables";
@use "../../styles/tools/functions";
// VBottomNavigation
$bottom-navigation-background: rgb(var(--v-theme-surface)) !default;
$bottom-navigation-border-color: settings.$border-color-root !default;
$bottom-navigation-border-radius: 0 !default;
$bottom-navigation-border-radius: map.get(settings.$rounded, '0') !default;
$bottom-navigation-border-style: settings.$border-style-root !default;
$bottom-navigation-border-thin-width: thin !default;
$bottom-navigation-border-width: 0 !default;
$bottom-navigation-button-color: functions.theme-color('on-surface', var(--v-medium-emphasis-opacity)) !default;
$bottom-navigation-color: functions.theme-color('on-surface', var(--v-high-emphasis-opacity)) !default;
$bottom-navigation-content-font-size: functions.map-deep-get(variables.$typography, 'label-small', 'size') !default;
$bottom-navigation-elevation: 2 !default;
$bottom-navigation-flat-elevation: 0 !default;
$bottom-navigation-height: 100% !default;
$bottom-navigation-icon-font-size: 1.5rem !default;
$bottom-navigation-max-width: 168px !default;
$bottom-navigation-min-width: 80px !default;
$bottom-navigation-opacity: var(--v-medium-emphasis-opacity) !default;
$bottom-navigation-shift-content-color: functions.theme-color('on-surface', 0) !default;
$bottom-navigation-shift-icon-top: math.div($bottom-navigation-icon-font-size, 3) !default;
$bottom-navigation-shift-icon-transform: translateY($bottom-navigation-shift-icon-top) !default;
$bottom-navigation-text-transform: none !default;
$bottom-navigation-transition: transform, color, .2s, .1s settings.$standard-easing !default;
// Lists
$bottom-navigation-border: (
$bottom-navigation-border-color,
$bottom-navigation-border-style,
$bottom-navigation-border-width,
$bottom-navigation-border-thin-width
) !default;
$bottom-navigation-theme: (
$bottom-navigation-background,
$bottom-navigation-color
) !default;
@@ -0,0 +1 @@
export { VBottomNavigation } from './VBottomNavigation.js';
@@ -0,0 +1,2 @@
export { VBottomNavigation } from "./VBottomNavigation.js";
//# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["VBottomNavigation"],"sources":["../../../src/components/VBottomNavigation/index.ts"],"sourcesContent":["export { VBottomNavigation } from './VBottomNavigation'\n"],"mappings":"SAASA,iBAAiB","ignoreList":[]}

Some files were not shown because too many files have changed in this diff Show More