@shival99/z-ui 2.1.21 → 2.1.22

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.
Files changed (27) hide show
  1. package/README.md +8 -27
  2. package/assets/css/tailwind.css +1 -1
  3. package/assets/css/themes.css +9 -0
  4. package/components/z-loading/THIRD_PARTY_NOTICES.md +26 -0
  5. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +6 -0
  6. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
  7. package/fesm2022/shival99-z-ui-components-z-icon.mjs +28 -23
  8. package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -1
  9. package/fesm2022/shival99-z-ui-components-z-loading.mjs +52 -14
  10. package/fesm2022/shival99-z-ui-components-z-loading.mjs.map +1 -1
  11. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +12 -3
  12. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
  13. package/fesm2022/shival99-z-ui-services.mjs +4 -42
  14. package/fesm2022/shival99-z-ui-services.mjs.map +1 -1
  15. package/package.json +77 -24
  16. package/types/shival99-z-ui-components-z-autocomplete.d.ts +1 -1
  17. package/types/shival99-z-ui-components-z-calendar.d.ts +4 -4
  18. package/types/shival99-z-ui-components-z-editor.d.ts +1 -1
  19. package/types/shival99-z-ui-components-z-icon.d.ts +1 -1
  20. package/types/shival99-z-ui-components-z-loading.d.ts +13 -5
  21. package/types/shival99-z-ui-components-z-modal.d.ts +1 -1
  22. package/types/shival99-z-ui-components-z-popover.d.ts +1 -1
  23. package/types/shival99-z-ui-components-z-select.d.ts +1 -1
  24. package/types/shival99-z-ui-components-z-table.d.ts +5 -5
  25. package/types/shival99-z-ui-components-z-tabs.d.ts +7 -5
  26. package/types/shival99-z-ui-components-z-upload.d.ts +3 -3
  27. package/types/shival99-z-ui-services.d.ts +1 -2
@@ -49,17 +49,23 @@ class ZLoadingComponent {
49
49
  zSize: this.zSize(),
50
50
  zColor: this.zColor(),
51
51
  }), this.class()), ...(ngDevMode ? [{ debugName: "spinnerClasses" }] : []));
52
- baseClasses = computed(() => {
53
- const size = this.zSize();
54
- const sizeClass = {
55
- '2xs': 'size-3',
56
- xs: 'size-4',
57
- default: 'size-6',
58
- lg: 'size-8',
59
- xl: 'size-12',
60
- }[size];
61
- return zMergeClasses('inline-block', sizeClass, `text-${this.zColor()}`, this.class());
62
- }, ...(ngDevMode ? [{ debugName: "baseClasses" }] : []));
52
+ loaderClasses = computed(() => zMergeClasses('z-loading-loader', {
53
+ 'z-loading-size-2xs': this.zSize() === '2xs',
54
+ 'z-loading-size-xs': this.zSize() === 'xs',
55
+ 'z-loading-size-default': this.zSize() === 'default',
56
+ 'z-loading-size-lg': this.zSize() === 'lg',
57
+ 'z-loading-size-xl': this.zSize() === 'xl',
58
+ 'text-primary': this.zColor() === 'primary',
59
+ 'text-secondary-foreground': this.zColor() === 'secondary',
60
+ 'text-white': this.zColor() === 'white',
61
+ 'text-current': this.zColor() === 'current',
62
+ }, this.class()), ...(ngDevMode ? [{ debugName: "loaderClasses" }] : []));
63
+ circleRings = [0, 1, 2, 3, 4];
64
+ fadeBars = [0, 1, 2, 3, 4, 5, 6, 7];
65
+ gridDots = [0, 1, 2, 3, 4, 5, 6, 7, 8];
66
+ pacmanDots = [0, 1, 2, 3];
67
+ propagateDots = [0, 1, 2, 3, 4, 5];
68
+ scaleBars = [0, 1, 2, 3, 4];
63
69
  overlayClasses = computed(() => `z-loading-overlay-${this.zOverlayType()}`, ...(ngDevMode ? [{ debugName: "overlayClasses" }] : []));
64
70
  textSizeClasses = computed(() => {
65
71
  const size = this.zSize();
@@ -88,18 +94,50 @@ class ZLoadingComponent {
88
94
  }, 100);
89
95
  }
90
96
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ZLoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
91
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: ZLoadingComponent, isStandalone: true, selector: "z-loading", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zSpinner: { classPropertyName: "zSpinner", publicName: "zSpinner", isSignal: true, isRequired: false, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zColor: { classPropertyName: "zColor", publicName: "zColor", isSignal: true, isRequired: false, transformFunction: null }, zText: { classPropertyName: "zText", publicName: "zText", isSignal: true, isRequired: false, transformFunction: null }, zOverlay: { classPropertyName: "zOverlay", publicName: "zOverlay", isSignal: true, isRequired: false, transformFunction: null }, zOverlayType: { classPropertyName: "zOverlayType", publicName: "zOverlayType", isSignal: true, isRequired: false, transformFunction: null }, zFullscreen: { classPropertyName: "zFullscreen", publicName: "zFullscreen", isSignal: true, isRequired: false, transformFunction: null }, zLoading: { classPropertyName: "zLoading", publicName: "zLoading", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "z-loading inline-flex" }, ngImport: i0, template: "@if (!zOverlay() && !zFullscreen()) {\n <div\n class=\"z-loading-wrapper inline-flex items-center justify-center transition-opacity duration-150\"\n [class.opacity-0]=\"!zLoading()\"\n [class.pointer-events-none]=\"!zLoading()\">\n <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n </div>\n}\n\n@if ((zOverlay() || zFullscreen()) && isVisible()) {\n <div\n class=\"z-loading-wrapper inline-flex items-center justify-center\"\n [class.z-loading-overlay]=\"zOverlay()\"\n [class.z-loading-fullscreen]=\"zFullscreen()\"\n [class.z-loading-leaving]=\"isLeaving()\"\n [class]=\"overlayClasses()\">\n <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n </div>\n}\n\n<ng-template #spinnerContent>\n <div class=\"z-loading-content flex flex-col items-center justify-center gap-3\">\n @switch (zSpinner()) {\n @case ('spinner') {\n <svg [class]=\"spinnerClasses()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\n </svg>\n }\n @case ('orbit') {\n <div [class]=\"spinnerClasses()\" class=\"z-loading-orbit relative\">\n <div class=\"absolute top-1/2 left-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current\"></div>\n <div class=\"absolute top-1/2 right-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current opacity-30\"></div>\n </div>\n }\n @case ('matrix') {\n <div [class]=\"baseClasses()\" class=\"z-loading-matrix\"></div>\n }\n @case ('conic') {\n <div [class]=\"baseClasses()\" class=\"z-loading-conic rounded-full\"></div>\n }\n @case ('polygon') {\n <div [class]=\"baseClasses()\" class=\"z-loading-polygon rounded-full\"></div>\n }\n @case ('triple') {\n <div [class]=\"baseClasses()\" class=\"z-loading-triple rounded-full\"></div>\n }\n }\n\n @if (zText()) {\n <p [class]=\"textSizeClasses()\" class=\"z-loading-text font-medium\" [style.color]=\"'currentColor'\">\n {{ zText() }}\n </p>\n }\n </div>\n</ng-template>\n", styles: [".z-loading:has(.z-loading-overlay),.z-loading:has(.z-loading-fullscreen){display:contents}.z-loading-overlay,.z-loading-fullscreen{position:absolute;inset:0;z-index:150;display:flex;align-items:center;justify-content:center}.z-loading-fullscreen{position:fixed;z-index:9999}.z-loading-overlay-dark{background-color:#0009;animation:z-backdrop-enter .15s ease-out forwards}.z-loading-overlay-blur{background-color:#0000000d;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:z-backdrop-enter .15s ease-out forwards}.z-loading-overlay-default{background-color:var(--loading-overlay-bg, rgba(255, 255, 255, .85));animation:z-backdrop-enter .15s ease-out forwards}.dark .z-loading-overlay-default{background-color:#000000d9}.z-loading-leaving.z-loading-overlay-dark,.z-loading-leaving.z-loading-overlay-blur,.z-loading-leaving.z-loading-overlay-default{animation:z-backdrop-exit .12s ease-in forwards}.z-loading-content{position:relative;z-index:51}.z-loading-orbit{animation:z-loading-spin 1.2s linear infinite}.z-loading-matrix{width:1.5rem;height:1.3125rem;background:linear-gradient(transparent 16.6666666667%,currentColor 0 50%,transparent 0),linear-gradient(transparent 33.3333333333%,currentColor 0 66.6666666667%,transparent 0),linear-gradient(transparent 50%,currentColor 0 83.3333333333%,transparent 0);background-size:6px 400%;background-repeat:no-repeat;animation:z-loading-matrix 1s infinite linear}.z-loading-matrix.size-8{width:2rem;height:1.75rem;background-size:8px 400%}.z-loading-matrix.size-12{width:3rem;height:2.625rem;background-size:12px 400%}.z-loading-conic{padding:.5rem;aspect-ratio:1;background:currentColor;-webkit-mask:conic-gradient(transparent 10%,#000),linear-gradient(#000 0 0) content-box;mask:conic-gradient(transparent 10%,#000),linear-gradient(#000 0 0) content-box;-webkit-mask-composite:source-out;mask-composite:subtract;animation:z-loading-conic 1s infinite linear}.z-loading-polygon{aspect-ratio:1;border:8px solid currentColor;animation:z-loading-polygon-1 .8s infinite linear alternate,z-loading-polygon-2 1.6s infinite linear}.z-loading-triple{aspect-ratio:1;border:8px solid transparent;border-right-color:currentColor;position:relative;animation:z-loading-triple 1s infinite linear}.z-loading-triple:before,.z-loading-triple:after{content:\"\";position:absolute;inset:-.5rem;border-radius:50%;border:inherit;animation:inherit}.z-loading-triple:before{animation-duration:2s;opacity:.6}.z-loading-triple:after{animation-duration:4s;opacity:.3}@keyframes z-loading-matrix{0%{background-position:0% 100%,50% 100%,100% 100%}to{background-position:0% 0%,50% 0%,100% 0%}}@keyframes z-loading-conic{to{transform:rotate(1turn)}}@keyframes z-loading-polygon-1{0%{clip-path:polygon(50% 50%,0 0,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%)}12.5%{clip-path:polygon(50% 50%,0 0,50% 0%,100% 0%,100% 0%,100% 0%,100% 0%)}25%{clip-path:polygon(50% 50%,0 0,50% 0%,100% 0%,100% 100%,100% 100%,100% 100%)}50%{clip-path:polygon(50% 50%,0 0,50% 0%,100% 0%,100% 100%,50% 100%,0% 100%)}62.5%{clip-path:polygon(50% 50%,100% 0,100% 0%,100% 0%,100% 100%,50% 100%,0% 100%)}75%{clip-path:polygon(50% 50%,100% 100%,100% 100%,100% 100%,100% 100%,50% 100%,0% 100%)}to{clip-path:polygon(50% 50%,50% 100%,50% 100%,50% 100%,50% 100%,50% 100%,0% 100%)}}@keyframes z-loading-polygon-2{0%{transform:scaleY(1) rotate(0)}49.99%{transform:scaleY(1) rotate(135deg)}50%{transform:scaleY(-1) rotate(0)}to{transform:scaleY(-1) rotate(-135deg)}}@keyframes z-loading-triple{to{transform:rotate(1turn)}}@keyframes z-loading-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
97
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: ZLoadingComponent, isStandalone: true, selector: "z-loading", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zSpinner: { classPropertyName: "zSpinner", publicName: "zSpinner", isSignal: true, isRequired: false, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zColor: { classPropertyName: "zColor", publicName: "zColor", isSignal: true, isRequired: false, transformFunction: null }, zText: { classPropertyName: "zText", publicName: "zText", isSignal: true, isRequired: false, transformFunction: null }, zOverlay: { classPropertyName: "zOverlay", publicName: "zOverlay", isSignal: true, isRequired: false, transformFunction: null }, zOverlayType: { classPropertyName: "zOverlayType", publicName: "zOverlayType", isSignal: true, isRequired: false, transformFunction: null }, zFullscreen: { classPropertyName: "zFullscreen", publicName: "zFullscreen", isSignal: true, isRequired: false, transformFunction: null }, zLoading: { classPropertyName: "zLoading", publicName: "zLoading", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "z-loading inline-flex" }, ngImport: i0, template: "@if (!zOverlay() && !zFullscreen()) {\n <div\n class=\"z-loading-wrapper inline-flex items-center justify-center transition-opacity duration-150\"\n [class.opacity-0]=\"!zLoading()\"\n [class.pointer-events-none]=\"!zLoading()\">\n <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n </div>\n}\n\n@if ((zOverlay() || zFullscreen()) && isVisible()) {\n <div\n class=\"z-loading-wrapper inline-flex items-center justify-center\"\n [class.z-loading-overlay]=\"zOverlay()\"\n [class.z-loading-fullscreen]=\"zFullscreen()\"\n [class.z-loading-leaving]=\"isLeaving()\"\n [class]=\"overlayClasses()\">\n <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n </div>\n}\n\n<ng-template #spinnerContent>\n <div\n class=\"z-loading-content flex flex-col items-center justify-center gap-3\"\n [attr.data-z-loading-spinner]=\"zSpinner()\">\n @switch (zSpinner()) {\n @case ('spinner') {\n <svg [class]=\"spinnerClasses()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\n </svg>\n }\n @case ('orbit') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-orbit\">\n <div class=\"absolute top-1/2 left-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current\"></div>\n <div class=\"absolute top-1/2 right-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current opacity-30\"></div>\n </div>\n }\n @case ('matrix') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-matrix\"></div>\n }\n @case ('conic') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-conic rounded-full\"></div>\n }\n @case ('polygon') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-polygon rounded-full\"></div>\n }\n @case ('triple') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-triple rounded-full\"></div>\n }\n @case ('bar') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-bar\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('beat') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-beat\">\n <i></i>\n <i></i>\n <i></i>\n </span>\n }\n @case ('bounce') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-bounce\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('circle') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-circle\">\n @for (ring of circleRings; track ring) {\n <i [style.--z-index]=\"ring\"></i>\n }\n </span>\n }\n @case ('climbing-box') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-climbing-box\">\n <i></i>\n <b></b>\n </span>\n }\n @case ('clip') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-clip\"></span>\n }\n @case ('clock') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-clock\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('dot') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-dot\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('fade') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-fade\">\n @for (bar of fadeBars; track bar) {\n <i [style.--z-index]=\"bar\"></i>\n }\n </span>\n }\n @case ('grid') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-grid\">\n @for (dot of gridDots; track dot) {\n <i [style.--z-index]=\"dot\"></i>\n }\n </span>\n }\n @case ('hash') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-hash\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('moon') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-moon\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('pacman') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-pacman\">\n <i></i>\n <i></i>\n @for (dot of pacmanDots; track dot) {\n <b [style.--z-index]=\"dot\"></b>\n }\n </span>\n }\n @case ('propagate') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-propagate\">\n @for (dot of propagateDots; track dot) {\n <i [style.--z-index]=\"dot\"></i>\n }\n </span>\n }\n @case ('puff') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-puff\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('pulse') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-pulse\">\n <i></i>\n <i></i>\n <i></i>\n </span>\n }\n @case ('ring') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-ring\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('rise') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-rise\">\n <i></i>\n <i></i>\n <i></i>\n <i></i>\n <i></i>\n </span>\n }\n @case ('rotate') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-rotate\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('scale') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-scale\">\n @for (bar of scaleBars; track bar) {\n <i [style.--z-index]=\"bar\"></i>\n }\n </span>\n }\n @case ('skew') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-skew\"></span>\n }\n @case ('square') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-square\"></span>\n }\n @case ('sync') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-sync\">\n <i></i>\n <i></i>\n <i></i>\n </span>\n }\n }\n\n @if (zText()) {\n <p [class]=\"textSizeClasses()\" class=\"z-loading-text font-medium\" [style.color]=\"'currentColor'\">\n {{ zText() }}\n </p>\n }\n </div>\n</ng-template>\n", styles: [".z-loading:has(.z-loading-overlay),.z-loading:has(.z-loading-fullscreen){display:contents}.z-loading-overlay,.z-loading-fullscreen{position:absolute;inset:0;z-index:150;display:flex;align-items:center;justify-content:center}.z-loading-fullscreen{position:fixed;z-index:9999}.z-loading-overlay-dark{background-color:#0009;animation:z-backdrop-enter .15s ease-out forwards}.z-loading-overlay-blur{background-color:#0000000d;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:z-backdrop-enter .15s ease-out forwards}.z-loading-overlay-default{background-color:var(--loading-overlay-bg, rgba(255, 255, 255, .85));animation:z-backdrop-enter .15s ease-out forwards}.dark .z-loading-overlay-default{background-color:#000000d9}.z-loading-leaving.z-loading-overlay-dark,.z-loading-leaving.z-loading-overlay-blur,.z-loading-leaving.z-loading-overlay-default{animation:z-backdrop-exit .12s ease-in forwards}.z-loading-content{position:relative;z-index:51}.z-loading-loader{--z-loading-size: 1.5rem;--z-loading-stroke: max(2px, calc(var(--z-loading-size) / 12));display:inline-block;flex:none;box-sizing:border-box}.z-loading-loader *,.z-loading-loader *:before,.z-loading-loader *:after{box-sizing:border-box}.z-loading-size-2xs{--z-loading-size: .75rem}.z-loading-size-xs{--z-loading-size: 1rem}.z-loading-size-default{--z-loading-size: 1.5rem}.z-loading-size-lg{--z-loading-size: 2rem}.z-loading-size-xl{--z-loading-size: 3rem}.z-loading-orbit{position:relative;width:var(--z-loading-size);height:var(--z-loading-size);animation:z-loading-spin 1.2s linear infinite}.z-loading-orbit>div{width:calc(var(--z-loading-size) / 4);height:calc(var(--z-loading-size) / 4)}.z-loading-matrix{width:var(--z-loading-size);height:calc(var(--z-loading-size) * .875);background:linear-gradient(transparent 16.6666666667%,currentColor 0 50%,transparent 0),linear-gradient(transparent 33.3333333333%,currentColor 0 66.6666666667%,transparent 0),linear-gradient(transparent 50%,currentColor 0 83.3333333333%,transparent 0);background-size:calc(var(--z-loading-size) / 4) 400%;background-repeat:no-repeat;animation:z-loading-matrix 1s infinite linear}.z-loading-conic{width:var(--z-loading-size);padding:calc(var(--z-loading-size) / 6);aspect-ratio:1;background:currentColor;-webkit-mask:conic-gradient(transparent 10%,#000),linear-gradient(#000 0 0) content-box;mask:conic-gradient(transparent 10%,#000),linear-gradient(#000 0 0) content-box;-webkit-mask-composite:source-out;mask-composite:subtract;animation:z-loading-conic 1s infinite linear}.z-loading-polygon{width:var(--z-loading-size);aspect-ratio:1;border:max(2px,var(--z-loading-size) / 6) solid currentColor;animation:z-loading-polygon-1 .8s infinite linear alternate,z-loading-polygon-2 1.6s infinite linear}.z-loading-triple{width:var(--z-loading-size);aspect-ratio:1;border:var(--z-loading-stroke) solid transparent;border-right-color:currentColor;position:relative;animation:z-loading-triple 1s infinite linear}.z-loading-triple:before,.z-loading-triple:after{content:\"\";position:absolute;inset:calc(var(--z-loading-stroke) * -1);border-radius:50%;border:inherit;animation:inherit}.z-loading-triple:before{animation-duration:2s;opacity:.6}.z-loading-triple:after{animation-duration:4s;opacity:.3}.z-loading-bar{position:relative;width:calc(var(--z-loading-size) * 3);height:var(--z-loading-stroke);overflow:hidden;border-radius:999px;background:color-mix(in srgb,currentColor 20%,transparent)}.z-loading-bar i{position:absolute;inset-block:0;display:block;border-radius:inherit;background:currentColor;will-change:left,right}.z-loading-bar i:first-child{animation:z-loading-bar-long 2.1s infinite cubic-bezier(.65,.815,.735,.395)}.z-loading-bar i:last-child{animation:z-loading-bar-short 2.1s 1.15s infinite cubic-bezier(.165,.84,.44,1)}.z-loading-beat,.z-loading-pulse,.z-loading-sync,.z-loading-rise{display:inline-flex;align-items:center;gap:calc(var(--z-loading-size) / 8)}.z-loading-beat i,.z-loading-pulse i,.z-loading-sync i,.z-loading-rise i{width:calc(var(--z-loading-size) * .38);height:calc(var(--z-loading-size) * .38);border-radius:50%;background:currentColor}.z-loading-beat i{animation:z-loading-beat .7s infinite linear both}.z-loading-beat i:nth-child(2){animation-delay:.35s}.z-loading-bounce,.z-loading-dot,.z-loading-puff,.z-loading-ring{position:relative;width:var(--z-loading-size);height:var(--z-loading-size)}.z-loading-bounce i{position:absolute;inset:0;border-radius:50%;background:currentColor;opacity:.6;animation:z-loading-bounce 2.1s infinite ease-in-out both}.z-loading-bounce i:first-child{animation-delay:1s}.z-loading-circle{position:relative;width:var(--z-loading-size);height:var(--z-loading-size)}.z-loading-circle i{--z-ring-inset: calc(var(--z-index) * var(--z-loading-size) * .035);position:absolute;inset:var(--z-ring-inset);border-top:max(1px,var(--z-loading-stroke) / 2) solid currentColor;border-left:max(1px,var(--z-loading-stroke) / 2) solid currentColor;border-radius:50%;animation:z-loading-circle 1s calc(var(--z-index) * .2s) infinite linear}.z-loading-climbing-box{position:relative;width:calc(var(--z-loading-size) * 1.35);height:var(--z-loading-size);overflow:hidden}.z-loading-climbing-box i{position:absolute;left:8%;bottom:7%;width:22%;height:22%;border:var(--z-loading-stroke) solid currentColor;border-radius:15%;animation:z-loading-climbing-box 2.5s infinite cubic-bezier(.79,0,.47,.97) both}.z-loading-climbing-box b{position:absolute;right:2%;bottom:-48%;width:92%;height:92%;border-left:var(--z-loading-stroke) solid currentColor;transform:rotate(45deg)}.z-loading-clip{width:var(--z-loading-size);height:var(--z-loading-size);border:var(--z-loading-stroke) solid currentColor;border-bottom-color:transparent;border-radius:50%;animation:z-loading-clip .75s infinite linear both}.z-loading-clock{position:relative;width:var(--z-loading-size);height:var(--z-loading-size);border:var(--z-loading-stroke) solid currentColor;border-radius:50%}.z-loading-clock i{position:absolute;top:50%;left:50%;width:40%;height:var(--z-loading-stroke);border-radius:999px;background:currentColor;transform-origin:left center;animation:z-loading-clock 2s linear infinite}.z-loading-clock i:last-child{width:28%;animation-duration:8s}.z-loading-dot{animation:z-loading-spin 2s infinite linear}.z-loading-dot i{position:absolute;width:50%;height:50%;border-radius:50%;background:currentColor;animation:z-loading-dot 2s infinite linear both}.z-loading-dot i:first-child{top:0;left:0}.z-loading-dot i:last-child{right:0;bottom:0;animation-delay:1s}.z-loading-fade{position:relative;width:var(--z-loading-size);height:var(--z-loading-size)}.z-loading-fade i{position:absolute;top:8%;left:44%;width:12%;height:32%;border-radius:999px;background:currentColor;transform:rotate(calc(var(--z-index) * 45deg));transform-origin:50% 132%;animation:z-loading-fade 1.2s calc(var(--z-index) * .12s) infinite ease-in-out both}.z-loading-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:calc(var(--z-loading-size) / 12);width:var(--z-loading-size);height:var(--z-loading-size)}.z-loading-grid i{border-radius:50%;background:currentColor;animation:z-loading-grid .9s calc(var(--z-index) * -.07s) infinite ease both}.z-loading-hash{position:relative;width:var(--z-loading-size);height:var(--z-loading-size);transform:rotate(165deg)}.z-loading-hash i{position:absolute;top:50%;left:50%;width:20%;height:20%;border-radius:999px;transform:translate(-50%,-50%)}.z-loading-hash i:first-child{animation:z-loading-hash-horizontal 2s infinite}.z-loading-hash i:last-child{animation:z-loading-hash-vertical 2s infinite}.z-loading-moon{position:relative;width:var(--z-loading-size);height:var(--z-loading-size);animation:z-loading-spin .6s infinite linear}.z-loading-moon i:first-child{position:absolute;top:42%;left:-8%;width:22%;height:22%;border-radius:50%;background:currentColor;opacity:.8}.z-loading-moon i:last-child{position:absolute;inset:8%;border:calc(var(--z-loading-size) / 8) solid currentColor;border-radius:50%;opacity:.12}.z-loading-pacman{position:relative;width:calc(var(--z-loading-size) * 2.6);height:var(--z-loading-size)}.z-loading-pacman>i{position:absolute;left:0;width:0;height:0;border:calc(var(--z-loading-size) / 2) solid currentColor;border-right-color:transparent;border-radius:50%;animation:z-loading-pacman-top .8s infinite ease-in-out both}.z-loading-pacman>i:nth-child(2){border-top-color:transparent;border-right-color:transparent;animation-name:z-loading-pacman-bottom}.z-loading-pacman b{--z-pacman-dot-size: calc(var(--z-loading-size) / 6);position:absolute;top:calc(50% - var(--z-pacman-dot-size) / 2);left:calc(var(--z-loading-size) * 2.35);width:var(--z-pacman-dot-size);height:var(--z-pacman-dot-size);border-radius:50%;background:currentColor;animation:z-loading-pacman-dot 1s calc(var(--z-index) * .25s) infinite linear both}.z-loading-propagate{position:relative;width:var(--z-loading-size);height:calc(var(--z-loading-size) / 3)}.z-loading-propagate i{position:absolute;left:calc(50% - var(--z-loading-size) / 6);width:calc(var(--z-loading-size) / 3);height:calc(var(--z-loading-size) / 3);border-radius:50%;background:currentColor;animation:z-loading-propagate 1.5s infinite both}.z-loading-propagate i:nth-child(1){--z-propagate-distance: -750%}.z-loading-propagate i:nth-child(2){--z-propagate-distance: -450%}.z-loading-propagate i:nth-child(3){--z-propagate-distance: -150%}.z-loading-propagate i:nth-child(4){--z-propagate-distance: 150%}.z-loading-propagate i:nth-child(5){--z-propagate-distance: 450%}.z-loading-propagate i:nth-child(6){--z-propagate-distance: 750%}.z-loading-puff i{position:absolute;inset:0;border:var(--z-loading-stroke) solid currentColor;border-radius:50%;animation:z-loading-puff-scale 2s infinite cubic-bezier(.165,.84,.44,1) both,z-loading-puff-opacity 2s infinite cubic-bezier(.3,.61,.355,1) both}.z-loading-puff i:first-child{animation-delay:-1s}.z-loading-pulse i{animation:z-loading-pulse .75s infinite cubic-bezier(.2,.68,.18,1.08) both}.z-loading-pulse i:nth-child(2){animation-delay:.12s}.z-loading-pulse i:nth-child(3){animation-delay:.24s}.z-loading-ring{perspective:800px}.z-loading-ring i{position:absolute;inset:0;border:calc(var(--z-loading-size) / 10) solid currentColor;border-radius:50%;opacity:.4;animation:z-loading-ring-right 2s infinite linear both}.z-loading-ring i:last-child{animation-name:z-loading-ring-left}.z-loading-rise i{animation:z-loading-rise-odd 1s infinite cubic-bezier(.15,.46,.9,.6) both}.z-loading-rise i:nth-child(2n){animation-name:z-loading-rise-even}.z-loading-rotate{position:relative;width:calc(var(--z-loading-size) / 3);height:calc(var(--z-loading-size) / 3);border-radius:50%;background:currentColor;animation:z-loading-spin 1s infinite cubic-bezier(.7,-.13,.22,.86) both}.z-loading-rotate i{position:absolute;top:0;width:100%;height:100%;border-radius:inherit;background:currentColor;opacity:.8}.z-loading-rotate i:first-child{left:calc(var(--z-loading-size) * -.75)}.z-loading-rotate i:last-child{right:calc(var(--z-loading-size) * -.75)}.z-loading-scale{display:inline-flex;align-items:center;gap:calc(var(--z-loading-size) / 10);height:var(--z-loading-size)}.z-loading-scale i{width:calc(var(--z-loading-size) / 9);height:100%;border-radius:999px;background:currentColor;animation:z-loading-scale 1s calc((var(--z-index) + 1) * .1s) infinite cubic-bezier(.2,.68,.18,1.08) both}.z-loading-skew{width:0;height:0;border-right:calc(var(--z-loading-size) / 2) solid transparent;border-bottom:var(--z-loading-size) solid currentColor;border-left:calc(var(--z-loading-size) / 2) solid transparent;animation:z-loading-skew 3s infinite cubic-bezier(.09,.57,.49,.9) both}.z-loading-square{width:var(--z-loading-size);height:var(--z-loading-size);background:currentColor;animation:z-loading-square 3s infinite cubic-bezier(.09,.57,.49,.9) both}.z-loading-sync i{animation:z-loading-sync .6s infinite ease-in-out both}.z-loading-sync i:nth-child(2){animation-delay:.07s}.z-loading-sync i:nth-child(3){animation-delay:.14s}@keyframes z-loading-matrix{0%{background-position:0% 100%,50% 100%,100% 100%}to{background-position:0% 0%,50% 0%,100% 0%}}@keyframes z-loading-conic{to{transform:rotate(1turn)}}@keyframes z-loading-polygon-1{0%{clip-path:polygon(50% 50%,0 0,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%)}12.5%{clip-path:polygon(50% 50%,0 0,50% 0%,100% 0%,100% 0%,100% 0%,100% 0%)}25%{clip-path:polygon(50% 50%,0 0,50% 0%,100% 0%,100% 100%,100% 100%,100% 100%)}50%{clip-path:polygon(50% 50%,0 0,50% 0%,100% 0%,100% 100%,50% 100%,0% 100%)}62.5%{clip-path:polygon(50% 50%,100% 0,100% 0%,100% 0%,100% 100%,50% 100%,0% 100%)}75%{clip-path:polygon(50% 50%,100% 100%,100% 100%,100% 100%,100% 100%,50% 100%,0% 100%)}to{clip-path:polygon(50% 50%,50% 100%,50% 100%,50% 100%,50% 100%,50% 100%,0% 100%)}}@keyframes z-loading-polygon-2{0%{transform:scaleY(1) rotate(0)}49.99%{transform:scaleY(1) rotate(135deg)}50%{transform:scaleY(-1) rotate(0)}to{transform:scaleY(-1) rotate(-135deg)}}@keyframes z-loading-triple{to{transform:rotate(1turn)}}@keyframes z-loading-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes z-loading-bar-long{0%{right:100%;left:-35%}60%,to{right:-90%;left:100%}}@keyframes z-loading-bar-short{0%{right:100%;left:-200%}60%,to{right:-8%;left:107%}}@keyframes z-loading-beat{50%{opacity:.2;transform:scale(.75)}to{opacity:1;transform:scale(1)}}@keyframes z-loading-bounce{0%,to{transform:scale(0)}50%{transform:scale(1)}}@keyframes z-loading-circle{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}@keyframes z-loading-climbing-box{0%{transform:translate(0) rotate(-45deg)}20%{transform:translate(85%,-85%) rotate(47deg)}45%{transform:translate(170%,-170%) rotate(137deg)}70%{transform:translate(255%,-255%) rotate(217deg)}to{transform:translate(0) rotate(-225deg)}}@keyframes z-loading-clip{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(.8)}to{transform:rotate(360deg) scale(1)}}@keyframes z-loading-clock{to{transform:rotate(360deg)}}@keyframes z-loading-dot{0%,to{transform:scale(0)}50%{transform:scale(1)}}@keyframes z-loading-fade{50%{opacity:.3}to{opacity:1}}@keyframes z-loading-grid{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(.5)}}@keyframes z-loading-hash-horizontal{0%,to{width:20%;box-shadow:calc(var(--z-loading-size) * .4) calc(var(--z-loading-size) * -.2) color-mix(in srgb,currentColor 75%,transparent),calc(var(--z-loading-size) * -.4) calc(var(--z-loading-size) * .2) color-mix(in srgb,currentColor 75%,transparent)}35%{width:100%;box-shadow:0 calc(var(--z-loading-size) * -.2) color-mix(in srgb,currentColor 75%,transparent),0 calc(var(--z-loading-size) * .2) color-mix(in srgb,currentColor 75%,transparent)}70%{width:20%;box-shadow:calc(var(--z-loading-size) * -.4) calc(var(--z-loading-size) * -.2) color-mix(in srgb,currentColor 75%,transparent),calc(var(--z-loading-size) * .4) calc(var(--z-loading-size) * .2) color-mix(in srgb,currentColor 75%,transparent)}}@keyframes z-loading-hash-vertical{0%,to{height:20%;box-shadow:calc(var(--z-loading-size) * .2) calc(var(--z-loading-size) * .4) currentColor,calc(var(--z-loading-size) * -.2) calc(var(--z-loading-size) * -.4) currentColor}35%{height:100%;box-shadow:calc(var(--z-loading-size) * .2) 0 currentColor,calc(var(--z-loading-size) * -.2) 0 currentColor}70%{height:20%;box-shadow:calc(var(--z-loading-size) * .2) calc(var(--z-loading-size) * -.4) currentColor,calc(var(--z-loading-size) * -.2) calc(var(--z-loading-size) * .4) currentColor}}@keyframes z-loading-pacman-top{0%,to{transform:rotate(0)}50%{transform:rotate(-44deg)}}@keyframes z-loading-pacman-bottom{0%,to{transform:rotate(0)}50%{transform:rotate(44deg)}}@keyframes z-loading-pacman-dot{75%{opacity:.7}to{transform:translate(calc(var(--z-loading-size) * -2.2))}}@keyframes z-loading-propagate{0%,95%,to{transform:translate(0) scale(1)}50%{transform:translate(var(--z-propagate-distance)) scale(.6)}}@keyframes z-loading-puff-scale{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes z-loading-puff-opacity{0%{opacity:1}to{opacity:0}}@keyframes z-loading-pulse{0%,80%{opacity:1;transform:scale(1)}45%{opacity:.7;transform:scale(.1)}}@keyframes z-loading-ring-right{0%{transform:rotateX(0) rotateY(0) rotate(0)}to{transform:rotateX(180deg) rotateY(360deg) rotate(360deg)}}@keyframes z-loading-ring-left{0%{transform:rotateX(0) rotateY(0) rotate(0)}to{transform:rotateX(360deg) rotateY(180deg) rotate(360deg)}}@keyframes z-loading-rise-even{0%{transform:scale(1.1)}25%{transform:translateY(calc(var(--z-loading-size) * -.4))}50%{transform:scale(.4)}75%{transform:translateY(calc(var(--z-loading-size) * .4))}to{transform:translateY(0) scale(1)}}@keyframes z-loading-rise-odd{0%{transform:scale(.4)}25%{transform:translateY(calc(var(--z-loading-size) * .4))}50%{transform:scale(1.1)}75%{transform:translateY(calc(var(--z-loading-size) * -.4))}to{transform:translateY(0) scale(.75)}}@keyframes z-loading-scale{0%,to{transform:scaleY(1)}50%{transform:scaleY(.4)}}@keyframes z-loading-skew{25%{transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{transform:perspective(100px) rotateX(0) rotateY(180deg)}to{transform:perspective(100px) rotateX(0) rotateY(0)}}@keyframes z-loading-square{25%{transform:rotateX(180deg) rotateY(0)}50%{transform:rotateX(180deg) rotateY(180deg)}75%{transform:rotateX(0) rotateY(180deg)}to{transform:rotateX(0) rotateY(0)}}@keyframes z-loading-sync{33%{transform:translateY(calc(var(--z-loading-size) * .3))}66%{transform:translateY(calc(var(--z-loading-size) * -.3))}to{transform:translateY(0)}}\n/*! Spinner animations adapted from react-spinners, Copyright (c) 2017 David Hu, MIT License. */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
92
98
  }
93
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ZLoadingComponent, decorators: [{
94
100
  type: Component,
95
101
  args: [{ selector: 'z-loading', imports: [CommonModule, NgTemplateOutlet], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
96
102
  class: 'z-loading inline-flex',
97
- }, template: "@if (!zOverlay() && !zFullscreen()) {\n <div\n class=\"z-loading-wrapper inline-flex items-center justify-center transition-opacity duration-150\"\n [class.opacity-0]=\"!zLoading()\"\n [class.pointer-events-none]=\"!zLoading()\">\n <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n </div>\n}\n\n@if ((zOverlay() || zFullscreen()) && isVisible()) {\n <div\n class=\"z-loading-wrapper inline-flex items-center justify-center\"\n [class.z-loading-overlay]=\"zOverlay()\"\n [class.z-loading-fullscreen]=\"zFullscreen()\"\n [class.z-loading-leaving]=\"isLeaving()\"\n [class]=\"overlayClasses()\">\n <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n </div>\n}\n\n<ng-template #spinnerContent>\n <div class=\"z-loading-content flex flex-col items-center justify-center gap-3\">\n @switch (zSpinner()) {\n @case ('spinner') {\n <svg [class]=\"spinnerClasses()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\n </svg>\n }\n @case ('orbit') {\n <div [class]=\"spinnerClasses()\" class=\"z-loading-orbit relative\">\n <div class=\"absolute top-1/2 left-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current\"></div>\n <div class=\"absolute top-1/2 right-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current opacity-30\"></div>\n </div>\n }\n @case ('matrix') {\n <div [class]=\"baseClasses()\" class=\"z-loading-matrix\"></div>\n }\n @case ('conic') {\n <div [class]=\"baseClasses()\" class=\"z-loading-conic rounded-full\"></div>\n }\n @case ('polygon') {\n <div [class]=\"baseClasses()\" class=\"z-loading-polygon rounded-full\"></div>\n }\n @case ('triple') {\n <div [class]=\"baseClasses()\" class=\"z-loading-triple rounded-full\"></div>\n }\n }\n\n @if (zText()) {\n <p [class]=\"textSizeClasses()\" class=\"z-loading-text font-medium\" [style.color]=\"'currentColor'\">\n {{ zText() }}\n </p>\n }\n </div>\n</ng-template>\n", styles: [".z-loading:has(.z-loading-overlay),.z-loading:has(.z-loading-fullscreen){display:contents}.z-loading-overlay,.z-loading-fullscreen{position:absolute;inset:0;z-index:150;display:flex;align-items:center;justify-content:center}.z-loading-fullscreen{position:fixed;z-index:9999}.z-loading-overlay-dark{background-color:#0009;animation:z-backdrop-enter .15s ease-out forwards}.z-loading-overlay-blur{background-color:#0000000d;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:z-backdrop-enter .15s ease-out forwards}.z-loading-overlay-default{background-color:var(--loading-overlay-bg, rgba(255, 255, 255, .85));animation:z-backdrop-enter .15s ease-out forwards}.dark .z-loading-overlay-default{background-color:#000000d9}.z-loading-leaving.z-loading-overlay-dark,.z-loading-leaving.z-loading-overlay-blur,.z-loading-leaving.z-loading-overlay-default{animation:z-backdrop-exit .12s ease-in forwards}.z-loading-content{position:relative;z-index:51}.z-loading-orbit{animation:z-loading-spin 1.2s linear infinite}.z-loading-matrix{width:1.5rem;height:1.3125rem;background:linear-gradient(transparent 16.6666666667%,currentColor 0 50%,transparent 0),linear-gradient(transparent 33.3333333333%,currentColor 0 66.6666666667%,transparent 0),linear-gradient(transparent 50%,currentColor 0 83.3333333333%,transparent 0);background-size:6px 400%;background-repeat:no-repeat;animation:z-loading-matrix 1s infinite linear}.z-loading-matrix.size-8{width:2rem;height:1.75rem;background-size:8px 400%}.z-loading-matrix.size-12{width:3rem;height:2.625rem;background-size:12px 400%}.z-loading-conic{padding:.5rem;aspect-ratio:1;background:currentColor;-webkit-mask:conic-gradient(transparent 10%,#000),linear-gradient(#000 0 0) content-box;mask:conic-gradient(transparent 10%,#000),linear-gradient(#000 0 0) content-box;-webkit-mask-composite:source-out;mask-composite:subtract;animation:z-loading-conic 1s infinite linear}.z-loading-polygon{aspect-ratio:1;border:8px solid currentColor;animation:z-loading-polygon-1 .8s infinite linear alternate,z-loading-polygon-2 1.6s infinite linear}.z-loading-triple{aspect-ratio:1;border:8px solid transparent;border-right-color:currentColor;position:relative;animation:z-loading-triple 1s infinite linear}.z-loading-triple:before,.z-loading-triple:after{content:\"\";position:absolute;inset:-.5rem;border-radius:50%;border:inherit;animation:inherit}.z-loading-triple:before{animation-duration:2s;opacity:.6}.z-loading-triple:after{animation-duration:4s;opacity:.3}@keyframes z-loading-matrix{0%{background-position:0% 100%,50% 100%,100% 100%}to{background-position:0% 0%,50% 0%,100% 0%}}@keyframes z-loading-conic{to{transform:rotate(1turn)}}@keyframes z-loading-polygon-1{0%{clip-path:polygon(50% 50%,0 0,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%)}12.5%{clip-path:polygon(50% 50%,0 0,50% 0%,100% 0%,100% 0%,100% 0%,100% 0%)}25%{clip-path:polygon(50% 50%,0 0,50% 0%,100% 0%,100% 100%,100% 100%,100% 100%)}50%{clip-path:polygon(50% 50%,0 0,50% 0%,100% 0%,100% 100%,50% 100%,0% 100%)}62.5%{clip-path:polygon(50% 50%,100% 0,100% 0%,100% 0%,100% 100%,50% 100%,0% 100%)}75%{clip-path:polygon(50% 50%,100% 100%,100% 100%,100% 100%,100% 100%,50% 100%,0% 100%)}to{clip-path:polygon(50% 50%,50% 100%,50% 100%,50% 100%,50% 100%,50% 100%,0% 100%)}}@keyframes z-loading-polygon-2{0%{transform:scaleY(1) rotate(0)}49.99%{transform:scaleY(1) rotate(135deg)}50%{transform:scaleY(-1) rotate(0)}to{transform:scaleY(-1) rotate(-135deg)}}@keyframes z-loading-triple{to{transform:rotate(1turn)}}@keyframes z-loading-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
103
+ }, template: "@if (!zOverlay() && !zFullscreen()) {\n <div\n class=\"z-loading-wrapper inline-flex items-center justify-center transition-opacity duration-150\"\n [class.opacity-0]=\"!zLoading()\"\n [class.pointer-events-none]=\"!zLoading()\">\n <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n </div>\n}\n\n@if ((zOverlay() || zFullscreen()) && isVisible()) {\n <div\n class=\"z-loading-wrapper inline-flex items-center justify-center\"\n [class.z-loading-overlay]=\"zOverlay()\"\n [class.z-loading-fullscreen]=\"zFullscreen()\"\n [class.z-loading-leaving]=\"isLeaving()\"\n [class]=\"overlayClasses()\">\n <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n </div>\n}\n\n<ng-template #spinnerContent>\n <div\n class=\"z-loading-content flex flex-col items-center justify-center gap-3\"\n [attr.data-z-loading-spinner]=\"zSpinner()\">\n @switch (zSpinner()) {\n @case ('spinner') {\n <svg [class]=\"spinnerClasses()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\n </svg>\n }\n @case ('orbit') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-orbit\">\n <div class=\"absolute top-1/2 left-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current\"></div>\n <div class=\"absolute top-1/2 right-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current opacity-30\"></div>\n </div>\n }\n @case ('matrix') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-matrix\"></div>\n }\n @case ('conic') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-conic rounded-full\"></div>\n }\n @case ('polygon') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-polygon rounded-full\"></div>\n }\n @case ('triple') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-triple rounded-full\"></div>\n }\n @case ('bar') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-bar\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('beat') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-beat\">\n <i></i>\n <i></i>\n <i></i>\n </span>\n }\n @case ('bounce') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-bounce\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('circle') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-circle\">\n @for (ring of circleRings; track ring) {\n <i [style.--z-index]=\"ring\"></i>\n }\n </span>\n }\n @case ('climbing-box') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-climbing-box\">\n <i></i>\n <b></b>\n </span>\n }\n @case ('clip') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-clip\"></span>\n }\n @case ('clock') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-clock\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('dot') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-dot\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('fade') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-fade\">\n @for (bar of fadeBars; track bar) {\n <i [style.--z-index]=\"bar\"></i>\n }\n </span>\n }\n @case ('grid') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-grid\">\n @for (dot of gridDots; track dot) {\n <i [style.--z-index]=\"dot\"></i>\n }\n </span>\n }\n @case ('hash') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-hash\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('moon') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-moon\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('pacman') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-pacman\">\n <i></i>\n <i></i>\n @for (dot of pacmanDots; track dot) {\n <b [style.--z-index]=\"dot\"></b>\n }\n </span>\n }\n @case ('propagate') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-propagate\">\n @for (dot of propagateDots; track dot) {\n <i [style.--z-index]=\"dot\"></i>\n }\n </span>\n }\n @case ('puff') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-puff\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('pulse') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-pulse\">\n <i></i>\n <i></i>\n <i></i>\n </span>\n }\n @case ('ring') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-ring\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('rise') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-rise\">\n <i></i>\n <i></i>\n <i></i>\n <i></i>\n <i></i>\n </span>\n }\n @case ('rotate') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-rotate\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('scale') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-scale\">\n @for (bar of scaleBars; track bar) {\n <i [style.--z-index]=\"bar\"></i>\n }\n </span>\n }\n @case ('skew') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-skew\"></span>\n }\n @case ('square') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-square\"></span>\n }\n @case ('sync') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-sync\">\n <i></i>\n <i></i>\n <i></i>\n </span>\n }\n }\n\n @if (zText()) {\n <p [class]=\"textSizeClasses()\" class=\"z-loading-text font-medium\" [style.color]=\"'currentColor'\">\n {{ zText() }}\n </p>\n }\n </div>\n</ng-template>\n", styles: [".z-loading:has(.z-loading-overlay),.z-loading:has(.z-loading-fullscreen){display:contents}.z-loading-overlay,.z-loading-fullscreen{position:absolute;inset:0;z-index:150;display:flex;align-items:center;justify-content:center}.z-loading-fullscreen{position:fixed;z-index:9999}.z-loading-overlay-dark{background-color:#0009;animation:z-backdrop-enter .15s ease-out forwards}.z-loading-overlay-blur{background-color:#0000000d;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:z-backdrop-enter .15s ease-out forwards}.z-loading-overlay-default{background-color:var(--loading-overlay-bg, rgba(255, 255, 255, .85));animation:z-backdrop-enter .15s ease-out forwards}.dark .z-loading-overlay-default{background-color:#000000d9}.z-loading-leaving.z-loading-overlay-dark,.z-loading-leaving.z-loading-overlay-blur,.z-loading-leaving.z-loading-overlay-default{animation:z-backdrop-exit .12s ease-in forwards}.z-loading-content{position:relative;z-index:51}.z-loading-loader{--z-loading-size: 1.5rem;--z-loading-stroke: max(2px, calc(var(--z-loading-size) / 12));display:inline-block;flex:none;box-sizing:border-box}.z-loading-loader *,.z-loading-loader *:before,.z-loading-loader *:after{box-sizing:border-box}.z-loading-size-2xs{--z-loading-size: .75rem}.z-loading-size-xs{--z-loading-size: 1rem}.z-loading-size-default{--z-loading-size: 1.5rem}.z-loading-size-lg{--z-loading-size: 2rem}.z-loading-size-xl{--z-loading-size: 3rem}.z-loading-orbit{position:relative;width:var(--z-loading-size);height:var(--z-loading-size);animation:z-loading-spin 1.2s linear infinite}.z-loading-orbit>div{width:calc(var(--z-loading-size) / 4);height:calc(var(--z-loading-size) / 4)}.z-loading-matrix{width:var(--z-loading-size);height:calc(var(--z-loading-size) * .875);background:linear-gradient(transparent 16.6666666667%,currentColor 0 50%,transparent 0),linear-gradient(transparent 33.3333333333%,currentColor 0 66.6666666667%,transparent 0),linear-gradient(transparent 50%,currentColor 0 83.3333333333%,transparent 0);background-size:calc(var(--z-loading-size) / 4) 400%;background-repeat:no-repeat;animation:z-loading-matrix 1s infinite linear}.z-loading-conic{width:var(--z-loading-size);padding:calc(var(--z-loading-size) / 6);aspect-ratio:1;background:currentColor;-webkit-mask:conic-gradient(transparent 10%,#000),linear-gradient(#000 0 0) content-box;mask:conic-gradient(transparent 10%,#000),linear-gradient(#000 0 0) content-box;-webkit-mask-composite:source-out;mask-composite:subtract;animation:z-loading-conic 1s infinite linear}.z-loading-polygon{width:var(--z-loading-size);aspect-ratio:1;border:max(2px,var(--z-loading-size) / 6) solid currentColor;animation:z-loading-polygon-1 .8s infinite linear alternate,z-loading-polygon-2 1.6s infinite linear}.z-loading-triple{width:var(--z-loading-size);aspect-ratio:1;border:var(--z-loading-stroke) solid transparent;border-right-color:currentColor;position:relative;animation:z-loading-triple 1s infinite linear}.z-loading-triple:before,.z-loading-triple:after{content:\"\";position:absolute;inset:calc(var(--z-loading-stroke) * -1);border-radius:50%;border:inherit;animation:inherit}.z-loading-triple:before{animation-duration:2s;opacity:.6}.z-loading-triple:after{animation-duration:4s;opacity:.3}.z-loading-bar{position:relative;width:calc(var(--z-loading-size) * 3);height:var(--z-loading-stroke);overflow:hidden;border-radius:999px;background:color-mix(in srgb,currentColor 20%,transparent)}.z-loading-bar i{position:absolute;inset-block:0;display:block;border-radius:inherit;background:currentColor;will-change:left,right}.z-loading-bar i:first-child{animation:z-loading-bar-long 2.1s infinite cubic-bezier(.65,.815,.735,.395)}.z-loading-bar i:last-child{animation:z-loading-bar-short 2.1s 1.15s infinite cubic-bezier(.165,.84,.44,1)}.z-loading-beat,.z-loading-pulse,.z-loading-sync,.z-loading-rise{display:inline-flex;align-items:center;gap:calc(var(--z-loading-size) / 8)}.z-loading-beat i,.z-loading-pulse i,.z-loading-sync i,.z-loading-rise i{width:calc(var(--z-loading-size) * .38);height:calc(var(--z-loading-size) * .38);border-radius:50%;background:currentColor}.z-loading-beat i{animation:z-loading-beat .7s infinite linear both}.z-loading-beat i:nth-child(2){animation-delay:.35s}.z-loading-bounce,.z-loading-dot,.z-loading-puff,.z-loading-ring{position:relative;width:var(--z-loading-size);height:var(--z-loading-size)}.z-loading-bounce i{position:absolute;inset:0;border-radius:50%;background:currentColor;opacity:.6;animation:z-loading-bounce 2.1s infinite ease-in-out both}.z-loading-bounce i:first-child{animation-delay:1s}.z-loading-circle{position:relative;width:var(--z-loading-size);height:var(--z-loading-size)}.z-loading-circle i{--z-ring-inset: calc(var(--z-index) * var(--z-loading-size) * .035);position:absolute;inset:var(--z-ring-inset);border-top:max(1px,var(--z-loading-stroke) / 2) solid currentColor;border-left:max(1px,var(--z-loading-stroke) / 2) solid currentColor;border-radius:50%;animation:z-loading-circle 1s calc(var(--z-index) * .2s) infinite linear}.z-loading-climbing-box{position:relative;width:calc(var(--z-loading-size) * 1.35);height:var(--z-loading-size);overflow:hidden}.z-loading-climbing-box i{position:absolute;left:8%;bottom:7%;width:22%;height:22%;border:var(--z-loading-stroke) solid currentColor;border-radius:15%;animation:z-loading-climbing-box 2.5s infinite cubic-bezier(.79,0,.47,.97) both}.z-loading-climbing-box b{position:absolute;right:2%;bottom:-48%;width:92%;height:92%;border-left:var(--z-loading-stroke) solid currentColor;transform:rotate(45deg)}.z-loading-clip{width:var(--z-loading-size);height:var(--z-loading-size);border:var(--z-loading-stroke) solid currentColor;border-bottom-color:transparent;border-radius:50%;animation:z-loading-clip .75s infinite linear both}.z-loading-clock{position:relative;width:var(--z-loading-size);height:var(--z-loading-size);border:var(--z-loading-stroke) solid currentColor;border-radius:50%}.z-loading-clock i{position:absolute;top:50%;left:50%;width:40%;height:var(--z-loading-stroke);border-radius:999px;background:currentColor;transform-origin:left center;animation:z-loading-clock 2s linear infinite}.z-loading-clock i:last-child{width:28%;animation-duration:8s}.z-loading-dot{animation:z-loading-spin 2s infinite linear}.z-loading-dot i{position:absolute;width:50%;height:50%;border-radius:50%;background:currentColor;animation:z-loading-dot 2s infinite linear both}.z-loading-dot i:first-child{top:0;left:0}.z-loading-dot i:last-child{right:0;bottom:0;animation-delay:1s}.z-loading-fade{position:relative;width:var(--z-loading-size);height:var(--z-loading-size)}.z-loading-fade i{position:absolute;top:8%;left:44%;width:12%;height:32%;border-radius:999px;background:currentColor;transform:rotate(calc(var(--z-index) * 45deg));transform-origin:50% 132%;animation:z-loading-fade 1.2s calc(var(--z-index) * .12s) infinite ease-in-out both}.z-loading-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:calc(var(--z-loading-size) / 12);width:var(--z-loading-size);height:var(--z-loading-size)}.z-loading-grid i{border-radius:50%;background:currentColor;animation:z-loading-grid .9s calc(var(--z-index) * -.07s) infinite ease both}.z-loading-hash{position:relative;width:var(--z-loading-size);height:var(--z-loading-size);transform:rotate(165deg)}.z-loading-hash i{position:absolute;top:50%;left:50%;width:20%;height:20%;border-radius:999px;transform:translate(-50%,-50%)}.z-loading-hash i:first-child{animation:z-loading-hash-horizontal 2s infinite}.z-loading-hash i:last-child{animation:z-loading-hash-vertical 2s infinite}.z-loading-moon{position:relative;width:var(--z-loading-size);height:var(--z-loading-size);animation:z-loading-spin .6s infinite linear}.z-loading-moon i:first-child{position:absolute;top:42%;left:-8%;width:22%;height:22%;border-radius:50%;background:currentColor;opacity:.8}.z-loading-moon i:last-child{position:absolute;inset:8%;border:calc(var(--z-loading-size) / 8) solid currentColor;border-radius:50%;opacity:.12}.z-loading-pacman{position:relative;width:calc(var(--z-loading-size) * 2.6);height:var(--z-loading-size)}.z-loading-pacman>i{position:absolute;left:0;width:0;height:0;border:calc(var(--z-loading-size) / 2) solid currentColor;border-right-color:transparent;border-radius:50%;animation:z-loading-pacman-top .8s infinite ease-in-out both}.z-loading-pacman>i:nth-child(2){border-top-color:transparent;border-right-color:transparent;animation-name:z-loading-pacman-bottom}.z-loading-pacman b{--z-pacman-dot-size: calc(var(--z-loading-size) / 6);position:absolute;top:calc(50% - var(--z-pacman-dot-size) / 2);left:calc(var(--z-loading-size) * 2.35);width:var(--z-pacman-dot-size);height:var(--z-pacman-dot-size);border-radius:50%;background:currentColor;animation:z-loading-pacman-dot 1s calc(var(--z-index) * .25s) infinite linear both}.z-loading-propagate{position:relative;width:var(--z-loading-size);height:calc(var(--z-loading-size) / 3)}.z-loading-propagate i{position:absolute;left:calc(50% - var(--z-loading-size) / 6);width:calc(var(--z-loading-size) / 3);height:calc(var(--z-loading-size) / 3);border-radius:50%;background:currentColor;animation:z-loading-propagate 1.5s infinite both}.z-loading-propagate i:nth-child(1){--z-propagate-distance: -750%}.z-loading-propagate i:nth-child(2){--z-propagate-distance: -450%}.z-loading-propagate i:nth-child(3){--z-propagate-distance: -150%}.z-loading-propagate i:nth-child(4){--z-propagate-distance: 150%}.z-loading-propagate i:nth-child(5){--z-propagate-distance: 450%}.z-loading-propagate i:nth-child(6){--z-propagate-distance: 750%}.z-loading-puff i{position:absolute;inset:0;border:var(--z-loading-stroke) solid currentColor;border-radius:50%;animation:z-loading-puff-scale 2s infinite cubic-bezier(.165,.84,.44,1) both,z-loading-puff-opacity 2s infinite cubic-bezier(.3,.61,.355,1) both}.z-loading-puff i:first-child{animation-delay:-1s}.z-loading-pulse i{animation:z-loading-pulse .75s infinite cubic-bezier(.2,.68,.18,1.08) both}.z-loading-pulse i:nth-child(2){animation-delay:.12s}.z-loading-pulse i:nth-child(3){animation-delay:.24s}.z-loading-ring{perspective:800px}.z-loading-ring i{position:absolute;inset:0;border:calc(var(--z-loading-size) / 10) solid currentColor;border-radius:50%;opacity:.4;animation:z-loading-ring-right 2s infinite linear both}.z-loading-ring i:last-child{animation-name:z-loading-ring-left}.z-loading-rise i{animation:z-loading-rise-odd 1s infinite cubic-bezier(.15,.46,.9,.6) both}.z-loading-rise i:nth-child(2n){animation-name:z-loading-rise-even}.z-loading-rotate{position:relative;width:calc(var(--z-loading-size) / 3);height:calc(var(--z-loading-size) / 3);border-radius:50%;background:currentColor;animation:z-loading-spin 1s infinite cubic-bezier(.7,-.13,.22,.86) both}.z-loading-rotate i{position:absolute;top:0;width:100%;height:100%;border-radius:inherit;background:currentColor;opacity:.8}.z-loading-rotate i:first-child{left:calc(var(--z-loading-size) * -.75)}.z-loading-rotate i:last-child{right:calc(var(--z-loading-size) * -.75)}.z-loading-scale{display:inline-flex;align-items:center;gap:calc(var(--z-loading-size) / 10);height:var(--z-loading-size)}.z-loading-scale i{width:calc(var(--z-loading-size) / 9);height:100%;border-radius:999px;background:currentColor;animation:z-loading-scale 1s calc((var(--z-index) + 1) * .1s) infinite cubic-bezier(.2,.68,.18,1.08) both}.z-loading-skew{width:0;height:0;border-right:calc(var(--z-loading-size) / 2) solid transparent;border-bottom:var(--z-loading-size) solid currentColor;border-left:calc(var(--z-loading-size) / 2) solid transparent;animation:z-loading-skew 3s infinite cubic-bezier(.09,.57,.49,.9) both}.z-loading-square{width:var(--z-loading-size);height:var(--z-loading-size);background:currentColor;animation:z-loading-square 3s infinite cubic-bezier(.09,.57,.49,.9) both}.z-loading-sync i{animation:z-loading-sync .6s infinite ease-in-out both}.z-loading-sync i:nth-child(2){animation-delay:.07s}.z-loading-sync i:nth-child(3){animation-delay:.14s}@keyframes z-loading-matrix{0%{background-position:0% 100%,50% 100%,100% 100%}to{background-position:0% 0%,50% 0%,100% 0%}}@keyframes z-loading-conic{to{transform:rotate(1turn)}}@keyframes z-loading-polygon-1{0%{clip-path:polygon(50% 50%,0 0,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%)}12.5%{clip-path:polygon(50% 50%,0 0,50% 0%,100% 0%,100% 0%,100% 0%,100% 0%)}25%{clip-path:polygon(50% 50%,0 0,50% 0%,100% 0%,100% 100%,100% 100%,100% 100%)}50%{clip-path:polygon(50% 50%,0 0,50% 0%,100% 0%,100% 100%,50% 100%,0% 100%)}62.5%{clip-path:polygon(50% 50%,100% 0,100% 0%,100% 0%,100% 100%,50% 100%,0% 100%)}75%{clip-path:polygon(50% 50%,100% 100%,100% 100%,100% 100%,100% 100%,50% 100%,0% 100%)}to{clip-path:polygon(50% 50%,50% 100%,50% 100%,50% 100%,50% 100%,50% 100%,0% 100%)}}@keyframes z-loading-polygon-2{0%{transform:scaleY(1) rotate(0)}49.99%{transform:scaleY(1) rotate(135deg)}50%{transform:scaleY(-1) rotate(0)}to{transform:scaleY(-1) rotate(-135deg)}}@keyframes z-loading-triple{to{transform:rotate(1turn)}}@keyframes z-loading-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes z-loading-bar-long{0%{right:100%;left:-35%}60%,to{right:-90%;left:100%}}@keyframes z-loading-bar-short{0%{right:100%;left:-200%}60%,to{right:-8%;left:107%}}@keyframes z-loading-beat{50%{opacity:.2;transform:scale(.75)}to{opacity:1;transform:scale(1)}}@keyframes z-loading-bounce{0%,to{transform:scale(0)}50%{transform:scale(1)}}@keyframes z-loading-circle{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}@keyframes z-loading-climbing-box{0%{transform:translate(0) rotate(-45deg)}20%{transform:translate(85%,-85%) rotate(47deg)}45%{transform:translate(170%,-170%) rotate(137deg)}70%{transform:translate(255%,-255%) rotate(217deg)}to{transform:translate(0) rotate(-225deg)}}@keyframes z-loading-clip{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(.8)}to{transform:rotate(360deg) scale(1)}}@keyframes z-loading-clock{to{transform:rotate(360deg)}}@keyframes z-loading-dot{0%,to{transform:scale(0)}50%{transform:scale(1)}}@keyframes z-loading-fade{50%{opacity:.3}to{opacity:1}}@keyframes z-loading-grid{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(.5)}}@keyframes z-loading-hash-horizontal{0%,to{width:20%;box-shadow:calc(var(--z-loading-size) * .4) calc(var(--z-loading-size) * -.2) color-mix(in srgb,currentColor 75%,transparent),calc(var(--z-loading-size) * -.4) calc(var(--z-loading-size) * .2) color-mix(in srgb,currentColor 75%,transparent)}35%{width:100%;box-shadow:0 calc(var(--z-loading-size) * -.2) color-mix(in srgb,currentColor 75%,transparent),0 calc(var(--z-loading-size) * .2) color-mix(in srgb,currentColor 75%,transparent)}70%{width:20%;box-shadow:calc(var(--z-loading-size) * -.4) calc(var(--z-loading-size) * -.2) color-mix(in srgb,currentColor 75%,transparent),calc(var(--z-loading-size) * .4) calc(var(--z-loading-size) * .2) color-mix(in srgb,currentColor 75%,transparent)}}@keyframes z-loading-hash-vertical{0%,to{height:20%;box-shadow:calc(var(--z-loading-size) * .2) calc(var(--z-loading-size) * .4) currentColor,calc(var(--z-loading-size) * -.2) calc(var(--z-loading-size) * -.4) currentColor}35%{height:100%;box-shadow:calc(var(--z-loading-size) * .2) 0 currentColor,calc(var(--z-loading-size) * -.2) 0 currentColor}70%{height:20%;box-shadow:calc(var(--z-loading-size) * .2) calc(var(--z-loading-size) * -.4) currentColor,calc(var(--z-loading-size) * -.2) calc(var(--z-loading-size) * .4) currentColor}}@keyframes z-loading-pacman-top{0%,to{transform:rotate(0)}50%{transform:rotate(-44deg)}}@keyframes z-loading-pacman-bottom{0%,to{transform:rotate(0)}50%{transform:rotate(44deg)}}@keyframes z-loading-pacman-dot{75%{opacity:.7}to{transform:translate(calc(var(--z-loading-size) * -2.2))}}@keyframes z-loading-propagate{0%,95%,to{transform:translate(0) scale(1)}50%{transform:translate(var(--z-propagate-distance)) scale(.6)}}@keyframes z-loading-puff-scale{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes z-loading-puff-opacity{0%{opacity:1}to{opacity:0}}@keyframes z-loading-pulse{0%,80%{opacity:1;transform:scale(1)}45%{opacity:.7;transform:scale(.1)}}@keyframes z-loading-ring-right{0%{transform:rotateX(0) rotateY(0) rotate(0)}to{transform:rotateX(180deg) rotateY(360deg) rotate(360deg)}}@keyframes z-loading-ring-left{0%{transform:rotateX(0) rotateY(0) rotate(0)}to{transform:rotateX(360deg) rotateY(180deg) rotate(360deg)}}@keyframes z-loading-rise-even{0%{transform:scale(1.1)}25%{transform:translateY(calc(var(--z-loading-size) * -.4))}50%{transform:scale(.4)}75%{transform:translateY(calc(var(--z-loading-size) * .4))}to{transform:translateY(0) scale(1)}}@keyframes z-loading-rise-odd{0%{transform:scale(.4)}25%{transform:translateY(calc(var(--z-loading-size) * .4))}50%{transform:scale(1.1)}75%{transform:translateY(calc(var(--z-loading-size) * -.4))}to{transform:translateY(0) scale(.75)}}@keyframes z-loading-scale{0%,to{transform:scaleY(1)}50%{transform:scaleY(.4)}}@keyframes z-loading-skew{25%{transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{transform:perspective(100px) rotateX(0) rotateY(180deg)}to{transform:perspective(100px) rotateX(0) rotateY(0)}}@keyframes z-loading-square{25%{transform:rotateX(180deg) rotateY(0)}50%{transform:rotateX(180deg) rotateY(180deg)}75%{transform:rotateX(0) rotateY(180deg)}to{transform:rotateX(0) rotateY(0)}}@keyframes z-loading-sync{33%{transform:translateY(calc(var(--z-loading-size) * .3))}66%{transform:translateY(calc(var(--z-loading-size) * -.3))}to{transform:translateY(0)}}\n/*! Spinner animations adapted from react-spinners, Copyright (c) 2017 David Hu, MIT License. */\n"] }]
98
104
  }], ctorParameters: () => [], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], zSpinner: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSpinner", required: false }] }], zSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSize", required: false }] }], zColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "zColor", required: false }] }], zText: [{ type: i0.Input, args: [{ isSignal: true, alias: "zText", required: false }] }], zOverlay: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOverlay", required: false }] }], zOverlayType: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOverlayType", required: false }] }], zFullscreen: [{ type: i0.Input, args: [{ isSignal: true, alias: "zFullscreen", required: false }] }], zLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "zLoading", required: false }] }] } });
99
105
 
106
+ const Z_LOADING_SPINNERS = [
107
+ 'spinner',
108
+ 'orbit',
109
+ 'matrix',
110
+ 'conic',
111
+ 'polygon',
112
+ 'triple',
113
+ 'bar',
114
+ 'beat',
115
+ 'bounce',
116
+ 'circle',
117
+ 'climbing-box',
118
+ 'clip',
119
+ 'clock',
120
+ 'dot',
121
+ 'fade',
122
+ 'grid',
123
+ 'hash',
124
+ 'moon',
125
+ 'pacman',
126
+ 'propagate',
127
+ 'puff',
128
+ 'pulse',
129
+ 'ring',
130
+ 'rise',
131
+ 'rotate',
132
+ 'scale',
133
+ 'skew',
134
+ 'square',
135
+ 'sync',
136
+ ];
137
+
100
138
  /**
101
139
  * Generated bundle index. Do not edit.
102
140
  */
103
141
 
104
- export { ZLoadingComponent, zLoadingVariants };
142
+ export { ZLoadingComponent, Z_LOADING_SPINNERS, zLoadingVariants };
105
143
  //# sourceMappingURL=shival99-z-ui-components-z-loading.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"shival99-z-ui-components-z-loading.mjs","sources":["../../../../libs/core-ui/components/z-loading/z-loading.variants.ts","../../../../libs/core-ui/components/z-loading/z-loading.component.ts","../../../../libs/core-ui/components/z-loading/z-loading.component.html","../../../../libs/core-ui/components/z-loading/shival99-z-ui-components-z-loading.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zLoadingVariants = cva('inline-block animate-spin', {\n variants: {\n zSize: {\n '2xs': 'size-3',\n xs: 'size-4',\n default: 'size-6',\n lg: 'size-8',\n xl: 'size-12',\n },\n zColor: {\n primary: 'text-primary',\n secondary: 'text-secondary-foreground',\n white: 'text-white',\n current: 'text-current',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zColor: 'primary',\n },\n});\n\nexport type ZLoadingVariants = VariantProps<typeof zLoadingVariants>;\n","import { NgTemplateOutlet, CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, input, signal, ViewEncapsulation } from '@angular/core';\nimport { zTransform, zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type { ZLoadingSpinner, ZLoadingSize, ZLoadingColor, ZLoadingOverlayType } from './z-loading.types';\nimport { zLoadingVariants } from './z-loading.variants';\n\n@Component({\n selector: 'z-loading',\n imports: [CommonModule, NgTemplateOutlet],\n standalone: true,\n templateUrl: './z-loading.component.html',\n styleUrl: './z-loading.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'z-loading inline-flex',\n },\n})\nexport class ZLoadingComponent {\n public readonly class = input<ClassValue>('');\n public readonly zSpinner = input<ZLoadingSpinner>('spinner');\n public readonly zSize = input<ZLoadingSize>('default');\n public readonly zColor = input<ZLoadingColor>('primary');\n public readonly zText = input<string>('');\n public readonly zOverlay = input(false, { transform: zTransform });\n public readonly zOverlayType = input<ZLoadingOverlayType>('dark');\n public readonly zFullscreen = input(false, { transform: zTransform });\n public readonly zLoading = input(false, { transform: zTransform });\n\n protected readonly isVisible = signal(false);\n protected readonly isLeaving = signal(false);\n\n private _leaveTimeout: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n effect(() => {\n this._handleLoadingChange();\n });\n }\n\n protected readonly spinnerClasses = computed(() =>\n zMergeClasses(\n zLoadingVariants({\n zSize: this.zSize(),\n zColor: this.zColor(),\n }),\n this.class()\n )\n );\n\n protected readonly baseClasses = computed(() => {\n const size = this.zSize();\n const sizeClass = {\n '2xs': 'size-3',\n xs: 'size-4',\n default: 'size-6',\n lg: 'size-8',\n xl: 'size-12',\n }[size];\n return zMergeClasses('inline-block', sizeClass, `text-${this.zColor()}`, this.class());\n });\n\n protected readonly overlayClasses = computed(() => `z-loading-overlay-${this.zOverlayType()}`);\n\n protected readonly textSizeClasses = computed(() => {\n const size = this.zSize();\n return {\n 'text-xs': size === '2xs' || size === 'xs',\n 'text-sm': size === 'default',\n 'text-base': size === 'lg',\n 'text-lg': size === 'xl',\n };\n });\n\n private _handleLoadingChange(): void {\n const loading = this.zLoading();\n if (loading) {\n if (this._leaveTimeout) {\n clearTimeout(this._leaveTimeout);\n this._leaveTimeout = null;\n }\n this.isLeaving.set(false);\n this.isVisible.set(true);\n return;\n }\n\n this.isLeaving.set(true);\n this._leaveTimeout = setTimeout(() => {\n this.isVisible.set(false);\n this.isLeaving.set(false);\n }, 100);\n }\n}\n","@if (!zOverlay() && !zFullscreen()) {\n <div\n class=\"z-loading-wrapper inline-flex items-center justify-center transition-opacity duration-150\"\n [class.opacity-0]=\"!zLoading()\"\n [class.pointer-events-none]=\"!zLoading()\">\n <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n </div>\n}\n\n@if ((zOverlay() || zFullscreen()) && isVisible()) {\n <div\n class=\"z-loading-wrapper inline-flex items-center justify-center\"\n [class.z-loading-overlay]=\"zOverlay()\"\n [class.z-loading-fullscreen]=\"zFullscreen()\"\n [class.z-loading-leaving]=\"isLeaving()\"\n [class]=\"overlayClasses()\">\n <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n </div>\n}\n\n<ng-template #spinnerContent>\n <div class=\"z-loading-content flex flex-col items-center justify-center gap-3\">\n @switch (zSpinner()) {\n @case ('spinner') {\n <svg [class]=\"spinnerClasses()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\n </svg>\n }\n @case ('orbit') {\n <div [class]=\"spinnerClasses()\" class=\"z-loading-orbit relative\">\n <div class=\"absolute top-1/2 left-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current\"></div>\n <div class=\"absolute top-1/2 right-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current opacity-30\"></div>\n </div>\n }\n @case ('matrix') {\n <div [class]=\"baseClasses()\" class=\"z-loading-matrix\"></div>\n }\n @case ('conic') {\n <div [class]=\"baseClasses()\" class=\"z-loading-conic rounded-full\"></div>\n }\n @case ('polygon') {\n <div [class]=\"baseClasses()\" class=\"z-loading-polygon rounded-full\"></div>\n }\n @case ('triple') {\n <div [class]=\"baseClasses()\" class=\"z-loading-triple rounded-full\"></div>\n }\n }\n\n @if (zText()) {\n <p [class]=\"textSizeClasses()\" class=\"z-loading-text font-medium\" [style.color]=\"'currentColor'\">\n {{ zText() }}\n </p>\n }\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shival99-z-ui-components-z-loading.mjs","sources":["../../../../libs/core-ui/components/z-loading/z-loading.variants.ts","../../../../libs/core-ui/components/z-loading/z-loading.component.ts","../../../../libs/core-ui/components/z-loading/z-loading.component.html","../../../../libs/core-ui/components/z-loading/z-loading.define.ts","../../../../libs/core-ui/components/z-loading/shival99-z-ui-components-z-loading.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zLoadingVariants = cva('inline-block animate-spin', {\n variants: {\n zSize: {\n '2xs': 'size-3',\n xs: 'size-4',\n default: 'size-6',\n lg: 'size-8',\n xl: 'size-12',\n },\n zColor: {\n primary: 'text-primary',\n secondary: 'text-secondary-foreground',\n white: 'text-white',\n current: 'text-current',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zColor: 'primary',\n },\n});\n\nexport type ZLoadingVariants = VariantProps<typeof zLoadingVariants>;\n","import { NgTemplateOutlet, CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, input, signal, ViewEncapsulation } from '@angular/core';\nimport { zTransform, zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type { ZLoadingSpinner, ZLoadingSize, ZLoadingColor, ZLoadingOverlayType } from './z-loading.types';\nimport { zLoadingVariants } from './z-loading.variants';\n\n@Component({\n selector: 'z-loading',\n imports: [CommonModule, NgTemplateOutlet],\n standalone: true,\n templateUrl: './z-loading.component.html',\n styleUrl: './z-loading.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'z-loading inline-flex',\n },\n})\nexport class ZLoadingComponent {\n public readonly class = input<ClassValue>('');\n public readonly zSpinner = input<ZLoadingSpinner>('spinner');\n public readonly zSize = input<ZLoadingSize>('default');\n public readonly zColor = input<ZLoadingColor>('primary');\n public readonly zText = input<string>('');\n public readonly zOverlay = input(false, { transform: zTransform });\n public readonly zOverlayType = input<ZLoadingOverlayType>('dark');\n public readonly zFullscreen = input(false, { transform: zTransform });\n public readonly zLoading = input(false, { transform: zTransform });\n\n protected readonly isVisible = signal(false);\n protected readonly isLeaving = signal(false);\n\n private _leaveTimeout: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n effect(() => {\n this._handleLoadingChange();\n });\n }\n\n protected readonly spinnerClasses = computed(() =>\n zMergeClasses(\n zLoadingVariants({\n zSize: this.zSize(),\n zColor: this.zColor(),\n }),\n this.class()\n )\n );\n\n protected readonly loaderClasses = computed(() =>\n zMergeClasses(\n 'z-loading-loader',\n {\n 'z-loading-size-2xs': this.zSize() === '2xs',\n 'z-loading-size-xs': this.zSize() === 'xs',\n 'z-loading-size-default': this.zSize() === 'default',\n 'z-loading-size-lg': this.zSize() === 'lg',\n 'z-loading-size-xl': this.zSize() === 'xl',\n 'text-primary': this.zColor() === 'primary',\n 'text-secondary-foreground': this.zColor() === 'secondary',\n 'text-white': this.zColor() === 'white',\n 'text-current': this.zColor() === 'current',\n },\n this.class()\n )\n );\n\n protected readonly circleRings = [0, 1, 2, 3, 4] as const;\n protected readonly fadeBars = [0, 1, 2, 3, 4, 5, 6, 7] as const;\n protected readonly gridDots = [0, 1, 2, 3, 4, 5, 6, 7, 8] as const;\n protected readonly pacmanDots = [0, 1, 2, 3] as const;\n protected readonly propagateDots = [0, 1, 2, 3, 4, 5] as const;\n protected readonly scaleBars = [0, 1, 2, 3, 4] as const;\n\n protected readonly overlayClasses = computed(() => `z-loading-overlay-${this.zOverlayType()}`);\n\n protected readonly textSizeClasses = computed(() => {\n const size = this.zSize();\n return {\n 'text-xs': size === '2xs' || size === 'xs',\n 'text-sm': size === 'default',\n 'text-base': size === 'lg',\n 'text-lg': size === 'xl',\n };\n });\n\n private _handleLoadingChange(): void {\n const loading = this.zLoading();\n if (loading) {\n if (this._leaveTimeout) {\n clearTimeout(this._leaveTimeout);\n this._leaveTimeout = null;\n }\n this.isLeaving.set(false);\n this.isVisible.set(true);\n return;\n }\n\n this.isLeaving.set(true);\n this._leaveTimeout = setTimeout(() => {\n this.isVisible.set(false);\n this.isLeaving.set(false);\n }, 100);\n }\n}\n","@if (!zOverlay() && !zFullscreen()) {\n <div\n class=\"z-loading-wrapper inline-flex items-center justify-center transition-opacity duration-150\"\n [class.opacity-0]=\"!zLoading()\"\n [class.pointer-events-none]=\"!zLoading()\">\n <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n </div>\n}\n\n@if ((zOverlay() || zFullscreen()) && isVisible()) {\n <div\n class=\"z-loading-wrapper inline-flex items-center justify-center\"\n [class.z-loading-overlay]=\"zOverlay()\"\n [class.z-loading-fullscreen]=\"zFullscreen()\"\n [class.z-loading-leaving]=\"isLeaving()\"\n [class]=\"overlayClasses()\">\n <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n </div>\n}\n\n<ng-template #spinnerContent>\n <div\n class=\"z-loading-content flex flex-col items-center justify-center gap-3\"\n [attr.data-z-loading-spinner]=\"zSpinner()\">\n @switch (zSpinner()) {\n @case ('spinner') {\n <svg [class]=\"spinnerClasses()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\n </svg>\n }\n @case ('orbit') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-orbit\">\n <div class=\"absolute top-1/2 left-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current\"></div>\n <div class=\"absolute top-1/2 right-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current opacity-30\"></div>\n </div>\n }\n @case ('matrix') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-matrix\"></div>\n }\n @case ('conic') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-conic rounded-full\"></div>\n }\n @case ('polygon') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-polygon rounded-full\"></div>\n }\n @case ('triple') {\n <div [class]=\"loaderClasses()\" class=\"z-loading-triple rounded-full\"></div>\n }\n @case ('bar') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-bar\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('beat') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-beat\">\n <i></i>\n <i></i>\n <i></i>\n </span>\n }\n @case ('bounce') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-bounce\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('circle') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-circle\">\n @for (ring of circleRings; track ring) {\n <i [style.--z-index]=\"ring\"></i>\n }\n </span>\n }\n @case ('climbing-box') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-climbing-box\">\n <i></i>\n <b></b>\n </span>\n }\n @case ('clip') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-clip\"></span>\n }\n @case ('clock') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-clock\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('dot') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-dot\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('fade') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-fade\">\n @for (bar of fadeBars; track bar) {\n <i [style.--z-index]=\"bar\"></i>\n }\n </span>\n }\n @case ('grid') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-grid\">\n @for (dot of gridDots; track dot) {\n <i [style.--z-index]=\"dot\"></i>\n }\n </span>\n }\n @case ('hash') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-hash\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('moon') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-moon\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('pacman') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-pacman\">\n <i></i>\n <i></i>\n @for (dot of pacmanDots; track dot) {\n <b [style.--z-index]=\"dot\"></b>\n }\n </span>\n }\n @case ('propagate') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-propagate\">\n @for (dot of propagateDots; track dot) {\n <i [style.--z-index]=\"dot\"></i>\n }\n </span>\n }\n @case ('puff') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-puff\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('pulse') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-pulse\">\n <i></i>\n <i></i>\n <i></i>\n </span>\n }\n @case ('ring') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-ring\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('rise') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-rise\">\n <i></i>\n <i></i>\n <i></i>\n <i></i>\n <i></i>\n </span>\n }\n @case ('rotate') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-rotate\">\n <i></i>\n <i></i>\n </span>\n }\n @case ('scale') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-scale\">\n @for (bar of scaleBars; track bar) {\n <i [style.--z-index]=\"bar\"></i>\n }\n </span>\n }\n @case ('skew') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-skew\"></span>\n }\n @case ('square') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-square\"></span>\n }\n @case ('sync') {\n <span [class]=\"loaderClasses()\" class=\"z-loading-sync\">\n <i></i>\n <i></i>\n <i></i>\n </span>\n }\n }\n\n @if (zText()) {\n <p [class]=\"textSizeClasses()\" class=\"z-loading-text font-medium\" [style.color]=\"'currentColor'\">\n {{ zText() }}\n </p>\n }\n </div>\n</ng-template>\n","export const Z_LOADING_SPINNERS = [\n 'spinner',\n 'orbit',\n 'matrix',\n 'conic',\n 'polygon',\n 'triple',\n 'bar',\n 'beat',\n 'bounce',\n 'circle',\n 'climbing-box',\n 'clip',\n 'clock',\n 'dot',\n 'fade',\n 'grid',\n 'hash',\n 'moon',\n 'pacman',\n 'propagate',\n 'puff',\n 'pulse',\n 'ring',\n 'rise',\n 'rotate',\n 'scale',\n 'skew',\n 'square',\n 'sync',\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -32,6 +32,7 @@ const zTabsVariants = cva('z-tabs flex min-w-0', {
32
32
  line: 'gap-0',
33
33
  soft: 'gap-1 bg-background p-0 dark:bg-transparent',
34
34
  segment: 'gap-1 rounded-lg bg-muted/60 p-1 dark:bg-muted/35',
35
+ 'segment-solid': 'gap-1 rounded-lg bg-muted/60 p-1 dark:bg-muted/35',
35
36
  folder: 'isolate gap-0 bg-background p-0 dark:bg-transparent',
36
37
  'folder-soft': 'isolate gap-0 bg-background p-0 dark:bg-transparent',
37
38
  'folder-solid': 'isolate gap-0 bg-background p-0 dark:bg-transparent',
@@ -77,6 +78,7 @@ const zTabItemVariants = cva('z-tab-item relative inline-flex min-h-10 select-no
77
78
  line: 'rounded-none border-0 hover:text-foreground data-[active=true]:text-primary after:pointer-events-none after:absolute after:inset-x-0 after:bottom-[-1px] after:h-1 after:bg-primary after:origin-center after:scale-x-0 after:transition-transform after:duration-200 data-[active=true]:after:scale-x-100',
78
79
  soft: 'rounded-md border-0 text-muted-foreground hover:text-foreground data-[active=true]:bg-primary/10 data-[active=true]:text-primary data-[active=true]:shadow-xs! dark:data-[active=true]:bg-primary/15',
79
80
  segment: 'rounded-md border-0 text-muted-foreground hover:text-foreground data-[active=true]:bg-background data-[active=true]:text-primary data-[active=true]:shadow-sm',
81
+ 'segment-solid': 'rounded-md border-0 text-muted-foreground hover:text-foreground data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:shadow-sm',
80
82
  folder: 'rounded-t-md border-0 bg-transparent text-muted-foreground shadow-[inset_0_-1px_0_var(--border)] hover:text-foreground focus-visible:ring-0 focus-visible:ring-offset-0 data-[active=true]:z-[2] data-[active=true]:bg-background data-[active=true]:text-primary data-[active=true]:shadow-[inset_1px_0_0_var(--border),inset_-1px_0_0_var(--border),inset_0_1px_0_var(--border)]',
81
83
  'folder-soft': 'rounded-t-md border-0 bg-transparent text-muted-foreground shadow-[inset_0_-1px_0_var(--border)] hover:text-foreground focus-visible:ring-0 focus-visible:ring-offset-0 data-[active=true]:z-[2] data-[active=true]:bg-primary/10 data-[active=true]:text-primary data-[active=true]:shadow-[inset_1px_0_0_var(--border),inset_-1px_0_0_var(--border),inset_0_1px_0_var(--border)] dark:data-[active=true]:bg-primary/15',
82
84
  'folder-solid': 'rounded-t-md border-0 bg-transparent text-muted-foreground shadow-[inset_0_-1px_0_var(--border)] hover:text-foreground focus-visible:ring-0 focus-visible:ring-offset-0 data-[active=true]:z-[2] data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:shadow-[inset_1px_0_0_var(--primary),inset_-1px_0_0_var(--primary),inset_0_1px_0_var(--primary)]',
@@ -116,6 +118,11 @@ const zTabItemVariants = cva('z-tab-item relative inline-flex min-h-10 select-no
116
118
  zOrientation: 'vertical',
117
119
  class: 'w-full justify-start rounded-md data-[active=true]:bg-background data-[active=true]:shadow-xs',
118
120
  },
121
+ {
122
+ zType: 'segment-solid',
123
+ zOrientation: 'vertical',
124
+ class: 'w-full justify-start rounded-md data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:shadow-xs',
125
+ },
119
126
  {
120
127
  zType: 'folder',
121
128
  zOrientation: 'vertical',
@@ -214,6 +221,7 @@ class ZTabsComponent {
214
221
  zType = input('line', ...(ngDevMode ? [{ debugName: "zType" }] : []));
215
222
  zSize = input('default', ...(ngDevMode ? [{ debugName: "zSize" }] : []));
216
223
  zOrientation = input('horizontal', ...(ngDevMode ? [{ debugName: "zOrientation" }] : []));
224
+ zContentFit = input('none', ...(ngDevMode ? [{ debugName: "zContentFit" }] : []));
217
225
  zLazy = input(false, ...(ngDevMode ? [{ debugName: "zLazy" }] : []));
218
226
  zDestroyInactive = input(false, ...(ngDevMode ? [{ debugName: "zDestroyInactive" }] : []));
219
227
  zTabsOnly = input(false, ...(ngDevMode ? [{ debugName: "zTabsOnly" }] : []));
@@ -284,6 +292,7 @@ class ZTabsComponent {
284
292
  type !== 'folder-soft' &&
285
293
  type !== 'folder-solid' &&
286
294
  type !== 'segment' &&
295
+ type !== 'segment-solid' &&
287
296
  type !== 'sharp' &&
288
297
  type !== 'sharp-line' &&
289
298
  type !== 'sharp-line-filled' &&
@@ -473,7 +482,7 @@ class ZTabsComponent {
473
482
  }, 150);
474
483
  }
475
484
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ZTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
476
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: ZTabsComponent, isStandalone: true, selector: "z-tabs", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zTabs: { classPropertyName: "zTabs", publicName: "zTabs", isSignal: true, isRequired: true, transformFunction: null }, zType: { classPropertyName: "zType", publicName: "zType", isSignal: true, isRequired: false, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zOrientation: { classPropertyName: "zOrientation", publicName: "zOrientation", isSignal: true, isRequired: false, transformFunction: null }, zLazy: { classPropertyName: "zLazy", publicName: "zLazy", isSignal: true, isRequired: false, transformFunction: null }, zDestroyInactive: { classPropertyName: "zDestroyInactive", publicName: "zDestroyInactive", isSignal: true, isRequired: false, transformFunction: null }, zTabsOnly: { classPropertyName: "zTabsOnly", publicName: "zTabsOnly", isSignal: true, isRequired: false, transformFunction: null }, zShowContentWrapper: { classPropertyName: "zShowContentWrapper", publicName: "zShowContentWrapper", isSignal: true, isRequired: false, transformFunction: null }, zReloadable: { classPropertyName: "zReloadable", publicName: "zReloadable", isSignal: true, isRequired: false, transformFunction: null }, zEmitOnActiveClick: { classPropertyName: "zEmitOnActiveClick", publicName: "zEmitOnActiveClick", isSignal: true, isRequired: false, transformFunction: null }, zCache: { classPropertyName: "zCache", publicName: "zCache", isSignal: true, isRequired: false, transformFunction: null }, zCacheKey: { classPropertyName: "zCacheKey", publicName: "zCacheKey", isSignal: true, isRequired: false, transformFunction: null }, activeTab: { classPropertyName: "activeTab", publicName: "activeTab", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeTab: "activeTabChange", zTabChange: "zTabChange" }, host: { classAttribute: "z-tabs-wrapper block" }, queries: [{ propertyName: "tabPanels", predicate: ZTabPanelDirective, isSignal: true }], viewQueries: [{ propertyName: "tabsListContainer", first: true, predicate: ["tabsListContainer"], descendants: true, isSignal: true }, { propertyName: "tabButtons", predicate: ["tabButton"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"z-tabs-container flex gap-1\"\n [attr.data-type]=\"zType()\"\n [attr.data-orientation]=\"zOrientation()\"\n [class.flex-col]=\"!zTabsOnly()\"\n [class.flex-row]=\"zOrientation() === 'vertical'\"\n [class.gap-4]=\"zOrientation() === 'vertical'\">\n <!-- Tabs Navigation (Left/Scroll/Tabs/Right/Dropdown) -->\n <div\n class=\"z-tabs-nav flex items-center gap-1.5\"\n [class.w-full]=\"zOrientation() === 'horizontal'\"\n [class.w-auto]=\"zOrientation() === 'vertical'\"\n [class.shrink-0]=\"zOrientation() === 'vertical'\">\n <!-- Scroll Left Button -->\n @if (canScrollLeft() && zOrientation() === 'horizontal') {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n [zWave]=\"false\"\n class=\"z-tabs-nav-control shrink-0\"\n (click)=\"scrollLeft()\"\n aria-label=\"Scroll left\">\n <z-icon zType=\"lucideChevronLeft\" zSize=\"16\" />\n </z-button>\n }\n\n <!-- Tabs List Container with Scroll + Fade -->\n <div class=\"z-tabs-scroll-container relative min-w-0 flex-1\" [attr.data-type]=\"zType()\">\n @if (zOrientation() === 'vertical') {\n <ng-scrollbar\n class=\"z-tabs-scroll-wrapper z-tabs-scrollbar vertical\"\n [class.z-tabs-scroll-wrapper-limited]=\"verticalTabsScrollable()\"\n track=\"vertical\"\n orientation=\"vertical\"\n appearance=\"compact\"\n visibility=\"hover\">\n <ng-container *ngTemplateOutlet=\"tabsListTpl\" />\n </ng-scrollbar>\n } @else {\n <div\n #tabsListContainer\n class=\"z-tabs-scroll-wrapper\"\n [class.z-tabs-scroll-wrapper-scrollable]=\"canScrollLeft() || canScrollRight()\"\n (scroll)=\"onTabsScroll()\">\n <ng-container *ngTemplateOutlet=\"tabsListTpl\" />\n </div>\n }\n\n <!-- Fade overlays (outside scroll container) -->\n @if (canScrollLeft() && zOrientation() === 'horizontal') {\n <div class=\"z-tabs-fade-left\"></div>\n }\n @if (canScrollRight() && zOrientation() === 'horizontal') {\n <div class=\"z-tabs-fade-right\"></div>\n }\n </div>\n\n <!-- Scroll Right Button -->\n @if (canScrollRight() && zOrientation() === 'horizontal') {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n class=\"z-tabs-nav-control shrink-0\"\n (click)=\"scrollRight()\"\n [zWave]=\"false\"\n aria-label=\"Scroll right\">\n <z-icon zType=\"lucideChevronRight\" zSize=\"16\" />\n </z-button>\n }\n\n <!-- Dropdown Button (Mobile or Overflow) -->\n @if (zOrientation() === 'horizontal' && (canScrollLeft() || canScrollRight())) {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n class=\"z-tabs-nav-control shrink-0\"\n z-popover\n [zPopoverContent]=\"dropdownTpl\"\n zPosition=\"bottom-right\"\n [zWave]=\"false\"\n zClass=\"min-w-[6.25rem] max-w-[12.5rem]\"\n (zShow)=\"scrollToActiveDropdownItem()\"\n aria-label=\"Select tab\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"16\" />\n </z-button>\n }\n </div>\n\n <ng-template #tabsListTpl>\n <!-- Tab List -->\n <div\n [class]=\"tabsClasses()\"\n [class.pb-0.5]=\"tabsListHasBottomPadding()\"\n role=\"tablist\"\n [attr.aria-orientation]=\"zOrientation()\"\n [attr.data-type]=\"zType()\">\n @for (tab of zTabs(); track tab.value; let idx = $index; let last = $last) {\n <button\n #tabButton\n type=\"button\"\n role=\"tab\"\n [class]=\"getTabItemClasses(tab)\"\n [attr.data-active]=\"isTabActive(tab)\"\n [attr.data-state]=\"isTabActive(tab) ? 'active' : 'inactive'\"\n [attr.data-type]=\"zType()\"\n [attr.data-orientation]=\"zOrientation()\"\n [attr.data-last]=\"last\"\n [attr.aria-selected]=\"isTabActive(tab)\"\n [attr.aria-controls]=\"'panel-' + tab.value\"\n [disabled]=\"tab.disabled\"\n [tabindex]=\"isTabActive(tab) ? 0 : -1\"\n z-tooltip\n [zContent]=\"zOrientation() === 'vertical' ? (tab.label | translate) : ''\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n (click)=\"selectTab(tab)\"\n (keydown)=\"onTabKeydown($event, idx)\">\n @if (tab.icon) {\n <z-icon [zType]=\"tab.icon\" zSize=\"16\" class=\"shrink-0\" />\n }\n <span class=\"z-tab-item-label min-w-0 flex-1 truncate text-left\">{{ tab.label | translate }}</span>\n @if (tab.badge) {\n <span\n class=\"ring-background ml-1.5 inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 text-xs font-semibold ring-2\"\n [class.bg-primary]=\"zType() !== 'badge'\"\n [class.text-primary-foreground]=\"zType() !== 'badge'\"\n [class.bg-primary!]=\"zType() === 'badge'\"\n [class.text-primary-foreground!]=\"zType() === 'badge'\">\n {{ tab.badge }}\n </span>\n }\n </button>\n }\n </div>\n </ng-template>\n\n <!-- Tab Panels -->\n @if (!zTabsOnly()) {\n <div\n class=\"z-tabs-panels min-h-0\"\n [class.flex-1]=\"zOrientation() === 'vertical'\"\n [class.shadow-xs]=\"contentWrapperFramed()\"\n [class.z-tabs-panels-unwrapped]=\"!contentWrapperFramed()\">\n @for (panel of tabPanels(); track panel.zTabPanel()) {\n @if (panelRenderStates().get(panel.zTabPanel())) {\n <div\n role=\"tabpanel\"\n [id]=\"'panel-' + panel.zTabPanel()\"\n [attr.aria-labelledby]=\"panel.zTabPanel()\"\n [hidden]=\"activeTab() !== panel.zTabPanel()\">\n <ng-container *ngTemplateOutlet=\"panel.template\" />\n </div>\n }\n }\n </div>\n }\n</div>\n\n<!-- Dropdown Menu Template -->\n<ng-template #dropdownTpl let-close=\"close\">\n <div\n class=\"z-tabs-dropdown-menu flex max-h-[18.75rem] max-w-[12.5rem] min-w-[6.25rem] flex-col gap-0.5 overflow-y-auto p-1\">\n @for (tab of zTabs(); track tab.value) {\n <button\n #dropdownItem\n type=\"button\"\n class=\"flex w-full cursor-pointer items-center justify-start gap-2 rounded-sm px-2 py-1.5 text-left text-sm font-medium transition-colors outline-none disabled:pointer-events-none disabled:opacity-50\"\n [class.hover:text-foreground]=\"!isTabActive(tab)\"\n [class.focus:bg-primary/10]=\"!isTabActive(tab)\"\n [class.bg-primary/15]=\"isTabActive(tab)\"\n [class.text-primary]=\"isTabActive(tab)\"\n [disabled]=\"tab.disabled\"\n (click)=\"selectTab(tab, true); close()\">\n @if (tab.icon) {\n <z-icon [zType]=\"tab.icon\" zSize=\"16\" class=\"text-muted-foreground shrink-0\" />\n }\n <span\n class=\"min-w-0 flex-1 truncate\"\n z-tooltip\n [zContent]=\"tab.label | translate\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n [zTriggerElement]=\"dropdownItem\">\n {{ tab.label | translate }}\n </span>\n @if (tab.badge) {\n <span\n class=\"bg-primary text-primary-foreground inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 text-xs font-semibold\">\n {{ tab.badge }}\n </span>\n }\n @if (isTabActive(tab)) {\n <z-icon zType=\"lucideCheck\" zSize=\"16\" class=\"text-primary shink-0\" />\n }\n </button>\n }\n </div>\n</ng-template>\n", styles: [".z-tabs-scroll-wrapper{overflow-x:clip;overflow-y:visible;scrollbar-width:none;-ms-overflow-style:none;scroll-behavior:smooth}.z-tabs-scroll-wrapper::-webkit-scrollbar{display:none}.z-tabs-scroll-wrapper.vertical{max-height:var(--z-tabs-vertical-max-height, min(22rem, 60vh));overflow:hidden auto}.z-tabs-scroll-wrapper.vertical.z-tabs-scroll-wrapper-limited{height:var(--z-tabs-vertical-max-height, min(22rem, 60vh));overflow:hidden auto}.z-tabs-scroll-wrapper.z-tabs-scroll-wrapper-scrollable{overflow-x:auto}.z-tabs-scrollbar{--scrollbar-padding: .125rem;--z-tabs-scrollbar-gutter: .75rem;--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in oklab, var(--muted-foreground) 35%, transparent);--scrollbar-thumb-hover-color: color-mix(in oklab, var(--muted-foreground) 55%, transparent);--scrollbar-size: .375rem;display:block}.z-tabs-scrollbar .ng-scroll-viewport,.z-tabs-scrollbar .ng-scroll-content{max-width:100%}.z-tabs-scrollbar.z-tabs-scroll-wrapper-limited .ng-scroll-viewport{height:100%;max-height:100%}.z-tabs-scrollbar .ng-scroll-content{box-sizing:border-box;padding-right:var(--z-tabs-scrollbar-gutter)}.z-tabs-scroll-container{isolation:isolate;--z-tabs-fade-width: 2rem}.z-tabs-fade-left{content:\"\";position:absolute;left:0;top:.0625rem;bottom:.0625rem;width:var(--z-tabs-fade-width);background:linear-gradient(to right,var(--background) 0%,oklch(from var(--background) l c h/.86) 28%,oklch(from var(--background) l c h/.48) 60%,oklch(from var(--background) l c h/0) 100%);pointer-events:none;z-index:5}.z-tabs-fade-right{content:\"\";position:absolute;right:0;top:.0625rem;bottom:.0625rem;width:var(--z-tabs-fade-width);background:linear-gradient(to left,var(--background) 0%,oklch(from var(--background) l c h/.86) 28%,oklch(from var(--background) l c h/.48) 60%,oklch(from var(--background) l c h/0) 100%);pointer-events:none;z-index:5}.z-tabs{align-items:stretch;min-height:2.5rem}.z-tabs.flex-col{width:100%}.z-tabs.flex-col.border-r{border-right:.0625rem solid hsl(var(--border));padding-right:.5rem}.z-tabs-nav-control{transition:color .2s ease,background-color .2s ease,border-color .2s ease}.z-tab-item{-webkit-tap-highlight-color:transparent;position:relative}.z-tab-item[data-active=true]{position:relative}.z-tab-item:disabled{pointer-events:none}.z-tabs-panels{border:.0625rem solid var(--border);border-radius:var(--radius-xs);padding:1rem}.z-tabs-panels [role=tabpanel]{animation:z-tabs-fade-in .2s ease-in-out}.z-tabs-panels [role=tabpanel][hidden]{display:none}.z-tabs-panels-unwrapped{border:0;border-radius:0;padding:0}.z-tabs-wrapper .z-tabs.flex-row+.z-tabs-panels{margin-top:.875rem}.z-tabs-wrapper .z-tabs.flex-col+.z-tabs-panels{margin-top:0;margin-left:0}.z-tabs-container[data-orientation=horizontal]{gap:0}.z-tabs-container[data-orientation=horizontal] .z-tabs-scroll-container{z-index:1}.z-tabs-container[data-orientation=horizontal] .z-tabs-panels{margin-top:0}.z-tabs-container[data-type=line][data-orientation=horizontal] .z-tabs-nav{position:relative}.z-tabs-container[data-type=line][data-orientation=horizontal] .z-tabs-nav:after{content:\"\";position:absolute;right:0;bottom:0;left:0;height:.0625rem;background:color-mix(in oklab,var(--border) 80%,transparent);pointer-events:none;z-index:0}.z-tabs-container:is([data-type=outline],[data-type=soft],[data-type=segment],[data-type=folder],[data-type=folder-soft],[data-type=folder-solid],[data-type=underline],[data-type=underlined],[data-type=badge],[data-type=sharp],[data-type=sharp-line],[data-type=sharp-line-filled],[data-type=code-line])[data-orientation=horizontal] .z-tabs-scroll-wrapper{padding-inline:0}.z-tabs-container:is([data-type=outline],[data-type=soft],[data-type=segment],[data-type=folder],[data-type=folder-soft],[data-type=folder-solid],[data-type=underline],[data-type=underlined],[data-type=badge],[data-type=sharp],[data-type=sharp-line],[data-type=sharp-line-filled],[data-type=code-line])[data-orientation=horizontal] .z-tabs-panels{border-radius:0 0 var(--radius-xs) var(--radius-xs)}.z-tabs-container:is([data-type=outline],[data-type=soft],[data-type=segment],[data-type=folder],[data-type=folder-soft],[data-type=folder-solid],[data-type=underline],[data-type=underlined],[data-type=badge],[data-type=sharp],[data-type=sharp-line],[data-type=sharp-line-filled],[data-type=code-line])[data-orientation=horizontal] .z-tabs-panels-unwrapped{border:0;border-radius:0}.z-tabs-container:is([data-type=folder],[data-type=folder-soft],[data-type=folder-solid])[data-orientation=horizontal] .z-tabs-nav{position:relative}.z-tabs-container:is([data-type=folder],[data-type=folder-soft],[data-type=folder-solid])[data-orientation=horizontal] .z-tabs-nav:after{content:\"\";position:absolute;right:0;bottom:0;left:0;height:.0625rem;background:var(--border);pointer-events:none;z-index:0}.z-tabs-container:is([data-type=folder],[data-type=folder-soft],[data-type=folder-solid])[data-orientation=horizontal] .z-tabs-panels{border-top:0}.z-tabs-container[data-type=folder-solid][data-orientation=horizontal] .z-tab-item[data-active=true][data-last=true]{box-shadow:inset .0625rem 0 0 var(--primary),inset -.0625rem 0 0 var(--border),inset 0 .0625rem 0 var(--primary)}.z-tabs-container[data-type=segment] .z-tabs{align-items:center}.z-tabs-container[data-orientation=vertical] .z-tabs-nav{align-items:stretch}.z-tabs-container[data-orientation=vertical] .z-tabs-scroll-container{width:min(12rem,40vw);flex:none}.z-tabs-container[data-orientation=vertical] .z-tabs-panels,.z-tabs-container[data-orientation=vertical] .z-tab-item{min-width:0}@media(prefers-reduced-motion:reduce){.z-tab-item,.z-tabs-nav-control{transition:none!important}.z-tabs-scroll-wrapper{scroll-behavior:auto}.z-tabs-panels [role=tabpanel]{animation:none!important}}@keyframes z-tabs-fade-in{0%{opacity:0;transform:translateY(-.2rem)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "component", type: ZIconComponent, selector: "z-icon, [z-icon]", inputs: ["class", "zType", "zAnimatedType", "zAnimate", "zAnimationTrigger", "zSize", "zStrokeWidth", "zSvg"] }, { kind: "component", type: ZButtonComponent, selector: "z-button, button[z-button], a[z-button]", inputs: ["class", "zType", "zSize", "zShape", "zLabel", "zLoading", "zDisabled", "zTypeIcon", "zAnimatedTypeIcon", "zAnimateIcon", "zAnimationTriggerIcon", "zSizeIcon", "zStrokeWidthIcon", "zWave"], exportAs: ["zButton"] }, { kind: "directive", type: ZTooltipDirective, selector: "[z-tooltip], [zTooltip]", inputs: ["zContent", "zPosition", "zTooltipPosition", "zTrigger", "zTooltipTrigger", "zTooltipType", "zTooltipSize", "zClass", "zTooltipClass", "zShowDelay", "zTooltipShowDelay", "zHideDelay", "zTooltipHideDelay", "zArrow", "zTooltipArrow", "zDisabled", "zTooltipDisabled", "zOffset", "zTooltipOffset", "zAutoDetect", "zTriggerElement", "zAlwaysShow", "zMaxWidth"], outputs: ["zShow", "zHide"], exportAs: ["zTooltip"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ZPopoverDirective, selector: "[z-popover]", inputs: ["zPopoverContent", "zPosition", "zTrigger", "zPopoverTrigger", "zClass", "zShowDelay", "zHideDelay", "zDisabled", "zOffset", "zPopoverWidth", "zTriggerRef", "zManualClose", "zOutsideClickClose", "zScrollClose", "zSticky", "zShowArrow", "zKeyboardSafe"], outputs: ["zShow", "zHide", "zHideStart", "zControl", "zPositionChange", "zOutsideClick"], exportAs: ["zPopover"] }, { kind: "component", type: NgScrollbar, selector: "ng-scrollbar:not([externalViewport]), [ngScrollbar]", exportAs: ["ngScrollbar"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
485
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: ZTabsComponent, isStandalone: true, selector: "z-tabs", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zTabs: { classPropertyName: "zTabs", publicName: "zTabs", isSignal: true, isRequired: true, transformFunction: null }, zType: { classPropertyName: "zType", publicName: "zType", isSignal: true, isRequired: false, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zOrientation: { classPropertyName: "zOrientation", publicName: "zOrientation", isSignal: true, isRequired: false, transformFunction: null }, zContentFit: { classPropertyName: "zContentFit", publicName: "zContentFit", isSignal: true, isRequired: false, transformFunction: null }, zLazy: { classPropertyName: "zLazy", publicName: "zLazy", isSignal: true, isRequired: false, transformFunction: null }, zDestroyInactive: { classPropertyName: "zDestroyInactive", publicName: "zDestroyInactive", isSignal: true, isRequired: false, transformFunction: null }, zTabsOnly: { classPropertyName: "zTabsOnly", publicName: "zTabsOnly", isSignal: true, isRequired: false, transformFunction: null }, zShowContentWrapper: { classPropertyName: "zShowContentWrapper", publicName: "zShowContentWrapper", isSignal: true, isRequired: false, transformFunction: null }, zReloadable: { classPropertyName: "zReloadable", publicName: "zReloadable", isSignal: true, isRequired: false, transformFunction: null }, zEmitOnActiveClick: { classPropertyName: "zEmitOnActiveClick", publicName: "zEmitOnActiveClick", isSignal: true, isRequired: false, transformFunction: null }, zCache: { classPropertyName: "zCache", publicName: "zCache", isSignal: true, isRequired: false, transformFunction: null }, zCacheKey: { classPropertyName: "zCacheKey", publicName: "zCacheKey", isSignal: true, isRequired: false, transformFunction: null }, activeTab: { classPropertyName: "activeTab", publicName: "activeTab", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeTab: "activeTabChange", zTabChange: "zTabChange" }, host: { classAttribute: "z-tabs-wrapper block" }, queries: [{ propertyName: "tabPanels", predicate: ZTabPanelDirective, isSignal: true }], viewQueries: [{ propertyName: "tabsListContainer", first: true, predicate: ["tabsListContainer"], descendants: true, isSignal: true }, { propertyName: "tabButtons", predicate: ["tabButton"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"z-tabs-container flex gap-1\"\n [attr.data-type]=\"zType()\"\n [attr.data-orientation]=\"zOrientation()\"\n [attr.data-content-fit]=\"zContentFit()\"\n [class.flex-col]=\"!zTabsOnly()\"\n [class.flex-row]=\"zOrientation() === 'vertical'\"\n [class.gap-4]=\"zOrientation() === 'vertical'\">\n <!-- Tabs Navigation (Left/Scroll/Tabs/Right/Dropdown) -->\n <div\n class=\"z-tabs-nav flex items-center gap-1.5\"\n [class.w-full]=\"zOrientation() === 'horizontal'\"\n [class.w-auto]=\"zOrientation() === 'vertical'\"\n [class.shrink-0]=\"zOrientation() === 'vertical'\">\n <!-- Scroll Left Button -->\n @if (canScrollLeft() && zOrientation() === 'horizontal') {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n [zWave]=\"false\"\n class=\"z-tabs-nav-control shrink-0\"\n (click)=\"scrollLeft()\"\n aria-label=\"Scroll left\">\n <z-icon zType=\"lucideChevronLeft\" zSize=\"16\" />\n </z-button>\n }\n\n <!-- Tabs List Container with Scroll + Fade -->\n <div class=\"z-tabs-scroll-container relative min-w-0 flex-1\" [attr.data-type]=\"zType()\">\n @if (zOrientation() === 'vertical') {\n <ng-scrollbar\n class=\"z-tabs-scroll-wrapper z-tabs-scrollbar vertical\"\n [class.z-tabs-scroll-wrapper-limited]=\"verticalTabsScrollable()\"\n track=\"vertical\"\n orientation=\"vertical\"\n appearance=\"compact\"\n visibility=\"hover\">\n <ng-container *ngTemplateOutlet=\"tabsListTpl\" />\n </ng-scrollbar>\n } @else {\n <div\n #tabsListContainer\n class=\"z-tabs-scroll-wrapper\"\n [class.z-tabs-scroll-wrapper-scrollable]=\"canScrollLeft() || canScrollRight()\"\n (scroll)=\"onTabsScroll()\">\n <ng-container *ngTemplateOutlet=\"tabsListTpl\" />\n </div>\n }\n\n <!-- Fade overlays (outside scroll container) -->\n @if (canScrollLeft() && zOrientation() === 'horizontal') {\n <div class=\"z-tabs-fade-left\"></div>\n }\n @if (canScrollRight() && zOrientation() === 'horizontal') {\n <div class=\"z-tabs-fade-right\"></div>\n }\n </div>\n\n <!-- Scroll Right Button -->\n @if (canScrollRight() && zOrientation() === 'horizontal') {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n class=\"z-tabs-nav-control shrink-0\"\n (click)=\"scrollRight()\"\n [zWave]=\"false\"\n aria-label=\"Scroll right\">\n <z-icon zType=\"lucideChevronRight\" zSize=\"16\" />\n </z-button>\n }\n\n <!-- Dropdown Button (Mobile or Overflow) -->\n @if (zOrientation() === 'horizontal' && (canScrollLeft() || canScrollRight())) {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n class=\"z-tabs-nav-control shrink-0\"\n z-popover\n [zPopoverContent]=\"dropdownTpl\"\n zPosition=\"bottom-right\"\n [zWave]=\"false\"\n zClass=\"min-w-[6.25rem] max-w-[12.5rem]\"\n (zShow)=\"scrollToActiveDropdownItem()\"\n aria-label=\"Select tab\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"16\" />\n </z-button>\n }\n </div>\n\n <ng-template #tabsListTpl>\n <!-- Tab List -->\n <div\n [class]=\"tabsClasses()\"\n [class.pb-0.5]=\"tabsListHasBottomPadding()\"\n role=\"tablist\"\n [attr.aria-orientation]=\"zOrientation()\"\n [attr.data-type]=\"zType()\">\n @for (tab of zTabs(); track tab.value; let idx = $index; let last = $last) {\n <button\n #tabButton\n type=\"button\"\n role=\"tab\"\n [class]=\"getTabItemClasses(tab)\"\n [attr.data-active]=\"isTabActive(tab)\"\n [attr.data-state]=\"isTabActive(tab) ? 'active' : 'inactive'\"\n [attr.data-type]=\"zType()\"\n [attr.data-orientation]=\"zOrientation()\"\n [attr.data-last]=\"last\"\n [attr.aria-selected]=\"isTabActive(tab)\"\n [attr.aria-controls]=\"'panel-' + tab.value\"\n [disabled]=\"tab.disabled\"\n [tabindex]=\"isTabActive(tab) ? 0 : -1\"\n z-tooltip\n [zContent]=\"zOrientation() === 'vertical' ? (tab.label | translate) : ''\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n (click)=\"selectTab(tab)\"\n (keydown)=\"onTabKeydown($event, idx)\">\n @if (tab.icon) {\n <z-icon [zType]=\"tab.icon\" zSize=\"16\" class=\"shrink-0\" />\n }\n <span class=\"z-tab-item-label min-w-0 flex-1 truncate text-left\">{{ tab.label | translate }}</span>\n @if (tab.badge) {\n <span\n class=\"ring-background ml-1.5 inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 text-xs font-semibold ring-2\"\n [class.bg-primary]=\"zType() !== 'badge'\"\n [class.text-primary-foreground]=\"zType() !== 'badge'\"\n [class.bg-primary!]=\"zType() === 'badge'\"\n [class.text-primary-foreground!]=\"zType() === 'badge'\">\n {{ tab.badge }}\n </span>\n }\n </button>\n }\n </div>\n </ng-template>\n\n <!-- Tab Panels -->\n @if (!zTabsOnly()) {\n <div\n class=\"z-tabs-panels min-h-0\"\n [class.flex-1]=\"zOrientation() === 'vertical'\"\n [class.shadow-xs]=\"contentWrapperFramed()\"\n [class.z-tabs-panels-unwrapped]=\"!contentWrapperFramed()\">\n @for (panel of tabPanels(); track panel.zTabPanel()) {\n @if (panelRenderStates().get(panel.zTabPanel())) {\n <div\n role=\"tabpanel\"\n [id]=\"'panel-' + panel.zTabPanel()\"\n [attr.aria-labelledby]=\"panel.zTabPanel()\"\n [hidden]=\"activeTab() !== panel.zTabPanel()\">\n <ng-container *ngTemplateOutlet=\"panel.template\" />\n </div>\n }\n }\n </div>\n }\n</div>\n\n<!-- Dropdown Menu Template -->\n<ng-template #dropdownTpl let-close=\"close\">\n <div\n class=\"z-tabs-dropdown-menu flex max-h-[18.75rem] max-w-[12.5rem] min-w-[6.25rem] flex-col gap-0.5 overflow-y-auto p-1\">\n @for (tab of zTabs(); track tab.value) {\n <button\n #dropdownItem\n type=\"button\"\n class=\"flex w-full cursor-pointer items-center justify-start gap-2 rounded-sm px-2 py-1.5 text-left text-sm font-medium transition-colors outline-none disabled:pointer-events-none disabled:opacity-50\"\n [class.hover:text-foreground]=\"!isTabActive(tab)\"\n [class.focus:bg-primary/10]=\"!isTabActive(tab)\"\n [class.bg-primary/15]=\"isTabActive(tab)\"\n [class.text-primary]=\"isTabActive(tab)\"\n [disabled]=\"tab.disabled\"\n (click)=\"selectTab(tab, true); close()\">\n @if (tab.icon) {\n <z-icon [zType]=\"tab.icon\" zSize=\"16\" class=\"text-muted-foreground shrink-0\" />\n }\n <span\n class=\"min-w-0 flex-1 truncate\"\n z-tooltip\n [zContent]=\"tab.label | translate\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n [zTriggerElement]=\"dropdownItem\">\n {{ tab.label | translate }}\n </span>\n @if (tab.badge) {\n <span\n class=\"bg-primary text-primary-foreground inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 text-xs font-semibold\">\n {{ tab.badge }}\n </span>\n }\n @if (isTabActive(tab)) {\n <z-icon zType=\"lucideCheck\" zSize=\"16\" class=\"text-primary shink-0\" />\n }\n </button>\n }\n </div>\n</ng-template>\n", styles: [".z-tabs-scroll-wrapper{overflow-x:clip;overflow-y:visible;scrollbar-width:none;-ms-overflow-style:none;scroll-behavior:smooth}.z-tabs-scroll-wrapper::-webkit-scrollbar{display:none}.z-tabs-scroll-wrapper.vertical{max-height:var(--z-tabs-vertical-max-height, min(22rem, 60vh));overflow:hidden auto}.z-tabs-scroll-wrapper.vertical.z-tabs-scroll-wrapper-limited{height:var(--z-tabs-vertical-max-height, min(22rem, 60vh));overflow:hidden auto}.z-tabs-scroll-wrapper.z-tabs-scroll-wrapper-scrollable{overflow-x:auto}.z-tabs-scrollbar{--scrollbar-padding: .125rem;--z-tabs-scrollbar-gutter: .75rem;--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in oklab, var(--muted-foreground) 35%, transparent);--scrollbar-thumb-hover-color: color-mix(in oklab, var(--muted-foreground) 55%, transparent);--scrollbar-size: .375rem;display:block}.z-tabs-scrollbar .ng-scroll-viewport,.z-tabs-scrollbar .ng-scroll-content{max-width:100%}.z-tabs-scrollbar.z-tabs-scroll-wrapper-limited .ng-scroll-viewport{height:100%;max-height:100%}.z-tabs-scrollbar .ng-scroll-content{box-sizing:border-box;padding-right:var(--z-tabs-scrollbar-gutter)}.z-tabs-scroll-container{isolation:isolate;--z-tabs-fade-width: 2rem}.z-tabs-fade-left{content:\"\";position:absolute;left:0;top:.0625rem;bottom:.0625rem;width:var(--z-tabs-fade-width);background:linear-gradient(to right,var(--background) 0%,oklch(from var(--background) l c h/.86) 28%,oklch(from var(--background) l c h/.48) 60%,oklch(from var(--background) l c h/0) 100%);pointer-events:none;z-index:5}.z-tabs-fade-right{content:\"\";position:absolute;right:0;top:.0625rem;bottom:.0625rem;width:var(--z-tabs-fade-width);background:linear-gradient(to left,var(--background) 0%,oklch(from var(--background) l c h/.86) 28%,oklch(from var(--background) l c h/.48) 60%,oklch(from var(--background) l c h/0) 100%);pointer-events:none;z-index:5}.z-tabs{align-items:stretch;min-height:2.5rem}.z-tabs.flex-col{width:100%}.z-tabs.flex-col.border-r{border-right:.0625rem solid hsl(var(--border));padding-right:.5rem}.z-tabs-nav-control{transition:color .2s ease,background-color .2s ease,border-color .2s ease}.z-tab-item{-webkit-tap-highlight-color:transparent;position:relative}.z-tab-item[data-active=true]{position:relative}.z-tab-item:disabled{pointer-events:none}.z-tabs-panels{border:.0625rem solid var(--border);border-radius:var(--radius-xs);padding:1rem}.z-tabs-panels [role=tabpanel]{animation:z-tabs-fade-in .2s ease-in-out}.z-tabs-panels [role=tabpanel][hidden]{display:none}.z-tabs-panels-unwrapped{border:0;border-radius:0;padding:0}.z-tabs-wrapper .z-tabs.flex-row+.z-tabs-panels{margin-top:.875rem}.z-tabs-wrapper .z-tabs.flex-col+.z-tabs-panels{margin-top:0;margin-left:0}.z-tabs-container[data-orientation=horizontal]{gap:0}.z-tabs-container[data-orientation=horizontal] .z-tabs-scroll-container{z-index:1}.z-tabs-container[data-orientation=horizontal] .z-tabs-panels{margin-top:0}.z-tabs-container[data-content-fit=screen]{height:var(--z-tabs-screen-height, calc(100dvh - var(--z-tabs-screen-offset, 0rem)));max-height:var(--z-tabs-screen-height, calc(100dvh - var(--z-tabs-screen-offset, 0rem)));min-height:0;overflow:hidden}.z-tabs-container[data-content-fit=screen] .z-tabs-nav{flex:none;min-height:0}.z-tabs-container[data-content-fit=screen] .z-tabs-panels{flex:1 1 auto;min-height:0;overflow:auto}.z-tabs-container[data-content-fit=screen] [role=tabpanel]{min-height:0}.z-tabs-container[data-type=line][data-orientation=horizontal] .z-tabs-nav{position:relative}.z-tabs-container[data-type=line][data-orientation=horizontal] .z-tabs-nav:after{content:\"\";position:absolute;right:0;bottom:0;left:0;height:.0625rem;background:color-mix(in oklab,var(--border) 80%,transparent);pointer-events:none;z-index:0}.z-tabs-container:is([data-type=outline],[data-type=soft],[data-type=segment],[data-type=folder],[data-type=folder-soft],[data-type=folder-solid],[data-type=underline],[data-type=underlined],[data-type=badge],[data-type=sharp],[data-type=sharp-line],[data-type=sharp-line-filled],[data-type=code-line])[data-orientation=horizontal] .z-tabs-scroll-wrapper{padding-inline:0}.z-tabs-container:is([data-type=outline],[data-type=soft],[data-type=segment],[data-type=folder],[data-type=folder-soft],[data-type=folder-solid],[data-type=underline],[data-type=underlined],[data-type=badge],[data-type=sharp],[data-type=sharp-line],[data-type=sharp-line-filled],[data-type=code-line])[data-orientation=horizontal] .z-tabs-panels{border-radius:0 0 var(--radius-xs) var(--radius-xs)}.z-tabs-container:is([data-type=outline],[data-type=soft],[data-type=segment],[data-type=folder],[data-type=folder-soft],[data-type=folder-solid],[data-type=underline],[data-type=underlined],[data-type=badge],[data-type=sharp],[data-type=sharp-line],[data-type=sharp-line-filled],[data-type=code-line])[data-orientation=horizontal] .z-tabs-panels-unwrapped{border:0;border-radius:0}.z-tabs-container:is([data-type=folder],[data-type=folder-soft],[data-type=folder-solid])[data-orientation=horizontal] .z-tabs-nav{position:relative}.z-tabs-container:is([data-type=folder],[data-type=folder-soft],[data-type=folder-solid])[data-orientation=horizontal] .z-tabs-nav:after{content:\"\";position:absolute;right:0;bottom:0;left:0;height:.0625rem;background:var(--border);pointer-events:none;z-index:0}.z-tabs-container:is([data-type=folder],[data-type=folder-soft],[data-type=folder-solid])[data-orientation=horizontal] .z-tabs-panels{border-top:0}.z-tabs-container[data-type=folder-solid][data-orientation=horizontal] .z-tab-item[data-active=true][data-last=true]{box-shadow:inset .0625rem 0 0 var(--primary),inset -.0625rem 0 0 var(--border),inset 0 .0625rem 0 var(--primary)}.z-tabs-container:is([data-type=segment],[data-type=segment-solid]) .z-tabs{align-items:center}.z-tabs-container[data-orientation=vertical] .z-tabs-nav{align-items:stretch}.z-tabs-container[data-orientation=vertical] .z-tabs-scroll-container{width:min(12rem,40vw);flex:none}.z-tabs-container[data-orientation=vertical] .z-tabs-panels,.z-tabs-container[data-orientation=vertical] .z-tab-item{min-width:0}@media(prefers-reduced-motion:reduce){.z-tab-item,.z-tabs-nav-control{transition:none!important}.z-tabs-scroll-wrapper{scroll-behavior:auto}.z-tabs-panels [role=tabpanel]{animation:none!important}}@keyframes z-tabs-fade-in{0%{opacity:0;transform:translateY(-.2rem)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "component", type: ZIconComponent, selector: "z-icon, [z-icon]", inputs: ["class", "zType", "zAnimatedType", "zAnimate", "zAnimationTrigger", "zSize", "zStrokeWidth", "zSvg"] }, { kind: "component", type: ZButtonComponent, selector: "z-button, button[z-button], a[z-button]", inputs: ["class", "zType", "zSize", "zShape", "zLabel", "zLoading", "zDisabled", "zTypeIcon", "zAnimatedTypeIcon", "zAnimateIcon", "zAnimationTriggerIcon", "zSizeIcon", "zStrokeWidthIcon", "zWave"], exportAs: ["zButton"] }, { kind: "directive", type: ZTooltipDirective, selector: "[z-tooltip], [zTooltip]", inputs: ["zContent", "zPosition", "zTooltipPosition", "zTrigger", "zTooltipTrigger", "zTooltipType", "zTooltipSize", "zClass", "zTooltipClass", "zShowDelay", "zTooltipShowDelay", "zHideDelay", "zTooltipHideDelay", "zArrow", "zTooltipArrow", "zDisabled", "zTooltipDisabled", "zOffset", "zTooltipOffset", "zAutoDetect", "zTriggerElement", "zAlwaysShow", "zMaxWidth"], outputs: ["zShow", "zHide"], exportAs: ["zTooltip"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ZPopoverDirective, selector: "[z-popover]", inputs: ["zPopoverContent", "zPosition", "zTrigger", "zPopoverTrigger", "zClass", "zShowDelay", "zHideDelay", "zDisabled", "zOffset", "zPopoverWidth", "zTriggerRef", "zManualClose", "zOutsideClickClose", "zScrollClose", "zSticky", "zShowArrow", "zKeyboardSafe"], outputs: ["zShow", "zHide", "zHideStart", "zControl", "zPositionChange", "zOutsideClick"], exportAs: ["zPopover"] }, { kind: "component", type: NgScrollbar, selector: "ng-scrollbar:not([externalViewport]), [ngScrollbar]", exportAs: ["ngScrollbar"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
477
486
  }
478
487
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ZTabsComponent, decorators: [{
479
488
  type: Component,
@@ -487,8 +496,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
487
496
  NgScrollbar,
488
497
  ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
489
498
  class: 'z-tabs-wrapper block',
490
- }, template: "<div\n class=\"z-tabs-container flex gap-1\"\n [attr.data-type]=\"zType()\"\n [attr.data-orientation]=\"zOrientation()\"\n [class.flex-col]=\"!zTabsOnly()\"\n [class.flex-row]=\"zOrientation() === 'vertical'\"\n [class.gap-4]=\"zOrientation() === 'vertical'\">\n <!-- Tabs Navigation (Left/Scroll/Tabs/Right/Dropdown) -->\n <div\n class=\"z-tabs-nav flex items-center gap-1.5\"\n [class.w-full]=\"zOrientation() === 'horizontal'\"\n [class.w-auto]=\"zOrientation() === 'vertical'\"\n [class.shrink-0]=\"zOrientation() === 'vertical'\">\n <!-- Scroll Left Button -->\n @if (canScrollLeft() && zOrientation() === 'horizontal') {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n [zWave]=\"false\"\n class=\"z-tabs-nav-control shrink-0\"\n (click)=\"scrollLeft()\"\n aria-label=\"Scroll left\">\n <z-icon zType=\"lucideChevronLeft\" zSize=\"16\" />\n </z-button>\n }\n\n <!-- Tabs List Container with Scroll + Fade -->\n <div class=\"z-tabs-scroll-container relative min-w-0 flex-1\" [attr.data-type]=\"zType()\">\n @if (zOrientation() === 'vertical') {\n <ng-scrollbar\n class=\"z-tabs-scroll-wrapper z-tabs-scrollbar vertical\"\n [class.z-tabs-scroll-wrapper-limited]=\"verticalTabsScrollable()\"\n track=\"vertical\"\n orientation=\"vertical\"\n appearance=\"compact\"\n visibility=\"hover\">\n <ng-container *ngTemplateOutlet=\"tabsListTpl\" />\n </ng-scrollbar>\n } @else {\n <div\n #tabsListContainer\n class=\"z-tabs-scroll-wrapper\"\n [class.z-tabs-scroll-wrapper-scrollable]=\"canScrollLeft() || canScrollRight()\"\n (scroll)=\"onTabsScroll()\">\n <ng-container *ngTemplateOutlet=\"tabsListTpl\" />\n </div>\n }\n\n <!-- Fade overlays (outside scroll container) -->\n @if (canScrollLeft() && zOrientation() === 'horizontal') {\n <div class=\"z-tabs-fade-left\"></div>\n }\n @if (canScrollRight() && zOrientation() === 'horizontal') {\n <div class=\"z-tabs-fade-right\"></div>\n }\n </div>\n\n <!-- Scroll Right Button -->\n @if (canScrollRight() && zOrientation() === 'horizontal') {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n class=\"z-tabs-nav-control shrink-0\"\n (click)=\"scrollRight()\"\n [zWave]=\"false\"\n aria-label=\"Scroll right\">\n <z-icon zType=\"lucideChevronRight\" zSize=\"16\" />\n </z-button>\n }\n\n <!-- Dropdown Button (Mobile or Overflow) -->\n @if (zOrientation() === 'horizontal' && (canScrollLeft() || canScrollRight())) {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n class=\"z-tabs-nav-control shrink-0\"\n z-popover\n [zPopoverContent]=\"dropdownTpl\"\n zPosition=\"bottom-right\"\n [zWave]=\"false\"\n zClass=\"min-w-[6.25rem] max-w-[12.5rem]\"\n (zShow)=\"scrollToActiveDropdownItem()\"\n aria-label=\"Select tab\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"16\" />\n </z-button>\n }\n </div>\n\n <ng-template #tabsListTpl>\n <!-- Tab List -->\n <div\n [class]=\"tabsClasses()\"\n [class.pb-0.5]=\"tabsListHasBottomPadding()\"\n role=\"tablist\"\n [attr.aria-orientation]=\"zOrientation()\"\n [attr.data-type]=\"zType()\">\n @for (tab of zTabs(); track tab.value; let idx = $index; let last = $last) {\n <button\n #tabButton\n type=\"button\"\n role=\"tab\"\n [class]=\"getTabItemClasses(tab)\"\n [attr.data-active]=\"isTabActive(tab)\"\n [attr.data-state]=\"isTabActive(tab) ? 'active' : 'inactive'\"\n [attr.data-type]=\"zType()\"\n [attr.data-orientation]=\"zOrientation()\"\n [attr.data-last]=\"last\"\n [attr.aria-selected]=\"isTabActive(tab)\"\n [attr.aria-controls]=\"'panel-' + tab.value\"\n [disabled]=\"tab.disabled\"\n [tabindex]=\"isTabActive(tab) ? 0 : -1\"\n z-tooltip\n [zContent]=\"zOrientation() === 'vertical' ? (tab.label | translate) : ''\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n (click)=\"selectTab(tab)\"\n (keydown)=\"onTabKeydown($event, idx)\">\n @if (tab.icon) {\n <z-icon [zType]=\"tab.icon\" zSize=\"16\" class=\"shrink-0\" />\n }\n <span class=\"z-tab-item-label min-w-0 flex-1 truncate text-left\">{{ tab.label | translate }}</span>\n @if (tab.badge) {\n <span\n class=\"ring-background ml-1.5 inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 text-xs font-semibold ring-2\"\n [class.bg-primary]=\"zType() !== 'badge'\"\n [class.text-primary-foreground]=\"zType() !== 'badge'\"\n [class.bg-primary!]=\"zType() === 'badge'\"\n [class.text-primary-foreground!]=\"zType() === 'badge'\">\n {{ tab.badge }}\n </span>\n }\n </button>\n }\n </div>\n </ng-template>\n\n <!-- Tab Panels -->\n @if (!zTabsOnly()) {\n <div\n class=\"z-tabs-panels min-h-0\"\n [class.flex-1]=\"zOrientation() === 'vertical'\"\n [class.shadow-xs]=\"contentWrapperFramed()\"\n [class.z-tabs-panels-unwrapped]=\"!contentWrapperFramed()\">\n @for (panel of tabPanels(); track panel.zTabPanel()) {\n @if (panelRenderStates().get(panel.zTabPanel())) {\n <div\n role=\"tabpanel\"\n [id]=\"'panel-' + panel.zTabPanel()\"\n [attr.aria-labelledby]=\"panel.zTabPanel()\"\n [hidden]=\"activeTab() !== panel.zTabPanel()\">\n <ng-container *ngTemplateOutlet=\"panel.template\" />\n </div>\n }\n }\n </div>\n }\n</div>\n\n<!-- Dropdown Menu Template -->\n<ng-template #dropdownTpl let-close=\"close\">\n <div\n class=\"z-tabs-dropdown-menu flex max-h-[18.75rem] max-w-[12.5rem] min-w-[6.25rem] flex-col gap-0.5 overflow-y-auto p-1\">\n @for (tab of zTabs(); track tab.value) {\n <button\n #dropdownItem\n type=\"button\"\n class=\"flex w-full cursor-pointer items-center justify-start gap-2 rounded-sm px-2 py-1.5 text-left text-sm font-medium transition-colors outline-none disabled:pointer-events-none disabled:opacity-50\"\n [class.hover:text-foreground]=\"!isTabActive(tab)\"\n [class.focus:bg-primary/10]=\"!isTabActive(tab)\"\n [class.bg-primary/15]=\"isTabActive(tab)\"\n [class.text-primary]=\"isTabActive(tab)\"\n [disabled]=\"tab.disabled\"\n (click)=\"selectTab(tab, true); close()\">\n @if (tab.icon) {\n <z-icon [zType]=\"tab.icon\" zSize=\"16\" class=\"text-muted-foreground shrink-0\" />\n }\n <span\n class=\"min-w-0 flex-1 truncate\"\n z-tooltip\n [zContent]=\"tab.label | translate\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n [zTriggerElement]=\"dropdownItem\">\n {{ tab.label | translate }}\n </span>\n @if (tab.badge) {\n <span\n class=\"bg-primary text-primary-foreground inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 text-xs font-semibold\">\n {{ tab.badge }}\n </span>\n }\n @if (isTabActive(tab)) {\n <z-icon zType=\"lucideCheck\" zSize=\"16\" class=\"text-primary shink-0\" />\n }\n </button>\n }\n </div>\n</ng-template>\n", styles: [".z-tabs-scroll-wrapper{overflow-x:clip;overflow-y:visible;scrollbar-width:none;-ms-overflow-style:none;scroll-behavior:smooth}.z-tabs-scroll-wrapper::-webkit-scrollbar{display:none}.z-tabs-scroll-wrapper.vertical{max-height:var(--z-tabs-vertical-max-height, min(22rem, 60vh));overflow:hidden auto}.z-tabs-scroll-wrapper.vertical.z-tabs-scroll-wrapper-limited{height:var(--z-tabs-vertical-max-height, min(22rem, 60vh));overflow:hidden auto}.z-tabs-scroll-wrapper.z-tabs-scroll-wrapper-scrollable{overflow-x:auto}.z-tabs-scrollbar{--scrollbar-padding: .125rem;--z-tabs-scrollbar-gutter: .75rem;--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in oklab, var(--muted-foreground) 35%, transparent);--scrollbar-thumb-hover-color: color-mix(in oklab, var(--muted-foreground) 55%, transparent);--scrollbar-size: .375rem;display:block}.z-tabs-scrollbar .ng-scroll-viewport,.z-tabs-scrollbar .ng-scroll-content{max-width:100%}.z-tabs-scrollbar.z-tabs-scroll-wrapper-limited .ng-scroll-viewport{height:100%;max-height:100%}.z-tabs-scrollbar .ng-scroll-content{box-sizing:border-box;padding-right:var(--z-tabs-scrollbar-gutter)}.z-tabs-scroll-container{isolation:isolate;--z-tabs-fade-width: 2rem}.z-tabs-fade-left{content:\"\";position:absolute;left:0;top:.0625rem;bottom:.0625rem;width:var(--z-tabs-fade-width);background:linear-gradient(to right,var(--background) 0%,oklch(from var(--background) l c h/.86) 28%,oklch(from var(--background) l c h/.48) 60%,oklch(from var(--background) l c h/0) 100%);pointer-events:none;z-index:5}.z-tabs-fade-right{content:\"\";position:absolute;right:0;top:.0625rem;bottom:.0625rem;width:var(--z-tabs-fade-width);background:linear-gradient(to left,var(--background) 0%,oklch(from var(--background) l c h/.86) 28%,oklch(from var(--background) l c h/.48) 60%,oklch(from var(--background) l c h/0) 100%);pointer-events:none;z-index:5}.z-tabs{align-items:stretch;min-height:2.5rem}.z-tabs.flex-col{width:100%}.z-tabs.flex-col.border-r{border-right:.0625rem solid hsl(var(--border));padding-right:.5rem}.z-tabs-nav-control{transition:color .2s ease,background-color .2s ease,border-color .2s ease}.z-tab-item{-webkit-tap-highlight-color:transparent;position:relative}.z-tab-item[data-active=true]{position:relative}.z-tab-item:disabled{pointer-events:none}.z-tabs-panels{border:.0625rem solid var(--border);border-radius:var(--radius-xs);padding:1rem}.z-tabs-panels [role=tabpanel]{animation:z-tabs-fade-in .2s ease-in-out}.z-tabs-panels [role=tabpanel][hidden]{display:none}.z-tabs-panels-unwrapped{border:0;border-radius:0;padding:0}.z-tabs-wrapper .z-tabs.flex-row+.z-tabs-panels{margin-top:.875rem}.z-tabs-wrapper .z-tabs.flex-col+.z-tabs-panels{margin-top:0;margin-left:0}.z-tabs-container[data-orientation=horizontal]{gap:0}.z-tabs-container[data-orientation=horizontal] .z-tabs-scroll-container{z-index:1}.z-tabs-container[data-orientation=horizontal] .z-tabs-panels{margin-top:0}.z-tabs-container[data-type=line][data-orientation=horizontal] .z-tabs-nav{position:relative}.z-tabs-container[data-type=line][data-orientation=horizontal] .z-tabs-nav:after{content:\"\";position:absolute;right:0;bottom:0;left:0;height:.0625rem;background:color-mix(in oklab,var(--border) 80%,transparent);pointer-events:none;z-index:0}.z-tabs-container:is([data-type=outline],[data-type=soft],[data-type=segment],[data-type=folder],[data-type=folder-soft],[data-type=folder-solid],[data-type=underline],[data-type=underlined],[data-type=badge],[data-type=sharp],[data-type=sharp-line],[data-type=sharp-line-filled],[data-type=code-line])[data-orientation=horizontal] .z-tabs-scroll-wrapper{padding-inline:0}.z-tabs-container:is([data-type=outline],[data-type=soft],[data-type=segment],[data-type=folder],[data-type=folder-soft],[data-type=folder-solid],[data-type=underline],[data-type=underlined],[data-type=badge],[data-type=sharp],[data-type=sharp-line],[data-type=sharp-line-filled],[data-type=code-line])[data-orientation=horizontal] .z-tabs-panels{border-radius:0 0 var(--radius-xs) var(--radius-xs)}.z-tabs-container:is([data-type=outline],[data-type=soft],[data-type=segment],[data-type=folder],[data-type=folder-soft],[data-type=folder-solid],[data-type=underline],[data-type=underlined],[data-type=badge],[data-type=sharp],[data-type=sharp-line],[data-type=sharp-line-filled],[data-type=code-line])[data-orientation=horizontal] .z-tabs-panels-unwrapped{border:0;border-radius:0}.z-tabs-container:is([data-type=folder],[data-type=folder-soft],[data-type=folder-solid])[data-orientation=horizontal] .z-tabs-nav{position:relative}.z-tabs-container:is([data-type=folder],[data-type=folder-soft],[data-type=folder-solid])[data-orientation=horizontal] .z-tabs-nav:after{content:\"\";position:absolute;right:0;bottom:0;left:0;height:.0625rem;background:var(--border);pointer-events:none;z-index:0}.z-tabs-container:is([data-type=folder],[data-type=folder-soft],[data-type=folder-solid])[data-orientation=horizontal] .z-tabs-panels{border-top:0}.z-tabs-container[data-type=folder-solid][data-orientation=horizontal] .z-tab-item[data-active=true][data-last=true]{box-shadow:inset .0625rem 0 0 var(--primary),inset -.0625rem 0 0 var(--border),inset 0 .0625rem 0 var(--primary)}.z-tabs-container[data-type=segment] .z-tabs{align-items:center}.z-tabs-container[data-orientation=vertical] .z-tabs-nav{align-items:stretch}.z-tabs-container[data-orientation=vertical] .z-tabs-scroll-container{width:min(12rem,40vw);flex:none}.z-tabs-container[data-orientation=vertical] .z-tabs-panels,.z-tabs-container[data-orientation=vertical] .z-tab-item{min-width:0}@media(prefers-reduced-motion:reduce){.z-tab-item,.z-tabs-nav-control{transition:none!important}.z-tabs-scroll-wrapper{scroll-behavior:auto}.z-tabs-panels [role=tabpanel]{animation:none!important}}@keyframes z-tabs-fade-in{0%{opacity:0;transform:translateY(-.2rem)}to{opacity:1;transform:translateY(0)}}\n"] }]
491
- }], ctorParameters: () => [], propDecorators: { tabPanels: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => ZTabPanelDirective), { isSignal: true }] }], tabsListContainer: [{ type: i0.ViewChild, args: ['tabsListContainer', { isSignal: true }] }], tabButtons: [{ type: i0.ViewChildren, args: ['tabButton', { isSignal: true }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], zTabs: [{ type: i0.Input, args: [{ isSignal: true, alias: "zTabs", required: true }] }], zType: [{ type: i0.Input, args: [{ isSignal: true, alias: "zType", required: false }] }], zSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSize", required: false }] }], zOrientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOrientation", required: false }] }], zLazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "zLazy", required: false }] }], zDestroyInactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "zDestroyInactive", required: false }] }], zTabsOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "zTabsOnly", required: false }] }], zShowContentWrapper: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShowContentWrapper", required: false }] }], zReloadable: [{ type: i0.Input, args: [{ isSignal: true, alias: "zReloadable", required: false }] }], zEmitOnActiveClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "zEmitOnActiveClick", required: false }] }], zCache: [{ type: i0.Input, args: [{ isSignal: true, alias: "zCache", required: false }] }], zCacheKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "zCacheKey", required: false }] }], activeTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeTab", required: false }] }, { type: i0.Output, args: ["activeTabChange"] }], zTabChange: [{ type: i0.Output, args: ["zTabChange"] }] } });
499
+ }, template: "<div\n class=\"z-tabs-container flex gap-1\"\n [attr.data-type]=\"zType()\"\n [attr.data-orientation]=\"zOrientation()\"\n [attr.data-content-fit]=\"zContentFit()\"\n [class.flex-col]=\"!zTabsOnly()\"\n [class.flex-row]=\"zOrientation() === 'vertical'\"\n [class.gap-4]=\"zOrientation() === 'vertical'\">\n <!-- Tabs Navigation (Left/Scroll/Tabs/Right/Dropdown) -->\n <div\n class=\"z-tabs-nav flex items-center gap-1.5\"\n [class.w-full]=\"zOrientation() === 'horizontal'\"\n [class.w-auto]=\"zOrientation() === 'vertical'\"\n [class.shrink-0]=\"zOrientation() === 'vertical'\">\n <!-- Scroll Left Button -->\n @if (canScrollLeft() && zOrientation() === 'horizontal') {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n [zWave]=\"false\"\n class=\"z-tabs-nav-control shrink-0\"\n (click)=\"scrollLeft()\"\n aria-label=\"Scroll left\">\n <z-icon zType=\"lucideChevronLeft\" zSize=\"16\" />\n </z-button>\n }\n\n <!-- Tabs List Container with Scroll + Fade -->\n <div class=\"z-tabs-scroll-container relative min-w-0 flex-1\" [attr.data-type]=\"zType()\">\n @if (zOrientation() === 'vertical') {\n <ng-scrollbar\n class=\"z-tabs-scroll-wrapper z-tabs-scrollbar vertical\"\n [class.z-tabs-scroll-wrapper-limited]=\"verticalTabsScrollable()\"\n track=\"vertical\"\n orientation=\"vertical\"\n appearance=\"compact\"\n visibility=\"hover\">\n <ng-container *ngTemplateOutlet=\"tabsListTpl\" />\n </ng-scrollbar>\n } @else {\n <div\n #tabsListContainer\n class=\"z-tabs-scroll-wrapper\"\n [class.z-tabs-scroll-wrapper-scrollable]=\"canScrollLeft() || canScrollRight()\"\n (scroll)=\"onTabsScroll()\">\n <ng-container *ngTemplateOutlet=\"tabsListTpl\" />\n </div>\n }\n\n <!-- Fade overlays (outside scroll container) -->\n @if (canScrollLeft() && zOrientation() === 'horizontal') {\n <div class=\"z-tabs-fade-left\"></div>\n }\n @if (canScrollRight() && zOrientation() === 'horizontal') {\n <div class=\"z-tabs-fade-right\"></div>\n }\n </div>\n\n <!-- Scroll Right Button -->\n @if (canScrollRight() && zOrientation() === 'horizontal') {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n class=\"z-tabs-nav-control shrink-0\"\n (click)=\"scrollRight()\"\n [zWave]=\"false\"\n aria-label=\"Scroll right\">\n <z-icon zType=\"lucideChevronRight\" zSize=\"16\" />\n </z-button>\n }\n\n <!-- Dropdown Button (Mobile or Overflow) -->\n @if (zOrientation() === 'horizontal' && (canScrollLeft() || canScrollRight())) {\n <z-button\n zType=\"ghost\"\n zSize=\"sm\"\n zIconOnly=\"true\"\n class=\"z-tabs-nav-control shrink-0\"\n z-popover\n [zPopoverContent]=\"dropdownTpl\"\n zPosition=\"bottom-right\"\n [zWave]=\"false\"\n zClass=\"min-w-[6.25rem] max-w-[12.5rem]\"\n (zShow)=\"scrollToActiveDropdownItem()\"\n aria-label=\"Select tab\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"16\" />\n </z-button>\n }\n </div>\n\n <ng-template #tabsListTpl>\n <!-- Tab List -->\n <div\n [class]=\"tabsClasses()\"\n [class.pb-0.5]=\"tabsListHasBottomPadding()\"\n role=\"tablist\"\n [attr.aria-orientation]=\"zOrientation()\"\n [attr.data-type]=\"zType()\">\n @for (tab of zTabs(); track tab.value; let idx = $index; let last = $last) {\n <button\n #tabButton\n type=\"button\"\n role=\"tab\"\n [class]=\"getTabItemClasses(tab)\"\n [attr.data-active]=\"isTabActive(tab)\"\n [attr.data-state]=\"isTabActive(tab) ? 'active' : 'inactive'\"\n [attr.data-type]=\"zType()\"\n [attr.data-orientation]=\"zOrientation()\"\n [attr.data-last]=\"last\"\n [attr.aria-selected]=\"isTabActive(tab)\"\n [attr.aria-controls]=\"'panel-' + tab.value\"\n [disabled]=\"tab.disabled\"\n [tabindex]=\"isTabActive(tab) ? 0 : -1\"\n z-tooltip\n [zContent]=\"zOrientation() === 'vertical' ? (tab.label | translate) : ''\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n (click)=\"selectTab(tab)\"\n (keydown)=\"onTabKeydown($event, idx)\">\n @if (tab.icon) {\n <z-icon [zType]=\"tab.icon\" zSize=\"16\" class=\"shrink-0\" />\n }\n <span class=\"z-tab-item-label min-w-0 flex-1 truncate text-left\">{{ tab.label | translate }}</span>\n @if (tab.badge) {\n <span\n class=\"ring-background ml-1.5 inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 text-xs font-semibold ring-2\"\n [class.bg-primary]=\"zType() !== 'badge'\"\n [class.text-primary-foreground]=\"zType() !== 'badge'\"\n [class.bg-primary!]=\"zType() === 'badge'\"\n [class.text-primary-foreground!]=\"zType() === 'badge'\">\n {{ tab.badge }}\n </span>\n }\n </button>\n }\n </div>\n </ng-template>\n\n <!-- Tab Panels -->\n @if (!zTabsOnly()) {\n <div\n class=\"z-tabs-panels min-h-0\"\n [class.flex-1]=\"zOrientation() === 'vertical'\"\n [class.shadow-xs]=\"contentWrapperFramed()\"\n [class.z-tabs-panels-unwrapped]=\"!contentWrapperFramed()\">\n @for (panel of tabPanels(); track panel.zTabPanel()) {\n @if (panelRenderStates().get(panel.zTabPanel())) {\n <div\n role=\"tabpanel\"\n [id]=\"'panel-' + panel.zTabPanel()\"\n [attr.aria-labelledby]=\"panel.zTabPanel()\"\n [hidden]=\"activeTab() !== panel.zTabPanel()\">\n <ng-container *ngTemplateOutlet=\"panel.template\" />\n </div>\n }\n }\n </div>\n }\n</div>\n\n<!-- Dropdown Menu Template -->\n<ng-template #dropdownTpl let-close=\"close\">\n <div\n class=\"z-tabs-dropdown-menu flex max-h-[18.75rem] max-w-[12.5rem] min-w-[6.25rem] flex-col gap-0.5 overflow-y-auto p-1\">\n @for (tab of zTabs(); track tab.value) {\n <button\n #dropdownItem\n type=\"button\"\n class=\"flex w-full cursor-pointer items-center justify-start gap-2 rounded-sm px-2 py-1.5 text-left text-sm font-medium transition-colors outline-none disabled:pointer-events-none disabled:opacity-50\"\n [class.hover:text-foreground]=\"!isTabActive(tab)\"\n [class.focus:bg-primary/10]=\"!isTabActive(tab)\"\n [class.bg-primary/15]=\"isTabActive(tab)\"\n [class.text-primary]=\"isTabActive(tab)\"\n [disabled]=\"tab.disabled\"\n (click)=\"selectTab(tab, true); close()\">\n @if (tab.icon) {\n <z-icon [zType]=\"tab.icon\" zSize=\"16\" class=\"text-muted-foreground shrink-0\" />\n }\n <span\n class=\"min-w-0 flex-1 truncate\"\n z-tooltip\n [zContent]=\"tab.label | translate\"\n zPosition=\"top\"\n [zHideDelay]=\"0\"\n [zOffset]=\"5\"\n [zArrow]=\"false\"\n [zTriggerElement]=\"dropdownItem\">\n {{ tab.label | translate }}\n </span>\n @if (tab.badge) {\n <span\n class=\"bg-primary text-primary-foreground inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 text-xs font-semibold\">\n {{ tab.badge }}\n </span>\n }\n @if (isTabActive(tab)) {\n <z-icon zType=\"lucideCheck\" zSize=\"16\" class=\"text-primary shink-0\" />\n }\n </button>\n }\n </div>\n</ng-template>\n", styles: [".z-tabs-scroll-wrapper{overflow-x:clip;overflow-y:visible;scrollbar-width:none;-ms-overflow-style:none;scroll-behavior:smooth}.z-tabs-scroll-wrapper::-webkit-scrollbar{display:none}.z-tabs-scroll-wrapper.vertical{max-height:var(--z-tabs-vertical-max-height, min(22rem, 60vh));overflow:hidden auto}.z-tabs-scroll-wrapper.vertical.z-tabs-scroll-wrapper-limited{height:var(--z-tabs-vertical-max-height, min(22rem, 60vh));overflow:hidden auto}.z-tabs-scroll-wrapper.z-tabs-scroll-wrapper-scrollable{overflow-x:auto}.z-tabs-scrollbar{--scrollbar-padding: .125rem;--z-tabs-scrollbar-gutter: .75rem;--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in oklab, var(--muted-foreground) 35%, transparent);--scrollbar-thumb-hover-color: color-mix(in oklab, var(--muted-foreground) 55%, transparent);--scrollbar-size: .375rem;display:block}.z-tabs-scrollbar .ng-scroll-viewport,.z-tabs-scrollbar .ng-scroll-content{max-width:100%}.z-tabs-scrollbar.z-tabs-scroll-wrapper-limited .ng-scroll-viewport{height:100%;max-height:100%}.z-tabs-scrollbar .ng-scroll-content{box-sizing:border-box;padding-right:var(--z-tabs-scrollbar-gutter)}.z-tabs-scroll-container{isolation:isolate;--z-tabs-fade-width: 2rem}.z-tabs-fade-left{content:\"\";position:absolute;left:0;top:.0625rem;bottom:.0625rem;width:var(--z-tabs-fade-width);background:linear-gradient(to right,var(--background) 0%,oklch(from var(--background) l c h/.86) 28%,oklch(from var(--background) l c h/.48) 60%,oklch(from var(--background) l c h/0) 100%);pointer-events:none;z-index:5}.z-tabs-fade-right{content:\"\";position:absolute;right:0;top:.0625rem;bottom:.0625rem;width:var(--z-tabs-fade-width);background:linear-gradient(to left,var(--background) 0%,oklch(from var(--background) l c h/.86) 28%,oklch(from var(--background) l c h/.48) 60%,oklch(from var(--background) l c h/0) 100%);pointer-events:none;z-index:5}.z-tabs{align-items:stretch;min-height:2.5rem}.z-tabs.flex-col{width:100%}.z-tabs.flex-col.border-r{border-right:.0625rem solid hsl(var(--border));padding-right:.5rem}.z-tabs-nav-control{transition:color .2s ease,background-color .2s ease,border-color .2s ease}.z-tab-item{-webkit-tap-highlight-color:transparent;position:relative}.z-tab-item[data-active=true]{position:relative}.z-tab-item:disabled{pointer-events:none}.z-tabs-panels{border:.0625rem solid var(--border);border-radius:var(--radius-xs);padding:1rem}.z-tabs-panels [role=tabpanel]{animation:z-tabs-fade-in .2s ease-in-out}.z-tabs-panels [role=tabpanel][hidden]{display:none}.z-tabs-panels-unwrapped{border:0;border-radius:0;padding:0}.z-tabs-wrapper .z-tabs.flex-row+.z-tabs-panels{margin-top:.875rem}.z-tabs-wrapper .z-tabs.flex-col+.z-tabs-panels{margin-top:0;margin-left:0}.z-tabs-container[data-orientation=horizontal]{gap:0}.z-tabs-container[data-orientation=horizontal] .z-tabs-scroll-container{z-index:1}.z-tabs-container[data-orientation=horizontal] .z-tabs-panels{margin-top:0}.z-tabs-container[data-content-fit=screen]{height:var(--z-tabs-screen-height, calc(100dvh - var(--z-tabs-screen-offset, 0rem)));max-height:var(--z-tabs-screen-height, calc(100dvh - var(--z-tabs-screen-offset, 0rem)));min-height:0;overflow:hidden}.z-tabs-container[data-content-fit=screen] .z-tabs-nav{flex:none;min-height:0}.z-tabs-container[data-content-fit=screen] .z-tabs-panels{flex:1 1 auto;min-height:0;overflow:auto}.z-tabs-container[data-content-fit=screen] [role=tabpanel]{min-height:0}.z-tabs-container[data-type=line][data-orientation=horizontal] .z-tabs-nav{position:relative}.z-tabs-container[data-type=line][data-orientation=horizontal] .z-tabs-nav:after{content:\"\";position:absolute;right:0;bottom:0;left:0;height:.0625rem;background:color-mix(in oklab,var(--border) 80%,transparent);pointer-events:none;z-index:0}.z-tabs-container:is([data-type=outline],[data-type=soft],[data-type=segment],[data-type=folder],[data-type=folder-soft],[data-type=folder-solid],[data-type=underline],[data-type=underlined],[data-type=badge],[data-type=sharp],[data-type=sharp-line],[data-type=sharp-line-filled],[data-type=code-line])[data-orientation=horizontal] .z-tabs-scroll-wrapper{padding-inline:0}.z-tabs-container:is([data-type=outline],[data-type=soft],[data-type=segment],[data-type=folder],[data-type=folder-soft],[data-type=folder-solid],[data-type=underline],[data-type=underlined],[data-type=badge],[data-type=sharp],[data-type=sharp-line],[data-type=sharp-line-filled],[data-type=code-line])[data-orientation=horizontal] .z-tabs-panels{border-radius:0 0 var(--radius-xs) var(--radius-xs)}.z-tabs-container:is([data-type=outline],[data-type=soft],[data-type=segment],[data-type=folder],[data-type=folder-soft],[data-type=folder-solid],[data-type=underline],[data-type=underlined],[data-type=badge],[data-type=sharp],[data-type=sharp-line],[data-type=sharp-line-filled],[data-type=code-line])[data-orientation=horizontal] .z-tabs-panels-unwrapped{border:0;border-radius:0}.z-tabs-container:is([data-type=folder],[data-type=folder-soft],[data-type=folder-solid])[data-orientation=horizontal] .z-tabs-nav{position:relative}.z-tabs-container:is([data-type=folder],[data-type=folder-soft],[data-type=folder-solid])[data-orientation=horizontal] .z-tabs-nav:after{content:\"\";position:absolute;right:0;bottom:0;left:0;height:.0625rem;background:var(--border);pointer-events:none;z-index:0}.z-tabs-container:is([data-type=folder],[data-type=folder-soft],[data-type=folder-solid])[data-orientation=horizontal] .z-tabs-panels{border-top:0}.z-tabs-container[data-type=folder-solid][data-orientation=horizontal] .z-tab-item[data-active=true][data-last=true]{box-shadow:inset .0625rem 0 0 var(--primary),inset -.0625rem 0 0 var(--border),inset 0 .0625rem 0 var(--primary)}.z-tabs-container:is([data-type=segment],[data-type=segment-solid]) .z-tabs{align-items:center}.z-tabs-container[data-orientation=vertical] .z-tabs-nav{align-items:stretch}.z-tabs-container[data-orientation=vertical] .z-tabs-scroll-container{width:min(12rem,40vw);flex:none}.z-tabs-container[data-orientation=vertical] .z-tabs-panels,.z-tabs-container[data-orientation=vertical] .z-tab-item{min-width:0}@media(prefers-reduced-motion:reduce){.z-tab-item,.z-tabs-nav-control{transition:none!important}.z-tabs-scroll-wrapper{scroll-behavior:auto}.z-tabs-panels [role=tabpanel]{animation:none!important}}@keyframes z-tabs-fade-in{0%{opacity:0;transform:translateY(-.2rem)}to{opacity:1;transform:translateY(0)}}\n"] }]
500
+ }], ctorParameters: () => [], propDecorators: { tabPanels: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => ZTabPanelDirective), { isSignal: true }] }], tabsListContainer: [{ type: i0.ViewChild, args: ['tabsListContainer', { isSignal: true }] }], tabButtons: [{ type: i0.ViewChildren, args: ['tabButton', { isSignal: true }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], zTabs: [{ type: i0.Input, args: [{ isSignal: true, alias: "zTabs", required: true }] }], zType: [{ type: i0.Input, args: [{ isSignal: true, alias: "zType", required: false }] }], zSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSize", required: false }] }], zOrientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOrientation", required: false }] }], zContentFit: [{ type: i0.Input, args: [{ isSignal: true, alias: "zContentFit", required: false }] }], zLazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "zLazy", required: false }] }], zDestroyInactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "zDestroyInactive", required: false }] }], zTabsOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "zTabsOnly", required: false }] }], zShowContentWrapper: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShowContentWrapper", required: false }] }], zReloadable: [{ type: i0.Input, args: [{ isSignal: true, alias: "zReloadable", required: false }] }], zEmitOnActiveClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "zEmitOnActiveClick", required: false }] }], zCache: [{ type: i0.Input, args: [{ isSignal: true, alias: "zCache", required: false }] }], zCacheKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "zCacheKey", required: false }] }], activeTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeTab", required: false }] }, { type: i0.Output, args: ["activeTabChange"] }], zTabChange: [{ type: i0.Output, args: ["zTabChange"] }] } });
492
501
 
493
502
  /**
494
503
  * Generated bundle index. Do not edit.