@proj-airi/ui 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +41 -0
  2. package/dist/Animations-DeJoVt_I.mjs +153 -0
  3. package/dist/{components/Form/Range/Range.vue → Form-BXVt-kFc.css} +135 -114
  4. package/dist/Form-Cy7H3Deq.mjs +1237 -0
  5. package/dist/components/animations.mjs +4 -0
  6. package/dist/components/form.mjs +4 -0
  7. package/dist/export-helper-WDd986Km.mjs +9 -0
  8. package/dist/index.mjs +5 -2
  9. package/package.json +17 -23
  10. package/src/components/Form/Field/FieldInput.vue +20 -2
  11. package/src/components/Form/Field/FieldValues.vue +62 -0
  12. package/src/components/Form/Field/index.ts +1 -0
  13. package/src/components/Form/Range/ColorHueRange.vue +61 -0
  14. package/src/components/Form/Range/index.ts +1 -0
  15. package/tsdown.config.ts +29 -0
  16. package/build.config.ts +0 -11
  17. package/dist/components/Animations/TransitionVertical.vue +0 -95
  18. package/dist/components/Animations/index.d.ts +0 -1
  19. package/dist/components/Animations/index.mjs +0 -1
  20. package/dist/components/Form/Checkbox/Checkbox.vue +0 -26
  21. package/dist/components/Form/Checkbox/index.d.ts +0 -1
  22. package/dist/components/Form/Checkbox/index.mjs +0 -1
  23. package/dist/components/Form/Field/FieldCheckbox.vue +0 -24
  24. package/dist/components/Form/Field/FieldInput.vue +0 -34
  25. package/dist/components/Form/Field/FieldKeyValues.vue +0 -54
  26. package/dist/components/Form/Field/FieldRange.vue +0 -37
  27. package/dist/components/Form/Field/index.d.ts +0 -4
  28. package/dist/components/Form/Field/index.mjs +0 -4
  29. package/dist/components/Form/Input/Input.vue +0 -20
  30. package/dist/components/Form/Input/InputFile.vue +0 -65
  31. package/dist/components/Form/Input/InputKeyValue.vue +0 -17
  32. package/dist/components/Form/Input/index.d.ts +0 -3
  33. package/dist/components/Form/Input/index.mjs +0 -3
  34. package/dist/components/Form/Radio/Radio.vue +0 -103
  35. package/dist/components/Form/Radio/index.d.ts +0 -1
  36. package/dist/components/Form/Radio/index.mjs +0 -1
  37. package/dist/components/Form/Range/index.d.ts +0 -1
  38. package/dist/components/Form/Range/index.mjs +0 -1
  39. package/dist/components/Form/Select/Select.vue +0 -98
  40. package/dist/components/Form/Select/index.d.ts +0 -1
  41. package/dist/components/Form/Select/index.mjs +0 -1
  42. package/dist/components/Form/Textarea/Basic.vue +0 -32
  43. package/dist/components/Form/Textarea/Textarea.vue +0 -17
  44. package/dist/components/Form/Textarea/index.d.ts +0 -2
  45. package/dist/components/Form/Textarea/index.mjs +0 -2
  46. package/dist/components/Form/index.d.ts +0 -7
  47. package/dist/components/Form/index.mjs +0 -7
  48. package/dist/index.d.ts +0 -2
package/README.md ADDED
@@ -0,0 +1,41 @@
1
+ # @proj-airi/ui
2
+
3
+ A stylized UI component library built with [Reka UI](https://reka-ui.com/).
4
+
5
+ To preview the components, refer to the [`stage-ui`](../stage-ui) package for instructions for running the Histoire UI storyboard.
6
+
7
+ ## Usage
8
+
9
+ ```shell
10
+ ni @proj-airi/ui -D # from @antfu/ni, can be installed via `npm i -g @antfu/ni`
11
+ pnpm i @proj-airi/ui -D
12
+ yarn i @proj-airi/ui -D
13
+ npm i @proj-airi/ui -D
14
+ ```
15
+
16
+ ```vue
17
+ <script setup lang="ts">
18
+ import { Button } from '@proj-airi/ui'
19
+ </script>
20
+
21
+ <template>
22
+ <Button>Click me</Button>
23
+ </template>
24
+ ```
25
+
26
+ ## Components
27
+
28
+ * [Animations](src/components/Animations)
29
+ * [TransitionVertical](src/components/Animations/TransitionVertical.vue)
30
+ * [Form](src/components/Form)
31
+ * [Checkbox](src/components/Form/Checkbox)
32
+ * [Field](src/components/Form/Field)
33
+ * [Input](src/components/Form/Input)
34
+ * [Radio](src/components/Form/Radio)
35
+ * [Range](src/components/Form/Range)
36
+ * [Select](src/components/Form/Select)
37
+ * [Textarea](src/components/Form/Textarea)
38
+
39
+ ## License
40
+
41
+ [MIT](../../LICENSE)
@@ -0,0 +1,153 @@
1
+ import { export_helper_default } from "./export-helper-WDd986Km.mjs";
2
+ import { Transition, createBlock, defineComponent, openBlock, renderSlot, withCtx } from "vue";
3
+
4
+ //#region src/components/Animations/TransitionVertical.vue?vue&type=script&setup=true&lang.ts
5
+ const closed = "0px";
6
+ var TransitionVertical_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ __name: "TransitionVertical",
8
+ props: {
9
+ duration: {
10
+ type: Number,
11
+ required: false,
12
+ default: 250
13
+ },
14
+ easingEnter: {
15
+ type: String,
16
+ required: false,
17
+ default: "ease-in-out"
18
+ },
19
+ easingLeave: {
20
+ type: String,
21
+ required: false,
22
+ default: "ease-in-out"
23
+ },
24
+ opacityClosed: {
25
+ type: Number,
26
+ required: false,
27
+ default: 0
28
+ },
29
+ opacityOpened: {
30
+ type: Number,
31
+ required: false,
32
+ default: 1
33
+ }
34
+ },
35
+ setup(__props, { expose: __expose }) {
36
+ __expose();
37
+ const props = __props;
38
+ function getElementStyle(element) {
39
+ return {
40
+ height: element.style.height,
41
+ width: element.style.width,
42
+ position: element.style.position,
43
+ visibility: element.style.visibility,
44
+ overflow: element.style.overflow,
45
+ paddingTop: element.style.paddingTop,
46
+ paddingBottom: element.style.paddingBottom,
47
+ borderTopWidth: element.style.borderTopWidth,
48
+ borderBottomWidth: element.style.borderBottomWidth,
49
+ marginTop: element.style.marginTop,
50
+ marginBottom: element.style.marginBottom
51
+ };
52
+ }
53
+ function prepareElement(element, initialStyle) {
54
+ const { width } = getComputedStyle(element);
55
+ element.style.width = width;
56
+ element.style.position = "absolute";
57
+ element.style.visibility = "hidden";
58
+ element.style.height = "";
59
+ const { height } = getComputedStyle(element);
60
+ element.style.width = initialStyle.width;
61
+ element.style.position = initialStyle.position;
62
+ element.style.visibility = initialStyle.visibility;
63
+ element.style.height = closed;
64
+ element.style.overflow = "hidden";
65
+ return initialStyle.height && initialStyle.height !== closed ? initialStyle.height : height;
66
+ }
67
+ function animateTransition(element, initialStyle, done, keyframes, options) {
68
+ const animation = element.animate(keyframes, options);
69
+ element.style.height = initialStyle.height;
70
+ animation.onfinish = () => {
71
+ element.style.overflow = initialStyle.overflow;
72
+ done();
73
+ };
74
+ }
75
+ function getEnterKeyframes(height, initialStyle) {
76
+ return [{
77
+ height: closed,
78
+ opacity: props.opacityClosed,
79
+ paddingTop: closed,
80
+ paddingBottom: closed,
81
+ borderTopWidth: closed,
82
+ borderBottomWidth: closed,
83
+ marginTop: closed,
84
+ marginBottom: closed
85
+ }, {
86
+ height,
87
+ opacity: props.opacityOpened,
88
+ paddingTop: initialStyle.paddingTop,
89
+ paddingBottom: initialStyle.paddingBottom,
90
+ borderTopWidth: initialStyle.borderTopWidth,
91
+ borderBottomWidth: initialStyle.borderBottomWidth,
92
+ marginTop: initialStyle.marginTop,
93
+ marginBottom: initialStyle.marginBottom
94
+ }];
95
+ }
96
+ function enterTransition(element, done) {
97
+ const HTMLElement = element;
98
+ const initialStyle = getElementStyle(HTMLElement);
99
+ const height = prepareElement(HTMLElement, initialStyle);
100
+ const keyframes = getEnterKeyframes(height, initialStyle);
101
+ const options = {
102
+ duration: props.duration,
103
+ easing: props.easingEnter
104
+ };
105
+ animateTransition(HTMLElement, initialStyle, done, keyframes, options);
106
+ }
107
+ function leaveTransition(element, done) {
108
+ const HTMLElement = element;
109
+ const initialStyle = getElementStyle(HTMLElement);
110
+ const { height } = getComputedStyle(HTMLElement);
111
+ HTMLElement.style.height = height;
112
+ HTMLElement.style.overflow = "hidden";
113
+ const keyframes = getEnterKeyframes(height, initialStyle).reverse();
114
+ const options = {
115
+ duration: props.duration,
116
+ easing: props.easingLeave
117
+ };
118
+ animateTransition(HTMLElement, initialStyle, done, keyframes, options);
119
+ }
120
+ const __returned__ = {
121
+ props,
122
+ closed,
123
+ getElementStyle,
124
+ prepareElement,
125
+ animateTransition,
126
+ getEnterKeyframes,
127
+ enterTransition,
128
+ leaveTransition
129
+ };
130
+ Object.defineProperty(__returned__, "__isScriptSetup", {
131
+ enumerable: false,
132
+ value: true
133
+ });
134
+ return __returned__;
135
+ }
136
+ });
137
+
138
+ //#endregion
139
+ //#region src/components/Animations/TransitionVertical.vue
140
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
141
+ return openBlock(), createBlock(Transition, {
142
+ css: false,
143
+ onEnter: $setup.enterTransition,
144
+ onLeave: $setup.leaveTransition
145
+ }, {
146
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
147
+ _: 3
148
+ });
149
+ }
150
+ var TransitionVertical_default = /* @__PURE__ */ export_helper_default(TransitionVertical_vue_vue_type_script_setup_true_lang_default, [["render", _sfc_render], ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Animations/TransitionVertical.vue"]]);
151
+
152
+ //#endregion
153
+ export { TransitionVertical_default };
@@ -1,59 +1,7 @@
1
- <script setup>
2
- import { computed, onMounted, ref } from "vue";
3
- const props = defineProps({
4
- min: { type: Number, required: false, default: 0 },
5
- max: { type: Number, required: false, default: 100 },
6
- step: { type: Number, required: false, default: 1 },
7
- disabled: { type: Boolean, required: false, default: false },
8
- thumbColor: { type: String, required: false, default: "#9090906e" },
9
- trackColor: { type: String, required: false, default: "gray" },
10
- trackValueColor: { type: String, required: false, default: "red" }
11
- });
12
- const modelValue = defineModel("modelValue", { type: Number, ...{ required: true } });
13
- const scaledMin = computed(() => props.min * 1e4);
14
- const scaledMax = computed(() => props.max * 1e4);
15
- const scaledStep = computed(() => props.step * 1e4);
16
- const sliderRef = ref();
17
- const sliderValue = computed({
18
- get: () => modelValue.value * 1e4,
19
- set: (value) => {
20
- modelValue.value = value / 1e4;
21
- updateTrackColor();
22
- }
23
- });
24
- onMounted(() => {
25
- updateTrackColor();
26
- });
27
- function updateTrackColor() {
28
- if (!sliderRef.value)
29
- return;
30
- sliderRef.value.style.setProperty("--value", sliderRef.value.value);
31
- sliderRef.value.style.setProperty("--min", !sliderRef.value.min ? props.min.toString() : sliderRef.value.min);
32
- sliderRef.value.style.setProperty("--max", !sliderRef.value.max ? props.max.toString() : sliderRef.value.max);
33
- }
34
- function handleInput(e) {
35
- const target = e.target;
36
- target.style.setProperty("--value", target.value);
37
- }
38
- </script>
39
1
 
40
- <template>
41
- <input
42
- ref="sliderRef"
43
- v-model.number="sliderValue"
44
- type="range"
45
- :min="scaledMin"
46
- :max="scaledMax"
47
- :step="scaledStep"
48
- class="slider-progress form_input-range"
49
- @input="handleInput"
50
- >
51
- </template>
52
-
53
- <style scoped>
54
2
  /*generated with Input range slider CSS style generator (version 20211225)
55
3
  https://toughengineer.github.io/demo/slider-styler*/
56
- .form_input-range {
4
+ .form_input-range[data-v-251c0c52] {
57
5
  --height: 2em;
58
6
 
59
7
  min-height: var(--height);
@@ -84,8 +32,7 @@ https://toughengineer.github.io/demo/slider-styler*/
84
32
  --track-value-background-active: rgb(255, 255, 255);
85
33
  --track-value-padding: 2px;
86
34
  }
87
-
88
- .dark .form_input-range {
35
+ .dark .form_input-range[data-v-251c0c52] {
89
36
  --thumb-background: oklch(70% var(--theme-colors-chroma-200) calc(var(--theme-colors-hue) + 0));
90
37
  --thumb-background-hover: oklch(90% var(--theme-colors-chroma-200) calc(var(--theme-colors-hue) + 0));
91
38
  --thumb-background-active: oklch(80% var(--theme-colors-chroma-200) calc(var(--theme-colors-hue) + 0));
@@ -101,18 +48,17 @@ https://toughengineer.github.io/demo/slider-styler*/
101
48
  }
102
49
 
103
50
  /*progress support*/
104
- .form_input-range.slider-progress {
51
+ .form_input-range.slider-progress[data-v-251c0c52] {
105
52
  --range: calc(var(--max) - var(--min));
106
53
  --ratio: calc((var(--value) - var(--min)) / var(--range));
107
54
  --sx: calc(0.5 * 0em + var(--ratio) * (100% - 0em));
108
55
  }
109
-
110
- .form_input-range:focus {
56
+ .form_input-range[data-v-251c0c52]:focus {
111
57
  outline: none;
112
58
  }
113
59
 
114
60
  /*webkit*/
115
- .form_input-range::-webkit-slider-thumb {
61
+ .form_input-range[data-v-251c0c52]::-webkit-slider-thumb {
116
62
  appearance: none;
117
63
  width: var(--thumb-width);
118
64
  height: var(--thumb-height);
@@ -129,8 +75,7 @@ https://toughengineer.github.io/demo/slider-styler*/
129
75
  border-color 0.2s ease-in-out,
130
76
  transform 0.2s ease-in-out;
131
77
  }
132
-
133
- .form_input-range::-webkit-slider-runnable-track {
78
+ .form_input-range[data-v-251c0c52]::-webkit-slider-runnable-track {
134
79
  height: var(--track-height);
135
80
  border: var(--track-border);
136
81
  border-radius: var(--track-border-radius);
@@ -142,39 +87,32 @@ https://toughengineer.github.io/demo/slider-styler*/
142
87
  box-shadow 0.2s ease-in-out,
143
88
  border-color 0.2s ease-in-out;
144
89
  }
145
-
146
- .form_input-range::-webkit-slider-thumb:hover {
90
+ .form_input-range[data-v-251c0c52]::-webkit-slider-thumb:hover {
147
91
  background: var(--thumb-background-hover);
148
92
  }
149
-
150
- .form_input-range:hover::-webkit-slider-runnable-track {
93
+ .form_input-range[data-v-251c0c52]:hover::-webkit-slider-runnable-track {
151
94
  background: var(--track-background-hover);
152
95
  }
153
-
154
- .form_input-range::-webkit-slider-thumb:active {
96
+ .form_input-range[data-v-251c0c52]::-webkit-slider-thumb:active {
155
97
  background: var(--thumb-background-active);
156
98
  }
157
-
158
- .form_input-range:active::-webkit-slider-runnable-track {
99
+ .form_input-range[data-v-251c0c52]:active::-webkit-slider-runnable-track {
159
100
  background: var(--track-background-active);
160
101
  }
161
-
162
- .form_input-range.slider-progress::-webkit-slider-runnable-track {
102
+ .form_input-range.slider-progress[data-v-251c0c52]::-webkit-slider-runnable-track {
163
103
  /* margin-left: var(--track-value-padding); */
164
104
  margin-right: calc(0 - var(--track-value-padding));
165
105
  background:
166
106
  linear-gradient(var(--track-value-background), var(--track-value-background)) 0 / var(--sx) 100% no-repeat,
167
107
  var(--track-background);
168
108
  }
169
-
170
- .form_input-range.slider-progress:hover::-webkit-slider-runnable-track {
109
+ .form_input-range.slider-progress[data-v-251c0c52]:hover::-webkit-slider-runnable-track {
171
110
  background:
172
111
  linear-gradient(var(--track-value-background-hover), var(--track-value-background-hover)) 0 / var(--sx) 100%
173
112
  no-repeat,
174
113
  var(--track-background-hover);
175
114
  }
176
-
177
- .form_input-range.slider-progress:active::-webkit-slider-runnable-track {
115
+ .form_input-range.slider-progress[data-v-251c0c52]:active::-webkit-slider-runnable-track {
178
116
  background:
179
117
  linear-gradient(var(--track-value-background-active), var(--track-value-background-active)) 0 / var(--sx) 100%
180
118
  no-repeat,
@@ -182,7 +120,7 @@ https://toughengineer.github.io/demo/slider-styler*/
182
120
  }
183
121
 
184
122
  /*mozilla*/
185
- .form_input-range::-moz-range-thumb {
123
+ .form_input-range[data-v-251c0c52]::-moz-range-thumb {
186
124
  width: var(--thumb-width);
187
125
  height: var(--thumb-height);
188
126
  border-radius: var(--thumb-border-radius);
@@ -192,8 +130,7 @@ https://toughengineer.github.io/demo/slider-styler*/
192
130
  cursor: col-resize;
193
131
  margin-left: calc(0 - var(--track-value-padding));
194
132
  }
195
-
196
- .form_input-range::-moz-range-track {
133
+ .form_input-range[data-v-251c0c52]::-moz-range-track {
197
134
  height: var(--track-height);
198
135
  border: var(--track-border);
199
136
  border-radius: var(--track-border-radius);
@@ -203,37 +140,30 @@ https://toughengineer.github.io/demo/slider-styler*/
203
140
  /* Trim left and right paddings of track */
204
141
  width: calc(100% - var(--track-value-padding) * 2);
205
142
  }
206
-
207
- .form_input-range::-moz-range-thumb:hover {
143
+ .form_input-range[data-v-251c0c52]::-moz-range-thumb:hover {
208
144
  background: var(--thumb-background-hover);
209
145
  }
210
-
211
- .form_input-range:hover::-moz-range-track {
146
+ .form_input-range[data-v-251c0c52]:hover::-moz-range-track {
212
147
  background: var(--track-background-hover);
213
148
  }
214
-
215
- .form_input-range::-moz-range-thumb:active {
149
+ .form_input-range[data-v-251c0c52]::-moz-range-thumb:active {
216
150
  background: var(--thumb-background-active);
217
151
  }
218
-
219
- .form_input-range:active::-moz-range-track {
152
+ .form_input-range[data-v-251c0c52]:active::-moz-range-track {
220
153
  background: var(--track-background-active);
221
154
  }
222
-
223
- .form_input-range.slider-progress::-moz-range-track {
155
+ .form_input-range.slider-progress[data-v-251c0c52]::-moz-range-track {
224
156
  background:
225
157
  linear-gradient(var(--track-value-background), var(--track-value-background)) 0 / var(--sx) 100% no-repeat,
226
158
  var(--track-background);
227
159
  }
228
-
229
- .form_input-range.slider-progress:hover::-moz-range-track {
160
+ .form_input-range.slider-progress[data-v-251c0c52]:hover::-moz-range-track {
230
161
  background:
231
162
  linear-gradient(var(--track-value-background-hover), var(--track-value-background-hover)) 0 / var(--sx) 100%
232
163
  no-repeat,
233
164
  var(--track-background-hover);
234
165
  }
235
-
236
- .form_input-range.slider-progress:active::-moz-range-track {
166
+ .form_input-range.slider-progress[data-v-251c0c52]:active::-moz-range-track {
237
167
  background:
238
168
  linear-gradient(var(--track-value-background-active), var(--track-value-background-active)) 0 / var(--sx) 100%
239
169
  no-repeat,
@@ -241,17 +171,15 @@ https://toughengineer.github.io/demo/slider-styler*/
241
171
  }
242
172
 
243
173
  /*ms*/
244
- .form_input-range::-ms-fill-upper {
174
+ .form_input-range[data-v-251c0c52]::-ms-fill-upper {
245
175
  background: transparent;
246
176
  border-color: transparent;
247
177
  }
248
-
249
- .form_input-range::-ms-fill-lower {
178
+ .form_input-range[data-v-251c0c52]::-ms-fill-lower {
250
179
  background: transparent;
251
180
  border-color: transparent;
252
181
  }
253
-
254
- .form_input-range::-ms-thumb {
182
+ .form_input-range[data-v-251c0c52]::-ms-thumb {
255
183
  width: var(--thumb-width);
256
184
  height: var(--thumb-height);
257
185
  border-radius: var(--thumb-border-radius);
@@ -265,8 +193,7 @@ https://toughengineer.github.io/demo/slider-styler*/
265
193
  box-sizing: border-box;
266
194
  cursor: col-resize;
267
195
  }
268
-
269
- .form_input-range::-ms-track {
196
+ .form_input-range[data-v-251c0c52]::-ms-track {
270
197
  height: var(--track-height);
271
198
  border-radius: var(--track-border-radius);
272
199
  background: var(--track-background);
@@ -275,24 +202,19 @@ https://toughengineer.github.io/demo/slider-styler*/
275
202
  box-sizing: border-box;
276
203
  cursor: col-resize;
277
204
  }
278
-
279
- .form_input-range::-ms-thumb:hover {
205
+ .form_input-range[data-v-251c0c52]::-ms-thumb:hover {
280
206
  background: var(--thumb-background-hover);
281
207
  }
282
-
283
- .form_input-range:hover::-ms-track {
208
+ .form_input-range[data-v-251c0c52]:hover::-ms-track {
284
209
  background: var(--track-background-hover);
285
210
  }
286
-
287
- .form_input-range::-ms-thumb:active {
211
+ .form_input-range[data-v-251c0c52]::-ms-thumb:active {
288
212
  background: var(--thumb-background-active);
289
213
  }
290
-
291
- .form_input-range:active::-ms-track {
214
+ .form_input-range[data-v-251c0c52]:active::-ms-track {
292
215
  background: var(--track-background-active);
293
216
  }
294
-
295
- .form_input-range.slider-progress::-ms-fill-lower {
217
+ .form_input-range.slider-progress[data-v-251c0c52]::-ms-fill-lower {
296
218
  height: var(--track-height);
297
219
  border-radius: var(--track-border-radius) 0 0 var(--track-border-radius);
298
220
  margin: 0;
@@ -304,12 +226,111 @@ https://toughengineer.github.io/demo/slider-styler*/
304
226
  /** Shift right thumb */
305
227
  margin-right: calc(0 - var(--track-value-padding));
306
228
  }
307
-
308
- .form_input-range.slider-progress:hover::-ms-fill-lower {
229
+ .form_input-range.slider-progress[data-v-251c0c52]:hover::-ms-fill-lower {
309
230
  background: var(--track-value-background-hover);
310
231
  }
311
-
312
- .form_input-range.slider-progress:active::-ms-fill-lower {
232
+ .form_input-range.slider-progress[data-v-251c0c52]:active::-ms-fill-lower {
313
233
  background: var(--track-value-background-active);
314
234
  }
315
- </style>
235
+
236
+
237
+ .form_radio[data-v-fc242fb2] {
238
+ position: relative;
239
+ overflow: hidden;
240
+ }
241
+ .form_radio[data-v-fc242fb2]::before {
242
+ --at-apply: 'bg-gradient-to-r from-primary-500/0 to-primary-500/0 dark:from-primary-400/0 dark:to-primary-400/0';
243
+ content: '';
244
+ position: absolute;
245
+ inset: 0;
246
+ z-index: 0;
247
+ width: 25%;
248
+ height: 100%;
249
+ transition: all 0.35s ease-in-out;
250
+ mask-image: linear-gradient(120deg, white 100%);
251
+ opacity: 0;
252
+ }
253
+ .form_radio[data-v-fc242fb2]:hover::before,
254
+ .form_radio._hover[data-v-fc242fb2]::before {
255
+ --at-apply: 'bg-gradient-to-r from-primary-500/20 via-primary-500/10 to-transparent dark:from-primary-400/20 dark:via-primary-400/10 dark:to-transparent';
256
+ width: 85%;
257
+ opacity: 1;
258
+ }
259
+ .form_radio-active[data-v-fc242fb2]::before {
260
+ --at-apply: 'bg-gradient-to-r from-primary-500/20 via-primary-500/10 to-transparent dark:from-primary-400/20 dark:via-primary-400/10 dark:to-transparent';
261
+ width: 85%;
262
+ opacity: 0.5;
263
+ }
264
+
265
+
266
+ .color-hue-range {
267
+ &[data-v-ab824765] {
268
+ --at-apply: appearance-none h-10 rounded-lg;
269
+ background: linear-gradient(
270
+ to right,
271
+ oklch(85% 0.2 0),
272
+ oklch(85% 0.2 60),
273
+ oklch(85% 0.2 120),
274
+ oklch(85% 0.2 180),
275
+ oklch(85% 0.2 240),
276
+ oklch(85% 0.2 300),
277
+ oklch(85% 0.2 360)
278
+ );
279
+ }
280
+ &[data-v-ab824765]::-webkit-slider-thumb {
281
+ --at-apply: w-1 h-12 appearance-none rounded-md bg-neutral-600 cursor-pointer shadow-lg border-2 border-neutral-500
282
+ hover: bg-neutral-800 transition-colors duration-200;
283
+ }
284
+ .dark &[data-v-ab824765]::-webkit-slider-thumb {
285
+ --at-apply: w-1 h-12 appearance-none rounded-md bg-neutral-100 cursor-pointer shadow-md border-2 border-white
286
+ hover: bg-neutral-300 transition-colors duration-200;
287
+ }
288
+ &[data-v-ab824765]::-moz-range-thumb {
289
+ --at-apply: w-1 h-12 appearance-none rounded-md bg-neutral-600 cursor-pointer shadow-lg border-2 border-neutral-500
290
+ hover: bg-neutral-800 transition-colors duration-200;
291
+ }
292
+ .dark &[data-v-ab824765]::-moz-range-thumb {
293
+ --at-apply: w-1 h-12 appearance-none rounded-md bg-neutral-100 cursor-pointer shadow-md border-2 border-white
294
+ hover: bg-neutral-300 transition-colors duration-200;
295
+ }
296
+ }
297
+
298
+
299
+ .resize-observer[data-v-b329ee4c] {
300
+ position: absolute;
301
+ top: 0;
302
+ left: 0;
303
+ z-index: -1;
304
+ width: 100%;
305
+ height: 100%;
306
+ border: none;
307
+ background-color: transparent;
308
+ pointer-events: none;
309
+ display: block;
310
+ overflow: hidden;
311
+ opacity: 0;
312
+ }
313
+ .resize-observer[data-v-b329ee4c] object {
314
+ display: block;
315
+ position: absolute;
316
+ top: 0;
317
+ left: 0;
318
+ height: 100%;
319
+ width: 100%;
320
+ overflow: hidden;
321
+ pointer-events: none;
322
+ z-index: -1;
323
+ }
324
+ .v-popper__popper {
325
+ z-index: 10000;
326
+ top: 0;
327
+ left: 0;
328
+ outline: none;
329
+ }
330
+ .v-popper__arrow-container {
331
+ display: none;
332
+ }
333
+ .v-popper__inner {
334
+ border: none !important;
335
+ }
336
+