index.d.mts 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. import * as vue from 'vue';
  2. import { ComponentPropsOptions, ExtractPropTypes, PropType, ComponentPublicInstance, FunctionalComponent } from 'vue';
  3. interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
  4. filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): Partial<Pick<T, U>>;
  5. }
  6. type ClassValue = any;
  7. type Density = null | 'default' | 'comfortable' | 'compact';
  8. declare const allowedVariants: readonly ["elevated", "flat", "tonal", "outlined", "text", "plain"];
  9. type Variant = typeof allowedVariants[number];
  10. type JSXComponent<Props = any> = {
  11. new (): ComponentPublicInstance<Props>;
  12. } | FunctionalComponent<Props>;
  13. type IconValue = string | (string | [path: string, opacity: number])[] | JSXComponent;
  14. declare const IconValue: PropType<IconValue>;
  15. declare const VAvatar: {
  16. new (...args: any[]): vue.CreateComponentPublicInstance<{
  17. variant: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
  18. end: boolean;
  19. start: boolean;
  20. style: vue.StyleValue;
  21. size: string | number;
  22. tag: string;
  23. tile: boolean;
  24. density: Density;
  25. } & {
  26. border?: string | number | boolean | undefined;
  27. color?: string | undefined;
  28. image?: string | undefined;
  29. text?: string | undefined;
  30. class?: any;
  31. theme?: string | undefined;
  32. icon?: IconValue | undefined;
  33. rounded?: string | number | boolean | undefined;
  34. } & {
  35. $children?: vue.VNodeChild | {
  36. default?: (() => vue.VNodeChild) | undefined;
  37. } | (() => vue.VNodeChild);
  38. 'v-slots'?: {
  39. default?: false | (() => vue.VNodeChild) | undefined;
  40. } | undefined;
  41. } & {
  42. "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
  43. }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
  44. variant: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
  45. end: boolean;
  46. start: boolean;
  47. style: vue.StyleValue;
  48. size: string | number;
  49. tag: string;
  50. tile: boolean;
  51. density: Density;
  52. } & {
  53. border?: string | number | boolean | undefined;
  54. color?: string | undefined;
  55. image?: string | undefined;
  56. text?: string | undefined;
  57. class?: any;
  58. theme?: string | undefined;
  59. icon?: IconValue | undefined;
  60. rounded?: string | number | boolean | undefined;
  61. } & {
  62. $children?: vue.VNodeChild | {
  63. default?: (() => vue.VNodeChild) | undefined;
  64. } | (() => vue.VNodeChild);
  65. 'v-slots'?: {
  66. default?: false | (() => vue.VNodeChild) | undefined;
  67. } | undefined;
  68. } & {
  69. "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
  70. }, {
  71. variant: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
  72. end: boolean;
  73. start: boolean;
  74. style: vue.StyleValue;
  75. size: string | number;
  76. tag: string;
  77. rounded: string | number | boolean;
  78. tile: boolean;
  79. density: Density;
  80. }, true, {}, vue.SlotsType<Partial<{
  81. default: () => vue.VNode[];
  82. }>>, {
  83. P: {};
  84. B: {};
  85. D: {};
  86. C: {};
  87. M: {};
  88. Defaults: {};
  89. }, {
  90. variant: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
  91. end: boolean;
  92. start: boolean;
  93. style: vue.StyleValue;
  94. size: string | number;
  95. tag: string;
  96. tile: boolean;
  97. density: Density;
  98. } & {
  99. border?: string | number | boolean | undefined;
  100. color?: string | undefined;
  101. image?: string | undefined;
  102. text?: string | undefined;
  103. class?: any;
  104. theme?: string | undefined;
  105. icon?: IconValue | undefined;
  106. rounded?: string | number | boolean | undefined;
  107. } & {
  108. $children?: vue.VNodeChild | {
  109. default?: (() => vue.VNodeChild) | undefined;
  110. } | (() => vue.VNodeChild);
  111. 'v-slots'?: {
  112. default?: false | (() => vue.VNodeChild) | undefined;
  113. } | undefined;
  114. } & {
  115. "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
  116. }, {}, {}, {}, {}, {
  117. variant: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
  118. end: boolean;
  119. start: boolean;
  120. style: vue.StyleValue;
  121. size: string | number;
  122. tag: string;
  123. rounded: string | number | boolean;
  124. tile: boolean;
  125. density: Density;
  126. }>;
  127. __isFragment?: never;
  128. __isTeleport?: never;
  129. __isSuspense?: never;
  130. } & vue.ComponentOptionsBase<{
  131. variant: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
  132. end: boolean;
  133. start: boolean;
  134. style: vue.StyleValue;
  135. size: string | number;
  136. tag: string;
  137. tile: boolean;
  138. density: Density;
  139. } & {
  140. border?: string | number | boolean | undefined;
  141. color?: string | undefined;
  142. image?: string | undefined;
  143. text?: string | undefined;
  144. class?: any;
  145. theme?: string | undefined;
  146. icon?: IconValue | undefined;
  147. rounded?: string | number | boolean | undefined;
  148. } & {
  149. $children?: vue.VNodeChild | {
  150. default?: (() => vue.VNodeChild) | undefined;
  151. } | (() => vue.VNodeChild);
  152. 'v-slots'?: {
  153. default?: false | (() => vue.VNodeChild) | undefined;
  154. } | undefined;
  155. } & {
  156. "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
  157. }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
  158. variant: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
  159. end: boolean;
  160. start: boolean;
  161. style: vue.StyleValue;
  162. size: string | number;
  163. tag: string;
  164. rounded: string | number | boolean;
  165. tile: boolean;
  166. density: Density;
  167. }, {}, string, vue.SlotsType<Partial<{
  168. default: () => vue.VNode[];
  169. }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
  170. color: StringConstructor;
  171. variant: Omit<{
  172. type: vue.PropType<Variant>;
  173. default: string;
  174. validator: (v: any) => boolean;
  175. }, "type" | "default"> & {
  176. type: vue.PropType<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
  177. default: NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
  178. };
  179. theme: StringConstructor;
  180. tag: {
  181. type: StringConstructor;
  182. default: string;
  183. };
  184. size: {
  185. type: (StringConstructor | NumberConstructor)[];
  186. default: string;
  187. };
  188. rounded: {
  189. type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
  190. default: undefined;
  191. };
  192. tile: BooleanConstructor;
  193. density: {
  194. type: vue.PropType<Density>;
  195. default: string;
  196. validator: (v: any) => boolean;
  197. };
  198. class: vue.PropType<ClassValue>;
  199. style: {
  200. type: vue.PropType<vue.StyleValue>;
  201. default: null;
  202. };
  203. border: (StringConstructor | BooleanConstructor | NumberConstructor)[];
  204. start: BooleanConstructor;
  205. end: BooleanConstructor;
  206. icon: vue.PropType<IconValue>;
  207. image: StringConstructor;
  208. text: StringConstructor;
  209. }, vue.ExtractPropTypes<{
  210. color: StringConstructor;
  211. variant: Omit<{
  212. type: vue.PropType<Variant>;
  213. default: string;
  214. validator: (v: any) => boolean;
  215. }, "type" | "default"> & {
  216. type: vue.PropType<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
  217. default: NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
  218. };
  219. theme: StringConstructor;
  220. tag: {
  221. type: StringConstructor;
  222. default: string;
  223. };
  224. size: {
  225. type: (StringConstructor | NumberConstructor)[];
  226. default: string;
  227. };
  228. rounded: {
  229. type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
  230. default: undefined;
  231. };
  232. tile: BooleanConstructor;
  233. density: {
  234. type: vue.PropType<Density>;
  235. default: string;
  236. validator: (v: any) => boolean;
  237. };
  238. class: vue.PropType<ClassValue>;
  239. style: {
  240. type: vue.PropType<vue.StyleValue>;
  241. default: null;
  242. };
  243. border: (StringConstructor | BooleanConstructor | NumberConstructor)[];
  244. start: BooleanConstructor;
  245. end: BooleanConstructor;
  246. icon: vue.PropType<IconValue>;
  247. image: StringConstructor;
  248. text: StringConstructor;
  249. }>>;
  250. type VAvatar = InstanceType<typeof VAvatar>;
  251. export { VAvatar };