sveltekit-ui 1.1.17 → 1.1.19

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 (200) hide show
  1. package/dist/Components/Alert/index.svelte +88 -0
  2. package/dist/Components/Alert/index.svelte.js +101 -0
  3. package/dist/Components/ArrowToggle/index.svelte +62 -0
  4. package/dist/Components/Attachment/index.svelte +77 -0
  5. package/dist/Components/Attachment/index.svelte.js +119 -0
  6. package/dist/Components/Audio/index.svelte +193 -0
  7. package/dist/Components/Audio/index.svelte.js +463 -0
  8. package/dist/Components/AudioEditor/index.svelte +252 -0
  9. package/dist/Components/AudioEditor/index.svelte.js +977 -0
  10. package/dist/Components/AudioEditor/samples/alloy-voice-sample.mp3 +0 -0
  11. package/dist/Components/AudioEditor/samples/echo-voice-sample.mp3 +0 -0
  12. package/dist/Components/AudioEditor/samples/fable-voice-sample.mp3 +0 -0
  13. package/dist/Components/AudioEditor/samples/nova-voice-sample.mp3 +0 -0
  14. package/dist/Components/AudioEditor/samples/onyx-voice-sample.mp3 +0 -0
  15. package/dist/Components/AudioEditor/samples/shimmer-voice-sample.mp3 +0 -0
  16. package/dist/Components/AuthCodeInput/index.svelte +85 -0
  17. package/dist/Components/AuthCodeInput/index.svelte.js +95 -0
  18. package/dist/Components/Breadcrumbs/index.svelte +27 -0
  19. package/dist/Components/Breadcrumbs/index.svelte.js +88 -0
  20. package/dist/Components/Button/index.svelte +721 -0
  21. package/dist/Components/Button/index.svelte.js +375 -0
  22. package/dist/Components/Chart/Klines/index.svelte +87 -0
  23. package/dist/Components/Chart/index.svelte +226 -0
  24. package/dist/Components/Chart/index.svelte.js +1099 -0
  25. package/dist/Components/ChartInput/DisplayNav/Klines/index.svelte +150 -0
  26. package/dist/Components/ChartInput/DisplayNav/Lines/index.svelte +45 -0
  27. package/dist/Components/ChartInput/DisplayNav/index.svelte +297 -0
  28. package/dist/Components/ChartInput/EditPanel/index.svelte +155 -0
  29. package/dist/Components/ChartInput/index.svelte +21 -0
  30. package/dist/Components/ChartInput/index.svelte.js +671 -0
  31. package/dist/Components/Checkbox/index.svelte +411 -0
  32. package/dist/Components/Checkbox/index.svelte.js +178 -0
  33. package/dist/Components/Code/index.svelte +23 -0
  34. package/dist/Components/Code/index.svelte.js +33 -0
  35. package/dist/Components/Color/index.svelte +51 -0
  36. package/dist/Components/Color/index.svelte.js +31 -0
  37. package/dist/Components/ColorInput/ChromaPicker/index.svelte +50 -0
  38. package/dist/Components/ColorInput/ColorPalette/index.svelte +62 -0
  39. package/dist/Components/ColorInput/OpacityPicker/index.svelte +68 -0
  40. package/dist/Components/ColorInput/ShowcasePicker/index.svelte +136 -0
  41. package/dist/Components/ColorInput/index.svelte +70 -0
  42. package/dist/Components/ColorInput/index.svelte.js +386 -0
  43. package/dist/Components/ConditionsInput/index.svelte +46 -0
  44. package/dist/Components/ConditionsInput/index.svelte.js +201 -0
  45. package/dist/Components/Confetti/index.svelte +98 -0
  46. package/dist/Components/Confetti/index.svelte.js +94 -0
  47. package/dist/Components/Content/index.svelte +500 -0
  48. package/dist/Components/Content/index.svelte.js +910 -0
  49. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte +31 -0
  50. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte.js +258 -0
  51. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte +31 -0
  52. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte.js +258 -0
  53. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte +58 -0
  54. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte.js +206 -0
  55. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte +28 -0
  56. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte.js +224 -0
  57. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte +44 -0
  58. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte.js +272 -0
  59. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte +41 -0
  60. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte.js +202 -0
  61. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte +19 -0
  62. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte.js +117 -0
  63. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte +60 -0
  64. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte.js +542 -0
  65. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte +47 -0
  66. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte.js +185 -0
  67. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte +35 -0
  68. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte.js +222 -0
  69. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte +20 -0
  70. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte.js +84 -0
  71. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte +25 -0
  72. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte.js +91 -0
  73. package/dist/Components/ContentInput/AttributesInput/index.svelte +352 -0
  74. package/dist/Components/ContentInput/AttributesInput/index.svelte.js +1436 -0
  75. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte +64 -0
  76. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte.js +97 -0
  77. package/dist/Components/ContentInput/ContentPanelBuilder/ElementList/index.svelte +184 -0
  78. package/dist/Components/ContentInput/ContentPanelBuilder/index.svelte +41 -0
  79. package/dist/Components/ContentInput/index.svelte +78 -0
  80. package/dist/Components/ContentInput/index.svelte.js +1197 -0
  81. package/dist/Components/CronInput/index.svelte +78 -0
  82. package/dist/Components/CronInput/index.svelte.js +198 -0
  83. package/dist/Components/DataTypeInput/index.svelte +174 -0
  84. package/dist/Components/DataTypeInput/index.svelte.js +565 -0
  85. package/dist/Components/Dropdown/index.svelte +116 -0
  86. package/dist/Components/Dropdown/index.svelte.js +403 -0
  87. package/dist/Components/EmailAddress/index.svelte +22 -0
  88. package/dist/Components/EmailAddress/index.svelte.js +45 -0
  89. package/dist/Components/ErrorX/index.svelte +58 -0
  90. package/dist/Components/Eye/index.svelte +57 -0
  91. package/dist/Components/FileInput/index.svelte +146 -0
  92. package/dist/Components/FileInput/index.svelte.js +225 -0
  93. package/dist/Components/Hamburger/index.svelte +99 -0
  94. package/dist/Components/HorizScrollBox/index.svelte +145 -0
  95. package/dist/Components/Icon/index.svelte +412 -0
  96. package/dist/Components/Icon/index.svelte.js +116 -0
  97. package/dist/Components/IconInput/index.svelte +77 -0
  98. package/dist/Components/IconInput/index.svelte.js +259 -0
  99. package/dist/Components/Image/index.svelte +126 -0
  100. package/dist/Components/Image/index.svelte.js +116 -0
  101. package/dist/Components/ImageEditor/Image/CropBox/index.svelte +165 -0
  102. package/dist/Components/ImageEditor/Image/index.svelte +104 -0
  103. package/dist/Components/ImageEditor/Panels/AI/index.svelte +44 -0
  104. package/dist/Components/ImageEditor/Panels/Crop/index.svelte +96 -0
  105. package/dist/Components/ImageEditor/Panels/File/QualityPicker/index.svelte +124 -0
  106. package/dist/Components/ImageEditor/Panels/File/index.svelte +74 -0
  107. package/dist/Components/ImageEditor/Panels/Filters/index.svelte +46 -0
  108. package/dist/Components/ImageEditor/Panels/Resize/index.svelte +58 -0
  109. package/dist/Components/ImageEditor/index.svelte +93 -0
  110. package/dist/Components/ImageEditor/index.svelte.js +1961 -0
  111. package/dist/Components/ImageSlider/index.svelte +124 -0
  112. package/dist/Components/ImageSlider/index.svelte.js +99 -0
  113. package/dist/Components/InfoBox/index.svelte +89 -0
  114. package/dist/Components/Json/Nested/index.svelte +157 -0
  115. package/dist/Components/Json/index.svelte +60 -0
  116. package/dist/Components/Json/index.svelte.js +594 -0
  117. package/dist/Components/LabeledItem/index.svelte +102 -0
  118. package/dist/Components/Layout/NavBar/FullNav/index.svelte +52 -0
  119. package/dist/Components/Layout/NavBar/NavGuts/index.svelte +87 -0
  120. package/dist/Components/Layout/NavBar/index.svelte +72 -0
  121. package/dist/Components/Layout/index.svelte +149 -0
  122. package/dist/Components/Layout/index.svelte.js +360 -0
  123. package/dist/Components/Link/index.svelte +47 -0
  124. package/dist/Components/Link/index.svelte.js +136 -0
  125. package/dist/Components/LoadingSuccessDiv/index.svelte +51 -0
  126. package/dist/Components/LoadingWheel/index.svelte +38 -0
  127. package/dist/Components/Location/index.svelte +79 -0
  128. package/dist/Components/Location/index.svelte.js +288 -0
  129. package/dist/Components/LocationInput/index.svelte +197 -0
  130. package/dist/Components/LocationInput/index.svelte.js +965 -0
  131. package/dist/Components/Number/index.svelte +47 -0
  132. package/dist/Components/Number/index.svelte.js +151 -0
  133. package/dist/Components/PhoneCountryCode/index.svelte +7 -0
  134. package/dist/Components/PhoneCountryCode/index.svelte.js +260 -0
  135. package/dist/Components/PhoneNumber/index.svelte +22 -0
  136. package/dist/Components/PhoneNumber/index.svelte.js +41 -0
  137. package/dist/Components/Popover/index.svelte +396 -0
  138. package/dist/Components/Popover/index.svelte.js +319 -0
  139. package/dist/Components/Qr/index.svelte +85 -0
  140. package/dist/Components/Qr/index.svelte.js +301 -0
  141. package/dist/Components/QrInput/index.svelte +47 -0
  142. package/dist/Components/QrInput/index.svelte.js +218 -0
  143. package/dist/Components/Slider/index.svelte +239 -0
  144. package/dist/Components/Slider/index.svelte.js +469 -0
  145. package/dist/Components/Spacer/index.svelte +41 -0
  146. package/dist/Components/StoragePicker/DisplayFile/index.svelte +15 -0
  147. package/dist/Components/StoragePicker/index.svelte +187 -0
  148. package/dist/Components/StoragePicker/index.svelte.js +592 -0
  149. package/dist/Components/SuccessCheck/index.svelte +56 -0
  150. package/dist/Components/TableAdvanced/ColumnInput/index.svelte +117 -0
  151. package/dist/Components/TableAdvanced/ColumnInput/index.svelte.js +456 -0
  152. package/dist/Components/TableAdvanced/FilterInput/index.svelte +54 -0
  153. package/dist/Components/TableAdvanced/FilterInput/index.svelte.js +247 -0
  154. package/dist/Components/TableAdvanced/Pagination/index.svelte +43 -0
  155. package/dist/Components/TableAdvanced/Pagination/index.svelte.js +97 -0
  156. package/dist/Components/TableAdvanced/SortByInput/index.svelte +72 -0
  157. package/dist/Components/TableAdvanced/SortByInput/index.svelte.js +176 -0
  158. package/dist/Components/TableAdvanced/index.svelte +275 -0
  159. package/dist/Components/TableAdvanced/index.svelte.js +1565 -0
  160. package/dist/Components/Tag/index.svelte +45 -0
  161. package/dist/Components/Tag/index.svelte.js +76 -0
  162. package/dist/Components/TextArrayInput/index.svelte +108 -0
  163. package/dist/Components/TextArrayInput/index.svelte.js +239 -0
  164. package/dist/Components/TextInput/PasswordTooltip/index.svelte +89 -0
  165. package/dist/Components/TextInput/index.svelte +223 -0
  166. package/dist/Components/TextInput/index.svelte.js +447 -0
  167. package/dist/Components/Time/index.svelte +7 -0
  168. package/dist/Components/Time/index.svelte.js +38 -0
  169. package/dist/Components/TimeInput/NumberToggler/index.svelte +34 -0
  170. package/dist/Components/TimeInput/NumberToggler/index.svelte.js +79 -0
  171. package/dist/Components/TimeInput/index.js +702 -0
  172. package/dist/Components/TimeInput/index.svelte +211 -0
  173. package/dist/Components/TimeInput/index.svelte.js +638 -0
  174. package/dist/Components/Tooltip/index.svelte +143 -0
  175. package/dist/Components/TransparentBackground/index.svelte +153 -0
  176. package/dist/Components/TypingDots/index.svelte +84 -0
  177. package/dist/Components/VariablePathInput/index.svelte +63 -0
  178. package/dist/Components/VariablePathInput/index.svelte.js +273 -0
  179. package/dist/Components/VideoTBD/index.svelte +100 -0
  180. package/dist/Components/XFollow/index.svelte +42 -0
  181. package/dist/Components/XPost/index.svelte +52 -0
  182. package/dist/Components/XPost/index.svelte.js +64 -0
  183. package/dist/Components/YoutubeChannelButton/index.svelte +82 -0
  184. package/dist/Components/YoutubeVideo/index.svelte +73 -0
  185. package/dist/Components/YoutubeVideo/index.svelte.js +54 -0
  186. package/dist/actions/draggable.js +49 -0
  187. package/dist/actions/index.js +24 -0
  188. package/dist/actions/no_spaces.js +33 -0
  189. package/dist/actions/numbers_only.js +26 -0
  190. package/dist/actions/scroll_y.js +28 -0
  191. package/dist/actions/stop_scroll_propagation_y.js +42 -0
  192. package/dist/actions/swipe_handler.js +295 -0
  193. package/dist/client/astc_formatting/index.js +1128 -0
  194. package/dist/client/docs/index.js +7622 -0
  195. package/dist/client/index.js +735 -0
  196. package/dist/client/types/index.js +2812 -0
  197. package/dist/index.js +180 -0
  198. package/dist/style.css +682 -0
  199. package/package.json +2 -2
  200. package/src/lib/Components/Chart/index.svelte.js +11 -2
@@ -0,0 +1,104 @@
1
+ <script>
2
+ import FileInput from "../../FileInput/index.svelte"
3
+ import ImageSlider from "../../ImageSlider/index.svelte"
4
+ import CropBox from "./CropBox/index.svelte"
5
+ import { onMount } from "svelte"
6
+
7
+ let { manager } = $props()
8
+
9
+ onMount(() => {
10
+ manager?.set_base_image(manager?.selected_image_source)
11
+ })
12
+ </script>
13
+
14
+ <div
15
+ class="workspace_container"
16
+ class:workspace_bg={manager?.image_sources && manager?.image_sources.length > 0}
17
+ style="padding: {!manager?.image_sources ||
18
+ (Array.isArray(manager?.image_sources) && manager?.image_sources.length < 1)
19
+ ? 0
20
+ : '1rem'};"
21
+ ondrop={(e) => manager?.drop_handler(e)}
22
+ ondragover={(e) => e.preventDefault()}
23
+ role="application"
24
+ >
25
+ <div
26
+ class="edit_image_container"
27
+ id="{manager?.id}_edit_image_container_el"
28
+ class:display_none={!manager?.image_sources || manager?.image_sources.length < 1}
29
+ >
30
+ <div
31
+ class="canvas_container"
32
+ id="{manager?.id}_canvas_container_el"
33
+ class:hide={manager?.screen_tab == "ai" && manager?.is_show_img_slider && manager?.image_sources.length > 1}
34
+ >
35
+ <canvas id="{manager?.id}_canvas_el"></canvas>
36
+ {#if manager?.image_sources && manager?.image_sources.length > 0 && manager?.screen_tab == "crop" && manager?.crop_left > -1 && manager?.crop_top > -1 && manager?.crop_width > -1 && manager?.crop_height > -1}
37
+ <CropBox {manager} />
38
+ {/if}
39
+ </div>
40
+ {#if manager?.screen_tab == "ai" && manager?.is_show_img_slider && manager?.image_sources.length > 1}
41
+ <div style="height: 100%; max-height: min(50vh,40rem); width: 100%; z-index: 5;">
42
+ <ImageSlider
43
+ src1={manager?.image_sources?.[manager?.image_source_index]}
44
+ src2={manager?.image_sources?.[manager?.image_source_index + 1]}
45
+ />
46
+ </div>
47
+ {/if}
48
+ </div>
49
+ </div>
50
+
51
+ {#if !manager?.image_sources || (Array.isArray(manager?.image_sources) && manager?.image_sources.length < 1)}
52
+ <div class="upload_container">
53
+ <FileInput manager={manager?.file_input_manager} />
54
+ </div>
55
+ {/if}
56
+
57
+ <style>
58
+ .workspace_container {
59
+ border-radius: 1rem;
60
+ }
61
+ .workspace_bg {
62
+ box-shadow: 0 0 1px var(--g9-t);
63
+ background-image: linear-gradient(to right, var(--g18-t) 1px, transparent 1px),
64
+ linear-gradient(to bottom, var(--g18-t) 1px, transparent 1px);
65
+ background-size: 10px 10px;
66
+ background-position: -1px -1px;
67
+ }
68
+ .edit_image_container {
69
+ min-height: 30vh;
70
+ height: 36rem;
71
+ max-height: 65vh;
72
+ padding: 0;
73
+ line-height: 0;
74
+ display: grid;
75
+ place-items: center;
76
+ }
77
+ .canvas_container {
78
+ position: relative;
79
+ }
80
+ canvas {
81
+ object-fit: contain;
82
+ max-height: clamp(30vh, 36rem, 65vh);
83
+ max-width: 100%;
84
+ min-height: 100%;
85
+ min-width: 100%;
86
+ margin: auto;
87
+ }
88
+ .display_none {
89
+ display: none;
90
+ }
91
+ .hide {
92
+ width: 0;
93
+ height: 0;
94
+ }
95
+ .upload_container {
96
+ min-height: 30vh;
97
+ height: 38rem;
98
+ max-height: 65vh;
99
+ background-color: var(--g21-t);
100
+ border: 1px solid var(--g18-t);
101
+ border-radius: 3rem;
102
+ padding: 1rem;
103
+ }
104
+ </style>
@@ -0,0 +1,44 @@
1
+ <script>
2
+ import Button from "../../../Button/index.svelte"
3
+ import InfoBox from "../../../InfoBox/index.svelte"
4
+ import Dropdown from "../../../Dropdown/index.svelte"
5
+ import TextInput from "../../../TextInput/index.svelte"
6
+ import FileInput from "../../../FileInput/index.svelte"
7
+ import Checkbox from "../../../Checkbox/index.svelte"
8
+
9
+ let { manager } = $props()
10
+ </script>
11
+
12
+ <div>
13
+ <Dropdown manager={manager?.ai_tab_dropdown_manager} />
14
+ {#if manager?.ai_tab_dropdown_manager?.val == "image_generator"}
15
+ <div style="padding-top: .5rem;">
16
+ <TextInput manager={manager?.ai_generate_image_from_text_text_input_manager} />
17
+ <div style="display: flex; gap: 1rem;">
18
+ <FileInput manager={manager?.ai_generate_image_images_prompt_file_input_manager} />
19
+ {#if manager?.selected_image_source}
20
+ <Checkbox manager={manager?.ai_generate_image_include_workspace_in_images_prompt_checkbox_manager} />
21
+ {/if}
22
+ </div>
23
+ <Button manager={manager?.ai_generate_image_from_text_button_manager} />
24
+ </div>
25
+ {:else if manager?.ai_tab_dropdown_manager?.val == "remove_background"}
26
+ <Button manager={manager?.ai_remove_bg_button_manager} />
27
+ {:else if manager?.ai_tab_dropdown_manager?.val == "restore_resolution"}
28
+ <Button manager={manager?.ai_restore_resolution_button_manager} />
29
+ {:else if manager?.ai_tab_dropdown_manager?.val == "restore_face"}
30
+ <Button manager={manager?.ai_restore_face_button_manager} />
31
+ {/if}
32
+ <div>
33
+ <p class="helper_text">Expect around 15 seconds to 2 minutes of loading.</p>
34
+ </div>
35
+ </div>
36
+ <InfoBox message={manager?.ai_error_message} mt={1} />
37
+
38
+ <style>
39
+ .helper_text {
40
+ margin: 0.5rem 1rem;
41
+ font-size: clamp(1.6rem, 3vw, 1.8rem);
42
+ color: var(--g8-t);
43
+ }
44
+ </style>
@@ -0,0 +1,96 @@
1
+ <script>
2
+ import Button from "../../../Button/index.svelte"
3
+ import HorizScrollBox from "../../../HorizScrollBox/index.svelte"
4
+ import TextInput from "../../../TextInput/index.svelte"
5
+
6
+ let { manager } = $props()
7
+ </script>
8
+
9
+ <div class="container">
10
+ <div class="current_container">
11
+ <p class="cur_spacer">Width: {manager?.current_image_width ?? "-"}px</p>
12
+ <p class="cur_spacer">Height: {manager?.current_image_height ?? "-"}px</p>
13
+ <p class="cur_spacer">Crop Width: {manager?.image_pixels_crop_width ?? "-"}px</p>
14
+ <p class="cur_spacer">Crop Height: {manager?.image_pixels_crop_height ?? "-"}px</p>
15
+ <p>Aspect Ratio: {manager?.current_image_ar ?? "-"}</p>
16
+ </div>
17
+ <div class="horiz_scroll_container">
18
+ <div class="header_container">
19
+ <h3 class="header" style="color: {manager?.is_disabled ? 'var(--g9-t)' : 'var(--g3-t)'}">Aspect Ratio</h3>
20
+ </div>
21
+ <HorizScrollBox>
22
+ <Button manager={manager?.crop_free_button_manager} />
23
+ <Button manager={manager?.crop_one_to_one_button_manager} />
24
+ <Button manager={manager?.crop_four_to_three_button_manager} />
25
+ <Button manager={manager?.crop_three_to_two_button_manager} />
26
+ <Button manager={manager?.crop_sixteen_to_nine_button_manager} />
27
+ <Button manager={manager?.crop_three_to_four_button_manager} />
28
+ <Button manager={manager?.crop_two_to_three_button_manager} />
29
+ <Button manager={manager?.crop_nine_to_sixteen_button_manager} />
30
+ </HorizScrollBox>
31
+ </div>
32
+ <div class="custom_container">
33
+ <div style="width: 18rem;">
34
+ <TextInput manager={manager?.crop_width_ratio_text_input_manager} />
35
+ </div>
36
+ <div style="width: 18rem;">
37
+ <TextInput manager={manager?.crop_height_ratio_text_input_manager} />
38
+ </div>
39
+ <p class="proposed_ar" style="color: {manager?.is_disabled ? 'var(--g8-t)' : 'var(--primary-t)'};">
40
+ {manager?.crop_aspect_ratio ??
41
+ (manager?.image_pixels_crop_width && manager?.image_pixels_crop_height
42
+ ? parseFloat((manager?.image_pixels_crop_width / manager?.image_pixels_crop_height).toPrecision(3))
43
+ : null) ??
44
+ "-"} AR
45
+ </p>
46
+ <Button manager={manager?.crop_image_button_manager} />
47
+ </div>
48
+ </div>
49
+
50
+ <style>
51
+ .container {
52
+ padding: 0 1rem;
53
+ max-width: 100%;
54
+ }
55
+ .horiz_scroll_container {
56
+ display: flex;
57
+ flex: 1;
58
+ align-items: center;
59
+ }
60
+ .header_container {
61
+ display: flex;
62
+ align-items: center;
63
+ padding-right: 1rem;
64
+ margin: 0.5rem 0;
65
+ border-right: 2px solid var(--shadow3-t);
66
+ }
67
+ .header {
68
+ font-size: 1.6rem;
69
+ }
70
+ .current_container {
71
+ display: flex;
72
+ flex-wrap: wrap;
73
+ }
74
+ .current_container p {
75
+ color: var(--g10-t);
76
+ }
77
+ .cur_spacer {
78
+ border-right: 2px solid var(--shadow3-t);
79
+ padding-right: 1rem;
80
+ margin-right: 1rem;
81
+ }
82
+ .custom_container {
83
+ display: flex;
84
+ flex-wrap: wrap;
85
+ gap: 1rem;
86
+ }
87
+ .proposed_ar {
88
+ width: 10rem;
89
+ height: 3.6rem;
90
+ text-align: center;
91
+ border: 1px solid var(--shadow3-t);
92
+ border-radius: 1rem;
93
+ padding: 0.8rem 0.3rem;
94
+ margin-top: 0.5rem;
95
+ }
96
+ </style>
@@ -0,0 +1,124 @@
1
+ <script>
2
+ import Slider from "../../../../Slider/index.svelte"
3
+ import LoadingWheel from "../../../../LoadingWheel/index.svelte"
4
+
5
+ let { manager } = $props()
6
+ </script>
7
+
8
+ {#if manager?.mime_type_input == "image/png"}
9
+ <div class="png_container">
10
+ <p class="png_cur_num" style="color: {manager?.is_disabled ? 'var(--g9-t)' : 'var(--primary-t)'}">
11
+ {manager?.file_size_kb ?? "-"} KB
12
+ </p>
13
+ <h4 class="png_sub">File Size</h4>
14
+ <p style="color: var(--g8-t);">(PNGs do not allow custom quality)</p>
15
+ </div>
16
+ {:else}
17
+ <div class="container">
18
+ <div class="chart_container">
19
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 38" height="100%" width="100%">
20
+ <defs>
21
+ <linearGradient id="gradient" x1="0%" y1="0%" x2="100%" y2="0%">
22
+ <stop
23
+ offset="0%"
24
+ stop-color={manager?.is_disabled
25
+ ? "var(--g9-t)"
26
+ : "oklch(from var(--primary-t) calc(l - 3 * var(--l-shift-t)) c h)"}
27
+ />
28
+ <stop offset="100%" stop-color={manager?.is_disabled ? "var(--g9-t)" : "var(--primary-t)"} />
29
+ </linearGradient>
30
+ </defs>
31
+ <path
32
+ d={manager?.shown_file_size_data?.chart_path}
33
+ stroke-width="3"
34
+ stroke-linecap="round"
35
+ stroke-linejoin="round"
36
+ fill="none"
37
+ stroke="url(#gradient)"
38
+ />
39
+ </svg>
40
+ {#if manager?.shown_file_size_data?.max_file_size_kb}
41
+ <p class="max_num" style="color: {manager?.is_disabled ? 'var(--g11-t)' : 'var(--g8-t)'};">
42
+ {manager?.shown_file_size_data?.max_file_size_kb} KB
43
+ </p>
44
+ {/if}
45
+ {#if manager?.shown_file_size_data?.min_file_size_kb}
46
+ <p class="min_num" style="color: {manager?.is_disabled ? 'var(--g11-t)' : 'var(--g8-t)'};">
47
+ {manager?.shown_file_size_data?.min_file_size_kb} KB
48
+ </p>
49
+ {/if}
50
+ <p class="cur_num" style="color: {manager?.is_disabled ? 'var(--g10-t)' : 'var(--primary-t)'};">
51
+ {manager?.file_size_kb ?? "-"} KB
52
+ </p>
53
+ {#if manager?.selected_image_source && (!manager?.shown_file_size_data || manager?.shown_file_size_data?.is_loading)}
54
+ <div class="loading_container">
55
+ <div>
56
+ <LoadingWheel />
57
+ </div>
58
+ </div>
59
+ {/if}
60
+ </div>
61
+ <Slider manager={manager?.file_quality_slider_manager} />
62
+ <p class="subtitle" style="color: {manager?.is_disabled ? 'var(--g10-t)' : 'var(--g7-t)'};">
63
+ Quality/File Size Selector
64
+ </p>
65
+ </div>
66
+ {/if}
67
+
68
+ <style>
69
+ .container {
70
+ max-width: 28rem;
71
+ margin: auto;
72
+ }
73
+ .chart_container {
74
+ position: relative;
75
+ }
76
+ .max_num {
77
+ position: absolute;
78
+ top: 1rem;
79
+ right: 2.5rem;
80
+ color: var(--g5-t);
81
+ }
82
+ .min_num {
83
+ position: absolute;
84
+ bottom: 2.3rem;
85
+ left: 1rem;
86
+ color: var(--g5-t);
87
+ }
88
+ .cur_num {
89
+ position: absolute;
90
+ top: 2.5rem;
91
+ left: 6rem;
92
+ font-size: 3rem;
93
+ font-weight: 700;
94
+ color: var(--primary-t);
95
+ }
96
+ .png_container {
97
+ padding: 1rem;
98
+ width: 28rem;
99
+ text-align: center;
100
+ display: grid;
101
+ place-items: center;
102
+ }
103
+ .png_cur_num {
104
+ margin-bottom: 1rem;
105
+ font-size: 3rem;
106
+ font-weight: 700;
107
+ }
108
+ .png_sub {
109
+ color: var(--g6-t);
110
+ margin: 0;
111
+ }
112
+ .loading_container {
113
+ position: absolute;
114
+ top: 2rem;
115
+ left: 9rem;
116
+ }
117
+ .loading_container div {
118
+ aspect-ratio: 1;
119
+ width: 8rem;
120
+ }
121
+ .subtitle {
122
+ text-align: center;
123
+ }
124
+ </style>
@@ -0,0 +1,74 @@
1
+ <script>
2
+ import Button from "../../../Button/index.svelte"
3
+ import TextInput from "../../../TextInput/index.svelte"
4
+ import InfoBox from "../../../InfoBox/index.svelte"
5
+ import QualityPicker from "./QualityPicker/index.svelte"
6
+
7
+ let { manager } = $props()
8
+ </script>
9
+
10
+ <div class="info_container">
11
+ <p class="info_spacer">Width: {manager?.current_image_width ?? "-"}px</p>
12
+ <p class="info_spacer">Height: {manager?.current_image_height ?? "-"}px</p>
13
+ <p class="info_spacer">Size: {manager?.file_size_kb ?? "-"}KB</p>
14
+ <p>{manager?.file_name_derived_with_extension}</p>
15
+ </div>
16
+ <div class="container">
17
+ <div class="box_one">
18
+ <div>
19
+ <TextInput manager={manager?.file_name_text_input_manager} />
20
+ </div>
21
+ <div class="mime_type_buttons_container">
22
+ <Button manager={manager?.mime_type_webp_button_manager} />
23
+ <Button manager={manager?.mime_type_jpeg_button_manager} />
24
+ <Button manager={manager?.mime_type_png_button_manager} />
25
+ </div>
26
+ <div class="buttons_container">
27
+ <Button manager={manager?.download_image_button_manager} />
28
+ <Button manager={manager?.set_file_changes_button_manager} />
29
+ </div>
30
+ <InfoBox message={manager?.error_message} />
31
+ </div>
32
+ <div>
33
+ <QualityPicker {manager} />
34
+ </div>
35
+ </div>
36
+
37
+ <style>
38
+ .info_container {
39
+ display: flex;
40
+ flex-wrap: wrap;
41
+ }
42
+ .info_container p {
43
+ color: var(--g10-t);
44
+ }
45
+ .info_spacer {
46
+ border-right: 2px solid var(--shadow3-t);
47
+ padding-right: 1rem;
48
+ margin-right: 1rem;
49
+ max-height: 2.5rem;
50
+ }
51
+ .container {
52
+ max-width: 100%;
53
+ display: flex;
54
+ flex-wrap: wrap;
55
+ gap: 1rem;
56
+ }
57
+ .box_one {
58
+ display: flex;
59
+ flex-direction: column;
60
+ flex: 1;
61
+ min-width: 30rem;
62
+ }
63
+ .mime_type_buttons_container {
64
+ display: grid;
65
+ grid-template-columns: repeat(3, 1fr);
66
+ gap: 1rem;
67
+ }
68
+ .buttons_container {
69
+ display: grid;
70
+ grid-template-columns: repeat(2, 1fr);
71
+ gap: 1rem;
72
+ margin-top: 1rem;
73
+ }
74
+ </style>
@@ -0,0 +1,46 @@
1
+ <script>
2
+ import Button from "../../../Button/index.svelte"
3
+ import Slider from "../../../Slider/index.svelte"
4
+
5
+ let { manager } = $props()
6
+ </script>
7
+
8
+ <div class="filters_container">
9
+ <div class="filter_box">
10
+ <Slider manager={manager?.filter_brightness_slider_manager} />
11
+ <Slider manager={manager?.filter_contrast_slider_manager} />
12
+ <Slider manager={manager?.filter_saturation_slider_manager} />
13
+ <Slider manager={manager?.filter_grayscale_slider_manager} />
14
+ </div>
15
+ <div class="filter_box">
16
+ <Slider manager={manager?.filter_hue_slider_manager} />
17
+ <Slider manager={manager?.filter_red_slider_manager} />
18
+ <Slider manager={manager?.filter_green_slider_manager} />
19
+ <Slider manager={manager?.filter_blue_slider_manager} />
20
+ </div>
21
+ <div class="filter_box">
22
+ <Slider manager={manager?.filter_blur_slider_manager} />
23
+ <Slider manager={manager?.filter_opacity_slider_manager} />
24
+ <p style="margin: 1rem 0;">Some filters are not supported by some browsers</p>
25
+ <div class="buttons_box">
26
+ <Button manager={manager?.filters_set_default_button_manager} />
27
+ <Button manager={manager?.filters_apply_filters_button_manager} />
28
+ </div>
29
+ </div>
30
+ </div>
31
+
32
+ <style>
33
+ .filters_container {
34
+ width: 100%;
35
+ display: grid;
36
+ gap: 1rem;
37
+ grid-template-columns: repeat(auto-fit, minmax(clamp(20%, 28rem, 100%), 1fr));
38
+ max-height: 40rem;
39
+ overflow-y: scroll;
40
+ }
41
+ .buttons_box {
42
+ display: grid;
43
+ grid-template-columns: 1fr 1fr;
44
+ gap: 1rem;
45
+ }
46
+ </style>
@@ -0,0 +1,58 @@
1
+ <script>
2
+ import Button from "../../../Button/index.svelte"
3
+ import TextInput from "../../../TextInput/index.svelte"
4
+ import Dropdown from "../../../Dropdown/index.svelte"
5
+
6
+ let { manager } = $props()
7
+ </script>
8
+
9
+ <div class="container">
10
+ <div class="current_container">
11
+ <p class="cur_spacer">Width: {manager?.current_image_width ?? "-"}px</p>
12
+ <p class="cur_spacer">Height: {manager?.current_image_height ?? "-"}px</p>
13
+ <p>Aspect Ratio: {manager?.current_image_ar ?? "-"}</p>
14
+ </div>
15
+ <div class="horiz_select_container">
16
+ <Dropdown manager={manager?.resize_width_dropdown_manager} />
17
+ <Dropdown manager={manager?.resize_height_dropdown_manager} />
18
+ <div class="custom_container">
19
+ <div style="width: 18rem">
20
+ <TextInput manager={manager?.resize_width_text_input_manager} />
21
+ </div>
22
+ <div style="width: 18rem">
23
+ <TextInput manager={manager?.resize_height_text_input_manager} />
24
+ </div>
25
+ <Button manager={manager?.resize_aspect_ratio_lock_button_manager} />
26
+ <Button manager={manager?.resize_image_button_manager} />
27
+ </div>
28
+ </div>
29
+ </div>
30
+
31
+ <style>
32
+ .container {
33
+ padding: 0 1rem;
34
+ max-width: 100%;
35
+ }
36
+ .current_container {
37
+ display: flex;
38
+ flex-wrap: wrap;
39
+ }
40
+ .current_container p {
41
+ color: var(--g10-t);
42
+ }
43
+ .cur_spacer {
44
+ border-right: 2px solid var(--shadow3-t);
45
+ padding-right: 1rem;
46
+ margin-right: 1rem;
47
+ }
48
+ .horiz_select_container {
49
+ max-width: 100%;
50
+ }
51
+ .custom_container {
52
+ display: flex;
53
+ flex-wrap: wrap;
54
+ flex: 0;
55
+ align-items: center;
56
+ gap: 1rem;
57
+ }
58
+ </style>
@@ -0,0 +1,93 @@
1
+ <script>
2
+ import Button from "../Button/index.svelte"
3
+ import Popover from "../Popover/index.svelte"
4
+ import HorizScrollBox from "../HorizScrollBox/index.svelte"
5
+ import Image from "./Image/index.svelte"
6
+ import FiltersPanel from "./Panels/Filters/index.svelte"
7
+ import CropPanel from "./Panels/Crop/index.svelte"
8
+ import ResizePanel from "./Panels/Resize/index.svelte"
9
+ import AIPanel from "./Panels/AI/index.svelte"
10
+ import FilePanel from "./Panels/File/index.svelte"
11
+ import { onDestroy } from "svelte"
12
+ import { browser } from "$app/environment"
13
+
14
+ let { manager } = $props()
15
+
16
+ onDestroy(() => {
17
+ if (browser && typeof manager?.on_destroy == "function") {
18
+ manager?.on_destroy()
19
+ }
20
+ })
21
+ </script>
22
+
23
+ {#snippet image_input()}
24
+ <div style="margin: 0;">
25
+ <div class="main_buttons_container">
26
+ <HorizScrollBox>
27
+ <Button manager={manager?.screen_tab_filters_button_manager} />
28
+ <Button manager={manager?.screen_tab_crop_button_manager} />
29
+ <Button manager={manager?.screen_tab_resize_button_manager} />
30
+ <Button manager={manager?.screen_tab_ai_button_manager} />
31
+ <Button manager={manager?.screen_tab_file_button_manager} />
32
+ </HorizScrollBox>
33
+ <div>
34
+ <HorizScrollBox>
35
+ <Button manager={manager?.undo_button_manager} />
36
+ <Button manager={manager?.redo_button_manager} />
37
+ <Button manager={manager?.clear_button_manager} />
38
+ {#if manager?.is_popover}
39
+ <Button manager={manager?.finish_button_manager} />
40
+ {/if}
41
+ </HorizScrollBox>
42
+ </div>
43
+ </div>
44
+ <div class="panel_container">
45
+ {#if manager?.screen_tab == "filters"}
46
+ <FiltersPanel {manager} />
47
+ {:else if manager?.screen_tab == "crop"}
48
+ <CropPanel {manager} />
49
+ {:else if manager?.screen_tab == "resize"}
50
+ <ResizePanel {manager} />
51
+ {:else if manager?.screen_tab == "ai"}
52
+ <AIPanel {manager} />
53
+ {:else if manager?.screen_tab == "file"}
54
+ <FilePanel {manager} />
55
+ {:else}
56
+ <p>Tab not found</p>
57
+ {/if}
58
+ </div>
59
+ <Image {manager} />
60
+ </div>
61
+ {/snippet}
62
+
63
+ {#if !manager?.is_popover}
64
+ {@render image_input()}
65
+ {:else}
66
+ <Popover manager={manager.popover_manager}>
67
+ {#snippet content()}
68
+ <div>
69
+ {@render image_input()}
70
+ </div>
71
+ {/snippet}
72
+ </Popover>
73
+ {/if}
74
+
75
+ <style>
76
+ .panel_container {
77
+ min-height: 22rem;
78
+ margin-top: 0.5rem;
79
+ margin-bottom: 0.5rem;
80
+ }
81
+ .main_buttons_container {
82
+ display: flex;
83
+ flex-direction: column;
84
+ gap: 0.5rem;
85
+ }
86
+ @media (min-width: 900px) {
87
+ .main_buttons_container {
88
+ flex: 1;
89
+ flex-direction: row;
90
+ justify-content: space-between;
91
+ }
92
+ }
93
+ </style>