codexly-ui 0.1.24 → 0.2.1

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.
@@ -1,14 +1,13 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { TemplateRef, AfterContentInit, OnDestroy, OnInit, QueryList, Signal, AfterViewInit, ElementRef, InjectionToken, Provider, OnChanges, SimpleChanges } from '@angular/core';
2
+ import { Signal, InjectionToken, ElementRef, AfterViewInit, OnDestroy, AfterContentInit, OnInit, QueryList, TemplateRef, Provider, OnChanges, SimpleChanges } from '@angular/core';
3
3
  import * as codexly_ui from 'codexly-ui';
4
- import { FormControl, ControlValueAccessor, FormGroup } from '@angular/forms';
5
- import * as node_modules_chart_js_dist_types_utils from 'node_modules/chart.js/dist/types/utils';
6
- import * as chart_js from 'chart.js';
7
- import { ChartType, ChartData, ChartOptions } from 'chart.js';
4
+ import { ControlValueAccessor, FormControl, FormGroup } from '@angular/forms';
8
5
  import * as _angular_cdk_overlay from '@angular/cdk/overlay';
9
6
  import { ConnectedPosition } from '@angular/cdk/overlay';
10
7
  import { Observable } from 'rxjs';
11
8
 
9
+ type ClxSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
+
12
11
  type ClxColor = 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green' | 'emerald' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose' | 'slate' | 'gray' | 'zinc' | 'neutral' | 'stone' | 'white';
13
12
  type ClxShade = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950;
14
13
  type ClxColorInput = ClxColor | `${ClxColor}-${ClxShade}`;
@@ -89,1151 +88,902 @@ declare const CLX_COLOR_HEX: {
89
88
  };
90
89
  declare const CLX_COLOR_HEX_100: Record<ClxColor, string>;
91
90
 
92
- type ClxTrendDirection = 'up' | 'down' | 'neutral';
93
- interface ClxStatMetric {
94
- icon: string;
95
- title: string;
96
- value: string | number;
97
- trend: string | number;
98
- trendDirection: ClxTrendDirection;
91
+ declare class ClxIconComponent {
92
+ readonly name: _angular_core.InputSignal<string>;
93
+ readonly size: _angular_core.InputSignal<ClxSize>;
94
+ readonly color: _angular_core.InputSignal<ClxColorInput | null>;
95
+ readonly fill: _angular_core.InputSignal<boolean>;
96
+ protected readonly _colorClass: _angular_core.Signal<string>;
97
+ protected readonly _fontSize: _angular_core.Signal<string>;
98
+ protected readonly _fontVariation: _angular_core.Signal<string>;
99
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxIconComponent, never>;
100
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxIconComponent, "span[clx-icon]", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
99
101
  }
100
- interface SparkPoint {
102
+
103
+ type ClxShape = 'rounded' | 'pill' | 'circle';
104
+
105
+ type ClxButtonVariant = 'solid' | 'light' | 'outline' | 'ghost' | 'link';
106
+ type ClxButtonColor = ClxColorInput;
107
+ interface ClxRippleItem {
108
+ id: number;
101
109
  x: number;
102
110
  y: number;
111
+ diameter: number;
103
112
  }
104
113
 
105
- declare class ClxStatCardComponent {
106
- readonly metric: _angular_core.InputSignal<ClxStatMetric>;
107
- readonly chartData: _angular_core.InputSignal<number[]>;
108
- readonly color: _angular_core.InputSignal<ClxColorInput>;
109
- readonly layout: _angular_core.InputSignal<"vertical" | "horizontal" | "bar">;
114
+ declare class ClxButtonComponent {
115
+ private readonly _themeSvc;
116
+ readonly variant: _angular_core.InputSignal<ClxButtonVariant>;
117
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
118
+ readonly size: _angular_core.InputSignal<"xxs" | "xs" | "sm" | "md" | "lg" | undefined>;
119
+ readonly shape: _angular_core.InputSignal<ClxShape | undefined>;
120
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
121
+ protected readonly _size: _angular_core.Signal<"xxs" | "xs" | "sm" | "md" | "lg">;
122
+ protected readonly _shape: _angular_core.Signal<ClxShape>;
123
+ readonly loading: _angular_core.InputSignal<boolean>;
124
+ readonly disabled: _angular_core.InputSignal<boolean>;
125
+ readonly block: _angular_core.InputSignal<boolean>;
126
+ readonly icon: _angular_core.InputSignal<string | undefined>;
127
+ readonly iconPosition: _angular_core.InputSignal<"left" | "right">;
128
+ readonly iconOnly: _angular_core.InputSignal<boolean>;
129
+ readonly badge: _angular_core.InputSignal<string | number | undefined>;
130
+ readonly badgeColor: _angular_core.InputSignal<ClxColorInput>;
131
+ protected readonly _ripples: _angular_core.WritableSignal<ClxRippleItem[]>;
132
+ private _nextId;
133
+ private readonly _el;
134
+ protected readonly _inactive: _angular_core.Signal<boolean>;
135
+ protected readonly _badgeClass: _angular_core.Signal<string>;
136
+ protected readonly _colorClass: _angular_core.Signal<string>;
137
+ protected readonly _rippleColor: _angular_core.Signal<string>;
138
+ protected readonly _spinnerColor: _angular_core.Signal<"white" | "inherit">;
139
+ protected readonly _iconSize: _angular_core.Signal<ClxSize>;
110
140
  protected readonly _hostClass: _angular_core.Signal<string>;
111
- protected readonly _barHeights: _angular_core.Signal<number[]>;
112
- protected readonly _iconBg: _angular_core.Signal<string>;
113
- protected readonly _iconBgSubtle: _angular_core.Signal<string>;
114
- protected readonly _iconTextBase: _angular_core.Signal<string>;
115
- protected readonly _lineColor: _angular_core.Signal<string>;
116
- protected readonly _gradId: _angular_core.Signal<string>;
117
- protected readonly _trendColor: _angular_core.Signal<"red" | "green" | "slate">;
118
- protected readonly _trendArrowIcon: _angular_core.Signal<"arrow_upward" | "arrow_downward" | "remove">;
119
- protected readonly _trendTextClass: _angular_core.Signal<"text-red-500" | "text-green-500" | "text-slate-400">;
120
- protected readonly _trendIcon: _angular_core.Signal<"remove" | "arrow_outward" | "south_east">;
121
- protected readonly _formattedValue: _angular_core.Signal<string>;
122
- protected readonly _points: _angular_core.Signal<SparkPoint[]>;
123
- protected readonly _linePath: _angular_core.Signal<string>;
124
- protected readonly _fillPath: _angular_core.Signal<string>;
125
- constructor();
126
- private _buildPath;
127
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxStatCardComponent, never>;
128
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxStatCardComponent, "clx-stat-card", never, { "metric": { "alias": "metric"; "required": true; "isSignal": true; }; "chartData": { "alias": "chartData"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
141
+ protected _onRipple(event: Event): void;
142
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxButtonComponent, never>;
143
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxButtonComponent, "button[clx-button], a[clx-button]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "block": { "alias": "block"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "badgeColor": { "alias": "badgeColor"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
129
144
  }
130
145
 
131
- type ClxProductLayout = 'vertical' | 'horizontal';
132
- type ClxProductSize = 'sm' | 'md';
133
- /** Refleja st_variations + st_products (campos necesarios para la card) */
134
- interface ClxProduct {
135
- id: string;
136
- sku: string;
137
- name: string;
138
- description?: string;
139
- sale_price?: number;
140
- product_id: string;
141
- product_name: string;
142
- trademark: string;
143
- product_sale_price: number;
144
- discount_price?: number;
145
- has_discount: boolean;
146
- discount_percentage?: number;
147
- tags: string[];
148
- main_image?: string;
149
- in_stock: boolean;
146
+ type ClxButtonGroupShape = 'flat' | 'circular';
147
+
148
+ declare class ClxButtonGroupComponent {
149
+ readonly label: _angular_core.InputSignal<string>;
150
+ readonly shape: _angular_core.InputSignal<ClxButtonGroupShape>;
151
+ readonly attached: _angular_core.InputSignal<boolean>;
152
+ readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
153
+ protected readonly _groupClass: _angular_core.Signal<string>;
154
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxButtonGroupComponent, never>;
155
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxButtonGroupComponent, "clx-button-group", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "attached": { "alias": "attached"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
150
156
  }
151
157
 
152
158
  type ClxBadgeVariant = 'solid' | 'light' | 'outline';
153
159
 
154
- type ClxProductTag = 'new' | 'sale' | 'out-of-stock' | 'featured' | 'limited' | 'hot';
155
-
156
- declare class ClxProductComponent {
157
- readonly product: _angular_core.InputSignal<ClxProduct | null>;
158
- readonly loading: _angular_core.InputSignal<boolean>;
159
- readonly priority: _angular_core.InputSignal<boolean>;
160
- readonly layout: _angular_core.InputSignal<ClxProductLayout>;
161
- readonly size: _angular_core.InputSignal<ClxProductSize>;
162
- readonly clxColor: _angular_core.InputSignal<ClxColorInput>;
163
- readonly addToCart: _angular_core.OutputEmitterRef<ClxProduct>;
164
- readonly addToWishlist: _angular_core.OutputEmitterRef<ClxProduct>;
165
- protected readonly PRODUCT_TAG_LABEL: Record<ClxProductTag, string>;
166
- protected readonly PRODUCT_TAG_COLOR: Record<ClxProductTag, codexly_ui.ClxColor>;
167
- protected readonly PRODUCT_TAG_VARIANT: Record<ClxProductTag, codexly_ui.ClxBadgeVariant>;
168
- protected readonly _h: _angular_core.Signal<boolean>;
169
- protected readonly _sm: _angular_core.Signal<boolean>;
170
- protected readonly _tags: _angular_core.Signal<ClxProductTag[]>;
171
- protected readonly _disabled: _angular_core.Signal<boolean>;
172
- protected readonly _price: _angular_core.Signal<number>;
173
- protected readonly _buttonSize: _angular_core.Signal<"sm" | "md">;
174
- protected readonly _skeletonW: _angular_core.Signal<"sm:w-32" | "sm:w-44">;
175
- protected readonly _skeletonH: _angular_core.Signal<"160px" | "200px">;
176
- protected readonly _cardClass: _angular_core.Signal<string>;
177
- protected readonly _imageContainerClass: _angular_core.Signal<string>;
178
- protected readonly _contentClass: _angular_core.Signal<string>;
179
- protected readonly _actionsClass: _angular_core.Signal<"flex flex-col sm:flex-row items-stretch sm:items-center gap-2 mt-3" | "flex items-center gap-2 mt-3">;
180
- protected readonly _overlayClass: _angular_core.Signal<string>;
181
- protected readonly _titleClass: _angular_core.Signal<string>;
182
- protected readonly _descClass: _angular_core.Signal<string>;
183
- protected readonly _priceClass: _angular_core.Signal<string>;
184
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxProductComponent, never>;
185
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxProductComponent, "clx-product", never, { "product": { "alias": "product"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "priority": { "alias": "priority"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clxColor": { "alias": "clxColor"; "required": false; "isSignal": true; }; }, { "addToCart": "addToCart"; "addToWishlist": "addToWishlist"; }, never, never, true, never>;
160
+ declare class ClxBadgeComponent {
161
+ private readonly _themeSvc;
162
+ readonly variant: _angular_core.InputSignal<ClxBadgeVariant>;
163
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
164
+ readonly size: _angular_core.InputSignal<"xs" | "sm" | "md" | undefined>;
165
+ readonly shape: _angular_core.InputSignal<ClxShape | undefined>;
166
+ readonly positioned: _angular_core.InputSignal<boolean>;
167
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
168
+ protected readonly _size: _angular_core.Signal<"xs" | "sm" | "md">;
169
+ protected readonly _shape: _angular_core.Signal<ClxShape>;
170
+ protected readonly _hostClass: _angular_core.Signal<string>;
171
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxBadgeComponent, never>;
172
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxBadgeComponent, "span[clx-badge]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "positioned": { "alias": "positioned"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
186
173
  }
187
174
 
188
- declare class ClxCarouselDirective {
189
- readonly templateRef: TemplateRef<unknown>;
190
- constructor(templateRef: TemplateRef<unknown>);
191
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCarouselDirective, never>;
192
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxCarouselDirective, "[clxSlide]", never, {}, {}, never, never, true, never>;
193
- }
175
+ type ClxAvatarContentType = 'image' | 'text' | 'icon';
194
176
 
195
- type ClxCarouselAspectRatio = '16/9' | '4/3' | '1/1' | '3/2' | 'auto';
196
- interface ClxCarouselConfig {
197
- clxColor: ClxColor;
198
- autoPlay: boolean;
199
- interval: number;
200
- loop: boolean;
201
- aspectRatio: ClxCarouselAspectRatio;
177
+ declare class ClxAvatarComponent {
178
+ private readonly _themeSvc;
179
+ readonly src: _angular_core.InputSignal<string | null>;
180
+ readonly initials: _angular_core.InputSignal<string | null>;
181
+ readonly iconName: _angular_core.InputSignal<string | null>;
182
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
183
+ readonly size: _angular_core.InputSignal<ClxSize>;
184
+ readonly shape: _angular_core.InputSignal<ClxShape>;
185
+ readonly alt: _angular_core.InputSignal<string>;
186
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
187
+ protected readonly _contentType: _angular_core.Signal<ClxAvatarContentType>;
188
+ protected readonly _initials: _angular_core.Signal<string>;
189
+ protected readonly _iconSize: _angular_core.Signal<ClxSize>;
190
+ protected readonly _shapeClass: _angular_core.Signal<"rounded-full" | "rounded-xl">;
191
+ protected readonly _colorClass: _angular_core.Signal<string>;
192
+ protected readonly _textClass: _angular_core.Signal<string>;
193
+ protected readonly _hostClass: _angular_core.Signal<string>;
194
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxAvatarComponent, never>;
195
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxAvatarComponent, "clx-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "initials": { "alias": "initials"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
202
196
  }
203
197
 
204
- declare class ClxCarouselComponent implements AfterContentInit, OnDestroy {
198
+ type ClxTagVariant = 'solid' | 'soft' | 'outline';
199
+ type ClxTagSize = 'sm' | 'md';
200
+ type ClxTagShape = 'rounded' | 'pill';
201
+
202
+ declare class ClxTagComponent {
205
203
  private readonly _themeSvc;
206
- readonly clxColor: _angular_core.InputSignal<ClxColorInput | undefined>;
207
- protected readonly _clxColor: _angular_core.Signal<ClxColorInput>;
208
- readonly autoPlay: _angular_core.InputSignal<boolean>;
209
- readonly interval: _angular_core.InputSignal<number>;
210
- readonly loop: _angular_core.InputSignal<boolean>;
211
- readonly aspectRatio: _angular_core.InputSignal<ClxCarouselAspectRatio>;
212
- readonly transparent: _angular_core.InputSignal<boolean>;
213
- readonly currentPageIndex: _angular_core.WritableSignal<number>;
214
- protected readonly _slides: _angular_core.Signal<readonly ClxCarouselDirective[]>;
215
- private _autoPlayTimer;
216
- private _touchStartX;
217
- private readonly _zone;
218
- protected readonly _aspectClass: _angular_core.Signal<string>;
219
- protected readonly _viewportClass: _angular_core.Signal<string>;
220
- protected readonly _dotItems: _angular_core.Signal<{
221
- idx: number;
222
- cls: string;
223
- }[]>;
224
- constructor();
225
- ngAfterContentInit(): void;
226
- ngOnDestroy(): void;
227
- next(): void;
228
- prev(): void;
229
- goTo(index: number): void;
230
- protected _onTouchStart(e: TouchEvent): void;
231
- protected _onTouchEnd(e: TouchEvent): void;
232
- private _startTimer;
233
- private _clearTimer;
234
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCarouselComponent, never>;
235
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxCarouselComponent, "clx-carousel", never, { "clxColor": { "alias": "clxColor"; "required": false; "isSignal": true; }; "autoPlay": { "alias": "autoPlay"; "required": false; "isSignal": true; }; "interval": { "alias": "interval"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; }, {}, ["_slides"], never, true, never>;
204
+ readonly variant: _angular_core.InputSignal<ClxTagVariant>;
205
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
206
+ readonly size: _angular_core.InputSignal<ClxTagSize | undefined>;
207
+ protected readonly _tagSize: _angular_core.Signal<ClxTagSize>;
208
+ readonly shape: _angular_core.InputSignal<ClxTagShape>;
209
+ readonly onRemove: _angular_core.OutputEmitterRef<void>;
210
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
211
+ protected readonly _sizeConfig: _angular_core.Signal<{
212
+ pad: string;
213
+ text: string;
214
+ gap: string;
215
+ btnSize: Extract<codexly_ui.ClxSize, "xxs">;
216
+ }>;
217
+ protected readonly _colorClass: _angular_core.Signal<string>;
218
+ protected readonly _hostClass: _angular_core.Signal<string>;
219
+ protected readonly _closeBtnColor: _angular_core.Signal<ClxColorInput>;
220
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTagComponent, never>;
221
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTagComponent, "span[clx-tag]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; }, { "onRemove": "onRemove"; }, never, ["*"], true, never>;
236
222
  }
237
223
 
238
- interface ClxTabItem {
239
- id: string;
240
- label: string;
241
- icon?: string;
242
- disabled?: boolean;
243
- }
224
+ type ClxCardVariant = 'elevated' | 'outlined' | 'flat';
225
+ type ClxCardPadding = 'none' | 'sm' | 'md' | 'lg';
226
+ type ClxCardShadow = 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
244
227
 
245
- /** st_spec_options */
246
- interface ClxSpecOption {
247
- id: string;
248
- spec_type_id: string;
249
- value: string;
250
- }
251
- /** st_spec_types + sus opciones */
252
- interface ClxSpecType {
253
- id: string;
254
- name: string;
255
- icon?: string;
256
- input_type: 'color' | 'text';
257
- options: ClxSpecOption[];
258
- }
259
- /** st_variations una variación sellable con sus imágenes y specs seleccionadas */
260
- interface ClxVariation {
261
- id: string;
262
- sku: string;
263
- name: string;
264
- description?: string;
265
- sale_price?: number;
266
- sort_order: number;
267
- images: string[];
268
- in_stock: boolean;
269
- specs: Record<string, string>;
270
- }
271
- /** st_product_spec_types + st_product_spec_options — fila de ficha técnica */
272
- interface ClxProductSpec {
273
- id: string;
274
- name: string;
275
- icon?: string;
276
- value: string;
277
- sort_order?: number;
278
- }
279
- /** st_product_descriptions — bloque de texto narrativo */
280
- interface ClxProductDescription {
281
- id: string;
282
- title?: string;
283
- body: string;
284
- sort_order: number;
228
+ declare class ClxCardComponent {
229
+ private readonly _themeSvc;
230
+ readonly variant: _angular_core.InputSignal<ClxCardVariant>;
231
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
232
+ readonly padding: _angular_core.InputSignal<ClxCardPadding>;
233
+ readonly shadow: _angular_core.InputSignal<ClxCardShadow | undefined>;
234
+ readonly hover: _angular_core.InputSignal<boolean>;
235
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
236
+ private readonly _headerSlot;
237
+ private readonly _bodySlot;
238
+ private readonly _footerSlot;
239
+ protected readonly _hasHeader: _angular_core.Signal<boolean>;
240
+ protected readonly _hasBody: _angular_core.Signal<boolean>;
241
+ protected readonly _hasFooter: _angular_core.Signal<boolean>;
242
+ protected readonly _bodyClass: _angular_core.Signal<string>;
243
+ protected readonly _hostClass: _angular_core.Signal<string>;
244
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCardComponent, never>;
245
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxCardComponent, "clx-card", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "shadow": { "alias": "shadow"; "required": false; "isSignal": true; }; "hover": { "alias": "hover"; "required": false; "isSignal": true; }; }, {}, ["_headerSlot", "_bodySlot", "_footerSlot"], ["[clxCardHeader]", "[clxCardBody]", "*", "[clxCardFooter]"], true, never>;
285
246
  }
286
- /** st_reviews */
287
- interface ClxReview {
288
- id: string;
289
- author_name: string;
290
- rating: number;
291
- title?: string;
292
- body?: string;
293
- is_verified: boolean;
294
- helpful: number;
295
- not_helpful: number;
296
- created_at: string;
247
+
248
+ declare class ClxCardHeaderDirective {
249
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCardHeaderDirective, never>;
250
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxCardHeaderDirective, "[clxCardHeader]", never, {}, {}, never, never, true, never>;
297
251
  }
298
- /** Payload completo para clx-product-detail — un producto con todas sus variaciones */
299
- interface ClxProductDetailData {
300
- product_id: string;
301
- product_name: string;
302
- trademark: string;
303
- product_sale_price: number;
304
- discount_price?: number;
305
- has_discount: boolean;
306
- discount_percentage?: number;
307
- has_warranty: boolean;
308
- warranty_period?: number;
309
- tags: string[];
310
- currency: string;
311
- rating: number;
312
- review_count: number;
313
- spec_types: ClxSpecType[];
314
- variations: ClxVariation[];
315
- product_specs: ClxProductSpec[];
316
- descriptions: ClxProductDescription[];
317
- reviews?: ClxReview[];
252
+
253
+ declare class ClxCardBodyDirective {
254
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCardBodyDirective, never>;
255
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxCardBodyDirective, "[clxCardBody]", never, {}, {}, never, never, true, never>;
318
256
  }
319
257
 
320
- declare class ClxProductDetailComponent {
321
- readonly product: _angular_core.InputSignal<ClxProductDetailData | null>;
322
- readonly clxColor: _angular_core.InputSignal<ClxColorInput>;
323
- readonly loading: _angular_core.InputSignal<boolean>;
324
- readonly currency: _angular_core.InputSignal<string>;
325
- readonly _carousel: _angular_core.Signal<ClxCarouselComponent | undefined>;
326
- readonly quantity: _angular_core.WritableSignal<number>;
327
- readonly activeTab: _angular_core.WritableSignal<string>;
328
- readonly selectedSpecs: _angular_core.WritableSignal<Record<string, string>>;
329
- readonly tabItems: ClxTabItem[];
330
- constructor();
331
- readonly activeVariation: _angular_core.Signal<ClxVariation | null>;
332
- readonly finalPrice: _angular_core.Signal<number>;
333
- readonly discount: _angular_core.Signal<number>;
334
- isOptionAvailable(specTypeId: string, specOptionId: string): boolean;
335
- selectSpec(specTypeId: string, specOptionId: string): void;
336
- isSpecSelected(specTypeId: string, specOptionId: string): boolean;
337
- selectedOptionLabel(specType: ClxSpecType): string;
338
- asColor(value: string): ClxColorInput;
339
- specsLeft<T>(specs: T[]): T[];
340
- specsRight<T>(specs: T[]): T[];
341
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxProductDetailComponent, never>;
342
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxProductDetailComponent, "clx-product-detail", never, { "product": { "alias": "product"; "required": false; "isSignal": true; }; "clxColor": { "alias": "clxColor"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "currency": { "alias": "currency"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
258
+ declare class ClxCardFooterDirective {
259
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCardFooterDirective, never>;
260
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxCardFooterDirective, "[clxCardFooter]", never, {}, {}, never, never, true, never>;
343
261
  }
344
262
 
345
- type ClxTreeSize = 'sm' | 'md' | 'lg';
346
- type ClxTreeVariant = 'default' | 'lines';
347
- interface ClxTreeNode {
348
- id: string | number;
263
+ type ClxListVariant = 'bordered' | 'flat' | 'flush';
264
+ type ClxListSize = 'sm' | 'md' | 'lg';
265
+ interface ClxListItem {
349
266
  label: string;
267
+ sublabel?: string;
350
268
  icon?: string;
351
- children?: ClxTreeNode[];
269
+ meta?: string;
270
+ metaColor?: string;
352
271
  disabled?: boolean;
353
- data?: unknown;
354
- }
355
- interface ClxTreeSelectEvent {
356
- node: ClxTreeNode;
357
- selected: boolean;
358
- }
359
- interface ClxTreeExpandEvent {
360
- node: ClxTreeNode;
361
- expanded: boolean;
362
272
  }
363
273
 
364
- declare class ClxTreeComponent {
274
+ declare class ClxListComponent {
365
275
  private readonly _themeSvc;
366
- readonly nodes: _angular_core.InputSignal<ClxTreeNode[]>;
367
276
  readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
368
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
369
- readonly size: _angular_core.InputSignal<ClxTreeSize | undefined>;
370
- readonly variant: _angular_core.InputSignal<ClxTreeVariant>;
371
- readonly selectable: _angular_core.InputSignal<boolean>;
372
- readonly multiSelect: _angular_core.InputSignal<boolean>;
373
- readonly expandAll: _angular_core.InputSignal<boolean>;
374
- readonly selectedIds: _angular_core.ModelSignal<(string | number)[]>;
375
- readonly expandedIds: _angular_core.ModelSignal<(string | number)[]>;
376
- readonly selectChange: _angular_core.OutputEmitterRef<ClxTreeSelectEvent>;
377
- readonly expandChange: _angular_core.OutputEmitterRef<ClxTreeExpandEvent>;
378
- protected readonly _treeSize: _angular_core.Signal<ClxTreeSize>;
379
- protected readonly _s: _angular_core.Signal<{
380
- row: string;
381
- text: string;
382
- icon: "xs" | "sm" | "md";
383
- indent: string;
277
+ readonly resolvedColor: _angular_core.Signal<ClxColorInput>;
278
+ readonly variant: _angular_core.InputSignal<ClxListVariant>;
279
+ readonly size: _angular_core.InputSignal<ClxListSize>;
280
+ readonly numbered: _angular_core.InputSignal<boolean>;
281
+ _itemCounter: number;
282
+ readonly sizeTokens: _angular_core.Signal<{
283
+ item: string;
284
+ iconSize: codexly_ui.ClxSize;
285
+ label: string;
286
+ sublabel: string;
287
+ meta: string;
288
+ number: string;
384
289
  }>;
385
- protected readonly _indentPx: _angular_core.Signal<16 | 24 | 20>;
386
- protected readonly _rootClass: _angular_core.Signal<string>;
387
- protected _isExpanded(id: string | number): boolean;
388
- protected _isSelected(id: string | number): boolean;
389
- protected _rowClass(node: ClxTreeNode, selected: boolean): string;
390
- protected _iconClass(selected: boolean): string;
391
- protected _labelClass(node: ClxTreeNode, selected: boolean): string;
392
- protected _badgeClass(selected: boolean): string;
393
- protected _lineClass(): string;
394
- protected _toggleExpand(node: ClxTreeNode): void;
395
- protected _onRowClick(node: ClxTreeNode): void;
396
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTreeComponent, never>;
397
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTreeComponent, "clx-tree", never, { "nodes": { "alias": "nodes"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "multiSelect": { "alias": "multiSelect"; "required": false; "isSignal": true; }; "expandAll": { "alias": "expandAll"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; "expandedIds": { "alias": "expandedIds"; "required": false; "isSignal": true; }; }, { "selectedIds": "selectedIdsChange"; "expandedIds": "expandedIdsChange"; "selectChange": "selectChange"; "expandChange": "expandChange"; }, never, never, true, never>;
290
+ readonly dividerClass: _angular_core.Signal<string>;
291
+ protected readonly _hostClass: _angular_core.Signal<string>;
292
+ registerItem(): number;
293
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxListComponent, never>;
294
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxListComponent, "clx-list", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "numbered": { "alias": "numbered"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
398
295
  }
399
296
 
400
- type ClxFilterFieldType = 'checkbox' | 'radio' | 'range' | 'select' | 'date-range';
401
- interface ClxFilterOption {
402
- value: string | number;
403
- label: string;
404
- count?: number;
297
+ interface ClxListContext {
298
+ color: Signal<ClxColorInput | undefined>;
299
+ resolvedColor: Signal<ClxColorInput>;
300
+ variant: Signal<ClxListVariant>;
301
+ size: Signal<ClxListSize>;
302
+ numbered: Signal<boolean>;
303
+ sizeTokens: Signal<(typeof LIST_SIZE_MAP)[ClxListSize]>;
304
+ dividerClass: Signal<string>;
305
+ registerItem: () => number;
405
306
  }
406
- interface ClxFilterField {
407
- key: string;
307
+ declare const LIST_SIZE_MAP: Record<ClxListSize, {
308
+ item: string;
309
+ iconSize: ClxSize;
408
310
  label: string;
409
- type: ClxFilterFieldType;
410
- options?: ClxFilterOption[];
411
- min?: number;
412
- max?: number;
413
- step?: number;
414
- unit?: string;
415
- collapsed?: boolean;
311
+ sublabel: string;
312
+ meta: string;
313
+ number: string;
314
+ }>;
315
+
316
+ declare class ClxListItemComponent {
317
+ protected readonly _ctx: ClxListContext;
318
+ private readonly _themeSvc;
319
+ readonly label: _angular_core.InputSignal<string>;
320
+ readonly sublabel: _angular_core.InputSignal<string>;
321
+ readonly icon: _angular_core.InputSignal<string>;
322
+ readonly meta: _angular_core.InputSignal<string>;
323
+ readonly metaColor: _angular_core.InputSignal<ClxColorInput | undefined>;
324
+ readonly disabled: _angular_core.InputSignal<boolean>;
325
+ private readonly _metaColor;
326
+ protected readonly _index: number;
327
+ protected readonly _iconClass: _angular_core.Signal<string>;
328
+ protected readonly _hostClass: _angular_core.Signal<string>;
329
+ protected readonly _numberClass: _angular_core.Signal<string>;
330
+ protected readonly _labelClass: _angular_core.Signal<string>;
331
+ protected readonly _metaClass: _angular_core.Signal<string>;
332
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxListItemComponent, never>;
333
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxListItemComponent, "clx-list-item", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; "metaColor": { "alias": "metaColor"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["[clxLead]", "[clxContent]", "[clxTrail]", "*"], true, never>;
416
334
  }
417
- type ClxFilterValue = (string | number)[] | string | number | {
418
- min: number;
419
- max: number;
420
- } | {
421
- from: Date;
422
- to: Date;
423
- } | null;
424
- type ClxFilterValues = Record<string, ClxFilterValue>;
425
- interface ClxFilterChangeEvent {
426
- key: string;
427
- value: ClxFilterValue;
428
- all: ClxFilterValues;
335
+
336
+ type ClxSkeletonVariant = 'text' | 'circular' | 'rectangular';
337
+
338
+ declare class ClxSkeletonComponent {
339
+ readonly variant: _angular_core.InputSignal<ClxSkeletonVariant>;
340
+ readonly size: _angular_core.InputSignal<ClxSize>;
341
+ readonly width: _angular_core.InputSignal<string | null>;
342
+ readonly height: _angular_core.InputSignal<string | null>;
343
+ protected readonly _hostClass: _angular_core.Signal<string>;
344
+ protected readonly _hostWidth: _angular_core.Signal<string | null>;
345
+ protected readonly _hostHeight: _angular_core.Signal<string | null>;
346
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxSkeletonComponent, never>;
347
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxSkeletonComponent, "clx-skeleton", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
429
348
  }
430
349
 
431
- declare class ClxFilterPanelComponent {
432
- private readonly _themeSvc;
433
- readonly fields: _angular_core.InputSignal<ClxFilterField[]>;
434
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
435
- readonly showApply: _angular_core.InputSignal<boolean>;
436
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
437
- readonly values: _angular_core.ModelSignal<ClxFilterValues>;
438
- readonly filterChange: _angular_core.OutputEmitterRef<ClxFilterChangeEvent>;
439
- readonly applyChange: _angular_core.OutputEmitterRef<ClxFilterValues>;
440
- private readonly _collapsed;
441
- protected readonly _activeCount: _angular_core.Signal<number>;
442
- protected _isCollapsed(key: string): boolean;
443
- protected _toggleField(key: string): void;
444
- protected _hasValue(key: string): boolean;
445
- protected _getValue(key: string): ClxFilterValue;
446
- protected _getRangeValue(field: ClxFilterField): {
447
- min: number;
448
- max: number;
449
- };
450
- protected _isChecked(key: string, val: string | number): boolean;
451
- protected _valueLabel(field: ClxFilterField): string;
452
- protected _toggleCheck(key: string, val: string | number, checked: boolean): void;
453
- protected _setRange(key: string, min: number, max: number, field: ClxFilterField): void;
454
- protected _set(key: string, value: ClxFilterValue): void;
455
- protected _reset(): void;
456
- protected _apply(): void;
457
- protected _badgeCls(): string;
458
- protected _fieldBadgeCls(): string;
459
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxFilterPanelComponent, never>;
460
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxFilterPanelComponent, "clx-filter-panel", never, { "fields": { "alias": "fields"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "showApply": { "alias": "showApply"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; }, { "values": "valuesChange"; "filterChange": "filterChange"; "applyChange": "applyChange"; }, never, never, true, never>;
350
+ type ClxSpinnerVariant = 'spinner' | 'dots' | 'pulse';
351
+ type ClxSpinnerColor = ClxColorInput | 'inherit';
352
+
353
+ declare class ClxSpinnerComponent {
354
+ private readonly _themeSvc;
355
+ readonly size: _angular_core.InputSignal<ClxSize>;
356
+ readonly color: _angular_core.InputSignal<ClxSpinnerColor | undefined>;
357
+ readonly variant: _angular_core.InputSignal<ClxSpinnerVariant>;
358
+ protected readonly _color: _angular_core.Signal<ClxSpinnerColor>;
359
+ protected readonly _spinnerClass: _angular_core.Signal<string>;
360
+ protected readonly _dotClass: _angular_core.Signal<string>;
361
+ protected readonly _pulseWrapperClass: _angular_core.Signal<string>;
362
+ protected readonly _pulseColorClass: _angular_core.Signal<string>;
363
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxSpinnerComponent, never>;
364
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxSpinnerComponent, "clx-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
461
365
  }
462
366
 
463
- type ClxButtonVariant = 'solid' | 'light' | 'outline' | 'ghost' | 'link';
464
- type ClxButtonColor = ClxColorInput;
465
- interface ClxRippleItem {
466
- id: number;
467
- x: number;
468
- y: number;
469
- diameter: number;
367
+ type ClxProgressBarSize = 'xs' | 'sm' | 'md' | 'lg';
368
+ type ClxProgressBarVariant = 'solid' | 'striped' | 'indeterminate';
369
+
370
+ declare class ClxProgressBarComponent {
371
+ private readonly _themeSvc;
372
+ readonly value: _angular_core.InputSignal<number>;
373
+ readonly max: _angular_core.InputSignal<number>;
374
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
375
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
376
+ readonly size: _angular_core.InputSignal<ClxProgressBarSize | undefined>;
377
+ readonly variant: _angular_core.InputSignal<ClxProgressBarVariant>;
378
+ readonly label: _angular_core.InputSignal<string>;
379
+ readonly showValue: _angular_core.InputSignal<boolean>;
380
+ readonly valueFormat: _angular_core.InputSignal<"percent" | "fraction" | "value">;
381
+ protected readonly _pct: _angular_core.Signal<number>;
382
+ protected readonly _pbSize: _angular_core.Signal<ClxProgressBarSize>;
383
+ protected readonly _trackH: _angular_core.Signal<string>;
384
+ protected readonly _labelCls: _angular_core.Signal<"text-xs text-clx-text-label" | "text-sm text-clx-text-label">;
385
+ protected readonly _displayValue: _angular_core.Signal<string>;
386
+ protected readonly _fillCls: _angular_core.Signal<string>;
387
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxProgressBarComponent, never>;
388
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxProgressBarComponent, "clx-progress-bar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
470
389
  }
471
390
 
472
- declare class ClxAlertComponent implements OnInit, OnDestroy {
473
- private readonly _opts;
474
- private readonly _resolve;
475
- private readonly _animate;
476
- private readonly _el;
391
+ declare class ClxRatingComponent {
477
392
  private readonly _themeSvc;
478
- private readonly _zone;
479
- constructor();
480
- private get _type();
481
- private get _isConfirm();
482
- protected readonly _icon: _angular_core.WritableSignal<string>;
483
- protected readonly _title: _angular_core.WritableSignal<string>;
484
- protected readonly _message: _angular_core.WritableSignal<string>;
485
- protected readonly _showCancel: _angular_core.WritableSignal<boolean>;
486
- protected readonly _iconBg: _angular_core.Signal<string>;
487
- protected readonly _iconColor: _angular_core.Signal<string>;
488
- protected readonly _progressColor: _angular_core.Signal<string>;
489
- protected readonly _confirmText: _angular_core.WritableSignal<string>;
490
- protected readonly _confirmColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
491
- protected readonly _cancelText: _angular_core.WritableSignal<string>;
492
- protected readonly _cancelColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
493
- protected readonly _cancelVariant: _angular_core.WritableSignal<ClxButtonVariant>;
494
- protected readonly _timerTotal: _angular_core.WritableSignal<number>;
495
- protected readonly _progressPct: _angular_core.WritableSignal<number>;
496
- private _timerHandle;
497
- private _destroyed;
498
- private get _card();
499
- ngOnInit(): void;
500
- ngOnDestroy(): void;
501
- confirm(): void;
502
- dismiss(): void;
503
- private _close;
504
- private _startTimer;
505
- private _stopTimer;
506
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxAlertComponent, never>;
507
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxAlertComponent, "clx-alert", never, {}, {}, never, never, true, never>;
393
+ readonly value: _angular_core.InputSignal<number>;
394
+ readonly max: _angular_core.InputSignal<number>;
395
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
396
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
397
+ protected readonly _hexColor: _angular_core.Signal<string>;
398
+ protected readonly _stars: _angular_core.Signal<{
399
+ idx: number;
400
+ icon: string;
401
+ fill: boolean;
402
+ }[]>;
403
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxRatingComponent, never>;
404
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxRatingComponent, "clx-rating", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
508
405
  }
509
406
 
510
- declare class ClxTabDirective {
511
- readonly templateRef: TemplateRef<unknown>;
512
- readonly clxTabPanel: _angular_core.InputSignal<string>;
513
- constructor(templateRef: TemplateRef<unknown>);
514
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTabDirective, never>;
515
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxTabDirective, "[clxTabPanel]", never, { "clxTabPanel": { "alias": "clxTabPanel"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
407
+ type ClxStepperStatus = 'completed' | 'active' | 'pending' | 'error';
408
+ type ClxStepperOrientation = 'horizontal' | 'vertical';
409
+ type ClxStepperSize = 'sm' | 'md' | 'lg';
410
+ interface ClxStepperStep {
411
+ label: string;
412
+ description?: string;
413
+ icon?: string;
414
+ status: ClxStepperStatus;
516
415
  }
517
416
 
518
- declare class ClxTabsComponent {
417
+ declare class ClxStepperComponent {
519
418
  private readonly _themeSvc;
520
- readonly tabs: _angular_core.InputSignal<ClxTabItem[]>;
521
- readonly clxColor: _angular_core.InputSignal<ClxColorInput | undefined>;
522
- readonly activeTab: _angular_core.ModelSignal<string>;
523
- protected readonly _clxColor: _angular_core.Signal<ClxColorInput>;
524
- protected readonly _panels: _angular_core.Signal<readonly ClxTabDirective[]>;
525
- protected readonly _underlineClass: _angular_core.Signal<string>;
526
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTabsComponent, never>;
527
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTabsComponent, "clx-tabs", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "clxColor": { "alias": "clxColor"; "required": false; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; }, ["_panels"], never, true, never>;
419
+ readonly steps: _angular_core.InputSignal<ClxStepperStep[]>;
420
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
421
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
422
+ readonly orientation: _angular_core.InputSignal<ClxStepperOrientation>;
423
+ readonly size: _angular_core.InputSignal<ClxStepperSize>;
424
+ protected readonly _tokens: _angular_core.Signal<{
425
+ circle: string;
426
+ iconSize: codexly_ui.ClxSize;
427
+ label: string;
428
+ desc: string;
429
+ connector: string;
430
+ }>;
431
+ protected readonly _hostClass: _angular_core.Signal<"flex flex-row items-start w-full" | "flex flex-col w-full">;
432
+ protected readonly _stepWrapClass: _angular_core.Signal<"flex flex-col items-center flex-1 min-w-0" | "flex flex-row gap-3">;
433
+ protected readonly _axisClass: _angular_core.Signal<"flex flex-row items-center w-full" | "flex flex-col items-center shrink-0">;
434
+ protected readonly _labelWrapClass: _angular_core.Signal<"flex flex-col items-center text-center mt-2 px-1" | "flex flex-col justify-center pb-6 min-w-0">;
435
+ protected _circleClass(status: ClxStepperStep['status']): string;
436
+ protected _connectorClass(status: ClxStepperStep['status']): string;
437
+ protected _labelClass(status: ClxStepperStep['status']): string;
438
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxStepperComponent, never>;
439
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxStepperComponent, "clx-stepper", never, { "steps": { "alias": "steps"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
528
440
  }
529
441
 
530
- type ClxDrawerSize = 'sm' | 'md' | 'lg';
531
- interface ClxDrawerButtonOptions {
532
- text: string;
533
- color?: ClxButtonColor;
534
- variant?: ClxButtonVariant;
535
- }
536
- interface ClxDrawerConfig<D = unknown> {
537
- /** Width preset. Default: 'md' */
538
- size?: ClxDrawerSize;
539
- /** Show the dark backdrop. Default: false */
540
- hasBackdrop?: boolean;
541
- /** Prevent closing on backdrop click / Escape. Default: false */
542
- disableClose?: boolean;
543
- /** Extra CSS classes added to the overlay pane */
544
- panelClass?: string | string[];
545
- /** Data injected into the opened component via CLX_MODAL_DATA token */
546
- data?: D;
547
- }
548
- interface ClxDrawerRef<R = unknown> {
549
- close(result?: R): void;
550
- afterClosed(): Promise<R | undefined>;
551
- }
442
+ type ClxTimelineLineStyle = 'dotted' | 'solid' | 'none';
443
+ type ClxTimelineMode = 'left' | 'alternate';
444
+ type ClxTimelineSize = 'sm' | 'md' | 'lg';
552
445
 
553
- declare class ClxDrawerComponent {
554
- readonly size: _angular_core.InputSignal<ClxDrawerSize | null>;
555
- readonly showClose: _angular_core.InputSignal<boolean>;
556
- readonly confirmButton: _angular_core.InputSignal<ClxDrawerButtonOptions | undefined>;
557
- readonly cancelButton: _angular_core.InputSignal<ClxDrawerButtonOptions | undefined>;
558
- readonly showCancelButton: _angular_core.InputSignal<boolean>;
559
- readonly confirmClick: _angular_core.OutputEmitterRef<void>;
560
- readonly cancelClick: _angular_core.OutputEmitterRef<void>;
561
- private readonly _modalRef;
562
- private readonly _sizeToken;
446
+ declare class ClxTimelineComponent {
563
447
  private readonly _themeSvc;
564
- protected readonly _resolvedSize: _angular_core.Signal<ClxDrawerSize>;
448
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
449
+ readonly resolvedColor: _angular_core.Signal<ClxColorInput>;
450
+ readonly lineStyle: _angular_core.InputSignal<ClxTimelineLineStyle>;
451
+ readonly mode: _angular_core.InputSignal<ClxTimelineMode>;
452
+ readonly size: _angular_core.InputSignal<ClxTimelineSize>;
453
+ readonly sizeTokens: _angular_core.Signal<{
454
+ dot: string;
455
+ iconSize: codexly_ui.ClxSize;
456
+ item: string;
457
+ gap: string;
458
+ title: string;
459
+ desc: string;
460
+ time: string;
461
+ contentPb: string;
462
+ }>;
565
463
  protected readonly _hostClass: _angular_core.Signal<string>;
566
- protected readonly _hasBuiltInButtons: _angular_core.Signal<boolean>;
567
- protected readonly _confirmText: _angular_core.Signal<string>;
568
- protected readonly _confirmColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
569
- protected readonly _confirmVariant: _angular_core.Signal<codexly_ui.ClxButtonVariant>;
570
- protected readonly _cancelText: _angular_core.Signal<string>;
571
- protected readonly _cancelColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
572
- protected readonly _cancelVariant: _angular_core.Signal<codexly_ui.ClxButtonVariant>;
573
- protected _close(): void;
574
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxDrawerComponent, never>;
575
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxDrawerComponent, "clx-drawer", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "confirmButton": { "alias": "confirmButton"; "required": false; "isSignal": true; }; "cancelButton": { "alias": "cancelButton"; "required": false; "isSignal": true; }; "showCancelButton": { "alias": "showCancelButton"; "required": false; "isSignal": true; }; }, { "confirmClick": "confirmClick"; "cancelClick": "cancelClick"; }, never, ["[clx-drawer-title]", "*", "[clx-drawer-footer]"], true, never>;
464
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTimelineComponent, never>;
465
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTimelineComponent, "clx-timeline", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "lineStyle": { "alias": "lineStyle"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
576
466
  }
577
467
 
578
- type ClxAnimateAttentionSeeker = 'bounce' | 'flash' | 'pulse' | 'rubberBand' | 'shakeX' | 'shakeY' | 'headShake' | 'swing' | 'tada' | 'wobble' | 'jello' | 'heartBeat';
579
- type ClxAnimateBackEntrance = 'backInDown' | 'backInLeft' | 'backInRight' | 'backInUp';
580
- type ClxAnimateBackExit = 'backOutDown' | 'backOutLeft' | 'backOutRight' | 'backOutUp';
581
- type ClxAnimateBouncingEntrance = 'bounceIn' | 'bounceInDown' | 'bounceInLeft' | 'bounceInRight' | 'bounceInUp';
582
- type ClxAnimateBouncingExit = 'bounceOut' | 'bounceOutDown' | 'bounceOutLeft' | 'bounceOutRight' | 'bounceOutUp';
583
- type ClxAnimateFadingEntrance = 'fadeIn' | 'fadeInDown' | 'fadeInDownBig' | 'fadeInLeft' | 'fadeInLeftBig' | 'fadeInRight' | 'fadeInRightBig' | 'fadeInUp' | 'fadeInUpBig' | 'fadeInTopLeft' | 'fadeInTopRight' | 'fadeInBottomLeft' | 'fadeInBottomRight';
584
- type ClxAnimateFadingExit = 'fadeOut' | 'fadeOutDown' | 'fadeOutDownBig' | 'fadeOutLeft' | 'fadeOutLeftBig' | 'fadeOutRight' | 'fadeOutRightBig' | 'fadeOutUp' | 'fadeOutUpBig' | 'fadeOutTopLeft' | 'fadeOutTopRight' | 'fadeOutBottomRight' | 'fadeOutBottomLeft';
585
- type ClxAnimateFlipper = 'flip' | 'flipInX' | 'flipInY' | 'flipOutX' | 'flipOutY';
586
- type ClxAnimateLightspeed = 'lightSpeedInRight' | 'lightSpeedInLeft' | 'lightSpeedOutRight' | 'lightSpeedOutLeft';
587
- type ClxAnimateRotatingEntrance = 'rotateIn' | 'rotateInDownLeft' | 'rotateInDownRight' | 'rotateInUpLeft' | 'rotateInUpRight';
588
- type ClxAnimateRotatingExit = 'rotateOut' | 'rotateOutDownLeft' | 'rotateOutDownRight' | 'rotateOutUpLeft' | 'rotateOutUpRight';
589
- type ClxAnimateSpecial = 'hinge' | 'jackInTheBox' | 'rollIn' | 'rollOut';
590
- type ClxAnimateZoomingEntrance = 'zoomIn' | 'zoomInDown' | 'zoomInLeft' | 'zoomInRight' | 'zoomInUp';
591
- type ClxAnimateZoomingExit = 'zoomOut' | 'zoomOutDown' | 'zoomOutLeft' | 'zoomOutRight' | 'zoomOutUp';
592
- type ClxAnimateSlidingEntrance = 'slideInDown' | 'slideInLeft' | 'slideInRight' | 'slideInUp';
593
- type ClxAnimateSlidingExit = 'slideOutDown' | 'slideOutLeft' | 'slideOutRight' | 'slideOutUp';
594
- type ClxAnimateName = ClxAnimateAttentionSeeker | ClxAnimateBackEntrance | ClxAnimateBackExit | ClxAnimateBouncingEntrance | ClxAnimateBouncingExit | ClxAnimateFadingEntrance | ClxAnimateFadingExit | ClxAnimateFlipper | ClxAnimateLightspeed | ClxAnimateRotatingEntrance | ClxAnimateRotatingExit | ClxAnimateSpecial | ClxAnimateZoomingEntrance | ClxAnimateZoomingExit | ClxAnimateSlidingEntrance | ClxAnimateSlidingExit;
595
- type ClxAnimateTrigger = 'click' | 'hover' | 'hoverLeave' | 'onEnter' | 'onLeave' | 'manual';
596
- interface ClxAnimateConfig {
597
- animation: ClxAnimateName;
598
- trigger?: ClxAnimateTrigger;
599
- duration?: number;
600
- delay?: number;
601
- repeat?: number | 'infinite';
602
- easing?: string;
603
- fillMode?: 'none' | 'forwards' | 'backwards' | 'both';
604
- once?: boolean;
605
- threshold?: number;
606
- }
607
- type ClxAnimateDefaults = Partial<Pick<ClxAnimateConfig, 'duration' | 'delay' | 'repeat' | 'easing' | 'fillMode' | 'once' | 'threshold'>>;
608
- interface ClxAnimateEvent {
609
- element: HTMLElement;
610
- animation: ClxAnimateName;
611
- timestamp: number;
468
+ interface ClxTimelineContext {
469
+ color: Signal<ClxColorInput | undefined>;
470
+ resolvedColor: Signal<ClxColorInput>;
471
+ lineStyle: Signal<ClxTimelineLineStyle>;
472
+ mode: Signal<ClxTimelineMode>;
473
+ size: Signal<ClxTimelineSize>;
474
+ sizeTokens: Signal<(typeof TIMELINE_SIZE_MAP)[ClxTimelineSize]>;
612
475
  }
476
+ declare const TIMELINE_SIZE_MAP: Record<ClxTimelineSize, {
477
+ dot: string;
478
+ iconSize: ClxSize;
479
+ item: string;
480
+ gap: string;
481
+ title: string;
482
+ desc: string;
483
+ time: string;
484
+ contentPb: string;
485
+ }>;
613
486
 
614
- type ClxModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
615
- interface ClxModalButtonOptions {
616
- text: string;
617
- color?: ClxButtonColor;
618
- variant?: ClxButtonVariant;
619
- }
620
- interface ClxModalConfig<D = unknown> {
621
- /** Width preset. Default: 'md' */
622
- size?: ClxModalSize;
623
- /** Show the dark backdrop. Default: true */
624
- hasBackdrop?: boolean;
625
- /** Prevent closing on backdrop click / Escape. Default: false */
626
- disableClose?: boolean;
627
- /** Extra CSS classes added to the overlay pane */
628
- panelClass?: string | string[];
629
- /** Data injected into the opened component via CLX_MODAL_DATA token */
630
- data?: D;
631
- /** Entrance animation name. Default: 'fadeInDown' */
632
- animationIn?: ClxAnimateName;
633
- /** Exit animation name. Default: 'fadeOutUp' */
634
- animationOut?: ClxAnimateName;
635
- /** Animation duration in ms. Default: 300 */
636
- animationDuration?: number;
637
- }
638
- interface ClxModalRef<R = unknown> {
639
- /** Closes the modal and emits the result */
640
- close(result?: R): void;
641
- /** Promise that resolves with the result when the modal closes */
642
- afterClosed(): Promise<R | undefined>;
487
+ declare class ClxTimelineItemComponent {
488
+ protected readonly _ctx: ClxTimelineContext;
489
+ readonly icon: _angular_core.InputSignal<string>;
490
+ readonly color: _angular_core.InputSignal<ClxColorInput | null>;
491
+ readonly title: _angular_core.InputSignal<string>;
492
+ readonly description: _angular_core.InputSignal<string>;
493
+ readonly time: _angular_core.InputSignal<string>;
494
+ readonly last: _angular_core.InputSignal<boolean>;
495
+ protected readonly _resolvedColor: _angular_core.Signal<codexly_ui.ClxColorTokens>;
496
+ protected readonly _iconClass: _angular_core.Signal<string>;
497
+ protected readonly _hostClass: _angular_core.Signal<string>;
498
+ protected readonly _dotClass: _angular_core.Signal<string>;
499
+ protected readonly _lineClass: _angular_core.Signal<string>;
500
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTimelineItemComponent, never>;
501
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTimelineItemComponent, "clx-timeline-item", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "time": { "alias": "time"; "required": false; "isSignal": true; }; "last": { "alias": "last"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
643
502
  }
644
503
 
645
- declare class ClxModalComponent {
646
- readonly size: _angular_core.InputSignal<ClxModalSize | null>;
647
- readonly showClose: _angular_core.InputSignal<boolean>;
648
- readonly confirmButton: _angular_core.InputSignal<ClxModalButtonOptions | undefined>;
649
- readonly cancelButton: _angular_core.InputSignal<ClxModalButtonOptions | undefined>;
650
- readonly showCancelButton: _angular_core.InputSignal<boolean>;
651
- readonly confirmClick: _angular_core.OutputEmitterRef<void>;
652
- readonly cancelClick: _angular_core.OutputEmitterRef<void>;
653
- private readonly _modalRef;
654
- private readonly _sizeToken;
504
+ type ClxTooltipPosition = 'top' | 'bottom' | 'left' | 'right';
505
+ type ClxTooltipSize = 'sm' | 'md';
506
+
507
+ declare class ClxTooltipComponent {
655
508
  private readonly _themeSvc;
656
- protected readonly _resolvedSize: _angular_core.Signal<ClxModalSize>;
509
+ readonly text: _angular_core.InputSignal<string>;
510
+ readonly position: _angular_core.InputSignal<ClxTooltipPosition>;
511
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
512
+ readonly size: _angular_core.InputSignal<ClxTooltipSize>;
513
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
657
514
  protected readonly _hostClass: _angular_core.Signal<string>;
658
- protected readonly _hasBuiltInButtons: _angular_core.Signal<boolean>;
659
- protected readonly _confirmText: _angular_core.Signal<string>;
660
- protected readonly _confirmColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
661
- protected readonly _confirmVariant: _angular_core.Signal<codexly_ui.ClxButtonVariant>;
662
- protected readonly _cancelText: _angular_core.Signal<string>;
663
- protected readonly _cancelColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
664
- protected readonly _cancelVariant: _angular_core.Signal<codexly_ui.ClxButtonVariant>;
665
- protected _close(): void;
666
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxModalComponent, never>;
667
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxModalComponent, "clx-modal", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "confirmButton": { "alias": "confirmButton"; "required": false; "isSignal": true; }; "cancelButton": { "alias": "cancelButton"; "required": false; "isSignal": true; }; "showCancelButton": { "alias": "showCancelButton"; "required": false; "isSignal": true; }; }, { "confirmClick": "confirmClick"; "cancelClick": "cancelClick"; }, never, ["[clx-modal-title]", "*", "[clx-modal-footer]"], true, never>;
515
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTooltipComponent, never>;
516
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTooltipComponent, "clx-tooltip", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
668
517
  }
669
518
 
670
- type ClxPaginationSize = 'sm' | 'md' | 'lg';
671
- interface ClxPageChangeEvent {
672
- page: number;
673
- pageSize: number;
674
- }
675
- interface ClxPageSizeChangeEvent {
676
- pageSize: number;
519
+ declare class ClxTooltipDirective {
520
+ readonly clxTooltip: _angular_core.InputSignal<string>;
521
+ readonly clxTooltipPosition: _angular_core.InputSignal<ClxTooltipPosition>;
522
+ readonly clxTooltipColor: _angular_core.InputSignal<ClxColorInput>;
523
+ readonly clxTooltipSize: _angular_core.InputSignal<ClxTooltipSize>;
524
+ readonly clxTooltipDelay: _angular_core.InputSignal<number>;
525
+ private readonly _el;
526
+ private readonly _renderer;
527
+ private readonly _appRef;
528
+ private readonly _injector;
529
+ private readonly _animate;
530
+ private readonly _platformId;
531
+ private readonly _destroyRef;
532
+ private _ref;
533
+ private _pendingRef;
534
+ private _showTimer;
535
+ private _hideTimer;
536
+ private _tooltipId;
537
+ private _abort;
538
+ private _destroyed;
539
+ constructor();
540
+ private _scheduleShow;
541
+ private _scheduleHide;
542
+ private _show;
543
+ private _hide;
544
+ private _resolvePosition;
545
+ private _placeAt;
546
+ private _destroyBubble;
547
+ private _forceDestroyBubble;
548
+ private _clearShow;
549
+ private _clearHide;
550
+ private _clearTimers;
551
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTooltipDirective, never>;
552
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxTooltipDirective, "[clxTooltip]", never, { "clxTooltip": { "alias": "clxTooltip"; "required": true; "isSignal": true; }; "clxTooltipPosition": { "alias": "clxTooltipPosition"; "required": false; "isSignal": true; }; "clxTooltipColor": { "alias": "clxTooltipColor"; "required": false; "isSignal": true; }; "clxTooltipSize": { "alias": "clxTooltipSize"; "required": false; "isSignal": true; }; "clxTooltipDelay": { "alias": "clxTooltipDelay"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
677
553
  }
678
554
 
679
- type ClxSelectSize = 'sm' | 'md' | 'lg';
680
- interface ClxSelectOption {
681
- value: string | number;
682
- label: string;
683
- disabled?: boolean;
684
- /** Renders the option label using this font family, for font-picker selects */
685
- previewFontFamily?: string;
686
- }
555
+ type ClxInputStatus = 'default' | 'error' | 'success';
556
+ type ClxInputSize = 'sm' | 'md' | 'lg';
557
+ type ClxInputType = 'text' | 'password' | 'email' | 'search' | 'tel' | 'url';
687
558
 
688
- type PageItem = {
689
- type: 'page';
690
- page: number;
691
- } | {
692
- type: 'ellipsis';
693
- id: string;
694
- };
695
- declare class ClxPaginationComponent {
559
+ declare class ClxInputComponent implements ControlValueAccessor {
696
560
  private readonly _themeSvc;
697
- readonly totalItems: _angular_core.InputSignal<number>;
561
+ readonly label: _angular_core.InputSignal<string>;
562
+ readonly placeholder: _angular_core.InputSignal<string>;
563
+ readonly type: _angular_core.InputSignal<ClxInputType>;
698
564
  readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
699
565
  protected readonly _color: _angular_core.Signal<ClxColorInput>;
700
- readonly size: _angular_core.InputSignal<ClxPaginationSize | undefined>;
701
- readonly showPageSize: _angular_core.InputSignal<boolean>;
702
- /** Opciones manuales. Si está vacío (default) se calculan automáticamente desde totalItems. */
703
- readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
704
- readonly currentPage: _angular_core.ModelSignal<number>;
705
- readonly pageSize: _angular_core.ModelSignal<number>;
706
- readonly pageChange: _angular_core.OutputEmitterRef<ClxPageChangeEvent>;
707
- readonly sizeChange: _angular_core.OutputEmitterRef<ClxPageSizeChangeEvent>;
708
- private readonly _destroyRef;
709
- protected readonly _pageSizeCtrl: FormControl<number | null>;
710
- constructor();
711
- protected readonly _size: _angular_core.Signal<ClxPaginationSize>;
712
- protected readonly _cfg: _angular_core.Signal<{
713
- btnSize: "xs" | "sm" | "md" | "lg";
714
- selectSize: "sm" | "md" | "lg";
715
- text: string;
716
- gap: string;
566
+ readonly hint: _angular_core.InputSignal<string>;
567
+ readonly prefixIcon: _angular_core.InputSignal<string>;
568
+ readonly suffixIcon: _angular_core.InputSignal<string>;
569
+ readonly prefixText: _angular_core.InputSignal<string>;
570
+ readonly suffixText: _angular_core.InputSignal<string>;
571
+ readonly status: _angular_core.InputSignal<ClxInputStatus>;
572
+ readonly statusMessage: _angular_core.InputSignal<string>;
573
+ readonly size: _angular_core.InputSignal<ClxInputSize | undefined>;
574
+ protected readonly _size: _angular_core.Signal<ClxInputSize>;
575
+ /** Initial value for standalone use (without FormControl) */
576
+ readonly value: _angular_core.InputSignal<string>;
577
+ /** Disabled state for standalone use (without FormControl) */
578
+ readonly disabled: _angular_core.InputSignal<boolean>;
579
+ readonly autocomplete: _angular_core.InputSignal<string | null>;
580
+ protected readonly _inputId: string;
581
+ protected readonly _showPassword: _angular_core.WritableSignal<boolean>;
582
+ readonly _value: _angular_core.WritableSignal<string>;
583
+ private readonly _cvaDisabled;
584
+ private _cvaConnected;
585
+ protected readonly _disabled: _angular_core.Signal<boolean>;
586
+ private readonly _valueEffect;
587
+ private _onChange;
588
+ private _onTouched;
589
+ protected readonly _inputType: _angular_core.Signal<ClxInputType>;
590
+ protected readonly _autocomplete: _angular_core.Signal<string>;
591
+ protected readonly _sizeConfig: _angular_core.Signal<{
592
+ input: string;
593
+ label: string;
594
+ hint: string;
595
+ iconSize: "xs" | "sm" | "md";
596
+ iconLeft: string;
597
+ iconRight: string;
598
+ padLeft: string;
599
+ padRight: string;
600
+ padDefaultL: string;
601
+ padDefaultR: string;
717
602
  }>;
718
- readonly totalPages: _angular_core.Signal<number>;
719
- private readonly _rangeStart;
720
- private readonly _rangeEnd;
721
- protected readonly _infoText: _angular_core.Signal<string>;
722
- protected readonly _pageSizeOptions: _angular_core.Signal<ClxSelectOption[]>;
723
- protected readonly _pageItems: _angular_core.Signal<PageItem[]>;
724
- protected readonly _wrapClass: _angular_core.Signal<string>;
725
- protected readonly _infoClass: _angular_core.Signal<string>;
726
- protected readonly _ellipsisClass: _angular_core.Signal<string>;
727
- protected _goTo(page: number): void;
728
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxPaginationComponent, never>;
729
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxPaginationComponent, "clx-pagination", never, { "totalItems": { "alias": "totalItems"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "showPageSize": { "alias": "showPageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; }, { "currentPage": "currentPageChange"; "pageSize": "pageSizeChange"; "pageChange": "pageChange"; "sizeChange": "sizeChange"; }, never, never, true, never>;
603
+ protected readonly _statusCfg: _angular_core.Signal<{
604
+ border: string;
605
+ ring: string;
606
+ msgCls: string;
607
+ iconName: string;
608
+ iconColor: string;
609
+ }>;
610
+ /** True whenever the wrapper must be a flex container (prefix icon/text or suffix text) */
611
+ private readonly _isFlexMode;
612
+ protected readonly _labelClass: _angular_core.Signal<string>;
613
+ protected readonly _hintClass: _angular_core.Signal<string>;
614
+ protected readonly _wrapperClass: _angular_core.Signal<string>;
615
+ protected readonly _inputClass: _angular_core.Signal<string>;
616
+ /** Colored prefix icon cell — matches the input accent color */
617
+ protected readonly _prefixIconCellCls: _angular_core.Signal<string>;
618
+ protected readonly _suffixIconWrapCls: _angular_core.Signal<string>;
619
+ protected readonly _statusMsgClass: _angular_core.Signal<string>;
620
+ writeValue(val: string): void;
621
+ registerOnChange(fn: (v: string) => void): void;
622
+ registerOnTouched(fn: () => void): void;
623
+ setDisabledState(disabled: boolean): void;
624
+ protected _handleInput(event: Event): void;
625
+ protected _handleBlur(): void;
626
+ protected _togglePassword(): void;
627
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxInputComponent, never>;
628
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxInputComponent, "clx-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; "isSignal": true; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; "isSignal": true; }; "prefixText": { "alias": "prefixText"; "required": false; "isSignal": true; }; "suffixText": { "alias": "suffixText"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "statusMessage": { "alias": "statusMessage"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
730
629
  }
731
630
 
732
- type ClxToastPosition = 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left';
733
- type ClxToastType = ClxColor;
734
- interface ClxToastAction {
735
- label: string;
736
- onClick: () => void;
737
- }
738
- interface ClxToastOptions {
739
- type?: ClxToastType;
740
- message: string;
741
- title?: string;
742
- icon?: string;
743
- position?: ClxToastPosition;
744
- duration?: number;
745
- showProgress?: boolean;
746
- pauseOnHover?: boolean;
747
- animationIn?: ClxAnimateName;
748
- animationOut?: ClxAnimateName;
749
- animationDuration?: number;
750
- action?: ClxToastAction;
751
- }
752
- interface ClxToastEntry extends Required<Omit<ClxToastOptions, 'title' | 'action' | 'icon'>> {
753
- id: string;
754
- title?: string;
755
- icon?: string;
756
- action?: ClxToastAction;
757
- removing: boolean;
758
- }
759
-
760
- declare class ClxToastComponent implements OnInit, OnDestroy {
761
- readonly entry: _angular_core.InputSignal<ClxToastEntry>;
762
- readonly dismiss: _angular_core.OutputEmitterRef<string>;
763
- private readonly _animate;
764
- private readonly _el;
765
- private readonly _zone;
766
- constructor();
767
- protected readonly _progressPct: _angular_core.WritableSignal<number>;
768
- private _timerHandle;
769
- private _paused;
770
- private _elapsed;
771
- private _destroyed;
772
- protected readonly _icon: _angular_core.Signal<string>;
773
- protected readonly _borderClass: _angular_core.Signal<string>;
774
- protected readonly _colorClass: _angular_core.Signal<string>;
775
- protected readonly _progressColor: _angular_core.Signal<string>;
776
- protected readonly _buttonColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
777
- private get _card();
778
- ngOnInit(): void;
779
- ngOnDestroy(): void;
780
- protected _onMouseEnter(): void;
781
- protected _onMouseLeave(): void;
782
- protected _onAction(): void;
783
- playExitAnimation(): Promise<void>;
784
- private _startTimer;
785
- private _stopTimer;
786
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxToastComponent, never>;
787
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxToastComponent, "clx-toast", never, { "entry": { "alias": "entry"; "required": true; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, never, true, never>;
788
- }
789
-
790
- declare class ClxToastContainerComponent {
791
- readonly entries: _angular_core.ModelSignal<ClxToastEntry[]>;
792
- readonly position: _angular_core.ModelSignal<ClxToastPosition>;
793
- toastRefs: QueryList<ClxToastComponent>;
794
- protected readonly _positionClass: _angular_core.Signal<string>;
795
- requestDismiss(id: string): Promise<void>;
796
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxToastContainerComponent, never>;
797
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxToastContainerComponent, "clx-toast-container", never, { "entries": { "alias": "entries"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; }, { "entries": "entriesChange"; "position": "positionChange"; }, never, never, true, never>;
798
- }
799
-
800
- type ClxCardVariant = 'elevated' | 'outlined' | 'flat';
801
- type ClxCardPadding = 'none' | 'sm' | 'md' | 'lg';
802
- type ClxCardShadow = 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
631
+ type ClxTextareaStatus = 'default' | 'error' | 'success';
632
+ type ClxTextareaSize = 'sm' | 'md' | 'lg';
633
+ type ClxTextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';
803
634
 
804
- declare class ClxCardComponent {
805
- private readonly _themeSvc;
806
- readonly variant: _angular_core.InputSignal<ClxCardVariant>;
635
+ declare class ClxTextareaComponent implements ControlValueAccessor {
636
+ readonly label: _angular_core.InputSignal<string>;
637
+ readonly placeholder: _angular_core.InputSignal<string>;
807
638
  readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
808
- readonly padding: _angular_core.InputSignal<ClxCardPadding>;
809
- readonly shadow: _angular_core.InputSignal<ClxCardShadow | undefined>;
810
- readonly hover: _angular_core.InputSignal<boolean>;
639
+ readonly size: _angular_core.InputSignal<ClxTextareaSize | undefined>;
640
+ protected readonly _size: _angular_core.Signal<ClxTextareaSize>;
641
+ readonly status: _angular_core.InputSignal<ClxTextareaStatus>;
642
+ readonly statusMessage: _angular_core.InputSignal<string>;
643
+ readonly hint: _angular_core.InputSignal<string>;
644
+ readonly prefixIcon: _angular_core.InputSignal<string>;
645
+ readonly suffixIcon: _angular_core.InputSignal<string>;
646
+ readonly resize: _angular_core.InputSignal<ClxTextareaResize>;
647
+ readonly rows: _angular_core.InputSignal<number>;
648
+ readonly maxLength: _angular_core.InputSignal<number>;
649
+ readonly value: _angular_core.InputSignal<string>;
650
+ readonly disabled: _angular_core.InputSignal<boolean>;
651
+ protected readonly _taId: string;
652
+ readonly _value: _angular_core.WritableSignal<string>;
653
+ private readonly _themeSvc;
654
+ private readonly _cvaDisabled;
655
+ private _cvaConnected;
656
+ protected readonly _disabled: _angular_core.Signal<boolean>;
657
+ private readonly _valueEffect;
658
+ private _onChange;
659
+ private _onTouched;
811
660
  protected readonly _color: _angular_core.Signal<ClxColorInput>;
812
- private readonly _headerSlot;
813
- private readonly _bodySlot;
814
- private readonly _footerSlot;
815
- protected readonly _hasHeader: _angular_core.Signal<boolean>;
816
- protected readonly _hasBody: _angular_core.Signal<boolean>;
817
- protected readonly _hasFooter: _angular_core.Signal<boolean>;
818
- protected readonly _bodyClass: _angular_core.Signal<string>;
819
- protected readonly _hostClass: _angular_core.Signal<string>;
820
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCardComponent, never>;
821
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxCardComponent, "clx-card", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "shadow": { "alias": "shadow"; "required": false; "isSignal": true; }; "hover": { "alias": "hover"; "required": false; "isSignal": true; }; }, {}, ["_headerSlot", "_bodySlot", "_footerSlot"], ["[clxCardHeader]", "[clxCardBody]", "*", "[clxCardFooter]"], true, never>;
822
- }
823
-
824
- declare class ClxCardHeaderDirective {
825
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCardHeaderDirective, never>;
826
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxCardHeaderDirective, "[clxCardHeader]", never, {}, {}, never, never, true, never>;
827
- }
828
-
829
- declare class ClxCardBodyDirective {
830
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCardBodyDirective, never>;
831
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxCardBodyDirective, "[clxCardBody]", never, {}, {}, never, never, true, never>;
832
- }
833
-
834
- declare class ClxCardFooterDirective {
835
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCardFooterDirective, never>;
836
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxCardFooterDirective, "[clxCardFooter]", never, {}, {}, never, never, true, never>;
661
+ protected readonly _sizeCfg: _angular_core.Signal<{
662
+ textarea: string;
663
+ label: string;
664
+ hint: string;
665
+ iconSize: "xs" | "sm" | "md";
666
+ iconRight: string;
667
+ padDefaultL: string;
668
+ padDefaultR: string;
669
+ padRight: string;
670
+ }>;
671
+ protected readonly _statusCfg: _angular_core.Signal<{
672
+ border: string;
673
+ ring: string;
674
+ msgCls: string;
675
+ iconName: string;
676
+ iconColor: string;
677
+ }>;
678
+ protected readonly _labelClass: _angular_core.Signal<string>;
679
+ protected readonly _hintClass: _angular_core.Signal<string>;
680
+ /**
681
+ * Outer flex wrapper — owns the border, border-radius and focus ring.
682
+ * The border sits here (not on the textarea) so the prefix cell blends in
683
+ * seamlessly, exactly like clx-input does in flex mode.
684
+ */
685
+ protected readonly _wrapperClass: _angular_core.Signal<string>;
686
+ /** Prefix icon cell — flex column, full height of the wrapper */
687
+ protected readonly _prefixCellCls: _angular_core.Signal<string>;
688
+ /** Textarea itself — no border (border lives on the wrapper), fills flex-1 */
689
+ protected readonly _textareaClass: _angular_core.Signal<string>;
690
+ /** Suffix icon — absolute inside the inner relative wrapper */
691
+ protected readonly _suffixIconWrapCls: _angular_core.Signal<string>;
692
+ protected readonly _statusMsgClass: _angular_core.Signal<string>;
693
+ protected readonly _counterClass: _angular_core.Signal<string>;
694
+ writeValue(val: string): void;
695
+ registerOnChange(fn: (v: string) => void): void;
696
+ registerOnTouched(fn: () => void): void;
697
+ setDisabledState(disabled: boolean): void;
698
+ protected _handleInput(event: Event): void;
699
+ protected _handleBlur(): void;
700
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTextareaComponent, never>;
701
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTextareaComponent, "clx-textarea", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "statusMessage": { "alias": "statusMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; "isSignal": true; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
837
702
  }
838
703
 
839
- type ClxStepperStatus = 'completed' | 'active' | 'pending' | 'error';
840
- type ClxStepperOrientation = 'horizontal' | 'vertical';
841
- type ClxStepperSize = 'sm' | 'md' | 'lg';
842
- interface ClxStepperStep {
843
- label: string;
844
- description?: string;
845
- icon?: string;
846
- status: ClxStepperStatus;
847
- }
704
+ type ClxNumberVariant = 'default' | 'stepper';
705
+ type ClxNumberSize = 'sm' | 'md' | 'lg';
848
706
 
849
- declare class ClxStepperComponent {
850
- private readonly _themeSvc;
851
- readonly steps: _angular_core.InputSignal<ClxStepperStep[]>;
707
+ declare class ClxNumberComponent implements ControlValueAccessor {
708
+ private static _seq;
709
+ protected readonly _inputId: string;
710
+ readonly variant: _angular_core.InputSignal<ClxNumberVariant>;
711
+ readonly size: _angular_core.InputSignal<ClxNumberSize | undefined>;
712
+ protected readonly _size: _angular_core.Signal<ClxNumberSize>;
852
713
  readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
714
+ readonly label: _angular_core.InputSignal<string>;
715
+ readonly placeholder: _angular_core.InputSignal<string>;
716
+ readonly hint: _angular_core.InputSignal<string>;
717
+ readonly prefixIcon: _angular_core.InputSignal<string>;
718
+ readonly min: _angular_core.InputSignal<number | null>;
719
+ readonly max: _angular_core.InputSignal<number | null>;
720
+ readonly step: _angular_core.InputSignal<number>;
721
+ /** Initial value for standalone use (without FormControl) */
722
+ readonly value: _angular_core.InputSignal<number>;
723
+ /** Disabled state for standalone use (without FormControl) */
724
+ readonly disabled: _angular_core.InputSignal<boolean>;
725
+ readonly _value: _angular_core.WritableSignal<number>;
726
+ private readonly _cvaDisabled;
727
+ private _cvaConnected;
728
+ protected readonly _disabled: _angular_core.Signal<boolean>;
729
+ private readonly _valueEffect;
730
+ private _onChange;
731
+ private _onTouched;
732
+ protected readonly _isAtMin: _angular_core.Signal<boolean>;
733
+ protected readonly _isAtMax: _angular_core.Signal<boolean>;
734
+ private readonly _themeSvc;
853
735
  protected readonly _color: _angular_core.Signal<ClxColorInput>;
854
- readonly orientation: _angular_core.InputSignal<ClxStepperOrientation>;
855
- readonly size: _angular_core.InputSignal<ClxStepperSize>;
856
- protected readonly _tokens: _angular_core.Signal<{
857
- circle: string;
858
- iconSize: codexly_ui.ClxSize;
736
+ protected readonly _sizeConfig: _angular_core.Signal<{
737
+ container: string;
738
+ inputText: string;
739
+ iconSize: Extract<codexly_ui.ClxSize, "xs" | "sm" | "md">;
740
+ btnSize: "sm" | "md";
741
+ stepperCell: string;
859
742
  label: string;
860
- desc: string;
861
- connector: string;
743
+ hint: string;
862
744
  }>;
863
- protected readonly _hostClass: _angular_core.Signal<"flex flex-row items-start w-full" | "flex flex-col w-full">;
864
- protected readonly _stepWrapClass: _angular_core.Signal<"flex flex-col items-center flex-1 min-w-0" | "flex flex-row gap-3">;
865
- protected readonly _axisClass: _angular_core.Signal<"flex flex-row items-center w-full" | "flex flex-col items-center shrink-0">;
866
- protected readonly _labelWrapClass: _angular_core.Signal<"flex flex-col items-center text-center mt-2 px-1" | "flex flex-col justify-center pb-6 min-w-0">;
867
- protected _circleClass(status: ClxStepperStep['status']): string;
868
- protected _connectorClass(status: ClxStepperStep['status']): string;
869
- protected _labelClass(status: ClxStepperStep['status']): string;
870
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxStepperComponent, never>;
871
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxStepperComponent, "clx-stepper", never, { "steps": { "alias": "steps"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
745
+ protected readonly _labelClass: _angular_core.Signal<string>;
746
+ protected readonly _hintClass: _angular_core.Signal<string>;
747
+ protected readonly _containerClass: _angular_core.Signal<string>;
748
+ /** Colored prefix icon cell matches the input accent color */
749
+ protected readonly _prefixCellCls: _angular_core.Signal<string>;
750
+ /** Full class for the native input — must include structural classes since [class] replaces static ones */
751
+ protected readonly _inputClass: _angular_core.Signal<string>;
752
+ protected readonly _stepperWrapClass: _angular_core.Signal<string>;
753
+ protected readonly _stepperValueCls: _angular_core.Signal<string>;
754
+ writeValue(val: number): void;
755
+ registerOnChange(fn: (v: number) => void): void;
756
+ registerOnTouched(fn: () => void): void;
757
+ setDisabledState(disabled: boolean): void;
758
+ protected _handleInput(event: Event): void;
759
+ protected _handleBlur(): void;
760
+ protected _decrement(): void;
761
+ protected _increment(): void;
762
+ private _applyValue;
763
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxNumberComponent, never>;
764
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxNumberComponent, "clx-number", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
872
765
  }
873
766
 
874
- type ClxSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
875
-
876
- type ClxShape = 'rounded' | 'pill' | 'circle';
877
-
878
- type ClxAvatarContentType = 'image' | 'text' | 'icon';
879
-
880
- declare class ClxAvatarComponent {
881
- private readonly _themeSvc;
882
- readonly src: _angular_core.InputSignal<string | null>;
883
- readonly initials: _angular_core.InputSignal<string | null>;
884
- readonly iconName: _angular_core.InputSignal<string | null>;
885
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
886
- readonly size: _angular_core.InputSignal<ClxSize>;
887
- readonly shape: _angular_core.InputSignal<ClxShape>;
888
- readonly alt: _angular_core.InputSignal<string>;
889
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
890
- protected readonly _contentType: _angular_core.Signal<ClxAvatarContentType>;
891
- protected readonly _initials: _angular_core.Signal<string>;
892
- protected readonly _iconSize: _angular_core.Signal<ClxSize>;
893
- protected readonly _shapeClass: _angular_core.Signal<"rounded-full" | "rounded-xl">;
894
- protected readonly _colorClass: _angular_core.Signal<string>;
895
- protected readonly _textClass: _angular_core.Signal<string>;
896
- protected readonly _hostClass: _angular_core.Signal<string>;
897
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxAvatarComponent, never>;
898
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxAvatarComponent, "clx-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "initials": { "alias": "initials"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
899
- }
900
-
901
- type ClxButtonGroupShape = 'flat' | 'circular';
902
-
903
- declare class ClxButtonGroupComponent {
904
- readonly label: _angular_core.InputSignal<string>;
905
- readonly shape: _angular_core.InputSignal<ClxButtonGroupShape>;
906
- readonly attached: _angular_core.InputSignal<boolean>;
907
- readonly orientation: _angular_core.InputSignal<"vertical" | "horizontal">;
908
- protected readonly _groupClass: _angular_core.Signal<string>;
909
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxButtonGroupComponent, never>;
910
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxButtonGroupComponent, "clx-button-group", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "attached": { "alias": "attached"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
911
- }
912
-
913
- type ClxListVariant = 'bordered' | 'flat' | 'flush';
914
- type ClxListSize = 'sm' | 'md' | 'lg';
915
- interface ClxListItem {
767
+ type ClxSelectSize = 'sm' | 'md' | 'lg';
768
+ interface ClxSelectOption {
769
+ value: string | number;
916
770
  label: string;
917
- sublabel?: string;
918
- icon?: string;
919
- meta?: string;
920
- metaColor?: string;
921
771
  disabled?: boolean;
772
+ /** Renders the option label using this font family, for font-picker selects */
773
+ previewFontFamily?: string;
922
774
  }
923
775
 
924
- declare class ClxListComponent {
776
+ declare class ClxSelectComponent implements ControlValueAccessor {
777
+ readonly label: _angular_core.InputSignal<string>;
778
+ readonly placeholder: _angular_core.InputSignal<string>;
779
+ readonly options: _angular_core.InputSignal<ClxSelectOption[]>;
780
+ readonly multiple: _angular_core.InputSignal<boolean>;
781
+ readonly searchable: _angular_core.InputSignal<boolean>;
782
+ readonly searchPlaceholder: _angular_core.InputSignal<string>;
783
+ readonly activeColor: _angular_core.InputSignal<ClxColorInput | undefined>;
784
+ readonly size: _angular_core.InputSignal<ClxSelectSize | undefined>;
785
+ protected readonly _size: Signal<ClxSelectSize>;
786
+ readonly hint: _angular_core.InputSignal<string>;
787
+ readonly errorMessage: _angular_core.InputSignal<string>;
788
+ readonly disabled: _angular_core.InputSignal<boolean>;
789
+ readonly async: _angular_core.InputSignal<boolean>;
790
+ readonly loadOptions: _angular_core.InputSignal<((query: string) => Observable<ClxSelectOption[]>) | null>;
791
+ readonly debounceMs: _angular_core.InputSignal<number>;
792
+ readonly minChars: _angular_core.InputSignal<number>;
793
+ private static _seq;
794
+ protected readonly _labelId: string;
795
+ protected readonly _isOpen: _angular_core.WritableSignal<boolean>;
796
+ protected readonly _overlayWidthPx: _angular_core.WritableSignal<number>;
797
+ protected readonly _searchControl: FormControl<string | null>;
798
+ protected readonly _searchQuery: Signal<string>;
799
+ protected readonly _asyncOptions: _angular_core.WritableSignal<ClxSelectOption[]>;
800
+ protected readonly _asyncLoading: _angular_core.WritableSignal<boolean>;
801
+ protected readonly _asyncQuery: _angular_core.WritableSignal<string>;
802
+ private readonly _wasTouched;
803
+ private readonly _selectedVals;
804
+ private readonly _cvaDisabled;
925
805
  private readonly _themeSvc;
926
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
927
- readonly resolvedColor: _angular_core.Signal<ClxColorInput>;
928
- readonly variant: _angular_core.InputSignal<ClxListVariant>;
929
- readonly size: _angular_core.InputSignal<ClxListSize>;
930
- readonly numbered: _angular_core.InputSignal<boolean>;
931
- _itemCounter: number;
932
- readonly sizeTokens: _angular_core.Signal<{
933
- item: string;
934
- iconSize: codexly_ui.ClxSize;
806
+ private readonly _ngControl;
807
+ protected readonly _activeColor: Signal<ClxColorInput>;
808
+ private readonly _el;
809
+ private readonly _sso;
810
+ private readonly _isBrowser;
811
+ private readonly _loadedFonts;
812
+ readonly _scrollStrategy: _angular_cdk_overlay.RepositionScrollStrategy;
813
+ constructor();
814
+ private _onChange;
815
+ private _onTouched;
816
+ readonly _positions: ConnectedPosition[];
817
+ protected readonly _disabled: Signal<boolean>;
818
+ protected readonly _sizeConfig: Signal<{
819
+ minH: string;
820
+ text: string;
935
821
  label: string;
936
- sublabel: string;
937
- meta: string;
938
- number: string;
822
+ hint: string;
823
+ px: string;
824
+ py: string;
825
+ gap: string;
826
+ tagSize: "sm" | "md";
827
+ btnSize: "xs" | "sm";
939
828
  }>;
940
- readonly dividerClass: _angular_core.Signal<string>;
941
- protected readonly _hostClass: _angular_core.Signal<string>;
942
- registerItem(): number;
943
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxListComponent, never>;
944
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxListComponent, "clx-list", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "numbered": { "alias": "numbered"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
829
+ protected readonly _hasValue: Signal<boolean>;
830
+ protected readonly _isInvalid: Signal<boolean>;
831
+ protected readonly _selectedOptions: Signal<ClxSelectOption[]>;
832
+ protected readonly _filteredOptions: Signal<ClxSelectOption[]>;
833
+ protected readonly _showAsyncPlaceholder: Signal<boolean>;
834
+ protected readonly _displayValue: Signal<string>;
835
+ protected readonly _displayFontFamily: Signal<string | null>;
836
+ protected readonly _overlayWidth: Signal<number>;
837
+ protected readonly _labelClass: Signal<string>;
838
+ protected readonly _hintClass: Signal<string>;
839
+ protected readonly _triggerClass: Signal<string>;
840
+ protected readonly _singleDisplayClass: Signal<string>;
841
+ protected readonly _tagContainerClass: Signal<string>;
842
+ protected readonly _placeholderClass: Signal<string>;
843
+ protected readonly _chevronBtnClass: Signal<"transition-transform duration-200 rotate-180" | "transition-transform duration-200">;
844
+ protected readonly _panelClass: Signal<string>;
845
+ protected _isSelected(value: string | number): boolean;
846
+ protected _optionClass(opt: ClxSelectOption): string;
847
+ protected _togglePanel(): void;
848
+ private _openPanel;
849
+ private _loadPreviewFont;
850
+ protected _closePanel(): void;
851
+ protected _selectOption(opt: ClxSelectOption): void;
852
+ protected _deselect(value: string | number): void;
853
+ protected _clearAll(): void;
854
+ protected _onTriggerKeydown(event: KeyboardEvent): void;
855
+ protected _onOverlayKeydown(event: KeyboardEvent): void;
856
+ onEscape(): void;
857
+ writeValue(val: string | number | (string | number)[] | null): void;
858
+ registerOnChange(fn: (v: string | number | (string | number)[] | null) => void): void;
859
+ registerOnTouched(fn: () => void): void;
860
+ setDisabledState(disabled: boolean): void;
861
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxSelectComponent, never>;
862
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxSelectComponent, "clx-select", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "activeColor": { "alias": "activeColor"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "async": { "alias": "async"; "required": false; "isSignal": true; }; "loadOptions": { "alias": "loadOptions"; "required": false; "isSignal": true; }; "debounceMs": { "alias": "debounceMs"; "required": false; "isSignal": true; }; "minChars": { "alias": "minChars"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
945
863
  }
946
864
 
947
- interface ClxListContext {
948
- color: Signal<ClxColorInput | undefined>;
949
- resolvedColor: Signal<ClxColorInput>;
950
- variant: Signal<ClxListVariant>;
951
- size: Signal<ClxListSize>;
952
- numbered: Signal<boolean>;
953
- sizeTokens: Signal<(typeof LIST_SIZE_MAP)[ClxListSize]>;
954
- dividerClass: Signal<string>;
955
- registerItem: () => number;
956
- }
957
- declare const LIST_SIZE_MAP: Record<ClxListSize, {
958
- item: string;
959
- iconSize: ClxSize;
960
- label: string;
961
- sublabel: string;
962
- meta: string;
963
- number: string;
964
- }>;
865
+ type ClxCheckboxVariant = 'solid' | 'outline';
965
866
 
966
- declare class ClxListItemComponent {
967
- protected readonly _ctx: ClxListContext;
867
+ declare class ClxCheckboxComponent implements ControlValueAccessor {
968
868
  private readonly _themeSvc;
869
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
870
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
871
+ readonly variant: _angular_core.InputSignal<ClxCheckboxVariant>;
872
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | undefined>;
873
+ protected readonly _size: _angular_core.Signal<"sm" | "md" | "lg">;
969
874
  readonly label: _angular_core.InputSignal<string>;
970
- readonly sublabel: _angular_core.InputSignal<string>;
971
- readonly icon: _angular_core.InputSignal<string>;
972
- readonly meta: _angular_core.InputSignal<string>;
973
- readonly metaColor: _angular_core.InputSignal<ClxColorInput | undefined>;
875
+ /** Initial value when used without FormControl */
876
+ readonly value: _angular_core.InputSignal<boolean>;
877
+ /** Disabled state when used without FormControl */
974
878
  readonly disabled: _angular_core.InputSignal<boolean>;
975
- private readonly _metaColor;
976
- protected readonly _index: number;
977
- protected readonly _iconClass: _angular_core.Signal<string>;
978
- protected readonly _hostClass: _angular_core.Signal<string>;
979
- protected readonly _numberClass: _angular_core.Signal<string>;
879
+ readonly _checked: _angular_core.WritableSignal<boolean>;
880
+ private readonly _cvaDisabled;
881
+ private _cvaConnected;
882
+ protected readonly _disabled: _angular_core.Signal<boolean>;
883
+ private readonly _valueEffect;
884
+ private _onChange;
885
+ private _onTouched;
886
+ protected readonly _sizeConfig: _angular_core.Signal<{
887
+ readonly box: "w-4 h-4";
888
+ readonly icon: "xs";
889
+ readonly label: "text-xs";
890
+ } | {
891
+ readonly box: "w-5 h-5";
892
+ readonly icon: "xs";
893
+ readonly label: "text-sm";
894
+ } | {
895
+ readonly box: "w-6 h-6";
896
+ readonly icon: "sm";
897
+ readonly label: "text-base";
898
+ }>;
899
+ protected readonly _boxClass: _angular_core.Signal<string>;
980
900
  protected readonly _labelClass: _angular_core.Signal<string>;
981
- protected readonly _metaClass: _angular_core.Signal<string>;
982
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxListItemComponent, never>;
983
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxListItemComponent, "clx-list-item", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; "metaColor": { "alias": "metaColor"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["[clxLead]", "[clxContent]", "[clxTrail]", "*"], true, never>;
901
+ writeValue(val: boolean): void;
902
+ registerOnChange(fn: (v: boolean) => void): void;
903
+ registerOnTouched(fn: () => void): void;
904
+ setDisabledState(disabled: boolean): void;
905
+ protected _toggle(): void;
906
+ protected _onSpace(event: Event): void;
907
+ protected _handleBlur(): void;
908
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCheckboxComponent, never>;
909
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxCheckboxComponent, "clx-checkbox", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
984
910
  }
985
911
 
986
- declare class ClxRatingComponent {
987
- private readonly _themeSvc;
988
- readonly value: _angular_core.InputSignal<number>;
989
- readonly max: _angular_core.InputSignal<number>;
990
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
991
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
992
- protected readonly _hexColor: _angular_core.Signal<string>;
993
- protected readonly _stars: _angular_core.Signal<{
994
- idx: number;
995
- icon: string;
996
- fill: boolean;
997
- }[]>;
998
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxRatingComponent, never>;
999
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxRatingComponent, "clx-rating", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1000
- }
912
+ type ClxRadioVariant = 'solid' | 'outline';
1001
913
 
1002
- declare class ClxBadgeComponent {
914
+ declare class ClxRadioComponent {
915
+ /** Value this radio represents — compared against the group's selected value */
916
+ readonly value: _angular_core.InputSignal<unknown>;
917
+ readonly label: _angular_core.InputSignal<string>;
918
+ /** Per-radio overrides — falls back to the group's value if null */
919
+ readonly color: _angular_core.InputSignal<ClxColorInput | null>;
920
+ readonly variant: _angular_core.InputSignal<ClxRadioVariant | null>;
921
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | null>;
922
+ private readonly _group;
1003
923
  private readonly _themeSvc;
1004
- readonly variant: _angular_core.InputSignal<ClxBadgeVariant>;
1005
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
1006
- readonly size: _angular_core.InputSignal<"sm" | "md" | "xs" | undefined>;
1007
- readonly shape: _angular_core.InputSignal<ClxShape | undefined>;
1008
- readonly positioned: _angular_core.InputSignal<boolean>;
1009
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
1010
- protected readonly _size: _angular_core.Signal<"sm" | "md" | "xs">;
1011
- protected readonly _shape: _angular_core.Signal<ClxShape>;
1012
- protected readonly _hostClass: _angular_core.Signal<string>;
1013
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxBadgeComponent, never>;
1014
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxBadgeComponent, "span[clx-badge]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "positioned": { "alias": "positioned"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1015
- }
1016
-
1017
- declare class ClxButtonComponent {
1018
- private readonly _themeSvc;
1019
- readonly variant: _angular_core.InputSignal<ClxButtonVariant>;
1020
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
1021
- readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | "xxs" | "xs" | undefined>;
1022
- readonly shape: _angular_core.InputSignal<ClxShape | undefined>;
1023
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
1024
- protected readonly _size: _angular_core.Signal<"sm" | "md" | "lg" | "xxs" | "xs">;
1025
- protected readonly _shape: _angular_core.Signal<ClxShape>;
1026
- readonly loading: _angular_core.InputSignal<boolean>;
1027
- readonly disabled: _angular_core.InputSignal<boolean>;
1028
- readonly block: _angular_core.InputSignal<boolean>;
1029
- readonly icon: _angular_core.InputSignal<string | undefined>;
1030
- readonly iconPosition: _angular_core.InputSignal<"left" | "right">;
1031
- readonly iconOnly: _angular_core.InputSignal<boolean>;
1032
- readonly badge: _angular_core.InputSignal<string | number | undefined>;
1033
- readonly badgeColor: _angular_core.InputSignal<ClxColorInput>;
1034
- protected readonly _ripples: _angular_core.WritableSignal<ClxRippleItem[]>;
1035
- private _nextId;
1036
- private readonly _el;
1037
- protected readonly _inactive: _angular_core.Signal<boolean>;
1038
- protected readonly _badgeClass: _angular_core.Signal<string>;
1039
- protected readonly _colorClass: _angular_core.Signal<string>;
1040
- protected readonly _rippleColor: _angular_core.Signal<string>;
1041
- protected readonly _spinnerColor: _angular_core.Signal<"white" | "inherit">;
1042
- protected readonly _iconSize: _angular_core.Signal<ClxSize>;
1043
- protected readonly _hostClass: _angular_core.Signal<string>;
1044
- protected _onRipple(event: Event): void;
1045
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxButtonComponent, never>;
1046
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxButtonComponent, "button[clx-button], a[clx-button]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "block": { "alias": "block"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "badgeColor": { "alias": "badgeColor"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1047
- }
1048
-
1049
- declare class ClxIconComponent {
1050
- readonly name: _angular_core.InputSignal<string>;
1051
- readonly size: _angular_core.InputSignal<ClxSize>;
1052
- readonly color: _angular_core.InputSignal<ClxColorInput | null>;
1053
- readonly fill: _angular_core.InputSignal<boolean>;
1054
- protected readonly _colorClass: _angular_core.Signal<string>;
1055
- protected readonly _fontSize: _angular_core.Signal<string>;
1056
- protected readonly _fontVariation: _angular_core.Signal<string>;
1057
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxIconComponent, never>;
1058
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxIconComponent, "span[clx-icon]", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1059
- }
1060
-
1061
- type ClxSkeletonVariant = 'text' | 'circular' | 'rectangular';
1062
-
1063
- declare class ClxSkeletonComponent {
1064
- readonly variant: _angular_core.InputSignal<ClxSkeletonVariant>;
1065
- readonly size: _angular_core.InputSignal<ClxSize>;
1066
- readonly width: _angular_core.InputSignal<string | null>;
1067
- readonly height: _angular_core.InputSignal<string | null>;
1068
- protected readonly _hostClass: _angular_core.Signal<string>;
1069
- protected readonly _hostWidth: _angular_core.Signal<string | null>;
1070
- protected readonly _hostHeight: _angular_core.Signal<string | null>;
1071
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxSkeletonComponent, never>;
1072
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxSkeletonComponent, "clx-skeleton", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1073
- }
1074
-
1075
- type ClxSpinnerVariant = 'spinner' | 'dots' | 'pulse';
1076
- type ClxSpinnerColor = ClxColorInput | 'inherit';
1077
-
1078
- declare class ClxSpinnerComponent {
1079
- private readonly _themeSvc;
1080
- readonly size: _angular_core.InputSignal<ClxSize>;
1081
- readonly color: _angular_core.InputSignal<ClxSpinnerColor | undefined>;
1082
- readonly variant: _angular_core.InputSignal<ClxSpinnerVariant>;
1083
- protected readonly _color: _angular_core.Signal<ClxSpinnerColor>;
1084
- protected readonly _spinnerClass: _angular_core.Signal<string>;
1085
- protected readonly _dotClass: _angular_core.Signal<string>;
1086
- protected readonly _pulseWrapperClass: _angular_core.Signal<string>;
1087
- protected readonly _pulseColorClass: _angular_core.Signal<string>;
1088
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxSpinnerComponent, never>;
1089
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxSpinnerComponent, "clx-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1090
- }
1091
-
1092
- type ClxTagVariant = 'solid' | 'soft' | 'outline';
1093
- type ClxTagSize = 'sm' | 'md';
1094
- type ClxTagShape = 'rounded' | 'pill';
1095
-
1096
- declare class ClxTagComponent {
1097
- private readonly _themeSvc;
1098
- readonly variant: _angular_core.InputSignal<ClxTagVariant>;
1099
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
1100
- readonly size: _angular_core.InputSignal<ClxTagSize | undefined>;
1101
- protected readonly _tagSize: _angular_core.Signal<ClxTagSize>;
1102
- readonly shape: _angular_core.InputSignal<ClxTagShape>;
1103
- readonly onRemove: _angular_core.OutputEmitterRef<void>;
1104
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
924
+ protected readonly _checked: _angular_core.Signal<boolean>;
925
+ protected readonly _isDisabled: _angular_core.Signal<boolean>;
926
+ private readonly _color;
927
+ private readonly _variant;
928
+ private readonly _size;
1105
929
  protected readonly _sizeConfig: _angular_core.Signal<{
1106
- pad: string;
1107
- text: string;
1108
- gap: string;
1109
- btnSize: Extract<codexly_ui.ClxSize, "xxs">;
930
+ readonly ring: "w-4 h-4";
931
+ readonly dot: "w-1.5 h-1.5";
932
+ readonly label: "text-xs";
933
+ } | {
934
+ readonly ring: "w-5 h-5";
935
+ readonly dot: "w-2 h-2";
936
+ readonly label: "text-sm";
937
+ } | {
938
+ readonly ring: "w-6 h-6";
939
+ readonly dot: "w-2.5 h-2.5";
940
+ readonly label: "text-base";
1110
941
  }>;
1111
- protected readonly _colorClass: _angular_core.Signal<string>;
1112
- protected readonly _hostClass: _angular_core.Signal<string>;
1113
- protected readonly _closeBtnColor: _angular_core.Signal<ClxColorInput>;
1114
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTagComponent, never>;
1115
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTagComponent, "span[clx-tag]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; }, { "onRemove": "onRemove"; }, never, ["*"], true, never>;
1116
- }
1117
-
1118
- type ClxTooltipPosition = 'top' | 'bottom' | 'left' | 'right';
1119
- type ClxTooltipSize = 'sm' | 'md';
1120
-
1121
- declare class ClxTooltipComponent {
1122
- private readonly _themeSvc;
1123
- readonly text: _angular_core.InputSignal<string>;
1124
- readonly position: _angular_core.InputSignal<ClxTooltipPosition>;
1125
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
1126
- readonly size: _angular_core.InputSignal<ClxTooltipSize>;
1127
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
1128
- protected readonly _hostClass: _angular_core.Signal<string>;
1129
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTooltipComponent, never>;
1130
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTooltipComponent, "clx-tooltip", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
942
+ protected readonly _ringClass: _angular_core.Signal<string>;
943
+ protected readonly _dotClass: _angular_core.Signal<string>;
944
+ protected readonly _labelClass: _angular_core.Signal<string>;
945
+ protected _select(): void;
946
+ protected _onSpace(event: Event): void;
947
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxRadioComponent, never>;
948
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxRadioComponent, "clx-radio", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1131
949
  }
1132
950
 
1133
- type ClxTimelineLineStyle = 'dotted' | 'solid' | 'none';
1134
- type ClxTimelineMode = 'left' | 'alternate';
1135
- type ClxTimelineSize = 'sm' | 'md' | 'lg';
1136
-
1137
- declare class ClxTimelineComponent {
951
+ declare const CLX_RADIO_GROUP: InjectionToken<ClxRadioGroupComponent>;
952
+ declare class ClxRadioGroupComponent implements ControlValueAccessor {
1138
953
  private readonly _themeSvc;
1139
954
  readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
1140
955
  readonly resolvedColor: _angular_core.Signal<ClxColorInput>;
1141
- readonly lineStyle: _angular_core.InputSignal<ClxTimelineLineStyle>;
1142
- readonly mode: _angular_core.InputSignal<ClxTimelineMode>;
1143
- readonly size: _angular_core.InputSignal<ClxTimelineSize>;
1144
- readonly sizeTokens: _angular_core.Signal<{
1145
- dot: string;
1146
- iconSize: codexly_ui.ClxSize;
1147
- item: string;
1148
- gap: string;
1149
- title: string;
1150
- desc: string;
1151
- time: string;
1152
- contentPb: string;
1153
- }>;
1154
- protected readonly _hostClass: _angular_core.Signal<string>;
1155
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTimelineComponent, never>;
1156
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTimelineComponent, "clx-timeline", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "lineStyle": { "alias": "lineStyle"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1157
- }
1158
-
1159
- interface ClxTimelineContext {
1160
- color: Signal<ClxColorInput | undefined>;
1161
- resolvedColor: Signal<ClxColorInput>;
1162
- lineStyle: Signal<ClxTimelineLineStyle>;
1163
- mode: Signal<ClxTimelineMode>;
1164
- size: Signal<ClxTimelineSize>;
1165
- sizeTokens: Signal<(typeof TIMELINE_SIZE_MAP)[ClxTimelineSize]>;
1166
- }
1167
- declare const TIMELINE_SIZE_MAP: Record<ClxTimelineSize, {
1168
- dot: string;
1169
- iconSize: ClxSize;
1170
- item: string;
1171
- gap: string;
1172
- title: string;
1173
- desc: string;
1174
- time: string;
1175
- contentPb: string;
1176
- }>;
1177
-
1178
- declare class ClxTimelineItemComponent {
1179
- protected readonly _ctx: ClxTimelineContext;
1180
- readonly icon: _angular_core.InputSignal<string>;
1181
- readonly color: _angular_core.InputSignal<ClxColorInput | null>;
1182
- readonly title: _angular_core.InputSignal<string>;
1183
- readonly description: _angular_core.InputSignal<string>;
1184
- readonly time: _angular_core.InputSignal<string>;
1185
- readonly last: _angular_core.InputSignal<boolean>;
1186
- protected readonly _resolvedColor: _angular_core.Signal<codexly_ui.ClxColorTokens>;
1187
- protected readonly _iconClass: _angular_core.Signal<string>;
1188
- protected readonly _hostClass: _angular_core.Signal<string>;
1189
- protected readonly _dotClass: _angular_core.Signal<string>;
1190
- protected readonly _lineClass: _angular_core.Signal<string>;
1191
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTimelineItemComponent, never>;
1192
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTimelineItemComponent, "clx-timeline-item", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "time": { "alias": "time"; "required": false; "isSignal": true; }; "last": { "alias": "last"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1193
- }
1194
-
1195
- type ClxChartType = Extract<ChartType, 'line' | 'bar' | 'pie' | 'doughnut' | 'radar' | 'polarArea'>;
1196
- interface ClxChartOptions {
1197
- type: ClxChartType;
1198
- data: ChartData;
1199
- options?: ChartOptions;
1200
- height?: number | string;
1201
- loading?: boolean;
1202
- ariaLabel?: string;
1203
- }
1204
-
1205
- declare class ClxChartComponent implements AfterViewInit, OnDestroy {
1206
- canvasRef: ElementRef<HTMLCanvasElement>;
1207
- type: _angular_core.InputSignal<ClxChartType>;
1208
- data: _angular_core.InputSignal<ChartData<keyof chart_js.ChartTypeRegistry, (number | chart_js.Point | [number, number] | chart_js.BubbleDataPoint | null)[], unknown>>;
1209
- options: _angular_core.InputSignal<node_modules_chart_js_dist_types_utils._DeepPartialObject<chart_js.CoreChartOptions<keyof chart_js.ChartTypeRegistry> & chart_js.ElementChartOptions<keyof chart_js.ChartTypeRegistry> & chart_js.PluginChartOptions<keyof chart_js.ChartTypeRegistry> & chart_js.DatasetChartOptions<keyof chart_js.ChartTypeRegistry> & chart_js.ScaleChartOptions<keyof chart_js.ChartTypeRegistry>>>;
1210
- height: _angular_core.InputSignal<string | number>;
1211
- ariaLabel: _angular_core.InputSignal<string | undefined>;
1212
- loading: _angular_core.InputSignal<boolean>;
1213
- private _chart?;
1214
- private _injector;
1215
- _hostHeight: _angular_core.Signal<string | number>;
1216
- ngAfterViewInit(): void;
1217
- private _createChart;
1218
- ngOnDestroy(): void;
1219
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxChartComponent, never>;
1220
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxChartComponent, "clx-chart", never, { "type": { "alias": "type"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
956
+ readonly variant: _angular_core.InputSignal<ClxRadioVariant>;
957
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
958
+ readonly direction: _angular_core.InputSignal<"horizontal" | "vertical">;
959
+ readonly disabled: _angular_core.InputSignal<boolean>;
960
+ /** Current selected value — readable by child clx-radio via injection */
961
+ readonly _value: _angular_core.WritableSignal<unknown>;
962
+ private readonly _cvaDisabled;
963
+ /** Merged disabled state (input + CVA) — readable by child clx-radio */
964
+ readonly isDisabled: _angular_core.Signal<boolean>;
965
+ private _onChange;
966
+ private _onTouched;
967
+ select(value: unknown): void;
968
+ writeValue(val: unknown): void;
969
+ registerOnChange(fn: (v: unknown) => void): void;
970
+ registerOnTouched(fn: () => void): void;
971
+ setDisabledState(disabled: boolean): void;
972
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxRadioGroupComponent, never>;
973
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxRadioGroupComponent, "clx-radio-group", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1221
974
  }
1222
975
 
1223
- type ClxCheckboxVariant = 'solid' | 'outline';
1224
-
1225
- declare class ClxCheckboxComponent implements ControlValueAccessor {
976
+ type ClxSwitchSize = 'xs' | 'sm' | 'md' | 'lg';
977
+ declare class ClxSwitchComponent implements ControlValueAccessor {
1226
978
  private readonly _themeSvc;
1227
979
  readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
1228
980
  protected readonly _color: _angular_core.Signal<ClxColorInput>;
1229
- readonly variant: _angular_core.InputSignal<ClxCheckboxVariant>;
1230
- readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | undefined>;
1231
- protected readonly _size: _angular_core.Signal<"sm" | "md" | "lg">;
981
+ readonly size: _angular_core.InputSignal<ClxSwitchSize | undefined>;
982
+ protected readonly _size: _angular_core.Signal<ClxSwitchSize>;
1232
983
  readonly label: _angular_core.InputSignal<string>;
1233
- /** Initial value when used without FormControl */
1234
984
  readonly value: _angular_core.InputSignal<boolean>;
1235
- /** Disabled state when used without FormControl */
1236
985
  readonly disabled: _angular_core.InputSignal<boolean>;
986
+ readonly changed: _angular_core.OutputEmitterRef<boolean>;
1237
987
  readonly _checked: _angular_core.WritableSignal<boolean>;
1238
988
  private readonly _cvaDisabled;
1239
989
  private _cvaConnected;
@@ -1242,29 +992,157 @@ declare class ClxCheckboxComponent implements ControlValueAccessor {
1242
992
  private _onChange;
1243
993
  private _onTouched;
1244
994
  protected readonly _sizeConfig: _angular_core.Signal<{
1245
- readonly box: "w-4 h-4";
1246
- readonly icon: "xs";
995
+ readonly track: "w-7 h-4";
996
+ readonly thumb: "w-3 h-3";
997
+ readonly translate: "translate-x-3";
1247
998
  readonly label: "text-xs";
1248
999
  } | {
1249
- readonly box: "w-5 h-5";
1250
- readonly icon: "xs";
1000
+ readonly track: "w-9 h-5";
1001
+ readonly thumb: "w-4 h-4";
1002
+ readonly translate: "translate-x-4";
1003
+ readonly label: "text-xs";
1004
+ } | {
1005
+ readonly track: "w-12 h-6";
1006
+ readonly thumb: "w-5 h-5";
1007
+ readonly translate: "translate-x-6";
1251
1008
  readonly label: "text-sm";
1252
1009
  } | {
1253
- readonly box: "w-6 h-6";
1254
- readonly icon: "sm";
1010
+ readonly track: "w-14 h-7";
1011
+ readonly thumb: "w-6 h-6";
1012
+ readonly translate: "translate-x-7";
1255
1013
  readonly label: "text-base";
1256
1014
  }>;
1257
- protected readonly _boxClass: _angular_core.Signal<string>;
1015
+ protected readonly _trackClass: _angular_core.Signal<string>;
1016
+ protected readonly _thumbClass: _angular_core.Signal<string>;
1258
1017
  protected readonly _labelClass: _angular_core.Signal<string>;
1259
1018
  writeValue(val: boolean): void;
1260
1019
  registerOnChange(fn: (v: boolean) => void): void;
1261
1020
  registerOnTouched(fn: () => void): void;
1262
1021
  setDisabledState(disabled: boolean): void;
1263
- protected _toggle(): void;
1264
- protected _onSpace(event: Event): void;
1022
+ protected _handleChange(event: Event): void;
1265
1023
  protected _handleBlur(): void;
1266
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCheckboxComponent, never>;
1267
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxCheckboxComponent, "clx-checkbox", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1024
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxSwitchComponent, never>;
1025
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxSwitchComponent, "label[clx-switch]", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
1026
+ }
1027
+
1028
+ type ClxSliderSize = 'sm' | 'md' | 'lg';
1029
+
1030
+ declare class ClxSliderComponent implements ControlValueAccessor {
1031
+ private readonly _themeSvc;
1032
+ readonly label: _angular_core.InputSignal<string>;
1033
+ readonly hint: _angular_core.InputSignal<string>;
1034
+ readonly errorMessage: _angular_core.InputSignal<string>;
1035
+ readonly activeColor: _angular_core.InputSignal<ClxColorInput | undefined>;
1036
+ protected readonly _activeColor: _angular_core.Signal<ClxColorInput>;
1037
+ readonly size: _angular_core.InputSignal<ClxSliderSize | undefined>;
1038
+ protected readonly _size: _angular_core.Signal<ClxSliderSize>;
1039
+ readonly min: _angular_core.InputSignal<number>;
1040
+ readonly max: _angular_core.InputSignal<number>;
1041
+ readonly step: _angular_core.InputSignal<number>;
1042
+ readonly showTooltip: _angular_core.InputSignal<boolean>;
1043
+ readonly showMinMax: _angular_core.InputSignal<boolean>;
1044
+ readonly marks: _angular_core.InputSignal<boolean>;
1045
+ readonly disabled: _angular_core.InputSignal<boolean>;
1046
+ private readonly _ngControl;
1047
+ private readonly _rangeInput;
1048
+ constructor();
1049
+ protected readonly _currentValue: _angular_core.WritableSignal<number>;
1050
+ protected readonly _cvaDisabled: _angular_core.WritableSignal<boolean>;
1051
+ protected readonly _isFocused: _angular_core.WritableSignal<boolean>;
1052
+ protected readonly _isActive: _angular_core.WritableSignal<boolean>;
1053
+ protected readonly _wasTouched: _angular_core.WritableSignal<boolean>;
1054
+ protected readonly _disabled: _angular_core.Signal<boolean>;
1055
+ protected readonly _sizeConfig: _angular_core.Signal<{
1056
+ trackPx: string;
1057
+ thumbPx: string;
1058
+ thumbRing: string;
1059
+ label: string;
1060
+ hint: string;
1061
+ markW: string;
1062
+ markH: string;
1063
+ wrapperH: string;
1064
+ tooltipBottom: string;
1065
+ }>;
1066
+ protected readonly _colorTokens: _angular_core.Signal<codexly_ui.ClxColorTokens>;
1067
+ protected readonly _pct: _angular_core.Signal<number>;
1068
+ protected readonly _isInvalid: _angular_core.Signal<boolean>;
1069
+ protected readonly _trackClass: _angular_core.Signal<string>;
1070
+ protected readonly _thumbClass: _angular_core.Signal<string>;
1071
+ protected readonly _tickPositions: _angular_core.Signal<number[]>;
1072
+ protected _tooltipArrowColor(): string;
1073
+ protected _onInput(event: Event): void;
1074
+ protected _onBlur(): void;
1075
+ private _onChange;
1076
+ protected _onTouched: () => void;
1077
+ writeValue(val: number | null): void;
1078
+ registerOnChange(fn: (v: number) => void): void;
1079
+ registerOnTouched(fn: () => void): void;
1080
+ setDisabledState(disabled: boolean): void;
1081
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxSliderComponent, never>;
1082
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxSliderComponent, "clx-slider", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "activeColor": { "alias": "activeColor"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "showTooltip": { "alias": "showTooltip"; "required": false; "isSignal": true; }; "showMinMax": { "alias": "showMinMax"; "required": false; "isSignal": true; }; "marks": { "alias": "marks"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1083
+ }
1084
+
1085
+ type ClxUploadSize = 'sm' | 'md' | 'lg';
1086
+ type ClxUploadError = 'fileType' | 'fileSize';
1087
+
1088
+ declare class ClxUploadComponent implements ControlValueAccessor {
1089
+ private readonly _themeSvc;
1090
+ readonly multiple: _angular_core.InputSignal<boolean>;
1091
+ readonly accept: _angular_core.InputSignal<string>;
1092
+ /** Max file size in bytes. 0 = no limit. */
1093
+ readonly maxFileSize: _angular_core.InputSignal<number>;
1094
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
1095
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
1096
+ readonly size: _angular_core.InputSignal<ClxUploadSize | undefined>;
1097
+ protected readonly _size: _angular_core.Signal<ClxUploadSize>;
1098
+ readonly disabled: _angular_core.InputSignal<boolean>;
1099
+ readonly onUploadError: _angular_core.OutputEmitterRef<{
1100
+ file: File;
1101
+ error: ClxUploadError;
1102
+ }>;
1103
+ readonly onUploadSuccess: _angular_core.OutputEmitterRef<File[]>;
1104
+ readonly _files: _angular_core.WritableSignal<File[]>;
1105
+ readonly _isDragging: _angular_core.WritableSignal<boolean>;
1106
+ readonly _errorKey: _angular_core.WritableSignal<ClxUploadError | null>;
1107
+ private readonly _ngControl;
1108
+ private readonly _cvaDisabled;
1109
+ private _cvaConnected;
1110
+ private _onChange;
1111
+ private _onTouched;
1112
+ protected readonly _fileInput: _angular_core.Signal<ElementRef<HTMLInputElement>>;
1113
+ constructor();
1114
+ protected readonly _disabled: _angular_core.Signal<boolean>;
1115
+ protected readonly _sizeConfig: _angular_core.Signal<{
1116
+ zone: string;
1117
+ icon: "sm" | "md" | "lg" | "xl";
1118
+ title: string;
1119
+ hint: string;
1120
+ }>;
1121
+ protected readonly _isError: _angular_core.Signal<boolean>;
1122
+ protected readonly _fileItemClass: _angular_core.Signal<string>;
1123
+ protected readonly _fileIconClass: _angular_core.Signal<string>;
1124
+ protected readonly _zoneClass: _angular_core.Signal<string>;
1125
+ protected readonly _iconClass: _angular_core.Signal<string>;
1126
+ protected readonly _linkClass: _angular_core.Signal<string>;
1127
+ protected readonly _buttonText: _angular_core.Signal<"Seleccionar archivos" | "Seleccionar archivo">;
1128
+ protected readonly _hintText: _angular_core.Signal<string>;
1129
+ protected readonly _errorMessage: _angular_core.Signal<string | null>;
1130
+ private readonly _multipleEffect;
1131
+ writeValue(value: File | File[] | null): void;
1132
+ registerOnChange(fn: (v: File | File[] | null) => void): void;
1133
+ registerOnTouched(fn: () => void): void;
1134
+ setDisabledState(disabled: boolean): void;
1135
+ protected _onInputChange(event: Event): void;
1136
+ protected _onDragOver(event: DragEvent): void;
1137
+ protected _onDragLeave(): void;
1138
+ protected _onDrop(event: DragEvent): void;
1139
+ protected _removeFile(file: File): void;
1140
+ private _addFiles;
1141
+ private _isAccepted;
1142
+ private _emit;
1143
+ protected _formatSize(bytes: number): string;
1144
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxUploadComponent, never>;
1145
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxUploadComponent, "clx-upload", never, { "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "onUploadError": "onUploadError"; "onUploadSuccess": "onUploadSuccess"; }, never, ["[clx-label]"], true, never>;
1268
1146
  }
1269
1147
 
1270
1148
  type ClxColorPickerSize = 'sm' | 'md' | 'lg';
@@ -1621,21 +1499,6 @@ declare class ClxDateRangePickerComponent implements ControlValueAccessor {
1621
1499
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxDateRangePickerComponent, "clx-date-range-picker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "statusMessage": { "alias": "statusMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1622
1500
  }
1623
1501
 
1624
- declare class ClxEditorLinkModalComponent {
1625
- private readonly _modalRef;
1626
- private readonly _themeSvc;
1627
- protected readonly _primaryColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
1628
- protected readonly _form: FormGroup<{
1629
- text: FormControl<string>;
1630
- url: FormControl<string>;
1631
- }>;
1632
- protected readonly _urlInvalid: _angular_core.WritableSignal<boolean>;
1633
- protected _confirm(): void;
1634
- protected _cancel(): void;
1635
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxEditorLinkModalComponent, never>;
1636
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxEditorLinkModalComponent, "clx-editor-link-modal", never, {}, {}, never, never, true, never>;
1637
- }
1638
-
1639
1502
  type ClxEditorSize = 'sm' | 'md' | 'lg';
1640
1503
  interface ClxEditorToolbarGroup {
1641
1504
  /** Internal IDs of buttons to include in this group */
@@ -1658,7 +1521,7 @@ declare class ClxEditorComponent implements AfterViewInit, OnDestroy, ControlVal
1658
1521
  protected readonly _color: _angular_core.Signal<ClxColorInput>;
1659
1522
  readonly size: _angular_core.InputSignal<ClxEditorSize | undefined>;
1660
1523
  protected readonly _editorSize: _angular_core.Signal<ClxEditorSize>;
1661
- readonly status: _angular_core.InputSignal<"default" | "error" | "success">;
1524
+ readonly status: _angular_core.InputSignal<"error" | "default" | "success">;
1662
1525
  readonly statusMessage: _angular_core.InputSignal<string>;
1663
1526
  readonly hint: _angular_core.InputSignal<string>;
1664
1527
  readonly disabled: _angular_core.InputSignal<boolean>;
@@ -1729,724 +1592,734 @@ declare class ClxEditorComponent implements AfterViewInit, OnDestroy, ControlVal
1729
1592
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxEditorComponent, "clx-editor", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "statusMessage": { "alias": "statusMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1730
1593
  }
1731
1594
 
1732
- type ClxInputStatus = 'default' | 'error' | 'success';
1733
- type ClxInputSize = 'sm' | 'md' | 'lg';
1734
- type ClxInputType = 'text' | 'password' | 'email' | 'search' | 'tel' | 'url';
1735
-
1736
- declare class ClxInputComponent implements ControlValueAccessor {
1595
+ declare class ClxEditorLinkModalComponent {
1596
+ private readonly _modalRef;
1737
1597
  private readonly _themeSvc;
1738
- readonly label: _angular_core.InputSignal<string>;
1739
- readonly placeholder: _angular_core.InputSignal<string>;
1740
- readonly type: _angular_core.InputSignal<ClxInputType>;
1741
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
1742
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
1743
- readonly hint: _angular_core.InputSignal<string>;
1744
- readonly prefixIcon: _angular_core.InputSignal<string>;
1745
- readonly suffixIcon: _angular_core.InputSignal<string>;
1746
- readonly prefixText: _angular_core.InputSignal<string>;
1747
- readonly suffixText: _angular_core.InputSignal<string>;
1748
- readonly status: _angular_core.InputSignal<ClxInputStatus>;
1749
- readonly statusMessage: _angular_core.InputSignal<string>;
1750
- readonly size: _angular_core.InputSignal<ClxInputSize | undefined>;
1751
- protected readonly _size: _angular_core.Signal<ClxInputSize>;
1752
- /** Initial value for standalone use (without FormControl) */
1753
- readonly value: _angular_core.InputSignal<string>;
1754
- /** Disabled state for standalone use (without FormControl) */
1755
- readonly disabled: _angular_core.InputSignal<boolean>;
1756
- readonly autocomplete: _angular_core.InputSignal<string | null>;
1757
- protected readonly _inputId: string;
1758
- protected readonly _showPassword: _angular_core.WritableSignal<boolean>;
1759
- readonly _value: _angular_core.WritableSignal<string>;
1760
- private readonly _cvaDisabled;
1761
- private _cvaConnected;
1762
- protected readonly _disabled: _angular_core.Signal<boolean>;
1763
- private readonly _valueEffect;
1764
- private _onChange;
1765
- private _onTouched;
1766
- protected readonly _inputType: _angular_core.Signal<ClxInputType>;
1767
- protected readonly _autocomplete: _angular_core.Signal<string>;
1768
- protected readonly _sizeConfig: _angular_core.Signal<{
1769
- input: string;
1770
- label: string;
1771
- hint: string;
1772
- iconSize: "xs" | "sm" | "md";
1773
- iconLeft: string;
1774
- iconRight: string;
1775
- padLeft: string;
1776
- padRight: string;
1777
- padDefaultL: string;
1778
- padDefaultR: string;
1779
- }>;
1780
- protected readonly _statusCfg: _angular_core.Signal<{
1781
- border: string;
1782
- ring: string;
1783
- msgCls: string;
1784
- iconName: string;
1785
- iconColor: string;
1598
+ protected readonly _primaryColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
1599
+ protected readonly _form: FormGroup<{
1600
+ text: FormControl<string>;
1601
+ url: FormControl<string>;
1786
1602
  }>;
1787
- /** True whenever the wrapper must be a flex container (prefix icon/text or suffix text) */
1788
- private readonly _isFlexMode;
1789
- protected readonly _labelClass: _angular_core.Signal<string>;
1790
- protected readonly _hintClass: _angular_core.Signal<string>;
1791
- protected readonly _wrapperClass: _angular_core.Signal<string>;
1792
- protected readonly _inputClass: _angular_core.Signal<string>;
1793
- /** Colored prefix icon cell — matches the input accent color */
1794
- protected readonly _prefixIconCellCls: _angular_core.Signal<string>;
1795
- protected readonly _suffixIconWrapCls: _angular_core.Signal<string>;
1796
- protected readonly _statusMsgClass: _angular_core.Signal<string>;
1797
- writeValue(val: string): void;
1798
- registerOnChange(fn: (v: string) => void): void;
1799
- registerOnTouched(fn: () => void): void;
1800
- setDisabledState(disabled: boolean): void;
1801
- protected _handleInput(event: Event): void;
1802
- protected _handleBlur(): void;
1803
- protected _togglePassword(): void;
1804
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxInputComponent, never>;
1805
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxInputComponent, "clx-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; "isSignal": true; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; "isSignal": true; }; "prefixText": { "alias": "prefixText"; "required": false; "isSignal": true; }; "suffixText": { "alias": "suffixText"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "statusMessage": { "alias": "statusMessage"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1603
+ protected readonly _urlInvalid: _angular_core.WritableSignal<boolean>;
1604
+ protected _confirm(): void;
1605
+ protected _cancel(): void;
1606
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxEditorLinkModalComponent, never>;
1607
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxEditorLinkModalComponent, "clx-editor-link-modal", never, {}, {}, never, never, true, never>;
1806
1608
  }
1807
1609
 
1808
- type ClxNumberVariant = 'default' | 'stepper';
1809
- type ClxNumberSize = 'sm' | 'md' | 'lg';
1810
-
1811
- declare class ClxNumberComponent implements ControlValueAccessor {
1812
- private static _seq;
1813
- protected readonly _inputId: string;
1814
- readonly variant: _angular_core.InputSignal<ClxNumberVariant>;
1815
- readonly size: _angular_core.InputSignal<ClxNumberSize | undefined>;
1816
- protected readonly _size: _angular_core.Signal<ClxNumberSize>;
1817
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
1610
+ declare class ClxStepComponent {
1818
1611
  readonly label: _angular_core.InputSignal<string>;
1819
- readonly placeholder: _angular_core.InputSignal<string>;
1820
- readonly hint: _angular_core.InputSignal<string>;
1821
- readonly prefixIcon: _angular_core.InputSignal<string>;
1822
- readonly min: _angular_core.InputSignal<number | null>;
1823
- readonly max: _angular_core.InputSignal<number | null>;
1824
- readonly step: _angular_core.InputSignal<number>;
1825
- /** Initial value for standalone use (without FormControl) */
1826
- readonly value: _angular_core.InputSignal<number>;
1827
- /** Disabled state for standalone use (without FormControl) */
1828
- readonly disabled: _angular_core.InputSignal<boolean>;
1829
- readonly _value: _angular_core.WritableSignal<number>;
1830
- private readonly _cvaDisabled;
1831
- private _cvaConnected;
1832
- protected readonly _disabled: _angular_core.Signal<boolean>;
1833
- private readonly _valueEffect;
1834
- private _onChange;
1835
- private _onTouched;
1836
- protected readonly _isAtMin: _angular_core.Signal<boolean>;
1837
- protected readonly _isAtMax: _angular_core.Signal<boolean>;
1838
- private readonly _themeSvc;
1839
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
1840
- protected readonly _sizeConfig: _angular_core.Signal<{
1841
- container: string;
1842
- inputText: string;
1843
- iconSize: Extract<codexly_ui.ClxSize, "xs" | "sm" | "md">;
1844
- btnSize: "sm" | "md";
1845
- stepperCell: string;
1846
- label: string;
1847
- hint: string;
1848
- }>;
1849
- protected readonly _labelClass: _angular_core.Signal<string>;
1850
- protected readonly _hintClass: _angular_core.Signal<string>;
1851
- protected readonly _containerClass: _angular_core.Signal<string>;
1852
- /** Colored prefix icon cell — matches the input accent color */
1853
- protected readonly _prefixCellCls: _angular_core.Signal<string>;
1854
- /** Full class for the native input — must include structural classes since [class] replaces static ones */
1855
- protected readonly _inputClass: _angular_core.Signal<string>;
1856
- protected readonly _stepperWrapClass: _angular_core.Signal<string>;
1857
- protected readonly _stepperValueCls: _angular_core.Signal<string>;
1858
- writeValue(val: number): void;
1859
- registerOnChange(fn: (v: number) => void): void;
1860
- registerOnTouched(fn: () => void): void;
1861
- setDisabledState(disabled: boolean): void;
1862
- protected _handleInput(event: Event): void;
1863
- protected _handleBlur(): void;
1864
- protected _decrement(): void;
1865
- protected _increment(): void;
1866
- private _applyValue;
1867
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxNumberComponent, never>;
1868
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxNumberComponent, "clx-number", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1612
+ readonly description: _angular_core.InputSignal<string>;
1613
+ readonly icon: _angular_core.InputSignal<string>;
1614
+ /** Bind to a form's valid state or a custom signal to gate the Next button */
1615
+ readonly isValid: _angular_core.InputSignal<boolean>;
1616
+ /** Exposed so the parent wizard can toggle visibility imperatively */
1617
+ readonly nativeEl: HTMLElement;
1618
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxStepComponent, never>;
1619
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxStepComponent, "clx-step", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "isValid": { "alias": "isValid"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1869
1620
  }
1870
1621
 
1871
- type ClxRadioVariant = 'solid' | 'outline';
1622
+ type ClxWizardColor = ClxColorInput;
1623
+ type ClxWizardOrientation = 'horizontal' | 'vertical';
1624
+ type ClxWizardStepStatus = 'pending' | 'active' | 'completed' | 'error';
1872
1625
 
1873
- declare const CLX_RADIO_GROUP: InjectionToken<ClxRadioGroupComponent>;
1874
- declare class ClxRadioGroupComponent implements ControlValueAccessor {
1875
- private readonly _themeSvc;
1876
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
1877
- readonly resolvedColor: _angular_core.Signal<ClxColorInput>;
1878
- readonly variant: _angular_core.InputSignal<ClxRadioVariant>;
1879
- readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
1880
- readonly direction: _angular_core.InputSignal<"vertical" | "horizontal">;
1881
- readonly disabled: _angular_core.InputSignal<boolean>;
1882
- /** Current selected value — readable by child clx-radio via injection */
1883
- readonly _value: _angular_core.WritableSignal<unknown>;
1884
- private readonly _cvaDisabled;
1885
- /** Merged disabled state (input + CVA) — readable by child clx-radio */
1886
- readonly isDisabled: _angular_core.Signal<boolean>;
1887
- private _onChange;
1888
- private _onTouched;
1889
- select(value: unknown): void;
1890
- writeValue(val: unknown): void;
1891
- registerOnChange(fn: (v: unknown) => void): void;
1892
- registerOnTouched(fn: () => void): void;
1893
- setDisabledState(disabled: boolean): void;
1894
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxRadioGroupComponent, never>;
1895
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxRadioGroupComponent, "clx-radio-group", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1626
+ interface ClxTabItem {
1627
+ id: string;
1628
+ label: string;
1629
+ icon?: string;
1630
+ disabled?: boolean;
1896
1631
  }
1897
1632
 
1898
- declare class ClxRadioComponent {
1899
- /** Value this radio represents — compared against the group's selected value */
1900
- readonly value: _angular_core.InputSignal<unknown>;
1901
- readonly label: _angular_core.InputSignal<string>;
1902
- /** Per-radio overrides — falls back to the group's value if null */
1903
- readonly color: _angular_core.InputSignal<ClxColorInput | null>;
1904
- readonly variant: _angular_core.InputSignal<ClxRadioVariant | null>;
1905
- readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | null>;
1906
- private readonly _group;
1633
+ declare class ClxWizardComponent implements AfterContentInit {
1907
1634
  private readonly _themeSvc;
1908
- protected readonly _checked: _angular_core.Signal<boolean>;
1909
- protected readonly _isDisabled: _angular_core.Signal<boolean>;
1910
- private readonly _color;
1911
- private readonly _variant;
1912
- private readonly _size;
1913
- protected readonly _sizeConfig: _angular_core.Signal<{
1914
- readonly ring: "w-4 h-4";
1915
- readonly dot: "w-1.5 h-1.5";
1916
- readonly label: "text-xs";
1917
- } | {
1918
- readonly ring: "w-5 h-5";
1919
- readonly dot: "w-2 h-2";
1920
- readonly label: "text-sm";
1921
- } | {
1922
- readonly ring: "w-6 h-6";
1923
- readonly dot: "w-2.5 h-2.5";
1924
- readonly label: "text-base";
1925
- }>;
1926
- protected readonly _ringClass: _angular_core.Signal<string>;
1927
- protected readonly _dotClass: _angular_core.Signal<string>;
1928
- protected readonly _labelClass: _angular_core.Signal<string>;
1929
- protected _select(): void;
1930
- protected _onSpace(event: Event): void;
1931
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxRadioComponent, never>;
1932
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxRadioComponent, "clx-radio", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1635
+ readonly color: _angular_core.InputSignal<codexly_ui.ClxColorInput | undefined>;
1636
+ protected readonly _color: _angular_core.Signal<codexly_ui.ClxColorInput>;
1637
+ readonly orientation: _angular_core.InputSignal<ClxWizardOrientation>;
1638
+ readonly linear: _angular_core.InputSignal<boolean>;
1639
+ readonly prevLabel: _angular_core.InputSignal<string>;
1640
+ readonly nextLabel: _angular_core.InputSignal<string>;
1641
+ readonly finishLabel: _angular_core.InputSignal<string>;
1642
+ readonly stepChange: _angular_core.OutputEmitterRef<number>;
1643
+ readonly finish: _angular_core.OutputEmitterRef<void>;
1644
+ private readonly _destroyRef;
1645
+ private _stepQuery;
1646
+ protected _steps: ClxStepComponent[];
1647
+ protected readonly _currentIndex: _angular_core.WritableSignal<number>;
1648
+ ngAfterContentInit(): void;
1649
+ private _syncActiveAttrs;
1650
+ protected readonly _lastIndex: _angular_core.Signal<number>;
1651
+ protected readonly _currentStepValid: _angular_core.Signal<boolean>;
1652
+ protected readonly _connectorFillColor: _angular_core.Signal<string>;
1653
+ protected readonly _currentIndexStr: _angular_core.Signal<string>;
1654
+ protected readonly _tabItems: _angular_core.Signal<ClxTabItem[]>;
1655
+ protected _onTabChange(id: string): void;
1656
+ protected _stepStatus(i: number): 'active' | 'completed' | 'pending' | 'error';
1657
+ protected _isTabDisabled(i: number): boolean;
1658
+ protected _onCircleClick(i: number): void;
1659
+ next(): void;
1660
+ prev(): void;
1661
+ goTo(index: number): void;
1662
+ private _goTo;
1663
+ protected _onFinish(): void;
1664
+ protected readonly _rootClass: _angular_core.Signal<string>;
1665
+ protected _circleClass(i: number): string;
1666
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxWizardComponent, never>;
1667
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxWizardComponent, "clx-wizard", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "linear": { "alias": "linear"; "required": false; "isSignal": true; }; "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "finishLabel": { "alias": "finishLabel"; "required": false; "isSignal": true; }; }, { "stepChange": "stepChange"; "finish": "finish"; }, ["_stepQuery"], ["*", "[clx-wizard-footer-start]"], true, never>;
1933
1668
  }
1934
1669
 
1935
- declare class ClxSelectComponent implements ControlValueAccessor {
1936
- readonly label: _angular_core.InputSignal<string>;
1937
- readonly placeholder: _angular_core.InputSignal<string>;
1938
- readonly options: _angular_core.InputSignal<ClxSelectOption[]>;
1939
- readonly multiple: _angular_core.InputSignal<boolean>;
1940
- readonly searchable: _angular_core.InputSignal<boolean>;
1941
- readonly searchPlaceholder: _angular_core.InputSignal<string>;
1670
+ declare class ClxAppLayoutComponent implements OnInit, OnDestroy {
1671
+ private readonly _zone;
1672
+ private readonly _document;
1942
1673
  readonly activeColor: _angular_core.InputSignal<ClxColorInput | undefined>;
1943
- readonly size: _angular_core.InputSignal<ClxSelectSize | undefined>;
1944
- protected readonly _size: Signal<ClxSelectSize>;
1945
- readonly hint: _angular_core.InputSignal<string>;
1946
- readonly errorMessage: _angular_core.InputSignal<string>;
1947
- readonly disabled: _angular_core.InputSignal<boolean>;
1948
- readonly async: _angular_core.InputSignal<boolean>;
1949
- readonly loadOptions: _angular_core.InputSignal<((query: string) => Observable<ClxSelectOption[]>) | null>;
1950
- readonly debounceMs: _angular_core.InputSignal<number>;
1951
- readonly minChars: _angular_core.InputSignal<number>;
1952
- private static _seq;
1953
- protected readonly _labelId: string;
1954
- protected readonly _isOpen: _angular_core.WritableSignal<boolean>;
1955
- protected readonly _overlayWidthPx: _angular_core.WritableSignal<number>;
1956
- protected readonly _searchControl: FormControl<string | null>;
1957
- protected readonly _searchQuery: Signal<string>;
1958
- protected readonly _asyncOptions: _angular_core.WritableSignal<ClxSelectOption[]>;
1959
- protected readonly _asyncLoading: _angular_core.WritableSignal<boolean>;
1960
- protected readonly _asyncQuery: _angular_core.WritableSignal<string>;
1961
- private readonly _wasTouched;
1962
- private readonly _selectedVals;
1963
- private readonly _cvaDisabled;
1964
- private readonly _themeSvc;
1965
- private readonly _ngControl;
1966
- protected readonly _activeColor: Signal<ClxColorInput>;
1967
- private readonly _el;
1968
- private readonly _sso;
1969
- private readonly _isBrowser;
1970
- private readonly _loadedFonts;
1971
- readonly _scrollStrategy: _angular_cdk_overlay.RepositionScrollStrategy;
1674
+ readonly _sidebarOpen: _angular_core.WritableSignal<boolean>;
1675
+ readonly collapsed: _angular_core.WritableSignal<boolean>;
1676
+ readonly _hovered: _angular_core.WritableSignal<boolean>;
1677
+ private readonly _isMobile;
1678
+ readonly collapsedChange: _angular_core.OutputEmitterRef<boolean>;
1679
+ readonly expandedChange: _angular_core.OutputEmitterRef<boolean>;
1972
1680
  constructor();
1973
- private _onChange;
1974
- private _onTouched;
1975
- readonly _positions: ConnectedPosition[];
1976
- protected readonly _disabled: Signal<boolean>;
1977
- protected readonly _sizeConfig: Signal<{
1978
- minH: string;
1979
- text: string;
1980
- label: string;
1981
- hint: string;
1982
- px: string;
1983
- py: string;
1984
- gap: string;
1985
- tagSize: "sm" | "md";
1986
- btnSize: "xs" | "sm";
1987
- }>;
1988
- protected readonly _hasValue: Signal<boolean>;
1989
- protected readonly _isInvalid: Signal<boolean>;
1990
- protected readonly _selectedOptions: Signal<ClxSelectOption[]>;
1991
- protected readonly _filteredOptions: Signal<ClxSelectOption[]>;
1992
- protected readonly _showAsyncPlaceholder: Signal<boolean>;
1993
- protected readonly _displayValue: Signal<string>;
1994
- protected readonly _displayFontFamily: Signal<string | null>;
1995
- protected readonly _overlayWidth: Signal<number>;
1996
- protected readonly _labelClass: Signal<string>;
1997
- protected readonly _hintClass: Signal<string>;
1998
- protected readonly _triggerClass: Signal<string>;
1999
- protected readonly _singleDisplayClass: Signal<string>;
2000
- protected readonly _tagContainerClass: Signal<string>;
2001
- protected readonly _placeholderClass: Signal<string>;
2002
- protected readonly _chevronBtnClass: Signal<"transition-transform duration-200 rotate-180" | "transition-transform duration-200">;
2003
- protected readonly _panelClass: Signal<string>;
2004
- protected _isSelected(value: string | number): boolean;
2005
- protected _optionClass(opt: ClxSelectOption): string;
2006
- protected _togglePanel(): void;
2007
- private _openPanel;
2008
- private _loadPreviewFont;
2009
- protected _closePanel(): void;
2010
- protected _selectOption(opt: ClxSelectOption): void;
2011
- protected _deselect(value: string | number): void;
2012
- protected _clearAll(): void;
2013
- protected _onTriggerKeydown(event: KeyboardEvent): void;
2014
- protected _onOverlayKeydown(event: KeyboardEvent): void;
2015
- onEscape(): void;
2016
- writeValue(val: string | number | (string | number)[] | null): void;
2017
- registerOnChange(fn: (v: string | number | (string | number)[] | null) => void): void;
2018
- registerOnTouched(fn: () => void): void;
2019
- setDisabledState(disabled: boolean): void;
2020
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxSelectComponent, never>;
2021
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxSelectComponent, "clx-select", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "activeColor": { "alias": "activeColor"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "async": { "alias": "async"; "required": false; "isSignal": true; }; "loadOptions": { "alias": "loadOptions"; "required": false; "isSignal": true; }; "debounceMs": { "alias": "debounceMs"; "required": false; "isSignal": true; }; "minChars": { "alias": "minChars"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1681
+ protected readonly _showBackdrop: _angular_core.Signal<boolean>;
1682
+ readonly _isExpanded: _angular_core.Signal<boolean>;
1683
+ protected readonly _sidebarCls: _angular_core.Signal<string>;
1684
+ private _mql;
1685
+ private _mqlListener;
1686
+ ngOnInit(): void;
1687
+ ngOnDestroy(): void;
1688
+ _toggleCollapsed(): void;
1689
+ _onSidebarEnter(): void;
1690
+ _onSidebarLeave(): void;
1691
+ toggleSidebar(): void;
1692
+ openSidebar(): void;
1693
+ closeSidebar(): void;
1694
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxAppLayoutComponent, never>;
1695
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxAppLayoutComponent, "clx-app-layout", never, { "activeColor": { "alias": "activeColor"; "required": false; "isSignal": true; }; }, { "collapsedChange": "collapsedChange"; "expandedChange": "expandedChange"; }, never, ["clx-brand", "[clx-sidebar]", "[clx-header]", "*"], true, never>;
2022
1696
  }
2023
1697
 
2024
- type ClxSliderSize = 'sm' | 'md' | 'lg';
1698
+ declare class ClxBrandComponent {
1699
+ readonly logo: _angular_core.InputSignal<string>;
1700
+ readonly name: _angular_core.InputSignal<string>;
1701
+ readonly description: _angular_core.InputSignal<string>;
1702
+ readonly collapsed: _angular_core.InputSignal<boolean>;
1703
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxBrandComponent, never>;
1704
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxBrandComponent, "clx-brand", never, { "logo": { "alias": "logo"; "required": true; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1705
+ }
2025
1706
 
2026
- declare class ClxSliderComponent implements ControlValueAccessor {
1707
+ declare class ClxMenuComponent implements AfterViewInit {
2027
1708
  private readonly _themeSvc;
2028
1709
  readonly label: _angular_core.InputSignal<string>;
2029
- readonly hint: _angular_core.InputSignal<string>;
2030
- readonly errorMessage: _angular_core.InputSignal<string>;
2031
- readonly activeColor: _angular_core.InputSignal<ClxColorInput | undefined>;
2032
- protected readonly _activeColor: _angular_core.Signal<ClxColorInput>;
2033
- readonly size: _angular_core.InputSignal<ClxSliderSize | undefined>;
2034
- protected readonly _size: _angular_core.Signal<ClxSliderSize>;
2035
- readonly min: _angular_core.InputSignal<number>;
2036
- readonly max: _angular_core.InputSignal<number>;
2037
- readonly step: _angular_core.InputSignal<number>;
2038
- readonly showTooltip: _angular_core.InputSignal<boolean>;
2039
- readonly showMinMax: _angular_core.InputSignal<boolean>;
2040
- readonly marks: _angular_core.InputSignal<boolean>;
2041
- readonly disabled: _angular_core.InputSignal<boolean>;
2042
- private readonly _ngControl;
2043
- private readonly _rangeInput;
2044
- constructor();
2045
- protected readonly _currentValue: _angular_core.WritableSignal<number>;
2046
- protected readonly _cvaDisabled: _angular_core.WritableSignal<boolean>;
2047
- protected readonly _isFocused: _angular_core.WritableSignal<boolean>;
2048
- protected readonly _isActive: _angular_core.WritableSignal<boolean>;
2049
- protected readonly _wasTouched: _angular_core.WritableSignal<boolean>;
2050
- protected readonly _disabled: _angular_core.Signal<boolean>;
2051
- protected readonly _sizeConfig: _angular_core.Signal<{
2052
- trackPx: string;
2053
- thumbPx: string;
2054
- thumbRing: string;
2055
- label: string;
2056
- hint: string;
2057
- markW: string;
2058
- markH: string;
2059
- wrapperH: string;
2060
- tooltipBottom: string;
1710
+ readonly icon: _angular_core.InputSignal<string>;
1711
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
1712
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
1713
+ readonly collapsed: _angular_core.InputSignal<boolean>;
1714
+ readonly active: _angular_core.InputSignal<boolean>;
1715
+ readonly routerLink: _angular_core.InputSignal<string | any[]>;
1716
+ readonly routerLinkActiveOptions: _angular_core.InputSignal<{
1717
+ exact: boolean;
2061
1718
  }>;
2062
- protected readonly _colorTokens: _angular_core.Signal<codexly_ui.ClxColorTokens>;
2063
- protected readonly _pct: _angular_core.Signal<number>;
2064
- protected readonly _isInvalid: _angular_core.Signal<boolean>;
2065
- protected readonly _trackClass: _angular_core.Signal<string>;
2066
- protected readonly _thumbClass: _angular_core.Signal<string>;
2067
- protected readonly _tickPositions: _angular_core.Signal<number[]>;
2068
- protected _tooltipArrowColor(): string;
2069
- protected _onInput(event: Event): void;
2070
- protected _onBlur(): void;
2071
- private _onChange;
2072
- protected _onTouched: () => void;
2073
- writeValue(val: number | null): void;
2074
- registerOnChange(fn: (v: number) => void): void;
2075
- registerOnTouched(fn: () => void): void;
2076
- setDisabledState(disabled: boolean): void;
2077
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxSliderComponent, never>;
2078
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxSliderComponent, "clx-slider", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "activeColor": { "alias": "activeColor"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "showTooltip": { "alias": "showTooltip"; "required": false; "isSignal": true; }; "showMinMax": { "alias": "showMinMax"; "required": false; "isSignal": true; }; "marks": { "alias": "marks"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1719
+ readonly _isExpanded: _angular_core.WritableSignal<boolean>;
1720
+ private readonly _rla?;
1721
+ private readonly _destroyRef;
1722
+ constructor();
1723
+ ngAfterViewInit(): void;
1724
+ protected readonly _iconCls: _angular_core.Signal<string>;
1725
+ protected _buttonCls(isActive: boolean): string;
1726
+ protected readonly NAV_CHILDREN_WRAPPER = "grid transition-[grid-template-rows] duration-300 ease-in-out";
1727
+ protected readonly NAV_CHILDREN_INNER = "overflow-hidden";
1728
+ protected readonly NAV_CHILDREN_LIST = "ml-6 py-1 space-y-0.5";
1729
+ protected _toggle(): void;
1730
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxMenuComponent, never>;
1731
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxMenuComponent, "clx-menu", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "routerLink": { "alias": "routerLink"; "required": false; "isSignal": true; }; "routerLinkActiveOptions": { "alias": "routerLinkActiveOptions"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2079
1732
  }
2080
1733
 
2081
- type ClxSwitchSize = 'xs' | 'sm' | 'md' | 'lg';
2082
- declare class ClxSwitchComponent implements ControlValueAccessor {
1734
+ declare class ClxMenuItemComponent {
2083
1735
  private readonly _themeSvc;
2084
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
2085
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
2086
- readonly size: _angular_core.InputSignal<ClxSwitchSize | undefined>;
2087
- protected readonly _size: _angular_core.Signal<ClxSwitchSize>;
2088
1736
  readonly label: _angular_core.InputSignal<string>;
2089
- readonly value: _angular_core.InputSignal<boolean>;
2090
- readonly disabled: _angular_core.InputSignal<boolean>;
2091
- readonly changed: _angular_core.OutputEmitterRef<boolean>;
2092
- readonly _checked: _angular_core.WritableSignal<boolean>;
2093
- private readonly _cvaDisabled;
2094
- private _cvaConnected;
2095
- protected readonly _disabled: _angular_core.Signal<boolean>;
2096
- private readonly _valueEffect;
2097
- private _onChange;
2098
- private _onTouched;
2099
- protected readonly _sizeConfig: _angular_core.Signal<{
2100
- readonly track: "w-7 h-4";
2101
- readonly thumb: "w-3 h-3";
2102
- readonly translate: "translate-x-3";
2103
- readonly label: "text-xs";
2104
- } | {
2105
- readonly track: "w-9 h-5";
2106
- readonly thumb: "w-4 h-4";
2107
- readonly translate: "translate-x-4";
2108
- readonly label: "text-xs";
2109
- } | {
2110
- readonly track: "w-12 h-6";
2111
- readonly thumb: "w-5 h-5";
2112
- readonly translate: "translate-x-6";
2113
- readonly label: "text-sm";
2114
- } | {
2115
- readonly track: "w-14 h-7";
2116
- readonly thumb: "w-6 h-6";
2117
- readonly translate: "translate-x-7";
2118
- readonly label: "text-base";
1737
+ readonly icon: _angular_core.InputSignal<string>;
1738
+ readonly active: _angular_core.InputSignal<boolean>;
1739
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
1740
+ readonly nested: _angular_core.InputSignal<boolean>;
1741
+ readonly collapsed: _angular_core.InputSignal<boolean>;
1742
+ readonly routerLink: _angular_core.InputSignal<string | any[]>;
1743
+ readonly routerLinkActiveOptions: _angular_core.InputSignal<{
1744
+ exact: boolean;
2119
1745
  }>;
2120
- protected readonly _trackClass: _angular_core.Signal<string>;
2121
- protected readonly _thumbClass: _angular_core.Signal<string>;
2122
- protected readonly _labelClass: _angular_core.Signal<string>;
2123
- writeValue(val: boolean): void;
2124
- registerOnChange(fn: (v: boolean) => void): void;
2125
- registerOnTouched(fn: () => void): void;
2126
- setDisabledState(disabled: boolean): void;
2127
- protected _handleChange(event: Event): void;
2128
- protected _handleBlur(): void;
2129
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxSwitchComponent, never>;
2130
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxSwitchComponent, "label[clx-switch]", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
1746
+ readonly itemClick: _angular_core.OutputEmitterRef<void>;
1747
+ private readonly _resolvedColor;
1748
+ private readonly _geom;
1749
+ protected readonly _iconCls: _angular_core.Signal<string>;
1750
+ protected readonly _idleCls: _angular_core.Signal<string>;
1751
+ protected readonly _activeCls: _angular_core.Signal<string>;
1752
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxMenuItemComponent, never>;
1753
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxMenuItemComponent, "clx-menu-item", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "nested": { "alias": "nested"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "routerLink": { "alias": "routerLink"; "required": false; "isSignal": true; }; "routerLinkActiveOptions": { "alias": "routerLinkActiveOptions"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
2131
1754
  }
2132
1755
 
2133
- type ClxTextareaStatus = 'default' | 'error' | 'success';
2134
- type ClxTextareaSize = 'sm' | 'md' | 'lg';
2135
- type ClxTextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';
2136
-
2137
- declare class ClxTextareaComponent implements ControlValueAccessor {
1756
+ declare class ClxNavGroupComponent {
2138
1757
  readonly label: _angular_core.InputSignal<string>;
2139
- readonly placeholder: _angular_core.InputSignal<string>;
1758
+ readonly collapsed: _angular_core.InputSignal<boolean>;
2140
1759
  readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
2141
- readonly size: _angular_core.InputSignal<ClxTextareaSize | undefined>;
2142
- protected readonly _size: _angular_core.Signal<ClxTextareaSize>;
2143
- readonly status: _angular_core.InputSignal<ClxTextareaStatus>;
2144
- readonly statusMessage: _angular_core.InputSignal<string>;
2145
- readonly hint: _angular_core.InputSignal<string>;
2146
- readonly prefixIcon: _angular_core.InputSignal<string>;
2147
- readonly suffixIcon: _angular_core.InputSignal<string>;
2148
- readonly resize: _angular_core.InputSignal<ClxTextareaResize>;
2149
- readonly rows: _angular_core.InputSignal<number>;
2150
- readonly maxLength: _angular_core.InputSignal<number>;
2151
- readonly value: _angular_core.InputSignal<string>;
2152
- readonly disabled: _angular_core.InputSignal<boolean>;
2153
- protected readonly _taId: string;
2154
- readonly _value: _angular_core.WritableSignal<string>;
1760
+ readonly labelClass: _angular_core.Signal<string>;
1761
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxNavGroupComponent, never>;
1762
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxNavGroupComponent, "clx-nav-group", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1763
+ }
1764
+
1765
+ interface ClxProfileMenuItem {
1766
+ label: string;
1767
+ icon: string;
1768
+ action: string;
1769
+ }
1770
+ declare class ClxProfileComponent {
1771
+ readonly firstName: _angular_core.InputSignal<string>;
1772
+ readonly lastName: _angular_core.InputSignal<string>;
1773
+ readonly username: _angular_core.InputSignal<string>;
1774
+ readonly role: _angular_core.InputSignal<string>;
1775
+ readonly avatarSrc: _angular_core.InputSignal<string | null>;
1776
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
1777
+ readonly menuItems: _angular_core.InputSignal<ClxProfileMenuItem[]>;
1778
+ readonly signOutLabel: _angular_core.InputSignal<string>;
1779
+ readonly menuAction: _angular_core.OutputEmitterRef<string>;
1780
+ readonly signOut: _angular_core.OutputEmitterRef<void>;
2155
1781
  private readonly _themeSvc;
2156
- private readonly _cvaDisabled;
2157
- private _cvaConnected;
2158
- protected readonly _disabled: _angular_core.Signal<boolean>;
2159
- private readonly _valueEffect;
2160
- private _onChange;
2161
- private _onTouched;
2162
1782
  protected readonly _color: _angular_core.Signal<ClxColorInput>;
2163
- protected readonly _sizeCfg: _angular_core.Signal<{
2164
- textarea: string;
2165
- label: string;
2166
- hint: string;
2167
- iconSize: "xs" | "sm" | "md";
2168
- iconRight: string;
2169
- padDefaultL: string;
2170
- padDefaultR: string;
2171
- padRight: string;
2172
- }>;
2173
- protected readonly _statusCfg: _angular_core.Signal<{
2174
- border: string;
2175
- ring: string;
2176
- msgCls: string;
2177
- iconName: string;
2178
- iconColor: string;
2179
- }>;
2180
- protected readonly _labelClass: _angular_core.Signal<string>;
2181
- protected readonly _hintClass: _angular_core.Signal<string>;
1783
+ private readonly _sso;
1784
+ readonly _scrollStrategy: _angular_cdk_overlay.RepositionScrollStrategy;
1785
+ readonly _positions: ConnectedPosition[];
1786
+ protected readonly _isOpen: _angular_core.WritableSignal<boolean>;
1787
+ readonly fullName: _angular_core.Signal<string>;
1788
+ protected readonly _initials: _angular_core.Signal<string>;
1789
+ protected readonly _ringClass: _angular_core.Signal<string>;
1790
+ protected readonly _headerBgClass: _angular_core.Signal<string>;
1791
+ protected _toggle(): void;
1792
+ protected _close(): void;
1793
+ protected _onKeydown(event: KeyboardEvent): void;
1794
+ protected _onAction(action: string): void;
1795
+ protected _onSignOut(): void;
1796
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxProfileComponent, never>;
1797
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxProfileComponent, "clx-profile", never, { "firstName": { "alias": "firstName"; "required": false; "isSignal": true; }; "lastName": { "alias": "lastName"; "required": false; "isSignal": true; }; "username": { "alias": "username"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "menuItems": { "alias": "menuItems"; "required": false; "isSignal": true; }; "signOutLabel": { "alias": "signOutLabel"; "required": false; "isSignal": true; }; }, { "menuAction": "menuAction"; "signOut": "signOut"; }, never, never, true, never>;
1798
+ }
1799
+
1800
+ type ClxAnimateAttentionSeeker = 'bounce' | 'flash' | 'pulse' | 'rubberBand' | 'shakeX' | 'shakeY' | 'headShake' | 'swing' | 'tada' | 'wobble' | 'jello' | 'heartBeat';
1801
+ type ClxAnimateBackEntrance = 'backInDown' | 'backInLeft' | 'backInRight' | 'backInUp';
1802
+ type ClxAnimateBackExit = 'backOutDown' | 'backOutLeft' | 'backOutRight' | 'backOutUp';
1803
+ type ClxAnimateBouncingEntrance = 'bounceIn' | 'bounceInDown' | 'bounceInLeft' | 'bounceInRight' | 'bounceInUp';
1804
+ type ClxAnimateBouncingExit = 'bounceOut' | 'bounceOutDown' | 'bounceOutLeft' | 'bounceOutRight' | 'bounceOutUp';
1805
+ type ClxAnimateFadingEntrance = 'fadeIn' | 'fadeInDown' | 'fadeInDownBig' | 'fadeInLeft' | 'fadeInLeftBig' | 'fadeInRight' | 'fadeInRightBig' | 'fadeInUp' | 'fadeInUpBig' | 'fadeInTopLeft' | 'fadeInTopRight' | 'fadeInBottomLeft' | 'fadeInBottomRight';
1806
+ type ClxAnimateFadingExit = 'fadeOut' | 'fadeOutDown' | 'fadeOutDownBig' | 'fadeOutLeft' | 'fadeOutLeftBig' | 'fadeOutRight' | 'fadeOutRightBig' | 'fadeOutUp' | 'fadeOutUpBig' | 'fadeOutTopLeft' | 'fadeOutTopRight' | 'fadeOutBottomRight' | 'fadeOutBottomLeft';
1807
+ type ClxAnimateFlipper = 'flip' | 'flipInX' | 'flipInY' | 'flipOutX' | 'flipOutY';
1808
+ type ClxAnimateLightspeed = 'lightSpeedInRight' | 'lightSpeedInLeft' | 'lightSpeedOutRight' | 'lightSpeedOutLeft';
1809
+ type ClxAnimateRotatingEntrance = 'rotateIn' | 'rotateInDownLeft' | 'rotateInDownRight' | 'rotateInUpLeft' | 'rotateInUpRight';
1810
+ type ClxAnimateRotatingExit = 'rotateOut' | 'rotateOutDownLeft' | 'rotateOutDownRight' | 'rotateOutUpLeft' | 'rotateOutUpRight';
1811
+ type ClxAnimateSpecial = 'hinge' | 'jackInTheBox' | 'rollIn' | 'rollOut';
1812
+ type ClxAnimateZoomingEntrance = 'zoomIn' | 'zoomInDown' | 'zoomInLeft' | 'zoomInRight' | 'zoomInUp';
1813
+ type ClxAnimateZoomingExit = 'zoomOut' | 'zoomOutDown' | 'zoomOutLeft' | 'zoomOutRight' | 'zoomOutUp';
1814
+ type ClxAnimateSlidingEntrance = 'slideInDown' | 'slideInLeft' | 'slideInRight' | 'slideInUp';
1815
+ type ClxAnimateSlidingExit = 'slideOutDown' | 'slideOutLeft' | 'slideOutRight' | 'slideOutUp';
1816
+ type ClxAnimateName = ClxAnimateAttentionSeeker | ClxAnimateBackEntrance | ClxAnimateBackExit | ClxAnimateBouncingEntrance | ClxAnimateBouncingExit | ClxAnimateFadingEntrance | ClxAnimateFadingExit | ClxAnimateFlipper | ClxAnimateLightspeed | ClxAnimateRotatingEntrance | ClxAnimateRotatingExit | ClxAnimateSpecial | ClxAnimateZoomingEntrance | ClxAnimateZoomingExit | ClxAnimateSlidingEntrance | ClxAnimateSlidingExit;
1817
+ type ClxAnimateTrigger = 'click' | 'hover' | 'hoverLeave' | 'onEnter' | 'onLeave' | 'manual';
1818
+ interface ClxAnimateConfig {
1819
+ animation: ClxAnimateName;
1820
+ trigger?: ClxAnimateTrigger;
1821
+ duration?: number;
1822
+ delay?: number;
1823
+ repeat?: number | 'infinite';
1824
+ easing?: string;
1825
+ fillMode?: 'none' | 'forwards' | 'backwards' | 'both';
1826
+ once?: boolean;
1827
+ threshold?: number;
1828
+ }
1829
+ type ClxAnimateDefaults = Partial<Pick<ClxAnimateConfig, 'duration' | 'delay' | 'repeat' | 'easing' | 'fillMode' | 'once' | 'threshold'>>;
1830
+ interface ClxAnimateEvent {
1831
+ element: HTMLElement;
1832
+ animation: ClxAnimateName;
1833
+ timestamp: number;
1834
+ }
1835
+
1836
+ type ClxModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
1837
+ interface ClxModalButtonOptions {
1838
+ text: string;
1839
+ color?: ClxButtonColor;
1840
+ variant?: ClxButtonVariant;
1841
+ }
1842
+ interface ClxModalConfig<D = unknown> {
1843
+ /** Width preset. Default: 'md' */
1844
+ size?: ClxModalSize;
1845
+ /** Show the dark backdrop. Default: true */
1846
+ hasBackdrop?: boolean;
1847
+ /** Prevent closing on backdrop click / Escape. Default: false */
1848
+ disableClose?: boolean;
1849
+ /** Extra CSS classes added to the overlay pane */
1850
+ panelClass?: string | string[];
1851
+ /** Data injected into the opened component via CLX_MODAL_DATA token */
1852
+ data?: D;
1853
+ /** Entrance animation name. Default: 'fadeInDown' */
1854
+ animationIn?: ClxAnimateName;
1855
+ /** Exit animation name. Default: 'fadeOutUp' */
1856
+ animationOut?: ClxAnimateName;
1857
+ /** Animation duration in ms. Default: 300 */
1858
+ animationDuration?: number;
1859
+ }
1860
+ interface ClxModalRef<R = unknown> {
1861
+ /** Closes the modal and emits the result */
1862
+ close(result?: R): void;
1863
+ /** Promise that resolves with the result when the modal closes */
1864
+ afterClosed(): Promise<R | undefined>;
1865
+ }
1866
+
1867
+ declare class ClxModalComponent {
1868
+ readonly size: _angular_core.InputSignal<ClxModalSize | null>;
1869
+ readonly showClose: _angular_core.InputSignal<boolean>;
1870
+ readonly confirmButton: _angular_core.InputSignal<ClxModalButtonOptions | undefined>;
1871
+ readonly cancelButton: _angular_core.InputSignal<ClxModalButtonOptions | undefined>;
1872
+ readonly showCancelButton: _angular_core.InputSignal<boolean>;
1873
+ readonly confirmClick: _angular_core.OutputEmitterRef<void>;
1874
+ readonly cancelClick: _angular_core.OutputEmitterRef<void>;
1875
+ private readonly _modalRef;
1876
+ private readonly _sizeToken;
1877
+ private readonly _themeSvc;
1878
+ protected readonly _resolvedSize: _angular_core.Signal<ClxModalSize>;
1879
+ protected readonly _hostClass: _angular_core.Signal<string>;
1880
+ protected readonly _hasBuiltInButtons: _angular_core.Signal<boolean>;
1881
+ protected readonly _confirmText: _angular_core.Signal<string>;
1882
+ protected readonly _confirmColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
1883
+ protected readonly _confirmVariant: _angular_core.Signal<codexly_ui.ClxButtonVariant>;
1884
+ protected readonly _cancelText: _angular_core.Signal<string>;
1885
+ protected readonly _cancelColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
1886
+ protected readonly _cancelVariant: _angular_core.Signal<codexly_ui.ClxButtonVariant>;
1887
+ protected _close(): void;
1888
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxModalComponent, never>;
1889
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxModalComponent, "clx-modal", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "confirmButton": { "alias": "confirmButton"; "required": false; "isSignal": true; }; "cancelButton": { "alias": "cancelButton"; "required": false; "isSignal": true; }; "showCancelButton": { "alias": "showCancelButton"; "required": false; "isSignal": true; }; }, { "confirmClick": "confirmClick"; "cancelClick": "cancelClick"; }, never, ["[clx-modal-title]", "*", "[clx-modal-footer]"], true, never>;
1890
+ }
1891
+
1892
+ type ClxDrawerSize = 'sm' | 'md' | 'lg';
1893
+ interface ClxDrawerButtonOptions {
1894
+ text: string;
1895
+ color?: ClxButtonColor;
1896
+ variant?: ClxButtonVariant;
1897
+ }
1898
+ interface ClxDrawerConfig<D = unknown> {
1899
+ /** Width preset. Default: 'md' */
1900
+ size?: ClxDrawerSize;
1901
+ /** Show the dark backdrop. Default: false */
1902
+ hasBackdrop?: boolean;
1903
+ /** Prevent closing on backdrop click / Escape. Default: false */
1904
+ disableClose?: boolean;
1905
+ /** Extra CSS classes added to the overlay pane */
1906
+ panelClass?: string | string[];
1907
+ /** Data injected into the opened component via CLX_MODAL_DATA token */
1908
+ data?: D;
1909
+ }
1910
+ interface ClxDrawerRef<R = unknown> {
1911
+ close(result?: R): void;
1912
+ afterClosed(): Promise<R | undefined>;
1913
+ }
1914
+
1915
+ declare class ClxDrawerComponent {
1916
+ readonly size: _angular_core.InputSignal<ClxDrawerSize | null>;
1917
+ readonly showClose: _angular_core.InputSignal<boolean>;
1918
+ readonly confirmButton: _angular_core.InputSignal<ClxDrawerButtonOptions | undefined>;
1919
+ readonly cancelButton: _angular_core.InputSignal<ClxDrawerButtonOptions | undefined>;
1920
+ readonly showCancelButton: _angular_core.InputSignal<boolean>;
1921
+ readonly confirmClick: _angular_core.OutputEmitterRef<void>;
1922
+ readonly cancelClick: _angular_core.OutputEmitterRef<void>;
1923
+ private readonly _modalRef;
1924
+ private readonly _sizeToken;
1925
+ private readonly _themeSvc;
1926
+ protected readonly _resolvedSize: _angular_core.Signal<ClxDrawerSize>;
1927
+ protected readonly _hostClass: _angular_core.Signal<string>;
1928
+ protected readonly _hasBuiltInButtons: _angular_core.Signal<boolean>;
1929
+ protected readonly _confirmText: _angular_core.Signal<string>;
1930
+ protected readonly _confirmColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
1931
+ protected readonly _confirmVariant: _angular_core.Signal<codexly_ui.ClxButtonVariant>;
1932
+ protected readonly _cancelText: _angular_core.Signal<string>;
1933
+ protected readonly _cancelColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
1934
+ protected readonly _cancelVariant: _angular_core.Signal<codexly_ui.ClxButtonVariant>;
1935
+ protected _close(): void;
1936
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxDrawerComponent, never>;
1937
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxDrawerComponent, "clx-drawer", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "confirmButton": { "alias": "confirmButton"; "required": false; "isSignal": true; }; "cancelButton": { "alias": "cancelButton"; "required": false; "isSignal": true; }; "showCancelButton": { "alias": "showCancelButton"; "required": false; "isSignal": true; }; }, { "confirmClick": "confirmClick"; "cancelClick": "cancelClick"; }, never, ["[clx-drawer-title]", "*", "[clx-drawer-footer]"], true, never>;
1938
+ }
1939
+
1940
+ declare class ClxAlertComponent implements OnInit, OnDestroy {
1941
+ private readonly _opts;
1942
+ private readonly _resolve;
1943
+ private readonly _animate;
1944
+ private readonly _el;
1945
+ private readonly _themeSvc;
1946
+ private readonly _zone;
1947
+ constructor();
1948
+ private get _type();
1949
+ private get _isConfirm();
1950
+ protected readonly _icon: _angular_core.WritableSignal<string>;
1951
+ protected readonly _title: _angular_core.WritableSignal<string>;
1952
+ protected readonly _message: _angular_core.WritableSignal<string>;
1953
+ protected readonly _showCancel: _angular_core.WritableSignal<boolean>;
1954
+ protected readonly _iconBg: _angular_core.Signal<string>;
1955
+ protected readonly _iconColor: _angular_core.Signal<string>;
1956
+ protected readonly _progressColor: _angular_core.Signal<string>;
1957
+ protected readonly _confirmText: _angular_core.WritableSignal<string>;
1958
+ protected readonly _confirmColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
1959
+ protected readonly _cancelText: _angular_core.WritableSignal<string>;
1960
+ protected readonly _cancelColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
1961
+ protected readonly _cancelVariant: _angular_core.WritableSignal<ClxButtonVariant>;
1962
+ protected readonly _timerTotal: _angular_core.WritableSignal<number>;
1963
+ protected readonly _progressPct: _angular_core.WritableSignal<number>;
1964
+ private _timerHandle;
1965
+ private _destroyed;
1966
+ private get _card();
1967
+ ngOnInit(): void;
1968
+ ngOnDestroy(): void;
1969
+ confirm(): void;
1970
+ dismiss(): void;
1971
+ private _close;
1972
+ private _startTimer;
1973
+ private _stopTimer;
1974
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxAlertComponent, never>;
1975
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxAlertComponent, "clx-alert", never, {}, {}, never, never, true, never>;
1976
+ }
1977
+
1978
+ type ClxAlertType = 'success' | 'danger' | 'warning' | 'info' | 'confirm';
1979
+ type ClxAlertResult = boolean;
1980
+ interface ClxAlertButtonOptions {
1981
+ text: string;
1982
+ color?: ClxButtonColor;
1983
+ variant?: ClxButtonVariant;
1984
+ }
1985
+ interface ClxAlertOptions {
1986
+ /** Alert type — drives icon, color and defaults. */
1987
+ type?: ClxAlertType;
1988
+ /** Dialog title. Supports safe HTML string. */
1989
+ title?: string;
1990
+ /** Body message. Supports safe HTML string. */
1991
+ message?: string;
1992
+ /** Show a cancel / secondary button. Default: false (true for 'confirm'). */
1993
+ showCancelButton?: boolean;
1994
+ /** Confirm button config. */
1995
+ confirmButton?: ClxAlertButtonOptions;
1996
+ /** Cancel button config. */
1997
+ cancelButton?: ClxAlertButtonOptions;
1998
+ /** animate.css entrance animation name. Default: 'zoomIn' */
1999
+ animationIn?: ClxAnimateName;
2000
+ /** animate.css exit animation name. Default: 'zoomOut' */
2001
+ animationOut?: ClxAnimateName;
2002
+ /** Duration of entrance/exit animations in ms. Default: 400 */
2003
+ animationDuration?: number;
2182
2004
  /**
2183
- * Outer flex wrapper — owns the border, border-radius and focus ring.
2184
- * The border sits here (not on the textarea) so the prefix cell blends in
2185
- * seamlessly, exactly like clx-input does in flex mode.
2005
+ * Auto-close timer in milliseconds.
2006
+ * When set, a progress bar counts down and the dialog closes automatically
2007
+ * resolving to `false`.
2186
2008
  */
2187
- protected readonly _wrapperClass: _angular_core.Signal<string>;
2188
- /** Prefix icon cell flex column, full height of the wrapper */
2189
- protected readonly _prefixCellCls: _angular_core.Signal<string>;
2190
- /** Textarea itself — no border (border lives on the wrapper), fills flex-1 */
2191
- protected readonly _textareaClass: _angular_core.Signal<string>;
2192
- /** Suffix icon — absolute inside the inner relative wrapper */
2193
- protected readonly _suffixIconWrapCls: _angular_core.Signal<string>;
2194
- protected readonly _statusMsgClass: _angular_core.Signal<string>;
2195
- protected readonly _counterClass: _angular_core.Signal<string>;
2196
- writeValue(val: string): void;
2197
- registerOnChange(fn: (v: string) => void): void;
2198
- registerOnTouched(fn: () => void): void;
2199
- setDisabledState(disabled: boolean): void;
2200
- protected _handleInput(event: Event): void;
2201
- protected _handleBlur(): void;
2202
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTextareaComponent, never>;
2203
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTextareaComponent, "clx-textarea", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "statusMessage": { "alias": "statusMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; "isSignal": true; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2009
+ timer?: number;
2010
+ /** Show backdrop blur. Default: true */
2011
+ backdrop?: boolean;
2012
+ /** Prevent closing on backdrop click. Default: false */
2013
+ disableClose?: boolean;
2204
2014
  }
2205
2015
 
2206
- type ClxUploadSize = 'sm' | 'md' | 'lg';
2207
- type ClxUploadError = 'fileType' | 'fileSize';
2016
+ type ClxToastPosition = 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left';
2017
+ type ClxToastType = ClxColor;
2018
+ interface ClxToastAction {
2019
+ label: string;
2020
+ onClick: () => void;
2021
+ }
2022
+ interface ClxToastOptions {
2023
+ type?: ClxToastType;
2024
+ message: string;
2025
+ title?: string;
2026
+ icon?: string;
2027
+ position?: ClxToastPosition;
2028
+ duration?: number;
2029
+ showProgress?: boolean;
2030
+ pauseOnHover?: boolean;
2031
+ animationIn?: ClxAnimateName;
2032
+ animationOut?: ClxAnimateName;
2033
+ animationDuration?: number;
2034
+ action?: ClxToastAction;
2035
+ }
2036
+ interface ClxToastEntry extends Required<Omit<ClxToastOptions, 'title' | 'action' | 'icon'>> {
2037
+ id: string;
2038
+ title?: string;
2039
+ icon?: string;
2040
+ action?: ClxToastAction;
2041
+ removing: boolean;
2042
+ }
2208
2043
 
2209
- declare class ClxUploadComponent implements ControlValueAccessor {
2210
- private readonly _themeSvc;
2211
- readonly multiple: _angular_core.InputSignal<boolean>;
2212
- readonly accept: _angular_core.InputSignal<string>;
2213
- /** Max file size in bytes. 0 = no limit. */
2214
- readonly maxFileSize: _angular_core.InputSignal<number>;
2215
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
2216
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
2217
- readonly size: _angular_core.InputSignal<ClxUploadSize | undefined>;
2218
- protected readonly _size: _angular_core.Signal<ClxUploadSize>;
2219
- readonly disabled: _angular_core.InputSignal<boolean>;
2220
- readonly onUploadError: _angular_core.OutputEmitterRef<{
2221
- file: File;
2222
- error: ClxUploadError;
2223
- }>;
2224
- readonly onUploadSuccess: _angular_core.OutputEmitterRef<File[]>;
2225
- readonly _files: _angular_core.WritableSignal<File[]>;
2226
- readonly _isDragging: _angular_core.WritableSignal<boolean>;
2227
- readonly _errorKey: _angular_core.WritableSignal<ClxUploadError | null>;
2228
- private readonly _ngControl;
2229
- private readonly _cvaDisabled;
2230
- private _cvaConnected;
2231
- private _onChange;
2232
- private _onTouched;
2233
- protected readonly _fileInput: _angular_core.Signal<ElementRef<HTMLInputElement>>;
2044
+ declare class ClxToastComponent implements OnInit, OnDestroy {
2045
+ readonly entry: _angular_core.InputSignal<ClxToastEntry>;
2046
+ readonly dismiss: _angular_core.OutputEmitterRef<string>;
2047
+ private readonly _animate;
2048
+ private readonly _el;
2049
+ private readonly _zone;
2234
2050
  constructor();
2235
- protected readonly _disabled: _angular_core.Signal<boolean>;
2236
- protected readonly _sizeConfig: _angular_core.Signal<{
2237
- zone: string;
2238
- icon: "sm" | "md" | "lg" | "xl";
2239
- title: string;
2240
- hint: string;
2241
- }>;
2242
- protected readonly _isError: _angular_core.Signal<boolean>;
2243
- protected readonly _fileItemClass: _angular_core.Signal<string>;
2244
- protected readonly _fileIconClass: _angular_core.Signal<string>;
2245
- protected readonly _zoneClass: _angular_core.Signal<string>;
2246
- protected readonly _iconClass: _angular_core.Signal<string>;
2247
- protected readonly _linkClass: _angular_core.Signal<string>;
2248
- protected readonly _buttonText: _angular_core.Signal<"Seleccionar archivos" | "Seleccionar archivo">;
2249
- protected readonly _hintText: _angular_core.Signal<string>;
2250
- protected readonly _errorMessage: _angular_core.Signal<string | null>;
2251
- private readonly _multipleEffect;
2252
- writeValue(value: File | File[] | null): void;
2253
- registerOnChange(fn: (v: File | File[] | null) => void): void;
2254
- registerOnTouched(fn: () => void): void;
2255
- setDisabledState(disabled: boolean): void;
2256
- protected _onInputChange(event: Event): void;
2257
- protected _onDragOver(event: DragEvent): void;
2258
- protected _onDragLeave(): void;
2259
- protected _onDrop(event: DragEvent): void;
2260
- protected _removeFile(file: File): void;
2261
- private _addFiles;
2262
- private _isAccepted;
2263
- private _emit;
2264
- protected _formatSize(bytes: number): string;
2265
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxUploadComponent, never>;
2266
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxUploadComponent, "clx-upload", never, { "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "onUploadError": "onUploadError"; "onUploadSuccess": "onUploadSuccess"; }, never, ["[clx-label]"], true, never>;
2051
+ protected readonly _progressPct: _angular_core.WritableSignal<number>;
2052
+ private _timerHandle;
2053
+ private _paused;
2054
+ private _elapsed;
2055
+ private _destroyed;
2056
+ protected readonly _icon: _angular_core.Signal<string>;
2057
+ protected readonly _borderClass: _angular_core.Signal<string>;
2058
+ protected readonly _colorClass: _angular_core.Signal<string>;
2059
+ protected readonly _progressColor: _angular_core.Signal<string>;
2060
+ protected readonly _buttonColor: _angular_core.Signal<codexly_ui.ClxColorInput>;
2061
+ private get _card();
2062
+ ngOnInit(): void;
2063
+ ngOnDestroy(): void;
2064
+ protected _onMouseEnter(): void;
2065
+ protected _onMouseLeave(): void;
2066
+ protected _onAction(): void;
2067
+ playExitAnimation(): Promise<void>;
2068
+ private _startTimer;
2069
+ private _stopTimer;
2070
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxToastComponent, never>;
2071
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxToastComponent, "clx-toast", never, { "entry": { "alias": "entry"; "required": true; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, never, true, never>;
2267
2072
  }
2268
2073
 
2269
- declare class ClxStepComponent {
2270
- readonly label: _angular_core.InputSignal<string>;
2271
- readonly description: _angular_core.InputSignal<string>;
2272
- readonly icon: _angular_core.InputSignal<string>;
2273
- /** Bind to a form's valid state or a custom signal to gate the Next button */
2274
- readonly isValid: _angular_core.InputSignal<boolean>;
2275
- /** Exposed so the parent wizard can toggle visibility imperatively */
2276
- readonly nativeEl: HTMLElement;
2277
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxStepComponent, never>;
2278
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxStepComponent, "clx-step", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "isValid": { "alias": "isValid"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2074
+ declare class ClxToastContainerComponent {
2075
+ readonly entries: _angular_core.ModelSignal<ClxToastEntry[]>;
2076
+ readonly position: _angular_core.ModelSignal<ClxToastPosition>;
2077
+ toastRefs: QueryList<ClxToastComponent>;
2078
+ protected readonly _positionClass: _angular_core.Signal<string>;
2079
+ requestDismiss(id: string): Promise<void>;
2080
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxToastContainerComponent, never>;
2081
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxToastContainerComponent, "clx-toast-container", never, { "entries": { "alias": "entries"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; }, { "entries": "entriesChange"; "position": "positionChange"; }, never, never, true, never>;
2279
2082
  }
2280
2083
 
2281
- type ClxWizardColor = ClxColorInput;
2282
- type ClxWizardOrientation = 'horizontal' | 'vertical';
2283
- type ClxWizardStepStatus = 'pending' | 'active' | 'completed' | 'error';
2084
+ declare class ClxTabDirective {
2085
+ readonly templateRef: TemplateRef<unknown>;
2086
+ readonly clxTabPanel: _angular_core.InputSignal<string>;
2087
+ constructor(templateRef: TemplateRef<unknown>);
2088
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTabDirective, never>;
2089
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxTabDirective, "[clxTabPanel]", never, { "clxTabPanel": { "alias": "clxTabPanel"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
2090
+ }
2284
2091
 
2285
- declare class ClxWizardComponent implements AfterContentInit {
2092
+ declare class ClxTabsComponent {
2286
2093
  private readonly _themeSvc;
2287
- readonly color: _angular_core.InputSignal<codexly_ui.ClxColorInput | undefined>;
2288
- protected readonly _color: _angular_core.Signal<codexly_ui.ClxColorInput>;
2289
- readonly orientation: _angular_core.InputSignal<ClxWizardOrientation>;
2290
- readonly linear: _angular_core.InputSignal<boolean>;
2291
- readonly prevLabel: _angular_core.InputSignal<string>;
2292
- readonly nextLabel: _angular_core.InputSignal<string>;
2293
- readonly finishLabel: _angular_core.InputSignal<string>;
2294
- readonly stepChange: _angular_core.OutputEmitterRef<number>;
2295
- readonly finish: _angular_core.OutputEmitterRef<void>;
2296
- private readonly _destroyRef;
2297
- private _stepQuery;
2298
- protected _steps: ClxStepComponent[];
2299
- protected readonly _currentIndex: _angular_core.WritableSignal<number>;
2300
- ngAfterContentInit(): void;
2301
- private _syncActiveAttrs;
2302
- protected readonly _lastIndex: _angular_core.Signal<number>;
2303
- protected readonly _currentStepValid: _angular_core.Signal<boolean>;
2304
- protected readonly _connectorFillColor: _angular_core.Signal<string>;
2305
- protected readonly _currentIndexStr: _angular_core.Signal<string>;
2306
- protected readonly _tabItems: _angular_core.Signal<ClxTabItem[]>;
2307
- protected _onTabChange(id: string): void;
2308
- protected _stepStatus(i: number): 'active' | 'completed' | 'pending' | 'error';
2309
- protected _isTabDisabled(i: number): boolean;
2310
- protected _onCircleClick(i: number): void;
2311
- next(): void;
2312
- prev(): void;
2313
- goTo(index: number): void;
2314
- private _goTo;
2315
- protected _onFinish(): void;
2316
- protected readonly _rootClass: _angular_core.Signal<string>;
2317
- protected _circleClass(i: number): string;
2318
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxWizardComponent, never>;
2319
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxWizardComponent, "clx-wizard", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "linear": { "alias": "linear"; "required": false; "isSignal": true; }; "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "finishLabel": { "alias": "finishLabel"; "required": false; "isSignal": true; }; }, { "stepChange": "stepChange"; "finish": "finish"; }, ["_stepQuery"], ["*", "[clx-wizard-footer-start]"], true, never>;
2094
+ readonly tabs: _angular_core.InputSignal<ClxTabItem[]>;
2095
+ readonly clxColor: _angular_core.InputSignal<ClxColorInput | undefined>;
2096
+ readonly activeTab: _angular_core.ModelSignal<string>;
2097
+ protected readonly _clxColor: _angular_core.Signal<ClxColorInput>;
2098
+ protected readonly _panels: _angular_core.Signal<readonly ClxTabDirective[]>;
2099
+ protected readonly _underlineClass: _angular_core.Signal<string>;
2100
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTabsComponent, never>;
2101
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTabsComponent, "clx-tabs", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "clxColor": { "alias": "clxColor"; "required": false; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; }, ["_panels"], never, true, never>;
2320
2102
  }
2321
2103
 
2322
- declare class ClxAppLayoutComponent implements OnInit, OnDestroy {
2323
- private readonly _zone;
2324
- private readonly _document;
2325
- readonly activeColor: _angular_core.InputSignal<ClxColorInput | undefined>;
2326
- readonly _sidebarOpen: _angular_core.WritableSignal<boolean>;
2327
- readonly collapsed: _angular_core.WritableSignal<boolean>;
2328
- readonly _hovered: _angular_core.WritableSignal<boolean>;
2329
- private readonly _isMobile;
2330
- readonly collapsedChange: _angular_core.OutputEmitterRef<boolean>;
2331
- readonly expandedChange: _angular_core.OutputEmitterRef<boolean>;
2332
- constructor();
2333
- protected readonly _showBackdrop: _angular_core.Signal<boolean>;
2334
- readonly _isExpanded: _angular_core.Signal<boolean>;
2335
- protected readonly _sidebarCls: _angular_core.Signal<string>;
2336
- private _mql;
2337
- private _mqlListener;
2338
- ngOnInit(): void;
2339
- ngOnDestroy(): void;
2340
- _toggleCollapsed(): void;
2341
- _onSidebarEnter(): void;
2342
- _onSidebarLeave(): void;
2343
- toggleSidebar(): void;
2344
- openSidebar(): void;
2345
- closeSidebar(): void;
2346
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxAppLayoutComponent, never>;
2347
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxAppLayoutComponent, "clx-app-layout", never, { "activeColor": { "alias": "activeColor"; "required": false; "isSignal": true; }; }, { "collapsedChange": "collapsedChange"; "expandedChange": "expandedChange"; }, never, ["clx-brand", "[clx-sidebar]", "[clx-header]", "*"], true, never>;
2104
+ type ClxTreeSize = 'sm' | 'md' | 'lg';
2105
+ type ClxTreeVariant = 'default' | 'lines';
2106
+ interface ClxTreeNode {
2107
+ id: string | number;
2108
+ label: string;
2109
+ icon?: string;
2110
+ children?: ClxTreeNode[];
2111
+ disabled?: boolean;
2112
+ data?: unknown;
2348
2113
  }
2349
-
2350
- declare class ClxBrandComponent {
2351
- readonly logo: _angular_core.InputSignal<string>;
2352
- readonly name: _angular_core.InputSignal<string>;
2353
- readonly description: _angular_core.InputSignal<string>;
2354
- readonly collapsed: _angular_core.InputSignal<boolean>;
2355
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxBrandComponent, never>;
2356
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxBrandComponent, "clx-brand", never, { "logo": { "alias": "logo"; "required": true; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2114
+ interface ClxTreeSelectEvent {
2115
+ node: ClxTreeNode;
2116
+ selected: boolean;
2117
+ }
2118
+ interface ClxTreeExpandEvent {
2119
+ node: ClxTreeNode;
2120
+ expanded: boolean;
2357
2121
  }
2358
2122
 
2359
- declare class ClxMenuItemComponent {
2123
+ declare class ClxTreeComponent {
2360
2124
  private readonly _themeSvc;
2361
- readonly label: _angular_core.InputSignal<string>;
2362
- readonly icon: _angular_core.InputSignal<string>;
2363
- readonly active: _angular_core.InputSignal<boolean>;
2125
+ readonly nodes: _angular_core.InputSignal<ClxTreeNode[]>;
2364
2126
  readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
2365
- readonly nested: _angular_core.InputSignal<boolean>;
2366
- readonly collapsed: _angular_core.InputSignal<boolean>;
2367
- readonly routerLink: _angular_core.InputSignal<string | any[]>;
2368
- readonly routerLinkActiveOptions: _angular_core.InputSignal<{
2369
- exact: boolean;
2127
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
2128
+ readonly size: _angular_core.InputSignal<ClxTreeSize | undefined>;
2129
+ readonly variant: _angular_core.InputSignal<ClxTreeVariant>;
2130
+ readonly selectable: _angular_core.InputSignal<boolean>;
2131
+ readonly multiSelect: _angular_core.InputSignal<boolean>;
2132
+ readonly expandAll: _angular_core.InputSignal<boolean>;
2133
+ readonly selectedIds: _angular_core.ModelSignal<(string | number)[]>;
2134
+ readonly expandedIds: _angular_core.ModelSignal<(string | number)[]>;
2135
+ readonly selectChange: _angular_core.OutputEmitterRef<ClxTreeSelectEvent>;
2136
+ readonly expandChange: _angular_core.OutputEmitterRef<ClxTreeExpandEvent>;
2137
+ protected readonly _treeSize: _angular_core.Signal<ClxTreeSize>;
2138
+ protected readonly _s: _angular_core.Signal<{
2139
+ row: string;
2140
+ text: string;
2141
+ icon: "xs" | "sm" | "md";
2142
+ indent: string;
2370
2143
  }>;
2371
- readonly itemClick: _angular_core.OutputEmitterRef<void>;
2372
- private readonly _resolvedColor;
2373
- private readonly _geom;
2374
- protected readonly _iconCls: _angular_core.Signal<string>;
2375
- protected readonly _idleCls: _angular_core.Signal<string>;
2376
- protected readonly _activeCls: _angular_core.Signal<string>;
2377
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxMenuItemComponent, never>;
2378
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxMenuItemComponent, "clx-menu-item", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "nested": { "alias": "nested"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "routerLink": { "alias": "routerLink"; "required": false; "isSignal": true; }; "routerLinkActiveOptions": { "alias": "routerLinkActiveOptions"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
2144
+ protected readonly _indentPx: _angular_core.Signal<16 | 20 | 24>;
2145
+ protected readonly _rootClass: _angular_core.Signal<string>;
2146
+ protected _isExpanded(id: string | number): boolean;
2147
+ protected _isSelected(id: string | number): boolean;
2148
+ protected _rowClass(node: ClxTreeNode, selected: boolean): string;
2149
+ protected _iconClass(selected: boolean): string;
2150
+ protected _labelClass(node: ClxTreeNode, selected: boolean): string;
2151
+ protected _badgeClass(selected: boolean): string;
2152
+ protected _lineClass(): string;
2153
+ protected _toggleExpand(node: ClxTreeNode): void;
2154
+ protected _onRowClick(node: ClxTreeNode): void;
2155
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTreeComponent, never>;
2156
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTreeComponent, "clx-tree", never, { "nodes": { "alias": "nodes"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "multiSelect": { "alias": "multiSelect"; "required": false; "isSignal": true; }; "expandAll": { "alias": "expandAll"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; "expandedIds": { "alias": "expandedIds"; "required": false; "isSignal": true; }; }, { "selectedIds": "selectedIdsChange"; "expandedIds": "expandedIdsChange"; "selectChange": "selectChange"; "expandChange": "expandChange"; }, never, never, true, never>;
2379
2157
  }
2380
2158
 
2381
- declare class ClxMenuComponent implements AfterViewInit {
2159
+ type ClxPaginationSize = 'sm' | 'md' | 'lg';
2160
+ interface ClxPageChangeEvent {
2161
+ page: number;
2162
+ pageSize: number;
2163
+ }
2164
+ interface ClxPageSizeChangeEvent {
2165
+ pageSize: number;
2166
+ }
2167
+
2168
+ type PageItem = {
2169
+ type: 'page';
2170
+ page: number;
2171
+ } | {
2172
+ type: 'ellipsis';
2173
+ id: string;
2174
+ };
2175
+ declare class ClxPaginationComponent {
2382
2176
  private readonly _themeSvc;
2383
- readonly label: _angular_core.InputSignal<string>;
2384
- readonly icon: _angular_core.InputSignal<string>;
2177
+ readonly totalItems: _angular_core.InputSignal<number>;
2385
2178
  readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
2386
2179
  protected readonly _color: _angular_core.Signal<ClxColorInput>;
2387
- readonly collapsed: _angular_core.InputSignal<boolean>;
2388
- readonly active: _angular_core.InputSignal<boolean>;
2389
- readonly routerLink: _angular_core.InputSignal<string | any[]>;
2390
- readonly routerLinkActiveOptions: _angular_core.InputSignal<{
2391
- exact: boolean;
2392
- }>;
2393
- readonly _isExpanded: _angular_core.WritableSignal<boolean>;
2394
- private readonly _rla?;
2180
+ readonly size: _angular_core.InputSignal<ClxPaginationSize | undefined>;
2181
+ readonly showPageSize: _angular_core.InputSignal<boolean>;
2182
+ /** Opciones manuales. Si está vacío (default) se calculan automáticamente desde totalItems. */
2183
+ readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
2184
+ readonly currentPage: _angular_core.ModelSignal<number>;
2185
+ readonly pageSize: _angular_core.ModelSignal<number>;
2186
+ readonly pageChange: _angular_core.OutputEmitterRef<ClxPageChangeEvent>;
2187
+ readonly sizeChange: _angular_core.OutputEmitterRef<ClxPageSizeChangeEvent>;
2395
2188
  private readonly _destroyRef;
2189
+ protected readonly _pageSizeCtrl: FormControl<number | null>;
2396
2190
  constructor();
2397
- ngAfterViewInit(): void;
2398
- protected readonly _iconCls: _angular_core.Signal<string>;
2399
- protected _buttonCls(isActive: boolean): string;
2400
- protected readonly NAV_CHILDREN_WRAPPER = "grid transition-[grid-template-rows] duration-300 ease-in-out";
2401
- protected readonly NAV_CHILDREN_INNER = "overflow-hidden";
2402
- protected readonly NAV_CHILDREN_LIST = "ml-6 py-1 space-y-0.5";
2403
- protected _toggle(): void;
2404
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxMenuComponent, never>;
2405
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxMenuComponent, "clx-menu", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "routerLink": { "alias": "routerLink"; "required": false; "isSignal": true; }; "routerLinkActiveOptions": { "alias": "routerLinkActiveOptions"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2191
+ protected readonly _size: _angular_core.Signal<ClxPaginationSize>;
2192
+ protected readonly _cfg: _angular_core.Signal<{
2193
+ btnSize: "xs" | "sm" | "md" | "lg";
2194
+ selectSize: "sm" | "md" | "lg";
2195
+ text: string;
2196
+ gap: string;
2197
+ }>;
2198
+ readonly totalPages: _angular_core.Signal<number>;
2199
+ private readonly _rangeStart;
2200
+ private readonly _rangeEnd;
2201
+ protected readonly _infoText: _angular_core.Signal<string>;
2202
+ protected readonly _pageSizeOptions: _angular_core.Signal<ClxSelectOption[]>;
2203
+ protected readonly _pageItems: _angular_core.Signal<PageItem[]>;
2204
+ protected readonly _wrapClass: _angular_core.Signal<string>;
2205
+ protected readonly _infoClass: _angular_core.Signal<string>;
2206
+ protected readonly _ellipsisClass: _angular_core.Signal<string>;
2207
+ protected _goTo(page: number): void;
2208
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxPaginationComponent, never>;
2209
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxPaginationComponent, "clx-pagination", never, { "totalItems": { "alias": "totalItems"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "showPageSize": { "alias": "showPageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; }, { "currentPage": "currentPageChange"; "pageSize": "pageSizeChange"; "pageChange": "pageChange"; "sizeChange": "sizeChange"; }, never, never, true, never>;
2406
2210
  }
2407
2211
 
2408
- declare class ClxNavGroupComponent {
2409
- readonly label: _angular_core.InputSignal<string>;
2410
- readonly collapsed: _angular_core.InputSignal<boolean>;
2411
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
2412
- readonly labelClass: _angular_core.Signal<string>;
2413
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxNavGroupComponent, never>;
2414
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxNavGroupComponent, "clx-nav-group", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2212
+ type ClxFilterFieldType = 'checkbox' | 'radio' | 'range' | 'select' | 'date-range';
2213
+ interface ClxFilterOption {
2214
+ value: string | number;
2215
+ label: string;
2216
+ count?: number;
2415
2217
  }
2416
-
2417
- interface ClxProfileMenuItem {
2218
+ interface ClxFilterField {
2219
+ key: string;
2418
2220
  label: string;
2419
- icon: string;
2420
- action: string;
2221
+ type: ClxFilterFieldType;
2222
+ options?: ClxFilterOption[];
2223
+ min?: number;
2224
+ max?: number;
2225
+ step?: number;
2226
+ unit?: string;
2227
+ collapsed?: boolean;
2421
2228
  }
2422
- declare class ClxProfileComponent {
2423
- readonly firstName: _angular_core.InputSignal<string>;
2424
- readonly lastName: _angular_core.InputSignal<string>;
2425
- readonly username: _angular_core.InputSignal<string>;
2426
- readonly role: _angular_core.InputSignal<string>;
2427
- readonly avatarSrc: _angular_core.InputSignal<string | null>;
2428
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
2429
- readonly menuItems: _angular_core.InputSignal<ClxProfileMenuItem[]>;
2430
- readonly signOutLabel: _angular_core.InputSignal<string>;
2431
- readonly menuAction: _angular_core.OutputEmitterRef<string>;
2432
- readonly signOut: _angular_core.OutputEmitterRef<void>;
2229
+ type ClxFilterValue = (string | number)[] | string | number | {
2230
+ min: number;
2231
+ max: number;
2232
+ } | {
2233
+ from: Date;
2234
+ to: Date;
2235
+ } | null;
2236
+ type ClxFilterValues = Record<string, ClxFilterValue>;
2237
+ interface ClxFilterChangeEvent {
2238
+ key: string;
2239
+ value: ClxFilterValue;
2240
+ all: ClxFilterValues;
2241
+ }
2242
+
2243
+ declare class ClxFilterPanelComponent {
2433
2244
  private readonly _themeSvc;
2245
+ readonly fields: _angular_core.InputSignal<ClxFilterField[]>;
2246
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
2247
+ readonly showApply: _angular_core.InputSignal<boolean>;
2434
2248
  protected readonly _color: _angular_core.Signal<ClxColorInput>;
2435
- private readonly _sso;
2436
- readonly _scrollStrategy: _angular_cdk_overlay.RepositionScrollStrategy;
2437
- readonly _positions: ConnectedPosition[];
2438
- protected readonly _isOpen: _angular_core.WritableSignal<boolean>;
2439
- readonly fullName: _angular_core.Signal<string>;
2440
- protected readonly _initials: _angular_core.Signal<string>;
2441
- protected readonly _ringClass: _angular_core.Signal<string>;
2442
- protected readonly _headerBgClass: _angular_core.Signal<string>;
2443
- protected _toggle(): void;
2444
- protected _close(): void;
2445
- protected _onKeydown(event: KeyboardEvent): void;
2446
- protected _onAction(action: string): void;
2447
- protected _onSignOut(): void;
2448
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxProfileComponent, never>;
2449
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxProfileComponent, "clx-profile", never, { "firstName": { "alias": "firstName"; "required": false; "isSignal": true; }; "lastName": { "alias": "lastName"; "required": false; "isSignal": true; }; "username": { "alias": "username"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "menuItems": { "alias": "menuItems"; "required": false; "isSignal": true; }; "signOutLabel": { "alias": "signOutLabel"; "required": false; "isSignal": true; }; }, { "menuAction": "menuAction"; "signOut": "signOut"; }, never, never, true, never>;
2249
+ readonly values: _angular_core.ModelSignal<ClxFilterValues>;
2250
+ readonly filterChange: _angular_core.OutputEmitterRef<ClxFilterChangeEvent>;
2251
+ readonly applyChange: _angular_core.OutputEmitterRef<ClxFilterValues>;
2252
+ private readonly _collapsed;
2253
+ protected readonly _activeCount: _angular_core.Signal<number>;
2254
+ protected _isCollapsed(key: string): boolean;
2255
+ protected _toggleField(key: string): void;
2256
+ protected _hasValue(key: string): boolean;
2257
+ protected _getValue(key: string): ClxFilterValue;
2258
+ protected _getRangeValue(field: ClxFilterField): {
2259
+ min: number;
2260
+ max: number;
2261
+ };
2262
+ protected _isChecked(key: string, val: string | number): boolean;
2263
+ protected _valueLabel(field: ClxFilterField): string;
2264
+ protected _toggleCheck(key: string, val: string | number, checked: boolean): void;
2265
+ protected _setRange(key: string, min: number, max: number, field: ClxFilterField): void;
2266
+ protected _set(key: string, value: ClxFilterValue): void;
2267
+ protected _reset(): void;
2268
+ protected _apply(): void;
2269
+ protected _badgeCls(): string;
2270
+ protected _fieldBadgeCls(): string;
2271
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxFilterPanelComponent, never>;
2272
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxFilterPanelComponent, "clx-filter-panel", never, { "fields": { "alias": "fields"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "showApply": { "alias": "showApply"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; }, { "values": "valuesChange"; "filterChange": "filterChange"; "applyChange": "applyChange"; }, never, never, true, never>;
2273
+ }
2274
+
2275
+ declare class ClxCarouselDirective {
2276
+ readonly templateRef: TemplateRef<unknown>;
2277
+ constructor(templateRef: TemplateRef<unknown>);
2278
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCarouselDirective, never>;
2279
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxCarouselDirective, "[clxSlide]", never, {}, {}, never, never, true, never>;
2280
+ }
2281
+
2282
+ type ClxCarouselAspectRatio = '16/9' | '4/3' | '1/1' | '3/2' | 'auto';
2283
+ interface ClxCarouselConfig {
2284
+ clxColor: ClxColor;
2285
+ autoPlay: boolean;
2286
+ interval: number;
2287
+ loop: boolean;
2288
+ aspectRatio: ClxCarouselAspectRatio;
2289
+ }
2290
+
2291
+ declare class ClxCarouselComponent implements AfterContentInit, OnDestroy {
2292
+ private readonly _themeSvc;
2293
+ readonly clxColor: _angular_core.InputSignal<ClxColorInput | undefined>;
2294
+ protected readonly _clxColor: _angular_core.Signal<ClxColorInput>;
2295
+ readonly autoPlay: _angular_core.InputSignal<boolean>;
2296
+ readonly interval: _angular_core.InputSignal<number>;
2297
+ readonly loop: _angular_core.InputSignal<boolean>;
2298
+ readonly aspectRatio: _angular_core.InputSignal<ClxCarouselAspectRatio>;
2299
+ readonly transparent: _angular_core.InputSignal<boolean>;
2300
+ readonly currentPageIndex: _angular_core.WritableSignal<number>;
2301
+ protected readonly _slides: _angular_core.Signal<readonly ClxCarouselDirective[]>;
2302
+ private _autoPlayTimer;
2303
+ private _touchStartX;
2304
+ private readonly _zone;
2305
+ protected readonly _aspectClass: _angular_core.Signal<string>;
2306
+ protected readonly _viewportClass: _angular_core.Signal<string>;
2307
+ protected readonly _dotItems: _angular_core.Signal<{
2308
+ idx: number;
2309
+ cls: string;
2310
+ }[]>;
2311
+ constructor();
2312
+ ngAfterContentInit(): void;
2313
+ ngOnDestroy(): void;
2314
+ next(): void;
2315
+ prev(): void;
2316
+ goTo(index: number): void;
2317
+ protected _onTouchStart(e: TouchEvent): void;
2318
+ protected _onTouchEnd(e: TouchEvent): void;
2319
+ private _startTimer;
2320
+ private _clearTimer;
2321
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCarouselComponent, never>;
2322
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxCarouselComponent, "clx-carousel", never, { "clxColor": { "alias": "clxColor"; "required": false; "isSignal": true; }; "autoPlay": { "alias": "autoPlay"; "required": false; "isSignal": true; }; "interval": { "alias": "interval"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; }, {}, ["_slides"], never, true, never>;
2450
2323
  }
2451
2324
 
2452
2325
  interface ClxTableColumn<T = any> {
@@ -2489,63 +2362,310 @@ declare class ClxCellDirective<T> {
2489
2362
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxCellDirective<any>, never>;
2490
2363
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxCellDirective<any>, "ng-template[clxCell]", never, {}, {}, never, never, true, never>;
2491
2364
  }
2492
- declare class ClxColumnDefDirective<T> {
2493
- name: string;
2494
- readonly headerCell: _angular_core.Signal<ClxHeaderCellDirective<any> | undefined>;
2495
- readonly cell: _angular_core.Signal<ClxCellDirective<any> | undefined>;
2496
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxColumnDefDirective<any>, never>;
2497
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxColumnDefDirective<any>, "[clxColumn]", never, { "name": { "alias": "clxColumn"; "required": false; }; }, {}, ["headerCell", "cell"], never, true, never>;
2365
+ declare class ClxColumnDefDirective<T> {
2366
+ name: string;
2367
+ readonly headerCell: _angular_core.Signal<ClxHeaderCellDirective<any> | undefined>;
2368
+ readonly cell: _angular_core.Signal<ClxCellDirective<any> | undefined>;
2369
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxColumnDefDirective<any>, never>;
2370
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxColumnDefDirective<any>, "[clxColumn]", never, { "name": { "alias": "clxColumn"; "required": false; }; }, {}, ["headerCell", "cell"], never, true, never>;
2371
+ }
2372
+
2373
+ declare class ClxTableComponent<T = any> {
2374
+ private readonly _themeSvc;
2375
+ readonly data: _angular_core.InputSignal<T[]>;
2376
+ readonly columns: _angular_core.InputSignal<ClxTableColumn<T>[]>;
2377
+ readonly loading: _angular_core.InputSignal<boolean>;
2378
+ readonly selectable: _angular_core.InputSignal<boolean>;
2379
+ readonly singleSelect: _angular_core.InputSignal<boolean>;
2380
+ readonly searchable: _angular_core.InputSignal<boolean>;
2381
+ readonly pagination: _angular_core.InputSignal<boolean>;
2382
+ readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
2383
+ protected readonly _color: _angular_core.Signal<ClxColorInput>;
2384
+ readonly emptyIcon: _angular_core.InputSignal<string>;
2385
+ readonly emptyTitle: _angular_core.InputSignal<string>;
2386
+ readonly emptyDescription: _angular_core.InputSignal<string>;
2387
+ readonly sortKey: _angular_core.ModelSignal<string | null>;
2388
+ readonly sortDir: _angular_core.ModelSignal<ClxTableSort | null>;
2389
+ readonly pageIndex: _angular_core.ModelSignal<number>;
2390
+ readonly pageSize: _angular_core.ModelSignal<number>;
2391
+ readonly _currentPage: _angular_core.ModelSignal<number>;
2392
+ readonly searchQuery: _angular_core.ModelSignal<string>;
2393
+ readonly selectedItems: _angular_core.ModelSignal<T[]>;
2394
+ readonly sortChange: _angular_core.OutputEmitterRef<ClxTableSortEvent>;
2395
+ readonly pageChange: _angular_core.OutputEmitterRef<ClxTablePageEvent>;
2396
+ readonly selectionChange: _angular_core.OutputEmitterRef<ClxTableSelectionEvent<T>>;
2397
+ private readonly _columnDefs;
2398
+ protected _onPaginationPageChange(page: number): void;
2399
+ protected readonly _tableClass: _angular_core.Signal<string>;
2400
+ protected readonly _headerClass: _angular_core.Signal<string>;
2401
+ protected readonly _headerCellClass: _angular_core.Signal<string>;
2402
+ protected readonly _cellClass: _angular_core.Signal<string>;
2403
+ protected readonly _rowClass: _angular_core.Signal<string>;
2404
+ private readonly _columnDefMap;
2405
+ protected _getColumnDef(key: string): ClxColumnDefDirective<T> | undefined;
2406
+ protected readonly _filteredData: _angular_core.Signal<T[]>;
2407
+ protected readonly _paginatedData: _angular_core.Signal<T[]>;
2408
+ protected readonly _totalItems: _angular_core.Signal<number>;
2409
+ protected readonly _emptyTitle: _angular_core.Signal<string>;
2410
+ protected readonly _emptyDescription: _angular_core.Signal<string>;
2411
+ protected readonly _allSelected: _angular_core.Signal<boolean>;
2412
+ protected _isSelected(item: T): boolean;
2413
+ protected _getAlignClass(align: 'left' | 'center' | 'right'): string;
2414
+ protected _getHeaderCellClass(col: ClxTableColumn<T>): string;
2415
+ protected _getDataCellClass(col: ClxTableColumn<T>): string;
2416
+ protected _getCellValue(item: T, key: string): unknown;
2417
+ protected _handleSort(key: string): void;
2418
+ protected _handleSelectAll(checked: boolean): void;
2419
+ protected _handleSelectItem(item: T, checked: boolean): void;
2420
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTableComponent<any>, never>;
2421
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTableComponent<any>, "clx-table", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "singleSelect": { "alias": "singleSelect"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "emptyIcon": { "alias": "emptyIcon"; "required": false; "isSignal": true; }; "emptyTitle": { "alias": "emptyTitle"; "required": false; "isSignal": true; }; "emptyDescription": { "alias": "emptyDescription"; "required": false; "isSignal": true; }; "sortKey": { "alias": "sortKey"; "required": false; "isSignal": true; }; "sortDir": { "alias": "sortDir"; "required": false; "isSignal": true; }; "pageIndex": { "alias": "pageIndex"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "_currentPage": { "alias": "_currentPage"; "required": false; "isSignal": true; }; "searchQuery": { "alias": "searchQuery"; "required": false; "isSignal": true; }; "selectedItems": { "alias": "selectedItems"; "required": false; "isSignal": true; }; }, { "sortKey": "sortKeyChange"; "sortDir": "sortDirChange"; "pageIndex": "pageIndexChange"; "pageSize": "pageSizeChange"; "_currentPage": "_currentPageChange"; "searchQuery": "searchQueryChange"; "selectedItems": "selectedItemsChange"; "sortChange": "sortChange"; "pageChange": "pageChange"; "selectionChange": "selectionChange"; }, ["_columnDefs"], never, true, never>;
2422
+ }
2423
+
2424
+ declare class ClxPageNotFoundComponent {
2425
+ readonly title: _angular_core.InputSignal<string>;
2426
+ readonly description: _angular_core.InputSignal<string>;
2427
+ readonly backLabel: _angular_core.InputSignal<string>;
2428
+ readonly back: _angular_core.OutputEmitterRef<void>;
2429
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxPageNotFoundComponent, never>;
2430
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxPageNotFoundComponent, "clx-page-not-found", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; }, { "back": "back"; }, never, never, true, never>;
2431
+ }
2432
+
2433
+ declare class ClxPageUnauthorizedComponent {
2434
+ readonly code: _angular_core.InputSignal<number>;
2435
+ readonly title: _angular_core.InputSignal<string>;
2436
+ readonly description: _angular_core.InputSignal<string>;
2437
+ readonly loginLabel: _angular_core.InputSignal<string>;
2438
+ readonly backLabel: _angular_core.InputSignal<string>;
2439
+ readonly login: _angular_core.OutputEmitterRef<void>;
2440
+ readonly back: _angular_core.OutputEmitterRef<void>;
2441
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxPageUnauthorizedComponent, never>;
2442
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxPageUnauthorizedComponent, "clx-page-unauthorized", never, { "code": { "alias": "code"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "loginLabel": { "alias": "loginLabel"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; }, { "login": "login"; "back": "back"; }, never, never, true, never>;
2443
+ }
2444
+
2445
+ declare class ClxPageServerErrorComponent {
2446
+ readonly title: _angular_core.InputSignal<string>;
2447
+ readonly description: _angular_core.InputSignal<string>;
2448
+ readonly retryLabel: _angular_core.InputSignal<string>;
2449
+ readonly backLabel: _angular_core.InputSignal<string>;
2450
+ readonly errorId: _angular_core.InputSignal<string>;
2451
+ readonly retry: _angular_core.OutputEmitterRef<void>;
2452
+ readonly back: _angular_core.OutputEmitterRef<void>;
2453
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxPageServerErrorComponent, never>;
2454
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxPageServerErrorComponent, "clx-page-server-error", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "retryLabel": { "alias": "retryLabel"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "errorId": { "alias": "errorId"; "required": false; "isSignal": true; }; }, { "retry": "retry"; "back": "back"; }, never, never, true, never>;
2455
+ }
2456
+
2457
+ declare class ClxPageEmptyComponent {
2458
+ private readonly _themeSvc;
2459
+ readonly icon: _angular_core.InputSignal<string>;
2460
+ readonly title: _angular_core.InputSignal<string>;
2461
+ readonly description: _angular_core.InputSignal<string>;
2462
+ readonly ctaLabel: _angular_core.InputSignal<string>;
2463
+ readonly ctaIcon: _angular_core.InputSignal<string>;
2464
+ readonly ctaColor: _angular_core.InputSignal<ClxColorInput | undefined>;
2465
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
2466
+ protected readonly _ctaColor: _angular_core.Signal<ClxColorInput>;
2467
+ readonly cta: _angular_core.OutputEmitterRef<void>;
2468
+ protected _iconWrap(): string;
2469
+ protected _iconSize(): 'sm' | 'md' | 'lg' | 'xl';
2470
+ protected _titleCls(): "text-sm font-semibold text-clx-text-label mb-1" | "text-xl font-semibold text-clx-text-label mb-2" | "text-base font-semibold text-clx-text-label mb-1";
2471
+ protected _descCls(): string;
2472
+ protected _ctaCls(): "mt-3" | "mt-5";
2473
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxPageEmptyComponent, never>;
2474
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxPageEmptyComponent, "clx-page-empty", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "ctaLabel": { "alias": "ctaLabel"; "required": false; "isSignal": true; }; "ctaIcon": { "alias": "ctaIcon"; "required": false; "isSignal": true; }; "ctaColor": { "alias": "ctaColor"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "cta": "cta"; }, never, never, true, never>;
2475
+ }
2476
+
2477
+ type ClxTrendDirection = 'up' | 'down' | 'neutral';
2478
+ interface ClxStatMetric {
2479
+ icon: string;
2480
+ title: string;
2481
+ value: string | number;
2482
+ trend: string | number;
2483
+ trendDirection: ClxTrendDirection;
2484
+ }
2485
+ interface SparkPoint {
2486
+ x: number;
2487
+ y: number;
2488
+ }
2489
+
2490
+ declare class ClxStatCardComponent {
2491
+ readonly metric: _angular_core.InputSignal<ClxStatMetric>;
2492
+ readonly chartData: _angular_core.InputSignal<number[]>;
2493
+ readonly color: _angular_core.InputSignal<ClxColorInput>;
2494
+ readonly layout: _angular_core.InputSignal<"horizontal" | "vertical" | "bar">;
2495
+ protected readonly _hostClass: _angular_core.Signal<string>;
2496
+ protected readonly _barHeights: _angular_core.Signal<number[]>;
2497
+ protected readonly _iconBg: _angular_core.Signal<string>;
2498
+ protected readonly _iconBgSubtle: _angular_core.Signal<string>;
2499
+ protected readonly _iconTextBase: _angular_core.Signal<string>;
2500
+ protected readonly _lineColor: _angular_core.Signal<string>;
2501
+ protected readonly _gradId: _angular_core.Signal<string>;
2502
+ protected readonly _trendColor: _angular_core.Signal<"red" | "green" | "slate">;
2503
+ protected readonly _trendArrowIcon: _angular_core.Signal<"arrow_upward" | "arrow_downward" | "remove">;
2504
+ protected readonly _trendTextClass: _angular_core.Signal<"text-red-500" | "text-green-500" | "text-slate-400">;
2505
+ protected readonly _trendIcon: _angular_core.Signal<"remove" | "arrow_outward" | "south_east">;
2506
+ protected readonly _formattedValue: _angular_core.Signal<string>;
2507
+ protected readonly _points: _angular_core.Signal<SparkPoint[]>;
2508
+ protected readonly _linePath: _angular_core.Signal<string>;
2509
+ protected readonly _fillPath: _angular_core.Signal<string>;
2510
+ constructor();
2511
+ private _buildPath;
2512
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxStatCardComponent, never>;
2513
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxStatCardComponent, "clx-stat-card", never, { "metric": { "alias": "metric"; "required": true; "isSignal": true; }; "chartData": { "alias": "chartData"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2514
+ }
2515
+
2516
+ type ClxProductLayout = 'vertical' | 'horizontal';
2517
+ type ClxProductSize = 'sm' | 'md';
2518
+ /** Refleja st_variations + st_products (campos necesarios para la card) */
2519
+ interface ClxProduct {
2520
+ id: string;
2521
+ sku: string;
2522
+ name: string;
2523
+ description?: string;
2524
+ sale_price?: number;
2525
+ product_id: string;
2526
+ product_name: string;
2527
+ trademark: string;
2528
+ product_sale_price: number;
2529
+ discount_price?: number;
2530
+ has_discount: boolean;
2531
+ discount_percentage?: number;
2532
+ tags: string[];
2533
+ main_image?: string;
2534
+ in_stock: boolean;
2535
+ }
2536
+
2537
+ type ClxProductTag = 'new' | 'sale' | 'out-of-stock' | 'featured' | 'limited' | 'hot';
2538
+
2539
+ declare class ClxProductComponent {
2540
+ readonly product: _angular_core.InputSignal<ClxProduct | null>;
2541
+ readonly loading: _angular_core.InputSignal<boolean>;
2542
+ readonly priority: _angular_core.InputSignal<boolean>;
2543
+ readonly layout: _angular_core.InputSignal<ClxProductLayout>;
2544
+ readonly size: _angular_core.InputSignal<ClxProductSize>;
2545
+ readonly clxColor: _angular_core.InputSignal<ClxColorInput>;
2546
+ readonly addToCart: _angular_core.OutputEmitterRef<ClxProduct>;
2547
+ readonly addToWishlist: _angular_core.OutputEmitterRef<ClxProduct>;
2548
+ protected readonly PRODUCT_TAG_LABEL: Record<ClxProductTag, string>;
2549
+ protected readonly PRODUCT_TAG_COLOR: Record<ClxProductTag, codexly_ui.ClxColor>;
2550
+ protected readonly PRODUCT_TAG_VARIANT: Record<ClxProductTag, codexly_ui.ClxBadgeVariant>;
2551
+ protected readonly _h: _angular_core.Signal<boolean>;
2552
+ protected readonly _sm: _angular_core.Signal<boolean>;
2553
+ protected readonly _tags: _angular_core.Signal<ClxProductTag[]>;
2554
+ protected readonly _disabled: _angular_core.Signal<boolean>;
2555
+ protected readonly _price: _angular_core.Signal<number>;
2556
+ protected readonly _buttonSize: _angular_core.Signal<"sm" | "md">;
2557
+ protected readonly _skeletonW: _angular_core.Signal<"sm:w-32" | "sm:w-44">;
2558
+ protected readonly _skeletonH: _angular_core.Signal<"160px" | "200px">;
2559
+ protected readonly _cardClass: _angular_core.Signal<string>;
2560
+ protected readonly _imageContainerClass: _angular_core.Signal<string>;
2561
+ protected readonly _contentClass: _angular_core.Signal<string>;
2562
+ protected readonly _actionsClass: _angular_core.Signal<"flex flex-col sm:flex-row items-stretch sm:items-center gap-2 mt-3" | "flex items-center gap-2 mt-3">;
2563
+ protected readonly _overlayClass: _angular_core.Signal<string>;
2564
+ protected readonly _titleClass: _angular_core.Signal<string>;
2565
+ protected readonly _descClass: _angular_core.Signal<string>;
2566
+ protected readonly _priceClass: _angular_core.Signal<string>;
2567
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxProductComponent, never>;
2568
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxProductComponent, "clx-product", never, { "product": { "alias": "product"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "priority": { "alias": "priority"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clxColor": { "alias": "clxColor"; "required": false; "isSignal": true; }; }, { "addToCart": "addToCart"; "addToWishlist": "addToWishlist"; }, never, never, true, never>;
2569
+ }
2570
+
2571
+ /** st_spec_options */
2572
+ interface ClxSpecOption {
2573
+ id: string;
2574
+ spec_type_id: string;
2575
+ value: string;
2576
+ }
2577
+ /** st_spec_types + sus opciones */
2578
+ interface ClxSpecType {
2579
+ id: string;
2580
+ name: string;
2581
+ icon?: string;
2582
+ input_type: 'color' | 'text';
2583
+ options: ClxSpecOption[];
2584
+ }
2585
+ /** st_variations — una variación sellable con sus imágenes y specs seleccionadas */
2586
+ interface ClxVariation {
2587
+ id: string;
2588
+ sku: string;
2589
+ name: string;
2590
+ description?: string;
2591
+ sale_price?: number;
2592
+ sort_order: number;
2593
+ images: string[];
2594
+ in_stock: boolean;
2595
+ specs: Record<string, string>;
2596
+ }
2597
+ /** st_product_spec_types + st_product_spec_options — fila de ficha técnica */
2598
+ interface ClxProductSpec {
2599
+ id: string;
2600
+ name: string;
2601
+ icon?: string;
2602
+ value: string;
2603
+ sort_order?: number;
2604
+ }
2605
+ /** st_product_descriptions — bloque de texto narrativo */
2606
+ interface ClxProductDescription {
2607
+ id: string;
2608
+ title?: string;
2609
+ body: string;
2610
+ sort_order: number;
2611
+ }
2612
+ /** st_reviews */
2613
+ interface ClxReview {
2614
+ id: string;
2615
+ author_name: string;
2616
+ rating: number;
2617
+ title?: string;
2618
+ body?: string;
2619
+ is_verified: boolean;
2620
+ helpful: number;
2621
+ not_helpful: number;
2622
+ created_at: string;
2623
+ }
2624
+ /** Payload completo para clx-product-detail — un producto con todas sus variaciones */
2625
+ interface ClxProductDetailData {
2626
+ product_id: string;
2627
+ product_name: string;
2628
+ trademark: string;
2629
+ product_sale_price: number;
2630
+ discount_price?: number;
2631
+ has_discount: boolean;
2632
+ discount_percentage?: number;
2633
+ has_warranty: boolean;
2634
+ warranty_period?: number;
2635
+ tags: string[];
2636
+ currency: string;
2637
+ rating: number;
2638
+ review_count: number;
2639
+ spec_types: ClxSpecType[];
2640
+ variations: ClxVariation[];
2641
+ product_specs: ClxProductSpec[];
2642
+ descriptions: ClxProductDescription[];
2643
+ reviews?: ClxReview[];
2498
2644
  }
2499
2645
 
2500
- declare class ClxTableComponent<T = any> {
2501
- private readonly _themeSvc;
2502
- readonly data: _angular_core.InputSignal<T[]>;
2503
- readonly columns: _angular_core.InputSignal<ClxTableColumn<T>[]>;
2646
+ declare class ClxProductDetailComponent {
2647
+ readonly product: _angular_core.InputSignal<ClxProductDetailData | null>;
2648
+ readonly clxColor: _angular_core.InputSignal<ClxColorInput>;
2504
2649
  readonly loading: _angular_core.InputSignal<boolean>;
2505
- readonly selectable: _angular_core.InputSignal<boolean>;
2506
- readonly singleSelect: _angular_core.InputSignal<boolean>;
2507
- readonly searchable: _angular_core.InputSignal<boolean>;
2508
- readonly pagination: _angular_core.InputSignal<boolean>;
2509
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
2510
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
2511
- readonly emptyIcon: _angular_core.InputSignal<string>;
2512
- readonly emptyTitle: _angular_core.InputSignal<string>;
2513
- readonly emptyDescription: _angular_core.InputSignal<string>;
2514
- readonly sortKey: _angular_core.ModelSignal<string | null>;
2515
- readonly sortDir: _angular_core.ModelSignal<ClxTableSort | null>;
2516
- readonly pageIndex: _angular_core.ModelSignal<number>;
2517
- readonly pageSize: _angular_core.ModelSignal<number>;
2518
- readonly _currentPage: _angular_core.ModelSignal<number>;
2519
- readonly searchQuery: _angular_core.ModelSignal<string>;
2520
- readonly selectedItems: _angular_core.ModelSignal<T[]>;
2521
- readonly sortChange: _angular_core.OutputEmitterRef<ClxTableSortEvent>;
2522
- readonly pageChange: _angular_core.OutputEmitterRef<ClxTablePageEvent>;
2523
- readonly selectionChange: _angular_core.OutputEmitterRef<ClxTableSelectionEvent<T>>;
2524
- private readonly _columnDefs;
2525
- protected _onPaginationPageChange(page: number): void;
2526
- protected readonly _tableClass: _angular_core.Signal<string>;
2527
- protected readonly _headerClass: _angular_core.Signal<string>;
2528
- protected readonly _headerCellClass: _angular_core.Signal<string>;
2529
- protected readonly _cellClass: _angular_core.Signal<string>;
2530
- protected readonly _rowClass: _angular_core.Signal<string>;
2531
- private readonly _columnDefMap;
2532
- protected _getColumnDef(key: string): ClxColumnDefDirective<T> | undefined;
2533
- protected readonly _filteredData: _angular_core.Signal<T[]>;
2534
- protected readonly _paginatedData: _angular_core.Signal<T[]>;
2535
- protected readonly _totalItems: _angular_core.Signal<number>;
2536
- protected readonly _emptyTitle: _angular_core.Signal<string>;
2537
- protected readonly _emptyDescription: _angular_core.Signal<string>;
2538
- protected readonly _allSelected: _angular_core.Signal<boolean>;
2539
- protected _isSelected(item: T): boolean;
2540
- protected _getAlignClass(align: 'left' | 'center' | 'right'): string;
2541
- protected _getHeaderCellClass(col: ClxTableColumn<T>): string;
2542
- protected _getDataCellClass(col: ClxTableColumn<T>): string;
2543
- protected _getCellValue(item: T, key: string): unknown;
2544
- protected _handleSort(key: string): void;
2545
- protected _handleSelectAll(checked: boolean): void;
2546
- protected _handleSelectItem(item: T, checked: boolean): void;
2547
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTableComponent<any>, never>;
2548
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTableComponent<any>, "clx-table", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "singleSelect": { "alias": "singleSelect"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "emptyIcon": { "alias": "emptyIcon"; "required": false; "isSignal": true; }; "emptyTitle": { "alias": "emptyTitle"; "required": false; "isSignal": true; }; "emptyDescription": { "alias": "emptyDescription"; "required": false; "isSignal": true; }; "sortKey": { "alias": "sortKey"; "required": false; "isSignal": true; }; "sortDir": { "alias": "sortDir"; "required": false; "isSignal": true; }; "pageIndex": { "alias": "pageIndex"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "_currentPage": { "alias": "_currentPage"; "required": false; "isSignal": true; }; "searchQuery": { "alias": "searchQuery"; "required": false; "isSignal": true; }; "selectedItems": { "alias": "selectedItems"; "required": false; "isSignal": true; }; }, { "sortKey": "sortKeyChange"; "sortDir": "sortDirChange"; "pageIndex": "pageIndexChange"; "pageSize": "pageSizeChange"; "_currentPage": "_currentPageChange"; "searchQuery": "searchQueryChange"; "selectedItems": "selectedItemsChange"; "sortChange": "sortChange"; "pageChange": "pageChange"; "selectionChange": "selectionChange"; }, ["_columnDefs"], never, true, never>;
2650
+ readonly currency: _angular_core.InputSignal<string>;
2651
+ readonly _carousel: _angular_core.Signal<ClxCarouselComponent | undefined>;
2652
+ readonly quantity: _angular_core.WritableSignal<number>;
2653
+ readonly activeTab: _angular_core.WritableSignal<string>;
2654
+ readonly selectedSpecs: _angular_core.WritableSignal<Record<string, string>>;
2655
+ readonly tabItems: ClxTabItem[];
2656
+ constructor();
2657
+ readonly activeVariation: _angular_core.Signal<ClxVariation | null>;
2658
+ readonly finalPrice: _angular_core.Signal<number>;
2659
+ readonly discount: _angular_core.Signal<number>;
2660
+ isOptionAvailable(specTypeId: string, specOptionId: string): boolean;
2661
+ selectSpec(specTypeId: string, specOptionId: string): void;
2662
+ isSpecSelected(specTypeId: string, specOptionId: string): boolean;
2663
+ selectedOptionLabel(specType: ClxSpecType): string;
2664
+ asColor(value: string): ClxColorInput;
2665
+ specsLeft<T>(specs: T[]): T[];
2666
+ specsRight<T>(specs: T[]): T[];
2667
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxProductDetailComponent, never>;
2668
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxProductDetailComponent, "clx-product-detail", never, { "product": { "alias": "product"; "required": false; "isSignal": true; }; "clxColor": { "alias": "clxColor"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "currency": { "alias": "currency"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2549
2669
  }
2550
2670
 
2551
2671
  /** Refleja st_variations + st_products (campos necesarios para la wishlist card) */
@@ -2765,44 +2885,6 @@ interface ClxModalAnimConfig {
2765
2885
  }
2766
2886
  declare const CLX_MODAL_ANIM_CONFIG: InjectionToken<ClxModalAnimConfig>;
2767
2887
 
2768
- type ClxAlertType = 'success' | 'danger' | 'warning' | 'info' | 'confirm';
2769
- type ClxAlertResult = boolean;
2770
- interface ClxAlertButtonOptions {
2771
- text: string;
2772
- color?: ClxButtonColor;
2773
- variant?: ClxButtonVariant;
2774
- }
2775
- interface ClxAlertOptions {
2776
- /** Alert type — drives icon, color and defaults. */
2777
- type?: ClxAlertType;
2778
- /** Dialog title. Supports safe HTML string. */
2779
- title?: string;
2780
- /** Body message. Supports safe HTML string. */
2781
- message?: string;
2782
- /** Show a cancel / secondary button. Default: false (true for 'confirm'). */
2783
- showCancelButton?: boolean;
2784
- /** Confirm button config. */
2785
- confirmButton?: ClxAlertButtonOptions;
2786
- /** Cancel button config. */
2787
- cancelButton?: ClxAlertButtonOptions;
2788
- /** animate.css entrance animation name. Default: 'zoomIn' */
2789
- animationIn?: ClxAnimateName;
2790
- /** animate.css exit animation name. Default: 'zoomOut' */
2791
- animationOut?: ClxAnimateName;
2792
- /** Duration of entrance/exit animations in ms. Default: 400 */
2793
- animationDuration?: number;
2794
- /**
2795
- * Auto-close timer in milliseconds.
2796
- * When set, a progress bar counts down and the dialog closes automatically
2797
- * resolving to `false`.
2798
- */
2799
- timer?: number;
2800
- /** Show backdrop blur. Default: true */
2801
- backdrop?: boolean;
2802
- /** Prevent closing on backdrop click. Default: false */
2803
- disableClose?: boolean;
2804
- }
2805
-
2806
2888
  declare const CLX_ALERT_OPTIONS: InjectionToken<ClxAlertOptions>;
2807
2889
  declare const CLX_ALERT_RESOLVE: InjectionToken<(result: ClxAlertResult) => void>;
2808
2890
 
@@ -2815,7 +2897,7 @@ declare class ClxAnimateDirective implements OnInit, OnChanges {
2815
2897
  readonly delay: _angular_core.InputSignalWithTransform<number, number>;
2816
2898
  readonly repeat: _angular_core.InputSignal<number | "infinite" | undefined>;
2817
2899
  readonly easing: _angular_core.InputSignal<string | undefined>;
2818
- readonly fillMode: _angular_core.InputSignal<"none" | "both" | "forwards" | "backwards" | undefined>;
2900
+ readonly fillMode: _angular_core.InputSignal<"none" | "forwards" | "backwards" | "both" | undefined>;
2819
2901
  readonly once: _angular_core.InputSignalWithTransform<boolean, boolean>;
2820
2902
  readonly threshold: _angular_core.InputSignalWithTransform<number, number>;
2821
2903
  readonly animationStart: _angular_core.OutputEmitterRef<void>;
@@ -2866,42 +2948,6 @@ declare class ClxAnimateGroupDirective {
2866
2948
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxAnimateGroupDirective, "[clxAnimateGroup]", ["clxAnimateGroup"], { "stagger": { "alias": "stagger"; "required": false; "isSignal": true; }; }, {}, ["children"], never, true, never>;
2867
2949
  }
2868
2950
 
2869
- declare class ClxTooltipDirective {
2870
- readonly clxTooltip: _angular_core.InputSignal<string>;
2871
- readonly clxTooltipPosition: _angular_core.InputSignal<ClxTooltipPosition>;
2872
- readonly clxTooltipColor: _angular_core.InputSignal<ClxColorInput>;
2873
- readonly clxTooltipSize: _angular_core.InputSignal<ClxTooltipSize>;
2874
- readonly clxTooltipDelay: _angular_core.InputSignal<number>;
2875
- private readonly _el;
2876
- private readonly _renderer;
2877
- private readonly _appRef;
2878
- private readonly _injector;
2879
- private readonly _animate;
2880
- private readonly _platformId;
2881
- private readonly _destroyRef;
2882
- private _ref;
2883
- private _pendingRef;
2884
- private _showTimer;
2885
- private _hideTimer;
2886
- private _tooltipId;
2887
- private _abort;
2888
- private _destroyed;
2889
- constructor();
2890
- private _scheduleShow;
2891
- private _scheduleHide;
2892
- private _show;
2893
- private _hide;
2894
- private _resolvePosition;
2895
- private _placeAt;
2896
- private _destroyBubble;
2897
- private _forceDestroyBubble;
2898
- private _clearShow;
2899
- private _clearHide;
2900
- private _clearTimers;
2901
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTooltipDirective, never>;
2902
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClxTooltipDirective, "[clxTooltip]", never, { "clxTooltip": { "alias": "clxTooltip"; "required": true; "isSignal": true; }; "clxTooltipPosition": { "alias": "clxTooltipPosition"; "required": false; "isSignal": true; }; "clxTooltipColor": { "alias": "clxTooltipColor"; "required": false; "isSignal": true; }; "clxTooltipSize": { "alias": "clxTooltipSize"; "required": false; "isSignal": true; }; "clxTooltipDelay": { "alias": "clxTooltipDelay"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2903
- }
2904
-
2905
2951
  type ClxThemeMode = 'light' | 'dark' | 'system';
2906
2952
  declare class ClxThemeService {
2907
2953
  private readonly _isBrowser;
@@ -3013,82 +3059,5 @@ declare class ClxToastService {
3013
3059
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ClxToastService>;
3014
3060
  }
3015
3061
 
3016
- type ClxProgressBarSize = 'xs' | 'sm' | 'md' | 'lg';
3017
- type ClxProgressBarVariant = 'solid' | 'striped' | 'indeterminate';
3018
-
3019
- declare class ClxProgressBarComponent {
3020
- private readonly _themeSvc;
3021
- readonly value: _angular_core.InputSignal<number>;
3022
- readonly max: _angular_core.InputSignal<number>;
3023
- readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
3024
- protected readonly _color: _angular_core.Signal<ClxColorInput>;
3025
- readonly size: _angular_core.InputSignal<ClxProgressBarSize | undefined>;
3026
- readonly variant: _angular_core.InputSignal<ClxProgressBarVariant>;
3027
- readonly label: _angular_core.InputSignal<string>;
3028
- readonly showValue: _angular_core.InputSignal<boolean>;
3029
- readonly valueFormat: _angular_core.InputSignal<"percent" | "fraction" | "value">;
3030
- protected readonly _pct: _angular_core.Signal<number>;
3031
- protected readonly _pbSize: _angular_core.Signal<ClxProgressBarSize>;
3032
- protected readonly _trackH: _angular_core.Signal<string>;
3033
- protected readonly _labelCls: _angular_core.Signal<"text-xs text-clx-text-label" | "text-sm text-clx-text-label">;
3034
- protected readonly _displayValue: _angular_core.Signal<string>;
3035
- protected readonly _fillCls: _angular_core.Signal<string>;
3036
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxProgressBarComponent, never>;
3037
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxProgressBarComponent, "clx-progress-bar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3038
- }
3039
-
3040
- declare class ClxPageNotFoundComponent {
3041
- readonly title: _angular_core.InputSignal<string>;
3042
- readonly description: _angular_core.InputSignal<string>;
3043
- readonly backLabel: _angular_core.InputSignal<string>;
3044
- readonly back: _angular_core.OutputEmitterRef<void>;
3045
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxPageNotFoundComponent, never>;
3046
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxPageNotFoundComponent, "clx-page-not-found", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; }, { "back": "back"; }, never, never, true, never>;
3047
- }
3048
-
3049
- declare class ClxPageUnauthorizedComponent {
3050
- readonly code: _angular_core.InputSignal<number>;
3051
- readonly title: _angular_core.InputSignal<string>;
3052
- readonly description: _angular_core.InputSignal<string>;
3053
- readonly loginLabel: _angular_core.InputSignal<string>;
3054
- readonly backLabel: _angular_core.InputSignal<string>;
3055
- readonly login: _angular_core.OutputEmitterRef<void>;
3056
- readonly back: _angular_core.OutputEmitterRef<void>;
3057
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxPageUnauthorizedComponent, never>;
3058
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxPageUnauthorizedComponent, "clx-page-unauthorized", never, { "code": { "alias": "code"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "loginLabel": { "alias": "loginLabel"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; }, { "login": "login"; "back": "back"; }, never, never, true, never>;
3059
- }
3060
-
3061
- declare class ClxPageServerErrorComponent {
3062
- readonly title: _angular_core.InputSignal<string>;
3063
- readonly description: _angular_core.InputSignal<string>;
3064
- readonly retryLabel: _angular_core.InputSignal<string>;
3065
- readonly backLabel: _angular_core.InputSignal<string>;
3066
- readonly errorId: _angular_core.InputSignal<string>;
3067
- readonly retry: _angular_core.OutputEmitterRef<void>;
3068
- readonly back: _angular_core.OutputEmitterRef<void>;
3069
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxPageServerErrorComponent, never>;
3070
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxPageServerErrorComponent, "clx-page-server-error", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "retryLabel": { "alias": "retryLabel"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "errorId": { "alias": "errorId"; "required": false; "isSignal": true; }; }, { "retry": "retry"; "back": "back"; }, never, never, true, never>;
3071
- }
3072
-
3073
- declare class ClxPageEmptyComponent {
3074
- private readonly _themeSvc;
3075
- readonly icon: _angular_core.InputSignal<string>;
3076
- readonly title: _angular_core.InputSignal<string>;
3077
- readonly description: _angular_core.InputSignal<string>;
3078
- readonly ctaLabel: _angular_core.InputSignal<string>;
3079
- readonly ctaIcon: _angular_core.InputSignal<string>;
3080
- readonly ctaColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3081
- readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
3082
- protected readonly _ctaColor: _angular_core.Signal<ClxColorInput>;
3083
- readonly cta: _angular_core.OutputEmitterRef<void>;
3084
- protected _iconWrap(): string;
3085
- protected _iconSize(): 'sm' | 'md' | 'lg' | 'xl';
3086
- protected _titleCls(): "text-sm font-semibold text-clx-text-label mb-1" | "text-xl font-semibold text-clx-text-label mb-2" | "text-base font-semibold text-clx-text-label mb-1";
3087
- protected _descCls(): string;
3088
- protected _ctaCls(): "mt-3" | "mt-5";
3089
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxPageEmptyComponent, never>;
3090
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxPageEmptyComponent, "clx-page-empty", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "ctaLabel": { "alias": "ctaLabel"; "required": false; "isSignal": true; }; "ctaIcon": { "alias": "ctaIcon"; "required": false; "isSignal": true; }; "ctaColor": { "alias": "ctaColor"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "cta": "cta"; }, never, never, true, never>;
3091
- }
3092
-
3093
- export { CLX_ADDON_BORDER, CLX_ADDON_TEXT, CLX_ALERT_OPTIONS, CLX_ALERT_RESOLVE, CLX_BG_ADDON, CLX_BG_DISABLED, CLX_BG_ICON_WRAP, CLX_BG_SECTION, CLX_BG_SURFACE, CLX_BORDER_DEFAULT, CLX_BORDER_DISABLED, CLX_BORDER_MEDIUM, CLX_COLOR_HEX, CLX_COLOR_HEX_100, CLX_COLOR_MAP, CLX_FONT_CATALOG, CLX_MODAL_ANIM_CONFIG, CLX_MODAL_DATA, CLX_MODAL_REF, CLX_OPTION_DISABLED, CLX_PLACEHOLDER, CLX_RADIO_GROUP, CLX_RADIUS_MAP, CLX_TEXT_BODY, CLX_TEXT_DISABLED, CLX_TEXT_HEADING, CLX_TEXT_HINT, CLX_TEXT_IDLE, CLX_TEXT_INPUT, CLX_TEXT_LABEL, CLX_TEXT_OPTION, CLX_TEXT_SUBTITLE, CLX_TEXT_TITLE, CLX_THEME_CONFIG, CLX_THEME_DEFAULTS, CLX_TOAST_DEFAULTS, ClxAlertComponent, ClxAlertService, ClxAnimateDirective, ClxAnimateGroupDirective, ClxAnimateService, ClxAppLayoutComponent, ClxAvatarComponent, ClxBadgeComponent, ClxBrandComponent, ClxButtonComponent, ClxButtonGroupComponent, ClxCardBodyDirective, ClxCardComponent, ClxCardFooterDirective, ClxCardHeaderDirective, ClxCarouselComponent, ClxCarouselDirective, ClxCartComponent, ClxCartSummaryDrawer, ClxCellDirective, ClxChartComponent, ClxCheckboxComponent, ClxColorPickerComponent, ClxColumnDefDirective, ClxDateRangePickerComponent, ClxDatepickerComponent, ClxDrawerComponent, ClxDrawerService, ClxEditorComponent, ClxEditorLinkModalComponent, ClxFilterPanelComponent, ClxHeaderCellDirective, ClxIconComponent, ClxInputComponent, ClxListComponent, ClxListItemComponent, ClxMenuComponent, ClxMenuItemComponent, ClxModalComponent, ClxModalService, ClxNavGroupComponent, ClxNumberComponent, ClxPageEmptyComponent, ClxPageNotFoundComponent, ClxPageServerErrorComponent, ClxPageUnauthorizedComponent, ClxPaginationComponent, ClxProductComponent, ClxProductDetailComponent, ClxProfileComponent, ClxProgressBarComponent, ClxRadioComponent, ClxRadioGroupComponent, ClxRatingComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, ClxTableComponent, ClxTabsComponent, ClxTagComponent, ClxTextareaComponent, ClxThemeService, ClxTimelineComponent, ClxTimelineItemComponent, ClxTimepickerComponent, ClxToastComponent, ClxToastContainerComponent, ClxToastService, ClxTooltipComponent, ClxTooltipDirective, ClxTreeComponent, ClxUploadComponent, ClxWishlistComponent, ClxWizardComponent, TIMEPICKER_SIZE_MAP, parseColorInput, provideCodexlyTheme, resolveColor, resolveContainerRadius, resolveRadius };
3094
- export type { ClxAlertButtonOptions, ClxAlertOptions, ClxAlertResult, ClxAlertType, ClxAnimateAttentionSeeker, ClxAnimateBackEntrance, ClxAnimateBackExit, ClxAnimateBouncingEntrance, ClxAnimateBouncingExit, ClxAnimateConfig, ClxAnimateDefaults, ClxAnimateEvent, ClxAnimateFadingEntrance, ClxAnimateFadingExit, ClxAnimateFlipper, ClxAnimateLightspeed, ClxAnimateName, ClxAnimateRotatingEntrance, ClxAnimateRotatingExit, ClxAnimateSlidingEntrance, ClxAnimateSlidingExit, ClxAnimateSpecial, ClxAnimateTrigger, ClxAnimateZoomingEntrance, ClxAnimateZoomingExit, ClxAvatarContentType, ClxBadgeVariant, ClxButtonColor, ClxButtonGroupShape, ClxButtonVariant, ClxCardPadding, ClxCardShadow, ClxCardVariant, ClxCarouselAspectRatio, ClxCarouselConfig, ClxCartItem, ClxCartSummaryData, ClxCellContext, ClxChartOptions, ClxChartType, ClxCheckboxVariant, ClxColor, ClxColorInput, ClxColorPickerFormat, ClxColorPickerSize, ClxColorResolved, ClxColorTokens, ClxCouponResult, ClxDateRange, ClxDateRangePickerSize, ClxDateRangePickerStatus, ClxDatepickerSize, ClxDatepickerStatus, ClxDrawerButtonOptions, ClxDrawerConfig, ClxDrawerRef, ClxDrawerSize, ClxEditorSize, ClxEditorTool, ClxEditorToolbarGroup, ClxFilterChangeEvent, ClxFilterField, ClxFilterFieldType, ClxFilterOption, ClxFilterValue, ClxFilterValues, ClxFontFamily, ClxFontOption, ClxInputSize, ClxInputStatus, ClxInputType, ClxListItem, ClxListSize, ClxListVariant, ClxModalButtonOptions, ClxModalConfig, ClxModalRef, ClxModalSize, ClxNumberSize, ClxNumberVariant, ClxPageChangeEvent, ClxPageSizeChangeEvent, ClxPaginationSize, ClxProduct, ClxProductDescription, ClxProductDetailData, ClxProductLayout, ClxProductSize, ClxProductSpec, ClxProfileMenuItem, ClxProgressBarSize, ClxProgressBarVariant, ClxRadioVariant, ClxReview, ClxRippleItem, ClxSelectOption, ClxSelectSize, ClxShade, ClxShape, ClxSize, ClxSkeletonVariant, ClxSliderSize, ClxSpecOption, ClxSpecType, ClxSpinnerColor, ClxSpinnerVariant, ClxStatMetric, ClxStepperOrientation, ClxStepperSize, ClxStepperStatus, ClxStepperStep, ClxTabItem, ClxTableColumn, ClxTablePageEvent, ClxTableSelectionEvent, ClxTableSort, ClxTableSortEvent, ClxTagShape, ClxTagSize, ClxTagVariant, ClxTextareaResize, ClxTextareaSize, ClxTextareaStatus, ClxThemeConfig, ClxThemeMode, ClxTimelineLineStyle, ClxTimelineMode, ClxTimelineSize, ClxTimepickerSize, ClxTimepickerStatus, ClxToastAction, ClxToastEntry, ClxToastOptions, ClxToastPosition, ClxToastType, ClxTooltipPosition, ClxTooltipSize, ClxTreeExpandEvent, ClxTreeNode, ClxTreeSelectEvent, ClxTreeSize, ClxTreeVariant, ClxTrendDirection, ClxUploadError, ClxUploadSize, ClxVariation, ClxWishlistItem, ClxWishlistPageChangeEvent, ClxWizardColor, ClxWizardOrientation, ClxWizardStepStatus, SparkPoint };
3062
+ export { CLX_ADDON_BORDER, CLX_ADDON_TEXT, CLX_ALERT_OPTIONS, CLX_ALERT_RESOLVE, CLX_BG_ADDON, CLX_BG_DISABLED, CLX_BG_ICON_WRAP, CLX_BG_SECTION, CLX_BG_SURFACE, CLX_BORDER_DEFAULT, CLX_BORDER_DISABLED, CLX_BORDER_MEDIUM, CLX_COLOR_HEX, CLX_COLOR_HEX_100, CLX_COLOR_MAP, CLX_FONT_CATALOG, CLX_MODAL_ANIM_CONFIG, CLX_MODAL_DATA, CLX_MODAL_REF, CLX_OPTION_DISABLED, CLX_PLACEHOLDER, CLX_RADIO_GROUP, CLX_RADIUS_MAP, CLX_TEXT_BODY, CLX_TEXT_DISABLED, CLX_TEXT_HEADING, CLX_TEXT_HINT, CLX_TEXT_IDLE, CLX_TEXT_INPUT, CLX_TEXT_LABEL, CLX_TEXT_OPTION, CLX_TEXT_SUBTITLE, CLX_TEXT_TITLE, CLX_THEME_CONFIG, CLX_THEME_DEFAULTS, CLX_TOAST_DEFAULTS, ClxAlertComponent, ClxAlertService, ClxAnimateDirective, ClxAnimateGroupDirective, ClxAnimateService, ClxAppLayoutComponent, ClxAvatarComponent, ClxBadgeComponent, ClxBrandComponent, ClxButtonComponent, ClxButtonGroupComponent, ClxCardBodyDirective, ClxCardComponent, ClxCardFooterDirective, ClxCardHeaderDirective, ClxCarouselComponent, ClxCarouselDirective, ClxCartComponent, ClxCartSummaryDrawer, ClxCellDirective, ClxCheckboxComponent, ClxColorPickerComponent, ClxColumnDefDirective, ClxDateRangePickerComponent, ClxDatepickerComponent, ClxDrawerComponent, ClxDrawerService, ClxEditorComponent, ClxEditorLinkModalComponent, ClxFilterPanelComponent, ClxHeaderCellDirective, ClxIconComponent, ClxInputComponent, ClxListComponent, ClxListItemComponent, ClxMenuComponent, ClxMenuItemComponent, ClxModalComponent, ClxModalService, ClxNavGroupComponent, ClxNumberComponent, ClxPageEmptyComponent, ClxPageNotFoundComponent, ClxPageServerErrorComponent, ClxPageUnauthorizedComponent, ClxPaginationComponent, ClxProductComponent, ClxProductDetailComponent, ClxProfileComponent, ClxProgressBarComponent, ClxRadioComponent, ClxRadioGroupComponent, ClxRatingComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, ClxTableComponent, ClxTabsComponent, ClxTagComponent, ClxTextareaComponent, ClxThemeService, ClxTimelineComponent, ClxTimelineItemComponent, ClxTimepickerComponent, ClxToastComponent, ClxToastContainerComponent, ClxToastService, ClxTooltipComponent, ClxTooltipDirective, ClxTreeComponent, ClxUploadComponent, ClxWishlistComponent, ClxWizardComponent, TIMEPICKER_SIZE_MAP, parseColorInput, provideCodexlyTheme, resolveColor, resolveContainerRadius, resolveRadius };
3063
+ export type { ClxAlertButtonOptions, ClxAlertOptions, ClxAlertResult, ClxAlertType, ClxAnimateAttentionSeeker, ClxAnimateBackEntrance, ClxAnimateBackExit, ClxAnimateBouncingEntrance, ClxAnimateBouncingExit, ClxAnimateConfig, ClxAnimateDefaults, ClxAnimateEvent, ClxAnimateFadingEntrance, ClxAnimateFadingExit, ClxAnimateFlipper, ClxAnimateLightspeed, ClxAnimateName, ClxAnimateRotatingEntrance, ClxAnimateRotatingExit, ClxAnimateSlidingEntrance, ClxAnimateSlidingExit, ClxAnimateSpecial, ClxAnimateTrigger, ClxAnimateZoomingEntrance, ClxAnimateZoomingExit, ClxAvatarContentType, ClxBadgeVariant, ClxButtonColor, ClxButtonGroupShape, ClxButtonVariant, ClxCardPadding, ClxCardShadow, ClxCardVariant, ClxCarouselAspectRatio, ClxCarouselConfig, ClxCartItem, ClxCartSummaryData, ClxCellContext, ClxCheckboxVariant, ClxColor, ClxColorInput, ClxColorPickerFormat, ClxColorPickerSize, ClxColorResolved, ClxColorTokens, ClxCouponResult, ClxDateRange, ClxDateRangePickerSize, ClxDateRangePickerStatus, ClxDatepickerSize, ClxDatepickerStatus, ClxDrawerButtonOptions, ClxDrawerConfig, ClxDrawerRef, ClxDrawerSize, ClxEditorSize, ClxEditorTool, ClxEditorToolbarGroup, ClxFilterChangeEvent, ClxFilterField, ClxFilterFieldType, ClxFilterOption, ClxFilterValue, ClxFilterValues, ClxFontFamily, ClxFontOption, ClxInputSize, ClxInputStatus, ClxInputType, ClxListItem, ClxListSize, ClxListVariant, ClxModalButtonOptions, ClxModalConfig, ClxModalRef, ClxModalSize, ClxNumberSize, ClxNumberVariant, ClxPageChangeEvent, ClxPageSizeChangeEvent, ClxPaginationSize, ClxProduct, ClxProductDescription, ClxProductDetailData, ClxProductLayout, ClxProductSize, ClxProductSpec, ClxProfileMenuItem, ClxProgressBarSize, ClxProgressBarVariant, ClxRadioVariant, ClxReview, ClxRippleItem, ClxSelectOption, ClxSelectSize, ClxShade, ClxShape, ClxSize, ClxSkeletonVariant, ClxSliderSize, ClxSpecOption, ClxSpecType, ClxSpinnerColor, ClxSpinnerVariant, ClxStatMetric, ClxStepperOrientation, ClxStepperSize, ClxStepperStatus, ClxStepperStep, ClxTabItem, ClxTableColumn, ClxTablePageEvent, ClxTableSelectionEvent, ClxTableSort, ClxTableSortEvent, ClxTagShape, ClxTagSize, ClxTagVariant, ClxTextareaResize, ClxTextareaSize, ClxTextareaStatus, ClxThemeConfig, ClxThemeMode, ClxTimelineLineStyle, ClxTimelineMode, ClxTimelineSize, ClxTimepickerSize, ClxTimepickerStatus, ClxToastAction, ClxToastEntry, ClxToastOptions, ClxToastPosition, ClxToastType, ClxTooltipPosition, ClxTooltipSize, ClxTreeExpandEvent, ClxTreeNode, ClxTreeSelectEvent, ClxTreeSize, ClxTreeVariant, ClxTrendDirection, ClxUploadError, ClxUploadSize, ClxVariation, ClxWishlistItem, ClxWishlistPageChangeEvent, ClxWizardColor, ClxWizardOrientation, ClxWizardStepStatus, SparkPoint };