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