@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,373 @@
1
+ <script lang="ts">
2
+ import { toStyle } from '@dvcol/common-utils/common/class';
3
+ import { fade } from 'svelte/transition';
4
+
5
+ import type { NeoInputContext, NeoInputHTMLElement } from './common/neo-input.model.js';
6
+
7
+ import type { NeoSwitchProps } from './neo-switch.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 = 'checkbox',
25
+ id = label ? `neo-switch-${crypto.randomUUID()}` : undefined,
26
+ ref = $bindable(),
27
+ group = $bindable(),
28
+ checked = $bindable(false),
29
+ indeterminate = $bindable(false),
30
+ valid = $bindable(),
31
+ dirty = $bindable(false),
32
+ touched = $bindable(false),
33
+ focused = $bindable(false),
34
+ disabled,
35
+ required,
36
+ loading,
37
+ validation,
38
+
39
+ // Styles
40
+ start,
41
+ glass,
42
+ rounded = true,
43
+ skeleton,
44
+
45
+ elevation = 2,
46
+
47
+ // Actions
48
+ in: inAction,
49
+ out: outAction,
50
+ transition: transitionAction,
51
+
52
+ // Other props
53
+ labelRef = $bindable(),
54
+ labelProps,
55
+ messageTag = 'div',
56
+ messageProps,
57
+ containerTag = 'div',
58
+ containerProps,
59
+ wrapperTag = 'div',
60
+ wrapperProps,
61
+ ...rest
62
+ }: NeoSwitchProps = $props();
63
+ /* eslint-enable prefer-const */
64
+
65
+ let initial = $state(checked);
66
+ let validationMessage = $state<string>(ref?.validationMessage ?? '');
67
+
68
+ let visible = $state(false);
69
+ let messageId = $state(`neo-switch-message-${crypto.randomUUID()}`);
70
+ const context = $derived<NeoInputContext<NeoInputHTMLElement>>({
71
+ // Ref
72
+ ref,
73
+
74
+ // Methods
75
+ mark: ref?.mark,
76
+ clear: ref?.clear,
77
+ change: ref?.change,
78
+ validate: ref?.validate,
79
+
80
+ // State
81
+ value: checked,
82
+ touched,
83
+ dirty,
84
+ valid,
85
+ readonly: rest.readonly,
86
+ disabled,
87
+
88
+ // Styles
89
+ rounded,
90
+ glass,
91
+ start,
92
+ skeleton,
93
+ });
94
+
95
+ const boxShadow = $derived(computeShadowElevation(-Math.abs(elevation), { glass, pressed: elevation > 0 }, { max: 2, min: -2 }));
96
+ </script>
97
+
98
+ <NeoInputValidation
99
+ tag={wrapperTag}
100
+ bind:visible
101
+ bind:messageId
102
+ {valid}
103
+ {validation}
104
+ {validationMessage}
105
+ {error}
106
+ {rounded}
107
+ {context}
108
+ {message}
109
+ {messageTag}
110
+ {messageProps}
111
+ in={inAction}
112
+ out={outAction}
113
+ transition={transitionAction}
114
+ {...wrapperProps}
115
+ style={toStyle('--neo-validation-padding: 0', wrapperProps?.style)}
116
+ >
117
+ <svelte:element this={containerTag} class:neo-switch-container={true} class:neo-flat={!elevation} {...containerProps}>
118
+ <button
119
+ class="neo-switch-button"
120
+ role="switch"
121
+ aria-checked={indeterminate ? 'mixed' : checked}
122
+ class:neo-checked={checked || indeterminate}
123
+ class:neo-rounded={rounded}
124
+ class:neo-start={start}
125
+ class:neo-glass={glass}
126
+ class:neo-disabled={disabled}
127
+ class:neo-skeleton={skeleton}
128
+ class:neo-flat={!elevation}
129
+ class:neo-valid={validation && valid}
130
+ class:neo-invalid={validation && !valid}
131
+ style:--neo-switch-box-shadow={boxShadow}
132
+ onclick={() => ref?.click()}
133
+ >
134
+ <span class="neo-switch-input">
135
+ <NeoBaseInput
136
+ aria-invalid={valid === undefined ? undefined : !valid}
137
+ aria-describedby={visible ? messageId : undefined}
138
+ {id}
139
+ bind:ref
140
+ bind:initial
141
+ bind:group
142
+ bind:checked
143
+ bind:indeterminate
144
+ bind:valid
145
+ bind:dirty
146
+ bind:touched
147
+ bind:focused
148
+ bind:validationMessage
149
+ {type}
150
+ {disabled}
151
+ {required}
152
+ {...rest}
153
+ hidden
154
+ aria-hidden
155
+ tabindex={-1}
156
+ />
157
+ </span>
158
+ <span class="neo-switch-rail">
159
+ <span class="neo-switch-toggle">
160
+ <!-- Toggle handle -->
161
+ </span>
162
+ </span>
163
+ </button>
164
+ <NeoLabel bind:ref={labelRef} for={id} {label} {disabled} {required} {...labelProps} />
165
+ {#if loading !== undefined}
166
+ <span class="neo-switch-suffix">
167
+ {#if loading}
168
+ <span class="neo-switch-loading" out:fade={enterDefaultTransition}>
169
+ <IconCircleLoading width="1rem" height="1rem" />
170
+ </span>
171
+ {/if}
172
+ </span>
173
+ {/if}
174
+ </svelte:element>
175
+ </NeoInputValidation>
176
+
177
+ <style>.neo-switch-container {
178
+ --neo-switch-height: var(--neo-line-height, 1.5rem);
179
+ --neo-switch-toggle-width: 0.875rem;
180
+ --neo-switch-spacing: 0.125rem;
181
+ --neo-label-margin: 0 0 0 0.75rem;
182
+ --neo-label-padding: 0;
183
+ display: inline-flex;
184
+ align-items: center;
185
+ width: fit-content;
186
+ margin: 0;
187
+ padding: calc(0.375rem + var(--neo-switch-border-width, var(--neo-border-width, 1px))) 0.5rem 0.375rem;
188
+ }
189
+ .neo-switch-container.neo-flat {
190
+ --neo-label-margin: 0 0 0 0.625rem;
191
+ }
192
+ .neo-switch-input {
193
+ display: none;
194
+ }
195
+ .neo-switch-rail {
196
+ position: relative;
197
+ display: inline-flex;
198
+ width: 100%;
199
+ height: calc(100% - var(--neo-switch-spacing) * 2);
200
+ margin: var(--neo-switch-spacing);
201
+ overflow: hidden;
202
+ background-color: var(--neo-switch-rail-background, color-mix(in srgb, transparent, currentcolor 1%));
203
+ border-radius: var(--neo-switch-border-radius, var(--neo-border-radius-sm));
204
+ transition: background-color 0.3s ease;
205
+ }
206
+ .neo-switch-toggle {
207
+ position: absolute;
208
+ left: 0;
209
+ display: inline-flex;
210
+ box-sizing: border-box;
211
+ height: calc(100% - var(--neo-switch-spacing) * 2);
212
+ margin: var(--neo-switch-spacing);
213
+ background: var(--neo-switch-toggle-background, var(--neo-background-color));
214
+ border-radius: 50%;
215
+ box-shadow: var(--neo-switch-toggle-box-shadow, var(--neo-box-shadow-convex-2));
216
+ transition: left 0.3s ease, scale 0.3s ease;
217
+ aspect-ratio: 1/1;
218
+ }
219
+ .neo-switch-button {
220
+ display: inline-flex;
221
+ align-items: center;
222
+ box-sizing: border-box;
223
+ min-width: calc(var(--neo-switch-height) * 1.8);
224
+ height: var(--neo-switch-height);
225
+ margin: 0;
226
+ padding: 0;
227
+ color: inherit;
228
+ text-decoration: none;
229
+ background: transparent;
230
+ border: var(--neo-switch-border-width, var(--neo-border-width, 1px)) var(--neo-switch-border-color, transparent) solid;
231
+ border-radius: var(--neo-switch-border-radius, var(--neo-border-radius));
232
+ outline: none;
233
+ box-shadow: var(--neo-switch-box-shadow, var(--neo-box-shadow-pressed-2));
234
+ cursor: pointer;
235
+ transition: color 0.3s ease, box-shadow 0.3s ease, border-radius 0.3s ease, border-color 0.3s ease, background-color 0.3s ease;
236
+ }
237
+ .neo-switch-button.neo-rounded {
238
+ border-radius: var(--neo-border-radius-lg);
239
+ }
240
+ .neo-switch-button.neo-rounded .neo-switch-rail {
241
+ border-radius: var(--neo-border-radius-lg);
242
+ }
243
+ .neo-switch-button.neo-valid {
244
+ --neo-switch-checked-background: color-mix(in srgb, transparent, var(--neo-switch-valid-color, var(--neo-color-success)) 30%);
245
+ }
246
+ .neo-switch-button.neo-invalid {
247
+ --neo-switch-checked-background: color-mix(in srgb, transparent, var(--neo-switch-invalid-color, var(--neo-color-error)) 30%);
248
+ }
249
+ .neo-switch-button.neo-checked .neo-switch-rail {
250
+ background-color: var(--neo-switch-checked-background, color-mix(in srgb, transparent, currentcolor 30%));
251
+ }
252
+ .neo-switch-button.neo-checked .neo-switch-toggle {
253
+ left: calc(100% - var(--neo-switch-toggle-width) - var(--neo-switch-spacing) * 2);
254
+ }
255
+ .neo-switch-button.neo-disabled {
256
+ color: var(--neo-text-color-disabled);
257
+ box-shadow: var(--neo-box-shadow-flat);
258
+ cursor: not-allowed;
259
+ opacity: var(--neo-card-opacity-disabled, var(--neo-opacity-disabled));
260
+ }
261
+ .neo-switch-button.neo-disabled, .neo-switch-button.neo-flat {
262
+ --neo-switch-toggle-spacing: 0.25rem;
263
+ border-color: var(--neo-input-border-color, var(--neo-border-color));
264
+ }
265
+ .neo-switch-button.neo-disabled .neo-switch-toggle, .neo-switch-button.neo-flat .neo-switch-toggle {
266
+ background-color: var(--neo-input-border-color, currentcolor);
267
+ box-shadow: var(--neo-box-shadow-flat);
268
+ }
269
+ .neo-switch-button.neo-disabled .neo-switch-rail, .neo-switch-button.neo-flat .neo-switch-rail {
270
+ background-color: transparent;
271
+ }
272
+ .neo-switch-button.neo-disabled.neo-checked, .neo-switch-button.neo-flat.neo-checked {
273
+ background-color: color-mix(in srgb, transparent, currentcolor 10%);
274
+ }
275
+ .neo-switch-button.neo-disabled.neo-checked.neo-valid, .neo-switch-button.neo-flat.neo-checked.neo-valid {
276
+ background-color: color-mix(in srgb, transparent, var(--neo-switch-valid-color, var(--neo-green-light)) 20%);
277
+ }
278
+ .neo-switch-button.neo-disabled.neo-checked.neo-invalid, .neo-switch-button.neo-flat.neo-checked.neo-invalid {
279
+ background-color: color-mix(in srgb, transparent, var(--neo-switch-invalid-color, var(--neo-color-error)) 20%);
280
+ }
281
+ .neo-switch-button:focus-visible {
282
+ border-color: var(--neo-radio-border-color-focused, var(--neo-border-color-focused));
283
+ }
284
+ .neo-switch-button:active .neo-switch-toggle {
285
+ transform-origin: left center;
286
+ scale: 1.2 1;
287
+ }
288
+ .neo-switch-button:active.neo-checked .neo-switch-toggle {
289
+ transform-origin: right center;
290
+ }
291
+ .neo-switch-button.neo-glass {
292
+ /** Box Shadows raised */
293
+ --neo-box-shadow-raised-5: var(--neo-glass-box-shadow-raised-5);
294
+ --neo-box-shadow-raised-4: var(--neo-glass-box-shadow-raised-4);
295
+ --neo-box-shadow-raised-3: var(--neo-glass-box-shadow-raised-3);
296
+ --neo-box-shadow-raised-2: var(--neo-glass-box-shadow-raised-2);
297
+ --neo-box-shadow-raised-1: var(--neo-glass-box-shadow-raised-1);
298
+ /** Box Shadows inset */
299
+ --neo-box-shadow-inset-1: var(--neo-glass-box-shadow-inset-1);
300
+ --neo-box-shadow-inset-2: var(--neo-glass-box-shadow-inset-2);
301
+ --neo-box-shadow-inset-3: var(--neo-glass-box-shadow-inset-3);
302
+ --neo-box-shadow-inset-4: var(--neo-glass-box-shadow-inset-4);
303
+ --neo-box-shadow-inset-5: var(--neo-glass-box-shadow-inset-5);
304
+ /** Box Shadows pressed */
305
+ --neo-box-shadow-pressed-1: var(--neo-glass-box-shadow-pressed-1);
306
+ --neo-box-shadow-pressed-2: var(--neo-glass-box-shadow-pressed-2);
307
+ --neo-box-shadow-pressed-3: var(--neo-glass-box-shadow-pressed-3);
308
+ --neo-box-shadow-pressed-4: var(--neo-glass-box-shadow-pressed-4);
309
+ --neo-box-shadow-pressed-5: var(--neo-glass-box-shadow-pressed-5);
310
+ /** Box Shadows convex */
311
+ --neo-box-shadow-convex-1: var(--neo-glass-box-shadow-convex-1);
312
+ --neo-box-shadow-convex-2: var(--neo-glass-box-shadow-convex-2);
313
+ --neo-box-shadow-convex-3: var(--neo-glass-box-shadow-convex-3);
314
+ --neo-box-shadow-convex-4: var(--neo-glass-box-shadow-convex-4);
315
+ --neo-box-shadow-convex-5: var(--neo-glass-box-shadow-convex-5);
316
+ /** Skeleton color */
317
+ --neo-skeleton-color: var(--neo-glass-skeleton-color);
318
+ background-color: var(--neo-switch-bg-color, var(--neo-glass-background-color));
319
+ 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));
320
+ backdrop-filter: var(--neo-radio-glass-blur, var(--neo-blur-2) var(--neo-saturate-2));
321
+ }
322
+ @starting-style {
323
+ .neo-switch-button.neo-start {
324
+ box-shadow: var(--neo-box-shadow-flat);
325
+ }
326
+ }
327
+ .neo-switch-button.neo-skeleton {
328
+ box-shadow: var(--neo-box-shadow-flat);
329
+ pointer-events: none;
330
+ --neo-skeleton-color-start: var(--neo-skeleton-color);
331
+ --neo-skeleton-color-end: oklch(from var(--neo-skeleton-color) calc(l - var(--neo-skeleton-color-step, 0.05)) c h);
332
+ color: var(--neo-skeleton-color-start);
333
+ background-color: var(--neo-skeleton-color-start);
334
+ border-color: var(--neo-skeleton-color-start);
335
+ transition: background-color 1s ease, color 1s ease, border-color 1s ease;
336
+ animation: skeleton 3s var(--neo-transition-skeleton) infinite;
337
+ animation-delay: 1s;
338
+ }
339
+ .neo-switch-button.neo-skeleton::before, .neo-switch-button.neo-skeleton::after,
340
+ .neo-switch-button.neo-skeleton :global(> *::before),
341
+ .neo-switch-button.neo-skeleton :global(> *::after),
342
+ .neo-switch-button.neo-skeleton :global(> *) {
343
+ visibility: hidden;
344
+ pointer-events: none;
345
+ }
346
+ @keyframes skeleton {
347
+ 0% {
348
+ color: var(--neo-skeleton-color-start);
349
+ background-color: var(--neo-skeleton-color-start);
350
+ border-color: var(--neo-skeleton-color-start);
351
+ }
352
+ 40% {
353
+ color: var(--neo-skeleton-color-end);
354
+ background-color: var(--neo-skeleton-color-end);
355
+ border-color: var(--neo-skeleton-color-end);
356
+ }
357
+ 80% {
358
+ color: var(--neo-skeleton-color-start);
359
+ background-color: var(--neo-skeleton-color-start);
360
+ border-color: var(--neo-skeleton-color-start);
361
+ }
362
+ 100% {
363
+ color: var(--neo-skeleton-color-start);
364
+ background-color: var(--neo-skeleton-color-start);
365
+ border-color: var(--neo-skeleton-color-start);
366
+ }
367
+ }
368
+ .neo-switch-suffix {
369
+ width: 1rem;
370
+ height: 1rem;
371
+ margin-bottom: 0.125rem;
372
+ margin-left: 0.5rem;
373
+ }</style>
@@ -0,0 +1,19 @@
1
+ import type { NeoSwitchProps } from './neo-switch.model.js';
2
+ 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> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
12
+ };
13
+ z_$$bindings?: Bindings;
14
+ }
15
+ declare const NeoSwitch: $$__sveltets_2_IsomorphicComponent<NeoSwitchProps, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, "group" | "ref" | "checked" | "focused" | "indeterminate" | "touched" | "dirty" | "valid" | "labelRef">;
18
+ type NeoSwitch = InstanceType<typeof NeoSwitch>;
19
+ export default NeoSwitch;