@lesterarte/sefin-ui 0.0.20-dev.1 → 0.0.20-dev.11

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lesterarte/sefin-ui",
3
- "version": "0.0.20-dev.1",
3
+ "version": "0.0.20-dev.11",
4
4
  "description": "Sefin Design System - A comprehensive Angular UI library based on Atomic Design and design tokens",
5
5
  "keywords": [
6
6
  "angular",
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Injector, AfterViewInit, OnChanges, ElementRef, SimpleChanges, OnInit, OnDestroy, ChangeDetectorRef, NgZone } from '@angular/core';
2
+ import { EventEmitter, Injector, AfterViewInit, OnChanges, ElementRef, SimpleChanges, OnInit, OnDestroy, ChangeDetectorRef, NgZone, TemplateRef } from '@angular/core';
3
3
  import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
4
+ import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
4
5
 
5
6
  /**
6
7
  * Color design tokens as TypeScript constants
@@ -639,6 +640,8 @@ declare class ButtonComponent {
639
640
  size: ButtonSize;
640
641
  /** Whether the button is disabled */
641
642
  disabled: boolean;
643
+ /** Whether the button should take full width of the container */
644
+ fullWidth: boolean;
642
645
  /** Button type. Options: 'button' | 'submit' | 'reset' */
643
646
  type: 'button' | 'submit' | 'reset';
644
647
  /** Additional CSS classes */
@@ -647,7 +650,7 @@ declare class ButtonComponent {
647
650
  onClick(event: MouseEvent): void;
648
651
  get buttonClasses(): string;
649
652
  static ɵfac: i0.ɵɵFactoryDeclaration<ButtonComponent, never>;
650
- static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "sefin-button", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "type": { "alias": "type"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
653
+ static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "sefin-button", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "type": { "alias": "type"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
651
654
  }
652
655
 
653
656
  type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
@@ -1249,6 +1252,81 @@ declare class ImageComponent implements OnInit, OnChanges {
1249
1252
  static ɵcmp: i0.ɵɵComponentDeclaration<ImageComponent, "sefin-image", never, { "src": { "alias": "src"; "required": false; }; "alt": { "alias": "alt"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "fit": { "alias": "fit"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; }; "fallback": { "alias": "fallback"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "class": { "alias": "class"; "required": false; }; "sizes": { "alias": "sizes"; "required": false; }; "srcset": { "alias": "srcset"; "required": false; }; }, {}, never, never, true, never>;
1250
1253
  }
1251
1254
 
1255
+ type TabVariant = 'default' | 'primary' | 'secondary' | 'underline';
1256
+ type TabSize = 'sm' | 'md' | 'lg';
1257
+ declare class TabComponent {
1258
+ /** Tab variant style. Options: 'default' | 'primary' | 'secondary' | 'underline' */
1259
+ variant: TabVariant;
1260
+ /** Tab size. Options: 'sm' | 'md' | 'lg' */
1261
+ size: TabSize;
1262
+ /** Whether the tab is disabled */
1263
+ disabled: boolean;
1264
+ /** Whether the tab is active */
1265
+ active: boolean;
1266
+ /** Additional CSS classes */
1267
+ class: string;
1268
+ clicked: EventEmitter<MouseEvent>;
1269
+ onClick(event: MouseEvent): void;
1270
+ get tabClasses(): string;
1271
+ static ɵfac: i0.ɵɵFactoryDeclaration<TabComponent, never>;
1272
+ static ɵcmp: i0.ɵɵComponentDeclaration<TabComponent, "sefin-tab", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "active": { "alias": "active"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
1273
+ }
1274
+
1275
+ type RateSize = 'sm' | 'md' | 'lg';
1276
+ type RateIcon = 'star' | 'heart' | 'thumb';
1277
+ declare class RateComponent {
1278
+ /** Current rating value (0 to max) */
1279
+ set value(value: number);
1280
+ get value(): number;
1281
+ private _value;
1282
+ /** Maximum rating value */
1283
+ max: number;
1284
+ /** Whether the rating is disabled */
1285
+ disabled: boolean;
1286
+ /** Whether the rating is readonly */
1287
+ readonly: boolean;
1288
+ /** Whether to allow half stars */
1289
+ allowHalf: boolean;
1290
+ /** Icon type. Options: 'star' | 'heart' | 'thumb' */
1291
+ icon: RateIcon;
1292
+ /** Rate size. Options: 'sm' | 'md' | 'lg' */
1293
+ size: RateSize;
1294
+ /** Whether to show text with rating */
1295
+ showText: boolean;
1296
+ /** Additional CSS classes */
1297
+ class: string;
1298
+ /** Event emitted when rating changes */
1299
+ valueChange: EventEmitter<number>;
1300
+ /** Event emitted when rating is hovered */
1301
+ hoverChange: EventEmitter<number>;
1302
+ /** Internal hover value */
1303
+ private _hoverValue;
1304
+ readonly items: i0.Signal<number[]>;
1305
+ get rateClasses(): string;
1306
+ isInteractive(): boolean;
1307
+ getDisplayValue(): number;
1308
+ getIconState(index: number): 'full' | 'half' | 'empty';
1309
+ onItemClick(index: number): void;
1310
+ onItemHover(index: number | null): void;
1311
+ onHalfClick(index: number, isLeftHalf: boolean): void;
1312
+ static ɵfac: i0.ɵɵFactoryDeclaration<RateComponent, never>;
1313
+ static ɵcmp: i0.ɵɵComponentDeclaration<RateComponent, "sefin-rate", never, { "value": { "alias": "value"; "required": false; }; "max": { "alias": "max"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "allowHalf": { "alias": "allowHalf"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "size": { "alias": "size"; "required": false; }; "showText": { "alias": "showText"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, { "valueChange": "valueChange"; "hoverChange": "hoverChange"; }, never, never, true, never>;
1314
+ }
1315
+
1316
+ type SpacerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';
1317
+ type SpacerOrientation = 'vertical' | 'horizontal';
1318
+ declare class SpacerComponent {
1319
+ /** Size of the spacer. Options: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' */
1320
+ size: SpacerSize;
1321
+ /** Orientation of the spacer. Options: 'vertical' | 'horizontal' */
1322
+ orientation: SpacerOrientation;
1323
+ /** Additional CSS classes */
1324
+ class: string;
1325
+ get spacerClasses(): string;
1326
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpacerComponent, never>;
1327
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpacerComponent, "sefin-spacer", never, { "size": { "alias": "size"; "required": false; }; "orientation": { "alias": "orientation"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, never, true, never>;
1328
+ }
1329
+
1252
1330
  declare class AccordionItemComponent {
1253
1331
  /** Title text for the accordion header */
1254
1332
  title: string;
@@ -1311,6 +1389,79 @@ declare class AutocompleteComponent implements OnInit, OnDestroy, OnChanges {
1311
1389
  static ɵcmp: i0.ɵɵComponentDeclaration<AutocompleteComponent, "sefin-autocomplete", never, { "options": { "alias": "options"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "class": { "alias": "class"; "required": false; }; "value": { "alias": "value"; "required": false; }; "minChars": { "alias": "minChars"; "required": false; }; "maxResults": { "alias": "maxResults"; "required": false; }; }, { "valueChange": "valueChange"; "optionSelected": "optionSelected"; "inputChange": "inputChange"; }, never, never, true, never>;
1312
1390
  }
1313
1391
 
1392
+ interface BreadcrumbItem {
1393
+ label: string;
1394
+ href?: string;
1395
+ icon?: string;
1396
+ }
1397
+ type BreadcrumbSeparator = 'slash' | 'chevron' | 'arrow';
1398
+ type BreadcrumbSize = 'sm' | 'md' | 'lg';
1399
+ declare class BreadcrumbsComponent {
1400
+ private sanitizer;
1401
+ /** Array of breadcrumb items */
1402
+ items: BreadcrumbItem[];
1403
+ /** Separator style. Options: 'slash' | 'chevron' | 'arrow' */
1404
+ separator: BreadcrumbSeparator;
1405
+ /** Breadcrumb size. Options: 'sm' | 'md' | 'lg' */
1406
+ size: BreadcrumbSize;
1407
+ /** Additional CSS classes */
1408
+ class: string;
1409
+ constructor(sanitizer: DomSanitizer);
1410
+ get breadcrumbsClasses(): string;
1411
+ isLastItem(index: number): boolean;
1412
+ getSeparatorIcon(): string;
1413
+ sanitizeHtml(html: string | undefined): SafeHtml | string;
1414
+ getSeparatorIconSafe(): SafeHtml;
1415
+ static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbsComponent, never>;
1416
+ static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbsComponent, "sefin-breadcrumbs", never, { "items": { "alias": "items"; "required": false; }; "separator": { "alias": "separator"; "required": false; }; "size": { "alias": "size"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, never, true, never>;
1417
+ }
1418
+
1419
+ interface ButtonGroupOption {
1420
+ label: string;
1421
+ value: string | number;
1422
+ disabled?: boolean;
1423
+ icon?: string;
1424
+ }
1425
+ type ButtonGroupVariant = 'default' | 'segmented';
1426
+ type ButtonGroupSize = 'sm' | 'md' | 'lg';
1427
+ declare class ButtonGroupComponent {
1428
+ private sanitizer;
1429
+ constructor(sanitizer: DomSanitizer);
1430
+ /** Array of button options */
1431
+ options: ButtonGroupOption[];
1432
+ /** Selected value (for segmented variant) */
1433
+ value: string | number | null;
1434
+ /** Whether multiple selection is allowed (for default variant) */
1435
+ multiple: boolean;
1436
+ /** Selected values (for multiple selection) */
1437
+ selectedValues: (string | number)[];
1438
+ /** Button variant style. Options: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' */
1439
+ variant: ButtonVariant;
1440
+ /** Button size. Options: 'sm' | 'md' | 'lg' */
1441
+ size: ButtonSize;
1442
+ /** Button group variant. Options: 'default' | 'segmented' */
1443
+ groupVariant: ButtonGroupVariant;
1444
+ /** Whether the button group is disabled */
1445
+ disabled: boolean;
1446
+ /** Whether buttons should take full width of the container */
1447
+ fullWidth: boolean;
1448
+ /** Additional CSS classes */
1449
+ class: string;
1450
+ /** Event emitted when value changes (for segmented variant) */
1451
+ valueChange: EventEmitter<string | number>;
1452
+ /** Event emitted when selected values change (for multiple selection) */
1453
+ selectedValuesChange: EventEmitter<(string | number)[]>;
1454
+ /** Event emitted when a button is clicked */
1455
+ buttonClick: EventEmitter<ButtonGroupOption>;
1456
+ get buttonGroupClasses(): string;
1457
+ isSelected(option: ButtonGroupOption): boolean;
1458
+ onButtonClick(option: ButtonGroupOption): void;
1459
+ getButtonClasses(option: ButtonGroupOption): string;
1460
+ sanitizeHtml(html: string | undefined): SafeHtml | string;
1461
+ static ɵfac: i0.ɵɵFactoryDeclaration<ButtonGroupComponent, never>;
1462
+ static ɵcmp: i0.ɵɵComponentDeclaration<ButtonGroupComponent, "sefin-button-group", never, { "options": { "alias": "options"; "required": false; }; "value": { "alias": "value"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "selectedValues": { "alias": "selectedValues"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "groupVariant": { "alias": "groupVariant"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, { "valueChange": "valueChange"; "selectedValuesChange": "selectedValuesChange"; "buttonClick": "buttonClick"; }, never, never, true, never>;
1463
+ }
1464
+
1314
1465
  declare class CardComponent {
1315
1466
  /** Card variant style. Options: 'default' | 'elevated' | 'outlined' */
1316
1467
  variant: CardVariant;
@@ -1412,6 +1563,147 @@ declare class DatepickerComponent implements OnInit, OnChanges, AfterViewInit, O
1412
1563
  static ɵcmp: i0.ɵɵComponentDeclaration<DatepickerComponent, "sefin-datepicker", never, { "value": { "alias": "value"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "format": { "alias": "format"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "showTodayButton": { "alias": "showTodayButton"; "required": false; }; "showClearButton": { "alias": "showClearButton"; "required": false; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; }; }, { "valueChange": "valueChange"; "dateSelected": "dateSelected"; }, never, never, true, never>;
1413
1564
  }
1414
1565
 
1566
+ type FormFieldVariant = 'outlined' | 'filled' | 'standard';
1567
+ type FormFieldSize = 'sm' | 'md' | 'lg';
1568
+ type FormFieldType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';
1569
+ declare class FormFieldComponent implements ControlValueAccessor, Validator, OnInit, AfterViewInit, OnDestroy {
1570
+ private cdr;
1571
+ inputRef?: ElementRef<HTMLInputElement>;
1572
+ /** Label text for the field */
1573
+ label: string;
1574
+ /** FormField variant style. Options: 'outlined' | 'filled' | 'standard' */
1575
+ variant: FormFieldVariant;
1576
+ /** FormField size. Options: 'sm' | 'md' | 'lg' */
1577
+ size: FormFieldSize;
1578
+ /** Input type. Options: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' */
1579
+ type: FormFieldType;
1580
+ /** Placeholder text */
1581
+ placeholder: string;
1582
+ /** Helper text shown below the input */
1583
+ hint: string;
1584
+ /** Error message to display */
1585
+ errorMessage: string;
1586
+ /** Whether the field is required */
1587
+ required: boolean;
1588
+ /** Whether the field is disabled */
1589
+ disabled: boolean;
1590
+ /** Whether the field is readonly */
1591
+ readonly: boolean;
1592
+ /** Maximum length of the input */
1593
+ maxLength?: number;
1594
+ /** Minimum length of the input */
1595
+ minLength?: number;
1596
+ /** Pattern for validation (regex string) */
1597
+ pattern?: string;
1598
+ /** Leading icon name */
1599
+ leadingIcon?: string;
1600
+ /** Trailing icon name */
1601
+ trailingIcon?: string;
1602
+ /** Whether to show character counter */
1603
+ showCounter: boolean;
1604
+ /** Autocomplete attribute */
1605
+ autocomplete?: string;
1606
+ /** Input name attribute */
1607
+ name: string;
1608
+ /** Input id attribute */
1609
+ id: string;
1610
+ /** Additional CSS classes */
1611
+ class: string;
1612
+ /** Custom validation function */
1613
+ customValidator?: (value: string) => string | null;
1614
+ /** Event emitted when the value changes */
1615
+ valueChange: EventEmitter<string>;
1616
+ /** Event emitted when the input is focused */
1617
+ focused: EventEmitter<FocusEvent>;
1618
+ /** Event emitted when the input is blurred */
1619
+ blurred: EventEmitter<FocusEvent>;
1620
+ /** Event emitted when trailing icon is clicked */
1621
+ trailingIconClick: EventEmitter<MouseEvent>;
1622
+ value: string;
1623
+ isFocused: boolean;
1624
+ hasError: boolean;
1625
+ internalErrorMessage: string;
1626
+ internalId: string;
1627
+ private onChange;
1628
+ private onTouched;
1629
+ private destroy$;
1630
+ private control?;
1631
+ constructor(cdr: ChangeDetectorRef);
1632
+ ngOnInit(): void;
1633
+ ngAfterViewInit(): void;
1634
+ ngOnDestroy(): void;
1635
+ private generateIdIfNeeded;
1636
+ get fieldId(): string;
1637
+ get labelId(): string;
1638
+ get inputId(): string;
1639
+ get hintId(): string;
1640
+ onInput(event: Event): void;
1641
+ onFocus(event: FocusEvent): void;
1642
+ onBlur(event: FocusEvent): void;
1643
+ onTrailingIconClick(event: MouseEvent): void;
1644
+ private validateField;
1645
+ get displayError(): boolean;
1646
+ get displayErrorMessage(): string;
1647
+ get characterCount(): number;
1648
+ get formFieldClasses(): string;
1649
+ writeValue(value: string | null | undefined): void;
1650
+ registerOnChange(fn: (value: string) => void): void;
1651
+ registerOnTouched(fn: () => void): void;
1652
+ setDisabledState(isDisabled: boolean): void;
1653
+ validate(control: AbstractControl): ValidationErrors | null;
1654
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormFieldComponent, never>;
1655
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormFieldComponent, "sefin-form-field", never, { "label": { "alias": "label"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "minLength": { "alias": "minLength"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "leadingIcon": { "alias": "leadingIcon"; "required": false; }; "trailingIcon": { "alias": "trailingIcon"; "required": false; }; "showCounter": { "alias": "showCounter"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "class": { "alias": "class"; "required": false; }; "customValidator": { "alias": "customValidator"; "required": false; }; }, { "valueChange": "valueChange"; "focused": "focused"; "blurred": "blurred"; "trailingIconClick": "trailingIconClick"; }, never, never, true, never>;
1656
+ }
1657
+
1658
+ type PaginationSize = 'sm' | 'md' | 'lg';
1659
+ type PaginationVariant = 'default' | 'compact';
1660
+ declare class PaginationComponent {
1661
+ /** Current page (1-based) */
1662
+ set currentPage(value: number);
1663
+ get currentPage(): number;
1664
+ private _currentPage;
1665
+ /** Total number of pages */
1666
+ set totalPages(value: number);
1667
+ get totalPages(): number;
1668
+ private _totalPages;
1669
+ /** Total number of items (alternative to totalPages) */
1670
+ set totalItems(value: number | undefined);
1671
+ get totalItems(): number | undefined;
1672
+ private _totalItems;
1673
+ /** Items per page (used when totalItems is provided) */
1674
+ itemsPerPage: number;
1675
+ /** Number of page buttons to show on each side of current page */
1676
+ siblingCount: number;
1677
+ /** Show first and last page buttons */
1678
+ showFirstLast: boolean;
1679
+ /** Show previous and next buttons */
1680
+ showPrevNext: boolean;
1681
+ /** Pagination size. Options: 'sm' | 'md' | 'lg' */
1682
+ size: PaginationSize;
1683
+ /** Pagination variant. Options: 'default' | 'compact' */
1684
+ variant: PaginationVariant;
1685
+ /** Additional CSS classes */
1686
+ class: string;
1687
+ /** Event emitted when page changes */
1688
+ pageChange: EventEmitter<number>;
1689
+ /** Computed total pages (from totalItems or direct input) */
1690
+ readonly computedTotalPages: i0.Signal<number>;
1691
+ /** Computed page numbers to display */
1692
+ readonly pageNumbers: i0.Signal<(string | number)[]>;
1693
+ get paginationClasses(): string;
1694
+ isDisabled(direction: 'prev' | 'next'): boolean;
1695
+ goToPage(page: number | string): void;
1696
+ goToPrevious(): void;
1697
+ goToNext(): void;
1698
+ goToFirst(): void;
1699
+ goToLast(): void;
1700
+ isEllipsis(item: number | string): boolean;
1701
+ isCurrentPage(page: number | string): boolean;
1702
+ getAriaCurrent(page: number | string): string | null;
1703
+ static ɵfac: i0.ɵɵFactoryDeclaration<PaginationComponent, never>;
1704
+ static ɵcmp: i0.ɵɵComponentDeclaration<PaginationComponent, "sefin-pagination", never, { "currentPage": { "alias": "currentPage"; "required": false; }; "totalPages": { "alias": "totalPages"; "required": false; }; "totalItems": { "alias": "totalItems"; "required": false; }; "itemsPerPage": { "alias": "itemsPerPage"; "required": false; }; "siblingCount": { "alias": "siblingCount"; "required": false; }; "showFirstLast": { "alias": "showFirstLast"; "required": false; }; "showPrevNext": { "alias": "showPrevNext"; "required": false; }; "size": { "alias": "size"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
1705
+ }
1706
+
1415
1707
  type TextareaVariant = 'outlined' | 'filled' | 'standard';
1416
1708
  type TextareaSize = 'sm' | 'md' | 'lg';
1417
1709
  declare class TextareaComponent implements ControlValueAccessor, Validator, OnInit, AfterViewInit, OnDestroy {
@@ -1500,7 +1792,154 @@ declare class TextareaComponent implements ControlValueAccessor, Validator, OnIn
1500
1792
  static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent, "sefin-textarea", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "minLength": { "alias": "minLength"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "autoResize": { "alias": "autoResize"; "required": false; }; "minHeight": { "alias": "minHeight"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "showCounter": { "alias": "showCounter"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "class": { "alias": "class"; "required": false; }; "customValidator": { "alias": "customValidator"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "focused": "focused"; "blurred": "blurred"; }, never, never, true, never>;
1501
1793
  }
1502
1794
 
1795
+ /**
1796
+ * Column type for table cells
1797
+ */
1798
+ type TableColumnType = 'text' | 'number' | 'date' | 'badge' | 'actions';
1799
+ /**
1800
+ * Text alignment options
1801
+ */
1802
+ type TableColumnAlign = 'left' | 'center' | 'right';
1803
+ /**
1804
+ * Sort direction
1805
+ */
1806
+ type SortDirection = 'asc' | 'desc' | '';
1807
+ /**
1808
+ * Table column definition
1809
+ */
1810
+ interface TableColumn {
1811
+ /** Unique key for the column (should match a property in data objects) */
1812
+ key: string;
1813
+ /** Column header label */
1814
+ header: string;
1815
+ /** Column type for formatting/rendering */
1816
+ type?: TableColumnType;
1817
+ /** Text alignment */
1818
+ align?: TableColumnAlign;
1819
+ /** Column width (CSS value, e.g., '100px', '20%') */
1820
+ width?: string;
1821
+ /** Whether column is sortable */
1822
+ sortable?: boolean;
1823
+ /** Whether column is sticky (e.g., first/last column) */
1824
+ sticky?: boolean;
1825
+ /** Whether column sticks to left or right when sticky */
1826
+ stickyEnd?: boolean;
1827
+ /** Custom cell template */
1828
+ cellTemplate?: TemplateRef<any>;
1829
+ }
1830
+ /**
1831
+ * Table density mode
1832
+ */
1833
+ type TableDensity = 'compact' | 'comfortable';
1834
+ /**
1835
+ * Selection mode
1836
+ */
1837
+ type SelectionMode = 'single' | 'multiple';
1838
+ /**
1839
+ * Page change event payload
1840
+ */
1841
+ interface PageChangeEvent {
1842
+ pageIndex: number;
1843
+ pageSize: number;
1844
+ }
1845
+ /**
1846
+ * Sort change event payload
1847
+ */
1848
+ interface SortChangeEvent {
1849
+ active: string;
1850
+ direction: SortDirection;
1851
+ }
1852
+
1853
+ /**
1854
+ * Helper function to build displayed columns array including selection and actions
1855
+ */
1856
+ declare function buildDisplayedColumns(columns: TableColumn[], selectable: boolean, hasActions: boolean): string[];
1857
+ declare class TableComponent implements OnInit, OnChanges {
1858
+ private cdr;
1859
+ /** Column definitions */
1860
+ columns: TableColumn[];
1861
+ /** Table data */
1862
+ data: any[];
1863
+ /** Property key used for tracking rows (default: 'id') */
1864
+ trackByKey: string;
1865
+ /** Loading state */
1866
+ loading: boolean;
1867
+ /** Empty state message */
1868
+ emptyText: string;
1869
+ /** Table density */
1870
+ density: TableDensity;
1871
+ /** Striped rows */
1872
+ striped: boolean;
1873
+ /** Row hover effect */
1874
+ hover: boolean;
1875
+ /** Enable row selection */
1876
+ selectable: boolean;
1877
+ /** Selection mode: 'single' or 'multiple' */
1878
+ selectionMode: SelectionMode;
1879
+ /** Enable pagination */
1880
+ pagination: boolean;
1881
+ /** Page size options */
1882
+ pageSizeOptions: number[];
1883
+ /** Current page size */
1884
+ pageSize: number;
1885
+ /** Total items (for server-side mode) */
1886
+ total: number | undefined;
1887
+ /** Enable sorting */
1888
+ sort: boolean;
1889
+ /** Server-side mode (don't slice data locally) */
1890
+ serverSide: boolean;
1891
+ /** Sticky header */
1892
+ stickyHeader: boolean;
1893
+ /** Header actions template slot */
1894
+ headerActionsTemplate?: TemplateRef<any>;
1895
+ /** Empty state icon template slot */
1896
+ emptyIconTemplate?: TemplateRef<any>;
1897
+ /** Row clicked event */
1898
+ rowClicked: EventEmitter<any>;
1899
+ /** Selection changed event */
1900
+ selectionChanged: EventEmitter<any[]>;
1901
+ /** Page changed event */
1902
+ pageChanged: EventEmitter<PageChangeEvent>;
1903
+ /** Sort changed event */
1904
+ sortChanged: EventEmitter<SortChangeEvent>;
1905
+ readonly selectedItems: i0.WritableSignal<any[]>;
1906
+ readonly currentSortColumn: i0.WritableSignal<string>;
1907
+ readonly currentSortDirection: i0.WritableSignal<SortDirection>;
1908
+ readonly currentPage: i0.WritableSignal<number>;
1909
+ readonly currentPageSize: i0.WritableSignal<number>;
1910
+ readonly sortedData: i0.Signal<any[]>;
1911
+ readonly paginatedData: i0.Signal<any[]>;
1912
+ readonly displayedData: i0.Signal<any[]>;
1913
+ readonly totalPages: i0.Signal<number>;
1914
+ readonly isEmpty: i0.Signal<boolean>;
1915
+ readonly hasActionsColumn: i0.Signal<boolean>;
1916
+ readonly totalColspan: i0.Signal<number>;
1917
+ readonly isAllSelected: i0.Signal<boolean>;
1918
+ readonly isIndeterminate: i0.Signal<boolean>;
1919
+ constructor(cdr: ChangeDetectorRef);
1920
+ ngOnInit(): void;
1921
+ ngOnChanges(changes: SimpleChanges): void;
1922
+ trackByFn(index: number, item: any): any;
1923
+ getCellValue(row: any, column: TableColumn): any;
1924
+ formatCellValue(value: any, type?: TableColumnType): string;
1925
+ private parseDate;
1926
+ onRowClick(row: any): void;
1927
+ onSort(column: TableColumn): void;
1928
+ onPageChange(page: number): void;
1929
+ isSelected(row: any): boolean;
1930
+ toggleRowSelection(checked: boolean, row?: any): void;
1931
+ toggleSelectAll(checked: boolean): void;
1932
+ private getItemId;
1933
+ getColumnClass(column: TableColumn): string;
1934
+ getTableClasses(): string;
1935
+ getColumnWidth(column: TableColumn): string | undefined;
1936
+ getPageNumbers(): (number | string)[];
1937
+ Math: Math;
1938
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent, never>;
1939
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "sefin-table", never, { "columns": { "alias": "columns"; "required": false; }; "data": { "alias": "data"; "required": false; }; "trackByKey": { "alias": "trackByKey"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "emptyText": { "alias": "emptyText"; "required": false; }; "density": { "alias": "density"; "required": false; }; "striped": { "alias": "striped"; "required": false; }; "hover": { "alias": "hover"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "pagination": { "alias": "pagination"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "total": { "alias": "total"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "serverSide": { "alias": "serverSide"; "required": false; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; }; "headerActionsTemplate": { "alias": "headerActionsTemplate"; "required": false; }; "emptyIconTemplate": { "alias": "emptyIconTemplate"; "required": false; }; }, { "rowClicked": "rowClicked"; "selectionChanged": "selectionChanged"; "pageChanged": "pageChanged"; "sortChanged": "sortChanged"; }, never, ["[actions]", "[actions]"], true, never>;
1940
+ }
1941
+
1503
1942
  declare const STYLES_PATH = "./styles/index.scss";
1504
1943
 
1505
- export { AccordionItemComponent, AlertComponent, AutocompleteComponent, AvatarComponent, BORDER_RADIUS_TOKENS, BRAND_THEME, BadgeComponent, ButtonComponent, COLOR_TOKENS, CardComponent, CheckboxComponent, ChipComponent, ContainerComponent, DARK_THEME, DESIGN_TOKENS, DatepickerComponent, DividerComponent, FabButtonComponent, IconButtonComponent, IconComponent, ImageComponent, LIGHT_THEME, LinkComponent, ProgressBarComponent, RadioComponent, SHADOW_TOKENS, SPACING_TOKENS, STYLES_PATH, SelectComponent, SpinnerComponent, StackComponent, SwitchComponent, TYPOGRAPHY_TOKENS, TagComponent, TextFieldComponent, TextareaComponent, ThemeLoader, ToastComponent, TooltipComponent, TypographyComponent };
1506
- export type { AlertSize, AlertVariant, AutocompleteOption, AvatarSize, BadgeSize, BadgeVariant, BaseComponent, BorderRadiusToken, ButtonSize, ButtonVariant, CardVariant, ChipSize, ChipVariant, ColorShade, ColorTokenName, ContainerSize, ContainerVariant, CustomTheme, DateFormat, DatePickerMode, DateRange, DividerOrientation, DividerVariant, FabSize, IconSize, ImageFit, ImageLoading, ImageRounded, InputSize, LinkSize, LinkVariant, ProgressBarSize, ProgressBarVariant, SelectOption, ShadowToken, SpacingToken, SpinnerSize, SpinnerVariant, TagSize, TagVariant, TextFieldSize, TextFieldType, TextFieldVariant, TextareaSize, TextareaVariant, Theme, ThemeColors, ToastPosition, ToastVariant, TooltipPosition, TooltipTrigger, TypographyColor, TypographyLineHeight, TypographySize, TypographyToken, TypographyVariant, TypographyWeight };
1944
+ export { AccordionItemComponent, AlertComponent, AutocompleteComponent, AvatarComponent, BORDER_RADIUS_TOKENS, BRAND_THEME, BadgeComponent, BreadcrumbsComponent, ButtonComponent, ButtonGroupComponent, COLOR_TOKENS, CardComponent, CheckboxComponent, ChipComponent, ContainerComponent, DARK_THEME, DESIGN_TOKENS, DatepickerComponent, DividerComponent, FabButtonComponent, FormFieldComponent, IconButtonComponent, IconComponent, ImageComponent, LIGHT_THEME, LinkComponent, PaginationComponent, ProgressBarComponent, RadioComponent, RateComponent, SHADOW_TOKENS, SPACING_TOKENS, STYLES_PATH, SelectComponent, SpacerComponent, SpinnerComponent, StackComponent, SwitchComponent, TYPOGRAPHY_TOKENS, TabComponent, TableComponent, TagComponent, TextFieldComponent, TextareaComponent, ThemeLoader, ToastComponent, TooltipComponent, TypographyComponent, buildDisplayedColumns };
1945
+ export type { AlertSize, AlertVariant, AutocompleteOption, AvatarSize, BadgeSize, BadgeVariant, BaseComponent, BorderRadiusToken, BreadcrumbItem, BreadcrumbSeparator, BreadcrumbSize, ButtonGroupOption, ButtonGroupSize, ButtonGroupVariant, ButtonSize, ButtonVariant, CardVariant, ChipSize, ChipVariant, ColorShade, ColorTokenName, ContainerSize, ContainerVariant, CustomTheme, DateFormat, DatePickerMode, DateRange, DividerOrientation, DividerVariant, FabSize, FormFieldSize, FormFieldType, FormFieldVariant, IconSize, ImageFit, ImageLoading, ImageRounded, InputSize, LinkSize, LinkVariant, PageChangeEvent, PaginationSize, PaginationVariant, ProgressBarSize, ProgressBarVariant, RateIcon, RateSize, SelectOption, SelectionMode, ShadowToken, SortChangeEvent, SortDirection, SpacerOrientation, SpacerSize, SpacingToken, SpinnerSize, SpinnerVariant, TabSize, TabVariant, TableColumn, TableColumnAlign, TableColumnType, TableDensity, TagSize, TagVariant, TextFieldSize, TextFieldType, TextFieldVariant, TextareaSize, TextareaVariant, Theme, ThemeColors, ToastPosition, ToastVariant, TooltipPosition, TooltipTrigger, TypographyColor, TypographyLineHeight, TypographySize, TypographyToken, TypographyVariant, TypographyWeight };