@dvcol/neo-svelte 0.1.2 → 0.1.4

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 (152) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +25 -26
  3. package/dist/buttons/NeoButton.svelte +140 -128
  4. package/dist/buttons/NeoButtonGroup.svelte +99 -108
  5. package/dist/buttons/neo-button-group.model.d.ts +18 -19
  6. package/dist/buttons/neo-button.model.d.ts +6 -10
  7. package/dist/cards/NeoCard.svelte +176 -73
  8. package/dist/cards/NeoCard.svelte.d.ts +1 -1
  9. package/dist/cards/neo-card.model.d.ts +29 -1
  10. package/dist/containers/NeoTransitionContainer.svelte +13 -2
  11. package/dist/containers/neo-transition-container.model.d.ts +9 -1
  12. package/dist/divider/NeoDivider.svelte +11 -11
  13. package/dist/icons/IconAccount.svelte +10 -2
  14. package/dist/icons/IconAdd.svelte +10 -2
  15. package/dist/icons/IconAlert.svelte +2 -2
  16. package/dist/icons/IconCalendar.svelte +23 -0
  17. package/dist/icons/IconCalendar.svelte.d.ts +26 -0
  18. package/dist/icons/IconCheckbox.svelte +87 -0
  19. package/dist/icons/IconCheckbox.svelte.d.ts +55 -0
  20. package/dist/icons/IconCircleLoading.svelte +2 -2
  21. package/dist/icons/IconClear.svelte +10 -2
  22. package/dist/icons/IconClose.svelte +2 -2
  23. package/dist/icons/IconConfirm.svelte +2 -2
  24. package/dist/icons/IconDownload.svelte +17 -0
  25. package/dist/icons/IconDownload.svelte.d.ts +26 -0
  26. package/dist/icons/IconEmpty.svelte +2 -2
  27. package/dist/icons/IconFileUpload.svelte +2 -2
  28. package/dist/icons/IconGithub.svelte +2 -2
  29. package/dist/icons/IconImage.svelte +2 -2
  30. package/dist/icons/IconMinus.svelte +2 -2
  31. package/dist/icons/IconMoon.svelte +2 -2
  32. package/dist/icons/IconPaint.svelte +19 -0
  33. package/dist/icons/{IconSunrise.svelte.d.ts → IconPaint.svelte.d.ts} +3 -3
  34. package/dist/icons/IconPencil.svelte +13 -0
  35. package/dist/icons/IconPencil.svelte.d.ts +26 -0
  36. package/dist/icons/IconRadio.svelte +14 -0
  37. package/dist/icons/IconRadio.svelte.d.ts +22 -0
  38. package/dist/icons/IconSave.svelte +1 -1
  39. package/dist/icons/IconSave.svelte.d.ts +3 -3
  40. package/dist/icons/IconSaveOff.svelte +1 -1
  41. package/dist/icons/IconSaveOff.svelte.d.ts +3 -3
  42. package/dist/icons/IconSearch.svelte +2 -2
  43. package/dist/icons/IconSun.svelte +3 -3
  44. package/dist/icons/{IconSunrise.svelte → IconSunFull.svelte} +5 -4
  45. package/dist/icons/IconSunFull.svelte.d.ts +26 -0
  46. package/dist/icons/IconVideo.svelte +2 -2
  47. package/dist/icons/IconWatch.svelte +2 -2
  48. package/dist/icons/IconWatchOff.svelte +2 -2
  49. package/dist/inputs/NeoCheckbox.svelte +316 -0
  50. package/dist/inputs/NeoCheckbox.svelte.d.ts +19 -0
  51. package/dist/inputs/NeoColorPicker.svelte +140 -0
  52. package/dist/inputs/NeoColorPicker.svelte.d.ts +19 -0
  53. package/dist/inputs/NeoDateTime.svelte +96 -0
  54. package/dist/inputs/NeoDateTime.svelte.d.ts +19 -0
  55. package/dist/inputs/NeoFilePicker.svelte +528 -0
  56. package/dist/inputs/NeoFilePicker.svelte.d.ts +19 -0
  57. package/dist/inputs/NeoFilePickerCard.svelte +314 -0
  58. package/dist/inputs/NeoFilePickerCard.svelte.d.ts +19 -0
  59. package/dist/inputs/NeoNumberStep.svelte +174 -0
  60. package/dist/inputs/NeoNumberStep.svelte.d.ts +19 -0
  61. package/dist/inputs/NeoPassword.svelte +86 -17
  62. package/dist/inputs/NeoPassword.svelte.d.ts +19 -16
  63. package/dist/inputs/NeoPin.svelte +589 -0
  64. package/dist/inputs/NeoPin.svelte.d.ts +19 -0
  65. package/dist/inputs/NeoRadio.svelte +254 -0
  66. package/dist/inputs/NeoRadio.svelte.d.ts +19 -0
  67. package/dist/inputs/NeoRange.svelte +518 -0
  68. package/dist/inputs/NeoRange.svelte.d.ts +18 -0
  69. package/dist/inputs/NeoSwitch.svelte +373 -0
  70. package/dist/inputs/NeoSwitch.svelte.d.ts +19 -0
  71. package/dist/inputs/NeoTextarea.svelte +335 -301
  72. package/dist/inputs/NeoTextarea.svelte.d.ts +5 -2
  73. package/dist/inputs/common/NeoAffix.svelte +166 -0
  74. package/dist/inputs/common/NeoAffix.svelte.d.ts +19 -0
  75. package/dist/inputs/common/NeoBaseInput.svelte +338 -0
  76. package/dist/inputs/common/NeoBaseInput.svelte.d.ts +30 -0
  77. package/dist/inputs/common/NeoInput.svelte +684 -0
  78. package/dist/inputs/{NeoInput.svelte.d.ts → common/NeoInput.svelte.d.ts} +2 -10
  79. package/dist/inputs/common/NeoInputValidation.svelte +45 -0
  80. package/dist/inputs/common/NeoInputValidation.svelte.d.ts +22 -0
  81. package/dist/inputs/common/NeoLabel.svelte +93 -0
  82. package/dist/inputs/common/NeoLabel.svelte.d.ts +19 -0
  83. package/dist/inputs/{NeoValidation.svelte → common/NeoValidation.svelte} +9 -16
  84. package/dist/inputs/common/NeoValidation.svelte.d.ts +22 -0
  85. package/dist/inputs/common/neo-affix.model.d.ts +32 -0
  86. package/dist/inputs/common/neo-input-validation.model.d.ts +20 -0
  87. package/dist/inputs/common/neo-input-validation.model.js +1 -0
  88. package/dist/inputs/{neo-input.model.d.ts → common/neo-input.model.d.ts} +148 -68
  89. package/dist/inputs/common/neo-label.model.d.ts +36 -0
  90. package/dist/inputs/common/neo-label.model.js +1 -0
  91. package/dist/inputs/common/neo-validation.model.d.ts +70 -0
  92. package/dist/inputs/common/neo-validation.model.js +1 -0
  93. package/dist/inputs/index.d.ts +2 -2
  94. package/dist/inputs/index.js +1 -1
  95. package/dist/inputs/neo-checkbox.model.d.ts +9 -0
  96. package/dist/inputs/neo-checkbox.model.js +1 -0
  97. package/dist/inputs/neo-color-picker.model.d.ts +17 -0
  98. package/dist/inputs/neo-color-picker.model.js +1 -0
  99. package/dist/inputs/neo-date-time.model.d.ts +8 -0
  100. package/dist/inputs/neo-date-time.model.js +1 -0
  101. package/dist/inputs/neo-file-picker.model.d.ts +138 -0
  102. package/dist/inputs/neo-file-picker.model.js +1 -0
  103. package/dist/inputs/neo-number-step.model.d.ts +24 -0
  104. package/dist/inputs/neo-number-step.model.js +1 -0
  105. package/dist/inputs/neo-password.model.d.ts +13 -0
  106. package/dist/inputs/neo-password.model.js +1 -0
  107. package/dist/inputs/neo-pin.model.d.ts +47 -0
  108. package/dist/inputs/neo-pin.model.js +1 -0
  109. package/dist/inputs/neo-radio.model.d.ts +3 -0
  110. package/dist/inputs/neo-radio.model.js +1 -0
  111. package/dist/inputs/neo-switch.model.d.ts +9 -0
  112. package/dist/inputs/neo-switch.model.js +1 -0
  113. package/dist/nav/NeoTab.svelte +29 -25
  114. package/dist/nav/NeoTabPanel.svelte +1 -1
  115. package/dist/nav/NeoTabs.svelte +51 -44
  116. package/dist/nav/NeoTabsCard.svelte +8 -10
  117. package/dist/nav/neo-tabs-context.svelte.d.ts +2 -11
  118. package/dist/nav/neo-tabs-context.svelte.js +1 -41
  119. package/dist/nav/neo-tabs.model.d.ts +6 -0
  120. package/dist/providers/NeoThemeProvider.svelte +417 -305
  121. package/dist/providers/NeoThemeSelector.svelte +10 -10
  122. package/dist/providers/neo-theme-provider-context.svelte.js +16 -15
  123. package/dist/providers/neo-theme-provider.model.d.ts +6 -6
  124. package/dist/providers/neo-theme-provider.model.js +17 -12
  125. package/dist/providers/neo-theme-selector.model.d.ts +2 -2
  126. package/dist/skeletons/NeoSkeletonMedia.svelte +4 -4
  127. package/dist/skeletons/NeoSkeletonText.svelte +12 -12
  128. package/dist/styles/common/colors.scss +85 -97
  129. package/dist/styles/common/filters.scss +17 -0
  130. package/dist/styles/common/shadows.scss +531 -293
  131. package/dist/styles/common/spacing.scss +7 -3
  132. package/dist/styles/common/typography.scss +1 -1
  133. package/dist/styles/common/utils.scss +1 -1
  134. package/dist/styles/common/z-index.scss +1 -1
  135. package/dist/styles/mixin.scss +80 -27
  136. package/dist/styles/reset.scss +8 -1
  137. package/dist/styles/theme.scss +39 -16
  138. package/dist/utils/html-element.utils.d.ts +3 -0
  139. package/dist/utils/regex.utils.d.ts +3 -0
  140. package/dist/utils/regex.utils.js +3 -0
  141. package/dist/utils/shadow.utils.d.ts +30 -3
  142. package/dist/utils/shadow.utils.js +41 -14
  143. package/dist/utils/transition.utils.d.ts +4 -0
  144. package/dist/utils/transition.utils.js +10 -1
  145. package/dist/utils/utils.svelte.d.ts +6 -0
  146. package/dist/utils/utils.svelte.js +13 -0
  147. package/package.json +13 -12
  148. package/dist/inputs/NeoInput.svelte +0 -750
  149. package/dist/inputs/NeoValidation.svelte.d.ts +0 -22
  150. package/dist/inputs/neo-validation.model.d.ts +0 -40
  151. /package/dist/inputs/{neo-validation.model.js → common/neo-affix.model.js} +0 -0
  152. /package/dist/inputs/{neo-input.model.js → common/neo-input.model.js} +0 -0
@@ -0,0 +1,518 @@
1
+ <script lang="ts">
2
+ import { toStyle } from '@dvcol/common-utils/common/class';
3
+ import { flip, useFloating } from '@skeletonlabs/floating-ui-svelte';
4
+ import { fade } from 'svelte/transition';
5
+
6
+ import type { FocusEventHandler, MouseEventHandler } from 'svelte/elements';
7
+ import type { NeoInputContext, NeoInputHTMLElement } from './common/neo-input.model.js';
8
+
9
+ import IconCircleLoading from '../icons/IconCircleLoading.svelte';
10
+ import NeoBaseInput from './common/NeoBaseInput.svelte';
11
+ import NeoInputValidation from './common/NeoInputValidation.svelte';
12
+ import NeoLabel from './common/NeoLabel.svelte';
13
+ import { computeShadowElevation } from '../utils/shadow.utils.js';
14
+ import { enterDefaultTransition } from '../utils/transition.utils.js';
15
+
16
+ /* eslint-disable prefer-const -- necessary for binding checked */
17
+ let {
18
+ // Snippets
19
+ label,
20
+ message,
21
+ error,
22
+
23
+ // State
24
+ type = 'range',
25
+ id = label ? `neo-range-${crypto.randomUUID()}` : undefined,
26
+ ref = $bindable(),
27
+ value = $bindable(0),
28
+ valid = $bindable(),
29
+ dirty = $bindable(false),
30
+ touched = $bindable(false),
31
+ focused = $bindable(false),
32
+ hovered = $bindable(false),
33
+ disabled,
34
+ required,
35
+ loading,
36
+ validation,
37
+
38
+ // Styles
39
+ start,
40
+ glass,
41
+ rounded = true,
42
+ skeleton,
43
+
44
+ elevation = 2,
45
+
46
+ // Actions
47
+ in: inAction,
48
+ out: outAction,
49
+ transition: transitionAction,
50
+
51
+ // Other props
52
+ labelRef = $bindable(),
53
+ labelProps,
54
+ messageTag = 'div',
55
+ messageProps,
56
+ containerTag = 'div',
57
+ containerProps,
58
+ wrapperTag = 'div',
59
+ wrapperProps,
60
+ ...rest
61
+ }: {
62
+ value: number | [number, number];
63
+ } & any = $props();
64
+ /* eslint-enable prefer-const */
65
+
66
+ let initial = $state(value);
67
+ let validationMessage = $state<string>(ref?.validationMessage ?? '');
68
+ const isArray = $derived(Array.isArray(value));
69
+ const progress = $derived(typeof value === 'number' ? value : value?.[0]);
70
+ const arrayProgress = $derived(typeof value === 'number' ? undefined : value?.[1]);
71
+
72
+ let visible = $state(false);
73
+ let messageId = $state(`neo-range-message-${crypto.randomUUID()}`);
74
+ const context = $derived<NeoInputContext<NeoInputHTMLElement>>({
75
+ // Ref
76
+ ref,
77
+
78
+ // Methods
79
+ mark: ref?.mark,
80
+ clear: ref?.clear,
81
+ change: ref?.change,
82
+ validate: ref?.validate,
83
+
84
+ // State
85
+ value,
86
+ touched,
87
+ dirty,
88
+ valid,
89
+ readonly: rest.readonly,
90
+ disabled,
91
+
92
+ // Styles
93
+ rounded,
94
+ glass,
95
+ start,
96
+ skeleton,
97
+ });
98
+
99
+ const boxShadow = $derived(computeShadowElevation(-Math.abs(elevation), { glass, pressed: elevation > 0 }, { max: 2, min: -2 }));
100
+
101
+ const show = $derived(focused || hovered);
102
+ const tooltip = useFloating({
103
+ placement: 'bottom',
104
+ middleware: [flip()],
105
+ });
106
+
107
+ const arrayTooltip = useFloating({
108
+ placement: 'bottom',
109
+ middleware: [flip()],
110
+ });
111
+
112
+ const onMouseEnter: MouseEventHandler<HTMLDivElement> = e => {
113
+ hovered = true;
114
+ containerProps?.onmouseenter?.(e);
115
+ };
116
+
117
+ const onMouseLeave: MouseEventHandler<HTMLDivElement> = e => {
118
+ hovered = false;
119
+ containerProps?.onmouseleave?.(e);
120
+ };
121
+
122
+ const onFocusIn: FocusEventHandler<HTMLDivElement> = e => {
123
+ focused = true;
124
+ containerProps?.onfocusin?.(e);
125
+ };
126
+
127
+ const onFocusOut: FocusEventHandler<HTMLDivElement> = e => {
128
+ focused = false;
129
+ containerProps?.onfocusout?.(e);
130
+ };
131
+
132
+ $effect(() => {
133
+ if (value > -1) tooltip.update();
134
+ });
135
+ </script>
136
+
137
+ <input
138
+ type="range"
139
+ bind:value={() => {
140
+ if (isArray) return value[0];
141
+ return value;
142
+ // eslint-disable-next-line no-sequences
143
+ },
144
+ v => {
145
+ if (isArray) value[0] = v;
146
+ else value = v;
147
+ }}
148
+ max={arrayProgress}
149
+ />
150
+
151
+ {#if isArray}
152
+ <input
153
+ type="range"
154
+ bind:value={() => {
155
+ if (isArray) return value[1];
156
+ return value;
157
+ // eslint-disable-next-line no-sequences
158
+ },
159
+ v => {
160
+ if (isArray) value[1] = v;
161
+ else value = v;
162
+ }}
163
+ min={progress}
164
+ />
165
+ {/if}
166
+
167
+ <NeoInputValidation
168
+ tag={wrapperTag}
169
+ bind:visible
170
+ bind:messageId
171
+ {valid}
172
+ {validation}
173
+ {validationMessage}
174
+ {error}
175
+ {rounded}
176
+ {context}
177
+ {message}
178
+ {messageTag}
179
+ {messageProps}
180
+ in={inAction}
181
+ out={outAction}
182
+ transition={transitionAction}
183
+ {...wrapperProps}
184
+ style={toStyle('--neo-validation-padding: 0', wrapperProps?.style)}
185
+ >
186
+ <svelte:element
187
+ this={containerTag}
188
+ role="none"
189
+ class:neo-range-container={true}
190
+ {...containerProps}
191
+ onmouseenter={onMouseEnter}
192
+ onmouseleave={onMouseLeave}
193
+ onfocusin={onFocusIn}
194
+ onfocusout={onFocusOut}
195
+ >
196
+ {#if show}
197
+ <span class="neo-range-value" bind:this={tooltip.elements.floating} style={tooltip.floatingStyles} transition:fade>
198
+ {progress}%
199
+ </span>
200
+ {/if}
201
+ {#if isArray && show}
202
+ <span class="neo-range-value" bind:this={arrayTooltip.elements.floating} style={arrayTooltip.floatingStyles} transition:fade>
203
+ {arrayProgress}%
204
+ </span>
205
+ {/if}
206
+ <div
207
+ class="neo-range-slider"
208
+ class:neo-rounded={rounded}
209
+ class:neo-start={start}
210
+ class:neo-glass={glass}
211
+ class:neo-disabled={disabled}
212
+ class:neo-skeleton={skeleton}
213
+ class:neo-flat={!elevation}
214
+ class:neo-valid={validation && valid}
215
+ class:neo-invalid={validation && !valid}
216
+ style:--neo-range-box-shadow={boxShadow}
217
+ style:--neo-range-progress="{progress}%"
218
+ style:--neo-range-array-progress="{arrayProgress}%"
219
+ >
220
+ <span class="neo-range-input">
221
+ <NeoBaseInput
222
+ aria-invalid={valid === undefined ? undefined : !valid}
223
+ aria-describedby={visible ? messageId : undefined}
224
+ {id}
225
+ bind:ref
226
+ bind:initial
227
+ bind:value={() => {
228
+ if (isArray) return value[0];
229
+ return value;
230
+ // eslint-disable-next-line no-sequences
231
+ },
232
+ v => {
233
+ if (isArray) value[0] = v;
234
+ else value = v;
235
+ }}
236
+ bind:valid
237
+ bind:dirty
238
+ bind:touched
239
+ bind:validationMessage
240
+ {type}
241
+ {disabled}
242
+ {required}
243
+ {...rest}
244
+ hidden
245
+ aria-hidden
246
+ tabindex={-1}
247
+ />
248
+ </span>
249
+ <span class="neo-range-rail">
250
+ <span class="neo-range-handle-before" class:neo-array={isArray}>
251
+ <!-- handle before -->
252
+ </span>
253
+ <button bind:this={tooltip.elements.reference} class="neo-range-handle">
254
+ <!-- handle handle -->
255
+ </button>
256
+ {#if isArray}
257
+ <span class="neo-range-handle-before neo-range">
258
+ <!-- handle before -->
259
+ </span>
260
+ <button bind:this={arrayTooltip.elements.reference} class="neo-range-handle">
261
+ <!-- handle handle -->
262
+ </button>
263
+ {/if}
264
+ <span class="neo-range-handle-after">
265
+ <!-- handle after -->
266
+ </span>
267
+ </span>
268
+ </div>
269
+ <NeoLabel bind:ref={labelRef} for={id} {label} {disabled} {required} {...labelProps} />
270
+ {#if loading !== undefined}
271
+ <span class="neo-range-suffix">
272
+ {#if loading}
273
+ <span class="neo-range-loading" out:fade={enterDefaultTransition}>
274
+ <IconCircleLoading width="1rem" height="1rem" />
275
+ </span>
276
+ {/if}
277
+ </span>
278
+ {/if}
279
+ </svelte:element>
280
+ </NeoInputValidation>
281
+
282
+ <style>.neo-range-container {
283
+ --neo-range-min-width: calc(var(--neo-range-height) / 2);
284
+ --neo-range-height: var(--neo-line-height-sm, 1.25rem);
285
+ --neo-range-spacing: 0.125rem;
286
+ display: inline-flex;
287
+ align-items: center;
288
+ width: fit-content;
289
+ min-width: calc(var(--neo-range-height) * 12);
290
+ margin: 0;
291
+ padding: calc(0.375rem + var(--neo-range-border-width, var(--neo-border-width, 1px))) 0.5rem 0.375rem;
292
+ }
293
+ .neo-range-input {
294
+ display: none;
295
+ }
296
+ .neo-range-rail {
297
+ display: inline-flex;
298
+ align-items: center;
299
+ box-sizing: border-box;
300
+ width: 100%;
301
+ height: 100%;
302
+ margin-right: calc(var(--neo-range-min-width) - var(--neo-range-spacing));
303
+ margin-left: var(--neo-range-min-width);
304
+ background-color: var(--neo-range-rail-background, transparent);
305
+ border-radius: var(--neo-switch-border-radius, var(--neo-border-radius-sm));
306
+ transition: background-color 0.3s ease;
307
+ }
308
+ .neo-range-handle {
309
+ z-index: var(--neo-z-index-in-front, 1);
310
+ display: inline-flex;
311
+ align-self: center;
312
+ box-sizing: border-box;
313
+ height: 100%;
314
+ margin: 0 calc(0% - var(--neo-range-height) / 2);
315
+ padding: 0;
316
+ color: inherit;
317
+ background: var(--neo-range-handle-background, var(--neo-background-color));
318
+ border: none;
319
+ border-radius: var(--neo-border-radius-sm);
320
+ box-shadow: var(--neo-range-handle-box-shadow, var(--neo-box-shadow-convex-2));
321
+ cursor: grab;
322
+ transition: scale 0.3s ease;
323
+ appearance: none;
324
+ aspect-ratio: 1/1;
325
+ }
326
+ .neo-range-handle:active {
327
+ cursor: grabbing;
328
+ scale: 0.95;
329
+ }
330
+ .neo-range-handle-before, .neo-range-handle-after {
331
+ display: inline-flex;
332
+ box-sizing: border-box;
333
+ height: calc(100% - var(--neo-range-spacing) * 2);
334
+ margin: var(--neo-range-spacing);
335
+ border-radius: var(--neo-border-radius-xs);
336
+ }
337
+ .neo-range-handle-before {
338
+ width: calc(var(--neo-range-min-width) - var(--neo-range-spacing) + var(--neo-range-progress, 0%));
339
+ border-top-right-radius: 0 !important;
340
+ border-bottom-right-radius: 0 !important;
341
+ }
342
+ .neo-range-handle-before.neo-array {
343
+ margin-inline: calc((var(--neo-range-spacing) - var(--neo-range-min-width)) / 2);
344
+ }
345
+ .neo-range-handle-before:not(.neo-array) {
346
+ margin-right: 0;
347
+ margin-left: calc(var(--neo-range-spacing) - var(--neo-range-min-width));
348
+ background-color: var(--neo-switch-checked-background, color-mix(in srgb, transparent, currentcolor 30%));
349
+ }
350
+ .neo-range-handle-before.neo-range {
351
+ width: calc(var(--neo-range-min-width) - var(--neo-range-spacing) - var(--neo-range-progress, 0%) + var(--neo-range-array-progress, 0%));
352
+ }
353
+ .neo-range-handle-after {
354
+ flex: 1 1 auto;
355
+ margin-right: calc(var(--neo-range-spacing) - var(--neo-range-min-width));
356
+ margin-left: 0;
357
+ background-color: var(--neo-switch-rail-background, color-mix(in srgb, transparent, currentcolor 1%));
358
+ border-top-left-radius: 0 !important;
359
+ border-bottom-left-radius: 0 !important;
360
+ }
361
+ .neo-range-slider {
362
+ display: inline-flex;
363
+ align-items: center;
364
+ box-sizing: border-box;
365
+ width: 100%;
366
+ min-width: calc(var(--neo-range-height) * 1.8);
367
+ height: var(--neo-range-height);
368
+ margin: 0;
369
+ padding: 0;
370
+ overflow: hidden;
371
+ color: inherit;
372
+ text-decoration: none;
373
+ background: transparent;
374
+ border: var(--neo-range-border-width, var(--neo-border-width, 1px)) var(--neo-range-border-color, transparent) solid;
375
+ border-radius: var(--neo-range-border-radius, var(--neo-border-radius));
376
+ outline: none;
377
+ box-shadow: var(--neo-range-box-shadow, var(--neo-box-shadow-pressed-2));
378
+ cursor: pointer;
379
+ transition: color 0.3s ease, box-shadow 0.3s ease, border-radius 0.3s ease, border-color 0.3s ease;
380
+ }
381
+ .neo-range-slider.neo-rounded {
382
+ border-radius: var(--neo-border-radius-lg);
383
+ }
384
+ .neo-range-slider.neo-rounded .neo-range-handle {
385
+ border-radius: 50%;
386
+ }
387
+ .neo-range-slider.neo-rounded .neo-range-handle-before, .neo-range-slider.neo-rounded .neo-range-handle-after {
388
+ border-radius: var(--neo-border-radius-lg);
389
+ }
390
+ .neo-range-slider.neo-valid {
391
+ --neo-range-rail-background: color-mix(in srgb, transparent, var(--neo-range-valid-color, var(--neo-color-success)) 30%);
392
+ }
393
+ .neo-range-slider.neo-invalid {
394
+ --neo-range-rail-background: color-mix(in srgb, transparent, var(--neo-range-invalid-color, var(--neo-color-error)) 30%);
395
+ }
396
+ .neo-range-slider.neo-disabled {
397
+ color: var(--neo-text-color-disabled);
398
+ box-shadow: var(--neo-box-shadow-flat);
399
+ cursor: not-allowed;
400
+ opacity: var(--neo-card-opacity-disabled, var(--neo-opacity-disabled));
401
+ }
402
+ .neo-range-slider.neo-disabled, .neo-range-slider.neo-flat {
403
+ --neo-range-min-width: calc(var(--neo-range-height) / 2 - 2px);
404
+ border-color: var(--neo-input-border-color, var(--neo-border-color));
405
+ }
406
+ .neo-range-slider.neo-disabled .neo-range-rail, .neo-range-slider.neo-flat .neo-range-rail {
407
+ margin-right: calc(var(--neo-range-min-width) + var(--neo-range-spacing));
408
+ margin-left: var(--neo-range-min-width);
409
+ }
410
+ .neo-range-slider.neo-disabled .neo-range-handle, .neo-range-slider.neo-flat .neo-range-handle {
411
+ background-color: var(--neo-input-border-color, currentcolor);
412
+ box-shadow: var(--neo-box-shadow-flat);
413
+ }
414
+ .neo-range-slider.neo-disabled .neo-range-handle:active, .neo-range-slider.neo-flat .neo-range-handle:active {
415
+ scale: 1;
416
+ }
417
+ .neo-range-slider.neo-disabled .neo-range-handle-after, .neo-range-slider.neo-disabled .neo-range-handle-before, .neo-range-slider.neo-flat .neo-range-handle-after, .neo-range-slider.neo-flat .neo-range-handle-before {
418
+ height: 100%;
419
+ border-radius: inherit;
420
+ }
421
+ .neo-range-slider.neo-disabled .neo-range-handle-before, .neo-range-slider.neo-flat .neo-range-handle-before {
422
+ width: calc(var(--neo-range-min-width) + var(--neo-range-spacing) + var(--neo-range-progress, 0%));
423
+ }
424
+ .neo-range-slider.neo-disabled .neo-range-handle-before.neo-array, .neo-range-slider.neo-flat .neo-range-handle-before.neo-array {
425
+ margin-inline: calc((0% - var(--neo-range-min-width)) / 2);
426
+ }
427
+ .neo-range-slider.neo-disabled .neo-range-handle-before:not(.neo-array), .neo-range-slider.neo-flat .neo-range-handle-before:not(.neo-array) {
428
+ margin-left: calc(0% - var(--neo-range-min-width));
429
+ }
430
+ .neo-range-slider.neo-disabled .neo-range-handle-before.neo-range, .neo-range-slider.neo-flat .neo-range-handle-before.neo-range {
431
+ width: calc(var(--neo-range-min-width) + var(--neo-range-spacing) - var(--neo-range-progress, 0%) + var(--neo-range-array-progress, 0%));
432
+ }
433
+ .neo-range-slider:focus-visible {
434
+ border-color: var(--neo-radio-border-color-focused, var(--neo-border-color-focused));
435
+ }
436
+ .neo-range-slider.neo-glass {
437
+ /** Box Shadows raised */
438
+ --neo-box-shadow-raised-5: var(--neo-glass-box-shadow-raised-5);
439
+ --neo-box-shadow-raised-4: var(--neo-glass-box-shadow-raised-4);
440
+ --neo-box-shadow-raised-3: var(--neo-glass-box-shadow-raised-3);
441
+ --neo-box-shadow-raised-2: var(--neo-glass-box-shadow-raised-2);
442
+ --neo-box-shadow-raised-1: var(--neo-glass-box-shadow-raised-1);
443
+ /** Box Shadows inset */
444
+ --neo-box-shadow-inset-1: var(--neo-glass-box-shadow-inset-1);
445
+ --neo-box-shadow-inset-2: var(--neo-glass-box-shadow-inset-2);
446
+ --neo-box-shadow-inset-3: var(--neo-glass-box-shadow-inset-3);
447
+ --neo-box-shadow-inset-4: var(--neo-glass-box-shadow-inset-4);
448
+ --neo-box-shadow-inset-5: var(--neo-glass-box-shadow-inset-5);
449
+ /** Box Shadows pressed */
450
+ --neo-box-shadow-pressed-1: var(--neo-glass-box-shadow-pressed-1);
451
+ --neo-box-shadow-pressed-2: var(--neo-glass-box-shadow-pressed-2);
452
+ --neo-box-shadow-pressed-3: var(--neo-glass-box-shadow-pressed-3);
453
+ --neo-box-shadow-pressed-4: var(--neo-glass-box-shadow-pressed-4);
454
+ --neo-box-shadow-pressed-5: var(--neo-glass-box-shadow-pressed-5);
455
+ /** Box Shadows convex */
456
+ --neo-box-shadow-convex-1: var(--neo-glass-box-shadow-convex-1);
457
+ --neo-box-shadow-convex-2: var(--neo-glass-box-shadow-convex-2);
458
+ --neo-box-shadow-convex-3: var(--neo-glass-box-shadow-convex-3);
459
+ --neo-box-shadow-convex-4: var(--neo-glass-box-shadow-convex-4);
460
+ --neo-box-shadow-convex-5: var(--neo-glass-box-shadow-convex-5);
461
+ /** Skeleton color */
462
+ --neo-skeleton-color: var(--neo-glass-skeleton-color);
463
+ background-color: var(--neo-range-bg-color, var(--neo-glass-background-color));
464
+ border-color: var(--neo-radio-border-color, var(--neo-glass-top-border-color) var(--neo-glass-right-border-color) var(--neo-glass-bottom-border-color) var(--neo-glass-left-border-color));
465
+ backdrop-filter: var(--neo-radio-glass-blur, var(--neo-blur-2) var(--neo-saturate-2));
466
+ }
467
+ @starting-style {
468
+ .neo-range-slider.neo-start {
469
+ box-shadow: var(--neo-box-shadow-flat);
470
+ }
471
+ }
472
+ .neo-range-slider.neo-skeleton {
473
+ box-shadow: var(--neo-box-shadow-flat);
474
+ pointer-events: none;
475
+ --neo-skeleton-color-start: var(--neo-skeleton-color);
476
+ --neo-skeleton-color-end: oklch(from var(--neo-skeleton-color) calc(l - var(--neo-skeleton-color-step, 0.05)) c h);
477
+ color: var(--neo-skeleton-color-start);
478
+ background-color: var(--neo-skeleton-color-start);
479
+ border-color: var(--neo-skeleton-color-start);
480
+ transition: background-color 1s ease, color 1s ease, border-color 1s ease;
481
+ animation: skeleton 3s var(--neo-transition-skeleton) infinite;
482
+ animation-delay: 1s;
483
+ }
484
+ .neo-range-slider.neo-skeleton::before, .neo-range-slider.neo-skeleton::after,
485
+ .neo-range-slider.neo-skeleton :global(> *::before),
486
+ .neo-range-slider.neo-skeleton :global(> *::after),
487
+ .neo-range-slider.neo-skeleton :global(> *) {
488
+ visibility: hidden;
489
+ pointer-events: none;
490
+ }
491
+ @keyframes skeleton {
492
+ 0% {
493
+ color: var(--neo-skeleton-color-start);
494
+ background-color: var(--neo-skeleton-color-start);
495
+ border-color: var(--neo-skeleton-color-start);
496
+ }
497
+ 40% {
498
+ color: var(--neo-skeleton-color-end);
499
+ background-color: var(--neo-skeleton-color-end);
500
+ border-color: var(--neo-skeleton-color-end);
501
+ }
502
+ 80% {
503
+ color: var(--neo-skeleton-color-start);
504
+ background-color: var(--neo-skeleton-color-start);
505
+ border-color: var(--neo-skeleton-color-start);
506
+ }
507
+ 100% {
508
+ color: var(--neo-skeleton-color-start);
509
+ background-color: var(--neo-skeleton-color-start);
510
+ border-color: var(--neo-skeleton-color-start);
511
+ }
512
+ }
513
+ .neo-range-suffix {
514
+ width: 1rem;
515
+ height: 1rem;
516
+ margin-bottom: 0.125rem;
517
+ margin-left: 0.5rem;
518
+ }</style>
@@ -0,0 +1,18 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: Props & {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const NeoRange: $$__sveltets_2_IsomorphicComponent<{}, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, Record<string, any>, string>;
17
+ type NeoRange = InstanceType<typeof NeoRange>;
18
+ export default NeoRange;