@fastkit/vui 0.6.11 → 0.6.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vueKit = require('@fastkit/vue-kit');
6
6
  var vue = require('vue');
7
+ var vueColorScheme = require('@fastkit/vue-color-scheme');
8
+ var vueUtils = require('@fastkit/vue-utils');
9
+ var vueLoading = require('@fastkit/vue-loading');
7
10
  var iconFont = require('@fastkit/icon-font');
8
11
 
9
12
  const CONTROL_SIZES = ['sm', 'md', 'lg'];
@@ -37,8 +40,8 @@ function useVuiColorProvider() {
37
40
  return parent;
38
41
  }
39
42
  const vui = useVui();
40
- const primary = vue.computed(() => vui.color('primary'));
41
- const error = vue.computed(() => vui.color('error'));
43
+ const primary = vue.computed(() => vui.setting('primaryScope'));
44
+ const error = vue.computed(() => vui.setting('errorScope'));
42
45
  const provider = {
43
46
  primary,
44
47
  error,
@@ -233,16 +236,137 @@ function defineFormSelectorComponent(opts) {
233
236
  });
234
237
  }
235
238
 
236
- const VIcon = vue.defineComponent({
237
- name: 'VIcon',
238
- props: {
239
- name: {
239
+ function createElevationProps() {
240
+ return vueUtils.createPropsOptions({
241
+ elevation: Number,
242
+ });
243
+ }
244
+ function useElevation(props, opts = {}) {
245
+ const elevationValue = vue.computed(() => props.elevation == null ? opts.defaultValue : props.elevation);
246
+ const elevationClassName = vue.computed(() => {
247
+ const v = elevationValue.value;
248
+ return v == null ? undefined : `elevation-${v}`;
249
+ });
250
+ return {
251
+ elevationValue,
252
+ elevationClassName,
253
+ };
254
+ }
255
+
256
+ function createPaperProps() {
257
+ return { ...createElevationProps(),
258
+ square: Boolean,
259
+ color: String,
260
+ tag: {
240
261
  type: String,
241
- required: true
262
+ default: 'div'
242
263
  },
243
- rotate: {
244
- type: Number
245
- }
264
+ ...vueUtils.defineSlotsProps()
265
+ }; //
266
+ }
267
+ const VPaper = vue.defineComponent({
268
+ name: 'VPaper',
269
+ props: createPaperProps(),
270
+
271
+ setup(props, ctx) {
272
+ const tag = vue.computed(() => props.tag);
273
+ const elevation = useElevation(props, {
274
+ defaultValue: 1
275
+ });
276
+ const scope = vueColorScheme.useScopeColorClass(props);
277
+ const classes = vue.computed(() => [elevation.elevationClassName.value, scope.value.className, {
278
+ 'v-paper--plain': !scope.value.value,
279
+ 'v-paper--has-color': !!scope.value.value,
280
+ 'v-paper--square': props.square
281
+ }]);
282
+ return () => {
283
+ const TagName = tag.value;
284
+ const header = vueUtils.renderSlotOrEmpty(ctx.slots, 'header');
285
+ const footer = vueUtils.renderSlotOrEmpty(ctx.slots, 'footer');
286
+ return vue.createVNode(TagName, {
287
+ "class": ['v-paper', classes.value]
288
+ }, {
289
+ default: () => [header && vue.createVNode("div", {
290
+ "class": "v-paper__header"
291
+ }, [header]), vue.createVNode("div", {
292
+ "class": "v-paper__body"
293
+ }, [vueUtils.renderSlotOrEmpty(ctx.slots, 'default')]), footer && vue.createVNode("div", {
294
+ "class": "v-paper__footer"
295
+ }, [footer])]
296
+ });
297
+ };
298
+ }
299
+
300
+ });
301
+
302
+ function createCardProps() {
303
+ return { ...createPaperProps()
304
+ };
305
+ }
306
+ const VCard = vue.defineComponent({
307
+ name: 'VCard',
308
+ props: createCardProps(),
309
+
310
+ setup(props, ctx) {
311
+ const _props = vue.computed(() => props);
312
+
313
+ return () => {
314
+ return vue.createVNode(VPaper, vue.mergeProps({
315
+ "class": "v-card"
316
+ }, _props.value), ctx.slots);
317
+ };
318
+ }
319
+
320
+ });
321
+
322
+ const VCardContent = vue.defineComponent({
323
+ name: 'VCardContent',
324
+
325
+ setup(props, ctx) {
326
+ return () => {
327
+ return vue.createVNode("div", {
328
+ "class": "v-card-content"
329
+ }, [vueUtils.renderSlotOrEmpty(ctx.slots, 'default')]);
330
+ };
331
+ }
332
+
333
+ });
334
+
335
+ const VCardActions = vue.defineComponent({
336
+ name: 'VCardActions',
337
+
338
+ setup(props, ctx) {
339
+ return () => {
340
+ return vue.createVNode("div", {
341
+ "class": "v-card-actions"
342
+ }, [vueUtils.renderSlotOrEmpty(ctx.slots, 'default')]);
343
+ };
344
+ }
345
+
346
+ });
347
+
348
+ const _rawRawIconProp = [String, Function];
349
+ function rawRawIconProp() {
350
+ return _rawRawIconProp;
351
+ }
352
+ function resolveRawIconProp(prop, extraProps) {
353
+ if (!prop) return;
354
+ return typeof prop === 'function' ? prop(input => vue.createVNode(VIcon, vue.mergeProps(input, extraProps), null)) : vue.createVNode(VIcon, vue.mergeProps(extraProps, {
355
+ "name": prop
356
+ }), null);
357
+ }
358
+ const iconProps = vueUtils.createPropsOptions({
359
+ name: {
360
+ type: String,
361
+ required: true
362
+ },
363
+ rotate: {
364
+ type: Number
365
+ }
366
+ });
367
+ const VIcon = vue.defineComponent({
368
+ name: 'VIcon',
369
+ props: { ...iconProps
246
370
  },
247
371
  emits: {},
248
372
 
@@ -272,6 +396,243 @@ const VIcon = vue.defineComponent({
272
396
 
273
397
  });
274
398
 
399
+ function resolveRawVButtonIcon(raw, type = 'main') {
400
+ if (!raw) return;
401
+ return typeof raw === 'function' ? raw : () => vue.createVNode(VIcon, {
402
+ "class": ['v-button__icon', `v-button__icon--${type}`],
403
+ "name": raw
404
+ }, null);
405
+ }
406
+
407
+ const vueButtonProps = vueUtils.createPropsOptions({ ...vueColorScheme.colorSchemeProps(),
408
+ ...vueUtils.navigationableProps,
409
+ spacer: [Boolean, String],
410
+ loading: Boolean,
411
+ rounded: Boolean,
412
+ icon: [String, Function],
413
+ startIcon: [String, Function],
414
+ endIcon: [String, Function],
415
+ ...createControlProps()
416
+ });
417
+ const LOADING_SIZE_MAP = {
418
+ sm: 14,
419
+ md: 20,
420
+ lg: 28
421
+ };
422
+ const VButton = vue.defineComponent({
423
+ name: 'VButton',
424
+ props: vueButtonProps,
425
+ emits: { ...vueUtils.navigationableEmits.emits
426
+ },
427
+
428
+ setup(props, ctx) {
429
+ const vui = useVui();
430
+ const control = useControl(props);
431
+ const defaults = vui.setting('buttonDefault');
432
+ const icon = vue.computed(() => {
433
+ const _icon = resolveRawVButtonIcon(props.icon);
434
+
435
+ return _icon && _icon();
436
+ });
437
+ const startIcon = vue.computed(() => {
438
+ const _icon = resolveRawVButtonIcon(props.startIcon, 'start');
439
+
440
+ return _icon && _icon();
441
+ });
442
+ const endIcon = vue.computed(() => {
443
+ const _icon = resolveRawVButtonIcon(props.endIcon, 'end');
444
+
445
+ return _icon && _icon();
446
+ });
447
+ const color = vueColorScheme.useColorClasses({
448
+ color: () => props.color || defaults.color,
449
+ variant: () => props.variant || (icon.value ? vui.setting('plainVariant') : defaults.variant)
450
+ });
451
+ const isPlain = vue.computed(() => color.variant.value.value === vui.setting('plainVariant') && color.color.value.value === defaults.color);
452
+ const navigationable = vueUtils.useNavigationable(props);
453
+ const isLoading = vue.computed(() => props.loading);
454
+ const isDisabled = vue.computed(() => props.disabled);
455
+ const isRounded = vue.computed(() => props.rounded || !!icon.value);
456
+ const spacer = vue.computed(() => {
457
+ const _spacer = props.spacer;
458
+ if (!_spacer) return;
459
+ return _spacer === true ? 'left' : _spacer;
460
+ });
461
+ const classes = vue.computed(() => [color.colorClasses.value, navigationable.value.classes, spacer.value ? `v-button--spacer-${spacer.value}` : undefined, `v-button--${control.size.value}`, {
462
+ 'v-button--loading': isLoading.value,
463
+ 'v-button--icon': !!icon.value,
464
+ 'v-button--rounded': isRounded.value,
465
+ 'v-button--plain': isPlain.value
466
+ }]);
467
+ return () => {
468
+ const {
469
+ Tag,
470
+ attrs
471
+ } = navigationable.value;
472
+ const children = vueUtils.renderSlotOrEmpty(ctx.slots, 'default');
473
+ const _attrs = { ...attrs
474
+ };
475
+
476
+ if (isDisabled.value) {
477
+ _attrs.disabled = true;
478
+ }
479
+
480
+ return vue.createVNode(Tag, vue.mergeProps({
481
+ "class": ['v-button', classes.value]
482
+ }, _attrs, {
483
+ "onClick": ev => {
484
+ if (isDisabled.value || isLoading.value) {
485
+ ev.preventDefault();
486
+
487
+ if (isDisabled.value) {
488
+ return;
489
+ }
490
+ }
491
+
492
+ ctx.emit('click', ev);
493
+ }
494
+ }), {
495
+ default: () => [vue.createVNode("span", {
496
+ "class": "v-button__content"
497
+ }, [startIcon.value, children, icon.value, endIcon.value]), isLoading.value && vue.createVNode(vueLoading.VProgressCircular, {
498
+ "class": "v-button__loading",
499
+ "indeterminate": true,
500
+ "size": LOADING_SIZE_MAP[control.size.value]
501
+ }, null)]
502
+ });
503
+ };
504
+ }
505
+
506
+ });
507
+
508
+ function createListTileProps() {
509
+ const icon = rawRawIconProp();
510
+ return vueUtils.createPropsOptions({ ...vueUtils.navigationableProps,
511
+ startIcon: icon,
512
+ endIcon: icon,
513
+ fallbackTag: {
514
+ type: String,
515
+ default: 'div'
516
+ }
517
+ });
518
+ }
519
+ const listTileEmits = { ...vueUtils.navigationableEmits.emits
520
+ };
521
+ const VListTile = vue.defineComponent({
522
+ name: 'VListTile',
523
+ props: createListTileProps(),
524
+ emits: { ...listTileEmits
525
+ },
526
+
527
+ setup(props, ctx) {
528
+ const startIcon = vue.computed(() => resolveRawIconProp(props.startIcon));
529
+ const endIcon = vue.computed(() => resolveRawIconProp(props.endIcon));
530
+ const navigationable = vueUtils.useNavigationable(props, () => props.fallbackTag);
531
+ return () => {
532
+ const _startIcon = startIcon.value;
533
+ const _endIcon = endIcon.value;
534
+ const {
535
+ Tag,
536
+ attrs,
537
+ classes
538
+ } = navigationable.value;
539
+ return vue.createVNode(Tag, vue.mergeProps({
540
+ "class": ['v-list-tile', classes]
541
+ }, attrs), {
542
+ default: () => [_startIcon && vue.createVNode("span", {
543
+ "class": "v-list-tile__icon v-list-tile__icon--start"
544
+ }, [_startIcon]), vue.createVNode("span", {
545
+ "class": "v-list-tile__body"
546
+ }, [vueUtils.renderSlotOrEmpty(ctx.slots, 'default')]), _endIcon && vue.createVNode("span", {
547
+ "class": "v-list-tile__icon v-list-tile__icon--end"
548
+ }, [_endIcon])]
549
+ });
550
+ };
551
+ }
552
+
553
+ });
554
+
555
+ const VAccordion = vue.defineComponent({
556
+ name: 'VAccordion'
557
+ });
558
+
559
+ function _isSlot$6(s) {
560
+ return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
561
+ }
562
+
563
+ function createNavigationItemProps() {
564
+ return { ...createListTileProps()
565
+ };
566
+ }
567
+ const VNavigationItem = vue.defineComponent({
568
+ name: 'VNavigationItem',
569
+ props: createNavigationItemProps(),
570
+ emits: { ...listTileEmits
571
+ },
572
+
573
+ setup(props, ctx) {
574
+ const _props = vue.computed(() => ({ ...props
575
+ }));
576
+
577
+ return () => {
578
+ let _slot;
579
+
580
+ return vue.createVNode(VListTile, vue.mergeProps(_props.value, {
581
+ "class": "v-navigation-item"
582
+ }), _isSlot$6(_slot = vueUtils.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
583
+ default: () => [_slot]
584
+ });
585
+ };
586
+ }
587
+
588
+ });
589
+
590
+ function _isSlot$5(s) {
591
+ return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
592
+ }
593
+
594
+ const VNavigation = vue.defineComponent({
595
+ name: 'VNavigation',
596
+ props: {
597
+ items: {
598
+ type: Array,
599
+ required: true
600
+ }
601
+ },
602
+
603
+ setup(props, ctx) {
604
+ const items = vue.computed(() => props.items);
605
+ const $items = vue.computed(() => items.value.map(item => {
606
+ let label = item.label;
607
+ const _props = { ...item
608
+ };
609
+
610
+ if (typeof label === 'function') {
611
+ label = label();
612
+ }
613
+
614
+ delete _props.label;
615
+ return {
616
+ label,
617
+ props: _props
618
+ };
619
+ }));
620
+ return () => {
621
+ return vue.createVNode("nav", {
622
+ "class": "v-navigation"
623
+ }, [$items.value.map(({
624
+ label,
625
+ props
626
+ }) => vue.createVNode(VNavigationItem, vue.mergeProps(props, {
627
+ "class": "v-navigation__item"
628
+ }), _isSlot$5(label) ? label : {
629
+ default: () => [label]
630
+ }))]);
631
+ };
632
+ }
633
+
634
+ });
635
+
275
636
  const VCheckable = vue.defineComponent({
276
637
  name: 'VCheckable',
277
638
  props: {
@@ -365,7 +726,7 @@ const VCheckbox = vue.defineComponent({
365
726
 
366
727
  });
367
728
 
368
- function _isSlot$3(s) {
729
+ function _isSlot$4(s) {
369
730
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
370
731
  }
371
732
 
@@ -377,7 +738,7 @@ const VCheckboxGroup = defineFormSelectorComponent({
377
738
  itemRenderer: ({
378
739
  attrs,
379
740
  slots
380
- }) => vue.createVNode(VCheckbox, attrs, _isSlot$3(slots) ? slots : {
741
+ }) => vue.createVNode(VCheckbox, attrs, _isSlot$4(slots) ? slots : {
381
742
  default: () => [slots]
382
743
  })
383
744
  });
@@ -429,7 +790,7 @@ const VRadio = vue.defineComponent({
429
790
 
430
791
  });
431
792
 
432
- function _isSlot$2(s) {
793
+ function _isSlot$3(s) {
433
794
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
434
795
  }
435
796
 
@@ -440,7 +801,7 @@ const VRadioGroup = defineFormSelectorComponent({
440
801
  itemRenderer: ({
441
802
  attrs,
442
803
  slots
443
- }) => vue.createVNode(VRadio, attrs, _isSlot$2(slots) ? slots : {
804
+ }) => vue.createVNode(VRadio, attrs, _isSlot$3(slots) ? slots : {
444
805
  default: () => [slots]
445
806
  })
446
807
  });
@@ -502,7 +863,7 @@ const VSwitch = vue.defineComponent({
502
863
 
503
864
  });
504
865
 
505
- function _isSlot$1(s) {
866
+ function _isSlot$2(s) {
506
867
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
507
868
  }
508
869
 
@@ -514,7 +875,7 @@ const VSwitchGroup = defineFormSelectorComponent({
514
875
  itemRenderer: ({
515
876
  attrs,
516
877
  slots
517
- }) => vue.createVNode(VSwitch, attrs, _isSlot$1(slots) ? slots : {
878
+ }) => vue.createVNode(VSwitch, attrs, _isSlot$2(slots) ? slots : {
518
879
  default: () => [slots]
519
880
  })
520
881
  });
@@ -1057,7 +1418,7 @@ const VForm = vue.defineComponent({
1057
1418
 
1058
1419
  });
1059
1420
 
1060
- function _isSlot(s) {
1421
+ function _isSlot$1(s) {
1061
1422
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
1062
1423
  }
1063
1424
 
@@ -1069,7 +1430,93 @@ const VApp = vue.defineComponent({
1069
1430
  return () => {
1070
1431
  let _slot;
1071
1432
 
1072
- return vue.createVNode(vueKit.VStackRoot, null, _isSlot(_slot = vueKit.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
1433
+ return vue.createVNode(vueKit.VStackRoot, null, _isSlot$1(_slot = vueKit.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
1434
+ default: () => [_slot]
1435
+ });
1436
+ };
1437
+ }
1438
+
1439
+ });
1440
+
1441
+ const VToolbar = vue.defineComponent({
1442
+ name: 'VToolbar',
1443
+ props: { ...createElevationProps(),
1444
+ ...vueColorScheme.colorSchemeProps(),
1445
+ dense: Boolean
1446
+ },
1447
+
1448
+ setup(props, ctx) {
1449
+ const vui = useVui();
1450
+ const elevation = useElevation(props, {
1451
+ defaultValue: 4
1452
+ });
1453
+ const dense = vue.computed(() => props.dense);
1454
+ const color = vueColorScheme.useColorClasses({
1455
+ color: () => props.color,
1456
+ variant: () => props.variant || vui.setting('containedVariant')
1457
+ });
1458
+ const classes = vue.computed(() => {
1459
+ return [elevation.elevationClassName.value, color.colorClasses.value, {
1460
+ 'v-toolbar--plain': !color.color.value.value,
1461
+ 'v-toolbar--dense': dense.value
1462
+ }];
1463
+ });
1464
+ return () => {
1465
+ return vue.createVNode("div", {
1466
+ "class": ['v-toolbar', classes.value]
1467
+ }, [vueUtils.renderSlotOrEmpty(ctx.slots, 'default')]);
1468
+ };
1469
+ }
1470
+
1471
+ });
1472
+
1473
+ const VToolbarMenu = vue.defineComponent({
1474
+ name: 'VToolbarMenu',
1475
+ props: {
1476
+ edge: {
1477
+ type: String,
1478
+ required: true
1479
+ }
1480
+ },
1481
+
1482
+ setup(props, ctx) {
1483
+ const edge = vue.computed(() => props.edge);
1484
+ return () => {
1485
+ const children = vueUtils.renderSlotOrEmpty(ctx.slots, 'default');
1486
+ const hasChildren = !!children && children.length > 0;
1487
+ return vue.createVNode("div", {
1488
+ "class": ['v-toolbar-menu', `v-toolbar-menu--${edge.value}`, {
1489
+ [`v-toolbar-menu--empty`]: !hasChildren
1490
+ }]
1491
+ }, [children]);
1492
+ };
1493
+ }
1494
+
1495
+ });
1496
+
1497
+ function _isSlot(s) {
1498
+ return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
1499
+ }
1500
+
1501
+ const VToolbarTitle = vue.defineComponent({
1502
+ name: 'VToolbarTitle',
1503
+ props: {
1504
+ tag: {
1505
+ type: String,
1506
+ default: 'span'
1507
+ }
1508
+ },
1509
+
1510
+ setup(props, ctx) {
1511
+ const _TagName = vue.computed(() => props.tag);
1512
+
1513
+ return () => {
1514
+ let _slot;
1515
+
1516
+ const TagName = _TagName.value;
1517
+ return vue.createVNode(TagName, {
1518
+ "class": "v-toolbar-title"
1519
+ }, _isSlot(_slot = vueUtils.renderSlotOrEmpty(ctx.slots, 'default')) ? _slot : {
1073
1520
  default: () => [_slot]
1074
1521
  });
1075
1522
  };
@@ -1093,8 +1540,8 @@ class VuiService {
1093
1540
  this.textareaRows = textareaRows;
1094
1541
  this.requiredChip = requiredChip;
1095
1542
  }
1096
- color(colorType) {
1097
- return this.options.colors[colorType];
1543
+ setting(key) {
1544
+ return this.options.uiSettings[key];
1098
1545
  }
1099
1546
  icon(iconType) {
1100
1547
  return this.options.icons[iconType];
@@ -1112,52 +1559,85 @@ class VuiService {
1112
1559
  }
1113
1560
  }
1114
1561
 
1115
- class VuiPlugin {
1116
- static installedApps = new Set();
1117
- static install(app, opts) {
1118
- const { installedApps } = this;
1119
- if (installedApps.has(app))
1120
- return;
1121
- const unmountApp = app.unmount;
1122
- installedApps.add(app);
1123
- const { colors, colorScheme, stack } = opts;
1124
- // ColorScheme
1125
- const vueColorSchemePlugin = new vueKit.VueColorSchemePlugin(colorScheme);
1126
- app.use(vueColorSchemePlugin);
1127
- // Stack
1128
- vueKit.installVueStackPlugin(app, {
1129
- primaryColor: colors.primary,
1130
- ...stack,
1131
- });
1132
- // Vui
1133
- const $vui = new VuiService(opts);
1134
- app.provide(VuiInjectionKey, $vui);
1135
- app.config.globalProperties.$vui = $vui;
1136
- app.unmount = function () {
1137
- installedApps.delete(app);
1138
- delete app.config.globalProperties.$vui;
1139
- unmountApp();
1140
- };
1141
- }
1142
- }
1143
- function installVuiPlugin(app, opts) {
1144
- return app.use(VuiPlugin, opts);
1562
+ class VuiPlugin {
1563
+ static installedApps = new Set();
1564
+
1565
+ static install(app, opts) {
1566
+ const {
1567
+ installedApps
1568
+ } = this;
1569
+ if (installedApps.has(app)) return;
1570
+ const unmountApp = app.unmount;
1571
+ installedApps.add(app);
1572
+ const {
1573
+ colorScheme,
1574
+ stack,
1575
+ uiSettings
1576
+ } = opts; // ColorScheme
1577
+
1578
+ const vueColorSchemePlugin = new vueKit.VueColorSchemePlugin(colorScheme);
1579
+ app.use(vueColorSchemePlugin); // Stack
1580
+
1581
+ vueKit.installVueStackPlugin(app, {
1582
+ actions: {
1583
+ ok: ({
1584
+ bindings
1585
+ }) => vue.createVNode(VButton, vue.mergeProps(uiSettings.dialogOk, bindings), {
1586
+ default: () => [vue.createTextVNode("OK")]
1587
+ }),
1588
+ cancel: ({
1589
+ bindings
1590
+ }) => vue.createVNode(VButton, vue.mergeProps(uiSettings.dialogCancel, bindings), {
1591
+ default: () => [vue.createTextVNode("CANCEL")]
1592
+ }),
1593
+ close: ({
1594
+ bindings
1595
+ }) => vue.createVNode(VButton, vue.mergeProps(uiSettings.dialogClose, bindings), {
1596
+ default: () => [vue.createTextVNode("CLOSE")]
1597
+ }),
1598
+ ...(stack ? stack.actions : {})
1599
+ },
1600
+ ...stack
1601
+ }); // Vui
1602
+
1603
+ const $vui = new VuiService(opts);
1604
+ app.provide(VuiInjectionKey, $vui);
1605
+ app.config.globalProperties.$vui = $vui;
1606
+
1607
+ app.unmount = function () {
1608
+ installedApps.delete(app);
1609
+ delete app.config.globalProperties.$vui;
1610
+ unmountApp();
1611
+ };
1612
+ }
1613
+
1614
+ }
1615
+ function installVuiPlugin(app, opts) {
1616
+ return app.use(VuiPlugin, opts);
1145
1617
  }
1146
1618
 
1147
- exports.VButton = vueKit.VStackBtn;
1148
1619
  exports.VDialog = vueKit.VDialog;
1149
1620
  exports.VMenu = vueKit.VMenu;
1150
1621
  exports.VSnackbar = vueKit.VSnackbar;
1151
1622
  exports.ICON_NAMES = iconFont.ICON_NAMES;
1152
1623
  exports.CONTROL_FIELD_VARIANTS = CONTROL_FIELD_VARIANTS;
1153
1624
  exports.CONTROL_SIZES = CONTROL_SIZES;
1625
+ exports.VAccordion = VAccordion;
1154
1626
  exports.VApp = VApp;
1627
+ exports.VButton = VButton;
1628
+ exports.VCard = VCard;
1629
+ exports.VCardActions = VCardActions;
1630
+ exports.VCardContent = VCardContent;
1155
1631
  exports.VCheckbox = VCheckbox;
1156
1632
  exports.VCheckboxGroup = VCheckboxGroup;
1157
1633
  exports.VForm = VForm;
1158
1634
  exports.VIcon = VIcon;
1635
+ exports.VListTile = VListTile;
1636
+ exports.VNavigation = VNavigation;
1637
+ exports.VNavigationItem = VNavigationItem;
1159
1638
  exports.VOption = VOption;
1160
1639
  exports.VOptionGroup = VOptionGroup;
1640
+ exports.VPaper = VPaper;
1161
1641
  exports.VRadio = VRadio;
1162
1642
  exports.VRadioGroup = VRadioGroup;
1163
1643
  exports.VSelect = VSelect;
@@ -1165,15 +1645,48 @@ exports.VSwitch = VSwitch;
1165
1645
  exports.VSwitchGroup = VSwitchGroup;
1166
1646
  exports.VTextField = VTextField;
1167
1647
  exports.VTextarea = VTextarea;
1648
+ exports.VToolbar = VToolbar;
1649
+ exports.VToolbarMenu = VToolbarMenu;
1650
+ exports.VToolbarTitle = VToolbarTitle;
1651
+ exports.VUI_CHECKBOX_GROUP_SYMBOL = VUI_CHECKBOX_GROUP_SYMBOL;
1652
+ exports.VUI_CHECKBOX_SYMBOL = VUI_CHECKBOX_SYMBOL;
1653
+ exports.VUI_FORM_SYMBOL = VUI_FORM_SYMBOL;
1654
+ exports.VUI_OPTION_SYMBOL = VUI_OPTION_SYMBOL;
1655
+ exports.VUI_RADIO_GROUP_SYMBOL = VUI_RADIO_GROUP_SYMBOL;
1656
+ exports.VUI_RADIO_SYMBOL = VUI_RADIO_SYMBOL;
1657
+ exports.VUI_SELECT_SYMBOL = VUI_SELECT_SYMBOL;
1658
+ exports.VUI_SWITCH_GROUP_SYMBOL = VUI_SWITCH_GROUP_SYMBOL;
1659
+ exports.VUI_SWITCH_SYMBOL = VUI_SWITCH_SYMBOL;
1660
+ exports.VUI_TEXTAREA_SYMBOL = VUI_TEXTAREA_SYMBOL;
1661
+ exports.VUI_TEXT_FIELD_SYMBOL = VUI_TEXT_FIELD_SYMBOL;
1662
+ exports.VuiColorProviderInjectionKey = VuiColorProviderInjectionKey;
1663
+ exports.VuiControlFieldInjectionKey = VuiControlFieldInjectionKey;
1664
+ exports.VuiControlInjectionKey = VuiControlInjectionKey;
1168
1665
  exports.VuiInjectionKey = VuiInjectionKey;
1169
1666
  exports.VuiPlugin = VuiPlugin;
1170
1667
  exports.VuiService = VuiService;
1668
+ exports.createCardProps = createCardProps;
1171
1669
  exports.createControlFieldProviderProps = createControlFieldProviderProps;
1172
1670
  exports.createControlProps = createControlProps;
1671
+ exports.createElevationProps = createElevationProps;
1672
+ exports.createListTileProps = createListTileProps;
1673
+ exports.createNavigationItemProps = createNavigationItemProps;
1674
+ exports.createPaperProps = createPaperProps;
1173
1675
  exports.defineFormSelectorComponent = defineFormSelectorComponent;
1676
+ exports.iconProps = iconProps;
1174
1677
  exports.installVuiPlugin = installVuiPlugin;
1678
+ exports.listTileEmits = listTileEmits;
1679
+ exports.rawRawIconProp = rawRawIconProp;
1680
+ exports.resolveRawIconProp = resolveRawIconProp;
1175
1681
  exports.useControl = useControl;
1176
1682
  exports.useControlField = useControlField;
1683
+ exports.useElevation = useElevation;
1684
+ exports.useVui = useVui;
1685
+ exports.useVuiColorProvider = useVuiColorProvider;
1686
+ exports.vueButtonProps = vueButtonProps;
1177
1687
  for (var k in vueKit) {
1178
1688
  if (k !== 'default' && !exports.hasOwnProperty(k)) exports[k] = vueKit[k];
1179
1689
  }
1690
+ for (var k in vueLoading) {
1691
+ if (k !== 'default' && !exports.hasOwnProperty(k)) exports[k] = vueLoading[k];
1692
+ }