@vialiq/web-components 0.16.0 → 0.17.0

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.
@@ -11,22 +11,11 @@ export declare class DraggableInterface {
11
11
  * DraggableMixin
12
12
  *
13
13
  * Provides native drag-and-drop capabilities using Pointer Events to any LitElement.
14
- * It is primarily designed for modals and dialogs that need to be repositioned by the user.
15
- *
16
- * By default, this applies a `transform: translate3d(x, y, 0)` to the element returned
17
- * by `_dragTarget`. This is highly performant and avoids reflowing the layout.
14
+ * It applies performant `transform: translate3d(x, y, 0)` positioning to `_dragTarget`.
18
15
  *
19
16
  * Subclasses MUST implement:
20
17
  * - `_dragTarget`: The HTML element that moves (usually the outer container or dialog).
21
18
  * - `_dragHandle`: The HTML element that accepts pointer events to initiate the drag (usually a header).
22
- *
23
- * @example
24
- * ```typescript
25
- * class MyModal extends DraggableMixin(LitElement) {
26
- * protected get _dragTarget() { return this.shadowRoot.querySelector('.modal'); }
27
- * protected get _dragHandle() { return this.shadowRoot.querySelector('.header'); }
28
- * }
29
- * ```
30
19
  */
31
20
  export declare function DraggableMixin<T extends Constructor<LitElement>>(Base: T): T & Constructor<DraggableInterface>;
32
21
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"draggable-mixin.d.ts","sourceRoot":"","sources":["../../../../libs/web-components/src/base/draggable-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AAItD,KAAK,WAAW,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEzD,MAAM,CAAC,OAAO,OAAO,kBAAkB;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,KAAK,WAAW,IAAI,WAAW,GAAG,IAAI,CAAC;IAChD,SAAS,KAAK,WAAW,IAAI,WAAW,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,UAAU,IAAI,IAAI;IAC5B,SAAS,CAAC,SAAS,IAAI,IAAI;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,EAC9D,IAAI,EAAE,CAAC,GACN,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC,CA+NrC"}
1
+ {"version":3,"file":"draggable-mixin.d.ts","sourceRoot":"","sources":["../../../../libs/web-components/src/base/draggable-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AAItD,KAAK,WAAW,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEzD,MAAM,CAAC,OAAO,OAAO,kBAAkB;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,KAAK,WAAW,IAAI,WAAW,GAAG,IAAI,CAAC;IAChD,SAAS,KAAK,WAAW,IAAI,WAAW,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,UAAU,IAAI,IAAI;IAC5B,SAAS,CAAC,SAAS,IAAI,IAAI;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,EAC9D,IAAI,EAAE,CAAC,GACN,CAAC,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAsOrC"}
@@ -53,6 +53,8 @@ export declare class ViButton extends ViButton_base {
53
53
  accessor iconOnly: boolean;
54
54
  /** Disables the button. */
55
55
  accessor disabled: boolean;
56
+ /** Accessible label forwarded to the inner native button. */
57
+ accessor ariaLabel: string | null;
56
58
  private accessor _hasIcon;
57
59
  updated(changed: PropertyValues): void;
58
60
  private onIconSlotChange;
@@ -1 +1 @@
1
- {"version":3,"file":"vi-button.d.ts","sourceRoot":"","sources":["../../../../libs/web-components/src/button/vi-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGrF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9F;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnD;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,KAAK,CAAC;;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBACa,QAAS,SAAQ,aAAyB;IACrD,OAAgB,MAAM,0BAAmC;IAEzD,cAAuB,iBAAiB,IAAI,iBAAiB,GAAG,IAAI,CAEnE;IAED,sBAAsB;IACqB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAa;IAEvF,mDAAmD;IACR,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAQ;IAE5E,sHAAsH;IAC9C,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAW;IAE9H,0EAA0E;IACL,QAAQ,CAAC,SAAS,UAAS;IAEhG,kGAAkG;IAC9B,QAAQ,CAAC,QAAQ,UAAS;IAE9F,2BAA2B;IACiB,QAAQ,CAAC,QAAQ,UAAS;IAE7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAElC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAe/C,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,OAAO;IAON,MAAM,IAAI,cAAc;CAuBlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
1
+ {"version":3,"file":"vi-button.d.ts","sourceRoot":"","sources":["../../../../libs/web-components/src/button/vi-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG9F,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9F;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnD;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,KAAK,CAAC;;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBACa,QAAS,SAAQ,aAAyB;IACrD,OAAgB,MAAM,0BAAmC;IAEzD,cAAuB,iBAAiB,IAAI,iBAAiB,GAAG,IAAI,CAEnE;IAED,sBAAsB;IACqB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAa;IAEvF,mDAAmD;IACR,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAQ;IAE5E,sHAAsH;IAC9C,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAW;IAE9H,0EAA0E;IACL,QAAQ,CAAC,SAAS,UAAS;IAEhG,kGAAkG;IAC9B,QAAQ,CAAC,QAAQ,UAAS;IAE9F,2BAA2B;IACiB,QAAQ,CAAC,QAAQ,UAAS;IAEtE,6DAA6D;IAC7D,SAAyD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEhF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAElC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAe/C,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,OAAO;IAON,MAAM,IAAI,cAAc;CAwBlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
@@ -1,4 +1,4 @@
1
- import { unsafeCSS, css, html } from 'lit';
1
+ import { unsafeCSS, css, nothing, html } from 'lit';
2
2
  import { customElement, property, state } from 'lit/decorators.js';
3
3
  import { F as FocusableMixin } from '../focusable-mixin-CmxOyPX5.js';
4
4
  import { V as ViElement } from '../vi-element-C6GfDPs3.js';
@@ -380,7 +380,7 @@ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
380
380
  function _identity(x) {
381
381
  return x;
382
382
  }
383
- var _dec, _initClass, _FocusableMixin, _dec1, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, /** Visual variant. */ _init_variant, /** Size scale — controls padding and font-size. */ _init_size, /** Icon placement: 'start' (before label) or 'end' (after label). CSS order handles it — no DOM changes on toggle. */ _init_iconPlacement, /** When true, stretches the button to fill the width of its container. */ _init_fullWidth, /** When true, styles the button for an icon-only layout (typically square with equal padding). */ _init_iconOnly, /** Disables the button. */ _init_disabled, _init__hasIcon, _initProto;
383
+ var _dec, _initClass, _FocusableMixin, _dec1, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, /** Visual variant. */ _init_variant, /** Size scale — controls padding and font-size. */ _init_size, /** Icon placement: 'start' (before label) or 'end' (after label). CSS order handles it — no DOM changes on toggle. */ _init_iconPlacement, /** When true, stretches the button to fill the width of its container. */ _init_fullWidth, /** When true, styles the button for an icon-only layout (typically square with equal padding). */ _init_iconOnly, /** Disables the button. */ _init_disabled, /** Accessible label forwarded to the inner native button. */ _init_ariaLabel, _init__hasIcon, _initProto;
384
384
  let _ViButton;
385
385
  _dec = customElement('vi-button'), _dec1 = property({
386
386
  type: String,
@@ -403,7 +403,9 @@ _dec = customElement('vi-button'), _dec1 = property({
403
403
  }), _dec6 = property({
404
404
  type: Boolean,
405
405
  reflect: true
406
- }), _dec7 = state();
406
+ }), _dec7 = property({
407
+ attribute: 'aria-label'
408
+ }), _dec8 = state();
407
409
  new class extends _identity {
408
410
  constructor(){
409
411
  super(_ViButton), _initClass();
@@ -411,7 +413,7 @@ new class extends _identity {
411
413
  static{
412
414
  class ViButton extends (_FocusableMixin = FocusableMixin(ViElement)) {
413
415
  static{
414
- ({ e: [_init_variant, _init_size, _init_iconPlacement, _init_fullWidth, _init_iconOnly, _init_disabled, _init__hasIcon, _initProto], c: [_ViButton, _initClass] } = _apply_decs_2203_r(this, [
416
+ ({ e: [_init_variant, _init_size, _init_iconPlacement, _init_fullWidth, _init_iconOnly, _init_disabled, _init_ariaLabel, _init__hasIcon, _initProto], c: [_ViButton, _initClass] } = _apply_decs_2203_r(this, [
415
417
  [
416
418
  _dec1,
417
419
  1,
@@ -445,6 +447,11 @@ new class extends _identity {
445
447
  [
446
448
  _dec7,
447
449
  1,
450
+ "ariaLabel"
451
+ ],
452
+ [
453
+ _dec8,
454
+ 1,
448
455
  "_hasIcon"
449
456
  ]
450
457
  ], [
@@ -497,12 +504,19 @@ new class extends _identity {
497
504
  set disabled(_v) {
498
505
  this.#___private_disabled_6 = _v;
499
506
  }
500
- #___private__hasIcon_7 = _init__hasIcon(this, false);
507
+ #___private_ariaLabel_7 = _init_ariaLabel(this, null);
508
+ get ariaLabel() {
509
+ return this.#___private_ariaLabel_7;
510
+ }
511
+ set ariaLabel(_v) {
512
+ this.#___private_ariaLabel_7 = _v;
513
+ }
514
+ #___private__hasIcon_8 = _init__hasIcon(this, false);
501
515
  get _hasIcon() {
502
- return this.#___private__hasIcon_7;
516
+ return this.#___private__hasIcon_8;
503
517
  }
504
518
  set _hasIcon(_v) {
505
- this.#___private__hasIcon_7 = _v;
519
+ this.#___private__hasIcon_8 = _v;
506
520
  }
507
521
  updated(changed) {
508
522
  super.updated(changed);
@@ -539,6 +553,7 @@ new class extends _identity {
539
553
  type="button"
540
554
  tabindex="0"
541
555
  ?disabled=${disabled}
556
+ aria-label=${this.ariaLabel ?? nothing}
542
557
  @click=${onClick}
543
558
  >
544
559
  <slot
@@ -1 +1 @@
1
- {"version":3,"file":"vi-icon.d.ts","sourceRoot":"","sources":["../../../../libs/web-components/src/icons/vi-icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGnF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD;;;;;;;;;;;;;;;GAeG;AACH,qBACa,MAAO,SAAQ,SAAS;IACnC,OAAgB,MAAM,0BAkBpB;IAEF;;;OAGG;IACwC,QAAQ,CAAC,IAAI,SAAM;IAE9D;;;OAGG;IACyB,QAAQ,CAAC,IAAI,SAAM;IAE/C;;;;OAIG;IACyB,QAAQ,CAAC,KAAK,SAAM;IAEvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAE3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAOnD,OAAO,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAchD,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAOrD,MAAM,IAAI,cAAc;CAoBlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB;CACF"}
1
+ {"version":3,"file":"vi-icon.d.ts","sourceRoot":"","sources":["../../../../libs/web-components/src/icons/vi-icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGnF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD;;;;;;;;;;;;;;;GAeG;AACH,qBACa,MAAO,SAAQ,SAAS;IACnC,OAAgB,MAAM,0BA6BpB;IAEF;;;OAGG;IACwC,QAAQ,CAAC,IAAI,SAAM;IAE9D;;;OAGG;IACyB,QAAQ,CAAC,IAAI,SAAM;IAE/C;;;;OAIG;IACyB,QAAQ,CAAC,KAAK,SAAM;IAEvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAE3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAOnD,OAAO,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAchD,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAOrD,MAAM,IAAI,cAAc;CAoBlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB;CACF"}
package/icons/vi-icon.js CHANGED
@@ -438,9 +438,20 @@ new class extends _identity {
438
438
  justify-content: center;
439
439
  width: var(--vi-icon-size, 24px);
440
440
  height: var(--vi-icon-size, 24px);
441
+ line-height: 1;
442
+ }
443
+
444
+ span {
445
+ display: inline-flex;
446
+ align-items: center;
447
+ justify-content: center;
448
+ width: 100%;
449
+ height: 100%;
450
+ line-height: 1;
441
451
  }
442
452
 
443
453
  svg {
454
+ display: block;
444
455
  width: 100%;
445
456
  height: 100%;
446
457
  fill: none;
package/index.d.ts CHANGED
@@ -30,6 +30,8 @@ export type { ChipVariant, ChipSize } from './chip/vi-chip.js';
30
30
  export { ViChipGroup } from './chip/vi-chip-group.js';
31
31
  export { ViAnimation } from './animation/vi-animation.js';
32
32
  export type { AnimationPreset, StaggerDirection, AnimationPhase, ViAnimationEventDetail, } from './animation/vi-animation.js';
33
+ export { ViTag } from './tag/vi-tag.js';
34
+ export type { TagVariant, TagAppearance, TagSize } from './tag/vi-tag.js';
33
35
  export { ViSwitch } from './switch/vi-switch.js';
34
36
  export type { SwitchSize, LabelPlacement } from './switch/vi-switch.js';
35
37
  //# sourceMappingURL=index.d.ts.map
package/index.js CHANGED
@@ -2,7 +2,8 @@ import { V as ViElement } from './vi-element-C6GfDPs3.js';
2
2
  export { ViButton } from './button/vi-button.js';
3
3
  export { ViInput } from './input/vi-input.js';
4
4
  export { ViIcon } from './icons/vi-icon.js';
5
- export { getIcon, registerIcons } from './icons/registry.js';
5
+ import { registerIcons } from './icons/registry.js';
6
+ export { getIcon } from './icons/registry.js';
6
7
  export { ViRadio } from './radio/vi-radio.js';
7
8
  export { ViRadioGroup } from './radio/vi-radio-group.js';
8
9
  export { ViCheckbox } from './checkbox/vi-checkbox.js';
@@ -17,9 +18,673 @@ export { ViChipGroup } from './chip/vi-chip-group.js';
17
18
  export { ViAnimation } from './animation/vi-animation.js';
18
19
  import { unsafeCSS, css, nothing, html } from 'lit';
19
20
  import { customElement, property } from 'lit/decorators.js';
21
+ import { classMap } from 'lit/directives/class-map.js';
22
+ import { xIcon, checkIcon } from '@vialiq/icons';
20
23
  import { F as FocusableMixin } from './focusable-mixin-CmxOyPX5.js';
21
24
  import { V as ValidityMixin } from './validity-mixin-DO0ycRH2.js';
22
- import { classMap } from 'lit/directives/class-map.js';
25
+
26
+ const tagStyles = "@charset \"UTF-8\";@layer reset,components,utilities;@layer components{:host,:root{--vi-tag-height: 24px;--vi-tag-padding-x: 10px;--vi-tag-border-radius: 4px;--vi-tag-font-size: var(--vi-font-size-xs, var(--vi-font-size-xs, 12px));--vi-tag-font-weight: var(--vi-font-weight-medium, var(--vi-font-weight-medium, 500));--vi-tag-gap: 6px;--vi-tag-remove-size: 16px;--vi-tag-dot-size: 6px;--vi-tag-avatar-size: 14px;--vi-tag-icon-size: 14px;--vi-tag-transition: all .15s cubic-bezier(.4, 0, .2, 1);--vi-tag-disabled-opacity: .5;--vi-tag-max-width: 100%}.tag{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:var(--vi-tag-height);padding-inline:var(--vi-tag-padding-x);border-radius:var(--vi-tag-border-radius);font-family:var(--vi-font-family-base, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);font-size:var(--vi-tag-font-size);font-weight:var(--vi-tag-font-weight);line-height:1;gap:var(--vi-tag-gap);transition:var(--vi-tag-transition);-webkit-user-select:none;user-select:none;border:var(--vi-border-width-thin, 1px) solid transparent;cursor:default;max-width:var(--vi-tag-max-width);vertical-align:middle;position:relative}.tag.tag--pill{border-radius:9999px}.tag.tag--removable{padding-inline-end:calc(var(--vi-tag-padding-x) - 4px)}.tag .tag-content-wrapper{display:inline-flex;align-items:center;justify-content:center;gap:var(--vi-tag-gap);min-width:0;flex:1 1 auto;height:100%;line-height:1;outline:none;border-radius:inherit}.tag .tag-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:1;display:inline-block}.tag .tag-icon,.tag .tag-avatar,.tag .tag-checkmark{display:inline-flex;align-items:center;justify-content:center;line-height:1;flex-shrink:0}.tag .tag-avatar ::slotted(*){width:var(--vi-tag-avatar-size, calc(var(--vi-tag-height) - 10px));height:var(--vi-tag-avatar-size, calc(var(--vi-tag-height) - 10px));border-radius:50%;object-fit:cover;display:block}.tag .tag-dot{display:inline-block;width:var(--vi-tag-dot-size);height:var(--vi-tag-dot-size);border-radius:50%;background-color:currentColor;flex-shrink:0}.tag .tag-count{display:inline-flex;align-items:center;justify-content:center;padding-inline:5px;height:calc(var(--vi-tag-height) - 10px);min-width:calc(var(--vi-tag-height) - 10px);font-size:10px;font-weight:var(--vi-font-weight-semibold, 600);border-radius:9999px;background-color:#00000014;color:inherit;line-height:1;flex-shrink:0;margin-inline-start:2px}.tag.tag-clickable{cursor:pointer}.tag.tag-clickable:hover{transform:translateY(-1px)}.tag.tag-clickable:active{transform:translateY(0) scale(.98)}.tag.appearance-subtle.variant-neutral{background-color:var(--vi-tag-neutral-bg, var(--vi-layer-02, #f3f4f6));color:var(--vi-tag-neutral-color, var(--vi-text-primary, #111827));border-color:var(--vi-tag-neutral-border, var(--vi-border-03, #e0e0e0))}.tag.appearance-subtle.variant-neutral.tag-clickable:hover{background-color:var(--vi-tag-neutral-hover-bg, var(--vi-layer-03, #e5e7eb));border-color:var(--vi-tag-neutral-hover-border, var(--vi-border-04, #bdbdbd))}.tag.appearance-subtle.variant-neutral.tag-selected{background-color:var(--vi-tag-neutral-selected-bg, var(--vi-layer-03, #e5e7eb));border-color:var(--vi-tag-neutral-selected-border, var(--vi-color-primary, #3676d0));color:var(--vi-tag-neutral-selected-color, var(--vi-color-primary, #3676d0))}.tag.appearance-subtle.variant-primary{background-color:var(--vi-tag-primary-bg, var(--vi-bg-info, #e3f2fd));color:var(--vi-tag-primary-color, var(--vi-text-info, #3676d0));border-color:var(--vi-tag-primary-border, var(--vi-color-blue-300, #a3d1fa))}.tag.appearance-subtle.variant-primary.tag-clickable:hover{background-color:var(--vi-tag-primary-hover-bg, var(--vi-color-blue-100, #ebf5ff));border-color:var(--vi-tag-primary-hover-border, var(--vi-color-blue-400, #74b6f4))}.tag.appearance-subtle.variant-primary.tag-selected{background-color:var(--vi-tag-primary-selected-bg, var(--vi-color-blue-100, #ebf5ff));border-color:var(--vi-tag-primary-selected-border, var(--vi-color-primary, #3676d0));color:var(--vi-tag-primary-selected-color, var(--vi-color-blue-800, #2d5fa8))}.tag.appearance-subtle.variant-success{background-color:var(--vi-tag-success-bg, var(--vi-bg-success, #e6f9f0));color:var(--vi-tag-success-color, var(--vi-text-success, #265a3d));border-color:var(--vi-tag-success-border, var(--vi-color-green-300, #96c4ab))}.tag.appearance-subtle.variant-success.tag-clickable:hover{background-color:var(--vi-tag-success-hover-bg, var(--vi-color-green-100, #e6f0eb));border-color:var(--vi-tag-success-hover-border, var(--vi-color-green-400, #6eab88))}.tag.appearance-subtle.variant-success.tag-selected{background-color:var(--vi-tag-success-selected-bg, var(--vi-color-green-100, #e6f0eb));border-color:var(--vi-tag-success-selected-border, var(--vi-color-success, #489167));color:var(--vi-tag-success-selected-color, var(--vi-color-green-800, #17402a))}.tag.appearance-subtle.variant-warning{background-color:var(--vi-tag-warning-bg, var(--vi-bg-warning, #fff8e1));color:var(--vi-tag-warning-color, var(--vi-text-warning, #e68300));border-color:var(--vi-tag-warning-border, var(--vi-color-yellow-300, #ffd359))}.tag.appearance-subtle.variant-warning.tag-clickable:hover{background-color:var(--vi-tag-warning-hover-bg, var(--vi-color-yellow-100, #ffeab1));border-color:var(--vi-tag-warning-hover-border, var(--vi-color-yellow-400, #ffc72e))}.tag.appearance-subtle.variant-warning.tag-selected{background-color:var(--vi-tag-warning-selected-bg, var(--vi-color-yellow-100, #ffeab1));border-color:var(--vi-tag-warning-selected-border, var(--vi-color-warning, #ffba00));color:var(--vi-tag-warning-selected-color, var(--vi-color-yellow-800, #e68300))}.tag.appearance-subtle.variant-danger{background-color:var(--vi-tag-danger-bg, var(--vi-bg-error, #ffebee));color:var(--vi-tag-danger-color, var(--vi-text-error, #db231b));border-color:var(--vi-tag-danger-border, var(--vi-color-red-300, #ee6f68))}.tag.appearance-subtle.variant-danger.tag-clickable:hover{background-color:var(--vi-tag-danger-hover-bg, var(--vi-color-red-100, #ffccce));border-color:var(--vi-tag-danger-hover-border, var(--vi-color-red-400, #f74d40))}.tag.appearance-subtle.variant-danger.tag-selected{background-color:var(--vi-tag-danger-selected-bg, var(--vi-color-red-100, #ffccce));border-color:var(--vi-tag-danger-selected-border, var(--vi-color-error, #ef4444));color:var(--vi-tag-danger-selected-color, var(--vi-color-red-800, #ce1a12))}.tag.appearance-subtle.variant-info{background-color:var(--vi-tag-info-bg, var(--vi-color-blue-100, #ebf5ff));color:var(--vi-tag-info-color, var(--vi-color-blue-700, #3676d0));border-color:var(--vi-tag-info-border, var(--vi-color-blue-300, #a3d1fa))}.tag.appearance-subtle.variant-info.tag-clickable:hover{background-color:var(--vi-tag-info-hover-bg, var(--vi-color-blue-200, #cee6ff));border-color:var(--vi-tag-info-hover-border, var(--vi-color-blue-500, #3f96f1))}.tag.appearance-subtle.variant-info.tag-selected{background-color:var(--vi-tag-info-selected-bg, var(--vi-color-blue-200, #cee6ff));border-color:var(--vi-tag-info-selected-border, var(--vi-color-blue-700, #3676d0));color:var(--vi-tag-info-selected-color, var(--vi-color-blue-900, #254882))}.tag.appearance-subtle.variant-contrast{background-color:var(--vi-tag-contrast-bg, var(--vi-text-primary, #111827));color:var(--vi-tag-contrast-color, var(--vi-text-primary-inverse, #ffffff));border-color:var(--vi-tag-contrast-border, var(--vi-text-primary, #111827))}.tag.appearance-subtle.variant-contrast .tag-count{background-color:#fff3}.tag.appearance-outline{background-color:transparent}.tag.appearance-outline.variant-neutral{color:var(--vi-tag-outline-neutral-color, var(--vi-text-primary, #111827));border-color:var(--vi-tag-outline-neutral-border, var(--vi-border-04, #bdbdbd))}.tag.appearance-outline.variant-neutral.tag-clickable:hover,.tag.appearance-outline.variant-neutral.tag-selected{background-color:var(--vi-tag-outline-neutral-hover-bg, var(--vi-layer-02, #f3f4f6))}.tag.appearance-outline.variant-primary{color:var(--vi-tag-outline-primary-color, var(--vi-color-primary, #3676d0));border-color:var(--vi-tag-outline-primary-border, var(--vi-color-primary, #3676d0))}.tag.appearance-outline.variant-primary.tag-clickable:hover,.tag.appearance-outline.variant-primary.tag-selected{background-color:var(--vi-tag-outline-primary-hover-bg, var(--vi-bg-info, #e3f2fd))}.tag.appearance-outline.variant-success{color:var(--vi-tag-outline-success-color, var(--vi-color-success, #489167));border-color:var(--vi-tag-outline-success-border, var(--vi-color-success, #489167))}.tag.appearance-outline.variant-success.tag-clickable:hover,.tag.appearance-outline.variant-success.tag-selected{background-color:var(--vi-tag-outline-success-hover-bg, var(--vi-bg-success, #e6f9f0))}.tag.appearance-outline.variant-warning{color:var(--vi-tag-outline-warning-color, var(--vi-color-warning, #ffba00));border-color:var(--vi-tag-outline-warning-border, var(--vi-color-warning, #ffba00))}.tag.appearance-outline.variant-warning.tag-clickable:hover,.tag.appearance-outline.variant-warning.tag-selected{background-color:var(--vi-tag-outline-warning-hover-bg, var(--vi-bg-warning, #fff8e1))}.tag.appearance-outline.variant-danger{color:var(--vi-tag-outline-danger-color, var(--vi-color-error, #ef4444));border-color:var(--vi-tag-outline-danger-border, var(--vi-color-error, #ef4444))}.tag.appearance-outline.variant-danger.tag-clickable:hover,.tag.appearance-outline.variant-danger.tag-selected{background-color:var(--vi-tag-outline-danger-hover-bg, var(--vi-bg-error, #ffebee))}.tag.appearance-outline.variant-info{color:var(--vi-tag-outline-info-color, var(--vi-color-blue-700, #3676d0));border-color:var(--vi-tag-outline-info-border, var(--vi-color-blue-500, #3f96f1))}.tag.appearance-outline.variant-info.tag-clickable:hover,.tag.appearance-outline.variant-info.tag-selected{background-color:var(--vi-tag-outline-info-hover-bg, var(--vi-color-blue-100, #ebf5ff))}.tag.appearance-outline.variant-contrast{color:var(--vi-tag-outline-contrast-color, var(--vi-text-primary, #111827));border-color:var(--vi-tag-outline-contrast-border, var(--vi-text-primary, #111827))}.tag.appearance-outline.variant-contrast.tag-clickable:hover,.tag.appearance-outline.variant-contrast.tag-selected{background-color:var(--vi-tag-outline-contrast-hover-bg, var(--vi-layer-02, #f3f4f6))}.tag.appearance-solid{border-color:transparent;box-shadow:0 1px 2px #0000000d}.tag.appearance-solid.variant-neutral{background-color:var(--vi-tag-solid-neutral-bg, var(--vi-border-inverse-03, #757575));color:var(--vi-tag-solid-neutral-color, var(--vi-text-primary-inverse, #ffffff))}.tag.appearance-solid.variant-neutral.tag-clickable:hover,.tag.appearance-solid.variant-neutral.tag-selected{background-color:var(--vi-tag-solid-neutral-hover-bg, var(--vi-text-primary, #111827))}.tag.appearance-solid.variant-primary{background-color:var(--vi-tag-solid-primary-bg, var(--vi-color-primary, #3676d0));color:var(--vi-tag-solid-primary-color, var(--vi-text-primary-inverse, #ffffff))}.tag.appearance-solid.variant-primary.tag-clickable:hover,.tag.appearance-solid.variant-primary.tag-selected{background-color:var(--vi-tag-solid-primary-hover-bg, var(--vi-color-blue-800, #2d5fa8))}.tag.appearance-solid.variant-success{background-color:var(--vi-tag-solid-success-bg, var(--vi-color-success, #489167));color:var(--vi-tag-solid-success-color, var(--vi-text-primary-inverse, #ffffff))}.tag.appearance-solid.variant-success.tag-clickable:hover,.tag.appearance-solid.variant-success.tag-selected{background-color:var(--vi-tag-solid-success-hover-bg, var(--vi-color-green-700, #265a3d))}.tag.appearance-solid.variant-warning{background-color:var(--vi-tag-solid-warning-bg, var(--vi-color-warning, #ffba00));color:var(--vi-tag-solid-warning-color, var(--vi-text-primary-inverse, #ffffff))}.tag.appearance-solid.variant-warning.tag-clickable:hover,.tag.appearance-solid.variant-warning.tag-selected{background-color:var(--vi-tag-solid-warning-hover-bg, var(--vi-color-yellow-700, #ff9900))}.tag.appearance-solid.variant-danger{background-color:var(--vi-tag-solid-danger-bg, var(--vi-color-error, #ef4444));color:var(--vi-tag-solid-danger-color, var(--vi-text-primary-inverse, #ffffff))}.tag.appearance-solid.variant-danger.tag-clickable:hover,.tag.appearance-solid.variant-danger.tag-selected{background-color:var(--vi-tag-solid-danger-hover-bg, var(--vi-color-red-700, #db231b))}.tag.appearance-solid.variant-info{background-color:var(--vi-tag-solid-info-bg, var(--vi-color-blue-600, #3b86de));color:var(--vi-tag-solid-info-color, var(--vi-text-primary-inverse, #ffffff))}.tag.appearance-solid.variant-info.tag-clickable:hover,.tag.appearance-solid.variant-info.tag-selected{background-color:var(--vi-tag-solid-info-hover-bg, var(--vi-color-blue-800, #2d5fa8))}.tag.appearance-solid.variant-contrast{background-color:var(--vi-tag-solid-contrast-bg, var(--vi-text-primary, #111827));color:var(--vi-tag-solid-contrast-color, var(--vi-text-primary-inverse, #ffffff))}.tag.appearance-solid .tag-count{background-color:#ffffff40}.tag.size-xs{--vi-tag-height: 18px;--vi-tag-font-size: 10px;--vi-tag-padding-x: 6px;--vi-tag-gap: 4px;--vi-tag-remove-size: 12px;--vi-tag-dot-size: 4px;--vi-tag-avatar-size: 10px;--vi-tag-icon-size: 10px}.tag.size-sm{--vi-tag-height: 20px;--vi-tag-font-size: 11px;--vi-tag-padding-x: 8px;--vi-tag-gap: 5px;--vi-tag-remove-size: 14px;--vi-tag-dot-size: 5px;--vi-tag-avatar-size: 12px;--vi-tag-icon-size: 12px}.tag.size-lg{--vi-tag-height: 28px;--vi-tag-font-size: 13px;--vi-tag-padding-x: 12px;--vi-tag-gap: 8px;--vi-tag-remove-size: 18px;--vi-tag-dot-size: 7px;--vi-tag-avatar-size: 18px;--vi-tag-icon-size: 16px}.tag.is-disabled{opacity:var(--vi-tag-disabled-opacity);pointer-events:none;cursor:not-allowed;box-shadow:none!important;transform:none!important}.tag-remove-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--vi-tag-remove-size);height:var(--vi-tag-remove-size);min-width:var(--vi-tag-remove-size);padding:0;border-radius:50%;margin-inline-start:2px;margin-inline-end:0;cursor:pointer;background:transparent;border:none;color:inherit;transition:var(--vi-tag-transition);flex-shrink:0;line-height:1}.tag-remove-btn:hover{background-color:#0000001f}.tag-remove-btn:active{transform:scale(.92)}}:host{display:inline-flex;vertical-align:middle;margin-inline-end:var(--vi-tag-margin-end, 6px);margin-block:var(--vi-tag-margin-block, 2px);outline:none}:host([disabled]){cursor:not-allowed;pointer-events:none}::slotted(vi-icon),::slotted(svg){display:block}::slotted(img){display:block;width:14px;height:14px;border-radius:50%;object-fit:cover}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}";
27
+
28
+ function applyDecs2203RFactory$1() {
29
+ function createAddInitializerMethod(initializers, decoratorFinishedRef) {
30
+ return function addInitializer(initializer) {
31
+ assertNotFinished(decoratorFinishedRef, "addInitializer");
32
+ assertCallable(initializer, "An initializer");
33
+ initializers.push(initializer);
34
+ };
35
+ }
36
+ function memberDec(dec, name, desc, initializers, kind, isStatic, isPrivate, metadata, value) {
37
+ var kindStr;
38
+ switch(kind){
39
+ case 1:
40
+ kindStr = "accessor";
41
+ break;
42
+ case 2:
43
+ kindStr = "method";
44
+ break;
45
+ case 3:
46
+ kindStr = "getter";
47
+ break;
48
+ case 4:
49
+ kindStr = "setter";
50
+ break;
51
+ default:
52
+ kindStr = "field";
53
+ }
54
+ var ctx = {
55
+ kind: kindStr,
56
+ name: isPrivate ? "#" + name : name,
57
+ static: isStatic,
58
+ private: isPrivate,
59
+ metadata: metadata
60
+ };
61
+ var decoratorFinishedRef = {
62
+ v: false
63
+ };
64
+ ctx.addInitializer = createAddInitializerMethod(initializers, decoratorFinishedRef);
65
+ var get, set;
66
+ if (kind === 0) {
67
+ if (isPrivate) {
68
+ get = desc.get;
69
+ set = desc.set;
70
+ } else {
71
+ get = function() {
72
+ return this[name];
73
+ };
74
+ set = function(v) {
75
+ this[name] = v;
76
+ };
77
+ }
78
+ } else if (kind === 2) {
79
+ get = function() {
80
+ return desc.value;
81
+ };
82
+ } else {
83
+ if (kind === 1 || kind === 3) {
84
+ get = function() {
85
+ return desc.get.call(this);
86
+ };
87
+ }
88
+ if (kind === 1 || kind === 4) {
89
+ set = function(v) {
90
+ desc.set.call(this, v);
91
+ };
92
+ }
93
+ }
94
+ ctx.access = get && set ? {
95
+ get: get,
96
+ set: set
97
+ } : get ? {
98
+ get: get
99
+ } : {
100
+ set: set
101
+ };
102
+ try {
103
+ return dec(value, ctx);
104
+ } finally{
105
+ decoratorFinishedRef.v = true;
106
+ }
107
+ }
108
+ function assertNotFinished(decoratorFinishedRef, fnName) {
109
+ if (decoratorFinishedRef.v) {
110
+ throw new Error("attempted to call " + fnName + " after decoration was finished");
111
+ }
112
+ }
113
+ function assertCallable(fn, hint) {
114
+ if (typeof fn !== "function") {
115
+ throw new TypeError(hint + " must be a function");
116
+ }
117
+ }
118
+ function assertValidReturnValue(kind, value) {
119
+ var type = typeof value;
120
+ if (kind === 1) {
121
+ if (type !== "object" || value === null) {
122
+ throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
123
+ }
124
+ if (value.get !== undefined) {
125
+ assertCallable(value.get, "accessor.get");
126
+ }
127
+ if (value.set !== undefined) {
128
+ assertCallable(value.set, "accessor.set");
129
+ }
130
+ if (value.init !== undefined) {
131
+ assertCallable(value.init, "accessor.init");
132
+ }
133
+ } else if (type !== "function") {
134
+ var hint;
135
+ if (kind === 0) {
136
+ hint = "field";
137
+ } else if (kind === 10) {
138
+ hint = "class";
139
+ } else {
140
+ hint = "method";
141
+ }
142
+ throw new TypeError(hint + " decorators must return a function or void 0");
143
+ }
144
+ }
145
+ function applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, initializers, metadata) {
146
+ var decs = decInfo[0];
147
+ var desc, init, value;
148
+ if (isPrivate) {
149
+ if (kind === 0 || kind === 1) {
150
+ desc = {
151
+ get: decInfo[3],
152
+ set: decInfo[4]
153
+ };
154
+ } else if (kind === 3) {
155
+ desc = {
156
+ get: decInfo[3]
157
+ };
158
+ } else if (kind === 4) {
159
+ desc = {
160
+ set: decInfo[3]
161
+ };
162
+ } else {
163
+ desc = {
164
+ value: decInfo[3]
165
+ };
166
+ }
167
+ } else if (kind !== 0) {
168
+ desc = Object.getOwnPropertyDescriptor(base, name);
169
+ }
170
+ if (kind === 1) {
171
+ value = {
172
+ get: desc.get,
173
+ set: desc.set
174
+ };
175
+ } else if (kind === 2) {
176
+ value = desc.value;
177
+ } else if (kind === 3) {
178
+ value = desc.get;
179
+ } else if (kind === 4) {
180
+ value = desc.set;
181
+ }
182
+ var newValue, get, set;
183
+ if (typeof decs === "function") {
184
+ newValue = memberDec(decs, name, desc, initializers, kind, isStatic, isPrivate, metadata, value);
185
+ if (newValue !== void 0) {
186
+ assertValidReturnValue(kind, newValue);
187
+ if (kind === 0) {
188
+ init = newValue;
189
+ } else if (kind === 1) {
190
+ init = newValue.init;
191
+ get = newValue.get || value.get;
192
+ set = newValue.set || value.set;
193
+ value = {
194
+ get: get,
195
+ set: set
196
+ };
197
+ } else {
198
+ value = newValue;
199
+ }
200
+ }
201
+ } else {
202
+ for(var i = decs.length - 1; i >= 0; i--){
203
+ var dec = decs[i];
204
+ newValue = memberDec(dec, name, desc, initializers, kind, isStatic, isPrivate, metadata, value);
205
+ if (newValue !== void 0) {
206
+ assertValidReturnValue(kind, newValue);
207
+ var newInit;
208
+ if (kind === 0) {
209
+ newInit = newValue;
210
+ } else if (kind === 1) {
211
+ newInit = newValue.init;
212
+ get = newValue.get || value.get;
213
+ set = newValue.set || value.set;
214
+ value = {
215
+ get: get,
216
+ set: set
217
+ };
218
+ } else {
219
+ value = newValue;
220
+ }
221
+ if (newInit !== void 0) {
222
+ if (init === void 0) {
223
+ init = newInit;
224
+ } else if (typeof init === "function") {
225
+ init = [
226
+ init,
227
+ newInit
228
+ ];
229
+ } else {
230
+ init.push(newInit);
231
+ }
232
+ }
233
+ }
234
+ }
235
+ }
236
+ if (kind === 0 || kind === 1) {
237
+ if (init === void 0) {
238
+ init = function(instance, init) {
239
+ return init;
240
+ };
241
+ } else if (typeof init !== "function") {
242
+ var ownInitializers = init;
243
+ init = function(instance, init) {
244
+ var value = init;
245
+ for(var i = 0; i < ownInitializers.length; i++){
246
+ value = ownInitializers[i].call(instance, value);
247
+ }
248
+ return value;
249
+ };
250
+ } else {
251
+ var originalInitializer = init;
252
+ init = function(instance, init) {
253
+ return originalInitializer.call(instance, init);
254
+ };
255
+ }
256
+ ret.push(init);
257
+ }
258
+ if (kind !== 0) {
259
+ if (kind === 1) {
260
+ desc.get = value.get;
261
+ desc.set = value.set;
262
+ } else if (kind === 2) {
263
+ desc.value = value;
264
+ } else if (kind === 3) {
265
+ desc.get = value;
266
+ } else if (kind === 4) {
267
+ desc.set = value;
268
+ }
269
+ if (isPrivate) {
270
+ if (kind === 1) {
271
+ ret.push(function(instance, args) {
272
+ return value.get.call(instance, args);
273
+ });
274
+ ret.push(function(instance, args) {
275
+ return value.set.call(instance, args);
276
+ });
277
+ } else if (kind === 2) {
278
+ ret.push(value);
279
+ } else {
280
+ ret.push(function(instance, args) {
281
+ return value.call(instance, args);
282
+ });
283
+ }
284
+ } else {
285
+ Object.defineProperty(base, name, desc);
286
+ }
287
+ }
288
+ }
289
+ function applyMemberDecs(Class, decInfos, metadata) {
290
+ var ret = [];
291
+ var protoInitializers;
292
+ var staticInitializers;
293
+ var existingProtoNonFields = new Map();
294
+ var existingStaticNonFields = new Map();
295
+ for(var i = 0; i < decInfos.length; i++){
296
+ var decInfo = decInfos[i];
297
+ if (!Array.isArray(decInfo)) continue;
298
+ var kind = decInfo[1];
299
+ var name = decInfo[2];
300
+ var isPrivate = decInfo.length > 3;
301
+ var isStatic = kind >= 5;
302
+ var base;
303
+ var initializers;
304
+ if (isStatic) {
305
+ base = Class;
306
+ kind = kind - 5;
307
+ staticInitializers = staticInitializers || [];
308
+ initializers = staticInitializers;
309
+ } else {
310
+ base = Class.prototype;
311
+ protoInitializers = protoInitializers || [];
312
+ initializers = protoInitializers;
313
+ }
314
+ if (kind !== 0 && !isPrivate) {
315
+ var existingNonFields = isStatic ? existingStaticNonFields : existingProtoNonFields;
316
+ var existingKind = existingNonFields.get(name) || 0;
317
+ if (existingKind === true || existingKind === 3 && kind !== 4 || existingKind === 4 && kind !== 3) {
318
+ throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + name);
319
+ } else if (!existingKind && kind > 2) {
320
+ existingNonFields.set(name, kind);
321
+ } else {
322
+ existingNonFields.set(name, true);
323
+ }
324
+ }
325
+ applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, initializers, metadata);
326
+ }
327
+ pushInitializers(ret, protoInitializers);
328
+ pushInitializers(ret, staticInitializers);
329
+ return ret;
330
+ }
331
+ function pushInitializers(ret, initializers) {
332
+ if (initializers) {
333
+ ret.push(function(instance) {
334
+ for(var i = 0; i < initializers.length; i++){
335
+ initializers[i].call(instance);
336
+ }
337
+ return instance;
338
+ });
339
+ }
340
+ }
341
+ function applyClassDecs(targetClass, classDecs, metadata) {
342
+ if (classDecs.length > 0) {
343
+ var initializers = [];
344
+ var newClass = targetClass;
345
+ var name = targetClass.name;
346
+ for(var i = classDecs.length - 1; i >= 0; i--){
347
+ var decoratorFinishedRef = {
348
+ v: false
349
+ };
350
+ try {
351
+ var nextNewClass = classDecs[i](newClass, {
352
+ kind: "class",
353
+ name: name,
354
+ addInitializer: createAddInitializerMethod(initializers, decoratorFinishedRef),
355
+ metadata
356
+ });
357
+ } finally{
358
+ decoratorFinishedRef.v = true;
359
+ }
360
+ if (nextNewClass !== undefined) {
361
+ assertValidReturnValue(10, nextNewClass);
362
+ newClass = nextNewClass;
363
+ }
364
+ }
365
+ return [
366
+ defineMetadata(newClass, metadata),
367
+ function() {
368
+ for(var i = 0; i < initializers.length; i++){
369
+ initializers[i].call(newClass);
370
+ }
371
+ }
372
+ ];
373
+ }
374
+ }
375
+ function defineMetadata(Class, metadata) {
376
+ return Object.defineProperty(Class, Symbol.metadata || Symbol.for("Symbol.metadata"), {
377
+ configurable: true,
378
+ enumerable: true,
379
+ value: metadata
380
+ });
381
+ }
382
+ return function applyDecs2203R(targetClass, memberDecs, classDecs, parentClass) {
383
+ if (parentClass !== void 0) {
384
+ var parentMetadata = parentClass[Symbol.metadata || Symbol.for("Symbol.metadata")];
385
+ }
386
+ var metadata = Object.create(parentMetadata === void 0 ? null : parentMetadata);
387
+ var e = applyMemberDecs(targetClass, memberDecs, metadata);
388
+ if (!classDecs.length) defineMetadata(targetClass, metadata);
389
+ return {
390
+ e: e,
391
+ get c () {
392
+ return applyClassDecs(targetClass, classDecs, metadata);
393
+ }
394
+ };
395
+ };
396
+ }
397
+ function _apply_decs_2203_r$1(targetClass, memberDecs, classDecs, parentClass) {
398
+ return (_apply_decs_2203_r$1 = applyDecs2203RFactory$1())(targetClass, memberDecs, classDecs, parentClass);
399
+ }
400
+ function _identity$1(x) {
401
+ return x;
402
+ }
403
+ var _dec$1, _initClass$1, _ViElement, _dec1$1, _dec2$1, _dec3$1, _dec4$1, _dec5$1, _dec6$1, _dec7$1, _dec8$1, _dec9$1, _dec10, /** Colour variant */ _init_variant, /** Visual appearance mode */ _init_appearance, /** Size scale */ _init_size$1, /** Fully rounded pill shape (9999px radius) */ _init_pill, /** Status dot indicator prefix */ _init_dot, /** Suffix count badge value */ _init_count, /** Show remove button */ _init_removable, /** Interactive selectable filter mode */ _init_selectable, /** Selected/active state */ _init_selected, /** Disable interactions */ _init_disabled$1, _initProto$1;
404
+ let _ViTag;
405
+ _dec$1 = customElement('vi-tag'), _dec1$1 = property({
406
+ type: String,
407
+ reflect: true
408
+ }), _dec2$1 = property({
409
+ type: String,
410
+ reflect: true
411
+ }), _dec3$1 = property({
412
+ type: String,
413
+ reflect: true
414
+ }), _dec4$1 = property({
415
+ type: Boolean,
416
+ reflect: true
417
+ }), _dec5$1 = property({
418
+ type: Boolean,
419
+ reflect: true
420
+ }), _dec6$1 = property({
421
+ type: Number
422
+ }), _dec7$1 = property({
423
+ type: Boolean
424
+ }), _dec8$1 = property({
425
+ type: Boolean,
426
+ reflect: true
427
+ }), _dec9$1 = property({
428
+ type: Boolean,
429
+ reflect: true
430
+ }), _dec10 = property({
431
+ type: Boolean,
432
+ reflect: true
433
+ });
434
+ new class extends _identity$1 {
435
+ constructor(){
436
+ super(_ViTag), _initClass$1();
437
+ }
438
+ static{
439
+ class ViTag extends (_ViElement = ViElement) {
440
+ static{
441
+ ({ e: [_init_variant, _init_appearance, _init_size$1, _init_pill, _init_dot, _init_count, _init_removable, _init_selectable, _init_selected, _init_disabled$1, _initProto$1], c: [_ViTag, _initClass$1] } = _apply_decs_2203_r$1(this, [
442
+ [
443
+ _dec1$1,
444
+ 1,
445
+ "variant"
446
+ ],
447
+ [
448
+ _dec2$1,
449
+ 1,
450
+ "appearance"
451
+ ],
452
+ [
453
+ _dec3$1,
454
+ 1,
455
+ "size"
456
+ ],
457
+ [
458
+ _dec4$1,
459
+ 1,
460
+ "pill"
461
+ ],
462
+ [
463
+ _dec5$1,
464
+ 1,
465
+ "dot"
466
+ ],
467
+ [
468
+ _dec6$1,
469
+ 1,
470
+ "count"
471
+ ],
472
+ [
473
+ _dec7$1,
474
+ 1,
475
+ "removable"
476
+ ],
477
+ [
478
+ _dec8$1,
479
+ 1,
480
+ "selectable"
481
+ ],
482
+ [
483
+ _dec9$1,
484
+ 1,
485
+ "selected"
486
+ ],
487
+ [
488
+ _dec10,
489
+ 1,
490
+ "disabled"
491
+ ]
492
+ ], [
493
+ _dec$1
494
+ ], _ViElement));
495
+ }
496
+ static styles = css`
497
+ ${unsafeCSS(tagStyles)}
498
+ `;
499
+ #___private_variant_1 = (_initProto$1(this), _init_variant(this, 'neutral'));
500
+ get variant() {
501
+ return this.#___private_variant_1;
502
+ }
503
+ set variant(_v) {
504
+ this.#___private_variant_1 = _v;
505
+ }
506
+ #___private_appearance_2 = _init_appearance(this, 'subtle');
507
+ get appearance() {
508
+ return this.#___private_appearance_2;
509
+ }
510
+ set appearance(_v) {
511
+ this.#___private_appearance_2 = _v;
512
+ }
513
+ #___private_size_3 = _init_size$1(this, 'md');
514
+ get size() {
515
+ return this.#___private_size_3;
516
+ }
517
+ set size(_v) {
518
+ this.#___private_size_3 = _v;
519
+ }
520
+ #___private_pill_4 = _init_pill(this, false);
521
+ get pill() {
522
+ return this.#___private_pill_4;
523
+ }
524
+ set pill(_v) {
525
+ this.#___private_pill_4 = _v;
526
+ }
527
+ #___private_dot_5 = _init_dot(this, false);
528
+ get dot() {
529
+ return this.#___private_dot_5;
530
+ }
531
+ set dot(_v) {
532
+ this.#___private_dot_5 = _v;
533
+ }
534
+ #___private_count_6 = _init_count(this, undefined);
535
+ get count() {
536
+ return this.#___private_count_6;
537
+ }
538
+ set count(_v) {
539
+ this.#___private_count_6 = _v;
540
+ }
541
+ #___private_removable_7 = _init_removable(this, false);
542
+ get removable() {
543
+ return this.#___private_removable_7;
544
+ }
545
+ set removable(_v) {
546
+ this.#___private_removable_7 = _v;
547
+ }
548
+ #___private_selectable_8 = _init_selectable(this, false);
549
+ get selectable() {
550
+ return this.#___private_selectable_8;
551
+ }
552
+ set selectable(_v) {
553
+ this.#___private_selectable_8 = _v;
554
+ }
555
+ #___private_selected_9 = _init_selected(this, false);
556
+ get selected() {
557
+ return this.#___private_selected_9;
558
+ }
559
+ set selected(_v) {
560
+ this.#___private_selected_9 = _v;
561
+ }
562
+ #___private_disabled_10 = _init_disabled$1(this, false);
563
+ get disabled() {
564
+ return this.#___private_disabled_10;
565
+ }
566
+ set disabled(_v) {
567
+ this.#___private_disabled_10 = _v;
568
+ }
569
+ static _iconsRegistered = false;
570
+ connectedCallback() {
571
+ super.connectedCallback();
572
+ if (!ViTag._iconsRegistered) {
573
+ registerIcons([
574
+ xIcon,
575
+ checkIcon
576
+ ]);
577
+ ViTag._iconsRegistered = true;
578
+ }
579
+ if (this.closest('[role="list"]') !== null && !this.hasAttribute('role')) {
580
+ this.setAttribute('role', 'listitem');
581
+ }
582
+ }
583
+ _handleTagClick(_e) {
584
+ if (this.disabled || !this.selectable) return;
585
+ this.selected = !this.selected;
586
+ this.dispatchEvent(new CustomEvent('vi-tag-select', {
587
+ bubbles: true,
588
+ composed: true,
589
+ detail: {
590
+ selected: this.selected
591
+ }
592
+ }));
593
+ }
594
+ _handleRemoveClick(e) {
595
+ e.stopPropagation();
596
+ if (this.disabled) return;
597
+ this._fireRemoveEvent();
598
+ }
599
+ _handleKeyDown(e) {
600
+ if (this.disabled) return;
601
+ if (this.removable && (e.key === 'Delete' || e.key === 'Backspace')) {
602
+ e.preventDefault();
603
+ this._fireRemoveEvent();
604
+ } else if ((e.key === 'Enter' || e.key === ' ') && this.selectable) {
605
+ e.preventDefault();
606
+ this._handleTagClick();
607
+ }
608
+ }
609
+ _handleSlotChange() {
610
+ this.requestUpdate();
611
+ }
612
+ _fireRemoveEvent() {
613
+ this.dispatchEvent(new CustomEvent('vi-tag-remove', {
614
+ bubbles: true,
615
+ composed: true
616
+ }));
617
+ }
618
+ get _removeLabel() {
619
+ return `Remove ${this.textContent?.trim() || 'tag'}`;
620
+ }
621
+ render() {
622
+ const isTabbable = (this.selectable || this.removable) && !this.disabled;
623
+ const classes = {
624
+ 'tag': true,
625
+ [`variant-${this.variant}`]: true,
626
+ [`appearance-${this.appearance}`]: true,
627
+ [`size-${this.size}`]: true,
628
+ 'tag--pill': this.pill,
629
+ 'tag--removable': this.removable,
630
+ 'tag-clickable': !this.disabled && this.selectable,
631
+ 'tag-selected': this.selected,
632
+ 'is-disabled': this.disabled
633
+ };
634
+ return html`
635
+ <span
636
+ part="tag"
637
+ class=${classMap(classes)}
638
+ aria-disabled=${this.disabled ? 'true' : 'false'}
639
+ >
640
+ <span
641
+ class="tag-content-wrapper"
642
+ role=${this.selectable ? 'button' : nothing}
643
+ tabindex=${this.disabled ? '-1' : isTabbable ? 0 : nothing}
644
+ aria-disabled=${this.disabled ? 'true' : 'false'}
645
+ aria-pressed=${this.selectable ? this.selected ? 'true' : 'false' : nothing}
646
+ @click=${this.selectable ? this._handleTagClick : nothing}
647
+ @keydown=${this._handleKeyDown}
648
+ >
649
+ ${this.dot ? html`<span part="dot" class="tag-dot" aria-hidden="true"></span>` : ''}
650
+ ${this.selectable && this.selected ? html`
651
+ <span part="checkmark" class="tag-checkmark" aria-hidden="true">
652
+ <vi-icon name="check" size="12"></vi-icon>
653
+ </span>
654
+ ` : ''}
655
+ <span part="avatar" class="tag-avatar">
656
+ <slot name="avatar"></slot>
657
+ </span>
658
+ <span part="icon" class="tag-icon">
659
+ <slot name="icon"></slot>
660
+ </span>
661
+ <span part="label" class="tag-label">
662
+ <slot @slotchange=${this._handleSlotChange}></slot>
663
+ </span>
664
+ ${this.count !== undefined ? html`<span part="count" class="tag-count">${this.count}</span>` : ''}
665
+ <slot name="suffix"></slot>
666
+ </span>
667
+ ${this.removable ? html`
668
+ <vi-button
669
+ part="remove-btn"
670
+ exportparts="button: remove-btn-button, icon: remove-btn-icon"
671
+ class="tag-remove-btn"
672
+ variant="ghost"
673
+ size="xs"
674
+ icon-only
675
+ ?disabled=${this.disabled}
676
+ @click=${this._handleRemoveClick}
677
+ >
678
+ <vi-icon slot="icon" name="x" size="12" aria-hidden="true"></vi-icon>
679
+ <span class="sr-only">${this._removeLabel}</span>
680
+ </vi-button>
681
+ ` : ''}
682
+ </span>
683
+ `;
684
+ }
685
+ }
686
+ }
687
+ }();
23
688
 
24
689
  const switchStyles = "@charset \"UTF-8\";@layer reset,components,utilities;@layer components{.switch-wrapper{display:inline-flex;align-items:flex-start;gap:var(--vi-switch-label-gap, 8px);cursor:pointer;font-family:var(--vi-font-family-base, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);font-size:var(--vi-switch-label-font-size, var(--vi-font-size-base, 16px));line-height:var(--vi-line-height-normal, 1.5);color:var(--vi-switch-label-color, var(--vi-text-primary, #111827));-webkit-user-select:none;user-select:none}.switch-label{flex:1 1 auto;min-width:0;word-break:break-word;overflow-wrap:break-word}.switch-input{position:absolute!important;clip-path:inset(50%)!important;overflow:hidden!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;border:0!important;white-space:nowrap!important}.switch-track{box-sizing:border-box;position:relative;width:var(--vi-switch-track-width, 44px);height:var(--vi-switch-track-height, 24px);background-color:var(--vi-switch-track-color-off, var(--vi-border-03, #e0e0e0));border-radius:var(--vi-border-radius-full, 9999px);transition:background-color var(--vi-switch-transition-duration, .15s) ease;flex-shrink:0;margin-top:calc((1em * var(--vi-line-height-normal, 1.5) - var(--vi-switch-track-height, 24px)) / 2)}.switch-thumb{position:absolute;top:50%;left:var(--vi-switch-thumb-offset, 2px);transform:translateY(-50%);width:var(--vi-switch-thumb-size, 18px);height:var(--vi-switch-thumb-size, 18px);background-color:var(--vi-switch-thumb-color, var(--vi-text-primary-inverse, #ffffff));border-radius:50%;box-shadow:var(--vi-switch-thumb-shadow, 0 1px 3px rgba(0, 0, 0, .2));transition:left var(--vi-switch-transition-duration, .15s) ease}.switch-input:checked~.switch-track{background-color:var(--vi-switch-track-color-on, var(--vi-color-primary, #3676d0))}.switch-input:checked~.switch-track .switch-thumb{left:calc(100% - var(--vi-switch-thumb-size, 18px) - var(--vi-switch-thumb-offset, 2px))}.switch-input:focus-visible~.switch-track{outline:var(--vi-border-width-base, 2px) solid var(--vi-switch-focus-ring-color, var(--vi-focus, #3676d0));outline-offset:2px;box-shadow:0 0 0 3px var(--vi-switch-focus-ring-glow, var(--vi-color-blue-200, #cee6ff))}.switch-wrapper--disabled{cursor:not-allowed;opacity:var(--vi-switch-disabled-opacity, .5)}.switch-wrapper--disabled .switch-track{background-color:var(--vi-border-03, #e0e0e0)}.switch-wrapper--disabled .switch-input:checked~.switch-track{background-color:var(--vi-text-disabled, #9e9e9e)}@media(prefers-reduced-motion:reduce){.switch-track,.switch-thumb{transition:none}}}:host{display:inline-block;outline:none}:host([disabled]){cursor:not-allowed;pointer-events:none}::slotted(*){font-family:inherit;font-size:inherit;color:inherit}:host([size=sm]){--vi-switch-track-width: 36px;--vi-switch-track-height: 20px;--vi-switch-thumb-size: 14px}:host([size=md]){--vi-switch-track-width: 44px;--vi-switch-track-height: 24px;--vi-switch-thumb-size: 18px}:host([size=lg]){--vi-switch-track-width: 52px;--vi-switch-track-height: 28px;--vi-switch-thumb-size: 22px}";
25
690
 
@@ -646,4 +1311,4 @@ new class extends _identity {
646
1311
  }
647
1312
  }();
648
1313
 
649
- export { ViElement, _ViSwitch as ViSwitch };
1314
+ export { ViElement, _ViSwitch as ViSwitch, _ViTag as ViTag, registerIcons };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vialiq/web-components",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -103,8 +103,8 @@
103
103
  },
104
104
  "peerDependencies": {
105
105
  "@floating-ui/dom": ">=1.0.0",
106
- "@vialiq/flux-ui": "^0.13.0",
107
- "@vialiq/icons": "^0.3.0",
106
+ "@vialiq/flux-ui": "^0.14.0",
107
+ "@vialiq/icons": ">=0.0.3 <0.1.0",
108
108
  "lit": "^3.0.0"
109
109
  },
110
110
  "keywords": [