@raintonic/formaui 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +145 -0
- package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs +806 -0
- package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-cdk-form-field.mjs +86 -0
- package/fesm2022/raintonic-formaui-cdk-form-field.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs +1757 -0
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs +287 -0
- package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-accordion.mjs +217 -0
- package/fesm2022/raintonic-formaui-components-accordion.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-alert.mjs +161 -0
- package/fesm2022/raintonic-formaui-components-alert.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs +726 -0
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-avatar.mjs +92 -0
- package/fesm2022/raintonic-formaui-components-avatar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-badge.mjs +107 -0
- package/fesm2022/raintonic-formaui-components-badge.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-big-menu.mjs +68 -0
- package/fesm2022/raintonic-formaui-components-big-menu.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-breadcrumb.mjs +55 -0
- package/fesm2022/raintonic-formaui-components-breadcrumb.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-button-group.mjs +103 -0
- package/fesm2022/raintonic-formaui-components-button-group.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-button.mjs +241 -0
- package/fesm2022/raintonic-formaui-components-button.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-card.mjs +270 -0
- package/fesm2022/raintonic-formaui-components-card.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-checkbox.mjs +295 -0
- package/fesm2022/raintonic-formaui-components-checkbox.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-data-table.mjs +631 -0
- package/fesm2022/raintonic-formaui-components-data-table.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-date-picker.mjs +1331 -0
- package/fesm2022/raintonic-formaui-components-date-picker.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-divider.mjs +41 -0
- package/fesm2022/raintonic-formaui-components-divider.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-drawer.mjs +190 -0
- package/fesm2022/raintonic-formaui-components-drawer.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-dynamic-form.mjs +266 -0
- package/fesm2022/raintonic-formaui-components-dynamic-form.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-empty-state.mjs +33 -0
- package/fesm2022/raintonic-formaui-components-empty-state.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-file-upload.mjs +246 -0
- package/fesm2022/raintonic-formaui-components-file-upload.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-form-field.mjs +482 -0
- package/fesm2022/raintonic-formaui-components-form-field.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-icon.mjs +117 -0
- package/fesm2022/raintonic-formaui-components-icon.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-input.mjs +327 -0
- package/fesm2022/raintonic-formaui-components-input.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-list.mjs +149 -0
- package/fesm2022/raintonic-formaui-components-list.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-menu.mjs +896 -0
- package/fesm2022/raintonic-formaui-components-menu.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-number-input.mjs +345 -0
- package/fesm2022/raintonic-formaui-components-number-input.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-paginator.mjs +139 -0
- package/fesm2022/raintonic-formaui-components-paginator.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-password-input.mjs +306 -0
- package/fesm2022/raintonic-formaui-components-password-input.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-popover.mjs +451 -0
- package/fesm2022/raintonic-formaui-components-popover.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-progressbar.mjs +148 -0
- package/fesm2022/raintonic-formaui-components-progressbar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-radio.mjs +260 -0
- package/fesm2022/raintonic-formaui-components-radio.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-select.mjs +1011 -0
- package/fesm2022/raintonic-formaui-components-select.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-side-panel.mjs +150 -0
- package/fesm2022/raintonic-formaui-components-side-panel.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-sidebar.mjs +257 -0
- package/fesm2022/raintonic-formaui-components-sidebar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-skeleton.mjs +50 -0
- package/fesm2022/raintonic-formaui-components-skeleton.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-slider.mjs +347 -0
- package/fesm2022/raintonic-formaui-components-slider.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-spinner.mjs +63 -0
- package/fesm2022/raintonic-formaui-components-spinner.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-stepper.mjs +317 -0
- package/fesm2022/raintonic-formaui-components-stepper.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tab.mjs +197 -0
- package/fesm2022/raintonic-formaui-components-tab.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tag.mjs +78 -0
- package/fesm2022/raintonic-formaui-components-tag.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-time-picker.mjs +644 -0
- package/fesm2022/raintonic-formaui-components-time-picker.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-toggle.mjs +171 -0
- package/fesm2022/raintonic-formaui-components-toggle.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-toolbar.mjs +140 -0
- package/fesm2022/raintonic-formaui-components-toolbar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tooltip.mjs +555 -0
- package/fesm2022/raintonic-formaui-components-tooltip.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tree-select.mjs +314 -0
- package/fesm2022/raintonic-formaui-components-tree-select.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tree-table.mjs +103 -0
- package/fesm2022/raintonic-formaui-components-tree-table.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tree.mjs +430 -0
- package/fesm2022/raintonic-formaui-components-tree.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-core.mjs +62 -0
- package/fesm2022/raintonic-formaui-core.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-services-dialog.mjs +798 -0
- package/fesm2022/raintonic-formaui-services-dialog.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-services-notification.mjs +391 -0
- package/fesm2022/raintonic-formaui-services-notification.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-services-theme.mjs +248 -0
- package/fesm2022/raintonic-formaui-services-theme.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-test-utils.mjs +66 -0
- package/fesm2022/raintonic-formaui-test-utils.mjs.map +1 -0
- package/fesm2022/raintonic-formaui.mjs +15 -0
- package/fesm2022/raintonic-formaui.mjs.map +1 -0
- package/llms-full.txt +1627 -0
- package/llms.txt +60 -0
- package/package.json +251 -0
- package/styles/_fonts-entry.scss +3 -0
- package/styles/fonts/dm-mono-400-latin.woff2 +0 -0
- package/styles/fonts/inter-tight-latin-italic.woff2 +0 -0
- package/styles/fonts/inter-tight-latin.woff2 +0 -0
- package/styles/index.scss +127 -0
- package/styles/partials/_constants.scss +29 -0
- package/styles/partials/_fonts.scss +36 -0
- package/styles/partials/_grid.scss +171 -0
- package/styles/partials/_mixins.scss +145 -0
- package/styles/partials/_motion.scss +252 -0
- package/styles/partials/_theme.scss +275 -0
- package/styles/partials/_typography.scss +112 -0
- package/styles/partials/_utilities.scss +480 -0
- package/styles/partials/themes/_dark.scss +254 -0
- package/styles/partials/themes/_light.scss +254 -0
- package/types/raintonic-formaui-cdk-drag-drop.d.ts +196 -0
- package/types/raintonic-formaui-cdk-drag-drop.d.ts.map +1 -0
- package/types/raintonic-formaui-cdk-form-field.d.ts +62 -0
- package/types/raintonic-formaui-cdk-form-field.d.ts.map +1 -0
- package/types/raintonic-formaui-cdk-overlay.d.ts +843 -0
- package/types/raintonic-formaui-cdk-overlay.d.ts.map +1 -0
- package/types/raintonic-formaui-cdk-virtual-scroll.d.ts +112 -0
- package/types/raintonic-formaui-cdk-virtual-scroll.d.ts.map +1 -0
- package/types/raintonic-formaui-components-accordion.d.ts +124 -0
- package/types/raintonic-formaui-components-accordion.d.ts.map +1 -0
- package/types/raintonic-formaui-components-alert.d.ts +143 -0
- package/types/raintonic-formaui-components-alert.d.ts.map +1 -0
- package/types/raintonic-formaui-components-autocomplete.d.ts +193 -0
- package/types/raintonic-formaui-components-autocomplete.d.ts.map +1 -0
- package/types/raintonic-formaui-components-avatar.d.ts +52 -0
- package/types/raintonic-formaui-components-avatar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-badge.d.ts +47 -0
- package/types/raintonic-formaui-components-badge.d.ts.map +1 -0
- package/types/raintonic-formaui-components-big-menu.d.ts +62 -0
- package/types/raintonic-formaui-components-big-menu.d.ts.map +1 -0
- package/types/raintonic-formaui-components-breadcrumb.d.ts +26 -0
- package/types/raintonic-formaui-components-breadcrumb.d.ts.map +1 -0
- package/types/raintonic-formaui-components-button-group.d.ts +61 -0
- package/types/raintonic-formaui-components-button-group.d.ts.map +1 -0
- package/types/raintonic-formaui-components-button.d.ts +116 -0
- package/types/raintonic-formaui-components-button.d.ts.map +1 -0
- package/types/raintonic-formaui-components-card.d.ts +191 -0
- package/types/raintonic-formaui-components-card.d.ts.map +1 -0
- package/types/raintonic-formaui-components-checkbox.d.ts +132 -0
- package/types/raintonic-formaui-components-checkbox.d.ts.map +1 -0
- package/types/raintonic-formaui-components-data-table.d.ts +368 -0
- package/types/raintonic-formaui-components-data-table.d.ts.map +1 -0
- package/types/raintonic-formaui-components-date-picker.d.ts +341 -0
- package/types/raintonic-formaui-components-date-picker.d.ts.map +1 -0
- package/types/raintonic-formaui-components-divider.d.ts +21 -0
- package/types/raintonic-formaui-components-divider.d.ts.map +1 -0
- package/types/raintonic-formaui-components-drawer.d.ts +48 -0
- package/types/raintonic-formaui-components-drawer.d.ts.map +1 -0
- package/types/raintonic-formaui-components-dynamic-form.d.ts +412 -0
- package/types/raintonic-formaui-components-dynamic-form.d.ts.map +1 -0
- package/types/raintonic-formaui-components-empty-state.d.ts +14 -0
- package/types/raintonic-formaui-components-empty-state.d.ts.map +1 -0
- package/types/raintonic-formaui-components-file-upload.d.ts +77 -0
- package/types/raintonic-formaui-components-file-upload.d.ts.map +1 -0
- package/types/raintonic-formaui-components-form-field.d.ts +271 -0
- package/types/raintonic-formaui-components-form-field.d.ts.map +1 -0
- package/types/raintonic-formaui-components-icon.d.ts +61 -0
- package/types/raintonic-formaui-components-icon.d.ts.map +1 -0
- package/types/raintonic-formaui-components-input.d.ts +149 -0
- package/types/raintonic-formaui-components-input.d.ts.map +1 -0
- package/types/raintonic-formaui-components-list.d.ts +48 -0
- package/types/raintonic-formaui-components-list.d.ts.map +1 -0
- package/types/raintonic-formaui-components-menu.d.ts +403 -0
- package/types/raintonic-formaui-components-menu.d.ts.map +1 -0
- package/types/raintonic-formaui-components-number-input.d.ts +127 -0
- package/types/raintonic-formaui-components-number-input.d.ts.map +1 -0
- package/types/raintonic-formaui-components-paginator.d.ts +37 -0
- package/types/raintonic-formaui-components-paginator.d.ts.map +1 -0
- package/types/raintonic-formaui-components-password-input.d.ts +111 -0
- package/types/raintonic-formaui-components-password-input.d.ts.map +1 -0
- package/types/raintonic-formaui-components-popover.d.ts +131 -0
- package/types/raintonic-formaui-components-popover.d.ts.map +1 -0
- package/types/raintonic-formaui-components-progressbar.d.ts +111 -0
- package/types/raintonic-formaui-components-progressbar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-radio.d.ts +95 -0
- package/types/raintonic-formaui-components-radio.d.ts.map +1 -0
- package/types/raintonic-formaui-components-select.d.ts +307 -0
- package/types/raintonic-formaui-components-select.d.ts.map +1 -0
- package/types/raintonic-formaui-components-side-panel.d.ts +51 -0
- package/types/raintonic-formaui-components-side-panel.d.ts.map +1 -0
- package/types/raintonic-formaui-components-sidebar.d.ts +174 -0
- package/types/raintonic-formaui-components-sidebar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-skeleton.d.ts +20 -0
- package/types/raintonic-formaui-components-skeleton.d.ts.map +1 -0
- package/types/raintonic-formaui-components-slider.d.ts +108 -0
- package/types/raintonic-formaui-components-slider.d.ts.map +1 -0
- package/types/raintonic-formaui-components-spinner.d.ts +42 -0
- package/types/raintonic-formaui-components-spinner.d.ts.map +1 -0
- package/types/raintonic-formaui-components-stepper.d.ts +126 -0
- package/types/raintonic-formaui-components-stepper.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tab.d.ts +96 -0
- package/types/raintonic-formaui-components-tab.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tag.d.ts +34 -0
- package/types/raintonic-formaui-components-tag.d.ts.map +1 -0
- package/types/raintonic-formaui-components-time-picker.d.ts +172 -0
- package/types/raintonic-formaui-components-time-picker.d.ts.map +1 -0
- package/types/raintonic-formaui-components-toggle.d.ts +70 -0
- package/types/raintonic-formaui-components-toggle.d.ts.map +1 -0
- package/types/raintonic-formaui-components-toolbar.d.ts +128 -0
- package/types/raintonic-formaui-components-toolbar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tooltip.d.ts +268 -0
- package/types/raintonic-formaui-components-tooltip.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tree-select.d.ts +80 -0
- package/types/raintonic-formaui-components-tree-select.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tree-table.d.ts +90 -0
- package/types/raintonic-formaui-components-tree-table.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tree.d.ts +104 -0
- package/types/raintonic-formaui-components-tree.d.ts.map +1 -0
- package/types/raintonic-formaui-core.d.ts +115 -0
- package/types/raintonic-formaui-core.d.ts.map +1 -0
- package/types/raintonic-formaui-services-dialog.d.ts +451 -0
- package/types/raintonic-formaui-services-dialog.d.ts.map +1 -0
- package/types/raintonic-formaui-services-notification.d.ts +221 -0
- package/types/raintonic-formaui-services-notification.d.ts.map +1 -0
- package/types/raintonic-formaui-services-theme.d.ts +126 -0
- package/types/raintonic-formaui-services-theme.d.ts.map +1 -0
- package/types/raintonic-formaui-test-utils.d.ts +24 -0
- package/types/raintonic-formaui-test-utils.d.ts.map +1 -0
- package/types/raintonic-formaui.d.ts +4 -0
- package/types/raintonic-formaui.d.ts.map +1 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, Component, signal, computed, HostListener, ContentChild, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* # FuiCardHeader Component
|
|
6
|
+
*
|
|
7
|
+
* Header section for cards with optional title, subtitle, and additional content.
|
|
8
|
+
*
|
|
9
|
+
* ## Usage
|
|
10
|
+
* ```html
|
|
11
|
+
* <fui-card-header title="Card Title" subtitle="Optional subtitle">
|
|
12
|
+
* <button fuiButton variant="ghost">
|
|
13
|
+
* <fui-icon name="dots-three"></fui-icon>
|
|
14
|
+
* </button>
|
|
15
|
+
* </fui-card-header>
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
class FuiCardHeaderComponent {
|
|
19
|
+
/**
|
|
20
|
+
* Unique id for linking with aria-labelledby from the card
|
|
21
|
+
*/
|
|
22
|
+
hostId = `fui-card-header-${Math.random().toString(36).slice(2)}`;
|
|
23
|
+
/**
|
|
24
|
+
* Main title text for the card header
|
|
25
|
+
*/
|
|
26
|
+
title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
|
|
27
|
+
/**
|
|
28
|
+
* Optional subtitle text for the card header
|
|
29
|
+
*/
|
|
30
|
+
subtitle = input(...(ngDevMode ? [undefined, { debugName: "subtitle" }] : /* istanbul ignore next */ []));
|
|
31
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: FuiCardHeaderComponent, isStandalone: true, selector: "fui-card-header", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "fui-card-header" }, ngImport: i0, template: "@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 class=\"fui-card-header__content\">\r\n <ng-content></ng-content>\r\n</div>\r\n" });
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardHeaderComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ selector: 'fui-card-header', standalone: true, imports: [], host: {
|
|
37
|
+
class: 'fui-card-header',
|
|
38
|
+
}, template: "@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 class=\"fui-card-header__content\">\r\n <ng-content></ng-content>\r\n</div>\r\n" }]
|
|
39
|
+
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }] } });
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* # FuiCardActions Component
|
|
43
|
+
*
|
|
44
|
+
* Actions section for cards, typically containing buttons or other interactive elements.
|
|
45
|
+
*
|
|
46
|
+
* ## Usage
|
|
47
|
+
* ```html
|
|
48
|
+
* <fui-card-actions align="end">
|
|
49
|
+
* <button fuiButton variant="tertiary">Cancel</button>
|
|
50
|
+
* <button fuiButton variant="primary" color="primary">Save</button>
|
|
51
|
+
* </fui-card-actions>
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* ### Paddingless Actions
|
|
55
|
+
* ```html
|
|
56
|
+
* <fui-card-actions align="start" paddingless="true">
|
|
57
|
+
* <button fuiButton variant="ghost">
|
|
58
|
+
* <fui-icon name="heart"></fui-icon>
|
|
59
|
+
* </button>
|
|
60
|
+
* </fui-card-actions>
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
class FuiCardActionsComponent {
|
|
64
|
+
/**
|
|
65
|
+
* Alignment of actions within the container
|
|
66
|
+
* @default 'end'
|
|
67
|
+
*/
|
|
68
|
+
align = input('end', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
69
|
+
/**
|
|
70
|
+
* Whether to remove padding from the actions container
|
|
71
|
+
* @default false
|
|
72
|
+
*/
|
|
73
|
+
paddingless = input(false, ...(ngDevMode ? [{ debugName: "paddingless" }] : /* istanbul ignore next */ []));
|
|
74
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
75
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: FuiCardActionsComponent, isStandalone: true, selector: "fui-card-actions", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, paddingless: { classPropertyName: "paddingless", publicName: "paddingless", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.fui-card-actions--align-start": "align() === \"start\"", "class.fui-card-actions--align-center": "align() === \"center\"", "class.fui-card-actions--align-end": "align() === \"end\"", "class.fui-card-actions--paddingless": "paddingless()" }, classAttribute: "fui-card-actions" }, ngImport: i0, template: "<ng-content></ng-content>\r\n" });
|
|
76
|
+
}
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardActionsComponent, decorators: [{
|
|
78
|
+
type: Component,
|
|
79
|
+
args: [{ selector: 'fui-card-actions', standalone: true, host: {
|
|
80
|
+
class: 'fui-card-actions',
|
|
81
|
+
'[class.fui-card-actions--align-start]': 'align() === "start"',
|
|
82
|
+
'[class.fui-card-actions--align-center]': 'align() === "center"',
|
|
83
|
+
'[class.fui-card-actions--align-end]': 'align() === "end"',
|
|
84
|
+
'[class.fui-card-actions--paddingless]': 'paddingless()',
|
|
85
|
+
}, template: "<ng-content></ng-content>\r\n" }]
|
|
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
|
+
|
|
88
|
+
/**
|
|
89
|
+
* # FuiCard Component
|
|
90
|
+
*
|
|
91
|
+
* A flexible container component following Carbon Design System patterns.
|
|
92
|
+
* Provides a structured layout with optional header, content, and actions sections.
|
|
93
|
+
*
|
|
94
|
+
* ## Features
|
|
95
|
+
* - Multiple variants: elevated, outlined, flat
|
|
96
|
+
* - Configurable padding: none, sm, md, lg, xl
|
|
97
|
+
* - Structured content areas: header, content, actions
|
|
98
|
+
* - Clickable state support with hover animations
|
|
99
|
+
* - Disabled state support
|
|
100
|
+
* - Full accessibility support
|
|
101
|
+
* - Smooth motion transitions
|
|
102
|
+
*
|
|
103
|
+
* ## Usage
|
|
104
|
+
*
|
|
105
|
+
* ### Basic Card
|
|
106
|
+
* ```html
|
|
107
|
+
* <fui-card>
|
|
108
|
+
* <p>Card content goes here</p>
|
|
109
|
+
* </fui-card>
|
|
110
|
+
* ```
|
|
111
|
+
*
|
|
112
|
+
* ### Card with Header and Actions
|
|
113
|
+
* ```html
|
|
114
|
+
* <fui-card variant="outlined">
|
|
115
|
+
* <fui-card-header title="Card Title" subtitle="Optional subtitle">
|
|
116
|
+
* <button fuiButton variant="ghost" size="sm" [iconOnly]="true">
|
|
117
|
+
* <fui-icon name="overflow-menu-vertical"></fui-icon>
|
|
118
|
+
* </button>
|
|
119
|
+
* </fui-card-header>
|
|
120
|
+
*
|
|
121
|
+
* <p>Main card content</p>
|
|
122
|
+
*
|
|
123
|
+
* <fui-card-actions align="end">
|
|
124
|
+
* <button fuiButton variant="secondary" kind="ghost">Cancel</button>
|
|
125
|
+
* <button fuiButton variant="primary">Save</button>
|
|
126
|
+
* </fui-card-actions>
|
|
127
|
+
* </fui-card>
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* ### Clickable Card
|
|
131
|
+
* ```html
|
|
132
|
+
* <fui-card [clickable]="true" (click)="handleCardClick()">
|
|
133
|
+
* <p>This entire card is clickable</p>
|
|
134
|
+
* </fui-card>
|
|
135
|
+
* ```
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```typescript
|
|
139
|
+
* import { FuiCardComponent, FuiCardHeaderComponent, FuiCardActionsComponent } from '@raintonic/formaui/components/card';
|
|
140
|
+
*
|
|
141
|
+
* @Component({
|
|
142
|
+
* standalone: true,
|
|
143
|
+
* imports: [FuiCardComponent, FuiCardHeaderComponent, FuiCardActionsComponent],
|
|
144
|
+
* template: `
|
|
145
|
+
* <fui-card variant="elevated" padding="lg">
|
|
146
|
+
* <fui-card-header title="User Profile"></fui-card-header>
|
|
147
|
+
* <div class="user-info">
|
|
148
|
+
* <p>User details here...</p>
|
|
149
|
+
* </div>
|
|
150
|
+
* <fui-card-actions>
|
|
151
|
+
* <button fuiButton>Edit</button>
|
|
152
|
+
* </fui-card-actions>
|
|
153
|
+
* </fui-card>
|
|
154
|
+
* `
|
|
155
|
+
* })
|
|
156
|
+
* export class UserCardComponent {}
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
class FuiCardComponent {
|
|
160
|
+
/**
|
|
161
|
+
* Card variant that determines the visual style
|
|
162
|
+
* @default 'outlined'
|
|
163
|
+
*/
|
|
164
|
+
variant = input('outlined', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
165
|
+
/**
|
|
166
|
+
* Padding applied to card content
|
|
167
|
+
* @default 'lg'
|
|
168
|
+
*/
|
|
169
|
+
padding = input('lg', ...(ngDevMode ? [{ debugName: "padding" }] : /* istanbul ignore next */ []));
|
|
170
|
+
/**
|
|
171
|
+
* Whether the card is clickable (adds hover effects and cursor pointer)
|
|
172
|
+
* @default false
|
|
173
|
+
*/
|
|
174
|
+
clickable = input(false, ...(ngDevMode ? [{ debugName: "clickable" }] : /* istanbul ignore next */ []));
|
|
175
|
+
/**
|
|
176
|
+
* Whether the card is disabled
|
|
177
|
+
* @default false
|
|
178
|
+
*/
|
|
179
|
+
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
180
|
+
// Animation state
|
|
181
|
+
hovered = signal(false, ...(ngDevMode ? [{ debugName: "hovered" }] : /* istanbul ignore next */ []));
|
|
182
|
+
liftState = computed(() => this.clickable() && this.hovered() && !this.disabled() ? 'lifted' : 'idle', ...(ngDevMode ? [{ debugName: "liftState" }] : /* istanbul ignore next */ []));
|
|
183
|
+
// Projected content queries and ARIA label linkage
|
|
184
|
+
headerCmp;
|
|
185
|
+
actionsCmp;
|
|
186
|
+
headerId = '';
|
|
187
|
+
// Computed classes
|
|
188
|
+
computedClasses = computed(() => {
|
|
189
|
+
const classes = [`fui-card--${this.variant()}`, `fui-card--padding-${this.padding()}`];
|
|
190
|
+
if (this.clickable()) {
|
|
191
|
+
classes.push('fui-card--clickable');
|
|
192
|
+
}
|
|
193
|
+
if (this.disabled()) {
|
|
194
|
+
classes.push('fui-card--disabled');
|
|
195
|
+
}
|
|
196
|
+
if (this.hovered()) {
|
|
197
|
+
classes.push('fui-card--hovered');
|
|
198
|
+
}
|
|
199
|
+
return classes.join(' ');
|
|
200
|
+
}, ...(ngDevMode ? [{ debugName: "computedClasses" }] : /* istanbul ignore next */ []));
|
|
201
|
+
onMouseEnter() {
|
|
202
|
+
if (this.clickable() && !this.disabled()) {
|
|
203
|
+
this.hovered.set(true);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
onMouseLeave() {
|
|
207
|
+
this.hovered.set(false);
|
|
208
|
+
}
|
|
209
|
+
onKeyDown(event) {
|
|
210
|
+
if (this.clickable() && !this.disabled() && (event.key === 'Enter' || event.key === ' ')) {
|
|
211
|
+
event.preventDefault();
|
|
212
|
+
event.target.click();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
onClick(event) {
|
|
216
|
+
if (this.disabled()) {
|
|
217
|
+
event.stopImmediatePropagation();
|
|
218
|
+
event.preventDefault();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
ngAfterContentInit() {
|
|
222
|
+
this.headerId = this.headerCmp ? this.headerCmp.hostId : '';
|
|
223
|
+
}
|
|
224
|
+
// Check if header content is projected
|
|
225
|
+
get hasHeader() {
|
|
226
|
+
return !!this.headerCmp;
|
|
227
|
+
}
|
|
228
|
+
// Check if actions content is projected
|
|
229
|
+
get hasActions() {
|
|
230
|
+
return !!this.actionsCmp;
|
|
231
|
+
}
|
|
232
|
+
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-font-size-01);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-text-xs);letter-spacing:.24px}.fui-text-sm{font-size:var(--fui-font-size-02);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-text-sm);letter-spacing:.56px}.fui-text-md{font-size:var(--fui-font-size-03);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-text-md)}.fui-text-lg{font-size:var(--fui-font-size-04);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-text-lg)}.fui-text-xl{font-size:var(--fui-font-size-05);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-text-xl)}.fui-display-xs{font-size:var(--fui-font-size-06);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-display-xs);letter-spacing:.48px}.fui-display-sm{font-size:var(--fui-font-size-07);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-display-sm)}.fui-display-md{font-size:var(--fui-font-size-08);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-display-md)}.fui-display-lg{font-size:var(--fui-font-size-09);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-display-lg)}.fui-display-xl{font-size:var(--fui-font-size-10);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-display-xl);letter-spacing:-1.2px}.fui-display-2xl{font-size:var(--fui-font-size-11);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-display-2xl);letter-spacing:-1.44px}.fui-code-01{font-family:var(--fui-font-family-mono);font-size:var(--fui-font-size-01);line-height:var(--fui-line-height-04)}.fui-code-02{font-family:var(--fui-font-family-mono);font-size:var(--fui-font-size-02);line-height:var(--fui-line-height-04)}.fui-font-light{font-weight:var(--fui-font-weight-light)}.fui-font-regular{font-weight:var(--fui-font-weight-regular)}.fui-font-medium{font-weight:var(--fui-font-weight-medium)}.fui-font-semibold{font-weight:var(--fui-font-weight-semibold)}.fui-font-bold{font-weight:var(--fui-font-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:opacity var(--fui-duration-fast-02) var(--fui-ease-entrance) 0ms}.fui-motion-fade-out{transition:opacity var(--fui-duration-fast-01) var(--fui-ease-exit) 0ms}.fui-motion-slide-in-bottom{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition:transform,opacity var(--fui-duration-moderate-01) var(--fui-ease-entrance) 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-moderate-01) var(--fui-ease-entrance)}.fui-card{--fui-card-bg: var(--fui-surface-00);--fui-card-border-color: var(--fui-border-color);--fui-card-header-padding: var(--fui-spacing-05) var(--fui-spacing-06);--fui-card-actions-gap: var(--fui-spacing-03);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-01);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);overflow:hidden;transition:box-shadow,transform,border-color var(--fui-duration-moderate-01) var(--fui-ease-standard) 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-color)}.fui-card--outlined.fui-card--hovered:not(.fui-card--disabled){border-color:var(--fui-border-color-strong)}.fui-card--flat{box-shadow:none;border:1px solid transparent}.fui-card--clickable{cursor:pointer;transition:transform var(--fui-duration-fast-02) var(--fui-ease-standard),box-shadow var(--fui-duration-fast-02) var(--fui-ease-standard)}.fui-card--clickable:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.fui-card--clickable:focus-visible{outline:2px solid var(--fui-primary);outline-offset:2px;transition:all var(--fui-duration-fast-02) var(--fui-ease-standard) 0ms}.fui-card--disabled{opacity:var(--fui-opacity-disabled);cursor:not-allowed}.fui-card--padding-none .fui-card__content{padding:0}.fui-card--padding-sm .fui-card__content{padding:var(--fui-spacing-04)}.fui-card--padding-md .fui-card__content{padding:var(--fui-spacing-05)}.fui-card--padding-lg .fui-card__content{padding:var(--fui-spacing-06)}.fui-card--padding-xl .fui-card__content{padding:var(--fui-spacing-07)}.fui-card__header{border-bottom:1px solid var(--fui-border-color);font-weight:var(--fui-font-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-03);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-05) var(--fui-spacing-06);display:flex;flex-direction:column;gap:var(--fui-spacing-02)}.fui-card-header__title{color:var(--fui-text-primary);margin:0}.fui-card-header__subtitle{font-size:var(--fui-font-size-02);font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-02);color:var(--fui-text-secondary);margin:0}.fui-card-header__content:empty{margin-top:0}.fui-card-actions{display:flex;gap:var(--fui-spacing-03);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-03)}@media(min-width:576px){.fui-card--padding-sm .fui-card__content{padding:var(--fui-spacing-02)}.fui-card--padding-md .fui-card__content{padding:var(--fui-spacing-04)}.fui-card--padding-lg .fui-card__content{padding:var(--fui-spacing-06)}.fui-card__actions{padding:0 var(--fui-spacing-04) var(--fui-spacing-04);gap:var(--fui-spacing-02);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-05)}.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
|
+
}
|
|
235
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiCardComponent, decorators: [{
|
|
236
|
+
type: Component,
|
|
237
|
+
args: [{ selector: 'fui-card', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
238
|
+
class: 'fui-card',
|
|
239
|
+
'[class]': 'computedClasses()',
|
|
240
|
+
'[attr.role]': 'clickable() ? "button" : "region"',
|
|
241
|
+
'[attr.tabindex]': 'clickable() && !disabled() ? "0" : null',
|
|
242
|
+
'[attr.aria-disabled]': 'disabled() ? "true" : null',
|
|
243
|
+
'[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-font-size-01);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-text-xs);letter-spacing:.24px}.fui-text-sm{font-size:var(--fui-font-size-02);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-text-sm);letter-spacing:.56px}.fui-text-md{font-size:var(--fui-font-size-03);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-text-md)}.fui-text-lg{font-size:var(--fui-font-size-04);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-text-lg)}.fui-text-xl{font-size:var(--fui-font-size-05);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-text-xl)}.fui-display-xs{font-size:var(--fui-font-size-06);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-display-xs);letter-spacing:.48px}.fui-display-sm{font-size:var(--fui-font-size-07);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-display-sm)}.fui-display-md{font-size:var(--fui-font-size-08);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-display-md)}.fui-display-lg{font-size:var(--fui-font-size-09);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-display-lg)}.fui-display-xl{font-size:var(--fui-font-size-10);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-display-xl);letter-spacing:-1.2px}.fui-display-2xl{font-size:var(--fui-font-size-11);font-style:normal;font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-display-2xl);letter-spacing:-1.44px}.fui-code-01{font-family:var(--fui-font-family-mono);font-size:var(--fui-font-size-01);line-height:var(--fui-line-height-04)}.fui-code-02{font-family:var(--fui-font-family-mono);font-size:var(--fui-font-size-02);line-height:var(--fui-line-height-04)}.fui-font-light{font-weight:var(--fui-font-weight-light)}.fui-font-regular{font-weight:var(--fui-font-weight-regular)}.fui-font-medium{font-weight:var(--fui-font-weight-medium)}.fui-font-semibold{font-weight:var(--fui-font-weight-semibold)}.fui-font-bold{font-weight:var(--fui-font-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:opacity var(--fui-duration-fast-02) var(--fui-ease-entrance) 0ms}.fui-motion-fade-out{transition:opacity var(--fui-duration-fast-01) var(--fui-ease-exit) 0ms}.fui-motion-slide-in-bottom{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition:transform,opacity var(--fui-duration-moderate-01) var(--fui-ease-entrance) 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-moderate-01) var(--fui-ease-entrance)}.fui-card{--fui-card-bg: var(--fui-surface-00);--fui-card-border-color: var(--fui-border-color);--fui-card-header-padding: var(--fui-spacing-05) var(--fui-spacing-06);--fui-card-actions-gap: var(--fui-spacing-03);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-01);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);overflow:hidden;transition:box-shadow,transform,border-color var(--fui-duration-moderate-01) var(--fui-ease-standard) 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-color)}.fui-card--outlined.fui-card--hovered:not(.fui-card--disabled){border-color:var(--fui-border-color-strong)}.fui-card--flat{box-shadow:none;border:1px solid transparent}.fui-card--clickable{cursor:pointer;transition:transform var(--fui-duration-fast-02) var(--fui-ease-standard),box-shadow var(--fui-duration-fast-02) var(--fui-ease-standard)}.fui-card--clickable:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.fui-card--clickable:focus-visible{outline:2px solid var(--fui-primary);outline-offset:2px;transition:all var(--fui-duration-fast-02) var(--fui-ease-standard) 0ms}.fui-card--disabled{opacity:var(--fui-opacity-disabled);cursor:not-allowed}.fui-card--padding-none .fui-card__content{padding:0}.fui-card--padding-sm .fui-card__content{padding:var(--fui-spacing-04)}.fui-card--padding-md .fui-card__content{padding:var(--fui-spacing-05)}.fui-card--padding-lg .fui-card__content{padding:var(--fui-spacing-06)}.fui-card--padding-xl .fui-card__content{padding:var(--fui-spacing-07)}.fui-card__header{border-bottom:1px solid var(--fui-border-color);font-weight:var(--fui-font-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-03);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-05) var(--fui-spacing-06);display:flex;flex-direction:column;gap:var(--fui-spacing-02)}.fui-card-header__title{color:var(--fui-text-primary);margin:0}.fui-card-header__subtitle{font-size:var(--fui-font-size-02);font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-02);color:var(--fui-text-secondary);margin:0}.fui-card-header__content:empty{margin-top:0}.fui-card-actions{display:flex;gap:var(--fui-spacing-03);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-03)}@media(min-width:576px){.fui-card--padding-sm .fui-card__content{padding:var(--fui-spacing-02)}.fui-card--padding-md .fui-card__content{padding:var(--fui-spacing-04)}.fui-card--padding-lg .fui-card__content{padding:var(--fui-spacing-06)}.fui-card__actions{padding:0 var(--fui-spacing-04) var(--fui-spacing-04);gap:var(--fui-spacing-02);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-05)}.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
|
+
}], 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
|
+
type: ContentChild,
|
|
247
|
+
args: [FuiCardHeaderComponent]
|
|
248
|
+
}], actionsCmp: [{
|
|
249
|
+
type: ContentChild,
|
|
250
|
+
args: [FuiCardActionsComponent]
|
|
251
|
+
}], onMouseEnter: [{
|
|
252
|
+
type: HostListener,
|
|
253
|
+
args: ['mouseenter']
|
|
254
|
+
}], onMouseLeave: [{
|
|
255
|
+
type: HostListener,
|
|
256
|
+
args: ['mouseleave']
|
|
257
|
+
}], onKeyDown: [{
|
|
258
|
+
type: HostListener,
|
|
259
|
+
args: ['keydown', ['$event']]
|
|
260
|
+
}], onClick: [{
|
|
261
|
+
type: HostListener,
|
|
262
|
+
args: ['click', ['$event']]
|
|
263
|
+
}] } });
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Generated bundle index. Do not edit.
|
|
267
|
+
*/
|
|
268
|
+
|
|
269
|
+
export { FuiCardActionsComponent, FuiCardComponent, FuiCardHeaderComponent };
|
|
270
|
+
//# sourceMappingURL=raintonic-formaui-components-card.mjs.map
|
|
@@ -0,0 +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';\n\n/**\n * # FuiCardHeader Component\n *\n * Header section for cards with optional title, subtitle, and additional content.\n *\n * ## Usage\n * ```html\n * <fui-card-header title=\"Card Title\" subtitle=\"Optional subtitle\">\n * <button fuiButton variant=\"ghost\">\n * <fui-icon name=\"dots-three\"></fui-icon>\n * </button>\n * </fui-card-header>\n * ```\n */\n@Component({\n selector: 'fui-card-header',\n standalone: true,\n imports: [],\n templateUrl: './card-header.component.html',\n host: {\n class: 'fui-card-header',\n },\n})\nexport class FuiCardHeaderComponent {\n /**\n * Unique id for linking with aria-labelledby from the card\n */\n readonly hostId = `fui-card-header-${Math.random().toString(36).slice(2)}`;\n\n /**\n * Main title text for the card header\n */\n readonly title: InputSignal<string | undefined> = input<string>();\n\n /**\n * Optional subtitle text for the card header\n */\n readonly subtitle: InputSignal<string | undefined> = input<string>();\n}\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 class=\"fui-card-header__content\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Component, input, InputSignal } from '@angular/core';\n\n/**\n * # FuiCardActions Component\n *\n * Actions section for cards, typically containing buttons or other interactive elements.\n *\n * ## Usage\n * ```html\n * <fui-card-actions align=\"end\">\n * <button fuiButton variant=\"tertiary\">Cancel</button>\n * <button fuiButton variant=\"primary\" color=\"primary\">Save</button>\n * </fui-card-actions>\n * ```\n *\n * ### Paddingless Actions\n * ```html\n * <fui-card-actions align=\"start\" paddingless=\"true\">\n * <button fuiButton variant=\"ghost\">\n * <fui-icon name=\"heart\"></fui-icon>\n * </button>\n * </fui-card-actions>\n * ```\n */\n@Component({\n selector: 'fui-card-actions',\n standalone: true,\n templateUrl: './card-actions.component.html',\n host: {\n class: 'fui-card-actions',\n '[class.fui-card-actions--align-start]': 'align() === \"start\"',\n '[class.fui-card-actions--align-center]': 'align() === \"center\"',\n '[class.fui-card-actions--align-end]': 'align() === \"end\"',\n '[class.fui-card-actions--paddingless]': 'paddingless()',\n },\n})\nexport class FuiCardActionsComponent {\n /**\n * Alignment of actions within the container\n * @default 'end'\n */\n readonly align: InputSignal<'start' | 'center' | 'end'> = input<'start' | 'center' | 'end'>('end');\n\n /**\n * Whether to remove padding from the actions container\n * @default false\n */\n readonly paddingless: InputSignal<boolean> = input(false);\n}\n","<ng-content></ng-content>\r\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n HostListener,\n input,\n InputSignal,\n Signal,\n signal,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\n\nimport { FuiCardHeaderComponent } from './card-header.component';\nimport { FuiCardActionsComponent } from './card-actions.component';\n\n/**\n * Available card variants following Carbon Design System patterns\n */\nexport type FuiCardVariant = 'elevated' | 'outlined' | 'flat';\n\n/**\n * Available padding options for card content\n */\nexport type FuiCardPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * # FuiCard Component\n *\n * A flexible container component following Carbon Design System patterns.\n * Provides a structured layout with optional header, content, and actions sections.\n *\n * ## Features\n * - Multiple variants: elevated, outlined, flat\n * - Configurable padding: none, sm, md, lg, xl\n * - Structured content areas: header, content, actions\n * - Clickable state support with hover animations\n * - Disabled state support\n * - Full accessibility support\n * - Smooth motion transitions\n *\n * ## Usage\n *\n * ### Basic Card\n * ```html\n * <fui-card>\n * <p>Card content goes here</p>\n * </fui-card>\n * ```\n *\n * ### Card with Header and Actions\n * ```html\n * <fui-card variant=\"outlined\">\n * <fui-card-header title=\"Card Title\" subtitle=\"Optional subtitle\">\n * <button fuiButton variant=\"ghost\" size=\"sm\" [iconOnly]=\"true\">\n * <fui-icon name=\"overflow-menu-vertical\"></fui-icon>\n * </button>\n * </fui-card-header>\n *\n * <p>Main card content</p>\n *\n * <fui-card-actions align=\"end\">\n * <button fuiButton variant=\"secondary\" kind=\"ghost\">Cancel</button>\n * <button fuiButton variant=\"primary\">Save</button>\n * </fui-card-actions>\n * </fui-card>\n * ```\n *\n * ### Clickable Card\n * ```html\n * <fui-card [clickable]=\"true\" (click)=\"handleCardClick()\">\n * <p>This entire card is clickable</p>\n * </fui-card>\n * ```\n *\n * @example\n * ```typescript\n * import { FuiCardComponent, FuiCardHeaderComponent, FuiCardActionsComponent } from '@raintonic/formaui/components/card';\n *\n * @Component({\n * standalone: true,\n * imports: [FuiCardComponent, FuiCardHeaderComponent, FuiCardActionsComponent],\n * template: `\n * <fui-card variant=\"elevated\" padding=\"lg\">\n * <fui-card-header title=\"User Profile\"></fui-card-header>\n * <div class=\"user-info\">\n * <p>User details here...</p>\n * </div>\n * <fui-card-actions>\n * <button fuiButton>Edit</button>\n * </fui-card-actions>\n * </fui-card>\n * `\n * })\n * export class UserCardComponent {}\n * ```\n */\n@Component({\n selector: 'fui-card',\n standalone: true,\n imports: [],\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'fui-card',\n '[class]': 'computedClasses()',\n '[attr.role]': 'clickable() ? \"button\" : \"region\"',\n '[attr.tabindex]': 'clickable() && !disabled() ? \"0\" : null',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.aria-labelledby]': 'headerId',\n },\n})\nexport class FuiCardComponent implements AfterContentInit {\n /**\n * Card variant that determines the visual style\n * @default 'outlined'\n */\n readonly variant: InputSignal<FuiCardVariant> = input<FuiCardVariant>('outlined');\n\n /**\n * Padding applied to card content\n * @default 'lg'\n */\n readonly padding: InputSignal<FuiCardPadding> = input<FuiCardPadding>('lg');\n\n /**\n * Whether the card is clickable (adds hover effects and cursor pointer)\n * @default false\n */\n readonly clickable: InputSignal<boolean> = input(false);\n\n /**\n * Whether the card is disabled\n * @default false\n */\n readonly disabled: InputSignal<boolean> = input(false);\n\n // Animation state\n readonly hovered: WritableSignal<boolean> = signal(false);\n readonly liftState: Signal<'idle' | 'lifted'> = computed(() =>\n this.clickable() && this.hovered() && !this.disabled() ? 'lifted' : 'idle',\n );\n\n // Projected content queries and ARIA label linkage\n @ContentChild(FuiCardHeaderComponent) headerCmp?: FuiCardHeaderComponent;\n @ContentChild(FuiCardActionsComponent) actionsCmp?: FuiCardActionsComponent;\n\n headerId = '';\n\n // Computed classes\n readonly computedClasses: Signal<string> = computed(() => {\n const classes: string[] = [`fui-card--${this.variant()}`, `fui-card--padding-${this.padding()}`];\n\n if (this.clickable()) {\n classes.push('fui-card--clickable');\n }\n\n if (this.disabled()) {\n classes.push('fui-card--disabled');\n }\n\n if (this.hovered()) {\n classes.push('fui-card--hovered');\n }\n\n return classes.join(' ');\n });\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n if (this.clickable() && !this.disabled()) {\n this.hovered.set(true);\n }\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.hovered.set(false);\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n if (this.clickable() && !this.disabled() && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n (event.target as HTMLElement).click();\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n }\n\n ngAfterContentInit(): void {\n this.headerId = this.headerCmp ? this.headerCmp.hostId : '';\n }\n\n // Check if header content is projected\n get hasHeader(): boolean {\n return !!this.headerCmp;\n }\n\n // Check if actions content is projected\n get hasActions(): boolean {\n return !!this.actionsCmp;\n }\n}\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":";;;AAEA;;;;;;;;;;;;;AAaG;MAUU,sBAAsB,CAAA;AACjC;;AAEG;AACM,IAAA,MAAM,GAAG,CAAA,gBAAA,EAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAE1E;;AAEG;IACM,KAAK,GAAoC,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAEjE;;AAEG;IACM,QAAQ,GAAoC,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;uGAdzD,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,6XCzBnC,+TAaA,EAAA,CAAA;;2FDYa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBATlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,IAAA,EAEL;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACzB,qBAAA,EAAA,QAAA,EAAA,+TAAA,EAAA;;;AErBH;;;;;;;;;;;;;;;;;;;;;AAqBG;MAaU,uBAAuB,CAAA;AAClC;;;AAGG;AACM,IAAA,KAAK,GAA4C,KAAK,CAA6B,KAAK,4EAAC;AAElG;;;AAGG;AACM,IAAA,WAAW,GAAyB,KAAK,CAAC,KAAK,kFAAC;uGAX9C,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,8oBCpCpC,+BACA,EAAA,CAAA;;2FDmCa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAZnC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,IAAA,EAEV;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,uCAAuC,EAAE,qBAAqB;AAC9D,wBAAA,wCAAwC,EAAE,sBAAsB;AAChE,wBAAA,qCAAqC,EAAE,mBAAmB;AAC1D,wBAAA,uCAAuC,EAAE,eAAe;AACzD,qBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA;;;AENH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsEG;MAkBU,gBAAgB,CAAA;AAC3B;;;AAGG;AACM,IAAA,OAAO,GAAgC,KAAK,CAAiB,UAAU,8EAAC;AAEjF;;;AAGG;AACM,IAAA,OAAO,GAAgC,KAAK,CAAiB,IAAI,8EAAC;AAE3E;;;AAGG;AACM,IAAA,SAAS,GAAyB,KAAK,CAAC,KAAK,gFAAC;AAEvD;;;AAGG;AACM,IAAA,QAAQ,GAAyB,KAAK,CAAC,KAAK,+EAAC;;AAG7C,IAAA,OAAO,GAA4B,MAAM,CAAC,KAAK,8EAAC;AAChD,IAAA,SAAS,GAA8B,QAAQ,CAAC,MACvD,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,QAAQ,GAAG,MAAM,gFAC3E;;AAGqC,IAAA,SAAS;AACR,IAAA,UAAU;IAEjD,QAAQ,GAAG,EAAE;;AAGJ,IAAA,eAAe,GAAmB,QAAQ,CAAC,MAAK;AACvD,QAAA,MAAM,OAAO,GAAa,CAAC,CAAA,UAAA,EAAa,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,EAAE,qBAAqB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;AAEhG,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,YAAA,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC;QACrC;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC;QACpC;AAEA,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,YAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACnC;AAEA,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAA,CAAC,sFAAC;IAGF,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACxC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB;IACF;IAGA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;YACxF,KAAK,CAAC,cAAc,EAAE;AACrB,YAAA,KAAK,CAAC,MAAsB,CAAC,KAAK,EAAE;QACvC;IACF;AAGA,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,KAAK,CAAC,wBAAwB,EAAE;YAChC,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE;IAC7D;;AAGA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS;IACzB;;AAGA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU;IAC1B;uGAhGW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,uCAAA,EAAA,eAAA,EAAA,2CAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgCb,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACtB,uBAAuB,gDCrJvC,2cAeA,EAAA,MAAA,EAAA,CAAA,6nQAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FDqGa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAjB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,UAAA,EACR,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,UAAU;AACjB,wBAAA,SAAS,EAAE,mBAAmB;AAC9B,wBAAA,aAAa,EAAE,mCAAmC;AAClD,wBAAA,iBAAiB,EAAE,yCAAyC;AAC5D,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,wBAAwB,EAAE,UAAU;AACrC,qBAAA,EAAA,QAAA,EAAA,2cAAA,EAAA,MAAA,EAAA,CAAA,6nQAAA,CAAA,EAAA;;sBAkCA,YAAY;uBAAC,sBAAsB;;sBACnC,YAAY;uBAAC,uBAAuB;;sBAuBpC,YAAY;uBAAC,YAAY;;sBAOzB,YAAY;uBAAC,YAAY;;sBAKzB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;sBAQlC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;AEhMnC;;AAEG;;;;"}
|