fragment-tools 0.1.13 → 0.1.15

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 (184) hide show
  1. package/.prettierignore +1 -2
  2. package/.prettierrc +23 -7
  3. package/README.md +28 -9
  4. package/bin/index.js +70 -10
  5. package/package.json +14 -6
  6. package/src/cli/build.js +125 -0
  7. package/src/cli/create.js +238 -0
  8. package/src/cli/createConfig.js +82 -0
  9. package/src/cli/createFragmentFile.js +70 -0
  10. package/src/cli/getEntries.js +85 -0
  11. package/src/cli/log.js +36 -24
  12. package/src/cli/plugins/check-dependencies.js +88 -42
  13. package/src/cli/plugins/hot-shader-replacement.js +408 -0
  14. package/src/cli/plugins/hot-sketch-reload.js +21 -25
  15. package/src/cli/plugins/save.js +101 -0
  16. package/src/cli/preview.js +55 -0
  17. package/src/cli/prompts.js +260 -0
  18. package/src/cli/run.js +131 -0
  19. package/src/cli/templates/blank/index.js +33 -0
  20. package/src/cli/templates/blank/meta.json +4 -0
  21. package/src/cli/templates/default/index.js +39 -0
  22. package/src/cli/templates/default/meta.json +5 -0
  23. package/src/cli/templates/fragment-gl/index.js +37 -0
  24. package/src/cli/templates/fragment-gl/meta.json +4 -0
  25. package/src/cli/templates/p5/index.js +32 -0
  26. package/src/cli/templates/p5/meta.json +5 -0
  27. package/src/cli/templates/p5-webgl/fragment.fs +14 -0
  28. package/src/cli/templates/p5-webgl/index.js +67 -0
  29. package/src/cli/templates/p5-webgl/meta.json +5 -0
  30. package/src/cli/templates/three-fragment/fragment.fs +10 -0
  31. package/src/cli/templates/three-fragment/index.js +95 -0
  32. package/src/cli/templates/three-fragment/meta.json +5 -0
  33. package/src/cli/templates/three-orthographic/index.js +55 -0
  34. package/src/cli/templates/three-orthographic/meta.json +5 -0
  35. package/src/cli/templates/three-perspective/index.js +52 -0
  36. package/src/cli/templates/three-perspective/meta.json +5 -0
  37. package/src/cli/utils.js +70 -0
  38. package/src/cli/ws.js +87 -78
  39. package/src/client/app/App.svelte +3 -3
  40. package/src/client/app/client.js +55 -39
  41. package/src/client/app/components/IconCross.svelte +18 -18
  42. package/src/client/app/components/Init.svelte +40 -8
  43. package/src/client/app/components/KeyBinding.svelte +22 -22
  44. package/src/client/app/helpers.js +42 -0
  45. package/src/client/app/hooks.js +20 -0
  46. package/src/client/app/inputs/Input.js +9 -9
  47. package/src/client/app/inputs/Keyboard.js +13 -15
  48. package/src/client/app/inputs/MIDI.js +14 -15
  49. package/src/client/app/inputs/Mouse.js +1 -1
  50. package/src/client/app/inputs/Webcam.js +89 -88
  51. package/src/client/app/lib/canvas-recorder/CanvasRecorder.js +41 -21
  52. package/src/client/app/lib/canvas-recorder/FrameRecorder.js +7 -6
  53. package/src/client/app/lib/canvas-recorder/H264Recorder.js +45 -0
  54. package/src/client/app/lib/canvas-recorder/MP4Recorder.js +7 -9
  55. package/src/client/app/lib/canvas-recorder/WebMRecorder.js +3 -4
  56. package/src/client/app/lib/canvas-recorder/mp4.js +1649 -15
  57. package/src/client/app/lib/canvas-recorder/utils.js +33 -17
  58. package/src/client/app/lib/gl/Geometry.js +11 -8
  59. package/src/client/app/lib/gl/Program.js +38 -19
  60. package/src/client/app/lib/gl/Renderer.js +163 -156
  61. package/src/client/app/lib/gl/Texture.js +113 -85
  62. package/src/client/app/lib/gl/index.js +12 -12
  63. package/src/client/app/lib/gl/utils.js +1 -3
  64. package/src/client/app/lib/helpers/frameDebounce.js +30 -30
  65. package/src/client/app/lib/loader/index.js +10 -10
  66. package/src/client/app/lib/loader/loadImage.js +15 -15
  67. package/src/client/app/lib/loader/loadScript.js +1 -1
  68. package/src/client/app/lib/paper-sizes.js +75 -76
  69. package/src/client/app/lib/presets.js +25 -5
  70. package/src/client/app/lib/tempo/Analyser.js +18 -17
  71. package/src/client/app/lib/tempo/Range.js +15 -12
  72. package/src/client/app/lib/tempo/index.js +34 -27
  73. package/src/client/app/modules/AudioAnalyser/Range.svelte +69 -72
  74. package/src/client/app/modules/AudioAnalyser/Spectrum.svelte +20 -19
  75. package/src/client/app/modules/AudioAnalyser.svelte +52 -35
  76. package/src/client/app/modules/Console/ConsoleLine.svelte +193 -172
  77. package/src/client/app/modules/Console.svelte +76 -74
  78. package/src/client/app/modules/Exports.svelte +62 -43
  79. package/src/client/app/modules/MidiPanel.svelte +100 -101
  80. package/src/client/app/modules/Monitor.svelte +57 -57
  81. package/src/client/app/modules/Params.svelte +128 -103
  82. package/src/client/app/renderers/2DRenderer.js +3 -3
  83. package/src/client/app/renderers/FragmentRenderer.js +30 -23
  84. package/src/client/app/renderers/P5GLRenderer.js +144 -0
  85. package/src/client/app/renderers/P5Renderer.js +10 -7
  86. package/src/client/app/renderers/THREERenderer.js +136 -94
  87. package/src/client/app/stores/audioAnalysis.js +3 -4
  88. package/src/client/app/stores/console.js +9 -10
  89. package/src/client/app/stores/errors.js +1 -1
  90. package/src/client/app/stores/exports.js +36 -20
  91. package/src/client/app/stores/index.js +2 -2
  92. package/src/client/app/stores/layout.js +143 -138
  93. package/src/client/app/stores/multisampling.js +4 -4
  94. package/src/client/app/stores/props.js +76 -13
  95. package/src/client/app/stores/renderers.js +26 -15
  96. package/src/client/app/stores/rendering.js +108 -89
  97. package/src/client/app/stores/sketches.js +7 -9
  98. package/src/client/app/stores/time.js +18 -18
  99. package/src/client/app/stores/utils.js +95 -38
  100. package/src/client/app/transitions/fade.js +3 -3
  101. package/src/client/app/transitions/index.js +6 -7
  102. package/src/client/app/transitions/splitX.js +2 -2
  103. package/src/client/app/transitions/splitY.js +2 -2
  104. package/src/client/app/triggers/Keyboard.js +88 -79
  105. package/src/client/app/triggers/MIDI.js +110 -84
  106. package/src/client/app/triggers/Mouse.js +73 -65
  107. package/src/client/app/triggers/Trigger.js +59 -58
  108. package/src/client/app/triggers/index.js +7 -7
  109. package/src/client/app/triggers/shared.js +5 -5
  110. package/src/client/app/ui/Build.svelte +70 -71
  111. package/src/client/app/ui/ErrorOverlay.svelte +118 -104
  112. package/src/client/app/ui/Field.svelte +393 -258
  113. package/src/client/app/ui/FieldGroup.svelte +106 -94
  114. package/src/client/app/ui/FieldSection.svelte +127 -116
  115. package/src/client/app/ui/FieldSpace.svelte +29 -30
  116. package/src/client/app/ui/FieldTrigger.svelte +256 -244
  117. package/src/client/app/ui/FieldTriggers.svelte +46 -46
  118. package/src/client/app/ui/FloatingParams.svelte +29 -30
  119. package/src/client/app/ui/Layout.svelte +31 -32
  120. package/src/client/app/ui/LayoutColumn.svelte +4 -4
  121. package/src/client/app/ui/LayoutComponent.svelte +239 -225
  122. package/src/client/app/ui/LayoutResizer.svelte +195 -176
  123. package/src/client/app/ui/LayoutRoot.svelte +6 -6
  124. package/src/client/app/ui/LayoutRow.svelte +4 -4
  125. package/src/client/app/ui/LayoutToolbar.svelte +191 -194
  126. package/src/client/app/ui/Module.svelte +134 -135
  127. package/src/client/app/ui/ModuleHeaderAction.svelte +81 -78
  128. package/src/client/app/ui/ModuleHeaderButton.svelte +12 -12
  129. package/src/client/app/ui/ModuleHeaderSelect.svelte +47 -37
  130. package/src/client/app/ui/ModuleRenderer.svelte +26 -27
  131. package/src/client/app/ui/OutputRenderer.svelte +112 -105
  132. package/src/client/app/ui/ParamsMultisampling.svelte +96 -95
  133. package/src/client/app/ui/ParamsOutput.svelte +130 -113
  134. package/src/client/app/ui/Preview.svelte +7 -8
  135. package/src/client/app/ui/SelectChevrons.svelte +27 -15
  136. package/src/client/app/ui/SketchRenderer.svelte +780 -667
  137. package/src/client/app/ui/SketchSelect.svelte +50 -44
  138. package/src/client/app/ui/fields/ButtonInput.svelte +61 -48
  139. package/src/client/app/ui/fields/CheckboxInput.svelte +67 -61
  140. package/src/client/app/ui/fields/ColorInput.svelte +294 -238
  141. package/src/client/app/ui/fields/FieldInputRow.svelte +8 -8
  142. package/src/client/app/ui/fields/ImageInput.svelte +123 -121
  143. package/src/client/app/ui/fields/Input.svelte +100 -111
  144. package/src/client/app/ui/fields/IntervalInput.svelte +268 -0
  145. package/src/client/app/ui/fields/ListInput.svelte +96 -96
  146. package/src/client/app/ui/fields/NumberInput.svelte +120 -116
  147. package/src/client/app/ui/fields/ProgressInput.svelte +99 -73
  148. package/src/client/app/ui/fields/Select.svelte +137 -124
  149. package/src/client/app/ui/fields/TextInput.svelte +10 -11
  150. package/src/client/app/ui/fields/VectorInput.svelte +86 -82
  151. package/src/client/app/utils/canvas.utils.js +189 -208
  152. package/src/client/app/utils/color.utils.js +138 -101
  153. package/src/client/app/utils/fields.utils.js +131 -0
  154. package/src/client/app/utils/file.utils.js +209 -37
  155. package/src/client/app/utils/glsl.utils.js +2 -2
  156. package/src/client/app/utils/glslErrors.js +49 -31
  157. package/src/client/app/utils/index.js +32 -29
  158. package/src/client/app/utils/math.utils.js +14 -10
  159. package/src/client/index.html +16 -16
  160. package/src/client/main.js +4 -4
  161. package/src/client/public/css/global.css +26 -16
  162. package/src/cli/db.js +0 -17
  163. package/src/cli/index.js +0 -198
  164. package/src/cli/plugins/db.js +0 -12
  165. package/src/cli/plugins/hot-shader-reload.js +0 -86
  166. package/src/cli/plugins/screenshot.js +0 -46
  167. package/src/cli/server.js +0 -153
  168. package/src/cli/templates/2d.js +0 -15
  169. package/src/cli/templates/blank.js +0 -13
  170. package/src/cli/templates/fragment.js +0 -18
  171. package/src/cli/templates/index.js +0 -27
  172. package/src/cli/templates/p5.js +0 -13
  173. package/src/cli/templates/three-fragment.js +0 -53
  174. package/src/cli/templates/three-orthographic.js +0 -23
  175. package/src/cli/templates/three-perspective.js +0 -20
  176. package/src/client/app/lib/canvas-recorder/FFMPEGRecorder.js +0 -56
  177. package/src/client/app/utils/props.utils.js +0 -51
  178. package/src/client/public/fonts/Inter-Bold.woff2 +0 -0
  179. package/src/client/public/fonts/Inter-Italic.woff2 +0 -0
  180. package/src/client/public/fonts/Inter-Regular.woff2 +0 -0
  181. package/src/client/public/fonts/Inter-SemiBold.woff2 +0 -0
  182. package/src/client/public/js/ffmpeg.min.js +0 -2
  183. package/src/client/public/js/ffmpeg.min.js.map +0 -1
  184. /package/src/cli/templates/{fragment.fs → fragment-gl/fragment.fs} +0 -0
@@ -1,85 +1,88 @@
1
1
  <script>
2
- import { onMount } from "svelte";
3
- import { loadImage } from "../../lib/loader/loadImage";
4
- import ButtonInput from "./ButtonInput.svelte";
5
- import FieldInputRow from "./FieldInputRow.svelte";
6
- import TextInput from "./TextInput.svelte";
7
-
8
- export let value;
9
- export let context = null;
10
- export let key = "";
11
-
12
- let img, input, name;
13
- $: url = typeof value === HTMLImageElement ? value.src : value;
14
- $: displayUrl = name ? name : url.replace(`/@fs${__CWD__}`, '');
15
- $: {
16
- ;(async () => {
17
- await loadImage(url, { img });
18
- })();
19
- }
20
-
21
- function handleClick() {
22
- input.click();
23
- }
24
-
25
- let reader = new FileReader();
26
- let dragover = false;
27
-
28
- function handleUpload(event) {
29
- event.preventDefault();
30
- event.stopPropagation();
31
-
32
- let file;
33
-
34
- if (event.dataTransfer) {
35
- file = event.dataTransfer.files[0];
36
- } else if(event.target) {
37
- file = event.target.files[0];
38
- }
39
-
40
- name = file.name;
41
-
42
- reader.onload = async (e) => {
43
- reader.onload = null;
44
-
45
- value = e.target.result;
46
- };
47
- reader.readAsDataURL(file);
48
-
49
- dragover = false;
50
- }
51
-
52
- function handleDragover(event) {
53
- event.preventDefault();
54
- event.stopPropagation();
55
-
56
- dragover = true;
57
- }
58
-
59
- function handleDragleave(event) {
60
- event.preventDefault();
61
- event.stopPropagation();
62
-
63
- dragover = false;
64
- }
65
-
2
+ import { onMount } from 'svelte';
3
+ import { loadImage } from '../../lib/loader/loadImage';
4
+ import ButtonInput from './ButtonInput.svelte';
5
+ import FieldInputRow from './FieldInputRow.svelte';
6
+ import TextInput from './TextInput.svelte';
7
+
8
+ export let value;
9
+ export let context = null;
10
+ export let key = '';
11
+ export let disabled = false;
12
+
13
+ let img, input, name;
14
+ $: url = typeof value === HTMLImageElement ? value.src : value;
15
+ $: displayUrl = name ? name : url.replace(`/@fs${__CWD__}`, '');
16
+ $: {
17
+ (async () => {
18
+ await loadImage(url, { img });
19
+ })();
20
+ }
21
+
22
+ function handleClick() {
23
+ input.click();
24
+ }
25
+
26
+ let reader = new FileReader();
27
+ let dragover = false;
28
+
29
+ function handleUpload(event) {
30
+ event.preventDefault();
31
+ event.stopPropagation();
32
+
33
+ let file;
34
+
35
+ if (event.dataTransfer) {
36
+ file = event.dataTransfer.files[0];
37
+ } else if (event.target) {
38
+ file = event.target.files[0];
39
+ }
40
+
41
+ name = file.name;
42
+
43
+ reader.onload = async (e) => {
44
+ reader.onload = null;
45
+
46
+ value = e.target.result;
47
+ };
48
+ reader.readAsDataURL(file);
49
+
50
+ dragover = false;
51
+ }
52
+
53
+ function handleDragover(event) {
54
+ event.preventDefault();
55
+ event.stopPropagation();
56
+
57
+ dragover = true;
58
+ }
59
+
60
+ function handleDragleave(event) {
61
+ event.preventDefault();
62
+ event.stopPropagation();
63
+
64
+ dragover = false;
65
+ }
66
66
  </script>
67
67
 
68
68
  <div
69
69
  class="img-container"
70
- class:dragover={dragover}
70
+ class:dragover
71
71
  on:dragover={handleDragover}
72
72
  on:dragleave={handleDragleave}
73
73
  on:drop={handleUpload}
74
74
  >
75
75
  <FieldInputRow --grid-template-columns="1fr 0.5fr">
76
76
  <div class="row">
77
- <div
78
- class="preview"
79
- on:click={handleClick}
80
- >
81
- <img class="img" src="" alt="" bind:this={img}/>
82
- <input class="input" type="file" bind:this={input} on:change={handleUpload} />
77
+ <div class="preview" on:click={handleClick}>
78
+ <img class="img" src="" alt="" bind:this={img} />
79
+ <input
80
+ class="input"
81
+ type="file"
82
+ bind:this={input}
83
+ on:change={handleUpload}
84
+ disabled={disabled ? 'disabled' : null}
85
+ />
83
86
  </div>
84
87
  <TextInput disabled value={displayUrl} />
85
88
  </div>
@@ -89,59 +92,58 @@ function handleDragleave(event) {
89
92
  on:dragover={handleDragover}
90
93
  on:dragleave={handleDragleave}
91
94
  on:drop={handleUpload}
95
+ {disabled}
92
96
  />
93
97
  </FieldInputRow>
94
-
95
98
  </div>
96
99
 
97
100
  <style>
98
- .img-container {
99
- width: 100%;
100
- }
101
-
102
- .preview {
103
- width: calc(var(--height-input) * 1);
104
- height: calc(var(--height-input) * 1);
105
- ;
106
- display: grid;
107
- place-items: center;
108
-
109
- border-radius: var(--border-radius-input);
110
- background-color: var(--color-background-input);
111
- box-shadow: inset 0 0 0 1px var(--color-border-input);
112
-
113
- cursor: copy;
114
- overflow: hidden;
115
- }
116
-
117
- .row {
118
- display: grid;
119
- grid-template-columns: 20px auto;
120
- gap: var(--column-gap);
121
- place-items: center;
122
- }
123
-
124
- .preview:hover {
125
- color: var(--color-text);
126
-
127
- box-shadow: inset 0 0 0 1px var(--box-shadow-color, var(--color-active));
128
- }
129
-
130
- .preview:active, .img-container.dragover .preview {
131
- box-shadow: 0 0 0 2px var(--box-shadow-color, var(--color-active));
132
- }
133
-
134
- .img-container.dragover {
135
- cursor: copy;
136
- }
137
-
138
- .img {
139
- max-width: calc(100% - var(--padding) * 0.5);
140
- max-height: calc(100% - var(--padding) * 0.5);
141
- }
142
-
143
- .input {
144
- display: none;
145
- }
146
-
101
+ .img-container {
102
+ width: 100%;
103
+ }
104
+
105
+ .preview {
106
+ width: calc(var(--height-input) * 1);
107
+ height: calc(var(--height-input) * 1);
108
+ display: grid;
109
+ place-items: center;
110
+
111
+ border-radius: var(--border-radius-input);
112
+ background-color: var(--color-background-input);
113
+ box-shadow: inset 0 0 0 1px var(--color-border-input);
114
+
115
+ cursor: copy;
116
+ overflow: hidden;
117
+ }
118
+
119
+ .row {
120
+ display: grid;
121
+ grid-template-columns: 20px auto;
122
+ gap: var(--column-gap);
123
+ place-items: center;
124
+ }
125
+
126
+ .preview:hover {
127
+ color: var(--color-text);
128
+
129
+ box-shadow: inset 0 0 0 1px var(--box-shadow-color, var(--color-active));
130
+ }
131
+
132
+ .preview:active,
133
+ .img-container.dragover .preview {
134
+ box-shadow: 0 0 0 2px var(--box-shadow-color, var(--color-active));
135
+ }
136
+
137
+ .img-container.dragover {
138
+ cursor: copy;
139
+ }
140
+
141
+ .img {
142
+ max-width: calc(100% - var(--padding) * 0.5);
143
+ max-height: calc(100% - var(--padding) * 0.5);
144
+ }
145
+
146
+ .input {
147
+ display: none;
148
+ }
147
149
  </style>
@@ -1,126 +1,115 @@
1
1
  <script>
2
- import { createEventDispatcher } from "svelte";
2
+ import { createEventDispatcher } from 'svelte';
3
3
 
4
+ export let label = null;
5
+ export let value;
6
+ export let disabled = false;
7
+ export let context = null;
8
+ export let key = '';
4
9
 
5
- export let label = null;
6
- export let value;
7
- export let disabled = false;
8
- export let context = null;
9
- export let key = "";
10
+ let node;
10
11
 
11
- let node;
12
+ const dispatch = createEventDispatcher();
12
13
 
13
- const dispatch = createEventDispatcher();
14
+ function onKeyPress(event) {
15
+ if (event.key === 'Enter') {
16
+ node.blur();
17
+ }
18
+ }
14
19
 
15
- function onKeyPress(event) {
16
- if (event.key === 'Enter') {
17
- node.blur();
18
- }
19
- }
20
-
21
- function handleInput(event) {
22
- dispatch('input', event.currentTarget.value);
23
- }
24
-
25
- function handleChange(event) {
26
- dispatch('change', event.currentTarget.value);
27
- }
20
+ function handleInput(event) {
21
+ dispatch('input', event.currentTarget.value);
22
+ }
28
23
 
24
+ function handleChange(event) {
25
+ dispatch('change', event.currentTarget.value);
26
+ }
29
27
  </script>
30
28
 
31
- <div class="input-container" class:disabled={disabled}>
32
- {#if label }
33
- <span class="label">{label}</span>
34
- {/if}
35
- <input
36
- class="input"
37
- bind:this={node}
38
- bind:value={value}
39
- on:change={handleChange}
40
- on:input={handleInput}
41
- on:keypress={onKeyPress}
42
- on:keydown
43
- on:focus
44
- on:blur
45
- {disabled}
46
- autocomplete="off"
47
- spellcheck="false"
48
- />
29
+ <div class="input-container" class:disabled>
30
+ {#if label}
31
+ <span class="label">{label}</span>
32
+ {/if}
33
+ <input
34
+ class="input"
35
+ bind:this={node}
36
+ bind:value
37
+ on:change={handleChange}
38
+ on:input={handleInput}
39
+ on:keypress={onKeyPress}
40
+ on:keydown
41
+ on:focus
42
+ on:blur
43
+ disabled={disabled ? 'disabled' : null}
44
+ autocomplete="off"
45
+ spellcheck="false"
46
+ />
49
47
  </div>
50
48
 
51
49
  <style>
52
- .input-container {
53
- position: relative;
54
-
55
- display: flex;
56
- height: var(--height-input);
57
- margin: 2px 0;
58
-
59
- border-radius: var(--border-radius-input);
60
- background-color: var(--color-background-input);
61
- box-shadow: inset 0 0 0 1px var(--color-border-input);
62
- }
63
-
64
- .input-container:not(.disabled):hover {
65
- box-shadow: inset 0 0 0 1px var(--color-active);
66
- }
67
-
68
- .input-container:not(.disabled):focus-within {
69
- box-shadow: 0 0 0 2px var(--color-active);
70
- }
71
-
72
- .label {
73
- position: absolute;
74
- top: 0;
75
- left: 0;
76
- bottom: 0;
77
-
78
- display: flex;
79
- align-items: center;
80
- padding: var(--padding);
81
-
82
- color: var(--color-text);
83
- font-size: var(--font-size-input);
84
- font-weight: 600;
85
- pointer-events: none;
86
- opacity: 0.35;
87
- }
88
-
89
- .input-container.disabled .label {
90
- opacity: 0.15;
91
- }
92
-
93
- .input {
94
- width: 100%;
95
- height: 100%;
96
- padding: 0 var(--padding);
97
-
98
- color: rgba(255, 255, 255, 0.5);
99
- font-size: var(--font-size-input);
100
- text-align: right;
101
-
102
- background: transparent;
103
- outline: 0;
104
- }
105
-
106
- .input:disabled {
107
- opacity: 0.4;
108
- }
109
-
110
- :global(.field.disabled) .input {
111
- opacity: 0.4;
112
- }
113
-
114
- :global(.field__section:hover .container .input) {
115
- color: var(--color-text);
116
- }
117
-
118
- input:focus {
119
- color: var(--color-text);
120
- }
121
-
122
- /* .input:focus {
50
+ .input-container {
51
+ position: relative;
52
+
53
+ display: flex;
54
+ height: var(--height-input);
55
+ margin: 2px 0;
56
+
57
+ border-radius: var(--border-radius-input);
58
+ background-color: var(--color-background-input);
59
+ box-shadow: inset 0 0 0 1px var(--color-border-input);
60
+ }
61
+
62
+ .input-container:not(.disabled):hover {
63
+ box-shadow: inset 0 0 0 1px var(--color-active);
64
+ }
65
+
66
+ .input-container:not(.disabled):focus-within {
67
+ box-shadow: 0 0 0 2px var(--color-active);
68
+ }
69
+
70
+ .label {
71
+ position: absolute;
72
+ top: 0;
73
+ left: 0;
74
+ bottom: 0;
75
+
76
+ display: flex;
77
+ align-items: center;
78
+ padding: var(--padding);
79
+
80
+ color: var(--color-text);
81
+ font-size: var(--font-size-input);
82
+ font-weight: 600;
83
+ pointer-events: none;
84
+ opacity: 0.35;
85
+ }
86
+
87
+ .input-container.disabled .label {
88
+ opacity: 0.1;
89
+ }
90
+
91
+ .input {
92
+ width: 100%;
93
+ height: 100%;
94
+ padding: 0 var(--padding);
95
+
96
+ color: var(--color-text-input);
97
+ font-size: var(--font-size-input);
98
+ text-align: right;
99
+
100
+ background: transparent;
101
+ outline: 0;
102
+ }
103
+
104
+ .input:disabled {
105
+ color: var(--color-text-input-disabled);
106
+ }
107
+
108
+ .input:focus {
109
+ color: var(--color-text);
110
+ }
111
+
112
+ /* .input:focus {
123
113
  border: var(--borderWidth) solid var(--color-active);
124
114
  } */
125
-
126
115
  </style>