vynil-ui 0.1.0-beta.6 → 0.1.0-beta.8

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.
@@ -69,13 +69,13 @@ const UNIT_SECONDS = 's';
69
69
  const UNIT_PERCENTAGE = '%';
70
70
  const ICON_SIZE_NAMES = ['s', 'button', 'm', 'l', 'xl'];
71
71
  const FONT_SIZE_NAMES = ['xs', 's', 'm', 'l', 'xl', 'h3', 'h2', 'h1'];
72
+ const DEFAULT_FACTOR = 10;
72
73
  const DEFAULT_THEME = {
73
74
  variables: {
74
75
  border: 2,
75
76
  radius: 0,
76
77
  padding: 1,
77
78
  transitionLength: 0.3,
78
- colorContrastFactor: 10,
79
79
  iconSizes: [0.75, 0.9, 1.5, 2.75, 5],
80
80
  fontSizes: [10, 12, 16, 20, 24, 42, 64, 92],
81
81
  },
@@ -86,6 +86,11 @@ const DEFAULT_THEME = {
86
86
  background: '#27272A',
87
87
  boxShadow: 'rgba(0, 0, 0, 0.45) 0px 54px 55px, rgba(0, 0, 0, 0.12) 0px -12px 30px, rgba(0, 0, 0, 0.12) 0px 4px 6px, rgba(0, 0, 0, 0.17) 0px 12px 13px, rgba(0, 0, 0, 0.09) 0px -3px 5px',
88
88
  },
89
+ colorContrastFactor: {
90
+ factor: 10,
91
+ darkenFactor: 10,
92
+ lightenFactor: 5,
93
+ }
89
94
  };
90
95
  class ThemeService {
91
96
  constructor() {
@@ -93,11 +98,9 @@ class ThemeService {
93
98
  this.updateTheme(DEFAULT_THEME);
94
99
  }
95
100
  updateTheme(themeChanges) {
96
- const root = document.querySelector(':root');
97
- if (root) {
98
- this.updateElementTheme(root, themeChanges);
99
- }
100
101
  this.theme.next({
102
+ ...this.theme.value,
103
+ ...themeChanges,
101
104
  variables: {
102
105
  ...this.theme.value.variables,
103
106
  ...themeChanges.variables,
@@ -105,8 +108,12 @@ class ThemeService {
105
108
  colors: {
106
109
  ...this.theme.value.colors,
107
110
  ...themeChanges.colors,
108
- }
111
+ },
109
112
  });
113
+ const root = document.querySelector(':root');
114
+ if (root) {
115
+ this.updateElementTheme(root, themeChanges);
116
+ }
110
117
  }
111
118
  updateElementTheme(element, themeChanges) {
112
119
  if (element) {
@@ -158,10 +165,14 @@ class ThemeService {
158
165
  }
159
166
  }
160
167
  updateColor(element, propertyName, value, skipAlts) {
168
+ const darkenFactor = this.theme.value.colorContrastFactor?.darkenFactor || this.theme.value.colorContrastFactor?.factor || DEFAULT_FACTOR;
169
+ const lightenFactor = this.theme.value.colorContrastFactor?.lightenFactor || this.theme.value.colorContrastFactor?.factor || DEFAULT_FACTOR;
161
170
  element.style.setProperty('--vui-color-' + propertyName, value);
162
171
  if (!skipAlts) {
163
- element.style.setProperty('--vui-color-' + propertyName + '-darker', 'color-mix(in srgb,' + value + ',#000 ' + this.theme.value.variables.colorContrastFactor + UNIT_PERCENTAGE);
164
- element.style.setProperty('--vui-color-' + propertyName + '-lighter', 'color-mix(in srgb,' + value + ',#FFF ' + this.theme.value.variables.colorContrastFactor + UNIT_PERCENTAGE);
172
+ element.style.setProperty('--vui-color-' + propertyName + '-darker', 'color-mix(in srgb,' + value + ',#000 ' + darkenFactor + UNIT_PERCENTAGE);
173
+ element.style.setProperty('--vui-color-' + propertyName + '-lighter', 'color-mix(in srgb,' + value + ',#FFF ' + lightenFactor + UNIT_PERCENTAGE);
174
+ element.style.setProperty('--vui-color-' + propertyName + '-darkest', 'color-mix(in srgb,' + value + ',#000 ' + (darkenFactor * 2) + UNIT_PERCENTAGE);
175
+ element.style.setProperty('--vui-color-' + propertyName + '-lightest', 'color-mix(in srgb,' + value + ',#FFF ' + (lightenFactor * 2) + UNIT_PERCENTAGE);
165
176
  }
166
177
  }
167
178
  updateIconSizes(element, values) {
@@ -318,12 +329,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
318
329
  type: Input
319
330
  }] } });
320
331
 
332
+ const ICON_SIZE_VARIABLES = {
333
+ s: 'var(--vui-variable-icon-size-s)',
334
+ m: 'var(--vui-variable-icon-size-m)',
335
+ l: 'var(--vui-variable-icon-size-l)',
336
+ xl: 'var(--vui-variable-icon-size-xl)',
337
+ small: 'var(--vui-variable-icon-size-s)',
338
+ button: 'var(--vui-variable-icon-size-button)',
339
+ medium: 'var(--vui-variable-icon-size-m)',
340
+ large: 'var(--vui-variable-icon-size-l)',
341
+ xlarge: 'var(--vui-variable-icon-size-xl)',
342
+ };
321
343
  var VynilUIIconSize;
322
344
  (function (VynilUIIconSize) {
323
345
  VynilUIIconSize["Small"] = "small";
324
346
  VynilUIIconSize["Button"] = "button";
325
347
  VynilUIIconSize["Medium"] = "medium";
326
348
  VynilUIIconSize["Large"] = "large";
349
+ VynilUIIconSize["ExtraLarge"] = "xlarge";
327
350
  })(VynilUIIconSize || (VynilUIIconSize = {}));
328
351
  class IconComponent {
329
352
  constructor() {
@@ -340,10 +363,13 @@ class IconComponent {
340
363
  }
341
364
  styleObject['mask'] = 'url(./assets/icons/' + (this.icon || 'cog') + '.svg) no-repeat center',
342
365
  styleObject['-webkit-mask'] = styleObject['mask'];
366
+ if (this.scaleMask) {
367
+ styleObject['mask-size'] = ICON_SIZE_VARIABLES[this.size];
368
+ }
343
369
  return styleObject;
344
370
  }
345
371
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
346
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: IconComponent, isStandalone: false, selector: "vui-icon", inputs: { size: "size", icon: "icon", color: "color", rotation: "rotation", disabled: "disabled", actionable: "actionable" }, ngImport: i0, template: "<div\n class=\"icon\"\n [ngClass]=\"size + ' ' + (actionable ? 'actionable' : '') + ' ' + (disabled ? 'disabled' : '')\"\n [ngStyle]=\"styleObject\">\n</div>\n", styles: [":host{display:flex;align-items:center}.icon{background-color:var(--vui-color-text);width:var(--vui-variable-icon-size-m);height:var(--vui-variable-icon-size-m)}.icon.small,.icon.s{width:var(--vui-variable-icon-size-s);height:var(--vui-variable-icon-size-s)}.icon.button,.icon.b{width:var(--vui-variable-icon-size-button);height:var(--vui-variable-icon-size-button)}.icon.large,.icon.l{width:var(--vui-variable-icon-size-l);height:var(--vui-variable-icon-size-l)}.icon.extra-large,.icon.xl{width:var(--vui-variable-icon-size-xl);height:var(--vui-variable-icon-size-xl)}.icon.actionable{opacity:.85;cursor:pointer}.icon.actionable:hover:not(.disabled){opacity:1}.icon.disabled{opacity:.3}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
372
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: IconComponent, isStandalone: false, selector: "vui-icon", inputs: { size: "size", icon: "icon", color: "color", rotation: "rotation", disabled: "disabled", scaleMask: "scaleMask", actionable: "actionable" }, ngImport: i0, template: "<div\n class=\"icon\"\n [ngClass]=\"size + ' ' + (actionable ? 'actionable' : '') + ' ' + (disabled ? 'disabled' : '')\"\n [ngStyle]=\"styleObject\">\n</div>\n", styles: [":host{display:flex;align-items:center}.icon{background-color:var(--vui-color-text);width:var(--vui-variable-icon-size-m);height:var(--vui-variable-icon-size-m)}.icon.small,.icon.s{width:var(--vui-variable-icon-size-s);height:var(--vui-variable-icon-size-s)}.icon.button,.icon.b{width:var(--vui-variable-icon-size-button);height:var(--vui-variable-icon-size-button)}.icon.large,.icon.l{width:var(--vui-variable-icon-size-l);height:var(--vui-variable-icon-size-l)}.icon.extra-large,.icon.xl{width:var(--vui-variable-icon-size-xl);height:var(--vui-variable-icon-size-xl)}.icon.actionable{opacity:.85;cursor:pointer}.icon.actionable:hover:not(.disabled){opacity:1}.icon.disabled{opacity:.3}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
347
373
  }
348
374
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: IconComponent, decorators: [{
349
375
  type: Component,
@@ -358,6 +384,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
358
384
  type: Input
359
385
  }], disabled: [{
360
386
  type: Input
387
+ }], scaleMask: [{
388
+ type: Input
361
389
  }], actionable: [{
362
390
  type: Input
363
391
  }] } });
@@ -412,6 +440,9 @@ class InputComponent {
412
440
  styleObject[propertyName] = componentObject[propertyName];
413
441
  }
414
442
  });
443
+ if (this.align) {
444
+ styleObject['text-align'] = this.align;
445
+ }
415
446
  return styleObject;
416
447
  }
417
448
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -463,8 +494,8 @@ class ImageComponent {
463
494
  let styles = {
464
495
  'width': this.width || DEFAULT_DIMENSION,
465
496
  'height': this.height || DEFAULT_DIMENSION,
466
- 'min-width': this.width || DEFAULT_DIMENSION,
467
- 'min-height': this.height || DEFAULT_DIMENSION,
497
+ 'min-width': this.minWidth || this.width || DEFAULT_DIMENSION,
498
+ 'min-height': this.minHeight || this.height || DEFAULT_DIMENSION,
468
499
  };
469
500
  if (this.useBackgroundImage && this.url) {
470
501
  styles = {
@@ -485,7 +516,7 @@ class ImageComponent {
485
516
  this.domSanitizer = domSanitizer;
486
517
  }
487
518
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ImageComponent, deps: [{ token: i1$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
488
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: ImageComponent, isStandalone: false, selector: "vui-image", inputs: { url: "url", width: "width", height: "height", circle: "circle", border: "border", borderRadius: "borderRadius", backgroundSize: "backgroundSize", useBackgroundImage: "useBackgroundImage" }, ngImport: i0, template: "<div\n *ngIf=\"useBackgroundImage\"\n class=\"image-wrapper\"\n [ngClass]=\"{'circle': circle}\"\n [ngStyle]=\"styles\">\n</div>\n<img\n *ngIf=\"url && !useBackgroundImage\"\n [src]=\"sanitizedUrl\"\n class=\"image-wrapper\"\n [ngClass]=\"{'circle': circle}\"\n [ngStyle]=\"styles\"\n>\n<div\n *ngIf=\"!url && !useBackgroundImage\"\n class=\"image-wrapper\"\n [ngClass]=\"{'circle': circle}\"\n [ngStyle]=\"styles\"\n>\n", styles: ["::host{margin:0;padding:0}.image-wrapper{margin:0;padding:0;display:block;overflow:hidden;background-position:center;background-repeat:no-repeat;background-color:var(--vui-color-background-darker)}.image-wrapper.circle{border-radius:50%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
519
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: ImageComponent, isStandalone: false, selector: "vui-image", inputs: { url: "url", width: "width", height: "height", minWidth: "minWidth", minHeight: "minHeight", circle: "circle", border: "border", borderRadius: "borderRadius", backgroundSize: "backgroundSize", useBackgroundImage: "useBackgroundImage" }, ngImport: i0, template: "<div\n *ngIf=\"useBackgroundImage\"\n class=\"image-wrapper\"\n [ngClass]=\"{'circle': circle}\"\n [ngStyle]=\"styles\">\n</div>\n<img\n *ngIf=\"url && !useBackgroundImage\"\n [src]=\"sanitizedUrl\"\n class=\"image-wrapper\"\n [ngClass]=\"{'circle': circle}\"\n [ngStyle]=\"styles\"\n>\n<div\n *ngIf=\"!url && !useBackgroundImage\"\n class=\"image-wrapper\"\n [ngClass]=\"{'circle': circle}\"\n [ngStyle]=\"styles\"\n>\n", styles: ["::host{margin:0;padding:0}.image-wrapper{margin:0;padding:0;display:block;overflow:hidden;background-position:center;background-repeat:no-repeat;background-color:var(--vui-color-background-darker)}.image-wrapper.circle{border-radius:50%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
489
520
  }
490
521
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ImageComponent, decorators: [{
491
522
  type: Component,
@@ -496,6 +527,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
496
527
  type: Input
497
528
  }], height: [{
498
529
  type: Input
530
+ }], minWidth: [{
531
+ type: Input
532
+ }], minHeight: [{
533
+ type: Input
499
534
  }], circle: [{
500
535
  type: Input
501
536
  }], border: [{
@@ -768,7 +803,7 @@ class IconInputComponent {
768
803
  useExisting: IconInputComponent,
769
804
  multi: true,
770
805
  },
771
- ], ngImport: i0, template: "<vui-view\n class=\"icon-input\"\n flexDirection=\"row\"\n width=\"100%\"\n [relative]=\"true\"\n justifyContent=\"stretch\">\n @if (icon) {\n <vui-view class=\"icon\" alignItems=\"center\" justifyContent=\"center\" height=\"2rem\" width=\"2rem\" padding=\"0.1rem 0 0 0\">\n <vui-icon size=\"button\" [icon]=\"icon\"></vui-icon>\n </vui-view>\n }\n <vui-input class=\"input\" padding=\"0.5rem 0.5rem 0.5rem 1.75rem\" [formControl]=\"control\" type=\"text\"></vui-input>\n</vui-view>\n", styles: [":host{flex:1}.icon-input .icon{top:0;left:0;position:absolute}.icon-input .input{flex:1}.icon-input .input ::ng-deep input{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IconComponent, selector: "vui-icon", inputs: ["size", "icon", "color", "rotation", "disabled", "actionable"] }, { kind: "component", type: InputComponent, selector: "vui-input", inputs: ["textSize", "flex", "margin", "padding", "align", "width", "maxWidth", "minWidth", "type"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }] }); }
806
+ ], ngImport: i0, template: "<vui-view\n class=\"icon-input\"\n flexDirection=\"row\"\n width=\"100%\"\n [relative]=\"true\"\n justifyContent=\"stretch\">\n @if (icon) {\n <vui-view class=\"icon\" alignItems=\"center\" justifyContent=\"center\" height=\"2rem\" width=\"2rem\" padding=\"0.1rem 0 0 0\">\n <vui-icon size=\"button\" color=\"var(--vui-color-primary)\" [icon]=\"icon\"></vui-icon>\n </vui-view>\n }\n <vui-input class=\"input\" padding=\"0.5rem 0.5rem 0.5rem 1.75rem\" [formControl]=\"control\" type=\"text\"></vui-input>\n</vui-view>\n", styles: [":host{flex:1}.icon-input .icon{top:0;left:0;position:absolute}.icon-input .input{flex:1}.icon-input .input ::ng-deep input{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IconComponent, selector: "vui-icon", inputs: ["size", "icon", "color", "rotation", "disabled", "scaleMask", "actionable"] }, { kind: "component", type: InputComponent, selector: "vui-input", inputs: ["textSize", "flex", "margin", "padding", "align", "width", "maxWidth", "minWidth", "type"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }] }); }
772
807
  }
773
808
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: IconInputComponent, decorators: [{
774
809
  type: Component,
@@ -778,7 +813,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
778
813
  useExisting: IconInputComponent,
779
814
  multi: true,
780
815
  },
781
- ], standalone: false, template: "<vui-view\n class=\"icon-input\"\n flexDirection=\"row\"\n width=\"100%\"\n [relative]=\"true\"\n justifyContent=\"stretch\">\n @if (icon) {\n <vui-view class=\"icon\" alignItems=\"center\" justifyContent=\"center\" height=\"2rem\" width=\"2rem\" padding=\"0.1rem 0 0 0\">\n <vui-icon size=\"button\" [icon]=\"icon\"></vui-icon>\n </vui-view>\n }\n <vui-input class=\"input\" padding=\"0.5rem 0.5rem 0.5rem 1.75rem\" [formControl]=\"control\" type=\"text\"></vui-input>\n</vui-view>\n", styles: [":host{flex:1}.icon-input .icon{top:0;left:0;position:absolute}.icon-input .input{flex:1}.icon-input .input ::ng-deep input{flex:1}\n"] }]
816
+ ], standalone: false, template: "<vui-view\n class=\"icon-input\"\n flexDirection=\"row\"\n width=\"100%\"\n [relative]=\"true\"\n justifyContent=\"stretch\">\n @if (icon) {\n <vui-view class=\"icon\" alignItems=\"center\" justifyContent=\"center\" height=\"2rem\" width=\"2rem\" padding=\"0.1rem 0 0 0\">\n <vui-icon size=\"button\" color=\"var(--vui-color-primary)\" [icon]=\"icon\"></vui-icon>\n </vui-view>\n }\n <vui-input class=\"input\" padding=\"0.5rem 0.5rem 0.5rem 1.75rem\" [formControl]=\"control\" type=\"text\"></vui-input>\n</vui-view>\n", styles: [":host{flex:1}.icon-input .icon{top:0;left:0;position:absolute}.icon-input .input{flex:1}.icon-input .input ::ng-deep input{flex:1}\n"] }]
782
817
  }], ctorParameters: () => [], propDecorators: { icon: [{
783
818
  type: Input
784
819
  }] } });
@@ -959,7 +994,7 @@ class ModifyOptionsComponent {
959
994
  this.copied.emit();
960
995
  }
961
996
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ModifyOptionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
962
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: ModifyOptionsComponent, isStandalone: false, selector: "vui-modify-options", inputs: { isInline: "isInline", hasMove: "hasMove", hasEdit: "hasEdit", hasCopy: "hasCopy", hasRemove: "hasRemove" }, outputs: { edited: "edited", removed: "removed", copied: "copied", moved: "moved" }, ngImport: i0, template: "<vui-view [flexDirection]=\"isInline ? 'row' : 'column'\" class=\"options\" rowGap=\"0.5rem\" columnGap=\"0.5rem\" padding=\"0.25rem 0.5rem\" alignItems=\"stretch\">\n @if (hasMove) {\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\" justifyContent=\"flex-end\">\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onMove($event, -1)\" icon=\"up\"></vui-icon>\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onMove($event, 1)\" icon=\"down\"></vui-icon>\n </vui-view>\n }\n @if (hasEdit || hasCopy || hasRemove) {\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\">\n @if (hasEdit) {\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onEdit($event)\" icon=\"edit\"></vui-icon>\n }\n @if (hasCopy) {\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onCopy($event)\" icon=\"copy\"></vui-icon>\n }\n @if (hasRemove) {\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onRemove($event)\" icon=\"remove\"></vui-icon>\n }\n </vui-view>\n }\n</vui-view>\n", dependencies: [{ kind: "component", type: IconComponent, selector: "vui-icon", inputs: ["size", "icon", "color", "rotation", "disabled", "actionable"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }] }); }
997
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: ModifyOptionsComponent, isStandalone: false, selector: "vui-modify-options", inputs: { isInline: "isInline", hasMove: "hasMove", hasEdit: "hasEdit", hasCopy: "hasCopy", hasRemove: "hasRemove" }, outputs: { edited: "edited", removed: "removed", copied: "copied", moved: "moved" }, ngImport: i0, template: "<vui-view [flexDirection]=\"isInline ? 'row' : 'column'\" class=\"options\" rowGap=\"0.5rem\" columnGap=\"0.5rem\" padding=\"0.25rem 0.5rem\" alignItems=\"stretch\">\n @if (hasMove) {\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\" justifyContent=\"flex-end\">\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onMove($event, -1)\" icon=\"up\"></vui-icon>\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onMove($event, 1)\" icon=\"down\"></vui-icon>\n </vui-view>\n }\n @if (hasEdit || hasCopy || hasRemove) {\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\">\n @if (hasEdit) {\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onEdit($event)\" icon=\"edit\"></vui-icon>\n }\n @if (hasCopy) {\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onCopy($event)\" icon=\"copy\"></vui-icon>\n }\n @if (hasRemove) {\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onRemove($event)\" icon=\"remove\"></vui-icon>\n }\n </vui-view>\n }\n</vui-view>\n", dependencies: [{ kind: "component", type: IconComponent, selector: "vui-icon", inputs: ["size", "icon", "color", "rotation", "disabled", "scaleMask", "actionable"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }] }); }
963
998
  }
964
999
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ModifyOptionsComponent, decorators: [{
965
1000
  type: Component,
@@ -1025,7 +1060,7 @@ class ImageURLInputComponent {
1025
1060
  useExisting: ImageURLInputComponent,
1026
1061
  multi: true,
1027
1062
  },
1028
- ], ngImport: i0, template: "<vui-view class=\"image-input-wrapper\" alignItems=\"stretch\">\n <vui-view class=\"preview\" [minHeight]=\"height\" [relative]=\"true\" alignItems=\"stretch\" overflow=\"hidden\">\n @if (value) {\n <vui-image\n [url]=\"value\"\n [width]=\"width\"\n [height]=\"height\"\n backgroundSize=\"cover\">\n </vui-image>\n }\n </vui-view>\n <vui-input flex=\"1\" [formControl]=\"control\"></vui-input>\n</vui-view>\n", styles: [".preview ::ng-deep .view{border-radius:var(--vui-variable-radius) var(--vui-variable-radius) 0 0;border-width:var(--vui-variable-border) var(--vui-variable-border) 0 var(--vui-variable-border);background-color:var(--vui-color-background)}.preview ::ng-deep .view .image-wrapper{background-color:var(--vui-color-background-darker)}vui-input ::ng-deep .input{padding:var(--vui-variable-padding-s) var(--vui-variable-padding);border-radius:0 0 var(--vui-variable-radius) var(--vui-variable-radius)}vui-image ::ng-deep img{width:auto;border-radius:var(--vui-variable-radius) var(--vui-variable-radius) 0 0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ImageComponent, selector: "vui-image", inputs: ["url", "width", "height", "circle", "border", "borderRadius", "backgroundSize", "useBackgroundImage"] }, { kind: "component", type: InputComponent, selector: "vui-input", inputs: ["textSize", "flex", "margin", "padding", "align", "width", "maxWidth", "minWidth", "type"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }] }); }
1063
+ ], ngImport: i0, template: "<vui-view class=\"image-input-wrapper\" alignItems=\"stretch\">\n <vui-view class=\"preview\" [minHeight]=\"height\" [relative]=\"true\" alignItems=\"stretch\" overflow=\"hidden\">\n @if (value) {\n <vui-image\n [url]=\"value\"\n [width]=\"width\"\n [height]=\"height\"\n backgroundSize=\"cover\">\n </vui-image>\n }\n </vui-view>\n <vui-input flex=\"1\" [formControl]=\"control\"></vui-input>\n</vui-view>\n", styles: [".preview ::ng-deep .view{border-radius:var(--vui-variable-radius) var(--vui-variable-radius) 0 0;border-width:var(--vui-variable-border) var(--vui-variable-border) 0 var(--vui-variable-border);background-color:var(--vui-color-background)}.preview ::ng-deep .view .image-wrapper{background-color:var(--vui-color-background-darker)}vui-input ::ng-deep .input{padding:var(--vui-variable-padding-s) var(--vui-variable-padding);border-radius:0 0 var(--vui-variable-radius) var(--vui-variable-radius)}vui-image ::ng-deep img{width:auto;border-radius:var(--vui-variable-radius) var(--vui-variable-radius) 0 0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ImageComponent, selector: "vui-image", inputs: ["url", "width", "height", "minWidth", "minHeight", "circle", "border", "borderRadius", "backgroundSize", "useBackgroundImage"] }, { kind: "component", type: InputComponent, selector: "vui-input", inputs: ["textSize", "flex", "margin", "padding", "align", "width", "maxWidth", "minWidth", "type"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }] }); }
1029
1064
  }
1030
1065
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ImageURLInputComponent, decorators: [{
1031
1066
  type: Component,
@@ -1100,7 +1135,7 @@ class ImageArrayInputComponent {
1100
1135
  useExisting: ImageArrayInputComponent,
1101
1136
  multi: true,
1102
1137
  },
1103
- ], ngImport: i0, template: "<vui-card cardStyle=\"dark\" class=\"image-array-input\">\n <vui-card class=\"variants-box\">\n <vui-view flexDirection=\"row\" [wrap]=\"true\" [scrollable]=\"true\" justifyContent=\"flex-start\" columnGap=\"0.75rem\" rowGap=\"0.5rem\">\n @for (image of values; track image; let i = $index) {\n <vui-view class=\"variant\">\n <vui-image\n [url]=\"image\"\n [circle]=\"roundEntries\"\n backgroundSize=\"cover\"\n [useBackgroundImage]=\"true\"\n width=\"50px\"\n height=\"50px\">\n </vui-image>\n <div (click)=\"onRemove(i)\" class=\"icon-float\">\n <vui-icon icon=\"remove\"></vui-icon>\n </div>\n </vui-view>\n }\n </vui-view>\n </vui-card>\n <vui-view padding=\"0 0.5rem\" rowGap=\"0.25rem\" alignItems=\"center\">\n <vui-text size=\"medium\">Image URL</vui-text>\n <vui-view flexDirection=\"row\" justifyContent=\"space-between\" columnGap=\"0.25rem\" alignItems=\"center\">\n <vui-view alignItems=\"center\">\n <vui-input class=\"add-input\" [formControl]=\"imageUrlControl\"></vui-input>\n </vui-view>\n <vui-button class=\"add-button\" (clicked)=\"onAdd()\">\n <vui-icon size=\"button\" icon=\"add\"></vui-icon>\n <vui-text size=\"large\">Add</vui-text>\n </vui-button>\n </vui-view>\n </vui-view>\n</vui-card>\n", styles: [".image-array-input ::ng-deep .card{background-color:var(--vui-color-background);padding:var(--vui-variable-padding-xs) var(--vui-variable-padding-xs) var(--vui-variable-padding-s) var(--vui-variable-padding-xs)}.image-array-input .variants-box ::ng-deep .card{border:none;max-width:300px;margin-bottom:.5rem;min-height:3.2rem;padding:.5rem}.image-array-input .variants-box .variant{position:relative}.image-array-input .variants-box .variant .icon-float{cursor:pointer;position:absolute;width:50px;height:50px;top:0;left:0;z-index:10;opacity:0;display:flex;align-items:center;justify-content:center;background-color:#0000004d;transition:opacity var(--vui-variable-transition-length) ease}.image-array-input .variants-box .variant:hover .icon-float{opacity:1}.image-array-input .add-input ::ng-deep .input{border-radius:var(--vui-variable-radius-s) 0 0 var(--vui-variable-radius-s)}.image-array-input .add-button ::ng-deep .button{border-radius:0 var(--vui-variable-radius-s) var(--vui-variable-radius-s) 0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ButtonComponent, selector: "vui-button", inputs: ["lean", "centered", "disabled"], outputs: ["clicked"] }, { kind: "component", type: TextComponent, selector: "vui-text", inputs: ["size", "color", "align", "weight", "padding"] }, { kind: "component", type: ImageComponent, selector: "vui-image", inputs: ["url", "width", "height", "circle", "border", "borderRadius", "backgroundSize", "useBackgroundImage"] }, { kind: "component", type: IconComponent, selector: "vui-icon", inputs: ["size", "icon", "color", "rotation", "disabled", "actionable"] }, { kind: "component", type: InputComponent, selector: "vui-input", inputs: ["textSize", "flex", "margin", "padding", "align", "width", "maxWidth", "minWidth", "type"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }, { kind: "component", type: CardComponent, selector: "vui-card", inputs: ["hasTabs", "hasBorder", "hasOverflow", "cardStyle"] }] }); }
1138
+ ], ngImport: i0, template: "<vui-card cardStyle=\"dark\" class=\"image-array-input\">\n <vui-card class=\"variants-box\">\n <vui-view flexDirection=\"row\" [wrap]=\"true\" [scrollable]=\"true\" justifyContent=\"flex-start\" columnGap=\"0.75rem\" rowGap=\"0.5rem\">\n @for (image of values; track image; let i = $index) {\n <vui-view class=\"variant\">\n <vui-image\n [url]=\"image\"\n [circle]=\"roundEntries\"\n backgroundSize=\"cover\"\n [useBackgroundImage]=\"true\"\n width=\"50px\"\n height=\"50px\">\n </vui-image>\n <div (click)=\"onRemove(i)\" class=\"icon-float\">\n <vui-icon icon=\"remove\"></vui-icon>\n </div>\n </vui-view>\n }\n </vui-view>\n </vui-card>\n <vui-view padding=\"0 0.5rem\" rowGap=\"0.25rem\" alignItems=\"center\">\n <vui-text size=\"small\">Image URL</vui-text>\n <vui-view flexDirection=\"row\" justifyContent=\"space-between\" columnGap=\"0.25rem\" alignItems=\"center\">\n <vui-view alignItems=\"center\">\n <vui-input class=\"add-input\" [formControl]=\"imageUrlControl\"></vui-input>\n </vui-view>\n <vui-button class=\"add-button\" (clicked)=\"onAdd()\">\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\" alignItems=\"center\">\n <vui-icon size=\"button\" icon=\"add\"></vui-icon>\n <vui-text size=\"large\">Add</vui-text>\n </vui-view>\n </vui-button>\n </vui-view>\n </vui-view>\n</vui-card>\n", styles: [".image-array-input ::ng-deep .card{background-color:var(--vui-color-background);padding:var(--vui-variable-padding-xs) var(--vui-variable-padding-xs) var(--vui-variable-padding-s) var(--vui-variable-padding-xs)}.image-array-input .variants-box ::ng-deep .card{border:none;max-width:300px;min-height:3.2rem;padding:.5rem}.image-array-input .variants-box .variant{position:relative;border-radius:50%;overflow:hidden}.image-array-input .variants-box .variant .icon-float{cursor:pointer;position:absolute;width:50px;height:50px;top:0;left:0;z-index:10;opacity:0;display:flex;align-items:center;justify-content:center;background-color:#0000004d;transition:opacity var(--vui-variable-transition-length) ease}.image-array-input .variants-box .variant:hover .icon-float{opacity:1}.image-array-input .add-input ::ng-deep .input{border-radius:var(--vui-variable-radius-s) 0 0 var(--vui-variable-radius-s)}.image-array-input .add-button ::ng-deep .button{border-radius:0 var(--vui-variable-radius-s) var(--vui-variable-radius-s) 0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ButtonComponent, selector: "vui-button", inputs: ["lean", "centered", "disabled"], outputs: ["clicked"] }, { kind: "component", type: TextComponent, selector: "vui-text", inputs: ["size", "color", "align", "weight", "padding"] }, { kind: "component", type: ImageComponent, selector: "vui-image", inputs: ["url", "width", "height", "minWidth", "minHeight", "circle", "border", "borderRadius", "backgroundSize", "useBackgroundImage"] }, { kind: "component", type: IconComponent, selector: "vui-icon", inputs: ["size", "icon", "color", "rotation", "disabled", "scaleMask", "actionable"] }, { kind: "component", type: InputComponent, selector: "vui-input", inputs: ["textSize", "flex", "margin", "padding", "align", "width", "maxWidth", "minWidth", "type"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }, { kind: "component", type: CardComponent, selector: "vui-card", inputs: ["hasTabs", "hasBorder", "hasOverflow", "cardStyle"] }] }); }
1104
1139
  }
1105
1140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ImageArrayInputComponent, decorators: [{
1106
1141
  type: Component,
@@ -1110,7 +1145,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
1110
1145
  useExisting: ImageArrayInputComponent,
1111
1146
  multi: true,
1112
1147
  },
1113
- ], standalone: false, template: "<vui-card cardStyle=\"dark\" class=\"image-array-input\">\n <vui-card class=\"variants-box\">\n <vui-view flexDirection=\"row\" [wrap]=\"true\" [scrollable]=\"true\" justifyContent=\"flex-start\" columnGap=\"0.75rem\" rowGap=\"0.5rem\">\n @for (image of values; track image; let i = $index) {\n <vui-view class=\"variant\">\n <vui-image\n [url]=\"image\"\n [circle]=\"roundEntries\"\n backgroundSize=\"cover\"\n [useBackgroundImage]=\"true\"\n width=\"50px\"\n height=\"50px\">\n </vui-image>\n <div (click)=\"onRemove(i)\" class=\"icon-float\">\n <vui-icon icon=\"remove\"></vui-icon>\n </div>\n </vui-view>\n }\n </vui-view>\n </vui-card>\n <vui-view padding=\"0 0.5rem\" rowGap=\"0.25rem\" alignItems=\"center\">\n <vui-text size=\"medium\">Image URL</vui-text>\n <vui-view flexDirection=\"row\" justifyContent=\"space-between\" columnGap=\"0.25rem\" alignItems=\"center\">\n <vui-view alignItems=\"center\">\n <vui-input class=\"add-input\" [formControl]=\"imageUrlControl\"></vui-input>\n </vui-view>\n <vui-button class=\"add-button\" (clicked)=\"onAdd()\">\n <vui-icon size=\"button\" icon=\"add\"></vui-icon>\n <vui-text size=\"large\">Add</vui-text>\n </vui-button>\n </vui-view>\n </vui-view>\n</vui-card>\n", styles: [".image-array-input ::ng-deep .card{background-color:var(--vui-color-background);padding:var(--vui-variable-padding-xs) var(--vui-variable-padding-xs) var(--vui-variable-padding-s) var(--vui-variable-padding-xs)}.image-array-input .variants-box ::ng-deep .card{border:none;max-width:300px;margin-bottom:.5rem;min-height:3.2rem;padding:.5rem}.image-array-input .variants-box .variant{position:relative}.image-array-input .variants-box .variant .icon-float{cursor:pointer;position:absolute;width:50px;height:50px;top:0;left:0;z-index:10;opacity:0;display:flex;align-items:center;justify-content:center;background-color:#0000004d;transition:opacity var(--vui-variable-transition-length) ease}.image-array-input .variants-box .variant:hover .icon-float{opacity:1}.image-array-input .add-input ::ng-deep .input{border-radius:var(--vui-variable-radius-s) 0 0 var(--vui-variable-radius-s)}.image-array-input .add-button ::ng-deep .button{border-radius:0 var(--vui-variable-radius-s) var(--vui-variable-radius-s) 0}\n"] }]
1148
+ ], standalone: false, template: "<vui-card cardStyle=\"dark\" class=\"image-array-input\">\n <vui-card class=\"variants-box\">\n <vui-view flexDirection=\"row\" [wrap]=\"true\" [scrollable]=\"true\" justifyContent=\"flex-start\" columnGap=\"0.75rem\" rowGap=\"0.5rem\">\n @for (image of values; track image; let i = $index) {\n <vui-view class=\"variant\">\n <vui-image\n [url]=\"image\"\n [circle]=\"roundEntries\"\n backgroundSize=\"cover\"\n [useBackgroundImage]=\"true\"\n width=\"50px\"\n height=\"50px\">\n </vui-image>\n <div (click)=\"onRemove(i)\" class=\"icon-float\">\n <vui-icon icon=\"remove\"></vui-icon>\n </div>\n </vui-view>\n }\n </vui-view>\n </vui-card>\n <vui-view padding=\"0 0.5rem\" rowGap=\"0.25rem\" alignItems=\"center\">\n <vui-text size=\"small\">Image URL</vui-text>\n <vui-view flexDirection=\"row\" justifyContent=\"space-between\" columnGap=\"0.25rem\" alignItems=\"center\">\n <vui-view alignItems=\"center\">\n <vui-input class=\"add-input\" [formControl]=\"imageUrlControl\"></vui-input>\n </vui-view>\n <vui-button class=\"add-button\" (clicked)=\"onAdd()\">\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\" alignItems=\"center\">\n <vui-icon size=\"button\" icon=\"add\"></vui-icon>\n <vui-text size=\"large\">Add</vui-text>\n </vui-view>\n </vui-button>\n </vui-view>\n </vui-view>\n</vui-card>\n", styles: [".image-array-input ::ng-deep .card{background-color:var(--vui-color-background);padding:var(--vui-variable-padding-xs) var(--vui-variable-padding-xs) var(--vui-variable-padding-s) var(--vui-variable-padding-xs)}.image-array-input .variants-box ::ng-deep .card{border:none;max-width:300px;min-height:3.2rem;padding:.5rem}.image-array-input .variants-box .variant{position:relative;border-radius:50%;overflow:hidden}.image-array-input .variants-box .variant .icon-float{cursor:pointer;position:absolute;width:50px;height:50px;top:0;left:0;z-index:10;opacity:0;display:flex;align-items:center;justify-content:center;background-color:#0000004d;transition:opacity var(--vui-variable-transition-length) ease}.image-array-input .variants-box .variant:hover .icon-float{opacity:1}.image-array-input .add-input ::ng-deep .input{border-radius:var(--vui-variable-radius-s) 0 0 var(--vui-variable-radius-s)}.image-array-input .add-button ::ng-deep .button{border-radius:0 var(--vui-variable-radius-s) var(--vui-variable-radius-s) 0}\n"] }]
1114
1149
  }], ctorParameters: () => [], propDecorators: { roundEntries: [{
1115
1150
  type: Input
1116
1151
  }], changed: [{
@@ -1125,7 +1160,7 @@ class NavigationGroupComponent {
1125
1160
  this.open = !this.open;
1126
1161
  }
1127
1162
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NavigationGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: NavigationGroupComponent, isStandalone: false, selector: "vui-navigation-group", inputs: { name: "name", open: "open" }, ngImport: i0, template: "<vui-view class=\"navigation-group\" alignItems=\"stretch\">\n <vui-view (click)=\"onToggle()\" class=\"navigation-group-header\" flexDirection=\"row\" alignItems=\"stretch\" justifyContent=\"space-between\" padding=\"0 1rem\">\n <vui-view alignItems=\"flex-start\" justifyContent=\"center\" height=\"3rem\">\n <vui-text size=\"xlarge\">{{ name }}</vui-text>\n </vui-view>\n <vui-icon icon=\"caret\" [rotation]=\"open ? 0 : 180\"></vui-icon>\n </vui-view>\n @if (open) {\n <div class=\"navigation-group-content\">\n <ng-content></ng-content>\n </div>\n }\n</vui-view>\n", styles: [".navigation-group{cursor:pointer}.navigation-group .navigation-group-header{-webkit-user-select:none;user-select:none}.navigation-group .navigation-group-header ::ng-deep .text{color:var(--vui-color-text-darker);transition:color var(--vui-variable-transition-length) ease}.navigation-group .navigation-group-header ::ng-deep .icon{background-color:var(--vui-color-text-darker);transition:background var(--vui-variable-transition-length) ease}.navigation-group .navigation-group-header ::ng-deep:hover .text{color:var(--vui-color-primary-lighter)}.navigation-group .navigation-group-header ::ng-deep:hover .icon{background-color:var(--vui-color-primary-lighter)}.navigation-group .navigation-group-content{border-radius:0 var(--vui-variable-radius-l) 0 0;background:var(--vui-color-background-darker)}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "vui-text", inputs: ["size", "color", "align", "weight", "padding"] }, { kind: "component", type: IconComponent, selector: "vui-icon", inputs: ["size", "icon", "color", "rotation", "disabled", "actionable"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }] }); }
1163
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: NavigationGroupComponent, isStandalone: false, selector: "vui-navigation-group", inputs: { name: "name", open: "open" }, ngImport: i0, template: "<vui-view class=\"navigation-group\" alignItems=\"stretch\">\n <vui-view (click)=\"onToggle()\" class=\"navigation-group-header\" flexDirection=\"row\" alignItems=\"stretch\" justifyContent=\"space-between\" padding=\"0 1rem\">\n <vui-view alignItems=\"flex-start\" justifyContent=\"center\" height=\"3rem\">\n <vui-text size=\"xlarge\">{{ name }}</vui-text>\n </vui-view>\n <vui-icon icon=\"caret\" [rotation]=\"open ? 0 : 180\"></vui-icon>\n </vui-view>\n @if (open) {\n <div class=\"navigation-group-content\">\n <ng-content></ng-content>\n </div>\n }\n</vui-view>\n", styles: [".navigation-group{cursor:pointer}.navigation-group .navigation-group-header{-webkit-user-select:none;user-select:none}.navigation-group .navigation-group-header ::ng-deep .text{color:var(--vui-color-text-darker);transition:color var(--vui-variable-transition-length) ease}.navigation-group .navigation-group-header ::ng-deep .icon{background-color:var(--vui-color-text-darker);transition:background var(--vui-variable-transition-length) ease}.navigation-group .navigation-group-header ::ng-deep:hover .text{color:var(--vui-color-primary-lighter)}.navigation-group .navigation-group-header ::ng-deep:hover .icon{background-color:var(--vui-color-primary-lighter)}.navigation-group .navigation-group-content{border-radius:0 var(--vui-variable-radius-l) 0 0;background:var(--vui-color-background-darker)}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "vui-text", inputs: ["size", "color", "align", "weight", "padding"] }, { kind: "component", type: IconComponent, selector: "vui-icon", inputs: ["size", "icon", "color", "rotation", "disabled", "scaleMask", "actionable"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }] }); }
1129
1164
  }
1130
1165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NavigationGroupComponent, decorators: [{
1131
1166
  type: Component,
@@ -1231,7 +1266,7 @@ class ListInputComponent {
1231
1266
  useExisting: ListInputComponent,
1232
1267
  multi: true,
1233
1268
  },
1234
- ], ngImport: i0, template: "<vui-card class=\"list-input\" cardStyle=\"dark\">\n <vui-view\n [flex]=\"flex\"\n [width]=\"width\"\n [height]=\"height\"\n [margin]=\"margin\"\n [padding]=\"padding\"\n [minWidth]=\"minWidth\"\n [maxWidth]=\"maxWidth\"\n [scrollable]=\"true\"\n rowGap=\"0\"\n alignItems=\"stretch\"\n justifyContent=\"flex-start\">\n @if (localValue.length === 0) {\n <vui-text>{{ emptyText }}</vui-text> \n }\n @for (entry of localValue; track identify($index, entry); let i = $index) {\n <vui-view\n class=\"entry\"\n width=\"100%\"\n padding=\"0.1rem 0\"\n minHeight=\"1.5rem\"\n columnGap=\"0.5rem\"\n alignItems=\"center\"\n flexDirection=\"row\"\n (click)=\"onSelectOption(entry)\"\n [ngClass]=\"{ 'active': selectedValue?.id === entry.id }\">\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\" alignItems=\"center\">\n @if (showImages && !!entry.image) {\n <vui-image [url]=\"entry.image\" [height]=\"imageHeight\" [circle]=\"roundImage\"></vui-image>\n } @else if (showIcons && !!entry.icon) {\n <vui-icon [icon]=\"entry.icon\" size=\"medium\"></vui-icon>\n }\n <vui-text [size]=\"textSize\">{{ entry.text }}</vui-text>\n </vui-view>\n @if (hasControls) {\n <vui-modify-options\n [isInline]=\"true\"\n [hasMove]=\"hasMove\"\n [hasEdit]=\"hasEdit\"\n [hasCopy]=\"hasCopy\"\n [hasRemove]=\"hasRemove\"\n (moved)=\"onMove(i, $event)\"\n (removed)=\"onRemove(entry)\">\n </vui-modify-options>\n }\n </vui-view>\n }\n </vui-view>\n</vui-card>\n", styles: [".list-input .entry{padding:0 .5rem 0 1rem}.list-input .entry.active{background-color:var(--vui-color-primary-darker)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TextComponent, selector: "vui-text", inputs: ["size", "color", "align", "weight", "padding"] }, { kind: "component", type: ImageComponent, selector: "vui-image", inputs: ["url", "width", "height", "circle", "border", "borderRadius", "backgroundSize", "useBackgroundImage"] }, { kind: "component", type: IconComponent, selector: "vui-icon", inputs: ["size", "icon", "color", "rotation", "disabled", "actionable"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }, { kind: "component", type: CardComponent, selector: "vui-card", inputs: ["hasTabs", "hasBorder", "hasOverflow", "cardStyle"] }, { kind: "component", type: ModifyOptionsComponent, selector: "vui-modify-options", inputs: ["isInline", "hasMove", "hasEdit", "hasCopy", "hasRemove"], outputs: ["edited", "removed", "copied", "moved"] }] }); }
1269
+ ], ngImport: i0, template: "<vui-card class=\"list-input\" cardStyle=\"dark\">\n <vui-view\n [flex]=\"flex\"\n [width]=\"width\"\n [height]=\"height\"\n [margin]=\"margin\"\n [padding]=\"padding\"\n [minWidth]=\"minWidth\"\n [maxWidth]=\"maxWidth\"\n [scrollable]=\"true\"\n rowGap=\"0\"\n alignItems=\"stretch\"\n justifyContent=\"flex-start\">\n @if (localValue.length === 0) {\n <vui-view padding=\"0.5rem 1rem\">\n <vui-text>{{ emptyText }}</vui-text> \n </vui-view>\n }\n @for (entry of localValue; track identify($index, entry); let i = $index) {\n <vui-view\n class=\"entry\"\n width=\"100%\"\n padding=\"0.1rem 0\"\n minHeight=\"1.5rem\"\n columnGap=\"0.5rem\"\n alignItems=\"center\"\n flexDirection=\"row\"\n (click)=\"onSelectOption(entry)\"\n [ngClass]=\"{ 'active': selectedValue?.id === entry.id }\">\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\" alignItems=\"center\">\n @if (showImages && !!entry.image) {\n <vui-image [url]=\"entry.image\" [height]=\"imageHeight\" [circle]=\"roundImage\"></vui-image>\n } @else if (showIcons && !!entry.icon) {\n <vui-icon [icon]=\"entry.icon\" size=\"medium\"></vui-icon>\n }\n <vui-text [size]=\"textSize\">{{ entry.text }}</vui-text>\n </vui-view>\n @if (hasControls) {\n <vui-modify-options\n [isInline]=\"true\"\n [hasMove]=\"hasMove\"\n [hasEdit]=\"hasEdit\"\n [hasCopy]=\"hasCopy\"\n [hasRemove]=\"hasRemove\"\n (moved)=\"onMove(i, $event)\"\n (removed)=\"onRemove(entry)\">\n </vui-modify-options>\n }\n </vui-view>\n }\n </vui-view>\n</vui-card>\n", styles: [".list-input{overflow:hidden}.list-input .entry{padding:0 .5rem}.list-input .entry.active{background-color:var(--vui-color-primary-darker)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TextComponent, selector: "vui-text", inputs: ["size", "color", "align", "weight", "padding"] }, { kind: "component", type: ImageComponent, selector: "vui-image", inputs: ["url", "width", "height", "minWidth", "minHeight", "circle", "border", "borderRadius", "backgroundSize", "useBackgroundImage"] }, { kind: "component", type: IconComponent, selector: "vui-icon", inputs: ["size", "icon", "color", "rotation", "disabled", "scaleMask", "actionable"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }, { kind: "component", type: CardComponent, selector: "vui-card", inputs: ["hasTabs", "hasBorder", "hasOverflow", "cardStyle"] }, { kind: "component", type: ModifyOptionsComponent, selector: "vui-modify-options", inputs: ["isInline", "hasMove", "hasEdit", "hasCopy", "hasRemove"], outputs: ["edited", "removed", "copied", "moved"] }] }); }
1235
1270
  }
1236
1271
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ListInputComponent, decorators: [{
1237
1272
  type: Component,
@@ -1241,7 +1276,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
1241
1276
  useExisting: ListInputComponent,
1242
1277
  multi: true,
1243
1278
  },
1244
- ], standalone: false, template: "<vui-card class=\"list-input\" cardStyle=\"dark\">\n <vui-view\n [flex]=\"flex\"\n [width]=\"width\"\n [height]=\"height\"\n [margin]=\"margin\"\n [padding]=\"padding\"\n [minWidth]=\"minWidth\"\n [maxWidth]=\"maxWidth\"\n [scrollable]=\"true\"\n rowGap=\"0\"\n alignItems=\"stretch\"\n justifyContent=\"flex-start\">\n @if (localValue.length === 0) {\n <vui-text>{{ emptyText }}</vui-text> \n }\n @for (entry of localValue; track identify($index, entry); let i = $index) {\n <vui-view\n class=\"entry\"\n width=\"100%\"\n padding=\"0.1rem 0\"\n minHeight=\"1.5rem\"\n columnGap=\"0.5rem\"\n alignItems=\"center\"\n flexDirection=\"row\"\n (click)=\"onSelectOption(entry)\"\n [ngClass]=\"{ 'active': selectedValue?.id === entry.id }\">\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\" alignItems=\"center\">\n @if (showImages && !!entry.image) {\n <vui-image [url]=\"entry.image\" [height]=\"imageHeight\" [circle]=\"roundImage\"></vui-image>\n } @else if (showIcons && !!entry.icon) {\n <vui-icon [icon]=\"entry.icon\" size=\"medium\"></vui-icon>\n }\n <vui-text [size]=\"textSize\">{{ entry.text }}</vui-text>\n </vui-view>\n @if (hasControls) {\n <vui-modify-options\n [isInline]=\"true\"\n [hasMove]=\"hasMove\"\n [hasEdit]=\"hasEdit\"\n [hasCopy]=\"hasCopy\"\n [hasRemove]=\"hasRemove\"\n (moved)=\"onMove(i, $event)\"\n (removed)=\"onRemove(entry)\">\n </vui-modify-options>\n }\n </vui-view>\n }\n </vui-view>\n</vui-card>\n", styles: [".list-input .entry{padding:0 .5rem 0 1rem}.list-input .entry.active{background-color:var(--vui-color-primary-darker)}\n"] }]
1279
+ ], standalone: false, template: "<vui-card class=\"list-input\" cardStyle=\"dark\">\n <vui-view\n [flex]=\"flex\"\n [width]=\"width\"\n [height]=\"height\"\n [margin]=\"margin\"\n [padding]=\"padding\"\n [minWidth]=\"minWidth\"\n [maxWidth]=\"maxWidth\"\n [scrollable]=\"true\"\n rowGap=\"0\"\n alignItems=\"stretch\"\n justifyContent=\"flex-start\">\n @if (localValue.length === 0) {\n <vui-view padding=\"0.5rem 1rem\">\n <vui-text>{{ emptyText }}</vui-text> \n </vui-view>\n }\n @for (entry of localValue; track identify($index, entry); let i = $index) {\n <vui-view\n class=\"entry\"\n width=\"100%\"\n padding=\"0.1rem 0\"\n minHeight=\"1.5rem\"\n columnGap=\"0.5rem\"\n alignItems=\"center\"\n flexDirection=\"row\"\n (click)=\"onSelectOption(entry)\"\n [ngClass]=\"{ 'active': selectedValue?.id === entry.id }\">\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\" alignItems=\"center\">\n @if (showImages && !!entry.image) {\n <vui-image [url]=\"entry.image\" [height]=\"imageHeight\" [circle]=\"roundImage\"></vui-image>\n } @else if (showIcons && !!entry.icon) {\n <vui-icon [icon]=\"entry.icon\" size=\"medium\"></vui-icon>\n }\n <vui-text [size]=\"textSize\">{{ entry.text }}</vui-text>\n </vui-view>\n @if (hasControls) {\n <vui-modify-options\n [isInline]=\"true\"\n [hasMove]=\"hasMove\"\n [hasEdit]=\"hasEdit\"\n [hasCopy]=\"hasCopy\"\n [hasRemove]=\"hasRemove\"\n (moved)=\"onMove(i, $event)\"\n (removed)=\"onRemove(entry)\">\n </vui-modify-options>\n }\n </vui-view>\n }\n </vui-view>\n</vui-card>\n", styles: [".list-input{overflow:hidden}.list-input .entry{padding:0 .5rem}.list-input .entry.active{background-color:var(--vui-color-primary-darker)}\n"] }]
1245
1280
  }], ctorParameters: () => [], propDecorators: { hasControls: [{
1246
1281
  type: Input
1247
1282
  }], hasMove: [{
@@ -1342,7 +1377,7 @@ class SelectInputComponent {
1342
1377
  useExisting: SelectInputComponent,
1343
1378
  multi: true,
1344
1379
  },
1345
- ], ngImport: i0, template: "<vui-view [relative]=\"true\" class=\"select\" [width]=\"width\" [maxWidth]=\"maxWidth\">\n <div\n class=\"current-value\"\n (click)=\"onToggleDropdown()\"\n [ngClass]=\"textSize + (dropdownVisible ? ' open' : '')\"\n [ngStyle]=\"{\n 'min-width': minWidth,\n 'margin': margin,\n 'padding': padding\n }\">\n <span>{{ selectedValue?.text || emptyText }}</span>\n <vui-icon\n class=\"icon\"\n icon=\"caret\"\n size=\"medium\"\n color=\"var(--vui-color-primary)\"\n [rotation]=\"180\"\n [ngClass]=\"textSize\">\n </vui-icon>\n </div>\n @if (dropdownVisible) {\n <div class=\"dropdown\" [ngClass]=\"textSize\">\n <vui-view rowGap=\"0.1rem\" justifyContent=\"stretch\" alignItems=\"stretch\">\n <div\n (click)=\"onToggleDropdown(false)\"\n class=\"option unselectable\"\n [ngClass]=\"textSize\">\n {{ selectedValue?.text || emptyText }}\n <vui-icon\n icon=\"caret\"\n size=\"medium\"\n class=\"icon open\"\n color=\"var(--vui-color-primary-lighter)\"\n [ngClass]=\"textSize\">\n </vui-icon>\n </div>\n @for (option of options; track identify($index, option)) {\n <option\n (click)=\"onSelectOption(option)\"\n [ngClass]=\"textSize\"\n class=\"option\">\n {{ option.text }}\n </option>\n }\n </vui-view>\n </div>\n }\n</vui-view>\n", styles: [".current-value{cursor:pointer;outline:none;width:100%;box-sizing:border-box;color:var(--vui-color-primary);font-size:var(--vui-variable-font-size-m);line-height:var(--vui-variable-font-size-m);border-radius:var(--vui-variable-radius-s);background-color:var(--vui-color-background-darker);border:var(--vui-variable-border) solid var(--vui-color-background-darker)}.current-value.open{border:var(--vui-variable-border) solid var(--vui-color-primary);border-radius:var(--vui-variable-radius-s) var(--vui-variable-radius-s) 0 0}.current-value.xsmall,.current-value.xs{font-size:var(--vui-variable-font-size-xs);line-height:var(--vui-variable-font-size-xs)}.current-value.small,.current-value.s{font-size:var(--vui-variable-font-size-s);line-height:var(--vui-variable-font-size-s)}.current-value.large,.current-value.l{font-size:var(--vui-variable-font-size-l);line-height:var(--vui-variable-font-size-l)}.current-value.xlarge,.current-value.xl{font-size:var(--vui-variable-font-size-xl);line-height:var(--vui-variable-font-size-xl)}.icon{position:absolute;top:calc(var(--vui-variable-font-size-m) * .3);right:.5rem;z-index:10}.icon.xsmall,.icon.xs{top:calc(var(--vui-variable-font-size-xs) * .3)}.icon.small,.icon.s{top:calc(var(--vui-variable-font-size-s) * .3)}.icon.large,.icon.l{top:calc(var(--vui-variable-font-size-l) * .3)}.icon.xlarge,.icon.xl{top:calc(var(--vui-variable-font-size-xl) * .3)}.icon.open{right:calc(.5rem - var(--vui-variable-border));top:calc(var(--vui-variable-font-size-m) * .4)}.icon.open.xsmall,.icon.open.xs{top:calc(var(--vui-variable-font-size-xs) * .4)}.icon.open.small,.icon.open.s{top:calc(var(--vui-variable-font-size-s) * .4)}.icon.open.large,.icon.open.l{top:calc(var(--vui-variable-font-size-l) * .4)}.icon.open.xlarge,.icon.open.xl{top:calc(var(--vui-variable-font-size-xl) * .4)}.dropdown{cursor:pointer;position:absolute;overflow-x:hidden;width:100%;z-index:20;outline:none;padding:0;box-sizing:border-box;color:var(--vui-color-primary);font-size:var(--vui-variable-font-size-m);background-color:var(--vui-color-background-darker);border:var(--vui-variable-border) solid var(--vui-color-primary);border-radius:var(--vui-variable-radius-s);box-shadow:var(--vui-color-box-shadow);top:0}.dropdown .option{flex:1;padding:var(--vui-variable-padding-xs) var(--vui-variable-padding-s);word-break:break-all}.dropdown .option.unselectable{position:relative;filter:brightness(110%);padding-top:var(--vui-variable-padding-xs);color:var(--vui-color-primary-lighter)}.dropdown .option.unselectable:hover{background-color:transparent;color:var(--vui-color-primary-lighter)}.dropdown .option:hover{color:var(--vui-color-highlight);background-color:var(--vui-color-primary)}.dropdown .option.xsmall,.dropdown .option.xs{font-size:var(--vui-variable-font-size-xs)}.dropdown .option.small,.dropdown .option.s{font-size:var(--vui-variable-font-size-s)}.dropdown .option.large,.dropdown .option.l{font-size:var(--vui-variable-font-size-l)}.dropdown .option.xlarge,.dropdown .option.xl{font-size:var(--vui-variable-font-size-xl)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: IconComponent, selector: "vui-icon", inputs: ["size", "icon", "color", "rotation", "disabled", "actionable"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }] }); }
1380
+ ], ngImport: i0, template: "<vui-view [relative]=\"true\" class=\"select\" [width]=\"width\" [maxWidth]=\"maxWidth\">\n <div\n class=\"current-value\"\n (click)=\"onToggleDropdown()\"\n [ngClass]=\"textSize + (dropdownVisible ? ' open' : '')\"\n [ngStyle]=\"{\n 'min-width': minWidth,\n 'margin': margin,\n 'padding': padding\n }\">\n <span>{{ selectedValue?.text || emptyText }}</span>\n <vui-icon\n class=\"icon\"\n icon=\"caret\"\n size=\"medium\"\n color=\"var(--vui-color-primary)\"\n [rotation]=\"180\"\n [ngClass]=\"textSize\">\n </vui-icon>\n </div>\n @if (dropdownVisible) {\n <div class=\"dropdown\" [ngClass]=\"textSize\">\n <vui-view rowGap=\"0.1rem\" justifyContent=\"stretch\" alignItems=\"stretch\">\n <div\n (click)=\"onToggleDropdown(false)\"\n class=\"option unselectable\"\n [ngClass]=\"textSize\">\n {{ selectedValue?.text || emptyText }}\n <vui-icon\n icon=\"caret\"\n size=\"medium\"\n class=\"icon open\"\n color=\"var(--vui-color-primary-lighter)\"\n [ngClass]=\"textSize\">\n </vui-icon>\n </div>\n @for (option of options; track identify($index, option)) {\n <option\n (click)=\"onSelectOption(option)\"\n [ngClass]=\"textSize\"\n class=\"option\">\n {{ option.text }}\n </option>\n }\n </vui-view>\n </div>\n }\n</vui-view>\n", styles: [".current-value{cursor:pointer;outline:none;width:100%;box-sizing:border-box;color:var(--vui-color-primary);font-size:var(--vui-variable-font-size-m);line-height:var(--vui-variable-font-size-m);border-radius:var(--vui-variable-radius-s);background-color:var(--vui-color-background-darker);border:var(--vui-variable-border) solid var(--vui-color-background-darker)}.current-value.open{border:var(--vui-variable-border) solid var(--vui-color-primary);border-radius:var(--vui-variable-radius-s) var(--vui-variable-radius-s) 0 0}.current-value.xsmall,.current-value.xs{font-size:var(--vui-variable-font-size-xs);line-height:var(--vui-variable-font-size-xs)}.current-value.small,.current-value.s{font-size:var(--vui-variable-font-size-s);line-height:var(--vui-variable-font-size-s)}.current-value.large,.current-value.l{font-size:var(--vui-variable-font-size-l);line-height:var(--vui-variable-font-size-l)}.current-value.xlarge,.current-value.xl{font-size:var(--vui-variable-font-size-xl);line-height:var(--vui-variable-font-size-xl)}.icon{position:absolute;top:calc(var(--vui-variable-font-size-m) * .3);right:.5rem;z-index:10}.icon.xsmall,.icon.xs{top:calc(var(--vui-variable-font-size-xs) * .3)}.icon.small,.icon.s{top:calc(var(--vui-variable-font-size-s) * .3)}.icon.large,.icon.l{top:calc(var(--vui-variable-font-size-l) * .3)}.icon.xlarge,.icon.xl{top:calc(var(--vui-variable-font-size-xl) * .3)}.icon.open{right:calc(.5rem - var(--vui-variable-border));top:calc(var(--vui-variable-font-size-m) * .4)}.icon.open.xsmall,.icon.open.xs{top:calc(var(--vui-variable-font-size-xs) * .4)}.icon.open.small,.icon.open.s{top:calc(var(--vui-variable-font-size-s) * .4)}.icon.open.large,.icon.open.l{top:calc(var(--vui-variable-font-size-l) * .4)}.icon.open.xlarge,.icon.open.xl{top:calc(var(--vui-variable-font-size-xl) * .4)}.dropdown{cursor:pointer;position:absolute;overflow-x:hidden;width:100%;z-index:20;outline:none;padding:0;box-sizing:border-box;color:var(--vui-color-primary);font-size:var(--vui-variable-font-size-m);background-color:var(--vui-color-background-darker);border:var(--vui-variable-border) solid var(--vui-color-primary);border-radius:var(--vui-variable-radius-s);box-shadow:var(--vui-color-box-shadow);top:0}.dropdown .option{flex:1;padding:var(--vui-variable-padding-xs) var(--vui-variable-padding-s);word-break:break-all}.dropdown .option.unselectable{position:relative;filter:brightness(110%);padding-top:var(--vui-variable-padding-xs);color:var(--vui-color-primary-lighter)}.dropdown .option.unselectable:hover{background-color:transparent;color:var(--vui-color-primary-lighter)}.dropdown .option:hover{color:var(--vui-color-highlight);background-color:var(--vui-color-primary)}.dropdown .option.xsmall,.dropdown .option.xs{font-size:var(--vui-variable-font-size-xs)}.dropdown .option.small,.dropdown .option.s{font-size:var(--vui-variable-font-size-s)}.dropdown .option.large,.dropdown .option.l{font-size:var(--vui-variable-font-size-l)}.dropdown .option.xlarge,.dropdown .option.xl{font-size:var(--vui-variable-font-size-xl)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: IconComponent, selector: "vui-icon", inputs: ["size", "icon", "color", "rotation", "disabled", "scaleMask", "actionable"] }, { kind: "component", type: ViewComponent, selector: "vui-view", inputs: ["wrap", "relative", "scrollable", "top", "left", "right", "bottom", "flex", "width", "height", "maxWidth", "maxHeight", "minWidth", "minHeight", "overflow", "margin", "padding", "rowGap", "columnGap", "position", "borderRadius", "backgroundColor", "flexDirection", "alignItems", "justifyContent"] }] }); }
1346
1381
  }
1347
1382
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: SelectInputComponent, decorators: [{
1348
1383
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"vynil-ui.mjs","sources":["../../../projects/vynil-ui/src/lib/pipes/initials.pipe.ts","../../../projects/vynil-ui/src/lib/components/basic/text/text.component.ts","../../../projects/vynil-ui/src/lib/components/basic/text/text.component.html","../../../projects/vynil-ui/src/lib/services/theme.service.ts","../../../projects/vynil-ui/src/lib/components/layout/page/page.component.ts","../../../projects/vynil-ui/src/lib/components/layout/page/page.component.html","../../../projects/vynil-ui/src/lib/components/layout/view/view.component.ts","../../../projects/vynil-ui/src/lib/components/layout/view/view.component.html","../../../projects/vynil-ui/src/lib/components/layout/card/card.component.ts","../../../projects/vynil-ui/src/lib/components/layout/card/card.component.html","../../../projects/vynil-ui/src/lib/components/images/icon/icon.component.ts","../../../projects/vynil-ui/src/lib/components/images/icon/icon.component.html","../../../projects/vynil-ui/src/lib/components/inputs/input/input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/input/input.component.html","../../../projects/vynil-ui/src/lib/components/images/image/image.component.ts","../../../projects/vynil-ui/src/lib/components/images/image/image.component.html","../../../projects/vynil-ui/src/lib/components/modals/modal/modal.component.ts","../../../projects/vynil-ui/src/lib/components/modals/modal/modal.component.html","../../../projects/vynil-ui/src/lib/services/routing.service.ts","../../../projects/vynil-ui/src/lib/components/navigation/link/link.component.ts","../../../projects/vynil-ui/src/lib/components/navigation/link/link.component.html","../../../projects/vynil-ui/src/lib/components/basic/button/button.component.ts","../../../projects/vynil-ui/src/lib/components/basic/button/button.component.html","../../../projects/vynil-ui/src/lib/components/modals/dialog/dialog.component.ts","../../../projects/vynil-ui/src/lib/components/modals/dialog/dialog.component.html","../../../projects/vynil-ui/src/lib/components/layout/header/header.component.ts","../../../projects/vynil-ui/src/lib/components/layout/header/header.component.html","../../../projects/vynil-ui/src/lib/components/layout/sidebar/sidebar.component.ts","../../../projects/vynil-ui/src/lib/components/layout/sidebar/sidebar.component.html","../../../projects/vynil-ui/src/lib/components/modals/message/message.component.ts","../../../projects/vynil-ui/src/lib/components/modals/message/message.component.html","../../../projects/vynil-ui/src/lib/components/inputs/icon-input/icon-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/icon-input/icon-input.component.html","../../../projects/vynil-ui/src/lib/components/layout/named-group/named-group.component.ts","../../../projects/vynil-ui/src/lib/components/layout/named-group/named-group.component.html","../../../projects/vynil-ui/src/lib/components/selectors/color-selector/color-selector.component.ts","../../../projects/vynil-ui/src/lib/components/selectors/color-selector/color-selector.component.html","../../../projects/vynil-ui/src/lib/components/inputs/color-input/color-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/color-input/color-input.component.html","../../../projects/vynil-ui/src/lib/components/inputs/toggle-input/toggle-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/toggle-input/toggle-input.component.html","../../../projects/vynil-ui/src/lib/components/utility/modify-options/modify-options.component.ts","../../../projects/vynil-ui/src/lib/components/utility/modify-options/modify-options.component.html","../../../projects/vynil-ui/src/lib/components/inputs/image-url-input/image-url-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/image-url-input/image-url-input.component.html","../../../projects/vynil-ui/src/lib/components/navigation/navigation-link/navigation-link.component.ts","../../../projects/vynil-ui/src/lib/components/navigation/navigation-link/navigation-link.component.html","../../../projects/vynil-ui/src/lib/components/inputs/image-array-input/image-array-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/image-array-input/image-array-input.component.html","../../../projects/vynil-ui/src/lib/components/navigation/navigation-group/navigation-group.component.ts","../../../projects/vynil-ui/src/lib/components/navigation/navigation-group/navigation-group.component.html","../../../projects/vynil-ui/src/lib/components/inputs/list-input/list-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/list-input/list-input.component.html","../../../projects/vynil-ui/src/lib/components/inputs/select-input/select-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/select-input/select-input.component.html","../../../projects/vynil-ui/src/lib/services/download.service.ts","../../../projects/vynil-ui/src/lib/services/utility.service.ts","../../../projects/vynil-ui/src/lib/vynil-ui.module.ts","../../../projects/vynil-ui/src/public-api.ts","../../../projects/vynil-ui/src/vynil-ui.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\nconst PIPE_KEY = 'initials';\nconst UNKNOWN_VALUE = 'N/A';\n\n@Pipe({\n name: PIPE_KEY,\n standalone: false\n})\nexport class InitialsPipe implements PipeTransform {\n transform(value: string): string {\n if (!value) {\n return UNKNOWN_VALUE;\n }\n const nameParts = value.split(' ');\n let initials = nameParts[0].charAt(0);\n if (nameParts.length < 2) {\n return initials.toUpperCase();\n }\n initials += nameParts[nameParts.length - 1].charAt(0);\n return initials.toUpperCase();\n }\n}\n","import { Component, Input } from '@angular/core';\n\nexport enum VynilUITextSize {\n ExtraSmall = 'xsmall',\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n Header3 = 'header3',\n Header2 = 'header2',\n Header1 = 'header1',\n}\n\n@Component({\n selector: 'vui-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n standalone: false\n})\nexport class TextComponent {\n @Input() size?: string;\n @Input() color?: string;\n @Input() align?: string;\n @Input() weight?: string;\n @Input() padding?: string;\n}\n","<div\n class=\"text\"\n [ngClass]=\"size || ''\"\n [ngStyle]=\"{\n 'color': color || 'auto',\n 'padding': padding || '0',\n 'text-align': align || 'left',\n 'font-weight': weight || '400'\n }\">\n <ng-content></ng-content>\n</div>\n","import { BehaviorSubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\nexport interface Theme {\n variables: {\n border: number,\n radius: number;\n padding: number;\n transitionLength: number;\n colorContrastFactor: number,\n iconSizes: number[];\n fontSizes: number[];\n };\n colors: {\n text: string;\n primary: string;\n highlight: string;\n background: string;\n boxShadow: string;\n };\n}\n\nconst UNIT_REM = 'rem';\nconst UNIT_PIXEL = 'px';\nconst UNIT_SECONDS = 's';\nconst UNIT_PERCENTAGE = '%';\nconst ICON_SIZE_NAMES = ['s', 'button', 'm', 'l', 'xl'];\nconst FONT_SIZE_NAMES = ['xs', 's', 'm', 'l', 'xl', 'h3', 'h2', 'h1'];\nconst DEFAULT_THEME: Theme = {\n variables: {\n border: 2,\n radius: 0,\n padding: 1,\n transitionLength: 0.3,\n colorContrastFactor: 10,\n iconSizes: [0.75, 0.9, 1.5, 2.75, 5],\n fontSizes: [10, 12, 16, 20, 24, 42, 64, 92],\n },\n colors: {\n text: '#FFFFFF',\n primary: '#0EA5E9',\n highlight: '#FFFFFF',\n background: '#27272A',\n boxShadow: 'rgba(0, 0, 0, 0.45) 0px 54px 55px, rgba(0, 0, 0, 0.12) 0px -12px 30px, rgba(0, 0, 0, 0.12) 0px 4px 6px, rgba(0, 0, 0, 0.17) 0px 12px 13px, rgba(0, 0, 0, 0.09) 0px -3px 5px',\n },\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n public theme: BehaviorSubject<Theme>;\n\n public constructor() {\n this.theme = new BehaviorSubject<Theme>(DEFAULT_THEME);\n this.updateTheme(DEFAULT_THEME);\n }\n\n public updateTheme(themeChanges: Partial<Theme>): void {\n const root = document.querySelector(':root') as HTMLElement;\n if (root) {\n this.updateElementTheme(root, themeChanges);\n }\n this.theme.next({\n variables: {\n ...this.theme.value.variables,\n ...themeChanges.variables,\n },\n colors: {\n ...this.theme.value.colors,\n ...themeChanges.colors,\n }\n });\n }\n\n public updateElementTheme(element: HTMLElement, themeChanges: Partial<Theme>): void {\n if (element) {\n if (themeChanges.variables) {\n if (themeChanges.variables.border) {\n this.updateVariable(element, 'border', themeChanges.variables.border, UNIT_PIXEL);\n }\n if (themeChanges.variables.radius) {\n this.updateVariable(element, 'radius', themeChanges.variables.radius, UNIT_REM);\n }\n if (themeChanges.variables.padding) {\n this.updateVariable(element, 'padding', themeChanges.variables.padding, UNIT_REM);\n }\n if (themeChanges.variables.transitionLength) {\n this.updateVariable(element, 'transition-length', themeChanges.variables.padding, UNIT_SECONDS, true);\n }\n if (themeChanges.variables.iconSizes) {\n this.updateIconSizes(element, themeChanges.variables.iconSizes);\n }\n if (themeChanges.variables.fontSizes) {\n this.updateFontSizes(element, themeChanges.variables.fontSizes);\n }\n }\n if (themeChanges.colors) {\n const themeColors = themeChanges.colors as { [key: string]: string };\n Object.keys(themeColors)\n .forEach((key: string) => {\n if (key !== 'boxShadow') {\n this.updateColor(element, key, themeColors[key]);\n }\n });\n if (themeChanges.colors.boxShadow) {\n this.updateColor(element, 'box-shadow', themeChanges.colors.boxShadow, true);\n }\n }\n }\n }\n\n private updateVariable(element: HTMLElement, propertyName: string, value: number, unit: string, skipAlts?: boolean): void {\n element.style.setProperty('--vui-variable-' + propertyName, value + unit);\n if (!skipAlts) {\n element.style.setProperty('--vui-variable-' + propertyName + '-xs', (value / 4) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-extra-small', (value / 4) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-s', (value / 2) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-small', (value / 2) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-l', (value * 2) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-large', (value * 2) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-xl', (value * 4) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-extra-large', (value * 4) + unit);\n }\n }\n\n private updateColor(element: HTMLElement, propertyName: string, value: string, skipAlts?: boolean): void {\n element.style.setProperty('--vui-color-' + propertyName, value);\n if (!skipAlts) {\n element.style.setProperty('--vui-color-' + propertyName + '-darker', 'color-mix(in srgb,' + value + ',#000 ' + this.theme.value.variables.colorContrastFactor + UNIT_PERCENTAGE);\n element.style.setProperty('--vui-color-' + propertyName + '-lighter', 'color-mix(in srgb,' + value + ',#FFF ' + this.theme.value.variables.colorContrastFactor + UNIT_PERCENTAGE);\n }\n }\n\n private updateIconSizes(element: HTMLElement, values: number[]): void {\n values.forEach((value: number, index: number) =>\n this.updateVariable(element, 'icon-size-' + ICON_SIZE_NAMES[index], value, UNIT_REM, true));\n }\n\n private updateFontSizes(element: HTMLElement, values: number[]): void {\n values.forEach((value: number, index: number) =>\n this.updateVariable(element, 'font-size-' + FONT_SIZE_NAMES[index], value, UNIT_PIXEL, true));\n }\n}\n","import { Observable } from 'rxjs';\nimport { Component, Input } from '@angular/core';\nimport { Theme, ThemeService } from '../../../services/theme.service';\n\nconst DEFAULT_PADDING = '2rem 3rem';\n\n@Component({\n selector: 'vui-page',\n templateUrl: './page.component.html',\n styleUrls: ['./page.component.scss'],\n standalone: false\n})\nexport class PageComponent {\n @Input() padding: string;\n @Input() background?: string;\n\n public theme: Observable<Theme>;\n\n public constructor(\n private themeService: ThemeService,\n ) {\n this.padding = DEFAULT_PADDING;\n this.theme = this.themeService.theme.asObservable();\n }\n}\n","<div class=\"page\"\n [ngClass]=\"{ 'background': !!background }\"\n [ngStyle]=\"{\n 'padding': padding,\n 'background-image': !!background ? 'url(/assets/' + background + ')' : 'none'\n }\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\nconst VIEW_STYLE_INPUTS = [\n 'top',\n 'left',\n 'right',\n 'bottom',\n 'flex',\n 'width',\n 'height',\n 'maxWidth',\n 'maxHeight',\n 'minWidth',\n 'minHeight',\n 'overflow',\n 'margin',\n 'padding',\n 'rowGap',\n 'columnGap',\n 'position',\n 'borderRadius',\n 'backgroundColor',\n 'flexDirection',\n 'alignItems',\n 'justifyContent',\n]\n\n@Component({\n selector: 'vui-view',\n templateUrl: './view.component.html',\n styleUrls: ['./view.component.scss'],\n standalone: false\n})\nexport class ViewComponent {\n @Input() wrap: boolean;\n @Input() relative: boolean;\n @Input() scrollable: boolean;\n @Input() top?: string;\n @Input() left?: string;\n @Input() right?: string;\n @Input() bottom?: string;\n @Input() flex?: string;\n @Input() width?: string;\n @Input() height?: string;\n @Input() maxWidth?: string;\n @Input() maxHeight?: string;\n @Input() minWidth?: string;\n @Input() minHeight?: string;\n @Input() overflow?: string;\n @Input() margin?: string;\n @Input() padding?: string;\n @Input() rowGap?: string;\n @Input() columnGap?: string;\n @Input() position?: string;\n @Input() borderRadius?: string;\n @Input() backgroundColor?: string;\n @Input() flexDirection?: string;\n @Input() alignItems?: string;\n @Input() justifyContent?: string;\n\n public constructor() {\n this.wrap = false;\n this.relative = false;\n this.scrollable = false;\n }\n\n public get styleObject(): { [key: string]: string } {\n let styleObject: { [key: string]: string } = {};\n const componentObject = this as unknown as { [key: string]: string };\n VIEW_STYLE_INPUTS.forEach((propertyName: string) => {\n if (componentObject[propertyName]) {\n styleObject[propertyName] = componentObject[propertyName];\n }\n });\n return styleObject;\n }\n}\n","<div\n class=\"view\"\n [ngClass]=\"{\n 'wrap': wrap,\n 'relative': relative,\n 'scrollable': scrollable}\"\n [ngStyle]=\"styleObject\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\nexport type VynilUICardStyle = 'default' | 'dark' | 'active' | 'background';\n\n@Component({\n selector: 'vui-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n standalone: false\n})\nexport class CardComponent {\n @Input() hasTabs?: boolean;\n @Input() hasBorder?: boolean;\n @Input() hasOverflow: boolean;\n @Input() cardStyle: VynilUICardStyle;\n\n constructor() {\n this.hasOverflow = true;\n this.cardStyle = 'default';\n }\n}\n","<div\n class=\"card\"\n [ngClass]=\"{\n 'dark': cardStyle === 'dark',\n 'active': cardStyle === 'active',\n 'background': cardStyle === 'background',\n 'border': hasBorder,\n 'has-tabs': hasTabs\n }\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\nexport enum VynilUIIconSize {\n Small = 'small',\n Button = 'button',\n Medium = 'medium',\n Large = 'large',\n}\n\n@Component({\n selector: 'vui-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n standalone: false\n})\nexport class IconComponent {\n @Input() size: string;\n @Input() icon?: string;\n @Input() color?: string;\n @Input() rotation?: number;\n @Input() disabled?: boolean;\n @Input() actionable?: boolean;\n public IconSizeEnum = VynilUIIconSize;\n\n constructor() {\n this.size = VynilUIIconSize.Medium;\n }\n\n public get styleObject(): { [key: string]: string } {\n let styleObject: { [key: string]: string } = {};\n if (this.color) {\n styleObject['backgroundColor'] = this.color;\n }\n if (this.rotation) {\n styleObject['transform'] = 'rotate(' + this.rotation + 'deg)';\n }\n styleObject['mask'] = 'url(./assets/icons/' + (this.icon || 'cog') + '.svg) no-repeat center',\n styleObject['-webkit-mask'] = styleObject['mask'];\n return styleObject;\n }\n}\n","<div\n class=\"icon\"\n [ngClass]=\"size + ' ' + (actionable ? 'actionable' : '') + ' ' + (disabled ? 'disabled' : '')\"\n [ngStyle]=\"styleObject\">\n</div>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport {\n Input,\n Component,\n} from '@angular/core';\nimport {\n FormControl,\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n} from '@angular/forms';\nimport { VynilUITextSize } from '../../basic/text/text.component';\n\nconst INPUT_STYLE_INPUTS = [\n 'flex',\n 'margin',\n 'padding',\n 'width',\n 'maxWidth',\n 'minWidth',\n 'textAlign',\n];\n\nexport type InputType = 'text' | 'number' | 'password';\n\n@Component({\n selector: 'vui-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: InputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class InputComponent implements ControlValueAccessor {\n @Input() textSize: string;\n @Input() flex?: string;\n @Input() margin?: string;\n @Input() padding?: string;\n @Input() align?: string;\n @Input() width?: string;\n @Input() maxWidth?: string;\n @Input() minWidth?: string;\n @Input() type: InputType;\n\n public control: FormControl<string>;\n\n public onTouch: (value: string) => void;\n public onChange: (value: string) => void;\n\n set value(value: string){\n if (value !== this.control.value\n && !(this.type === 'number' && isNaN(+value))) {\n this.control.setValue(value);\n }\n this.onChange(value);\n this.onTouch(value);\n }\n\n constructor() {\n this.type = 'text';\n this.textSize = VynilUITextSize.Medium;\n this.control = new FormControl<string>('', { nonNullable: true });\n this.control.valueChanges.subscribe((value) => {\n if (this.type === 'number') {\n // TODO: Find a proper fix for this one, perhaps separate number input\n value = parseFloat(value) as unknown as string;\n }\n this.writeValue(value);\n });\n this.onTouch = () => {};\n this.onChange = () => {};\n }\n\n public writeValue(value: string): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: string) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: string) => void): void {\n this.onTouch = onTouched;\n }\n\n public get styleObject(): { [key: string]: string } {\n let styleObject: { [key: string]: string } = {};\n const componentObject = this as unknown as { [key: string]: string };\n INPUT_STYLE_INPUTS.forEach((propertyName: string) => {\n if (componentObject[propertyName]) {\n styleObject[propertyName] = componentObject[propertyName];\n }\n });\n return styleObject;\n }\n}\n","<input\n class=\"input\"\n [type]=\"type\"\n [formControl]=\"control\"\n [ngClass]=\"textSize\"\n [ngStyle]=\"styleObject\"\n/>\n","import { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { Component, Input, SecurityContext } from '@angular/core';\n\nconst DEFAULT_DIMENSION = 'auto';\n\ninterface IStyleObject {\n [key: string]: string | null\n}\n\n@Component({\n selector: 'vui-image',\n templateUrl: './image.component.html',\n styleUrls: ['./image.component.scss'],\n standalone: false\n})\nexport class ImageComponent {\n @Input() url?: string;\n @Input() width?: string;\n @Input() height?: string;\n @Input() circle?: boolean;\n @Input() border?: string;\n @Input() borderRadius?: string;\n @Input() backgroundSize?: string;\n @Input() useBackgroundImage?: boolean;\n\n public get sanitizedUrl(): SafeUrl | undefined {\n return this.url\n && this.domSanitizer.bypassSecurityTrustUrl(this.url)\n || undefined;\n }\n\n public get styles(): IStyleObject {\n let styles: IStyleObject = {\n 'width': this.width || DEFAULT_DIMENSION,\n 'height': this.height || DEFAULT_DIMENSION,\n 'min-width': this.width || DEFAULT_DIMENSION,\n 'min-height': this.height || DEFAULT_DIMENSION,\n };\n if (this.useBackgroundImage && this.url) {\n styles = {\n ...styles,\n 'background-image': this.domSanitizer.sanitize(SecurityContext.STYLE, 'url(' + this.url + ')'),\n 'background-size': this.backgroundSize || 'cover'\n }\n }\n if (this.border !== undefined) {\n styles['border'] = this.border;\n }\n if (this.borderRadius !== undefined) {\n styles['border-radius'] = this.borderRadius;\n }\n return styles;\n }\n\n public constructor(\n private domSanitizer: DomSanitizer,\n ) {}\n}\n","<div\n *ngIf=\"useBackgroundImage\"\n class=\"image-wrapper\"\n [ngClass]=\"{'circle': circle}\"\n [ngStyle]=\"styles\">\n</div>\n<img\n *ngIf=\"url && !useBackgroundImage\"\n [src]=\"sanitizedUrl\"\n class=\"image-wrapper\"\n [ngClass]=\"{'circle': circle}\"\n [ngStyle]=\"styles\"\n>\n<div\n *ngIf=\"!url && !useBackgroundImage\"\n class=\"image-wrapper\"\n [ngClass]=\"{'circle': circle}\"\n [ngStyle]=\"styles\"\n>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'vui-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n standalone: false\n})\nexport class ModalComponent {\n @Input() visible: boolean;\n @Output() closed: EventEmitter<void>;\n\n public constructor() {\n this.visible = false;\n this.closed = new EventEmitter();\n }\n\n public onCurtainClick(): void {\n this.closed.emit();\n }\n\n public onContentClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n}\n","@if (visible) {\n <div class=\"curtain\" (click)=\"onCurtainClick()\">\n <div (click)=\"onContentClick($event)\" class=\"content\">\n <ng-content></ng-content>\n </div>\n </div>\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { Params, Router, ActivatedRoute } from '@angular/router';\n\nexport type ParamsData = { [key: string]: string };\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RoutingService {\n public queryParams: BehaviorSubject<ParamsData>;\n\n public get activeRoute(): string {\n return this.router.url;\n }\n\n constructor(\n private router: Router,\n private location: Location,\n private activatedRoute: ActivatedRoute,\n ) {\n this.queryParams = new BehaviorSubject<ParamsData>({});\n this.activatedRoute.queryParams.subscribe((queryParams: Params) => {\n this.queryParams.next(queryParams);\n });\n }\n\n public navigate(route: string, queryParams?: ParamsData) {\n this.navigateWithQueryParams(route, queryParams || {});\n }\n\n public navigateInNewTab(route: string) {\n const url = this.router.serializeUrl(\n this.router.createUrlTree([route])\n );\n window.open(url, '_blank');\n }\n\n public navigateWithQueryParams(\n route: string | string[],\n queryParams: ParamsData,\n merge?: boolean,\n ) {\n const routeInfo = typeof route === 'string' ? [route] : route;\n this.router.navigate(routeInfo, {\n queryParams: {\n ...queryParams,\n },\n queryParamsHandling: merge ? 'merge' : '',\n });\n }\n\n public navigateBack() {\n this.location.back();\n }\n}\n","import { Input, Component } from '@angular/core';\nimport { RoutingService } from '../../../services/routing.service';\n\n@Component({\n selector: 'vui-link',\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.scss'],\n standalone: false\n})\nexport class LinkComponent {\n @Input() path?: string;\n\n public constructor(\n private routingService: RoutingService,\n ) {}\n\n public onNavigate(): void {\n if (this.path) {\n this.routingService.navigate(this.path);\n }\n }\n}\n","<div class=\"link\" (click)=\"onNavigate()\">\n <ng-content></ng-content>\n</div>\n","import {\n Input,\n Output,\n Component,\n EventEmitter,\n} from '@angular/core';\n\n@Component({\n selector: 'vui-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n standalone: false\n})\nexport class ButtonComponent {\n @Input() lean?: boolean;\n @Input() centered?: boolean;\n @Input() disabled?: boolean;\n @Output() clicked: EventEmitter<void>;\n\n public constructor() {\n this.clicked = new EventEmitter<void>();\n }\n\n public onClick(): void {\n if (!this.disabled) {\n this.clicked.emit();\n }\n }\n}\n","<div\n class=\"button\"\n [ngClass]=\"{\n 'lean': lean,\n 'disabled': disabled,\n 'centered': centered\n }\"\n (click)=\"onClick()\">\n <ng-content></ng-content>\n</div>\n","import {\n Input,\n Output,\n Component,\n EventEmitter,\n} from '@angular/core';\n\nconst DEFAULT_OPTION_1 = 'Yes';\nconst DEFAULT_OPTION_2 = 'No';\n\n@Component({\n selector: 'vui-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n standalone: false\n})\nexport class DialogComponent {\n @Input() text: string;\n @Input() visible: boolean;\n @Input() option1Text: string;\n @Input() option2Text: string;\n @Input() closeOnCurtain: boolean;\n @Output() closed: EventEmitter<void>;\n @Output() option1Selected: EventEmitter<void>;\n @Output() option2Selected: EventEmitter<void>;\n\n public constructor() {\n this.visible = false;\n this.closeOnCurtain = false;\n this.text = '';\n this.option1Text = DEFAULT_OPTION_1;\n this.option2Text = DEFAULT_OPTION_2;\n this.closed = new EventEmitter<void>();\n this.option1Selected = new EventEmitter<void>();\n this.option2Selected = new EventEmitter<void>();\n }\n\n public onClosed(): void {\n if (this.closeOnCurtain) {\n this.closed.emit();\n }\n }\n\n public onOptionSelect(option: number): void {\n if (option === 1) {\n this.option1Selected.emit();\n } else if (option === 2) {\n this.option2Selected.emit();\n }\n }\n}\n","<vui-modal [visible]=\"visible\" (closed)=\"onClosed()\">\n <vui-card>\n <vui-view padding=\"1rem 0.75rem\" class=\"dialog-wrapper\" alignItems=\"center\">\n <vui-text padding=\"0.5rem 0.5rem 1rem 0.5rem\" size=\"large\" align=\"center\">{{ text }}</vui-text>\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\">\n <vui-button (clicked)=\"onOptionSelect(1)\">{{ option1Text }}</vui-button>\n <vui-button (clicked)=\"onOptionSelect(2)\">{{ option2Text }}</vui-button>\n </vui-view>\n </vui-view>\n </vui-card>\n</vui-modal>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vui-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n standalone: false\n})\nexport class HeaderComponent {\n @Input() height: string;\n\n public constructor() {\n this.height = '3rem';\n }\n}\n","<vui-view\n width=\"100vw\"\n [height]=\"height\"\n margin=\"0\"\n flexDirection=\"row\"\n alignItems=\"center\"\n padding=\"0 1rem\">\n <ng-content></ng-content>\n</vui-view>\n","import { Observable } from 'rxjs';\nimport { Component, Input } from '@angular/core';\nimport { Theme, ThemeService } from '../../../services/theme.service';\n\n@Component({\n selector: 'vui-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n standalone: false\n})\nexport class SidebarComponent {\n @Input() width: string;\n @Input() headerHeight: string;\n\n public theme: Observable<Theme>;\n\n public constructor(\n private themeService: ThemeService,\n ) {\n this.width = '15rem';\n this.headerHeight = '0px';\n this.theme = this.themeService.theme.asObservable();\n }\n}\n","<vui-view\n [width]=\"width\"\n [scrollable]=\"true\"\n alignItems=\"stretch\"\n justifyContent=\"flex-start\"\n [minHeight]=\"'calc(100vh - ' + headerHeight + ')'\"\n [backgroundColor]=\"'var(--vui-color-background-lighter)'\">\n <ng-content></ng-content>\n</vui-view>\n","import {\n Input,\n Output,\n Component,\n EventEmitter,\n} from '@angular/core';\n\nconst DEFAULT_CONFIRM = 'OK';\n\n@Component({\n selector: 'vui-message',\n templateUrl: './message.component.html',\n styleUrls: ['./message.component.scss'],\n standalone: false\n})\nexport class MessageComponent {\n @Input() text: string;\n @Input() visible: boolean;\n @Input() confirmText: string;\n @Input() closeOnCurtain: boolean;\n @Output() closed: EventEmitter<void>;\n\n public constructor() {\n this.visible = false;\n this.closeOnCurtain = false;\n this.text = '';\n this.confirmText = DEFAULT_CONFIRM;\n this.closed = new EventEmitter<void>();\n }\n\n public onClosed(): void {\n if (this.closeOnCurtain) {\n this.closed.emit();\n }\n }\n\n public onConfirm(): void {\n this.closed.emit();\n }\n}\n","<vui-modal [visible]=\"visible\" (closed)=\"onClosed()\">\n <vui-card>\n <vui-view padding=\"1rem 0.75rem\" class=\"message-wrapper\" alignItems=\"stretch\">\n <vui-text padding=\"0.5rem 0.5rem 1rem 0.5rem\" size=\"large\" align=\"center\">{{ text }}</vui-text>\n <vui-view flexDirection=\"row\" justifyContent=\"center\">\n <vui-button (clicked)=\"onConfirm()\">{{ confirmText }}</vui-button>\n </vui-view>\n </vui-view>\n </vui-card>\n</vui-modal>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { Component, Input } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'vui-icon-input',\n templateUrl: './icon-input.component.html',\n styleUrls: ['./icon-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: IconInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class IconInputComponent implements ControlValueAccessor {\n @Input() icon?: string;\n\n public control: FormControl<string>;\n\n public onTouch: (value: string) => void;\n public onChange: (value: string) => void;\n\n set value(value: string){\n if (value !== this.control.value) {\n this.control.setValue(value); \n }\n this.onChange(value);\n this.onTouch(value);\n }\n\n public constructor() {\n this.control = new FormControl<string>('', { nonNullable: true });\n this.control.valueChanges.subscribe((value) => {\n this.writeValue(value);\n });\n this.onTouch = () => {};\n this.onChange = () => {};\n }\n\n public writeValue(value: string): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: string) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: string) => void): void {\n this.onTouch = onTouched;\n }\n}\n","<vui-view\n class=\"icon-input\"\n flexDirection=\"row\"\n width=\"100%\"\n [relative]=\"true\"\n justifyContent=\"stretch\">\n @if (icon) {\n <vui-view class=\"icon\" alignItems=\"center\" justifyContent=\"center\" height=\"2rem\" width=\"2rem\" padding=\"0.1rem 0 0 0\">\n <vui-icon size=\"button\" [icon]=\"icon\"></vui-icon>\n </vui-view>\n }\n <vui-input class=\"input\" padding=\"0.5rem 0.5rem 0.5rem 1.75rem\" [formControl]=\"control\" type=\"text\"></vui-input>\n</vui-view>\n","import { Component, Input } from '@angular/core';\n\nconst DEFAULT_NAME = 'Group';\n\n@Component({\n selector: 'vui-named-group',\n templateUrl: './named-group.component.html',\n styleUrl: './named-group.component.scss',\n standalone: false,\n})\nexport class NamedGroupComponent {\n @Input() name?: string;\n @Input() textSize?: string;\n\n constructor() {\n this.name = DEFAULT_NAME;\n this.textSize = 'medium';\n }\n}\n","<vui-card class=\"named-group\" cardStyle=\"background\" [hasBorder]=\"true\">\n <vui-view [relative]=\"true\" width=\"100%\">\n <vui-text class=\"title\" [size]=\"textSize\">{{ name }}</vui-text>\n <vui-view class=\"fill content\" padding=\"0.5rem 0 0.25rem 0\" rowGap=\"0.5rem\" width=\"100%\">\n <ng-content></ng-content>\n </vui-view>\n </vui-view>\n</vui-card>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nconst POSSIBLE_COLORS = ['#D22B2B', '#50C878', '#0096FF', '#FCF55F', '#FF5F1F', '#7F00FF', '#9A9A9A', '#000000'];\n\n@Component({\n selector: 'vui-color-selector',\n templateUrl: './color-selector.component.html',\n styleUrls: ['./color-selector.component.scss'],\n standalone: false\n})\nexport class ColorSelectorComponent {\n @Input() selectedColor?: string;\n @Output() selected: EventEmitter<string>;\n\n public availableColors: string[];\n\n constructor() {\n this.availableColors = POSSIBLE_COLORS;\n this.selected = new EventEmitter<string>();\n }\n\n public onSelectColor(color: string): void {\n this.selected.emit(color);\n }\n}\n","<vui-view flexDirection=\"row\" columnGap=\"0.25rem\" alignItems=\"center\">\n @for (color of availableColors; track color) {\n <div\n (click)=\"onSelectColor(color)\"\n [ngStyle]=\"{'backgroundColor': color}\"\n [ngClass]=\"{'selected': selectedColor === color}\"\n class=\"color\">\n </div>\n }\n</vui-view>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { Component, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nconst DEFAULT_VALUE = '#0096FF';\n\n@Component({\n selector: 'vui-color-input',\n templateUrl: './color-input.component.html',\n styleUrls: ['./color-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ColorInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class ColorInputComponent implements ControlValueAccessor {\n @Input() small?: boolean;\n\n public colorValue: string;\n public colorSelectorVisible: boolean; \n\n public onTouch: (value: string) => void;\n public onChange: (value: string) => void;\n\n public set value(value: string){\n if (value !== this.colorValue) {\n this.colorValue = value;\n }\n this.onTouch(value);\n this.onChange(value);\n }\n\n public constructor() {\n this.colorValue = DEFAULT_VALUE;\n this.colorSelectorVisible = false;\n this.onTouch = () => {};\n this.onChange = () => {};\n }\n\n public onColorSelect(value: string): void {\n this.writeValue(value);\n this.toggleSelectorVisible(false);\n }\n\n public writeValue(value: string): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: string) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: string) => void): void {\n this.onTouch = onTouched;\n }\n\n public toggleSelectorVisible(value: boolean): void {\n this.colorSelectorVisible = value;\n }\n}\n","<vui-view [relative]=\"true\">\n <div (click)=\"toggleSelectorVisible(true)\" [ngClass]=\"{'small': small}\" [ngStyle]=\"{'backgroundColor': colorValue}\" class=\"color\"></div>\n <vui-modal [visible]=\"colorSelectorVisible\">\n <div class=\"selector-wrapper\">\n <vui-color-selector\n [selectedColor]=\"colorValue\"\n (selected)=\"onColorSelect($event)\">\n </vui-color-selector>\n </div>\n </vui-modal>\n</vui-view>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport {\n Input,\n Output,\n Component,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n} from '@angular/forms';\n\n@Component({\n selector: 'vui-toggle-input',\n templateUrl: './toggle-input.component.html',\n styleUrls: ['./toggle-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ToggleInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class ToggleInputComponent implements ControlValueAccessor {\n @Input() disabled?: boolean;\n @Output() changed: EventEmitter<boolean>;\n\n public activeValue: boolean;\n\n public onTouch: (value: boolean) => void;\n public onChange: (value: boolean) => void;\n\n set value(value: boolean){\n if (value !== this.activeValue) {\n this.activeValue = value;\n }\n this.onChange(value);\n this.onTouch(value);\n }\n\n constructor() {\n this.activeValue = false;\n this.onTouch = () => {};\n this.onChange = () => {};\n this.changed = new EventEmitter<boolean>();\n }\n\n public onToggle(): void {\n if (this.disabled) {\n return;\n }\n this.activeValue = !this.activeValue;\n this.writeValue(this.activeValue);\n }\n\n public writeValue(value: boolean): void {\n this.value = value;\n this.onChange(value);\n this.changed.emit(value);\n }\n\n public registerOnChange(onChange: (value: boolean) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: boolean) => void): void {\n this.onTouch = onTouched;\n }\n}\n","<div (click)=\"onToggle()\" class=\"toggle\" [ngClass]=\"{'active': activeValue, 'disabled': disabled}\">\n <div class=\"toggle-indicator\"></div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'vui-modify-options',\n templateUrl: './modify-options.component.html',\n standalone: false\n})\nexport class ModifyOptionsComponent {\n @Input() isInline?: boolean;\n @Input() hasMove?: boolean;\n @Input() hasEdit?: boolean;\n @Input() hasCopy?: boolean;\n @Input() hasRemove?: boolean;\n @Output() edited: EventEmitter<void>;\n @Output() removed: EventEmitter<void>;\n @Output() copied: EventEmitter<void>;\n @Output() moved: EventEmitter<number>;\n\n public constructor() {\n this.hasEdit = true;\n this.hasRemove = true;\n this.edited = new EventEmitter<void>();\n this.removed = new EventEmitter<void>();\n this.copied = new EventEmitter<void>();\n this.moved = new EventEmitter<number>();\n }\n\n public onMove(event: MouseEvent, modifier: number): void {\n event.stopPropagation();\n this.moved.emit(modifier);\n }\n\n public onEdit(event: MouseEvent): void {\n event.stopPropagation();\n this.edited.emit();\n }\n\n public onRemove(event: MouseEvent): void {\n event.stopPropagation();\n this.removed.emit();\n }\n\n public onCopy(event: MouseEvent): void {\n event.stopPropagation();\n this.copied.emit();\n }\n}\n","<vui-view [flexDirection]=\"isInline ? 'row' : 'column'\" class=\"options\" rowGap=\"0.5rem\" columnGap=\"0.5rem\" padding=\"0.25rem 0.5rem\" alignItems=\"stretch\">\n @if (hasMove) {\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\" justifyContent=\"flex-end\">\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onMove($event, -1)\" icon=\"up\"></vui-icon>\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onMove($event, 1)\" icon=\"down\"></vui-icon>\n </vui-view>\n }\n @if (hasEdit || hasCopy || hasRemove) {\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\">\n @if (hasEdit) {\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onEdit($event)\" icon=\"edit\"></vui-icon>\n }\n @if (hasCopy) {\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onCopy($event)\" icon=\"copy\"></vui-icon>\n }\n @if (hasRemove) {\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onRemove($event)\" icon=\"remove\"></vui-icon>\n }\n </vui-view>\n }\n</vui-view>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport {\n Input,\n Output,\n Component,\n EventEmitter,\n} from '@angular/core';\nimport {\n FormControl,\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n} from '@angular/forms';\n\nconst DEFAULT_HEIGHT = '10rem';\n\n@Component({\n selector: 'vui-image-url-input',\n templateUrl: './image-url-input.component.html',\n styleUrls: ['./image-url-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ImageURLInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class ImageURLInputComponent implements ControlValueAccessor {\n @Input() width?: string;\n @Input() height?: string;\n @Output() changed: EventEmitter<string>;\n\n public control: FormControl<string | null>;\n\n public onTouch: (value: string) => void;\n public onChange: (value: string) => void;\n\n public get value(): string {\n return this.control.value || '';\n }\n\n public set value(value: string){\n if (value !== this.control.value) {\n this.control.setValue(value);\n }\n this.onChange(value);\n this.onTouch(value);\n }\n\n constructor() {\n this.height = DEFAULT_HEIGHT;\n this.control = new FormControl<string>('');\n this.changed = new EventEmitter<string>();\n this.control.valueChanges.subscribe((value: string | null) => {\n if (value) {\n this.writeValue(value);\n }\n });\n this.onTouch = () => {};\n this.onChange = () => {};\n }\n\n public writeValue(value: string): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: string) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: string) => void): void {\n this.onTouch = onTouched;\n }\n}\n","<vui-view class=\"image-input-wrapper\" alignItems=\"stretch\">\n <vui-view class=\"preview\" [minHeight]=\"height\" [relative]=\"true\" alignItems=\"stretch\" overflow=\"hidden\">\n @if (value) {\n <vui-image\n [url]=\"value\"\n [width]=\"width\"\n [height]=\"height\"\n backgroundSize=\"cover\">\n </vui-image>\n }\n </vui-view>\n <vui-input flex=\"1\" [formControl]=\"control\"></vui-input>\n</vui-view>\n","import {\n Input,\n Component,\n} from '@angular/core';\n\n@Component({\n selector: 'vui-navigation-link',\n templateUrl: './navigation-link.component.html',\n styleUrls: ['./navigation-link.component.scss'],\n standalone: false\n})\nexport class NavigationLinkComponent {\n @Input() path?: string;\n}\n","<vui-link [path]=\"path\" path=\"text\">\n <div class=\"navigation-link\">\n <vui-view\n width=\"100%\"\n height=\"2rem\"\n padding=\"0 1rem\"\n alignItems=\"flex-start\"\n justifyContent=\"center\">\n <vui-text size=\"large\">\n <ng-content></ng-content>\n </vui-text>\n </vui-view>\n </div>\n</vui-link>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\n\n@Component({\n selector: 'vui-image-array-input',\n templateUrl: './image-array-input.component.html',\n styleUrls: ['./image-array-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ImageArrayInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class ImageArrayInputComponent implements ControlValueAccessor {\n @Input() roundEntries: boolean;\n @Output() changed: EventEmitter<string>;\n\n public values: string[];\n public imageUrlControl: FormControl<string | null>;\n\n public onTouch: (value: string[]) => void;\n public onChange: (value: string[]) => void;\n \n set value(value: string[]){\n if (value) {\n this.values = [...value];\n } else {\n this.values = [];\n }\n this.onChange(value || []);\n this.onTouch(value || []);\n }\n\n public constructor() {\n this.values = [];\n this.roundEntries = true;\n this.changed = new EventEmitter<string>();\n this.imageUrlControl = new FormControl<string | null>('', Validators.required);\n this.onTouch = () => {};\n this.onChange = () => {};\n }\n\n public writeValue(value: string[]): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: string[]) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: string[]) => void): void {\n this.onTouch = onTouched;\n }\n\n public onAdd(): void {\n if(this.imageUrlControl.value) {\n this.value = [...this.values, this.imageUrlControl.value];\n this.imageUrlControl.setValue('');\n }\n }\n\n public onRemove(removed: number): void {\n this.value = this.values.filter((_entry: string, index: number) => index !== removed);\n }\n}\n","<vui-card cardStyle=\"dark\" class=\"image-array-input\">\n <vui-card class=\"variants-box\">\n <vui-view flexDirection=\"row\" [wrap]=\"true\" [scrollable]=\"true\" justifyContent=\"flex-start\" columnGap=\"0.75rem\" rowGap=\"0.5rem\">\n @for (image of values; track image; let i = $index) {\n <vui-view class=\"variant\">\n <vui-image\n [url]=\"image\"\n [circle]=\"roundEntries\"\n backgroundSize=\"cover\"\n [useBackgroundImage]=\"true\"\n width=\"50px\"\n height=\"50px\">\n </vui-image>\n <div (click)=\"onRemove(i)\" class=\"icon-float\">\n <vui-icon icon=\"remove\"></vui-icon>\n </div>\n </vui-view>\n }\n </vui-view>\n </vui-card>\n <vui-view padding=\"0 0.5rem\" rowGap=\"0.25rem\" alignItems=\"center\">\n <vui-text size=\"medium\">Image URL</vui-text>\n <vui-view flexDirection=\"row\" justifyContent=\"space-between\" columnGap=\"0.25rem\" alignItems=\"center\">\n <vui-view alignItems=\"center\">\n <vui-input class=\"add-input\" [formControl]=\"imageUrlControl\"></vui-input>\n </vui-view>\n <vui-button class=\"add-button\" (clicked)=\"onAdd()\">\n <vui-icon size=\"button\" icon=\"add\"></vui-icon>\n <vui-text size=\"large\">Add</vui-text>\n </vui-button>\n </vui-view>\n </vui-view>\n</vui-card>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vui-navigation-group',\n templateUrl: './navigation-group.component.html',\n styleUrls: ['./navigation-group.component.scss'],\n standalone: false\n})\nexport class NavigationGroupComponent {\n @Input() name?: string;\n @Input() open?: boolean;\n\n public constructor() {\n this.open = false;\n }\n\n public onToggle(): void {\n this.open = !this.open;\n }\n}\n","<vui-view class=\"navigation-group\" alignItems=\"stretch\">\n <vui-view (click)=\"onToggle()\" class=\"navigation-group-header\" flexDirection=\"row\" alignItems=\"stretch\" justifyContent=\"space-between\" padding=\"0 1rem\">\n <vui-view alignItems=\"flex-start\" justifyContent=\"center\" height=\"3rem\">\n <vui-text size=\"xlarge\">{{ name }}</vui-text>\n </vui-view>\n <vui-icon icon=\"caret\" [rotation]=\"open ? 0 : 180\"></vui-icon>\n </vui-view>\n @if (open) {\n <div class=\"navigation-group-content\">\n <ng-content></ng-content>\n </div>\n }\n</vui-view>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { VynilUITextSize } from '../../basic/text/text.component';\n\nconst DEFAULT_PADDING = '0.5rem 0';\nconst DEFAULT_EMPTY_TEXT = 'None';\n\nexport interface ListInputEntry<T> {\n value: T;\n id: string,\n text: string,\n icon?: string;\n image?: string;\n}\n\n@Component({\n selector: 'vui-list-input',\n templateUrl: './list-input.component.html',\n styleUrls: ['./list-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ListInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class ListInputComponent<T> implements ControlValueAccessor {\n @Input() hasControls: boolean;\n @Input() hasMove: boolean;\n @Input() hasEdit: boolean;\n @Input() hasCopy: boolean;\n @Input() hasRemove: boolean;\n @Input() selectable: boolean;\n @Input() showIcons: boolean;\n @Input() showImages: boolean;\n @Input() roundImage?: boolean;\n @Input() flex: string;\n @Input() width: string;\n @Input() height: string;\n @Input() margin: string;\n @Input() padding: string;\n @Input() maxWidth: string;\n @Input() minWidth: string;\n @Input() textSize: string;\n @Input() imageHeight: string;\n @Input() emptyText: string;\n @Input() selectedValue: ListInputEntry<T> | null;\n\n @Output() selected: EventEmitter<ListInputEntry<T> | null>;\n @Output() edited: EventEmitter<ListInputEntry<T> | null>;\n @Output() copied: EventEmitter<ListInputEntry<T> | null>;\n @Output() removed: EventEmitter<ListInputEntry<T> | null>;\n\n public onTouch: (value: ListInputEntry<T>[]) => void;\n public onChange: (value: ListInputEntry<T>[]) => void;\n\n public localValue: ListInputEntry<T>[];\n\n set value(value: ListInputEntry<T>[]){\n this.localValue = value;\n this.onChange(value);\n this.onTouch(value);\n }\n\n constructor() {\n this.hasControls = false;\n this.hasMove = true;\n this.hasEdit = false;\n this.hasCopy = false;\n this.hasRemove = true;\n this.selectable = true;\n this.showIcons = false;\n this.showImages = false;\n this.flex = 'none';\n this.width = 'auto';\n this.height = '10rem';\n this.margin = '0';\n this.padding = DEFAULT_PADDING;\n this.maxWidth = 'none';\n this.minWidth = '10rem';\n this.textSize = VynilUITextSize.Medium;\n this.imageHeight = '3rem';\n this.emptyText = DEFAULT_EMPTY_TEXT;\n this.selectedValue = null;\n this.localValue = [];\n this.onTouch = () => {};\n this.onChange = () => {};\n this.selected = new EventEmitter<ListInputEntry<T> | null>();\n this.edited = new EventEmitter<ListInputEntry<T> | null>();\n this.copied = new EventEmitter<ListInputEntry<T> | null>();\n this.removed = new EventEmitter<ListInputEntry<T> | null>();\n }\n\n public writeValue(value: ListInputEntry<T>[]): void {\n this.value = value;\n this.localValue = value;\n }\n\n public registerOnChange(onChange: (value: ListInputEntry<T>[]) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: ListInputEntry<T>[]) => void): void {\n this.onTouch = onTouched;\n }\n\n public onMove(index: number, diff: number): void {\n const newValue = this.moveElement(index, index + diff);\n this.writeValue(newValue);\n }\n\n public onEdit(entry: ListInputEntry<T>): void {\n this.edited.emit(entry);\n }\n\n public onCopy(entry: ListInputEntry<T>): void {\n this.copied.emit(entry);\n }\n\n public onRemove(removedEntry: ListInputEntry<T>): void {\n this.removed.emit(removedEntry);\n if (removedEntry.id === this.selectedValue?.id) {\n this.selected.emit(null);\n }\n const newValue = this.localValue.filter((entry: ListInputEntry<T>) => entry.id !== removedEntry.id);\n this.writeValue(newValue);\n }\n\n public onSelectOption(entry: ListInputEntry<T>): void {\n if (!this.selectable) {\n return;\n }\n if (this.selectedValue?.id === entry.id) {\n this.selected.emit(null);\n } else {\n this.selected.emit(entry);\n }\n }\n\n public identify(index: number, entry: ListInputEntry<T>): string {\n return entry.id;\n }\n\n private moveElement(from: number, to: number) {\n if (from < 0 || from >= this.localValue.length\n || to < 0 || to >= this.localValue.length) {\n return this.localValue;\n }\n const element = this.localValue.splice(from, 1)[0];\n this.localValue.splice(to, 0, element);\n return this.localValue;\n }\n}\n","<vui-card class=\"list-input\" cardStyle=\"dark\">\n <vui-view\n [flex]=\"flex\"\n [width]=\"width\"\n [height]=\"height\"\n [margin]=\"margin\"\n [padding]=\"padding\"\n [minWidth]=\"minWidth\"\n [maxWidth]=\"maxWidth\"\n [scrollable]=\"true\"\n rowGap=\"0\"\n alignItems=\"stretch\"\n justifyContent=\"flex-start\">\n @if (localValue.length === 0) {\n <vui-text>{{ emptyText }}</vui-text> \n }\n @for (entry of localValue; track identify($index, entry); let i = $index) {\n <vui-view\n class=\"entry\"\n width=\"100%\"\n padding=\"0.1rem 0\"\n minHeight=\"1.5rem\"\n columnGap=\"0.5rem\"\n alignItems=\"center\"\n flexDirection=\"row\"\n (click)=\"onSelectOption(entry)\"\n [ngClass]=\"{ 'active': selectedValue?.id === entry.id }\">\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\" alignItems=\"center\">\n @if (showImages && !!entry.image) {\n <vui-image [url]=\"entry.image\" [height]=\"imageHeight\" [circle]=\"roundImage\"></vui-image>\n } @else if (showIcons && !!entry.icon) {\n <vui-icon [icon]=\"entry.icon\" size=\"medium\"></vui-icon>\n }\n <vui-text [size]=\"textSize\">{{ entry.text }}</vui-text>\n </vui-view>\n @if (hasControls) {\n <vui-modify-options\n [isInline]=\"true\"\n [hasMove]=\"hasMove\"\n [hasEdit]=\"hasEdit\"\n [hasCopy]=\"hasCopy\"\n [hasRemove]=\"hasRemove\"\n (moved)=\"onMove(i, $event)\"\n (removed)=\"onRemove(entry)\">\n </vui-modify-options>\n }\n </vui-view>\n }\n </vui-view>\n</vui-card>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { Component, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { VynilUITextSize } from '../../basic/text/text.component';\n\nconst DEFAULT_PADDING = '0.5rem';\nconst DEFAULT_EMPTY_TEXT = 'None';\n\nexport interface SelectInputOption<T> {\n text: string,\n value: T,\n}\n\n@Component({\n selector: 'vui-select-input',\n templateUrl: './select-input.component.html',\n styleUrls: ['./select-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SelectInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class SelectInputComponent<T> implements ControlValueAccessor {\n @Input() textSize: string;\n @Input() flex: string;\n @Input() width: string;\n @Input() maxWidth: string;\n @Input() minWidth: string;\n @Input() margin: string;\n @Input() padding: string;\n @Input() emptyText: string;\n @Input() options: SelectInputOption<T>[];\n\n public selectedValue: SelectInputOption<T> | null;\n public dropdownVisible: boolean;\n public onTouch: (value: SelectInputOption<T>) => void;\n public onChange: (value: SelectInputOption<T>) => void;\n\n set value(value: SelectInputOption<T>){\n this.selectedValue = value;\n this.onChange(value);\n this.onTouch(value);\n }\n\n constructor() {\n this.textSize = VynilUITextSize.Medium;\n this.flex = 'none';\n this.width = 'auto';\n this.maxWidth = 'none';\n this.margin = '0';\n this.minWidth = '10rem';\n this.padding = DEFAULT_PADDING;\n this.options = [];\n this.selectedValue = null;\n this.dropdownVisible = false;\n this.emptyText = DEFAULT_EMPTY_TEXT;\n this.onTouch = () => {};\n this.onChange = () => {};\n }\n\n public writeValue(value: SelectInputOption<T>): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: SelectInputOption<T>) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: SelectInputOption<T>) => void): void {\n this.onTouch = onTouched;\n }\n\n public onToggleDropdown(value?: boolean): void {\n this.dropdownVisible = value !== undefined ? value : !this.dropdownVisible;\n }\n\n public onSelectOption(option: SelectInputOption<T>): void {\n this.value = option || null;\n this.onToggleDropdown(false);\n }\n\n public identify(index: number, option: SelectInputOption<T>): T {\n return option.value;\n }\n}\n","<vui-view [relative]=\"true\" class=\"select\" [width]=\"width\" [maxWidth]=\"maxWidth\">\n <div\n class=\"current-value\"\n (click)=\"onToggleDropdown()\"\n [ngClass]=\"textSize + (dropdownVisible ? ' open' : '')\"\n [ngStyle]=\"{\n 'min-width': minWidth,\n 'margin': margin,\n 'padding': padding\n }\">\n <span>{{ selectedValue?.text || emptyText }}</span>\n <vui-icon\n class=\"icon\"\n icon=\"caret\"\n size=\"medium\"\n color=\"var(--vui-color-primary)\"\n [rotation]=\"180\"\n [ngClass]=\"textSize\">\n </vui-icon>\n </div>\n @if (dropdownVisible) {\n <div class=\"dropdown\" [ngClass]=\"textSize\">\n <vui-view rowGap=\"0.1rem\" justifyContent=\"stretch\" alignItems=\"stretch\">\n <div\n (click)=\"onToggleDropdown(false)\"\n class=\"option unselectable\"\n [ngClass]=\"textSize\">\n {{ selectedValue?.text || emptyText }}\n <vui-icon\n icon=\"caret\"\n size=\"medium\"\n class=\"icon open\"\n color=\"var(--vui-color-primary-lighter)\"\n [ngClass]=\"textSize\">\n </vui-icon>\n </div>\n @for (option of options; track identify($index, option)) {\n <option\n (click)=\"onSelectOption(option)\"\n [ngClass]=\"textSize\"\n class=\"option\">\n {{ option.text }}\n </option>\n }\n </vui-view>\n </div>\n }\n</vui-view>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DownloadService {\n public downloadJSON(fileName: string, dataJSON: string): void {\n const anchor = document.createElement('a');\n anchor.href = URL.createObjectURL( new Blob([dataJSON], { type:'text/json' }) );\n anchor.download = fileName + '.json';\n anchor.click();\n }\n}\n","import { Subscription } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UtilityService {\n \n public createId() : string {\n return this.generateFromSequence('xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx');\n }\n\n public createShortId() : string {\n return this.generateFromSequence('xxxxxxxx');\n }\n\n public camelCaseToCapitalCase(entry: string): string {\n const result = entry.replace(/([A-Z])/g, \" $1\");\n return result.charAt(0).toUpperCase() + result.slice(1);\n }\n\n public clearSubscriptions(subscriptions: Subscription[]): Subscription[] {\n subscriptions.forEach((subscription: Subscription) => {\n if (!subscription.closed) {\n subscription.unsubscribe();\n }\n });\n return [];\n }\n\n public findById<T>(id: string, array: { id: string }[]): { id: string } | undefined {\n const items = array.filter((entry: { id: string }) => entry.id === id);\n return items && items.length > 0 ? items[0] : undefined;\n }\n\n public compare<T>(value1: T, value2: T): boolean {\n if (typeof(value1) !== typeof(value2)) return false;\n if (Array.isArray(value1)) {\n return this.compareArrays(value1 as unknown[], value2 as unknown[]);\n } else if (typeof(value1) === 'object') {\n return this.compareObjects(value1 as object, value2 as object);\n } else {\n return value1 === value2;\n }\n }\n\n private compareObjects<T extends object>(object1: T, object2: T): boolean {\n let equal = true;\n const a = object1 as { [key: string]: unknown };\n const b = object2 as { [key: string]: unknown };\n const keys = Object.keys(object1);\n for(const key of keys) {\n if (typeof(a[key]) !== typeof(b[key])) {\n equal = false;\n break;\n }\n equal &&= this.compare(a[key], b[key]);\n }\n return equal;\n }\n\n private compareArrays<T>(array1: T[], array2: T[]): boolean {\n if (array1.length !== array2.length) return false;\n for (const i in array1) {\n if (array1[i] !== array2[i]) return false;\n }\n return true;\n }\n\n private generateFromSequence(sequence: string) : string {\n let dt: number = new Date().getTime();\n const generated: string = sequence.replace(/[xy]/g, (c) =>\n {\n const r: number = (dt + Math.random() * 16) % 16 | 0;\n dt = Math.floor(dt / 16);\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n });\n return generated;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { InitialsPipe } from './pipes/initials.pipe';\n\nimport { TextComponent } from './components/basic/text/text.component';\nimport { PageComponent } from './components/layout/page/page.component';\nimport { ViewComponent } from './components/layout/view/view.component';\nimport { CardComponent } from './components/layout/card/card.component';\nimport { IconComponent } from './components/images/icon/icon.component';\nimport { InputComponent } from './components/inputs/input/input.component';\nimport { ImageComponent } from './components/images/image/image.component';\nimport { ModalComponent } from './components/modals/modal/modal.component';\nimport { LinkComponent } from './components/navigation/link/link.component';\nimport { ButtonComponent } from './components/basic/button/button.component';\nimport { DialogComponent } from './components/modals/dialog/dialog.component';\nimport { HeaderComponent } from './components/layout/header/header.component';\nimport { SidebarComponent } from './components/layout/sidebar/sidebar.component';\nimport { MessageComponent } from './components/modals/message/message.component';\nimport { ListInputComponent } from './components/inputs/list-input/list-input.component';\nimport { IconInputComponent } from './components/inputs/icon-input/icon-input.component';\nimport { ColorInputComponent } from './components/inputs/color-input/color-input.component';\nimport { NamedGroupComponent } from './components/layout/named-group/named-group.component';\nimport { ToggleInputComponent } from './components/inputs/toggle-input/toggle-input.component';\nimport { SelectInputComponent } from './components/inputs/select-input/select-input.component';\nimport { ModifyOptionsComponent } from './components/utility/modify-options/modify-options.component';\nimport { ImageURLInputComponent } from './components/inputs/image-url-input/image-url-input.component';\nimport { ColorSelectorComponent } from './components/selectors/color-selector/color-selector.component';\nimport { NavigationLinkComponent } from './components/navigation/navigation-link/navigation-link.component';\nimport { ImageArrayInputComponent } from './components/inputs/image-array-input/image-array-input.component';\nimport { NavigationGroupComponent } from './components/navigation/navigation-group/navigation-group.component';\n\nconst Components = [\n // Basic\n ButtonComponent,\n TextComponent,\n // Images\n ImageComponent,\n IconComponent,\n // Forms\n InputComponent,\n ListInputComponent,\n IconInputComponent,\n ColorInputComponent,\n SelectInputComponent,\n ToggleInputComponent,\n ImageURLInputComponent,\n ImageArrayInputComponent,\n // Layout\n ViewComponent,\n CardComponent,\n PageComponent,\n HeaderComponent,\n SidebarComponent,\n NamedGroupComponent,\n // Modals\n ModalComponent,\n MessageComponent,\n DialogComponent,\n // Navigation\n LinkComponent,\n NavigationLinkComponent,\n NavigationGroupComponent,\n // Utility\n ModifyOptionsComponent,\n // Selectors\n ColorSelectorComponent,\n];\n\nconst Pipes = [\n InitialsPipe,\n];\n\n@NgModule({\n declarations: [\n ...Pipes,\n ...Components,\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ],\n exports: [\n ...Pipes,\n ...Components,\n ]\n})\nexport class VynilUIModule { }\n","/*\n * Public API Surface of vynil-ui\n */\n\nexport { InitialsPipe } from './lib/pipes/initials.pipe';\n\nexport { TextComponent } from './lib/components/basic/text/text.component';\nexport { PageComponent } from './lib/components/layout/page/page.component';\nexport { ViewComponent } from './lib/components/layout/view/view.component';\nexport { CardComponent } from './lib/components/layout/card/card.component';\nexport { IconComponent } from './lib/components/images/icon/icon.component';\nexport { InputComponent } from './lib/components/inputs/input/input.component';\nexport { ImageComponent } from './lib/components/images/image/image.component';\nexport { ModalComponent } from './lib/components/modals/modal/modal.component';\nexport { LinkComponent } from './lib/components/navigation/link/link.component';\nexport { ButtonComponent } from './lib/components/basic/button/button.component';\nexport { DialogComponent } from './lib/components/modals/dialog/dialog.component';\nexport { HeaderComponent } from './lib/components/layout/header/header.component';\nexport { SidebarComponent } from './lib/components/layout/sidebar/sidebar.component';\nexport { MessageComponent } from './lib/components/modals/message/message.component';\nexport { IconInputComponent } from './lib/components/inputs/icon-input/icon-input.component';\nexport { NamedGroupComponent } from './lib/components/layout/named-group/named-group.component';\nexport { ColorInputComponent } from './lib/components/inputs/color-input/color-input.component';\nexport { ToggleInputComponent } from './lib/components/inputs/toggle-input/toggle-input.component';\nexport { ModifyOptionsComponent } from './lib/components/utility/modify-options/modify-options.component';\nexport { ImageURLInputComponent } from './lib/components/inputs/image-url-input/image-url-input.component';\nexport { ColorSelectorComponent } from './lib/components/selectors/color-selector/color-selector.component';\nexport { NavigationLinkComponent } from './lib/components/navigation/navigation-link/navigation-link.component';\nexport { ImageArrayInputComponent } from './lib/components/inputs/image-array-input/image-array-input.component';\nexport { NavigationGroupComponent } from './lib/components/navigation/navigation-group/navigation-group.component';\nexport { ListInputComponent, ListInputEntry } from './lib/components/inputs/list-input/list-input.component';\nexport { SelectInputComponent, SelectInputOption } from './lib/components/inputs/select-input/select-input.component';\n\nexport * from './lib/services/download.service';\nexport * from './lib/services/routing.service';\nexport * from './lib/services/theme.service';\nexport * from './lib/services/utility.service';\nexport * from './lib/vynil-ui.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_PADDING","i1.ThemeService","i2","i1","i1.RoutingService","i1.ButtonComponent","i2.TextComponent","i3.ViewComponent","i4.CardComponent","i5.ModalComponent","i1.ViewComponent","i2.ViewComponent","i2.IconComponent","i3.InputComponent","i4.ViewComponent","i1.TextComponent","i3.CardComponent","i3.ModalComponent","i4.ColorSelectorComponent","i1.IconComponent","i2.ImageComponent","i3.LinkComponent","i2.ButtonComponent","i3.TextComponent","i4.ImageComponent","i5.IconComponent","i6.InputComponent","i7.ViewComponent","i8.CardComponent","DEFAULT_EMPTY_TEXT","i3.ImageComponent","i4.IconComponent","i5.ViewComponent","i6.CardComponent","i7.ModifyOptionsComponent","i3.IconComponent"],"mappings":"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"}
1
+ {"version":3,"file":"vynil-ui.mjs","sources":["../../../projects/vynil-ui/src/lib/pipes/initials.pipe.ts","../../../projects/vynil-ui/src/lib/components/basic/text/text.component.ts","../../../projects/vynil-ui/src/lib/components/basic/text/text.component.html","../../../projects/vynil-ui/src/lib/services/theme.service.ts","../../../projects/vynil-ui/src/lib/components/layout/page/page.component.ts","../../../projects/vynil-ui/src/lib/components/layout/page/page.component.html","../../../projects/vynil-ui/src/lib/components/layout/view/view.component.ts","../../../projects/vynil-ui/src/lib/components/layout/view/view.component.html","../../../projects/vynil-ui/src/lib/components/layout/card/card.component.ts","../../../projects/vynil-ui/src/lib/components/layout/card/card.component.html","../../../projects/vynil-ui/src/lib/components/images/icon/icon.component.ts","../../../projects/vynil-ui/src/lib/components/images/icon/icon.component.html","../../../projects/vynil-ui/src/lib/components/inputs/input/input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/input/input.component.html","../../../projects/vynil-ui/src/lib/components/images/image/image.component.ts","../../../projects/vynil-ui/src/lib/components/images/image/image.component.html","../../../projects/vynil-ui/src/lib/components/modals/modal/modal.component.ts","../../../projects/vynil-ui/src/lib/components/modals/modal/modal.component.html","../../../projects/vynil-ui/src/lib/services/routing.service.ts","../../../projects/vynil-ui/src/lib/components/navigation/link/link.component.ts","../../../projects/vynil-ui/src/lib/components/navigation/link/link.component.html","../../../projects/vynil-ui/src/lib/components/basic/button/button.component.ts","../../../projects/vynil-ui/src/lib/components/basic/button/button.component.html","../../../projects/vynil-ui/src/lib/components/modals/dialog/dialog.component.ts","../../../projects/vynil-ui/src/lib/components/modals/dialog/dialog.component.html","../../../projects/vynil-ui/src/lib/components/layout/header/header.component.ts","../../../projects/vynil-ui/src/lib/components/layout/header/header.component.html","../../../projects/vynil-ui/src/lib/components/layout/sidebar/sidebar.component.ts","../../../projects/vynil-ui/src/lib/components/layout/sidebar/sidebar.component.html","../../../projects/vynil-ui/src/lib/components/modals/message/message.component.ts","../../../projects/vynil-ui/src/lib/components/modals/message/message.component.html","../../../projects/vynil-ui/src/lib/components/inputs/icon-input/icon-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/icon-input/icon-input.component.html","../../../projects/vynil-ui/src/lib/components/layout/named-group/named-group.component.ts","../../../projects/vynil-ui/src/lib/components/layout/named-group/named-group.component.html","../../../projects/vynil-ui/src/lib/components/selectors/color-selector/color-selector.component.ts","../../../projects/vynil-ui/src/lib/components/selectors/color-selector/color-selector.component.html","../../../projects/vynil-ui/src/lib/components/inputs/color-input/color-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/color-input/color-input.component.html","../../../projects/vynil-ui/src/lib/components/inputs/toggle-input/toggle-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/toggle-input/toggle-input.component.html","../../../projects/vynil-ui/src/lib/components/utility/modify-options/modify-options.component.ts","../../../projects/vynil-ui/src/lib/components/utility/modify-options/modify-options.component.html","../../../projects/vynil-ui/src/lib/components/inputs/image-url-input/image-url-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/image-url-input/image-url-input.component.html","../../../projects/vynil-ui/src/lib/components/navigation/navigation-link/navigation-link.component.ts","../../../projects/vynil-ui/src/lib/components/navigation/navigation-link/navigation-link.component.html","../../../projects/vynil-ui/src/lib/components/inputs/image-array-input/image-array-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/image-array-input/image-array-input.component.html","../../../projects/vynil-ui/src/lib/components/navigation/navigation-group/navigation-group.component.ts","../../../projects/vynil-ui/src/lib/components/navigation/navigation-group/navigation-group.component.html","../../../projects/vynil-ui/src/lib/components/inputs/list-input/list-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/list-input/list-input.component.html","../../../projects/vynil-ui/src/lib/components/inputs/select-input/select-input.component.ts","../../../projects/vynil-ui/src/lib/components/inputs/select-input/select-input.component.html","../../../projects/vynil-ui/src/lib/services/download.service.ts","../../../projects/vynil-ui/src/lib/services/utility.service.ts","../../../projects/vynil-ui/src/lib/vynil-ui.module.ts","../../../projects/vynil-ui/src/public-api.ts","../../../projects/vynil-ui/src/vynil-ui.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\nconst PIPE_KEY = 'initials';\nconst UNKNOWN_VALUE = 'N/A';\n\n@Pipe({\n name: PIPE_KEY,\n standalone: false\n})\nexport class InitialsPipe implements PipeTransform {\n transform(value: string): string {\n if (!value) {\n return UNKNOWN_VALUE;\n }\n const nameParts = value.split(' ');\n let initials = nameParts[0].charAt(0);\n if (nameParts.length < 2) {\n return initials.toUpperCase();\n }\n initials += nameParts[nameParts.length - 1].charAt(0);\n return initials.toUpperCase();\n }\n}\n","import { Component, Input } from '@angular/core';\n\nexport enum VynilUITextSize {\n ExtraSmall = 'xsmall',\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n Header3 = 'header3',\n Header2 = 'header2',\n Header1 = 'header1',\n}\n\n@Component({\n selector: 'vui-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n standalone: false\n})\nexport class TextComponent {\n @Input() size?: string;\n @Input() color?: string;\n @Input() align?: string;\n @Input() weight?: string;\n @Input() padding?: string;\n}\n","<div\n class=\"text\"\n [ngClass]=\"size || ''\"\n [ngStyle]=\"{\n 'color': color || 'auto',\n 'padding': padding || '0',\n 'text-align': align || 'left',\n 'font-weight': weight || '400'\n }\">\n <ng-content></ng-content>\n</div>\n","import { BehaviorSubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\nexport interface Theme {\n variables: {\n border: number,\n radius: number;\n padding: number;\n transitionLength: number;\n iconSizes: number[];\n fontSizes: number[];\n };\n colors: {\n text: string;\n primary: string;\n highlight: string;\n background: string;\n boxShadow: string;\n };\n colorContrastFactor?: {\n factor?: number;\n darkenFactor?: number;\n lightenFactor?: number;\n };\n}\n\nconst UNIT_REM = 'rem';\nconst UNIT_PIXEL = 'px';\nconst UNIT_SECONDS = 's';\nconst UNIT_PERCENTAGE = '%';\nconst ICON_SIZE_NAMES = ['s', 'button', 'm', 'l', 'xl'];\nconst FONT_SIZE_NAMES = ['xs', 's', 'm', 'l', 'xl', 'h3', 'h2', 'h1'];\nconst DEFAULT_FACTOR = 10;\nconst DEFAULT_THEME: Theme = {\n variables: {\n border: 2,\n radius: 0,\n padding: 1,\n transitionLength: 0.3,\n iconSizes: [0.75, 0.9, 1.5, 2.75, 5],\n fontSizes: [10, 12, 16, 20, 24, 42, 64, 92],\n },\n colors: {\n text: '#FFFFFF',\n primary: '#0EA5E9',\n highlight: '#FFFFFF',\n background: '#27272A',\n boxShadow: 'rgba(0, 0, 0, 0.45) 0px 54px 55px, rgba(0, 0, 0, 0.12) 0px -12px 30px, rgba(0, 0, 0, 0.12) 0px 4px 6px, rgba(0, 0, 0, 0.17) 0px 12px 13px, rgba(0, 0, 0, 0.09) 0px -3px 5px',\n },\n colorContrastFactor: {\n factor: 10,\n darkenFactor: 10,\n lightenFactor: 5,\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n public theme: BehaviorSubject<Theme>;\n\n public constructor() {\n this.theme = new BehaviorSubject<Theme>(DEFAULT_THEME);\n this.updateTheme(DEFAULT_THEME);\n }\n\n public updateTheme(themeChanges: Partial<Theme>): void {\n this.theme.next({\n ...this.theme.value,\n ...themeChanges,\n variables: {\n ...this.theme.value.variables,\n ...themeChanges.variables,\n },\n colors: {\n ...this.theme.value.colors,\n ...themeChanges.colors,\n },\n });\n const root = document.querySelector(':root') as HTMLElement;\n if (root) {\n this.updateElementTheme(root, themeChanges);\n }\n }\n\n public updateElementTheme(element: HTMLElement, themeChanges: Partial<Theme>): void {\n if (element) {\n if (themeChanges.variables) {\n if (themeChanges.variables.border) {\n this.updateVariable(element, 'border', themeChanges.variables.border, UNIT_PIXEL);\n }\n if (themeChanges.variables.radius) {\n this.updateVariable(element, 'radius', themeChanges.variables.radius, UNIT_REM);\n }\n if (themeChanges.variables.padding) {\n this.updateVariable(element, 'padding', themeChanges.variables.padding, UNIT_REM);\n }\n if (themeChanges.variables.transitionLength) {\n this.updateVariable(element, 'transition-length', themeChanges.variables.padding, UNIT_SECONDS, true);\n }\n if (themeChanges.variables.iconSizes) {\n this.updateIconSizes(element, themeChanges.variables.iconSizes);\n }\n if (themeChanges.variables.fontSizes) {\n this.updateFontSizes(element, themeChanges.variables.fontSizes);\n }\n }\n if (themeChanges.colors) {\n const themeColors = themeChanges.colors as { [key: string]: string };\n Object.keys(themeColors)\n .forEach((key: string) => {\n if (key !== 'boxShadow') {\n this.updateColor(element, key, themeColors[key]);\n }\n });\n if (themeChanges.colors.boxShadow) {\n this.updateColor(element, 'box-shadow', themeChanges.colors.boxShadow, true);\n }\n }\n }\n }\n\n private updateVariable(element: HTMLElement, propertyName: string, value: number, unit: string, skipAlts?: boolean): void {\n element.style.setProperty('--vui-variable-' + propertyName, value + unit);\n if (!skipAlts) {\n element.style.setProperty('--vui-variable-' + propertyName + '-xs', (value / 4) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-extra-small', (value / 4) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-s', (value / 2) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-small', (value / 2) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-l', (value * 2) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-large', (value * 2) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-xl', (value * 4) + unit);\n element.style.setProperty('--vui-variable-' + propertyName + '-extra-large', (value * 4) + unit);\n } \n }\n\n private updateColor(element: HTMLElement, propertyName: string, value: string, skipAlts?: boolean): void {\n const darkenFactor = this.theme.value.colorContrastFactor?.darkenFactor || this.theme.value.colorContrastFactor?.factor || DEFAULT_FACTOR;\n const lightenFactor = this.theme.value.colorContrastFactor?.lightenFactor || this.theme.value.colorContrastFactor?.factor || DEFAULT_FACTOR;\n element.style.setProperty('--vui-color-' + propertyName, value);\n if (!skipAlts) {\n element.style.setProperty('--vui-color-' + propertyName + '-darker', 'color-mix(in srgb,' + value + ',#000 ' + darkenFactor + UNIT_PERCENTAGE);\n element.style.setProperty('--vui-color-' + propertyName + '-lighter', 'color-mix(in srgb,' + value + ',#FFF ' + lightenFactor+ UNIT_PERCENTAGE);\n element.style.setProperty('--vui-color-' + propertyName + '-darkest', 'color-mix(in srgb,' + value + ',#000 ' + (darkenFactor * 2) + UNIT_PERCENTAGE);\n element.style.setProperty('--vui-color-' + propertyName + '-lightest', 'color-mix(in srgb,' + value + ',#FFF ' + (lightenFactor * 2) + UNIT_PERCENTAGE);\n }\n }\n\n private updateIconSizes(element: HTMLElement, values: number[]): void {\n values.forEach((value: number, index: number) =>\n this.updateVariable(element, 'icon-size-' + ICON_SIZE_NAMES[index], value, UNIT_REM, true));\n }\n\n private updateFontSizes(element: HTMLElement, values: number[]): void {\n values.forEach((value: number, index: number) =>\n this.updateVariable(element, 'font-size-' + FONT_SIZE_NAMES[index], value, UNIT_PIXEL, true));\n }\n}\n","import { Observable } from 'rxjs';\nimport { Component, Input } from '@angular/core';\nimport { Theme, ThemeService } from '../../../services/theme.service';\n\nconst DEFAULT_PADDING = '2rem 3rem';\n\n@Component({\n selector: 'vui-page',\n templateUrl: './page.component.html',\n styleUrls: ['./page.component.scss'],\n standalone: false\n})\nexport class PageComponent {\n @Input() padding: string;\n @Input() background?: string;\n\n public theme: Observable<Theme>;\n\n public constructor(\n private themeService: ThemeService,\n ) {\n this.padding = DEFAULT_PADDING;\n this.theme = this.themeService.theme.asObservable();\n }\n}\n","<div class=\"page\"\n [ngClass]=\"{ 'background': !!background }\"\n [ngStyle]=\"{\n 'padding': padding,\n 'background-image': !!background ? 'url(/assets/' + background + ')' : 'none'\n }\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\nconst VIEW_STYLE_INPUTS = [\n 'top',\n 'left',\n 'right',\n 'bottom',\n 'flex',\n 'width',\n 'height',\n 'maxWidth',\n 'maxHeight',\n 'minWidth',\n 'minHeight',\n 'overflow',\n 'margin',\n 'padding',\n 'rowGap',\n 'columnGap',\n 'position',\n 'borderRadius',\n 'backgroundColor',\n 'flexDirection',\n 'alignItems',\n 'justifyContent',\n]\n\n@Component({\n selector: 'vui-view',\n templateUrl: './view.component.html',\n styleUrls: ['./view.component.scss'],\n standalone: false\n})\nexport class ViewComponent {\n @Input() wrap: boolean;\n @Input() relative: boolean;\n @Input() scrollable: boolean;\n @Input() top?: string;\n @Input() left?: string;\n @Input() right?: string;\n @Input() bottom?: string;\n @Input() flex?: string;\n @Input() width?: string;\n @Input() height?: string;\n @Input() maxWidth?: string;\n @Input() maxHeight?: string;\n @Input() minWidth?: string;\n @Input() minHeight?: string;\n @Input() overflow?: string;\n @Input() margin?: string;\n @Input() padding?: string;\n @Input() rowGap?: string;\n @Input() columnGap?: string;\n @Input() position?: string;\n @Input() borderRadius?: string;\n @Input() backgroundColor?: string;\n @Input() flexDirection?: string;\n @Input() alignItems?: string;\n @Input() justifyContent?: string;\n\n public constructor() {\n this.wrap = false;\n this.relative = false;\n this.scrollable = false;\n }\n\n public get styleObject(): { [key: string]: string } {\n let styleObject: { [key: string]: string } = {};\n const componentObject = this as unknown as { [key: string]: string };\n VIEW_STYLE_INPUTS.forEach((propertyName: string) => {\n if (componentObject[propertyName]) {\n styleObject[propertyName] = componentObject[propertyName];\n }\n });\n return styleObject;\n }\n}\n","<div\n class=\"view\"\n [ngClass]=\"{\n 'wrap': wrap,\n 'relative': relative,\n 'scrollable': scrollable}\"\n [ngStyle]=\"styleObject\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\nexport type VynilUICardStyle = 'default' | 'dark' | 'active' | 'background';\n\n@Component({\n selector: 'vui-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n standalone: false\n})\nexport class CardComponent {\n @Input() hasTabs?: boolean;\n @Input() hasBorder?: boolean;\n @Input() hasOverflow: boolean;\n @Input() cardStyle: VynilUICardStyle;\n\n constructor() {\n this.hasOverflow = true;\n this.cardStyle = 'default';\n }\n}\n","<div\n class=\"card\"\n [ngClass]=\"{\n 'dark': cardStyle === 'dark',\n 'active': cardStyle === 'active',\n 'background': cardStyle === 'background',\n 'border': hasBorder,\n 'has-tabs': hasTabs\n }\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\nconst ICON_SIZE_VARIABLES: { [key:string]: string } = {\n s: 'var(--vui-variable-icon-size-s)',\n m: 'var(--vui-variable-icon-size-m)',\n l: 'var(--vui-variable-icon-size-l)',\n xl: 'var(--vui-variable-icon-size-xl)',\n small: 'var(--vui-variable-icon-size-s)',\n button: 'var(--vui-variable-icon-size-button)',\n medium: 'var(--vui-variable-icon-size-m)',\n large: 'var(--vui-variable-icon-size-l)',\n xlarge: 'var(--vui-variable-icon-size-xl)',\n};\n\nexport enum VynilUIIconSize {\n Small = 'small',\n Button = 'button',\n Medium = 'medium',\n Large = 'large',\n ExtraLarge = 'xlarge'\n}\n\n@Component({\n selector: 'vui-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n standalone: false\n})\nexport class IconComponent {\n @Input() size: string;\n @Input() icon?: string;\n @Input() color?: string;\n @Input() rotation?: number;\n @Input() disabled?: boolean;\n @Input() scaleMask?: boolean;\n @Input() actionable?: boolean;\n public IconSizeEnum = VynilUIIconSize;\n\n constructor() {\n this.size = VynilUIIconSize.Medium;\n }\n\n public get styleObject(): { [key: string]: string } {\n let styleObject: { [key: string]: string } = {};\n if (this.color) {\n styleObject['backgroundColor'] = this.color;\n }\n if (this.rotation) {\n styleObject['transform'] = 'rotate(' + this.rotation + 'deg)';\n }\n styleObject['mask'] = 'url(./assets/icons/' + (this.icon || 'cog') + '.svg) no-repeat center',\n styleObject['-webkit-mask'] = styleObject['mask'];\n if (this.scaleMask) {\n styleObject['mask-size'] = ICON_SIZE_VARIABLES[this.size];\n }\n return styleObject;\n }\n}\n","<div\n class=\"icon\"\n [ngClass]=\"size + ' ' + (actionable ? 'actionable' : '') + ' ' + (disabled ? 'disabled' : '')\"\n [ngStyle]=\"styleObject\">\n</div>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport {\n Input,\n Component,\n} from '@angular/core';\nimport {\n FormControl,\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n} from '@angular/forms';\n\nimport { VynilUITextSize } from '../../basic/text/text.component';\n\nconst INPUT_STYLE_INPUTS = [\n 'flex',\n 'margin',\n 'padding',\n 'width',\n 'maxWidth',\n 'minWidth',\n 'textAlign',\n];\n\nexport type InputType = 'text' | 'number' | 'password';\n\n@Component({\n selector: 'vui-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: InputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class InputComponent implements ControlValueAccessor {\n @Input() textSize: string;\n @Input() flex?: string;\n @Input() margin?: string;\n @Input() padding?: string;\n @Input() align?: string;\n @Input() width?: string;\n @Input() maxWidth?: string;\n @Input() minWidth?: string;\n @Input() type: InputType;\n\n public control: FormControl<string>;\n\n public onTouch: (value: string) => void;\n public onChange: (value: string) => void;\n\n set value(value: string){\n if (value !== this.control.value\n && !(this.type === 'number' && isNaN(+value))) {\n this.control.setValue(value);\n }\n this.onChange(value);\n this.onTouch(value);\n }\n\n constructor() {\n this.type = 'text';\n this.textSize = VynilUITextSize.Medium;\n this.control = new FormControl<string>('', { nonNullable: true });\n this.control.valueChanges.subscribe((value) => {\n if (this.type === 'number') {\n // TODO: Find a proper fix for this one, perhaps separate number input\n value = parseFloat(value) as unknown as string;\n }\n this.writeValue(value);\n });\n this.onTouch = () => {};\n this.onChange = () => {};\n }\n\n public writeValue(value: string): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: string) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: string) => void): void {\n this.onTouch = onTouched;\n }\n\n public get styleObject(): { [key: string]: string } {\n let styleObject: { [key: string]: string } = {};\n const componentObject = this as unknown as { [key: string]: string };\n INPUT_STYLE_INPUTS.forEach((propertyName: string) => {\n if (componentObject[propertyName]) {\n styleObject[propertyName] = componentObject[propertyName];\n }\n });\n if (this.align) {\n styleObject['text-align'] = this.align;\n }\n return styleObject;\n }\n}\n","<input\n class=\"input\"\n [type]=\"type\"\n [formControl]=\"control\"\n [ngClass]=\"textSize\"\n [ngStyle]=\"styleObject\"\n/>\n","import { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { Component, Input, SecurityContext } from '@angular/core';\n\nconst DEFAULT_DIMENSION = 'auto';\n\ninterface IStyleObject {\n [key: string]: string | null\n}\n\n@Component({\n selector: 'vui-image',\n templateUrl: './image.component.html',\n styleUrls: ['./image.component.scss'],\n standalone: false\n})\nexport class ImageComponent {\n @Input() url?: string;\n @Input() width?: string;\n @Input() height?: string;\n @Input() minWidth?: string;\n @Input() minHeight?: string;\n @Input() circle?: boolean;\n @Input() border?: string;\n @Input() borderRadius?: string;\n @Input() backgroundSize?: string;\n @Input() useBackgroundImage?: boolean;\n\n public get sanitizedUrl(): SafeUrl | undefined {\n return this.url\n && this.domSanitizer.bypassSecurityTrustUrl(this.url)\n || undefined;\n }\n\n public get styles(): IStyleObject {\n let styles: IStyleObject = {\n 'width': this.width || DEFAULT_DIMENSION,\n 'height': this.height || DEFAULT_DIMENSION,\n 'min-width': this.minWidth || this.width || DEFAULT_DIMENSION,\n 'min-height': this.minHeight || this.height || DEFAULT_DIMENSION,\n };\n if (this.useBackgroundImage && this.url) {\n styles = {\n ...styles,\n 'background-image': this.domSanitizer.sanitize(SecurityContext.STYLE, 'url(' + this.url + ')'),\n 'background-size': this.backgroundSize || 'cover'\n }\n }\n if (this.border !== undefined) {\n styles['border'] = this.border;\n }\n if (this.borderRadius !== undefined) {\n styles['border-radius'] = this.borderRadius;\n }\n return styles;\n }\n\n public constructor(\n private domSanitizer: DomSanitizer,\n ) {}\n}\n","<div\n *ngIf=\"useBackgroundImage\"\n class=\"image-wrapper\"\n [ngClass]=\"{'circle': circle}\"\n [ngStyle]=\"styles\">\n</div>\n<img\n *ngIf=\"url && !useBackgroundImage\"\n [src]=\"sanitizedUrl\"\n class=\"image-wrapper\"\n [ngClass]=\"{'circle': circle}\"\n [ngStyle]=\"styles\"\n>\n<div\n *ngIf=\"!url && !useBackgroundImage\"\n class=\"image-wrapper\"\n [ngClass]=\"{'circle': circle}\"\n [ngStyle]=\"styles\"\n>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'vui-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n standalone: false\n})\nexport class ModalComponent {\n @Input() visible: boolean;\n @Output() closed: EventEmitter<void>;\n\n public constructor() {\n this.visible = false;\n this.closed = new EventEmitter();\n }\n\n public onCurtainClick(): void {\n this.closed.emit();\n }\n\n public onContentClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n}\n","@if (visible) {\n <div class=\"curtain\" (click)=\"onCurtainClick()\">\n <div (click)=\"onContentClick($event)\" class=\"content\">\n <ng-content></ng-content>\n </div>\n </div>\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { Params, Router, ActivatedRoute } from '@angular/router';\n\nexport type ParamsData = { [key: string]: string };\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RoutingService {\n public queryParams: BehaviorSubject<ParamsData>;\n\n public get activeRoute(): string {\n return this.router.url;\n }\n\n constructor(\n private router: Router,\n private location: Location,\n private activatedRoute: ActivatedRoute,\n ) {\n this.queryParams = new BehaviorSubject<ParamsData>({});\n this.activatedRoute.queryParams.subscribe((queryParams: Params) => {\n this.queryParams.next(queryParams);\n });\n }\n\n public navigate(route: string, queryParams?: ParamsData) {\n this.navigateWithQueryParams(route, queryParams || {});\n }\n\n public navigateInNewTab(route: string) {\n const url = this.router.serializeUrl(\n this.router.createUrlTree([route])\n );\n window.open(url, '_blank');\n }\n\n public navigateWithQueryParams(\n route: string | string[],\n queryParams: ParamsData,\n merge?: boolean,\n ) {\n const routeInfo = typeof route === 'string' ? [route] : route;\n this.router.navigate(routeInfo, {\n queryParams: {\n ...queryParams,\n },\n queryParamsHandling: merge ? 'merge' : '',\n });\n }\n\n public navigateBack() {\n this.location.back();\n }\n}\n","import { Input, Component } from '@angular/core';\nimport { RoutingService } from '../../../services/routing.service';\n\n@Component({\n selector: 'vui-link',\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.scss'],\n standalone: false\n})\nexport class LinkComponent {\n @Input() path?: string;\n\n public constructor(\n private routingService: RoutingService,\n ) {}\n\n public onNavigate(): void {\n if (this.path) {\n this.routingService.navigate(this.path);\n }\n }\n}\n","<div class=\"link\" (click)=\"onNavigate()\">\n <ng-content></ng-content>\n</div>\n","import {\n Input,\n Output,\n Component,\n EventEmitter,\n} from '@angular/core';\n\n@Component({\n selector: 'vui-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n standalone: false\n})\nexport class ButtonComponent {\n @Input() lean?: boolean;\n @Input() centered?: boolean;\n @Input() disabled?: boolean;\n @Output() clicked: EventEmitter<void>;\n\n public constructor() {\n this.clicked = new EventEmitter<void>();\n }\n\n public onClick(): void {\n if (!this.disabled) {\n this.clicked.emit();\n }\n }\n}\n","<div\n class=\"button\"\n [ngClass]=\"{\n 'lean': lean,\n 'disabled': disabled,\n 'centered': centered\n }\"\n (click)=\"onClick()\">\n <ng-content></ng-content>\n</div>\n","import {\n Input,\n Output,\n Component,\n EventEmitter,\n} from '@angular/core';\n\nconst DEFAULT_OPTION_1 = 'Yes';\nconst DEFAULT_OPTION_2 = 'No';\n\n@Component({\n selector: 'vui-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n standalone: false\n})\nexport class DialogComponent {\n @Input() text: string;\n @Input() visible: boolean;\n @Input() option1Text: string;\n @Input() option2Text: string;\n @Input() closeOnCurtain: boolean;\n @Output() closed: EventEmitter<void>;\n @Output() option1Selected: EventEmitter<void>;\n @Output() option2Selected: EventEmitter<void>;\n\n public constructor() {\n this.visible = false;\n this.closeOnCurtain = false;\n this.text = '';\n this.option1Text = DEFAULT_OPTION_1;\n this.option2Text = DEFAULT_OPTION_2;\n this.closed = new EventEmitter<void>();\n this.option1Selected = new EventEmitter<void>();\n this.option2Selected = new EventEmitter<void>();\n }\n\n public onClosed(): void {\n if (this.closeOnCurtain) {\n this.closed.emit();\n }\n }\n\n public onOptionSelect(option: number): void {\n if (option === 1) {\n this.option1Selected.emit();\n } else if (option === 2) {\n this.option2Selected.emit();\n }\n }\n}\n","<vui-modal [visible]=\"visible\" (closed)=\"onClosed()\">\n <vui-card>\n <vui-view padding=\"1rem 0.75rem\" class=\"dialog-wrapper\" alignItems=\"center\">\n <vui-text padding=\"0.5rem 0.5rem 1rem 0.5rem\" size=\"large\" align=\"center\">{{ text }}</vui-text>\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\">\n <vui-button (clicked)=\"onOptionSelect(1)\">{{ option1Text }}</vui-button>\n <vui-button (clicked)=\"onOptionSelect(2)\">{{ option2Text }}</vui-button>\n </vui-view>\n </vui-view>\n </vui-card>\n</vui-modal>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vui-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n standalone: false\n})\nexport class HeaderComponent {\n @Input() height: string;\n\n public constructor() {\n this.height = '3rem';\n }\n}\n","<vui-view\n width=\"100vw\"\n [height]=\"height\"\n margin=\"0\"\n flexDirection=\"row\"\n alignItems=\"center\"\n padding=\"0 1rem\">\n <ng-content></ng-content>\n</vui-view>\n","import { Observable } from 'rxjs';\nimport { Component, Input } from '@angular/core';\nimport { Theme, ThemeService } from '../../../services/theme.service';\n\n@Component({\n selector: 'vui-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n standalone: false\n})\nexport class SidebarComponent {\n @Input() width: string;\n @Input() headerHeight: string;\n\n public theme: Observable<Theme>;\n\n public constructor(\n private themeService: ThemeService,\n ) {\n this.width = '15rem';\n this.headerHeight = '0px';\n this.theme = this.themeService.theme.asObservable();\n }\n}\n","<vui-view\n [width]=\"width\"\n [scrollable]=\"true\"\n alignItems=\"stretch\"\n justifyContent=\"flex-start\"\n [minHeight]=\"'calc(100vh - ' + headerHeight + ')'\"\n [backgroundColor]=\"'var(--vui-color-background-lighter)'\">\n <ng-content></ng-content>\n</vui-view>\n","import {\n Input,\n Output,\n Component,\n EventEmitter,\n} from '@angular/core';\n\nconst DEFAULT_CONFIRM = 'OK';\n\n@Component({\n selector: 'vui-message',\n templateUrl: './message.component.html',\n styleUrls: ['./message.component.scss'],\n standalone: false\n})\nexport class MessageComponent {\n @Input() text: string;\n @Input() visible: boolean;\n @Input() confirmText: string;\n @Input() closeOnCurtain: boolean;\n @Output() closed: EventEmitter<void>;\n\n public constructor() {\n this.visible = false;\n this.closeOnCurtain = false;\n this.text = '';\n this.confirmText = DEFAULT_CONFIRM;\n this.closed = new EventEmitter<void>();\n }\n\n public onClosed(): void {\n if (this.closeOnCurtain) {\n this.closed.emit();\n }\n }\n\n public onConfirm(): void {\n this.closed.emit();\n }\n}\n","<vui-modal [visible]=\"visible\" (closed)=\"onClosed()\">\n <vui-card>\n <vui-view padding=\"1rem 0.75rem\" class=\"message-wrapper\" alignItems=\"stretch\">\n <vui-text padding=\"0.5rem 0.5rem 1rem 0.5rem\" size=\"large\" align=\"center\">{{ text }}</vui-text>\n <vui-view flexDirection=\"row\" justifyContent=\"center\">\n <vui-button (clicked)=\"onConfirm()\">{{ confirmText }}</vui-button>\n </vui-view>\n </vui-view>\n </vui-card>\n</vui-modal>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { Component, Input } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'vui-icon-input',\n templateUrl: './icon-input.component.html',\n styleUrls: ['./icon-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: IconInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class IconInputComponent implements ControlValueAccessor {\n @Input() icon?: string;\n\n public control: FormControl<string>;\n\n public onTouch: (value: string) => void;\n public onChange: (value: string) => void;\n\n set value(value: string){\n if (value !== this.control.value) {\n this.control.setValue(value); \n }\n this.onChange(value);\n this.onTouch(value);\n }\n\n public constructor() {\n this.control = new FormControl<string>('', { nonNullable: true });\n this.control.valueChanges.subscribe((value) => {\n this.writeValue(value);\n });\n this.onTouch = () => {};\n this.onChange = () => {};\n }\n\n public writeValue(value: string): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: string) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: string) => void): void {\n this.onTouch = onTouched;\n }\n}\n","<vui-view\n class=\"icon-input\"\n flexDirection=\"row\"\n width=\"100%\"\n [relative]=\"true\"\n justifyContent=\"stretch\">\n @if (icon) {\n <vui-view class=\"icon\" alignItems=\"center\" justifyContent=\"center\" height=\"2rem\" width=\"2rem\" padding=\"0.1rem 0 0 0\">\n <vui-icon size=\"button\" color=\"var(--vui-color-primary)\" [icon]=\"icon\"></vui-icon>\n </vui-view>\n }\n <vui-input class=\"input\" padding=\"0.5rem 0.5rem 0.5rem 1.75rem\" [formControl]=\"control\" type=\"text\"></vui-input>\n</vui-view>\n","import { Component, Input } from '@angular/core';\n\nconst DEFAULT_NAME = 'Group';\n\n@Component({\n selector: 'vui-named-group',\n templateUrl: './named-group.component.html',\n styleUrl: './named-group.component.scss',\n standalone: false,\n})\nexport class NamedGroupComponent {\n @Input() name?: string;\n @Input() textSize?: string;\n\n constructor() {\n this.name = DEFAULT_NAME;\n this.textSize = 'medium';\n }\n}\n","<vui-card class=\"named-group\" cardStyle=\"background\" [hasBorder]=\"true\">\n <vui-view [relative]=\"true\" width=\"100%\">\n <vui-text class=\"title\" [size]=\"textSize\">{{ name }}</vui-text>\n <vui-view class=\"fill content\" padding=\"0.5rem 0 0.25rem 0\" rowGap=\"0.5rem\" width=\"100%\">\n <ng-content></ng-content>\n </vui-view>\n </vui-view>\n</vui-card>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nconst POSSIBLE_COLORS = ['#D22B2B', '#50C878', '#0096FF', '#FCF55F', '#FF5F1F', '#7F00FF', '#9A9A9A', '#000000'];\n\n@Component({\n selector: 'vui-color-selector',\n templateUrl: './color-selector.component.html',\n styleUrls: ['./color-selector.component.scss'],\n standalone: false\n})\nexport class ColorSelectorComponent {\n @Input() selectedColor?: string;\n @Output() selected: EventEmitter<string>;\n\n public availableColors: string[];\n\n constructor() {\n this.availableColors = POSSIBLE_COLORS;\n this.selected = new EventEmitter<string>();\n }\n\n public onSelectColor(color: string): void {\n this.selected.emit(color);\n }\n}\n","<vui-view flexDirection=\"row\" columnGap=\"0.25rem\" alignItems=\"center\">\n @for (color of availableColors; track color) {\n <div\n (click)=\"onSelectColor(color)\"\n [ngStyle]=\"{'backgroundColor': color}\"\n [ngClass]=\"{'selected': selectedColor === color}\"\n class=\"color\">\n </div>\n }\n</vui-view>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { Component, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nconst DEFAULT_VALUE = '#0096FF';\n\n@Component({\n selector: 'vui-color-input',\n templateUrl: './color-input.component.html',\n styleUrls: ['./color-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ColorInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class ColorInputComponent implements ControlValueAccessor {\n @Input() small?: boolean;\n\n public colorValue: string;\n public colorSelectorVisible: boolean; \n\n public onTouch: (value: string) => void;\n public onChange: (value: string) => void;\n\n public set value(value: string){\n if (value !== this.colorValue) {\n this.colorValue = value;\n }\n this.onTouch(value);\n this.onChange(value);\n }\n\n public constructor() {\n this.colorValue = DEFAULT_VALUE;\n this.colorSelectorVisible = false;\n this.onTouch = () => {};\n this.onChange = () => {};\n }\n\n public onColorSelect(value: string): void {\n this.writeValue(value);\n this.toggleSelectorVisible(false);\n }\n\n public writeValue(value: string): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: string) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: string) => void): void {\n this.onTouch = onTouched;\n }\n\n public toggleSelectorVisible(value: boolean): void {\n this.colorSelectorVisible = value;\n }\n}\n","<vui-view [relative]=\"true\">\n <div (click)=\"toggleSelectorVisible(true)\" [ngClass]=\"{'small': small}\" [ngStyle]=\"{'backgroundColor': colorValue}\" class=\"color\"></div>\n <vui-modal [visible]=\"colorSelectorVisible\">\n <div class=\"selector-wrapper\">\n <vui-color-selector\n [selectedColor]=\"colorValue\"\n (selected)=\"onColorSelect($event)\">\n </vui-color-selector>\n </div>\n </vui-modal>\n</vui-view>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport {\n Input,\n Output,\n Component,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n} from '@angular/forms';\n\n@Component({\n selector: 'vui-toggle-input',\n templateUrl: './toggle-input.component.html',\n styleUrls: ['./toggle-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ToggleInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class ToggleInputComponent implements ControlValueAccessor {\n @Input() disabled?: boolean;\n @Output() changed: EventEmitter<boolean>;\n\n public activeValue: boolean;\n\n public onTouch: (value: boolean) => void;\n public onChange: (value: boolean) => void;\n\n set value(value: boolean){\n if (value !== this.activeValue) {\n this.activeValue = value;\n }\n this.onChange(value);\n this.onTouch(value);\n }\n\n constructor() {\n this.activeValue = false;\n this.onTouch = () => {};\n this.onChange = () => {};\n this.changed = new EventEmitter<boolean>();\n }\n\n public onToggle(): void {\n if (this.disabled) {\n return;\n }\n this.activeValue = !this.activeValue;\n this.writeValue(this.activeValue);\n }\n\n public writeValue(value: boolean): void {\n this.value = value;\n this.onChange(value);\n this.changed.emit(value);\n }\n\n public registerOnChange(onChange: (value: boolean) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: boolean) => void): void {\n this.onTouch = onTouched;\n }\n}\n","<div (click)=\"onToggle()\" class=\"toggle\" [ngClass]=\"{'active': activeValue, 'disabled': disabled}\">\n <div class=\"toggle-indicator\"></div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'vui-modify-options',\n templateUrl: './modify-options.component.html',\n standalone: false\n})\nexport class ModifyOptionsComponent {\n @Input() isInline?: boolean;\n @Input() hasMove?: boolean;\n @Input() hasEdit?: boolean;\n @Input() hasCopy?: boolean;\n @Input() hasRemove?: boolean;\n @Output() edited: EventEmitter<void>;\n @Output() removed: EventEmitter<void>;\n @Output() copied: EventEmitter<void>;\n @Output() moved: EventEmitter<number>;\n\n public constructor() {\n this.hasEdit = true;\n this.hasRemove = true;\n this.edited = new EventEmitter<void>();\n this.removed = new EventEmitter<void>();\n this.copied = new EventEmitter<void>();\n this.moved = new EventEmitter<number>();\n }\n\n public onMove(event: MouseEvent, modifier: number): void {\n event.stopPropagation();\n this.moved.emit(modifier);\n }\n\n public onEdit(event: MouseEvent): void {\n event.stopPropagation();\n this.edited.emit();\n }\n\n public onRemove(event: MouseEvent): void {\n event.stopPropagation();\n this.removed.emit();\n }\n\n public onCopy(event: MouseEvent): void {\n event.stopPropagation();\n this.copied.emit();\n }\n}\n","<vui-view [flexDirection]=\"isInline ? 'row' : 'column'\" class=\"options\" rowGap=\"0.5rem\" columnGap=\"0.5rem\" padding=\"0.25rem 0.5rem\" alignItems=\"stretch\">\n @if (hasMove) {\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\" justifyContent=\"flex-end\">\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onMove($event, -1)\" icon=\"up\"></vui-icon>\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onMove($event, 1)\" icon=\"down\"></vui-icon>\n </vui-view>\n }\n @if (hasEdit || hasCopy || hasRemove) {\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\">\n @if (hasEdit) {\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onEdit($event)\" icon=\"edit\"></vui-icon>\n }\n @if (hasCopy) {\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onCopy($event)\" icon=\"copy\"></vui-icon>\n }\n @if (hasRemove) {\n <vui-icon [actionable]=\"true\" size=\"button\" (click)=\"onRemove($event)\" icon=\"remove\"></vui-icon>\n }\n </vui-view>\n }\n</vui-view>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport {\n Input,\n Output,\n Component,\n EventEmitter,\n} from '@angular/core';\nimport {\n FormControl,\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n} from '@angular/forms';\n\nconst DEFAULT_HEIGHT = '10rem';\n\n@Component({\n selector: 'vui-image-url-input',\n templateUrl: './image-url-input.component.html',\n styleUrls: ['./image-url-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ImageURLInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class ImageURLInputComponent implements ControlValueAccessor {\n @Input() width?: string;\n @Input() height?: string;\n @Output() changed: EventEmitter<string>;\n\n public control: FormControl<string | null>;\n\n public onTouch: (value: string) => void;\n public onChange: (value: string) => void;\n\n public get value(): string {\n return this.control.value || '';\n }\n\n public set value(value: string){\n if (value !== this.control.value) {\n this.control.setValue(value);\n }\n this.onChange(value);\n this.onTouch(value);\n }\n\n constructor() {\n this.height = DEFAULT_HEIGHT;\n this.control = new FormControl<string>('');\n this.changed = new EventEmitter<string>();\n this.control.valueChanges.subscribe((value: string | null) => {\n if (value) {\n this.writeValue(value);\n }\n });\n this.onTouch = () => {};\n this.onChange = () => {};\n }\n\n public writeValue(value: string): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: string) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: string) => void): void {\n this.onTouch = onTouched;\n }\n}\n","<vui-view class=\"image-input-wrapper\" alignItems=\"stretch\">\n <vui-view class=\"preview\" [minHeight]=\"height\" [relative]=\"true\" alignItems=\"stretch\" overflow=\"hidden\">\n @if (value) {\n <vui-image\n [url]=\"value\"\n [width]=\"width\"\n [height]=\"height\"\n backgroundSize=\"cover\">\n </vui-image>\n }\n </vui-view>\n <vui-input flex=\"1\" [formControl]=\"control\"></vui-input>\n</vui-view>\n","import {\n Input,\n Component,\n} from '@angular/core';\n\n@Component({\n selector: 'vui-navigation-link',\n templateUrl: './navigation-link.component.html',\n styleUrls: ['./navigation-link.component.scss'],\n standalone: false\n})\nexport class NavigationLinkComponent {\n @Input() path?: string;\n}\n","<vui-link [path]=\"path\" path=\"text\">\n <div class=\"navigation-link\">\n <vui-view\n width=\"100%\"\n height=\"2rem\"\n padding=\"0 1rem\"\n alignItems=\"flex-start\"\n justifyContent=\"center\">\n <vui-text size=\"large\">\n <ng-content></ng-content>\n </vui-text>\n </vui-view>\n </div>\n</vui-link>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\n\n@Component({\n selector: 'vui-image-array-input',\n templateUrl: './image-array-input.component.html',\n styleUrls: ['./image-array-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ImageArrayInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class ImageArrayInputComponent implements ControlValueAccessor {\n @Input() roundEntries: boolean;\n @Output() changed: EventEmitter<string>;\n\n public values: string[];\n public imageUrlControl: FormControl<string | null>;\n\n public onTouch: (value: string[]) => void;\n public onChange: (value: string[]) => void;\n \n set value(value: string[]){\n if (value) {\n this.values = [...value];\n } else {\n this.values = [];\n }\n this.onChange(value || []);\n this.onTouch(value || []);\n }\n\n public constructor() {\n this.values = [];\n this.roundEntries = true;\n this.changed = new EventEmitter<string>();\n this.imageUrlControl = new FormControl<string | null>('', Validators.required);\n this.onTouch = () => {};\n this.onChange = () => {};\n }\n\n public writeValue(value: string[]): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: string[]) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: string[]) => void): void {\n this.onTouch = onTouched;\n }\n\n public onAdd(): void {\n if(this.imageUrlControl.value) {\n this.value = [...this.values, this.imageUrlControl.value];\n this.imageUrlControl.setValue('');\n }\n }\n\n public onRemove(removed: number): void {\n this.value = this.values.filter((_entry: string, index: number) => index !== removed);\n }\n}\n","<vui-card cardStyle=\"dark\" class=\"image-array-input\">\n <vui-card class=\"variants-box\">\n <vui-view flexDirection=\"row\" [wrap]=\"true\" [scrollable]=\"true\" justifyContent=\"flex-start\" columnGap=\"0.75rem\" rowGap=\"0.5rem\">\n @for (image of values; track image; let i = $index) {\n <vui-view class=\"variant\">\n <vui-image\n [url]=\"image\"\n [circle]=\"roundEntries\"\n backgroundSize=\"cover\"\n [useBackgroundImage]=\"true\"\n width=\"50px\"\n height=\"50px\">\n </vui-image>\n <div (click)=\"onRemove(i)\" class=\"icon-float\">\n <vui-icon icon=\"remove\"></vui-icon>\n </div>\n </vui-view>\n }\n </vui-view>\n </vui-card>\n <vui-view padding=\"0 0.5rem\" rowGap=\"0.25rem\" alignItems=\"center\">\n <vui-text size=\"small\">Image URL</vui-text>\n <vui-view flexDirection=\"row\" justifyContent=\"space-between\" columnGap=\"0.25rem\" alignItems=\"center\">\n <vui-view alignItems=\"center\">\n <vui-input class=\"add-input\" [formControl]=\"imageUrlControl\"></vui-input>\n </vui-view>\n <vui-button class=\"add-button\" (clicked)=\"onAdd()\">\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\" alignItems=\"center\">\n <vui-icon size=\"button\" icon=\"add\"></vui-icon>\n <vui-text size=\"large\">Add</vui-text>\n </vui-view>\n </vui-button>\n </vui-view>\n </vui-view>\n</vui-card>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vui-navigation-group',\n templateUrl: './navigation-group.component.html',\n styleUrls: ['./navigation-group.component.scss'],\n standalone: false\n})\nexport class NavigationGroupComponent {\n @Input() name?: string;\n @Input() open?: boolean;\n\n public constructor() {\n this.open = false;\n }\n\n public onToggle(): void {\n this.open = !this.open;\n }\n}\n","<vui-view class=\"navigation-group\" alignItems=\"stretch\">\n <vui-view (click)=\"onToggle()\" class=\"navigation-group-header\" flexDirection=\"row\" alignItems=\"stretch\" justifyContent=\"space-between\" padding=\"0 1rem\">\n <vui-view alignItems=\"flex-start\" justifyContent=\"center\" height=\"3rem\">\n <vui-text size=\"xlarge\">{{ name }}</vui-text>\n </vui-view>\n <vui-icon icon=\"caret\" [rotation]=\"open ? 0 : 180\"></vui-icon>\n </vui-view>\n @if (open) {\n <div class=\"navigation-group-content\">\n <ng-content></ng-content>\n </div>\n }\n</vui-view>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { VynilUITextSize } from '../../basic/text/text.component';\n\nconst DEFAULT_PADDING = '0.5rem 0';\nconst DEFAULT_EMPTY_TEXT = 'None';\n\nexport interface ListInputEntry<T> {\n value: T;\n id: string,\n text: string,\n icon?: string;\n image?: string;\n}\n\n@Component({\n selector: 'vui-list-input',\n templateUrl: './list-input.component.html',\n styleUrls: ['./list-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ListInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class ListInputComponent<T> implements ControlValueAccessor {\n @Input() hasControls: boolean;\n @Input() hasMove: boolean;\n @Input() hasEdit: boolean;\n @Input() hasCopy: boolean;\n @Input() hasRemove: boolean;\n @Input() selectable: boolean;\n @Input() showIcons: boolean;\n @Input() showImages: boolean;\n @Input() roundImage?: boolean;\n @Input() flex: string;\n @Input() width: string;\n @Input() height: string;\n @Input() margin: string;\n @Input() padding: string;\n @Input() maxWidth: string;\n @Input() minWidth: string;\n @Input() textSize: string;\n @Input() imageHeight: string;\n @Input() emptyText: string;\n @Input() selectedValue: ListInputEntry<T> | null;\n\n @Output() selected: EventEmitter<ListInputEntry<T> | null>;\n @Output() edited: EventEmitter<ListInputEntry<T> | null>;\n @Output() copied: EventEmitter<ListInputEntry<T> | null>;\n @Output() removed: EventEmitter<ListInputEntry<T> | null>;\n\n public onTouch: (value: ListInputEntry<T>[]) => void;\n public onChange: (value: ListInputEntry<T>[]) => void;\n\n public localValue: ListInputEntry<T>[];\n\n set value(value: ListInputEntry<T>[]){\n this.localValue = value;\n this.onChange(value);\n this.onTouch(value);\n }\n\n constructor() {\n this.hasControls = false;\n this.hasMove = true;\n this.hasEdit = false;\n this.hasCopy = false;\n this.hasRemove = true;\n this.selectable = true;\n this.showIcons = false;\n this.showImages = false;\n this.flex = 'none';\n this.width = 'auto';\n this.height = '10rem';\n this.margin = '0';\n this.padding = DEFAULT_PADDING;\n this.maxWidth = 'none';\n this.minWidth = '10rem';\n this.textSize = VynilUITextSize.Medium;\n this.imageHeight = '3rem';\n this.emptyText = DEFAULT_EMPTY_TEXT;\n this.selectedValue = null;\n this.localValue = [];\n this.onTouch = () => {};\n this.onChange = () => {};\n this.selected = new EventEmitter<ListInputEntry<T> | null>();\n this.edited = new EventEmitter<ListInputEntry<T> | null>();\n this.copied = new EventEmitter<ListInputEntry<T> | null>();\n this.removed = new EventEmitter<ListInputEntry<T> | null>();\n }\n\n public writeValue(value: ListInputEntry<T>[]): void {\n this.value = value;\n this.localValue = value;\n }\n\n public registerOnChange(onChange: (value: ListInputEntry<T>[]) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: ListInputEntry<T>[]) => void): void {\n this.onTouch = onTouched;\n }\n\n public onMove(index: number, diff: number): void {\n const newValue = this.moveElement(index, index + diff);\n this.writeValue(newValue);\n }\n\n public onEdit(entry: ListInputEntry<T>): void {\n this.edited.emit(entry);\n }\n\n public onCopy(entry: ListInputEntry<T>): void {\n this.copied.emit(entry);\n }\n\n public onRemove(removedEntry: ListInputEntry<T>): void {\n this.removed.emit(removedEntry);\n if (removedEntry.id === this.selectedValue?.id) {\n this.selected.emit(null);\n }\n const newValue = this.localValue.filter((entry: ListInputEntry<T>) => entry.id !== removedEntry.id);\n this.writeValue(newValue);\n }\n\n public onSelectOption(entry: ListInputEntry<T>): void {\n if (!this.selectable) {\n return;\n }\n if (this.selectedValue?.id === entry.id) {\n this.selected.emit(null);\n } else {\n this.selected.emit(entry);\n }\n }\n\n public identify(index: number, entry: ListInputEntry<T>): string {\n return entry.id;\n }\n\n private moveElement(from: number, to: number) {\n if (from < 0 || from >= this.localValue.length\n || to < 0 || to >= this.localValue.length) {\n return this.localValue;\n }\n const element = this.localValue.splice(from, 1)[0];\n this.localValue.splice(to, 0, element);\n return this.localValue;\n }\n}\n","<vui-card class=\"list-input\" cardStyle=\"dark\">\n <vui-view\n [flex]=\"flex\"\n [width]=\"width\"\n [height]=\"height\"\n [margin]=\"margin\"\n [padding]=\"padding\"\n [minWidth]=\"minWidth\"\n [maxWidth]=\"maxWidth\"\n [scrollable]=\"true\"\n rowGap=\"0\"\n alignItems=\"stretch\"\n justifyContent=\"flex-start\">\n @if (localValue.length === 0) {\n <vui-view padding=\"0.5rem 1rem\">\n <vui-text>{{ emptyText }}</vui-text> \n </vui-view>\n }\n @for (entry of localValue; track identify($index, entry); let i = $index) {\n <vui-view\n class=\"entry\"\n width=\"100%\"\n padding=\"0.1rem 0\"\n minHeight=\"1.5rem\"\n columnGap=\"0.5rem\"\n alignItems=\"center\"\n flexDirection=\"row\"\n (click)=\"onSelectOption(entry)\"\n [ngClass]=\"{ 'active': selectedValue?.id === entry.id }\">\n <vui-view flexDirection=\"row\" columnGap=\"0.5rem\" alignItems=\"center\">\n @if (showImages && !!entry.image) {\n <vui-image [url]=\"entry.image\" [height]=\"imageHeight\" [circle]=\"roundImage\"></vui-image>\n } @else if (showIcons && !!entry.icon) {\n <vui-icon [icon]=\"entry.icon\" size=\"medium\"></vui-icon>\n }\n <vui-text [size]=\"textSize\">{{ entry.text }}</vui-text>\n </vui-view>\n @if (hasControls) {\n <vui-modify-options\n [isInline]=\"true\"\n [hasMove]=\"hasMove\"\n [hasEdit]=\"hasEdit\"\n [hasCopy]=\"hasCopy\"\n [hasRemove]=\"hasRemove\"\n (moved)=\"onMove(i, $event)\"\n (removed)=\"onRemove(entry)\">\n </vui-modify-options>\n }\n </vui-view>\n }\n </vui-view>\n</vui-card>\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { Component, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { VynilUITextSize } from '../../basic/text/text.component';\n\nconst DEFAULT_PADDING = '0.5rem';\nconst DEFAULT_EMPTY_TEXT = 'None';\n\nexport interface SelectInputOption<T> {\n text: string,\n value: T,\n}\n\n@Component({\n selector: 'vui-select-input',\n templateUrl: './select-input.component.html',\n styleUrls: ['./select-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SelectInputComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class SelectInputComponent<T> implements ControlValueAccessor {\n @Input() textSize: string;\n @Input() flex: string;\n @Input() width: string;\n @Input() maxWidth: string;\n @Input() minWidth: string;\n @Input() margin: string;\n @Input() padding: string;\n @Input() emptyText: string;\n @Input() options: SelectInputOption<T>[];\n\n public selectedValue: SelectInputOption<T> | null;\n public dropdownVisible: boolean;\n public onTouch: (value: SelectInputOption<T>) => void;\n public onChange: (value: SelectInputOption<T>) => void;\n\n set value(value: SelectInputOption<T>){\n this.selectedValue = value;\n this.onChange(value);\n this.onTouch(value);\n }\n\n constructor() {\n this.textSize = VynilUITextSize.Medium;\n this.flex = 'none';\n this.width = 'auto';\n this.maxWidth = 'none';\n this.margin = '0';\n this.minWidth = '10rem';\n this.padding = DEFAULT_PADDING;\n this.options = [];\n this.selectedValue = null;\n this.dropdownVisible = false;\n this.emptyText = DEFAULT_EMPTY_TEXT;\n this.onTouch = () => {};\n this.onChange = () => {};\n }\n\n public writeValue(value: SelectInputOption<T>): void {\n this.value = value;\n }\n\n public registerOnChange(onChange: (value: SelectInputOption<T>) => void): void {\n this.onChange = onChange;\n }\n\n public registerOnTouched(onTouched: (value: SelectInputOption<T>) => void): void {\n this.onTouch = onTouched;\n }\n\n public onToggleDropdown(value?: boolean): void {\n this.dropdownVisible = value !== undefined ? value : !this.dropdownVisible;\n }\n\n public onSelectOption(option: SelectInputOption<T>): void {\n this.value = option || null;\n this.onToggleDropdown(false);\n }\n\n public identify(index: number, option: SelectInputOption<T>): T {\n return option.value;\n }\n}\n","<vui-view [relative]=\"true\" class=\"select\" [width]=\"width\" [maxWidth]=\"maxWidth\">\n <div\n class=\"current-value\"\n (click)=\"onToggleDropdown()\"\n [ngClass]=\"textSize + (dropdownVisible ? ' open' : '')\"\n [ngStyle]=\"{\n 'min-width': minWidth,\n 'margin': margin,\n 'padding': padding\n }\">\n <span>{{ selectedValue?.text || emptyText }}</span>\n <vui-icon\n class=\"icon\"\n icon=\"caret\"\n size=\"medium\"\n color=\"var(--vui-color-primary)\"\n [rotation]=\"180\"\n [ngClass]=\"textSize\">\n </vui-icon>\n </div>\n @if (dropdownVisible) {\n <div class=\"dropdown\" [ngClass]=\"textSize\">\n <vui-view rowGap=\"0.1rem\" justifyContent=\"stretch\" alignItems=\"stretch\">\n <div\n (click)=\"onToggleDropdown(false)\"\n class=\"option unselectable\"\n [ngClass]=\"textSize\">\n {{ selectedValue?.text || emptyText }}\n <vui-icon\n icon=\"caret\"\n size=\"medium\"\n class=\"icon open\"\n color=\"var(--vui-color-primary-lighter)\"\n [ngClass]=\"textSize\">\n </vui-icon>\n </div>\n @for (option of options; track identify($index, option)) {\n <option\n (click)=\"onSelectOption(option)\"\n [ngClass]=\"textSize\"\n class=\"option\">\n {{ option.text }}\n </option>\n }\n </vui-view>\n </div>\n }\n</vui-view>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DownloadService {\n public downloadJSON(fileName: string, dataJSON: string): void {\n const anchor = document.createElement('a');\n anchor.href = URL.createObjectURL( new Blob([dataJSON], { type:'text/json' }) );\n anchor.download = fileName + '.json';\n anchor.click();\n }\n}\n","import { Subscription } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UtilityService {\n \n public createId() : string {\n return this.generateFromSequence('xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx');\n }\n\n public createShortId() : string {\n return this.generateFromSequence('xxxxxxxx');\n }\n\n public camelCaseToCapitalCase(entry: string): string {\n const result = entry.replace(/([A-Z])/g, \" $1\");\n return result.charAt(0).toUpperCase() + result.slice(1);\n }\n\n public clearSubscriptions(subscriptions: Subscription[]): Subscription[] {\n subscriptions.forEach((subscription: Subscription) => {\n if (!subscription.closed) {\n subscription.unsubscribe();\n }\n });\n return [];\n }\n\n public findById<T>(id: string, array: { id: string }[]): { id: string } | undefined {\n const items = array.filter((entry: { id: string }) => entry.id === id);\n return items && items.length > 0 ? items[0] : undefined;\n }\n\n public compare<T>(value1: T, value2: T): boolean {\n if (typeof(value1) !== typeof(value2)) return false;\n if (Array.isArray(value1)) {\n return this.compareArrays(value1 as unknown[], value2 as unknown[]);\n } else if (typeof(value1) === 'object') {\n return this.compareObjects(value1 as object, value2 as object);\n } else {\n return value1 === value2;\n }\n }\n\n private compareObjects<T extends object>(object1: T, object2: T): boolean {\n let equal = true;\n const a = object1 as { [key: string]: unknown };\n const b = object2 as { [key: string]: unknown };\n const keys = Object.keys(object1);\n for(const key of keys) {\n if (typeof(a[key]) !== typeof(b[key])) {\n equal = false;\n break;\n }\n equal &&= this.compare(a[key], b[key]);\n }\n return equal;\n }\n\n private compareArrays<T>(array1: T[], array2: T[]): boolean {\n if (array1.length !== array2.length) return false;\n for (const i in array1) {\n if (array1[i] !== array2[i]) return false;\n }\n return true;\n }\n\n private generateFromSequence(sequence: string) : string {\n let dt: number = new Date().getTime();\n const generated: string = sequence.replace(/[xy]/g, (c) =>\n {\n const r: number = (dt + Math.random() * 16) % 16 | 0;\n dt = Math.floor(dt / 16);\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n });\n return generated;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { InitialsPipe } from './pipes/initials.pipe';\n\nimport { TextComponent } from './components/basic/text/text.component';\nimport { PageComponent } from './components/layout/page/page.component';\nimport { ViewComponent } from './components/layout/view/view.component';\nimport { CardComponent } from './components/layout/card/card.component';\nimport { IconComponent } from './components/images/icon/icon.component';\nimport { InputComponent } from './components/inputs/input/input.component';\nimport { ImageComponent } from './components/images/image/image.component';\nimport { ModalComponent } from './components/modals/modal/modal.component';\nimport { LinkComponent } from './components/navigation/link/link.component';\nimport { ButtonComponent } from './components/basic/button/button.component';\nimport { DialogComponent } from './components/modals/dialog/dialog.component';\nimport { HeaderComponent } from './components/layout/header/header.component';\nimport { SidebarComponent } from './components/layout/sidebar/sidebar.component';\nimport { MessageComponent } from './components/modals/message/message.component';\nimport { ListInputComponent } from './components/inputs/list-input/list-input.component';\nimport { IconInputComponent } from './components/inputs/icon-input/icon-input.component';\nimport { ColorInputComponent } from './components/inputs/color-input/color-input.component';\nimport { NamedGroupComponent } from './components/layout/named-group/named-group.component';\nimport { ToggleInputComponent } from './components/inputs/toggle-input/toggle-input.component';\nimport { SelectInputComponent } from './components/inputs/select-input/select-input.component';\nimport { ModifyOptionsComponent } from './components/utility/modify-options/modify-options.component';\nimport { ImageURLInputComponent } from './components/inputs/image-url-input/image-url-input.component';\nimport { ColorSelectorComponent } from './components/selectors/color-selector/color-selector.component';\nimport { NavigationLinkComponent } from './components/navigation/navigation-link/navigation-link.component';\nimport { ImageArrayInputComponent } from './components/inputs/image-array-input/image-array-input.component';\nimport { NavigationGroupComponent } from './components/navigation/navigation-group/navigation-group.component';\n\nconst Components = [\n // Basic\n ButtonComponent,\n TextComponent,\n // Images\n ImageComponent,\n IconComponent,\n // Forms\n InputComponent,\n ListInputComponent,\n IconInputComponent,\n ColorInputComponent,\n SelectInputComponent,\n ToggleInputComponent,\n ImageURLInputComponent,\n ImageArrayInputComponent,\n // Layout\n ViewComponent,\n CardComponent,\n PageComponent,\n HeaderComponent,\n SidebarComponent,\n NamedGroupComponent,\n // Modals\n ModalComponent,\n MessageComponent,\n DialogComponent,\n // Navigation\n LinkComponent,\n NavigationLinkComponent,\n NavigationGroupComponent,\n // Utility\n ModifyOptionsComponent,\n // Selectors\n ColorSelectorComponent,\n];\n\nconst Pipes = [\n InitialsPipe,\n];\n\n@NgModule({\n declarations: [\n ...Pipes,\n ...Components,\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ],\n exports: [\n ...Pipes,\n ...Components,\n ]\n})\nexport class VynilUIModule { }\n","/*\n * Public API Surface of vynil-ui\n */\n\nexport { InitialsPipe } from './lib/pipes/initials.pipe';\n\nexport { TextComponent } from './lib/components/basic/text/text.component';\nexport { PageComponent } from './lib/components/layout/page/page.component';\nexport { ViewComponent } from './lib/components/layout/view/view.component';\nexport { CardComponent } from './lib/components/layout/card/card.component';\nexport { IconComponent } from './lib/components/images/icon/icon.component';\nexport { InputComponent } from './lib/components/inputs/input/input.component';\nexport { ImageComponent } from './lib/components/images/image/image.component';\nexport { ModalComponent } from './lib/components/modals/modal/modal.component';\nexport { LinkComponent } from './lib/components/navigation/link/link.component';\nexport { ButtonComponent } from './lib/components/basic/button/button.component';\nexport { DialogComponent } from './lib/components/modals/dialog/dialog.component';\nexport { HeaderComponent } from './lib/components/layout/header/header.component';\nexport { SidebarComponent } from './lib/components/layout/sidebar/sidebar.component';\nexport { MessageComponent } from './lib/components/modals/message/message.component';\nexport { IconInputComponent } from './lib/components/inputs/icon-input/icon-input.component';\nexport { NamedGroupComponent } from './lib/components/layout/named-group/named-group.component';\nexport { ColorInputComponent } from './lib/components/inputs/color-input/color-input.component';\nexport { ToggleInputComponent } from './lib/components/inputs/toggle-input/toggle-input.component';\nexport { ModifyOptionsComponent } from './lib/components/utility/modify-options/modify-options.component';\nexport { ImageURLInputComponent } from './lib/components/inputs/image-url-input/image-url-input.component';\nexport { ColorSelectorComponent } from './lib/components/selectors/color-selector/color-selector.component';\nexport { NavigationLinkComponent } from './lib/components/navigation/navigation-link/navigation-link.component';\nexport { ImageArrayInputComponent } from './lib/components/inputs/image-array-input/image-array-input.component';\nexport { NavigationGroupComponent } from './lib/components/navigation/navigation-group/navigation-group.component';\nexport { ListInputComponent, ListInputEntry } from './lib/components/inputs/list-input/list-input.component';\nexport { SelectInputComponent, SelectInputOption } from './lib/components/inputs/select-input/select-input.component';\n\nexport * from './lib/services/download.service';\nexport * from './lib/services/routing.service';\nexport * from './lib/services/theme.service';\nexport * from './lib/services/utility.service';\nexport * from './lib/vynil-ui.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_PADDING","i1.ThemeService","i2","i1","i1.RoutingService","i1.ButtonComponent","i2.TextComponent","i3.ViewComponent","i4.CardComponent","i5.ModalComponent","i1.ViewComponent","i2.ViewComponent","i2.IconComponent","i3.InputComponent","i4.ViewComponent","i1.TextComponent","i3.CardComponent","i3.ModalComponent","i4.ColorSelectorComponent","i1.IconComponent","i2.ImageComponent","i3.LinkComponent","i2.ButtonComponent","i3.TextComponent","i4.ImageComponent","i5.IconComponent","i6.InputComponent","i7.ViewComponent","i8.CardComponent","DEFAULT_EMPTY_TEXT","i3.ImageComponent","i4.IconComponent","i5.ViewComponent","i6.CardComponent","i7.ModifyOptionsComponent","i3.IconComponent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vynil-ui",
3
- "version": "0.1.0-beta.6",
3
+ "version": "0.1.0-beta.8",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.1.4",
6
6
  "@angular/core": "^21.1.4"
@@ -20,4 +20,4 @@
20
20
  "default": "./fesm2022/vynil-ui.mjs"
21
21
  }
22
22
  }
23
- }
23
+ }
@@ -30,7 +30,6 @@ interface Theme {
30
30
  radius: number;
31
31
  padding: number;
32
32
  transitionLength: number;
33
- colorContrastFactor: number;
34
33
  iconSizes: number[];
35
34
  fontSizes: number[];
36
35
  };
@@ -41,6 +40,11 @@ interface Theme {
41
40
  background: string;
42
41
  boxShadow: string;
43
42
  };
43
+ colorContrastFactor?: {
44
+ factor?: number;
45
+ darkenFactor?: number;
46
+ lightenFactor?: number;
47
+ };
44
48
  }
45
49
  declare class ThemeService {
46
50
  theme: BehaviorSubject<Theme>;
@@ -114,7 +118,8 @@ declare enum VynilUIIconSize {
114
118
  Small = "small",
115
119
  Button = "button",
116
120
  Medium = "medium",
117
- Large = "large"
121
+ Large = "large",
122
+ ExtraLarge = "xlarge"
118
123
  }
119
124
  declare class IconComponent {
120
125
  size: string;
@@ -122,6 +127,7 @@ declare class IconComponent {
122
127
  color?: string;
123
128
  rotation?: number;
124
129
  disabled?: boolean;
130
+ scaleMask?: boolean;
125
131
  actionable?: boolean;
126
132
  IconSizeEnum: typeof VynilUIIconSize;
127
133
  constructor();
@@ -129,7 +135,7 @@ declare class IconComponent {
129
135
  [key: string]: string;
130
136
  };
131
137
  static ɵfac: i0.ɵɵFactoryDeclaration<IconComponent, never>;
132
- static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "vui-icon", never, { "size": { "alias": "size"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "color": { "alias": "color"; "required": false; }; "rotation": { "alias": "rotation"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "actionable": { "alias": "actionable"; "required": false; }; }, {}, never, never, false, never>;
138
+ static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "vui-icon", never, { "size": { "alias": "size"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "color": { "alias": "color"; "required": false; }; "rotation": { "alias": "rotation"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "scaleMask": { "alias": "scaleMask"; "required": false; }; "actionable": { "alias": "actionable"; "required": false; }; }, {}, never, never, false, never>;
133
139
  }
134
140
 
135
141
  type InputType = 'text' | 'number' | 'password';
@@ -166,6 +172,8 @@ declare class ImageComponent {
166
172
  url?: string;
167
173
  width?: string;
168
174
  height?: string;
175
+ minWidth?: string;
176
+ minHeight?: string;
169
177
  circle?: boolean;
170
178
  border?: string;
171
179
  borderRadius?: string;
@@ -175,7 +183,7 @@ declare class ImageComponent {
175
183
  get styles(): IStyleObject;
176
184
  constructor(domSanitizer: DomSanitizer);
177
185
  static ɵfac: i0.ɵɵFactoryDeclaration<ImageComponent, never>;
178
- static ɵcmp: i0.ɵɵComponentDeclaration<ImageComponent, "vui-image", never, { "url": { "alias": "url"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "circle": { "alias": "circle"; "required": false; }; "border": { "alias": "border"; "required": false; }; "borderRadius": { "alias": "borderRadius"; "required": false; }; "backgroundSize": { "alias": "backgroundSize"; "required": false; }; "useBackgroundImage": { "alias": "useBackgroundImage"; "required": false; }; }, {}, never, never, false, never>;
186
+ static ɵcmp: i0.ɵɵComponentDeclaration<ImageComponent, "vui-image", never, { "url": { "alias": "url"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "minWidth": { "alias": "minWidth"; "required": false; }; "minHeight": { "alias": "minHeight"; "required": false; }; "circle": { "alias": "circle"; "required": false; }; "border": { "alias": "border"; "required": false; }; "borderRadius": { "alias": "borderRadius"; "required": false; }; "backgroundSize": { "alias": "backgroundSize"; "required": false; }; "useBackgroundImage": { "alias": "useBackgroundImage"; "required": false; }; }, {}, never, never, false, never>;
179
187
  }
180
188
 
181
189
  declare class ModalComponent {