@intlayer/design-system 8.12.2 → 8.12.4-canary.0

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 (776) hide show
  1. package/dist/esm/api/hooks/ai.mjs.map +1 -1
  2. package/dist/esm/api/hooks/audit.mjs.map +1 -1
  3. package/dist/esm/api/hooks/auth.mjs +14 -8
  4. package/dist/esm/api/hooks/auth.mjs.map +1 -1
  5. package/dist/esm/api/hooks/bitbucket.mjs.map +1 -1
  6. package/dist/esm/api/hooks/dictionary.mjs.map +1 -1
  7. package/dist/esm/api/hooks/discussions.mjs.map +1 -1
  8. package/dist/esm/api/hooks/editor.mjs.map +1 -1
  9. package/dist/esm/api/hooks/environment.mjs.map +1 -1
  10. package/dist/esm/api/hooks/github.mjs.map +1 -1
  11. package/dist/esm/api/hooks/gitlab.mjs.map +1 -1
  12. package/dist/esm/api/hooks/newsletter.mjs.map +1 -1
  13. package/dist/esm/api/hooks/organization.mjs.map +1 -1
  14. package/dist/esm/api/hooks/project.mjs.map +1 -1
  15. package/dist/esm/api/hooks/reviewer.mjs.map +1 -1
  16. package/dist/esm/api/hooks/search.mjs.map +1 -1
  17. package/dist/esm/api/hooks/showcaseProject.mjs.map +1 -1
  18. package/dist/esm/api/hooks/stripe.mjs.map +1 -1
  19. package/dist/esm/api/hooks/tag.mjs.map +1 -1
  20. package/dist/esm/api/hooks/translate.mjs.map +1 -1
  21. package/dist/esm/api/hooks/user.mjs.map +1 -1
  22. package/dist/esm/api/hooks/utils.mjs.map +1 -1
  23. package/dist/esm/api/useAuth/useAuth.mjs.map +1 -1
  24. package/dist/esm/api/useAuth/useOAuth2.mjs +1 -1
  25. package/dist/esm/api/useAuth/useOAuth2.mjs.map +1 -1
  26. package/dist/esm/api/useAuth/useSession.mjs +1 -1
  27. package/dist/esm/api/useAuth/useSession.mjs.map +1 -1
  28. package/dist/esm/api/useIntlayerAPI.mjs.map +1 -1
  29. package/dist/esm/api/useUser/index.mjs.map +1 -1
  30. package/dist/esm/components/Accordion/Accordion.mjs.map +1 -1
  31. package/dist/esm/components/Avatar/image.mjs.map +1 -1
  32. package/dist/esm/components/Avatar/index.mjs.map +1 -1
  33. package/dist/esm/components/Badge/index.mjs.map +1 -1
  34. package/dist/esm/components/Breadcrumb/breadcrumb.content.mjs.map +1 -1
  35. package/dist/esm/components/Breadcrumb/index.mjs.map +1 -1
  36. package/dist/esm/components/Browser/Browser.content.mjs.map +1 -1
  37. package/dist/esm/components/Browser/Browser.mjs.map +1 -1
  38. package/dist/esm/components/Browser/extractUrlFromSitemap.mjs.map +1 -1
  39. package/dist/esm/components/Button/Button.mjs +1 -1
  40. package/dist/esm/components/Button/Button.mjs.map +1 -1
  41. package/dist/esm/components/Carousel/index.content.mjs.map +1 -1
  42. package/dist/esm/components/Carousel/index.mjs.map +1 -1
  43. package/dist/esm/components/ClickOutsideDiv/index.mjs.map +1 -1
  44. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs.map +1 -1
  45. package/dist/esm/components/Command/index.mjs +1 -1
  46. package/dist/esm/components/Command/index.mjs.map +1 -1
  47. package/dist/esm/components/Container/index.mjs.map +1 -1
  48. package/dist/esm/components/ContentEditor/ContentEditor.mjs.map +1 -1
  49. package/dist/esm/components/ContentEditor/ContentEditorInput.mjs.map +1 -1
  50. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs.map +1 -1
  51. package/dist/esm/components/ContentSelector/ContentSelector.mjs.map +1 -1
  52. package/dist/esm/components/CopyButton/CopyButton.content.mjs.map +1 -1
  53. package/dist/esm/components/CopyButton/index.mjs.map +1 -1
  54. package/dist/esm/components/CopyToClipboard/index.mjs.map +1 -1
  55. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs.map +1 -1
  56. package/dist/esm/components/DictionaryEditor/ItemLayout.mjs.map +1 -1
  57. package/dist/esm/components/DictionaryEditor/NodeWrapper/ArrayWrapper.mjs.map +1 -1
  58. package/dist/esm/components/DictionaryEditor/NodeWrapper/BooleanWrapper.mjs.map +1 -1
  59. package/dist/esm/components/DictionaryEditor/NodeWrapper/ConditionWrapper.mjs.map +1 -1
  60. package/dist/esm/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.mjs.map +1 -1
  61. package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs.map +1 -1
  62. package/dist/esm/components/DictionaryEditor/NodeWrapper/HtmlWrapper.mjs.map +1 -1
  63. package/dist/esm/components/DictionaryEditor/NodeWrapper/InsertionWrapper.mjs.map +1 -1
  64. package/dist/esm/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.mjs.map +1 -1
  65. package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs.map +1 -1
  66. package/dist/esm/components/DictionaryEditor/NodeWrapper/NumberWrapper.mjs.map +1 -1
  67. package/dist/esm/components/DictionaryEditor/NodeWrapper/PluralWrapper.mjs.map +1 -1
  68. package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs.map +1 -1
  69. package/dist/esm/components/DictionaryEditor/NodeWrapper/TranslationWrapper.mjs.map +1 -1
  70. package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs.map +1 -1
  71. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs.map +1 -1
  72. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.mjs.map +1 -1
  73. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
  74. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/object.mjs.map +1 -1
  75. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
  76. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs.map +1 -1
  77. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.mjs.map +1 -1
  78. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs.map +1 -1
  79. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
  80. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs.map +1 -1
  81. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs.map +1 -1
  82. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs.map +1 -1
  83. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
  84. package/dist/esm/components/DictionaryFieldEditor/EnumKeyInput.mjs.map +1 -1
  85. package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs.map +1 -1
  86. package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs.map +1 -1
  87. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
  88. package/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs.map +1 -1
  89. package/dist/esm/components/DictionaryFieldEditor/NodeTypeSelector.mjs.map +1 -1
  90. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +8 -3
  91. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
  92. package/dist/esm/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs.map +1 -1
  93. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs.map +1 -1
  94. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
  95. package/dist/esm/components/DictionaryFieldEditor/StructureView/structureView.content.mjs.map +1 -1
  96. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs.map +1 -1
  97. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs.map +1 -1
  98. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.mjs.map +1 -1
  99. package/dist/esm/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs.map +1 -1
  100. package/dist/esm/components/DictionaryFieldEditor/getIsEditableSection.mjs.map +1 -1
  101. package/dist/esm/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs.map +1 -1
  102. package/dist/esm/components/DropDown/index.mjs.map +1 -1
  103. package/dist/esm/components/EditableField/EditableFieldInput.mjs.map +1 -1
  104. package/dist/esm/components/EditableField/EditableFieldLayout.mjs.map +1 -1
  105. package/dist/esm/components/EditableField/EditableFieldTextArea.mjs.map +1 -1
  106. package/dist/esm/components/ExpandCollapse/ExpandCollapse.mjs.map +1 -1
  107. package/dist/esm/components/ExpandCollapse/expandCollapse.content.mjs.map +1 -1
  108. package/dist/esm/components/Flags/Flag.mjs +6 -2
  109. package/dist/esm/components/Flags/Flag.mjs.map +1 -1
  110. package/dist/esm/components/Flags/ae.mjs.map +1 -1
  111. package/dist/esm/components/Flags/af.mjs.map +1 -1
  112. package/dist/esm/components/Flags/al.mjs.map +1 -1
  113. package/dist/esm/components/Flags/am.mjs.map +1 -1
  114. package/dist/esm/components/Flags/ar.mjs.map +1 -1
  115. package/dist/esm/components/Flags/at.mjs.map +1 -1
  116. package/dist/esm/components/Flags/au.mjs.map +1 -1
  117. package/dist/esm/components/Flags/az.mjs.map +1 -1
  118. package/dist/esm/components/Flags/ba.mjs.map +1 -1
  119. package/dist/esm/components/Flags/bd.mjs.map +1 -1
  120. package/dist/esm/components/Flags/be.mjs.map +1 -1
  121. package/dist/esm/components/Flags/bg.mjs.map +1 -1
  122. package/dist/esm/components/Flags/bh.mjs.map +1 -1
  123. package/dist/esm/components/Flags/bn.mjs.map +1 -1
  124. package/dist/esm/components/Flags/bo.mjs.map +1 -1
  125. package/dist/esm/components/Flags/br.mjs.map +1 -1
  126. package/dist/esm/components/Flags/bw.mjs.map +1 -1
  127. package/dist/esm/components/Flags/by.mjs.map +1 -1
  128. package/dist/esm/components/Flags/bz.mjs.map +1 -1
  129. package/dist/esm/components/Flags/ca.mjs.map +1 -1
  130. package/dist/esm/components/Flags/ch.mjs.map +1 -1
  131. package/dist/esm/components/Flags/cl.mjs.map +1 -1
  132. package/dist/esm/components/Flags/cn.mjs.map +1 -1
  133. package/dist/esm/components/Flags/co.mjs.map +1 -1
  134. package/dist/esm/components/Flags/cr.mjs.map +1 -1
  135. package/dist/esm/components/Flags/cu.mjs.map +1 -1
  136. package/dist/esm/components/Flags/cv.mjs.map +1 -1
  137. package/dist/esm/components/Flags/cz.mjs.map +1 -1
  138. package/dist/esm/components/Flags/de.mjs.map +1 -1
  139. package/dist/esm/components/Flags/dj.mjs.map +1 -1
  140. package/dist/esm/components/Flags/dk.mjs.map +1 -1
  141. package/dist/esm/components/Flags/do.mjs.map +1 -1
  142. package/dist/esm/components/Flags/dz.mjs.map +1 -1
  143. package/dist/esm/components/Flags/ec.mjs.map +1 -1
  144. package/dist/esm/components/Flags/ee.mjs.map +1 -1
  145. package/dist/esm/components/Flags/eg.mjs.map +1 -1
  146. package/dist/esm/components/Flags/es-ct.mjs.map +1 -1
  147. package/dist/esm/components/Flags/es-ga.mjs.map +1 -1
  148. package/dist/esm/components/Flags/es-pv.mjs.map +1 -1
  149. package/dist/esm/components/Flags/es.mjs.map +1 -1
  150. package/dist/esm/components/Flags/et.mjs.map +1 -1
  151. package/dist/esm/components/Flags/fi.mjs.map +1 -1
  152. package/dist/esm/components/Flags/flags.mjs.map +1 -1
  153. package/dist/esm/components/Flags/fo.mjs.map +1 -1
  154. package/dist/esm/components/Flags/fr.mjs.map +1 -1
  155. package/dist/esm/components/Flags/gb-wls.mjs.map +1 -1
  156. package/dist/esm/components/Flags/gb.mjs.map +1 -1
  157. package/dist/esm/components/Flags/ge.mjs.map +1 -1
  158. package/dist/esm/components/Flags/gh.mjs.map +1 -1
  159. package/dist/esm/components/Flags/gr.mjs.map +1 -1
  160. package/dist/esm/components/Flags/gt.mjs.map +1 -1
  161. package/dist/esm/components/Flags/gw.mjs.map +1 -1
  162. package/dist/esm/components/Flags/hk.mjs.map +1 -1
  163. package/dist/esm/components/Flags/hn.mjs.map +1 -1
  164. package/dist/esm/components/Flags/hr.mjs.map +1 -1
  165. package/dist/esm/components/Flags/hu.mjs.map +1 -1
  166. package/dist/esm/components/Flags/id.mjs.map +1 -1
  167. package/dist/esm/components/Flags/ie.mjs.map +1 -1
  168. package/dist/esm/components/Flags/il.mjs.map +1 -1
  169. package/dist/esm/components/Flags/in.mjs.map +1 -1
  170. package/dist/esm/components/Flags/iq.mjs.map +1 -1
  171. package/dist/esm/components/Flags/ir.mjs.map +1 -1
  172. package/dist/esm/components/Flags/is.mjs.map +1 -1
  173. package/dist/esm/components/Flags/it.mjs.map +1 -1
  174. package/dist/esm/components/Flags/jm.mjs.map +1 -1
  175. package/dist/esm/components/Flags/jo.mjs.map +1 -1
  176. package/dist/esm/components/Flags/jp.mjs.map +1 -1
  177. package/dist/esm/components/Flags/ke.mjs.map +1 -1
  178. package/dist/esm/components/Flags/kg.mjs.map +1 -1
  179. package/dist/esm/components/Flags/kh.mjs.map +1 -1
  180. package/dist/esm/components/Flags/km.mjs.map +1 -1
  181. package/dist/esm/components/Flags/kr.mjs.map +1 -1
  182. package/dist/esm/components/Flags/kw.mjs.map +1 -1
  183. package/dist/esm/components/Flags/kz.mjs.map +1 -1
  184. package/dist/esm/components/Flags/la.mjs.map +1 -1
  185. package/dist/esm/components/Flags/lb.mjs.map +1 -1
  186. package/dist/esm/components/Flags/li.mjs.map +1 -1
  187. package/dist/esm/components/Flags/lk.mjs.map +1 -1
  188. package/dist/esm/components/Flags/lt.mjs.map +1 -1
  189. package/dist/esm/components/Flags/lu.mjs.map +1 -1
  190. package/dist/esm/components/Flags/lv.mjs.map +1 -1
  191. package/dist/esm/components/Flags/ly.mjs.map +1 -1
  192. package/dist/esm/components/Flags/ma.mjs.map +1 -1
  193. package/dist/esm/components/Flags/mc.mjs.map +1 -1
  194. package/dist/esm/components/Flags/md.mjs.map +1 -1
  195. package/dist/esm/components/Flags/mk.mjs.map +1 -1
  196. package/dist/esm/components/Flags/mm.mjs.map +1 -1
  197. package/dist/esm/components/Flags/mn.mjs.map +1 -1
  198. package/dist/esm/components/Flags/mo.mjs.map +1 -1
  199. package/dist/esm/components/Flags/mr.mjs.map +1 -1
  200. package/dist/esm/components/Flags/mt.mjs.map +1 -1
  201. package/dist/esm/components/Flags/mv.mjs.map +1 -1
  202. package/dist/esm/components/Flags/mx.mjs.map +1 -1
  203. package/dist/esm/components/Flags/my.mjs.map +1 -1
  204. package/dist/esm/components/Flags/mz.mjs.map +1 -1
  205. package/dist/esm/components/Flags/ng.mjs.map +1 -1
  206. package/dist/esm/components/Flags/ni.mjs.map +1 -1
  207. package/dist/esm/components/Flags/nl.mjs.map +1 -1
  208. package/dist/esm/components/Flags/no.mjs.map +1 -1
  209. package/dist/esm/components/Flags/np.mjs.map +1 -1
  210. package/dist/esm/components/Flags/nz.mjs.map +1 -1
  211. package/dist/esm/components/Flags/om.mjs.map +1 -1
  212. package/dist/esm/components/Flags/pa.mjs.map +1 -1
  213. package/dist/esm/components/Flags/pe.mjs.map +1 -1
  214. package/dist/esm/components/Flags/ph.mjs.map +1 -1
  215. package/dist/esm/components/Flags/pk.mjs.map +1 -1
  216. package/dist/esm/components/Flags/pl.mjs.map +1 -1
  217. package/dist/esm/components/Flags/pr.mjs.map +1 -1
  218. package/dist/esm/components/Flags/ps.mjs.map +1 -1
  219. package/dist/esm/components/Flags/pt.mjs.map +1 -1
  220. package/dist/esm/components/Flags/py.mjs.map +1 -1
  221. package/dist/esm/components/Flags/qa.mjs.map +1 -1
  222. package/dist/esm/components/Flags/ro.mjs.map +1 -1
  223. package/dist/esm/components/Flags/rs.mjs.map +1 -1
  224. package/dist/esm/components/Flags/ru.mjs.map +1 -1
  225. package/dist/esm/components/Flags/sa.mjs.map +1 -1
  226. package/dist/esm/components/Flags/sd.mjs.map +1 -1
  227. package/dist/esm/components/Flags/se.mjs.map +1 -1
  228. package/dist/esm/components/Flags/sg.mjs.map +1 -1
  229. package/dist/esm/components/Flags/si.mjs.map +1 -1
  230. package/dist/esm/components/Flags/sk.mjs.map +1 -1
  231. package/dist/esm/components/Flags/so.mjs.map +1 -1
  232. package/dist/esm/components/Flags/st.mjs.map +1 -1
  233. package/dist/esm/components/Flags/sv.mjs.map +1 -1
  234. package/dist/esm/components/Flags/sy.mjs.map +1 -1
  235. package/dist/esm/components/Flags/td.mjs.map +1 -1
  236. package/dist/esm/components/Flags/th.mjs.map +1 -1
  237. package/dist/esm/components/Flags/tl.mjs.map +1 -1
  238. package/dist/esm/components/Flags/tn.mjs.map +1 -1
  239. package/dist/esm/components/Flags/tr.mjs.map +1 -1
  240. package/dist/esm/components/Flags/tt.mjs.map +1 -1
  241. package/dist/esm/components/Flags/tw.mjs.map +1 -1
  242. package/dist/esm/components/Flags/tz.mjs.map +1 -1
  243. package/dist/esm/components/Flags/ua.mjs.map +1 -1
  244. package/dist/esm/components/Flags/ug.mjs.map +1 -1
  245. package/dist/esm/components/Flags/us.mjs.map +1 -1
  246. package/dist/esm/components/Flags/uy.mjs.map +1 -1
  247. package/dist/esm/components/Flags/uz.mjs.map +1 -1
  248. package/dist/esm/components/Flags/ve.mjs.map +1 -1
  249. package/dist/esm/components/Flags/vn.mjs.map +1 -1
  250. package/dist/esm/components/Flags/xx.mjs.map +1 -1
  251. package/dist/esm/components/Flags/ye.mjs.map +1 -1
  252. package/dist/esm/components/Flags/za.mjs.map +1 -1
  253. package/dist/esm/components/Flags/zw.mjs.map +1 -1
  254. package/dist/esm/components/Footer/index.mjs +1 -1
  255. package/dist/esm/components/Footer/index.mjs.map +1 -1
  256. package/dist/esm/components/Form/FormBase.mjs.map +1 -1
  257. package/dist/esm/components/Form/FormControl.mjs.map +1 -1
  258. package/dist/esm/components/Form/FormDescription.mjs.map +1 -1
  259. package/dist/esm/components/Form/FormField.mjs.map +1 -1
  260. package/dist/esm/components/Form/FormItem.mjs.map +1 -1
  261. package/dist/esm/components/Form/FormLabel.mjs.map +1 -1
  262. package/dist/esm/components/Form/FormMessage.mjs.map +1 -1
  263. package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs.map +1 -1
  264. package/dist/esm/components/Form/elements/CheckboxElement.mjs.map +1 -1
  265. package/dist/esm/components/Form/elements/EditableFieldInputElement.mjs.map +1 -1
  266. package/dist/esm/components/Form/elements/EditableFieldTextAreaElement.mjs.map +1 -1
  267. package/dist/esm/components/Form/elements/FormElement.mjs.map +1 -1
  268. package/dist/esm/components/Form/elements/FormElementWrapper.mjs.map +1 -1
  269. package/dist/esm/components/Form/elements/InputElement.mjs.map +1 -1
  270. package/dist/esm/components/Form/elements/InputPasswordElement.mjs.map +1 -1
  271. package/dist/esm/components/Form/elements/MultiselectElement.mjs.map +1 -1
  272. package/dist/esm/components/Form/elements/OTPElement.mjs.map +1 -1
  273. package/dist/esm/components/Form/elements/SearchInputElement.mjs.map +1 -1
  274. package/dist/esm/components/Form/elements/SelectElement.mjs.map +1 -1
  275. package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs.map +1 -1
  276. package/dist/esm/components/Form/elements/TextAreaElement.mjs.map +1 -1
  277. package/dist/esm/components/Form/layout/FormItemLayout.mjs.map +1 -1
  278. package/dist/esm/components/Form/layout/FormLabelLayout.mjs.map +1 -1
  279. package/dist/esm/components/Form/layout/RequiredStar.mjs.map +1 -1
  280. package/dist/esm/components/HTMLRender/HTMLRender.mjs.map +1 -1
  281. package/dist/esm/components/Headers/index.mjs +1 -1
  282. package/dist/esm/components/Headers/index.mjs.map +1 -1
  283. package/dist/esm/components/HeightResizer/index.mjs +25 -17
  284. package/dist/esm/components/HeightResizer/index.mjs.map +1 -1
  285. package/dist/esm/components/HideShow/index.mjs.map +1 -1
  286. package/dist/esm/components/IDE/Code.mjs.map +1 -1
  287. package/dist/esm/components/IDE/CodeBlockClient.mjs.map +1 -1
  288. package/dist/esm/components/IDE/CodeBlockHighlight.mjs.map +1 -1
  289. package/dist/esm/components/IDE/CodeBlockServer.mjs.map +1 -1
  290. package/dist/esm/components/IDE/CodeBlockShiki.mjs +1 -1
  291. package/dist/esm/components/IDE/CodeBlockShiki.mjs.map +1 -1
  292. package/dist/esm/components/IDE/CodeConditionalRenderer.mjs.map +1 -1
  293. package/dist/esm/components/IDE/CodeContext.mjs.map +1 -1
  294. package/dist/esm/components/IDE/CodeFormatSelector.mjs.map +1 -1
  295. package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs.map +1 -1
  296. package/dist/esm/components/IDE/CopyCode.mjs.map +1 -1
  297. package/dist/esm/components/IDE/FileList.mjs.map +1 -1
  298. package/dist/esm/components/IDE/FileTree.mjs +1 -1
  299. package/dist/esm/components/IDE/FileTree.mjs.map +1 -1
  300. package/dist/esm/components/IDE/IDE.mjs.map +1 -1
  301. package/dist/esm/components/IDE/MarkDownRender.mjs.map +1 -1
  302. package/dist/esm/components/IDE/MonacoCode.mjs.map +1 -1
  303. package/dist/esm/components/IDE/PackageManagerSelector.mjs.map +1 -1
  304. package/dist/esm/components/IDE/code.content.mjs.map +1 -1
  305. package/dist/esm/components/IDE/codeTransformer.mjs.map +1 -1
  306. package/dist/esm/components/IDE/copyCode.content.mjs.map +1 -1
  307. package/dist/esm/components/IDE/createFileTree.mjs.map +1 -1
  308. package/dist/esm/components/IDE/selectors.content.mjs.map +1 -1
  309. package/dist/esm/components/InformationTag/index.mjs.map +1 -1
  310. package/dist/esm/components/Input/Checkbox.mjs.map +1 -1
  311. package/dist/esm/components/Input/Input.mjs.map +1 -1
  312. package/dist/esm/components/Input/InputPassword.mjs.map +1 -1
  313. package/dist/esm/components/Input/OTPInput.mjs.map +1 -1
  314. package/dist/esm/components/Input/Radio.mjs.map +1 -1
  315. package/dist/esm/components/Input/SearchInput.mjs.map +1 -1
  316. package/dist/esm/components/KeyboardScreenAdapter/index.mjs.map +1 -1
  317. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs.map +1 -1
  318. package/dist/esm/components/Label/index.mjs.map +1 -1
  319. package/dist/esm/components/LanguageBackground/LanguageBackground.mjs +23 -0
  320. package/dist/esm/components/LanguageBackground/LanguageBackground.mjs.map +1 -0
  321. package/dist/esm/components/LanguageBackground/LanguageSection.mjs.map +1 -1
  322. package/dist/esm/components/LanguageBackground/index.mjs +2 -22
  323. package/dist/esm/components/Link/Link.mjs +3 -3
  324. package/dist/esm/components/Link/Link.mjs.map +1 -1
  325. package/dist/esm/components/Loader/index.content.mjs.map +1 -1
  326. package/dist/esm/components/Loader/index.mjs +1 -1
  327. package/dist/esm/components/Loader/index.mjs.map +1 -1
  328. package/dist/esm/components/Loader/spinner.mjs.map +1 -1
  329. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs.map +1 -1
  330. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs.map +1 -1
  331. package/dist/esm/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs.map +1 -1
  332. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs.map +1 -1
  333. package/dist/esm/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs.map +1 -1
  334. package/dist/esm/components/Logo/Logo.mjs.map +1 -1
  335. package/dist/esm/components/Logo/LogoTextOnly.mjs.map +1 -1
  336. package/dist/esm/components/Logo/LogoWithText.mjs.map +1 -1
  337. package/dist/esm/components/Logo/LogoWithTextBelow.mjs.map +1 -1
  338. package/dist/esm/components/MarkDownRender/MarkDownIframe.mjs.map +1 -1
  339. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
  340. package/dist/esm/components/MaxHeightSmoother/index.mjs.map +1 -1
  341. package/dist/esm/components/MaxWidthSmoother/index.mjs +14 -11
  342. package/dist/esm/components/MaxWidthSmoother/index.mjs.map +1 -1
  343. package/dist/esm/components/Modal/Modal.mjs.map +1 -1
  344. package/dist/esm/components/Navbar/Burger.mjs.map +1 -1
  345. package/dist/esm/components/Navbar/DesktopNavbar.mjs +1 -1
  346. package/dist/esm/components/Navbar/DesktopNavbar.mjs.map +1 -1
  347. package/dist/esm/components/Navbar/MobileNavbar.mjs.map +1 -1
  348. package/dist/esm/components/Navbar/index.mjs.map +1 -1
  349. package/dist/esm/components/Navbar/useNavigation.mjs.map +1 -1
  350. package/dist/esm/components/Pagination/NumberItemsSelector.mjs.map +1 -1
  351. package/dist/esm/components/Pagination/Pagination.mjs.map +1 -1
  352. package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs.map +1 -1
  353. package/dist/esm/components/Pagination/pagination.content.mjs.map +1 -1
  354. package/dist/esm/components/Pattern/DotPattern.mjs.map +1 -1
  355. package/dist/esm/components/Pattern/GridPattern.mjs.map +1 -1
  356. package/dist/esm/components/Pattern/SpotLight.mjs.map +1 -1
  357. package/dist/esm/components/Popover/dynamic.mjs.map +1 -1
  358. package/dist/esm/components/Popover/static.mjs.map +1 -1
  359. package/dist/esm/components/PressableSpan/PressableSpan.mjs.map +1 -1
  360. package/dist/esm/components/RightDrawer/RightDrawer.mjs.map +1 -1
  361. package/dist/esm/components/RightDrawer/isElementAtTopAndNotCovered.mjs.map +1 -1
  362. package/dist/esm/components/RightDrawer/rightDrawer.content.mjs.map +1 -1
  363. package/dist/esm/components/RightDrawer/useRightDrawer.mjs.map +1 -1
  364. package/dist/esm/components/Select/Multiselect.mjs.map +1 -1
  365. package/dist/esm/components/Select/Select.mjs.map +1 -1
  366. package/dist/esm/components/SocialNetworks/DiscordLogo.mjs.map +1 -1
  367. package/dist/esm/components/SocialNetworks/FacebookLogo.mjs.map +1 -1
  368. package/dist/esm/components/SocialNetworks/InstagramLogo.mjs.map +1 -1
  369. package/dist/esm/components/SocialNetworks/ProductHuntLogo.mjs.map +1 -1
  370. package/dist/esm/components/SocialNetworks/TiktokLogo.mjs.map +1 -1
  371. package/dist/esm/components/SocialNetworks/XLogo.mjs.map +1 -1
  372. package/dist/esm/components/SocialNetworks/YoutubeLogo.mjs.map +1 -1
  373. package/dist/esm/components/SocialNetworks/index.mjs.map +1 -1
  374. package/dist/esm/components/Steps/index.mjs.map +1 -1
  375. package/dist/esm/components/Steps/steps.content.mjs.map +1 -1
  376. package/dist/esm/components/SwitchSelector/SwitchSelector.mjs.map +1 -1
  377. package/dist/esm/components/SwitchSelector/VerticalSwitchSelector.mjs.map +1 -1
  378. package/dist/esm/components/SwitchSelector/useSwitchSelector.mjs.map +1 -1
  379. package/dist/esm/components/Tab/Tab.mjs.map +1 -1
  380. package/dist/esm/components/Tab/TabContext.mjs.map +1 -1
  381. package/dist/esm/components/TabSelector/TabSelector.mjs.map +1 -1
  382. package/dist/esm/components/Table/ExpandButton.mjs.map +1 -1
  383. package/dist/esm/components/Table/SmartTable.mjs.map +1 -1
  384. package/dist/esm/components/Table/Table.mjs.map +1 -1
  385. package/dist/esm/components/Table/TableElements.mjs.map +1 -1
  386. package/dist/esm/components/Table/table.content.mjs.map +1 -1
  387. package/dist/esm/components/Table/useTableWidths.mjs.map +1 -1
  388. package/dist/esm/components/Tag/index.mjs.map +1 -1
  389. package/dist/esm/components/TechLogo/TechLogo.mjs.map +1 -1
  390. package/dist/esm/components/TechLogo/logos/Adonis.mjs.map +1 -1
  391. package/dist/esm/components/TechLogo/logos/Angular.mjs.map +1 -1
  392. package/dist/esm/components/TechLogo/logos/Anthropic.mjs.map +1 -1
  393. package/dist/esm/components/TechLogo/logos/Astro.mjs.map +1 -1
  394. package/dist/esm/components/TechLogo/logos/Atlassian.mjs.map +1 -1
  395. package/dist/esm/components/TechLogo/logos/Bitbucket.mjs.map +1 -1
  396. package/dist/esm/components/TechLogo/logos/ChatGPT.mjs.map +1 -1
  397. package/dist/esm/components/TechLogo/logos/Claude.mjs.map +1 -1
  398. package/dist/esm/components/TechLogo/logos/DeepSeek.mjs.map +1 -1
  399. package/dist/esm/components/TechLogo/logos/Express.mjs.map +1 -1
  400. package/dist/esm/components/TechLogo/logos/Fastify.mjs.map +1 -1
  401. package/dist/esm/components/TechLogo/logos/Gemini.mjs.map +1 -1
  402. package/dist/esm/components/TechLogo/logos/GitHub.mjs.map +1 -1
  403. package/dist/esm/components/TechLogo/logos/GitLab.mjs.map +1 -1
  404. package/dist/esm/components/TechLogo/logos/Google.mjs.map +1 -1
  405. package/dist/esm/components/TechLogo/logos/GoogleAI.mjs.map +1 -1
  406. package/dist/esm/components/TechLogo/logos/Grok.mjs.map +1 -1
  407. package/dist/esm/components/TechLogo/logos/Hono.mjs.map +1 -1
  408. package/dist/esm/components/TechLogo/logos/LinkedIn.mjs.map +1 -1
  409. package/dist/esm/components/TechLogo/logos/Lit.mjs.map +1 -1
  410. package/dist/esm/components/TechLogo/logos/Lynx.mjs.map +1 -1
  411. package/dist/esm/components/TechLogo/logos/Microsoft.mjs.map +1 -1
  412. package/dist/esm/components/TechLogo/logos/Mistral.mjs.map +1 -1
  413. package/dist/esm/components/TechLogo/logos/NestJS.mjs.map +1 -1
  414. package/dist/esm/components/TechLogo/logos/Nextjs.mjs.map +1 -1
  415. package/dist/esm/components/TechLogo/logos/Node.mjs.map +1 -1
  416. package/dist/esm/components/TechLogo/logos/Nuxt.mjs.map +1 -1
  417. package/dist/esm/components/TechLogo/logos/Ollama.mjs.map +1 -1
  418. package/dist/esm/components/TechLogo/logos/OpenAI.mjs.map +1 -1
  419. package/dist/esm/components/TechLogo/logos/Perplexity.mjs.map +1 -1
  420. package/dist/esm/components/TechLogo/logos/Preact.mjs.map +1 -1
  421. package/dist/esm/components/TechLogo/logos/Reactjs.mjs.map +1 -1
  422. package/dist/esm/components/TechLogo/logos/Solid.mjs.map +1 -1
  423. package/dist/esm/components/TechLogo/logos/Svelte.mjs.map +1 -1
  424. package/dist/esm/components/TechLogo/logos/Tanstack.mjs.map +1 -1
  425. package/dist/esm/components/TechLogo/logos/Vanilla.mjs.map +1 -1
  426. package/dist/esm/components/TechLogo/logos/Vitejs.mjs.map +1 -1
  427. package/dist/esm/components/TechLogo/logos/Vuejs.mjs.map +1 -1
  428. package/dist/esm/components/Terminal/Terminal.mjs.map +1 -1
  429. package/dist/esm/components/Terminal/terminal.content.mjs.map +1 -1
  430. package/dist/esm/components/TextArea/AutoSizeTextArea.mjs +2 -1
  431. package/dist/esm/components/TextArea/AutoSizeTextArea.mjs.map +1 -1
  432. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs.map +1 -1
  433. package/dist/esm/components/TextArea/ContentEditableTextArea.mjs.map +1 -1
  434. package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
  435. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs.map +1 -1
  436. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs.map +1 -1
  437. package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
  438. package/dist/esm/components/Toaster/Toaster.mjs.map +1 -1
  439. package/dist/esm/components/Toaster/useToast.mjs.map +1 -1
  440. package/dist/esm/components/WithResizer/index.mjs.map +1 -1
  441. package/dist/esm/components/index.mjs +1 -1
  442. package/dist/esm/hooks/useDevice.mjs +8 -1
  443. package/dist/esm/hooks/useDevice.mjs.map +1 -1
  444. package/dist/esm/hooks/useGetElementById.mjs.map +1 -1
  445. package/dist/esm/hooks/useGetElementOrWindow.mjs.map +1 -1
  446. package/dist/esm/hooks/useHorizontalSwipe.mjs.map +1 -1
  447. package/dist/esm/hooks/useIsDarkMode.mjs.map +1 -1
  448. package/dist/esm/hooks/useIsMounted.mjs.map +1 -1
  449. package/dist/esm/hooks/useItemSelector.mjs.map +1 -1
  450. package/dist/esm/hooks/useKeyboardDetector.mjs.map +1 -1
  451. package/dist/esm/hooks/usePersistedStore.mjs.map +1 -1
  452. package/dist/esm/hooks/useScreenWidth.mjs.map +1 -1
  453. package/dist/esm/hooks/useScrollBlockage/index.mjs.map +1 -1
  454. package/dist/esm/hooks/useScrollBlockage/useScrollBlockageStore.mjs.map +1 -1
  455. package/dist/esm/hooks/useScrollDetection.mjs.map +1 -1
  456. package/dist/esm/hooks/useScrollY.mjs.map +1 -1
  457. package/dist/esm/hooks/useSearch.mjs.map +1 -1
  458. package/dist/esm/libs/auth.mjs.map +1 -1
  459. package/dist/esm/providers/ReactQueryProvider.mjs +20 -1
  460. package/dist/esm/providers/ReactQueryProvider.mjs.map +1 -1
  461. package/dist/esm/tailwind.config.mjs.map +1 -1
  462. package/dist/esm/utils/cn.mjs.map +1 -1
  463. package/dist/types/api/hooks/auth.d.ts.map +1 -1
  464. package/dist/types/api/hooks/showcaseProject.d.ts.map +1 -1
  465. package/dist/types/api/useAuth/useOAuth2.d.ts.map +1 -1
  466. package/dist/types/api/useIntlayerAPI.d.ts +103 -101
  467. package/dist/types/api/useIntlayerAPI.d.ts.map +1 -1
  468. package/dist/types/api/useUser/index.d.ts +3 -1
  469. package/dist/types/api/useUser/index.d.ts.map +1 -1
  470. package/dist/types/components/Accordion/Accordion.d.ts.map +1 -1
  471. package/dist/types/components/Avatar/image.d.ts.map +1 -1
  472. package/dist/types/components/Avatar/index.d.ts.map +1 -1
  473. package/dist/types/components/Badge/index.d.ts +3 -2
  474. package/dist/types/components/Badge/index.d.ts.map +1 -1
  475. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +3 -1
  476. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts.map +1 -1
  477. package/dist/types/components/Breadcrumb/index.d.ts +2 -1
  478. package/dist/types/components/Breadcrumb/index.d.ts.map +1 -1
  479. package/dist/types/components/Browser/Browser.content.d.ts +15 -13
  480. package/dist/types/components/Browser/Browser.content.d.ts.map +1 -1
  481. package/dist/types/components/Browser/Browser.d.ts +2 -1
  482. package/dist/types/components/Browser/Browser.d.ts.map +1 -1
  483. package/dist/types/components/Browser/extractUrlFromSitemap.d.ts.map +1 -1
  484. package/dist/types/components/Button/Button.d.ts +5 -4
  485. package/dist/types/components/Button/Button.d.ts.map +1 -1
  486. package/dist/types/components/Carousel/index.content.d.ts +5 -3
  487. package/dist/types/components/Carousel/index.content.d.ts.map +1 -1
  488. package/dist/types/components/Carousel/index.d.ts.map +1 -1
  489. package/dist/types/components/ClickOutsideDiv/index.d.ts.map +1 -1
  490. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -1
  491. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
  492. package/dist/types/components/Command/index.d.ts +15 -14
  493. package/dist/types/components/Command/index.d.ts.map +1 -1
  494. package/dist/types/components/Container/index.d.ts +4 -3
  495. package/dist/types/components/Container/index.d.ts.map +1 -1
  496. package/dist/types/components/ContentEditor/ContentEditor.d.ts.map +1 -1
  497. package/dist/types/components/ContentEditor/ContentEditorInput.d.ts.map +1 -1
  498. package/dist/types/components/ContentEditor/ContentEditorTextArea.d.ts.map +1 -1
  499. package/dist/types/components/ContentSelector/ContentSelector.d.ts.map +1 -1
  500. package/dist/types/components/CopyButton/CopyButton.content.d.ts +3 -1
  501. package/dist/types/components/CopyButton/CopyButton.content.d.ts.map +1 -1
  502. package/dist/types/components/CopyButton/index.d.ts.map +1 -1
  503. package/dist/types/components/CopyToClipboard/index.d.ts.map +1 -1
  504. package/dist/types/components/DictionaryEditor/DictionaryEditor.d.ts.map +1 -1
  505. package/dist/types/components/DictionaryEditor/ItemLayout.d.ts.map +1 -1
  506. package/dist/types/components/DictionaryEditor/NodeWrapper/ArrayWrapper.d.ts.map +1 -1
  507. package/dist/types/components/DictionaryEditor/NodeWrapper/BooleanWrapper.d.ts.map +1 -1
  508. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts +1 -1
  509. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts.map +1 -1
  510. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts +1 -1
  511. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts.map +1 -1
  512. package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts.map +1 -1
  513. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts +1 -1
  514. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts.map +1 -1
  515. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts +1 -1
  516. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts.map +1 -1
  517. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts +1 -1
  518. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts.map +1 -1
  519. package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts.map +1 -1
  520. package/dist/types/components/DictionaryEditor/NodeWrapper/NumberWrapper.d.ts.map +1 -1
  521. package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts +1 -1
  522. package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts.map +1 -1
  523. package/dist/types/components/DictionaryEditor/NodeWrapper/StringWrapper.d.ts.map +1 -1
  524. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts +1 -1
  525. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts.map +1 -1
  526. package/dist/types/components/DictionaryEditor/NodeWrapper/index.d.ts.map +1 -1
  527. package/dist/types/components/DictionaryFieldEditor/ContentEditor.d.ts.map +1 -1
  528. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts +3 -1
  529. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts.map +1 -1
  530. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts +3 -2
  531. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  532. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts.map +1 -1
  533. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +8 -6
  534. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts.map +1 -1
  535. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +6 -4
  536. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
  537. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts.map +1 -1
  538. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +29 -27
  539. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts.map +1 -1
  540. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +18 -16
  541. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts.map +1 -1
  542. package/dist/types/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts.map +1 -1
  543. package/dist/types/components/DictionaryFieldEditor/EnumKeyInput.d.ts.map +1 -1
  544. package/dist/types/components/DictionaryFieldEditor/JSONEditor.d.ts.map +1 -1
  545. package/dist/types/components/DictionaryFieldEditor/KeyPathBreadcrumb.d.ts.map +1 -1
  546. package/dist/types/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts.map +1 -1
  547. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +12 -10
  548. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts.map +1 -1
  549. package/dist/types/components/DictionaryFieldEditor/NodeTypeSelector.d.ts.map +1 -1
  550. package/dist/types/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts.map +1 -1
  551. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +18 -16
  552. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts.map +1 -1
  553. package/dist/types/components/DictionaryFieldEditor/StructureEditor.d.ts.map +1 -1
  554. package/dist/types/components/DictionaryFieldEditor/StructureView/StructureView.d.ts.map +1 -1
  555. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +6 -4
  556. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts.map +1 -1
  557. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.d.ts.map +1 -1
  558. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.d.ts.map +1 -1
  559. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +5 -3
  560. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts.map +1 -1
  561. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +4 -2
  562. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts.map +1 -1
  563. package/dist/types/components/DictionaryFieldEditor/getIsEditableSection.d.ts.map +1 -1
  564. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +18 -16
  565. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
  566. package/dist/types/components/DropDown/index.d.ts.map +1 -1
  567. package/dist/types/components/EditableField/EditableFieldInput.d.ts.map +1 -1
  568. package/dist/types/components/EditableField/EditableFieldLayout.d.ts.map +1 -1
  569. package/dist/types/components/EditableField/EditableFieldTextArea.d.ts.map +1 -1
  570. package/dist/types/components/ExpandCollapse/ExpandCollapse.d.ts.map +1 -1
  571. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +3 -1
  572. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts.map +1 -1
  573. package/dist/types/components/Flags/Flag.d.ts.map +1 -1
  574. package/dist/types/components/Flags/flags.d.ts.map +1 -1
  575. package/dist/types/components/Footer/index.d.ts.map +1 -1
  576. package/dist/types/components/Form/Form.d.ts.map +1 -1
  577. package/dist/types/components/Form/FormBase.d.ts +4 -2
  578. package/dist/types/components/Form/FormBase.d.ts.map +1 -1
  579. package/dist/types/components/Form/FormField.d.ts +4 -2
  580. package/dist/types/components/Form/FormField.d.ts.map +1 -1
  581. package/dist/types/components/Form/FormItem.d.ts +2 -1
  582. package/dist/types/components/Form/FormItem.d.ts.map +1 -1
  583. package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts.map +1 -1
  584. package/dist/types/components/Form/elements/CheckboxElement.d.ts.map +1 -1
  585. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts +2 -1
  586. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts.map +1 -1
  587. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts +2 -1
  588. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts.map +1 -1
  589. package/dist/types/components/Form/elements/FormElement.d.ts +2 -1
  590. package/dist/types/components/Form/elements/FormElement.d.ts.map +1 -1
  591. package/dist/types/components/Form/elements/FormElementWrapper.d.ts.map +1 -1
  592. package/dist/types/components/Form/elements/InputElement.d.ts.map +1 -1
  593. package/dist/types/components/Form/elements/InputPasswordElement.d.ts.map +1 -1
  594. package/dist/types/components/Form/elements/MultiselectElement.d.ts +2 -1
  595. package/dist/types/components/Form/elements/MultiselectElement.d.ts.map +1 -1
  596. package/dist/types/components/Form/elements/OTPElement.d.ts +2 -1
  597. package/dist/types/components/Form/elements/OTPElement.d.ts.map +1 -1
  598. package/dist/types/components/Form/elements/SearchInputElement.d.ts.map +1 -1
  599. package/dist/types/components/Form/elements/SelectElement.d.ts +2 -1
  600. package/dist/types/components/Form/elements/SelectElement.d.ts.map +1 -1
  601. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts +2 -1
  602. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts.map +1 -1
  603. package/dist/types/components/Form/elements/TextAreaElement.d.ts.map +1 -1
  604. package/dist/types/components/Form/layout/FormItemLayout.d.ts.map +1 -1
  605. package/dist/types/components/Form/layout/FormLabelLayout.d.ts.map +1 -1
  606. package/dist/types/components/Form/layout/RequiredStar.d.ts.map +1 -1
  607. package/dist/types/components/HTMLRender/HTMLRender.d.ts.map +1 -1
  608. package/dist/types/components/Headers/index.d.ts.map +1 -1
  609. package/dist/types/components/HeightResizer/index.d.ts +5 -0
  610. package/dist/types/components/HeightResizer/index.d.ts.map +1 -1
  611. package/dist/types/components/HideShow/index.d.ts.map +1 -1
  612. package/dist/types/components/IDE/Code.d.ts.map +1 -1
  613. package/dist/types/components/IDE/CodeBlockClient.d.ts.map +1 -1
  614. package/dist/types/components/IDE/CodeBlockHighlight.d.ts +2 -1
  615. package/dist/types/components/IDE/CodeBlockHighlight.d.ts.map +1 -1
  616. package/dist/types/components/IDE/CodeBlockServer.d.ts.map +1 -1
  617. package/dist/types/components/IDE/CodeBlockShiki.d.ts.map +1 -1
  618. package/dist/types/components/IDE/CodeContext.d.ts +2 -1
  619. package/dist/types/components/IDE/CodeContext.d.ts.map +1 -1
  620. package/dist/types/components/IDE/CodeFormatSelector.d.ts.map +1 -1
  621. package/dist/types/components/IDE/ContentDeclarationFormatSelector.d.ts.map +1 -1
  622. package/dist/types/components/IDE/CopyCode.d.ts.map +1 -1
  623. package/dist/types/components/IDE/FileList.d.ts.map +1 -1
  624. package/dist/types/components/IDE/FileTree.d.ts.map +1 -1
  625. package/dist/types/components/IDE/IDE.d.ts.map +1 -1
  626. package/dist/types/components/IDE/MarkDownRender.d.ts.map +1 -1
  627. package/dist/types/components/IDE/MonacoCode.d.ts.map +1 -1
  628. package/dist/types/components/IDE/PackageManagerSelector.d.ts.map +1 -1
  629. package/dist/types/components/IDE/code.content.d.ts +4 -2
  630. package/dist/types/components/IDE/code.content.d.ts.map +1 -1
  631. package/dist/types/components/IDE/codeTransformer.d.ts.map +1 -1
  632. package/dist/types/components/IDE/copyCode.content.d.ts +4 -2
  633. package/dist/types/components/IDE/copyCode.content.d.ts.map +1 -1
  634. package/dist/types/components/IDE/createFileTree.d.ts.map +1 -1
  635. package/dist/types/components/IDE/index.d.ts +1 -1
  636. package/dist/types/components/IDE/selectors.content.d.ts +8 -6
  637. package/dist/types/components/IDE/selectors.content.d.ts.map +1 -1
  638. package/dist/types/components/InformationTag/index.d.ts.map +1 -1
  639. package/dist/types/components/Input/Checkbox.d.ts +3 -2
  640. package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
  641. package/dist/types/components/Input/Input.d.ts +2 -1
  642. package/dist/types/components/Input/Input.d.ts.map +1 -1
  643. package/dist/types/components/Input/InputPassword.d.ts.map +1 -1
  644. package/dist/types/components/Input/OTPInput.d.ts +5 -3
  645. package/dist/types/components/Input/OTPInput.d.ts.map +1 -1
  646. package/dist/types/components/Input/Radio.d.ts +3 -2
  647. package/dist/types/components/Input/Radio.d.ts.map +1 -1
  648. package/dist/types/components/Input/SearchInput.d.ts +2 -1
  649. package/dist/types/components/Input/SearchInput.d.ts.map +1 -1
  650. package/dist/types/components/KeyboardScreenAdapter/index.d.ts.map +1 -1
  651. package/dist/types/components/KeyboardShortcut/KeyboardShortcut.d.ts.map +1 -1
  652. package/dist/types/components/Label/index.d.ts.map +1 -1
  653. package/dist/types/components/LanguageBackground/LanguageBackground.d.ts +7 -0
  654. package/dist/types/components/LanguageBackground/LanguageBackground.d.ts.map +1 -0
  655. package/dist/types/components/LanguageBackground/index.d.ts +2 -7
  656. package/dist/types/components/Link/Link.d.ts +4 -3
  657. package/dist/types/components/Link/Link.d.ts.map +1 -1
  658. package/dist/types/components/Loader/index.content.d.ts +3 -1
  659. package/dist/types/components/Loader/index.content.d.ts.map +1 -1
  660. package/dist/types/components/Loader/index.d.ts +1 -1
  661. package/dist/types/components/Loader/index.d.ts.map +1 -1
  662. package/dist/types/components/Loader/spinner.d.ts +2 -1
  663. package/dist/types/components/Loader/spinner.d.ts.map +1 -1
  664. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts.map +1 -1
  665. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.d.ts.map +1 -1
  666. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +10 -8
  667. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts.map +1 -1
  668. package/dist/types/components/LocaleSwitcherDropDown/LocaleSwitcher.d.ts.map +1 -1
  669. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +8 -6
  670. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts.map +1 -1
  671. package/dist/types/components/Logo/Logo.d.ts.map +1 -1
  672. package/dist/types/components/Logo/LogoWithTextBelow.d.ts.map +1 -1
  673. package/dist/types/components/MarkDownRender/MarkDownIframe.d.ts.map +1 -1
  674. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts +45 -44
  675. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts.map +1 -1
  676. package/dist/types/components/MarkDownRender/index.d.ts +1 -1
  677. package/dist/types/components/MaxHeightSmoother/index.d.ts.map +1 -1
  678. package/dist/types/components/MaxWidthSmoother/index.d.ts +4 -1
  679. package/dist/types/components/MaxWidthSmoother/index.d.ts.map +1 -1
  680. package/dist/types/components/Modal/Modal.d.ts.map +1 -1
  681. package/dist/types/components/Navbar/Burger.d.ts +2 -1
  682. package/dist/types/components/Navbar/Burger.d.ts.map +1 -1
  683. package/dist/types/components/Navbar/DesktopNavbar.d.ts +2 -1
  684. package/dist/types/components/Navbar/DesktopNavbar.d.ts.map +1 -1
  685. package/dist/types/components/Navbar/MobileNavbar.d.ts +2 -1
  686. package/dist/types/components/Navbar/MobileNavbar.d.ts.map +1 -1
  687. package/dist/types/components/Navbar/index.d.ts +2 -1
  688. package/dist/types/components/Navbar/index.d.ts.map +1 -1
  689. package/dist/types/components/Navbar/useNavigation.d.ts.map +1 -1
  690. package/dist/types/components/Pagination/NumberItemsSelector.d.ts.map +1 -1
  691. package/dist/types/components/Pagination/Pagination.d.ts +2 -1
  692. package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
  693. package/dist/types/components/Pagination/ShowingResultsNumberItems.d.ts.map +1 -1
  694. package/dist/types/components/Pagination/pagination.content.d.ts +7 -5
  695. package/dist/types/components/Pagination/pagination.content.d.ts.map +1 -1
  696. package/dist/types/components/Pattern/DotPattern.d.ts.map +1 -1
  697. package/dist/types/components/Pattern/GridPattern.d.ts.map +1 -1
  698. package/dist/types/components/Pattern/SpotLight.d.ts.map +1 -1
  699. package/dist/types/components/Popover/dynamic.d.ts.map +1 -1
  700. package/dist/types/components/Popover/static.d.ts.map +1 -1
  701. package/dist/types/components/PressableSpan/PressableSpan.d.ts.map +1 -1
  702. package/dist/types/components/RightDrawer/RightDrawer.d.ts.map +1 -1
  703. package/dist/types/components/RightDrawer/isElementAtTopAndNotCovered.d.ts.map +1 -1
  704. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts +4 -2
  705. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts.map +1 -1
  706. package/dist/types/components/RightDrawer/useRightDrawer.d.ts.map +1 -1
  707. package/dist/types/components/Select/Multiselect.d.ts.map +1 -1
  708. package/dist/types/components/Select/Select.d.ts +3 -2
  709. package/dist/types/components/Select/Select.d.ts.map +1 -1
  710. package/dist/types/components/SocialNetworks/index.d.ts +2 -1
  711. package/dist/types/components/SocialNetworks/index.d.ts.map +1 -1
  712. package/dist/types/components/Steps/index.d.ts.map +1 -1
  713. package/dist/types/components/Steps/steps.content.d.ts +4 -2
  714. package/dist/types/components/Steps/steps.content.d.ts.map +1 -1
  715. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts +7 -5
  716. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts.map +1 -1
  717. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts +6 -4
  718. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts.map +1 -1
  719. package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts +4 -3
  720. package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts.map +1 -1
  721. package/dist/types/components/Tab/Tab.d.ts +5 -3
  722. package/dist/types/components/Tab/Tab.d.ts.map +1 -1
  723. package/dist/types/components/Tab/TabContext.d.ts +2 -1
  724. package/dist/types/components/Tab/TabContext.d.ts.map +1 -1
  725. package/dist/types/components/TabSelector/TabSelector.d.ts +5 -3
  726. package/dist/types/components/TabSelector/TabSelector.d.ts.map +1 -1
  727. package/dist/types/components/Table/ExpandButton.d.ts.map +1 -1
  728. package/dist/types/components/Table/SmartTable.d.ts.map +1 -1
  729. package/dist/types/components/Table/Table.d.ts +2 -1
  730. package/dist/types/components/Table/Table.d.ts.map +1 -1
  731. package/dist/types/components/Table/TableElements.d.ts +5 -4
  732. package/dist/types/components/Table/TableElements.d.ts.map +1 -1
  733. package/dist/types/components/Table/table.content.d.ts +4 -2
  734. package/dist/types/components/Table/table.content.d.ts.map +1 -1
  735. package/dist/types/components/Tag/index.d.ts +3 -2
  736. package/dist/types/components/Tag/index.d.ts.map +1 -1
  737. package/dist/types/components/TechLogo/TechLogo.d.ts.map +1 -1
  738. package/dist/types/components/TechLogo/logos/Lit.d.ts +2 -1
  739. package/dist/types/components/TechLogo/logos/Lit.d.ts.map +1 -1
  740. package/dist/types/components/TechLogo/logos/Vanilla.d.ts +2 -1
  741. package/dist/types/components/TechLogo/logos/Vanilla.d.ts.map +1 -1
  742. package/dist/types/components/Terminal/Terminal.d.ts.map +1 -1
  743. package/dist/types/components/Terminal/terminal.content.d.ts +4 -2
  744. package/dist/types/components/Terminal/terminal.content.d.ts.map +1 -1
  745. package/dist/types/components/TextArea/AutoSizeTextArea.d.ts +1 -1
  746. package/dist/types/components/TextArea/AutoSizeTextArea.d.ts.map +1 -1
  747. package/dist/types/components/TextArea/AutocompleteTextArea.d.ts.map +1 -1
  748. package/dist/types/components/TextArea/ContentEditableTextArea.d.ts.map +1 -1
  749. package/dist/types/components/TextArea/TextArea.d.ts +1 -1
  750. package/dist/types/components/TextArea/TextArea.d.ts.map +1 -1
  751. package/dist/types/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.d.ts.map +1 -1
  752. package/dist/types/components/ThemeSwitcherDropDown/MobileThemeSwitcher.d.ts.map +1 -1
  753. package/dist/types/components/Toaster/Toast.d.ts +3 -2
  754. package/dist/types/components/Toaster/Toast.d.ts.map +1 -1
  755. package/dist/types/components/Toaster/Toaster.d.ts +3 -1
  756. package/dist/types/components/Toaster/Toaster.d.ts.map +1 -1
  757. package/dist/types/components/Toaster/useToast.d.ts.map +1 -1
  758. package/dist/types/components/WithResizer/index.d.ts.map +1 -1
  759. package/dist/types/components/index.d.ts +2 -2
  760. package/dist/types/hooks/useDevice.d.ts.map +1 -1
  761. package/dist/types/hooks/useGetElementById.d.ts.map +1 -1
  762. package/dist/types/hooks/useGetElementOrWindow.d.ts.map +1 -1
  763. package/dist/types/hooks/useHorizontalSwipe.d.ts.map +1 -1
  764. package/dist/types/hooks/useItemSelector.d.ts.map +1 -1
  765. package/dist/types/hooks/useScrollBlockage/index.d.ts.map +1 -1
  766. package/dist/types/hooks/useScrollBlockage/useScrollBlockageStore.d.ts.map +1 -1
  767. package/dist/types/hooks/useScrollDetection.d.ts.map +1 -1
  768. package/dist/types/hooks/useScrollY.d.ts.map +1 -1
  769. package/dist/types/hooks/useSearch.d.ts.map +1 -1
  770. package/dist/types/libs/auth.d.ts.map +1 -1
  771. package/dist/types/providers/ReactQueryProvider.d.ts.map +1 -1
  772. package/dist/types/routes.d.ts.map +1 -1
  773. package/dist/types/utils/cn.d.ts.map +1 -1
  774. package/package.json +35 -35
  775. package/dist/esm/components/LanguageBackground/index.mjs.map +0 -1
  776. package/dist/types/components/LanguageBackground/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useIsDarkMode.mjs","names":[],"sources":["../../../src/hooks/useIsDarkMode.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useIsDarkMode = () => {\n const [isDarkMode, setIsDarkMode] = useState(false);\n\n useEffect(() => {\n const htmlElement = document.querySelector('html');\n const isDarkMode = htmlElement?.getAttribute('data-theme') === 'dark';\n setIsDarkMode(isDarkMode);\n }, []);\n\n return isDarkMode;\n};\n"],"mappings":";;;;;AAIA,MAAa,sBAAsB;CACjC,MAAM,CAAC,YAAY,iBAAiB,SAAS,KAAK;CAElD,gBAAgB;EAGd,cAFoB,SAAS,cAAc,MACd,GAAG,aAAa,YAAY,MAAM,MACvC;CAC1B,GAAG,CAAC,CAAC;CAEL,OAAO;AACT"}
1
+ {"version":3,"file":"useIsDarkMode.mjs","names":[],"sources":["../../../src/hooks/useIsDarkMode.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useIsDarkMode = () => {\n const [isDarkMode, setIsDarkMode] = useState(false);\n\n useEffect(() => {\n const htmlElement = document.querySelector('html');\n const isDarkMode = htmlElement?.getAttribute('data-theme') === 'dark';\n setIsDarkMode(isDarkMode);\n }, []);\n\n return isDarkMode;\n};\n"],"mappings":";;;;;AAIA,MAAa,sBAAsB;CACjC,MAAM,CAAC,YAAY,iBAAiB,SAAS,MAAM;AAEnD,iBAAgB;AAGd,gBAFoB,SAAS,cAAc,OACb,EAAE,aAAa,aAAa,KAAK,OACtC;IACxB,EAAE,CAAC;AAEN,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIsMounted.mjs","names":[],"sources":["../../../src/hooks/useIsMounted.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useIsMounted = () => {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n return isMounted;\n};\n"],"mappings":";;;;;AAIA,MAAa,qBAAqB;CAChC,MAAM,CAAC,WAAW,gBAAgB,SAAS,KAAK;CAEhD,gBAAgB;EACd,aAAa,IAAI;CACnB,GAAG,CAAC,CAAC;CAEL,OAAO;AACT"}
1
+ {"version":3,"file":"useIsMounted.mjs","names":[],"sources":["../../../src/hooks/useIsMounted.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useIsMounted = () => {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n return isMounted;\n};\n"],"mappings":";;;;;AAIA,MAAa,qBAAqB;CAChC,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;AAEjD,iBAAgB;AACd,eAAa,KAAK;IACjB,EAAE,CAAC;AAEN,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"useItemSelector.mjs","names":[],"sources":["../../../src/hooks/useItemSelector.ts"],"sourcesContent":["'use client';\n\nimport { type RefObject, useLayoutEffect, useRef, useState } from 'react';\n\nexport type ItemSelectorOrientation = 'horizontal' | 'vertical';\n\ntype HorizontalStyleState = {\n left: number;\n width: number;\n opacity: number;\n};\n\ntype VerticalStyleState = {\n top: number;\n height: number;\n opacity: number;\n};\n\ntype StyleState = HorizontalStyleState | VerticalStyleState;\n\nconst selectorDefault = (option: HTMLElement) =>\n option?.getAttribute('aria-selected') === 'true';\n\ntype Options = {\n selector?: (option: HTMLElement, index: number) => boolean;\n isHoverable?: boolean;\n orientation?: ItemSelectorOrientation;\n};\n\nexport const useItemSelector = (\n optionsRefs: RefObject<HTMLElement[]>,\n {\n selector = selectorDefault,\n isHoverable = false,\n orientation = 'horizontal',\n }: Options = {\n selector: selectorDefault,\n isHoverable: false,\n orientation: 'horizontal',\n }\n) => {\n const [choiceIndicatorPosition, setChoiceIndicatorPosition] =\n useState<StyleState | null>(null);\n\n const [hoveredItem, setHoveredItem] = useState<HTMLElement | null>(null);\n const hideTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const lastPositionRef = useRef<StyleState | null>(null);\n\n const itemsLength = optionsRefs.current.length;\n\n const calculatePosition = () => {\n let targetElement: HTMLElement | null = null;\n\n if (hoveredItem) {\n targetElement = hoveredItem;\n // Clear any pending hide timeout when hovering over an item\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n } else {\n targetElement = optionsRefs.current.find(selector) ?? null;\n }\n\n if (!targetElement) {\n // Keep previous position but set opacity to 0\n if (orientation === 'vertical') {\n const verticalPrev =\n lastPositionRef.current as VerticalStyleState | null;\n const newPosition: VerticalStyleState = {\n top: verticalPrev?.top ?? 0,\n height: verticalPrev?.height ?? 0,\n opacity: 0,\n };\n\n if (verticalPrev?.opacity !== 0) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n } else {\n const horizontalPrev =\n lastPositionRef.current as HorizontalStyleState | null;\n const newPosition: HorizontalStyleState = {\n left: horizontalPrev?.left ?? 0,\n width: horizontalPrev?.width ?? 0,\n opacity: 0,\n };\n\n if (horizontalPrev?.opacity !== 0) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n }\n return;\n }\n\n if (orientation === 'vertical') {\n const top = targetElement.offsetTop;\n const height = targetElement.offsetHeight;\n\n const newPosition = {\n top,\n height,\n opacity: 1,\n };\n\n const prev = lastPositionRef.current as VerticalStyleState | null;\n\n if (\n !prev ||\n prev.top !== top ||\n prev.height !== height ||\n prev.opacity !== 1\n ) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n } else {\n const left = targetElement.offsetLeft;\n const width = targetElement.offsetWidth;\n\n const newPosition = {\n left,\n width,\n opacity: 1,\n };\n\n const prev = lastPositionRef.current as HorizontalStyleState | null;\n\n if (\n !prev ||\n prev.left !== left ||\n prev.width !== width ||\n prev.opacity !== 1\n ) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n }\n };\n\n useLayoutEffect(() => {\n calculatePosition();\n\n // Event listeners for window events\n window.addEventListener('resize', calculatePosition);\n window.addEventListener('DOMContentLoaded', calculatePosition);\n\n // MutationObserver to watch for 'aria-selected' changes\n const mutationObservers: MutationObserver[] = [];\n\n optionsRefs.current.forEach((option) => {\n if (option) {\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (\n mutation.type === 'attributes' &&\n (mutation.attributeName === 'aria-selected' ||\n mutation.attributeName === 'data-active' ||\n mutation.attributeName === 'data-indicator')\n ) {\n calculatePosition();\n break;\n }\n }\n });\n\n observer.observe(option, {\n attributes: true,\n attributeFilter: ['aria-selected', 'data-active', 'data-indicator'],\n });\n\n mutationObservers.push(observer);\n }\n });\n\n // ResizeObserver to watch for size changes\n const resizeObservers: ResizeObserver[] = [];\n\n const observeSize = (element: HTMLElement) => {\n if (!element) return;\n const resizeObserver = new ResizeObserver(() => {\n calculatePosition();\n });\n resizeObserver.observe(element);\n resizeObservers.push(resizeObserver);\n };\n\n // Observe the selected item\n const selectedItem = optionsRefs.current.find(selector) ?? null;\n\n if (selectedItem) {\n observeSize(selectedItem);\n }\n\n // Observe the hovered item\n if (hoveredItem) {\n observeSize(hoveredItem);\n }\n\n // Add hover event listeners\n const handleMouseEnter = (event: Event) => {\n // Clear any pending hide timeout\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n setHoveredItem(event.currentTarget as HTMLElement);\n };\n\n const handleMouseLeave = () => {\n // Clear any existing timeout\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n }\n\n // Keep the indicator at its current position for 150ms\n // before removing the hovered item\n hideTimeoutRef.current = setTimeout(() => {\n setHoveredItem(null);\n }, 150); // 150ms delay before hiding\n };\n\n if (isHoverable) {\n optionsRefs.current.forEach((option) => {\n option?.addEventListener('mouseenter', handleMouseEnter, {\n passive: true,\n });\n option?.addEventListener('mouseleave', handleMouseLeave, {\n passive: true,\n });\n });\n }\n\n return () => {\n // Clear any pending hide timeout\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n }\n\n // Cleanup window event listeners\n window.removeEventListener('resize', calculatePosition);\n window.removeEventListener('DOMContentLoaded', calculatePosition);\n\n // Disconnect MutationObservers\n mutationObservers.forEach((observer) => {\n observer.disconnect();\n });\n\n // Disconnect ResizeObservers\n resizeObservers.forEach((observer) => {\n observer.disconnect();\n });\n\n // Remove hover event listeners\n optionsRefs.current.forEach((option) => {\n option?.removeEventListener('mouseenter', handleMouseEnter);\n option?.removeEventListener('mouseleave', handleMouseLeave);\n });\n };\n }, [\n optionsRefs,\n selector,\n hoveredItem,\n itemsLength,\n orientation,\n isHoverable,\n ]);\n\n return { choiceIndicatorPosition, calculatePosition, orientation };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"useItemSelector.mjs","names":[],"sources":["../../../src/hooks/useItemSelector.ts"],"sourcesContent":["'use client';\n\nimport { type RefObject, useLayoutEffect, useRef, useState } from 'react';\n\nexport type ItemSelectorOrientation = 'horizontal' | 'vertical';\n\ntype HorizontalStyleState = {\n left: number;\n width: number;\n opacity: number;\n};\n\ntype VerticalStyleState = {\n top: number;\n height: number;\n opacity: number;\n};\n\ntype StyleState = HorizontalStyleState | VerticalStyleState;\n\nconst selectorDefault = (option: HTMLElement) =>\n option?.getAttribute('aria-selected') === 'true';\n\ntype Options = {\n selector?: (option: HTMLElement, index: number) => boolean;\n isHoverable?: boolean;\n orientation?: ItemSelectorOrientation;\n};\n\nexport const useItemSelector = (\n optionsRefs: RefObject<HTMLElement[]>,\n {\n selector = selectorDefault,\n isHoverable = false,\n orientation = 'horizontal',\n }: Options = {\n selector: selectorDefault,\n isHoverable: false,\n orientation: 'horizontal',\n }\n) => {\n const [choiceIndicatorPosition, setChoiceIndicatorPosition] =\n useState<StyleState | null>(null);\n\n const [hoveredItem, setHoveredItem] = useState<HTMLElement | null>(null);\n const hideTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const lastPositionRef = useRef<StyleState | null>(null);\n\n const itemsLength = optionsRefs.current.length;\n\n const calculatePosition = () => {\n let targetElement: HTMLElement | null = null;\n\n if (hoveredItem) {\n targetElement = hoveredItem;\n // Clear any pending hide timeout when hovering over an item\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n } else {\n targetElement = optionsRefs.current.find(selector) ?? null;\n }\n\n if (!targetElement) {\n // Keep previous position but set opacity to 0\n if (orientation === 'vertical') {\n const verticalPrev =\n lastPositionRef.current as VerticalStyleState | null;\n const newPosition: VerticalStyleState = {\n top: verticalPrev?.top ?? 0,\n height: verticalPrev?.height ?? 0,\n opacity: 0,\n };\n\n if (verticalPrev?.opacity !== 0) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n } else {\n const horizontalPrev =\n lastPositionRef.current as HorizontalStyleState | null;\n const newPosition: HorizontalStyleState = {\n left: horizontalPrev?.left ?? 0,\n width: horizontalPrev?.width ?? 0,\n opacity: 0,\n };\n\n if (horizontalPrev?.opacity !== 0) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n }\n return;\n }\n\n if (orientation === 'vertical') {\n const top = targetElement.offsetTop;\n const height = targetElement.offsetHeight;\n\n const newPosition = {\n top,\n height,\n opacity: 1,\n };\n\n const prev = lastPositionRef.current as VerticalStyleState | null;\n\n if (\n !prev ||\n prev.top !== top ||\n prev.height !== height ||\n prev.opacity !== 1\n ) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n } else {\n const left = targetElement.offsetLeft;\n const width = targetElement.offsetWidth;\n\n const newPosition = {\n left,\n width,\n opacity: 1,\n };\n\n const prev = lastPositionRef.current as HorizontalStyleState | null;\n\n if (\n !prev ||\n prev.left !== left ||\n prev.width !== width ||\n prev.opacity !== 1\n ) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n }\n };\n\n useLayoutEffect(() => {\n calculatePosition();\n\n // Event listeners for window events\n window.addEventListener('resize', calculatePosition);\n window.addEventListener('DOMContentLoaded', calculatePosition);\n\n // MutationObserver to watch for 'aria-selected' changes\n const mutationObservers: MutationObserver[] = [];\n\n optionsRefs.current.forEach((option) => {\n if (option) {\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (\n mutation.type === 'attributes' &&\n (mutation.attributeName === 'aria-selected' ||\n mutation.attributeName === 'data-active' ||\n mutation.attributeName === 'data-indicator')\n ) {\n calculatePosition();\n break;\n }\n }\n });\n\n observer.observe(option, {\n attributes: true,\n attributeFilter: ['aria-selected', 'data-active', 'data-indicator'],\n });\n\n mutationObservers.push(observer);\n }\n });\n\n // ResizeObserver to watch for size changes\n const resizeObservers: ResizeObserver[] = [];\n\n const observeSize = (element: HTMLElement) => {\n if (!element) return;\n const resizeObserver = new ResizeObserver(() => {\n calculatePosition();\n });\n resizeObserver.observe(element);\n resizeObservers.push(resizeObserver);\n };\n\n // Observe the selected item\n const selectedItem = optionsRefs.current.find(selector) ?? null;\n\n if (selectedItem) {\n observeSize(selectedItem);\n }\n\n // Observe the hovered item\n if (hoveredItem) {\n observeSize(hoveredItem);\n }\n\n // Add hover event listeners\n const handleMouseEnter = (event: Event) => {\n // Clear any pending hide timeout\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n setHoveredItem(event.currentTarget as HTMLElement);\n };\n\n const handleMouseLeave = () => {\n // Clear any existing timeout\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n }\n\n // Keep the indicator at its current position for 150ms\n // before removing the hovered item\n hideTimeoutRef.current = setTimeout(() => {\n setHoveredItem(null);\n }, 150); // 150ms delay before hiding\n };\n\n if (isHoverable) {\n optionsRefs.current.forEach((option) => {\n option?.addEventListener('mouseenter', handleMouseEnter, {\n passive: true,\n });\n option?.addEventListener('mouseleave', handleMouseLeave, {\n passive: true,\n });\n });\n }\n\n return () => {\n // Clear any pending hide timeout\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n }\n\n // Cleanup window event listeners\n window.removeEventListener('resize', calculatePosition);\n window.removeEventListener('DOMContentLoaded', calculatePosition);\n\n // Disconnect MutationObservers\n mutationObservers.forEach((observer) => {\n observer.disconnect();\n });\n\n // Disconnect ResizeObservers\n resizeObservers.forEach((observer) => {\n observer.disconnect();\n });\n\n // Remove hover event listeners\n optionsRefs.current.forEach((option) => {\n option?.removeEventListener('mouseenter', handleMouseEnter);\n option?.removeEventListener('mouseleave', handleMouseLeave);\n });\n };\n }, [\n optionsRefs,\n selector,\n hoveredItem,\n itemsLength,\n orientation,\n isHoverable,\n ]);\n\n return { choiceIndicatorPosition, calculatePosition, orientation };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useKeyboardDetector.mjs","names":[],"sources":["../../../src/hooks/useKeyboardDetector.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useKeyboardDetector = () => {\n const [windowHeight, setWindowHeight] = useState<number | null>(null);\n\n useEffect(() => {\n const updateHeight = () => {\n const isKeyboardOpen = Boolean(\n window.visualViewport?.height &&\n window.visualViewport.height < window.innerHeight - 100\n );\n\n if (isKeyboardOpen && window.visualViewport) {\n setWindowHeight(window.visualViewport.height);\n } else {\n setWindowHeight(null);\n }\n };\n\n // Listen for changes in visualViewport height\n window.visualViewport?.addEventListener('resize', updateHeight, {\n passive: true,\n });\n updateHeight(); // Set initial height\n\n return () => {\n window.visualViewport?.removeEventListener('resize', updateHeight);\n };\n }, []);\n\n return { windowHeight, isKeyboardOpen: windowHeight !== null };\n};\n"],"mappings":";;;;;AAIA,MAAa,4BAA4B;CACvC,MAAM,CAAC,cAAc,mBAAmB,SAAwB,IAAI;CAEpE,gBAAgB;EACd,MAAM,qBAAqB;GAMzB,IALuB,QACrB,OAAO,gBAAgB,UACrB,OAAO,eAAe,SAAS,OAAO,cAAc,GAGvC,KAAK,OAAO,gBAC3B,gBAAgB,OAAO,eAAe,MAAM;QAE5C,gBAAgB,IAAI;EAExB;EAGA,OAAO,gBAAgB,iBAAiB,UAAU,cAAc,EAC9D,SAAS,KACX,CAAC;EACD,aAAa;EAEb,aAAa;GACX,OAAO,gBAAgB,oBAAoB,UAAU,YAAY;EACnE;CACF,GAAG,CAAC,CAAC;CAEL,OAAO;EAAE;EAAc,gBAAgB,iBAAiB;CAAK;AAC/D"}
1
+ {"version":3,"file":"useKeyboardDetector.mjs","names":[],"sources":["../../../src/hooks/useKeyboardDetector.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useKeyboardDetector = () => {\n const [windowHeight, setWindowHeight] = useState<number | null>(null);\n\n useEffect(() => {\n const updateHeight = () => {\n const isKeyboardOpen = Boolean(\n window.visualViewport?.height &&\n window.visualViewport.height < window.innerHeight - 100\n );\n\n if (isKeyboardOpen && window.visualViewport) {\n setWindowHeight(window.visualViewport.height);\n } else {\n setWindowHeight(null);\n }\n };\n\n // Listen for changes in visualViewport height\n window.visualViewport?.addEventListener('resize', updateHeight, {\n passive: true,\n });\n updateHeight(); // Set initial height\n\n return () => {\n window.visualViewport?.removeEventListener('resize', updateHeight);\n };\n }, []);\n\n return { windowHeight, isKeyboardOpen: windowHeight !== null };\n};\n"],"mappings":";;;;;AAIA,MAAa,4BAA4B;CACvC,MAAM,CAAC,cAAc,mBAAmB,SAAwB,KAAK;AAErE,iBAAgB;EACd,MAAM,qBAAqB;AAMzB,OALuB,QACrB,OAAO,gBAAgB,UACrB,OAAO,eAAe,SAAS,OAAO,cAAc,IAGtC,IAAI,OAAO,eAC3B,iBAAgB,OAAO,eAAe,OAAO;OAE7C,iBAAgB,KAAK;;AAKzB,SAAO,gBAAgB,iBAAiB,UAAU,cAAc,EAC9D,SAAS,MACV,CAAC;AACF,gBAAc;AAEd,eAAa;AACX,UAAO,gBAAgB,oBAAoB,UAAU,aAAa;;IAEnE,EAAE,CAAC;AAEN,QAAO;EAAE;EAAc,gBAAgB,iBAAiB;EAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePersistedStore.mjs","names":[],"sources":["../../../src/hooks/usePersistedStore.ts"],"sourcesContent":["'use client';\n\nimport {\n type Dispatch,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nexport const usePersistedStore = <S>(\n key: string,\n initialState?: S | (() => S)\n): [S, Dispatch<SetStateAction<S>>, () => void, () => void] => {\n const [state, setState] = useState<S>(() => {\n // If you have an initial value on the client, send a message out immediately\n if (initialState !== undefined) {\n const result: S =\n typeof initialState === 'function'\n ? (initialState as () => S)()\n : initialState;\n\n if (typeof window === 'undefined') return result;\n\n const persistedState = localStorage?.getItem(key);\n\n if (persistedState) {\n try {\n return JSON.parse(persistedState);\n } catch (e) {\n console.error(e);\n }\n }\n\n return result;\n }\n\n return undefined as S;\n });\n\n useEffect(() => {\n const persistedState = localStorage?.getItem(key);\n\n if (\n persistedState &&\n persistedState !== 'undefined' &&\n state === undefined\n ) {\n try {\n setState(JSON.parse(persistedState));\n } catch (e) {\n console.error(e);\n }\n } else if (initialState !== undefined && state === undefined) {\n setState(initialState);\n }\n }, [key, state]);\n\n /**\n * Allows setting state either directly or via a functional update.\n * If passed a function, we merge/update based on the previous state.\n */\n const setStateWrapper: typeof setState = useCallback(\n (valueOrUpdater: SetStateAction<S>) => {\n setState((prev) => {\n const newValue: S =\n typeof valueOrUpdater === 'function'\n ? (valueOrUpdater as (prevVal: S) => S)(prev)\n : valueOrUpdater;\n\n if (typeof newValue !== 'undefined') {\n localStorage?.setItem(key, JSON.stringify(newValue));\n return newValue;\n }\n\n return prev;\n });\n },\n [key, setState]\n );\n\n const loadState = useCallback(() => {\n const savedState = localStorage?.getItem(key);\n if (savedState) {\n setState(JSON.parse(savedState));\n }\n }, [key, setState]);\n\n const clearState = useCallback(() => {\n localStorage?.removeItem(key);\n setState(undefined as S);\n }, [key]);\n\n return useMemo(\n () => [state, setStateWrapper, loadState, clearState],\n [state, setStateWrapper, loadState, clearState]\n );\n};\n"],"mappings":";;;;;AAWA,MAAa,qBACX,KACA,iBAC6D;CAC7D,MAAM,CAAC,OAAO,YAAY,eAAkB;EAE1C,IAAI,iBAAiB,QAAW;GAC9B,MAAM,SACJ,OAAO,iBAAiB,aACnB,aAAyB,IAC1B;GAEN,IAAI,OAAO,WAAW,aAAa,OAAO;GAE1C,MAAM,iBAAiB,cAAc,QAAQ,GAAG;GAEhD,IAAI,gBACF,IAAI;IACF,OAAO,KAAK,MAAM,cAAc;GAClC,SAAS,GAAG;IACV,QAAQ,MAAM,CAAC;GACjB;GAGF,OAAO;EACT;CAGF,CAAC;CAED,gBAAgB;EACd,MAAM,iBAAiB,cAAc,QAAQ,GAAG;EAEhD,IACE,kBACA,mBAAmB,eACnB,UAAU,QAEV,IAAI;GACF,SAAS,KAAK,MAAM,cAAc,CAAC;EACrC,SAAS,GAAG;GACV,QAAQ,MAAM,CAAC;EACjB;OACK,IAAI,iBAAiB,UAAa,UAAU,QACjD,SAAS,YAAY;CAEzB,GAAG,CAAC,KAAK,KAAK,CAAC;;;;;CAMf,MAAM,kBAAmC,aACtC,mBAAsC;EACrC,UAAU,SAAS;GACjB,MAAM,WACJ,OAAO,mBAAmB,aACrB,eAAqC,IAAI,IAC1C;GAEN,IAAI,OAAO,aAAa,aAAa;IACnC,cAAc,QAAQ,KAAK,KAAK,UAAU,QAAQ,CAAC;IACnD,OAAO;GACT;GAEA,OAAO;EACT,CAAC;CACH,GACA,CAAC,KAAK,QAAQ,CAChB;CAEA,MAAM,YAAY,kBAAkB;EAClC,MAAM,aAAa,cAAc,QAAQ,GAAG;EAC5C,IAAI,YACF,SAAS,KAAK,MAAM,UAAU,CAAC;CAEnC,GAAG,CAAC,KAAK,QAAQ,CAAC;CAElB,MAAM,aAAa,kBAAkB;EACnC,cAAc,WAAW,GAAG;EAC5B,SAAS,MAAc;CACzB,GAAG,CAAC,GAAG,CAAC;CAER,OAAO,cACC;EAAC;EAAO;EAAiB;EAAW;CAAU,GACpD;EAAC;EAAO;EAAiB;EAAW;CAAU,CAChD;AACF"}
1
+ {"version":3,"file":"usePersistedStore.mjs","names":[],"sources":["../../../src/hooks/usePersistedStore.ts"],"sourcesContent":["'use client';\n\nimport {\n type Dispatch,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nexport const usePersistedStore = <S>(\n key: string,\n initialState?: S | (() => S)\n): [S, Dispatch<SetStateAction<S>>, () => void, () => void] => {\n const [state, setState] = useState<S>(() => {\n // If you have an initial value on the client, send a message out immediately\n if (initialState !== undefined) {\n const result: S =\n typeof initialState === 'function'\n ? (initialState as () => S)()\n : initialState;\n\n if (typeof window === 'undefined') return result;\n\n const persistedState = localStorage?.getItem(key);\n\n if (persistedState) {\n try {\n return JSON.parse(persistedState);\n } catch (e) {\n console.error(e);\n }\n }\n\n return result;\n }\n\n return undefined as S;\n });\n\n useEffect(() => {\n const persistedState = localStorage?.getItem(key);\n\n if (\n persistedState &&\n persistedState !== 'undefined' &&\n state === undefined\n ) {\n try {\n setState(JSON.parse(persistedState));\n } catch (e) {\n console.error(e);\n }\n } else if (initialState !== undefined && state === undefined) {\n setState(initialState);\n }\n }, [key, state]);\n\n /**\n * Allows setting state either directly or via a functional update.\n * If passed a function, we merge/update based on the previous state.\n */\n const setStateWrapper: typeof setState = useCallback(\n (valueOrUpdater: SetStateAction<S>) => {\n setState((prev) => {\n const newValue: S =\n typeof valueOrUpdater === 'function'\n ? (valueOrUpdater as (prevVal: S) => S)(prev)\n : valueOrUpdater;\n\n if (typeof newValue !== 'undefined') {\n localStorage?.setItem(key, JSON.stringify(newValue));\n return newValue;\n }\n\n return prev;\n });\n },\n [key, setState]\n );\n\n const loadState = useCallback(() => {\n const savedState = localStorage?.getItem(key);\n if (savedState) {\n setState(JSON.parse(savedState));\n }\n }, [key, setState]);\n\n const clearState = useCallback(() => {\n localStorage?.removeItem(key);\n setState(undefined as S);\n }, [key]);\n\n return useMemo(\n () => [state, setStateWrapper, loadState, clearState],\n [state, setStateWrapper, loadState, clearState]\n );\n};\n"],"mappings":";;;;;AAWA,MAAa,qBACX,KACA,iBAC6D;CAC7D,MAAM,CAAC,OAAO,YAAY,eAAkB;AAE1C,MAAI,iBAAiB,QAAW;GAC9B,MAAM,SACJ,OAAO,iBAAiB,aACnB,cAA0B,GAC3B;AAEN,OAAI,OAAO,WAAW,YAAa,QAAO;GAE1C,MAAM,iBAAiB,cAAc,QAAQ,IAAI;AAEjD,OAAI,eACF,KAAI;AACF,WAAO,KAAK,MAAM,eAAe;YAC1B,GAAG;AACV,YAAQ,MAAM,EAAE;;AAIpB,UAAO;;GAIT;AAEF,iBAAgB;EACd,MAAM,iBAAiB,cAAc,QAAQ,IAAI;AAEjD,MACE,kBACA,mBAAmB,eACnB,UAAU,OAEV,KAAI;AACF,YAAS,KAAK,MAAM,eAAe,CAAC;WAC7B,GAAG;AACV,WAAQ,MAAM,EAAE;;WAET,iBAAiB,UAAa,UAAU,OACjD,UAAS,aAAa;IAEvB,CAAC,KAAK,MAAM,CAAC;;;;;CAMhB,MAAM,kBAAmC,aACtC,mBAAsC;AACrC,YAAU,SAAS;GACjB,MAAM,WACJ,OAAO,mBAAmB,aACrB,eAAqC,KAAK,GAC3C;AAEN,OAAI,OAAO,aAAa,aAAa;AACnC,kBAAc,QAAQ,KAAK,KAAK,UAAU,SAAS,CAAC;AACpD,WAAO;;AAGT,UAAO;IACP;IAEJ,CAAC,KAAK,SAAS,CAChB;CAED,MAAM,YAAY,kBAAkB;EAClC,MAAM,aAAa,cAAc,QAAQ,IAAI;AAC7C,MAAI,WACF,UAAS,KAAK,MAAM,WAAW,CAAC;IAEjC,CAAC,KAAK,SAAS,CAAC;CAEnB,MAAM,aAAa,kBAAkB;AACnC,gBAAc,WAAW,IAAI;AAC7B,WAAS,OAAe;IACvB,CAAC,IAAI,CAAC;AAET,QAAO,cACC;EAAC;EAAO;EAAiB;EAAW;EAAW,EACrD;EAAC;EAAO;EAAiB;EAAW;EAAW,CAChD"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScreenWidth.mjs","names":[],"sources":["../../../src/hooks/useScreenWidth.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useScreenWidth = () => {\n const [screenWidth, setScreenWith] = useState<number>(0);\n\n useEffect(() => {\n const handleResize = () => {\n setScreenWith(window.innerWidth);\n };\n\n handleResize();\n\n window.addEventListener('resize', handleResize, { passive: true });\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return { screenWidth };\n};\n"],"mappings":";;;;;AAIA,MAAa,uBAAuB;CAClC,MAAM,CAAC,aAAa,iBAAiB,SAAiB,CAAC;CAEvD,gBAAgB;EACd,MAAM,qBAAqB;GACzB,cAAc,OAAO,UAAU;EACjC;EAEA,aAAa;EAEb,OAAO,iBAAiB,UAAU,cAAc,EAAE,SAAS,KAAK,CAAC;EAEjE,aAAa,OAAO,oBAAoB,UAAU,YAAY;CAChE,GAAG,CAAC,CAAC;CAEL,OAAO,EAAE,YAAY;AACvB"}
1
+ {"version":3,"file":"useScreenWidth.mjs","names":[],"sources":["../../../src/hooks/useScreenWidth.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useScreenWidth = () => {\n const [screenWidth, setScreenWith] = useState<number>(0);\n\n useEffect(() => {\n const handleResize = () => {\n setScreenWith(window.innerWidth);\n };\n\n handleResize();\n\n window.addEventListener('resize', handleResize, { passive: true });\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return { screenWidth };\n};\n"],"mappings":";;;;;AAIA,MAAa,uBAAuB;CAClC,MAAM,CAAC,aAAa,iBAAiB,SAAiB,EAAE;AAExD,iBAAgB;EACd,MAAM,qBAAqB;AACzB,iBAAc,OAAO,WAAW;;AAGlC,gBAAc;AAEd,SAAO,iBAAiB,UAAU,cAAc,EAAE,SAAS,MAAM,CAAC;AAElE,eAAa,OAAO,oBAAoB,UAAU,aAAa;IAC9D,EAAE,CAAC;AAEN,QAAO,EAAE,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/hooks/useScrollBlockage/index.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\nimport { useGetElementOrWindow } from '../useGetElementOrWindow';\n\nimport { useScrollBlockageStore } from './useScrollBlockageStore';\n\ntype useScrollBlockagePropsReadOnly = {\n disableScroll: undefined;\n key: undefined;\n element?: HTMLElement; // The element to block the scroll. If not defined, the window will be used\n};\n\ntype useScrollBlockageProps = {\n disableScroll: boolean;\n key: string; // The key to identify the blockage to avoid conflicts. Required if disableScroll is defined\n element?: HTMLElement; // The element to block the scroll. If not defined, the window will be used\n};\n\nexport const useScrollBlockage = (\n props?: useScrollBlockageProps | useScrollBlockagePropsReadOnly\n) => {\n const {\n disableScroll = false,\n element,\n key = 'unnamed_blocker',\n } = props ?? {};\n\n const { isElementScrollBlocked, addBlockage, removeBlockage } =\n useScrollBlockageStore();\n\n const containerElement = useGetElementOrWindow(element);\n\n useEffect(() => {\n const el = element ?? window.document.body;\n\n if (disableScroll) {\n addBlockage(key, el);\n } else {\n removeBlockage(key, el);\n }\n\n return () => {\n removeBlockage(key, el);\n };\n }, [addBlockage, disableScroll, element, key, removeBlockage]);\n\n const isScrollBlocked = containerElement\n ? isElementScrollBlocked(containerElement)\n : false;\n\n return { isScrollBlocked };\n};\n"],"mappings":";;;;;;;AAmBA,MAAa,qBACX,UACG;CACH,MAAM,EACJ,gBAAgB,OAChB,SACA,MAAM,sBACJ,SAAS,CAAC;CAEd,MAAM,EAAE,wBAAwB,aAAa,mBAC3C,uBAAuB;CAEzB,MAAM,mBAAmB,sBAAsB,OAAO;CAEtD,gBAAgB;EACd,MAAM,KAAK,WAAW,OAAO,SAAS;EAEtC,IAAI,eACF,YAAY,KAAK,EAAE;OAEnB,eAAe,KAAK,EAAE;EAGxB,aAAa;GACX,eAAe,KAAK,EAAE;EACxB;CACF,GAAG;EAAC;EAAa;EAAe;EAAS;EAAK;CAAc,CAAC;CAM7D,OAAO,EAAE,iBAJe,mBACpB,uBAAuB,gBAAgB,IACvC,MAEqB;AAC3B"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/hooks/useScrollBlockage/index.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\nimport { useGetElementOrWindow } from '../useGetElementOrWindow';\n\nimport { useScrollBlockageStore } from './useScrollBlockageStore';\n\ntype useScrollBlockagePropsReadOnly = {\n disableScroll: undefined;\n key: undefined;\n element?: HTMLElement; // The element to block the scroll. If not defined, the window will be used\n};\n\ntype useScrollBlockageProps = {\n disableScroll: boolean;\n key: string; // The key to identify the blockage to avoid conflicts. Required if disableScroll is defined\n element?: HTMLElement; // The element to block the scroll. If not defined, the window will be used\n};\n\nexport const useScrollBlockage = (\n props?: useScrollBlockageProps | useScrollBlockagePropsReadOnly\n) => {\n const {\n disableScroll = false,\n element,\n key = 'unnamed_blocker',\n } = props ?? {};\n\n const { isElementScrollBlocked, addBlockage, removeBlockage } =\n useScrollBlockageStore();\n\n const containerElement = useGetElementOrWindow(element);\n\n useEffect(() => {\n const el = element ?? window.document.body;\n\n if (disableScroll) {\n addBlockage(key, el);\n } else {\n removeBlockage(key, el);\n }\n\n return () => {\n removeBlockage(key, el);\n };\n }, [addBlockage, disableScroll, element, key, removeBlockage]);\n\n const isScrollBlocked = containerElement\n ? isElementScrollBlocked(containerElement)\n : false;\n\n return { isScrollBlocked };\n};\n"],"mappings":";;;;;;;AAmBA,MAAa,qBACX,UACG;CACH,MAAM,EACJ,gBAAgB,OAChB,SACA,MAAM,sBACJ,SAAS,EAAE;CAEf,MAAM,EAAE,wBAAwB,aAAa,mBAC3C,wBAAwB;CAE1B,MAAM,mBAAmB,sBAAsB,QAAQ;AAEvD,iBAAgB;EACd,MAAM,KAAK,WAAW,OAAO,SAAS;AAEtC,MAAI,cACF,aAAY,KAAK,GAAG;MAEpB,gBAAe,KAAK,GAAG;AAGzB,eAAa;AACX,kBAAe,KAAK,GAAG;;IAExB;EAAC;EAAa;EAAe;EAAS;EAAK;EAAe,CAAC;AAM9D,QAAO,EAAE,iBAJe,mBACpB,uBAAuB,iBAAiB,GACxC,OAEsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollBlockageStore.mjs","names":[],"sources":["../../../../src/hooks/useScrollBlockage/useScrollBlockageStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype Blocker = {\n element: Element;\n blockers: string[];\n};\n\nclass ScrollBlockageObservable {\n private listeners = new Set<() => void>();\n private scrollBlockers: Blocker[] = [];\n\n subscribe = (listener: () => void) => {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n };\n\n getSnapshot = () => {\n return this.scrollBlockers;\n };\n\n addBlockage = (blockerName: string, element: HTMLElement) => {\n const blockersElement = this.scrollBlockers.find(\n (blocker) => blocker.element === element\n );\n\n if (blockersElement) {\n if (blockersElement.blockers.includes(blockerName)) return;\n\n this.scrollBlockers = this.scrollBlockers.map((blocker) =>\n blocker.element === element\n ? { ...blocker, blockers: [...blocker.blockers, blockerName] }\n : blocker\n );\n } else {\n element.style.overflowY = 'hidden';\n element.style.overflowX = 'hidden';\n this.scrollBlockers = [\n ...this.scrollBlockers,\n { element, blockers: [blockerName] },\n ];\n }\n this.emit();\n };\n\n removeBlockage = (blockerName: string, element: HTMLElement) => {\n const blocker = this.scrollBlockers.find(\n (blocker) => blocker.element === element\n );\n\n if (blocker) {\n if (blocker.blockers.length > 1) {\n this.scrollBlockers = this.scrollBlockers.map((b) =>\n b.element === element\n ? {\n ...b,\n blockers: b.blockers.filter((name) => name !== blockerName),\n }\n : b\n );\n } else {\n element.style.overflowY = '';\n element.style.overflowX = '';\n this.scrollBlockers = this.scrollBlockers.filter(\n (b) => b.element !== element\n );\n }\n this.emit();\n }\n };\n\n isElementScrollBlocked = (element: HTMLElement) => {\n return this.scrollBlockers.some((blocker) => blocker.element === element);\n };\n\n private emit = () => {\n this.listeners.forEach((listener) => {\n listener();\n });\n };\n}\n\nexport const scrollBlockageManager = new ScrollBlockageObservable();\n\nconst serverSnapshot: Blocker[] = [];\n\nexport const useScrollBlockageStore = () => {\n const scrollBlockers = useSyncExternalStore(\n scrollBlockageManager.subscribe,\n scrollBlockageManager.getSnapshot,\n () => serverSnapshot\n );\n\n return {\n scrollBlockers,\n addBlockage: scrollBlockageManager.addBlockage,\n removeBlockage: scrollBlockageManager.removeBlockage,\n isElementScrollBlocked: scrollBlockageManager.isElementScrollBlocked,\n };\n};\n"],"mappings":";;;AAOA,IAAM,2BAAN,MAA+B;CAC7B,AAAQ,4BAAY,IAAI,IAAgB;CACxC,AAAQ,iBAA4B,CAAC;CAErC,aAAa,aAAyB;EACpC,KAAK,UAAU,IAAI,QAAQ;EAC3B,aAAa;GACX,KAAK,UAAU,OAAO,QAAQ;EAChC;CACF;CAEA,oBAAoB;EAClB,OAAO,KAAK;CACd;CAEA,eAAe,aAAqB,YAAyB;EAC3D,MAAM,kBAAkB,KAAK,eAAe,MACzC,YAAY,QAAQ,YAAY,OACnC;EAEA,IAAI,iBAAiB;GACnB,IAAI,gBAAgB,SAAS,SAAS,WAAW,GAAG;GAEpD,KAAK,iBAAiB,KAAK,eAAe,KAAK,YAC7C,QAAQ,YAAY,UAChB;IAAE,GAAG;IAAS,UAAU,CAAC,GAAG,QAAQ,UAAU,WAAW;GAAE,IAC3D,OACN;EACF,OAAO;GACL,QAAQ,MAAM,YAAY;GAC1B,QAAQ,MAAM,YAAY;GAC1B,KAAK,iBAAiB,CACpB,GAAG,KAAK,gBACR;IAAE;IAAS,UAAU,CAAC,WAAW;GAAE,CACrC;EACF;EACA,KAAK,KAAK;CACZ;CAEA,kBAAkB,aAAqB,YAAyB;EAC9D,MAAM,UAAU,KAAK,eAAe,MACjC,YAAY,QAAQ,YAAY,OACnC;EAEA,IAAI,SAAS;GACX,IAAI,QAAQ,SAAS,SAAS,GAC5B,KAAK,iBAAiB,KAAK,eAAe,KAAK,MAC7C,EAAE,YAAY,UACV;IACE,GAAG;IACH,UAAU,EAAE,SAAS,QAAQ,SAAS,SAAS,WAAW;GAC5D,IACA,CACN;QACK;IACL,QAAQ,MAAM,YAAY;IAC1B,QAAQ,MAAM,YAAY;IAC1B,KAAK,iBAAiB,KAAK,eAAe,QACvC,MAAM,EAAE,YAAY,OACvB;GACF;GACA,KAAK,KAAK;EACZ;CACF;CAEA,0BAA0B,YAAyB;EACjD,OAAO,KAAK,eAAe,MAAM,YAAY,QAAQ,YAAY,OAAO;CAC1E;CAEA,AAAQ,aAAa;EACnB,KAAK,UAAU,SAAS,aAAa;GACnC,SAAS;EACX,CAAC;CACH;AACF;AAEA,MAAa,wBAAwB,IAAI,yBAAyB;AAElE,MAAM,iBAA4B,CAAC;AAEnC,MAAa,+BAA+B;CAO1C,OAAO;EACL,gBAPqB,qBACrB,sBAAsB,WACtB,sBAAsB,mBAChB,cAIO;EACb,aAAa,sBAAsB;EACnC,gBAAgB,sBAAsB;EACtC,wBAAwB,sBAAsB;CAChD;AACF"}
1
+ {"version":3,"file":"useScrollBlockageStore.mjs","names":[],"sources":["../../../../src/hooks/useScrollBlockage/useScrollBlockageStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype Blocker = {\n element: Element;\n blockers: string[];\n};\n\nclass ScrollBlockageObservable {\n private listeners = new Set<() => void>();\n private scrollBlockers: Blocker[] = [];\n\n subscribe = (listener: () => void) => {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n };\n\n getSnapshot = () => {\n return this.scrollBlockers;\n };\n\n addBlockage = (blockerName: string, element: HTMLElement) => {\n const blockersElement = this.scrollBlockers.find(\n (blocker) => blocker.element === element\n );\n\n if (blockersElement) {\n if (blockersElement.blockers.includes(blockerName)) return;\n\n this.scrollBlockers = this.scrollBlockers.map((blocker) =>\n blocker.element === element\n ? { ...blocker, blockers: [...blocker.blockers, blockerName] }\n : blocker\n );\n } else {\n element.style.overflowY = 'hidden';\n element.style.overflowX = 'hidden';\n this.scrollBlockers = [\n ...this.scrollBlockers,\n { element, blockers: [blockerName] },\n ];\n }\n this.emit();\n };\n\n removeBlockage = (blockerName: string, element: HTMLElement) => {\n const blocker = this.scrollBlockers.find(\n (blocker) => blocker.element === element\n );\n\n if (blocker) {\n if (blocker.blockers.length > 1) {\n this.scrollBlockers = this.scrollBlockers.map((b) =>\n b.element === element\n ? {\n ...b,\n blockers: b.blockers.filter((name) => name !== blockerName),\n }\n : b\n );\n } else {\n element.style.overflowY = '';\n element.style.overflowX = '';\n this.scrollBlockers = this.scrollBlockers.filter(\n (b) => b.element !== element\n );\n }\n this.emit();\n }\n };\n\n isElementScrollBlocked = (element: HTMLElement) => {\n return this.scrollBlockers.some((blocker) => blocker.element === element);\n };\n\n private emit = () => {\n this.listeners.forEach((listener) => {\n listener();\n });\n };\n}\n\nexport const scrollBlockageManager = new ScrollBlockageObservable();\n\nconst serverSnapshot: Blocker[] = [];\n\nexport const useScrollBlockageStore = () => {\n const scrollBlockers = useSyncExternalStore(\n scrollBlockageManager.subscribe,\n scrollBlockageManager.getSnapshot,\n () => serverSnapshot\n );\n\n return {\n scrollBlockers,\n addBlockage: scrollBlockageManager.addBlockage,\n removeBlockage: scrollBlockageManager.removeBlockage,\n isElementScrollBlocked: scrollBlockageManager.isElementScrollBlocked,\n };\n};\n"],"mappings":";;;AAOA,IAAM,2BAAN,MAA+B;CAC7B,AAAQ,4BAAY,IAAI,KAAiB;CACzC,AAAQ,iBAA4B,EAAE;CAEtC,aAAa,aAAyB;AACpC,OAAK,UAAU,IAAI,SAAS;AAC5B,eAAa;AACX,QAAK,UAAU,OAAO,SAAS;;;CAInC,oBAAoB;AAClB,SAAO,KAAK;;CAGd,eAAe,aAAqB,YAAyB;EAC3D,MAAM,kBAAkB,KAAK,eAAe,MACzC,YAAY,QAAQ,YAAY,QAClC;AAED,MAAI,iBAAiB;AACnB,OAAI,gBAAgB,SAAS,SAAS,YAAY,CAAE;AAEpD,QAAK,iBAAiB,KAAK,eAAe,KAAK,YAC7C,QAAQ,YAAY,UAChB;IAAE,GAAG;IAAS,UAAU,CAAC,GAAG,QAAQ,UAAU,YAAY;IAAE,GAC5D,QACL;SACI;AACL,WAAQ,MAAM,YAAY;AAC1B,WAAQ,MAAM,YAAY;AAC1B,QAAK,iBAAiB,CACpB,GAAG,KAAK,gBACR;IAAE;IAAS,UAAU,CAAC,YAAY;IAAE,CACrC;;AAEH,OAAK,MAAM;;CAGb,kBAAkB,aAAqB,YAAyB;EAC9D,MAAM,UAAU,KAAK,eAAe,MACjC,YAAY,QAAQ,YAAY,QAClC;AAED,MAAI,SAAS;AACX,OAAI,QAAQ,SAAS,SAAS,EAC5B,MAAK,iBAAiB,KAAK,eAAe,KAAK,MAC7C,EAAE,YAAY,UACV;IACE,GAAG;IACH,UAAU,EAAE,SAAS,QAAQ,SAAS,SAAS,YAAY;IAC5D,GACD,EACL;QACI;AACL,YAAQ,MAAM,YAAY;AAC1B,YAAQ,MAAM,YAAY;AAC1B,SAAK,iBAAiB,KAAK,eAAe,QACvC,MAAM,EAAE,YAAY,QACtB;;AAEH,QAAK,MAAM;;;CAIf,0BAA0B,YAAyB;AACjD,SAAO,KAAK,eAAe,MAAM,YAAY,QAAQ,YAAY,QAAQ;;CAG3E,AAAQ,aAAa;AACnB,OAAK,UAAU,SAAS,aAAa;AACnC,aAAU;IACV;;;AAIN,MAAa,wBAAwB,IAAI,0BAA0B;AAEnE,MAAM,iBAA4B,EAAE;AAEpC,MAAa,+BAA+B;AAO1C,QAAO;EACL,gBAPqB,qBACrB,sBAAsB,WACtB,sBAAsB,mBAChB,eAIQ;EACd,aAAa,sBAAsB;EACnC,gBAAgB,sBAAsB;EACtC,wBAAwB,sBAAsB;EAC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollDetection.mjs","names":[],"sources":["../../../src/hooks/useScrollDetection.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useGetElementOrWindow } from './useGetElementOrWindow';\nimport { useScrollBlockage } from './useScrollBlockage';\n\ntype useScrollDetectionProps = {\n isEnabled?: boolean;\n delta?: number; // how much user has to scroll to trigger the event\n deltaFromTop?: number; // how much user has to scroll from top to detect if the user has been scrolled\n onScrollDown?: (e: WheelEvent) => void;\n onScrollUp?: (e: WheelEvent) => void;\n element?: HTMLElement; // The element to detect the scroll on. If not defined, the window.document.body will be used\n};\n\nexport const useScrollDetection = (props?: useScrollDetectionProps) => {\n const {\n isEnabled = true,\n delta = 5,\n deltaFromTop = 0,\n onScrollDown,\n onScrollUp,\n element,\n } = props ?? {};\n\n const [isScrolled, setIsScrolled] = useState<boolean>(false);\n const [isScrollable, setIsScrollable] = useState<boolean>(false);\n\n const { isScrollBlocked } = useScrollBlockage();\n const containerElement = useGetElementOrWindow(element);\n\n const onMobileMove = useCallback(\n (event: globalThis.TouchEvent) => {\n const startY = event.touches?.[0]?.clientY ?? 0;\n\n const onMove = (event: globalThis.TouchEvent) => {\n if (isEnabled) {\n const currentY = event.touches?.[0]?.clientY ?? 0;\n const deltaY = startY - currentY;\n\n setIsScrolled(deltaY > 0);\n\n containerElement?.removeEventListener('touchmove', onMove);\n }\n };\n\n containerElement?.addEventListener('touchmove', onMove);\n },\n [isEnabled, containerElement]\n );\n\n const onScroll = useCallback(\n (e: WheelEvent) => {\n const isScrolledDown = e.deltaY > 0;\n\n if (isEnabled && !isScrollBlocked && isScrollable) {\n const isDeTected = Math.abs(e.deltaY) > Math.abs(delta);\n\n if (isDeTected) {\n if (isScrolledDown) {\n onScrollDown?.(e);\n } else {\n onScrollUp?.(e);\n }\n }\n\n setIsScrolled(window.scrollY > deltaFromTop);\n }\n },\n [isEnabled, isScrollBlocked, isScrollable]\n );\n\n useEffect(() => {\n if (isEnabled) {\n containerElement?.addEventListener('wheel', onScroll, { passive: true });\n containerElement?.addEventListener('touchstart', onMobileMove, {\n passive: true,\n });\n } else {\n setIsScrolled(false);\n }\n\n return () => {\n containerElement?.removeEventListener('wheel', onScroll);\n containerElement?.removeEventListener('touchstart', onMobileMove);\n };\n }, [isEnabled, onScroll, onMobileMove, containerElement]);\n\n useEffect(() => {\n const isScrollable = window.innerHeight < window.document.body.scrollHeight;\n\n setIsScrollable(isScrollable);\n }, []);\n\n return { isScrolled, isScrollable };\n};\n"],"mappings":";;;;;;;AAgBA,MAAa,sBAAsB,UAAoC;CACrE,MAAM,EACJ,YAAY,MACZ,QAAQ,GACR,eAAe,GACf,cACA,YACA,YACE,SAAS,CAAC;CAEd,MAAM,CAAC,YAAY,iBAAiB,SAAkB,KAAK;CAC3D,MAAM,CAAC,cAAc,mBAAmB,SAAkB,KAAK;CAE/D,MAAM,EAAE,oBAAoB,kBAAkB;CAC9C,MAAM,mBAAmB,sBAAsB,OAAO;CAEtD,MAAM,eAAe,aAClB,UAAiC;EAChC,MAAM,SAAS,MAAM,UAAU,IAAI,WAAW;EAE9C,MAAM,UAAU,UAAiC;GAC/C,IAAI,WAAW;IAIb,cAFe,UADE,MAAM,UAAU,IAAI,WAAW,KAGzB,CAAC;IAExB,kBAAkB,oBAAoB,aAAa,MAAM;GAC3D;EACF;EAEA,kBAAkB,iBAAiB,aAAa,MAAM;CACxD,GACA,CAAC,WAAW,gBAAgB,CAC9B;CAEA,MAAM,WAAW,aACd,MAAkB;EACjB,MAAM,iBAAiB,EAAE,SAAS;EAElC,IAAI,aAAa,CAAC,mBAAmB,cAAc;GAGjD,IAFmB,KAAK,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,GAGpD,IAAI,gBACF,eAAe,CAAC;QAEhB,aAAa,CAAC;GAIlB,cAAc,OAAO,UAAU,YAAY;EAC7C;CACF,GACA;EAAC;EAAW;EAAiB;CAAY,CAC3C;CAEA,gBAAgB;EACd,IAAI,WAAW;GACb,kBAAkB,iBAAiB,SAAS,UAAU,EAAE,SAAS,KAAK,CAAC;GACvE,kBAAkB,iBAAiB,cAAc,cAAc,EAC7D,SAAS,KACX,CAAC;EACH,OACE,cAAc,KAAK;EAGrB,aAAa;GACX,kBAAkB,oBAAoB,SAAS,QAAQ;GACvD,kBAAkB,oBAAoB,cAAc,YAAY;EAClE;CACF,GAAG;EAAC;EAAW;EAAU;EAAc;CAAgB,CAAC;CAExD,gBAAgB;EAGd,gBAFqB,OAAO,cAAc,OAAO,SAAS,KAAK,YAEnC;CAC9B,GAAG,CAAC,CAAC;CAEL,OAAO;EAAE;EAAY;CAAa;AACpC"}
1
+ {"version":3,"file":"useScrollDetection.mjs","names":[],"sources":["../../../src/hooks/useScrollDetection.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useGetElementOrWindow } from './useGetElementOrWindow';\nimport { useScrollBlockage } from './useScrollBlockage';\n\ntype useScrollDetectionProps = {\n isEnabled?: boolean;\n delta?: number; // how much user has to scroll to trigger the event\n deltaFromTop?: number; // how much user has to scroll from top to detect if the user has been scrolled\n onScrollDown?: (e: WheelEvent) => void;\n onScrollUp?: (e: WheelEvent) => void;\n element?: HTMLElement; // The element to detect the scroll on. If not defined, the window.document.body will be used\n};\n\nexport const useScrollDetection = (props?: useScrollDetectionProps) => {\n const {\n isEnabled = true,\n delta = 5,\n deltaFromTop = 0,\n onScrollDown,\n onScrollUp,\n element,\n } = props ?? {};\n\n const [isScrolled, setIsScrolled] = useState<boolean>(false);\n const [isScrollable, setIsScrollable] = useState<boolean>(false);\n\n const { isScrollBlocked } = useScrollBlockage();\n const containerElement = useGetElementOrWindow(element);\n\n const onMobileMove = useCallback(\n (event: globalThis.TouchEvent) => {\n const startY = event.touches?.[0]?.clientY ?? 0;\n\n const onMove = (event: globalThis.TouchEvent) => {\n if (isEnabled) {\n const currentY = event.touches?.[0]?.clientY ?? 0;\n const deltaY = startY - currentY;\n\n setIsScrolled(deltaY > 0);\n\n containerElement?.removeEventListener('touchmove', onMove);\n }\n };\n\n containerElement?.addEventListener('touchmove', onMove);\n },\n [isEnabled, containerElement]\n );\n\n const onScroll = useCallback(\n (e: WheelEvent) => {\n const isScrolledDown = e.deltaY > 0;\n\n if (isEnabled && !isScrollBlocked && isScrollable) {\n const isDeTected = Math.abs(e.deltaY) > Math.abs(delta);\n\n if (isDeTected) {\n if (isScrolledDown) {\n onScrollDown?.(e);\n } else {\n onScrollUp?.(e);\n }\n }\n\n setIsScrolled(window.scrollY > deltaFromTop);\n }\n },\n [isEnabled, isScrollBlocked, isScrollable]\n );\n\n useEffect(() => {\n if (isEnabled) {\n containerElement?.addEventListener('wheel', onScroll, { passive: true });\n containerElement?.addEventListener('touchstart', onMobileMove, {\n passive: true,\n });\n } else {\n setIsScrolled(false);\n }\n\n return () => {\n containerElement?.removeEventListener('wheel', onScroll);\n containerElement?.removeEventListener('touchstart', onMobileMove);\n };\n }, [isEnabled, onScroll, onMobileMove, containerElement]);\n\n useEffect(() => {\n const isScrollable = window.innerHeight < window.document.body.scrollHeight;\n\n setIsScrollable(isScrollable);\n }, []);\n\n return { isScrolled, isScrollable };\n};\n"],"mappings":";;;;;;;AAgBA,MAAa,sBAAsB,UAAoC;CACrE,MAAM,EACJ,YAAY,MACZ,QAAQ,GACR,eAAe,GACf,cACA,YACA,YACE,SAAS,EAAE;CAEf,MAAM,CAAC,YAAY,iBAAiB,SAAkB,MAAM;CAC5D,MAAM,CAAC,cAAc,mBAAmB,SAAkB,MAAM;CAEhE,MAAM,EAAE,oBAAoB,mBAAmB;CAC/C,MAAM,mBAAmB,sBAAsB,QAAQ;CAEvD,MAAM,eAAe,aAClB,UAAiC;EAChC,MAAM,SAAS,MAAM,UAAU,IAAI,WAAW;EAE9C,MAAM,UAAU,UAAiC;AAC/C,OAAI,WAAW;AAIb,kBAFe,UADE,MAAM,UAAU,IAAI,WAAW,KAGzB,EAAE;AAEzB,sBAAkB,oBAAoB,aAAa,OAAO;;;AAI9D,oBAAkB,iBAAiB,aAAa,OAAO;IAEzD,CAAC,WAAW,iBAAiB,CAC9B;CAED,MAAM,WAAW,aACd,MAAkB;EACjB,MAAM,iBAAiB,EAAE,SAAS;AAElC,MAAI,aAAa,CAAC,mBAAmB,cAAc;AAGjD,OAFmB,KAAK,IAAI,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAGrD,KAAI,eACF,gBAAe,EAAE;OAEjB,cAAa,EAAE;AAInB,iBAAc,OAAO,UAAU,aAAa;;IAGhD;EAAC;EAAW;EAAiB;EAAa,CAC3C;AAED,iBAAgB;AACd,MAAI,WAAW;AACb,qBAAkB,iBAAiB,SAAS,UAAU,EAAE,SAAS,MAAM,CAAC;AACxE,qBAAkB,iBAAiB,cAAc,cAAc,EAC7D,SAAS,MACV,CAAC;QAEF,eAAc,MAAM;AAGtB,eAAa;AACX,qBAAkB,oBAAoB,SAAS,SAAS;AACxD,qBAAkB,oBAAoB,cAAc,aAAa;;IAElE;EAAC;EAAW;EAAU;EAAc;EAAiB,CAAC;AAEzD,iBAAgB;AAGd,kBAFqB,OAAO,cAAc,OAAO,SAAS,KAAK,aAElC;IAC5B,EAAE,CAAC;AAEN,QAAO;EAAE;EAAY;EAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollY.mjs","names":[],"sources":["../../../src/hooks/useScrollY.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useSyncExternalStore } from 'react';\nimport { useGetElementOrWindow } from './useGetElementOrWindow';\n\ntype UseScrollYProps = {\n element?: HTMLElement;\n};\n\ntype UseScrollYResult = {\n scrollY: number;\n scrollPercentage: number;\n scrollYMax: number;\n};\n\nconst INITIAL_SCROLL_STATE: UseScrollYResult = {\n scrollY: 0,\n scrollPercentage: 0,\n scrollYMax: 0,\n};\n\nlet lastSnapshot: UseScrollYResult = INITIAL_SCROLL_STATE;\n\nexport const useScrollY = (props?: UseScrollYProps): UseScrollYResult => {\n const { element } = props ?? {};\n\n const containerElement = useGetElementOrWindow(element);\n\n const subscribe = useCallback(\n (onChange: () => void) => {\n if (typeof window === 'undefined' || !containerElement) return () => {};\n let raf = 0;\n\n const handler = () => {\n if (raf) return;\n raf = window.requestAnimationFrame(() => {\n raf = 0;\n onChange();\n });\n };\n\n containerElement.addEventListener('scroll', handler, { passive: true });\n\n return () => {\n containerElement.removeEventListener('scroll', handler);\n if (raf) window.cancelAnimationFrame(raf);\n };\n },\n [containerElement]\n );\n\n const getSnapshot = (): UseScrollYResult => {\n if (typeof window === 'undefined' || !containerElement) {\n return INITIAL_SCROLL_STATE; // SSR/hydration-safe\n }\n\n // Handle custom element\n if (containerElement instanceof HTMLElement) {\n const scrollY = containerElement.scrollTop;\n const scrollHeight = containerElement.scrollHeight;\n const clientHeight = containerElement.clientHeight;\n const scrollYMax = Math.max(0, scrollHeight - clientHeight);\n const scrollPercentage = scrollYMax > 0 ? scrollY / scrollYMax : 0;\n\n if (\n lastSnapshot.scrollY === scrollY &&\n lastSnapshot.scrollPercentage === scrollPercentage &&\n lastSnapshot.scrollYMax === scrollYMax\n ) {\n return lastSnapshot;\n }\n\n lastSnapshot = { scrollY, scrollPercentage, scrollYMax };\n return lastSnapshot;\n }\n\n // Handle window\n const doc = document.documentElement;\n const body = document.body;\n\n const scrollY =\n window.scrollY ??\n window.pageYOffset ??\n doc?.scrollTop ??\n body?.scrollTop ??\n 0;\n\n const scrollHeight = doc?.scrollHeight ?? body?.scrollHeight ?? 0;\n const clientHeight = doc?.clientHeight ?? window.innerHeight ?? 0;\n const scrollYMax = Math.max(0, scrollHeight - clientHeight);\n const scrollPercentage = scrollYMax > 0 ? scrollY / scrollYMax : 0;\n\n if (\n lastSnapshot.scrollY === scrollY &&\n lastSnapshot.scrollPercentage === scrollPercentage &&\n lastSnapshot.scrollYMax === scrollYMax\n ) {\n return lastSnapshot;\n }\n\n lastSnapshot = { scrollY, scrollPercentage, scrollYMax };\n return lastSnapshot;\n };\n\n const getServerSnapshot = (): UseScrollYResult => INITIAL_SCROLL_STATE;\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n};\n"],"mappings":";;;;;;AAeA,MAAM,uBAAyC;CAC7C,SAAS;CACT,kBAAkB;CAClB,YAAY;AACd;AAEA,IAAI,eAAiC;AAErC,MAAa,cAAc,UAA8C;CACvE,MAAM,EAAE,YAAY,SAAS,CAAC;CAE9B,MAAM,mBAAmB,sBAAsB,OAAO;CAEtD,MAAM,YAAY,aACf,aAAyB;EACxB,IAAI,OAAO,WAAW,eAAe,CAAC,kBAAkB,aAAa,CAAC;EACtE,IAAI,MAAM;EAEV,MAAM,gBAAgB;GACpB,IAAI,KAAK;GACT,MAAM,OAAO,4BAA4B;IACvC,MAAM;IACN,SAAS;GACX,CAAC;EACH;EAEA,iBAAiB,iBAAiB,UAAU,SAAS,EAAE,SAAS,KAAK,CAAC;EAEtE,aAAa;GACX,iBAAiB,oBAAoB,UAAU,OAAO;GACtD,IAAI,KAAK,OAAO,qBAAqB,GAAG;EAC1C;CACF,GACA,CAAC,gBAAgB,CACnB;CAEA,MAAM,oBAAsC;EAC1C,IAAI,OAAO,WAAW,eAAe,CAAC,kBACpC,OAAO;EAIT,IAAI,4BAA4B,aAAa;GAC3C,MAAM,UAAU,iBAAiB;GACjC,MAAM,eAAe,iBAAiB;GACtC,MAAM,eAAe,iBAAiB;GACtC,MAAM,aAAa,KAAK,IAAI,GAAG,eAAe,YAAY;GAC1D,MAAM,mBAAmB,aAAa,IAAI,UAAU,aAAa;GAEjE,IACE,aAAa,YAAY,WACzB,aAAa,qBAAqB,oBAClC,aAAa,eAAe,YAE5B,OAAO;GAGT,eAAe;IAAE;IAAS;IAAkB;GAAW;GACvD,OAAO;EACT;EAGA,MAAM,MAAM,SAAS;EACrB,MAAM,OAAO,SAAS;EAEtB,MAAM,UACJ,OAAO,WACP,OAAO,eACP,KAAK,aACL,MAAM,aACN;EAEF,MAAM,eAAe,KAAK,gBAAgB,MAAM,gBAAgB;EAChE,MAAM,eAAe,KAAK,gBAAgB,OAAO,eAAe;EAChE,MAAM,aAAa,KAAK,IAAI,GAAG,eAAe,YAAY;EAC1D,MAAM,mBAAmB,aAAa,IAAI,UAAU,aAAa;EAEjE,IACE,aAAa,YAAY,WACzB,aAAa,qBAAqB,oBAClC,aAAa,eAAe,YAE5B,OAAO;EAGT,eAAe;GAAE;GAAS;GAAkB;EAAW;EACvD,OAAO;CACT;CAEA,MAAM,0BAA4C;CAElD,OAAO,qBAAqB,WAAW,aAAa,iBAAiB;AACvE"}
1
+ {"version":3,"file":"useScrollY.mjs","names":[],"sources":["../../../src/hooks/useScrollY.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useSyncExternalStore } from 'react';\nimport { useGetElementOrWindow } from './useGetElementOrWindow';\n\ntype UseScrollYProps = {\n element?: HTMLElement;\n};\n\ntype UseScrollYResult = {\n scrollY: number;\n scrollPercentage: number;\n scrollYMax: number;\n};\n\nconst INITIAL_SCROLL_STATE: UseScrollYResult = {\n scrollY: 0,\n scrollPercentage: 0,\n scrollYMax: 0,\n};\n\nlet lastSnapshot: UseScrollYResult = INITIAL_SCROLL_STATE;\n\nexport const useScrollY = (props?: UseScrollYProps): UseScrollYResult => {\n const { element } = props ?? {};\n\n const containerElement = useGetElementOrWindow(element);\n\n const subscribe = useCallback(\n (onChange: () => void) => {\n if (typeof window === 'undefined' || !containerElement) return () => {};\n let raf = 0;\n\n const handler = () => {\n if (raf) return;\n raf = window.requestAnimationFrame(() => {\n raf = 0;\n onChange();\n });\n };\n\n containerElement.addEventListener('scroll', handler, { passive: true });\n\n return () => {\n containerElement.removeEventListener('scroll', handler);\n if (raf) window.cancelAnimationFrame(raf);\n };\n },\n [containerElement]\n );\n\n const getSnapshot = (): UseScrollYResult => {\n if (typeof window === 'undefined' || !containerElement) {\n return INITIAL_SCROLL_STATE; // SSR/hydration-safe\n }\n\n // Handle custom element\n if (containerElement instanceof HTMLElement) {\n const scrollY = containerElement.scrollTop;\n const scrollHeight = containerElement.scrollHeight;\n const clientHeight = containerElement.clientHeight;\n const scrollYMax = Math.max(0, scrollHeight - clientHeight);\n const scrollPercentage = scrollYMax > 0 ? scrollY / scrollYMax : 0;\n\n if (\n lastSnapshot.scrollY === scrollY &&\n lastSnapshot.scrollPercentage === scrollPercentage &&\n lastSnapshot.scrollYMax === scrollYMax\n ) {\n return lastSnapshot;\n }\n\n lastSnapshot = { scrollY, scrollPercentage, scrollYMax };\n return lastSnapshot;\n }\n\n // Handle window\n const doc = document.documentElement;\n const body = document.body;\n\n const scrollY =\n window.scrollY ??\n window.pageYOffset ??\n doc?.scrollTop ??\n body?.scrollTop ??\n 0;\n\n const scrollHeight = doc?.scrollHeight ?? body?.scrollHeight ?? 0;\n const clientHeight = doc?.clientHeight ?? window.innerHeight ?? 0;\n const scrollYMax = Math.max(0, scrollHeight - clientHeight);\n const scrollPercentage = scrollYMax > 0 ? scrollY / scrollYMax : 0;\n\n if (\n lastSnapshot.scrollY === scrollY &&\n lastSnapshot.scrollPercentage === scrollPercentage &&\n lastSnapshot.scrollYMax === scrollYMax\n ) {\n return lastSnapshot;\n }\n\n lastSnapshot = { scrollY, scrollPercentage, scrollYMax };\n return lastSnapshot;\n };\n\n const getServerSnapshot = (): UseScrollYResult => INITIAL_SCROLL_STATE;\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n};\n"],"mappings":";;;;;;AAeA,MAAM,uBAAyC;CAC7C,SAAS;CACT,kBAAkB;CAClB,YAAY;CACb;AAED,IAAI,eAAiC;AAErC,MAAa,cAAc,UAA8C;CACvE,MAAM,EAAE,YAAY,SAAS,EAAE;CAE/B,MAAM,mBAAmB,sBAAsB,QAAQ;CAEvD,MAAM,YAAY,aACf,aAAyB;AACxB,MAAI,OAAO,WAAW,eAAe,CAAC,iBAAkB,cAAa;EACrE,IAAI,MAAM;EAEV,MAAM,gBAAgB;AACpB,OAAI,IAAK;AACT,SAAM,OAAO,4BAA4B;AACvC,UAAM;AACN,cAAU;KACV;;AAGJ,mBAAiB,iBAAiB,UAAU,SAAS,EAAE,SAAS,MAAM,CAAC;AAEvE,eAAa;AACX,oBAAiB,oBAAoB,UAAU,QAAQ;AACvD,OAAI,IAAK,QAAO,qBAAqB,IAAI;;IAG7C,CAAC,iBAAiB,CACnB;CAED,MAAM,oBAAsC;AAC1C,MAAI,OAAO,WAAW,eAAe,CAAC,iBACpC,QAAO;AAIT,MAAI,4BAA4B,aAAa;GAC3C,MAAM,UAAU,iBAAiB;GACjC,MAAM,eAAe,iBAAiB;GACtC,MAAM,eAAe,iBAAiB;GACtC,MAAM,aAAa,KAAK,IAAI,GAAG,eAAe,aAAa;GAC3D,MAAM,mBAAmB,aAAa,IAAI,UAAU,aAAa;AAEjE,OACE,aAAa,YAAY,WACzB,aAAa,qBAAqB,oBAClC,aAAa,eAAe,WAE5B,QAAO;AAGT,kBAAe;IAAE;IAAS;IAAkB;IAAY;AACxD,UAAO;;EAIT,MAAM,MAAM,SAAS;EACrB,MAAM,OAAO,SAAS;EAEtB,MAAM,UACJ,OAAO,WACP,OAAO,eACP,KAAK,aACL,MAAM,aACN;EAEF,MAAM,eAAe,KAAK,gBAAgB,MAAM,gBAAgB;EAChE,MAAM,eAAe,KAAK,gBAAgB,OAAO,eAAe;EAChE,MAAM,aAAa,KAAK,IAAI,GAAG,eAAe,aAAa;EAC3D,MAAM,mBAAmB,aAAa,IAAI,UAAU,aAAa;AAEjE,MACE,aAAa,YAAY,WACzB,aAAa,qBAAqB,oBAClC,aAAa,eAAe,WAE5B,QAAO;AAGT,iBAAe;GAAE;GAAS;GAAkB;GAAY;AACxD,SAAO;;CAGT,MAAM,0BAA4C;AAElD,QAAO,qBAAqB,WAAW,aAAa,kBAAkB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSearch.mjs","names":[],"sources":["../../../src/hooks/useSearch.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef, useState } from 'react';\n\ntype UseSearchProps = {\n minChars?: number;\n debounceMs?: number;\n trim?: boolean;\n defaultValue?: string | null;\n onSearch?: (value: string) => void;\n onClear?: () => void;\n};\n\nexport const useSearch = (options?: UseSearchProps) => {\n const {\n minChars = 3,\n debounceMs = 300,\n trim = true,\n defaultValue,\n onSearch,\n onClear,\n } = options ?? {};\n const searchRef = useRef('');\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [search, setDebouncedSearch] = useState<string>(defaultValue ?? '');\n\n const clearTimer = () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n };\n\n const setSearch = (value: string) => {\n searchRef.current = value;\n const normalized = trim ? value.trim() : value;\n\n clearTimer();\n\n if (normalized.length < minChars) {\n setDebouncedSearch('');\n onClear?.();\n return;\n }\n\n timerRef.current = setTimeout(() => {\n const current = trim ? searchRef.current.trim() : searchRef.current;\n if (current.length >= minChars) {\n setDebouncedSearch(current);\n onSearch?.(current);\n } else {\n setDebouncedSearch('');\n onClear?.();\n }\n }, debounceMs);\n };\n\n useEffect(() => {\n return () => {\n clearTimer();\n };\n }, []);\n\n const hasMinChars = search.length >= minChars;\n\n return { setSearch, search, hasMinChars };\n};\n"],"mappings":";;;;;AAaA,MAAa,aAAa,YAA6B;CACrD,MAAM,EACJ,WAAW,GACX,aAAa,KACb,OAAO,MACP,cACA,UACA,YACE,WAAW,CAAC;CAChB,MAAM,YAAY,OAAO,EAAE;CAC3B,MAAM,WAAW,OAA6C,IAAI;CAClE,MAAM,CAAC,QAAQ,sBAAsB,SAAiB,gBAAgB,EAAE;CAExE,MAAM,mBAAmB;EACvB,IAAI,SAAS,SAAS;GACpB,aAAa,SAAS,OAAO;GAC7B,SAAS,UAAU;EACrB;CACF;CAEA,MAAM,aAAa,UAAkB;EACnC,UAAU,UAAU;EACpB,MAAM,aAAa,OAAO,MAAM,KAAK,IAAI;EAEzC,WAAW;EAEX,IAAI,WAAW,SAAS,UAAU;GAChC,mBAAmB,EAAE;GACrB,UAAU;GACV;EACF;EAEA,SAAS,UAAU,iBAAiB;GAClC,MAAM,UAAU,OAAO,UAAU,QAAQ,KAAK,IAAI,UAAU;GAC5D,IAAI,QAAQ,UAAU,UAAU;IAC9B,mBAAmB,OAAO;IAC1B,WAAW,OAAO;GACpB,OAAO;IACL,mBAAmB,EAAE;IACrB,UAAU;GACZ;EACF,GAAG,UAAU;CACf;CAEA,gBAAgB;EACd,aAAa;GACX,WAAW;EACb;CACF,GAAG,CAAC,CAAC;CAIL,OAAO;EAAE;EAAW;EAAQ,aAFR,OAAO,UAAU;CAEG;AAC1C"}
1
+ {"version":3,"file":"useSearch.mjs","names":[],"sources":["../../../src/hooks/useSearch.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef, useState } from 'react';\n\ntype UseSearchProps = {\n minChars?: number;\n debounceMs?: number;\n trim?: boolean;\n defaultValue?: string | null;\n onSearch?: (value: string) => void;\n onClear?: () => void;\n};\n\nexport const useSearch = (options?: UseSearchProps) => {\n const {\n minChars = 3,\n debounceMs = 300,\n trim = true,\n defaultValue,\n onSearch,\n onClear,\n } = options ?? {};\n const searchRef = useRef('');\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [search, setDebouncedSearch] = useState<string>(defaultValue ?? '');\n\n const clearTimer = () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n };\n\n const setSearch = (value: string) => {\n searchRef.current = value;\n const normalized = trim ? value.trim() : value;\n\n clearTimer();\n\n if (normalized.length < minChars) {\n setDebouncedSearch('');\n onClear?.();\n return;\n }\n\n timerRef.current = setTimeout(() => {\n const current = trim ? searchRef.current.trim() : searchRef.current;\n if (current.length >= minChars) {\n setDebouncedSearch(current);\n onSearch?.(current);\n } else {\n setDebouncedSearch('');\n onClear?.();\n }\n }, debounceMs);\n };\n\n useEffect(() => {\n return () => {\n clearTimer();\n };\n }, []);\n\n const hasMinChars = search.length >= minChars;\n\n return { setSearch, search, hasMinChars };\n};\n"],"mappings":";;;;;AAaA,MAAa,aAAa,YAA6B;CACrD,MAAM,EACJ,WAAW,GACX,aAAa,KACb,OAAO,MACP,cACA,UACA,YACE,WAAW,EAAE;CACjB,MAAM,YAAY,OAAO,GAAG;CAC5B,MAAM,WAAW,OAA6C,KAAK;CACnE,MAAM,CAAC,QAAQ,sBAAsB,SAAiB,gBAAgB,GAAG;CAEzE,MAAM,mBAAmB;AACvB,MAAI,SAAS,SAAS;AACpB,gBAAa,SAAS,QAAQ;AAC9B,YAAS,UAAU;;;CAIvB,MAAM,aAAa,UAAkB;AACnC,YAAU,UAAU;EACpB,MAAM,aAAa,OAAO,MAAM,MAAM,GAAG;AAEzC,cAAY;AAEZ,MAAI,WAAW,SAAS,UAAU;AAChC,sBAAmB,GAAG;AACtB,cAAW;AACX;;AAGF,WAAS,UAAU,iBAAiB;GAClC,MAAM,UAAU,OAAO,UAAU,QAAQ,MAAM,GAAG,UAAU;AAC5D,OAAI,QAAQ,UAAU,UAAU;AAC9B,uBAAmB,QAAQ;AAC3B,eAAW,QAAQ;UACd;AACL,uBAAmB,GAAG;AACtB,eAAW;;KAEZ,WAAW;;AAGhB,iBAAgB;AACd,eAAa;AACX,eAAY;;IAEb,EAAE,CAAC;AAIN,QAAO;EAAE;EAAW;EAAQ,aAFR,OAAO,UAAU;EAEI"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.mjs","names":[],"sources":["../../../src/libs/auth.ts"],"sourcesContent":["import { passkeyClient } from '@better-auth/passkey/client';\nimport { ssoClient } from '@better-auth/sso/client';\nimport { editor } from '@intlayer/config/built';\nimport { BACKEND_URL } from '@intlayer/config/defaultValues';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createAuthClient } from 'better-auth/client';\nimport { magicLinkClient, twoFactorClient } from 'better-auth/client/plugins';\n\nconst getAuthClient = (backendURL: string) =>\n createAuthClient({\n baseURL: backendURL,\n withCredentials: true, // makes fetch forward cookies\n plugins: [\n twoFactorClient({\n onTwoFactorRedirect: () => {\n // Preserve redirect_url when redirecting to 2FA\n const searchParams = new URLSearchParams(window.location.search);\n const redirectUrl = searchParams.get('redirect_url');\n const twoFaUrl = redirectUrl\n ? `/auth/2fa?redirect_url=${encodeURIComponent(redirectUrl)}`\n : '/auth/2fa';\n window.location.href = twoFaUrl;\n },\n }),\n passkeyClient(),\n magicLinkClient() as never,\n ssoClient(),\n ],\n });\n\ntype AuthClient = ReturnType<typeof getAuthClient>;\n\nexport interface AuthAPI {\n getAuthClient: () => AuthClient;\n signInEmail: AuthClient['signIn']['email'];\n signUpEmail: AuthClient['signUp']['email'];\n signOut: AuthClient['signOut'];\n signInSocial: AuthClient['signIn']['social'];\n linkSocial: AuthClient['linkSocial'];\n changePasswordSession: AuthClient['changePassword'];\n requestPasswordResetSession: AuthClient['requestPasswordReset'];\n resetPassword: AuthClient['resetPassword'];\n verifyEmailSession: AuthClient['verifyEmail'];\n getSession: AuthClient['getSession'];\n forgetPassword: AuthClient['requestPasswordReset'];\n sendVerificationEmail: AuthClient['sendVerificationEmail'];\n changeEmail: AuthClient['changeEmail'];\n deleteUser: AuthClient['deleteUser'];\n revokeSession: AuthClient['revokeSession'];\n revokeSessions: AuthClient['revokeSessions'];\n revokeOtherSessions: AuthClient['revokeOtherSessions'];\n listAccounts: AuthClient['listAccounts'];\n unlinkAccount: AuthClient['unlinkAccount'];\n refreshToken: AuthClient['refreshToken'];\n getAccessToken: AuthClient['getAccessToken'];\n accountInfo: AuthClient['accountInfo'];\n updateUser: AuthClient['updateUser'];\n listSessions: AuthClient['listSessions'];\n enableTwoFactor: AuthClient['twoFactor']['enable'];\n disableTwoFactor: AuthClient['twoFactor']['disable'];\n verifyTotp: AuthClient['twoFactor']['verifyTotp'];\n verifyBackupCode: AuthClient['twoFactor']['verifyBackupCode'];\n addPasskey: AuthClient['passkey']['addPasskey'];\n signInPasskey: AuthClient['signIn']['passkey'];\n deletePasskey: AuthClient['passkey']['deletePasskey'];\n listPasskeys: () => Promise<any>;\n signInMagicLink: (\n // Redeclare it because of type inference issues\n input: { email: string; callbackURL: string }\n ) => any;\n registerSSO: AuthClient['sso']['register'];\n listSSOProviders: () => Promise<any>;\n deleteSSOProvider: (args: { providerId: string }) => Promise<any>;\n signInSSO: AuthClient['signIn']['sso'];\n}\n\nexport const getAuthAPI = (\n intlayerConfig?: Pick<IntlayerConfig, 'editor'>\n): AuthAPI => {\n let backendURL = intlayerConfig?.editor?.backendURL ?? editor?.backendURL;\n\n if (!backendURL) {\n backendURL = BACKEND_URL;\n console.error('Backend URL is not defined in the Intlayer configuration.');\n }\n\n const client = getAuthClient(backendURL);\n\n const signInEmail: AuthClient['signIn']['email'] = async (...args) => {\n return client.signIn.email(...args);\n };\n\n const signInSocial: AuthClient['signIn']['social'] = async (...args) => {\n return client.signIn.social(...args);\n };\n\n const signUpEmail: AuthClient['signUp']['email'] = async (...args) => {\n return client.signUp.email(...args);\n };\n\n const signOut: AuthClient['signOut'] = async (...args) => {\n return client.signOut(...args);\n };\n\n const changePasswordSession: AuthClient['changePassword'] = async (\n ...args\n ) => {\n return client.changePassword(...args);\n };\n\n const requestPasswordResetSession: AuthClient['requestPasswordReset'] =\n async (...args) => {\n return client.requestPasswordReset(...args);\n };\n\n // @ts-ignore - resetPassword is not typed\n const resetPassword: AuthClient['resetPassword'] = async (...args) => {\n return client.resetPassword(...args);\n };\n\n const verifyEmailSession: AuthClient['verifyEmail'] = async (...args) => {\n return client.verifyEmail(...args);\n };\n\n const getSession: AuthClient['getSession'] = async (...args) => {\n return client.getSession(...args);\n };\n\n const forgetPassword: AuthClient['requestPasswordReset'] = async (\n ...args\n ) => {\n return client.requestPasswordReset(...args);\n };\n\n const sendVerificationEmail: AuthClient['sendVerificationEmail'] = async (\n ...args\n ) => {\n return client.sendVerificationEmail(...args);\n };\n\n const changeEmail: AuthClient['changeEmail'] = async (...args) => {\n return client.changeEmail(...args);\n };\n\n // @ts-ignore - deleteUser is not typed\n const deleteUser: AuthClient['deleteUser'] = async (...args) => {\n return client.deleteUser(...args);\n };\n\n const revokeSession: AuthClient['revokeSession'] = async (...args) => {\n return client.revokeSession(...args);\n };\n\n const revokeSessions: AuthClient['revokeSessions'] = async (...args) => {\n return client.revokeSessions(...args);\n };\n\n const revokeOtherSessions: AuthClient['revokeOtherSessions'] = async (\n ...args\n ) => {\n return client.revokeOtherSessions(...args);\n };\n\n const linkSocial: AuthClient['linkSocial'] = async (...args) => {\n return client.linkSocial(...args);\n };\n\n const listAccounts: AuthClient['listAccounts'] = async (...args) => {\n return client.listAccounts(...args);\n };\n\n const unlinkAccount: AuthClient['unlinkAccount'] = async (...args) => {\n return client.unlinkAccount(...args);\n };\n\n const refreshToken: AuthClient['refreshToken'] = async (...args) => {\n return client.refreshToken(...args);\n };\n\n const getAccessToken: AuthClient['getAccessToken'] = async (...args) => {\n return client.getAccessToken(...args);\n };\n\n const accountInfo: AuthClient['accountInfo'] = async (...args) => {\n return client.accountInfo(...args);\n };\n\n const updateUser: AuthClient['updateUser'] = async (...args) => {\n return client.updateUser(...args);\n };\n\n const listSessions: AuthClient['listSessions'] = async (...args) => {\n return client.listSessions(...args);\n };\n\n const enableTwoFactor: AuthClient['twoFactor']['enable'] = async (\n ...args\n ) => {\n return client.twoFactor.enable(...args) as ReturnType<\n AuthClient['twoFactor']['enable']\n >;\n };\n\n const disableTwoFactor: AuthClient['twoFactor']['disable'] = async (\n ...args\n ) => {\n return client.twoFactor.disable(...args) as ReturnType<\n AuthClient['twoFactor']['disable']\n >;\n };\n\n const verifyTotp: AuthClient['twoFactor']['verifyTotp'] = async (...args) => {\n return client.twoFactor.verifyTotp(...args) as ReturnType<\n AuthClient['twoFactor']['verifyTotp']\n >;\n };\n\n const verifyBackupCode: AuthClient['twoFactor']['verifyBackupCode'] = async (\n ...args\n ) => {\n return client.twoFactor.verifyBackupCode(...args) as ReturnType<\n AuthClient['twoFactor']['verifyBackupCode']\n >;\n };\n\n const addPasskey: AuthClient['passkey']['addPasskey'] = async (...args) => {\n return client.passkey.addPasskey(...args);\n };\n\n const signInPasskey: AuthClient['signIn']['passkey'] = async (...args) => {\n return client.signIn.passkey(...args);\n };\n\n const deletePasskey: AuthClient['passkey']['deletePasskey'] = async (\n ...args\n ) => {\n return client.passkey.deletePasskey(...args);\n };\n\n const listPasskeys = async () => {\n // @ts-ignore - listPasskeys may not be typed yet\n return client.$fetch('/passkey/list-user-passkeys', {\n method: 'GET',\n });\n };\n\n const signInMagicLink: any = async (...args: any[]) => {\n return (client.signIn as any).magicLink(...args);\n };\n\n const signInSSO: AuthClient['signIn']['sso'] = async (...args) => {\n return client.signIn.sso(...args);\n };\n\n const registerSSO: AuthClient['sso']['register'] = async (...args) => {\n return client.sso.register(...args);\n };\n\n const listSSOProviders = async () => {\n const response = await (client.sso as any).providers();\n return { data: response?.data?.providers ?? [] };\n };\n\n const deleteSSOProvider = async (args: { providerId: string }) => {\n return (client.sso as any).deleteProvider({ providerId: args.providerId });\n };\n\n return {\n getAuthClient: () => client,\n signInEmail,\n signUpEmail,\n signOut,\n signInSocial,\n linkSocial,\n changePasswordSession,\n requestPasswordResetSession,\n resetPassword,\n verifyEmailSession,\n getSession,\n forgetPassword,\n sendVerificationEmail,\n changeEmail,\n deleteUser,\n revokeSession,\n revokeSessions,\n revokeOtherSessions,\n listAccounts,\n unlinkAccount,\n refreshToken,\n getAccessToken,\n accountInfo,\n updateUser,\n listSessions,\n enableTwoFactor,\n disableTwoFactor,\n verifyTotp,\n verifyBackupCode,\n addPasskey,\n signInPasskey,\n deletePasskey,\n listPasskeys,\n signInMagicLink,\n signInSSO,\n registerSSO,\n listSSOProviders,\n deleteSSOProvider,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"auth.mjs","names":[],"sources":["../../../src/libs/auth.ts"],"sourcesContent":["import { passkeyClient } from '@better-auth/passkey/client';\nimport { ssoClient } from '@better-auth/sso/client';\nimport { editor } from '@intlayer/config/built';\nimport { BACKEND_URL } from '@intlayer/config/defaultValues';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createAuthClient } from 'better-auth/client';\nimport { magicLinkClient, twoFactorClient } from 'better-auth/client/plugins';\n\nconst getAuthClient = (backendURL: string) =>\n createAuthClient({\n baseURL: backendURL,\n withCredentials: true, // makes fetch forward cookies\n plugins: [\n twoFactorClient({\n onTwoFactorRedirect: () => {\n // Preserve redirect_url when redirecting to 2FA\n const searchParams = new URLSearchParams(window.location.search);\n const redirectUrl = searchParams.get('redirect_url');\n const twoFaUrl = redirectUrl\n ? `/auth/2fa?redirect_url=${encodeURIComponent(redirectUrl)}`\n : '/auth/2fa';\n window.location.href = twoFaUrl;\n },\n }),\n passkeyClient(),\n magicLinkClient() as never,\n ssoClient(),\n ],\n });\n\ntype AuthClient = ReturnType<typeof getAuthClient>;\n\nexport interface AuthAPI {\n getAuthClient: () => AuthClient;\n signInEmail: AuthClient['signIn']['email'];\n signUpEmail: AuthClient['signUp']['email'];\n signOut: AuthClient['signOut'];\n signInSocial: AuthClient['signIn']['social'];\n linkSocial: AuthClient['linkSocial'];\n changePasswordSession: AuthClient['changePassword'];\n requestPasswordResetSession: AuthClient['requestPasswordReset'];\n resetPassword: AuthClient['resetPassword'];\n verifyEmailSession: AuthClient['verifyEmail'];\n getSession: AuthClient['getSession'];\n forgetPassword: AuthClient['requestPasswordReset'];\n sendVerificationEmail: AuthClient['sendVerificationEmail'];\n changeEmail: AuthClient['changeEmail'];\n deleteUser: AuthClient['deleteUser'];\n revokeSession: AuthClient['revokeSession'];\n revokeSessions: AuthClient['revokeSessions'];\n revokeOtherSessions: AuthClient['revokeOtherSessions'];\n listAccounts: AuthClient['listAccounts'];\n unlinkAccount: AuthClient['unlinkAccount'];\n refreshToken: AuthClient['refreshToken'];\n getAccessToken: AuthClient['getAccessToken'];\n accountInfo: AuthClient['accountInfo'];\n updateUser: AuthClient['updateUser'];\n listSessions: AuthClient['listSessions'];\n enableTwoFactor: AuthClient['twoFactor']['enable'];\n disableTwoFactor: AuthClient['twoFactor']['disable'];\n verifyTotp: AuthClient['twoFactor']['verifyTotp'];\n verifyBackupCode: AuthClient['twoFactor']['verifyBackupCode'];\n addPasskey: AuthClient['passkey']['addPasskey'];\n signInPasskey: AuthClient['signIn']['passkey'];\n deletePasskey: AuthClient['passkey']['deletePasskey'];\n listPasskeys: () => Promise<any>;\n signInMagicLink: (\n // Redeclare it because of type inference issues\n input: { email: string; callbackURL: string }\n ) => any;\n registerSSO: AuthClient['sso']['register'];\n listSSOProviders: () => Promise<any>;\n deleteSSOProvider: (args: { providerId: string }) => Promise<any>;\n signInSSO: AuthClient['signIn']['sso'];\n}\n\nexport const getAuthAPI = (\n intlayerConfig?: Pick<IntlayerConfig, 'editor'>\n): AuthAPI => {\n let backendURL = intlayerConfig?.editor?.backendURL ?? editor?.backendURL;\n\n if (!backendURL) {\n backendURL = BACKEND_URL;\n console.error('Backend URL is not defined in the Intlayer configuration.');\n }\n\n const client = getAuthClient(backendURL);\n\n const signInEmail: AuthClient['signIn']['email'] = async (...args) => {\n return client.signIn.email(...args);\n };\n\n const signInSocial: AuthClient['signIn']['social'] = async (...args) => {\n return client.signIn.social(...args);\n };\n\n const signUpEmail: AuthClient['signUp']['email'] = async (...args) => {\n return client.signUp.email(...args);\n };\n\n const signOut: AuthClient['signOut'] = async (...args) => {\n return client.signOut(...args);\n };\n\n const changePasswordSession: AuthClient['changePassword'] = async (\n ...args\n ) => {\n return client.changePassword(...args);\n };\n\n const requestPasswordResetSession: AuthClient['requestPasswordReset'] =\n async (...args) => {\n return client.requestPasswordReset(...args);\n };\n\n // @ts-ignore - resetPassword is not typed\n const resetPassword: AuthClient['resetPassword'] = async (...args) => {\n return client.resetPassword(...args);\n };\n\n const verifyEmailSession: AuthClient['verifyEmail'] = async (...args) => {\n return client.verifyEmail(...args);\n };\n\n const getSession: AuthClient['getSession'] = async (...args) => {\n return client.getSession(...args);\n };\n\n const forgetPassword: AuthClient['requestPasswordReset'] = async (\n ...args\n ) => {\n return client.requestPasswordReset(...args);\n };\n\n const sendVerificationEmail: AuthClient['sendVerificationEmail'] = async (\n ...args\n ) => {\n return client.sendVerificationEmail(...args);\n };\n\n const changeEmail: AuthClient['changeEmail'] = async (...args) => {\n return client.changeEmail(...args);\n };\n\n // @ts-ignore - deleteUser is not typed\n const deleteUser: AuthClient['deleteUser'] = async (...args) => {\n return client.deleteUser(...args);\n };\n\n const revokeSession: AuthClient['revokeSession'] = async (...args) => {\n return client.revokeSession(...args);\n };\n\n const revokeSessions: AuthClient['revokeSessions'] = async (...args) => {\n return client.revokeSessions(...args);\n };\n\n const revokeOtherSessions: AuthClient['revokeOtherSessions'] = async (\n ...args\n ) => {\n return client.revokeOtherSessions(...args);\n };\n\n const linkSocial: AuthClient['linkSocial'] = async (...args) => {\n return client.linkSocial(...args);\n };\n\n const listAccounts: AuthClient['listAccounts'] = async (...args) => {\n return client.listAccounts(...args);\n };\n\n const unlinkAccount: AuthClient['unlinkAccount'] = async (...args) => {\n return client.unlinkAccount(...args);\n };\n\n const refreshToken: AuthClient['refreshToken'] = async (...args) => {\n return client.refreshToken(...args);\n };\n\n const getAccessToken: AuthClient['getAccessToken'] = async (...args) => {\n return client.getAccessToken(...args);\n };\n\n const accountInfo: AuthClient['accountInfo'] = async (...args) => {\n return client.accountInfo(...args);\n };\n\n const updateUser: AuthClient['updateUser'] = async (...args) => {\n return client.updateUser(...args);\n };\n\n const listSessions: AuthClient['listSessions'] = async (...args) => {\n return client.listSessions(...args);\n };\n\n const enableTwoFactor: AuthClient['twoFactor']['enable'] = async (\n ...args\n ) => {\n return client.twoFactor.enable(...args) as ReturnType<\n AuthClient['twoFactor']['enable']\n >;\n };\n\n const disableTwoFactor: AuthClient['twoFactor']['disable'] = async (\n ...args\n ) => {\n return client.twoFactor.disable(...args) as ReturnType<\n AuthClient['twoFactor']['disable']\n >;\n };\n\n const verifyTotp: AuthClient['twoFactor']['verifyTotp'] = async (...args) => {\n return client.twoFactor.verifyTotp(...args) as ReturnType<\n AuthClient['twoFactor']['verifyTotp']\n >;\n };\n\n const verifyBackupCode: AuthClient['twoFactor']['verifyBackupCode'] = async (\n ...args\n ) => {\n return client.twoFactor.verifyBackupCode(...args) as ReturnType<\n AuthClient['twoFactor']['verifyBackupCode']\n >;\n };\n\n const addPasskey: AuthClient['passkey']['addPasskey'] = async (...args) => {\n return client.passkey.addPasskey(...args);\n };\n\n const signInPasskey: AuthClient['signIn']['passkey'] = async (...args) => {\n return client.signIn.passkey(...args);\n };\n\n const deletePasskey: AuthClient['passkey']['deletePasskey'] = async (\n ...args\n ) => {\n return client.passkey.deletePasskey(...args);\n };\n\n const listPasskeys = async () => {\n // @ts-ignore - listPasskeys may not be typed yet\n return client.$fetch('/passkey/list-user-passkeys', {\n method: 'GET',\n });\n };\n\n const signInMagicLink: any = async (...args: any[]) => {\n return (client.signIn as any).magicLink(...args);\n };\n\n const signInSSO: AuthClient['signIn']['sso'] = async (...args) => {\n return client.signIn.sso(...args);\n };\n\n const registerSSO: AuthClient['sso']['register'] = async (...args) => {\n return client.sso.register(...args);\n };\n\n const listSSOProviders = async () => {\n const response = await (client.sso as any).providers();\n return { data: response?.data?.providers ?? [] };\n };\n\n const deleteSSOProvider = async (args: { providerId: string }) => {\n return (client.sso as any).deleteProvider({ providerId: args.providerId });\n };\n\n return {\n getAuthClient: () => client,\n signInEmail,\n signUpEmail,\n signOut,\n signInSocial,\n linkSocial,\n changePasswordSession,\n requestPasswordResetSession,\n resetPassword,\n verifyEmailSession,\n getSession,\n forgetPassword,\n sendVerificationEmail,\n changeEmail,\n deleteUser,\n revokeSession,\n revokeSessions,\n revokeOtherSessions,\n listAccounts,\n unlinkAccount,\n refreshToken,\n getAccessToken,\n accountInfo,\n updateUser,\n listSessions,\n enableTwoFactor,\n disableTwoFactor,\n verifyTotp,\n verifyBackupCode,\n addPasskey,\n signInPasskey,\n deletePasskey,\n listPasskeys,\n signInMagicLink,\n signInSSO,\n registerSSO,\n listSSOProviders,\n deleteSSOProvider,\n };\n};\n"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { useToast } from "../components/Toaster/useToast.mjs";
4
4
  import { createAsyncStoragePersister } from "@tanstack/query-async-storage-persister";
5
- import { MutationCache, QueryClient, QueryClientProvider } from "@tanstack/react-query";
5
+ import { MutationCache, QueryClient, QueryClientProvider, timeoutManager } from "@tanstack/react-query";
6
6
  import { PersistQueryClientProvider } from "@tanstack/react-query-persist-client";
7
7
  import { useRef } from "react";
8
8
  import { jsx } from "react/jsx-runtime";
@@ -10,6 +10,25 @@ import { jsx } from "react/jsx-runtime";
10
10
  //#region src/providers/ReactQueryProvider.tsx
11
11
  const PERSIST_MAX_AGE = 1e3 * 60 * 60 * 24;
12
12
  const PERSIST_BUSTER = "v1";
13
+ if (typeof window === "undefined") {
14
+ const unref = (timer) => {
15
+ if (typeof timer === "object" && timer !== null && "unref" in timer && typeof timer.unref === "function") timer.unref();
16
+ };
17
+ timeoutManager.setTimeoutProvider({
18
+ setTimeout: (callback, delay) => {
19
+ const timer = setTimeout(callback, delay);
20
+ unref(timer);
21
+ return timer;
22
+ },
23
+ clearTimeout: (timer) => clearTimeout(timer),
24
+ setInterval: (callback, delay) => {
25
+ const timer = setInterval(callback, delay);
26
+ unref(timer);
27
+ return timer;
28
+ },
29
+ clearInterval: (timer) => clearInterval(timer)
30
+ });
31
+ }
13
32
  const defaultQueryOptions = {
14
33
  queries: {
15
34
  retry: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"ReactQueryProvider.mjs","names":[],"sources":["../../../src/providers/ReactQueryProvider.tsx"],"sourcesContent":["'use client';\n\nimport { createAsyncStoragePersister } from '@tanstack/query-async-storage-persister';\nimport {\n type DefaultOptions,\n MutationCache,\n QueryClient,\n QueryClientProvider,\n type QueryKey,\n type UseMutationOptions,\n} from '@tanstack/react-query';\nimport { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';\nimport { type FC, type PropsWithChildren, useRef } from 'react';\nimport { useToast } from '../components/Toaster';\n\nconst PERSIST_MAX_AGE = 1000 * 60 * 60 * 24; // 24h\n// Bump to invalidate every persisted cache after a breaking change in query shapes\nconst PERSIST_BUSTER = 'v1';\n\nconst defaultQueryOptions: DefaultOptions = {\n queries: {\n retry: 1,\n // Keep data fresh for 30 seconds to avoid unnecessary refetches during navigation\n staleTime: 30 * 1000,\n // gcTime must be >= persist maxAge, otherwise restored entries are dropped on rehydrate\n gcTime: PERSIST_MAX_AGE,\n // Only refetch on mount if data is stale (not every single mount)\n refetchOnMount: true,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n },\n mutations: {\n retry: 0,\n },\n};\n\nconst browserLocalStorage = {\n getItem: (key: string) => Promise.resolve(window.localStorage.getItem(key)),\n setItem: (key: string, value: string) =>\n Promise.resolve(window.localStorage.setItem(key, value)),\n removeItem: (key: string) =>\n Promise.resolve(window.localStorage.removeItem(key)),\n};\n\nconst noopStorage = {\n getItem: () => Promise.resolve(null),\n setItem: () => Promise.resolve(),\n removeItem: () => Promise.resolve(),\n};\n\nconst persister = createAsyncStoragePersister({\n storage: typeof window !== 'undefined' ? browserLocalStorage : noopStorage,\n key: 'intlayer-rq-cache',\n});\n\nconst SHOW_ERROR_CODE = false;\n\ndeclare module '@tanstack/react-query' {\n interface Register {\n mutationMeta: {\n onSuccess?: UseMutationOptions['onSuccess'];\n onError?: UseMutationOptions['onError'];\n invalidateQueries?: QueryKey[];\n resetQueries?: QueryKey[];\n };\n }\n}\n\nconst formatErrorCode = (errorCode: string) => errorCode.split('_').join(' ');\n\n/**\n * Hook to handle error logging and toast notifications\n */\nconst useToastEvents = () => {\n const { toast } = useToast();\n\n const onError: MutationCache['config']['onError'] = (error: any) => {\n const parsed = (() => {\n try {\n if (typeof error === 'string') return JSON.parse(error);\n if (error instanceof Error) return JSON.parse(error.message);\n } catch (_) {}\n return error;\n })();\n\n [parsed].flat().forEach((err: any) => {\n // Check for nested error object (standard in your API responses: { statusCode, error: { ... } })\n const apiError = err?.error ?? err;\n\n if (apiError?.code === 'RATE_LIMIT_EXCEEDED_UNAUTHENTICATED') {\n toast({\n title: apiError.message,\n variant: 'error',\n });\n return;\n }\n\n toast({\n title: formatErrorCode(\n SHOW_ERROR_CODE\n ? (apiError?.code ?? err?.code)\n : (apiError?.title ?? err?.title ?? 'Error')\n ),\n description:\n apiError?.message ??\n err?.message ??\n String(apiError ?? 'An error occurred'),\n variant: 'error',\n });\n });\n };\n\n const onSuccess: MutationCache['config']['onSuccess'] = (data: any) => {\n if (data?.error) {\n toast({\n title: formatErrorCode(data.error.title ?? data.error.code ?? 'Error'),\n description:\n data.error.message ?? data.error.code ?? 'An error occurred',\n variant: 'error',\n });\n }\n\n if (data?.message) {\n toast({\n title: data.message,\n description: data.description,\n variant: 'success',\n });\n }\n };\n\n return {\n onError,\n onSuccess,\n };\n};\n\nexport const getQueryClient = () =>\n new QueryClient({ defaultOptions: defaultQueryOptions });\n\ninterface ReactQueryProviderProps {\n client?: QueryClient;\n}\n\nexport const ReactQueryProvider: FC<\n PropsWithChildren<ReactQueryProviderProps>\n> = ({ children, client }) => {\n const { onError, onSuccess } = useToastEvents();\n // Keep handlers in a ref so the cache config (set once below) always calls\n // the latest closures from useToastEvents without needing re-wiring.\n const handlersRef = useRef({ onSuccess, onError });\n handlersRef.current = { onSuccess, onError };\n\n const clientRef = useRef<QueryClient>(client ?? null);\n\n if (!clientRef.current) {\n clientRef.current = new QueryClient({\n defaultOptions: defaultQueryOptions,\n mutationCache: new MutationCache(),\n });\n }\n\n // Wire toast handlers + meta-driven invalidation onto whatever client we\n // ended up with. Required even when the client is created externally (e.g.\n // via getQueryClient() in TanStack Router context), since the externally\n // created client ships with a bare MutationCache.\n const wiredRef = useRef(false);\n if (!wiredRef.current) {\n wiredRef.current = true;\n const cache = clientRef.current.getMutationCache();\n cache.config.onSuccess = (\n data,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onSuccess?.(\n data,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onError = (\n error,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onError?.(\n error,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onSettled = (\n _data,\n _error,\n _variables,\n _onMutateResult,\n mutation\n ) => {\n if (mutation.meta?.invalidateQueries) {\n mutation.meta.invalidateQueries.forEach((queryKey) => {\n clientRef.current?.invalidateQueries({ queryKey });\n });\n }\n\n if (mutation.meta?.resetQueries) {\n mutation.meta.resetQueries.forEach((queryKey) => {\n clientRef.current?.resetQueries({ queryKey });\n });\n }\n };\n }\n\n if (client || typeof window === 'undefined') {\n return (\n <QueryClientProvider client={clientRef.current}>\n {children}\n </QueryClientProvider>\n );\n }\n\n return (\n <PersistQueryClientProvider\n client={clientRef.current}\n persistOptions={{\n persister,\n maxAge: PERSIST_MAX_AGE,\n buster: PERSIST_BUSTER,\n dehydrateOptions: {\n shouldDehydrateQuery: (query) => query.state.status === 'success',\n },\n }}\n >\n {children}\n </PersistQueryClientProvider>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ReactQueryProvider.mjs","names":[],"sources":["../../../src/providers/ReactQueryProvider.tsx"],"sourcesContent":["'use client';\n\nimport { createAsyncStoragePersister } from '@tanstack/query-async-storage-persister';\nimport {\n type DefaultOptions,\n MutationCache,\n QueryClient,\n QueryClientProvider,\n type QueryKey,\n timeoutManager,\n type UseMutationOptions,\n} from '@tanstack/react-query';\nimport { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';\nimport { type FC, type PropsWithChildren, useRef } from 'react';\nimport { useToast } from '../components/Toaster';\n\nconst PERSIST_MAX_AGE = 1000 * 60 * 60 * 24; // 24h\n// Bump to invalidate every persisted cache after a breaking change in query shapes\nconst PERSIST_BUSTER = 'v1';\n\nconst isServer = typeof window === 'undefined';\n\n// During SSR/prerender, react-query schedules `setTimeout`/`setInterval`\n// timers for query garbage collection (`gcTime`) and background refetching\n// (`refetchInterval`). A query built in the cache during render — even an\n// `enabled: false` one — schedules its gcTime timer immediately. In Node,\n// those pending timers keep the event loop alive, so the prerender server\n// never closes and the build hangs after every page has been rendered.\n//\n// Setting `gcTime: Infinity` in the defaults below avoids the *default*\n// timer, but per-query overrides (e.g. `useSession` sets its own `gcTime`)\n// would reintroduce it. To make this robust regardless of per-query options,\n// override react-query's timeout provider on the server so every timer is\n// `unref`-ed — Node can then exit while they are still pending.\nif (isServer) {\n const unref = (timer: unknown): void => {\n if (\n typeof timer === 'object' &&\n timer !== null &&\n 'unref' in timer &&\n typeof (timer as { unref: unknown }).unref === 'function'\n ) {\n (timer as { unref: () => void }).unref();\n }\n };\n\n timeoutManager.setTimeoutProvider({\n setTimeout: (callback, delay) => {\n const timer = setTimeout(callback, delay);\n unref(timer);\n return timer;\n },\n clearTimeout: (timer) => clearTimeout(timer),\n setInterval: (callback, delay) => {\n const timer = setInterval(callback, delay);\n unref(timer);\n return timer;\n },\n clearInterval: (timer) => clearInterval(timer),\n });\n}\n\nconst defaultQueryOptions: DefaultOptions = {\n queries: {\n retry: 1,\n // Keep data fresh for 30 seconds to avoid unnecessary refetches during navigation\n staleTime: 30 * 1000,\n gcTime: PERSIST_MAX_AGE,\n // Only refetch on mount if data is stale (not every single mount)\n refetchOnMount: true,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n },\n mutations: {\n retry: 0,\n },\n};\n\nconst browserLocalStorage = {\n getItem: (key: string) => Promise.resolve(window.localStorage.getItem(key)),\n setItem: (key: string, value: string) =>\n Promise.resolve(window.localStorage.setItem(key, value)),\n removeItem: (key: string) =>\n Promise.resolve(window.localStorage.removeItem(key)),\n};\n\nconst noopStorage = {\n getItem: () => Promise.resolve(null),\n setItem: () => Promise.resolve(),\n removeItem: () => Promise.resolve(),\n};\n\nconst persister = createAsyncStoragePersister({\n storage: typeof window !== 'undefined' ? browserLocalStorage : noopStorage,\n key: 'intlayer-rq-cache',\n});\n\nconst SHOW_ERROR_CODE = false;\n\ndeclare module '@tanstack/react-query' {\n interface Register {\n mutationMeta: {\n onSuccess?: UseMutationOptions['onSuccess'];\n onError?: UseMutationOptions['onError'];\n invalidateQueries?: QueryKey[];\n resetQueries?: QueryKey[];\n };\n }\n}\n\nconst formatErrorCode = (errorCode: string) => errorCode.split('_').join(' ');\n\n/**\n * Hook to handle error logging and toast notifications\n */\nconst useToastEvents = () => {\n const { toast } = useToast();\n\n const onError: MutationCache['config']['onError'] = (error: any) => {\n const parsed = (() => {\n try {\n if (typeof error === 'string') return JSON.parse(error);\n if (error instanceof Error) return JSON.parse(error.message);\n } catch (_) {}\n return error;\n })();\n\n [parsed].flat().forEach((err: any) => {\n // Check for nested error object (standard in your API responses: { statusCode, error: { ... } })\n const apiError = err?.error ?? err;\n\n if (apiError?.code === 'RATE_LIMIT_EXCEEDED_UNAUTHENTICATED') {\n toast({\n title: apiError.message,\n variant: 'error',\n });\n return;\n }\n\n toast({\n title: formatErrorCode(\n SHOW_ERROR_CODE\n ? (apiError?.code ?? err?.code)\n : (apiError?.title ?? err?.title ?? 'Error')\n ),\n description:\n apiError?.message ??\n err?.message ??\n String(apiError ?? 'An error occurred'),\n variant: 'error',\n });\n });\n };\n\n const onSuccess: MutationCache['config']['onSuccess'] = (data: any) => {\n if (data?.error) {\n toast({\n title: formatErrorCode(data.error.title ?? data.error.code ?? 'Error'),\n description:\n data.error.message ?? data.error.code ?? 'An error occurred',\n variant: 'error',\n });\n }\n\n if (data?.message) {\n toast({\n title: data.message,\n description: data.description,\n variant: 'success',\n });\n }\n };\n\n return {\n onError,\n onSuccess,\n };\n};\n\nexport const getQueryClient = () =>\n new QueryClient({ defaultOptions: defaultQueryOptions });\n\ninterface ReactQueryProviderProps {\n client?: QueryClient;\n}\n\nexport const ReactQueryProvider: FC<\n PropsWithChildren<ReactQueryProviderProps>\n> = ({ children, client }) => {\n const { onError, onSuccess } = useToastEvents();\n // Keep handlers in a ref so the cache config (set once below) always calls\n // the latest closures from useToastEvents without needing re-wiring.\n const handlersRef = useRef({ onSuccess, onError });\n handlersRef.current = { onSuccess, onError };\n\n const clientRef = useRef<QueryClient>(client ?? null);\n\n if (!clientRef.current) {\n clientRef.current = new QueryClient({\n defaultOptions: defaultQueryOptions,\n mutationCache: new MutationCache(),\n });\n }\n\n // Wire toast handlers + meta-driven invalidation onto whatever client we\n // ended up with. Required even when the client is created externally (e.g.\n // via getQueryClient() in TanStack Router context), since the externally\n // created client ships with a bare MutationCache.\n const wiredRef = useRef(false);\n if (!wiredRef.current) {\n wiredRef.current = true;\n const cache = clientRef.current.getMutationCache();\n cache.config.onSuccess = (\n data,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onSuccess?.(\n data,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onError = (\n error,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onError?.(\n error,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onSettled = (\n _data,\n _error,\n _variables,\n _onMutateResult,\n mutation\n ) => {\n if (mutation.meta?.invalidateQueries) {\n mutation.meta.invalidateQueries.forEach((queryKey) => {\n clientRef.current?.invalidateQueries({ queryKey });\n });\n }\n\n if (mutation.meta?.resetQueries) {\n mutation.meta.resetQueries.forEach((queryKey) => {\n clientRef.current?.resetQueries({ queryKey });\n });\n }\n };\n }\n\n if (client || typeof window === 'undefined') {\n return (\n <QueryClientProvider client={clientRef.current}>\n {children}\n </QueryClientProvider>\n );\n }\n\n return (\n <PersistQueryClientProvider\n client={clientRef.current}\n persistOptions={{\n persister,\n maxAge: PERSIST_MAX_AGE,\n buster: PERSIST_BUSTER,\n dehydrateOptions: {\n shouldDehydrateQuery: (query) => query.state.status === 'success',\n },\n }}\n >\n {children}\n </PersistQueryClientProvider>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind.config.mjs","names":["localePath"],"sources":["../../src/tailwind.config.ts"],"sourcesContent":["import { dirname, relative } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __filename = fileURLToPath(import.meta.url); // get the resolved path to the file\nconst __dirname = dirname(__filename); // get the name of the directory\n\nconst getTailwindConfig = () => {\n const originAbsolutePath = process.cwd();\n const localePath = __dirname;\n\n let relativePath = relative(originAbsolutePath, localePath);\n\n if (!relativePath) {\n relativePath = '.';\n }\n\n const config = {\n content: [\n `${relativePath}/components/**/*.{ts,tsx,jsx,mjx,js,cjs,cjx,mjs,mjx,svg}`,\n ],\n };\n\n return config;\n};\n\nconst tailwindConfig = getTailwindConfig();\nconst tailwindPresetConfig = tailwindConfig;\n\nexport { tailwindPresetConfig };\nexport default tailwindConfig;\n"],"mappings":";;;;AAIA,MAAM,YAAY,QADC,cAAc,OAAO,KAAK,GACV,CAAC;AAEpC,MAAM,0BAA0B;CAI9B,IAAI,eAAe,SAHQ,QAAQ,IAGU,GAAGA,SAAU;CAE1D,IAAI,CAAC,cACH,eAAe;CASjB,OAAO,EALL,SAAS,CACP,GAAG,aAAa,yDAClB,EAGU;AACd;AAEA,MAAM,iBAAiB,kBAAkB;AACzC,MAAM,uBAAuB"}
1
+ {"version":3,"file":"tailwind.config.mjs","names":["localePath"],"sources":["../../src/tailwind.config.ts"],"sourcesContent":["import { dirname, relative } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __filename = fileURLToPath(import.meta.url); // get the resolved path to the file\nconst __dirname = dirname(__filename); // get the name of the directory\n\nconst getTailwindConfig = () => {\n const originAbsolutePath = process.cwd();\n const localePath = __dirname;\n\n let relativePath = relative(originAbsolutePath, localePath);\n\n if (!relativePath) {\n relativePath = '.';\n }\n\n const config = {\n content: [\n `${relativePath}/components/**/*.{ts,tsx,jsx,mjx,js,cjs,cjx,mjs,mjx,svg}`,\n ],\n };\n\n return config;\n};\n\nconst tailwindConfig = getTailwindConfig();\nconst tailwindPresetConfig = tailwindConfig;\n\nexport { tailwindPresetConfig };\nexport default tailwindConfig;\n"],"mappings":";;;;AAIA,MAAM,YAAY,QADC,cAAc,OAAO,KAAK,IACT,CAAC;AAErC,MAAM,0BAA0B;CAI9B,IAAI,eAAe,SAHQ,QAAQ,KAGW,EAAEA,UAAW;AAE3D,KAAI,CAAC,aACH,gBAAe;AASjB,QAAO,EALL,SAAS,CACP,GAAG,aAAa,0DACjB,EAGU;;AAGf,MAAM,iBAAiB,mBAAmB;AAC1C,MAAM,uBAAuB"}
@@ -1 +1 @@
1
- {"version":3,"file":"cn.mjs","names":[],"sources":["../../../src/utils/cn.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\n"],"mappings":";;;;AAGA,MAAa,MAAM,GAAG,WAAyB,QAAQ,KAAK,MAAM,CAAC"}
1
+ {"version":3,"file":"cn.mjs","names":[],"sources":["../../../src/utils/cn.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\n"],"mappings":";;;;AAGA,MAAa,MAAM,GAAG,WAAyB,QAAQ,KAAK,OAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","names":[],"sources":["../../../../src/api/hooks/auth.ts"],"mappings":";cAMa,QAAA;AAAA,cAmBA,eAAA,QAAe,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAQf,gBAAA;AAAA,cAaA,aAAA;AAAA,cAaA,uBAAA;AAAA,cAUA,WAAA;AAAA,cAUA,SAAA;AAAA,cAmBA,iBAAA;AAAA,cAUA,mBAAA;AAAA,cAUA,gBAAA;AAAA,cAUA,cAAA;AAAA,cAUA,mBAAA;AAAA,cAUA,kBAAA;AAAA,cASA,mBAAA;AAAA,cASA,aAAA;AAAA,cASA,mBAAA;AAAA,cASA,aAAA;AAAA,cASA,gBAAA;AAAA,cASA,gBAAA;AAAA,cASA,eAAA,QAAe,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAQf,kBAAA;AAAA,cAQA,cAAA;AAAA,cAaA,YAAA;AAAA,cASA,mBAAA,QAAmB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAQnB,oBAAA"}
1
+ {"version":3,"file":"auth.d.ts","names":[],"sources":["../../../../src/api/hooks/auth.ts"],"mappings":";cAMa,QAAA;AAAA,cAmBA,eAAA,QAAe,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAQf,gBAAA;AAAA,cAaA,aAAA;AAAA,cAaA,uBAAA;AAAA,cAUA,WAAA;AAAA,cAmBA,SAAA;AAAA,cAoBA,iBAAA;AAAA,cAUA,mBAAA;AAAA,cAUA,gBAAA;AAAA,cAUA,cAAA;AAAA,cAUA,mBAAA;AAAA,cAUA,kBAAA;AAAA,cASA,mBAAA;AAAA,cASA,aAAA;AAAA,cASA,mBAAA;AAAA,cASA,aAAA;AAAA,cASA,gBAAA;AAAA,cASA,gBAAA;AAAA,cASA,eAAA,QAAe,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAQf,kBAAA;AAAA,cAQA,cAAA;AAAA,cAaA,YAAA;AAAA,cASA,mBAAA,QAAmB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAQnB,oBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"showcaseProject.d.ts","names":[],"sources":["../../../../src/api/hooks/showcaseProject.ts"],"mappings":";;;;;cAoBa,sBAAA,GACX,KAAA,GAAQ,qBAAA,EACR,OAAA,GAAU,OAAA,CAAQ,eAAA,CAAgB,yBAAA,OAA2B,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAYlD,yBAAA,GACX,SAAA,EAAW,4BAAA,eACX,OAAA,GAAU,OAAA,CAAQ,eAAA,MAAgB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAevB,2BAAA,GACX,KAAA,EAAO,0BAAA,EACP,OAAA,GAAU,OAAA,CAAQ,eAAA,MAAgB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAevB,wBAAA,GAA4B,KAA4B,GAApB,oBAAoB;AAAA,cAcxD,wBAAA,GAA4B,KAA4B,GAApB,oBAAoB;AAAA,cAcxD,uBAAA,GAA2B,KAA4B,GAApB,oBAAoB;AAAA,cAUvD,yBAAA,GAA6B,KAA4B,GAApB,oBAAoB;AAAA,cAUzD,wBAAA,GAA4B,KAA4B,GAApB,oBAAoB"}
1
+ {"version":3,"file":"showcaseProject.d.ts","names":[],"sources":["../../../../src/api/hooks/showcaseProject.ts"],"mappings":";;;;;cAoBa,sBAAA,GACX,KAAA,GAAQ,qBAAA,EACR,OAAA,GAAU,OAAA,CAAQ,eAAA,CAAgB,yBAAA,OAA2B,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAYlD,yBAAA,GACX,SAAA,EAAW,4BAAA,eACX,OAAA,GAAU,OAAA,CAAQ,eAAA,MAAgB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAevB,2BAAA,GACX,KAAA,EAAO,0BAAA,EACP,OAAA,GAAU,OAAA,CAAQ,eAAA,MAAgB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAevB,wBAAA,GAA4B,KAAA,GAAQ,oBAAA;AAAA,cAcpC,wBAAA,GAA4B,KAAA,GAAQ,oBAAA;AAAA,cAcpC,uBAAA,GAA2B,KAAA,GAAQ,oBAAA;AAAA,cAUnC,yBAAA,GAA6B,KAAA,GAAQ,oBAAA;AAAA,cAUrC,wBAAA,GAA4B,KAAA,GAAQ,oBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useOAuth2.d.ts","names":[],"sources":["../../../../src/api/useAuth/useOAuth2.ts"],"mappings":";;;cASa,SAAA,GACX,qBAAA,GAAwB,IAAI,CAAC,cAAA"}
1
+ {"version":3,"file":"useOAuth2.d.ts","names":[],"sources":["../../../../src/api/useAuth/useOAuth2.ts"],"mappings":";;;cASa,SAAA,GACX,qBAAA,GAAwB,IAAA,CAAK,cAAA"}