@hyvnt/hyvui 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +264 -253
  2. package/dist/components/ambient/CornerBrackets.svelte +83 -87
  3. package/dist/components/ambient/DataStream.svelte +111 -94
  4. package/dist/components/ambient/GlyphMark.svelte +69 -69
  5. package/dist/components/ambient/GridOverlay.svelte +26 -28
  6. package/dist/components/ambient/ParallaxLayer.svelte +37 -41
  7. package/dist/components/ambient/ScanBand.svelte +95 -91
  8. package/dist/components/ambient/SignalRing.svelte +100 -100
  9. package/dist/components/ambient/ThreadLine.svelte +71 -78
  10. package/dist/components/ambient/Vignette.svelte +24 -26
  11. package/dist/components/depth/DepthLayer.svelte +22 -27
  12. package/dist/components/depth/DepthStage.svelte +63 -62
  13. package/dist/components/depth/FloatCard.svelte +113 -104
  14. package/dist/components/depth/HorizonGrid.svelte +216 -160
  15. package/dist/components/depth/Plinth.svelte +52 -57
  16. package/dist/components/display/Avatar.svelte +64 -69
  17. package/dist/components/display/Badge.svelte +59 -63
  18. package/dist/components/display/Blockquote.svelte +31 -34
  19. package/dist/components/display/CodeBlock.svelte +71 -76
  20. package/dist/components/display/MetricCard.svelte +77 -83
  21. package/dist/components/display/Table.svelte +99 -104
  22. package/dist/components/feedback/Alert.svelte +71 -76
  23. package/dist/components/feedback/EmptyState.svelte +68 -68
  24. package/dist/components/feedback/ErrorState.svelte +73 -73
  25. package/dist/components/feedback/Skeleton.svelte +52 -52
  26. package/dist/components/feedback/StatusDot.svelte +49 -54
  27. package/dist/components/feedback/StatusLine.svelte +122 -122
  28. package/dist/components/feedback/Toast.svelte +130 -136
  29. package/dist/components/inputs/Button.svelte +240 -237
  30. package/dist/components/inputs/Checkbox.svelte +104 -105
  31. package/dist/components/inputs/FileUpload.svelte +165 -163
  32. package/dist/components/inputs/Input.svelte +145 -147
  33. package/dist/components/inputs/Select.svelte +156 -150
  34. package/dist/components/inputs/Textarea.svelte +153 -154
  35. package/dist/components/inputs/Toggle.svelte +120 -120
  36. package/dist/components/layout/Card.svelte +70 -76
  37. package/dist/components/layout/Drawer.svelte +133 -109
  38. package/dist/components/layout/Grid.svelte +118 -43
  39. package/dist/components/layout/Grid.svelte.d.ts +8 -2
  40. package/dist/components/layout/Modal.svelte +176 -159
  41. package/dist/components/layout/Panel.svelte +49 -54
  42. package/dist/components/layout/Popover.svelte +178 -67
  43. package/dist/components/layout/Popover.svelte.d.ts +10 -1
  44. package/dist/components/layout/Stack.svelte +53 -53
  45. package/dist/components/navigation/Breadcrumb.svelte +70 -73
  46. package/dist/components/navigation/DropdownMenu.svelte +167 -124
  47. package/dist/components/navigation/DropdownMenu.svelte.d.ts +12 -2
  48. package/dist/components/navigation/SidebarNav.svelte +86 -90
  49. package/dist/components/navigation/Tabs.svelte +81 -86
  50. package/dist/components/navigation/Topbar.svelte +85 -85
  51. package/dist/components/patterns/ActionBar.svelte +71 -76
  52. package/dist/components/patterns/ConfirmDialog.svelte +63 -64
  53. package/dist/components/patterns/PageHeader.svelte +109 -114
  54. package/dist/components/patterns/SearchBar.svelte +54 -59
  55. package/dist/components/patterns/TerminalBoot.svelte +104 -104
  56. package/dist/components/primitives/Divider.svelte +26 -29
  57. package/dist/components/primitives/Icon.svelte +44 -49
  58. package/dist/components/primitives/Label.svelte +39 -44
  59. package/dist/components/primitives/Surface.svelte +89 -87
  60. package/dist/components/primitives/Text.svelte +98 -98
  61. package/dist/components/scenes/ArchiveScene.svelte +92 -95
  62. package/dist/components/scenes/ArchiveScene.svelte.d.ts +7 -1
  63. package/dist/components/scenes/LogScene.svelte +72 -77
  64. package/dist/components/scenes/NarrativeScene.svelte +91 -92
  65. package/dist/components/scenes/ReadoutScene.svelte +120 -107
  66. package/dist/components/scenes/ReadoutScene.svelte.d.ts +3 -1
  67. package/dist/components/scenes/StageScene.svelte +97 -104
  68. package/dist/examples/FieldReport.svelte +226 -223
  69. package/dist/examples/ObservationDeck.svelte +333 -317
  70. package/dist/examples/SignalLost.svelte +191 -191
  71. package/dist/styles.css +113 -0
  72. package/dist/system/actions/echo.js +9 -9
  73. package/dist/system/actions/resolve.js +9 -9
  74. package/dist/system/actions/reveal.js +1 -1
  75. package/dist/system/actions/surface.js +13 -1
  76. package/dist/system/depth/depth.css +49 -49
  77. package/dist/system/depth/depth.js +1 -1
  78. package/dist/system/expressions.css +80 -80
  79. package/dist/system/override-template.css +72 -72
  80. package/dist/system/register.css +74 -74
  81. package/dist/system/scroll-lock.d.ts +6 -0
  82. package/dist/system/scroll-lock.js +23 -0
  83. package/dist/tokens/tokens.css +100 -86
  84. package/dist/tokens/tokens.js +4 -4
  85. package/dist/utils/motion.js +1 -1
  86. package/package.json +67 -60
@@ -1,147 +1,145 @@
1
- <script lang="ts">
2
- import { cn } from '../../utils/cn.js';
3
-
4
- interface Props {
5
- /** Input type. */
6
- type?: 'text' | 'number' | 'password' | 'email' | 'search';
7
- /** Current value (bindable). */
8
- value?: string;
9
- /** Placeholder text. */
10
- placeholder?: string;
11
- /** Disables the input. */
12
- disabled?: boolean;
13
- /** Error message. Displays below the input and activates error styling. */
14
- error?: string;
15
- /** Hint text displayed below the input. */
16
- hint?: string;
17
- /** Label text displayed above the input. */
18
- label?: string;
19
- /** Additional CSS classes. */
20
- class?: string;
21
- /** Input handler. */
22
- oninput?: (e: Event) => void;
23
- /** Change handler. */
24
- onchange?: (e: Event) => void;
25
- }
26
-
27
- let {
28
- type = 'text',
29
- value = $bindable(''),
30
- placeholder = '',
31
- disabled = false,
32
- error = '',
33
- hint = '',
34
- label = '',
35
- class: className = '',
36
- oninput,
37
- onchange,
38
- }: Props = $props();
39
-
40
- const inputId = `hyvui-input-${Math.random().toString(36).slice(2, 8)}`;
41
- </script>
42
-
43
- <div class={cn('hyvui-input-wrap', className)}>
44
- {#if label}
45
- <label class="hyvui-input-label" for={inputId}>{label}</label>
46
- {/if}
47
- <input
48
- id={inputId}
49
- {type}
50
- bind:value
51
- {placeholder}
52
- {disabled}
53
- class={cn('hyvui-input', error && 'hyvui-input-error')}
54
- {oninput}
55
- {onchange}
56
- />
57
- {#if error}
58
- <span class="hyvui-input-message hyvui-input-message-error">{error}</span>
59
- {:else if hint}
60
- <span class="hyvui-input-message">{hint}</span>
61
- {/if}
62
- </div>
63
-
64
- <style>
65
- .hyvui-input-wrap {
66
- display: flex;
67
- flex-direction: column;
68
- gap: var(--space-xs);
69
- min-width: 0;
70
- }
71
-
72
- .hyvui-input-label {
73
- font-family: var(--font-mono);
74
- font-size: 0.7rem;
75
- font-weight: 400;
76
- letter-spacing: 0.16em;
77
- text-transform: uppercase;
78
- color: var(--muted-strong);
79
- line-height: 1.2;
80
- }
81
-
82
- .hyvui-input {
83
- font-family: var(--font-mono);
84
- font-size: 0.82rem;
85
- font-weight: 400;
86
- color: var(--text);
87
- min-height: var(--control-height-md);
88
- background:
89
- linear-gradient(180deg, rgba(240, 232, 218, 0.018), transparent 46%),
90
- linear-gradient(135deg, rgba(199, 156, 87, 0.045), transparent 44%),
91
- var(--bg-elev);
92
- border: 1px solid var(--line);
93
- border-radius: var(--radius-md);
94
- padding: var(--control-pad-y) var(--control-pad-x);
95
- outline: none;
96
- transition:
97
- border-color var(--transition-fast),
98
- background var(--transition-fast),
99
- box-shadow var(--transition-fast);
100
- width: 100%;
101
- box-shadow: inset 0 1px 0 rgba(240, 232, 218, 0.03);
102
- }
103
-
104
- .hyvui-input::placeholder {
105
- color: var(--muted);
106
- }
107
-
108
- .hyvui-input:hover:not(:disabled) {
109
- border-color: color-mix(in srgb, var(--line-strong) 82%, transparent);
110
- }
111
-
112
- .hyvui-input:focus {
113
- border-color: var(--line-strong);
114
- background:
115
- linear-gradient(180deg, rgba(240, 232, 218, 0.022), transparent 46%),
116
- linear-gradient(135deg, rgba(199, 156, 87, 0.06), transparent 44%),
117
- var(--bg-elev);
118
- }
119
-
120
- .hyvui-input:disabled {
121
- opacity: 0.4;
122
- cursor: not-allowed;
123
- }
124
-
125
- .hyvui-input-error {
126
- border-color: var(--status-fail);
127
- }
128
-
129
- .hyvui-input-message {
130
- font-family: var(--font-mono);
131
- font-size: 0.66rem;
132
- letter-spacing: 0.14em;
133
- text-transform: uppercase;
134
- color: var(--muted-strong);
135
- line-height: 1.3;
136
- }
137
-
138
- .hyvui-input-message-error {
139
- color: var(--status-fail);
140
- }
141
-
142
- @media (prefers-reduced-motion: reduce) {
143
- .hyvui-input {
144
- transition: none;
145
- }
146
- }
147
- </style>
1
+ <script lang="ts">
2
+ import { cn } from '../../utils/cn.js';
3
+
4
+ interface Props {
5
+ /** Input type. */
6
+ type?: 'text' | 'number' | 'password' | 'email' | 'search';
7
+ /** Current value (bindable). */
8
+ value?: string;
9
+ /** Placeholder text. */
10
+ placeholder?: string;
11
+ /** Disables the input. */
12
+ disabled?: boolean;
13
+ /** Error message. Displays below the input and activates error styling. */
14
+ error?: string;
15
+ /** Hint text displayed below the input. */
16
+ hint?: string;
17
+ /** Label text displayed above the input. */
18
+ label?: string;
19
+ /** Additional CSS classes. */
20
+ class?: string;
21
+ /** Input handler. */
22
+ oninput?: (e: Event) => void;
23
+ /** Change handler. */
24
+ onchange?: (e: Event) => void;
25
+ }
26
+
27
+ let {
28
+ type = 'text',
29
+ value = $bindable(''),
30
+ placeholder = '',
31
+ disabled = false,
32
+ error = '',
33
+ hint = '',
34
+ label = '',
35
+ class: className = '',
36
+ oninput,
37
+ onchange
38
+ }: Props = $props();
39
+
40
+ const inputId = `hyvui-input-${Math.random().toString(36).slice(2, 8)}`;
41
+ </script>
42
+
43
+ <div class={cn('hyvui-input-wrap', className)}>
44
+ {#if label}
45
+ <label class="hyvui-input-label" for={inputId}>{label}</label>
46
+ {/if}
47
+ <input
48
+ id={inputId}
49
+ {type}
50
+ bind:value
51
+ {placeholder}
52
+ {disabled}
53
+ class={cn('hyvui-input', error && 'hyvui-input-error')}
54
+ {oninput}
55
+ {onchange}
56
+ />
57
+ {#if error}
58
+ <span class="hyvui-input-message hyvui-input-message-error">{error}</span>
59
+ {:else if hint}
60
+ <span class="hyvui-input-message">{hint}</span>
61
+ {/if}
62
+ </div>
63
+
64
+ <style>
65
+ .hyvui-input-wrap {
66
+ display: flex;
67
+ flex-direction: column;
68
+ gap: var(--space-xs);
69
+ min-width: 0;
70
+ }
71
+
72
+ .hyvui-input-label {
73
+ font-family: var(--font-mono);
74
+ font-size: 0.7rem;
75
+ font-weight: 400;
76
+ letter-spacing: 0.16em;
77
+ text-transform: uppercase;
78
+ color: var(--muted-strong);
79
+ line-height: 1.2;
80
+ }
81
+
82
+ .hyvui-input {
83
+ font-family: var(--font-mono);
84
+ font-size: 0.82rem;
85
+ font-weight: 400;
86
+ color: var(--text);
87
+ min-height: var(--control-height-md);
88
+ background:
89
+ linear-gradient(180deg, rgba(240, 232, 218, 0.018), transparent 46%),
90
+ linear-gradient(135deg, rgba(199, 156, 87, 0.045), transparent 44%), var(--bg-elev);
91
+ border: 1px solid var(--line);
92
+ border-radius: var(--radius-md);
93
+ padding: var(--control-pad-y) var(--control-pad-x);
94
+ outline: none;
95
+ transition:
96
+ border-color var(--transition-fast),
97
+ background var(--transition-fast),
98
+ box-shadow var(--transition-fast);
99
+ width: 100%;
100
+ box-shadow: inset 0 1px 0 rgba(240, 232, 218, 0.03);
101
+ }
102
+
103
+ .hyvui-input::placeholder {
104
+ color: var(--muted);
105
+ }
106
+
107
+ .hyvui-input:hover:not(:disabled) {
108
+ border-color: color-mix(in srgb, var(--line-strong) 82%, transparent);
109
+ }
110
+
111
+ .hyvui-input:focus {
112
+ border-color: var(--line-strong);
113
+ background:
114
+ linear-gradient(180deg, rgba(240, 232, 218, 0.022), transparent 46%),
115
+ linear-gradient(135deg, rgba(199, 156, 87, 0.06), transparent 44%), var(--bg-elev);
116
+ }
117
+
118
+ .hyvui-input:disabled {
119
+ opacity: 0.4;
120
+ cursor: not-allowed;
121
+ }
122
+
123
+ .hyvui-input-error {
124
+ border-color: var(--status-fail);
125
+ }
126
+
127
+ .hyvui-input-message {
128
+ font-family: var(--font-mono);
129
+ font-size: 0.66rem;
130
+ letter-spacing: 0.14em;
131
+ text-transform: uppercase;
132
+ color: var(--muted-strong);
133
+ line-height: 1.3;
134
+ }
135
+
136
+ .hyvui-input-message-error {
137
+ color: var(--status-fail);
138
+ }
139
+
140
+ @media (prefers-reduced-motion: reduce) {
141
+ .hyvui-input {
142
+ transition: none;
143
+ }
144
+ }
145
+ </style>
@@ -1,150 +1,156 @@
1
- <script lang="ts">
2
- import { cn } from '../../utils/cn.js';
3
-
4
- interface SelectOption {
5
- value: string;
6
- label: string;
7
- }
8
-
9
- interface Props {
10
- /** Available options. */
11
- options?: SelectOption[];
12
- /** Current selected value (bindable). */
13
- value?: string;
14
- /** Label text displayed above the select. */
15
- label?: string;
16
- /** Error message. */
17
- error?: string;
18
- /** Disables the select. */
19
- disabled?: boolean;
20
- /** Additional CSS classes. */
21
- class?: string;
22
- /** Change handler. */
23
- onchange?: (e: Event) => void;
24
- }
25
-
26
- let {
27
- options = [],
28
- value = $bindable(''),
29
- label = '',
30
- error = '',
31
- disabled = false,
32
- class: className = '',
33
- onchange,
34
- }: Props = $props();
35
-
36
- const selectId = `hyvui-select-${Math.random().toString(36).slice(2, 8)}`;
37
- </script>
38
-
39
- <div class={cn('hyvui-select-wrap', className)}>
40
- {#if label}
41
- <label class="hyvui-select-label" for={selectId}>{label}</label>
42
- {/if}
43
- <div class="hyvui-select-container">
44
- <select
45
- id={selectId}
46
- bind:value
47
- {disabled}
48
- class={cn('hyvui-select', error && 'hyvui-select-error')}
49
- {onchange}
50
- >
51
- {#each options as opt}
52
- <option value={opt.value}>{opt.label}</option>
53
- {/each}
54
- </select>
55
- <svg class="hyvui-select-chevron" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true">
56
- <path d="M2.5 4.5L6 8L9.5 4.5" stroke="var(--accent)" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
57
- </svg>
58
- </div>
59
- {#if error}
60
- <span class="hyvui-select-message">{error}</span>
61
- {/if}
62
- </div>
63
-
64
- <style>
65
- .hyvui-select-wrap {
66
- display: flex;
67
- flex-direction: column;
68
- gap: var(--space-xs);
69
- min-width: 0;
70
- }
71
-
72
- .hyvui-select-label {
73
- font-family: var(--font-mono);
74
- font-size: 0.7rem;
75
- font-weight: 400;
76
- letter-spacing: 0.16em;
77
- text-transform: uppercase;
78
- color: var(--muted-strong);
79
- line-height: 1.2;
80
- }
81
-
82
- .hyvui-select-container {
83
- position: relative;
84
- display: flex;
85
- align-items: center;
86
- }
87
-
88
- .hyvui-select {
89
- font-family: var(--font-mono);
90
- font-size: 0.82rem;
91
- font-weight: 400;
92
- color: var(--text);
93
- min-height: var(--control-height-md);
94
- background:
95
- linear-gradient(180deg, rgba(240, 232, 218, 0.018), transparent 46%),
96
- linear-gradient(135deg, rgba(199, 156, 87, 0.045), transparent 44%),
97
- var(--bg-elev);
98
- border: 1px solid var(--line);
99
- border-radius: var(--radius-md);
100
- padding: var(--control-pad-y) 2.3rem var(--control-pad-y) var(--control-pad-x);
101
- outline: none;
102
- appearance: none;
103
- width: 100%;
104
- cursor: pointer;
105
- transition:
106
- border-color var(--transition-fast),
107
- background var(--transition-fast),
108
- box-shadow var(--transition-fast);
109
- box-shadow: inset 0 1px 0 rgba(240, 232, 218, 0.03);
110
- }
111
-
112
- .hyvui-select:hover:not(:disabled) {
113
- border-color: color-mix(in srgb, var(--line-strong) 82%, transparent);
114
- }
115
-
116
- .hyvui-select:focus {
117
- border-color: var(--line-strong);
118
- }
119
-
120
- .hyvui-select:disabled {
121
- opacity: 0.4;
122
- cursor: not-allowed;
123
- }
124
-
125
- .hyvui-select-error {
126
- border-color: var(--status-fail);
127
- }
128
-
129
- .hyvui-select-chevron {
130
- position: absolute;
131
- right: 0.85rem;
132
- pointer-events: none;
133
- opacity: 0.8;
134
- }
135
-
136
- .hyvui-select-message {
137
- font-family: var(--font-mono);
138
- font-size: 0.66rem;
139
- letter-spacing: 0.14em;
140
- text-transform: uppercase;
141
- color: var(--status-fail);
142
- line-height: 1.3;
143
- }
144
-
145
- @media (prefers-reduced-motion: reduce) {
146
- .hyvui-select {
147
- transition: none;
148
- }
149
- }
150
- </style>
1
+ <script lang="ts">
2
+ import { cn } from '../../utils/cn.js';
3
+
4
+ interface SelectOption {
5
+ value: string;
6
+ label: string;
7
+ }
8
+
9
+ interface Props {
10
+ /** Available options. */
11
+ options?: SelectOption[];
12
+ /** Current selected value (bindable). */
13
+ value?: string;
14
+ /** Label text displayed above the select. */
15
+ label?: string;
16
+ /** Error message. */
17
+ error?: string;
18
+ /** Disables the select. */
19
+ disabled?: boolean;
20
+ /** Additional CSS classes. */
21
+ class?: string;
22
+ /** Change handler. */
23
+ onchange?: (e: Event) => void;
24
+ }
25
+
26
+ let {
27
+ options = [],
28
+ value = $bindable(''),
29
+ label = '',
30
+ error = '',
31
+ disabled = false,
32
+ class: className = '',
33
+ onchange
34
+ }: Props = $props();
35
+
36
+ const selectId = `hyvui-select-${Math.random().toString(36).slice(2, 8)}`;
37
+ </script>
38
+
39
+ <div class={cn('hyvui-select-wrap', className)}>
40
+ {#if label}
41
+ <label class="hyvui-select-label" for={selectId}>{label}</label>
42
+ {/if}
43
+ <div class="hyvui-select-container">
44
+ <select
45
+ id={selectId}
46
+ bind:value
47
+ {disabled}
48
+ class={cn('hyvui-select', error && 'hyvui-select-error')}
49
+ {onchange}
50
+ >
51
+ {#each options as opt}
52
+ <option value={opt.value}>{opt.label}</option>
53
+ {/each}
54
+ </select>
55
+ <svg class="hyvui-select-chevron" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true">
56
+ <path
57
+ d="M2.5 4.5L6 8L9.5 4.5"
58
+ stroke="var(--accent)"
59
+ stroke-width="1.5"
60
+ fill="none"
61
+ stroke-linecap="round"
62
+ stroke-linejoin="round"
63
+ />
64
+ </svg>
65
+ </div>
66
+ {#if error}
67
+ <span class="hyvui-select-message">{error}</span>
68
+ {/if}
69
+ </div>
70
+
71
+ <style>
72
+ .hyvui-select-wrap {
73
+ display: flex;
74
+ flex-direction: column;
75
+ gap: var(--space-xs);
76
+ min-width: 0;
77
+ }
78
+
79
+ .hyvui-select-label {
80
+ font-family: var(--font-mono);
81
+ font-size: 0.7rem;
82
+ font-weight: 400;
83
+ letter-spacing: 0.16em;
84
+ text-transform: uppercase;
85
+ color: var(--muted-strong);
86
+ line-height: 1.2;
87
+ }
88
+
89
+ .hyvui-select-container {
90
+ position: relative;
91
+ display: flex;
92
+ align-items: center;
93
+ }
94
+
95
+ .hyvui-select {
96
+ font-family: var(--font-mono);
97
+ font-size: 0.82rem;
98
+ font-weight: 400;
99
+ color: var(--text);
100
+ min-height: var(--control-height-md);
101
+ background:
102
+ linear-gradient(180deg, rgba(240, 232, 218, 0.018), transparent 46%),
103
+ linear-gradient(135deg, rgba(199, 156, 87, 0.045), transparent 44%), var(--bg-elev);
104
+ border: 1px solid var(--line);
105
+ border-radius: var(--radius-md);
106
+ padding: var(--control-pad-y) 2.3rem var(--control-pad-y) var(--control-pad-x);
107
+ outline: none;
108
+ appearance: none;
109
+ width: 100%;
110
+ cursor: pointer;
111
+ transition:
112
+ border-color var(--transition-fast),
113
+ background var(--transition-fast),
114
+ box-shadow var(--transition-fast);
115
+ box-shadow: inset 0 1px 0 rgba(240, 232, 218, 0.03);
116
+ }
117
+
118
+ .hyvui-select:hover:not(:disabled) {
119
+ border-color: color-mix(in srgb, var(--line-strong) 82%, transparent);
120
+ }
121
+
122
+ .hyvui-select:focus {
123
+ border-color: var(--line-strong);
124
+ }
125
+
126
+ .hyvui-select:disabled {
127
+ opacity: 0.4;
128
+ cursor: not-allowed;
129
+ }
130
+
131
+ .hyvui-select-error {
132
+ border-color: var(--status-fail);
133
+ }
134
+
135
+ .hyvui-select-chevron {
136
+ position: absolute;
137
+ right: 0.85rem;
138
+ pointer-events: none;
139
+ opacity: 0.8;
140
+ }
141
+
142
+ .hyvui-select-message {
143
+ font-family: var(--font-mono);
144
+ font-size: 0.66rem;
145
+ letter-spacing: 0.14em;
146
+ text-transform: uppercase;
147
+ color: var(--status-fail);
148
+ line-height: 1.3;
149
+ }
150
+
151
+ @media (prefers-reduced-motion: reduce) {
152
+ .hyvui-select {
153
+ transition: none;
154
+ }
155
+ }
156
+ </style>