@fuse_ui/card 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,47 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, output, signal, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+
4
+ class FuseCardComponent {
5
+ // ─── Public @Input() API ────────────────────────────────────────────────────
6
+ variant = input('elevated', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
7
+ clickable = input(false, ...(ngDevMode ? [{ debugName: "clickable" }] : /* istanbul ignore next */ []));
8
+ padding = input('md', ...(ngDevMode ? [{ debugName: "padding" }] : /* istanbul ignore next */ []));
9
+ // ─── Public @Output() API ───────────────────────────────────────────────────
10
+ cardClick = output();
11
+ // ─── Internal signal state ──────────────────────────────────────────────────
12
+ hovered = signal(false, ...(ngDevMode ? [{ debugName: "hovered" }] : /* istanbul ignore next */ []));
13
+ // ─── Host class computation ─────────────────────────────────────────────────
14
+ hostClasses = computed(() => [
15
+ 'fuse-card',
16
+ `fuse-card--${this.variant()}`,
17
+ `fuse-card--padding-${this.padding()}`,
18
+ this.clickable() ? 'fuse-card--clickable' : '',
19
+ this.hovered() && this.clickable() ? 'fuse-card--hovered' : '',
20
+ ]
21
+ .filter(Boolean)
22
+ .join(' '), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
23
+ // ─── Event handler ──────────────────────────────────────────────────────────
24
+ onCardClick(event) {
25
+ if (this.clickable()) {
26
+ this.cardClick.emit(event);
27
+ }
28
+ }
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuseCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: FuseCardComponent, isStandalone: true, selector: "fuse-card", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cardClick: "cardClick" }, host: { listeners: { "click": "onCardClick($event)", "mouseenter": "hovered.set(true)", "mouseleave": "hovered.set(false)" }, properties: { "class": "hostClasses()" } }, ngImport: i0, template: "<!-- Slot-based layout \u2014 wrappers hidden via :empty CSS when slot is unused -->\n<div class=\"fuse-card__header\">\n <ng-content select=\"[fuseCardHeader]\"></ng-content>\n</div>\n\n<div class=\"fuse-card__body\">\n <ng-content select=\"[fuseCardBody]\"></ng-content>\n</div>\n\n<div class=\"fuse-card__footer\">\n <ng-content select=\"[fuseCardFooter]\"></ng-content>\n</div>\n\n<!-- Default slot for unslotted content -->\n<ng-content></ng-content>\n", styles: [":host{--fuse-card-bg: var(--fuse-color-surface, #ffffff);--fuse-card-radius: var(--fuse-radius-lg, 12px);--fuse-card-border-color: var(--fuse-color-border, #e2e8f0);--fuse-card-border-width: 1px;--fuse-card-shadow-elevated: var(--fuse-shadow-md, 0 4px 16px rgba(0, 0, 0, .08));--fuse-card-shadow-hover: var(--fuse-shadow-lg, 0 8px 24px rgba(0, 0, 0, .12));--fuse-card-shadow-flat: none;--fuse-card-padding-none: 0;--fuse-card-padding-sm: var(--fuse-space-3, .75rem);--fuse-card-padding-md: var(--fuse-space-5, 1.25rem);--fuse-card-padding-lg: var(--fuse-space-7, 1.75rem);--fuse-card-header-border: var(--fuse-color-border, #e2e8f0);--fuse-card-footer-border: var(--fuse-color-border, #e2e8f0);--fuse-card-transition: box-shadow .2s ease, transform .2s ease;display:block}.fuse-card{background-color:var(--fuse-card-bg);border-radius:var(--fuse-card-radius);overflow:hidden;transition:var(--fuse-card-transition)}.fuse-card--elevated{box-shadow:var(--fuse-card-shadow-elevated);border:none}.fuse-card--flat{box-shadow:var(--fuse-card-shadow-flat);border:none;background-color:var(--fuse-color-surface-muted, #f8fafc)}.fuse-card--outlined{box-shadow:none;border:var(--fuse-card-border-width) solid var(--fuse-card-border-color)}.fuse-card--padding-none .fuse-card__header,.fuse-card--padding-none .fuse-card__body,.fuse-card--padding-none .fuse-card__footer{padding:var(--fuse-card-padding-none)}.fuse-card--padding-sm .fuse-card__header,.fuse-card--padding-sm .fuse-card__body,.fuse-card--padding-sm .fuse-card__footer{padding:var(--fuse-card-padding-sm)}.fuse-card--padding-md .fuse-card__header,.fuse-card--padding-md .fuse-card__body,.fuse-card--padding-md .fuse-card__footer{padding:var(--fuse-card-padding-md)}.fuse-card--padding-lg .fuse-card__header,.fuse-card--padding-lg .fuse-card__body,.fuse-card--padding-lg .fuse-card__footer{padding:var(--fuse-card-padding-lg)}.fuse-card--clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.fuse-card--hovered.fuse-card--elevated{box-shadow:var(--fuse-card-shadow-hover);transform:translateY(-2px)}.fuse-card--hovered.fuse-card--outlined{border-color:var(--fuse-color-primary, #6366f1)}.fuse-card__header:empty{display:none}.fuse-card__body:empty{display:none}.fuse-card__footer{border-top:none}.fuse-card__footer:not(:empty){border-top:var(--fuse-card-border-width) solid var(--fuse-card-footer-border)}.fuse-card__footer:empty{display:none}.fuse-card__header:not(:empty)~.fuse-card__body:not(:empty){border-top:var(--fuse-card-border-width) solid var(--fuse-card-header-border)}:host-context(.ios){--fuse-card-radius: var(--fuse-radius-xl, 16px);--fuse-card-shadow-elevated: var(--fuse-shadow-sm, 0 2px 8px rgba(0, 0, 0, .06))}:host-context(.md){--fuse-card-radius: var(--fuse-radius-md, 8px)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuseCardComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'fuse-card', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
35
+ '[class]': 'hostClasses()',
36
+ '(click)': 'onCardClick($event)',
37
+ '(mouseenter)': 'hovered.set(true)',
38
+ '(mouseleave)': 'hovered.set(false)',
39
+ }, template: "<!-- Slot-based layout \u2014 wrappers hidden via :empty CSS when slot is unused -->\n<div class=\"fuse-card__header\">\n <ng-content select=\"[fuseCardHeader]\"></ng-content>\n</div>\n\n<div class=\"fuse-card__body\">\n <ng-content select=\"[fuseCardBody]\"></ng-content>\n</div>\n\n<div class=\"fuse-card__footer\">\n <ng-content select=\"[fuseCardFooter]\"></ng-content>\n</div>\n\n<!-- Default slot for unslotted content -->\n<ng-content></ng-content>\n", styles: [":host{--fuse-card-bg: var(--fuse-color-surface, #ffffff);--fuse-card-radius: var(--fuse-radius-lg, 12px);--fuse-card-border-color: var(--fuse-color-border, #e2e8f0);--fuse-card-border-width: 1px;--fuse-card-shadow-elevated: var(--fuse-shadow-md, 0 4px 16px rgba(0, 0, 0, .08));--fuse-card-shadow-hover: var(--fuse-shadow-lg, 0 8px 24px rgba(0, 0, 0, .12));--fuse-card-shadow-flat: none;--fuse-card-padding-none: 0;--fuse-card-padding-sm: var(--fuse-space-3, .75rem);--fuse-card-padding-md: var(--fuse-space-5, 1.25rem);--fuse-card-padding-lg: var(--fuse-space-7, 1.75rem);--fuse-card-header-border: var(--fuse-color-border, #e2e8f0);--fuse-card-footer-border: var(--fuse-color-border, #e2e8f0);--fuse-card-transition: box-shadow .2s ease, transform .2s ease;display:block}.fuse-card{background-color:var(--fuse-card-bg);border-radius:var(--fuse-card-radius);overflow:hidden;transition:var(--fuse-card-transition)}.fuse-card--elevated{box-shadow:var(--fuse-card-shadow-elevated);border:none}.fuse-card--flat{box-shadow:var(--fuse-card-shadow-flat);border:none;background-color:var(--fuse-color-surface-muted, #f8fafc)}.fuse-card--outlined{box-shadow:none;border:var(--fuse-card-border-width) solid var(--fuse-card-border-color)}.fuse-card--padding-none .fuse-card__header,.fuse-card--padding-none .fuse-card__body,.fuse-card--padding-none .fuse-card__footer{padding:var(--fuse-card-padding-none)}.fuse-card--padding-sm .fuse-card__header,.fuse-card--padding-sm .fuse-card__body,.fuse-card--padding-sm .fuse-card__footer{padding:var(--fuse-card-padding-sm)}.fuse-card--padding-md .fuse-card__header,.fuse-card--padding-md .fuse-card__body,.fuse-card--padding-md .fuse-card__footer{padding:var(--fuse-card-padding-md)}.fuse-card--padding-lg .fuse-card__header,.fuse-card--padding-lg .fuse-card__body,.fuse-card--padding-lg .fuse-card__footer{padding:var(--fuse-card-padding-lg)}.fuse-card--clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.fuse-card--hovered.fuse-card--elevated{box-shadow:var(--fuse-card-shadow-hover);transform:translateY(-2px)}.fuse-card--hovered.fuse-card--outlined{border-color:var(--fuse-color-primary, #6366f1)}.fuse-card__header:empty{display:none}.fuse-card__body:empty{display:none}.fuse-card__footer{border-top:none}.fuse-card__footer:not(:empty){border-top:var(--fuse-card-border-width) solid var(--fuse-card-footer-border)}.fuse-card__footer:empty{display:none}.fuse-card__header:not(:empty)~.fuse-card__body:not(:empty){border-top:var(--fuse-card-border-width) solid var(--fuse-card-header-border)}:host-context(.ios){--fuse-card-radius: var(--fuse-radius-xl, 16px);--fuse-card-shadow-elevated: var(--fuse-shadow-sm, 0 2px 8px rgba(0, 0, 0, .06))}:host-context(.md){--fuse-card-radius: var(--fuse-radius-md, 8px)}\n"] }]
40
+ }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }], cardClick: [{ type: i0.Output, args: ["cardClick"] }] } });
41
+
42
+ /**
43
+ * Generated bundle index. Do not edit.
44
+ */
45
+
46
+ export { FuseCardComponent };
47
+ //# sourceMappingURL=fuse_ui-card.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuse_ui-card.mjs","sources":["../../../../packages/card/src/lib/card/fuse-card.component.ts","../../../../packages/card/src/lib/card/fuse-card.component.html","../../../../packages/card/src/fuse_ui-card.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n output,\n signal,\n input,\n} from '@angular/core';\n\n@Component({\n selector: 'fuse-card',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './fuse-card.component.html',\n styleUrl: './fuse-card.component.scss',\n host: {\n '[class]': 'hostClasses()',\n '(click)': 'onCardClick($event)',\n '(mouseenter)': 'hovered.set(true)',\n '(mouseleave)': 'hovered.set(false)',\n },\n})\nexport class FuseCardComponent {\n // ─── Public @Input() API ────────────────────────────────────────────────────\n\n readonly variant = input<'flat' | 'elevated' | 'outlined'>('elevated');\n readonly clickable = input(false);\n readonly padding = input<'none' | 'sm' | 'md' | 'lg'>('md');\n\n // ─── Public @Output() API ───────────────────────────────────────────────────\n\n readonly cardClick = output<MouseEvent>();\n\n // ─── Internal signal state ──────────────────────────────────────────────────\n\n protected readonly hovered = signal(false);\n\n // ─── Host class computation ─────────────────────────────────────────────────\n\n protected readonly hostClasses = computed(() =>\n [\n 'fuse-card',\n `fuse-card--${this.variant()}`,\n `fuse-card--padding-${this.padding()}`,\n this.clickable() ? 'fuse-card--clickable' : '',\n this.hovered() && this.clickable() ? 'fuse-card--hovered' : '',\n ]\n .filter(Boolean)\n .join(' ')\n );\n\n // ─── Event handler ──────────────────────────────────────────────────────────\n\n onCardClick(event: MouseEvent): void {\n if (this.clickable()) {\n this.cardClick.emit(event);\n }\n }\n}\n","<!-- Slot-based layout — wrappers hidden via :empty CSS when slot is unused -->\n<div class=\"fuse-card__header\">\n <ng-content select=\"[fuseCardHeader]\"></ng-content>\n</div>\n\n<div class=\"fuse-card__body\">\n <ng-content select=\"[fuseCardBody]\"></ng-content>\n</div>\n\n<div class=\"fuse-card__footer\">\n <ng-content select=\"[fuseCardFooter]\"></ng-content>\n</div>\n\n<!-- Default slot for unslotted content -->\n<ng-content></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAsBa,iBAAiB,CAAA;;AAGnB,IAAA,OAAO,GAAG,KAAK,CAAmC,UAAU,8EAAC;AAC7D,IAAA,SAAS,GAAG,KAAK,CAAC,KAAK,gFAAC;AACxB,IAAA,OAAO,GAAG,KAAK,CAA8B,IAAI,8EAAC;;IAIlD,SAAS,GAAG,MAAM,EAAc;;AAItB,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;;AAIvB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC;QACE,WAAW;AACX,QAAA,CAAA,WAAA,EAAc,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE;AAC9B,QAAA,CAAA,mBAAA,EAAsB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE;QACtC,IAAI,CAAC,SAAS,EAAE,GAAG,sBAAsB,GAAG,EAAE;AAC9C,QAAA,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,oBAAoB,GAAG,EAAE;AAC/D;SACE,MAAM,CAAC,OAAO;AACd,SAAA,IAAI,CAAC,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACb;;AAID,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B;IACF;uGAnCW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,gqBCtB9B,8cAeA,EAAA,MAAA,EAAA,CAAA,2sFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDOa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cACT,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,IAAA,EAGzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,SAAS,EAAE,qBAAqB;AAChC,wBAAA,cAAc,EAAE,mBAAmB;AACnC,wBAAA,cAAc,EAAE,oBAAoB;AACrC,qBAAA,EAAA,QAAA,EAAA,8cAAA,EAAA,MAAA,EAAA,CAAA,2sFAAA,CAAA,EAAA;;;AEpBH;;AAEG;;;;"}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@fuse_ui/card",
3
+ "version": "0.0.1",
4
+ "license": "MIT",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "keywords": [
9
+ "fuse-ui",
10
+ "angular",
11
+ "ionic",
12
+ "ionic8",
13
+ "angular18",
14
+ "angular19",
15
+ "angular20",
16
+ "angular21",
17
+ "ui-components",
18
+ "design-system",
19
+ "css-variables",
20
+ "signals",
21
+ "standalone",
22
+ "multi-theme",
23
+ "dark-mode",
24
+ "fluid-typography",
25
+ "animated"
26
+ ],
27
+ "peerDependencies": {
28
+ "@angular/core": ">=18.0.0",
29
+ "@angular/common": ">=18.0.0",
30
+ "rxjs": ">=7.4.0"
31
+ },
32
+ "peerDependenciesMeta": {
33
+ "@ionic/angular": {
34
+ "optional": true
35
+ }
36
+ },
37
+ "sideEffects": [
38
+ "*.css",
39
+ "**/*.scss"
40
+ ],
41
+ "engines": {
42
+ "node": ">=20.0.0"
43
+ },
44
+ "module": "fesm2022/fuse_ui-card.mjs",
45
+ "typings": "types/fuse_ui-card.d.ts",
46
+ "exports": {
47
+ "./package.json": {
48
+ "default": "./package.json"
49
+ },
50
+ ".": {
51
+ "types": "./types/fuse_ui-card.d.ts",
52
+ "default": "./fesm2022/fuse_ui-card.mjs"
53
+ }
54
+ },
55
+ "type": "module",
56
+ "dependencies": {
57
+ "tslib": "^2.3.0"
58
+ }
59
+ }
@@ -0,0 +1,15 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ declare class FuseCardComponent {
4
+ readonly variant: _angular_core.InputSignal<"flat" | "elevated" | "outlined">;
5
+ readonly clickable: _angular_core.InputSignal<boolean>;
6
+ readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | "lg">;
7
+ readonly cardClick: _angular_core.OutputEmitterRef<MouseEvent>;
8
+ protected readonly hovered: _angular_core.WritableSignal<boolean>;
9
+ protected readonly hostClasses: _angular_core.Signal<string>;
10
+ onCardClick(event: MouseEvent): void;
11
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuseCardComponent, never>;
12
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuseCardComponent, "fuse-card", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; }, { "cardClick": "cardClick"; }, never, ["[fuseCardHeader]", "[fuseCardBody]", "[fuseCardFooter]", "*"], true, never>;
13
+ }
14
+
15
+ export { FuseCardComponent };