@3ddv/software-division-components 2.1.0 → 2.1.2
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/fesm2022/3ddv-software-division-components-dvm-map-loader.mjs +9 -26
- package/fesm2022/3ddv-software-division-components-dvm-map-loader.mjs.map +1 -1
- package/fesm2022/3ddv-software-division-components-dvm-neighbors.mjs +25 -41
- package/fesm2022/3ddv-software-division-components-dvm-neighbors.mjs.map +1 -1
- package/fesm2022/3ddv-software-division-components-generic-button.mjs +3 -2
- package/fesm2022/3ddv-software-division-components-generic-button.mjs.map +1 -1
- package/fesm2022/3ddv-software-division-components-generic-icon.mjs +19 -45
- package/fesm2022/3ddv-software-division-components-generic-icon.mjs.map +1 -1
- package/fesm2022/3ddv-software-division-components-generic-tooltip.mjs +1 -1
- package/fesm2022/3ddv-software-division-components-generic-tooltip.mjs.map +1 -1
- package/package.json +1 -1
- package/shared/themes/sdc.css +119 -16
- package/styles.css +1 -1
- package/types/3ddv-software-division-components-dvm-map-loader.d.ts +3 -3
- package/types/3ddv-software-division-components-dvm-neighbors.d.ts +10 -15
- package/types/3ddv-software-division-components-generic-button.d.ts +2 -1
- package/types/3ddv-software-division-components-generic-icon.d.ts +2 -8
|
@@ -94,6 +94,7 @@ const BUTTON_VARIANTS = {
|
|
|
94
94
|
'warning-light': 'warning-light',
|
|
95
95
|
'destructive-light': 'destructive-light',
|
|
96
96
|
'outline-white': 'outline-white',
|
|
97
|
+
'outline-brand': 'outline-brand',
|
|
97
98
|
'outline-alternative': 'outline-alternative',
|
|
98
99
|
'outline-accent': 'outline-accent',
|
|
99
100
|
link: 'link',
|
|
@@ -366,11 +367,11 @@ class ButtonComponent {
|
|
|
366
367
|
}, 600);
|
|
367
368
|
}
|
|
368
369
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ButtonComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
369
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: ButtonComponent, isStandalone: true, selector: "sdc-button", inputs: { theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, ripple: { classPropertyName: "ripple", publicName: "ripple", isSignal: true, isRequired: false, transformFunction: null }, debounce: { classPropertyName: "debounce", publicName: "debounce", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur", isDebounced: "isDebounced" }, host: { listeners: { "click": "onHostClick($event)" } }, ngImport: i0, template: "<button\n hlmBtn\n [class]=\"computedClass()\"\n [disabled]=\"disabled() || debounceState()\"\n (click)=\"handleClick($event); createRipple($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [type]=\"type()\">\n <ng-content></ng-content>\n</button>\n", styles: [".sdc-button{--sdc-button-ripple-color: var(--color-neutral-300);--sdc-button-text-color: var(--color-pure-white);--sdc-button-text-size: var(--text-base);--sdc-button-text-weight: var(--font-medium);--sdc-button-background: var(--color-primary);--sdc-button-padding: var(--space-2) var(--space-7);--sdc-button-border-color: var(--color-primary);--sdc-button-border-radius: var(--radius-full);--sdc-button-border-width: var(--border-0);--sdc-button-height: 100%;--sdc-button-width: 100%;position:relative;overflow:hidden;cursor:pointer;color:var(--sdc-button-text-color);font-size:var(--sdc-button-text-size);font-weight:var(--sdc-button-text-weight);background:var(--sdc-button-background);padding:var(--sdc-button-padding);border-color:var(--sdc-button-border-color);border-radius:var(--sdc-button-border-radius);border-width:var(--sdc-button-border-width);height:var(--sdc-button-height);width:var(--sdc-button-width)}.sdc-button[disabled]{cursor:not-allowed;opacity:.6;transition:opacity .2s ease-in-out}.sdc-button:not([disabled]){transition:all .2s ease-in-out}.sdc-button:not([disabled]):hover{transform:translateY(-1px);box-shadow:0 4px 8px #0000001a}.sdc-button:not([disabled]):focus{outline:none}.sdc-button:not([disabled]):active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}.sdc-button.variant-primary{--sdc-button-background: var(--color-primary);--sdc-button-border-color: var(--color-primary)}.sdc-button.variant-primary-light{--sdc-button-background: color-mix(in srgb, var(--color-primary) 15%, white);--sdc-button-border-color: var(--color-outline);--sdc-button-text-color: var(--color-primary)}.sdc-button.variant-secondary{--sdc-button-background: var(--color-secondary);--sdc-button-border-color: var(--color-secondary);--sdc-button-text-color: var(--color-accent)}.sdc-button.variant-alternative{--sdc-button-background: var(--color-alternative);--sdc-button-border-color: var(--color-alternative)}.sdc-button.variant-alternative-light{--sdc-button-background: color-mix(in srgb, var(--color-alternative) 15%, white);--sdc-button-border-color: var(--color-alternative);--sdc-button-text-color: var(--color-primary)}.sdc-button.variant-accent{--sdc-button-background: var(--color-accent);--sdc-button-border-color: var(--color-accent)}.sdc-button.variant-accent-light{--sdc-button-background: color-mix(in srgb, var(--color-accent) 15%, white);--sdc-button-border-color: var(--color-accent);--sdc-button-text-color: var(--color-primary)}.sdc-button.variant-success{--sdc-button-background: var(--color-success);--sdc-button-border-color: var(--color-success)}.sdc-button.variant-warning{--sdc-button-background: var(--color-warning);--sdc-button-border-color: var(--color-warning)}.sdc-button.variant-danger{--sdc-button-background: var(--color-danger);--sdc-button-border-color: var(--color-danger)}.sdc-button.variant-outline{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-primary);--sdc-button-text-color: var(--color-neutral-700)}.sdc-button.variant-outline:hover{box-shadow:none}.sdc-button.variant-outline-accent{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-accent);--sdc-button-text-color: var(--color-accent)}.sdc-button.variant-outline-accent:hover{box-shadow:none}.sdc-button.variant-outline-alternative{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-alternative);--sdc-button-text-color: var(--color-alternative)}.sdc-button.variant-outline-alternative:hover{box-shadow:none}.sdc-button.variant-outline-white{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: white;--sdc-button-text-color: white}.sdc-button.variant-outline-white:hover{box-shadow:none}.sdc-button.variant-link{--sdc-button-background: transparent;--sdc-button-border-color: transparent;--sdc-button-text-color: var(--color-neutral-700)}.sdc-button.variant-link:hover{box-shadow:none}.sdc-button.variant-success-light{--sdc-button-background: color-mix(in srgb, var(--color-success) 15%, white);--sdc-button-border-color: var(--color-success);--sdc-button-text-color: var(--color-success)}.sdc-button.variant-warning-light{--sdc-button-background: color-mix(in srgb, var(--color-warning) 15%, white);--sdc-button-border-color: var(--color-warning);--sdc-button-text-color: var(--color-warning)}.sdc-button.variant-destructive-light{--sdc-button-background: color-mix(in srgb, var(--color-danger) 20%, white);--sdc-button-border-color: var(--color-danger);--sdc-button-text-color: var(--color-danger)}.sdc-button.variant-secondary-blue{--sdc-button-background: var(--3ddv-blue-button-background);--sdc-button-border-color: var(--3ddv-blue-button-background);--sdc-button-text-color: var(--3ddv-blue-text)}.sdc-button.variant-gray{--sdc-button-background: var(--color-pure-gray);--sdc-button-border-color: var(--color-pure-gray);--sdc-button-text-color: var(--color-pure-white)}.sdc-button.variant-white{--sdc-button-background: var(--color-pure-white);--sdc-button-border-color: var(--color-pure-white);--sdc-button-text-color: var(--color-pure-black)}.sdc-button.size-xxs{--sdc-button-padding: 0;--sdc-button-text-size: var(--text-xs);--sdc-button-text-weight: var(--font-regular)}.sdc-button.size-xs{--sdc-button-padding: var(--space-1) var(--space-2_5);--sdc-button-text-size: var(--text-xs);--sdc-button-text-weight: var(--font-regular)}.sdc-button.size-sm{--sdc-button-padding: var(--space-1) var(--space-4);--sdc-button-text-size: var(--text-sm);--sdc-button-text-weight: var(--font-semibold)}.sdc-button.size-md{--sdc-button-padding: var(--space-1_5) var(--space-7);--sdc-button-text-size: var(--text-sm);--sdc-button-text-weight: var(--font-semibold)}.sdc-button.size-lg,.sdc-button.size-2xl{--sdc-button-padding: var(--space-2) var(--space-8);--sdc-button-text-size: var(--text-lg);--sdc-button-text-weight: var(--font-semibold)}.sdc-button.size-xl{--sdc-button-padding: var(--space-4) var(--space-8);--sdc-button-text-size: var(--text-sm);--sdc-button-text-weight: var(--font-bold)}.sdc-button.size-circle-xs{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-4);--sdc-button-width: var(--space-4);--sdc-button-text-size: var(--text-xs);--sdc-button-text-weight: var(--font-medium)}.sdc-button.size-circle-sm{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-6);--sdc-button-width: var(--space-6);--sdc-button-text-size: var(--text-sm);--sdc-button-text-weight: var(--font-medium)}.sdc-button.size-circle-md{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-8);--sdc-button-width: var(--space-8);--sdc-button-text-size: var(--text-base);--sdc-button-text-weight: var(--font-medium)}.sdc-button.size-circle-lg{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-10);--sdc-button-width: var(--space-10);--sdc-button-text-size: var(--text-xl);--sdc-button-text-weight: var(--font-medium)}.sdc-button.size-circle-xl{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-12);--sdc-button-width: var(--space-12);--sdc-button-text-size: var(--text-2xl);--sdc-button-text-weight: var(--font-medium)}.sdc-button.radius-default{--sdc-button-border-radius: var(--radius-default)}.sdc-button.radius-sm{--sdc-button-border-radius: var(--radius-sm)}.sdc-button.radius-md{--sdc-button-border-radius: var(--radius-md)}.sdc-button.radius-lg{--sdc-button-border-radius: var(--radius-lg)}.sdc-button.radius-xl{--sdc-button-border-radius: var(--radius-xl)}.sdc-button.radius-2xl{--sdc-button-border-radius: var(--radius-2xl)}.sdc-button.radius-full{--sdc-button-border-radius: var(--radius-full)}.sdc-button.variant-glass{--sdc-button-background: rgba(90, 90, 115, .25);--sdc-button-border-width: var(--border-default);--sdc-button-border-color: rgba(255, 255, 255, .12);--sdc-button-text-color: var(--color-pure-white);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:inset 0 1px #ffffff8c,inset 1px 0 #ffffff2e,inset -1px 0 #ffffff0a,inset 0 -1px #ffffff0f}.sdc-button.variant-glass:not([disabled]):hover{--sdc-button-background: rgba(90, 90, 115, .38);box-shadow:inset 0 1px #ffffffb3,inset 1px 0 #ffffff40,inset -1px 0 #ffffff0f,inset 0 -1px #ffffff14;transform:translateY(-1px)}.sdc-button.variant-glass:not([disabled]):active{--sdc-button-background: rgba(90, 90, 115, .15);box-shadow:inset 0 1px #ffffff59,inset 1px 0 #ffffff1a;transform:translateY(0)}.sdc-button.border-0{--sdc-button-border-width: var(--border-0)}.sdc-button.border-default{--sdc-button-border-width: var(--border-default)}.sdc-button.border-2{--sdc-button-border-width: var(--border-2)}.sdc-button.border-4{--sdc-button-border-width: var(--border-4)}.sdc-button.border-8{--sdc-button-border-width: var(--border-8)}\n"], dependencies: [{ kind: "ngmodule", type: HlmButtonModule }, { kind: "directive", type: HlmButton, selector: "[hlmBtn]", inputs: ["class", "variant", "size"], exportAs: ["hlmBtn"] }] });
|
|
370
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: ButtonComponent, isStandalone: true, selector: "sdc-button", inputs: { theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, ripple: { classPropertyName: "ripple", publicName: "ripple", isSignal: true, isRequired: false, transformFunction: null }, debounce: { classPropertyName: "debounce", publicName: "debounce", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur", isDebounced: "isDebounced" }, host: { listeners: { "click": "onHostClick($event)" } }, ngImport: i0, template: "<button\n hlmBtn\n [class]=\"computedClass()\"\n [disabled]=\"disabled() || debounceState()\"\n (click)=\"handleClick($event); createRipple($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [type]=\"type()\">\n <ng-content></ng-content>\n</button>\n", styles: [".sdc-button{--sdc-button-ripple-color: var(--color-neutral-300);--sdc-button-text-color: var(--color-pure-white);--sdc-button-text-size: var(--text-base);--sdc-button-text-weight: var(--font-medium);--sdc-button-background: var(--color-primary);--sdc-button-padding: var(--space-2) var(--space-7);--sdc-button-border-color: var(--color-primary);--sdc-button-border-radius: var(--radius-full);--sdc-button-border-width: var(--border-0);--sdc-button-height: 100%;--sdc-button-width: 100%;position:relative;overflow:hidden;cursor:pointer;color:var(--sdc-button-text-color);font-size:var(--sdc-button-text-size);font-weight:var(--sdc-button-text-weight);background:var(--sdc-button-background);padding:var(--sdc-button-padding);border-color:var(--sdc-button-border-color);border-radius:var(--sdc-button-border-radius);border-width:var(--sdc-button-border-width);height:var(--sdc-button-height);width:var(--sdc-button-width)}.sdc-button[disabled]{cursor:not-allowed;opacity:.6;transition:opacity .2s ease-in-out}.sdc-button:not([disabled]){transition:all .2s ease-in-out}.sdc-button:not([disabled]):hover{transform:translateY(-1px);box-shadow:0 4px 8px #0000001a}.sdc-button:not([disabled]):focus{outline:none}.sdc-button:not([disabled]):active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}.sdc-button.variant-primary{--sdc-button-background: var(--color-primary);--sdc-button-border-color: var(--color-primary)}.sdc-button.variant-primary-light{--sdc-button-background: color-mix(in srgb, var(--color-primary) 15%, white);--sdc-button-border-color: var(--color-outline);--sdc-button-text-color: var(--color-primary)}.sdc-button.variant-secondary{--sdc-button-background: var(--color-secondary);--sdc-button-border-color: var(--color-secondary);--sdc-button-text-color: var(--color-accent)}.sdc-button.variant-alternative{--sdc-button-background: var(--color-alternative);--sdc-button-border-color: var(--color-alternative)}.sdc-button.variant-alternative-light{--sdc-button-background: color-mix(in srgb, var(--color-alternative) 15%, white);--sdc-button-border-color: var(--color-alternative);--sdc-button-text-color: var(--color-primary)}.sdc-button.variant-accent{--sdc-button-background: var(--color-accent);--sdc-button-border-color: var(--color-accent)}.sdc-button.variant-accent-light{--sdc-button-background: color-mix(in srgb, var(--color-accent) 15%, white);--sdc-button-border-color: var(--color-accent);--sdc-button-text-color: var(--color-primary)}.sdc-button.variant-success{--sdc-button-background: var(--color-success);--sdc-button-border-color: var(--color-success)}.sdc-button.variant-warning{--sdc-button-background: var(--color-warning);--sdc-button-border-color: var(--color-warning)}.sdc-button.variant-danger{--sdc-button-background: var(--color-danger);--sdc-button-border-color: var(--color-danger)}.sdc-button.variant-outline{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-primary);--sdc-button-text-color: var(--color-neutral-700)}.sdc-button.variant-outline:hover{box-shadow:none}.sdc-button.variant-outline-accent{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-accent);--sdc-button-text-color: var(--color-accent)}.sdc-button.variant-outline-accent:hover{box-shadow:none}.sdc-button.variant-outline-alternative{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-alternative);--sdc-button-text-color: var(--color-alternative)}.sdc-button.variant-outline-alternative:hover{box-shadow:none}.sdc-button.variant-outline-white{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: white;--sdc-button-text-color: white}.sdc-button.variant-outline-white:hover{box-shadow:none}.sdc-button.variant-outline-brand{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-brand-foreground);--sdc-button-text-color: var(--color-brand-foreground)}.sdc-button.variant-outline-brand:hover{box-shadow:none}.sdc-button.variant-link{--sdc-button-background: transparent;--sdc-button-border-color: transparent;--sdc-button-text-color: var(--color-neutral-700)}.sdc-button.variant-link:hover{box-shadow:none}.sdc-button.variant-success-light{--sdc-button-background: color-mix(in srgb, var(--color-success) 15%, white);--sdc-button-border-color: var(--color-success);--sdc-button-text-color: var(--color-success)}.sdc-button.variant-warning-light{--sdc-button-background: color-mix(in srgb, var(--color-warning) 15%, white);--sdc-button-border-color: var(--color-warning);--sdc-button-text-color: var(--color-warning)}.sdc-button.variant-destructive-light{--sdc-button-background: color-mix(in srgb, var(--color-danger) 20%, white);--sdc-button-border-color: var(--color-danger);--sdc-button-text-color: var(--color-danger)}.sdc-button.variant-secondary-blue{--sdc-button-background: var(--color-brand-button-background);--sdc-button-border-color: var(--color-brand-button-background);--sdc-button-text-color: var(--color-brand-foreground)}.sdc-button.variant-gray{--sdc-button-background: var(--color-pure-gray);--sdc-button-border-color: var(--color-pure-gray);--sdc-button-text-color: var(--color-pure-white)}.sdc-button.variant-white{--sdc-button-background: var(--color-pure-white);--sdc-button-border-color: var(--color-pure-white);--sdc-button-text-color: var(--color-pure-black)}.sdc-button.size-xxs{--sdc-button-padding: 0;--sdc-button-text-size: var(--text-xs);--sdc-button-text-weight: var(--font-regular)}.sdc-button.size-xs{--sdc-button-padding: var(--space-1) var(--space-2_5);--sdc-button-text-size: var(--text-xs);--sdc-button-text-weight: var(--font-regular)}.sdc-button.size-sm{--sdc-button-padding: var(--space-1) var(--space-4);--sdc-button-text-size: var(--text-sm);--sdc-button-text-weight: var(--font-semibold)}.sdc-button.size-md{--sdc-button-padding: var(--space-1_5) var(--space-7);--sdc-button-text-size: var(--text-sm);--sdc-button-text-weight: var(--font-semibold)}.sdc-button.size-lg,.sdc-button.size-2xl{--sdc-button-padding: var(--space-2) var(--space-8);--sdc-button-text-size: var(--text-lg);--sdc-button-text-weight: var(--font-semibold)}.sdc-button.size-xl{--sdc-button-padding: var(--space-4) var(--space-8);--sdc-button-text-size: var(--text-sm);--sdc-button-text-weight: var(--font-bold)}.sdc-button.size-circle-xs{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-4);--sdc-button-width: var(--space-4);--sdc-button-text-size: var(--text-xs);--sdc-button-text-weight: var(--font-medium)}.sdc-button.size-circle-sm{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-6);--sdc-button-width: var(--space-6);--sdc-button-text-size: var(--text-sm);--sdc-button-text-weight: var(--font-medium)}.sdc-button.size-circle-md{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-8);--sdc-button-width: var(--space-8);--sdc-button-text-size: var(--text-base);--sdc-button-text-weight: var(--font-medium)}.sdc-button.size-circle-lg{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-10);--sdc-button-width: var(--space-10);--sdc-button-text-size: var(--text-xl);--sdc-button-text-weight: var(--font-medium)}.sdc-button.size-circle-xl{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-12);--sdc-button-width: var(--space-12);--sdc-button-text-size: var(--text-2xl);--sdc-button-text-weight: var(--font-medium)}.sdc-button.radius-default{--sdc-button-border-radius: var(--radius-default)}.sdc-button.radius-sm{--sdc-button-border-radius: var(--radius-sm)}.sdc-button.radius-md{--sdc-button-border-radius: var(--radius-md)}.sdc-button.radius-lg{--sdc-button-border-radius: var(--radius-lg)}.sdc-button.radius-xl{--sdc-button-border-radius: var(--radius-xl)}.sdc-button.radius-2xl{--sdc-button-border-radius: var(--radius-2xl)}.sdc-button.radius-full{--sdc-button-border-radius: var(--radius-full)}.sdc-button.variant-glass{--sdc-button-background: rgba(90, 90, 115, .25);--sdc-button-border-width: var(--border-default);--sdc-button-border-color: rgba(255, 255, 255, .12);--sdc-button-text-color: var(--color-pure-white);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:inset 0 1px #ffffff8c,inset 1px 0 #ffffff2e,inset -1px 0 #ffffff0a,inset 0 -1px #ffffff0f}.sdc-button.variant-glass:not([disabled]):hover{--sdc-button-background: rgba(90, 90, 115, .38);box-shadow:inset 0 1px #ffffffb3,inset 1px 0 #ffffff40,inset -1px 0 #ffffff0f,inset 0 -1px #ffffff14;transform:translateY(-1px)}.sdc-button.variant-glass:not([disabled]):active{--sdc-button-background: rgba(90, 90, 115, .15);box-shadow:inset 0 1px #ffffff59,inset 1px 0 #ffffff1a;transform:translateY(0)}.sdc-button.border-0{--sdc-button-border-width: var(--border-0)}.sdc-button.border-default{--sdc-button-border-width: var(--border-default)}.sdc-button.border-2{--sdc-button-border-width: var(--border-2)}.sdc-button.border-4{--sdc-button-border-width: var(--border-4)}.sdc-button.border-8{--sdc-button-border-width: var(--border-8)}\n"], dependencies: [{ kind: "ngmodule", type: HlmButtonModule }, { kind: "directive", type: HlmButton, selector: "[hlmBtn]", inputs: ["class", "variant", "size"], exportAs: ["hlmBtn"] }] });
|
|
370
371
|
}
|
|
371
372
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
372
373
|
type: Component,
|
|
373
|
-
args: [{ selector: 'sdc-button', imports: [HlmButtonModule], template: "<button\n hlmBtn\n [class]=\"computedClass()\"\n [disabled]=\"disabled() || debounceState()\"\n (click)=\"handleClick($event); createRipple($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [type]=\"type()\">\n <ng-content></ng-content>\n</button>\n", styles: [".sdc-button{--sdc-button-ripple-color: var(--color-neutral-300);--sdc-button-text-color: var(--color-pure-white);--sdc-button-text-size: var(--text-base);--sdc-button-text-weight: var(--font-medium);--sdc-button-background: var(--color-primary);--sdc-button-padding: var(--space-2) var(--space-7);--sdc-button-border-color: var(--color-primary);--sdc-button-border-radius: var(--radius-full);--sdc-button-border-width: var(--border-0);--sdc-button-height: 100%;--sdc-button-width: 100%;position:relative;overflow:hidden;cursor:pointer;color:var(--sdc-button-text-color);font-size:var(--sdc-button-text-size);font-weight:var(--sdc-button-text-weight);background:var(--sdc-button-background);padding:var(--sdc-button-padding);border-color:var(--sdc-button-border-color);border-radius:var(--sdc-button-border-radius);border-width:var(--sdc-button-border-width);height:var(--sdc-button-height);width:var(--sdc-button-width)}.sdc-button[disabled]{cursor:not-allowed;opacity:.6;transition:opacity .2s ease-in-out}.sdc-button:not([disabled]){transition:all .2s ease-in-out}.sdc-button:not([disabled]):hover{transform:translateY(-1px);box-shadow:0 4px 8px #0000001a}.sdc-button:not([disabled]):focus{outline:none}.sdc-button:not([disabled]):active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}.sdc-button.variant-primary{--sdc-button-background: var(--color-primary);--sdc-button-border-color: var(--color-primary)}.sdc-button.variant-primary-light{--sdc-button-background: color-mix(in srgb, var(--color-primary) 15%, white);--sdc-button-border-color: var(--color-outline);--sdc-button-text-color: var(--color-primary)}.sdc-button.variant-secondary{--sdc-button-background: var(--color-secondary);--sdc-button-border-color: var(--color-secondary);--sdc-button-text-color: var(--color-accent)}.sdc-button.variant-alternative{--sdc-button-background: var(--color-alternative);--sdc-button-border-color: var(--color-alternative)}.sdc-button.variant-alternative-light{--sdc-button-background: color-mix(in srgb, var(--color-alternative) 15%, white);--sdc-button-border-color: var(--color-alternative);--sdc-button-text-color: var(--color-primary)}.sdc-button.variant-accent{--sdc-button-background: var(--color-accent);--sdc-button-border-color: var(--color-accent)}.sdc-button.variant-accent-light{--sdc-button-background: color-mix(in srgb, var(--color-accent) 15%, white);--sdc-button-border-color: var(--color-accent);--sdc-button-text-color: var(--color-primary)}.sdc-button.variant-success{--sdc-button-background: var(--color-success);--sdc-button-border-color: var(--color-success)}.sdc-button.variant-warning{--sdc-button-background: var(--color-warning);--sdc-button-border-color: var(--color-warning)}.sdc-button.variant-danger{--sdc-button-background: var(--color-danger);--sdc-button-border-color: var(--color-danger)}.sdc-button.variant-outline{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-primary);--sdc-button-text-color: var(--color-neutral-700)}.sdc-button.variant-outline:hover{box-shadow:none}.sdc-button.variant-outline-accent{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-accent);--sdc-button-text-color: var(--color-accent)}.sdc-button.variant-outline-accent:hover{box-shadow:none}.sdc-button.variant-outline-alternative{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-alternative);--sdc-button-text-color: var(--color-alternative)}.sdc-button.variant-outline-alternative:hover{box-shadow:none}.sdc-button.variant-outline-white{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: white;--sdc-button-text-color: white}.sdc-button.variant-outline-white:hover{box-shadow:none}.sdc-button.variant-link{--sdc-button-background: transparent;--sdc-button-border-color: transparent;--sdc-button-text-color: var(--color-neutral-700)}.sdc-button.variant-link:hover{box-shadow:none}.sdc-button.variant-success-light{--sdc-button-background: color-mix(in srgb, var(--color-success) 15%, white);--sdc-button-border-color: var(--color-success);--sdc-button-text-color: var(--color-success)}.sdc-button.variant-warning-light{--sdc-button-background: color-mix(in srgb, var(--color-warning) 15%, white);--sdc-button-border-color: var(--color-warning);--sdc-button-text-color: var(--color-warning)}.sdc-button.variant-destructive-light{--sdc-button-background: color-mix(in srgb, var(--color-danger) 20%, white);--sdc-button-border-color: var(--color-danger);--sdc-button-text-color: var(--color-danger)}.sdc-button.variant-secondary-blue{--sdc-button-background: var(--
|
|
374
|
+
args: [{ selector: 'sdc-button', imports: [HlmButtonModule], template: "<button\n hlmBtn\n [class]=\"computedClass()\"\n [disabled]=\"disabled() || debounceState()\"\n (click)=\"handleClick($event); createRipple($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [type]=\"type()\">\n <ng-content></ng-content>\n</button>\n", styles: [".sdc-button{--sdc-button-ripple-color: var(--color-neutral-300);--sdc-button-text-color: var(--color-pure-white);--sdc-button-text-size: var(--text-base);--sdc-button-text-weight: var(--font-medium);--sdc-button-background: var(--color-primary);--sdc-button-padding: var(--space-2) var(--space-7);--sdc-button-border-color: var(--color-primary);--sdc-button-border-radius: var(--radius-full);--sdc-button-border-width: var(--border-0);--sdc-button-height: 100%;--sdc-button-width: 100%;position:relative;overflow:hidden;cursor:pointer;color:var(--sdc-button-text-color);font-size:var(--sdc-button-text-size);font-weight:var(--sdc-button-text-weight);background:var(--sdc-button-background);padding:var(--sdc-button-padding);border-color:var(--sdc-button-border-color);border-radius:var(--sdc-button-border-radius);border-width:var(--sdc-button-border-width);height:var(--sdc-button-height);width:var(--sdc-button-width)}.sdc-button[disabled]{cursor:not-allowed;opacity:.6;transition:opacity .2s ease-in-out}.sdc-button:not([disabled]){transition:all .2s ease-in-out}.sdc-button:not([disabled]):hover{transform:translateY(-1px);box-shadow:0 4px 8px #0000001a}.sdc-button:not([disabled]):focus{outline:none}.sdc-button:not([disabled]):active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}.sdc-button.variant-primary{--sdc-button-background: var(--color-primary);--sdc-button-border-color: var(--color-primary)}.sdc-button.variant-primary-light{--sdc-button-background: color-mix(in srgb, var(--color-primary) 15%, white);--sdc-button-border-color: var(--color-outline);--sdc-button-text-color: var(--color-primary)}.sdc-button.variant-secondary{--sdc-button-background: var(--color-secondary);--sdc-button-border-color: var(--color-secondary);--sdc-button-text-color: var(--color-accent)}.sdc-button.variant-alternative{--sdc-button-background: var(--color-alternative);--sdc-button-border-color: var(--color-alternative)}.sdc-button.variant-alternative-light{--sdc-button-background: color-mix(in srgb, var(--color-alternative) 15%, white);--sdc-button-border-color: var(--color-alternative);--sdc-button-text-color: var(--color-primary)}.sdc-button.variant-accent{--sdc-button-background: var(--color-accent);--sdc-button-border-color: var(--color-accent)}.sdc-button.variant-accent-light{--sdc-button-background: color-mix(in srgb, var(--color-accent) 15%, white);--sdc-button-border-color: var(--color-accent);--sdc-button-text-color: var(--color-primary)}.sdc-button.variant-success{--sdc-button-background: var(--color-success);--sdc-button-border-color: var(--color-success)}.sdc-button.variant-warning{--sdc-button-background: var(--color-warning);--sdc-button-border-color: var(--color-warning)}.sdc-button.variant-danger{--sdc-button-background: var(--color-danger);--sdc-button-border-color: var(--color-danger)}.sdc-button.variant-outline{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-primary);--sdc-button-text-color: var(--color-neutral-700)}.sdc-button.variant-outline:hover{box-shadow:none}.sdc-button.variant-outline-accent{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-accent);--sdc-button-text-color: var(--color-accent)}.sdc-button.variant-outline-accent:hover{box-shadow:none}.sdc-button.variant-outline-alternative{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-alternative);--sdc-button-text-color: var(--color-alternative)}.sdc-button.variant-outline-alternative:hover{box-shadow:none}.sdc-button.variant-outline-white{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: white;--sdc-button-text-color: white}.sdc-button.variant-outline-white:hover{box-shadow:none}.sdc-button.variant-outline-brand{--sdc-button-background: transparent;--sdc-button-border-width: var(--border-default);--sdc-button-border-color: var(--color-brand-foreground);--sdc-button-text-color: var(--color-brand-foreground)}.sdc-button.variant-outline-brand:hover{box-shadow:none}.sdc-button.variant-link{--sdc-button-background: transparent;--sdc-button-border-color: transparent;--sdc-button-text-color: var(--color-neutral-700)}.sdc-button.variant-link:hover{box-shadow:none}.sdc-button.variant-success-light{--sdc-button-background: color-mix(in srgb, var(--color-success) 15%, white);--sdc-button-border-color: var(--color-success);--sdc-button-text-color: var(--color-success)}.sdc-button.variant-warning-light{--sdc-button-background: color-mix(in srgb, var(--color-warning) 15%, white);--sdc-button-border-color: var(--color-warning);--sdc-button-text-color: var(--color-warning)}.sdc-button.variant-destructive-light{--sdc-button-background: color-mix(in srgb, var(--color-danger) 20%, white);--sdc-button-border-color: var(--color-danger);--sdc-button-text-color: var(--color-danger)}.sdc-button.variant-secondary-blue{--sdc-button-background: var(--color-brand-button-background);--sdc-button-border-color: var(--color-brand-button-background);--sdc-button-text-color: var(--color-brand-foreground)}.sdc-button.variant-gray{--sdc-button-background: var(--color-pure-gray);--sdc-button-border-color: var(--color-pure-gray);--sdc-button-text-color: var(--color-pure-white)}.sdc-button.variant-white{--sdc-button-background: var(--color-pure-white);--sdc-button-border-color: var(--color-pure-white);--sdc-button-text-color: var(--color-pure-black)}.sdc-button.size-xxs{--sdc-button-padding: 0;--sdc-button-text-size: var(--text-xs);--sdc-button-text-weight: var(--font-regular)}.sdc-button.size-xs{--sdc-button-padding: var(--space-1) var(--space-2_5);--sdc-button-text-size: var(--text-xs);--sdc-button-text-weight: var(--font-regular)}.sdc-button.size-sm{--sdc-button-padding: var(--space-1) var(--space-4);--sdc-button-text-size: var(--text-sm);--sdc-button-text-weight: var(--font-semibold)}.sdc-button.size-md{--sdc-button-padding: var(--space-1_5) var(--space-7);--sdc-button-text-size: var(--text-sm);--sdc-button-text-weight: var(--font-semibold)}.sdc-button.size-lg,.sdc-button.size-2xl{--sdc-button-padding: var(--space-2) var(--space-8);--sdc-button-text-size: var(--text-lg);--sdc-button-text-weight: var(--font-semibold)}.sdc-button.size-xl{--sdc-button-padding: var(--space-4) var(--space-8);--sdc-button-text-size: var(--text-sm);--sdc-button-text-weight: var(--font-bold)}.sdc-button.size-circle-xs{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-4);--sdc-button-width: var(--space-4);--sdc-button-text-size: var(--text-xs);--sdc-button-text-weight: var(--font-medium)}.sdc-button.size-circle-sm{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-6);--sdc-button-width: var(--space-6);--sdc-button-text-size: var(--text-sm);--sdc-button-text-weight: var(--font-medium)}.sdc-button.size-circle-md{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-8);--sdc-button-width: var(--space-8);--sdc-button-text-size: var(--text-base);--sdc-button-text-weight: var(--font-medium)}.sdc-button.size-circle-lg{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-10);--sdc-button-width: var(--space-10);--sdc-button-text-size: var(--text-xl);--sdc-button-text-weight: var(--font-medium)}.sdc-button.size-circle-xl{display:flex;justify-content:center;align-items:center;--sdc-button-padding: 0;--sdc-button-height: var(--space-12);--sdc-button-width: var(--space-12);--sdc-button-text-size: var(--text-2xl);--sdc-button-text-weight: var(--font-medium)}.sdc-button.radius-default{--sdc-button-border-radius: var(--radius-default)}.sdc-button.radius-sm{--sdc-button-border-radius: var(--radius-sm)}.sdc-button.radius-md{--sdc-button-border-radius: var(--radius-md)}.sdc-button.radius-lg{--sdc-button-border-radius: var(--radius-lg)}.sdc-button.radius-xl{--sdc-button-border-radius: var(--radius-xl)}.sdc-button.radius-2xl{--sdc-button-border-radius: var(--radius-2xl)}.sdc-button.radius-full{--sdc-button-border-radius: var(--radius-full)}.sdc-button.variant-glass{--sdc-button-background: rgba(90, 90, 115, .25);--sdc-button-border-width: var(--border-default);--sdc-button-border-color: rgba(255, 255, 255, .12);--sdc-button-text-color: var(--color-pure-white);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:inset 0 1px #ffffff8c,inset 1px 0 #ffffff2e,inset -1px 0 #ffffff0a,inset 0 -1px #ffffff0f}.sdc-button.variant-glass:not([disabled]):hover{--sdc-button-background: rgba(90, 90, 115, .38);box-shadow:inset 0 1px #ffffffb3,inset 1px 0 #ffffff40,inset -1px 0 #ffffff0f,inset 0 -1px #ffffff14;transform:translateY(-1px)}.sdc-button.variant-glass:not([disabled]):active{--sdc-button-background: rgba(90, 90, 115, .15);box-shadow:inset 0 1px #ffffff59,inset 1px 0 #ffffff1a;transform:translateY(0)}.sdc-button.border-0{--sdc-button-border-width: var(--border-0)}.sdc-button.border-default{--sdc-button-border-width: var(--border-default)}.sdc-button.border-2{--sdc-button-border-width: var(--border-2)}.sdc-button.border-4{--sdc-button-border-width: var(--border-4)}.sdc-button.border-8{--sdc-button-border-width: var(--border-8)}\n"] }]
|
|
374
375
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], ripple: [{ type: i0.Input, args: [{ isSignal: true, alias: "ripple", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], debounce: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounce", required: false }] }], isDebounced: [{ type: i0.Output, args: ["isDebounced"] }], onHostClick: [{
|
|
375
376
|
type: HostListener,
|
|
376
377
|
args: ['click', ['$event']]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"3ddv-software-division-components-generic-button.mjs","sources":["../../generic/button/ui/ui-button-helm/src/lib/hlm-button.token.ts","../../generic/button/ui/ui-button-helm/src/lib/hlm-button.ts","../../generic/button/ui/ui-button-helm/src/index.ts","../../generic/button/button.component.ts","../../generic/button/button.component.html","../../generic/button/public-api.ts","../../generic/button/3ddv-software-division-components-generic-button.ts"],"sourcesContent":["import { InjectionToken, ValueProvider, inject } from '@angular/core';\nimport type { ButtonVariants } from './hlm-button';\n\nexport interface BrnButtonConfig {\n\tvariant: ButtonVariants['variant'];\n\tsize: ButtonVariants['size'];\n}\n\nconst defaultConfig: BrnButtonConfig = {\n\tvariant: 'default',\n\tsize: 'default',\n};\n\nconst BrnButtonConfigToken = new InjectionToken<BrnButtonConfig>('BrnButtonConfig');\n\nexport function provideBrnButtonConfig(config: Partial<BrnButtonConfig>): ValueProvider {\n\treturn { provide: BrnButtonConfigToken, useValue: { ...defaultConfig, ...config } };\n}\n\nexport function injectBrnButtonConfig(): BrnButtonConfig {\n\treturn inject(BrnButtonConfigToken, { optional: true }) ?? defaultConfig;\n}\n","import { Directive, computed, input, signal } from '@angular/core';\nimport { hlm } from '@spartan-ng/brain/core';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport type { ClassValue } from 'clsx';\nimport { injectBrnButtonConfig } from './hlm-button.token';\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_ng-icon]:pointer-events-none shrink-0 [&_ng-icon]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-default',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90',\n destructive:\n 'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',\n outline: 'border bg-background shadow-xs dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n secondary: 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2 has-[>ng-icon]:px-3',\n sm: 'h-8 rounded-md gap-1.5 px-3 has-[>ng-icon]:px-2.5',\n lg: 'h-10 rounded-md px-6 has-[>ng-icon]:px-4',\n icon: 'size-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nexport type ButtonVariants = VariantProps<typeof buttonVariants>;\n\n@Directive({\n selector: '[hlmBtn]',\n standalone: true,\n exportAs: 'hlmBtn',\n host: {\n '[class]': '_computedClass()',\n },\n})\nexport class HlmButton {\n private readonly _config = injectBrnButtonConfig();\n\n private readonly _additionalClasses = signal<ClassValue>('');\n\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n\n protected readonly _computedClass = computed(() =>\n hlm(buttonVariants({ variant: this.variant(), size: this.size() }), this.userClass(), this._additionalClasses())\n );\n\n public readonly variant = input<ButtonVariants['variant']>(this._config.variant);\n\n public readonly size = input<ButtonVariants['size']>(this._config.size);\n\n setClass(classes: string): void {\n this._additionalClasses.set(classes);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { HlmButton } from './lib/hlm-button';\nexport * from './lib/hlm-button';\nexport * from './lib/hlm-button.token';\n\n@NgModule({\n\timports: [HlmButton],\n\texports: [HlmButton],\n})\nexport class HlmButtonModule {}\n","import { Size, SIZES, ThemeClass } from '@3ddv/software-division-components/shared';\nimport { Component, computed, effect, ElementRef, HostListener, input, output, signal } from '@angular/core';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { HlmButtonModule } from './ui/ui-button-helm/src';\n\nconst BUTTON_VARIANTS = {\n primary: 'primary',\n secondary: 'secondary',\n 'secondary-blue': 'secondary-blue',\n accent: 'accent',\n alternative: 'alternative',\n warning: 'warning',\n success: 'success',\n outline: 'outline',\n destructive: 'destructive',\n 'primary-light': 'primary-light',\n 'alternative-light': 'alternative-light',\n 'success-muted': 'success-muted',\n 'accent-light': 'accent-light',\n 'warning-light': 'warning-light',\n 'destructive-light': 'destructive-light',\n 'outline-white': 'outline-white',\n 'outline-alternative': 'outline-alternative',\n 'outline-accent': 'outline-accent',\n link: 'link',\n gray: 'gray',\n white: 'white',\n icon: 'icon',\n glass: 'glass',\n} as const;\n\ntype ButtonVariant = (typeof BUTTON_VARIANTS)[keyof typeof BUTTON_VARIANTS];\n\ntype ButtonType = 'button' | 'submit' | 'reset';\n\nexport type ButtonStyleClasses = ReturnType<(typeof ButtonComponent.prototype)['styleClass']>;\n\n/**\n * A customizable button component built on Spartan UI Button.\n *\n * This component supports various configurations and exposes all Spartan UI button functionality.\n * All HTML button attributes and events are automatically forwarded to the inner button element.\n *\n * @since 1.0.0-alpha.1\n * @updated 1.0.0-alpha.3\n */\n@Component({\n selector: 'sdc-button',\n styleUrls: ['./button.component.css'],\n templateUrl: './button.component.html',\n imports: [HlmButtonModule],\n})\nexport class ButtonComponent {\n private readonly allowedVariants = Object.values(BUTTON_VARIANTS).map(v => `variant-${v}` as const);\n private readonly allowedSizes = Object.values(SIZES).map(v => `size-${v}` as const);\n private readonly allowedCircleSizes = [\n 'size-circle-xs',\n 'size-circle-sm',\n 'size-circle-md',\n 'size-circle-lg',\n 'size-circle-xl',\n ] as const;\n private readonly allowedRadius = [\n 'radius-default',\n 'radius-sm',\n 'radius-md',\n 'radius-lg',\n 'radius-xl',\n 'radius-2xl',\n 'radius-full',\n ] as const;\n private readonly allowedBorder = ['border-0', 'border-default', 'border-2', 'border-4', 'border-8'] as const;\n\n /**\n * The current theme applied to the component.\n */\n public readonly theme = input<ThemeClass>('theme-sdc');\n\n /**\n * Predefined styles to apply to the component.\n * Can be a single class or multiple classes from different categories.\n */\n public readonly styleClass = input<\n (\n | (typeof this.allowedVariants)[number]\n | (typeof this.allowedSizes)[number]\n | (typeof this.allowedCircleSizes)[number]\n | (typeof this.allowedRadius)[number]\n | (typeof this.allowedBorder)[number]\n )[]\n >([]);\n\n // Computed signal that validates and filters the styleClass input\n private readonly _validatedStyleClass = computed(() => {\n const value = this.styleClass();\n\n if (!Array.isArray(value)) {\n console.warn('ButtonComponent: styleClass must be an array, defaulting to empty array');\n return [];\n }\n\n const validValues = value.filter(\n style =>\n this.allowedVariants.includes(style as any) ||\n this.allowedSizes.includes(style as any) ||\n this.allowedCircleSizes.includes(style as any) ||\n this.allowedRadius.includes(style as any) ||\n this.allowedBorder.includes(style as any)\n );\n\n const invalidValues = value.filter(\n style =>\n !this.allowedVariants.includes(style as any) &&\n !this.allowedSizes.includes(style as any) &&\n !this.allowedCircleSizes.includes(style as any) &&\n !this.allowedRadius.includes(style as any) &&\n !this.allowedBorder.includes(style as any)\n );\n\n if (invalidValues.length > 0) {\n throw new Error(\n `ButtonComponent: Invalid styleClass values ignored: ${invalidValues.join(', ')}. Allowed values: ${[\n ...this.allowedVariants,\n ...this.allowedSizes,\n ...this.allowedCircleSizes,\n ...this.allowedRadius,\n ...this.allowedBorder,\n ].join(', ')}`\n );\n }\n\n return validValues;\n });\n\n /**\n * Additional classes\n */\n public readonly className = input<string>('');\n\n /**\n * Button component style variant\n */\n public readonly variant = input<ButtonVariant>('primary');\n\n /**\n * Button component size variant\n */\n public readonly size = input<Size>('md');\n\n /**\n * Native button type attribute\n */\n public readonly type = input<ButtonType>('button');\n\n /**\n * Whether the component is disabled.\n */\n public readonly disabled = input<boolean>(false);\n\n /**\n * Whether to enable the ripple effect on the component.\n * Default value is false.\n */\n public readonly ripple = input<boolean>(false);\n\n /**\n * Event emitted when the component is clicked.\n */\n public readonly onClick = output<MouseEvent>();\n\n /**\n * Event emitted when the component receives focus.\n */\n public readonly onFocus = output<FocusEvent>();\n\n /**\n * Event emitted when the component loses focus.\n */\n public readonly onBlur = output<FocusEvent>();\n\n protected readonly _sizeClass = computed(() => {\n const size = SIZES[this.size()];\n\n if (!size) {\n throw new Error(`size must be one of these: ${Object.values(SIZES).join(', ')}}`);\n }\n\n return `size-${size}`;\n });\n\n protected readonly _variantClass = computed(() => {\n const variant = BUTTON_VARIANTS[this.variant()];\n\n if (!variant) {\n throw new Error(`variant must be one of these: ${Object.values(BUTTON_VARIANTS).join(', ')}}`);\n }\n\n return `variant-${variant}`;\n });\n\n /**\n * Computed class string that combines theme and user classes.\n */\n protected readonly computedClass = computed(() => {\n const themeClass = this.theme();\n const styleClass = this._validatedStyleClass();\n const sizeClass = this._sizeClass();\n const variantClass = this._variantClass();\n const className = this.className();\n return Array.from(new Set(['sdc-button', themeClass, sizeClass, variantClass, ...styleClass, className]))\n .filter(Boolean)\n .join(' ');\n });\n\n /**\n * Debounce time in milliseconds. When null, no debounce is applied.\n * Default value is null (no debounce).\n */\n public readonly debounce = input<number | null>(null);\n\n /**\n * Event emitted to notify the debounce state.\n * Returns true while the component is debounced, false when not.\n */\n public readonly isDebounced = output<boolean>();\n\n /**\n * Signal to track the current debounce state of the component.\n */\n protected readonly debounceState = signal<boolean>(false);\n\n /**\n * Subject for handling click events with debounce.\n */\n private readonly clickSubject = new Subject<MouseEvent>();\n\n /**\n * Subject for cleanup.\n */\n private readonly destroy$ = new Subject<void>();\n\n /**\n * Current subscription for debounce.\n */\n private debounceSubscription: Subscription | null = null;\n\n /**\n * Current debounce timeout.\n */\n private debounceTimeout: ReturnType<typeof setTimeout> | null = null;\n\n constructor(private elementRef: ElementRef) {\n // Set up reactive debounce handling within injection context\n effect(() => {\n const debounceTime = this.debounce();\n this.setupDebounce(debounceTime);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.clickSubject.complete();\n if (this.debounceSubscription) {\n this.debounceSubscription.unsubscribe();\n }\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n }\n }\n\n /**\n * Sets up the debounce functionality for click events.\n */\n private setupDebounce(debounceTime: number | null): void {\n // Clear existing subscription\n if (this.debounceSubscription) {\n this.debounceSubscription.unsubscribe();\n }\n\n // Clear existing timeout\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = null;\n }\n\n // Set up new subscription\n this.debounceSubscription = this.clickSubject.pipe(takeUntil(this.destroy$)).subscribe((event: MouseEvent) => {\n // Clear existing timeout\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n }\n\n // Set new timeout\n this.debounceTimeout = setTimeout(() => {\n this.debounceState.set(false);\n this.isDebounced.emit(false);\n this.onClick.emit(event);\n this.debounceTimeout = null;\n }, debounceTime ?? 0);\n });\n }\n\n /**\n * Handles click events with debounce functionality.\n */\n @HostListener('click', ['$event'])\n protected onHostClick(event: MouseEvent): void {\n if (this.disabled() || this.debounceState()) event.stopImmediatePropagation();\n }\n\n protected handleClick(event: MouseEvent): void {\n if (this.disabled() || this.debounceState()) return;\n const debounceTime = this.debounce();\n\n if (debounceTime !== null && debounceTime > 0) {\n // Apply debounce\n this.debounceState.set(true);\n this.isDebounced.emit(true);\n this.clickSubject.next(event);\n } else {\n // No debounce, emit immediately\n this.onClick.emit(event);\n }\n }\n\n /**\n * Handles focus events and emits the onFocus output.\n */\n protected handleFocus(event: FocusEvent): void {\n this.onFocus.emit(event);\n }\n\n /**\n * Handles blur events and emits the onBlur output.\n */\n protected handleBlur(event: FocusEvent): void {\n this.onBlur.emit(event);\n }\n\n /**\n * Creates a ripple effect at the specified position.\n */\n protected createRipple(event: MouseEvent): void {\n if (!this.ripple()) return;\n\n const button = event.currentTarget as HTMLElement;\n const rect = button.getBoundingClientRect();\n const size = Math.max(rect.width, rect.height);\n const x = event.clientX - rect.left - size / 2;\n const y = event.clientY - rect.top - size / 2;\n\n const ripple = document.createElement('span');\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = x + 'px';\n ripple.style.top = y + 'px';\n ripple.classList.add('sdc-ripple');\n\n button.appendChild(ripple);\n\n setTimeout(() => {\n ripple.remove();\n }, 600);\n }\n}\n","<button\n hlmBtn\n [class]=\"computedClass()\"\n [disabled]=\"disabled() || debounceState()\"\n (click)=\"handleClick($event); createRipple($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [type]=\"type()\">\n <ng-content></ng-content>\n</button>\n","/*\n * Public API Surface of software-division-components\n */\n\nexport * from './button.component';\nexport { HlmButton, HlmButtonModule, buttonVariants, provideBrnButtonConfig } from './ui/ui-button-helm/src';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.HlmButton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"3ddv-software-division-components-generic-button.mjs","sources":["../../generic/button/ui/ui-button-helm/src/lib/hlm-button.token.ts","../../generic/button/ui/ui-button-helm/src/lib/hlm-button.ts","../../generic/button/ui/ui-button-helm/src/index.ts","../../generic/button/button.component.ts","../../generic/button/button.component.html","../../generic/button/public-api.ts","../../generic/button/3ddv-software-division-components-generic-button.ts"],"sourcesContent":["import { InjectionToken, ValueProvider, inject } from '@angular/core';\nimport type { ButtonVariants } from './hlm-button';\n\nexport interface BrnButtonConfig {\n\tvariant: ButtonVariants['variant'];\n\tsize: ButtonVariants['size'];\n}\n\nconst defaultConfig: BrnButtonConfig = {\n\tvariant: 'default',\n\tsize: 'default',\n};\n\nconst BrnButtonConfigToken = new InjectionToken<BrnButtonConfig>('BrnButtonConfig');\n\nexport function provideBrnButtonConfig(config: Partial<BrnButtonConfig>): ValueProvider {\n\treturn { provide: BrnButtonConfigToken, useValue: { ...defaultConfig, ...config } };\n}\n\nexport function injectBrnButtonConfig(): BrnButtonConfig {\n\treturn inject(BrnButtonConfigToken, { optional: true }) ?? defaultConfig;\n}\n","import { Directive, computed, input, signal } from '@angular/core';\nimport { hlm } from '@spartan-ng/brain/core';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport type { ClassValue } from 'clsx';\nimport { injectBrnButtonConfig } from './hlm-button.token';\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_ng-icon]:pointer-events-none shrink-0 [&_ng-icon]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-default',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90',\n destructive:\n 'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',\n outline: 'border bg-background shadow-xs dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n secondary: 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2 has-[>ng-icon]:px-3',\n sm: 'h-8 rounded-md gap-1.5 px-3 has-[>ng-icon]:px-2.5',\n lg: 'h-10 rounded-md px-6 has-[>ng-icon]:px-4',\n icon: 'size-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nexport type ButtonVariants = VariantProps<typeof buttonVariants>;\n\n@Directive({\n selector: '[hlmBtn]',\n standalone: true,\n exportAs: 'hlmBtn',\n host: {\n '[class]': '_computedClass()',\n },\n})\nexport class HlmButton {\n private readonly _config = injectBrnButtonConfig();\n\n private readonly _additionalClasses = signal<ClassValue>('');\n\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n\n protected readonly _computedClass = computed(() =>\n hlm(buttonVariants({ variant: this.variant(), size: this.size() }), this.userClass(), this._additionalClasses())\n );\n\n public readonly variant = input<ButtonVariants['variant']>(this._config.variant);\n\n public readonly size = input<ButtonVariants['size']>(this._config.size);\n\n setClass(classes: string): void {\n this._additionalClasses.set(classes);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { HlmButton } from './lib/hlm-button';\nexport * from './lib/hlm-button';\nexport * from './lib/hlm-button.token';\n\n@NgModule({\n\timports: [HlmButton],\n\texports: [HlmButton],\n})\nexport class HlmButtonModule {}\n","import { Size, SIZES, ThemeClass } from '@3ddv/software-division-components/shared';\nimport { Component, computed, effect, ElementRef, HostListener, input, output, signal } from '@angular/core';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { HlmButtonModule } from './ui/ui-button-helm/src';\n\nconst BUTTON_VARIANTS = {\n primary: 'primary',\n secondary: 'secondary',\n 'secondary-blue': 'secondary-blue',\n accent: 'accent',\n alternative: 'alternative',\n warning: 'warning',\n success: 'success',\n outline: 'outline',\n destructive: 'destructive',\n 'primary-light': 'primary-light',\n 'alternative-light': 'alternative-light',\n 'success-muted': 'success-muted',\n 'accent-light': 'accent-light',\n 'warning-light': 'warning-light',\n 'destructive-light': 'destructive-light',\n 'outline-white': 'outline-white',\n 'outline-brand': 'outline-brand',\n 'outline-alternative': 'outline-alternative',\n 'outline-accent': 'outline-accent',\n link: 'link',\n gray: 'gray',\n white: 'white',\n icon: 'icon',\n glass: 'glass',\n} as const;\n\ntype ButtonVariant = (typeof BUTTON_VARIANTS)[keyof typeof BUTTON_VARIANTS];\n\ntype ButtonType = 'button' | 'submit' | 'reset';\n\nexport type ButtonStyleClasses = ReturnType<(typeof ButtonComponent.prototype)['styleClass']>;\n\n/**\n * A customizable button component built on Spartan UI Button.\n *\n * This component supports various configurations and exposes all Spartan UI button functionality.\n * All HTML button attributes and events are automatically forwarded to the inner button element.\n *\n * @since 1.0.0-alpha.1\n * @updated 1.0.0-alpha.3\n */\n@Component({\n selector: 'sdc-button',\n styleUrls: ['./button.component.css'],\n templateUrl: './button.component.html',\n imports: [HlmButtonModule],\n})\nexport class ButtonComponent {\n private readonly allowedVariants = Object.values(BUTTON_VARIANTS).map(v => `variant-${v}` as const);\n private readonly allowedSizes = Object.values(SIZES).map(v => `size-${v}` as const);\n private readonly allowedCircleSizes = [\n 'size-circle-xs',\n 'size-circle-sm',\n 'size-circle-md',\n 'size-circle-lg',\n 'size-circle-xl',\n ] as const;\n private readonly allowedRadius = [\n 'radius-default',\n 'radius-sm',\n 'radius-md',\n 'radius-lg',\n 'radius-xl',\n 'radius-2xl',\n 'radius-full',\n ] as const;\n private readonly allowedBorder = ['border-0', 'border-default', 'border-2', 'border-4', 'border-8'] as const;\n\n /**\n * The current theme applied to the component.\n */\n public readonly theme = input<ThemeClass>('theme-sdc');\n\n /**\n * Predefined styles to apply to the component.\n * Can be a single class or multiple classes from different categories.\n */\n public readonly styleClass = input<\n (\n | (typeof this.allowedVariants)[number]\n | (typeof this.allowedSizes)[number]\n | (typeof this.allowedCircleSizes)[number]\n | (typeof this.allowedRadius)[number]\n | (typeof this.allowedBorder)[number]\n )[]\n >([]);\n\n // Computed signal that validates and filters the styleClass input\n private readonly _validatedStyleClass = computed(() => {\n const value = this.styleClass();\n\n if (!Array.isArray(value)) {\n console.warn('ButtonComponent: styleClass must be an array, defaulting to empty array');\n return [];\n }\n\n const validValues = value.filter(\n style =>\n this.allowedVariants.includes(style as any) ||\n this.allowedSizes.includes(style as any) ||\n this.allowedCircleSizes.includes(style as any) ||\n this.allowedRadius.includes(style as any) ||\n this.allowedBorder.includes(style as any)\n );\n\n const invalidValues = value.filter(\n style =>\n !this.allowedVariants.includes(style as any) &&\n !this.allowedSizes.includes(style as any) &&\n !this.allowedCircleSizes.includes(style as any) &&\n !this.allowedRadius.includes(style as any) &&\n !this.allowedBorder.includes(style as any)\n );\n\n if (invalidValues.length > 0) {\n throw new Error(\n `ButtonComponent: Invalid styleClass values ignored: ${invalidValues.join(', ')}. Allowed values: ${[\n ...this.allowedVariants,\n ...this.allowedSizes,\n ...this.allowedCircleSizes,\n ...this.allowedRadius,\n ...this.allowedBorder,\n ].join(', ')}`\n );\n }\n\n return validValues;\n });\n\n /**\n * Additional classes\n */\n public readonly className = input<string>('');\n\n /**\n * Button component style variant\n */\n public readonly variant = input<ButtonVariant>('primary');\n\n /**\n * Button component size variant\n */\n public readonly size = input<Size>('md');\n\n /**\n * Native button type attribute\n */\n public readonly type = input<ButtonType>('button');\n\n /**\n * Whether the component is disabled.\n */\n public readonly disabled = input<boolean>(false);\n\n /**\n * Whether to enable the ripple effect on the component.\n * Default value is false.\n */\n public readonly ripple = input<boolean>(false);\n\n /**\n * Event emitted when the component is clicked.\n */\n public readonly onClick = output<MouseEvent>();\n\n /**\n * Event emitted when the component receives focus.\n */\n public readonly onFocus = output<FocusEvent>();\n\n /**\n * Event emitted when the component loses focus.\n */\n public readonly onBlur = output<FocusEvent>();\n\n protected readonly _sizeClass = computed(() => {\n const size = SIZES[this.size()];\n\n if (!size) {\n throw new Error(`size must be one of these: ${Object.values(SIZES).join(', ')}}`);\n }\n\n return `size-${size}`;\n });\n\n protected readonly _variantClass = computed(() => {\n const variant = BUTTON_VARIANTS[this.variant()];\n\n if (!variant) {\n throw new Error(`variant must be one of these: ${Object.values(BUTTON_VARIANTS).join(', ')}}`);\n }\n\n return `variant-${variant}`;\n });\n\n /**\n * Computed class string that combines theme and user classes.\n */\n protected readonly computedClass = computed(() => {\n const themeClass = this.theme();\n const styleClass = this._validatedStyleClass();\n const sizeClass = this._sizeClass();\n const variantClass = this._variantClass();\n const className = this.className();\n return Array.from(new Set(['sdc-button', themeClass, sizeClass, variantClass, ...styleClass, className]))\n .filter(Boolean)\n .join(' ');\n });\n\n /**\n * Debounce time in milliseconds. When null, no debounce is applied.\n * Default value is null (no debounce).\n */\n public readonly debounce = input<number | null>(null);\n\n /**\n * Event emitted to notify the debounce state.\n * Returns true while the component is debounced, false when not.\n */\n public readonly isDebounced = output<boolean>();\n\n /**\n * Signal to track the current debounce state of the component.\n */\n protected readonly debounceState = signal<boolean>(false);\n\n /**\n * Subject for handling click events with debounce.\n */\n private readonly clickSubject = new Subject<MouseEvent>();\n\n /**\n * Subject for cleanup.\n */\n private readonly destroy$ = new Subject<void>();\n\n /**\n * Current subscription for debounce.\n */\n private debounceSubscription: Subscription | null = null;\n\n /**\n * Current debounce timeout.\n */\n private debounceTimeout: ReturnType<typeof setTimeout> | null = null;\n\n constructor(private elementRef: ElementRef) {\n // Set up reactive debounce handling within injection context\n effect(() => {\n const debounceTime = this.debounce();\n this.setupDebounce(debounceTime);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.clickSubject.complete();\n if (this.debounceSubscription) {\n this.debounceSubscription.unsubscribe();\n }\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n }\n }\n\n /**\n * Sets up the debounce functionality for click events.\n */\n private setupDebounce(debounceTime: number | null): void {\n // Clear existing subscription\n if (this.debounceSubscription) {\n this.debounceSubscription.unsubscribe();\n }\n\n // Clear existing timeout\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = null;\n }\n\n // Set up new subscription\n this.debounceSubscription = this.clickSubject.pipe(takeUntil(this.destroy$)).subscribe((event: MouseEvent) => {\n // Clear existing timeout\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n }\n\n // Set new timeout\n this.debounceTimeout = setTimeout(() => {\n this.debounceState.set(false);\n this.isDebounced.emit(false);\n this.onClick.emit(event);\n this.debounceTimeout = null;\n }, debounceTime ?? 0);\n });\n }\n\n /**\n * Handles click events with debounce functionality.\n */\n @HostListener('click', ['$event'])\n protected onHostClick(event: MouseEvent): void {\n if (this.disabled() || this.debounceState()) event.stopImmediatePropagation();\n }\n\n protected handleClick(event: MouseEvent): void {\n if (this.disabled() || this.debounceState()) return;\n const debounceTime = this.debounce();\n\n if (debounceTime !== null && debounceTime > 0) {\n // Apply debounce\n this.debounceState.set(true);\n this.isDebounced.emit(true);\n this.clickSubject.next(event);\n } else {\n // No debounce, emit immediately\n this.onClick.emit(event);\n }\n }\n\n /**\n * Handles focus events and emits the onFocus output.\n */\n protected handleFocus(event: FocusEvent): void {\n this.onFocus.emit(event);\n }\n\n /**\n * Handles blur events and emits the onBlur output.\n */\n protected handleBlur(event: FocusEvent): void {\n this.onBlur.emit(event);\n }\n\n /**\n * Creates a ripple effect at the specified position.\n */\n protected createRipple(event: MouseEvent): void {\n if (!this.ripple()) return;\n\n const button = event.currentTarget as HTMLElement;\n const rect = button.getBoundingClientRect();\n const size = Math.max(rect.width, rect.height);\n const x = event.clientX - rect.left - size / 2;\n const y = event.clientY - rect.top - size / 2;\n\n const ripple = document.createElement('span');\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = x + 'px';\n ripple.style.top = y + 'px';\n ripple.classList.add('sdc-ripple');\n\n button.appendChild(ripple);\n\n setTimeout(() => {\n ripple.remove();\n }, 600);\n }\n}\n","<button\n hlmBtn\n [class]=\"computedClass()\"\n [disabled]=\"disabled() || debounceState()\"\n (click)=\"handleClick($event); createRipple($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [type]=\"type()\">\n <ng-content></ng-content>\n</button>\n","/*\n * Public API Surface of software-division-components\n */\n\nexport * from './button.component';\nexport { HlmButton, HlmButtonModule, buttonVariants, provideBrnButtonConfig } from './ui/ui-button-helm/src';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.HlmButton"],"mappings":"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"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import { HttpClient
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { inject, ElementRef, input, signal, effect, ChangeDetectionStrategy, ViewEncapsulation, Component, InjectionToken, computed, Directive, NgModule } from '@angular/core';
|
|
4
4
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
5
5
|
import { map, shareReplay } from 'rxjs';
|
|
6
6
|
|
|
7
|
-
/** Bumped when fetch strategy changes so we do not reuse errored `shareReplay` streams. */
|
|
8
|
-
const ICON_CACHE_SCHEME = 'http-backend-v1';
|
|
9
7
|
const iconCache = new Map();
|
|
10
8
|
class SvgIconComponent {
|
|
11
|
-
// DI
|
|
12
|
-
|
|
9
|
+
// DI
|
|
10
|
+
http = inject(HttpClient);
|
|
13
11
|
cache = iconCache;
|
|
14
12
|
sanitizer = inject(DomSanitizer);
|
|
15
13
|
elementRef = inject(ElementRef);
|
|
@@ -18,17 +16,17 @@ class SvgIconComponent {
|
|
|
18
16
|
iconFolder = input(...(ngDevMode ? [undefined, { debugName: "iconFolder" }] : []));
|
|
19
17
|
className = input('', ...(ngDevMode ? [{ debugName: "className" }] : []));
|
|
20
18
|
color = input('currentColor', ...(ngDevMode ? [{ debugName: "color" }] : []));
|
|
21
|
-
|
|
22
|
-
strokeWidth = input(0, ...(ngDevMode ? [{ debugName: "strokeWidth" }] : []));
|
|
19
|
+
strokeWidth = input(1, ...(ngDevMode ? [{ debugName: "strokeWidth" }] : []));
|
|
23
20
|
// STATE
|
|
24
21
|
svgContent = signal(null, ...(ngDevMode ? [{ debugName: "svgContent" }] : []));
|
|
25
22
|
constructor() {
|
|
26
23
|
effect(() => {
|
|
27
|
-
this.
|
|
28
|
-
});
|
|
29
|
-
effect(() => {
|
|
30
|
-
this.getIcon().subscribe({
|
|
24
|
+
this.getIcon(this.name()).subscribe({
|
|
31
25
|
next: svg => {
|
|
26
|
+
const element = this.elementRef.nativeElement;
|
|
27
|
+
// Apply dynamic properties
|
|
28
|
+
element.style.setProperty('--icon-color', this.resolveColor(this.color()));
|
|
29
|
+
element.style.setProperty('--icon-stroke-width', this.strokeWidth().toString());
|
|
32
30
|
this.svgContent.set(this.sanitizer.bypassSecurityTrustHtml(svg));
|
|
33
31
|
},
|
|
34
32
|
error: (error) => {
|
|
@@ -40,46 +38,22 @@ class SvgIconComponent {
|
|
|
40
38
|
});
|
|
41
39
|
});
|
|
42
40
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
element.classList.add('sdc-svg-icon--stroke');
|
|
49
|
-
element.style.setProperty('--icon-stroke-width', String(sw));
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
element.classList.remove('sdc-svg-icon--stroke');
|
|
53
|
-
element.style.removeProperty('--icon-stroke-width');
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Cache key must include folder: the same `name` can exist under different paths
|
|
58
|
-
* (e.g. `assets/x.svg` vs `assets/img/x.svg`). Caching by name alone poisoned later loads.
|
|
59
|
-
*/
|
|
60
|
-
getIcon() {
|
|
61
|
-
const folder = this.iconFolder() ?? 'assets';
|
|
62
|
-
const iconName = this.name();
|
|
63
|
-
const cacheKey = `${ICON_CACHE_SCHEME}:${folder}/${iconName}`;
|
|
64
|
-
if (!this.cache.has(cacheKey)) {
|
|
65
|
-
const icon$ = this.httpPlain.get(`/${folder}/${iconName}.svg`, { responseType: 'text' }).pipe(map((svg) => this.sanitizeSvg(svg)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
66
|
-
this.cache.set(cacheKey, icon$);
|
|
41
|
+
getIcon(name) {
|
|
42
|
+
if (!this.cache.has(name)) {
|
|
43
|
+
const folder = this.iconFolder() ?? 'assets';
|
|
44
|
+
const icon$ = this.http.get(`/${folder}/${name}.svg`, { responseType: 'text' }).pipe(map(svg => this.sanitizeSvg(svg)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
45
|
+
this.cache.set(name, icon$);
|
|
67
46
|
}
|
|
68
|
-
return this.cache.get(
|
|
47
|
+
return this.cache.get(name);
|
|
69
48
|
}
|
|
70
49
|
sanitizeSvg(svg) {
|
|
71
|
-
|
|
50
|
+
return (svg
|
|
72
51
|
// Remove any existing width/height attributes to make the SVG more flexible
|
|
73
52
|
.replace(/\swidth="[^"]*"/g, '')
|
|
74
53
|
.replace(/\sheight="[^"]*"/g, '')
|
|
75
54
|
// Strip hardcoded fill/stroke so CSS variable takes effect
|
|
76
55
|
.replace(/\sfill="(?!none)[^"]*"/g, '')
|
|
77
|
-
.replace(/\sstroke="(?!none)[^"]*"/g, '');
|
|
78
|
-
// Avoid clipping stroke/paint at the root when assets are tight to viewBox
|
|
79
|
-
if (!/\soverflow\s*=/i.test(out)) {
|
|
80
|
-
out = out.replace(/<svg\b/i, '<svg overflow="visible" ');
|
|
81
|
-
}
|
|
82
|
-
return out;
|
|
56
|
+
.replace(/\sstroke="(?!none)[^"]*"/g, ''));
|
|
83
57
|
}
|
|
84
58
|
/**
|
|
85
59
|
* Resolves the color input to a valid CSS value.
|
|
@@ -99,13 +73,13 @@ class SvgIconComponent {
|
|
|
99
73
|
return `var(--color-${color})`;
|
|
100
74
|
}
|
|
101
75
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: SvgIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: SvgIconComponent, isStandalone: true, selector: "sdc-svg-icon", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, iconFolder: { classPropertyName: "iconFolder", publicName: "iconFolder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, strokeWidth: { classPropertyName: "strokeWidth", publicName: "strokeWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()" } }, ngImport: i0, template: "@if (svgContent(); as content) {\n <span class=\"
|
|
76
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: SvgIconComponent, isStandalone: true, selector: "sdc-svg-icon", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, iconFolder: { classPropertyName: "iconFolder", publicName: "iconFolder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, strokeWidth: { classPropertyName: "strokeWidth", publicName: "strokeWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()" } }, ngImport: i0, template: "@if (svgContent(); as content) {\n <span class=\"inline-block app-svg-icon\" [innerHTML]=\"content\"></span>\n}\n", styles: [".app-svg-icon svg{fill:var(--icon-color, currentColor);stroke:var(--icon-color, currentColor);stroke-width:var(--icon-stroke-width, 1);width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
103
77
|
}
|
|
104
78
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: SvgIconComponent, decorators: [{
|
|
105
79
|
type: Component,
|
|
106
80
|
args: [{ selector: 'sdc-svg-icon', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
107
81
|
'[class]': 'className()',
|
|
108
|
-
}, template: "@if (svgContent(); as content) {\n <span class=\"
|
|
82
|
+
}, template: "@if (svgContent(); as content) {\n <span class=\"inline-block app-svg-icon\" [innerHTML]=\"content\"></span>\n}\n", styles: [".app-svg-icon svg{fill:var(--icon-color, currentColor);stroke:var(--icon-color, currentColor);stroke-width:var(--icon-stroke-width, 1);width:100%;height:100%}\n"] }]
|
|
109
83
|
}], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], iconFolder: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconFolder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], strokeWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "strokeWidth", required: false }] }] } });
|
|
110
84
|
|
|
111
85
|
const defaultConfig = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"3ddv-software-division-components-generic-icon.mjs","sources":["../../generic/icon/icon.component.ts","../../generic/icon/icon.component.html","../../generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.token.ts","../../generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.ts","../../generic/icon/lib/ui-icon-helm/src/index.ts","../../generic/icon/public-api.ts","../../generic/icon/3ddv-software-division-components-generic-icon.ts"],"sourcesContent":["import { HttpBackend, HttpClient } from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { map, Observable, shareReplay } from 'rxjs';\n\n/** Bumped when fetch strategy changes so we do not reuse errored `shareReplay` streams. */\nconst ICON_CACHE_SCHEME = 'http-backend-v1';\n\nconst iconCache = new Map<string, Observable<string>>();\n\n@Component({\n selector: 'sdc-svg-icon',\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'className()',\n },\n})\nexport class SvgIconComponent {\n // DI — use HttpClient(HttpBackend) so static SVG fetches skip app interceptors\n private readonly httpPlain = new HttpClient(inject(HttpBackend));\n private readonly cache = iconCache;\n private readonly sanitizer = inject(DomSanitizer);\n private readonly elementRef = inject(ElementRef);\n\n // INPUTS / OUTPUTS\n public readonly name = input.required<string>();\n public readonly iconFolder = input<string>();\n public readonly className = input<string>('');\n public readonly color = input<string>('currentColor');\n /** Use `> 0` when the asset relies on stroke */\n public readonly strokeWidth = input<number>(0);\n\n // STATE\n public readonly svgContent = signal<SafeHtml | null>(null);\n\n public constructor() {\n effect(() => {\n this.syncHostPaintVars();\n });\n\n effect(() => {\n this.getIcon().subscribe({\n next: svg => {\n this.svgContent.set(this.sanitizer.bypassSecurityTrustHtml(svg));\n },\n error: (error: unknown) => {\n console.error('Failed to load icon:', error);\n // Optional: set a minimal fallback SVG or clear content\n this.svgContent.set(\n this.sanitizer.bypassSecurityTrustHtml(\n `<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 8v4m0 4h.01\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"/></svg>`\n )\n );\n },\n });\n });\n }\n\n private syncHostPaintVars(): void {\n const element = this.elementRef.nativeElement as HTMLElement;\n element.style.setProperty('--icon-color', this.resolveColor(this.color()));\n const sw = this.strokeWidth();\n if (sw > 0) {\n element.classList.add('sdc-svg-icon--stroke');\n element.style.setProperty('--icon-stroke-width', String(sw));\n } else {\n element.classList.remove('sdc-svg-icon--stroke');\n element.style.removeProperty('--icon-stroke-width');\n }\n }\n\n /**\n * Cache key must include folder: the same `name` can exist under different paths\n * (e.g. `assets/x.svg` vs `assets/img/x.svg`). Caching by name alone poisoned later loads.\n */\n public getIcon(): Observable<string> {\n const folder: string = this.iconFolder() ?? 'assets';\n const iconName: string = this.name();\n const cacheKey: string = `${ICON_CACHE_SCHEME}:${folder}/${iconName}`;\n\n if (!this.cache.has(cacheKey)) {\n const icon$: Observable<string> = this.httpPlain.get(`/${folder}/${iconName}.svg`, { responseType: 'text' }).pipe(\n map((svg: string) => this.sanitizeSvg(svg)),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n\n this.cache.set(cacheKey, icon$);\n }\n\n return this.cache.get(cacheKey)!;\n }\n\n private sanitizeSvg(svg: string): string {\n let out = svg\n // Remove any existing width/height attributes to make the SVG more flexible\n .replace(/\\swidth=\"[^\"]*\"/g, '')\n .replace(/\\sheight=\"[^\"]*\"/g, '')\n // Strip hardcoded fill/stroke so CSS variable takes effect\n .replace(/\\sfill=\"(?!none)[^\"]*\"/g, '')\n .replace(/\\sstroke=\"(?!none)[^\"]*\"/g, '');\n\n // Avoid clipping stroke/paint at the root when assets are tight to viewBox\n if (!/\\soverflow\\s*=/i.test(out)) {\n out = out.replace(/<svg\\b/i, '<svg overflow=\"visible\" ');\n }\n\n return out;\n }\n\n /**\n * Resolves the color input to a valid CSS value.\n * - Already-valid CSS values (var(), #hex, rgb(), hsl(), currentColor) pass through unchanged.\n * - A raw CSS variable name starting with \"--\" is wrapped: \"--my-var\" → \"var(--my-var)\".\n * - Any other string is treated as a design-token name and resolved via the\n * \"--color-\" prefix convention: \"accent\" → \"var(--color-accent)\".\n */\n private resolveColor(color: string): string {\n const passThroughPrefixes = ['currentColor', 'var(', '#', 'rgb(', 'rgba(', 'hsl(', 'hsla('];\n\n if (passThroughPrefixes.some(prefix => color.startsWith(prefix))) {\n return color;\n }\n\n if (color.startsWith('--')) {\n return `var(${color})`;\n }\n\n return `var(--color-${color})`;\n }\n}\n","@if (svgContent(); as content) {\n <span class=\"sdc-svg-icon\" [innerHTML]=\"content\"></span>\n}\n","import { InjectionToken, ValueProvider, inject } from '@angular/core';\nimport type { IconSize } from './hlm-icon';\n\nexport interface HlmIconConfig {\n size: IconSize;\n}\n\nconst defaultConfig: HlmIconConfig = {\n size: 'base',\n};\n\nconst HlmIconConfigToken = new InjectionToken<HlmIconConfig>('HlmIconConfig');\n\nexport function provideHlmIconConfig(config: Partial<HlmIconConfig>): ValueProvider {\n return { provide: HlmIconConfigToken, useValue: { ...defaultConfig, ...config } };\n}\n\nexport function injectHlmIconConfig(): HlmIconConfig {\n return inject(HlmIconConfigToken, { optional: true }) ?? defaultConfig;\n}\n","import { Directive, computed, input } from '@angular/core';\nimport { injectHlmIconConfig } from './hlm-icon.token';\n\nexport type IconSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | 'none' | (Record<never, never> & string);\n\n@Directive({\n selector: 'ng-icon[hlm]',\n standalone: true,\n host: {\n '[style.--ng-icon__size]': '_computedSize()',\n },\n})\nexport class HlmIcon {\n private readonly _config = injectHlmIconConfig();\n public readonly size = input<IconSize>(this._config.size);\n public readonly variant = input<'light' | 'dark'>('light');\n\n protected readonly _computedSize = computed(() => {\n const size = this.size();\n\n switch (size) {\n case 'xs':\n return '12px';\n case 'sm':\n return '16px';\n case 'base':\n return '24px';\n case 'lg':\n return '32px';\n case 'xl':\n return '48px';\n default: {\n return size;\n }\n }\n });\n}\n","import { NgModule } from '@angular/core';\nimport { HlmIcon } from './lib/hlm-icon';\n\nexport * from './lib/hlm-icon';\nexport * from './lib/hlm-icon.token';\n\n@NgModule({\n imports: [HlmIcon],\n exports: [HlmIcon],\n})\nexport class HlmIconModule {}\n","/*\n * Public API Surface of software-division-components\n */\n\nexport * from './icon.component';\nexport { HlmIcon, HlmIconModule } from './lib/ui-icon-helm/src';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"3ddv-software-division-components-generic-icon.mjs","sources":["../../generic/icon/icon.component.ts","../../generic/icon/icon.component.html","../../generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.token.ts","../../generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.ts","../../generic/icon/lib/ui-icon-helm/src/index.ts","../../generic/icon/public-api.ts","../../generic/icon/3ddv-software-division-components-generic-icon.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { map, Observable, shareReplay } from 'rxjs';\n\nconst iconCache = new Map<string, Observable<string>>();\n\n@Component({\n selector: 'sdc-svg-icon',\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'className()',\n },\n})\nexport class SvgIconComponent {\n // DI\n private readonly http = inject(HttpClient);\n private readonly cache = iconCache;\n private readonly sanitizer = inject(DomSanitizer);\n private readonly elementRef = inject(ElementRef);\n\n // INPUTS / OUTPUTS\n public readonly name = input.required<string>();\n public readonly iconFolder = input<string>();\n public readonly className = input<string>('');\n public readonly color = input<string>('currentColor');\n public readonly strokeWidth = input<number>(1);\n\n // STATE\n public readonly svgContent = signal<SafeHtml | null>(null);\n\n public constructor() {\n effect(() => {\n this.getIcon(this.name()).subscribe({\n next: svg => {\n const element = this.elementRef.nativeElement as HTMLElement;\n\n // Apply dynamic properties\n element.style.setProperty('--icon-color', this.resolveColor(this.color()));\n element.style.setProperty('--icon-stroke-width', this.strokeWidth().toString());\n\n this.svgContent.set(this.sanitizer.bypassSecurityTrustHtml(svg));\n },\n error: (error: unknown) => {\n console.error('Failed to load icon:', error);\n // Optional: set a minimal fallback SVG or clear content\n this.svgContent.set(\n this.sanitizer.bypassSecurityTrustHtml(\n `<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 8v4m0 4h.01\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"/></svg>`\n )\n );\n },\n });\n });\n }\n\n public getIcon(name: string): Observable<string> {\n if (!this.cache.has(name)) {\n const folder = this.iconFolder() ?? 'assets';\n const icon$ = this.http.get(`/${folder}/${name}.svg`, { responseType: 'text' }).pipe(\n map(svg => this.sanitizeSvg(svg)),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n\n this.cache.set(name, icon$);\n }\n\n return this.cache.get(name)!;\n }\n\n private sanitizeSvg(svg: string): string {\n return (\n svg\n // Remove any existing width/height attributes to make the SVG more flexible\n .replace(/\\swidth=\"[^\"]*\"/g, '')\n .replace(/\\sheight=\"[^\"]*\"/g, '')\n // Strip hardcoded fill/stroke so CSS variable takes effect\n .replace(/\\sfill=\"(?!none)[^\"]*\"/g, '')\n .replace(/\\sstroke=\"(?!none)[^\"]*\"/g, '')\n );\n }\n\n /**\n * Resolves the color input to a valid CSS value.\n * - Already-valid CSS values (var(), #hex, rgb(), hsl(), currentColor) pass through unchanged.\n * - A raw CSS variable name starting with \"--\" is wrapped: \"--my-var\" → \"var(--my-var)\".\n * - Any other string is treated as a design-token name and resolved via the\n * \"--color-\" prefix convention: \"accent\" → \"var(--color-accent)\".\n */\n private resolveColor(color: string): string {\n const passThroughPrefixes = ['currentColor', 'var(', '#', 'rgb(', 'rgba(', 'hsl(', 'hsla('];\n\n if (passThroughPrefixes.some(prefix => color.startsWith(prefix))) {\n return color;\n }\n\n if (color.startsWith('--')) {\n return `var(${color})`;\n }\n\n return `var(--color-${color})`;\n }\n}\n","@if (svgContent(); as content) {\n <span class=\"inline-block app-svg-icon\" [innerHTML]=\"content\"></span>\n}\n","import { InjectionToken, ValueProvider, inject } from '@angular/core';\nimport type { IconSize } from './hlm-icon';\n\nexport interface HlmIconConfig {\n size: IconSize;\n}\n\nconst defaultConfig: HlmIconConfig = {\n size: 'base',\n};\n\nconst HlmIconConfigToken = new InjectionToken<HlmIconConfig>('HlmIconConfig');\n\nexport function provideHlmIconConfig(config: Partial<HlmIconConfig>): ValueProvider {\n return { provide: HlmIconConfigToken, useValue: { ...defaultConfig, ...config } };\n}\n\nexport function injectHlmIconConfig(): HlmIconConfig {\n return inject(HlmIconConfigToken, { optional: true }) ?? defaultConfig;\n}\n","import { Directive, computed, input } from '@angular/core';\nimport { injectHlmIconConfig } from './hlm-icon.token';\n\nexport type IconSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | 'none' | (Record<never, never> & string);\n\n@Directive({\n selector: 'ng-icon[hlm]',\n standalone: true,\n host: {\n '[style.--ng-icon__size]': '_computedSize()',\n },\n})\nexport class HlmIcon {\n private readonly _config = injectHlmIconConfig();\n public readonly size = input<IconSize>(this._config.size);\n public readonly variant = input<'light' | 'dark'>('light');\n\n protected readonly _computedSize = computed(() => {\n const size = this.size();\n\n switch (size) {\n case 'xs':\n return '12px';\n case 'sm':\n return '16px';\n case 'base':\n return '24px';\n case 'lg':\n return '32px';\n case 'xl':\n return '48px';\n default: {\n return size;\n }\n }\n });\n}\n","import { NgModule } from '@angular/core';\nimport { HlmIcon } from './lib/hlm-icon';\n\nexport * from './lib/hlm-icon';\nexport * from './lib/hlm-icon.token';\n\n@NgModule({\n imports: [HlmIcon],\n exports: [HlmIcon],\n})\nexport class HlmIconModule {}\n","/*\n * Public API Surface of software-division-components\n */\n\nexport * from './icon.component';\nexport { HlmIcon, HlmIconModule } from './lib/ui-icon-helm/src';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
|
|
|
22
22
|
}] });
|
|
23
23
|
|
|
24
24
|
// changes
|
|
25
|
-
const DEFAULT_TOOLTIP_CONTENT_CLASSES$1 = 'bg-primary text-white animate-in fade-in-0 zoom-in-95 z-50 w-fit max-w-xs rounded-md px-3 py-1.5 text-xs
|
|
25
|
+
const DEFAULT_TOOLTIP_CONTENT_CLASSES$1 = 'bg-primary text-white animate-in fade-in-0 zoom-in-95 z-50 w-fit max-w-xs rounded-md px-3 py-1.5 text-xs ' +
|
|
26
26
|
'data-[state=open]:animate-in ' +
|
|
27
27
|
'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 ' +
|
|
28
28
|
'data-[side=below]:slide-in-from-top-2 data-[side=above]:slide-in-from-bottom-2 ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"3ddv-software-division-components-generic-tooltip.mjs","sources":["../../generic/tooltip/ui/ui-tooltip-helm/src/lib/hlm-tooltip.ts","../../generic/tooltip/ui/ui-tooltip-helm/src/lib/hlm-tooltip-directive.ts","../../generic/tooltip/ui/ui-tooltip-helm/src/lib/hlm-tooltip-trigger.ts","../../generic/tooltip/ui/ui-tooltip-helm/src/index.ts","../../generic/tooltip/3ddv-software-division-components-generic-tooltip.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { BrnTooltip } from '@spartan-ng/brain/tooltip';\n\n@Component({\n selector: 'hlm-tooltip',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style]': '{display: \"contents\"}',\n },\n hostDirectives: [BrnTooltip],\n template: `<ng-content />`,\n})\nexport class HlmTooltip {}\n","import { Directive } from '@angular/core';\nimport { BrnTooltipTrigger, provideBrnTooltipDefaultOptions } from '@spartan-ng/brain/tooltip';\n\n// changes\nconst DEFAULT_TOOLTIP_CONTENT_CLASSES =\n 'bg-primary text-white animate-in fade-in-0 zoom-in-95 z-50 w-fit max-w-xs rounded-md px-3 py-1.5 text-xs
|
|
1
|
+
{"version":3,"file":"3ddv-software-division-components-generic-tooltip.mjs","sources":["../../generic/tooltip/ui/ui-tooltip-helm/src/lib/hlm-tooltip.ts","../../generic/tooltip/ui/ui-tooltip-helm/src/lib/hlm-tooltip-directive.ts","../../generic/tooltip/ui/ui-tooltip-helm/src/lib/hlm-tooltip-trigger.ts","../../generic/tooltip/ui/ui-tooltip-helm/src/index.ts","../../generic/tooltip/3ddv-software-division-components-generic-tooltip.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { BrnTooltip } from '@spartan-ng/brain/tooltip';\n\n@Component({\n selector: 'hlm-tooltip',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style]': '{display: \"contents\"}',\n },\n hostDirectives: [BrnTooltip],\n template: `<ng-content />`,\n})\nexport class HlmTooltip {}\n","import { Directive } from '@angular/core';\nimport { BrnTooltipTrigger, provideBrnTooltipDefaultOptions } from '@spartan-ng/brain/tooltip';\n\n// changes\nconst DEFAULT_TOOLTIP_CONTENT_CLASSES =\n 'bg-primary text-white animate-in fade-in-0 zoom-in-95 z-50 w-fit max-w-xs rounded-md px-3 py-1.5 text-xs ' +\n 'data-[state=open]:animate-in ' +\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 ' +\n 'data-[side=below]:slide-in-from-top-2 data-[side=above]:slide-in-from-bottom-2 ' +\n 'data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 ';\n\n@Directive({\n selector: '[sdcTooltip]',\n providers: [\n provideBrnTooltipDefaultOptions({\n showDelay: 150,\n hideDelay: 300,\n exitAnimationDuration: 150,\n tooltipContentClasses: DEFAULT_TOOLTIP_CONTENT_CLASSES,\n }),\n ],\n hostDirectives: [\n {\n directive: BrnTooltipTrigger,\n inputs: [\n 'brnTooltipTrigger: sdcTooltip',\n 'position',\n 'positionAtOrigin',\n 'hideDelay',\n 'showDelay',\n 'exitAnimationDuration',\n 'touchGestures',\n ],\n },\n ],\n})\nexport class SdcTooltipDirective {}\n","import { Directive } from '@angular/core';\nimport { BrnTooltipTrigger, provideBrnTooltipDefaultOptions } from '@spartan-ng/brain/tooltip';\n\nconst DEFAULT_TOOLTIP_CONTENT_CLASSES =\n 'bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance ' +\n 'data-[state=open]:animate-in ' +\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 ' +\n 'data-[side=below]:slide-in-from-top-2 data-[side=above]:slide-in-from-bottom-2 ' +\n 'data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 ';\n\n@Directive({\n selector: '[hlmTooltipTrigger]',\n providers: [\n provideBrnTooltipDefaultOptions({\n showDelay: 150,\n hideDelay: 300,\n exitAnimationDuration: 150,\n tooltipContentClasses: DEFAULT_TOOLTIP_CONTENT_CLASSES,\n }),\n ],\n hostDirectives: [\n {\n directive: BrnTooltipTrigger,\n inputs: [\n 'brnTooltipDisabled: hlmTooltipDisabled',\n 'brnTooltipTrigger: hlmTooltipTrigger',\n 'aria-describedby',\n 'position',\n 'positionAtOrigin',\n 'hideDelay',\n 'showDelay',\n 'exitAnimationDuration',\n 'touchGestures',\n ],\n },\n ],\n})\nexport class HlmTooltipTrigger {}\n","import { NgModule } from '@angular/core';\nimport { HlmTooltip } from './lib/hlm-tooltip';\nimport { SdcTooltipDirective } from './lib/hlm-tooltip-directive';\nimport { HlmTooltipTrigger } from './lib/hlm-tooltip-trigger';\n\nexport * from './lib/hlm-tooltip';\nexport * from './lib/hlm-tooltip-directive';\nexport * from './lib/hlm-tooltip-trigger';\n\nexport const HlmTooltipImports = [HlmTooltip, HlmTooltipTrigger, SdcTooltipDirective] as const;\n\n@NgModule({\n imports: [...HlmTooltipImports],\n exports: [...HlmTooltipImports],\n})\nexport class HlmTooltipModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_TOOLTIP_CONTENT_CLASSES"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@3ddv/software-division-components",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.2",
|
|
4
4
|
"main": "./fesm2022/3ddv-software-division-components.mjs",
|
|
5
5
|
"module": "fesm2022/3ddv-software-division-components.mjs",
|
|
6
6
|
"typings": "types/3ddv-software-division-components.d.ts",
|