@raintonic/formaui 0.9.0 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/fesm2022/raintonic-formaui-components-accordion.mjs +4 -4
  2. package/fesm2022/raintonic-formaui-components-accordion.mjs.map +1 -1
  3. package/fesm2022/raintonic-formaui-components-alert.mjs +2 -2
  4. package/fesm2022/raintonic-formaui-components-alert.mjs.map +1 -1
  5. package/fesm2022/raintonic-formaui-components-autocomplete.mjs +2 -2
  6. package/fesm2022/raintonic-formaui-components-autocomplete.mjs.map +1 -1
  7. package/fesm2022/raintonic-formaui-components-avatar.mjs +3 -3
  8. package/fesm2022/raintonic-formaui-components-avatar.mjs.map +1 -1
  9. package/fesm2022/raintonic-formaui-components-badge.mjs +2 -2
  10. package/fesm2022/raintonic-formaui-components-badge.mjs.map +1 -1
  11. package/fesm2022/raintonic-formaui-components-button-group.mjs +2 -2
  12. package/fesm2022/raintonic-formaui-components-button-group.mjs.map +1 -1
  13. package/fesm2022/raintonic-formaui-components-card.mjs +78 -8
  14. package/fesm2022/raintonic-formaui-components-card.mjs.map +1 -1
  15. package/fesm2022/raintonic-formaui-components-checkbox.mjs +2 -2
  16. package/fesm2022/raintonic-formaui-components-checkbox.mjs.map +1 -1
  17. package/fesm2022/raintonic-formaui-components-chip.mjs +2 -2
  18. package/fesm2022/raintonic-formaui-components-chip.mjs.map +1 -1
  19. package/fesm2022/raintonic-formaui-components-data-table.mjs +80 -11
  20. package/fesm2022/raintonic-formaui-components-data-table.mjs.map +1 -1
  21. package/fesm2022/raintonic-formaui-components-date-picker.mjs +4 -4
  22. package/fesm2022/raintonic-formaui-components-date-picker.mjs.map +1 -1
  23. package/fesm2022/raintonic-formaui-components-divider.mjs +2 -2
  24. package/fesm2022/raintonic-formaui-components-divider.mjs.map +1 -1
  25. package/fesm2022/raintonic-formaui-components-drawer.mjs +37 -6
  26. package/fesm2022/raintonic-formaui-components-drawer.mjs.map +1 -1
  27. package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs +2 -2
  28. package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs.map +1 -1
  29. package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs +1 -1
  30. package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs.map +1 -1
  31. package/fesm2022/raintonic-formaui-components-empty-state.mjs +2 -2
  32. package/fesm2022/raintonic-formaui-components-empty-state.mjs.map +1 -1
  33. package/fesm2022/raintonic-formaui-components-file-upload.mjs +2 -2
  34. package/fesm2022/raintonic-formaui-components-file-upload.mjs.map +1 -1
  35. package/fesm2022/raintonic-formaui-components-form-field.mjs +21 -2
  36. package/fesm2022/raintonic-formaui-components-form-field.mjs.map +1 -1
  37. package/fesm2022/raintonic-formaui-components-input.mjs +14 -0
  38. package/fesm2022/raintonic-formaui-components-input.mjs.map +1 -1
  39. package/fesm2022/raintonic-formaui-components-list.mjs +4 -4
  40. package/fesm2022/raintonic-formaui-components-list.mjs.map +1 -1
  41. package/fesm2022/raintonic-formaui-components-number-input.mjs +2 -2
  42. package/fesm2022/raintonic-formaui-components-number-input.mjs.map +1 -1
  43. package/fesm2022/raintonic-formaui-components-paginator.mjs +2 -2
  44. package/fesm2022/raintonic-formaui-components-paginator.mjs.map +1 -1
  45. package/fesm2022/raintonic-formaui-components-password-input.mjs +2 -2
  46. package/fesm2022/raintonic-formaui-components-password-input.mjs.map +1 -1
  47. package/fesm2022/raintonic-formaui-components-popover.mjs +2 -2
  48. package/fesm2022/raintonic-formaui-components-popover.mjs.map +1 -1
  49. package/fesm2022/raintonic-formaui-components-progressbar.mjs +2 -2
  50. package/fesm2022/raintonic-formaui-components-progressbar.mjs.map +1 -1
  51. package/fesm2022/raintonic-formaui-components-radio.mjs +4 -4
  52. package/fesm2022/raintonic-formaui-components-radio.mjs.map +1 -1
  53. package/fesm2022/raintonic-formaui-components-select.mjs +15 -7
  54. package/fesm2022/raintonic-formaui-components-select.mjs.map +1 -1
  55. package/fesm2022/raintonic-formaui-components-side-panel.mjs +40 -6
  56. package/fesm2022/raintonic-formaui-components-side-panel.mjs.map +1 -1
  57. package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs +4 -4
  58. package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs.map +1 -1
  59. package/fesm2022/raintonic-formaui-components-slider.mjs +2 -2
  60. package/fesm2022/raintonic-formaui-components-slider.mjs.map +1 -1
  61. package/fesm2022/raintonic-formaui-components-spinner.mjs +2 -2
  62. package/fesm2022/raintonic-formaui-components-spinner.mjs.map +1 -1
  63. package/fesm2022/raintonic-formaui-components-stepper.mjs +2 -2
  64. package/fesm2022/raintonic-formaui-components-stepper.mjs.map +1 -1
  65. package/fesm2022/raintonic-formaui-components-tab.mjs +2 -2
  66. package/fesm2022/raintonic-formaui-components-tab.mjs.map +1 -1
  67. package/fesm2022/raintonic-formaui-components-time-picker.mjs +2 -2
  68. package/fesm2022/raintonic-formaui-components-time-picker.mjs.map +1 -1
  69. package/fesm2022/raintonic-formaui-components-toggle-group.mjs +19 -8
  70. package/fesm2022/raintonic-formaui-components-toggle-group.mjs.map +1 -1
  71. package/fesm2022/raintonic-formaui-components-toolbar.mjs +10 -4
  72. package/fesm2022/raintonic-formaui-components-toolbar.mjs.map +1 -1
  73. package/fesm2022/raintonic-formaui-components-tooltip.mjs +102 -8
  74. package/fesm2022/raintonic-formaui-components-tooltip.mjs.map +1 -1
  75. package/fesm2022/raintonic-formaui-components-topbar.mjs +2 -2
  76. package/fesm2022/raintonic-formaui-components-topbar.mjs.map +1 -1
  77. package/fesm2022/raintonic-formaui-components-tree-select.mjs +2 -2
  78. package/fesm2022/raintonic-formaui-components-tree-select.mjs.map +1 -1
  79. package/fesm2022/raintonic-formaui-components-tree-table.mjs +2 -2
  80. package/fesm2022/raintonic-formaui-components-tree-table.mjs.map +1 -1
  81. package/fesm2022/raintonic-formaui-components-tree.mjs +4 -4
  82. package/fesm2022/raintonic-formaui-components-tree.mjs.map +1 -1
  83. package/fesm2022/raintonic-formaui-services-dialog.mjs +8 -4
  84. package/fesm2022/raintonic-formaui-services-dialog.mjs.map +1 -1
  85. package/fesm2022/raintonic-formaui.mjs +1 -1
  86. package/fesm2022/raintonic-formaui.mjs.map +1 -1
  87. package/llms-full.txt +72 -27
  88. package/package.json +1 -1
  89. package/styles/generated/_tokens.scss +9 -9
  90. package/styles/partials/components/_dialog.scss +24 -0
  91. package/styles/styles.css +24 -9
  92. package/types/raintonic-formaui-components-card.d.ts +46 -2
  93. package/types/raintonic-formaui-components-card.d.ts.map +1 -1
  94. package/types/raintonic-formaui-components-data-table.d.ts +50 -3
  95. package/types/raintonic-formaui-components-data-table.d.ts.map +1 -1
  96. package/types/raintonic-formaui-components-drawer.d.ts +20 -2
  97. package/types/raintonic-formaui-components-drawer.d.ts.map +1 -1
  98. package/types/raintonic-formaui-components-form-field.d.ts +10 -0
  99. package/types/raintonic-formaui-components-form-field.d.ts.map +1 -1
  100. package/types/raintonic-formaui-components-input.d.ts +9 -0
  101. package/types/raintonic-formaui-components-input.d.ts.map +1 -1
  102. package/types/raintonic-formaui-components-select.d.ts +8 -1
  103. package/types/raintonic-formaui-components-select.d.ts.map +1 -1
  104. package/types/raintonic-formaui-components-side-panel.d.ts +24 -2
  105. package/types/raintonic-formaui-components-side-panel.d.ts.map +1 -1
  106. package/types/raintonic-formaui-components-toggle-group.d.ts +1 -1
  107. package/types/raintonic-formaui-components-toggle-group.d.ts.map +1 -1
  108. package/types/raintonic-formaui-components-toolbar.d.ts +5 -1
  109. package/types/raintonic-formaui-components-toolbar.d.ts.map +1 -1
  110. package/types/raintonic-formaui-components-tooltip.d.ts +55 -4
  111. package/types/raintonic-formaui-components-tooltip.d.ts.map +1 -1
  112. package/types/raintonic-formaui-services-dialog.d.ts +12 -1
  113. package/types/raintonic-formaui-services-dialog.d.ts.map +1 -1
  114. package/types/raintonic-formaui.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, Component, signal, computed, HostListener, ContentChild, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
2
+ import { input, Component, Directive, signal, computed, HostListener, ContentChild, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
3
3
 
4
4
  /**
5
5
  * # FuiCardHeader Component
@@ -85,6 +85,68 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
85
85
  }, template: "<ng-content></ng-content>\r\n" }]
86
86
  }], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], paddingless: [{ type: i0.Input, args: [{ isSignal: true, alias: "paddingless", required: false }] }] } });
87
87
 
88
+ /**
89
+ * # FuiCardHeader Directive
90
+ *
91
+ * Marker directive for projecting a custom element into the card header region
92
+ * without using the {@link FuiCardHeaderComponent}. Apply it to any element to
93
+ * have `<fui-card>` treat it as header content.
94
+ *
95
+ * ## Usage
96
+ * ```html
97
+ * <fui-card>
98
+ * <div fuiCardHeader>My full-width header</div>
99
+ * <p>Content</p>
100
+ * </fui-card>
101
+ * ```
102
+ */
103
+ class FuiCardHeaderDirective {
104
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
105
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: FuiCardHeaderDirective, isStandalone: true, selector: "[fuiCardHeader]", host: { classAttribute: "fui-card-header" }, ngImport: i0 });
106
+ }
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardHeaderDirective, decorators: [{
108
+ type: Directive,
109
+ args: [{
110
+ selector: '[fuiCardHeader]',
111
+ standalone: true,
112
+ host: {
113
+ class: 'fui-card-header',
114
+ },
115
+ }]
116
+ }] });
117
+
118
+ /**
119
+ * # FuiCardActions Directive
120
+ *
121
+ * Marker directive for projecting a custom element into the card actions region
122
+ * without using the {@link FuiCardActionsComponent}. Apply it to any element to
123
+ * have `<fui-card>` treat it as actions content.
124
+ *
125
+ * ## Usage
126
+ * ```html
127
+ * <fui-card>
128
+ * <p>Content</p>
129
+ * <div fuiCardActions>
130
+ * <button fuiButton>OK</button>
131
+ * </div>
132
+ * </fui-card>
133
+ * ```
134
+ */
135
+ class FuiCardActionsDirective {
136
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardActionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
137
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: FuiCardActionsDirective, isStandalone: true, selector: "[fuiCardActions]", host: { classAttribute: "fui-card-actions" }, ngImport: i0 });
138
+ }
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardActionsDirective, decorators: [{
140
+ type: Directive,
141
+ args: [{
142
+ selector: '[fuiCardActions]',
143
+ standalone: true,
144
+ host: {
145
+ class: 'fui-card-actions',
146
+ },
147
+ }]
148
+ }] });
149
+
88
150
  /**
89
151
  * # FuiCard Component
90
152
  *
@@ -183,6 +245,8 @@ class FuiCardComponent {
183
245
  // Projected content queries and ARIA label linkage
184
246
  headerCmp;
185
247
  actionsCmp;
248
+ headerDir;
249
+ actionsDir;
186
250
  headerId = '';
187
251
  // Computed classes
188
252
  computedClasses = computed(() => {
@@ -221,16 +285,16 @@ class FuiCardComponent {
221
285
  ngAfterContentInit() {
222
286
  this.headerId = this.headerCmp ? this.headerCmp.hostId : '';
223
287
  }
224
- // Check if header content is projected
288
+ // Check if header content is projected (component or attribute directive)
225
289
  get hasHeader() {
226
- return !!this.headerCmp;
290
+ return !!this.headerCmp || !!this.headerDir;
227
291
  }
228
- // Check if actions content is projected
292
+ // Check if actions content is projected (component or attribute directive)
229
293
  get hasActions() {
230
- return !!this.actionsCmp;
294
+ return !!this.actionsCmp || !!this.actionsDir;
231
295
  }
232
296
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
233
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: FuiCardComponent, isStandalone: true, selector: "fui-card", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "keydown": "onKeyDown($event)", "click": "onClick($event)" }, properties: { "class": "computedClasses()", "attr.role": "clickable() ? \"button\" : \"region\"", "attr.tabindex": "clickable() && !disabled() ? \"0\" : null", "attr.aria-disabled": "disabled() ? \"true\" : null", "attr.aria-labelledby": "headerId" }, classAttribute: "fui-card" }, queries: [{ propertyName: "headerCmp", first: true, predicate: FuiCardHeaderComponent, descendants: true }, { propertyName: "actionsCmp", first: true, predicate: FuiCardActionsComponent, descendants: true }], ngImport: i0, template: "@if (hasHeader) {\r\n <div class=\"fui-card__header\">\r\n <ng-content select=\"fui-card-header, [rtCardHeader]\"></ng-content>\r\n </div>\r\n}\r\n\r\n<div class=\"fui-card__content\" [class.fui-card__content--no-padding]=\"padding() === 'none'\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n@if (hasActions) {\r\n <div class=\"fui-card__actions\">\r\n <ng-content select=\"fui-card-actions, [rtCardActions]\"></ng-content>\r\n </div>\r\n}\r\n", styles: [".fui-text-xs{font-size:var(--fui-text-sm);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.24px}.fui-text-sm{font-size:var(--fui-text-base);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.56px}.fui-text-md{font-size:var(--fui-text-md);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-lg{font-size:var(--fui-text-lg);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-xl{font-size:var(--fui-text-xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-display-xs{font-size:var(--fui-text-2xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-snug);letter-spacing:.48px}.fui-display-sm{font-size:var(--fui-text-3xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-md{font-size:var(--fui-text-4xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-lg{font-size:var(--fui-text-5xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-xl{font-size:var(--fui-text-6xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.2px}.fui-display-2xl{font-size:var(--fui-text-7xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.44px}.fui-code-01{font-family:var(--fui-font-mono);font-size:var(--fui-text-sm);line-height:var(--fui-leading-loose)}.fui-code-02{font-family:var(--fui-font-mono);font-size:var(--fui-text-base);line-height:var(--fui-leading-relaxed)}.fui-font-light{font-weight:var(--fui-weight-light)}.fui-font-regular{font-weight:var(--fui-weight-regular)}.fui-font-medium{font-weight:var(--fui-weight-medium)}.fui-font-semibold{font-weight:var(--fui-weight-semibold)}.fui-font-bold{font-weight:var(--fui-weight-bold)}@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-card{--fui-card-bg: var(--fui-bg-default);--fui-card-border-color: var(--fui-border-default);--fui-card-header-padding: var(--fui-spacing-7) var(--fui-spacing-9);--fui-card-actions-gap: var(--fui-spacing-4);contain:layout style;display:flex;flex-direction:column;position:relative;border-radius:var(--fui-card-border-radius);background-color:var(--fui-card-bg);box-shadow:var(--fui-shadow-xs);backdrop-filter:blur(8px);overflow:hidden;transition-property:box-shadow,transform,border-color;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--elevated{box-shadow:var(--fui-card-shadow);border:none}.fui-card--elevated.fui-card--hovered:not(.fui-card--disabled){box-shadow:var(--fui-card-shadow-hover)}.fui-card--outlined{border:1px solid var(--fui-border-default)}.fui-card--outlined.fui-card--hovered:not(.fui-card--disabled){border-color:var(--fui-border-strong)}.fui-card--flat{box-shadow:none;border:1px solid transparent}.fui-card--clickable{cursor:pointer;transition:transform var(--fui-duration-fast) var(--fui-ease-in-out),box-shadow var(--fui-duration-fast) var(--fui-ease-in-out)}.fui-card--clickable:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.fui-card--clickable:focus-visible{outline:2px solid var(--fui-primary-10);transition-property:all;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--disabled{opacity:var(--fui-state-disabled-opacity);cursor:not-allowed}.fui-card--padding-none .fui-card__content{padding:0}.fui-card--padding-sm .fui-card__content{padding:var(--fui-spacing-6)}.fui-card--padding-md .fui-card__content{padding:var(--fui-spacing-7)}.fui-card--padding-lg .fui-card__content{padding:var(--fui-spacing-9)}.fui-card--padding-xl .fui-card__content{padding:var(--fui-spacing-11)}.fui-card__header{border-bottom:1px solid var(--fui-border-default);font-weight:var(--fui-weight-medium)}.fui-card__header:empty{display:none}.fui-card__content{flex:1;padding:var(--fui-card-padding)}.fui-card__content--no-padding{padding:0}.fui-card__content>:first-child{margin-top:0}.fui-card__content>:last-child{margin-bottom:0}.fui-card__actions{padding-bottom:0;display:flex;gap:var(--fui-spacing-4);align-items:center;justify-content:flex-end}.fui-card__actions:empty{display:none}.fui-card__actions--align-start{justify-content:flex-start}.fui-card__actions--align-center{justify-content:center}.fui-card__actions--align-end{justify-content:flex-end}.fui-card-header{padding:var(--fui-spacing-7) var(--fui-spacing-9);display:flex;flex-direction:column;gap:var(--fui-spacing-2)}.fui-card-header__title{color:var(--fui-text-primary);margin:0}.fui-card-header__subtitle{font-size:var(--fui-text-base);font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);color:var(--fui-text-secondary);margin:0}.fui-card-header__content:empty{margin-top:0}.fui-card-actions{display:flex;gap:var(--fui-spacing-4);align-items:center}.fui-card-actions--align-start{justify-content:flex-start}.fui-card-actions--align-center{justify-content:center}.fui-card-actions--align-end{justify-content:flex-end}.fui-card-actions--paddingless{padding:0}.fui-card-actions .fui-button+.fui-button{margin-left:var(--fui-spacing-4)}@media(min-width:640px){.fui-card--padding-sm .fui-card__content{padding:var(--fui-spacing-2)}.fui-card--padding-md .fui-card__content{padding:var(--fui-spacing-6)}.fui-card--padding-lg .fui-card__content{padding:var(--fui-spacing-9)}.fui-card__actions{padding:0 var(--fui-spacing-6) var(--fui-spacing-6);gap:var(--fui-spacing-2);flex-wrap:wrap}}.fui-card--horizontal{flex-direction:row}.fui-card--horizontal .fui-card__content{flex:1}.fui-card--horizontal .fui-card__actions{flex-direction:column;padding:var(--fui-spacing-7)}.fui-card__image{width:100%;height:auto;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__image:only-child{border-radius:var(--fui-card-border-radius)}.fui-card__media{position:relative;overflow:hidden;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__media img,.fui-card__media video{width:100%;height:auto;display:block}.fui-card__media:last-child{border-radius:0 0 var(--fui-card-border-radius) var(--fui-card-border-radius)}.fui-card__media:only-child{border-radius:var(--fui-card-border-radius)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
297
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: FuiCardComponent, isStandalone: true, selector: "fui-card", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "keydown": "onKeyDown($event)", "click": "onClick($event)" }, properties: { "class": "computedClasses()", "attr.role": "clickable() ? \"button\" : \"region\"", "attr.tabindex": "clickable() && !disabled() ? \"0\" : null", "attr.aria-disabled": "disabled() ? \"true\" : null", "attr.aria-labelledby": "headerId" }, classAttribute: "fui-card" }, queries: [{ propertyName: "headerCmp", first: true, predicate: FuiCardHeaderComponent, descendants: true }, { propertyName: "actionsCmp", first: true, predicate: FuiCardActionsComponent, descendants: true }, { propertyName: "headerDir", first: true, predicate: FuiCardHeaderDirective, descendants: true }, { propertyName: "actionsDir", first: true, predicate: FuiCardActionsDirective, descendants: true }], ngImport: i0, template: "@if (hasHeader) {\r\n <div class=\"fui-card__header\">\r\n <ng-content select=\"fui-card-header, [fuiCardHeader]\"></ng-content>\r\n </div>\r\n}\r\n\r\n<div class=\"fui-card__content\" [class.fui-card__content--no-padding]=\"padding() === 'none'\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n@if (hasActions) {\r\n <div class=\"fui-card__actions\">\r\n <ng-content select=\"fui-card-actions, [fuiCardActions]\"></ng-content>\r\n </div>\r\n}\r\n", styles: [".fui-text-xs{font-size:var(--fui-text-sm);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.24px}.fui-text-sm{font-size:var(--fui-text-base);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.56px}.fui-text-md{font-size:var(--fui-text-md);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-lg{font-size:var(--fui-text-lg);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-xl{font-size:var(--fui-text-xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-display-xs{font-size:var(--fui-text-2xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-snug);letter-spacing:.48px}.fui-display-sm{font-size:var(--fui-text-3xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-md{font-size:var(--fui-text-4xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-lg{font-size:var(--fui-text-5xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-xl{font-size:var(--fui-text-6xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.2px}.fui-display-2xl{font-size:var(--fui-text-7xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.44px}.fui-code-01{font-family:var(--fui-font-mono);font-size:var(--fui-text-sm);line-height:var(--fui-leading-loose)}.fui-code-02{font-family:var(--fui-font-mono);font-size:var(--fui-text-base);line-height:var(--fui-leading-relaxed)}.fui-font-light{font-weight:var(--fui-weight-light)}.fui-font-regular{font-weight:var(--fui-weight-regular)}.fui-font-medium{font-weight:var(--fui-weight-medium)}.fui-font-semibold{font-weight:var(--fui-weight-semibold)}.fui-font-bold{font-weight:var(--fui-weight-bold)}@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-card{--fui-card-bg: var(--fui-bg-default);--fui-card-border-color: var(--fui-border-default);--fui-card-actions-gap: var(--fui-spacing-4);contain:layout style;display:flex;flex-direction:column;position:relative;border-radius:var(--fui-card-border-radius);background-color:var(--fui-card-bg);box-shadow:var(--fui-shadow-xs);backdrop-filter:blur(8px);overflow:hidden;transition-property:box-shadow,transform,border-color;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--elevated{box-shadow:var(--fui-card-shadow);border:none}.fui-card--elevated.fui-card--hovered:not(.fui-card--disabled){box-shadow:var(--fui-card-shadow-hover)}.fui-card--outlined{border:var(--fui-border-width-sm) solid var(--fui-border-default)}.fui-card--outlined.fui-card--hovered:not(.fui-card--disabled){border-color:var(--fui-border-strong)}.fui-card--flat{box-shadow:none;border:var(--fui-border-width-sm) solid transparent}.fui-card--clickable{cursor:pointer;transition:transform var(--fui-duration-fast) var(--fui-ease-in-out),box-shadow var(--fui-duration-fast) var(--fui-ease-in-out)}.fui-card--clickable:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.fui-card--clickable:focus-visible{outline:2px solid var(--fui-primary-10);transition-property:all;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--disabled{opacity:var(--fui-state-disabled-opacity);cursor:not-allowed}.fui-card--padding-none{--fui-card-padding: 0}.fui-card--padding-sm{--fui-card-padding: var(--fui-spacing-6)}.fui-card--padding-md{--fui-card-padding: var(--fui-spacing-7)}.fui-card--padding-lg{--fui-card-padding: var(--fui-spacing-9)}.fui-card--padding-xl{--fui-card-padding: var(--fui-spacing-11)}.fui-card__header{border-bottom:var(--fui-border-width-sm) solid var(--fui-border-default);font-weight:var(--fui-weight-medium)}.fui-card__header:empty{display:none}.fui-card__content{flex:1;padding:var(--fui-card-padding)}.fui-card__content--no-padding{padding:0}.fui-card__content>:first-child{margin-top:0}.fui-card__content>:last-child{margin-bottom:0}.fui-card__actions{padding-bottom:0;display:flex;gap:var(--fui-spacing-4);align-items:center;justify-content:flex-end}.fui-card__actions:empty{display:none}.fui-card__actions--align-start{justify-content:flex-start}.fui-card__actions--align-center{justify-content:center}.fui-card__actions--align-end{justify-content:flex-end}.fui-card-header{padding-block:calc(var(--fui-card-padding) + var(--fui-spacing-2));padding-inline:var(--fui-card-padding);display:flex;flex-direction:column;gap:var(--fui-spacing-2)}.fui-card-header__title{color:var(--fui-text-primary);margin:0}.fui-card-header__subtitle{font-size:var(--fui-text-base);font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);color:var(--fui-text-secondary);margin:0}.fui-card-header__content{flex:1;min-width:0;display:flex;justify-content:flex-end}.fui-card-header__content:empty{margin-top:0}.fui-card-actions{display:flex;gap:var(--fui-spacing-4);align-items:center}.fui-card-actions--align-start{justify-content:flex-start}.fui-card-actions--align-center{justify-content:center}.fui-card-actions--align-end{justify-content:flex-end}.fui-card-actions--paddingless{padding:0}.fui-card-actions .fui-button+.fui-button{margin-left:var(--fui-spacing-4)}@media(min-width:640px){.fui-card--padding-sm{--fui-card-padding: var(--fui-spacing-2)}.fui-card--padding-md{--fui-card-padding: var(--fui-spacing-6)}.fui-card--padding-lg{--fui-card-padding: var(--fui-spacing-9)}.fui-card__actions{padding:0 var(--fui-spacing-6) var(--fui-spacing-6);gap:var(--fui-spacing-2);flex-wrap:wrap}}.fui-card--horizontal{flex-direction:row}.fui-card--horizontal .fui-card__content{flex:1}.fui-card--horizontal .fui-card__actions{flex-direction:column;padding:var(--fui-spacing-7)}.fui-card__image{width:100%;height:auto;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__image:only-child{border-radius:var(--fui-card-border-radius)}.fui-card__media{position:relative;overflow:hidden;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__media img,.fui-card__media video{width:100%;height:auto;display:block}.fui-card__media:last-child{border-radius:0 0 var(--fui-card-border-radius) var(--fui-card-border-radius)}.fui-card__media:only-child{border-radius:var(--fui-card-border-radius)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
234
298
  }
235
299
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardComponent, decorators: [{
236
300
  type: Component,
@@ -241,13 +305,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
241
305
  '[attr.tabindex]': 'clickable() && !disabled() ? "0" : null',
242
306
  '[attr.aria-disabled]': 'disabled() ? "true" : null',
243
307
  '[attr.aria-labelledby]': 'headerId',
244
- }, template: "@if (hasHeader) {\r\n <div class=\"fui-card__header\">\r\n <ng-content select=\"fui-card-header, [rtCardHeader]\"></ng-content>\r\n </div>\r\n}\r\n\r\n<div class=\"fui-card__content\" [class.fui-card__content--no-padding]=\"padding() === 'none'\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n@if (hasActions) {\r\n <div class=\"fui-card__actions\">\r\n <ng-content select=\"fui-card-actions, [rtCardActions]\"></ng-content>\r\n </div>\r\n}\r\n", styles: [".fui-text-xs{font-size:var(--fui-text-sm);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.24px}.fui-text-sm{font-size:var(--fui-text-base);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.56px}.fui-text-md{font-size:var(--fui-text-md);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-lg{font-size:var(--fui-text-lg);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-xl{font-size:var(--fui-text-xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-display-xs{font-size:var(--fui-text-2xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-snug);letter-spacing:.48px}.fui-display-sm{font-size:var(--fui-text-3xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-md{font-size:var(--fui-text-4xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-lg{font-size:var(--fui-text-5xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-xl{font-size:var(--fui-text-6xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.2px}.fui-display-2xl{font-size:var(--fui-text-7xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.44px}.fui-code-01{font-family:var(--fui-font-mono);font-size:var(--fui-text-sm);line-height:var(--fui-leading-loose)}.fui-code-02{font-family:var(--fui-font-mono);font-size:var(--fui-text-base);line-height:var(--fui-leading-relaxed)}.fui-font-light{font-weight:var(--fui-weight-light)}.fui-font-regular{font-weight:var(--fui-weight-regular)}.fui-font-medium{font-weight:var(--fui-weight-medium)}.fui-font-semibold{font-weight:var(--fui-weight-semibold)}.fui-font-bold{font-weight:var(--fui-weight-bold)}@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-card{--fui-card-bg: var(--fui-bg-default);--fui-card-border-color: var(--fui-border-default);--fui-card-header-padding: var(--fui-spacing-7) var(--fui-spacing-9);--fui-card-actions-gap: var(--fui-spacing-4);contain:layout style;display:flex;flex-direction:column;position:relative;border-radius:var(--fui-card-border-radius);background-color:var(--fui-card-bg);box-shadow:var(--fui-shadow-xs);backdrop-filter:blur(8px);overflow:hidden;transition-property:box-shadow,transform,border-color;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--elevated{box-shadow:var(--fui-card-shadow);border:none}.fui-card--elevated.fui-card--hovered:not(.fui-card--disabled){box-shadow:var(--fui-card-shadow-hover)}.fui-card--outlined{border:1px solid var(--fui-border-default)}.fui-card--outlined.fui-card--hovered:not(.fui-card--disabled){border-color:var(--fui-border-strong)}.fui-card--flat{box-shadow:none;border:1px solid transparent}.fui-card--clickable{cursor:pointer;transition:transform var(--fui-duration-fast) var(--fui-ease-in-out),box-shadow var(--fui-duration-fast) var(--fui-ease-in-out)}.fui-card--clickable:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.fui-card--clickable:focus-visible{outline:2px solid var(--fui-primary-10);transition-property:all;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--disabled{opacity:var(--fui-state-disabled-opacity);cursor:not-allowed}.fui-card--padding-none .fui-card__content{padding:0}.fui-card--padding-sm .fui-card__content{padding:var(--fui-spacing-6)}.fui-card--padding-md .fui-card__content{padding:var(--fui-spacing-7)}.fui-card--padding-lg .fui-card__content{padding:var(--fui-spacing-9)}.fui-card--padding-xl .fui-card__content{padding:var(--fui-spacing-11)}.fui-card__header{border-bottom:1px solid var(--fui-border-default);font-weight:var(--fui-weight-medium)}.fui-card__header:empty{display:none}.fui-card__content{flex:1;padding:var(--fui-card-padding)}.fui-card__content--no-padding{padding:0}.fui-card__content>:first-child{margin-top:0}.fui-card__content>:last-child{margin-bottom:0}.fui-card__actions{padding-bottom:0;display:flex;gap:var(--fui-spacing-4);align-items:center;justify-content:flex-end}.fui-card__actions:empty{display:none}.fui-card__actions--align-start{justify-content:flex-start}.fui-card__actions--align-center{justify-content:center}.fui-card__actions--align-end{justify-content:flex-end}.fui-card-header{padding:var(--fui-spacing-7) var(--fui-spacing-9);display:flex;flex-direction:column;gap:var(--fui-spacing-2)}.fui-card-header__title{color:var(--fui-text-primary);margin:0}.fui-card-header__subtitle{font-size:var(--fui-text-base);font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);color:var(--fui-text-secondary);margin:0}.fui-card-header__content:empty{margin-top:0}.fui-card-actions{display:flex;gap:var(--fui-spacing-4);align-items:center}.fui-card-actions--align-start{justify-content:flex-start}.fui-card-actions--align-center{justify-content:center}.fui-card-actions--align-end{justify-content:flex-end}.fui-card-actions--paddingless{padding:0}.fui-card-actions .fui-button+.fui-button{margin-left:var(--fui-spacing-4)}@media(min-width:640px){.fui-card--padding-sm .fui-card__content{padding:var(--fui-spacing-2)}.fui-card--padding-md .fui-card__content{padding:var(--fui-spacing-6)}.fui-card--padding-lg .fui-card__content{padding:var(--fui-spacing-9)}.fui-card__actions{padding:0 var(--fui-spacing-6) var(--fui-spacing-6);gap:var(--fui-spacing-2);flex-wrap:wrap}}.fui-card--horizontal{flex-direction:row}.fui-card--horizontal .fui-card__content{flex:1}.fui-card--horizontal .fui-card__actions{flex-direction:column;padding:var(--fui-spacing-7)}.fui-card__image{width:100%;height:auto;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__image:only-child{border-radius:var(--fui-card-border-radius)}.fui-card__media{position:relative;overflow:hidden;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__media img,.fui-card__media video{width:100%;height:auto;display:block}.fui-card__media:last-child{border-radius:0 0 var(--fui-card-border-radius) var(--fui-card-border-radius)}.fui-card__media:only-child{border-radius:var(--fui-card-border-radius)}\n"] }]
308
+ }, template: "@if (hasHeader) {\r\n <div class=\"fui-card__header\">\r\n <ng-content select=\"fui-card-header, [fuiCardHeader]\"></ng-content>\r\n </div>\r\n}\r\n\r\n<div class=\"fui-card__content\" [class.fui-card__content--no-padding]=\"padding() === 'none'\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n@if (hasActions) {\r\n <div class=\"fui-card__actions\">\r\n <ng-content select=\"fui-card-actions, [fuiCardActions]\"></ng-content>\r\n </div>\r\n}\r\n", styles: [".fui-text-xs{font-size:var(--fui-text-sm);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.24px}.fui-text-sm{font-size:var(--fui-text-base);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);letter-spacing:.56px}.fui-text-md{font-size:var(--fui-text-md);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-lg{font-size:var(--fui-text-lg);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-text-xl{font-size:var(--fui-text-xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal)}.fui-display-xs{font-size:var(--fui-text-2xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-snug);letter-spacing:.48px}.fui-display-sm{font-size:var(--fui-text-3xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-md{font-size:var(--fui-text-4xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-lg{font-size:var(--fui-text-5xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight)}.fui-display-xl{font-size:var(--fui-text-6xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.2px}.fui-display-2xl{font-size:var(--fui-text-7xl);font-style:normal;font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-tight);letter-spacing:-1.44px}.fui-code-01{font-family:var(--fui-font-mono);font-size:var(--fui-text-sm);line-height:var(--fui-leading-loose)}.fui-code-02{font-family:var(--fui-font-mono);font-size:var(--fui-text-base);line-height:var(--fui-leading-relaxed)}.fui-font-light{font-weight:var(--fui-weight-light)}.fui-font-regular{font-weight:var(--fui-weight-regular)}.fui-font-medium{font-weight:var(--fui-weight-medium)}.fui-font-semibold{font-weight:var(--fui-weight-semibold)}.fui-font-bold{font-weight:var(--fui-weight-bold)}@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-card{--fui-card-bg: var(--fui-bg-default);--fui-card-border-color: var(--fui-border-default);--fui-card-actions-gap: var(--fui-spacing-4);contain:layout style;display:flex;flex-direction:column;position:relative;border-radius:var(--fui-card-border-radius);background-color:var(--fui-card-bg);box-shadow:var(--fui-shadow-xs);backdrop-filter:blur(8px);overflow:hidden;transition-property:box-shadow,transform,border-color;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--elevated{box-shadow:var(--fui-card-shadow);border:none}.fui-card--elevated.fui-card--hovered:not(.fui-card--disabled){box-shadow:var(--fui-card-shadow-hover)}.fui-card--outlined{border:var(--fui-border-width-sm) solid var(--fui-border-default)}.fui-card--outlined.fui-card--hovered:not(.fui-card--disabled){border-color:var(--fui-border-strong)}.fui-card--flat{box-shadow:none;border:var(--fui-border-width-sm) solid transparent}.fui-card--clickable{cursor:pointer;transition:transform var(--fui-duration-fast) var(--fui-ease-in-out),box-shadow var(--fui-duration-fast) var(--fui-ease-in-out)}.fui-card--clickable:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.fui-card--clickable:focus-visible{outline:2px solid var(--fui-primary-10);transition-property:all;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-card--disabled{opacity:var(--fui-state-disabled-opacity);cursor:not-allowed}.fui-card--padding-none{--fui-card-padding: 0}.fui-card--padding-sm{--fui-card-padding: var(--fui-spacing-6)}.fui-card--padding-md{--fui-card-padding: var(--fui-spacing-7)}.fui-card--padding-lg{--fui-card-padding: var(--fui-spacing-9)}.fui-card--padding-xl{--fui-card-padding: var(--fui-spacing-11)}.fui-card__header{border-bottom:var(--fui-border-width-sm) solid var(--fui-border-default);font-weight:var(--fui-weight-medium)}.fui-card__header:empty{display:none}.fui-card__content{flex:1;padding:var(--fui-card-padding)}.fui-card__content--no-padding{padding:0}.fui-card__content>:first-child{margin-top:0}.fui-card__content>:last-child{margin-bottom:0}.fui-card__actions{padding-bottom:0;display:flex;gap:var(--fui-spacing-4);align-items:center;justify-content:flex-end}.fui-card__actions:empty{display:none}.fui-card__actions--align-start{justify-content:flex-start}.fui-card__actions--align-center{justify-content:center}.fui-card__actions--align-end{justify-content:flex-end}.fui-card-header{padding-block:calc(var(--fui-card-padding) + var(--fui-spacing-2));padding-inline:var(--fui-card-padding);display:flex;flex-direction:column;gap:var(--fui-spacing-2)}.fui-card-header__title{color:var(--fui-text-primary);margin:0}.fui-card-header__subtitle{font-size:var(--fui-text-base);font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);color:var(--fui-text-secondary);margin:0}.fui-card-header__content{flex:1;min-width:0;display:flex;justify-content:flex-end}.fui-card-header__content:empty{margin-top:0}.fui-card-actions{display:flex;gap:var(--fui-spacing-4);align-items:center}.fui-card-actions--align-start{justify-content:flex-start}.fui-card-actions--align-center{justify-content:center}.fui-card-actions--align-end{justify-content:flex-end}.fui-card-actions--paddingless{padding:0}.fui-card-actions .fui-button+.fui-button{margin-left:var(--fui-spacing-4)}@media(min-width:640px){.fui-card--padding-sm{--fui-card-padding: var(--fui-spacing-2)}.fui-card--padding-md{--fui-card-padding: var(--fui-spacing-6)}.fui-card--padding-lg{--fui-card-padding: var(--fui-spacing-9)}.fui-card__actions{padding:0 var(--fui-spacing-6) var(--fui-spacing-6);gap:var(--fui-spacing-2);flex-wrap:wrap}}.fui-card--horizontal{flex-direction:row}.fui-card--horizontal .fui-card__content{flex:1}.fui-card--horizontal .fui-card__actions{flex-direction:column;padding:var(--fui-spacing-7)}.fui-card__image{width:100%;height:auto;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__image:only-child{border-radius:var(--fui-card-border-radius)}.fui-card__media{position:relative;overflow:hidden;border-radius:var(--fui-card-border-radius) var(--fui-card-border-radius) 0 0}.fui-card__media img,.fui-card__media video{width:100%;height:auto;display:block}.fui-card__media:last-child{border-radius:0 0 var(--fui-card-border-radius) var(--fui-card-border-radius)}.fui-card__media:only-child{border-radius:var(--fui-card-border-radius)}\n"] }]
245
309
  }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], headerCmp: [{
246
310
  type: ContentChild,
247
311
  args: [FuiCardHeaderComponent]
248
312
  }], actionsCmp: [{
249
313
  type: ContentChild,
250
314
  args: [FuiCardActionsComponent]
315
+ }], headerDir: [{
316
+ type: ContentChild,
317
+ args: [FuiCardHeaderDirective]
318
+ }], actionsDir: [{
319
+ type: ContentChild,
320
+ args: [FuiCardActionsDirective]
251
321
  }], onMouseEnter: [{
252
322
  type: HostListener,
253
323
  args: ['mouseenter']
@@ -266,5 +336,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
266
336
  * Generated bundle index. Do not edit.
267
337
  */
268
338
 
269
- export { FuiCardActionsComponent, FuiCardComponent, FuiCardHeaderComponent };
339
+ export { FuiCardActionsComponent, FuiCardActionsDirective, FuiCardComponent, FuiCardHeaderComponent, FuiCardHeaderDirective };
270
340
  //# sourceMappingURL=raintonic-formaui-components-card.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"raintonic-formaui-components-card.mjs","sources":["../../../lib/components/card/card-header.component.ts","../../../lib/components/card/card-header.component.html","../../../lib/components/card/card-actions.component.ts","../../../lib/components/card/card-actions.component.html","../../../lib/components/card/card.component.ts","../../../lib/components/card/card.component.html","../../../lib/components/card/raintonic-formaui-components-card.ts"],"sourcesContent":["import { Component, input, InputSignal } from '@angular/core';\r\n\r\n/**\r\n * # FuiCardHeader Component\r\n *\r\n * Header section for cards with optional title, subtitle, and additional content.\r\n *\r\n * ## Usage\r\n * ```html\r\n * <fui-card-header title=\"Card Title\" subtitle=\"Optional subtitle\">\r\n * <button fuiButton variant=\"tertiary\">\r\n * <fui-icon name=\"dots-three\"></fui-icon>\r\n * </button>\r\n * </fui-card-header>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-card-header',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './card-header.component.html',\r\n host: {\r\n class: 'fui-card-header',\r\n },\r\n})\r\nexport class FuiCardHeaderComponent {\r\n /**\r\n * Unique id for linking with aria-labelledby from the card\r\n */\r\n readonly hostId = `fui-card-header-${Math.random().toString(36).slice(2)}`;\r\n\r\n /**\r\n * Main title text for the card header\r\n */\r\n readonly title: InputSignal<string | undefined> = input<string>();\r\n\r\n /**\r\n * Optional subtitle text for the card header\r\n */\r\n readonly subtitle: InputSignal<string | undefined> = input<string>();\r\n}\r\n","<div class=\"fui-flex fui-justify-between\">\r\n <div>\r\n @if (title()) {\r\n <div class=\"fui-card-header__title\" [attr.id]=\"hostId\">\r\n {{ title() }}\r\n </div>\r\n }\r\n @if (subtitle()) {\r\n <div class=\"fui-card-header__subtitle\">\r\n {{ subtitle() }}\r\n </div>\r\n }\r\n </div>\r\n<div class=\"fui-card-header__content\">\r\n <ng-content></ng-content>\r\n</div>\r\n</div>\r\n","import { Component, input, InputSignal } from '@angular/core';\r\n\r\n/**\r\n * # FuiCardActions Component\r\n *\r\n * Actions section for cards, typically containing buttons or other interactive elements.\r\n *\r\n * ## Usage\r\n * ```html\r\n * <fui-card-actions align=\"end\">\r\n * <button fuiButton variant=\"tertiary\">Cancel</button>\r\n * <button fuiButton variant=\"primary\" color=\"primary\">Save</button>\r\n * </fui-card-actions>\r\n * ```\r\n *\r\n * ### Paddingless Actions\r\n * ```html\r\n * <fui-card-actions align=\"start\" paddingless=\"true\">\r\n * <button fuiButton variant=\"tertiary\">\r\n * <fui-icon name=\"heart\"></fui-icon>\r\n * </button>\r\n * </fui-card-actions>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-card-actions',\r\n standalone: true,\r\n templateUrl: './card-actions.component.html',\r\n host: {\r\n class: 'fui-card-actions',\r\n '[class.fui-card-actions--align-start]': 'align() === \"start\"',\r\n '[class.fui-card-actions--align-center]': 'align() === \"center\"',\r\n '[class.fui-card-actions--align-end]': 'align() === \"end\"',\r\n '[class.fui-card-actions--paddingless]': 'paddingless()',\r\n },\r\n})\r\nexport class FuiCardActionsComponent {\r\n /**\r\n * Alignment of actions within the container\r\n * @default 'end'\r\n */\r\n readonly align: InputSignal<'start' | 'center' | 'end'> = input<'start' | 'center' | 'end'>('end');\r\n\r\n /**\r\n * Whether to remove padding from the actions container\r\n * @default false\r\n */\r\n readonly paddingless: InputSignal<boolean> = input(false);\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ContentChild,\r\n HostListener,\r\n input,\r\n InputSignal,\r\n Signal,\r\n signal,\r\n ViewEncapsulation,\r\n WritableSignal,\r\n} from '@angular/core';\r\n\r\nimport { FuiCardHeaderComponent } from './card-header.component';\r\nimport { FuiCardActionsComponent } from './card-actions.component';\r\n\r\n/**\r\n * Available card variants following Carbon Design System patterns\r\n */\r\nexport type FuiCardVariant = 'elevated' | 'outlined' | 'flat';\r\n\r\n/**\r\n * Available padding options for card content\r\n */\r\nexport type FuiCardPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n * # FuiCard Component\r\n *\r\n * A flexible container component following Carbon Design System patterns.\r\n * Provides a structured layout with optional header, content, and actions sections.\r\n *\r\n * ## Features\r\n * - Multiple variants: elevated, outlined, flat\r\n * - Configurable padding: none, sm, md, lg, xl\r\n * - Structured content areas: header, content, actions\r\n * - Clickable state support with hover animations\r\n * - Disabled state support\r\n * - Full accessibility support\r\n * - Smooth motion transitions\r\n *\r\n * ## Usage\r\n *\r\n * ### Basic Card\r\n * ```html\r\n * <fui-card>\r\n * <p>Card content goes here</p>\r\n * </fui-card>\r\n * ```\r\n *\r\n * ### Card with Header and Actions\r\n * ```html\r\n * <fui-card variant=\"outlined\">\r\n * <fui-card-header title=\"Card Title\" subtitle=\"Optional subtitle\">\r\n * <button fuiButton variant=\"tertiary\" size=\"sm\" [iconOnly]=\"true\">\r\n * <fui-icon name=\"overflow-menu-vertical\"></fui-icon>\r\n * </button>\r\n * </fui-card-header>\r\n *\r\n * <p>Main card content</p>\r\n *\r\n * <fui-card-actions align=\"end\">\r\n * <button fuiButton variant=\"secondary\">Cancel</button>\r\n * <button fuiButton variant=\"primary\">Save</button>\r\n * </fui-card-actions>\r\n * </fui-card>\r\n * ```\r\n *\r\n * ### Clickable Card\r\n * ```html\r\n * <fui-card [clickable]=\"true\" (click)=\"handleCardClick()\">\r\n * <p>This entire card is clickable</p>\r\n * </fui-card>\r\n * ```\r\n *\r\n * @example\r\n * ```typescript\r\n * import { FuiCardComponent, FuiCardHeaderComponent, FuiCardActionsComponent } from '@raintonic/formaui/components/card';\r\n *\r\n * @Component({\r\n * standalone: true,\r\n * imports: [FuiCardComponent, FuiCardHeaderComponent, FuiCardActionsComponent],\r\n * template: `\r\n * <fui-card variant=\"elevated\" padding=\"lg\">\r\n * <fui-card-header title=\"User Profile\"></fui-card-header>\r\n * <div class=\"user-info\">\r\n * <p>User details here...</p>\r\n * </div>\r\n * <fui-card-actions>\r\n * <button fuiButton>Edit</button>\r\n * </fui-card-actions>\r\n * </fui-card>\r\n * `\r\n * })\r\n * export class UserCardComponent {}\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-card',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-card',\r\n '[class]': 'computedClasses()',\r\n '[attr.role]': 'clickable() ? \"button\" : \"region\"',\r\n '[attr.tabindex]': 'clickable() && !disabled() ? \"0\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.aria-labelledby]': 'headerId',\r\n },\r\n})\r\nexport class FuiCardComponent implements AfterContentInit {\r\n /**\r\n * Card variant that determines the visual style\r\n * @default 'outlined'\r\n */\r\n readonly variant: InputSignal<FuiCardVariant> = input<FuiCardVariant>('outlined');\r\n\r\n /**\r\n * Padding applied to card content\r\n * @default 'lg'\r\n */\r\n readonly padding: InputSignal<FuiCardPadding> = input<FuiCardPadding>('lg');\r\n\r\n /**\r\n * Whether the card is clickable (adds hover effects and cursor pointer)\r\n * @default false\r\n */\r\n readonly clickable: InputSignal<boolean> = input(false);\r\n\r\n /**\r\n * Whether the card is disabled\r\n * @default false\r\n */\r\n readonly disabled: InputSignal<boolean> = input(false);\r\n\r\n // Animation state\r\n readonly hovered: WritableSignal<boolean> = signal(false);\r\n readonly liftState: Signal<'idle' | 'lifted'> = computed(() =>\r\n this.clickable() && this.hovered() && !this.disabled() ? 'lifted' : 'idle',\r\n );\r\n\r\n // Projected content queries and ARIA label linkage\r\n @ContentChild(FuiCardHeaderComponent) headerCmp?: FuiCardHeaderComponent;\r\n @ContentChild(FuiCardActionsComponent) actionsCmp?: FuiCardActionsComponent;\r\n\r\n headerId = '';\r\n\r\n // Computed classes\r\n readonly computedClasses: Signal<string> = computed(() => {\r\n const classes: string[] = [`fui-card--${this.variant()}`, `fui-card--padding-${this.padding()}`];\r\n\r\n if (this.clickable()) {\r\n classes.push('fui-card--clickable');\r\n }\r\n\r\n if (this.disabled()) {\r\n classes.push('fui-card--disabled');\r\n }\r\n\r\n if (this.hovered()) {\r\n classes.push('fui-card--hovered');\r\n }\r\n\r\n return classes.join(' ');\r\n });\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (this.clickable() && !this.disabled()) {\r\n this.hovered.set(true);\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.hovered.set(false);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (this.clickable() && !this.disabled() && (event.key === 'Enter' || event.key === ' ')) {\r\n event.preventDefault();\r\n (event.target as HTMLElement).click();\r\n }\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.disabled()) {\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.headerId = this.headerCmp ? this.headerCmp.hostId : '';\r\n }\r\n\r\n // Check if header content is projected\r\n get hasHeader(): boolean {\r\n return !!this.headerCmp;\r\n }\r\n\r\n // Check if actions content is projected\r\n get hasActions(): boolean {\r\n return !!this.actionsCmp;\r\n }\r\n}\r\n","@if (hasHeader) {\r\n <div class=\"fui-card__header\">\r\n <ng-content select=\"fui-card-header, [rtCardHeader]\"></ng-content>\r\n </div>\r\n}\r\n\r\n<div class=\"fui-card__content\" [class.fui-card__content--no-padding]=\"padding() === 'none'\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n@if (hasActions) {\r\n <div class=\"fui-card__actions\">\r\n <ng-content select=\"fui-card-actions, [rtCardActions]\"></ng-content>\r\n </div>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raintonic-formaui-components-card.mjs","sources":["../../../lib/components/card/card-header.component.ts","../../../lib/components/card/card-header.component.html","../../../lib/components/card/card-actions.component.ts","../../../lib/components/card/card-actions.component.html","../../../lib/components/card/card-header.directive.ts","../../../lib/components/card/card-actions.directive.ts","../../../lib/components/card/card.component.ts","../../../lib/components/card/card.component.html","../../../lib/components/card/raintonic-formaui-components-card.ts"],"sourcesContent":["import { Component, input, InputSignal } from '@angular/core';\r\n\r\n/**\r\n * # FuiCardHeader Component\r\n *\r\n * Header section for cards with optional title, subtitle, and additional content.\r\n *\r\n * ## Usage\r\n * ```html\r\n * <fui-card-header title=\"Card Title\" subtitle=\"Optional subtitle\">\r\n * <button fuiButton variant=\"tertiary\">\r\n * <fui-icon name=\"dots-three\"></fui-icon>\r\n * </button>\r\n * </fui-card-header>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-card-header',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './card-header.component.html',\r\n host: {\r\n class: 'fui-card-header',\r\n },\r\n})\r\nexport class FuiCardHeaderComponent {\r\n /**\r\n * Unique id for linking with aria-labelledby from the card\r\n */\r\n readonly hostId = `fui-card-header-${Math.random().toString(36).slice(2)}`;\r\n\r\n /**\r\n * Main title text for the card header\r\n */\r\n readonly title: InputSignal<string | undefined> = input<string>();\r\n\r\n /**\r\n * Optional subtitle text for the card header\r\n */\r\n readonly subtitle: InputSignal<string | undefined> = input<string>();\r\n}\r\n","<div class=\"fui-flex fui-justify-between\">\r\n <div>\r\n @if (title()) {\r\n <div class=\"fui-card-header__title\" [attr.id]=\"hostId\">\r\n {{ title() }}\r\n </div>\r\n }\r\n @if (subtitle()) {\r\n <div class=\"fui-card-header__subtitle\">\r\n {{ subtitle() }}\r\n </div>\r\n }\r\n </div>\r\n<div class=\"fui-card-header__content\">\r\n <ng-content></ng-content>\r\n</div>\r\n</div>\r\n","import { Component, input, InputSignal } from '@angular/core';\r\n\r\n/**\r\n * # FuiCardActions Component\r\n *\r\n * Actions section for cards, typically containing buttons or other interactive elements.\r\n *\r\n * ## Usage\r\n * ```html\r\n * <fui-card-actions align=\"end\">\r\n * <button fuiButton variant=\"tertiary\">Cancel</button>\r\n * <button fuiButton variant=\"primary\" color=\"primary\">Save</button>\r\n * </fui-card-actions>\r\n * ```\r\n *\r\n * ### Paddingless Actions\r\n * ```html\r\n * <fui-card-actions align=\"start\" paddingless=\"true\">\r\n * <button fuiButton variant=\"tertiary\">\r\n * <fui-icon name=\"heart\"></fui-icon>\r\n * </button>\r\n * </fui-card-actions>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-card-actions',\r\n standalone: true,\r\n templateUrl: './card-actions.component.html',\r\n host: {\r\n class: 'fui-card-actions',\r\n '[class.fui-card-actions--align-start]': 'align() === \"start\"',\r\n '[class.fui-card-actions--align-center]': 'align() === \"center\"',\r\n '[class.fui-card-actions--align-end]': 'align() === \"end\"',\r\n '[class.fui-card-actions--paddingless]': 'paddingless()',\r\n },\r\n})\r\nexport class FuiCardActionsComponent {\r\n /**\r\n * Alignment of actions within the container\r\n * @default 'end'\r\n */\r\n readonly align: InputSignal<'start' | 'center' | 'end'> = input<'start' | 'center' | 'end'>('end');\r\n\r\n /**\r\n * Whether to remove padding from the actions container\r\n * @default false\r\n */\r\n readonly paddingless: InputSignal<boolean> = input(false);\r\n}\r\n","<ng-content></ng-content>\r\n","import { Directive } from '@angular/core';\r\n\r\n/**\r\n * # FuiCardHeader Directive\r\n *\r\n * Marker directive for projecting a custom element into the card header region\r\n * without using the {@link FuiCardHeaderComponent}. Apply it to any element to\r\n * have `<fui-card>` treat it as header content.\r\n *\r\n * ## Usage\r\n * ```html\r\n * <fui-card>\r\n * <div fuiCardHeader>My full-width header</div>\r\n * <p>Content</p>\r\n * </fui-card>\r\n * ```\r\n */\r\n@Directive({\r\n selector: '[fuiCardHeader]',\r\n standalone: true,\r\n host: {\r\n class: 'fui-card-header',\r\n },\r\n})\r\nexport class FuiCardHeaderDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n/**\r\n * # FuiCardActions Directive\r\n *\r\n * Marker directive for projecting a custom element into the card actions region\r\n * without using the {@link FuiCardActionsComponent}. Apply it to any element to\r\n * have `<fui-card>` treat it as actions content.\r\n *\r\n * ## Usage\r\n * ```html\r\n * <fui-card>\r\n * <p>Content</p>\r\n * <div fuiCardActions>\r\n * <button fuiButton>OK</button>\r\n * </div>\r\n * </fui-card>\r\n * ```\r\n */\r\n@Directive({\r\n selector: '[fuiCardActions]',\r\n standalone: true,\r\n host: {\r\n class: 'fui-card-actions',\r\n },\r\n})\r\nexport class FuiCardActionsDirective {}\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ContentChild,\r\n HostListener,\r\n input,\r\n InputSignal,\r\n Signal,\r\n signal,\r\n ViewEncapsulation,\r\n WritableSignal,\r\n} from '@angular/core';\r\n\r\nimport { FuiCardHeaderComponent } from './card-header.component';\r\nimport { FuiCardActionsComponent } from './card-actions.component';\r\nimport { FuiCardHeaderDirective } from './card-header.directive';\r\nimport { FuiCardActionsDirective } from './card-actions.directive';\r\n\r\n/**\r\n * Available card variants following Carbon Design System patterns\r\n */\r\nexport type FuiCardVariant = 'elevated' | 'outlined' | 'flat';\r\n\r\n/**\r\n * Available padding options for card content\r\n */\r\nexport type FuiCardPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n * # FuiCard Component\r\n *\r\n * A flexible container component following Carbon Design System patterns.\r\n * Provides a structured layout with optional header, content, and actions sections.\r\n *\r\n * ## Features\r\n * - Multiple variants: elevated, outlined, flat\r\n * - Configurable padding: none, sm, md, lg, xl\r\n * - Structured content areas: header, content, actions\r\n * - Clickable state support with hover animations\r\n * - Disabled state support\r\n * - Full accessibility support\r\n * - Smooth motion transitions\r\n *\r\n * ## Usage\r\n *\r\n * ### Basic Card\r\n * ```html\r\n * <fui-card>\r\n * <p>Card content goes here</p>\r\n * </fui-card>\r\n * ```\r\n *\r\n * ### Card with Header and Actions\r\n * ```html\r\n * <fui-card variant=\"outlined\">\r\n * <fui-card-header title=\"Card Title\" subtitle=\"Optional subtitle\">\r\n * <button fuiButton variant=\"tertiary\" size=\"sm\" [iconOnly]=\"true\">\r\n * <fui-icon name=\"overflow-menu-vertical\"></fui-icon>\r\n * </button>\r\n * </fui-card-header>\r\n *\r\n * <p>Main card content</p>\r\n *\r\n * <fui-card-actions align=\"end\">\r\n * <button fuiButton variant=\"secondary\">Cancel</button>\r\n * <button fuiButton variant=\"primary\">Save</button>\r\n * </fui-card-actions>\r\n * </fui-card>\r\n * ```\r\n *\r\n * ### Clickable Card\r\n * ```html\r\n * <fui-card [clickable]=\"true\" (click)=\"handleCardClick()\">\r\n * <p>This entire card is clickable</p>\r\n * </fui-card>\r\n * ```\r\n *\r\n * @example\r\n * ```typescript\r\n * import { FuiCardComponent, FuiCardHeaderComponent, FuiCardActionsComponent } from '@raintonic/formaui/components/card';\r\n *\r\n * @Component({\r\n * standalone: true,\r\n * imports: [FuiCardComponent, FuiCardHeaderComponent, FuiCardActionsComponent],\r\n * template: `\r\n * <fui-card variant=\"elevated\" padding=\"lg\">\r\n * <fui-card-header title=\"User Profile\"></fui-card-header>\r\n * <div class=\"user-info\">\r\n * <p>User details here...</p>\r\n * </div>\r\n * <fui-card-actions>\r\n * <button fuiButton>Edit</button>\r\n * </fui-card-actions>\r\n * </fui-card>\r\n * `\r\n * })\r\n * export class UserCardComponent {}\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-card',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-card',\r\n '[class]': 'computedClasses()',\r\n '[attr.role]': 'clickable() ? \"button\" : \"region\"',\r\n '[attr.tabindex]': 'clickable() && !disabled() ? \"0\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.aria-labelledby]': 'headerId',\r\n },\r\n})\r\nexport class FuiCardComponent implements AfterContentInit {\r\n /**\r\n * Card variant that determines the visual style\r\n * @default 'outlined'\r\n */\r\n readonly variant: InputSignal<FuiCardVariant> = input<FuiCardVariant>('outlined');\r\n\r\n /**\r\n * Padding applied to card content\r\n * @default 'lg'\r\n */\r\n readonly padding: InputSignal<FuiCardPadding> = input<FuiCardPadding>('lg');\r\n\r\n /**\r\n * Whether the card is clickable (adds hover effects and cursor pointer)\r\n * @default false\r\n */\r\n readonly clickable: InputSignal<boolean> = input(false);\r\n\r\n /**\r\n * Whether the card is disabled\r\n * @default false\r\n */\r\n readonly disabled: InputSignal<boolean> = input(false);\r\n\r\n // Animation state\r\n readonly hovered: WritableSignal<boolean> = signal(false);\r\n readonly liftState: Signal<'idle' | 'lifted'> = computed(() =>\r\n this.clickable() && this.hovered() && !this.disabled() ? 'lifted' : 'idle',\r\n );\r\n\r\n // Projected content queries and ARIA label linkage\r\n @ContentChild(FuiCardHeaderComponent) headerCmp?: FuiCardHeaderComponent;\r\n @ContentChild(FuiCardActionsComponent) actionsCmp?: FuiCardActionsComponent;\r\n @ContentChild(FuiCardHeaderDirective) headerDir?: FuiCardHeaderDirective;\r\n @ContentChild(FuiCardActionsDirective) actionsDir?: FuiCardActionsDirective;\r\n\r\n headerId = '';\r\n\r\n // Computed classes\r\n readonly computedClasses: Signal<string> = computed(() => {\r\n const classes: string[] = [`fui-card--${this.variant()}`, `fui-card--padding-${this.padding()}`];\r\n\r\n if (this.clickable()) {\r\n classes.push('fui-card--clickable');\r\n }\r\n\r\n if (this.disabled()) {\r\n classes.push('fui-card--disabled');\r\n }\r\n\r\n if (this.hovered()) {\r\n classes.push('fui-card--hovered');\r\n }\r\n\r\n return classes.join(' ');\r\n });\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (this.clickable() && !this.disabled()) {\r\n this.hovered.set(true);\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.hovered.set(false);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (this.clickable() && !this.disabled() && (event.key === 'Enter' || event.key === ' ')) {\r\n event.preventDefault();\r\n (event.target as HTMLElement).click();\r\n }\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.disabled()) {\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.headerId = this.headerCmp ? this.headerCmp.hostId : '';\r\n }\r\n\r\n // Check if header content is projected (component or attribute directive)\r\n get hasHeader(): boolean {\r\n return !!this.headerCmp || !!this.headerDir;\r\n }\r\n\r\n // Check if actions content is projected (component or attribute directive)\r\n get hasActions(): boolean {\r\n return !!this.actionsCmp || !!this.actionsDir;\r\n }\r\n}\r\n","@if (hasHeader) {\r\n <div class=\"fui-card__header\">\r\n <ng-content select=\"fui-card-header, [fuiCardHeader]\"></ng-content>\r\n </div>\r\n}\r\n\r\n<div class=\"fui-card__content\" [class.fui-card__content--no-padding]=\"padding() === 'none'\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n@if (hasActions) {\r\n <div class=\"fui-card__actions\">\r\n <ng-content select=\"fui-card-actions, [fuiCardActions]\"></ng-content>\r\n </div>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -263,7 +263,7 @@ class FuiCheckboxComponent {
263
263
  useExisting: FuiCheckboxComponent,
264
264
  multi: true,
265
265
  },
266
- ], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<label class=\"fui-checkbox__container\" [attr.for]=\"inputId\">\r\n <span class=\"fui-checkbox__frame\">\r\n <input\r\n #inputElement\r\n type=\"checkbox\"\r\n class=\"fui-checkbox__native-control\"\r\n [id]=\"inputId\"\r\n [name]=\"name()\"\r\n [value]=\"value()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-labelledby]=\"ariaLabelledby()\"\r\n [attr.aria-describedby]=\"ariaDescribedby()\"\r\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\r\n [attr.aria-required]=\"required() ? 'true' : null\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"fui-checkbox__checkmark\">\r\n @if (checked() && !indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__checkmark-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n </svg>\r\n }\r\n\r\n @if (indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__indeterminate-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n }\r\n </span>\r\n\r\n @if (!disableRipple() && !disabled()) {\r\n <span class=\"fui-checkbox__ripple\"></span>\r\n }\r\n </span>\r\n\r\n <span class=\"fui-checkbox__label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-checkbox{--fui-checkbox-size: 1.125rem;--fui-checkbox-border-width: 1px;--fui-checkbox-border-radius: var(--fui-radius-xs);--fui-checkbox-active-bg: var(--fui-text-on-fill);--fui-checkbox-border-color: var(--fui-primary-bg);--fui-checkbox-checked-color: var(--fui-primary-bg);--fui-checkbox-hover-bg: var(--fui-primary-muted);--fui-checkbox-label-gap: var(--fui-spacing-4);--fui-checkbox-label-font-size: var(--fui-text-base);--fui-checkbox-ripple-size: 2.5rem;display:inline-flex;align-items:flex-start;position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:middle}.fui-checkbox__container{display:inline-flex;align-items:center;cursor:inherit;gap:var(--fui-checkbox-label-gap);width:100%}.fui-checkbox__frame{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--fui-checkbox-size);height:var(--fui-checkbox-size)}.fui-checkbox__native-control{position:absolute;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1}.fui-checkbox__native-control:focus-visible+.fui-checkbox__checkmark{outline:2px solid var(--fui-primary-10)}.fui-checkbox__checkmark{display:flex;align-items:center;justify-content:center;width:var(--fui-checkbox-size);height:var(--fui-checkbox-size);border:var(--fui-checkbox-border-width) solid var(--fui-checkbox-border-color);border-radius:var(--fui-checkbox-border-radius);background-color:var(--fui-checkbox-active-bg);transition-property:background-color,border-color,transform;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-checkbox__checkmark:hover{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-border-primary)}.fui-checkbox__indeterminate-icon,.fui-checkbox__checkmark-icon{width:calc(var(--fui-checkbox-size) * .75);height:calc(var(--fui-checkbox-size) * .75);color:var(--fui-checkbox-checked-color);opacity:1;transform:scale(1);transition-property:opacity,transform;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}@starting-style{.fui-checkbox__indeterminate-icon,.fui-checkbox__checkmark-icon{opacity:0;transform:scale(.5)}}.fui-checkbox__label{font-family:var(--fui-font-sans);font-size:var(--fui-text-base);font-weight:var(--fui-weight-regular);line-height:1.5;color:var(--fui-text-primary);cursor:inherit}.fui-checkbox__ripple{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:var(--fui-checkbox-border-radius);background-color:var(--fui-checkbox-border-color);opacity:0;z-index:-1;pointer-events:none;transition:var(--fui-transition-bg)}.fui-checkbox:not(.fui-checkbox--disabled):hover .fui-checkbox__checkmark{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-checkbox-border-color)}.fui-checkbox:not(.fui-checkbox--disabled):hover .fui-checkbox__ripple{opacity:.8}.fui-checkbox--focused:not(.fui-checkbox--disabled) .fui-checkbox__ripple{opacity:.08}.fui-checkbox--checked .fui-checkbox__checkmark,.fui-checkbox--indeterminate .fui-checkbox__checkmark{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-checkbox-checked-color)}.fui-checkbox--disabled{cursor:not-allowed}.fui-checkbox--disabled .fui-checkbox__checkmark{border-color:var(--fui-border-default);background-color:var(--fui-bg-muted)}.fui-checkbox--disabled .fui-checkbox__checkmark-icon,.fui-checkbox--disabled .fui-checkbox__indeterminate-icon,.fui-checkbox--disabled .fui-checkbox__label{color:var(--fui-text-disabled)}.fui-checkbox--disabled .fui-checkbox__ripple{display:none}.fui-checkbox--readonly{cursor:default;pointer-events:none}.fui-checkbox--readonly .fui-checkbox__label{color:var(--fui-text-secondary)}.fui-checkbox--readonly .fui-checkbox__ripple{display:none}.fui-checkbox--error .fui-checkbox__checkmark{border-color:var(--fui-border-error)}.fui-checkbox--error.fui-checkbox--checked .fui-checkbox__checkmark,.fui-checkbox--error.fui-checkbox--indeterminate .fui-checkbox__checkmark{background-color:var(--fui-fill-error);border-color:var(--fui-border-error)}.fui-checkbox--error .fui-checkbox__label{color:var(--fui-text-error)}.fui-checkbox--label-before .fui-checkbox__container{flex-direction:row-reverse;justify-content:flex-end}@media(prefers-contrast:high){.fui-checkbox__checkmark{border-width:3px}.fui-checkbox__native-control:focus-visible+.fui-checkbox__checkmark{outline-width:3px}}@media(prefers-reduced-motion:reduce){.fui-checkbox__checkmark,.fui-checkbox__checkmark-icon,.fui-checkbox__indeterminate-icon,.fui-checkbox__ripple{transition:none}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
266
+ ], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<label class=\"fui-checkbox__container\" [attr.for]=\"inputId\">\r\n <span class=\"fui-checkbox__frame\">\r\n <input\r\n #inputElement\r\n type=\"checkbox\"\r\n class=\"fui-checkbox__native-control\"\r\n [id]=\"inputId\"\r\n [name]=\"name()\"\r\n [value]=\"value()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-labelledby]=\"ariaLabelledby()\"\r\n [attr.aria-describedby]=\"ariaDescribedby()\"\r\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\r\n [attr.aria-required]=\"required() ? 'true' : null\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"fui-checkbox__checkmark\">\r\n @if (checked() && !indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__checkmark-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n </svg>\r\n }\r\n\r\n @if (indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__indeterminate-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n }\r\n </span>\r\n\r\n @if (!disableRipple() && !disabled()) {\r\n <span class=\"fui-checkbox__ripple\"></span>\r\n }\r\n </span>\r\n\r\n <span class=\"fui-checkbox__label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-checkbox{--fui-checkbox-size: 1.125rem;--fui-checkbox-border-width: 1px;--fui-checkbox-border-radius: var(--fui-radius-xs);--fui-checkbox-active-bg: var(--fui-field-bg);--fui-checkbox-border-color: var(--fui-text-secondary);--fui-checkbox-checked-color: var(--fui-primary-bg);--fui-checkbox-hover-bg: var(--fui-primary-muted);--fui-checkbox-label-gap: var(--fui-spacing-4);--fui-checkbox-label-font-size: var(--fui-text-base);--fui-checkbox-ripple-size: 2.5rem;display:inline-flex;align-items:flex-start;position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:middle}.fui-checkbox__container{display:inline-flex;align-items:center;cursor:inherit;gap:var(--fui-checkbox-label-gap);width:100%}.fui-checkbox__frame{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--fui-checkbox-size);height:var(--fui-checkbox-size)}.fui-checkbox__native-control{position:absolute;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1}.fui-checkbox__native-control:focus-visible+.fui-checkbox__checkmark{outline:2px solid var(--fui-primary-10)}.fui-checkbox__checkmark{display:flex;align-items:center;justify-content:center;width:var(--fui-checkbox-size);height:var(--fui-checkbox-size);border:var(--fui-checkbox-border-width) solid var(--fui-checkbox-border-color);border-radius:var(--fui-checkbox-border-radius);background-color:var(--fui-checkbox-active-bg);transition-property:background-color,border-color,transform;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-checkbox__checkmark:hover{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-border-primary)}.fui-checkbox__indeterminate-icon,.fui-checkbox__checkmark-icon{width:calc(var(--fui-checkbox-size) * .75);height:calc(var(--fui-checkbox-size) * .75);color:var(--fui-checkbox-checked-color);opacity:1;transform:scale(1);transition-property:opacity,transform;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}@starting-style{.fui-checkbox__indeterminate-icon,.fui-checkbox__checkmark-icon{opacity:0;transform:scale(.5)}}.fui-checkbox__label{font-family:var(--fui-font-sans);font-size:var(--fui-text-base);font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);color:var(--fui-text-primary);cursor:inherit}.fui-checkbox__ripple{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:var(--fui-checkbox-border-radius);background-color:var(--fui-checkbox-checked-color);opacity:0;z-index:-1;pointer-events:none;transition:var(--fui-transition-bg)}.fui-checkbox:not(.fui-checkbox--disabled):hover .fui-checkbox__checkmark{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-border-primary)}.fui-checkbox:not(.fui-checkbox--disabled):hover .fui-checkbox__ripple{opacity:.8}.fui-checkbox--focused:not(.fui-checkbox--disabled) .fui-checkbox__ripple{opacity:.08}.fui-checkbox--checked .fui-checkbox__checkmark,.fui-checkbox--indeterminate .fui-checkbox__checkmark{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-checkbox-checked-color)}.fui-checkbox--disabled{cursor:not-allowed}.fui-checkbox--disabled .fui-checkbox__checkmark{border-color:var(--fui-border-default);background-color:var(--fui-bg-muted)}.fui-checkbox--disabled .fui-checkbox__checkmark-icon,.fui-checkbox--disabled .fui-checkbox__indeterminate-icon,.fui-checkbox--disabled .fui-checkbox__label{color:var(--fui-text-disabled)}.fui-checkbox--disabled .fui-checkbox__ripple{display:none}.fui-checkbox--readonly{cursor:default;pointer-events:none}.fui-checkbox--readonly .fui-checkbox__label{color:var(--fui-text-secondary)}.fui-checkbox--readonly .fui-checkbox__ripple{display:none}.fui-checkbox--error .fui-checkbox__checkmark{border-color:var(--fui-border-error)}.fui-checkbox--error.fui-checkbox--checked .fui-checkbox__checkmark,.fui-checkbox--error.fui-checkbox--indeterminate .fui-checkbox__checkmark{background-color:var(--fui-fill-error);border-color:var(--fui-border-error)}.fui-checkbox--error .fui-checkbox__label{color:var(--fui-text-error)}.fui-checkbox--label-before .fui-checkbox__container{flex-direction:row-reverse;justify-content:flex-end}@media(prefers-contrast:high){.fui-checkbox__checkmark{border-width:3px}.fui-checkbox__native-control:focus-visible+.fui-checkbox__checkmark{outline-width:3px}}@media(prefers-reduced-motion:reduce){.fui-checkbox__checkmark,.fui-checkbox__checkmark-icon,.fui-checkbox__indeterminate-icon,.fui-checkbox__ripple{transition:none}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
267
267
  }
268
268
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCheckboxComponent, decorators: [{
269
269
  type: Component,
@@ -284,7 +284,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
284
284
  useExisting: FuiCheckboxComponent,
285
285
  multi: true,
286
286
  },
287
- ], template: "<label class=\"fui-checkbox__container\" [attr.for]=\"inputId\">\r\n <span class=\"fui-checkbox__frame\">\r\n <input\r\n #inputElement\r\n type=\"checkbox\"\r\n class=\"fui-checkbox__native-control\"\r\n [id]=\"inputId\"\r\n [name]=\"name()\"\r\n [value]=\"value()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-labelledby]=\"ariaLabelledby()\"\r\n [attr.aria-describedby]=\"ariaDescribedby()\"\r\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\r\n [attr.aria-required]=\"required() ? 'true' : null\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"fui-checkbox__checkmark\">\r\n @if (checked() && !indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__checkmark-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n </svg>\r\n }\r\n\r\n @if (indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__indeterminate-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n }\r\n </span>\r\n\r\n @if (!disableRipple() && !disabled()) {\r\n <span class=\"fui-checkbox__ripple\"></span>\r\n }\r\n </span>\r\n\r\n <span class=\"fui-checkbox__label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-checkbox{--fui-checkbox-size: 1.125rem;--fui-checkbox-border-width: 1px;--fui-checkbox-border-radius: var(--fui-radius-xs);--fui-checkbox-active-bg: var(--fui-text-on-fill);--fui-checkbox-border-color: var(--fui-primary-bg);--fui-checkbox-checked-color: var(--fui-primary-bg);--fui-checkbox-hover-bg: var(--fui-primary-muted);--fui-checkbox-label-gap: var(--fui-spacing-4);--fui-checkbox-label-font-size: var(--fui-text-base);--fui-checkbox-ripple-size: 2.5rem;display:inline-flex;align-items:flex-start;position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:middle}.fui-checkbox__container{display:inline-flex;align-items:center;cursor:inherit;gap:var(--fui-checkbox-label-gap);width:100%}.fui-checkbox__frame{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--fui-checkbox-size);height:var(--fui-checkbox-size)}.fui-checkbox__native-control{position:absolute;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1}.fui-checkbox__native-control:focus-visible+.fui-checkbox__checkmark{outline:2px solid var(--fui-primary-10)}.fui-checkbox__checkmark{display:flex;align-items:center;justify-content:center;width:var(--fui-checkbox-size);height:var(--fui-checkbox-size);border:var(--fui-checkbox-border-width) solid var(--fui-checkbox-border-color);border-radius:var(--fui-checkbox-border-radius);background-color:var(--fui-checkbox-active-bg);transition-property:background-color,border-color,transform;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-checkbox__checkmark:hover{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-border-primary)}.fui-checkbox__indeterminate-icon,.fui-checkbox__checkmark-icon{width:calc(var(--fui-checkbox-size) * .75);height:calc(var(--fui-checkbox-size) * .75);color:var(--fui-checkbox-checked-color);opacity:1;transform:scale(1);transition-property:opacity,transform;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}@starting-style{.fui-checkbox__indeterminate-icon,.fui-checkbox__checkmark-icon{opacity:0;transform:scale(.5)}}.fui-checkbox__label{font-family:var(--fui-font-sans);font-size:var(--fui-text-base);font-weight:var(--fui-weight-regular);line-height:1.5;color:var(--fui-text-primary);cursor:inherit}.fui-checkbox__ripple{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:var(--fui-checkbox-border-radius);background-color:var(--fui-checkbox-border-color);opacity:0;z-index:-1;pointer-events:none;transition:var(--fui-transition-bg)}.fui-checkbox:not(.fui-checkbox--disabled):hover .fui-checkbox__checkmark{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-checkbox-border-color)}.fui-checkbox:not(.fui-checkbox--disabled):hover .fui-checkbox__ripple{opacity:.8}.fui-checkbox--focused:not(.fui-checkbox--disabled) .fui-checkbox__ripple{opacity:.08}.fui-checkbox--checked .fui-checkbox__checkmark,.fui-checkbox--indeterminate .fui-checkbox__checkmark{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-checkbox-checked-color)}.fui-checkbox--disabled{cursor:not-allowed}.fui-checkbox--disabled .fui-checkbox__checkmark{border-color:var(--fui-border-default);background-color:var(--fui-bg-muted)}.fui-checkbox--disabled .fui-checkbox__checkmark-icon,.fui-checkbox--disabled .fui-checkbox__indeterminate-icon,.fui-checkbox--disabled .fui-checkbox__label{color:var(--fui-text-disabled)}.fui-checkbox--disabled .fui-checkbox__ripple{display:none}.fui-checkbox--readonly{cursor:default;pointer-events:none}.fui-checkbox--readonly .fui-checkbox__label{color:var(--fui-text-secondary)}.fui-checkbox--readonly .fui-checkbox__ripple{display:none}.fui-checkbox--error .fui-checkbox__checkmark{border-color:var(--fui-border-error)}.fui-checkbox--error.fui-checkbox--checked .fui-checkbox__checkmark,.fui-checkbox--error.fui-checkbox--indeterminate .fui-checkbox__checkmark{background-color:var(--fui-fill-error);border-color:var(--fui-border-error)}.fui-checkbox--error .fui-checkbox__label{color:var(--fui-text-error)}.fui-checkbox--label-before .fui-checkbox__container{flex-direction:row-reverse;justify-content:flex-end}@media(prefers-contrast:high){.fui-checkbox__checkmark{border-width:3px}.fui-checkbox__native-control:focus-visible+.fui-checkbox__checkmark{outline-width:3px}}@media(prefers-reduced-motion:reduce){.fui-checkbox__checkmark,.fui-checkbox__checkmark-icon,.fui-checkbox__indeterminate-icon,.fui-checkbox__ripple{transition:none}}\n"] }]
287
+ ], template: "<label class=\"fui-checkbox__container\" [attr.for]=\"inputId\">\r\n <span class=\"fui-checkbox__frame\">\r\n <input\r\n #inputElement\r\n type=\"checkbox\"\r\n class=\"fui-checkbox__native-control\"\r\n [id]=\"inputId\"\r\n [name]=\"name()\"\r\n [value]=\"value()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-labelledby]=\"ariaLabelledby()\"\r\n [attr.aria-describedby]=\"ariaDescribedby()\"\r\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\r\n [attr.aria-required]=\"required() ? 'true' : null\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"fui-checkbox__checkmark\">\r\n @if (checked() && !indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__checkmark-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n </svg>\r\n }\r\n\r\n @if (indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__indeterminate-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n }\r\n </span>\r\n\r\n @if (!disableRipple() && !disabled()) {\r\n <span class=\"fui-checkbox__ripple\"></span>\r\n }\r\n </span>\r\n\r\n <span class=\"fui-checkbox__label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}.fui-motion-fade-out{transition-property:opacity;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in);transition-delay:0ms}.fui-motion-slide-in-bottom{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition-property:transform;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition-property:transform,opacity;transition-duration:var(--fui-duration-base);transition-timing-function:var(--fui-ease-out);transition-delay:0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-base) var(--fui-ease-out)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-checkbox{--fui-checkbox-size: 1.125rem;--fui-checkbox-border-width: 1px;--fui-checkbox-border-radius: var(--fui-radius-xs);--fui-checkbox-active-bg: var(--fui-field-bg);--fui-checkbox-border-color: var(--fui-text-secondary);--fui-checkbox-checked-color: var(--fui-primary-bg);--fui-checkbox-hover-bg: var(--fui-primary-muted);--fui-checkbox-label-gap: var(--fui-spacing-4);--fui-checkbox-label-font-size: var(--fui-text-base);--fui-checkbox-ripple-size: 2.5rem;display:inline-flex;align-items:flex-start;position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:middle}.fui-checkbox__container{display:inline-flex;align-items:center;cursor:inherit;gap:var(--fui-checkbox-label-gap);width:100%}.fui-checkbox__frame{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--fui-checkbox-size);height:var(--fui-checkbox-size)}.fui-checkbox__native-control{position:absolute;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1}.fui-checkbox__native-control:focus-visible+.fui-checkbox__checkmark{outline:2px solid var(--fui-primary-10)}.fui-checkbox__checkmark{display:flex;align-items:center;justify-content:center;width:var(--fui-checkbox-size);height:var(--fui-checkbox-size);border:var(--fui-checkbox-border-width) solid var(--fui-checkbox-border-color);border-radius:var(--fui-checkbox-border-radius);background-color:var(--fui-checkbox-active-bg);transition-property:background-color,border-color,transform;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-in-out);transition-delay:0ms}.fui-checkbox__checkmark:hover{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-border-primary)}.fui-checkbox__indeterminate-icon,.fui-checkbox__checkmark-icon{width:calc(var(--fui-checkbox-size) * .75);height:calc(var(--fui-checkbox-size) * .75);color:var(--fui-checkbox-checked-color);opacity:1;transform:scale(1);transition-property:opacity,transform;transition-duration:var(--fui-duration-fast);transition-timing-function:var(--fui-ease-out);transition-delay:0ms}@starting-style{.fui-checkbox__indeterminate-icon,.fui-checkbox__checkmark-icon{opacity:0;transform:scale(.5)}}.fui-checkbox__label{font-family:var(--fui-font-sans);font-size:var(--fui-text-base);font-weight:var(--fui-weight-regular);line-height:var(--fui-leading-normal);color:var(--fui-text-primary);cursor:inherit}.fui-checkbox__ripple{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:var(--fui-checkbox-border-radius);background-color:var(--fui-checkbox-checked-color);opacity:0;z-index:-1;pointer-events:none;transition:var(--fui-transition-bg)}.fui-checkbox:not(.fui-checkbox--disabled):hover .fui-checkbox__checkmark{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-border-primary)}.fui-checkbox:not(.fui-checkbox--disabled):hover .fui-checkbox__ripple{opacity:.8}.fui-checkbox--focused:not(.fui-checkbox--disabled) .fui-checkbox__ripple{opacity:.08}.fui-checkbox--checked .fui-checkbox__checkmark,.fui-checkbox--indeterminate .fui-checkbox__checkmark{background-color:var(--fui-checkbox-hover-bg);border-color:var(--fui-checkbox-checked-color)}.fui-checkbox--disabled{cursor:not-allowed}.fui-checkbox--disabled .fui-checkbox__checkmark{border-color:var(--fui-border-default);background-color:var(--fui-bg-muted)}.fui-checkbox--disabled .fui-checkbox__checkmark-icon,.fui-checkbox--disabled .fui-checkbox__indeterminate-icon,.fui-checkbox--disabled .fui-checkbox__label{color:var(--fui-text-disabled)}.fui-checkbox--disabled .fui-checkbox__ripple{display:none}.fui-checkbox--readonly{cursor:default;pointer-events:none}.fui-checkbox--readonly .fui-checkbox__label{color:var(--fui-text-secondary)}.fui-checkbox--readonly .fui-checkbox__ripple{display:none}.fui-checkbox--error .fui-checkbox__checkmark{border-color:var(--fui-border-error)}.fui-checkbox--error.fui-checkbox--checked .fui-checkbox__checkmark,.fui-checkbox--error.fui-checkbox--indeterminate .fui-checkbox__checkmark{background-color:var(--fui-fill-error);border-color:var(--fui-border-error)}.fui-checkbox--error .fui-checkbox__label{color:var(--fui-text-error)}.fui-checkbox--label-before .fui-checkbox__container{flex-direction:row-reverse;justify-content:flex-end}@media(prefers-contrast:high){.fui-checkbox__checkmark{border-width:3px}.fui-checkbox__native-control:focus-visible+.fui-checkbox__checkmark{outline-width:3px}}@media(prefers-reduced-motion:reduce){.fui-checkbox__checkmark,.fui-checkbox__checkmark-icon,.fui-checkbox__indeterminate-icon,.fui-checkbox__ripple{transition:none}}\n"] }]
288
288
  }], ctorParameters: () => [], propDecorators: { readonlyInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], checkedInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], indeterminateInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }], requiredInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], disableRipple: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableRipple", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], errorStateMatcher: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorStateMatcher", required: false }] }], change: [{ type: i0.Output, args: ["change"] }], indeterminateChange: [{ type: i0.Output, args: ["indeterminateChange"] }], inputElement: [{ type: i0.ViewChild, args: ['inputElement', { isSignal: true }] }] } });
289
289
 
290
290
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"raintonic-formaui-components-checkbox.mjs","sources":["../../../lib/components/checkbox/checkbox.component.ts","../../../lib/components/checkbox/checkbox.component.html","../../../lib/components/checkbox/raintonic-formaui-components-checkbox.ts"],"sourcesContent":["import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n input,\r\n output,\r\n computed,\r\n signal,\r\n viewChild,\r\n ElementRef,\r\n OutputEmitterRef,\r\n Signal,\r\n WritableSignal,\r\n OnDestroy,\r\n DoCheck,\r\n inject,\r\n effect,\r\n booleanAttribute,\r\n} from '@angular/core';\r\n\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, FormGroupDirective, NgForm } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { DefaultErrorStateMatcher, ErrorStateMatcher } from '@raintonic/formaui/core';\r\nimport { injectNgControl, updateErrorState, syncRequiredState, syncNgControlDisabled } from '@raintonic/formaui/cdk/form-field';\r\n\r\n/**\r\n * Checkbox label position\r\n */\r\nexport type FuiCheckboxLabelPosition = 'before' | 'after';\r\n\r\n/**\r\n * Checkbox change event interface (compatible with MatCheckboxChange)\r\n */\r\nexport interface FuiCheckboxChange {\r\n /** The source checkbox of the event. */\r\n source: FuiCheckboxComponent;\r\n /** The new `checked` value of the checkbox. */\r\n checked: boolean;\r\n}\r\n\r\n/**\r\n * # FuiCheckbox Component\r\n *\r\n * A checkbox component with full Angular Reactive Forms support.\r\n * Compatible with Angular Material's mat-checkbox interface.\r\n *\r\n * ## Features\r\n * - Full Reactive Forms integration (ControlValueAccessor)\r\n * - Indeterminate state support\r\n * - Label position configuration (before/after)\r\n * - Built-in validation and error display\r\n * - Disabled state\r\n * - Full accessibility support (ARIA)\r\n * - Compatible with mat-checkbox interface\r\n *\r\n * ## Usage\r\n *\r\n * ### Basic Checkbox\r\n * ```html\r\n * <fui-checkbox>Accept terms</fui-checkbox>\r\n * ```\r\n *\r\n * ### With Reactive Forms\r\n * ```html\r\n * <form [formGroup]=\"form\">\r\n * <fui-checkbox formControlName=\"acceptTerms\">\r\n * I accept the terms and conditions\r\n * </fui-checkbox>\r\n * </form>\r\n * ```\r\n *\r\n * ### Indeterminate State\r\n * ```html\r\n * <fui-checkbox [indeterminate]=\"true\">\r\n * Select all\r\n * </fui-checkbox>\r\n * ```\r\n *\r\n * ### Label Position\r\n * ```html\r\n * <fui-checkbox labelPosition=\"before\">\r\n * Label before checkbox\r\n * </fui-checkbox>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-checkbox',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-checkbox',\r\n '[class.fui-checkbox--checked]': 'checked()',\r\n '[class.fui-checkbox--disabled]': 'disabled() && !readonlyInput()',\r\n '[class.fui-checkbox--readonly]': 'readonlyInput()',\r\n '[class.fui-checkbox--indeterminate]': 'indeterminate()',\r\n '[class.fui-checkbox--label-before]': 'labelPosition() === \"before\"',\r\n '[class.fui-checkbox--focused]': 'focused()',\r\n '[class.fui-checkbox--error]': 'errorState()',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'null',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: FuiCheckboxComponent,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class FuiCheckboxComponent implements ControlValueAccessor, DoCheck, OnDestroy {\r\n // Static properties\r\n static nextId = 0;\r\n readonly controlType = 'fui-checkbox';\r\n\r\n // Inputs using new signal-based API (mat-checkbox compatible)\r\n readonly readonlyInput = input<boolean, unknown>(false, {\r\n alias: 'readonly',\r\n transform: booleanAttribute,\r\n });\r\n readonly checkedInput = input<boolean, unknown>(false, {\r\n alias: 'checked',\r\n transform: booleanAttribute,\r\n });\r\n readonly disabledInput = input<boolean, unknown>(false, {\r\n alias: 'disabled',\r\n transform: booleanAttribute,\r\n });\r\n readonly indeterminateInput = input<boolean, unknown>(false, {\r\n alias: 'indeterminate',\r\n transform: booleanAttribute,\r\n });\r\n readonly requiredInput = input<boolean, unknown>(false, {\r\n alias: 'required',\r\n transform: booleanAttribute,\r\n });\r\n readonly labelPosition = input<FuiCheckboxLabelPosition>('after');\r\n readonly name = input<string | null>(null);\r\n readonly value = input('on');\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\r\n readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\r\n readonly disableRipple = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n readonly tabIndex = input(0);\r\n readonly errorStateMatcher = input<ErrorStateMatcher | null>(null);\r\n\r\n // Outputs (mat-checkbox compatible)\r\n readonly change: OutputEmitterRef<FuiCheckboxChange> = output<FuiCheckboxChange>();\r\n readonly indeterminateChange: OutputEmitterRef<boolean> = output<boolean>();\r\n\r\n // Internal state signals - single source of truth like mat-checkbox\r\n private readonly _checked: WritableSignal<boolean> = signal(false);\r\n private readonly _indeterminate: WritableSignal<boolean> = signal(false);\r\n private readonly _focused: WritableSignal<boolean> = signal(false);\r\n private readonly _disabled: WritableSignal<boolean> = signal(false);\r\n\r\n // Public signals - expose internal state as readonly\r\n readonly checked: Signal<boolean> = this._checked.asReadonly();\r\n readonly indeterminate: Signal<boolean> = this._indeterminate.asReadonly();\r\n readonly focused: Signal<boolean> = this._focused.asReadonly();\r\n\r\n // State changes subject for form field compatibility\r\n readonly stateChanges = new Subject<void>();\r\n private _uid = `fui-checkbox-${FuiCheckboxComponent.nextId++}`;\r\n readonly id = this._uid;\r\n readonly inputId = `${this._uid}-input`;\r\n\r\n // Error state\r\n private readonly _errorState: WritableSignal<boolean> = signal(false);\r\n readonly errorState = this._errorState.asReadonly();\r\n\r\n // Form control references\r\n private _parentForm = inject(NgForm, { optional: true });\r\n private _parentFormGroup = inject(FormGroupDirective, { optional: true });\r\n private _defaultErrorStateMatcher = inject(DefaultErrorStateMatcher);\r\n private readonly _ngControlRef = injectNgControl();\r\n\r\n get ngControl(): NgControl | null {\r\n return this._ngControlRef.ngControl;\r\n }\r\n\r\n // Required signal\r\n private readonly _required: WritableSignal<boolean> = signal(false);\r\n readonly required: Signal<boolean> = computed(() => this._required() || this.requiredInput());\r\n\r\n // NgControl disabled state\r\n private readonly _ngControlDisabled: WritableSignal<boolean> = signal(false);\r\n readonly disabled: Signal<boolean> = computed(\r\n () => this._disabled() || this.disabledInput() || this._ngControlDisabled(),\r\n );\r\n\r\n // ViewChild for input element\r\n readonly inputElement: Signal<ElementRef<HTMLInputElement> | undefined> =\r\n viewChild<ElementRef<HTMLInputElement>>('inputElement');\r\n\r\n // ControlValueAccessor callbacks\r\n private _onChange: (value: boolean) => void = () => {\r\n // Intentionally empty: will be replaced by Angular forms\r\n };\r\n private _onTouched: () => void = () => {\r\n // Intentionally empty: will be replaced by Angular forms\r\n };\r\n\r\n // Track if writeValue has been called by a form control\r\n private _formControlInitialized = false;\r\n\r\n constructor() {\r\n // Set valueAccessor after NgControl is resolved\r\n void Promise.resolve().then(() => {\r\n if (this._ngControlRef.ngControl) {\r\n this._ngControlRef.ngControl.valueAccessor = this;\r\n }\r\n });\r\n\r\n // Effect to sync checked input to internal state (like mat-checkbox @Input setter)\r\n // This allows [checked]=\"value\" to work, but form controls take precedence via writeValue\r\n effect(() => {\r\n const inputChecked = this.checkedInput();\r\n // Only apply input value if form control hasn't initialized with writeValue\r\n if (!this._formControlInitialized) {\r\n this._checked.set(inputChecked);\r\n }\r\n });\r\n\r\n // Effect to sync indeterminate input to internal state\r\n effect(() => {\r\n const inputIndeterminate = this.indeterminateInput();\r\n this._indeterminate.set(inputIndeterminate);\r\n });\r\n\r\n // Effect to emit state changes\r\n effect(() => {\r\n // Track all reactive inputs and internal signals\r\n this.checkedInput();\r\n this.disabledInput();\r\n this.indeterminateInput();\r\n this.requiredInput();\r\n this.labelPosition();\r\n this.name();\r\n this.value();\r\n this.errorStateMatcher();\r\n this._checked();\r\n this._indeterminate();\r\n this._focused();\r\n this._disabled();\r\n this._ngControlDisabled();\r\n this._required();\r\n this._errorState();\r\n\r\n // Emit state change\r\n this.stateChanges.next();\r\n });\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (this.ngControl) {\r\n updateErrorState(\r\n this.ngControl,\r\n this._errorState,\r\n this.errorStateMatcher(),\r\n this._defaultErrorStateMatcher,\r\n this._parentForm,\r\n this._parentFormGroup,\r\n this.stateChanges,\r\n );\r\n syncRequiredState(this.ngControl, this._required, this.stateChanges);\r\n syncNgControlDisabled(this.ngControl, this._ngControlDisabled, this.stateChanges);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n // ControlValueAccessor implementation\r\n writeValue(value: boolean): void {\r\n this._formControlInitialized = true;\r\n this._checked.set(value);\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n this.stateChanges.next();\r\n }\r\n\r\n // Event handlers\r\n onInputChange(event: Event): void {\r\n event.stopPropagation();\r\n\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n // Read the new checked state from the native input element\r\n const target = event.target as HTMLInputElement;\r\n const newChecked = target.checked;\r\n\r\n // Update internal state\r\n this._checked.set(newChecked);\r\n\r\n // Clear indeterminate when checking/unchecking\r\n if (this._indeterminate()) {\r\n this._indeterminate.set(false);\r\n this.indeterminateChange.emit(false);\r\n }\r\n\r\n // Emit change events (this updates the form control)\r\n this._onChange(newChecked);\r\n this.change.emit({\r\n source: this,\r\n checked: newChecked,\r\n });\r\n this.stateChanges.next();\r\n }\r\n\r\n onFocus(): void {\r\n if (!this._focused()) {\r\n this._focused.set(true);\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onBlur(): void {\r\n if (this._focused()) {\r\n this._focused.set(false);\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n // Public methods (mat-checkbox compatible)\r\n\r\n /** Toggles the `checked` state of the checkbox. */\r\n toggle(): void {\r\n if (!this.disabled()) {\r\n const newChecked = !this._checked();\r\n this._checked.set(newChecked);\r\n\r\n // Clear indeterminate when toggling\r\n if (this._indeterminate()) {\r\n this._indeterminate.set(false);\r\n this.indeterminateChange.emit(false);\r\n }\r\n\r\n this._onChange(newChecked);\r\n this.change.emit({\r\n source: this,\r\n checked: newChecked,\r\n });\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /** Focuses the checkbox. */\r\n focus(): void {\r\n this.inputElement()?.nativeElement.focus();\r\n }\r\n\r\n /** Sets the indeterminate state programmatically. */\r\n setIndeterminate(value: boolean): void {\r\n if (this._indeterminate() !== value) {\r\n this._indeterminate.set(value);\r\n this.indeterminateChange.emit(value);\r\n this.stateChanges.next();\r\n }\r\n }\r\n}\r\n","<label class=\"fui-checkbox__container\" [attr.for]=\"inputId\">\r\n <span class=\"fui-checkbox__frame\">\r\n <input\r\n #inputElement\r\n type=\"checkbox\"\r\n class=\"fui-checkbox__native-control\"\r\n [id]=\"inputId\"\r\n [name]=\"name()\"\r\n [value]=\"value()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-labelledby]=\"ariaLabelledby()\"\r\n [attr.aria-describedby]=\"ariaDescribedby()\"\r\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\r\n [attr.aria-required]=\"required() ? 'true' : null\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"fui-checkbox__checkmark\">\r\n @if (checked() && !indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__checkmark-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n </svg>\r\n }\r\n\r\n @if (indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__indeterminate-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n }\r\n </span>\r\n\r\n @if (!disableRipple() && !disabled()) {\r\n <span class=\"fui-checkbox__ripple\"></span>\r\n }\r\n </span>\r\n\r\n <span class=\"fui-checkbox__label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAwCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CG;MA6BU,oBAAoB,CAAA;;AAE/B,IAAA,OAAO,MAAM,GAAG,CAAC;IACR,WAAW,GAAG,cAAc;;AAG5B,IAAA,aAAa,GAAG,KAAK,CAAmB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EACpD,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,YAAY,GAAG,KAAK,CAAmB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,CAAA,EACnD,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,aAAa,GAAG,KAAK,CAAmB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EACpD,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,kBAAkB,GAAG,KAAK,CAAmB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,CAAA,EACzD,KAAK,EAAE,eAAe;QACtB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,aAAa,GAAG,KAAK,CAAmB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EACpD,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,aAAa,GAAG,KAAK,CAA2B,OAAO,oFAAC;AACxD,IAAA,IAAI,GAAG,KAAK,CAAgB,IAAI,2EAAC;AACjC,IAAA,KAAK,GAAG,KAAK,CAAC,IAAI,4EAAC;IACnB,SAAS,GAAG,KAAK,CAAgB,IAAI,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;IAC/D,cAAc,GAAG,KAAK,CAAgB,IAAI,sFAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;IACzE,eAAe,GAAG,KAAK,CAAgB,IAAI,uFAAI,KAAK,EAAE,kBAAkB,EAAA,CAAG;IAC3E,aAAa,GAAG,KAAK,CAAmB,KAAK,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC/E,IAAA,QAAQ,GAAG,KAAK,CAAC,CAAC,+EAAC;AACnB,IAAA,iBAAiB,GAAG,KAAK,CAA2B,IAAI,wFAAC;;IAGzD,MAAM,GAAwC,MAAM,EAAqB;IACzE,mBAAmB,GAA8B,MAAM,EAAW;;AAG1D,IAAA,QAAQ,GAA4B,MAAM,CAAC,KAAK,+EAAC;AACjD,IAAA,cAAc,GAA4B,MAAM,CAAC,KAAK,qFAAC;AACvD,IAAA,QAAQ,GAA4B,MAAM,CAAC,KAAK,+EAAC;AACjD,IAAA,SAAS,GAA4B,MAAM,CAAC,KAAK,gFAAC;;AAG1D,IAAA,OAAO,GAAoB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AACrD,IAAA,aAAa,GAAoB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AACjE,IAAA,OAAO,GAAoB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;AAGrD,IAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AACnC,IAAA,IAAI,GAAG,CAAA,aAAA,EAAgB,oBAAoB,CAAC,MAAM,EAAE,EAAE;AACrD,IAAA,EAAE,GAAG,IAAI,CAAC,IAAI;AACd,IAAA,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,QAAQ;;AAGtB,IAAA,WAAW,GAA4B,MAAM,CAAC,KAAK,kFAAC;AAC5D,IAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;;IAG3C,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAChD,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjE,IAAA,yBAAyB,GAAG,MAAM,CAAC,wBAAwB,CAAC;IACnD,aAAa,GAAG,eAAe,EAAE;AAElD,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS;IACrC;;AAGiB,IAAA,SAAS,GAA4B,MAAM,CAAC,KAAK,gFAAC;AAC1D,IAAA,QAAQ,GAAoB,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,+EAAC;;AAG5E,IAAA,kBAAkB,GAA4B,MAAM,CAAC,KAAK,yFAAC;IACnE,QAAQ,GAAoB,QAAQ,CAC3C,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC5E;;AAGQ,IAAA,YAAY,GACnB,SAAS,CAA+B,cAAc,mFAAC;;IAGjD,SAAS,GAA6B,MAAK;;AAEnD,IAAA,CAAC;IACO,UAAU,GAAe,MAAK;;AAEtC,IAAA,CAAC;;IAGO,uBAAuB,GAAG,KAAK;AAEvC,IAAA,WAAA,GAAA;;QAEE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AAC/B,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;gBAChC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;YACnD;AACF,QAAA,CAAC,CAAC;;;QAIF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;;AAExC,YAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACjC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;YACjC;AACF,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACpD,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAC7C,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;;YAEV,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,WAAW,EAAE;;AAGlB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,gBAAgB,CACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,iBAAiB,EAAE,EACxB,IAAI,CAAC,yBAAyB,EAC9B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,YAAY,CAClB;AACD,YAAA,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;AACpE,YAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC;QACnF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAC9B;;AAGA,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;;AAGA,IAAA,aAAa,CAAC,KAAY,EAAA;QACxB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;;AAGA,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO;;AAGjC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;;AAG7B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QACtC;;AAGA,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,UAAU;AACpB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;;;IAKA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;;AAG7B,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;YACtC;AAEA,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,OAAO,EAAE,UAAU;AACpB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;;IAGA,KAAK,GAAA;QACH,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;IAC5C;;AAGA,IAAA,gBAAgB,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,KAAK,EAAE;AACnC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;uGAxQW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,8BAAA,EAAA,iBAAA,EAAA,mCAAA,EAAA,iBAAA,EAAA,kCAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,2BAAA,EAAA,cAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EARpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,oBAAoB;AACjC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/GH,siEAgEA,EAAA,MAAA,EAAA,CAAA,m/MAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FDiDa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA5BhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,+BAA+B,EAAE,WAAW;AAC5C,wBAAA,gCAAgC,EAAE,gCAAgC;AAClE,wBAAA,gCAAgC,EAAE,iBAAiB;AACnD,wBAAA,qCAAqC,EAAE,iBAAiB;AACxD,wBAAA,oCAAoC,EAAE,8BAA8B;AACpE,wBAAA,+BAA+B,EAAE,WAAW;AAC5C,wBAAA,6BAA6B,EAAE,cAAc;AAC7C,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,iBAAiB,EAAE,MAAM;qBAC1B,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,oBAAsB;AACjC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,siEAAA,EAAA,MAAA,EAAA,CAAA,m/MAAA,CAAA,EAAA;wnDAqFyC,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEpM1D;;AAEG;;;;"}
1
+ {"version":3,"file":"raintonic-formaui-components-checkbox.mjs","sources":["../../../lib/components/checkbox/checkbox.component.ts","../../../lib/components/checkbox/checkbox.component.html","../../../lib/components/checkbox/raintonic-formaui-components-checkbox.ts"],"sourcesContent":["import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n input,\r\n output,\r\n computed,\r\n signal,\r\n viewChild,\r\n ElementRef,\r\n OutputEmitterRef,\r\n Signal,\r\n WritableSignal,\r\n OnDestroy,\r\n DoCheck,\r\n inject,\r\n effect,\r\n booleanAttribute,\r\n} from '@angular/core';\r\n\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, FormGroupDirective, NgForm } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { DefaultErrorStateMatcher, ErrorStateMatcher } from '@raintonic/formaui/core';\r\nimport { injectNgControl, updateErrorState, syncRequiredState, syncNgControlDisabled } from '@raintonic/formaui/cdk/form-field';\r\n\r\n/**\r\n * Checkbox label position\r\n */\r\nexport type FuiCheckboxLabelPosition = 'before' | 'after';\r\n\r\n/**\r\n * Checkbox change event interface (compatible with MatCheckboxChange)\r\n */\r\nexport interface FuiCheckboxChange {\r\n /** The source checkbox of the event. */\r\n source: FuiCheckboxComponent;\r\n /** The new `checked` value of the checkbox. */\r\n checked: boolean;\r\n}\r\n\r\n/**\r\n * # FuiCheckbox Component\r\n *\r\n * A checkbox component with full Angular Reactive Forms support.\r\n * Compatible with Angular Material's mat-checkbox interface.\r\n *\r\n * ## Features\r\n * - Full Reactive Forms integration (ControlValueAccessor)\r\n * - Indeterminate state support\r\n * - Label position configuration (before/after)\r\n * - Built-in validation and error display\r\n * - Disabled state\r\n * - Full accessibility support (ARIA)\r\n * - Compatible with mat-checkbox interface\r\n *\r\n * ## Usage\r\n *\r\n * ### Basic Checkbox\r\n * ```html\r\n * <fui-checkbox>Accept terms</fui-checkbox>\r\n * ```\r\n *\r\n * ### With Reactive Forms\r\n * ```html\r\n * <form [formGroup]=\"form\">\r\n * <fui-checkbox formControlName=\"acceptTerms\">\r\n * I accept the terms and conditions\r\n * </fui-checkbox>\r\n * </form>\r\n * ```\r\n *\r\n * ### Indeterminate State\r\n * ```html\r\n * <fui-checkbox [indeterminate]=\"true\">\r\n * Select all\r\n * </fui-checkbox>\r\n * ```\r\n *\r\n * ### Label Position\r\n * ```html\r\n * <fui-checkbox labelPosition=\"before\">\r\n * Label before checkbox\r\n * </fui-checkbox>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'fui-checkbox',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-checkbox',\r\n '[class.fui-checkbox--checked]': 'checked()',\r\n '[class.fui-checkbox--disabled]': 'disabled() && !readonlyInput()',\r\n '[class.fui-checkbox--readonly]': 'readonlyInput()',\r\n '[class.fui-checkbox--indeterminate]': 'indeterminate()',\r\n '[class.fui-checkbox--label-before]': 'labelPosition() === \"before\"',\r\n '[class.fui-checkbox--focused]': 'focused()',\r\n '[class.fui-checkbox--error]': 'errorState()',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'null',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: FuiCheckboxComponent,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class FuiCheckboxComponent implements ControlValueAccessor, DoCheck, OnDestroy {\r\n // Static properties\r\n static nextId = 0;\r\n readonly controlType = 'fui-checkbox';\r\n\r\n // Inputs using new signal-based API (mat-checkbox compatible)\r\n readonly readonlyInput = input<boolean, unknown>(false, {\r\n alias: 'readonly',\r\n transform: booleanAttribute,\r\n });\r\n readonly checkedInput = input<boolean, unknown>(false, {\r\n alias: 'checked',\r\n transform: booleanAttribute,\r\n });\r\n readonly disabledInput = input<boolean, unknown>(false, {\r\n alias: 'disabled',\r\n transform: booleanAttribute,\r\n });\r\n readonly indeterminateInput = input<boolean, unknown>(false, {\r\n alias: 'indeterminate',\r\n transform: booleanAttribute,\r\n });\r\n readonly requiredInput = input<boolean, unknown>(false, {\r\n alias: 'required',\r\n transform: booleanAttribute,\r\n });\r\n readonly labelPosition = input<FuiCheckboxLabelPosition>('after');\r\n readonly name = input<string | null>(null);\r\n readonly value = input('on');\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\r\n readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\r\n readonly disableRipple = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n readonly tabIndex = input(0);\r\n readonly errorStateMatcher = input<ErrorStateMatcher | null>(null);\r\n\r\n // Outputs (mat-checkbox compatible)\r\n readonly change: OutputEmitterRef<FuiCheckboxChange> = output<FuiCheckboxChange>();\r\n readonly indeterminateChange: OutputEmitterRef<boolean> = output<boolean>();\r\n\r\n // Internal state signals - single source of truth like mat-checkbox\r\n private readonly _checked: WritableSignal<boolean> = signal(false);\r\n private readonly _indeterminate: WritableSignal<boolean> = signal(false);\r\n private readonly _focused: WritableSignal<boolean> = signal(false);\r\n private readonly _disabled: WritableSignal<boolean> = signal(false);\r\n\r\n // Public signals - expose internal state as readonly\r\n readonly checked: Signal<boolean> = this._checked.asReadonly();\r\n readonly indeterminate: Signal<boolean> = this._indeterminate.asReadonly();\r\n readonly focused: Signal<boolean> = this._focused.asReadonly();\r\n\r\n // State changes subject for form field compatibility\r\n readonly stateChanges = new Subject<void>();\r\n private _uid = `fui-checkbox-${FuiCheckboxComponent.nextId++}`;\r\n readonly id = this._uid;\r\n readonly inputId = `${this._uid}-input`;\r\n\r\n // Error state\r\n private readonly _errorState: WritableSignal<boolean> = signal(false);\r\n readonly errorState = this._errorState.asReadonly();\r\n\r\n // Form control references\r\n private _parentForm = inject(NgForm, { optional: true });\r\n private _parentFormGroup = inject(FormGroupDirective, { optional: true });\r\n private _defaultErrorStateMatcher = inject(DefaultErrorStateMatcher);\r\n private readonly _ngControlRef = injectNgControl();\r\n\r\n get ngControl(): NgControl | null {\r\n return this._ngControlRef.ngControl;\r\n }\r\n\r\n // Required signal\r\n private readonly _required: WritableSignal<boolean> = signal(false);\r\n readonly required: Signal<boolean> = computed(() => this._required() || this.requiredInput());\r\n\r\n // NgControl disabled state\r\n private readonly _ngControlDisabled: WritableSignal<boolean> = signal(false);\r\n readonly disabled: Signal<boolean> = computed(\r\n () => this._disabled() || this.disabledInput() || this._ngControlDisabled(),\r\n );\r\n\r\n // ViewChild for input element\r\n readonly inputElement: Signal<ElementRef<HTMLInputElement> | undefined> =\r\n viewChild<ElementRef<HTMLInputElement>>('inputElement');\r\n\r\n // ControlValueAccessor callbacks\r\n private _onChange: (value: boolean) => void = () => {\r\n // Intentionally empty: will be replaced by Angular forms\r\n };\r\n private _onTouched: () => void = () => {\r\n // Intentionally empty: will be replaced by Angular forms\r\n };\r\n\r\n // Track if writeValue has been called by a form control\r\n private _formControlInitialized = false;\r\n\r\n constructor() {\r\n // Set valueAccessor after NgControl is resolved\r\n void Promise.resolve().then(() => {\r\n if (this._ngControlRef.ngControl) {\r\n this._ngControlRef.ngControl.valueAccessor = this;\r\n }\r\n });\r\n\r\n // Effect to sync checked input to internal state (like mat-checkbox @Input setter)\r\n // This allows [checked]=\"value\" to work, but form controls take precedence via writeValue\r\n effect(() => {\r\n const inputChecked = this.checkedInput();\r\n // Only apply input value if form control hasn't initialized with writeValue\r\n if (!this._formControlInitialized) {\r\n this._checked.set(inputChecked);\r\n }\r\n });\r\n\r\n // Effect to sync indeterminate input to internal state\r\n effect(() => {\r\n const inputIndeterminate = this.indeterminateInput();\r\n this._indeterminate.set(inputIndeterminate);\r\n });\r\n\r\n // Effect to emit state changes\r\n effect(() => {\r\n // Track all reactive inputs and internal signals\r\n this.checkedInput();\r\n this.disabledInput();\r\n this.indeterminateInput();\r\n this.requiredInput();\r\n this.labelPosition();\r\n this.name();\r\n this.value();\r\n this.errorStateMatcher();\r\n this._checked();\r\n this._indeterminate();\r\n this._focused();\r\n this._disabled();\r\n this._ngControlDisabled();\r\n this._required();\r\n this._errorState();\r\n\r\n // Emit state change\r\n this.stateChanges.next();\r\n });\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (this.ngControl) {\r\n updateErrorState(\r\n this.ngControl,\r\n this._errorState,\r\n this.errorStateMatcher(),\r\n this._defaultErrorStateMatcher,\r\n this._parentForm,\r\n this._parentFormGroup,\r\n this.stateChanges,\r\n );\r\n syncRequiredState(this.ngControl, this._required, this.stateChanges);\r\n syncNgControlDisabled(this.ngControl, this._ngControlDisabled, this.stateChanges);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n // ControlValueAccessor implementation\r\n writeValue(value: boolean): void {\r\n this._formControlInitialized = true;\r\n this._checked.set(value);\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n this.stateChanges.next();\r\n }\r\n\r\n // Event handlers\r\n onInputChange(event: Event): void {\r\n event.stopPropagation();\r\n\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n // Read the new checked state from the native input element\r\n const target = event.target as HTMLInputElement;\r\n const newChecked = target.checked;\r\n\r\n // Update internal state\r\n this._checked.set(newChecked);\r\n\r\n // Clear indeterminate when checking/unchecking\r\n if (this._indeterminate()) {\r\n this._indeterminate.set(false);\r\n this.indeterminateChange.emit(false);\r\n }\r\n\r\n // Emit change events (this updates the form control)\r\n this._onChange(newChecked);\r\n this.change.emit({\r\n source: this,\r\n checked: newChecked,\r\n });\r\n this.stateChanges.next();\r\n }\r\n\r\n onFocus(): void {\r\n if (!this._focused()) {\r\n this._focused.set(true);\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onBlur(): void {\r\n if (this._focused()) {\r\n this._focused.set(false);\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n // Public methods (mat-checkbox compatible)\r\n\r\n /** Toggles the `checked` state of the checkbox. */\r\n toggle(): void {\r\n if (!this.disabled()) {\r\n const newChecked = !this._checked();\r\n this._checked.set(newChecked);\r\n\r\n // Clear indeterminate when toggling\r\n if (this._indeterminate()) {\r\n this._indeterminate.set(false);\r\n this.indeterminateChange.emit(false);\r\n }\r\n\r\n this._onChange(newChecked);\r\n this.change.emit({\r\n source: this,\r\n checked: newChecked,\r\n });\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /** Focuses the checkbox. */\r\n focus(): void {\r\n this.inputElement()?.nativeElement.focus();\r\n }\r\n\r\n /** Sets the indeterminate state programmatically. */\r\n setIndeterminate(value: boolean): void {\r\n if (this._indeterminate() !== value) {\r\n this._indeterminate.set(value);\r\n this.indeterminateChange.emit(value);\r\n this.stateChanges.next();\r\n }\r\n }\r\n}\r\n","<label class=\"fui-checkbox__container\" [attr.for]=\"inputId\">\r\n <span class=\"fui-checkbox__frame\">\r\n <input\r\n #inputElement\r\n type=\"checkbox\"\r\n class=\"fui-checkbox__native-control\"\r\n [id]=\"inputId\"\r\n [name]=\"name()\"\r\n [value]=\"value()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [attr.aria-labelledby]=\"ariaLabelledby()\"\r\n [attr.aria-describedby]=\"ariaDescribedby()\"\r\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\r\n [attr.aria-required]=\"required() ? 'true' : null\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onInputChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n\r\n <span class=\"fui-checkbox__checkmark\">\r\n @if (checked() && !indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__checkmark-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n </svg>\r\n }\r\n\r\n @if (indeterminate()) {\r\n <svg\r\n class=\"fui-checkbox__indeterminate-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n }\r\n </span>\r\n\r\n @if (!disableRipple() && !disabled()) {\r\n <span class=\"fui-checkbox__ripple\"></span>\r\n }\r\n </span>\r\n\r\n <span class=\"fui-checkbox__label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}