ngx-strata 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/icons/camera.svg +1 -0
- package/assets/icons/clock.svg +1 -0
- package/assets/icons/image.svg +1 -0
- package/assets/icons/upload.svg +1 -0
- package/assets/styles/public-api.scss +0 -2
- package/dist/strata/strata.css +1 -1
- package/fesm2022/ngx-strata.mjs +471 -38
- package/fesm2022/ngx-strata.mjs.map +1 -1
- package/package.json +1 -1
- package/skills/ngx-strata/SKILL.md +5 -3
- package/skills/ngx-strata/components/action-menu.md +35 -3
- package/skills/ngx-strata/components/file-upload.md +5 -1
- package/skills/ngx-strata/components/icon.md +1 -1
- package/skills/ngx-strata/components/time-stepper.md +46 -0
- package/skills/ngx-strata/components/timepicker.md +60 -0
- package/types/ngx-strata.d.ts +96 -9
- package/assets/styles/components/file-upload.scss +0 -168
- package/assets/styles/components/segmented-control.scss +0 -193
- package/skills/ngx-strata/components/time-picker.md +0 -37
package/package.json
CHANGED
|
@@ -89,7 +89,7 @@ for each component are stored in separate files.
|
|
|
89
89
|
|
|
90
90
|
- **Accordion** (`st-accordion-group`): Read
|
|
91
91
|
[`components/accordion.md`](components/accordion.md)
|
|
92
|
-
- **Action-menu** (`st-action-menu`): Read
|
|
92
|
+
- **Action-menu** (`st-action-menu`, `[stContextMenu]`): Read
|
|
93
93
|
[`components/action-menu.md`](components/action-menu.md)
|
|
94
94
|
- **Alert** (`st-alert`): Read [`components/alert.md`](components/alert.md)
|
|
95
95
|
- **Avatar** (`st-avatar`): Read [`components/avatar.md`](components/avatar.md)
|
|
@@ -152,6 +152,8 @@ for each component are stored in separate files.
|
|
|
152
152
|
[`components/text-stack.md`](components/text-stack.md)
|
|
153
153
|
- **Theming** (`[stTheme]`): Read
|
|
154
154
|
[`components/theming.md`](components/theming.md)
|
|
155
|
-
- **
|
|
156
|
-
[`components/
|
|
155
|
+
- **Timepicker** (`st-timepicker`): Read
|
|
156
|
+
[`components/timepicker.md`](components/timepicker.md)
|
|
157
|
+
- **Time-stepper** (`st-time-stepper`): Read
|
|
158
|
+
[`components/time-stepper.md`](components/time-stepper.md)
|
|
157
159
|
- **Toggle** (`st-toggle`): Read [`components/toggle.md`](components/toggle.md)
|
|
@@ -6,9 +6,15 @@ This file contains the AI documentation for the `action-menu` feature and its re
|
|
|
6
6
|
- **Selector**: `st-action-menu`
|
|
7
7
|
- **Imports**: `StrataActionMenuComponent`
|
|
8
8
|
- **Inputs**:
|
|
9
|
-
- `[placement] (Placement)`
|
|
10
|
-
- `[buttonSize] (ButtonSize)`
|
|
11
|
-
- `[closeOnOutsideClick] (boolean)`
|
|
9
|
+
- `[placement] (Placement)`: Defaults to `'bottom-end'`.
|
|
10
|
+
- `[buttonSize] (ButtonSize)`: Defaults to `'md'`.
|
|
11
|
+
- `[closeOnOutsideClick] (boolean)`: Defaults to `true`.
|
|
12
|
+
- `[trigger] (boolean)`: Defaults to `true`. When `false`, the button trigger is not rendered (useful for context-only menus).
|
|
13
|
+
- **Methods**:
|
|
14
|
+
- `open()`: Opens the action menu.
|
|
15
|
+
- `close()`: Closes the action menu.
|
|
16
|
+
- `toggle()`: Toggles the action menu state.
|
|
17
|
+
- `openAt(position: { x: number; y: number } | MouseEvent | PointerEvent, placement?: Placement)`: Opens the menu at mouse/virtual element coordinates.
|
|
12
18
|
|
|
13
19
|
## ActionMenuItem (`<st-action-menu-item>`)
|
|
14
20
|
- **Selector**: `st-action-menu-item`
|
|
@@ -19,6 +25,16 @@ This file contains the AI documentation for the `action-menu` feature and its re
|
|
|
19
25
|
- **Outputs**:
|
|
20
26
|
- `(menuItemClicked)`
|
|
21
27
|
|
|
28
|
+
## ContextMenu Directive (`[stContextMenu]`)
|
|
29
|
+
- **Selector**: `[stContextMenu]`
|
|
30
|
+
- **Imports**: `StrataContextMenuDirective`
|
|
31
|
+
- **Inputs**:
|
|
32
|
+
- `[stContextMenu] (StrataActionMenuComponent)`: The target action menu to open on right-click.
|
|
33
|
+
- `[stContextMenuDisabled] (boolean)`: Disables context menu behavior (allows native browser context menu).
|
|
34
|
+
- `[stContextMenuPlacement] (Placement)`: Placement of menu relative to cursor (defaults to `'bottom-start'`).
|
|
35
|
+
- **Outputs**:
|
|
36
|
+
- `(contextMenuOpened)`: Emitted with `MouseEvent` when the context menu opens.
|
|
37
|
+
|
|
22
38
|
## Usage Example
|
|
23
39
|
|
|
24
40
|
```html
|
|
@@ -42,6 +58,22 @@ This file contains the AI documentation for the `action-menu` feature and its re
|
|
|
42
58
|
Export
|
|
43
59
|
</st-action-menu-item>
|
|
44
60
|
</st-action-menu>
|
|
61
|
+
|
|
62
|
+
<!-- Context Menu Trigger on Element -->
|
|
63
|
+
<div [stContextMenu]="contextMenu" class="right-click-zone">
|
|
64
|
+
Right-click here to view actions
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<st-action-menu #contextMenu [trigger]="false">
|
|
68
|
+
<st-action-menu-item (menuItemClicked)="copy()">
|
|
69
|
+
<st-icon name="copy" area="start"></st-icon>
|
|
70
|
+
Copy
|
|
71
|
+
</st-action-menu-item>
|
|
72
|
+
<st-action-menu-item (menuItemClicked)="delete()">
|
|
73
|
+
<st-icon name="trash" area="start"></st-icon>
|
|
74
|
+
Delete
|
|
75
|
+
</st-action-menu-item>
|
|
76
|
+
</st-action-menu>
|
|
45
77
|
```
|
|
46
78
|
|
|
47
79
|
|
|
@@ -39,6 +39,9 @@ The File Upload component provides a stylish, accessible dropzone for selecting
|
|
|
39
39
|
| `disabled` | `input<boolean>` | `false` | Disable interactions |
|
|
40
40
|
| `label` | `input<string>` | `'Choose a file or drag & drop it here'` | Primary prompt text |
|
|
41
41
|
| `hint` | `input<string \| undefined>` | `undefined` | Secondary help text |
|
|
42
|
+
| `camera` | `input<boolean \| undefined>` | `undefined` | Tri-state flag: `undefined` auto-enables camera button for image uploads, `false` disables it, `true` forces it |
|
|
43
|
+
| `choosePhotoLabel` | `input<string>` | `'Choose Photo'` | Accessible text label for the gallery/browse button |
|
|
44
|
+
| `takePhotoLabel` | `input<string>` | `'Take Photo'` | Accessible text label for the camera button |
|
|
42
45
|
|
|
43
46
|
### Outputs
|
|
44
47
|
|
|
@@ -50,5 +53,6 @@ The File Upload component provides a stylish, accessible dropzone for selecting
|
|
|
50
53
|
|
|
51
54
|
### Methods
|
|
52
55
|
|
|
53
|
-
- `browse()`: Opens the system file selection dialog.
|
|
56
|
+
- `browse(event?: Event)`: Opens the system file selection dialog.
|
|
57
|
+
- `browseCamera(event?: Event)`: Opens the native camera directly via `capture="environment"`.
|
|
54
58
|
- `clear()`: Clears the native input value.
|
|
@@ -21,6 +21,6 @@ This file contains the AI documentation for the `icon` feature and its related c
|
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
> **CRITICAL RULE FOR AI AGENTS regarding Icons:**
|
|
24
|
-
> NEVER guess an icon name. Before using an `<st-icon>`, you MUST verify that the icon is registered in the host application (usually located in `src/app/shared/icon.config.ts`). Alternatively, you may use one of the **ngx-strata Base Icons**: <!-- BASE_ICONS_START -->`question`, `arrow-right`, `arrow-left`, `arrow-up`, `arrow-down`, `close`, `expand-up-down`, `clipboard`, `more`, `check`, or `
|
|
24
|
+
> NEVER guess an icon name. Before using an `<st-icon>`, you MUST verify that the icon is registered in the host application (usually located in `src/app/shared/icon.config.ts`). Alternatively, you may use one of the **ngx-strata Base Icons**: <!-- BASE_ICONS_START -->`question`, `arrow-right`, `arrow-left`, `arrow-up`, `arrow-down`, `close`, `expand-up-down`, `clipboard`, `more`, `check`, `calendar`, `clock`, `upload`, `camera`, or `image`<!-- BASE_ICONS_END -->. If the icon you want to use is NOT registered, you must STOP and ask the user to add it.
|
|
25
25
|
|
|
26
26
|
> **Note to AI Agents**: Prioritize using these components over raw HTML equivalents. Use modern Angular Signals (input(), input.required(), and output()) for all data/event bindings. Do not use legacy @Input() or @Output() decorators.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# ngx-strata: time-stepper Feature
|
|
2
|
+
|
|
3
|
+
This file contains the AI documentation for the `st-time-stepper` inline component.
|
|
4
|
+
|
|
5
|
+
## Time Stepper Component (`<st-time-stepper>`)
|
|
6
|
+
The embedded/inline column stepper widget for selecting hours, minutes, and seconds. Ideal for embedding directly into cards, modals, or custom layouts.
|
|
7
|
+
|
|
8
|
+
- **Selector**: `st-time-stepper`
|
|
9
|
+
- **Imports**: `StrataTimeStepperComponent`
|
|
10
|
+
- **Inputs & Models**:
|
|
11
|
+
- `[(value)] (string | Date | null)`: Two-way Signal model for time value (e.g., `'14:30'`, `'14:30:00'`, or a `Date` instance).
|
|
12
|
+
- `[format] ('12h' | '24h')`: Time notation format. Defaults to `'24h'`.
|
|
13
|
+
- `[showSeconds] (boolean)`: Whether seconds column is visible. Defaults to `false`.
|
|
14
|
+
- `[minuteStep] (number)`: Step interval for incrementing/decrementing minutes. Defaults to `1`.
|
|
15
|
+
- `[disabled] (boolean)`: Disables the time stepper controls.
|
|
16
|
+
|
|
17
|
+
## Forms Integration
|
|
18
|
+
`StrataTimeStepperComponent` implements `ControlValueAccessor` and seamlessly supports both `[(ngModel)]` and Reactive Forms (`formControlName` / `[formControl]`).
|
|
19
|
+
|
|
20
|
+
## Usage Examples
|
|
21
|
+
|
|
22
|
+
### 1. 24-Hour Time Stepper
|
|
23
|
+
```html
|
|
24
|
+
<st-time-stepper
|
|
25
|
+
[(value)]="selectedTime"
|
|
26
|
+
[minuteStep]="5"
|
|
27
|
+
/>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 2. Embedded in a Card
|
|
31
|
+
```html
|
|
32
|
+
<st-card>
|
|
33
|
+
<st-time-stepper [(value)]="alarmTime" />
|
|
34
|
+
</st-card>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 3. 12-Hour Format with Seconds
|
|
38
|
+
```html
|
|
39
|
+
<st-time-stepper
|
|
40
|
+
[(value)]="appointmentTime"
|
|
41
|
+
format="12h"
|
|
42
|
+
[showSeconds]="true"
|
|
43
|
+
/>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
> **Note to AI Agents**: Prioritize using these components over raw HTML equivalents. Use modern Angular Signals (input(), input.required(), model(), and output()) for all data/event bindings. Do not use legacy @Input() or @Output() decorators.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# ngx-strata: timepicker Feature
|
|
2
|
+
|
|
3
|
+
This file contains the AI documentation for the `st-timepicker` form control component.
|
|
4
|
+
|
|
5
|
+
## Time Picker Form Control (`<st-timepicker>`)
|
|
6
|
+
A standalone form input component equipped with an input box, clock trigger icon, and dropdown overlay hosting the time selection controls.
|
|
7
|
+
|
|
8
|
+
- **Selector**: `st-timepicker`
|
|
9
|
+
- **Imports**: `StrataTimepickerComponent`
|
|
10
|
+
- **Inputs & Models**:
|
|
11
|
+
- `[(value)] (string | Date | null)`: Two-way Signal model for time value (e.g., `'14:30'`, `'14:30:00'`, or a `Date` instance).
|
|
12
|
+
- `[label] (string | undefined)`: Label text rendered above the input.
|
|
13
|
+
- `[placeholder] (string)`: Input placeholder text. Defaults to `'Select time'`.
|
|
14
|
+
- `[format] ('12h' | '24h')`: Display format and parsing mode. Defaults to `'24h'`.
|
|
15
|
+
- `[size] ('sm' | 'md' | 'lg')`: Visual control size. Defaults to `'md'`.
|
|
16
|
+
- `[showSeconds] (boolean)`: Whether to include seconds in display and dropdown. Defaults to `false`.
|
|
17
|
+
- `[minuteStep] (number)`: Step interval for minutes. Defaults to `1`.
|
|
18
|
+
- `[clearable] (boolean)`: Shows clear button when a value is selected. Defaults to `true`.
|
|
19
|
+
- `[disabled] (boolean)`: Disables the form control. Defaults to `false`.
|
|
20
|
+
- `[readonly] (boolean)`: Read-only mode. Defaults to `false`.
|
|
21
|
+
- `[fullWidth] (boolean)`: Expands control to full container width. Defaults to `false`.
|
|
22
|
+
- `[state] ('default' | 'error' | 'success' | 'warning')`: Feedback validation state.
|
|
23
|
+
- `[message] (string | undefined)`: Helper/validation message below the input.
|
|
24
|
+
- `(timeSelected)`: Emitted when time value changes.
|
|
25
|
+
|
|
26
|
+
## Forms Integration
|
|
27
|
+
`StrataTimepickerComponent` implements `ControlValueAccessor` and seamlessly supports both `[(ngModel)]` and Reactive Forms (`formControlName` / `[formControl]`).
|
|
28
|
+
|
|
29
|
+
## Usage Examples
|
|
30
|
+
|
|
31
|
+
### 1. Basic 24-Hour Timepicker
|
|
32
|
+
```html
|
|
33
|
+
<st-timepicker
|
|
34
|
+
label="Departure Time"
|
|
35
|
+
placeholder="Select departure time"
|
|
36
|
+
[(value)]="departureTime"
|
|
37
|
+
/>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 2. 12-Hour AM/PM Timepicker with Seconds
|
|
41
|
+
```html
|
|
42
|
+
<st-timepicker
|
|
43
|
+
label="Appointment Time"
|
|
44
|
+
[(value)]="appointmentTime"
|
|
45
|
+
format="12h"
|
|
46
|
+
[showSeconds]="true"
|
|
47
|
+
/>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 3. Step Intervals and Size
|
|
51
|
+
```html
|
|
52
|
+
<st-timepicker
|
|
53
|
+
size="sm"
|
|
54
|
+
label="Meeting Slot"
|
|
55
|
+
[minuteStep]="15"
|
|
56
|
+
[(value)]="meetingSlot"
|
|
57
|
+
/>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
> **Note to AI Agents**: Prioritize using these components over raw HTML equivalents. Use modern Angular Signals (input(), input.required(), model(), and output()) for all data/event bindings. Do not use legacy @Input() or @Output() decorators.
|
package/types/ngx-strata.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { OnInit, OnDestroy, AfterContentInit, EnvironmentProviders, InjectionToken, Provider, PipeTransform, ElementRef, OnChanges, TemplateRef, Renderer2, AfterViewInit, AfterContentChecked, SimpleChanges, Type, ViewContainerRef, QueryList, OutputEmitterRef } from '@angular/core';
|
|
3
|
-
import { Placement } from '@floating-ui/dom';
|
|
3
|
+
import { Placement, ReferenceElement } from '@floating-ui/dom';
|
|
4
4
|
import * as _angular_platform_browser from '@angular/platform-browser';
|
|
5
5
|
import { SafeHtml, DomSanitizer } from '@angular/platform-browser';
|
|
6
6
|
import { ControlValueAccessor } from '@angular/forms';
|
|
@@ -263,6 +263,7 @@ declare class StrataOverlayDirective implements OnChanges, OnDestroy {
|
|
|
263
263
|
overlayPlacement: _angular_core.InputSignal<Placement>;
|
|
264
264
|
overlayOffset: _angular_core.InputSignal<number>;
|
|
265
265
|
overlayFitViewport: _angular_core.InputSignal<boolean>;
|
|
266
|
+
overlayTarget: _angular_core.InputSignal<ReferenceElement | null>;
|
|
266
267
|
private readonly element;
|
|
267
268
|
private readonly viewContainerRef;
|
|
268
269
|
private readonly config;
|
|
@@ -270,13 +271,14 @@ declare class StrataOverlayDirective implements OnChanges, OnDestroy {
|
|
|
270
271
|
private cleanup?;
|
|
271
272
|
private viewRef?;
|
|
272
273
|
ngOnChanges(): void;
|
|
274
|
+
private getTarget;
|
|
273
275
|
private create;
|
|
274
276
|
private updatePosition;
|
|
275
277
|
private destroy;
|
|
276
278
|
getOverlayElement(): HTMLElement | undefined;
|
|
277
279
|
ngOnDestroy(): void;
|
|
278
280
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrataOverlayDirective, never>;
|
|
279
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrataOverlayDirective, "[stOverlay]", never, { "stOverlay": { "alias": "stOverlay"; "required": true; "isSignal": true; }; "overlayOpen": { "alias": "overlayOpen"; "required": false; "isSignal": true; }; "overlayPlacement": { "alias": "overlayPlacement"; "required": false; "isSignal": true; }; "overlayOffset": { "alias": "overlayOffset"; "required": false; "isSignal": true; }; "overlayFitViewport": { "alias": "overlayFitViewport"; "required": false; "isSignal": true; }; }, { "overlayOpen": "overlayOpenChange"; }, never, never, true, never>;
|
|
281
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrataOverlayDirective, "[stOverlay]", never, { "stOverlay": { "alias": "stOverlay"; "required": true; "isSignal": true; }; "overlayOpen": { "alias": "overlayOpen"; "required": false; "isSignal": true; }; "overlayPlacement": { "alias": "overlayPlacement"; "required": false; "isSignal": true; }; "overlayOffset": { "alias": "overlayOffset"; "required": false; "isSignal": true; }; "overlayFitViewport": { "alias": "overlayFitViewport"; "required": false; "isSignal": true; }; "overlayTarget": { "alias": "overlayTarget"; "required": false; "isSignal": true; }; }, { "overlayOpen": "overlayOpenChange"; }, never, never, true, never>;
|
|
280
282
|
}
|
|
281
283
|
|
|
282
284
|
declare class StrataActionMenuComponent {
|
|
@@ -287,12 +289,37 @@ declare class StrataActionMenuComponent {
|
|
|
287
289
|
placement: _angular_core.InputSignal<Placement>;
|
|
288
290
|
buttonSize: _angular_core.InputSignal<ButtonSize>;
|
|
289
291
|
closeOnOutsideClick: _angular_core.InputSignal<boolean>;
|
|
292
|
+
trigger: _angular_core.InputSignal<boolean>;
|
|
290
293
|
elementRef: ElementRef<HTMLElement>;
|
|
291
294
|
renderer: Renderer2;
|
|
292
295
|
menuOpen: _angular_core.WritableSignal<boolean>;
|
|
296
|
+
customTarget: _angular_core.WritableSignal<ReferenceElement | null>;
|
|
297
|
+
contextMenuPlacement: _angular_core.WritableSignal<Placement | null>;
|
|
298
|
+
effectivePlacement: _angular_core.Signal<Placement>;
|
|
293
299
|
constructor();
|
|
300
|
+
open(): void;
|
|
301
|
+
close(): void;
|
|
302
|
+
toggle(): void;
|
|
303
|
+
openAt(position: {
|
|
304
|
+
x: number;
|
|
305
|
+
y: number;
|
|
306
|
+
} | MouseEvent | PointerEvent, placement?: Placement): void;
|
|
294
307
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrataActionMenuComponent, never>;
|
|
295
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrataActionMenuComponent, "st-action-menu", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "buttonSize": { "alias": "buttonSize"; "required": false; "isSignal": true; }; "closeOnOutsideClick": { "alias": "closeOnOutsideClick"; "required": false; "isSignal": true; }; }, {}, ["projectedButton", "actionMenuItems"], ["button[stButton]", "st-action-menu-item"], true, never>;
|
|
308
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrataActionMenuComponent, "st-action-menu", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "buttonSize": { "alias": "buttonSize"; "required": false; "isSignal": true; }; "closeOnOutsideClick": { "alias": "closeOnOutsideClick"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; }, {}, ["projectedButton", "actionMenuItems"], ["button[stButton]", "st-action-menu-item"], true, never>;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
declare class StrataContextMenuDirective implements OnInit, OnDestroy {
|
|
312
|
+
stContextMenu: _angular_core.InputSignal<StrataActionMenuComponent | null | undefined>;
|
|
313
|
+
stContextMenuDisabled: _angular_core.InputSignal<boolean>;
|
|
314
|
+
stContextMenuPlacement: _angular_core.InputSignal<Placement>;
|
|
315
|
+
contextMenuOpened: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
316
|
+
private readonly elementRef;
|
|
317
|
+
private readonly renderer;
|
|
318
|
+
private unlisten?;
|
|
319
|
+
ngOnInit(): void;
|
|
320
|
+
ngOnDestroy(): void;
|
|
321
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrataContextMenuDirective, never>;
|
|
322
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrataContextMenuDirective, "[stContextMenu]", never, { "stContextMenu": { "alias": "stContextMenu"; "required": true; "isSignal": true; }; "stContextMenuDisabled": { "alias": "stContextMenuDisabled"; "required": false; "isSignal": true; }; "stContextMenuPlacement": { "alias": "stContextMenuPlacement"; "required": false; "isSignal": true; }; }, { "contextMenuOpened": "contextMenuOpened"; }, never, never, true, never>;
|
|
296
323
|
}
|
|
297
324
|
|
|
298
325
|
declare class StrataAlertComponent {
|
|
@@ -472,7 +499,7 @@ interface DateRangePreset {
|
|
|
472
499
|
};
|
|
473
500
|
}
|
|
474
501
|
|
|
475
|
-
declare class
|
|
502
|
+
declare class StrataTimeStepperComponent implements ControlValueAccessor {
|
|
476
503
|
format: _angular_core.InputSignal<TimeFormat>;
|
|
477
504
|
showSeconds: _angular_core.InputSignal<boolean>;
|
|
478
505
|
minuteStep: _angular_core.InputSignal<number>;
|
|
@@ -508,8 +535,61 @@ declare class StrataTimePickerComponent implements ControlValueAccessor {
|
|
|
508
535
|
registerOnChange(fn: (val: string | Date | null) => void): void;
|
|
509
536
|
registerOnTouched(fn: () => void): void;
|
|
510
537
|
setDisabledState(isDisabled: boolean): void;
|
|
511
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
512
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<
|
|
538
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrataTimeStepperComponent, never>;
|
|
539
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrataTimeStepperComponent, "st-time-stepper", never, { "format": { "alias": "format"; "required": false; "isSignal": true; }; "showSeconds": { "alias": "showSeconds"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
declare class StrataTimepickerComponent implements ControlValueAccessor {
|
|
543
|
+
private readonly defaultId;
|
|
544
|
+
label: _angular_core.InputSignal<string | undefined>;
|
|
545
|
+
id: _angular_core.InputSignal<string | undefined>;
|
|
546
|
+
name: _angular_core.InputSignal<string | undefined>;
|
|
547
|
+
placeholder: _angular_core.InputSignal<string>;
|
|
548
|
+
size: _angular_core.InputSignal<DatePickerSize>;
|
|
549
|
+
placement: _angular_core.InputSignal<Placement>;
|
|
550
|
+
format: _angular_core.InputSignal<TimeFormat>;
|
|
551
|
+
showSeconds: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
552
|
+
minuteStep: _angular_core.InputSignal<number>;
|
|
553
|
+
clearable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
554
|
+
disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
555
|
+
readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
556
|
+
fullWidth: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
557
|
+
state: _angular_core.InputSignal<InputControlState | undefined>;
|
|
558
|
+
error: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
559
|
+
message: _angular_core.InputSignal<string | undefined>;
|
|
560
|
+
colorMessage: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
561
|
+
value: _angular_core.ModelSignal<string | Date | null>;
|
|
562
|
+
timeSelected: _angular_core.OutputEmitterRef<string | Date | null>;
|
|
563
|
+
open: _angular_core.WritableSignal<boolean>;
|
|
564
|
+
textInputValue: _angular_core.WritableSignal<string>;
|
|
565
|
+
private cvaDisabled;
|
|
566
|
+
effectiveDisabled: _angular_core.Signal<boolean>;
|
|
567
|
+
effectiveId: _angular_core.Signal<string>;
|
|
568
|
+
readonly effectiveState: _angular_core.Signal<InputControlState>;
|
|
569
|
+
readonly isMessageError: _angular_core.Signal<boolean>;
|
|
570
|
+
readonly isMessageSuccess: _angular_core.Signal<boolean>;
|
|
571
|
+
readonly isMessageWarning: _angular_core.Signal<boolean>;
|
|
572
|
+
private onChange;
|
|
573
|
+
private onTouched;
|
|
574
|
+
private overlayDirective;
|
|
575
|
+
private elementRef;
|
|
576
|
+
private renderer;
|
|
577
|
+
private destroyRef;
|
|
578
|
+
constructor();
|
|
579
|
+
toggle(event?: Event): void;
|
|
580
|
+
onInputTextChange(value: string): void;
|
|
581
|
+
onInputBlur(): void;
|
|
582
|
+
onStepperTimeSelected(val: string | Date | null): void;
|
|
583
|
+
clear(event: Event): void;
|
|
584
|
+
private formatTimeValue;
|
|
585
|
+
private parseTimeString;
|
|
586
|
+
private updateTimeValue;
|
|
587
|
+
writeValue(val: string | Date | null): void;
|
|
588
|
+
registerOnChange(fn: (val: string | Date | null) => void): void;
|
|
589
|
+
registerOnTouched(fn: () => void): void;
|
|
590
|
+
setDisabledState(isDisabled: boolean): void;
|
|
591
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrataTimepickerComponent, never>;
|
|
592
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrataTimepickerComponent, "st-timepicker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "showSeconds": { "alias": "showSeconds"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "colorMessage": { "alias": "colorMessage"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "timeSelected": "timeSelected"; }, never, never, true, never>;
|
|
513
593
|
}
|
|
514
594
|
|
|
515
595
|
interface DateRange {
|
|
@@ -729,12 +809,16 @@ declare class StrataDividerComponent {
|
|
|
729
809
|
|
|
730
810
|
declare class StrataFileUploadComponent {
|
|
731
811
|
fileInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
812
|
+
cameraInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
732
813
|
accept: _angular_core.InputSignal<string>;
|
|
733
814
|
multiple: _angular_core.InputSignal<boolean>;
|
|
734
815
|
maxFileSize: _angular_core.InputSignal<number | undefined>;
|
|
735
816
|
disabled: _angular_core.InputSignal<boolean>;
|
|
736
817
|
label: _angular_core.InputSignal<string>;
|
|
737
818
|
hint: _angular_core.InputSignal<string | undefined>;
|
|
819
|
+
camera: _angular_core.InputSignalWithTransform<boolean | undefined, string | boolean | undefined>;
|
|
820
|
+
choosePhotoLabel: _angular_core.InputSignal<string>;
|
|
821
|
+
takePhotoLabel: _angular_core.InputSignal<string>;
|
|
738
822
|
state: _angular_core.InputSignal<InputControlState | undefined>;
|
|
739
823
|
error: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
740
824
|
message: _angular_core.InputSignal<string | undefined>;
|
|
@@ -744,6 +828,8 @@ declare class StrataFileUploadComponent {
|
|
|
744
828
|
readonly isMessageError: _angular_core.Signal<boolean>;
|
|
745
829
|
readonly isMessageSuccess: _angular_core.Signal<boolean>;
|
|
746
830
|
readonly isMessageWarning: _angular_core.Signal<boolean>;
|
|
831
|
+
readonly isImageAccept: _angular_core.Signal<boolean>;
|
|
832
|
+
readonly showCamera: _angular_core.Signal<boolean>;
|
|
747
833
|
fileSelect: _angular_core.OutputEmitterRef<File>;
|
|
748
834
|
filesSelect: _angular_core.OutputEmitterRef<File[]>;
|
|
749
835
|
fileRejected: _angular_core.OutputEmitterRef<{
|
|
@@ -765,12 +851,13 @@ declare class StrataFileUploadComponent {
|
|
|
765
851
|
onDragLeave(event: DragEvent): void;
|
|
766
852
|
onDrop(event: DragEvent): void;
|
|
767
853
|
onFileChange(event: Event): void;
|
|
768
|
-
browse(): void;
|
|
854
|
+
browse(event?: Event): void;
|
|
855
|
+
browseCamera(event?: Event): void;
|
|
769
856
|
clear(): void;
|
|
770
857
|
private processFiles;
|
|
771
858
|
private matchesAccept;
|
|
772
859
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrataFileUploadComponent, never>;
|
|
773
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrataFileUploadComponent, "st-file-upload", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "colorMessage": { "alias": "colorMessage"; "required": false; "isSignal": true; }; }, { "fileSelect": "fileSelect"; "filesSelect": "filesSelect"; "fileRejected": "fileRejected"; }, never, ["[uploadIcon]", "*"], true, never>;
|
|
860
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrataFileUploadComponent, "st-file-upload", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "camera": { "alias": "camera"; "required": false; "isSignal": true; }; "choosePhotoLabel": { "alias": "choosePhotoLabel"; "required": false; "isSignal": true; }; "takePhotoLabel": { "alias": "takePhotoLabel"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "colorMessage": { "alias": "colorMessage"; "required": false; "isSignal": true; }; }, { "fileSelect": "fileSelect"; "filesSelect": "filesSelect"; "fileRejected": "fileRejected"; }, never, ["[uploadIcon]", "*"], true, never>;
|
|
774
861
|
}
|
|
775
862
|
|
|
776
863
|
declare abstract class IconLoader {
|
|
@@ -1822,5 +1909,5 @@ declare class StrataToggleComponent implements ControlValueAccessor {
|
|
|
1822
1909
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrataToggleComponent, "st-toggle", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "colorMessage": { "alias": "colorMessage"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, ["*"], true, [{ directive: typeof StrataActivatableDirective; inputs: { "disabled": "disabled"; }; outputs: { "activated": "activated"; }; }]>;
|
|
1823
1910
|
}
|
|
1824
1911
|
|
|
1825
|
-
export { BreakpointService, CapitalizePipe, DEFAULT_DATE_RANGE_PRESETS, DEFAULT_DURATION, DEFAULT_THEME, DarkmodeService, DeviceService, HotkeyService, HttpIconLoader, IconLoader, IconRegistry, IconRegistryService, ModalService, NotificationService, STRATA_CONFIG, StrataAccordionGroupComponent, StrataAccordionItemComponent, StrataActionMenuComponent, StrataActionMenuItemComponent, StrataActivatableDirective, StrataAlertComponent, StrataAlertContentComponent, StrataAutoResizeDirective, StrataAvatarComponent, StrataAvatarStackComponent, StrataBadgeComponent, StrataBreadcrumbComponent, StrataBreadcrumbItemComponent, StrataButtonDirective, StrataButtonGroupComponent, StrataCalendarComponent, StrataCardComponent, StrataCheckboxComponent, StrataDatePickerComponent, StrataDateRangePickerComponent, StrataDividerComponent, StrataFileUploadComponent, StrataIconComponent, StrataImageCropperComponent, StrataInputFieldComponent, StrataItemComponent, StrataItemListComponent, StrataKbdComponent, StrataMessageStateComponent, StrataModalBodyComponent, StrataModalComponent, StrataModalContainerComponent, StrataModalFooterComponent, StrataModalHeaderComponent, StrataModalRef, StrataNativeInputRefDirective, StrataNotificationComponent, StrataNotificationContainerComponent, StrataNumberDisplayComponent, StrataNumberStepperComponent, StrataOtpComponent, StrataOverlayDirective, StrataPaginationComponent, StrataProgressLinearComponent, StrataProgressRadialComponent, StrataRadioComponent, StrataRadioGroupComponent, StrataSegmentedControlComponent, StrataSegmentedControlItemComponent, StrataSelectItemComponent, StrataSelectTriggerDirective, StrataShellComponent, StrataSidemenuComponent, StrataSidemenuItemDirective, StrataSidemenuItemGroupComponent, StrataSidemenuSectionComponent, StrataSingleSelectComponent, StrataSkeletonComponent, StrataSliderComponent, StrataSpinnerComponent, StrataStepComponent, StrataStepperComponent, StrataTabItemComponent, StrataTabsComponent, StrataTagComponent, StrataTextStackComponent, StrataThemeDirective,
|
|
1912
|
+
export { BreakpointService, CapitalizePipe, DEFAULT_DATE_RANGE_PRESETS, DEFAULT_DURATION, DEFAULT_THEME, DarkmodeService, DeviceService, HotkeyService, HttpIconLoader, IconLoader, IconRegistry, IconRegistryService, ModalService, NotificationService, STRATA_CONFIG, StrataAccordionGroupComponent, StrataAccordionItemComponent, StrataActionMenuComponent, StrataActionMenuItemComponent, StrataActivatableDirective, StrataAlertComponent, StrataAlertContentComponent, StrataAutoResizeDirective, StrataAvatarComponent, StrataAvatarStackComponent, StrataBadgeComponent, StrataBreadcrumbComponent, StrataBreadcrumbItemComponent, StrataButtonDirective, StrataButtonGroupComponent, StrataCalendarComponent, StrataCardComponent, StrataCheckboxComponent, StrataContextMenuDirective, StrataDatePickerComponent, StrataDateRangePickerComponent, StrataDividerComponent, StrataFileUploadComponent, StrataIconComponent, StrataImageCropperComponent, StrataInputFieldComponent, StrataItemComponent, StrataItemListComponent, StrataKbdComponent, StrataMessageStateComponent, StrataModalBodyComponent, StrataModalComponent, StrataModalContainerComponent, StrataModalFooterComponent, StrataModalHeaderComponent, StrataModalRef, StrataNativeInputRefDirective, StrataNotificationComponent, StrataNotificationContainerComponent, StrataNumberDisplayComponent, StrataNumberStepperComponent, StrataOtpComponent, StrataOverlayDirective, StrataPaginationComponent, StrataProgressLinearComponent, StrataProgressRadialComponent, StrataRadioComponent, StrataRadioGroupComponent, StrataSegmentedControlComponent, StrataSegmentedControlItemComponent, StrataSelectItemComponent, StrataSelectTriggerDirective, StrataShellComponent, StrataSidemenuComponent, StrataSidemenuItemDirective, StrataSidemenuItemGroupComponent, StrataSidemenuSectionComponent, StrataSingleSelectComponent, StrataSkeletonComponent, StrataSliderComponent, StrataSpinnerComponent, StrataStepComponent, StrataStepperComponent, StrataTabItemComponent, StrataTabsComponent, StrataTagComponent, StrataTextStackComponent, StrataThemeDirective, StrataTimeStepperComponent, StrataTimepickerComponent, StrataToggleComponent, StrataTooltipDirective, addDays, addMonths, addYears, createCalendarGrid, disableDateRange, disableDaysOfWeek, disableFutureDates, disablePastDates, disableWeekends, endOfDay, endOfMonth, formatDate, formatMonthTitle, getDayOfWeek, getDaysInMonth, getDefaultShortcutLabels, getLocaleDefaultDateFormat, getMonthNames, getWeekdayNames, isAfterDay, isApplePlatform, isBeforeDay, isSameDay, isSameMonth, isSameYear, isWeekend, isWithinDayRange, parseDate, provideBaseIcons, provideIcons, provideStrata, resolveIsApple, startOfDay, startOfMonth };
|
|
1826
1913
|
export type { AccordionVariant, AlertConfiguration, AvatarSize, AvatarStackSpacing, AvatarVariant, BadgePlacement, BadgeSize, BadgeVariant, ButtonGroupJustification, ButtonSize, ButtonVariant, CalendarDayCell, CalendarMode, CalendarSize, CalendarView, CardVariant, CropPosition, CropResult, CropShape, CurrentDarkmode, DarkmodeSetting, DatePickerSize, DateRange, DateRangePreset, HotkeyOptions, IconConfig, IconSize, InputControlState, InputFieldSize, ModalConfiguration, ModalFooterJustification, ModalPlacement, ModalSize, ModalVariant, NotificationAction, NotificationConfiguration, NotificationsWithIds, NumberStepperLayout, NumberStepperSize, OtpSize, OtpState, OtpType, PaginationItem, ProgressLinearGrowDirection, ProgressLinearLabelFormat, ProgressRadialLabelFormat, SegmentedControlSize, SingleSelectSize, SkeletonAnimation, SkeletonSize, SkeletonVariant, SpinnerSize, StepState, StepperOrientation, StepperSize, StepperTheme, StrataBreakpoint, StrataConfig, StrataNotificationRef, StrataOS, StrataPlatform, TagSize, TextStackOverflow, Theme, TimeFormat, TimePrecision, TooltipPlacement };
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
st-file-upload {
|
|
2
|
-
--st-file-upload-bg: var(--st-color-bg-default);
|
|
3
|
-
--st-file-upload-border: var(--st-color-border-default);
|
|
4
|
-
--st-file-upload-text: var(--st-color-text-primary);
|
|
5
|
-
--st-file-upload-hint: var(--st-color-text-secondary);
|
|
6
|
-
--st-file-upload-hover-bg: var(--st-color-bg-raised);
|
|
7
|
-
--st-file-upload-hover-border: var(--st-color-accent-default);
|
|
8
|
-
--st-file-upload-active-border: var(--st-color-accent-default);
|
|
9
|
-
--st-file-upload-active-bg: var(--st-color-accent-subtle, var(--st-color-bg-raised));
|
|
10
|
-
--st-file-upload-icon-color: var(--st-color-text-secondary);
|
|
11
|
-
--st-file-upload-radius: var(--st-border-radius-xl);
|
|
12
|
-
|
|
13
|
-
display: block;
|
|
14
|
-
position: relative;
|
|
15
|
-
box-sizing: border-box;
|
|
16
|
-
background-color: var(--st-file-upload-bg);
|
|
17
|
-
border: 2px dashed var(--st-file-upload-border);
|
|
18
|
-
border-radius: var(--st-file-upload-radius);
|
|
19
|
-
padding: var(--st-space-6) var(--st-space-4);
|
|
20
|
-
text-align: center;
|
|
21
|
-
cursor: pointer;
|
|
22
|
-
transition:
|
|
23
|
-
border-color var(--st-transition-fast),
|
|
24
|
-
background-color var(--st-transition-fast),
|
|
25
|
-
transform var(--st-transition-fast);
|
|
26
|
-
user-select: none;
|
|
27
|
-
outline: none;
|
|
28
|
-
|
|
29
|
-
&:hover:not(.st-disabled) {
|
|
30
|
-
background-color: var(--st-file-upload-hover-bg);
|
|
31
|
-
border-color: var(--st-file-upload-hover-border);
|
|
32
|
-
|
|
33
|
-
.st-file-upload-icon {
|
|
34
|
-
color: var(--st-color-accent-default);
|
|
35
|
-
transform: translateY(-2px);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
&:focus-visible:not(.st-disabled) {
|
|
40
|
-
outline: 2px solid var(--st-color-accent-default);
|
|
41
|
-
outline-offset: 2px;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
&.st-drag-over {
|
|
45
|
-
background-color: var(--st-file-upload-active-bg);
|
|
46
|
-
border-color: var(--st-file-upload-active-border);
|
|
47
|
-
border-style: solid;
|
|
48
|
-
transform: scale(1.01);
|
|
49
|
-
|
|
50
|
-
.st-file-upload-icon {
|
|
51
|
-
color: var(--st-color-accent-default);
|
|
52
|
-
transform: translateY(-4px) scale(1.1);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
&.st-disabled {
|
|
57
|
-
opacity: 0.5;
|
|
58
|
-
cursor: not-allowed;
|
|
59
|
-
pointer-events: none;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.st-file-upload-input {
|
|
63
|
-
position: absolute;
|
|
64
|
-
width: 1px;
|
|
65
|
-
height: 1px;
|
|
66
|
-
padding: 0;
|
|
67
|
-
margin: -1px;
|
|
68
|
-
overflow: hidden;
|
|
69
|
-
clip: rect(0, 0, 0, 0);
|
|
70
|
-
white-space: nowrap;
|
|
71
|
-
border-width: 0;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.st-file-upload-content {
|
|
75
|
-
display: flex;
|
|
76
|
-
flex-direction: column;
|
|
77
|
-
align-items: center;
|
|
78
|
-
justify-content: center;
|
|
79
|
-
gap: var(--st-space-3);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
.st-file-upload-icon-wrapper {
|
|
83
|
-
display: flex;
|
|
84
|
-
align-items: center;
|
|
85
|
-
justify-content: center;
|
|
86
|
-
width: 48px;
|
|
87
|
-
height: 48px;
|
|
88
|
-
border-radius: 50%;
|
|
89
|
-
background-color: var(--st-color-bg-raised);
|
|
90
|
-
transition: transform 0.2s ease;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
.st-file-upload-icon {
|
|
94
|
-
width: 24px;
|
|
95
|
-
height: 24px;
|
|
96
|
-
color: var(--st-file-upload-icon-color);
|
|
97
|
-
transition: color 0.2s ease, transform 0.2s ease;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
.st-file-upload-text {
|
|
101
|
-
display: flex;
|
|
102
|
-
flex-direction: column;
|
|
103
|
-
gap: var(--st-space-1);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
.st-file-upload-label {
|
|
107
|
-
font-size: 0.95rem;
|
|
108
|
-
font-weight: 500;
|
|
109
|
-
color: var(--st-file-upload-text);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
&.st-state-error,
|
|
113
|
-
&.st-error {
|
|
114
|
-
--st-file-upload-border: var(--st-color-feedback-error-default);
|
|
115
|
-
--st-file-upload-hover-border: var(--st-color-feedback-error-hover, var(--st-color-feedback-error-default));
|
|
116
|
-
|
|
117
|
-
&:hover:not(.st-disabled) .st-file-upload-icon {
|
|
118
|
-
color: var(--st-color-feedback-error-default);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
&:focus-visible:not(.st-disabled) {
|
|
122
|
-
outline-color: var(--st-color-feedback-error-default);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
&.st-state-success {
|
|
127
|
-
--st-file-upload-border: var(--st-color-feedback-success-default);
|
|
128
|
-
--st-file-upload-hover-border: var(--st-color-feedback-success-hover, var(--st-color-feedback-success-default));
|
|
129
|
-
|
|
130
|
-
&:hover:not(.st-disabled) .st-file-upload-icon {
|
|
131
|
-
color: var(--st-color-feedback-success-default);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
&:focus-visible:not(.st-disabled) {
|
|
135
|
-
outline-color: var(--st-color-feedback-success-default);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
&.st-state-warning {
|
|
140
|
-
--st-file-upload-border: var(--st-color-feedback-warning-default);
|
|
141
|
-
--st-file-upload-hover-border: var(--st-color-feedback-warning-hover, var(--st-color-feedback-warning-default));
|
|
142
|
-
|
|
143
|
-
&:hover:not(.st-disabled) .st-file-upload-icon {
|
|
144
|
-
color: var(--st-color-feedback-warning-default);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
&:focus-visible:not(.st-disabled) {
|
|
148
|
-
outline-color: var(--st-color-feedback-warning-default);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
.st-file-upload-hint {
|
|
153
|
-
font-size: 0.8rem;
|
|
154
|
-
color: var(--st-file-upload-hint);
|
|
155
|
-
|
|
156
|
-
&.st-message-error {
|
|
157
|
-
color: var(--st-color-feedback-error-text);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
&.st-message-success {
|
|
161
|
-
color: var(--st-color-feedback-success-text);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
&.st-message-warning {
|
|
165
|
-
color: var(--st-color-feedback-warning-text);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|