fullstacked 0.12.1-1330 → 0.12.1-1355

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 (277) hide show
  1. package/fullstacked_modules/{ai/index.js → @fullstacked/ai-agent/ai-agent.js} +4868 -8601
  2. package/fullstacked_modules/@fullstacked/ai-agent/index.ts +5 -3
  3. package/fullstacked_modules/@fullstacked/ai-agent/package.json +26 -23
  4. package/fullstacked_modules/@fullstacked/ai-agent/src/providers/anthropic.ts +11 -7
  5. package/fullstacked_modules/@fullstacked/ai-agent/src/providers/deepseek.ts +11 -7
  6. package/fullstacked_modules/@fullstacked/ai-agent/src/providers/google.ts +11 -7
  7. package/fullstacked_modules/@fullstacked/ai-agent/src/providers/index.ts +10 -12
  8. package/fullstacked_modules/@fullstacked/ai-agent/src/providers/interface.ts +10 -6
  9. package/fullstacked_modules/@fullstacked/ai-agent/src/providers/mistral.ts +11 -7
  10. package/fullstacked_modules/@fullstacked/ai-agent/src/providers/ollama.ts +19 -14
  11. package/fullstacked_modules/@fullstacked/ai-agent/src/providers/openai.ts +11 -7
  12. package/fullstacked_modules/@fullstacked/ai-agent/src/providers/xai.ts +11 -7
  13. package/fullstacked_modules/@fullstacked/ui/index.js +664 -0
  14. package/fullstacked_modules/auto_update/index.ts +66 -0
  15. package/fullstacked_modules/bridge/index.ts +2 -57
  16. package/fullstacked_modules/{esbuild/esbuild.ts → build/build.ts} +31 -28
  17. package/fullstacked_modules/build/index.ts +3 -0
  18. package/fullstacked_modules/build/sass.ts +55 -0
  19. package/fullstacked_modules/components/snackbar.css +54 -1
  20. package/fullstacked_modules/components/snackbar.scss +52 -0
  21. package/fullstacked_modules/sass/index.js +6445 -6464
  22. package/fullstacked_modules/zod/index.cjs +33 -0
  23. package/fullstacked_modules/zod/index.js +4 -0
  24. package/fullstacked_modules/zod/v3/ZodError.cjs +138 -0
  25. package/fullstacked_modules/zod/v3/ZodError.js +133 -0
  26. package/fullstacked_modules/zod/v3/errors.cjs +17 -0
  27. package/fullstacked_modules/zod/v3/errors.js +9 -0
  28. package/fullstacked_modules/zod/v3/external.cjs +22 -0
  29. package/fullstacked_modules/zod/v3/external.js +6 -0
  30. package/fullstacked_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  31. package/fullstacked_modules/zod/v3/helpers/enumUtil.js +1 -0
  32. package/fullstacked_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  33. package/fullstacked_modules/zod/v3/helpers/errorUtil.js +6 -0
  34. package/fullstacked_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  35. package/fullstacked_modules/zod/v3/helpers/parseUtil.js +109 -0
  36. package/fullstacked_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  37. package/fullstacked_modules/zod/v3/helpers/partialUtil.js +1 -0
  38. package/fullstacked_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  39. package/fullstacked_modules/zod/v3/helpers/typeAliases.js +1 -0
  40. package/fullstacked_modules/zod/v3/helpers/util.cjs +137 -0
  41. package/fullstacked_modules/zod/v3/helpers/util.js +133 -0
  42. package/fullstacked_modules/zod/v3/index.cjs +33 -0
  43. package/fullstacked_modules/zod/v3/index.js +4 -0
  44. package/fullstacked_modules/zod/v3/locales/en.cjs +111 -0
  45. package/fullstacked_modules/zod/v3/locales/en.js +109 -0
  46. package/fullstacked_modules/zod/v3/standard-schema.cjs +2 -0
  47. package/fullstacked_modules/zod/v3/standard-schema.js +1 -0
  48. package/fullstacked_modules/zod/v3/types.cjs +3775 -0
  49. package/fullstacked_modules/zod/v3/types.js +3693 -0
  50. package/fullstacked_modules/zod/v4/classic/checks.cjs +32 -0
  51. package/fullstacked_modules/zod/v4/classic/checks.js +1 -0
  52. package/fullstacked_modules/zod/v4/classic/coerce.cjs +47 -0
  53. package/fullstacked_modules/zod/v4/classic/coerce.js +17 -0
  54. package/fullstacked_modules/zod/v4/classic/compat.cjs +57 -0
  55. package/fullstacked_modules/zod/v4/classic/compat.js +27 -0
  56. package/fullstacked_modules/zod/v4/classic/errors.cjs +67 -0
  57. package/fullstacked_modules/zod/v4/classic/errors.js +41 -0
  58. package/fullstacked_modules/zod/v4/classic/external.cjs +70 -0
  59. package/fullstacked_modules/zod/v4/classic/external.js +18 -0
  60. package/fullstacked_modules/zod/v4/classic/index.cjs +33 -0
  61. package/fullstacked_modules/zod/v4/classic/index.js +4 -0
  62. package/fullstacked_modules/zod/v4/classic/iso.cjs +60 -0
  63. package/fullstacked_modules/zod/v4/classic/iso.js +30 -0
  64. package/fullstacked_modules/zod/v4/classic/parse.cjs +32 -0
  65. package/fullstacked_modules/zod/v4/classic/parse.js +6 -0
  66. package/fullstacked_modules/zod/v4/classic/schemas.cjs +1109 -0
  67. package/fullstacked_modules/zod/v4/classic/schemas.js +1006 -0
  68. package/fullstacked_modules/zod/v4/core/api.cjs +1039 -0
  69. package/fullstacked_modules/zod/v4/core/api.js +906 -0
  70. package/fullstacked_modules/zod/v4/core/checks.cjs +591 -0
  71. package/fullstacked_modules/zod/v4/core/checks.js +565 -0
  72. package/fullstacked_modules/zod/v4/core/core.cjs +67 -0
  73. package/fullstacked_modules/zod/v4/core/core.js +61 -0
  74. package/fullstacked_modules/zod/v4/core/doc.cjs +39 -0
  75. package/fullstacked_modules/zod/v4/core/doc.js +35 -0
  76. package/fullstacked_modules/zod/v4/core/errors.cjs +226 -0
  77. package/fullstacked_modules/zod/v4/core/errors.js +195 -0
  78. package/fullstacked_modules/zod/v4/core/function.cjs +102 -0
  79. package/fullstacked_modules/zod/v4/core/function.js +75 -0
  80. package/fullstacked_modules/zod/v4/core/index.cjs +44 -0
  81. package/fullstacked_modules/zod/v4/core/index.js +15 -0
  82. package/fullstacked_modules/zod/v4/core/json-schema.cjs +2 -0
  83. package/fullstacked_modules/zod/v4/core/json-schema.js +1 -0
  84. package/fullstacked_modules/zod/v4/core/parse.cjs +87 -0
  85. package/fullstacked_modules/zod/v4/core/parse.js +57 -0
  86. package/fullstacked_modules/zod/v4/core/regexes.cjs +103 -0
  87. package/fullstacked_modules/zod/v4/core/regexes.js +95 -0
  88. package/fullstacked_modules/zod/v4/core/registries.cjs +56 -0
  89. package/fullstacked_modules/zod/v4/core/registries.js +51 -0
  90. package/fullstacked_modules/zod/v4/core/schemas.cjs +1748 -0
  91. package/fullstacked_modules/zod/v4/core/schemas.js +1717 -0
  92. package/fullstacked_modules/zod/v4/core/standard-schema.cjs +2 -0
  93. package/fullstacked_modules/zod/v4/core/standard-schema.js +1 -0
  94. package/fullstacked_modules/zod/v4/core/to-json-schema.cjs +854 -0
  95. package/fullstacked_modules/zod/v4/core/to-json-schema.js +849 -0
  96. package/fullstacked_modules/zod/v4/core/util.cjs +539 -0
  97. package/fullstacked_modules/zod/v4/core/util.js +493 -0
  98. package/fullstacked_modules/zod/v4/core/versions.cjs +8 -0
  99. package/fullstacked_modules/zod/v4/core/versions.js +5 -0
  100. package/fullstacked_modules/zod/v4/index.cjs +22 -0
  101. package/fullstacked_modules/zod/v4/index.js +3 -0
  102. package/fullstacked_modules/zod/v4/locales/ar.cjs +142 -0
  103. package/fullstacked_modules/zod/v4/locales/ar.js +116 -0
  104. package/fullstacked_modules/zod/v4/locales/az.cjs +141 -0
  105. package/fullstacked_modules/zod/v4/locales/az.js +115 -0
  106. package/fullstacked_modules/zod/v4/locales/be.cjs +190 -0
  107. package/fullstacked_modules/zod/v4/locales/be.js +164 -0
  108. package/fullstacked_modules/zod/v4/locales/ca.cjs +144 -0
  109. package/fullstacked_modules/zod/v4/locales/ca.js +118 -0
  110. package/fullstacked_modules/zod/v4/locales/cs.cjs +161 -0
  111. package/fullstacked_modules/zod/v4/locales/cs.js +135 -0
  112. package/fullstacked_modules/zod/v4/locales/de.cjs +142 -0
  113. package/fullstacked_modules/zod/v4/locales/de.js +116 -0
  114. package/fullstacked_modules/zod/v4/locales/en.cjs +145 -0
  115. package/fullstacked_modules/zod/v4/locales/en.js +117 -0
  116. package/fullstacked_modules/zod/v4/locales/eo.cjs +144 -0
  117. package/fullstacked_modules/zod/v4/locales/eo.js +116 -0
  118. package/fullstacked_modules/zod/v4/locales/es.cjs +143 -0
  119. package/fullstacked_modules/zod/v4/locales/es.js +117 -0
  120. package/fullstacked_modules/zod/v4/locales/fa.cjs +148 -0
  121. package/fullstacked_modules/zod/v4/locales/fa.js +122 -0
  122. package/fullstacked_modules/zod/v4/locales/fi.cjs +148 -0
  123. package/fullstacked_modules/zod/v4/locales/fi.js +122 -0
  124. package/fullstacked_modules/zod/v4/locales/fr-CA.cjs +143 -0
  125. package/fullstacked_modules/zod/v4/locales/fr-CA.js +117 -0
  126. package/fullstacked_modules/zod/v4/locales/fr.cjs +142 -0
  127. package/fullstacked_modules/zod/v4/locales/fr.js +116 -0
  128. package/fullstacked_modules/zod/v4/locales/he.cjs +143 -0
  129. package/fullstacked_modules/zod/v4/locales/he.js +117 -0
  130. package/fullstacked_modules/zod/v4/locales/hu.cjs +143 -0
  131. package/fullstacked_modules/zod/v4/locales/hu.js +117 -0
  132. package/fullstacked_modules/zod/v4/locales/id.cjs +142 -0
  133. package/fullstacked_modules/zod/v4/locales/id.js +116 -0
  134. package/fullstacked_modules/zod/v4/locales/index.cjs +84 -0
  135. package/fullstacked_modules/zod/v4/locales/index.js +39 -0
  136. package/fullstacked_modules/zod/v4/locales/it.cjs +143 -0
  137. package/fullstacked_modules/zod/v4/locales/it.js +117 -0
  138. package/fullstacked_modules/zod/v4/locales/ja.cjs +141 -0
  139. package/fullstacked_modules/zod/v4/locales/ja.js +115 -0
  140. package/fullstacked_modules/zod/v4/locales/kh.cjs +143 -0
  141. package/fullstacked_modules/zod/v4/locales/kh.js +117 -0
  142. package/fullstacked_modules/zod/v4/locales/ko.cjs +147 -0
  143. package/fullstacked_modules/zod/v4/locales/ko.js +121 -0
  144. package/fullstacked_modules/zod/v4/locales/mk.cjs +144 -0
  145. package/fullstacked_modules/zod/v4/locales/mk.js +118 -0
  146. package/fullstacked_modules/zod/v4/locales/ms.cjs +142 -0
  147. package/fullstacked_modules/zod/v4/locales/ms.js +116 -0
  148. package/fullstacked_modules/zod/v4/locales/nl.cjs +143 -0
  149. package/fullstacked_modules/zod/v4/locales/nl.js +117 -0
  150. package/fullstacked_modules/zod/v4/locales/no.cjs +142 -0
  151. package/fullstacked_modules/zod/v4/locales/no.js +116 -0
  152. package/fullstacked_modules/zod/v4/locales/ota.cjs +143 -0
  153. package/fullstacked_modules/zod/v4/locales/ota.js +117 -0
  154. package/fullstacked_modules/zod/v4/locales/pl.cjs +143 -0
  155. package/fullstacked_modules/zod/v4/locales/pl.js +117 -0
  156. package/fullstacked_modules/zod/v4/locales/ps.cjs +148 -0
  157. package/fullstacked_modules/zod/v4/locales/ps.js +122 -0
  158. package/fullstacked_modules/zod/v4/locales/pt.cjs +142 -0
  159. package/fullstacked_modules/zod/v4/locales/pt.js +116 -0
  160. package/fullstacked_modules/zod/v4/locales/ru.cjs +190 -0
  161. package/fullstacked_modules/zod/v4/locales/ru.js +164 -0
  162. package/fullstacked_modules/zod/v4/locales/sl.cjs +143 -0
  163. package/fullstacked_modules/zod/v4/locales/sl.js +117 -0
  164. package/fullstacked_modules/zod/v4/locales/sv.cjs +144 -0
  165. package/fullstacked_modules/zod/v4/locales/sv.js +118 -0
  166. package/fullstacked_modules/zod/v4/locales/ta.cjs +143 -0
  167. package/fullstacked_modules/zod/v4/locales/ta.js +117 -0
  168. package/fullstacked_modules/zod/v4/locales/th.cjs +143 -0
  169. package/fullstacked_modules/zod/v4/locales/th.js +117 -0
  170. package/fullstacked_modules/zod/v4/locales/tr.cjs +143 -0
  171. package/fullstacked_modules/zod/v4/locales/tr.js +115 -0
  172. package/fullstacked_modules/zod/v4/locales/ua.cjs +143 -0
  173. package/fullstacked_modules/zod/v4/locales/ua.js +117 -0
  174. package/fullstacked_modules/zod/v4/locales/ur.cjs +143 -0
  175. package/fullstacked_modules/zod/v4/locales/ur.js +117 -0
  176. package/fullstacked_modules/zod/v4/locales/vi.cjs +142 -0
  177. package/fullstacked_modules/zod/v4/locales/vi.js +116 -0
  178. package/fullstacked_modules/zod/v4/locales/zh-CN.cjs +142 -0
  179. package/fullstacked_modules/zod/v4/locales/zh-CN.js +116 -0
  180. package/fullstacked_modules/zod/v4/locales/zh-TW.cjs +143 -0
  181. package/fullstacked_modules/zod/v4/locales/zh-TW.js +117 -0
  182. package/fullstacked_modules/zod/v4/mini/checks.cjs +34 -0
  183. package/fullstacked_modules/zod/v4/mini/checks.js +1 -0
  184. package/fullstacked_modules/zod/v4/mini/coerce.cjs +47 -0
  185. package/fullstacked_modules/zod/v4/mini/coerce.js +17 -0
  186. package/fullstacked_modules/zod/v4/mini/external.cjs +62 -0
  187. package/fullstacked_modules/zod/v4/mini/external.js +13 -0
  188. package/fullstacked_modules/zod/v4/mini/index.cjs +32 -0
  189. package/fullstacked_modules/zod/v4/mini/index.js +3 -0
  190. package/fullstacked_modules/zod/v4/mini/iso.cjs +60 -0
  191. package/fullstacked_modules/zod/v4/mini/iso.js +30 -0
  192. package/fullstacked_modules/zod/v4/mini/parse.cjs +8 -0
  193. package/fullstacked_modules/zod/v4/mini/parse.js +1 -0
  194. package/fullstacked_modules/zod/v4/mini/schemas.cjs +839 -0
  195. package/fullstacked_modules/zod/v4/mini/schemas.js +732 -0
  196. package/fullstacked_modules/zod/v4-mini/index.cjs +17 -0
  197. package/fullstacked_modules/zod/v4-mini/index.js +1 -0
  198. package/index.js +121 -186
  199. package/package.json +4 -4
  200. package/fullstacked_modules/@fullstacked/ui/README.md +0 -3
  201. package/fullstacked_modules/@fullstacked/ui/components/button-group/button-group.scss +0 -28
  202. package/fullstacked_modules/@fullstacked/ui/components/button-group/index.ts +0 -8
  203. package/fullstacked_modules/@fullstacked/ui/components/dialog/dialog.scss +0 -39
  204. package/fullstacked_modules/@fullstacked/ui/components/dialog/index.ts +0 -17
  205. package/fullstacked_modules/@fullstacked/ui/components/list-item/index.ts +0 -37
  206. package/fullstacked_modules/@fullstacked/ui/components/list-item/list-item.scss +0 -19
  207. package/fullstacked_modules/@fullstacked/ui/components/loader/index.ts +0 -14
  208. package/fullstacked_modules/@fullstacked/ui/components/loader/loader.scss +0 -25
  209. package/fullstacked_modules/@fullstacked/ui/components/message/index.ts +0 -26
  210. package/fullstacked_modules/@fullstacked/ui/components/message/message.scss +0 -20
  211. package/fullstacked_modules/@fullstacked/ui/components/popover/index.ts +0 -114
  212. package/fullstacked_modules/@fullstacked/ui/components/popover/popover.scss +0 -44
  213. package/fullstacked_modules/@fullstacked/ui/globals.scss +0 -66
  214. package/fullstacked_modules/@fullstacked/ui/icons/Archive.svg +0 -3
  215. package/fullstacked_modules/@fullstacked/ui/icons/Arrow 2.svg +0 -3
  216. package/fullstacked_modules/@fullstacked/ui/icons/Arrow Corner.svg +0 -3
  217. package/fullstacked_modules/@fullstacked/ui/icons/Arrow.svg +0 -3
  218. package/fullstacked_modules/@fullstacked/ui/icons/Caret.svg +0 -3
  219. package/fullstacked_modules/@fullstacked/ui/icons/Check.svg +0 -3
  220. package/fullstacked_modules/@fullstacked/ui/icons/Clipboard.svg +0 -12
  221. package/fullstacked_modules/@fullstacked/ui/icons/Clock.svg +0 -12
  222. package/fullstacked_modules/@fullstacked/ui/icons/Close.svg +0 -10
  223. package/fullstacked_modules/@fullstacked/ui/icons/Copy.svg +0 -3
  224. package/fullstacked_modules/@fullstacked/ui/icons/Directory Add.svg +0 -3
  225. package/fullstacked_modules/@fullstacked/ui/icons/Edit.svg +0 -3
  226. package/fullstacked_modules/@fullstacked/ui/icons/Export.svg +0 -3
  227. package/fullstacked_modules/@fullstacked/ui/icons/External Link.svg +0 -3
  228. package/fullstacked_modules/@fullstacked/ui/icons/File Add.svg +0 -3
  229. package/fullstacked_modules/@fullstacked/ui/icons/File.svg +0 -3
  230. package/fullstacked_modules/@fullstacked/ui/icons/Git Branch.svg +0 -3
  231. package/fullstacked_modules/@fullstacked/ui/icons/Git.svg +0 -3
  232. package/fullstacked_modules/@fullstacked/ui/icons/Glitter.svg +0 -3
  233. package/fullstacked_modules/@fullstacked/ui/icons/Info.svg +0 -3
  234. package/fullstacked_modules/@fullstacked/ui/icons/Link.svg +0 -10
  235. package/fullstacked_modules/@fullstacked/ui/icons/Loader.svg +0 -4
  236. package/fullstacked_modules/@fullstacked/ui/icons/Lock.svg +0 -3
  237. package/fullstacked_modules/@fullstacked/ui/icons/Options.svg +0 -3
  238. package/fullstacked_modules/@fullstacked/ui/icons/Package.svg +0 -3
  239. package/fullstacked_modules/@fullstacked/ui/icons/Peers.svg +0 -3
  240. package/fullstacked_modules/@fullstacked/ui/icons/Play.svg +0 -3
  241. package/fullstacked_modules/@fullstacked/ui/icons/Plus.svg +0 -3
  242. package/fullstacked_modules/@fullstacked/ui/icons/Revert.svg +0 -3
  243. package/fullstacked_modules/@fullstacked/ui/icons/Settings.svg +0 -3
  244. package/fullstacked_modules/@fullstacked/ui/icons/Side Panel.svg +0 -3
  245. package/fullstacked_modules/@fullstacked/ui/icons/Terminal.svg +0 -3
  246. package/fullstacked_modules/@fullstacked/ui/icons/Trash.svg +0 -3
  247. package/fullstacked_modules/@fullstacked/ui/icons/TypeScript.svg +0 -3
  248. package/fullstacked_modules/@fullstacked/ui/icons/Upload.svg +0 -3
  249. package/fullstacked_modules/@fullstacked/ui/icons/User.svg +0 -3
  250. package/fullstacked_modules/@fullstacked/ui/icons/Warning.svg +0 -3
  251. package/fullstacked_modules/@fullstacked/ui/inputs/checkbox/index.ts +0 -28
  252. package/fullstacked_modules/@fullstacked/ui/inputs/file/index.ts +0 -48
  253. package/fullstacked_modules/@fullstacked/ui/inputs/inputs.scss +0 -224
  254. package/fullstacked_modules/@fullstacked/ui/inputs/observer.ts +0 -36
  255. package/fullstacked_modules/@fullstacked/ui/inputs/predictive/index.ts +0 -195
  256. package/fullstacked_modules/@fullstacked/ui/inputs/radio/index.ts +0 -28
  257. package/fullstacked_modules/@fullstacked/ui/inputs/select/index.ts +0 -125
  258. package/fullstacked_modules/@fullstacked/ui/inputs/switch/index.ts +0 -37
  259. package/fullstacked_modules/@fullstacked/ui/inputs/text/index.ts +0 -53
  260. package/fullstacked_modules/@fullstacked/ui/package.json +0 -8
  261. package/fullstacked_modules/@fullstacked/ui/primitives/badge/badge.scss +0 -35
  262. package/fullstacked_modules/@fullstacked/ui/primitives/badge/index.ts +0 -23
  263. package/fullstacked_modules/@fullstacked/ui/primitives/button/button.scss +0 -97
  264. package/fullstacked_modules/@fullstacked/ui/primitives/button/index.ts +0 -41
  265. package/fullstacked_modules/@fullstacked/ui/primitives/icon/icon.scss +0 -13
  266. package/fullstacked_modules/@fullstacked/ui/primitives/icon/index.ts +0 -30
  267. package/fullstacked_modules/@fullstacked/ui/ui.scss +0 -15
  268. package/fullstacked_modules/@fullstacked/ui/ui.ts +0 -18
  269. package/fullstacked_modules/@fullstacked/ui/values/breakpoints.scss +0 -7
  270. package/fullstacked_modules/@fullstacked/ui/values/colors.scss +0 -26
  271. package/fullstacked_modules/@fullstacked/ui/values/spacing.scss +0 -10
  272. package/fullstacked_modules/@fullstacked/ui/values/typography.scss +0 -23
  273. package/fullstacked_modules/esbuild/index.d.ts +0 -0
  274. package/fullstacked_modules/esbuild/index.ts +0 -3
  275. package/fullstacked_modules/esbuild/sass.ts +0 -100
  276. package/fullstacked_modules/sass/index.d.ts +0 -0
  277. /package/fullstacked_modules/{@fullstacked → build}/index.d.ts +0 -0
@@ -1,48 +0,0 @@
1
- import { Button } from "../../primitives/button";
2
- import { startObserverInterval } from "../observer";
3
- import { InputOpts } from "../text";
4
-
5
- export function InputFile(opts?: Partial<InputOpts>) {
6
- startObserverInterval();
7
-
8
- const container = document.createElement("div");
9
- container.classList.add("input-file");
10
-
11
- if (opts?.label) {
12
- container.innerHTML = `<label>${opts.label}</label>`;
13
- }
14
-
15
- const input = document.createElement("input");
16
- input.type = "file";
17
-
18
- container.append(input);
19
-
20
- const overrideUI = document.createElement("div");
21
-
22
- const fileName = document.createElement("span");
23
- fileName.innerText = "No file chosen";
24
-
25
- input.addEventListener("change", () => {
26
- const file = input.files[0];
27
- fileName.innerText = file?.name || "No file chosen";
28
- });
29
-
30
- const button = Button({
31
- iconRight: "File",
32
- text: "Select",
33
- });
34
-
35
- button.onclick = (e) => {
36
- e.preventDefault();
37
- input.click();
38
- };
39
-
40
- overrideUI.append(fileName, button);
41
-
42
- container.append(overrideUI);
43
-
44
- return {
45
- container,
46
- input,
47
- };
48
- }
@@ -1,224 +0,0 @@
1
- /*
2
- This file must follow the figma design
3
- https://www.figma.com/design/xb3JBRCvEWpbwGda03T5QQ/Mockups?node-id=158-3127
4
- */
5
- @use "../values/colors.scss";
6
- @use "../values/spacing.scss";
7
- @use "../values/typography.scss";
8
-
9
- @mixin hide-input {
10
- height: 0;
11
- width: 0;
12
- overflow: hidden;
13
- padding: 0;
14
- margin: 0;
15
- position: absolute;
16
- z-index: -1;
17
- opacity: 0;
18
- }
19
-
20
- select,
21
- input,
22
- .input-predictive > div {
23
- font-family: typography.$fonts;
24
- background-color: colors.$light;
25
- color: colors.$dark;
26
- border: 0;
27
- border-radius: spacing.$x-small;
28
- font-size: typography.$medium;
29
- padding: 6px;
30
- outline-offset: 0px;
31
- width: 100%;
32
-
33
- &:focus {
34
- outline: 2px solid colors.$blue;
35
- }
36
- }
37
-
38
- .input-text,
39
- .input-file,
40
- .input-switch,
41
- .input-predictive,
42
- .input-select {
43
- display: inline-flex;
44
- flex-direction: column;
45
- gap: spacing.$x-small;
46
- font-family: typography.$fonts;
47
- color: colors.$light;
48
- width: 100%;
49
-
50
- label > span {
51
- font-weight: normal;
52
- }
53
- }
54
-
55
- .input-file {
56
- input {
57
- @include hide-input;
58
- }
59
-
60
- > div {
61
- display: flex;
62
- align-items: center;
63
- justify-content: space-between;
64
- gap: spacing.$small;
65
- }
66
- }
67
-
68
- $handle-size: 22px;
69
-
70
- $outer-size: $handle-size * 2 + 8;
71
- .input-switch {
72
- input {
73
- @include hide-input;
74
- }
75
-
76
- > div {
77
- display: flex;
78
- align-items: center;
79
- justify-content: flex-end;
80
-
81
- user-select: none;
82
- -webkit-user-select: none;
83
-
84
- > div {
85
- height: spacing.$large;
86
- width: $outer-size;
87
- background-color: colors.$gray;
88
- padding: 4px;
89
- border-radius: calc($outer-size / 2);
90
- transition: 0.2s background-color;
91
- cursor: pointer;
92
-
93
- > div {
94
- height: $handle-size;
95
- width: $handle-size;
96
- background-color: colors.$light;
97
- border-radius: calc($handle-size / 2);
98
- margin-left: 0;
99
- transition: 0.2s margin-left;
100
- }
101
- }
102
- }
103
-
104
- &.checked {
105
- > div {
106
- > div {
107
- background-color: colors.$blue;
108
- > div {
109
- margin-left: $handle-size;
110
- }
111
- }
112
- }
113
- }
114
- }
115
-
116
- $input-radio-size: 18px;
117
- .input-radio,
118
- .input-checkbox {
119
- input {
120
- @include hide-input;
121
- }
122
-
123
- > div {
124
- height: $input-radio-size;
125
- width: $input-radio-size;
126
- border-radius: 50%;
127
- background-color: colors.$light;
128
-
129
- display: flex;
130
- align-items: center;
131
- justify-content: center;
132
-
133
- user-select: none;
134
- -webkit-user-select: none;
135
-
136
- cursor: pointer;
137
-
138
- > div {
139
- height: $input-radio-size - 6px;
140
- width: $input-radio-size - 6px;
141
- border-radius: 50%;
142
- }
143
- }
144
-
145
- &.checked {
146
- > div > div {
147
- background-color: colors.$blue;
148
- }
149
- }
150
- }
151
-
152
- .input-checkbox {
153
- > div {
154
- border-radius: spacing.$x-small;
155
- > div {
156
- border-radius: 3px;
157
- }
158
- }
159
- }
160
-
161
- .input-predictive {
162
- > div {
163
- > span {
164
- color: colors.$gray;
165
- }
166
- }
167
- }
168
-
169
- .input-select {
170
- .select-container {
171
- position: relative;
172
- width: 100%;
173
- > div {
174
- display: flex;
175
- align-items: center;
176
- justify-content: center;
177
- pointer-events: none;
178
- top: 3px;
179
- right: 3px;
180
- height: 24px;
181
- width: 24px;
182
- position: absolute;
183
- background-color: colors.$blue;
184
- border-radius: spacing.$x-small;
185
- .icon {
186
- height: 16px;
187
- width: 16px;
188
- transform: rotate(-90deg);
189
- }
190
- }
191
- > select {
192
- -webkit-appearance: none;
193
- cursor: pointer;
194
- width: 100%;
195
- height: 30px;
196
- font-size: typography.$small;
197
- box-shadow: none;
198
- color: colors.$dark;
199
- &.invalid {
200
- color: colors.$gray;
201
- }
202
- }
203
- }
204
- }
205
-
206
- .input-text {
207
- .input-container {
208
- width: 100%;
209
- position: relative;
210
- > .button-container {
211
- position: absolute;
212
- height: 100%;
213
- display: none;
214
- flex-direction: column;
215
- justify-content: center;
216
- right: 0;
217
- top: 0;
218
- padding: 1px 5px 0;
219
- &.show {
220
- display: flex;
221
- }
222
- }
223
- }
224
- }
@@ -1,36 +0,0 @@
1
- // input observer
2
- const updateOverriddenInputs = () => {
3
- const inputsChecked = document.querySelectorAll<HTMLInputElement>(
4
- "input[type=checkbox], input[type=radio]",
5
- );
6
- inputsChecked.forEach((input) => {
7
- const parent = input.parentElement;
8
- if (input.checked) parent.classList.add("checked");
9
- else parent.classList.remove("checked");
10
- });
11
-
12
- const inputsFile =
13
- document.querySelectorAll<HTMLInputElement>("input[type=file]");
14
- inputsFile.forEach((inputFile) => {
15
- const file = inputFile.files[0];
16
- const fileName = inputFile.nextElementSibling
17
- ?.children?.[0] as HTMLSpanElement;
18
- if (!fileName) return;
19
- fileName.innerText = file?.name || "No file chosen";
20
- });
21
-
22
- const inputsSelect = document.querySelectorAll<HTMLSelectElement>("select");
23
- inputsSelect.forEach((inputSelect) => {
24
- if (inputSelect.selectedIndex) {
25
- inputSelect.classList.remove("invalid");
26
- } else {
27
- inputSelect.classList.add("invalid");
28
- }
29
- });
30
- };
31
-
32
- let interval: ReturnType<typeof setInterval> = null;
33
- export function startObserverInterval() {
34
- if (interval) return;
35
- interval = setInterval(updateOverriddenInputs, 100);
36
- }
@@ -1,195 +0,0 @@
1
- type InputPredictiveOpts = {
2
- label: string;
3
- onChange: (value: string) => string[] | Promise<string[]>;
4
- };
5
-
6
- const SPACE = String.fromCharCode(160);
7
-
8
- export function InputPredictive(opts: Partial<InputPredictiveOpts>) {
9
- const container = document.createElement("div");
10
- container.classList.add("input-predictive");
11
-
12
- if (opts?.label) {
13
- container.innerHTML = `<label>${opts.label}</label>`;
14
- }
15
-
16
- const input = document.createElement("div");
17
- input.contentEditable = "true";
18
- input.autocapitalize = "off";
19
- input.setAttribute("autocomplete", "off");
20
- input.setAttribute("autocorrect", "off");
21
-
22
- let prediction: HTMLSpanElement = document.createElement("span");
23
- prediction.contentEditable = "false";
24
- input.append(prediction);
25
-
26
- const spaceRegex = new RegExp(SPACE, "g");
27
-
28
- let predictions: string[] = [];
29
- let predictionIndex = 0;
30
-
31
- const prevPrediction = () => {
32
- if (predictionIndex === 0) {
33
- return;
34
- }
35
- predictionIndex -= 1;
36
- prediction.innerText = predictions.at(predictionIndex);
37
- };
38
-
39
- const nextPrediction = () => {
40
- if (predictionIndex === predictions.length - 1) {
41
- return;
42
- }
43
- predictionIndex += 1;
44
- prediction.innerText = predictions.at(predictionIndex);
45
- };
46
-
47
- const predict = async () => {
48
- Array.from(input.children).forEach((child) => {
49
- if (child.innerHTML === "" || child instanceof HTMLBRElement) {
50
- child.remove();
51
- }
52
- });
53
-
54
- if (prediction.getBoundingClientRect().height == 0) {
55
- input.append(prediction);
56
- }
57
-
58
- let value = input.innerText.replace(spaceRegex, " ");
59
-
60
- const prevP = prediction.innerText;
61
- if (prevP) {
62
- value = value.slice(0, 0 - prevP.length);
63
- }
64
-
65
- const onChangeResult = opts?.onChange?.(value);
66
-
67
- if (onChangeResult instanceof Promise) {
68
- predictions = await onChangeResult
69
- } else {
70
- predictions = onChangeResult
71
- }
72
-
73
- predictions = predictions.map(p => p.replace(/ /g, SPACE))
74
-
75
- if (predictions.length) {
76
- predictionIndex = 0;
77
- prediction.innerText = predictions.at(predictionIndex);
78
- } else {
79
- prediction.innerText = "";
80
- }
81
- };
82
-
83
- const replaceCursor = () => {
84
- const range = document.createRange();
85
- const sel = window.getSelection();
86
- if (input.childNodes?.[0]) {
87
- range.setStart(input.childNodes[0], getValue().length);
88
- } else {
89
- range.setStart(input, 0);
90
- }
91
- range.collapse(true);
92
- sel.removeAllRanges();
93
- sel.addRange(range);
94
- }
95
-
96
- const getCursorPos = () => {
97
- const sel = window.getSelection();
98
- return sel.anchorOffset;
99
- }
100
-
101
- const applyPrediction = () => {
102
- const p = prediction?.innerText || "";
103
- if (p) {
104
- prediction.innerText = "";
105
- input.innerText += p;
106
- replaceCursor();
107
- }
108
- };
109
-
110
- prediction.onclick = () => {
111
- applyPrediction();
112
- };
113
- input.onpaste = () => {
114
- prediction.innerText = "";
115
- setTimeout(() => {
116
- input.innerText = input.innerText;
117
- predict();
118
- });
119
- };
120
-
121
- input.onblur = () => {
122
- prediction.remove();
123
- };
124
- input.onfocus = () => {
125
- predict();
126
-
127
- let value = input.innerText;
128
- const prevP = prediction.innerText;
129
- if (prevP) {
130
- value = value.slice(0, 0 - prevP.length);
131
- }
132
-
133
- if (value) {
134
- setTimeout(replaceCursor);
135
- }
136
- };
137
- input.onkeyup = (e) => {
138
- const { key } = e;
139
- if (key === "ArrowUp" || key === "ArrowDown") {
140
- return;
141
- }
142
- predict();
143
- };
144
-
145
- input.onkeydown = (e: KeyboardEvent) => {
146
- const { key } = e;
147
-
148
- if (key === "ArrowUp" || key === "ArrowDown") {
149
- e.preventDefault();
150
- return key === "ArrowUp" ? prevPrediction() : nextPrediction();
151
- }
152
-
153
- const prevP = prediction.innerText;
154
- if (e.key === "Tab") {
155
- e.preventDefault();
156
-
157
- if (prediction.innerText != "") {
158
- applyPrediction();
159
- } else if (input.innerText && input.innerText.at(-1) !== SPACE) {
160
- input.innerText += SPACE;
161
- replaceCursor();
162
- }
163
-
164
- } else if (
165
- e.key === "ArrowRight" &&
166
- prediction.innerText &&
167
- getCursorPos() === getValue().length
168
- ) {
169
- e.preventDefault();
170
- applyPrediction();
171
- } else if (prevP && key == prevP.at(0)) {
172
- prediction.innerText = prediction.innerText.slice(1);
173
- } else {
174
- prediction.innerText = "";
175
- }
176
- };
177
-
178
- const getValue = () => {
179
- const clone = input.cloneNode(true) as HTMLDivElement;
180
- clone.querySelector("span")?.remove();
181
- return clone.innerText.replace(spaceRegex, " ");
182
- }
183
-
184
- container.append(input);
185
-
186
- return {
187
- container,
188
- input,
189
- getValue,
190
- clear: () => {
191
- input.innerText = ""
192
- replaceCursor();
193
- }
194
- };
195
- }
@@ -1,28 +0,0 @@
1
- import { startObserverInterval } from "../observer";
2
-
3
- export function InputRadio() {
4
- startObserverInterval();
5
-
6
- const container = document.createElement("div");
7
- container.classList.add("input-radio");
8
-
9
- const input = document.createElement("input");
10
- input.type = "radio";
11
-
12
- input.addEventListener("change", () => {
13
- if (input.checked) container.classList.add("checked");
14
- else container.classList.remove("checked");
15
- });
16
-
17
- const overrideUI = document.createElement("div");
18
- overrideUI.onclick = () => input.click();
19
-
20
- overrideUI.innerHTML = "<div></div>";
21
-
22
- container.append(input, overrideUI);
23
-
24
- return {
25
- container,
26
- input
27
- };
28
- }
@@ -1,125 +0,0 @@
1
- import { startObserverInterval } from "../observer";
2
- import { Icon } from "../../ui";
3
-
4
- export type InputSelectOpts = {
5
- label: string;
6
- placeholder: string;
7
- };
8
-
9
- export type InputSelectOption = {
10
- name: string;
11
- id?: string;
12
- selected?: boolean;
13
- disabled?: boolean;
14
- };
15
-
16
- export function InputSelect(opts: Partial<InputSelectOpts>) {
17
- startObserverInterval();
18
-
19
- const container = document.createElement("div");
20
- container.classList.add("input-select");
21
-
22
- if (opts.label) {
23
- container.innerHTML = `<label>${opts.label}</label>`;
24
- }
25
-
26
- const selectAndIconContainer = document.createElement("div");
27
- selectAndIconContainer.classList.add("select-container");
28
- const select = document.createElement("select");
29
- const icon = document.createElement("div");
30
- icon.append(Icon("Arrow"));
31
- selectAndIconContainer.append(select, icon);
32
- container.append(selectAndIconContainer);
33
-
34
- const placeholderOption = document.createElement("option");
35
- placeholderOption.selected = true;
36
- placeholderOption.innerText = opts.placeholder || "Choose an option";
37
- select.append(placeholderOption);
38
-
39
- select.classList.add("invalid");
40
-
41
- const selectOptions: InputSelectOption[] = [];
42
-
43
- const addOptions = (option: InputSelectOption) => {
44
- selectOptions.push(option);
45
- const el = document.createElement("option");
46
- el.innerText = option.name;
47
- el.disabled = option.disabled;
48
- if (!el.disabled) {
49
- el.value = selectOptions.length.toString();
50
- }
51
- el.selected = option.selected;
52
- select.append(el);
53
- };
54
-
55
- const disablePlaceholder = () => {
56
- placeholderOption.disabled = true;
57
- };
58
-
59
- select.onfocus = disablePlaceholder;
60
- select.ontouchstart = disablePlaceholder;
61
- select.onclick = disablePlaceholder;
62
- select.onblur = () => {
63
- placeholderOption.disabled = false;
64
- };
65
-
66
- const indexOfIdOrName = (idOrName: string) => {
67
- return selectOptions.findIndex((item) => {
68
- if (item.id) {
69
- return item.id === idOrName;
70
- }
71
- return item.name === idOrName;
72
- });
73
- };
74
-
75
- let selectAPI = {
76
- get value() {
77
- const index = select.selectedIndex - 1;
78
- if (index === -1) {
79
- return undefined;
80
- }
81
- const item = selectOptions.at(index);
82
- return item.id || item.name;
83
- },
84
- set value(v: string) {
85
- const indexOf = indexOfIdOrName(v);
86
- if (indexOf === -1) return;
87
- select.selectedIndex = indexOf + 1;
88
- },
89
- onchange: (item?: string, index?: number): any => {
90
- return { item, index };
91
- },
92
- };
93
-
94
- select.onchange = () => {
95
- const index = select.selectedIndex - 1;
96
- const item = selectOptions.at(index);
97
- const value = item.id || item.name;
98
- selectAPI.value = value;
99
- selectAPI.onchange(value, index);
100
- };
101
-
102
- return {
103
- container,
104
- select: selectAPI,
105
- options: {
106
- get() {
107
- return selectOptions;
108
- },
109
- add(...options: InputSelectOption[]) {
110
- options.forEach(addOptions);
111
- },
112
- remove(nameOrId: string) {
113
- const indexOf = indexOfIdOrName(nameOrId);
114
- if (indexOf === -1) return;
115
-
116
- const selectedIndex = select.selectedIndex - 1;
117
- if (indexOf === selectedIndex) {
118
- select.selectedIndex = 0;
119
- }
120
-
121
- selectOptions.splice(indexOf, 1);
122
- },
123
- },
124
- };
125
- }
@@ -1,37 +0,0 @@
1
- import { startObserverInterval } from "../observer";
2
- import { InputOpts } from "../text";
3
-
4
- export function InputSwitch(opts?: Partial<InputOpts>) {
5
- startObserverInterval();
6
-
7
- const container = document.createElement("div");
8
- container.classList.add("input-switch");
9
-
10
- if (opts?.label) {
11
- container.innerHTML = `<label>${opts.label}</label>`;
12
- }
13
-
14
- const input = document.createElement("input");
15
- input.type = "checkbox";
16
-
17
- input.addEventListener("change", () => {
18
- if (input.checked) container.classList.add("checked");
19
- else container.classList.remove("checked");
20
- });
21
-
22
- container.append(input);
23
-
24
- const overrideUI = document.createElement("div");
25
-
26
- const switchEl = document.createElement("div");
27
- switchEl.onclick = () => input.click();
28
-
29
- switchEl.innerHTML = `<div></div>`;
30
- overrideUI.append(switchEl);
31
- container.append(overrideUI);
32
-
33
- return {
34
- input,
35
- container
36
- };
37
- }