@nuralyui/select 0.1.1 → 0.1.3

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/select.style.js CHANGED
@@ -1,86 +1,106 @@
1
1
  import { css } from 'lit';
2
- import { selectVariables } from './select.style.variables.js';
3
2
  export const styles = css `
4
- ${selectVariables}
3
+ :host {
4
+ /* Layout and sizing */
5
+ --nuraly-select-local-width: 300px;
6
+ --nuraly-select-local-min-height: 40px;
7
+ --nuraly-select-local-padding-top: 8px;
8
+ --nuraly-select-local-padding-bottom: 8px;
9
+ --nuraly-select-local-padding-left: 12px;
10
+ --nuraly-select-local-padding-right: 12px;
11
+ --nuraly-select-local-wrapper-margin: 0;
12
+ --nuraly-select-local-border-radius: 6px;
13
+ --nuraly-select-local-border-width: 1px;
14
+
15
+ /* Dropdown settings */
16
+ --nuraly-select-local-dropdown-z-index: 9999;
17
+ --nuraly-select-local-dropdown-max-height: 200px;
18
+ --nuraly-select-local-placeholder-font-size: 14px;
19
+ --nuraly-select-local-option-font-size: 14px;
20
+
21
+ /* Sizes */
22
+ --nuraly-select-local-medium-height: 40px;
23
+ --nuraly-select-local-medium-font-size: 14px;
24
+ --nuraly-select-local-medium-padding: 8px 12px;
25
+ --nuraly-select-local-small-font-size: 12px;
26
+
27
+ /* Animation and transitions */
28
+ --nuraly-select-local-dropdown-animation-duration: 0.15s;
29
+
30
+ /* Multi-select specific */
31
+ --nuraly-select-local-tag-border-radius: 4px;
32
+ --nuraly-select-local-tag-padding: 2px 6px;
33
+ --nuraly-select-local-tag-margin: 2px;
34
+
35
+ /* Validation message */
36
+ --nuraly-select-local-message-font-size: 12px;
37
+ --nuraly-select-local-message-margin-top: 4px;
38
+ }
5
39
 
6
40
  :host {
7
41
  width: fit-content;
8
42
  display: block;
9
- font-family: var(--hybrid-select-font-family, var(--hybrid-select-local-font-family));
10
- font-size: var(--hybrid-select-font-size, var(--hybrid-select-local-font-size));
11
- line-height: var(--hybrid-select-line-height, var(--hybrid-select-local-line-height));
12
- margin: var(--hybrid-select-margin, var(--hybrid-select-local-wrapper-margin));
43
+ font-family: var(--nuraly-select-font-family, Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif);
44
+ font-size: var(--nuraly-select-font-size, 14px);
45
+ line-height: var(--nuraly-select-line-height, 1.5);
46
+ margin: var(--nuraly-select-margin, var(--nuraly-select-local-wrapper-margin));
13
47
  }
14
48
 
15
49
  /* Host attribute selectors for configuration */
16
50
  :host([disabled]) {
17
- opacity: var(--hybrid-select-disabled-opacity, var(--hybrid-select-local-disabled-opacity));
51
+ opacity: var(--nuraly-select-disabled-opacity, 0.5);
18
52
  pointer-events: none;
19
53
  }
20
54
 
21
55
  :host([disabled]) .wrapper {
22
- background-color: var(--hybrid-select-disabled-background, var(--hybrid-select-local-disabled-background));
23
- border-color: var(--hybrid-select-disabled-border-color, var(--hybrid-select-local-disabled-border-color));
24
- color: var(--hybrid-select-disabled-text-color, var(--hybrid-select-local-disabled-text-color));
56
+ background-color: var(--nuraly-select-disabled-background, #f9fafb);
57
+ border-color: var(--nuraly-select-disabled-border-color, #d9d9d9);
58
+ color: var(--nuraly-select-disabled-text-color, #8c8c8c);
25
59
  cursor: not-allowed;
26
60
  }
27
61
 
28
- /* Theme-specific styles */
29
- :host([theme='dark']) {
30
- --hybrid-select-local-background-color: #262626;
31
- --hybrid-select-local-border-color: #424242;
32
- --hybrid-select-local-text-color: #ffffff;
33
- --hybrid-select-local-placeholder-color: #8c8c8c;
34
- --hybrid-select-local-dropdown-background: #262626;
35
- --hybrid-select-local-dropdown-border-color: #424242;
36
- --hybrid-select-local-option-hover-background: #393939;
37
- --hybrid-select-local-option-selected-background: #1e3a5f;
38
- --hybrid-select-local-hover-border-color: #4096ff;
39
- --hybrid-select-local-focus-border-color: #4096ff;
40
- }
41
-
42
62
  /* Size variants */
43
63
  :host([size='small']) .wrapper {
44
- min-height: var(--hybrid-select-small-height, var(--hybrid-select-local-small-height));
45
- font-size: var(--hybrid-select-small-font-size, var(--hybrid-select-local-small-font-size));
64
+ min-height: var(--nuraly-select-small-height, 32px);
65
+ font-size: var(--nuraly-select-small-font-size, var(--nuraly-select-local-small-font-size));
46
66
  }
47
67
 
48
68
  :host([size='small']) .select-trigger {
49
- padding: var(--hybrid-select-small-padding, var(--hybrid-select-local-small-padding));
50
- padding-right: calc(var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size)) + 20px);
69
+ padding: var(--nuraly-select-small-padding, 4px 8px);
70
+ padding-right: calc(var(--nuraly-select-icon-size, 16px) + 20px);
51
71
  }
52
72
 
53
73
  :host([size='medium']) .wrapper {
54
- min-height: var(--hybrid-select-medium-height, var(--hybrid-select-local-medium-height));
55
- font-size: var(--hybrid-select-medium-font-size, var(--hybrid-select-local-medium-font-size));
74
+ min-height: var(--nuraly-select-medium-height, var(--nuraly-select-local-medium-height));
75
+ font-size: var(--nuraly-select-medium-font-size, var(--nuraly-select-local-medium-font-size));
56
76
  }
57
77
 
58
78
  :host([size='medium']) .select-trigger {
59
- padding: var(--hybrid-select-medium-padding, var(--hybrid-select-local-medium-padding));
60
- padding-right: calc(var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size)) + 20px);
79
+ padding: var(--nuraly-select-medium-padding, var(--nuraly-select-local-medium-padding));
80
+ padding-right: calc(var(--nuraly-select-icon-size, 16px) + 20px);
61
81
  }
62
82
 
63
83
  :host([size='large']) .wrapper {
64
- min-height: var(--hybrid-select-large-height, var(--hybrid-select-local-large-height));
65
- font-size: var(--hybrid-select-large-font-size, var(--hybrid-select-local-large-font-size));
84
+ min-height: var(--nuraly-select-large-height, 48px);
85
+ font-size: var(--nuraly-select-large-font-size, 16px);
66
86
  }
67
87
 
68
88
  :host([size='large']) .select-trigger {
69
- padding: var(--hybrid-select-large-padding, var(--hybrid-select-local-large-padding));
70
- padding-right: calc(var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size)) + 20px);
89
+ padding: var(--nuraly-select-large-padding, 12px 16px);
90
+ padding-right: calc(var(--nuraly-select-icon-size, 16px) + 20px);
71
91
  }
72
92
 
73
93
  /* Status variants */
74
94
  :host([status='error']) .wrapper {
75
- border-color: var(--hybrid-select-error-border-color, var(--hybrid-select-local-error-border-color));
95
+ border-color: var(--nuraly-select-error-border-color, #ef4444);
76
96
  }
77
97
 
78
98
  :host([status='warning']) .wrapper {
79
- border-color: var(--hybrid-select-warning-border-color, var(--hybrid-select-local-warning-border-color));
99
+ border-color: var(--nuraly-select-warning-border-color, #f59e0b);
80
100
  }
81
101
 
82
102
  :host([status='success']) .wrapper {
83
- border-color: var(--hybrid-select-success-border-color, var(--hybrid-select-local-success-border-color));
103
+ border-color: var(--nuraly-select-success-border-color, #10b981);
84
104
  }
85
105
 
86
106
  /* Type variants */
@@ -102,29 +122,29 @@ export const styles = css `
102
122
  /* Main wrapper container */
103
123
  .wrapper {
104
124
  position: relative;
105
- width: var(--hybrid-select-width, var(--hybrid-select-local-width));
106
- background-color: var(--hybrid-select-background-color, var(--hybrid-select-local-background-color));
107
- border: var(--hybrid-select-border-width, var(--hybrid-select-local-border-width)) solid
108
- var(--hybrid-select-border-color, var(--hybrid-select-local-border-color));
109
- border-radius: var(--hybrid-select-border-radius, var(--hybrid-select-local-border-radius));
110
- transition: all var(--hybrid-select-transition-duration, var(--hybrid-select-local-transition-duration))
111
- var(--hybrid-select-transition-timing, var(--hybrid-select-local-transition-timing));
125
+ width: var(--nuraly-select-width, var(--nuraly-select-local-width));
126
+ background-color: var(--nuraly-select-background-color, #ffffff);
127
+ border: var(--nuraly-select-border-width, var(--nuraly-select-local-border-width)) solid
128
+ var(--nuraly-select-border-color, #d9d9d9);
129
+ border-radius: var(--nuraly-select-border-radius, var(--nuraly-select-local-border-radius));
130
+ transition: all var(--nuraly-select-transition-duration, 0.2s)
131
+ var(--nuraly-select-transition-timing, ease-in-out);
112
132
  cursor: pointer;
113
133
  outline: none;
114
- margin: var(--hybrid-select-wrapper-margin, 0);
115
- min-height: var(--hybrid-select-min-height, var(--hybrid-select-local-min-height));
134
+ margin: var(--nuraly-select-wrapper-margin, 0);
135
+ min-height: var(--nuraly-select-min-height, var(--nuraly-select-local-min-height));
116
136
  /* Ensure dropdown can overflow the wrapper */
117
137
  overflow: visible;
118
138
  }
119
139
 
120
140
  .wrapper:hover:not(:disabled) {
121
- border-color: var(--hybrid-select-hover-border-color, var(--hybrid-select-local-hover-border-color));
141
+ border-color: var(--nuraly-select-border-hover, #7c3aed);
122
142
  }
123
143
 
124
144
  .wrapper:focus,
125
145
  .wrapper:focus-within {
126
- border-color: var(--hybrid-select-focus-border-color, var(--hybrid-select-local-focus-border-color));
127
- box-shadow: 0 0 0 2px var(--hybrid-select-focus-border-color, var(--hybrid-select-local-focus-border-color))33;
146
+ border-color: var(--nuraly-select-border-focus, #7c3aed);
147
+ box-shadow: 0 0 0 2px var(--nuraly-select-focus-outline, rgba(124, 58, 237, 0.2));
128
148
  }
129
149
 
130
150
  /* Select container */
@@ -137,23 +157,23 @@ export const styles = css `
137
157
  .select-trigger {
138
158
  display: flex;
139
159
  align-items: center;
140
- padding: var(--hybrid-select-padding-top, var(--hybrid-select-local-padding-top))
141
- calc(var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size)) + 20px)
142
- var(--hybrid-select-padding-bottom, var(--hybrid-select-local-padding-bottom))
143
- var(--hybrid-select-padding-left, var(--hybrid-select-local-padding-left));
144
- color: var(--hybrid-select-text-color, var(--hybrid-select-local-text-color));
160
+ padding: var(--nuraly-select-padding-top, var(--nuraly-select-local-padding-top))
161
+ calc(var(--nuraly-select-icon-size, 16px) + 20px)
162
+ var(--nuraly-select-padding-bottom, var(--nuraly-select-local-padding-bottom))
163
+ var(--nuraly-select-padding-left, var(--nuraly-select-local-padding-left));
164
+ color: var(--nuraly-select-text-color, #262626);
145
165
  font-size: inherit;
146
166
  line-height: inherit;
147
167
  word-break: break-word;
148
168
  min-height: inherit;
149
169
  flex-wrap: wrap;
150
- gap: var(--hybrid-select-tag-margin, var(--hybrid-select-local-tag-margin));
170
+ gap: var(--nuraly-select-tag-margin, var(--nuraly-select-local-tag-margin));
151
171
  }
152
172
 
153
173
  .select-trigger:empty:before {
154
174
  content: attr(data-placeholder);
155
- color: var(--hybrid-select-placeholder-color, var(--hybrid-select-local-placeholder-color));
156
- font-size: var(--hybrid-select-placeholder-font-size, var(--hybrid-select-local-placeholder-font-size));
175
+ color: var(--nuraly-select-placeholder-color, #8c8c8c);
176
+ font-size: var(--nuraly-select-placeholder-font-size, var(--nuraly-select-local-placeholder-font-size));
157
177
  }
158
178
 
159
179
  /* Multi-select tags */
@@ -161,11 +181,11 @@ export const styles = css `
161
181
  display: inline-flex;
162
182
  align-items: center;
163
183
  gap: 4px;
164
- background-color: var(--hybrid-select-tag-background, var(--hybrid-select-local-tag-background));
165
- color: var(--hybrid-select-tag-color, var(--hybrid-select-local-tag-color));
166
- padding: var(--hybrid-select-tag-padding, var(--hybrid-select-local-tag-padding));
167
- border-radius: var(--hybrid-select-tag-border-radius, var(--hybrid-select-local-tag-border-radius));
168
- font-size: calc(var(--hybrid-select-font-size, var(--hybrid-select-local-font-size)) - 1px);
184
+ background-color: var(--nuraly-select-tag-background, var(--nuraly-select-local-tag-background));
185
+ color: var(--nuraly-select-tag-color, var(--nuraly-select-local-tag-color));
186
+ padding: var(--nuraly-select-tag-padding, var(--nuraly-select-local-tag-padding));
187
+ border-radius: var(--nuraly-select-tag-border-radius, var(--nuraly-select-local-tag-border-radius));
188
+ font-size: calc(var(--nuraly-select-font-size, var(--nuraly-select-local-font-size)) - 1px);
169
189
  max-width: 100%;
170
190
  }
171
191
 
@@ -176,19 +196,19 @@ export const styles = css `
176
196
  }
177
197
 
178
198
  .tag-close {
179
- color: var(--hybrid-select-tag-close-color, var(--hybrid-select-local-tag-close-color));
199
+ color: var(--nuraly-select-tag-close-color, var(--nuraly-select-local-tag-close-color));
180
200
  cursor: pointer;
181
201
  display: flex;
182
202
  align-items: center;
183
203
  justify-content: center;
184
- width: var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size));
185
- height: var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size));
204
+ width: var(--nuraly-select-icon-size, var(--nuraly-select-local-icon-size));
205
+ height: var(--nuraly-select-icon-size, var(--nuraly-select-local-icon-size));
186
206
  border-radius: 50%;
187
- transition: color var(--hybrid-select-transition-duration, var(--hybrid-select-local-transition-duration));
207
+ transition: color var(--nuraly-select-transition-duration, var(--nuraly-select-local-transition-duration));
188
208
  }
189
209
 
190
210
  .tag-close:hover {
191
- color: var(--hybrid-select-tag-close-hover-color, var(--hybrid-select-local-tag-close-hover-color));
211
+ color: var(--nuraly-select-tag-close-hover-color, var(--nuraly-select-local-tag-close-hover-color));
192
212
  }
193
213
 
194
214
  /* Icons container */
@@ -203,21 +223,21 @@ export const styles = css `
203
223
  pointer-events: none;
204
224
  }
205
225
 
206
- .icons-container hy-icon {
207
- --hybrid-icon-width: var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size));
208
- --hybrid-icon-color: var(--hybrid-select-icon-color, var(--hybrid-select-local-icon-color));
226
+ .icons-container nr-icon {
227
+ --nuraly-icon-width: var(--nuraly-select-icon-size, var(--nuraly-select-local-icon-size));
228
+ --nuraly-icon-color: var(--nuraly-select-icon-color, var(--nuraly-select-local-icon-color));
209
229
  pointer-events: auto;
210
230
  cursor: pointer;
211
- transition: color var(--hybrid-select-transition-duration, var(--hybrid-select-local-transition-duration));
231
+ transition: color var(--nuraly-select-transition-duration, var(--nuraly-select-local-transition-duration));
212
232
  }
213
233
 
214
- .icons-container hy-icon:hover {
215
- --hybrid-icon-color: var(--hybrid-select-icon-hover-color, var(--hybrid-select-local-icon-hover-color));
234
+ .icons-container nr-icon:hover {
235
+ --nuraly-icon-color: var(--nuraly-select-icon-hover-color, var(--nuraly-select-local-icon-hover-color));
216
236
  }
217
237
 
218
238
  .arrow-icon {
219
- --hybrid-icon-width: var(--hybrid-select-arrow-icon-size, var(--hybrid-select-local-arrow-icon-size));
220
- transition: transform var(--hybrid-select-transition-duration, var(--hybrid-select-local-transition-duration));
239
+ --nuraly-icon-width: var(--nuraly-select-arrow-icon-size, var(--nuraly-select-local-arrow-icon-size));
240
+ transition: transform var(--nuraly-select-transition-duration, var(--nuraly-select-local-transition-duration));
221
241
  pointer-events: none !important;
222
242
  }
223
243
 
@@ -233,18 +253,18 @@ export const styles = css `
233
253
  margin-top: 1px;
234
254
  left: 0;
235
255
  right: 0;
236
- background-color: var(--hybrid-select-dropdown-background, var(--hybrid-select-local-dropdown-background));
237
- border: var(--hybrid-select-border-width, var(--hybrid-select-local-border-width)) solid
238
- var(--hybrid-select-dropdown-border-color, var(--hybrid-select-local-dropdown-border-color));
239
- border-radius: var(--hybrid-select-border-radius, var(--hybrid-select-local-border-radius));
240
- box-shadow: var(--hybrid-select-dropdown-shadow, var(--hybrid-select-local-dropdown-shadow));
241
- z-index: var(--hybrid-select-dropdown-z-index, var(--hybrid-select-local-dropdown-z-index));
242
- max-height: 200px;
256
+ background-color: var(--nuraly-select-dropdown-background, #ffffff);
257
+ border: var(--nuraly-select-dropdown-border-width, var(--nuraly-select-border-width, 1px)) solid
258
+ var(--nuraly-select-dropdown-border-color, #d9d9d9);
259
+ border-radius: var(--nuraly-select-dropdown-border-radius, var(--nuraly-select-border-radius, 6px));
260
+ box-shadow: var(--nuraly-select-dropdown-shadow, 0 6px 16px 0 rgba(0, 0, 0, 0.08));
261
+ z-index: var(--nuraly-select-dropdown-z-index, 9999);
262
+ max-height: var(--nuraly-select-dropdown-max-height, 200px);
243
263
  overflow-y: auto;
244
264
  overflow-x: hidden;
245
265
  display: none;
246
266
  flex-direction: column;
247
- animation: dropdown-enter var(--hybrid-select-dropdown-animation-duration, var(--hybrid-select-local-dropdown-animation-duration)) ease-out;
267
+ animation: dropdown-enter var(--nuraly-select-dropdown-animation-duration, 0.15s) ease-out;
248
268
  /* Ensure proper containment and exact wrapper width */
249
269
  box-sizing: border-box;
250
270
  width: 100%;
@@ -262,7 +282,7 @@ export const styles = css `
262
282
  bottom: 100%;
263
283
  margin-bottom: 1px;
264
284
  margin-top: 0;
265
- animation: dropdown-enter-top var(--hybrid-select-dropdown-animation-duration, var(--hybrid-select-local-dropdown-animation-duration)) ease-out;
285
+ animation: dropdown-enter-top var(--nuraly-select-dropdown-animation-duration, var(--nuraly-select-local-dropdown-animation-duration)) ease-out;
266
286
  }
267
287
 
268
288
  @keyframes dropdown-enter {
@@ -287,36 +307,81 @@ export const styles = css `
287
307
  }
288
308
  }
289
309
 
310
+ /* Search container - sticky at top of dropdown */
311
+ .search-container {
312
+ position: sticky;
313
+ top: 0;
314
+ z-index: 10;
315
+ background-color: var(--nuraly-select-dropdown-background, #ffffff);
316
+ border-bottom: var(--nuraly-select-border-width, 1px) solid
317
+ var(--nuraly-select-dropdown-border-color, #d9d9d9);
318
+ padding: 8px;
319
+ margin: 0;
320
+ /* Ensure it stays above options during scroll */
321
+ backdrop-filter: blur(8px);
322
+ -webkit-backdrop-filter: blur(8px);
323
+ /* Ensure proper stacking and smooth scrolling */
324
+ will-change: transform;
325
+ transform: translateZ(0);
326
+ }
327
+
328
+ /* Search input styling */
329
+ .search-container .search-input {
330
+ width: 100%;
331
+ --nuraly-input-border-radius: var(--nuraly-select-border-radius, var(--nuraly-select-local-border-radius));
332
+ --nuraly-input-background-color: var(--nuraly-select-background-color, var(--nuraly-select-local-background-color));
333
+ --nuraly-input-border-color: var(--nuraly-select-border-color, var(--nuraly-select-local-border-color));
334
+ --nuraly-input-text-color: var(--nuraly-select-text-color, var(--nuraly-select-local-text-color));
335
+ --nuraly-input-placeholder-color: var(--nuraly-select-placeholder-color, var(--nuraly-select-local-placeholder-color));
336
+ }
337
+
338
+ /* Search icon in the search input */
339
+ .search-container .search-icon {
340
+ --nuraly-icon-color: var(--nuraly-select-icon-color, var(--nuraly-select-local-icon-color));
341
+ }
342
+
343
+ /* Options list container - ensure proper scroll behavior with sticky search */
344
+ .options:has(.search-container) {
345
+ /* Add small padding-top when search is present to ensure proper separation */
346
+ padding-top: 0;
347
+ }
348
+
290
349
  /* Option items */
291
350
  .option {
292
351
  display: flex;
293
352
  align-items: center;
294
353
  gap: 8px;
295
- padding: 8px 12px;
296
- color: var(--hybrid-select-text-color, var(--hybrid-select-local-text-color));
297
- font-size: var(--hybrid-select-option-font-size, var(--hybrid-select-local-option-font-size));
354
+ padding: var(--nuraly-select-option-padding, 8px 12px);
355
+ min-height: var(--nuraly-select-option-min-height, auto);
356
+ color: var(--nuraly-select-option-text-color, var(--nuraly-select-text-color, #262626));
357
+ font-size: var(--nuraly-select-option-font-size, 14px);
298
358
  cursor: pointer;
299
- transition: background-color var(--hybrid-select-transition-duration, var(--hybrid-select-local-transition-duration));
359
+ transition: background-color var(--nuraly-select-transition-duration, 0.2s);
300
360
  position: relative;
301
361
  }
302
362
 
363
+ /* First option after search container should have no extra margin */
364
+ .search-container + .option {
365
+ margin-top: 0;
366
+ }
367
+
303
368
  .option:hover {
304
- background-color: var(--hybrid-select-option-hover-background, var(--hybrid-select-local-option-hover-background));
369
+ background-color: var(--nuraly-select-option-hover-background, #f5f5f5);
305
370
  }
306
371
 
307
372
  .option.selected {
308
- background-color: var(--hybrid-select-option-selected-background, var(--hybrid-select-local-option-selected-background));
309
- color: var(--hybrid-select-option-selected-color, var(--hybrid-select-local-option-selected-color));
373
+ background-color: var(--nuraly-select-option-selected-background, #e0e0e0);
374
+ color: var(--nuraly-select-option-selected-color, #7c3aed);
310
375
  }
311
376
 
312
377
  .option.focused {
313
- background-color: var(--hybrid-select-option-hover-background, var(--hybrid-select-local-option-hover-background));
314
- outline: 2px solid var(--hybrid-select-focus-border-color, var(--hybrid-select-local-focus-border-color));
378
+ background-color: var(--nuraly-select-option-hover-background, #f5f5f5);
379
+ outline: 2px solid var(--nuraly-select-border-focus, #7c3aed);
315
380
  outline-offset: -2px;
316
381
  }
317
382
 
318
383
  .option.disabled {
319
- opacity: var(--hybrid-select-disabled-opacity, var(--hybrid-select-local-disabled-opacity));
384
+ opacity: var(--nuraly-select-disabled-opacity, var(--nuraly-select-local-disabled-opacity));
320
385
  cursor: not-allowed;
321
386
  }
322
387
 
@@ -328,8 +393,8 @@ export const styles = css `
328
393
  }
329
394
 
330
395
  .option-icon {
331
- --hybrid-icon-width: var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size));
332
- --hybrid-icon-color: currentColor;
396
+ --nuraly-icon-width: var(--nuraly-select-icon-size, var(--nuraly-select-local-icon-size));
397
+ --nuraly-icon-color: currentColor;
333
398
  }
334
399
 
335
400
  .option-text {
@@ -340,24 +405,23 @@ export const styles = css `
340
405
  }
341
406
 
342
407
  .option-description {
343
- font-size: calc(var(--hybrid-select-option-font-size, var(--hybrid-select-local-option-font-size)) - 1px);
408
+ font-size: calc(var(--nuraly-select-option-font-size, var(--nuraly-select-local-option-font-size)) - 1px);
344
409
  opacity: 0.7;
345
410
  margin-top: 2px;
346
411
  }
347
412
 
348
413
  .check-icon {
349
- --hybrid-icon-width: var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size));
350
- --hybrid-icon-color: var(--hybrid-select-option-selected-color, var(--hybrid-select-local-option-selected-color));
414
+ --nuraly-icon-width: var(--nuraly-select-icon-size, var(--nuraly-select-local-icon-size));
415
+ --nuraly-icon-color: var(--nuraly-select-option-selected-color, var(--nuraly-select-local-option-selected-color));
351
416
  }
352
417
 
353
- /* No options message - styled like Ant Design */
354
418
  .no-options {
355
419
  display: flex;
356
420
  align-items: center;
357
421
  justify-content: center;
358
422
  padding: var(--select-no-options-padding, 24px 16px);
359
423
  color: var(--select-no-options-color, #8c8c8c);
360
- font-size: var(--hybrid-select-option-font-size, var(--hybrid-select-local-option-font-size));
424
+ font-size: var(--nuraly-select-option-font-size, var(--nuraly-select-local-option-font-size));
361
425
  cursor: default;
362
426
  user-select: none;
363
427
  }
@@ -371,44 +435,31 @@ export const styles = css `
371
435
  }
372
436
 
373
437
  .no-options-icon {
374
- --hybrid-icon-width: 24px;
375
- --hybrid-icon-color: var(--select-no-options-icon-color, #d9d9d9);
438
+ --nuraly-icon-width: 24px;
439
+ --nuraly-icon-color: var(--select-no-options-icon-color, #d9d9d9);
376
440
  opacity: 0.8;
377
441
  }
378
442
 
379
443
  .no-options-text {
380
- font-size: var(--hybrid-select-option-font-size, var(--hybrid-select-local-option-font-size));
444
+ font-size: var(--nuraly-select-option-font-size, var(--nuraly-select-local-option-font-size));
381
445
  color: var(--select-no-options-color, #8c8c8c);
382
446
  line-height: 1.4;
383
447
  }
384
448
 
385
- /* Dark theme adjustments for no-options */
386
- :host([theme='dark']) .no-options {
387
- color: var(--select-no-options-color, #595959);
388
- }
389
-
390
- :host([theme='dark']) .no-options-icon {
391
- --hybrid-icon-color: var(--select-no-options-icon-color, #434343);
392
- }
393
-
394
- :host([theme='dark']) .no-options-text {
395
- color: var(--select-no-options-color, #595959);
396
- }
397
-
398
449
  /* Validation message */
399
450
  .validation-message {
400
451
  display: block;
401
- margin-top: var(--hybrid-select-message-margin-top, var(--hybrid-select-local-message-margin-top));
402
- font-size: var(--hybrid-select-message-font-size, var(--hybrid-select-local-message-font-size));
403
- color: var(--hybrid-select-error-message-color, var(--hybrid-select-local-error-message-color));
452
+ margin-top: var(--nuraly-select-message-margin-top, var(--nuraly-select-local-message-margin-top));
453
+ font-size: var(--nuraly-select-message-font-size, var(--nuraly-select-local-message-font-size));
454
+ color: var(--nuraly-select-error-message-color, var(--nuraly-select-local-error-message-color));
404
455
  }
405
456
 
406
457
  .validation-message.warning {
407
- color: var(--hybrid-select-warning-message-color, var(--hybrid-select-local-warning-message-color));
458
+ color: var(--nuraly-select-warning-message-color, var(--nuraly-select-local-warning-message-color));
408
459
  }
409
460
 
410
461
  .validation-message.success {
411
- color: var(--hybrid-select-success-message-color, var(--hybrid-select-local-success-message-color));
462
+ color: var(--nuraly-select-success-message-color, var(--nuraly-select-local-success-message-color));
412
463
  }
413
464
 
414
465
  /* Slotted content styles */
@@ -416,14 +467,14 @@ export const styles = css `
416
467
  display: block;
417
468
  margin-bottom: 4px;
418
469
  font-weight: 500;
419
- color: var(--hybrid-select-text-color, var(--hybrid-select-local-text-color));
470
+ color: var(--nuraly-select-text-color, var(--nuraly-select-local-text-color));
420
471
  }
421
472
 
422
473
  ::slotted([slot='helper-text']) {
423
474
  display: block;
424
- margin-top: var(--hybrid-select-message-margin-top, var(--hybrid-select-local-message-margin-top));
425
- font-size: var(--hybrid-select-message-font-size, var(--hybrid-select-local-message-font-size));
426
- color: var(--hybrid-select-placeholder-color, var(--hybrid-select-local-placeholder-color));
475
+ margin-top: var(--nuraly-select-message-margin-top, var(--nuraly-select-local-message-margin-top));
476
+ font-size: var(--nuraly-select-message-font-size, var(--nuraly-select-local-message-font-size));
477
+ color: var(--nuraly-select-placeholder-color, var(--nuraly-select-local-placeholder-color));
427
478
  }
428
479
 
429
480
  /* Accessibility improvements */
@@ -1 +1 @@
1
- {"version":3,"file":"select.style.js","sourceRoot":"","sources":["../../../src/components/select/select.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;IACrB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgclB,CAAC","sourcesContent":["import { css } from 'lit';\nimport { selectVariables } from './select.style.variables.js';\n\nexport const styles = css`\n ${selectVariables}\n\n :host {\n width: fit-content;\n display: block;\n font-family: var(--hybrid-select-font-family, var(--hybrid-select-local-font-family));\n font-size: var(--hybrid-select-font-size, var(--hybrid-select-local-font-size));\n line-height: var(--hybrid-select-line-height, var(--hybrid-select-local-line-height));\n margin: var(--hybrid-select-margin, var(--hybrid-select-local-wrapper-margin));\n }\n\n /* Host attribute selectors for configuration */\n :host([disabled]) {\n opacity: var(--hybrid-select-disabled-opacity, var(--hybrid-select-local-disabled-opacity));\n pointer-events: none;\n }\n\n :host([disabled]) .wrapper {\n background-color: var(--hybrid-select-disabled-background, var(--hybrid-select-local-disabled-background));\n border-color: var(--hybrid-select-disabled-border-color, var(--hybrid-select-local-disabled-border-color));\n color: var(--hybrid-select-disabled-text-color, var(--hybrid-select-local-disabled-text-color));\n cursor: not-allowed;\n }\n\n /* Theme-specific styles */\n :host([theme='dark']) {\n --hybrid-select-local-background-color: #262626;\n --hybrid-select-local-border-color: #424242;\n --hybrid-select-local-text-color: #ffffff;\n --hybrid-select-local-placeholder-color: #8c8c8c;\n --hybrid-select-local-dropdown-background: #262626;\n --hybrid-select-local-dropdown-border-color: #424242;\n --hybrid-select-local-option-hover-background: #393939;\n --hybrid-select-local-option-selected-background: #1e3a5f;\n --hybrid-select-local-hover-border-color: #4096ff;\n --hybrid-select-local-focus-border-color: #4096ff;\n }\n\n /* Size variants */\n :host([size='small']) .wrapper {\n min-height: var(--hybrid-select-small-height, var(--hybrid-select-local-small-height));\n font-size: var(--hybrid-select-small-font-size, var(--hybrid-select-local-small-font-size));\n }\n\n :host([size='small']) .select-trigger {\n padding: var(--hybrid-select-small-padding, var(--hybrid-select-local-small-padding));\n padding-right: calc(var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size)) + 20px);\n }\n\n :host([size='medium']) .wrapper {\n min-height: var(--hybrid-select-medium-height, var(--hybrid-select-local-medium-height));\n font-size: var(--hybrid-select-medium-font-size, var(--hybrid-select-local-medium-font-size));\n }\n\n :host([size='medium']) .select-trigger {\n padding: var(--hybrid-select-medium-padding, var(--hybrid-select-local-medium-padding));\n padding-right: calc(var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size)) + 20px);\n }\n\n :host([size='large']) .wrapper {\n min-height: var(--hybrid-select-large-height, var(--hybrid-select-local-large-height));\n font-size: var(--hybrid-select-large-font-size, var(--hybrid-select-local-large-font-size));\n }\n\n :host([size='large']) .select-trigger {\n padding: var(--hybrid-select-large-padding, var(--hybrid-select-local-large-padding));\n padding-right: calc(var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size)) + 20px);\n }\n\n /* Status variants */\n :host([status='error']) .wrapper {\n border-color: var(--hybrid-select-error-border-color, var(--hybrid-select-local-error-border-color));\n }\n\n :host([status='warning']) .wrapper {\n border-color: var(--hybrid-select-warning-border-color, var(--hybrid-select-local-warning-border-color));\n }\n\n :host([status='success']) .wrapper {\n border-color: var(--hybrid-select-success-border-color, var(--hybrid-select-local-success-border-color));\n }\n\n /* Type variants */\n :host([type='inline']) {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n :host([type='inline']) .wrapper {\n flex: 1;\n }\n\n /* Show dropdown */\n :host([show]) .options {\n display: flex !important;\n }\n\n /* Main wrapper container */\n .wrapper {\n position: relative;\n width: var(--hybrid-select-width, var(--hybrid-select-local-width));\n background-color: var(--hybrid-select-background-color, var(--hybrid-select-local-background-color));\n border: var(--hybrid-select-border-width, var(--hybrid-select-local-border-width)) solid \n var(--hybrid-select-border-color, var(--hybrid-select-local-border-color));\n border-radius: var(--hybrid-select-border-radius, var(--hybrid-select-local-border-radius));\n transition: all var(--hybrid-select-transition-duration, var(--hybrid-select-local-transition-duration)) \n var(--hybrid-select-transition-timing, var(--hybrid-select-local-transition-timing));\n cursor: pointer;\n outline: none;\n margin: var(--hybrid-select-wrapper-margin, 0);\n min-height: var(--hybrid-select-min-height, var(--hybrid-select-local-min-height));\n /* Ensure dropdown can overflow the wrapper */\n overflow: visible;\n }\n\n .wrapper:hover:not(:disabled) {\n border-color: var(--hybrid-select-hover-border-color, var(--hybrid-select-local-hover-border-color));\n }\n\n .wrapper:focus,\n .wrapper:focus-within {\n border-color: var(--hybrid-select-focus-border-color, var(--hybrid-select-local-focus-border-color));\n box-shadow: 0 0 0 2px var(--hybrid-select-focus-border-color, var(--hybrid-select-local-focus-border-color))33;\n }\n\n /* Select container */\n .select {\n display: flex;\n flex-direction: column;\n }\n\n /* Select trigger (main display area) */\n .select-trigger {\n display: flex;\n align-items: center;\n padding: var(--hybrid-select-padding-top, var(--hybrid-select-local-padding-top)) \n calc(var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size)) + 20px) \n var(--hybrid-select-padding-bottom, var(--hybrid-select-local-padding-bottom)) \n var(--hybrid-select-padding-left, var(--hybrid-select-local-padding-left));\n color: var(--hybrid-select-text-color, var(--hybrid-select-local-text-color));\n font-size: inherit;\n line-height: inherit;\n word-break: break-word;\n min-height: inherit;\n flex-wrap: wrap;\n gap: var(--hybrid-select-tag-margin, var(--hybrid-select-local-tag-margin));\n }\n\n .select-trigger:empty:before {\n content: attr(data-placeholder);\n color: var(--hybrid-select-placeholder-color, var(--hybrid-select-local-placeholder-color));\n font-size: var(--hybrid-select-placeholder-font-size, var(--hybrid-select-local-placeholder-font-size));\n }\n\n /* Multi-select tags */\n .tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background-color: var(--hybrid-select-tag-background, var(--hybrid-select-local-tag-background));\n color: var(--hybrid-select-tag-color, var(--hybrid-select-local-tag-color));\n padding: var(--hybrid-select-tag-padding, var(--hybrid-select-local-tag-padding));\n border-radius: var(--hybrid-select-tag-border-radius, var(--hybrid-select-local-tag-border-radius));\n font-size: calc(var(--hybrid-select-font-size, var(--hybrid-select-local-font-size)) - 1px);\n max-width: 100%;\n }\n\n .tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .tag-close {\n color: var(--hybrid-select-tag-close-color, var(--hybrid-select-local-tag-close-color));\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size));\n height: var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size));\n border-radius: 50%;\n transition: color var(--hybrid-select-transition-duration, var(--hybrid-select-local-transition-duration));\n }\n\n .tag-close:hover {\n color: var(--hybrid-select-tag-close-hover-color, var(--hybrid-select-local-tag-close-hover-color));\n }\n\n /* Icons container */\n .icons-container {\n position: absolute;\n top: 50%;\n right: 12px;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n pointer-events: none;\n }\n\n .icons-container hy-icon {\n --hybrid-icon-width: var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size));\n --hybrid-icon-color: var(--hybrid-select-icon-color, var(--hybrid-select-local-icon-color));\n pointer-events: auto;\n cursor: pointer;\n transition: color var(--hybrid-select-transition-duration, var(--hybrid-select-local-transition-duration));\n }\n\n .icons-container hy-icon:hover {\n --hybrid-icon-color: var(--hybrid-select-icon-hover-color, var(--hybrid-select-local-icon-hover-color));\n }\n\n .arrow-icon {\n --hybrid-icon-width: var(--hybrid-select-arrow-icon-size, var(--hybrid-select-local-arrow-icon-size));\n transition: transform var(--hybrid-select-transition-duration, var(--hybrid-select-local-transition-duration));\n pointer-events: none !important;\n }\n\n :host([show]) .arrow-icon {\n transform: rotate(180deg);\n }\n\n /* Dropdown options */\n .options {\n /* Default positioning - will be overridden by controller when opened */\n position: absolute;\n top: 100%;\n margin-top: 1px;\n left: 0;\n right: 0;\n background-color: var(--hybrid-select-dropdown-background, var(--hybrid-select-local-dropdown-background));\n border: var(--hybrid-select-border-width, var(--hybrid-select-local-border-width)) solid \n var(--hybrid-select-dropdown-border-color, var(--hybrid-select-local-dropdown-border-color));\n border-radius: var(--hybrid-select-border-radius, var(--hybrid-select-local-border-radius));\n box-shadow: var(--hybrid-select-dropdown-shadow, var(--hybrid-select-local-dropdown-shadow));\n z-index: var(--hybrid-select-dropdown-z-index, var(--hybrid-select-local-dropdown-z-index));\n max-height: 200px;\n overflow-y: auto;\n overflow-x: hidden;\n display: none;\n flex-direction: column;\n animation: dropdown-enter var(--hybrid-select-dropdown-animation-duration, var(--hybrid-select-local-dropdown-animation-duration)) ease-out;\n /* Ensure proper containment and exact wrapper width */\n box-sizing: border-box;\n width: 100%;\n /* Create new stacking context to prevent layering issues */\n isolation: isolate;\n /* Ensure solid background to prevent visual bleed-through */\n backdrop-filter: none;\n -webkit-backdrop-filter: none;\n /* Force above other elements */\n transform: translateZ(0);\n }\n\n .options.placement-top {\n top: auto;\n bottom: 100%;\n margin-bottom: 1px;\n margin-top: 0;\n animation: dropdown-enter-top var(--hybrid-select-dropdown-animation-duration, var(--hybrid-select-local-dropdown-animation-duration)) ease-out;\n }\n\n @keyframes dropdown-enter {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes dropdown-enter-top {\n from {\n opacity: 0;\n transform: translateY(8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Option items */\n .option {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n color: var(--hybrid-select-text-color, var(--hybrid-select-local-text-color));\n font-size: var(--hybrid-select-option-font-size, var(--hybrid-select-local-option-font-size));\n cursor: pointer;\n transition: background-color var(--hybrid-select-transition-duration, var(--hybrid-select-local-transition-duration));\n position: relative;\n }\n\n .option:hover {\n background-color: var(--hybrid-select-option-hover-background, var(--hybrid-select-local-option-hover-background));\n }\n\n .option.selected {\n background-color: var(--hybrid-select-option-selected-background, var(--hybrid-select-local-option-selected-background));\n color: var(--hybrid-select-option-selected-color, var(--hybrid-select-local-option-selected-color));\n }\n\n .option.focused {\n background-color: var(--hybrid-select-option-hover-background, var(--hybrid-select-local-option-hover-background));\n outline: 2px solid var(--hybrid-select-focus-border-color, var(--hybrid-select-local-focus-border-color));\n outline-offset: -2px;\n }\n\n .option.disabled {\n opacity: var(--hybrid-select-disabled-opacity, var(--hybrid-select-local-disabled-opacity));\n cursor: not-allowed;\n }\n\n .option-content {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .option-icon {\n --hybrid-icon-width: var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size));\n --hybrid-icon-color: currentColor;\n }\n\n .option-text {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .option-description {\n font-size: calc(var(--hybrid-select-option-font-size, var(--hybrid-select-local-option-font-size)) - 1px);\n opacity: 0.7;\n margin-top: 2px;\n }\n\n .check-icon {\n --hybrid-icon-width: var(--hybrid-select-icon-size, var(--hybrid-select-local-icon-size));\n --hybrid-icon-color: var(--hybrid-select-option-selected-color, var(--hybrid-select-local-option-selected-color));\n }\n\n /* No options message - styled like Ant Design */\n .no-options {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--select-no-options-padding, 24px 16px);\n color: var(--select-no-options-color, #8c8c8c);\n font-size: var(--hybrid-select-option-font-size, var(--hybrid-select-local-option-font-size));\n cursor: default;\n user-select: none;\n }\n\n .no-options-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--select-no-options-gap, 8px);\n text-align: center;\n }\n\n .no-options-icon {\n --hybrid-icon-width: 24px;\n --hybrid-icon-color: var(--select-no-options-icon-color, #d9d9d9);\n opacity: 0.8;\n }\n\n .no-options-text {\n font-size: var(--hybrid-select-option-font-size, var(--hybrid-select-local-option-font-size));\n color: var(--select-no-options-color, #8c8c8c);\n line-height: 1.4;\n }\n\n /* Dark theme adjustments for no-options */\n :host([theme='dark']) .no-options {\n color: var(--select-no-options-color, #595959);\n }\n\n :host([theme='dark']) .no-options-icon {\n --hybrid-icon-color: var(--select-no-options-icon-color, #434343);\n }\n\n :host([theme='dark']) .no-options-text {\n color: var(--select-no-options-color, #595959);\n }\n\n /* Validation message */\n .validation-message {\n display: block;\n margin-top: var(--hybrid-select-message-margin-top, var(--hybrid-select-local-message-margin-top));\n font-size: var(--hybrid-select-message-font-size, var(--hybrid-select-local-message-font-size));\n color: var(--hybrid-select-error-message-color, var(--hybrid-select-local-error-message-color));\n }\n\n .validation-message.warning {\n color: var(--hybrid-select-warning-message-color, var(--hybrid-select-local-warning-message-color));\n }\n\n .validation-message.success {\n color: var(--hybrid-select-success-message-color, var(--hybrid-select-local-success-message-color));\n }\n\n /* Slotted content styles */\n ::slotted([slot='label']) {\n display: block;\n margin-bottom: 4px;\n font-weight: 500;\n color: var(--hybrid-select-text-color, var(--hybrid-select-local-text-color));\n }\n\n ::slotted([slot='helper-text']) {\n display: block;\n margin-top: var(--hybrid-select-message-margin-top, var(--hybrid-select-local-message-margin-top));\n font-size: var(--hybrid-select-message-font-size, var(--hybrid-select-local-message-font-size));\n color: var(--hybrid-select-placeholder-color, var(--hybrid-select-local-placeholder-color));\n }\n\n /* Accessibility improvements */\n @media (prefers-reduced-motion: reduce) {\n .options,\n .wrapper,\n .tag-close,\n .arrow-icon,\n .option {\n transition: none;\n animation: none;\n }\n }\n\n /* High contrast mode support */\n @media (prefers-contrast: high) {\n .wrapper {\n border-width: 2px;\n }\n \n .wrapper:focus,\n .wrapper:focus-within {\n outline: 3px solid;\n }\n }\n`;\n"]}
1
+ {"version":3,"file":"select.style.js","sourceRoot":"","sources":["../../../src/components/select/select.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqfxB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`\n :host {\n /* Layout and sizing */\n --nuraly-select-local-width: 300px;\n --nuraly-select-local-min-height: 40px;\n --nuraly-select-local-padding-top: 8px;\n --nuraly-select-local-padding-bottom: 8px;\n --nuraly-select-local-padding-left: 12px;\n --nuraly-select-local-padding-right: 12px;\n --nuraly-select-local-wrapper-margin: 0;\n --nuraly-select-local-border-radius: 6px;\n --nuraly-select-local-border-width: 1px;\n \n /* Dropdown settings */\n --nuraly-select-local-dropdown-z-index: 9999;\n --nuraly-select-local-dropdown-max-height: 200px;\n --nuraly-select-local-placeholder-font-size: 14px;\n --nuraly-select-local-option-font-size: 14px;\n \n /* Sizes */\n --nuraly-select-local-medium-height: 40px;\n --nuraly-select-local-medium-font-size: 14px;\n --nuraly-select-local-medium-padding: 8px 12px;\n --nuraly-select-local-small-font-size: 12px;\n \n /* Animation and transitions */\n --nuraly-select-local-dropdown-animation-duration: 0.15s;\n \n /* Multi-select specific */\n --nuraly-select-local-tag-border-radius: 4px;\n --nuraly-select-local-tag-padding: 2px 6px;\n --nuraly-select-local-tag-margin: 2px;\n \n /* Validation message */\n --nuraly-select-local-message-font-size: 12px;\n --nuraly-select-local-message-margin-top: 4px;\n }\n\n :host {\n width: fit-content;\n display: block;\n font-family: var(--nuraly-select-font-family, Inter, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif);\n font-size: var(--nuraly-select-font-size, 14px);\n line-height: var(--nuraly-select-line-height, 1.5);\n margin: var(--nuraly-select-margin, var(--nuraly-select-local-wrapper-margin));\n }\n\n /* Host attribute selectors for configuration */\n :host([disabled]) {\n opacity: var(--nuraly-select-disabled-opacity, 0.5);\n pointer-events: none;\n }\n\n :host([disabled]) .wrapper {\n background-color: var(--nuraly-select-disabled-background, #f9fafb);\n border-color: var(--nuraly-select-disabled-border-color, #d9d9d9);\n color: var(--nuraly-select-disabled-text-color, #8c8c8c);\n cursor: not-allowed;\n }\n\n /* Size variants */\n :host([size='small']) .wrapper {\n min-height: var(--nuraly-select-small-height, 32px);\n font-size: var(--nuraly-select-small-font-size, var(--nuraly-select-local-small-font-size));\n }\n\n :host([size='small']) .select-trigger {\n padding: var(--nuraly-select-small-padding, 4px 8px);\n padding-right: calc(var(--nuraly-select-icon-size, 16px) + 20px);\n }\n\n :host([size='medium']) .wrapper {\n min-height: var(--nuraly-select-medium-height, var(--nuraly-select-local-medium-height));\n font-size: var(--nuraly-select-medium-font-size, var(--nuraly-select-local-medium-font-size));\n }\n\n :host([size='medium']) .select-trigger {\n padding: var(--nuraly-select-medium-padding, var(--nuraly-select-local-medium-padding));\n padding-right: calc(var(--nuraly-select-icon-size, 16px) + 20px);\n }\n\n :host([size='large']) .wrapper {\n min-height: var(--nuraly-select-large-height, 48px);\n font-size: var(--nuraly-select-large-font-size, 16px);\n }\n\n :host([size='large']) .select-trigger {\n padding: var(--nuraly-select-large-padding, 12px 16px);\n padding-right: calc(var(--nuraly-select-icon-size, 16px) + 20px);\n }\n\n /* Status variants */\n :host([status='error']) .wrapper {\n border-color: var(--nuraly-select-error-border-color, #ef4444);\n }\n\n :host([status='warning']) .wrapper {\n border-color: var(--nuraly-select-warning-border-color, #f59e0b);\n }\n\n :host([status='success']) .wrapper {\n border-color: var(--nuraly-select-success-border-color, #10b981);\n }\n\n /* Type variants */\n :host([type='inline']) {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n :host([type='inline']) .wrapper {\n flex: 1;\n }\n\n /* Show dropdown */\n :host([show]) .options {\n display: flex !important;\n }\n\n /* Main wrapper container */\n .wrapper {\n position: relative;\n width: var(--nuraly-select-width, var(--nuraly-select-local-width));\n background-color: var(--nuraly-select-background-color, #ffffff);\n border: var(--nuraly-select-border-width, var(--nuraly-select-local-border-width)) solid \n var(--nuraly-select-border-color, #d9d9d9);\n border-radius: var(--nuraly-select-border-radius, var(--nuraly-select-local-border-radius));\n transition: all var(--nuraly-select-transition-duration, 0.2s) \n var(--nuraly-select-transition-timing, ease-in-out);\n cursor: pointer;\n outline: none;\n margin: var(--nuraly-select-wrapper-margin, 0);\n min-height: var(--nuraly-select-min-height, var(--nuraly-select-local-min-height));\n /* Ensure dropdown can overflow the wrapper */\n overflow: visible;\n }\n\n .wrapper:hover:not(:disabled) {\n border-color: var(--nuraly-select-border-hover, #7c3aed);\n }\n\n .wrapper:focus,\n .wrapper:focus-within {\n border-color: var(--nuraly-select-border-focus, #7c3aed);\n box-shadow: 0 0 0 2px var(--nuraly-select-focus-outline, rgba(124, 58, 237, 0.2));\n }\n\n /* Select container */\n .select {\n display: flex;\n flex-direction: column;\n }\n\n /* Select trigger (main display area) */\n .select-trigger {\n display: flex;\n align-items: center;\n padding: var(--nuraly-select-padding-top, var(--nuraly-select-local-padding-top)) \n calc(var(--nuraly-select-icon-size, 16px) + 20px) \n var(--nuraly-select-padding-bottom, var(--nuraly-select-local-padding-bottom)) \n var(--nuraly-select-padding-left, var(--nuraly-select-local-padding-left));\n color: var(--nuraly-select-text-color, #262626);\n font-size: inherit;\n line-height: inherit;\n word-break: break-word;\n min-height: inherit;\n flex-wrap: wrap;\n gap: var(--nuraly-select-tag-margin, var(--nuraly-select-local-tag-margin));\n }\n\n .select-trigger:empty:before {\n content: attr(data-placeholder);\n color: var(--nuraly-select-placeholder-color, #8c8c8c);\n font-size: var(--nuraly-select-placeholder-font-size, var(--nuraly-select-local-placeholder-font-size));\n }\n\n /* Multi-select tags */\n .tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background-color: var(--nuraly-select-tag-background, var(--nuraly-select-local-tag-background));\n color: var(--nuraly-select-tag-color, var(--nuraly-select-local-tag-color));\n padding: var(--nuraly-select-tag-padding, var(--nuraly-select-local-tag-padding));\n border-radius: var(--nuraly-select-tag-border-radius, var(--nuraly-select-local-tag-border-radius));\n font-size: calc(var(--nuraly-select-font-size, var(--nuraly-select-local-font-size)) - 1px);\n max-width: 100%;\n }\n\n .tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .tag-close {\n color: var(--nuraly-select-tag-close-color, var(--nuraly-select-local-tag-close-color));\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--nuraly-select-icon-size, var(--nuraly-select-local-icon-size));\n height: var(--nuraly-select-icon-size, var(--nuraly-select-local-icon-size));\n border-radius: 50%;\n transition: color var(--nuraly-select-transition-duration, var(--nuraly-select-local-transition-duration));\n }\n\n .tag-close:hover {\n color: var(--nuraly-select-tag-close-hover-color, var(--nuraly-select-local-tag-close-hover-color));\n }\n\n /* Icons container */\n .icons-container {\n position: absolute;\n top: 50%;\n right: 12px;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n pointer-events: none;\n }\n\n .icons-container nr-icon {\n --nuraly-icon-width: var(--nuraly-select-icon-size, var(--nuraly-select-local-icon-size));\n --nuraly-icon-color: var(--nuraly-select-icon-color, var(--nuraly-select-local-icon-color));\n pointer-events: auto;\n cursor: pointer;\n transition: color var(--nuraly-select-transition-duration, var(--nuraly-select-local-transition-duration));\n }\n\n .icons-container nr-icon:hover {\n --nuraly-icon-color: var(--nuraly-select-icon-hover-color, var(--nuraly-select-local-icon-hover-color));\n }\n\n .arrow-icon {\n --nuraly-icon-width: var(--nuraly-select-arrow-icon-size, var(--nuraly-select-local-arrow-icon-size));\n transition: transform var(--nuraly-select-transition-duration, var(--nuraly-select-local-transition-duration));\n pointer-events: none !important;\n }\n\n :host([show]) .arrow-icon {\n transform: rotate(180deg);\n }\n\n /* Dropdown options */\n .options {\n /* Default positioning - will be overridden by controller when opened */\n position: absolute;\n top: 100%;\n margin-top: 1px;\n left: 0;\n right: 0;\n background-color: var(--nuraly-select-dropdown-background, #ffffff);\n border: var(--nuraly-select-dropdown-border-width, var(--nuraly-select-border-width, 1px)) solid \n var(--nuraly-select-dropdown-border-color, #d9d9d9);\n border-radius: var(--nuraly-select-dropdown-border-radius, var(--nuraly-select-border-radius, 6px));\n box-shadow: var(--nuraly-select-dropdown-shadow, 0 6px 16px 0 rgba(0, 0, 0, 0.08));\n z-index: var(--nuraly-select-dropdown-z-index, 9999);\n max-height: var(--nuraly-select-dropdown-max-height, 200px);\n overflow-y: auto;\n overflow-x: hidden;\n display: none;\n flex-direction: column;\n animation: dropdown-enter var(--nuraly-select-dropdown-animation-duration, 0.15s) ease-out;\n /* Ensure proper containment and exact wrapper width */\n box-sizing: border-box;\n width: 100%;\n /* Create new stacking context to prevent layering issues */\n isolation: isolate;\n /* Ensure solid background to prevent visual bleed-through */\n backdrop-filter: none;\n -webkit-backdrop-filter: none;\n /* Force above other elements */\n transform: translateZ(0);\n }\n\n .options.placement-top {\n top: auto;\n bottom: 100%;\n margin-bottom: 1px;\n margin-top: 0;\n animation: dropdown-enter-top var(--nuraly-select-dropdown-animation-duration, var(--nuraly-select-local-dropdown-animation-duration)) ease-out;\n }\n\n @keyframes dropdown-enter {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes dropdown-enter-top {\n from {\n opacity: 0;\n transform: translateY(8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Search container - sticky at top of dropdown */\n .search-container {\n position: sticky;\n top: 0;\n z-index: 10;\n background-color: var(--nuraly-select-dropdown-background, #ffffff);\n border-bottom: var(--nuraly-select-border-width, 1px) solid \n var(--nuraly-select-dropdown-border-color, #d9d9d9);\n padding: 8px;\n margin: 0;\n /* Ensure it stays above options during scroll */\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n /* Ensure proper stacking and smooth scrolling */\n will-change: transform;\n transform: translateZ(0);\n }\n\n /* Search input styling */\n .search-container .search-input {\n width: 100%;\n --nuraly-input-border-radius: var(--nuraly-select-border-radius, var(--nuraly-select-local-border-radius));\n --nuraly-input-background-color: var(--nuraly-select-background-color, var(--nuraly-select-local-background-color));\n --nuraly-input-border-color: var(--nuraly-select-border-color, var(--nuraly-select-local-border-color));\n --nuraly-input-text-color: var(--nuraly-select-text-color, var(--nuraly-select-local-text-color));\n --nuraly-input-placeholder-color: var(--nuraly-select-placeholder-color, var(--nuraly-select-local-placeholder-color));\n }\n\n /* Search icon in the search input */\n .search-container .search-icon {\n --nuraly-icon-color: var(--nuraly-select-icon-color, var(--nuraly-select-local-icon-color));\n }\n\n /* Options list container - ensure proper scroll behavior with sticky search */\n .options:has(.search-container) {\n /* Add small padding-top when search is present to ensure proper separation */\n padding-top: 0;\n }\n\n /* Option items */\n .option {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: var(--nuraly-select-option-padding, 8px 12px);\n min-height: var(--nuraly-select-option-min-height, auto);\n color: var(--nuraly-select-option-text-color, var(--nuraly-select-text-color, #262626));\n font-size: var(--nuraly-select-option-font-size, 14px);\n cursor: pointer;\n transition: background-color var(--nuraly-select-transition-duration, 0.2s);\n position: relative;\n }\n\n /* First option after search container should have no extra margin */\n .search-container + .option {\n margin-top: 0;\n }\n\n .option:hover {\n background-color: var(--nuraly-select-option-hover-background, #f5f5f5);\n }\n\n .option.selected {\n background-color: var(--nuraly-select-option-selected-background, #e0e0e0);\n color: var(--nuraly-select-option-selected-color, #7c3aed);\n }\n\n .option.focused {\n background-color: var(--nuraly-select-option-hover-background, #f5f5f5);\n outline: 2px solid var(--nuraly-select-border-focus, #7c3aed);\n outline-offset: -2px;\n }\n\n .option.disabled {\n opacity: var(--nuraly-select-disabled-opacity, var(--nuraly-select-local-disabled-opacity));\n cursor: not-allowed;\n }\n\n .option-content {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .option-icon {\n --nuraly-icon-width: var(--nuraly-select-icon-size, var(--nuraly-select-local-icon-size));\n --nuraly-icon-color: currentColor;\n }\n\n .option-text {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .option-description {\n font-size: calc(var(--nuraly-select-option-font-size, var(--nuraly-select-local-option-font-size)) - 1px);\n opacity: 0.7;\n margin-top: 2px;\n }\n\n .check-icon {\n --nuraly-icon-width: var(--nuraly-select-icon-size, var(--nuraly-select-local-icon-size));\n --nuraly-icon-color: var(--nuraly-select-option-selected-color, var(--nuraly-select-local-option-selected-color));\n }\n\n .no-options {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--select-no-options-padding, 24px 16px);\n color: var(--select-no-options-color, #8c8c8c);\n font-size: var(--nuraly-select-option-font-size, var(--nuraly-select-local-option-font-size));\n cursor: default;\n user-select: none;\n }\n\n .no-options-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--select-no-options-gap, 8px);\n text-align: center;\n }\n\n .no-options-icon {\n --nuraly-icon-width: 24px;\n --nuraly-icon-color: var(--select-no-options-icon-color, #d9d9d9);\n opacity: 0.8;\n }\n\n .no-options-text {\n font-size: var(--nuraly-select-option-font-size, var(--nuraly-select-local-option-font-size));\n color: var(--select-no-options-color, #8c8c8c);\n line-height: 1.4;\n }\n\n /* Validation message */\n .validation-message {\n display: block;\n margin-top: var(--nuraly-select-message-margin-top, var(--nuraly-select-local-message-margin-top));\n font-size: var(--nuraly-select-message-font-size, var(--nuraly-select-local-message-font-size));\n color: var(--nuraly-select-error-message-color, var(--nuraly-select-local-error-message-color));\n }\n\n .validation-message.warning {\n color: var(--nuraly-select-warning-message-color, var(--nuraly-select-local-warning-message-color));\n }\n\n .validation-message.success {\n color: var(--nuraly-select-success-message-color, var(--nuraly-select-local-success-message-color));\n }\n\n /* Slotted content styles */\n ::slotted([slot='label']) {\n display: block;\n margin-bottom: 4px;\n font-weight: 500;\n color: var(--nuraly-select-text-color, var(--nuraly-select-local-text-color));\n }\n\n ::slotted([slot='helper-text']) {\n display: block;\n margin-top: var(--nuraly-select-message-margin-top, var(--nuraly-select-local-message-margin-top));\n font-size: var(--nuraly-select-message-font-size, var(--nuraly-select-local-message-font-size));\n color: var(--nuraly-select-placeholder-color, var(--nuraly-select-local-placeholder-color));\n }\n\n /* Accessibility improvements */\n @media (prefers-reduced-motion: reduce) {\n .options,\n .wrapper,\n .tag-close,\n .arrow-icon,\n .option {\n transition: none;\n animation: none;\n }\n }\n\n /* High contrast mode support */\n @media (prefers-contrast: high) {\n .wrapper {\n border-width: 2px;\n }\n \n .wrapper:focus,\n .wrapper:focus-within {\n outline: 3px solid;\n }\n }\n`;\n"]}
@@ -1,6 +0,0 @@
1
- /**
2
- * CSS custom properties for select component (light theme defaults)
3
- * These are the local component defaults that can be overridden globally
4
- */
5
- export declare const selectVariables: import("lit").CSSResult;
6
- //# sourceMappingURL=select.style.variables.d.ts.map