@lumston/ds-angular 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/fesm2022/lumston-ds-angular-src-data-display.mjs +215 -0
  2. package/fesm2022/lumston-ds-angular-src-data-display.mjs.map +1 -0
  3. package/fesm2022/lumston-ds-angular-src-dropdown.mjs +94 -0
  4. package/fesm2022/lumston-ds-angular-src-dropdown.mjs.map +1 -0
  5. package/fesm2022/lumston-ds-angular-src-feedback.mjs +400 -0
  6. package/fesm2022/lumston-ds-angular-src-feedback.mjs.map +1 -0
  7. package/fesm2022/lumston-ds-angular-src-icon.mjs +148 -0
  8. package/fesm2022/lumston-ds-angular-src-icon.mjs.map +1 -0
  9. package/fesm2022/lumston-ds-angular-src-inputs.mjs +1132 -0
  10. package/fesm2022/lumston-ds-angular-src-inputs.mjs.map +1 -0
  11. package/fesm2022/lumston-ds-angular-src-navigation.mjs +473 -0
  12. package/fesm2022/lumston-ds-angular-src-navigation.mjs.map +1 -0
  13. package/fesm2022/lumston-ds-angular-src-overlay.mjs +1038 -0
  14. package/fesm2022/lumston-ds-angular-src-overlay.mjs.map +1 -0
  15. package/fesm2022/lumston-ds-angular-src-typography.mjs +303 -0
  16. package/fesm2022/lumston-ds-angular-src-typography.mjs.map +1 -0
  17. package/fesm2022/lumston-ds-angular.mjs +90 -65
  18. package/fesm2022/lumston-ds-angular.mjs.map +1 -1
  19. package/package.json +58 -32
  20. package/styles/index.css +0 -24
  21. package/styles/ls-icons.css +482 -0
  22. package/types/lumston-ds-angular-src-data-display.d.ts +50 -0
  23. package/types/lumston-ds-angular-src-data-display.d.ts.map +1 -0
  24. package/types/lumston-ds-angular-src-dropdown.d.ts +28 -0
  25. package/types/lumston-ds-angular-src-dropdown.d.ts.map +1 -0
  26. package/types/lumston-ds-angular-src-feedback.d.ts +75 -0
  27. package/types/lumston-ds-angular-src-feedback.d.ts.map +1 -0
  28. package/types/lumston-ds-angular-src-icon.d.ts +27 -0
  29. package/types/lumston-ds-angular-src-icon.d.ts.map +1 -0
  30. package/types/lumston-ds-angular-src-inputs.d.ts +201 -0
  31. package/types/lumston-ds-angular-src-inputs.d.ts.map +1 -0
  32. package/types/lumston-ds-angular-src-navigation.d.ts +186 -0
  33. package/types/lumston-ds-angular-src-navigation.d.ts.map +1 -0
  34. package/types/lumston-ds-angular-src-overlay.d.ts +357 -0
  35. package/types/lumston-ds-angular-src-overlay.d.ts.map +1 -0
  36. package/types/lumston-ds-angular-src-typography.d.ts +51 -0
  37. package/types/lumston-ds-angular-src-typography.d.ts.map +1 -0
  38. package/types/lumston-ds-angular.d.ts.map +1 -1
@@ -0,0 +1,400 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, output, computed, effect, ChangeDetectionStrategy, Component, inject } from '@angular/core';
3
+ import { DomSanitizer } from '@angular/platform-browser';
4
+
5
+ class ProgressBarComponent {
6
+ constructor() {
7
+ this.variant = input('indeterminate', ...(ngDevMode ? [{ debugName: "variant" }] : []));
8
+ this.color = input('primary', ...(ngDevMode ? [{ debugName: "color" }] : []));
9
+ this.value = input(0, ...(ngDevMode ? [{ debugName: "value" }] : []));
10
+ this.showLabel = input(false, ...(ngDevMode ? [{ debugName: "showLabel" }] : []));
11
+ this.labelPosition = input('inside', ...(ngDevMode ? [{ debugName: "labelPosition" }] : []));
12
+ this.size = input('medium', ...(ngDevMode ? [{ debugName: "size" }] : []));
13
+ this.onFinished = output();
14
+ this._sizeClassMap = {
15
+ small: 'progress-bar-sm',
16
+ medium: 'progress-bar-md',
17
+ large: 'progress-bar-lg',
18
+ 'extra-large': 'progress-bar-xl',
19
+ };
20
+ this.clampedValue = computed(() => Math.min(100, Math.max(0, this.value())), ...(ngDevMode ? [{ debugName: "clampedValue" }] : []));
21
+ this.trackClasses = computed(() => {
22
+ const classes = ['progress-bar-track'];
23
+ classes.push(this._sizeClassMap[this.size()]);
24
+ return classes.join(' ');
25
+ }, ...(ngDevMode ? [{ debugName: "trackClasses" }] : []));
26
+ this.indicatorClasses = computed(() => {
27
+ const classes = ['progress-bar-indicator'];
28
+ classes.push(`progress-bar-${this.color()}`);
29
+ const v = this.variant();
30
+ if (v === 'stripe') {
31
+ classes.push('progress-bar-stripe');
32
+ }
33
+ else if (v === 'animated') {
34
+ classes.push('progress-bar-animated');
35
+ }
36
+ else if (v === 'indeterminate') {
37
+ classes.push('progress-bar-indeterminate');
38
+ }
39
+ return classes.join(' ');
40
+ }, ...(ngDevMode ? [{ debugName: "indicatorClasses" }] : []));
41
+ this.indicatorWidth = computed(() => {
42
+ if (this.variant() === 'indeterminate') {
43
+ return '100%';
44
+ }
45
+ return `${this.clampedValue()}%`;
46
+ }, ...(ngDevMode ? [{ debugName: "indicatorWidth" }] : []));
47
+ this.labelText = computed(() => `${this.clampedValue()}%`, ...(ngDevMode ? [{ debugName: "labelText" }] : []));
48
+ this.labelClasses = computed(() => {
49
+ const classes = ['progress-bar-label'];
50
+ if (this.labelPosition() === 'inside') {
51
+ classes.push('progress-bar-label-inside');
52
+ if (this.clampedValue() < 15) {
53
+ classes.push('progress-bar-label-dark');
54
+ }
55
+ else {
56
+ classes.push('progress-bar-label-light');
57
+ }
58
+ }
59
+ else {
60
+ classes.push('progress-bar-label-right');
61
+ }
62
+ return classes.join(' ');
63
+ }, ...(ngDevMode ? [{ debugName: "labelClasses" }] : []));
64
+ effect(() => {
65
+ if (this.variant() !== 'indeterminate' &&
66
+ this.value() >= 100) {
67
+ this.onFinished.emit();
68
+ }
69
+ });
70
+ }
71
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
72
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: ProgressBarComponent, isStandalone: true, selector: "ls-progress-bar", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, showLabel: { classPropertyName: "showLabel", publicName: "showLabel", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFinished: "onFinished" }, ngImport: i0, template: `
73
+ <div class="progress-bar-wrapper">
74
+ <div
75
+ [class]="trackClasses()"
76
+ role="progressbar"
77
+ [attr.aria-valuenow]="variant() === 'indeterminate' ? null : clampedValue()"
78
+ aria-valuemin="0"
79
+ aria-valuemax="100"
80
+ [attr.aria-label]="labelText()">
81
+
82
+ <div
83
+ [class]="indicatorClasses()"
84
+ [style.width]="indicatorWidth()">
85
+ </div>
86
+
87
+ @if (showLabel() && labelPosition() === 'inside' && variant() !== 'indeterminate') {
88
+ <span
89
+ [class]="labelClasses()"
90
+ [style.left.%]="clampedValue()">
91
+ {{ labelText() }}
92
+ </span>
93
+ }
94
+ </div>
95
+
96
+ @if (showLabel() && labelPosition() === 'right' && variant() !== 'indeterminate') {
97
+ <span [class]="labelClasses()">
98
+ {{ labelText() }}
99
+ </span>
100
+ }
101
+ </div>
102
+ `, isInline: true, styles: [":host{display:contents}.progress-bar-wrapper{display:flex;align-items:center;width:100%;gap:8px}.progress-bar-track{position:relative;width:100%;background-color:#e5e7eb;border-radius:var(--ls-border-radius-full);overflow:hidden}.progress-bar-sm{height:4px}.progress-bar-md{height:8px}.progress-bar-lg{height:16px}.progress-bar-xl{height:24px}.progress-bar-indicator{height:100%;border-radius:var(--ls-border-radius-full);transition:width var(--ls-transition-duration) ease;position:relative}.progress-bar-stripe{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem;animation:ls-progress-bar-stripes 1s linear infinite}.progress-bar-indeterminate{animation:ls-progress-bar-indeterminate 1.5s cubic-bezier(.65,.815,.735,.395) infinite;width:35%!important;position:absolute}@keyframes ls-progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes ls-progress-bar-indeterminate{0%{transform:translate(-100%)}to{transform:translate(300%)}}.progress-bar-label{font-size:.625rem;font-weight:600;white-space:nowrap;line-height:1}.progress-bar-label-inside{position:absolute;top:50%;transform:translate(-100%,-50%);margin-left:-4px;z-index:2;transition:left var(--ls-transition-duration) ease;pointer-events:none}.progress-bar-label-dark.progress-bar-label-inside{transform:translate(4px,-50%)}.progress-bar-label-right{flex-shrink:0;font-size:.75rem;color:#1f2937}.progress-bar-label-dark{color:#1f2937}.progress-bar-label-light{color:#fff}.progress-bar-primary{background-color:var(--ls-color-primary)}.progress-bar-secondary{background-color:var(--ls-color-secondary)}.progress-bar-error{background-color:var(--ls-color-danger)}.progress-bar-info{background-color:var(--ls-color-info)}.progress-bar-success{background-color:var(--ls-color-success)}.progress-bar-warning{background-color:var(--ls-color-warning)}.progress-bar-inherit{background-color:currentColor}body.dark .progress-bar-track{background-color:#374151}body.dark .progress-bar-label-right{color:#e5e7eb}body.dark .progress-bar-label-dark{color:#f3f4f6}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
103
+ }
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ProgressBarComponent, decorators: [{
105
+ type: Component,
106
+ args: [{ selector: 'ls-progress-bar', standalone: true, template: `
107
+ <div class="progress-bar-wrapper">
108
+ <div
109
+ [class]="trackClasses()"
110
+ role="progressbar"
111
+ [attr.aria-valuenow]="variant() === 'indeterminate' ? null : clampedValue()"
112
+ aria-valuemin="0"
113
+ aria-valuemax="100"
114
+ [attr.aria-label]="labelText()">
115
+
116
+ <div
117
+ [class]="indicatorClasses()"
118
+ [style.width]="indicatorWidth()">
119
+ </div>
120
+
121
+ @if (showLabel() && labelPosition() === 'inside' && variant() !== 'indeterminate') {
122
+ <span
123
+ [class]="labelClasses()"
124
+ [style.left.%]="clampedValue()">
125
+ {{ labelText() }}
126
+ </span>
127
+ }
128
+ </div>
129
+
130
+ @if (showLabel() && labelPosition() === 'right' && variant() !== 'indeterminate') {
131
+ <span [class]="labelClasses()">
132
+ {{ labelText() }}
133
+ </span>
134
+ }
135
+ </div>
136
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:contents}.progress-bar-wrapper{display:flex;align-items:center;width:100%;gap:8px}.progress-bar-track{position:relative;width:100%;background-color:#e5e7eb;border-radius:var(--ls-border-radius-full);overflow:hidden}.progress-bar-sm{height:4px}.progress-bar-md{height:8px}.progress-bar-lg{height:16px}.progress-bar-xl{height:24px}.progress-bar-indicator{height:100%;border-radius:var(--ls-border-radius-full);transition:width var(--ls-transition-duration) ease;position:relative}.progress-bar-stripe{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem;animation:ls-progress-bar-stripes 1s linear infinite}.progress-bar-indeterminate{animation:ls-progress-bar-indeterminate 1.5s cubic-bezier(.65,.815,.735,.395) infinite;width:35%!important;position:absolute}@keyframes ls-progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes ls-progress-bar-indeterminate{0%{transform:translate(-100%)}to{transform:translate(300%)}}.progress-bar-label{font-size:.625rem;font-weight:600;white-space:nowrap;line-height:1}.progress-bar-label-inside{position:absolute;top:50%;transform:translate(-100%,-50%);margin-left:-4px;z-index:2;transition:left var(--ls-transition-duration) ease;pointer-events:none}.progress-bar-label-dark.progress-bar-label-inside{transform:translate(4px,-50%)}.progress-bar-label-right{flex-shrink:0;font-size:.75rem;color:#1f2937}.progress-bar-label-dark{color:#1f2937}.progress-bar-label-light{color:#fff}.progress-bar-primary{background-color:var(--ls-color-primary)}.progress-bar-secondary{background-color:var(--ls-color-secondary)}.progress-bar-error{background-color:var(--ls-color-danger)}.progress-bar-info{background-color:var(--ls-color-info)}.progress-bar-success{background-color:var(--ls-color-success)}.progress-bar-warning{background-color:var(--ls-color-warning)}.progress-bar-inherit{background-color:currentColor}body.dark .progress-bar-track{background-color:#374151}body.dark .progress-bar-label-right{color:#e5e7eb}body.dark .progress-bar-label-dark{color:#f3f4f6}\n"] }]
137
+ }], ctorParameters: () => [], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], showLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLabel", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], onFinished: [{ type: i0.Output, args: ["onFinished"] }] } });
138
+
139
+ const RADIUS = 20;
140
+ const CIRCUMFERENCE = 2 * Math.PI * RADIUS;
141
+ class LoaderComponent {
142
+ constructor() {
143
+ this.variant = input('indeterminate', ...(ngDevMode ? [{ debugName: "variant" }] : []));
144
+ this.color = input('primary', ...(ngDevMode ? [{ debugName: "color" }] : []));
145
+ this.value = input(0, ...(ngDevMode ? [{ debugName: "value" }] : []));
146
+ this.size = input('medium', ...(ngDevMode ? [{ debugName: "size" }] : []));
147
+ this.onFinished = output();
148
+ this.circumference = CIRCUMFERENCE;
149
+ this._diameterMap = {
150
+ small: 16,
151
+ medium: 32,
152
+ large: 48,
153
+ };
154
+ this._sizeClassMap = {
155
+ small: 'loader-sm',
156
+ medium: 'loader-md',
157
+ large: 'loader-lg',
158
+ };
159
+ this.svgDiameter = computed(() => this._diameterMap[this.size()], ...(ngDevMode ? [{ debugName: "svgDiameter" }] : []));
160
+ this.svgClasses = computed(() => {
161
+ const classes = ['loader-svg'];
162
+ classes.push(this._sizeClassMap[this.size()]);
163
+ if (this.variant() === 'indeterminate') {
164
+ classes.push('loader-indeterminate');
165
+ }
166
+ return classes.join(' ');
167
+ }, ...(ngDevMode ? [{ debugName: "svgClasses" }] : []));
168
+ this.indicatorClasses = computed(() => {
169
+ const classes = ['loader-indicator'];
170
+ classes.push(`loader-${this.variant()}`);
171
+ classes.push(`loader-${this.color()}`);
172
+ return classes.join(' ');
173
+ }, ...(ngDevMode ? [{ debugName: "indicatorClasses" }] : []));
174
+ this.bufferClasses = computed(() => `loader-buffer loader-${this.color()}`, ...(ngDevMode ? [{ debugName: "bufferClasses" }] : []));
175
+ this.indicatorDashOffset = computed(() => {
176
+ const v = this.variant();
177
+ if (v === 'determinate' || v === 'buffer') {
178
+ const clamped = Math.min(100, Math.max(0, this.value()));
179
+ return CIRCUMFERENCE - (CIRCUMFERENCE * clamped) / 100;
180
+ }
181
+ return 0;
182
+ }, ...(ngDevMode ? [{ debugName: "indicatorDashOffset" }] : []));
183
+ this.bufferDashOffset = computed(() => {
184
+ if (this.variant() === 'buffer') {
185
+ const clamped = Math.min(100, Math.max(0, this.value()) + 20);
186
+ return CIRCUMFERENCE - (CIRCUMFERENCE * clamped) / 100;
187
+ }
188
+ return CIRCUMFERENCE;
189
+ }, ...(ngDevMode ? [{ debugName: "bufferDashOffset" }] : []));
190
+ effect(() => {
191
+ if (this.variant() === 'determinate' &&
192
+ this.value() >= 100) {
193
+ this.onFinished.emit();
194
+ }
195
+ });
196
+ }
197
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: LoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
198
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: LoaderComponent, isStandalone: true, selector: "ls-loader", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFinished: "onFinished" }, ngImport: i0, template: `
199
+ <svg
200
+ [class]="svgClasses()"
201
+ [attr.width]="svgDiameter()"
202
+ [attr.height]="svgDiameter()"
203
+ viewBox="0 0 50 50"
204
+ role="progressbar"
205
+ [attr.aria-valuenow]="
206
+ variant() === 'determinate' ? value() : null
207
+ "
208
+ [attr.aria-valuemin]="
209
+ variant() === 'determinate' ? 0 : null
210
+ "
211
+ [attr.aria-valuemax]="
212
+ variant() === 'determinate' ? 100 : null
213
+ ">
214
+ <circle
215
+ class="loader-track"
216
+ cx="25"
217
+ cy="25"
218
+ r="20"
219
+ fill="none"
220
+ stroke-width="5" />
221
+ @if (variant() === 'buffer') {
222
+ <circle
223
+ [class]="bufferClasses()"
224
+ cx="25"
225
+ cy="25"
226
+ r="20"
227
+ fill="none"
228
+ stroke-width="5"
229
+ [attr.stroke-dasharray]="circumference"
230
+ [attr.stroke-dashoffset]="bufferDashOffset()" />
231
+ }
232
+ <circle
233
+ [class]="indicatorClasses()"
234
+ cx="25"
235
+ cy="25"
236
+ r="20"
237
+ fill="none"
238
+ stroke-width="5"
239
+ [attr.stroke-dasharray]="circumference"
240
+ [attr.stroke-dashoffset]="indicatorDashOffset()" />
241
+ </svg>
242
+ `, isInline: true, styles: [":host{display:contents}.loader-svg{display:inline-block;vertical-align:middle;transform-origin:center}.loader-sm{width:16px;height:16px}.loader-md{width:32px;height:32px}.loader-lg{width:48px;height:48px}.loader-track{stroke:#e0e0e0}.loader-indicator{stroke-linecap:round;transform-origin:center;transform:rotate(-90deg);transition:stroke-dashoffset var(--ls-transition-duration) ease}.loader-determinate{transition:stroke-dashoffset var(--ls-transition-duration) ease}.loader-svg.loader-indeterminate{animation:ls-loader-rotate 1.4s linear infinite}.loader-indicator.loader-indeterminate{animation:ls-loader-dash 1.4s ease-in-out infinite;stroke-linecap:round}.loader-buffer{stroke-linecap:round;transform-origin:center;transform:rotate(-90deg);opacity:.3;transition:stroke-dashoffset var(--ls-transition-duration) ease}@keyframes ls-loader-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes ls-loader-dash{0%{stroke-dasharray:1,125.66;stroke-dashoffset:0}50%{stroke-dasharray:89,125.66;stroke-dashoffset:-35}to{stroke-dasharray:89,125.66;stroke-dashoffset:-124}}.loader-primary{stroke:var(--ls-color-primary)}.loader-secondary{stroke:var(--ls-color-secondary)}.loader-error{stroke:var(--ls-color-danger)}.loader-info{stroke:var(--ls-color-info)}.loader-success{stroke:var(--ls-color-success)}.loader-warning{stroke:var(--ls-color-warning)}.loader-inherit{stroke:currentColor}body.dark .loader-track{stroke:#374151}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
243
+ }
244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: LoaderComponent, decorators: [{
245
+ type: Component,
246
+ args: [{ selector: 'ls-loader', standalone: true, template: `
247
+ <svg
248
+ [class]="svgClasses()"
249
+ [attr.width]="svgDiameter()"
250
+ [attr.height]="svgDiameter()"
251
+ viewBox="0 0 50 50"
252
+ role="progressbar"
253
+ [attr.aria-valuenow]="
254
+ variant() === 'determinate' ? value() : null
255
+ "
256
+ [attr.aria-valuemin]="
257
+ variant() === 'determinate' ? 0 : null
258
+ "
259
+ [attr.aria-valuemax]="
260
+ variant() === 'determinate' ? 100 : null
261
+ ">
262
+ <circle
263
+ class="loader-track"
264
+ cx="25"
265
+ cy="25"
266
+ r="20"
267
+ fill="none"
268
+ stroke-width="5" />
269
+ @if (variant() === 'buffer') {
270
+ <circle
271
+ [class]="bufferClasses()"
272
+ cx="25"
273
+ cy="25"
274
+ r="20"
275
+ fill="none"
276
+ stroke-width="5"
277
+ [attr.stroke-dasharray]="circumference"
278
+ [attr.stroke-dashoffset]="bufferDashOffset()" />
279
+ }
280
+ <circle
281
+ [class]="indicatorClasses()"
282
+ cx="25"
283
+ cy="25"
284
+ r="20"
285
+ fill="none"
286
+ stroke-width="5"
287
+ [attr.stroke-dasharray]="circumference"
288
+ [attr.stroke-dashoffset]="indicatorDashOffset()" />
289
+ </svg>
290
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:contents}.loader-svg{display:inline-block;vertical-align:middle;transform-origin:center}.loader-sm{width:16px;height:16px}.loader-md{width:32px;height:32px}.loader-lg{width:48px;height:48px}.loader-track{stroke:#e0e0e0}.loader-indicator{stroke-linecap:round;transform-origin:center;transform:rotate(-90deg);transition:stroke-dashoffset var(--ls-transition-duration) ease}.loader-determinate{transition:stroke-dashoffset var(--ls-transition-duration) ease}.loader-svg.loader-indeterminate{animation:ls-loader-rotate 1.4s linear infinite}.loader-indicator.loader-indeterminate{animation:ls-loader-dash 1.4s ease-in-out infinite;stroke-linecap:round}.loader-buffer{stroke-linecap:round;transform-origin:center;transform:rotate(-90deg);opacity:.3;transition:stroke-dashoffset var(--ls-transition-duration) ease}@keyframes ls-loader-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes ls-loader-dash{0%{stroke-dasharray:1,125.66;stroke-dashoffset:0}50%{stroke-dasharray:89,125.66;stroke-dashoffset:-35}to{stroke-dasharray:89,125.66;stroke-dashoffset:-124}}.loader-primary{stroke:var(--ls-color-primary)}.loader-secondary{stroke:var(--ls-color-secondary)}.loader-error{stroke:var(--ls-color-danger)}.loader-info{stroke:var(--ls-color-info)}.loader-success{stroke:var(--ls-color-success)}.loader-warning{stroke:var(--ls-color-warning)}.loader-inherit{stroke:currentColor}body.dark .loader-track{stroke:#374151}\n"] }]
291
+ }], ctorParameters: () => [], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], onFinished: [{ type: i0.Output, args: ["onFinished"] }] } });
292
+
293
+ const SEVERITY_ICON_MAP = {
294
+ success: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>`,
295
+ error: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/></svg>`,
296
+ warning: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"/></svg>`,
297
+ info: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>`,
298
+ primary: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>`,
299
+ secondary: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>`,
300
+ };
301
+ const CLOSE_ICON = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" width="18" height="18"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>`;
302
+ class AlertComponent {
303
+ constructor() {
304
+ this._sanitizer = inject(DomSanitizer);
305
+ this.severity = input('info', ...(ngDevMode ? [{ debugName: "severity" }] : []));
306
+ this.variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : []));
307
+ this.closable = input(false, ...(ngDevMode ? [{ debugName: "closable" }] : []));
308
+ this.icon = input(true, ...(ngDevMode ? [{ debugName: "icon" }] : []));
309
+ this.iconMapping = input(...(ngDevMode ? [undefined, { debugName: "iconMapping" }] : []));
310
+ this.color = input(...(ngDevMode ? [undefined, { debugName: "color" }] : []));
311
+ this.alertTitle = input(...(ngDevMode ? [undefined, { debugName: "alertTitle" }] : []));
312
+ this.message = input(...(ngDevMode ? [undefined, { debugName: "message" }] : []));
313
+ this.onClose = output();
314
+ this.alertClasses = computed(() => {
315
+ const classes = ['alert', `alert-${this.variant()}-${this.severity()}`];
316
+ if (this.closable()) {
317
+ classes.push('alert-closable');
318
+ }
319
+ return classes.join(' ');
320
+ }, ...(ngDevMode ? [{ debugName: "alertClasses" }] : []));
321
+ this.ariaLive = computed(() => {
322
+ const s = this.severity();
323
+ return s === 'error' || s === 'warning' ? 'assertive' : 'polite';
324
+ }, ...(ngDevMode ? [{ debugName: "ariaLive" }] : []));
325
+ this.sanitizedIcon = computed(() => {
326
+ const svg = this.iconMapping() || SEVERITY_ICON_MAP[this.severity()];
327
+ return this._sanitizer.bypassSecurityTrustHtml(svg);
328
+ }, ...(ngDevMode ? [{ debugName: "sanitizedIcon" }] : []));
329
+ this.sanitizedCloseIcon = this._sanitizer.bypassSecurityTrustHtml(CLOSE_ICON);
330
+ this.colorStyle = computed(() => {
331
+ const c = this.color();
332
+ if (!c)
333
+ return '';
334
+ return `--alert-custom-color: ${c};`;
335
+ }, ...(ngDevMode ? [{ debugName: "colorStyle" }] : []));
336
+ }
337
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
338
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: AlertComponent, isStandalone: true, selector: "ls-alert", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconMapping: { classPropertyName: "iconMapping", publicName: "iconMapping", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, alertTitle: { classPropertyName: "alertTitle", publicName: "alertTitle", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClose: "onClose" }, ngImport: i0, template: `
339
+ <div
340
+ [class]="alertClasses()"
341
+ [style]="colorStyle()"
342
+ role="alert"
343
+ [attr.aria-live]="ariaLive()">
344
+ @if (icon()) {
345
+ <span class="alert-icon" [innerHTML]="sanitizedIcon()"></span>
346
+ }
347
+ <div class="alert-content">
348
+ @if (alertTitle()) {
349
+ <div class="alert-title">{{ alertTitle() }}</div>
350
+ }
351
+ @if (message()) {
352
+ <div class="alert-message">{{ message() }}</div>
353
+ }
354
+ </div>
355
+ @if (closable()) {
356
+ <button
357
+ class="alert-close"
358
+ (click)="onClose.emit()"
359
+ [innerHTML]="sanitizedCloseIcon"
360
+ aria-label="Close"></button>
361
+ }
362
+ </div>
363
+ `, isInline: true, styles: [":host{display:contents}.alert{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-radius:var(--ls-border-radius-md, 6px);font-family:var(--ls-font-family, \"Nunito\", sans-serif);font-size:14px;line-height:1.5;position:relative;width:100%;box-sizing:border-box}.alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.alert-icon svg{width:100%;height:100%}.alert-content{flex:1;min-width:0}.alert-title{font-weight:600;margin-bottom:4px}.alert-message{padding-top:2px;font-weight:400}.alert-close{flex-shrink:0;background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:inherit;opacity:.7;transition:opacity var(--ls-transition-duration, .3s);display:flex;align-items:center;justify-content:center}.alert-close:hover{opacity:1}.alert-default-success{background-color:var(--ls-color-success-light);border-left:4px solid var(--ls-color-success);color:var(--ls-color-success)}.alert-default-error{background-color:var(--ls-color-danger-light);border-left:4px solid var(--ls-color-danger);color:var(--ls-color-danger)}.alert-default-warning{background-color:var(--ls-color-warning-light);border-left:4px solid var(--ls-color-warning);color:var(--ls-color-warning)}.alert-default-info{background-color:var(--ls-color-info-light);border-left:4px solid var(--ls-color-info);color:var(--ls-color-info)}.alert-default-primary{background-color:var(--ls-color-primary-light);border-left:4px solid var(--ls-color-primary);color:var(--ls-color-primary)}.alert-default-secondary{background-color:var(--ls-color-secondary-light);border-left:4px solid var(--ls-color-secondary);color:var(--ls-color-secondary)}.alert-filled-success{background-color:var(--ls-color-success);color:#fff}.alert-filled-error{background-color:var(--ls-color-danger);color:#fff}.alert-filled-warning{background-color:var(--ls-color-warning);color:#fff}.alert-filled-info{background-color:var(--ls-color-info);color:#fff}.alert-filled-primary{background-color:var(--ls-color-primary);color:#fff}.alert-filled-secondary{background-color:var(--ls-color-secondary);color:#fff}.alert-outlined-success{background-color:transparent;border:1px solid var(--ls-color-success);color:var(--ls-color-success)}.alert-outlined-error{background-color:transparent;border:1px solid var(--ls-color-danger);color:var(--ls-color-danger)}.alert-outlined-warning{background-color:transparent;border:1px solid var(--ls-color-warning);color:var(--ls-color-warning)}.alert-outlined-info{background-color:transparent;border:1px solid var(--ls-color-info);color:var(--ls-color-info)}.alert-outlined-primary{background-color:transparent;border:1px solid var(--ls-color-primary);color:var(--ls-color-primary)}.alert-outlined-secondary{background-color:transparent;border:1px solid var(--ls-color-secondary);color:var(--ls-color-secondary)}.alert[style*=--alert-custom-color]{border-color:var(--alert-custom-color)}.alert-default-success[style*=--alert-custom-color],.alert-default-error[style*=--alert-custom-color],.alert-default-warning[style*=--alert-custom-color],.alert-default-info[style*=--alert-custom-color],.alert-default-primary[style*=--alert-custom-color],.alert-default-secondary[style*=--alert-custom-color]{border-left-color:var(--alert-custom-color);color:var(--alert-custom-color)}.alert-filled-success[style*=--alert-custom-color],.alert-filled-error[style*=--alert-custom-color],.alert-filled-warning[style*=--alert-custom-color],.alert-filled-info[style*=--alert-custom-color],.alert-filled-primary[style*=--alert-custom-color],.alert-filled-secondary[style*=--alert-custom-color]{background-color:var(--alert-custom-color)}.alert-outlined-success[style*=--alert-custom-color],.alert-outlined-error[style*=--alert-custom-color],.alert-outlined-warning[style*=--alert-custom-color],.alert-outlined-info[style*=--alert-custom-color],.alert-outlined-primary[style*=--alert-custom-color],.alert-outlined-secondary[style*=--alert-custom-color]{border-color:var(--alert-custom-color);color:var(--alert-custom-color)}body.dark .alert-default-success{background-color:var(--ls-color-success-dark-light);border-left-color:var(--ls-color-success);color:var(--ls-color-success)}body.dark .alert-default-error{background-color:var(--ls-color-danger-dark-light);border-left-color:var(--ls-color-danger);color:var(--ls-color-danger)}body.dark .alert-default-warning{background-color:var(--ls-color-warning-dark-light);border-left-color:var(--ls-color-warning);color:var(--ls-color-warning)}body.dark .alert-default-info{background-color:var(--ls-color-info-dark-light);border-left-color:var(--ls-color-info);color:var(--ls-color-info)}body.dark .alert-default-primary{background-color:var(--ls-color-primary-dark-light);border-left-color:var(--ls-color-primary);color:var(--ls-color-primary)}body.dark .alert-default-secondary{background-color:var(--ls-color-secondary-dark-light);border-left-color:var(--ls-color-secondary);color:var(--ls-color-secondary)}body.dark .alert-outlined-success{border-color:var(--ls-color-success);color:var(--ls-color-success)}body.dark .alert-outlined-error{border-color:var(--ls-color-danger);color:var(--ls-color-danger)}body.dark .alert-outlined-warning{border-color:var(--ls-color-warning);color:var(--ls-color-warning)}body.dark .alert-outlined-info{border-color:var(--ls-color-info);color:var(--ls-color-info)}body.dark .alert-outlined-primary{border-color:var(--ls-color-primary);color:var(--ls-color-primary)}body.dark .alert-outlined-secondary{border-color:var(--ls-color-secondary);color:var(--ls-color-secondary)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
364
+ }
365
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AlertComponent, decorators: [{
366
+ type: Component,
367
+ args: [{ selector: 'ls-alert', standalone: true, template: `
368
+ <div
369
+ [class]="alertClasses()"
370
+ [style]="colorStyle()"
371
+ role="alert"
372
+ [attr.aria-live]="ariaLive()">
373
+ @if (icon()) {
374
+ <span class="alert-icon" [innerHTML]="sanitizedIcon()"></span>
375
+ }
376
+ <div class="alert-content">
377
+ @if (alertTitle()) {
378
+ <div class="alert-title">{{ alertTitle() }}</div>
379
+ }
380
+ @if (message()) {
381
+ <div class="alert-message">{{ message() }}</div>
382
+ }
383
+ </div>
384
+ @if (closable()) {
385
+ <button
386
+ class="alert-close"
387
+ (click)="onClose.emit()"
388
+ [innerHTML]="sanitizedCloseIcon"
389
+ aria-label="Close"></button>
390
+ }
391
+ </div>
392
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:contents}.alert{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-radius:var(--ls-border-radius-md, 6px);font-family:var(--ls-font-family, \"Nunito\", sans-serif);font-size:14px;line-height:1.5;position:relative;width:100%;box-sizing:border-box}.alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.alert-icon svg{width:100%;height:100%}.alert-content{flex:1;min-width:0}.alert-title{font-weight:600;margin-bottom:4px}.alert-message{padding-top:2px;font-weight:400}.alert-close{flex-shrink:0;background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:inherit;opacity:.7;transition:opacity var(--ls-transition-duration, .3s);display:flex;align-items:center;justify-content:center}.alert-close:hover{opacity:1}.alert-default-success{background-color:var(--ls-color-success-light);border-left:4px solid var(--ls-color-success);color:var(--ls-color-success)}.alert-default-error{background-color:var(--ls-color-danger-light);border-left:4px solid var(--ls-color-danger);color:var(--ls-color-danger)}.alert-default-warning{background-color:var(--ls-color-warning-light);border-left:4px solid var(--ls-color-warning);color:var(--ls-color-warning)}.alert-default-info{background-color:var(--ls-color-info-light);border-left:4px solid var(--ls-color-info);color:var(--ls-color-info)}.alert-default-primary{background-color:var(--ls-color-primary-light);border-left:4px solid var(--ls-color-primary);color:var(--ls-color-primary)}.alert-default-secondary{background-color:var(--ls-color-secondary-light);border-left:4px solid var(--ls-color-secondary);color:var(--ls-color-secondary)}.alert-filled-success{background-color:var(--ls-color-success);color:#fff}.alert-filled-error{background-color:var(--ls-color-danger);color:#fff}.alert-filled-warning{background-color:var(--ls-color-warning);color:#fff}.alert-filled-info{background-color:var(--ls-color-info);color:#fff}.alert-filled-primary{background-color:var(--ls-color-primary);color:#fff}.alert-filled-secondary{background-color:var(--ls-color-secondary);color:#fff}.alert-outlined-success{background-color:transparent;border:1px solid var(--ls-color-success);color:var(--ls-color-success)}.alert-outlined-error{background-color:transparent;border:1px solid var(--ls-color-danger);color:var(--ls-color-danger)}.alert-outlined-warning{background-color:transparent;border:1px solid var(--ls-color-warning);color:var(--ls-color-warning)}.alert-outlined-info{background-color:transparent;border:1px solid var(--ls-color-info);color:var(--ls-color-info)}.alert-outlined-primary{background-color:transparent;border:1px solid var(--ls-color-primary);color:var(--ls-color-primary)}.alert-outlined-secondary{background-color:transparent;border:1px solid var(--ls-color-secondary);color:var(--ls-color-secondary)}.alert[style*=--alert-custom-color]{border-color:var(--alert-custom-color)}.alert-default-success[style*=--alert-custom-color],.alert-default-error[style*=--alert-custom-color],.alert-default-warning[style*=--alert-custom-color],.alert-default-info[style*=--alert-custom-color],.alert-default-primary[style*=--alert-custom-color],.alert-default-secondary[style*=--alert-custom-color]{border-left-color:var(--alert-custom-color);color:var(--alert-custom-color)}.alert-filled-success[style*=--alert-custom-color],.alert-filled-error[style*=--alert-custom-color],.alert-filled-warning[style*=--alert-custom-color],.alert-filled-info[style*=--alert-custom-color],.alert-filled-primary[style*=--alert-custom-color],.alert-filled-secondary[style*=--alert-custom-color]{background-color:var(--alert-custom-color)}.alert-outlined-success[style*=--alert-custom-color],.alert-outlined-error[style*=--alert-custom-color],.alert-outlined-warning[style*=--alert-custom-color],.alert-outlined-info[style*=--alert-custom-color],.alert-outlined-primary[style*=--alert-custom-color],.alert-outlined-secondary[style*=--alert-custom-color]{border-color:var(--alert-custom-color);color:var(--alert-custom-color)}body.dark .alert-default-success{background-color:var(--ls-color-success-dark-light);border-left-color:var(--ls-color-success);color:var(--ls-color-success)}body.dark .alert-default-error{background-color:var(--ls-color-danger-dark-light);border-left-color:var(--ls-color-danger);color:var(--ls-color-danger)}body.dark .alert-default-warning{background-color:var(--ls-color-warning-dark-light);border-left-color:var(--ls-color-warning);color:var(--ls-color-warning)}body.dark .alert-default-info{background-color:var(--ls-color-info-dark-light);border-left-color:var(--ls-color-info);color:var(--ls-color-info)}body.dark .alert-default-primary{background-color:var(--ls-color-primary-dark-light);border-left-color:var(--ls-color-primary);color:var(--ls-color-primary)}body.dark .alert-default-secondary{background-color:var(--ls-color-secondary-dark-light);border-left-color:var(--ls-color-secondary);color:var(--ls-color-secondary)}body.dark .alert-outlined-success{border-color:var(--ls-color-success);color:var(--ls-color-success)}body.dark .alert-outlined-error{border-color:var(--ls-color-danger);color:var(--ls-color-danger)}body.dark .alert-outlined-warning{border-color:var(--ls-color-warning);color:var(--ls-color-warning)}body.dark .alert-outlined-info{border-color:var(--ls-color-info);color:var(--ls-color-info)}body.dark .alert-outlined-primary{border-color:var(--ls-color-primary);color:var(--ls-color-primary)}body.dark .alert-outlined-secondary{border-color:var(--ls-color-secondary);color:var(--ls-color-secondary)}\n"] }]
393
+ }], propDecorators: { severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconMapping: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconMapping", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], alertTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "alertTitle", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], onClose: [{ type: i0.Output, args: ["onClose"] }] } });
394
+
395
+ /**
396
+ * Generated bundle index. Do not edit.
397
+ */
398
+
399
+ export { AlertComponent, LoaderComponent, ProgressBarComponent };
400
+ //# sourceMappingURL=lumston-ds-angular-src-feedback.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lumston-ds-angular-src-feedback.mjs","sources":["../../../../libs/ds-angular/src/feedback/progress-bar/progress-bar.component.ts","../../../../libs/ds-angular/src/feedback/loader/loader.component.ts","../../../../libs/ds-angular/src/feedback/alert/alert.component.ts","../../../../libs/ds-angular/src/feedback/lumston-ds-angular-src-feedback.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n input,\r\n output,\r\n} from '@angular/core';\r\n\r\nexport type ProgressBarVariant =\r\n | 'determinate'\r\n | 'stripe'\r\n | 'animated'\r\n | 'indeterminate';\r\nexport type ProgressBarColor =\r\n | 'inherit'\r\n | 'primary'\r\n | 'secondary'\r\n | 'error'\r\n | 'info'\r\n | 'success'\r\n | 'warning';\r\nexport type ProgressBarSize =\r\n | 'small'\r\n | 'medium'\r\n | 'large'\r\n | 'extra-large';\r\nexport type ProgressBarLabelPosition = 'inside' | 'right';\r\n\r\n@Component({\r\n selector: 'ls-progress-bar',\r\n standalone: true,\r\n template: `\r\n <div class=\"progress-bar-wrapper\">\r\n <div\r\n [class]=\"trackClasses()\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"variant() === 'indeterminate' ? null : clampedValue()\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [attr.aria-label]=\"labelText()\">\r\n\r\n <div\r\n [class]=\"indicatorClasses()\"\r\n [style.width]=\"indicatorWidth()\">\r\n </div>\r\n\r\n @if (showLabel() && labelPosition() === 'inside' && variant() !== 'indeterminate') {\r\n <span\r\n [class]=\"labelClasses()\"\r\n [style.left.%]=\"clampedValue()\">\r\n {{ labelText() }}\r\n </span>\r\n }\r\n </div>\r\n\r\n @if (showLabel() && labelPosition() === 'right' && variant() !== 'indeterminate') {\r\n <span [class]=\"labelClasses()\">\r\n {{ labelText() }}\r\n </span>\r\n }\r\n </div>\r\n `,\r\n styleUrls: ['./progress-bar.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ProgressBarComponent {\r\n readonly variant =\r\n input<ProgressBarVariant>('indeterminate');\r\n readonly color =\r\n input<ProgressBarColor>('primary');\r\n readonly value = input<number>(0);\r\n readonly showLabel = input<boolean>(false);\r\n readonly labelPosition =\r\n input<ProgressBarLabelPosition>('inside');\r\n readonly size = input<ProgressBarSize>('medium');\r\n\r\n readonly onFinished = output<void>();\r\n\r\n private readonly _sizeClassMap: Record<\r\n ProgressBarSize,\r\n string\r\n > = {\r\n small: 'progress-bar-sm',\r\n medium: 'progress-bar-md',\r\n large: 'progress-bar-lg',\r\n 'extra-large': 'progress-bar-xl',\r\n };\r\n\r\n readonly clampedValue = computed(() =>\r\n Math.min(100, Math.max(0, this.value()))\r\n );\r\n\r\n readonly trackClasses = computed(() => {\r\n const classes = ['progress-bar-track'];\r\n classes.push(this._sizeClassMap[this.size()]);\r\n return classes.join(' ');\r\n });\r\n\r\n readonly indicatorClasses = computed(() => {\r\n const classes = ['progress-bar-indicator'];\r\n classes.push(`progress-bar-${this.color()}`);\r\n const v = this.variant();\r\n if (v === 'stripe') {\r\n classes.push('progress-bar-stripe');\r\n } else if (v === 'animated') {\r\n classes.push('progress-bar-animated');\r\n } else if (v === 'indeterminate') {\r\n classes.push('progress-bar-indeterminate');\r\n }\r\n return classes.join(' ');\r\n });\r\n\r\n readonly indicatorWidth = computed(() => {\r\n if (this.variant() === 'indeterminate') {\r\n return '100%';\r\n }\r\n return `${this.clampedValue()}%`;\r\n });\r\n\r\n readonly labelText = computed(\r\n () => `${this.clampedValue()}%`\r\n );\r\n\r\n readonly labelClasses = computed(() => {\r\n const classes = ['progress-bar-label'];\r\n if (this.labelPosition() === 'inside') {\r\n classes.push('progress-bar-label-inside');\r\n if (this.clampedValue() < 15) {\r\n classes.push('progress-bar-label-dark');\r\n } else {\r\n classes.push('progress-bar-label-light');\r\n }\r\n } else {\r\n classes.push('progress-bar-label-right');\r\n }\r\n return classes.join(' ');\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (\r\n this.variant() !== 'indeterminate' &&\r\n this.value() >= 100\r\n ) {\r\n this.onFinished.emit();\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n input,\r\n output,\r\n} from '@angular/core';\r\n\r\nexport type LoaderVariant =\r\n | 'determinate'\r\n | 'indeterminate'\r\n | 'buffer';\r\nexport type LoaderColor =\r\n | 'inherit'\r\n | 'primary'\r\n | 'secondary'\r\n | 'error'\r\n | 'info'\r\n | 'success'\r\n | 'warning';\r\nexport type LoaderSize = 'small' | 'medium' | 'large';\r\n\r\nconst RADIUS = 20;\r\nconst CIRCUMFERENCE = 2 * Math.PI * RADIUS;\r\n\r\n@Component({\r\n selector: 'ls-loader',\r\n standalone: true,\r\n template: `\r\n <svg\r\n [class]=\"svgClasses()\"\r\n [attr.width]=\"svgDiameter()\"\r\n [attr.height]=\"svgDiameter()\"\r\n viewBox=\"0 0 50 50\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"\r\n variant() === 'determinate' ? value() : null\r\n \"\r\n [attr.aria-valuemin]=\"\r\n variant() === 'determinate' ? 0 : null\r\n \"\r\n [attr.aria-valuemax]=\"\r\n variant() === 'determinate' ? 100 : null\r\n \">\r\n <circle\r\n class=\"loader-track\"\r\n cx=\"25\"\r\n cy=\"25\"\r\n r=\"20\"\r\n fill=\"none\"\r\n stroke-width=\"5\" />\r\n @if (variant() === 'buffer') {\r\n <circle\r\n [class]=\"bufferClasses()\"\r\n cx=\"25\"\r\n cy=\"25\"\r\n r=\"20\"\r\n fill=\"none\"\r\n stroke-width=\"5\"\r\n [attr.stroke-dasharray]=\"circumference\"\r\n [attr.stroke-dashoffset]=\"bufferDashOffset()\" />\r\n }\r\n <circle\r\n [class]=\"indicatorClasses()\"\r\n cx=\"25\"\r\n cy=\"25\"\r\n r=\"20\"\r\n fill=\"none\"\r\n stroke-width=\"5\"\r\n [attr.stroke-dasharray]=\"circumference\"\r\n [attr.stroke-dashoffset]=\"indicatorDashOffset()\" />\r\n </svg>\r\n `,\r\n styleUrls: ['./loader.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LoaderComponent {\r\n readonly variant = input<LoaderVariant>('indeterminate');\r\n readonly color = input<LoaderColor>('primary');\r\n readonly value = input<number>(0);\r\n readonly size = input<LoaderSize>('medium');\r\n\r\n readonly onFinished = output<void>();\r\n\r\n readonly circumference = CIRCUMFERENCE;\r\n\r\n private readonly _diameterMap: Record<LoaderSize, number> =\r\n {\r\n small: 16,\r\n medium: 32,\r\n large: 48,\r\n };\r\n\r\n private readonly _sizeClassMap: Record<\r\n LoaderSize,\r\n string\r\n > = {\r\n small: 'loader-sm',\r\n medium: 'loader-md',\r\n large: 'loader-lg',\r\n };\r\n\r\n readonly svgDiameter = computed(\r\n () => this._diameterMap[this.size()]\r\n );\r\n\r\n readonly svgClasses = computed(() => {\r\n const classes = ['loader-svg'];\r\n classes.push(this._sizeClassMap[this.size()]);\r\n if (this.variant() === 'indeterminate') {\r\n classes.push('loader-indeterminate');\r\n }\r\n return classes.join(' ');\r\n });\r\n\r\n readonly indicatorClasses = computed(() => {\r\n const classes = ['loader-indicator'];\r\n classes.push(`loader-${this.variant()}`);\r\n classes.push(`loader-${this.color()}`);\r\n return classes.join(' ');\r\n });\r\n\r\n readonly bufferClasses = computed(\r\n () => `loader-buffer loader-${this.color()}`\r\n );\r\n\r\n readonly indicatorDashOffset = computed(() => {\r\n const v = this.variant();\r\n if (v === 'determinate' || v === 'buffer') {\r\n const clamped = Math.min(\r\n 100,\r\n Math.max(0, this.value())\r\n );\r\n return CIRCUMFERENCE - (CIRCUMFERENCE * clamped) / 100;\r\n }\r\n return 0;\r\n });\r\n\r\n readonly bufferDashOffset = computed(() => {\r\n if (this.variant() === 'buffer') {\r\n const clamped = Math.min(\r\n 100,\r\n Math.max(0, this.value()) + 20\r\n );\r\n return CIRCUMFERENCE - (CIRCUMFERENCE * clamped) / 100;\r\n }\r\n return CIRCUMFERENCE;\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (\r\n this.variant() === 'determinate' &&\r\n this.value() >= 100\r\n ) {\r\n this.onFinished.emit();\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\nexport type AlertSeverity =\r\n | 'error'\r\n | 'warning'\r\n | 'info'\r\n | 'success'\r\n | 'primary'\r\n | 'secondary';\r\n\r\nexport type AlertVariant = 'default' | 'filled' | 'outlined';\r\n\r\nconst SEVERITY_ICON_MAP: Record<AlertSeverity, string> = {\r\n success: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"/></svg>`,\r\n error: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"/></svg>`,\r\n warning: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"/></svg>`,\r\n info: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"/></svg>`,\r\n primary: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"/></svg>`,\r\n secondary: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"/></svg>`,\r\n};\r\n\r\nconst CLOSE_ICON = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"18\" height=\"18\"><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/></svg>`;\r\n\r\n@Component({\r\n selector: 'ls-alert',\r\n standalone: true,\r\n template: `\r\n <div\r\n [class]=\"alertClasses()\"\r\n [style]=\"colorStyle()\"\r\n role=\"alert\"\r\n [attr.aria-live]=\"ariaLive()\">\r\n @if (icon()) {\r\n <span class=\"alert-icon\" [innerHTML]=\"sanitizedIcon()\"></span>\r\n }\r\n <div class=\"alert-content\">\r\n @if (alertTitle()) {\r\n <div class=\"alert-title\">{{ alertTitle() }}</div>\r\n }\r\n @if (message()) {\r\n <div class=\"alert-message\">{{ message() }}</div>\r\n }\r\n </div>\r\n @if (closable()) {\r\n <button\r\n class=\"alert-close\"\r\n (click)=\"onClose.emit()\"\r\n [innerHTML]=\"sanitizedCloseIcon\"\r\n aria-label=\"Close\"></button>\r\n }\r\n </div>\r\n `,\r\n styleUrls: ['./alert.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AlertComponent {\r\n private readonly _sanitizer = inject(DomSanitizer);\r\n\r\n readonly severity = input<AlertSeverity>('info');\r\n readonly variant = input<AlertVariant>('default');\r\n readonly closable = input<boolean>(false);\r\n readonly icon = input<boolean>(true);\r\n readonly iconMapping = input<string>();\r\n readonly color = input<string>();\r\n readonly alertTitle = input<string>();\r\n readonly message = input<string>();\r\n\r\n readonly onClose = output<void>();\r\n\r\n readonly alertClasses = computed(() => {\r\n const classes = ['alert', `alert-${this.variant()}-${this.severity()}`];\r\n if (this.closable()) {\r\n classes.push('alert-closable');\r\n }\r\n return classes.join(' ');\r\n });\r\n\r\n readonly ariaLive = computed(() => {\r\n const s = this.severity();\r\n return s === 'error' || s === 'warning' ? 'assertive' : 'polite';\r\n });\r\n\r\n readonly sanitizedIcon = computed(() => {\r\n const svg = this.iconMapping() || SEVERITY_ICON_MAP[this.severity()];\r\n return this._sanitizer.bypassSecurityTrustHtml(svg);\r\n });\r\n\r\n readonly sanitizedCloseIcon =\r\n this._sanitizer.bypassSecurityTrustHtml(CLOSE_ICON);\r\n\r\n readonly colorStyle = computed(() => {\r\n const c = this.color();\r\n if (!c) return '';\r\n return `--alert-custom-color: ${c};`;\r\n });\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}