@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":"stripe.mjs","names":[],"sources":["../../../../src/api/hooks/stripe.ts"],"sourcesContent":["'use client';\n\nimport type {\n CreatePromoCodeBody,\n GetAffiliatesParams,\n GetCheckoutSessionBody,\n GetPricingBody,\n GetPricingResult,\n GrantAffiliateAccessBody,\n SendAffiliateInvitationBody,\n UpdatePromoCodeBody,\n} from '@intlayer/backend';\nimport {\n type UseQueryOptions,\n useMutation,\n useQuery,\n useQueryClient,\n} from '@tanstack/react-query';\nimport { useStripeAPI } from '../useIntlayerAPI';\nimport { useAppQuery } from './utils';\n\nexport const useGetPricing = (\n body: GetPricingBody,\n options?: Partial<UseQueryOptions<GetPricingResult>>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useQuery({\n queryKey: ['pricing', body],\n queryFn: ({ signal }) => stripeAPI.getPricing(body, { signal }),\n ...options,\n });\n};\n\nexport const useGetSubscription = (\n body: GetCheckoutSessionBody,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['subscription', body],\n queryFn: ({ signal }) => stripeAPI.getSubscription(body, { signal }),\n requireUser: true,\n requireOrganization: true,\n ...options,\n });\n};\n\nexport const useCancelSubscription = () => {\n const stripeAPI = useStripeAPI();\n\n return useMutation({\n mutationKey: ['subscription'],\n mutationFn: () => stripeAPI.cancelSubscription(),\n meta: {\n invalidateQueries: [['session'], ['subscription']],\n },\n });\n};\n\nexport const useGetInvoices = (options?: Partial<UseQueryOptions>) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['invoices'],\n queryFn: ({ signal }) => stripeAPI.getInvoices({ signal }),\n requireUser: true,\n requireOrganization: true,\n ...options,\n });\n};\n\nexport const useGetPaymentMethod = (options?: Partial<UseQueryOptions>) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['paymentMethod'],\n queryFn: ({ signal }) => stripeAPI.getPaymentMethod({ signal }),\n requireUser: true,\n requireOrganization: true,\n ...options,\n });\n};\n\nexport const useCreatePortalSession = () => {\n const stripeAPI = useStripeAPI();\n\n return useMutation({\n mutationKey: ['portalSession'],\n mutationFn: () => stripeAPI.createPortalSession(),\n });\n};\n\nexport const useGetAffiliates = (\n params?: GetAffiliatesParams,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliates', params],\n queryFn: ({ signal }) => stripeAPI.getAffiliates(params, { signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateInvitations = (\n params?: GetAffiliatesParams,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate-invitations', params],\n queryFn: ({ signal }) =>\n stripeAPI.getAffiliateInvitations(params, { signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateById = (\n id: string,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliates', id],\n queryFn: ({ signal }) => stripeAPI.getAffiliateById({ id }, { signal }),\n requireUser: true,\n enabled: Boolean(id),\n ...options,\n });\n};\n\nexport const useGetAffiliate = (options?: Partial<UseQueryOptions>) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate'],\n queryFn: ({ signal }) => stripeAPI.getAffiliate({ signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateAccountSession = (\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate', 'account-session'],\n queryFn: () => stripeAPI.getAffiliateAccountSession(),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateOnboardingLink = (\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate', 'onboarding-link'],\n queryFn: () => stripeAPI.getAffiliateOnboardingLink(),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateStats = (options?: Partial<UseQueryOptions>) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate', 'stats'],\n queryFn: ({ signal }) => stripeAPI.getAffiliateStats({ signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGrantAffiliateAccess = () => {\n const stripeAPI = useStripeAPI();\n\n return useMutation({\n mutationKey: ['affiliate', 'grant'],\n mutationFn: (body: GrantAffiliateAccessBody) =>\n stripeAPI.grantAffiliateAccess(body),\n meta: {\n invalidateQueries: [['affiliate']],\n },\n });\n};\n\nexport const useSendAffiliateInvitation = () => {\n const stripeAPI = useStripeAPI();\n\n return useMutation({\n mutationKey: ['affiliate', 'invitation', 'send'],\n mutationFn: (body: SendAffiliateInvitationBody) =>\n stripeAPI.sendAffiliateInvitation(body),\n meta: {\n invalidateQueries: [['affiliate-invitations']],\n },\n });\n};\n\nexport const useGetAffiliateInvitation = (\n token: string,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useQuery({\n queryKey: ['affiliate', 'invitation', token],\n queryFn: () => stripeAPI.getAffiliateInvitation({ token }),\n enabled: Boolean(token),\n ...options,\n });\n};\n\nexport const useAcceptAffiliateInvitation = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['affiliate', 'invitation', 'accept'],\n mutationFn: ({\n token,\n country,\n stripeAccountType,\n }: {\n token: string;\n country?: string;\n stripeAccountType?: 'express' | 'standard';\n }) =>\n stripeAPI.acceptAffiliateInvitation({\n token,\n country,\n stripeAccountType,\n }),\n onSuccess: (_data, { token }) => {\n queryClient.invalidateQueries({\n queryKey: ['affiliate', 'invitation', token],\n });\n queryClient.invalidateQueries({ queryKey: ['affiliate'] });\n },\n });\n};\n\nexport const useUpdateAffiliateStatus = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['affiliate', 'update'],\n mutationFn: ({\n id,\n status,\n }: {\n id: string;\n status?: 'active' | 'suspended';\n }) => stripeAPI.updateAffiliateStatus({ id }, { status }),\n onSuccess: (_data, { id }) => {\n queryClient.invalidateQueries({ queryKey: ['affiliates', id] });\n queryClient.invalidateQueries({ queryKey: ['affiliates'] });\n },\n });\n};\n\nexport const useGetPromoCodeById = (\n promoCodeId?: string,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['promo-codes', promoCodeId],\n queryFn: ({ signal }) =>\n stripeAPI.getPromoCodeById(promoCodeId!, { signal }),\n enabled: Boolean(promoCodeId),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetPromoCodes = (\n params: { affiliateId?: string } = {},\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['promo-codes', params.affiliateId ?? 'all'],\n queryFn: ({ signal }) => stripeAPI.getPromoCodes(params, { signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useCreatePromoCode = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['promo-codes', 'create'],\n mutationFn: (body: CreatePromoCodeBody) => stripeAPI.createPromoCode(body),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['promo-codes'] });\n },\n });\n};\n\nexport const useUpdatePromoCode = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['promo-codes', 'update'],\n mutationFn: ({ id, ...body }: { id: string } & UpdatePromoCodeBody) =>\n stripeAPI.updatePromoCode({ id, ...body }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['promo-codes'] });\n },\n });\n};\n\nexport const useDeletePromoCode = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['promo-codes', 'delete'],\n mutationFn: ({ id }: { id: string }) => stripeAPI.deletePromoCode({ id }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['promo-codes'] });\n },\n });\n};\n\nexport const useGetAffiliatePromoCode = (\n referralCode?: string,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useQuery({\n queryKey: ['affiliate-promo-code', referralCode],\n queryFn: () => stripeAPI.getAffiliatePromoCode(referralCode!),\n enabled: Boolean(referralCode),\n ...options,\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"stripe.mjs","names":[],"sources":["../../../../src/api/hooks/stripe.ts"],"sourcesContent":["'use client';\n\nimport type {\n CreatePromoCodeBody,\n GetAffiliatesParams,\n GetCheckoutSessionBody,\n GetPricingBody,\n GetPricingResult,\n GrantAffiliateAccessBody,\n SendAffiliateInvitationBody,\n UpdatePromoCodeBody,\n} from '@intlayer/backend';\nimport {\n type UseQueryOptions,\n useMutation,\n useQuery,\n useQueryClient,\n} from '@tanstack/react-query';\nimport { useStripeAPI } from '../useIntlayerAPI';\nimport { useAppQuery } from './utils';\n\nexport const useGetPricing = (\n body: GetPricingBody,\n options?: Partial<UseQueryOptions<GetPricingResult>>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useQuery({\n queryKey: ['pricing', body],\n queryFn: ({ signal }) => stripeAPI.getPricing(body, { signal }),\n ...options,\n });\n};\n\nexport const useGetSubscription = (\n body: GetCheckoutSessionBody,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['subscription', body],\n queryFn: ({ signal }) => stripeAPI.getSubscription(body, { signal }),\n requireUser: true,\n requireOrganization: true,\n ...options,\n });\n};\n\nexport const useCancelSubscription = () => {\n const stripeAPI = useStripeAPI();\n\n return useMutation({\n mutationKey: ['subscription'],\n mutationFn: () => stripeAPI.cancelSubscription(),\n meta: {\n invalidateQueries: [['session'], ['subscription']],\n },\n });\n};\n\nexport const useGetInvoices = (options?: Partial<UseQueryOptions>) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['invoices'],\n queryFn: ({ signal }) => stripeAPI.getInvoices({ signal }),\n requireUser: true,\n requireOrganization: true,\n ...options,\n });\n};\n\nexport const useGetPaymentMethod = (options?: Partial<UseQueryOptions>) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['paymentMethod'],\n queryFn: ({ signal }) => stripeAPI.getPaymentMethod({ signal }),\n requireUser: true,\n requireOrganization: true,\n ...options,\n });\n};\n\nexport const useCreatePortalSession = () => {\n const stripeAPI = useStripeAPI();\n\n return useMutation({\n mutationKey: ['portalSession'],\n mutationFn: () => stripeAPI.createPortalSession(),\n });\n};\n\nexport const useGetAffiliates = (\n params?: GetAffiliatesParams,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliates', params],\n queryFn: ({ signal }) => stripeAPI.getAffiliates(params, { signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateInvitations = (\n params?: GetAffiliatesParams,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate-invitations', params],\n queryFn: ({ signal }) =>\n stripeAPI.getAffiliateInvitations(params, { signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateById = (\n id: string,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliates', id],\n queryFn: ({ signal }) => stripeAPI.getAffiliateById({ id }, { signal }),\n requireUser: true,\n enabled: Boolean(id),\n ...options,\n });\n};\n\nexport const useGetAffiliate = (options?: Partial<UseQueryOptions>) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate'],\n queryFn: ({ signal }) => stripeAPI.getAffiliate({ signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateAccountSession = (\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate', 'account-session'],\n queryFn: () => stripeAPI.getAffiliateAccountSession(),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateOnboardingLink = (\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate', 'onboarding-link'],\n queryFn: () => stripeAPI.getAffiliateOnboardingLink(),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateStats = (options?: Partial<UseQueryOptions>) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate', 'stats'],\n queryFn: ({ signal }) => stripeAPI.getAffiliateStats({ signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGrantAffiliateAccess = () => {\n const stripeAPI = useStripeAPI();\n\n return useMutation({\n mutationKey: ['affiliate', 'grant'],\n mutationFn: (body: GrantAffiliateAccessBody) =>\n stripeAPI.grantAffiliateAccess(body),\n meta: {\n invalidateQueries: [['affiliate']],\n },\n });\n};\n\nexport const useSendAffiliateInvitation = () => {\n const stripeAPI = useStripeAPI();\n\n return useMutation({\n mutationKey: ['affiliate', 'invitation', 'send'],\n mutationFn: (body: SendAffiliateInvitationBody) =>\n stripeAPI.sendAffiliateInvitation(body),\n meta: {\n invalidateQueries: [['affiliate-invitations']],\n },\n });\n};\n\nexport const useGetAffiliateInvitation = (\n token: string,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useQuery({\n queryKey: ['affiliate', 'invitation', token],\n queryFn: () => stripeAPI.getAffiliateInvitation({ token }),\n enabled: Boolean(token),\n ...options,\n });\n};\n\nexport const useAcceptAffiliateInvitation = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['affiliate', 'invitation', 'accept'],\n mutationFn: ({\n token,\n country,\n stripeAccountType,\n }: {\n token: string;\n country?: string;\n stripeAccountType?: 'express' | 'standard';\n }) =>\n stripeAPI.acceptAffiliateInvitation({\n token,\n country,\n stripeAccountType,\n }),\n onSuccess: (_data, { token }) => {\n queryClient.invalidateQueries({\n queryKey: ['affiliate', 'invitation', token],\n });\n queryClient.invalidateQueries({ queryKey: ['affiliate'] });\n },\n });\n};\n\nexport const useUpdateAffiliateStatus = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['affiliate', 'update'],\n mutationFn: ({\n id,\n status,\n }: {\n id: string;\n status?: 'active' | 'suspended';\n }) => stripeAPI.updateAffiliateStatus({ id }, { status }),\n onSuccess: (_data, { id }) => {\n queryClient.invalidateQueries({ queryKey: ['affiliates', id] });\n queryClient.invalidateQueries({ queryKey: ['affiliates'] });\n },\n });\n};\n\nexport const useGetPromoCodeById = (\n promoCodeId?: string,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['promo-codes', promoCodeId],\n queryFn: ({ signal }) =>\n stripeAPI.getPromoCodeById(promoCodeId!, { signal }),\n enabled: Boolean(promoCodeId),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetPromoCodes = (\n params: { affiliateId?: string } = {},\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['promo-codes', params.affiliateId ?? 'all'],\n queryFn: ({ signal }) => stripeAPI.getPromoCodes(params, { signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useCreatePromoCode = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['promo-codes', 'create'],\n mutationFn: (body: CreatePromoCodeBody) => stripeAPI.createPromoCode(body),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['promo-codes'] });\n },\n });\n};\n\nexport const useUpdatePromoCode = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['promo-codes', 'update'],\n mutationFn: ({ id, ...body }: { id: string } & UpdatePromoCodeBody) =>\n stripeAPI.updatePromoCode({ id, ...body }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['promo-codes'] });\n },\n });\n};\n\nexport const useDeletePromoCode = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['promo-codes', 'delete'],\n mutationFn: ({ id }: { id: string }) => stripeAPI.deletePromoCode({ id }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['promo-codes'] });\n },\n });\n};\n\nexport const useGetAffiliatePromoCode = (\n referralCode?: string,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useQuery({\n queryKey: ['affiliate-promo-code', referralCode],\n queryFn: () => stripeAPI.getAffiliatePromoCode(referralCode!),\n enabled: Boolean(referralCode),\n ...options,\n });\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tag.mjs","names":[],"sources":["../../../../src/api/hooks/tag.ts"],"sourcesContent":["'use client';\n\nimport type {\n AddTagBody,\n DeleteTagParams,\n GetTagsParams,\n} from '@intlayer/backend';\nimport { type UseQueryOptions, useMutation } from '@tanstack/react-query';\nimport { useTagAPI } from '../useIntlayerAPI';\nimport { useAppQuery } from './utils';\n\nexport const useGetTags = (\n filters?: GetTagsParams,\n options?: Partial<UseQueryOptions>\n) => {\n const tagAPI = useTagAPI();\n\n return useAppQuery({\n queryKey: ['tags', filters],\n queryFn: ({ signal }) => tagAPI.getTags(filters, { signal }),\n // placeholderData: keepPreviousData,\n requireUser: true,\n requireOrganization: true,\n ...options,\n });\n};\n\nexport const useAddTag = () => {\n const tagAPI = useTagAPI();\n\n return useMutation({\n mutationKey: ['tags'],\n mutationFn: (args: AddTagBody) => tagAPI.addTag(args),\n meta: {\n invalidateQueries: [['tags']],\n },\n });\n};\n\nexport const useUpdateTag = () => {\n const tagAPI = useTagAPI();\n\n return useMutation({\n mutationKey: ['tags'],\n mutationFn: (v: { tagId: string; tag: any }) =>\n tagAPI.updateTag(v.tagId, v.tag),\n meta: {\n invalidateQueries: [['tags']],\n },\n });\n};\n\nexport const useDeleteTag = () => {\n const tagAPI = useTagAPI();\n\n return useMutation({\n mutationKey: ['tags'],\n mutationFn: (args: DeleteTagParams) => tagAPI.deleteTag(args),\n meta: {\n invalidateQueries: [['tags']],\n },\n });\n};\n"],"mappings":";;;;;;;AAWA,MAAa,cACX,SACA,YACG;CACH,MAAM,SAAS,UAAU;CAEzB,OAAO,YAAY;EACjB,UAAU,CAAC,QAAQ,OAAO;EAC1B,UAAU,EAAE,aAAa,OAAO,QAAQ,SAAS,EAAE,OAAO,CAAC;EAE3D,aAAa;EACb,qBAAqB;EACrB,GAAG;CACL,CAAC;AACH;AAEA,MAAa,kBAAkB;CAC7B,MAAM,SAAS,UAAU;CAEzB,OAAO,YAAY;EACjB,aAAa,CAAC,MAAM;EACpB,aAAa,SAAqB,OAAO,OAAO,IAAI;EACpD,MAAM,EACJ,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAC9B;CACF,CAAC;AACH;AAEA,MAAa,qBAAqB;CAChC,MAAM,SAAS,UAAU;CAEzB,OAAO,YAAY;EACjB,aAAa,CAAC,MAAM;EACpB,aAAa,MACX,OAAO,UAAU,EAAE,OAAO,EAAE,GAAG;EACjC,MAAM,EACJ,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAC9B;CACF,CAAC;AACH;AAEA,MAAa,qBAAqB;CAChC,MAAM,SAAS,UAAU;CAEzB,OAAO,YAAY;EACjB,aAAa,CAAC,MAAM;EACpB,aAAa,SAA0B,OAAO,UAAU,IAAI;EAC5D,MAAM,EACJ,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAC9B;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"tag.mjs","names":[],"sources":["../../../../src/api/hooks/tag.ts"],"sourcesContent":["'use client';\n\nimport type {\n AddTagBody,\n DeleteTagParams,\n GetTagsParams,\n} from '@intlayer/backend';\nimport { type UseQueryOptions, useMutation } from '@tanstack/react-query';\nimport { useTagAPI } from '../useIntlayerAPI';\nimport { useAppQuery } from './utils';\n\nexport const useGetTags = (\n filters?: GetTagsParams,\n options?: Partial<UseQueryOptions>\n) => {\n const tagAPI = useTagAPI();\n\n return useAppQuery({\n queryKey: ['tags', filters],\n queryFn: ({ signal }) => tagAPI.getTags(filters, { signal }),\n // placeholderData: keepPreviousData,\n requireUser: true,\n requireOrganization: true,\n ...options,\n });\n};\n\nexport const useAddTag = () => {\n const tagAPI = useTagAPI();\n\n return useMutation({\n mutationKey: ['tags'],\n mutationFn: (args: AddTagBody) => tagAPI.addTag(args),\n meta: {\n invalidateQueries: [['tags']],\n },\n });\n};\n\nexport const useUpdateTag = () => {\n const tagAPI = useTagAPI();\n\n return useMutation({\n mutationKey: ['tags'],\n mutationFn: (v: { tagId: string; tag: any }) =>\n tagAPI.updateTag(v.tagId, v.tag),\n meta: {\n invalidateQueries: [['tags']],\n },\n });\n};\n\nexport const useDeleteTag = () => {\n const tagAPI = useTagAPI();\n\n return useMutation({\n mutationKey: ['tags'],\n mutationFn: (args: DeleteTagParams) => tagAPI.deleteTag(args),\n meta: {\n invalidateQueries: [['tags']],\n },\n });\n};\n"],"mappings":";;;;;;;AAWA,MAAa,cACX,SACA,YACG;CACH,MAAM,SAAS,WAAW;AAE1B,QAAO,YAAY;EACjB,UAAU,CAAC,QAAQ,QAAQ;EAC3B,UAAU,EAAE,aAAa,OAAO,QAAQ,SAAS,EAAE,QAAQ,CAAC;EAE5D,aAAa;EACb,qBAAqB;EACrB,GAAG;EACJ,CAAC;;AAGJ,MAAa,kBAAkB;CAC7B,MAAM,SAAS,WAAW;AAE1B,QAAO,YAAY;EACjB,aAAa,CAAC,OAAO;EACrB,aAAa,SAAqB,OAAO,OAAO,KAAK;EACrD,MAAM,EACJ,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAC9B;EACF,CAAC;;AAGJ,MAAa,qBAAqB;CAChC,MAAM,SAAS,WAAW;AAE1B,QAAO,YAAY;EACjB,aAAa,CAAC,OAAO;EACrB,aAAa,MACX,OAAO,UAAU,EAAE,OAAO,EAAE,IAAI;EAClC,MAAM,EACJ,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAC9B;EACF,CAAC;;AAGJ,MAAa,qBAAqB;CAChC,MAAM,SAAS,WAAW;AAE1B,QAAO,YAAY;EACjB,aAAa,CAAC,OAAO;EACrB,aAAa,SAA0B,OAAO,UAAU,KAAK;EAC7D,MAAM,EACJ,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAC9B;EACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"translate.mjs","names":[],"sources":["../../../../src/api/hooks/translate.ts"],"sourcesContent":["'use client';\n\nimport type { TranslateDictionariesBody } from '@intlayer/backend';\nimport { useMutation } from '@tanstack/react-query';\nimport { useDictionaryAPI, useTranslateAPI } from '../useIntlayerAPI';\n\nexport const useFillAllTranslations = () => {\n const dictionaryAPI = useDictionaryAPI();\n const translateAPI = useTranslateAPI();\n\n return useMutation({\n mutationKey: ['fill-all-translations'],\n mutationFn: async (\n args: Pick<TranslateDictionariesBody, 'targetLocales' | 'mode'> & {\n dictionaryIds?: string[];\n }\n ) => {\n let dictionaryIds = args.dictionaryIds;\n if (!dictionaryIds || dictionaryIds.length === 0) {\n const result = await dictionaryAPI.getDictionaries({\n pageSize: 1000,\n });\n dictionaryIds = (result?.data ?? []).map((d) => d.id);\n }\n return translateAPI.translateDictionaries({\n dictionaryIds,\n targetLocales: args.targetLocales,\n mode: args.mode,\n });\n },\n });\n};\n\nexport const useStopTranslationJob = () => {\n const translateAPI = useTranslateAPI();\n\n return useMutation({\n mutationKey: ['stop-translation-job'],\n mutationFn: (jobId: string) => translateAPI.stopTranslationJob(jobId),\n });\n};\n\nexport const usePauseTranslationJob = () => {\n const translateAPI = useTranslateAPI();\n\n return useMutation({\n mutationKey: ['pause-translation-job'],\n mutationFn: (jobId: string) => translateAPI.pauseTranslationJob(jobId),\n });\n};\n\nexport const useResumeTranslationJob = () => {\n const translateAPI = useTranslateAPI();\n\n return useMutation({\n mutationKey: ['resume-translation-job'],\n mutationFn: (jobId: string) => translateAPI.resumeTranslationJob(jobId),\n });\n};\n"],"mappings":";;;;;;AAMA,MAAa,+BAA+B;CAC1C,MAAM,gBAAgB,iBAAiB;CACvC,MAAM,eAAe,gBAAgB;CAErC,OAAO,YAAY;EACjB,aAAa,CAAC,uBAAuB;EACrC,YAAY,OACV,SAGG;GACH,IAAI,gBAAgB,KAAK;GACzB,IAAI,CAAC,iBAAiB,cAAc,WAAW,GAI7C,kBAAiB,MAHI,cAAc,gBAAgB,EACjD,UAAU,IACZ,CAAC,IACwB,QAAQ,CAAC,GAAG,KAAK,MAAM,EAAE,EAAE;GAEtD,OAAO,aAAa,sBAAsB;IACxC;IACA,eAAe,KAAK;IACpB,MAAM,KAAK;GACb,CAAC;EACH;CACF,CAAC;AACH;AAEA,MAAa,8BAA8B;CACzC,MAAM,eAAe,gBAAgB;CAErC,OAAO,YAAY;EACjB,aAAa,CAAC,sBAAsB;EACpC,aAAa,UAAkB,aAAa,mBAAmB,KAAK;CACtE,CAAC;AACH;AAEA,MAAa,+BAA+B;CAC1C,MAAM,eAAe,gBAAgB;CAErC,OAAO,YAAY;EACjB,aAAa,CAAC,uBAAuB;EACrC,aAAa,UAAkB,aAAa,oBAAoB,KAAK;CACvE,CAAC;AACH;AAEA,MAAa,gCAAgC;CAC3C,MAAM,eAAe,gBAAgB;CAErC,OAAO,YAAY;EACjB,aAAa,CAAC,wBAAwB;EACtC,aAAa,UAAkB,aAAa,qBAAqB,KAAK;CACxE,CAAC;AACH"}
1
+ {"version":3,"file":"translate.mjs","names":[],"sources":["../../../../src/api/hooks/translate.ts"],"sourcesContent":["'use client';\n\nimport type { TranslateDictionariesBody } from '@intlayer/backend';\nimport { useMutation } from '@tanstack/react-query';\nimport { useDictionaryAPI, useTranslateAPI } from '../useIntlayerAPI';\n\nexport const useFillAllTranslations = () => {\n const dictionaryAPI = useDictionaryAPI();\n const translateAPI = useTranslateAPI();\n\n return useMutation({\n mutationKey: ['fill-all-translations'],\n mutationFn: async (\n args: Pick<TranslateDictionariesBody, 'targetLocales' | 'mode'> & {\n dictionaryIds?: string[];\n }\n ) => {\n let dictionaryIds = args.dictionaryIds;\n if (!dictionaryIds || dictionaryIds.length === 0) {\n const result = await dictionaryAPI.getDictionaries({\n pageSize: 1000,\n });\n dictionaryIds = (result?.data ?? []).map((d) => d.id);\n }\n return translateAPI.translateDictionaries({\n dictionaryIds,\n targetLocales: args.targetLocales,\n mode: args.mode,\n });\n },\n });\n};\n\nexport const useStopTranslationJob = () => {\n const translateAPI = useTranslateAPI();\n\n return useMutation({\n mutationKey: ['stop-translation-job'],\n mutationFn: (jobId: string) => translateAPI.stopTranslationJob(jobId),\n });\n};\n\nexport const usePauseTranslationJob = () => {\n const translateAPI = useTranslateAPI();\n\n return useMutation({\n mutationKey: ['pause-translation-job'],\n mutationFn: (jobId: string) => translateAPI.pauseTranslationJob(jobId),\n });\n};\n\nexport const useResumeTranslationJob = () => {\n const translateAPI = useTranslateAPI();\n\n return useMutation({\n mutationKey: ['resume-translation-job'],\n mutationFn: (jobId: string) => translateAPI.resumeTranslationJob(jobId),\n });\n};\n"],"mappings":";;;;;;AAMA,MAAa,+BAA+B;CAC1C,MAAM,gBAAgB,kBAAkB;CACxC,MAAM,eAAe,iBAAiB;AAEtC,QAAO,YAAY;EACjB,aAAa,CAAC,wBAAwB;EACtC,YAAY,OACV,SAGG;GACH,IAAI,gBAAgB,KAAK;AACzB,OAAI,CAAC,iBAAiB,cAAc,WAAW,EAI7C,mBAAiB,MAHI,cAAc,gBAAgB,EACjD,UAAU,KACX,CAAC,GACuB,QAAQ,EAAE,EAAE,KAAK,MAAM,EAAE,GAAG;AAEvD,UAAO,aAAa,sBAAsB;IACxC;IACA,eAAe,KAAK;IACpB,MAAM,KAAK;IACZ,CAAC;;EAEL,CAAC;;AAGJ,MAAa,8BAA8B;CACzC,MAAM,eAAe,iBAAiB;AAEtC,QAAO,YAAY;EACjB,aAAa,CAAC,uBAAuB;EACrC,aAAa,UAAkB,aAAa,mBAAmB,MAAM;EACtE,CAAC;;AAGJ,MAAa,+BAA+B;CAC1C,MAAM,eAAe,iBAAiB;AAEtC,QAAO,YAAY;EACjB,aAAa,CAAC,wBAAwB;EACtC,aAAa,UAAkB,aAAa,oBAAoB,MAAM;EACvE,CAAC;;AAGJ,MAAa,gCAAgC;CAC3C,MAAM,eAAe,iBAAiB;AAEtC,QAAO,YAAY;EACjB,aAAa,CAAC,yBAAyB;EACvC,aAAa,UAAkB,aAAa,qBAAqB,MAAM;EACxE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"user.mjs","names":[],"sources":["../../../../src/api/hooks/user.ts"],"sourcesContent":["'use client';\n\nimport type {\n CreateUserBody,\n GetUsersParams,\n UpdateUserBody,\n} from '@intlayer/backend';\nimport { type UseQueryOptions, useMutation } from '@tanstack/react-query';\nimport { useUserAPI } from '../useIntlayerAPI';\nimport { useAppQuery } from './utils';\n\nexport const useGetUsers = (\n filters?: GetUsersParams,\n options?: Partial<UseQueryOptions>\n) => {\n const userAPI = useUserAPI();\n\n return useAppQuery({\n queryKey: ['users', filters],\n queryFn: () => userAPI.getUsers(filters),\n requireUser: true,\n // placeholderData: keepPreviousData,\n ...options,\n });\n};\n\nexport const useGetUserById = (userId: string) => {\n const userAPI = useUserAPI();\n\n return useAppQuery({\n queryKey: ['users', userId],\n queryFn: () => userAPI.getUserById(userId),\n requireUser: true,\n });\n};\n\nexport const useCreateUser = () => {\n const userAPI = useUserAPI();\n\n return useMutation({\n mutationKey: ['users'],\n mutationFn: (args: CreateUserBody) => userAPI.createUser(args),\n });\n};\n\nexport const useUpdateUser = () => {\n const userAPI = useUserAPI();\n\n return useMutation({\n mutationKey: ['users'],\n mutationFn: (args: UpdateUserBody) => userAPI.updateUser(args),\n });\n};\n\nexport const useDeleteUser = () => {\n const userAPI = useUserAPI();\n\n return useMutation({\n mutationKey: ['users'],\n mutationFn: (args: string) => userAPI.deleteUser(args),\n meta: {\n invalidateQueries: [['users']],\n },\n });\n};\n\nexport const useUploadUserAvatar = () => {\n const userAPI = useUserAPI();\n\n return useMutation({\n mutationKey: ['users', 'avatar'],\n mutationFn: (file: File) => userAPI.uploadAvatar(file),\n meta: {\n invalidateQueries: [['session']],\n },\n });\n};\n"],"mappings":";;;;;;;AAWA,MAAa,eACX,SACA,YACG;CACH,MAAM,UAAU,WAAW;CAE3B,OAAO,YAAY;EACjB,UAAU,CAAC,SAAS,OAAO;EAC3B,eAAe,QAAQ,SAAS,OAAO;EACvC,aAAa;EAEb,GAAG;CACL,CAAC;AACH;AAEA,MAAa,kBAAkB,WAAmB;CAChD,MAAM,UAAU,WAAW;CAE3B,OAAO,YAAY;EACjB,UAAU,CAAC,SAAS,MAAM;EAC1B,eAAe,QAAQ,YAAY,MAAM;EACzC,aAAa;CACf,CAAC;AACH;AAEA,MAAa,sBAAsB;CACjC,MAAM,UAAU,WAAW;CAE3B,OAAO,YAAY;EACjB,aAAa,CAAC,OAAO;EACrB,aAAa,SAAyB,QAAQ,WAAW,IAAI;CAC/D,CAAC;AACH;AAEA,MAAa,sBAAsB;CACjC,MAAM,UAAU,WAAW;CAE3B,OAAO,YAAY;EACjB,aAAa,CAAC,OAAO;EACrB,aAAa,SAAyB,QAAQ,WAAW,IAAI;CAC/D,CAAC;AACH;AAEA,MAAa,sBAAsB;CACjC,MAAM,UAAU,WAAW;CAE3B,OAAO,YAAY;EACjB,aAAa,CAAC,OAAO;EACrB,aAAa,SAAiB,QAAQ,WAAW,IAAI;EACrD,MAAM,EACJ,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAC/B;CACF,CAAC;AACH;AAEA,MAAa,4BAA4B;CACvC,MAAM,UAAU,WAAW;CAE3B,OAAO,YAAY;EACjB,aAAa,CAAC,SAAS,QAAQ;EAC/B,aAAa,SAAe,QAAQ,aAAa,IAAI;EACrD,MAAM,EACJ,mBAAmB,CAAC,CAAC,SAAS,CAAC,EACjC;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"user.mjs","names":[],"sources":["../../../../src/api/hooks/user.ts"],"sourcesContent":["'use client';\n\nimport type {\n CreateUserBody,\n GetUsersParams,\n UpdateUserBody,\n} from '@intlayer/backend';\nimport { type UseQueryOptions, useMutation } from '@tanstack/react-query';\nimport { useUserAPI } from '../useIntlayerAPI';\nimport { useAppQuery } from './utils';\n\nexport const useGetUsers = (\n filters?: GetUsersParams,\n options?: Partial<UseQueryOptions>\n) => {\n const userAPI = useUserAPI();\n\n return useAppQuery({\n queryKey: ['users', filters],\n queryFn: () => userAPI.getUsers(filters),\n requireUser: true,\n // placeholderData: keepPreviousData,\n ...options,\n });\n};\n\nexport const useGetUserById = (userId: string) => {\n const userAPI = useUserAPI();\n\n return useAppQuery({\n queryKey: ['users', userId],\n queryFn: () => userAPI.getUserById(userId),\n requireUser: true,\n });\n};\n\nexport const useCreateUser = () => {\n const userAPI = useUserAPI();\n\n return useMutation({\n mutationKey: ['users'],\n mutationFn: (args: CreateUserBody) => userAPI.createUser(args),\n });\n};\n\nexport const useUpdateUser = () => {\n const userAPI = useUserAPI();\n\n return useMutation({\n mutationKey: ['users'],\n mutationFn: (args: UpdateUserBody) => userAPI.updateUser(args),\n });\n};\n\nexport const useDeleteUser = () => {\n const userAPI = useUserAPI();\n\n return useMutation({\n mutationKey: ['users'],\n mutationFn: (args: string) => userAPI.deleteUser(args),\n meta: {\n invalidateQueries: [['users']],\n },\n });\n};\n\nexport const useUploadUserAvatar = () => {\n const userAPI = useUserAPI();\n\n return useMutation({\n mutationKey: ['users', 'avatar'],\n mutationFn: (file: File) => userAPI.uploadAvatar(file),\n meta: {\n invalidateQueries: [['session']],\n },\n });\n};\n"],"mappings":";;;;;;;AAWA,MAAa,eACX,SACA,YACG;CACH,MAAM,UAAU,YAAY;AAE5B,QAAO,YAAY;EACjB,UAAU,CAAC,SAAS,QAAQ;EAC5B,eAAe,QAAQ,SAAS,QAAQ;EACxC,aAAa;EAEb,GAAG;EACJ,CAAC;;AAGJ,MAAa,kBAAkB,WAAmB;CAChD,MAAM,UAAU,YAAY;AAE5B,QAAO,YAAY;EACjB,UAAU,CAAC,SAAS,OAAO;EAC3B,eAAe,QAAQ,YAAY,OAAO;EAC1C,aAAa;EACd,CAAC;;AAGJ,MAAa,sBAAsB;CACjC,MAAM,UAAU,YAAY;AAE5B,QAAO,YAAY;EACjB,aAAa,CAAC,QAAQ;EACtB,aAAa,SAAyB,QAAQ,WAAW,KAAK;EAC/D,CAAC;;AAGJ,MAAa,sBAAsB;CACjC,MAAM,UAAU,YAAY;AAE5B,QAAO,YAAY;EACjB,aAAa,CAAC,QAAQ;EACtB,aAAa,SAAyB,QAAQ,WAAW,KAAK;EAC/D,CAAC;;AAGJ,MAAa,sBAAsB;CACjC,MAAM,UAAU,YAAY;AAE5B,QAAO,YAAY;EACjB,aAAa,CAAC,QAAQ;EACtB,aAAa,SAAiB,QAAQ,WAAW,KAAK;EACtD,MAAM,EACJ,mBAAmB,CAAC,CAAC,QAAQ,CAAC,EAC/B;EACF,CAAC;;AAGJ,MAAa,4BAA4B;CACvC,MAAM,UAAU,YAAY;AAE5B,QAAO,YAAY;EACjB,aAAa,CAAC,SAAS,SAAS;EAChC,aAAa,SAAe,QAAQ,aAAa,KAAK;EACtD,MAAM,EACJ,mBAAmB,CAAC,CAAC,UAAU,CAAC,EACjC;EACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","names":[],"sources":["../../../../src/api/hooks/utils.ts"],"sourcesContent":["'use client';\n\nimport { useConfiguration } from '@intlayer/editor-react';\nimport { type UseQueryOptions, useQuery } from '@tanstack/react-query';\nimport { useAuth } from '../useAuth';\n\ntype AuthEnableOptions = {\n requireUser?: boolean;\n requireProject?: boolean;\n requireOrganization?: boolean;\n};\n\nexport const useAuthEnable = ({\n requireUser,\n requireProject,\n requireOrganization,\n}: AuthEnableOptions) => {\n const configuration = useConfiguration();\n const { oAuth2AccessToken, session } = useAuth({\n intlayerConfiguration: configuration,\n });\n\n const user = session ? session.user : oAuth2AccessToken?.user;\n\n const organization = session\n ? session.organization\n : oAuth2AccessToken?.organization;\n\n const project = session ? session.project : oAuth2AccessToken?.project;\n\n const isUserEnabled = requireUser ? Boolean(user) : true;\n\n const isProjectEnabled = requireProject ? Boolean(project) : true;\n\n const isOrganizationEnabled = requireOrganization\n ? Boolean(organization)\n : true;\n\n const isEnabled = isUserEnabled && isProjectEnabled && isOrganizationEnabled;\n\n return {\n enable: isEnabled,\n };\n};\n\nexport const useAppQuery = (\n options: UseQueryOptions & {\n requireUser?: boolean;\n requireProject?: boolean;\n requireOrganization?: boolean;\n }\n) => {\n const { requireUser, requireProject, requireOrganization, ...rest } = options;\n const { enable } = useAuthEnable({\n requireUser,\n requireProject,\n requireOrganization,\n });\n\n const result = useQuery({\n enabled: rest?.enabled === false ? false : enable,\n ...rest,\n });\n\n return result;\n};\n"],"mappings":";;;;;;;AAYA,MAAa,iBAAiB,EAC5B,aACA,gBACA,0BACuB;CAEvB,MAAM,EAAE,mBAAmB,YAAY,QAAQ,EAC7C,uBAFoB,iBAEe,EACrC,CAAC;CAED,MAAM,OAAO,UAAU,QAAQ,OAAO,mBAAmB;CAEzD,MAAM,eAAe,UACjB,QAAQ,eACR,mBAAmB;CAEvB,MAAM,UAAU,UAAU,QAAQ,UAAU,mBAAmB;CAY/D,OAAO,EACL,SAXoB,cAAc,QAAQ,IAAI,IAAI,UAE3B,iBAAiB,QAAQ,OAAO,IAAI,UAE/B,sBAC1B,QAAQ,YAAY,IACpB,MAMJ;AACF;AAEA,MAAa,eACX,YAKG;CACH,MAAM,EAAE,aAAa,gBAAgB,qBAAqB,GAAG,SAAS;CACtE,MAAM,EAAE,WAAW,cAAc;EAC/B;EACA;EACA;CACF,CAAC;CAOD,OALe,SAAS;EACtB,SAAS,MAAM,YAAY,QAAQ,QAAQ;EAC3C,GAAG;CACL,CAEY;AACd"}
1
+ {"version":3,"file":"utils.mjs","names":[],"sources":["../../../../src/api/hooks/utils.ts"],"sourcesContent":["'use client';\n\nimport { useConfiguration } from '@intlayer/editor-react';\nimport { type UseQueryOptions, useQuery } from '@tanstack/react-query';\nimport { useAuth } from '../useAuth';\n\ntype AuthEnableOptions = {\n requireUser?: boolean;\n requireProject?: boolean;\n requireOrganization?: boolean;\n};\n\nexport const useAuthEnable = ({\n requireUser,\n requireProject,\n requireOrganization,\n}: AuthEnableOptions) => {\n const configuration = useConfiguration();\n const { oAuth2AccessToken, session } = useAuth({\n intlayerConfiguration: configuration,\n });\n\n const user = session ? session.user : oAuth2AccessToken?.user;\n\n const organization = session\n ? session.organization\n : oAuth2AccessToken?.organization;\n\n const project = session ? session.project : oAuth2AccessToken?.project;\n\n const isUserEnabled = requireUser ? Boolean(user) : true;\n\n const isProjectEnabled = requireProject ? Boolean(project) : true;\n\n const isOrganizationEnabled = requireOrganization\n ? Boolean(organization)\n : true;\n\n const isEnabled = isUserEnabled && isProjectEnabled && isOrganizationEnabled;\n\n return {\n enable: isEnabled,\n };\n};\n\nexport const useAppQuery = (\n options: UseQueryOptions & {\n requireUser?: boolean;\n requireProject?: boolean;\n requireOrganization?: boolean;\n }\n) => {\n const { requireUser, requireProject, requireOrganization, ...rest } = options;\n const { enable } = useAuthEnable({\n requireUser,\n requireProject,\n requireOrganization,\n });\n\n const result = useQuery({\n enabled: rest?.enabled === false ? false : enable,\n ...rest,\n });\n\n return result;\n};\n"],"mappings":";;;;;;;AAYA,MAAa,iBAAiB,EAC5B,aACA,gBACA,0BACuB;CAEvB,MAAM,EAAE,mBAAmB,YAAY,QAAQ,EAC7C,uBAFoB,kBAEgB,EACrC,CAAC;CAEF,MAAM,OAAO,UAAU,QAAQ,OAAO,mBAAmB;CAEzD,MAAM,eAAe,UACjB,QAAQ,eACR,mBAAmB;CAEvB,MAAM,UAAU,UAAU,QAAQ,UAAU,mBAAmB;AAY/D,QAAO,EACL,SAXoB,cAAc,QAAQ,KAAK,GAAG,UAE3B,iBAAiB,QAAQ,QAAQ,GAAG,UAE/B,sBAC1B,QAAQ,aAAa,GACrB,OAMH;;AAGH,MAAa,eACX,YAKG;CACH,MAAM,EAAE,aAAa,gBAAgB,qBAAqB,GAAG,SAAS;CACtE,MAAM,EAAE,WAAW,cAAc;EAC/B;EACA;EACA;EACD,CAAC;AAOF,QALe,SAAS;EACtB,SAAS,MAAM,YAAY,QAAQ,QAAQ;EAC3C,GAAG;EACJ,CAEY"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAuth.mjs","names":[],"sources":["../../../../src/api/useAuth/useAuth.ts"],"sourcesContent":["'use client';\n\nimport type { OAuth2Token, SessionAPI } from '@intlayer/backend';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { useOAuth2 } from './useOAuth2';\nimport { useSession } from './useSession';\n\ntype SessionContextProps = {\n session: SessionAPI | null | undefined;\n setSession: (session: SessionAPI | null) => void;\n fetchSession: () => Promise<SessionAPI | null | undefined>;\n revalidateSession: () => Promise<SessionAPI | null | undefined>;\n isAuthenticated: boolean;\n oAuth2AccessToken: OAuth2Token | null | undefined;\n};\n\nexport const useAuth = ({\n session: sessionProp,\n intlayerConfiguration,\n}: {\n session?: SessionAPI | null;\n intlayerConfiguration?: IntlayerConfig;\n} = {}): SessionContextProps => {\n const { session, fetchSession, revalidateSession, setSession } = useSession(\n sessionProp,\n intlayerConfiguration\n );\n const { oAuth2AccessToken } = useOAuth2(intlayerConfiguration);\n\n return {\n session,\n fetchSession,\n setSession,\n revalidateSession,\n oAuth2AccessToken,\n isAuthenticated: Boolean(session?.user || oAuth2AccessToken),\n };\n};\n"],"mappings":";;;;;;AAgBA,MAAa,WAAW,EACtB,SAAS,aACT,0BAIE,CAAC,MAA2B;CAC9B,MAAM,EAAE,SAAS,cAAc,mBAAmB,eAAe,WAC/D,aACA,qBACF;CACA,MAAM,EAAE,sBAAsB,UAAU,qBAAqB;CAE7D,OAAO;EACL;EACA;EACA;EACA;EACA;EACA,iBAAiB,QAAQ,SAAS,QAAQ,iBAAiB;CAC7D;AACF"}
1
+ {"version":3,"file":"useAuth.mjs","names":[],"sources":["../../../../src/api/useAuth/useAuth.ts"],"sourcesContent":["'use client';\n\nimport type { OAuth2Token, SessionAPI } from '@intlayer/backend';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { useOAuth2 } from './useOAuth2';\nimport { useSession } from './useSession';\n\ntype SessionContextProps = {\n session: SessionAPI | null | undefined;\n setSession: (session: SessionAPI | null) => void;\n fetchSession: () => Promise<SessionAPI | null | undefined>;\n revalidateSession: () => Promise<SessionAPI | null | undefined>;\n isAuthenticated: boolean;\n oAuth2AccessToken: OAuth2Token | null | undefined;\n};\n\nexport const useAuth = ({\n session: sessionProp,\n intlayerConfiguration,\n}: {\n session?: SessionAPI | null;\n intlayerConfiguration?: IntlayerConfig;\n} = {}): SessionContextProps => {\n const { session, fetchSession, revalidateSession, setSession } = useSession(\n sessionProp,\n intlayerConfiguration\n );\n const { oAuth2AccessToken } = useOAuth2(intlayerConfiguration);\n\n return {\n session,\n fetchSession,\n setSession,\n revalidateSession,\n oAuth2AccessToken,\n isAuthenticated: Boolean(session?.user || oAuth2AccessToken),\n };\n};\n"],"mappings":";;;;;;AAgBA,MAAa,WAAW,EACtB,SAAS,aACT,0BAIE,EAAE,KAA0B;CAC9B,MAAM,EAAE,SAAS,cAAc,mBAAmB,eAAe,WAC/D,aACA,sBACD;CACD,MAAM,EAAE,sBAAsB,UAAU,sBAAsB;AAE9D,QAAO;EACL;EACA;EACA;EACA;EACA;EACA,iBAAiB,QAAQ,SAAS,QAAQ,kBAAkB;EAC7D"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { useQuery } from "@tanstack/react-query";
4
3
  import { editor } from "@intlayer/config/built";
4
+ import { useQuery } from "@tanstack/react-query";
5
5
  import { getOAuthAPI } from "@intlayer/api";
6
6
  import { useConfiguration } from "@intlayer/editor-react";
7
7
  import { defu } from "defu";
@@ -1 +1 @@
1
- {"version":3,"file":"useOAuth2.mjs","names":[],"sources":["../../../../src/api/useAuth/useOAuth2.ts"],"sourcesContent":["'use client';\n\nimport { getOAuthAPI } from '@intlayer/api';\nimport { editor } from '@intlayer/config/built';\nimport { useConfiguration } from '@intlayer/editor-react';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { useQuery } from '@tanstack/react-query';\nimport { defu } from 'defu';\n\nexport const useOAuth2 = (\n intlayerConfiguration?: Pick<IntlayerConfig, 'editor'>\n) => {\n const configuration = useConfiguration();\n const config = defu(intlayerConfiguration, configuration, {\n editor,\n }) as IntlayerConfig;\n\n const intlayerAPI = getOAuthAPI(undefined, config);\n\n const { data } = useQuery({\n queryKey: ['oAuth2AccessToken'],\n queryFn: intlayerAPI.getOAuth2AccessToken,\n enabled: !!(config.editor.clientId && config.editor.clientSecret),\n staleTime: 0,\n gcTime: 0,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchInterval: false,\n refetchIntervalInBackground: false,\n });\n\n const oAuth2AccessToken = data?.data;\n\n return {\n oAuth2AccessToken,\n };\n};\n"],"mappings":";;;;;;;;;AASA,MAAa,aACX,0BACG;CAEH,MAAM,SAAS,KAAK,uBADE,iBACiC,GAAG,EACxD,OACF,CAAC;CAID,MAAM,EAAE,SAAS,SAAS;EACxB,UAAU,CAAC,mBAAmB;EAC9B,SAJkB,YAAY,QAAW,MAItB,EAAE;EACrB,SAAS,CAAC,EAAE,OAAO,OAAO,YAAY,OAAO,OAAO;EACpD,WAAW;EACX,QAAQ;EACR,sBAAsB;EACtB,gBAAgB;EAChB,oBAAoB;EACpB,iBAAiB;EACjB,6BAA6B;CAC/B,CAAC;CAID,OAAO,EACL,mBAHwB,MAAM,KAIhC;AACF"}
1
+ {"version":3,"file":"useOAuth2.mjs","names":[],"sources":["../../../../src/api/useAuth/useOAuth2.ts"],"sourcesContent":["'use client';\n\nimport { getOAuthAPI } from '@intlayer/api';\nimport { editor } from '@intlayer/config/built';\nimport { useConfiguration } from '@intlayer/editor-react';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { useQuery } from '@tanstack/react-query';\nimport { defu } from 'defu';\n\nexport const useOAuth2 = (\n intlayerConfiguration?: Pick<IntlayerConfig, 'editor'>\n) => {\n const configuration = useConfiguration();\n const config = defu(intlayerConfiguration, configuration, {\n editor,\n }) as IntlayerConfig;\n\n const intlayerAPI = getOAuthAPI(undefined, config);\n\n const { data } = useQuery({\n queryKey: ['oAuth2AccessToken'],\n queryFn: intlayerAPI.getOAuth2AccessToken,\n enabled: !!(config.editor.clientId && config.editor.clientSecret),\n staleTime: 0,\n gcTime: 0,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchInterval: false,\n refetchIntervalInBackground: false,\n });\n\n const oAuth2AccessToken = data?.data;\n\n return {\n oAuth2AccessToken,\n };\n};\n"],"mappings":";;;;;;;;;AASA,MAAa,aACX,0BACG;CAEH,MAAM,SAAS,KAAK,uBADE,kBACkC,EAAE,EACxD,QACD,CAAC;CAIF,MAAM,EAAE,SAAS,SAAS;EACxB,UAAU,CAAC,oBAAoB;EAC/B,SAJkB,YAAY,QAAW,OAIrB,CAAC;EACrB,SAAS,CAAC,EAAE,OAAO,OAAO,YAAY,OAAO,OAAO;EACpD,WAAW;EACX,QAAQ;EACR,sBAAsB;EACtB,gBAAgB;EAChB,oBAAoB;EACpB,iBAAiB;EACjB,6BAA6B;EAC9B,CAAC;AAIF,QAAO,EACL,mBAHwB,MAAM,MAI/B"}
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { getAuthAPI } from "../../libs/auth.mjs";
4
- import { useQuery, useQueryClient } from "@tanstack/react-query";
5
4
  import { editor } from "@intlayer/config/built";
5
+ import { useQuery, useQueryClient } from "@tanstack/react-query";
6
6
  import { useConfiguration } from "@intlayer/editor-react";
7
7
 
8
8
  //#region src/api/useAuth/useSession.ts
@@ -1 +1 @@
1
- {"version":3,"file":"useSession.mjs","names":[],"sources":["../../../../src/api/useAuth/useSession.ts"],"sourcesContent":["'use client';\n\nimport type { SessionAPI } from '@intlayer/backend';\nimport { editor } from '@intlayer/config/built';\nimport { useConfiguration } from '@intlayer/editor-react';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { getAuthAPI } from '../../libs/auth';\n\nexport type UseSessionResult = {\n /** The current session: `undefined` while loading, `null` if fetched and no session, otherwise the session. */\n session: SessionAPI | null | undefined;\n /** Refetches the session and returns it (undefined while loading). */\n fetchSession: () => Promise<SessionAPI | null | undefined>;\n /** Alias of `fetchSession` for ergonomics. */\n revalidateSession: () => Promise<SessionAPI | null | undefined>;\n /** Manually set the session cache. */\n setSession: (nextSession: SessionAPI | null) => void;\n};\n\nexport const useSession = (\n sessionProp?: SessionAPI | null,\n intlayerConfiguration?: IntlayerConfig\n): UseSessionResult => {\n const configuration = useConfiguration();\n const config = (intlayerConfiguration ??\n configuration ?? { editor }) as IntlayerConfig;\n\n const queryClient = useQueryClient();\n\n // Keep TanStack generics internal so they don't leak into the d.ts\n const { data, isFetched, refetch } = useQuery({\n queryKey: ['session'],\n queryFn: async () => {\n const intlayerAPI = getAuthAPI(config);\n const result = await intlayerAPI.getSession();\n // Narrow to the public shape we want to expose\n return result.data as unknown as SessionAPI;\n },\n // Session data rarely changes during navigation, so keep it fresh for 5 minutes\n // This prevents unnecessary refetches when navigating between pages\n staleTime: 5 * 60 * 1000,\n gcTime: 30 * 60 * 1000,\n // Periodically revalidate so the backend's sliding session-refresh\n // (better-auth `updateAge`) keeps the cookie alive for active users.\n refetchInterval: 10 * 60 * 1000,\n refetchIntervalInBackground: false,\n refetchOnMount: true,\n // Refetching on focus/reconnect lets a returning user get a fresh,\n // extended session without a manual reload.\n refetchOnWindowFocus: true,\n refetchOnReconnect: true,\n enabled: !sessionProp,\n });\n\n const session = data ?? (isFetched ? null : undefined);\n\n const setSession = (nextSession: SessionAPI | null) => {\n queryClient.setQueryData(['session'], nextSession);\n };\n\n const fetchSession = async (): Promise<SessionAPI | null | undefined> => {\n const res = await refetch();\n return res.data as SessionAPI | null | undefined;\n };\n\n const revalidateSession = fetchSession;\n\n return {\n session,\n fetchSession,\n revalidateSession,\n setSession,\n };\n};\n"],"mappings":";;;;;;;;AAoBA,MAAa,cACX,aACA,0BACqB;CACrB,MAAM,gBAAgB,iBAAiB;CACvC,MAAM,SAAU,yBACd,iBAAiB,EAAE,OAAO;CAE5B,MAAM,cAAc,eAAe;CAGnC,MAAM,EAAE,MAAM,WAAW,YAAY,SAAS;EAC5C,UAAU,CAAC,SAAS;EACpB,SAAS,YAAY;GAInB,QAAO,MAHa,WAAW,MACA,EAAE,WAAW,GAE9B;EAChB;EAGA,WAAW,MAAS;EACpB,QAAQ,OAAU;EAGlB,iBAAiB,MAAU;EAC3B,6BAA6B;EAC7B,gBAAgB;EAGhB,sBAAsB;EACtB,oBAAoB;EACpB,SAAS,CAAC;CACZ,CAAC;CAED,MAAM,UAAU,SAAS,YAAY,OAAO;CAE5C,MAAM,cAAc,gBAAmC;EACrD,YAAY,aAAa,CAAC,SAAS,GAAG,WAAW;CACnD;CAEA,MAAM,eAAe,YAAoD;EAEvE,QAAO,MADW,QAAQ,GACf;CACb;CAIA,OAAO;EACL;EACA;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"useSession.mjs","names":[],"sources":["../../../../src/api/useAuth/useSession.ts"],"sourcesContent":["'use client';\n\nimport type { SessionAPI } from '@intlayer/backend';\nimport { editor } from '@intlayer/config/built';\nimport { useConfiguration } from '@intlayer/editor-react';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { getAuthAPI } from '../../libs/auth';\n\nexport type UseSessionResult = {\n /** The current session: `undefined` while loading, `null` if fetched and no session, otherwise the session. */\n session: SessionAPI | null | undefined;\n /** Refetches the session and returns it (undefined while loading). */\n fetchSession: () => Promise<SessionAPI | null | undefined>;\n /** Alias of `fetchSession` for ergonomics. */\n revalidateSession: () => Promise<SessionAPI | null | undefined>;\n /** Manually set the session cache. */\n setSession: (nextSession: SessionAPI | null) => void;\n};\n\nexport const useSession = (\n sessionProp?: SessionAPI | null,\n intlayerConfiguration?: IntlayerConfig\n): UseSessionResult => {\n const configuration = useConfiguration();\n const config = (intlayerConfiguration ??\n configuration ?? { editor }) as IntlayerConfig;\n\n const queryClient = useQueryClient();\n\n // Keep TanStack generics internal so they don't leak into the d.ts\n const { data, isFetched, refetch } = useQuery({\n queryKey: ['session'],\n queryFn: async () => {\n const intlayerAPI = getAuthAPI(config);\n const result = await intlayerAPI.getSession();\n // Narrow to the public shape we want to expose\n return result.data as unknown as SessionAPI;\n },\n // Session data rarely changes during navigation, so keep it fresh for 5 minutes\n // This prevents unnecessary refetches when navigating between pages\n staleTime: 5 * 60 * 1000,\n gcTime: 30 * 60 * 1000,\n // Periodically revalidate so the backend's sliding session-refresh\n // (better-auth `updateAge`) keeps the cookie alive for active users.\n refetchInterval: 10 * 60 * 1000,\n refetchIntervalInBackground: false,\n refetchOnMount: true,\n // Refetching on focus/reconnect lets a returning user get a fresh,\n // extended session without a manual reload.\n refetchOnWindowFocus: true,\n refetchOnReconnect: true,\n enabled: !sessionProp,\n });\n\n const session = data ?? (isFetched ? null : undefined);\n\n const setSession = (nextSession: SessionAPI | null) => {\n queryClient.setQueryData(['session'], nextSession);\n };\n\n const fetchSession = async (): Promise<SessionAPI | null | undefined> => {\n const res = await refetch();\n return res.data as SessionAPI | null | undefined;\n };\n\n const revalidateSession = fetchSession;\n\n return {\n session,\n fetchSession,\n revalidateSession,\n setSession,\n };\n};\n"],"mappings":";;;;;;;;AAoBA,MAAa,cACX,aACA,0BACqB;CACrB,MAAM,gBAAgB,kBAAkB;CACxC,MAAM,SAAU,yBACd,iBAAiB,EAAE,QAAQ;CAE7B,MAAM,cAAc,gBAAgB;CAGpC,MAAM,EAAE,MAAM,WAAW,YAAY,SAAS;EAC5C,UAAU,CAAC,UAAU;EACrB,SAAS,YAAY;AAInB,WAAO,MAHa,WAAW,OACC,CAAC,YAAY,EAE/B;;EAIhB,WAAW,MAAS;EACpB,QAAQ,OAAU;EAGlB,iBAAiB,MAAU;EAC3B,6BAA6B;EAC7B,gBAAgB;EAGhB,sBAAsB;EACtB,oBAAoB;EACpB,SAAS,CAAC;EACX,CAAC;CAEF,MAAM,UAAU,SAAS,YAAY,OAAO;CAE5C,MAAM,cAAc,gBAAmC;AACrD,cAAY,aAAa,CAAC,UAAU,EAAE,YAAY;;CAGpD,MAAM,eAAe,YAAoD;AAEvE,UAAO,MADW,SAAS,EAChB;;AAKb,QAAO;EACL;EACA;EACA;EACA;EACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIntlayerAPI.mjs","names":["getOAuthAPI"],"sources":["../../../src/api/useIntlayerAPI.ts"],"sourcesContent":["'use client';\n\nimport {\n type FetcherOptions,\n getIntlayerAPI,\n type IntlayerAPI,\n} from '@intlayer/api';\nimport { getAiAPI } from '@intlayer/api/ai';\nimport { getAuditAPI } from '@intlayer/api/audit';\nimport { getBitbucketAPI } from '@intlayer/api/bitbucket';\nimport { getDictionaryAPI } from '@intlayer/api/dictionary';\nimport { getEditorAPI } from '@intlayer/api/editor';\nimport { getEnvironmentAPI } from '@intlayer/api/environment';\nimport { getGithubAPI } from '@intlayer/api/github';\nimport { getGitlabAPI } from '@intlayer/api/gitlab';\nimport { getNewsletterAPI } from '@intlayer/api/newsletter';\nimport { getOAuthAPI } from '@intlayer/api/oAuth';\nimport { getOrganizationAPI } from '@intlayer/api/organization';\nimport { getProjectAPI } from '@intlayer/api/project';\nimport { getReviewerAPI } from '@intlayer/api/reviewer';\nimport { getSearchAPI } from '@intlayer/api/search';\nimport { getShowcaseProjectAPI } from '@intlayer/api/showcaseProject';\nimport { getStripeAPI } from '@intlayer/api/stripe';\nimport { getTagAPI } from '@intlayer/api/tag';\nimport { getTranslateAPI } from '@intlayer/api/translate';\nimport { getUserAPI } from '@intlayer/api/user';\nimport { useConfiguration } from '@intlayer/editor-react';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { type AuthAPI, getAuthAPI } from '../libs/auth';\nimport { useAuth } from './useAuth';\n\nexport type UseIntlayerAuthProps = {\n options?: FetcherOptions;\n intlayerConfiguration?: IntlayerConfig;\n};\n\nexport const useIntlayerOAuthOptions = (props?: UseIntlayerAuthProps) => {\n const configuration = useConfiguration();\n const { oAuth2AccessToken } = useAuth();\n\n const options = {\n ...(oAuth2AccessToken && {\n headers: {\n Authorization: `Bearer ${oAuth2AccessToken.accessToken}`,\n },\n }),\n ...(props?.options ?? {}),\n };\n\n const rawConfig = props?.intlayerConfiguration ?? configuration;\n // Only use the config if it's fully populated; an empty object (e.g. while\n // the session is still loading) has no `editor` key and would crash API\n // getters that do `intlayerConfig.editor.backendURL`.\n const resolvedConfig = rawConfig?.editor ? rawConfig : undefined;\n\n return { options, resolvedConfig };\n};\n\nexport const useIntlayerOAuth = (props?: UseIntlayerAuthProps): IntlayerAPI => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getIntlayerAPI(options, resolvedConfig);\n};\n\nexport const useIntlayerAuth = (props?: UseIntlayerAuthProps): AuthAPI => {\n const configuration = useConfiguration();\n\n return getAuthAPI(props?.intlayerConfiguration ?? configuration);\n};\n\nexport const useOrganizationAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getOrganizationAPI(options, resolvedConfig);\n};\n\nexport const useProjectAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getProjectAPI(options, resolvedConfig);\n};\n\nexport const useUserAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getUserAPI(options, resolvedConfig);\n};\n\nexport const useOAuthAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getOAuthAPI(options, resolvedConfig);\n};\n\nexport const useDictionaryAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getDictionaryAPI(options, resolvedConfig);\n};\n\nexport const useStripeAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getStripeAPI(options, resolvedConfig);\n};\n\nexport const useAiAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getAiAPI(options, resolvedConfig);\n};\n\nexport const useAuditAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getAuditAPI(options, resolvedConfig);\n};\n\nexport const useTagAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getTagAPI(options, resolvedConfig);\n};\n\nexport const useSearchAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getSearchAPI(options, resolvedConfig);\n};\n\nexport const useEditorAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getEditorAPI(options, resolvedConfig);\n};\n\nexport const useNewsletterAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getNewsletterAPI(options, resolvedConfig);\n};\n\nexport const useGithubAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getGithubAPI(options, resolvedConfig);\n};\n\nexport const useGitlabAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getGitlabAPI(options, resolvedConfig);\n};\n\nexport const useBitbucketAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getBitbucketAPI(options, resolvedConfig);\n};\n\nexport const useShowcaseProjectAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getShowcaseProjectAPI(options, resolvedConfig);\n};\n\nexport const useTranslateAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getTranslateAPI(options, resolvedConfig);\n};\n\nexport const useReviewerAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getReviewerAPI(options, resolvedConfig);\n};\n\nexport const useEnvironmentAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getEnvironmentAPI(options, resolvedConfig);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"useIntlayerAPI.mjs","names":["getOAuthAPI"],"sources":["../../../src/api/useIntlayerAPI.ts"],"sourcesContent":["'use client';\n\nimport {\n type FetcherOptions,\n getIntlayerAPI,\n type IntlayerAPI,\n} from '@intlayer/api';\nimport { getAiAPI } from '@intlayer/api/ai';\nimport { getAuditAPI } from '@intlayer/api/audit';\nimport { getBitbucketAPI } from '@intlayer/api/bitbucket';\nimport { getDictionaryAPI } from '@intlayer/api/dictionary';\nimport { getEditorAPI } from '@intlayer/api/editor';\nimport { getEnvironmentAPI } from '@intlayer/api/environment';\nimport { getGithubAPI } from '@intlayer/api/github';\nimport { getGitlabAPI } from '@intlayer/api/gitlab';\nimport { getNewsletterAPI } from '@intlayer/api/newsletter';\nimport { getOAuthAPI } from '@intlayer/api/oAuth';\nimport { getOrganizationAPI } from '@intlayer/api/organization';\nimport { getProjectAPI } from '@intlayer/api/project';\nimport { getReviewerAPI } from '@intlayer/api/reviewer';\nimport { getSearchAPI } from '@intlayer/api/search';\nimport { getShowcaseProjectAPI } from '@intlayer/api/showcaseProject';\nimport { getStripeAPI } from '@intlayer/api/stripe';\nimport { getTagAPI } from '@intlayer/api/tag';\nimport { getTranslateAPI } from '@intlayer/api/translate';\nimport { getUserAPI } from '@intlayer/api/user';\nimport { useConfiguration } from '@intlayer/editor-react';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { type AuthAPI, getAuthAPI } from '../libs/auth';\nimport { useAuth } from './useAuth';\n\nexport type UseIntlayerAuthProps = {\n options?: FetcherOptions;\n intlayerConfiguration?: IntlayerConfig;\n};\n\nexport const useIntlayerOAuthOptions = (props?: UseIntlayerAuthProps) => {\n const configuration = useConfiguration();\n const { oAuth2AccessToken } = useAuth();\n\n const options = {\n ...(oAuth2AccessToken && {\n headers: {\n Authorization: `Bearer ${oAuth2AccessToken.accessToken}`,\n },\n }),\n ...(props?.options ?? {}),\n };\n\n const rawConfig = props?.intlayerConfiguration ?? configuration;\n // Only use the config if it's fully populated; an empty object (e.g. while\n // the session is still loading) has no `editor` key and would crash API\n // getters that do `intlayerConfig.editor.backendURL`.\n const resolvedConfig = rawConfig?.editor ? rawConfig : undefined;\n\n return { options, resolvedConfig };\n};\n\nexport const useIntlayerOAuth = (props?: UseIntlayerAuthProps): IntlayerAPI => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getIntlayerAPI(options, resolvedConfig);\n};\n\nexport const useIntlayerAuth = (props?: UseIntlayerAuthProps): AuthAPI => {\n const configuration = useConfiguration();\n\n return getAuthAPI(props?.intlayerConfiguration ?? configuration);\n};\n\nexport const useOrganizationAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getOrganizationAPI(options, resolvedConfig);\n};\n\nexport const useProjectAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getProjectAPI(options, resolvedConfig);\n};\n\nexport const useUserAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getUserAPI(options, resolvedConfig);\n};\n\nexport const useOAuthAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getOAuthAPI(options, resolvedConfig);\n};\n\nexport const useDictionaryAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getDictionaryAPI(options, resolvedConfig);\n};\n\nexport const useStripeAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getStripeAPI(options, resolvedConfig);\n};\n\nexport const useAiAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getAiAPI(options, resolvedConfig);\n};\n\nexport const useAuditAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getAuditAPI(options, resolvedConfig);\n};\n\nexport const useTagAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getTagAPI(options, resolvedConfig);\n};\n\nexport const useSearchAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getSearchAPI(options, resolvedConfig);\n};\n\nexport const useEditorAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getEditorAPI(options, resolvedConfig);\n};\n\nexport const useNewsletterAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getNewsletterAPI(options, resolvedConfig);\n};\n\nexport const useGithubAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getGithubAPI(options, resolvedConfig);\n};\n\nexport const useGitlabAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getGitlabAPI(options, resolvedConfig);\n};\n\nexport const useBitbucketAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getBitbucketAPI(options, resolvedConfig);\n};\n\nexport const useShowcaseProjectAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getShowcaseProjectAPI(options, resolvedConfig);\n};\n\nexport const useTranslateAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getTranslateAPI(options, resolvedConfig);\n};\n\nexport const useReviewerAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getReviewerAPI(options, resolvedConfig);\n};\n\nexport const useEnvironmentAPI = (props?: UseIntlayerAuthProps) => {\n const { options, resolvedConfig } = useIntlayerOAuthOptions(props);\n return getEnvironmentAPI(options, resolvedConfig);\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/api/useUser/index.ts"],"sourcesContent":["'use client';\n\nimport { useLogout } from '../hooks/auth';\nimport { useAuth } from '../useAuth';\n\nexport const useUser = () => {\n const { session, revalidateSession, setSession } = useAuth();\n const { mutate: logout } = useLogout();\n\n const status = session?.user ? 'authenticated' : 'unauthenticated';\n\n const isAuthenticated = status === 'authenticated';\n const isUnauthenticated = status === 'unauthenticated';\n\n const user = session?.user;\n\n const logoutHandle = async () => {\n setSession(null);\n logout();\n };\n\n return {\n isAuthenticated,\n isUnauthenticated,\n user,\n revalidateSession,\n logout: logoutHandle,\n };\n};\n"],"mappings":";;;;;;AAKA,MAAa,gBAAgB;CAC3B,MAAM,EAAE,SAAS,mBAAmB,eAAe,QAAQ;CAC3D,MAAM,EAAE,QAAQ,WAAW,UAAU;CAErC,MAAM,SAAS,SAAS,OAAO,kBAAkB;CAEjD,MAAM,kBAAkB,WAAW;CACnC,MAAM,oBAAoB,WAAW;CAErC,MAAM,OAAO,SAAS;CAEtB,MAAM,eAAe,YAAY;EAC/B,WAAW,IAAI;EACf,OAAO;CACT;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA,QAAQ;CACV;AACF"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/api/useUser/index.ts"],"sourcesContent":["'use client';\n\nimport { useLogout } from '../hooks/auth';\nimport { useAuth } from '../useAuth';\n\nexport const useUser = () => {\n const { session, revalidateSession, setSession } = useAuth();\n const { mutate: logout } = useLogout();\n\n const status = session?.user ? 'authenticated' : 'unauthenticated';\n\n const isAuthenticated = status === 'authenticated';\n const isUnauthenticated = status === 'unauthenticated';\n\n const user = session?.user;\n\n const logoutHandle = async () => {\n setSession(null);\n logout();\n };\n\n return {\n isAuthenticated,\n isUnauthenticated,\n user,\n revalidateSession,\n logout: logoutHandle,\n };\n};\n"],"mappings":";;;;;;AAKA,MAAa,gBAAgB;CAC3B,MAAM,EAAE,SAAS,mBAAmB,eAAe,SAAS;CAC5D,MAAM,EAAE,QAAQ,WAAW,WAAW;CAEtC,MAAM,SAAS,SAAS,OAAO,kBAAkB;CAEjD,MAAM,kBAAkB,WAAW;CACnC,MAAM,oBAAoB,WAAW;CAErC,MAAM,OAAO,SAAS;CAEtB,MAAM,eAAe,YAAY;AAC/B,aAAW,KAAK;AAChB,UAAQ;;AAGV,QAAO;EACL;EACA;EACA;EACA;EACA,QAAQ;EACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.mjs","names":[],"sources":["../../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport { ChevronDown } from 'lucide-react';\nimport {\n type FC,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n useId,\n useState,\n} from 'react';\nimport { Button, type ButtonProps } from '../Button';\nimport { MaxHeightSmoother } from '../MaxHeightSmoother';\n\nexport interface AccordionProps\n extends Omit<ButtonProps, 'children' | 'onToggle'> {\n /** The content displayed in the accordion header */\n header: ReactNode;\n /** The collapsible content inside the accordion */\n children: ReactNode;\n /** Controls whether the accordion is open (controlled mode) */\n isOpen?: boolean;\n /** Default open state (uncontrolled mode) */\n defaultIsOpen?: boolean;\n /** Called when the accordion state changes */\n onToggle?: (isOpen: boolean) => void;\n /** Disable the accordion interaction */\n disabled?: boolean;\n /** Custom class for the content container */\n contentClassName?: string;\n /** Custom class for the header container */\n headerClassName?: string;\n /** Accessible label for screen readers */\n 'aria-label'?: string;\n /** ID for the accordion content (for aria-controls) */\n contentId?: string;\n}\n\n/**\n * Accordion component that allows the user to expand and collapse content.\n * It provides a header with a chevron icon that controls the visibility of the content.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Accessible with proper ARIA attributes\n * - Keyboard navigation support\n * - Smooth animations for expand/collapse\n * - Customizable styling\n *\n * @param header - The content of the header.\n * @param children - The content to be expanded and collapsed.\n * @param isOpen - Controlled state for whether the content is expanded.\n * @param defaultIsOpen - Default open state for uncontrolled mode.\n * @param onToggle - Callback when the accordion state changes.\n * @param disabled - Whether the accordion is disabled.\n * @param contentClassName - Custom class for the content container.\n * @param headerClassName - Custom class for the header.\n * @param contentId - ID for the content (used for aria-controls).\n *\n * @example\n * // Uncontrolled mode\n * <Accordion header=\"Accordion Header\" defaultIsOpen={true}>\n * <p>Accordion content</p>\n * </Accordion>\n *\n * @example\n * // Controlled mode\n * <Accordion\n * header=\"Controlled Accordion\"\n * isOpen={isOpen}\n * onToggle={setIsOpen}\n * >\n * <p>Controlled content</p>\n * </Accordion>\n */\nexport const Accordion: FC<AccordionProps> = ({\n children,\n header,\n isOpen,\n defaultIsOpen = false,\n onToggle,\n onClick,\n disabled = false,\n contentClassName,\n headerClassName,\n contentId,\n 'aria-label': ariaLabel,\n ...props\n}) => {\n // Determine if we're in controlled or uncontrolled mode\n const isControlled = isOpen !== undefined;\n const [internalIsOpen, setInternalIsOpen] = useState(defaultIsOpen);\n const id = useId();\n\n // Use controlled value if provided, otherwise use internal state\n const isExpandedState = isControlled ? isOpen : internalIsOpen;\n const isHidden = !isExpandedState;\n\n // Generate unique ID for content if not provided\n const generatedContentId = contentId ?? `${id}-accordion-content`;\n\n const handleToggle = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n\n const newIsOpen = !isExpandedState;\n\n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalIsOpen(newIsOpen);\n }\n\n // Call external handlers\n onToggle?.(newIsOpen);\n onClick?.(e);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n // Enter and Space should toggle the accordion\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleToggle(e as any);\n }\n };\n\n return (\n <div className=\"w-full\">\n <Button\n variant=\"hoverable\"\n color=\"text\"\n onClick={handleToggle}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n isFullWidth\n className={cn(\n 'flex items-center justify-between gap-2',\n headerClassName\n )}\n IconRight={ChevronDown}\n iconClassName={cn(\n 'transform transition-transform duration-500 ease-in-out',\n isExpandedState ? 'rotate-0' : '-rotate-180'\n )}\n aria-expanded={isExpandedState}\n aria-controls={generatedContentId}\n aria-label={ariaLabel}\n role=\"button\"\n {...props}\n >\n {header}\n </Button>\n\n <MaxHeightSmoother\n id={generatedContentId}\n tabIndex={isHidden ? -1 : undefined}\n isHidden={isHidden}\n className={contentClassName}\n role=\"region\"\n aria-labelledby={generatedContentId}\n >\n {children}\n </MaxHeightSmoother>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EA,MAAa,aAAiC,EAC5C,UACA,QACA,QACA,gBAAgB,OAChB,UACA,SACA,WAAW,OACX,kBACA,iBACA,WACA,cAAc,WACd,GAAG,YACC;CAEJ,MAAM,eAAe,WAAW;CAChC,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,aAAa;CAClE,MAAM,KAAK,MAAM;CAGjB,MAAM,kBAAkB,eAAe,SAAS;CAChD,MAAM,WAAW,CAAC;CAGlB,MAAM,qBAAqB,aAAa,GAAG,GAAG;CAE9C,MAAM,gBAAgB,MAAqC;EACzD,IAAI,UAAU;EAEd,MAAM,YAAY,CAAC;EAGnB,IAAI,CAAC,cACH,kBAAkB,SAAS;EAI7B,WAAW,SAAS;EACpB,UAAU,CAAC;CACb;CAEA,MAAM,iBAAiB,MAAwC;EAE7D,IAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;GACtC,EAAE,eAAe;GACjB,aAAa,CAAQ;EACvB;CACF;CAEA,OACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,oBAAC,QAAD;GACE,SAAQ;GACR,OAAM;GACN,SAAS;GACT,WAAW;GACD;GACV;GACA,WAAW,GACT,2CACA,eACF;GACA,WAAW;GACX,eAAe,GACb,2DACA,kBAAkB,aAAa,aACjC;GACA,iBAAe;GACf,iBAAe;GACf,cAAY;GACZ,MAAK;GACL,GAAI;aAEH;EACK,IAER,oBAAC,mBAAD;GACE,IAAI;GACJ,UAAU,WAAW,KAAK;GAChB;GACV,WAAW;GACX,MAAK;GACL,mBAAiB;GAEhB;EACgB,EAChB;;AAET"}
1
+ {"version":3,"file":"Accordion.mjs","names":[],"sources":["../../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport { ChevronDown } from 'lucide-react';\nimport {\n type FC,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n useId,\n useState,\n} from 'react';\nimport { Button, type ButtonProps } from '../Button';\nimport { MaxHeightSmoother } from '../MaxHeightSmoother';\n\nexport interface AccordionProps\n extends Omit<ButtonProps, 'children' | 'onToggle'> {\n /** The content displayed in the accordion header */\n header: ReactNode;\n /** The collapsible content inside the accordion */\n children: ReactNode;\n /** Controls whether the accordion is open (controlled mode) */\n isOpen?: boolean;\n /** Default open state (uncontrolled mode) */\n defaultIsOpen?: boolean;\n /** Called when the accordion state changes */\n onToggle?: (isOpen: boolean) => void;\n /** Disable the accordion interaction */\n disabled?: boolean;\n /** Custom class for the content container */\n contentClassName?: string;\n /** Custom class for the header container */\n headerClassName?: string;\n /** Accessible label for screen readers */\n 'aria-label'?: string;\n /** ID for the accordion content (for aria-controls) */\n contentId?: string;\n}\n\n/**\n * Accordion component that allows the user to expand and collapse content.\n * It provides a header with a chevron icon that controls the visibility of the content.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Accessible with proper ARIA attributes\n * - Keyboard navigation support\n * - Smooth animations for expand/collapse\n * - Customizable styling\n *\n * @param header - The content of the header.\n * @param children - The content to be expanded and collapsed.\n * @param isOpen - Controlled state for whether the content is expanded.\n * @param defaultIsOpen - Default open state for uncontrolled mode.\n * @param onToggle - Callback when the accordion state changes.\n * @param disabled - Whether the accordion is disabled.\n * @param contentClassName - Custom class for the content container.\n * @param headerClassName - Custom class for the header.\n * @param contentId - ID for the content (used for aria-controls).\n *\n * @example\n * // Uncontrolled mode\n * <Accordion header=\"Accordion Header\" defaultIsOpen={true}>\n * <p>Accordion content</p>\n * </Accordion>\n *\n * @example\n * // Controlled mode\n * <Accordion\n * header=\"Controlled Accordion\"\n * isOpen={isOpen}\n * onToggle={setIsOpen}\n * >\n * <p>Controlled content</p>\n * </Accordion>\n */\nexport const Accordion: FC<AccordionProps> = ({\n children,\n header,\n isOpen,\n defaultIsOpen = false,\n onToggle,\n onClick,\n disabled = false,\n contentClassName,\n headerClassName,\n contentId,\n 'aria-label': ariaLabel,\n ...props\n}) => {\n // Determine if we're in controlled or uncontrolled mode\n const isControlled = isOpen !== undefined;\n const [internalIsOpen, setInternalIsOpen] = useState(defaultIsOpen);\n const id = useId();\n\n // Use controlled value if provided, otherwise use internal state\n const isExpandedState = isControlled ? isOpen : internalIsOpen;\n const isHidden = !isExpandedState;\n\n // Generate unique ID for content if not provided\n const generatedContentId = contentId ?? `${id}-accordion-content`;\n\n const handleToggle = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n\n const newIsOpen = !isExpandedState;\n\n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalIsOpen(newIsOpen);\n }\n\n // Call external handlers\n onToggle?.(newIsOpen);\n onClick?.(e);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n // Enter and Space should toggle the accordion\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleToggle(e as any);\n }\n };\n\n return (\n <div className=\"w-full\">\n <Button\n variant=\"hoverable\"\n color=\"text\"\n onClick={handleToggle}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n isFullWidth\n className={cn(\n 'flex items-center justify-between gap-2',\n headerClassName\n )}\n IconRight={ChevronDown}\n iconClassName={cn(\n 'transform transition-transform duration-500 ease-in-out',\n isExpandedState ? 'rotate-0' : '-rotate-180'\n )}\n aria-expanded={isExpandedState}\n aria-controls={generatedContentId}\n aria-label={ariaLabel}\n role=\"button\"\n {...props}\n >\n {header}\n </Button>\n\n <MaxHeightSmoother\n id={generatedContentId}\n tabIndex={isHidden ? -1 : undefined}\n isHidden={isHidden}\n className={contentClassName}\n role=\"region\"\n aria-labelledby={generatedContentId}\n >\n {children}\n </MaxHeightSmoother>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EA,MAAa,aAAiC,EAC5C,UACA,QACA,QACA,gBAAgB,OAChB,UACA,SACA,WAAW,OACX,kBACA,iBACA,WACA,cAAc,WACd,GAAG,YACC;CAEJ,MAAM,eAAe,WAAW;CAChC,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,cAAc;CACnE,MAAM,KAAK,OAAO;CAGlB,MAAM,kBAAkB,eAAe,SAAS;CAChD,MAAM,WAAW,CAAC;CAGlB,MAAM,qBAAqB,aAAa,GAAG,GAAG;CAE9C,MAAM,gBAAgB,MAAqC;AACzD,MAAI,SAAU;EAEd,MAAM,YAAY,CAAC;AAGnB,MAAI,CAAC,aACH,mBAAkB,UAAU;AAI9B,aAAW,UAAU;AACrB,YAAU,EAAE;;CAGd,MAAM,iBAAiB,MAAwC;AAE7D,MAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,KAAE,gBAAgB;AAClB,gBAAa,EAAS;;;AAI1B,QACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,oBAAC,QAAD;GACE,SAAQ;GACR,OAAM;GACN,SAAS;GACT,WAAW;GACD;GACV;GACA,WAAW,GACT,2CACA,gBACD;GACD,WAAW;GACX,eAAe,GACb,2DACA,kBAAkB,aAAa,cAChC;GACD,iBAAe;GACf,iBAAe;GACf,cAAY;GACZ,MAAK;GACL,GAAI;aAEH;GACM,GAET,oBAAC,mBAAD;GACE,IAAI;GACJ,UAAU,WAAW,KAAK;GAChB;GACV,WAAW;GACX,MAAK;GACL,mBAAiB;GAEhB;GACiB,EAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"image.mjs","names":[],"sources":["../../../../src/components/Avatar/image.ts"],"sourcesContent":["enum ImageProvider {\n Picsum = 'picsum',\n Dummy = 'dummy',\n}\n\nenum ImageType {\n Avatar = 'avatar',\n Random = 'random',\n}\n\n/**\n * Generates a random image URL based on the specified provider and type.\n *\n * @param provider - The image provider to use (e.g., Unsplash, Picsum, Dummy)\n * @param type - The type of image to generate (Avatar or Random)\n * @returns A URL string pointing to a random image\n *\n * @example\n * ```ts\n * getRandomImageUrl(ImageProvider.Picsum, ImageType.Random) // 'https://picsum.photos/800/600?random=123'\n * getRandomImageUrl(ImageProvider.Dummy, ImageType.Avatar) // 'https://dummyimage.com/200x200/000/fff&text=Avatar'\n * ```\n */\nexport function getRandomImageUrl(\n provider: ImageProvider,\n type: ImageType\n): string {\n switch (provider) {\n case ImageProvider.Picsum:\n if (type === ImageType.Avatar) {\n return `https://picsum.photos/200/200?random=${Math.floor(Math.random() * 1000)}`;\n } else {\n return `https://picsum.photos/800/600?random=${Math.floor(Math.random() * 1000)}`;\n }\n\n case ImageProvider.Dummy:\n if (type === ImageType.Avatar) {\n return `https://dummyimage.com/200x200/000/fff&text=Avatar`;\n } else {\n return `https://dummyimage.com/800x600/000/fff&text=Random`;\n }\n\n default:\n throw new Error(`Provider not supported: ${provider}`);\n }\n}\n\n/**\n * Generates a random image URL for avatar images based on the specified provider.\n *\n * @param provider - The image provider to use (e.g., Unsplash, Picsum, Dummy)\n * @returns A URL string pointing to a random avatar image\n *\n * @example\n * ```ts\n * getAvatarImageUrl(ImageProvider.Picsum) // 'https://picsum.photos/200/200?random=123'\n * getAvatarImageUrl(ImageProvider.Dummy) // 'https://dummyimage.com/200x200/000/fff&text=Avatar'\n * ```\n */\nexport function getAvatarImageUrl(\n provider: ImageProvider = ImageProvider.Picsum\n): string {\n return getRandomImageUrl(provider, ImageType.Avatar);\n}\n"],"mappings":";;;;;;;;;;;;;;AAuBA,SAAgB,kBACd,UACA,MACQ;CACR,QAAQ,UAAR;EACE,eACE,IAAI,mBACF,OAAO,wCAAwC,KAAK,MAAM,KAAK,OAAO,IAAI,GAAI;OAE9E,OAAO,wCAAwC,KAAK,MAAM,KAAK,OAAO,IAAI,GAAI;EAGlF,cACE,IAAI,mBACF,OAAO;OAEP,OAAO;EAGX,SACE,MAAM,IAAI,MAAM,2BAA2B,UAAU;CACzD;AACF;;;;;;;;;;;;;AAcA,SAAgB,kBACd,qBACQ;CACR,OAAO,kBAAkB,kBAA0B;AACrD"}
1
+ {"version":3,"file":"image.mjs","names":[],"sources":["../../../../src/components/Avatar/image.ts"],"sourcesContent":["enum ImageProvider {\n Picsum = 'picsum',\n Dummy = 'dummy',\n}\n\nenum ImageType {\n Avatar = 'avatar',\n Random = 'random',\n}\n\n/**\n * Generates a random image URL based on the specified provider and type.\n *\n * @param provider - The image provider to use (e.g., Unsplash, Picsum, Dummy)\n * @param type - The type of image to generate (Avatar or Random)\n * @returns A URL string pointing to a random image\n *\n * @example\n * ```ts\n * getRandomImageUrl(ImageProvider.Picsum, ImageType.Random) // 'https://picsum.photos/800/600?random=123'\n * getRandomImageUrl(ImageProvider.Dummy, ImageType.Avatar) // 'https://dummyimage.com/200x200/000/fff&text=Avatar'\n * ```\n */\nexport function getRandomImageUrl(\n provider: ImageProvider,\n type: ImageType\n): string {\n switch (provider) {\n case ImageProvider.Picsum:\n if (type === ImageType.Avatar) {\n return `https://picsum.photos/200/200?random=${Math.floor(Math.random() * 1000)}`;\n } else {\n return `https://picsum.photos/800/600?random=${Math.floor(Math.random() * 1000)}`;\n }\n\n case ImageProvider.Dummy:\n if (type === ImageType.Avatar) {\n return `https://dummyimage.com/200x200/000/fff&text=Avatar`;\n } else {\n return `https://dummyimage.com/800x600/000/fff&text=Random`;\n }\n\n default:\n throw new Error(`Provider not supported: ${provider}`);\n }\n}\n\n/**\n * Generates a random image URL for avatar images based on the specified provider.\n *\n * @param provider - The image provider to use (e.g., Unsplash, Picsum, Dummy)\n * @returns A URL string pointing to a random avatar image\n *\n * @example\n * ```ts\n * getAvatarImageUrl(ImageProvider.Picsum) // 'https://picsum.photos/200/200?random=123'\n * getAvatarImageUrl(ImageProvider.Dummy) // 'https://dummyimage.com/200x200/000/fff&text=Avatar'\n * ```\n */\nexport function getAvatarImageUrl(\n provider: ImageProvider = ImageProvider.Picsum\n): string {\n return getRandomImageUrl(provider, ImageType.Avatar);\n}\n"],"mappings":";;;;;;;;;;;;;;AAuBA,SAAgB,kBACd,UACA,MACQ;AACR,SAAQ,UAAR;EACE,cACE,KAAI,kBACF,QAAO,wCAAwC,KAAK,MAAM,KAAK,QAAQ,GAAG,IAAK;MAE/E,QAAO,wCAAwC,KAAK,MAAM,KAAK,QAAQ,GAAG,IAAK;EAGnF,aACE,KAAI,kBACF,QAAO;MAEP,QAAO;EAGX,QACE,OAAM,IAAI,MAAM,2BAA2B,WAAW;;;;;;;;;;;;;;;AAgB5D,SAAgB,kBACd,qBACQ;AACR,QAAO,kBAAkB,mBAA2B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/Avatar/index.tsx"],"sourcesContent":["import { cn } from '@utils/cn';\nimport { User } from 'lucide-react';\nimport type { ComponentProps, FC, HTMLAttributes } from 'react';\nimport { useMemo } from 'react';\nimport { Loader } from '../Loader';\n\n/**\n * Props for the Avatar component\n */\nexport interface AvatarProps extends Omit<ComponentProps<'button'>, 'onClick'> {\n /** Image source URL for the avatar */\n src?: string;\n /** Full name used to generate initials and alt text */\n fullname?: string;\n /** Displays a loading spinner when true */\n isLoading?: boolean;\n /** Whether the user is authenticated */\n isLoggedIn?: boolean;\n /** Size variant of the avatar */\n size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /** Click handler - when provided, makes the avatar clickable */\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n /** Alternative text for accessibility */\n alt?: string;\n /** Whether the avatar should be focusable when not clickable */\n focusable?: boolean;\n /** Whether the avatar should be hoverable */\n hoverable?: boolean;\n}\n\n/**\n * @description Gets the capital letters from a name.\n * @param name - The name to extract capitals from.\n * @param separator - The separator to split the name (default is an empty string, which splits by each character).\n * @returns {string[]} An array of capital letters from the name.\n */\nexport const getCapitals = (name: string, separator = ' '): string[] => {\n if (!name) return [];\n\n const parts =\n separator === ' '\n ? name.trim().split(/\\s+/) // handle multiple spaces\n : name.split(separator);\n\n return parts.filter(Boolean).map((word) => word.charAt(0).toUpperCase());\n};\n\n/**\n * Container component that renders either a button or div based on interactivity\n */\nconst Container: FC<\n HTMLAttributes<HTMLElement> & {\n isClickable: boolean;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n }\n> = ({ isClickable, onClick, ...props }) => {\n if (isClickable && onClick) {\n return (\n <button\n {...(props as ComponentProps<'button'>)}\n onClick={onClick}\n type=\"button\"\n />\n );\n }\n\n return (\n <div\n {...(props as ComponentProps<'div'>)}\n role={\n props.tabIndex !== undefined || props['aria-label'] ? 'img' : undefined\n }\n />\n );\n};\n\n/**\n * Avatar component that displays user profile images, initials, or a default user icon.\n * Supports loading states, authentication states, and accessibility features.\n *\n * @example\n * ```tsx\n * // With image\n * <Avatar src=\"https://example.com/avatar.jpg\" fullname=\"John Doe\" />\n *\n * // With initials\n * <Avatar fullname=\"John Doe\" />\n *\n * // Clickable avatar\n * <Avatar\n * fullname=\"John Doe\"\n * onClick={(e) => console.log('Avatar clicked')}\n * />\n *\n * // Loading state\n * <Avatar isLoading fullname=\"John Doe\" />\n * ```\n */\nexport const Avatar: FC<AvatarProps> = ({\n fullname,\n className,\n isLoading = false,\n isLoggedIn = true,\n src,\n onClick,\n size = 'md',\n alt,\n focusable = false,\n hoverable = false,\n ...props\n}) => {\n const isImageDefined = Boolean(src);\n const isNameDefined = Boolean((fullname ?? '').length > 0);\n const capitals = fullname ? getCapitals(fullname) : undefined;\n\n // Display logic\n const displayLoader = isLoading;\n const displayAvatar = isLoggedIn && !displayLoader && isImageDefined;\n const displayInitials =\n isLoggedIn && !displayLoader && !displayAvatar && isNameDefined;\n const displayUserIcon =\n isLoggedIn && !displayLoader && !displayAvatar && !displayInitials;\n\n const isClickable = onClick !== undefined;\n\n // Accessibility attributes\n const accessibilityProps = useMemo(() => {\n const baseProps: Record<string, any> = {};\n\n if (displayAvatar && alt) {\n baseProps['aria-label'] = alt;\n } else if (displayAvatar && fullname) {\n baseProps['aria-label'] = `Avatar of ${fullname}`;\n } else if (displayInitials && fullname) {\n baseProps['aria-label'] = `Avatar initials for ${fullname}`;\n } else if (displayUserIcon) {\n baseProps['aria-label'] = 'Default user avatar';\n } else if (displayLoader) {\n baseProps['aria-label'] = 'Loading avatar';\n baseProps['aria-busy'] = true;\n }\n\n if (!isClickable && focusable) {\n baseProps.tabIndex = 0;\n }\n\n if (isClickable) {\n baseProps['aria-describedby'] = 'avatar-description';\n }\n\n return baseProps;\n }, [\n displayAvatar,\n displayInitials,\n displayUserIcon,\n displayLoader,\n alt,\n fullname,\n isClickable,\n focusable,\n ]);\n\n return (\n <Container\n isClickable={isClickable}\n className={cn(\n `rounded-full border-[1.3px] border-text p-[1.5px] ring-offset-0 transition-ring duration-200`,\n size === 'sm' && 'size-7 border-[1px] p-[1px]',\n size === 'md' && 'size-9',\n size === 'lg' && 'size-12',\n size === 'xl' && 'size-16',\n size === '2xl' && 'size-24',\n isClickable &&\n `cursor-pointer hover:opacity-80 focus:outline-none focus:ring-3 focus:ring-text/50 focus:ring-offset-2`,\n hoverable &&\n `hover:opacity-80 hover:ring-4 hover:ring-text/30 hover:ring-offset-2`,\n !isClickable &&\n focusable &&\n `focus:outline-none focus:ring-3 focus:ring-text/50 focus:ring-offset-2`,\n displayLoader && 'animate-pulse',\n className\n )}\n onClick={onClick}\n {...accessibilityProps}\n {...props}\n >\n <div className=\"relative flex aspect-square size-full flex-row items-center justify-center\">\n <div className=\"absolute top-0 left-0 flex aspect-square size-full flex-col items-center justify-center rounded-full bg-text text-text-opposite\">\n {displayLoader && (\n <Loader className=\"w-3/4\" aria-label=\"Loading user avatar\" />\n )}\n\n {displayAvatar && (\n <img\n className=\"size-full rounded-full object-cover\"\n src={src}\n srcSet={src}\n alt={alt ?? `Avatar of ${fullname}`}\n width={59}\n height={59}\n loading=\"lazy\"\n draggable={false}\n />\n )}\n\n {displayInitials && (\n <div\n className={cn(\n 'flex size-full items-center justify-center gap-[0.1rem] font-bold max-md:py-1',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n size === 'lg' && 'text-base',\n size === 'xl' && 'text-lg',\n size === '2xl' && 'text-xl'\n )}\n >\n {capitals?.map((capital, index) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: Capitals are primitives and order is fixed\n <span key={`${capital}-${index}`}>{capital}</span>\n ))}\n </div>\n )}\n\n {displayUserIcon && (\n <User\n size={cn(\n size === 'sm' && 14,\n size === 'md' && 25,\n size === 'lg' && 30,\n size === 'xl' && 40\n )}\n aria-label=\"Default user icon\"\n />\n )}\n </div>\n </div>\n </Container>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAoCA,MAAa,eAAe,MAAc,YAAY,QAAkB;CACtE,IAAI,CAAC,MAAM,OAAO,CAAC;CAOnB,QAJE,cAAc,MACV,KAAK,KAAK,EAAE,MAAM,KAAK,IACvB,KAAK,MAAM,SAAS,GAEb,OAAO,OAAO,EAAE,KAAK,SAAS,KAAK,OAAO,CAAC,EAAE,YAAY,CAAC;AACzE;;;;AAKA,MAAM,aAKD,EAAE,aAAa,SAAS,GAAG,YAAY;CAC1C,IAAI,eAAe,SACjB,OACE,oBAAC,UAAD;EACE,GAAK;EACI;EACT,MAAK;CACN;CAIL,OACE,oBAAC,OAAD;EACE,GAAK;EACL,MACE,MAAM,aAAa,UAAa,MAAM,gBAAgB,QAAQ;CAEjE;AAEL;;;;;;;;;;;;;;;;;;;;;;;AAwBA,MAAa,UAA2B,EACtC,UACA,WACA,YAAY,OACZ,aAAa,MACb,KACA,SACA,OAAO,MACP,KACA,YAAY,OACZ,YAAY,OACZ,GAAG,YACC;CACJ,MAAM,iBAAiB,QAAQ,GAAG;CAClC,MAAM,gBAAgB,SAAS,YAAY,IAAI,SAAS,CAAC;CACzD,MAAM,WAAW,WAAW,YAAY,QAAQ,IAAI;CAGpD,MAAM,gBAAgB;CACtB,MAAM,gBAAgB,cAAc,CAAC,iBAAiB;CACtD,MAAM,kBACJ,cAAc,CAAC,iBAAiB,CAAC,iBAAiB;CACpD,MAAM,kBACJ,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;CAErD,MAAM,cAAc,YAAY;CAGhC,MAAM,qBAAqB,cAAc;EACvC,MAAM,YAAiC,CAAC;EAExC,IAAI,iBAAiB,KACnB,UAAU,gBAAgB;OACrB,IAAI,iBAAiB,UAC1B,UAAU,gBAAgB,aAAa;OAClC,IAAI,mBAAmB,UAC5B,UAAU,gBAAgB,uBAAuB;OAC5C,IAAI,iBACT,UAAU,gBAAgB;OACrB,IAAI,eAAe;GACxB,UAAU,gBAAgB;GAC1B,UAAU,eAAe;EAC3B;EAEA,IAAI,CAAC,eAAe,WAClB,UAAU,WAAW;EAGvB,IAAI,aACF,UAAU,sBAAsB;EAGlC,OAAO;CACT,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OACE,oBAAC,WAAD;EACe;EACb,WAAW,GACT,gGACA,SAAS,QAAQ,+BACjB,SAAS,QAAQ,UACjB,SAAS,QAAQ,WACjB,SAAS,QAAQ,WACjB,SAAS,SAAS,WAClB,eACE,0GACF,aACE,wEACF,CAAC,eACC,aACA,0EACF,iBAAiB,iBACjB,SACF;EACS;EACT,GAAI;EACJ,GAAI;YAEJ,oBAAC,OAAD;GAAK,WAAU;aACb,qBAAC,OAAD;IAAK,WAAU;cAAf;KACG,iBACC,oBAAC,QAAD;MAAQ,WAAU;MAAQ,cAAW;KAAuB;KAG7D,iBACC,oBAAC,OAAD;MACE,WAAU;MACL;MACL,QAAQ;MACR,KAAK,OAAO,aAAa;MACzB,OAAO;MACP,QAAQ;MACR,SAAQ;MACR,WAAW;KACZ;KAGF,mBACC,oBAAC,OAAD;MACE,WAAW,GACT,iFACA,SAAS,QAAQ,WACjB,SAAS,QAAQ,WACjB,SAAS,QAAQ,aACjB,SAAS,QAAQ,WACjB,SAAS,SAAS,SACpB;gBAEC,UAAU,KAAK,SAAS,UAEvB,oBAAC,QAAD,YAAmC,QAAc,GAAtC,GAAG,QAAQ,GAAG,OAAwB,CAClD;KACE;KAGN,mBACC,oBAAC,MAAD;MACE,MAAM,GACJ,SAAS,QAAQ,IACjB,SAAS,QAAQ,IACjB,SAAS,QAAQ,IACjB,SAAS,QAAQ,EACnB;MACA,cAAW;KACZ;IAEA;;EACF;CACI;AAEf"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/Avatar/index.tsx"],"sourcesContent":["import { cn } from '@utils/cn';\nimport { User } from 'lucide-react';\nimport type { ComponentProps, FC, HTMLAttributes } from 'react';\nimport { useMemo } from 'react';\nimport { Loader } from '../Loader';\n\n/**\n * Props for the Avatar component\n */\nexport interface AvatarProps extends Omit<ComponentProps<'button'>, 'onClick'> {\n /** Image source URL for the avatar */\n src?: string;\n /** Full name used to generate initials and alt text */\n fullname?: string;\n /** Displays a loading spinner when true */\n isLoading?: boolean;\n /** Whether the user is authenticated */\n isLoggedIn?: boolean;\n /** Size variant of the avatar */\n size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /** Click handler - when provided, makes the avatar clickable */\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n /** Alternative text for accessibility */\n alt?: string;\n /** Whether the avatar should be focusable when not clickable */\n focusable?: boolean;\n /** Whether the avatar should be hoverable */\n hoverable?: boolean;\n}\n\n/**\n * @description Gets the capital letters from a name.\n * @param name - The name to extract capitals from.\n * @param separator - The separator to split the name (default is an empty string, which splits by each character).\n * @returns {string[]} An array of capital letters from the name.\n */\nexport const getCapitals = (name: string, separator = ' '): string[] => {\n if (!name) return [];\n\n const parts =\n separator === ' '\n ? name.trim().split(/\\s+/) // handle multiple spaces\n : name.split(separator);\n\n return parts.filter(Boolean).map((word) => word.charAt(0).toUpperCase());\n};\n\n/**\n * Container component that renders either a button or div based on interactivity\n */\nconst Container: FC<\n HTMLAttributes<HTMLElement> & {\n isClickable: boolean;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n }\n> = ({ isClickable, onClick, ...props }) => {\n if (isClickable && onClick) {\n return (\n <button\n {...(props as ComponentProps<'button'>)}\n onClick={onClick}\n type=\"button\"\n />\n );\n }\n\n return (\n <div\n {...(props as ComponentProps<'div'>)}\n role={\n props.tabIndex !== undefined || props['aria-label'] ? 'img' : undefined\n }\n />\n );\n};\n\n/**\n * Avatar component that displays user profile images, initials, or a default user icon.\n * Supports loading states, authentication states, and accessibility features.\n *\n * @example\n * ```tsx\n * // With image\n * <Avatar src=\"https://example.com/avatar.jpg\" fullname=\"John Doe\" />\n *\n * // With initials\n * <Avatar fullname=\"John Doe\" />\n *\n * // Clickable avatar\n * <Avatar\n * fullname=\"John Doe\"\n * onClick={(e) => console.log('Avatar clicked')}\n * />\n *\n * // Loading state\n * <Avatar isLoading fullname=\"John Doe\" />\n * ```\n */\nexport const Avatar: FC<AvatarProps> = ({\n fullname,\n className,\n isLoading = false,\n isLoggedIn = true,\n src,\n onClick,\n size = 'md',\n alt,\n focusable = false,\n hoverable = false,\n ...props\n}) => {\n const isImageDefined = Boolean(src);\n const isNameDefined = Boolean((fullname ?? '').length > 0);\n const capitals = fullname ? getCapitals(fullname) : undefined;\n\n // Display logic\n const displayLoader = isLoading;\n const displayAvatar = isLoggedIn && !displayLoader && isImageDefined;\n const displayInitials =\n isLoggedIn && !displayLoader && !displayAvatar && isNameDefined;\n const displayUserIcon =\n isLoggedIn && !displayLoader && !displayAvatar && !displayInitials;\n\n const isClickable = onClick !== undefined;\n\n // Accessibility attributes\n const accessibilityProps = useMemo(() => {\n const baseProps: Record<string, any> = {};\n\n if (displayAvatar && alt) {\n baseProps['aria-label'] = alt;\n } else if (displayAvatar && fullname) {\n baseProps['aria-label'] = `Avatar of ${fullname}`;\n } else if (displayInitials && fullname) {\n baseProps['aria-label'] = `Avatar initials for ${fullname}`;\n } else if (displayUserIcon) {\n baseProps['aria-label'] = 'Default user avatar';\n } else if (displayLoader) {\n baseProps['aria-label'] = 'Loading avatar';\n baseProps['aria-busy'] = true;\n }\n\n if (!isClickable && focusable) {\n baseProps.tabIndex = 0;\n }\n\n if (isClickable) {\n baseProps['aria-describedby'] = 'avatar-description';\n }\n\n return baseProps;\n }, [\n displayAvatar,\n displayInitials,\n displayUserIcon,\n displayLoader,\n alt,\n fullname,\n isClickable,\n focusable,\n ]);\n\n return (\n <Container\n isClickable={isClickable}\n className={cn(\n `rounded-full border-[1.3px] border-text p-[1.5px] ring-offset-0 transition-ring duration-200`,\n size === 'sm' && 'size-7 border-[1px] p-[1px]',\n size === 'md' && 'size-9',\n size === 'lg' && 'size-12',\n size === 'xl' && 'size-16',\n size === '2xl' && 'size-24',\n isClickable &&\n `cursor-pointer hover:opacity-80 focus:outline-none focus:ring-3 focus:ring-text/50 focus:ring-offset-2`,\n hoverable &&\n `hover:opacity-80 hover:ring-4 hover:ring-text/30 hover:ring-offset-2`,\n !isClickable &&\n focusable &&\n `focus:outline-none focus:ring-3 focus:ring-text/50 focus:ring-offset-2`,\n displayLoader && 'animate-pulse',\n className\n )}\n onClick={onClick}\n {...accessibilityProps}\n {...props}\n >\n <div className=\"relative flex aspect-square size-full flex-row items-center justify-center\">\n <div className=\"absolute top-0 left-0 flex aspect-square size-full flex-col items-center justify-center rounded-full bg-text text-text-opposite\">\n {displayLoader && (\n <Loader className=\"w-3/4\" aria-label=\"Loading user avatar\" />\n )}\n\n {displayAvatar && (\n <img\n className=\"size-full rounded-full object-cover\"\n src={src}\n srcSet={src}\n alt={alt ?? `Avatar of ${fullname}`}\n width={59}\n height={59}\n loading=\"lazy\"\n draggable={false}\n />\n )}\n\n {displayInitials && (\n <div\n className={cn(\n 'flex size-full items-center justify-center gap-[0.1rem] font-bold max-md:py-1',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n size === 'lg' && 'text-base',\n size === 'xl' && 'text-lg',\n size === '2xl' && 'text-xl'\n )}\n >\n {capitals?.map((capital, index) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: Capitals are primitives and order is fixed\n <span key={`${capital}-${index}`}>{capital}</span>\n ))}\n </div>\n )}\n\n {displayUserIcon && (\n <User\n size={cn(\n size === 'sm' && 14,\n size === 'md' && 25,\n size === 'lg' && 30,\n size === 'xl' && 40\n )}\n aria-label=\"Default user icon\"\n />\n )}\n </div>\n </div>\n </Container>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAoCA,MAAa,eAAe,MAAc,YAAY,QAAkB;AACtE,KAAI,CAAC,KAAM,QAAO,EAAE;AAOpB,SAJE,cAAc,MACV,KAAK,MAAM,CAAC,MAAM,MAAM,GACxB,KAAK,MAAM,UAAU,EAEd,OAAO,QAAQ,CAAC,KAAK,SAAS,KAAK,OAAO,EAAE,CAAC,aAAa,CAAC;;;;;AAM1E,MAAM,aAKD,EAAE,aAAa,SAAS,GAAG,YAAY;AAC1C,KAAI,eAAe,QACjB,QACE,oBAAC,UAAD;EACE,GAAK;EACI;EACT,MAAK;EACL;AAIN,QACE,oBAAC,OAAD;EACE,GAAK;EACL,MACE,MAAM,aAAa,UAAa,MAAM,gBAAgB,QAAQ;EAEhE;;;;;;;;;;;;;;;;;;;;;;;;AA0BN,MAAa,UAA2B,EACtC,UACA,WACA,YAAY,OACZ,aAAa,MACb,KACA,SACA,OAAO,MACP,KACA,YAAY,OACZ,YAAY,OACZ,GAAG,YACC;CACJ,MAAM,iBAAiB,QAAQ,IAAI;CACnC,MAAM,gBAAgB,SAAS,YAAY,IAAI,SAAS,EAAE;CAC1D,MAAM,WAAW,WAAW,YAAY,SAAS,GAAG;CAGpD,MAAM,gBAAgB;CACtB,MAAM,gBAAgB,cAAc,CAAC,iBAAiB;CACtD,MAAM,kBACJ,cAAc,CAAC,iBAAiB,CAAC,iBAAiB;CACpD,MAAM,kBACJ,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;CAErD,MAAM,cAAc,YAAY;CAGhC,MAAM,qBAAqB,cAAc;EACvC,MAAM,YAAiC,EAAE;AAEzC,MAAI,iBAAiB,IACnB,WAAU,gBAAgB;WACjB,iBAAiB,SAC1B,WAAU,gBAAgB,aAAa;WAC9B,mBAAmB,SAC5B,WAAU,gBAAgB,uBAAuB;WACxC,gBACT,WAAU,gBAAgB;WACjB,eAAe;AACxB,aAAU,gBAAgB;AAC1B,aAAU,eAAe;;AAG3B,MAAI,CAAC,eAAe,UAClB,WAAU,WAAW;AAGvB,MAAI,YACF,WAAU,sBAAsB;AAGlC,SAAO;IACN;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,QACE,oBAAC,WAAD;EACe;EACb,WAAW,GACT,gGACA,SAAS,QAAQ,+BACjB,SAAS,QAAQ,UACjB,SAAS,QAAQ,WACjB,SAAS,QAAQ,WACjB,SAAS,SAAS,WAClB,eACE,0GACF,aACE,wEACF,CAAC,eACC,aACA,0EACF,iBAAiB,iBACjB,UACD;EACQ;EACT,GAAI;EACJ,GAAI;YAEJ,oBAAC,OAAD;GAAK,WAAU;aACb,qBAAC,OAAD;IAAK,WAAU;cAAf;KACG,iBACC,oBAAC,QAAD;MAAQ,WAAU;MAAQ,cAAW;MAAwB;KAG9D,iBACC,oBAAC,OAAD;MACE,WAAU;MACL;MACL,QAAQ;MACR,KAAK,OAAO,aAAa;MACzB,OAAO;MACP,QAAQ;MACR,SAAQ;MACR,WAAW;MACX;KAGH,mBACC,oBAAC,OAAD;MACE,WAAW,GACT,iFACA,SAAS,QAAQ,WACjB,SAAS,QAAQ,WACjB,SAAS,QAAQ,aACjB,SAAS,QAAQ,WACjB,SAAS,SAAS,UACnB;gBAEA,UAAU,KAAK,SAAS,UAEvB,oBAAC,QAAD,YAAmC,SAAe,EAAvC,GAAG,QAAQ,GAAG,QAAyB,CAClD;MACE;KAGP,mBACC,oBAAC,MAAD;MACE,MAAM,GACJ,SAAS,QAAQ,IACjB,SAAS,QAAQ,IACjB,SAAS,QAAQ,IACjB,SAAS,QAAQ,GAClB;MACD,cAAW;MACX;KAEA;;GACF;EACI"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/Badge/index.tsx"],"sourcesContent":["import { cn } from '@utils/cn';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type { HTMLAttributes } from 'react';\n\n/**\n * Badge color variants enum\n * @description Defines the available color themes for the badge component\n */\nexport type BadgeColor =\n | 'primary'\n | 'secondary'\n | 'success'\n | 'error'\n | 'neutral'\n | 'light'\n | 'dark'\n | 'text'\n | 'custom';\n\n/**\n * Badge visual variants enum\n * @description Defines the available visual styles for the badge component\n */\nexport type BadgeVariant = 'default' | 'none' | 'outline' | 'hoverable';\n\n/**\n * Badge size variants enum\n * @description Defines the available sizes for the badge component\n */\nexport type BadgeSize = 'sm' | 'md' | 'lg';\n\n/**\n * Badge component variants using class-variance-authority\n * @description Defines the styling variants for different badge combinations\n */\nexport const badgeVariants = cva(\n 'inline-flex items-center rounded-md border px-2.5 py-0.5 font-semibold text-xs transition-colors focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n color: {\n primary: 'border-primary bg-primary text-primary hover:bg-primary-500',\n secondary:\n 'border-secondary bg-secondary text-secondary hover:bg-secondary-300',\n success: 'border-success bg-success text-success hover:bg-success-500',\n error: 'border-error bg-error text-error hover:bg-error-500',\n neutral: 'border-neutral bg-neutral text-neutral hover:bg-neutral-600',\n light: 'border-white bg-white text-white hover:bg-neutral-500',\n dark: 'border-neutral-800 bg-neutral-800 text-neutral-800 hover:bg-neutral-900',\n text: 'border-text bg-text text-text hover:opacity-80',\n custom: '',\n },\n variant: {\n default: 'rounded-lg text-text-opposite',\n none: 'border-none bg-opacity-0 text-inherit hover:bg-opacity-0',\n outline: 'rounded-lg border-[1.3px] bg-opacity-0 hover:bg-opacity-30',\n hoverable:\n 'rounded-lg border-none bg-opacity-0 transition hover:bg-opacity-10',\n },\n size: {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-0.5 text-xs',\n lg: 'px-3 py-1 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n color: 'primary',\n size: 'md',\n },\n }\n);\n\n/**\n * Badge component props interface\n * @description Comprehensive props for the Badge component with accessibility and interactive features\n */\nexport type BadgeProps = HTMLAttributes<HTMLElement> & {\n /** The content to display inside the badge */\n children?: React.ReactNode;\n /** Color theme variant */\n color?: BadgeColor | `${BadgeColor}`;\n /** Visual style variant */\n variant?: BadgeVariant | `${BadgeVariant}`;\n /** Size of the badge */\n size?: BadgeSize | `${BadgeSize}`;\n /** Whether the badge is clickable */\n clickable?: boolean;\n /** Whether the badge is dismissible (shows close button) */\n dismissible?: boolean;\n /** Click handler for the badge */\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n /** Click handler for the dismiss button */\n onDismiss?: () => void;\n /** ARIA label for accessibility */\n 'aria-label'?: string;\n /** Badge role for accessibility (default: 'status') */\n role?: 'status' | 'button' | 'generic';\n /** Whether badge should be focusable */\n tabIndex?: number;\n};\n\n/**\n * Utility type for badge variant props\n */\nexport type BadgeVariantProps = VariantProps<typeof badgeVariants>;\n\n/**\n * Badge component for displaying status indicators, labels, and notifications\n *\n * @description A flexible badge component that supports multiple visual styles, colors, and interactive features.\n * It maintains accessibility standards and provides comprehensive customization options.\n *\n * @example\n * ```tsx\n * // Basic badge\n * <Badge>New</Badge>\n *\n * // Colored badge\n * <Badge color=\"error\">Error</Badge>\n *\n * // Clickable badge\n * <Badge clickable onClick={() => console.log('clicked')}>\n * Clickable\n * </Badge>\n *\n * // Dismissible badge\n * <Badge dismissible onDismiss={() => console.log('dismissed')}>\n * Dismissible\n * </Badge>\n * ```\n */\nexport const Badge: React.FC<BadgeProps> = ({\n className,\n variant = 'default',\n color = 'primary',\n size = 'md',\n children,\n clickable = false,\n dismissible = false,\n onClick,\n onDismiss,\n role,\n tabIndex,\n 'aria-label': ariaLabel,\n ...props\n}) => {\n const Component = clickable ? 'button' : 'span';\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (clickable && onClick && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n onClick(event as any);\n }\n };\n\n const handleDismiss = (event: React.MouseEvent) => {\n event.stopPropagation();\n onDismiss?.();\n };\n\n return (\n <Component\n className={cn(\n badgeVariants({ variant, color, size }),\n clickable &&\n 'cursor-pointer hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2',\n dismissible && 'pr-1',\n className\n )}\n onClick={clickable ? onClick : undefined}\n onKeyDown={clickable ? handleKeyDown : undefined}\n role={role || (clickable ? 'button' : 'status')}\n tabIndex={clickable ? (tabIndex ?? 0) : tabIndex}\n aria-label={ariaLabel || (clickable ? `${children} button` : undefined)}\n {...props}\n >\n {children}\n {dismissible && (\n <button\n type=\"button\"\n className=\"ml-1 inline-flex h-4 w-4 items-center justify-center rounded-full hover:bg-black/10 focus:outline-none focus:ring-1 focus:ring-offset-1\"\n onClick={handleDismiss}\n aria-label={`Remove ${children} badge`}\n >\n <svg\n className=\"size-3\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-label=\"Remove badge\"\n >\n <title>Remove badge</title>\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n )}\n </Component>\n );\n};\n"],"mappings":";;;;;;;;;AAmCA,MAAa,gBAAgB,IAC3B,0KACA;CACE,UAAU;EACR,OAAO;GACL,SAAS;GACT,WACE;GACF,SAAS;GACT,OAAO;GACP,SAAS;GACT,OAAO;GACP,MAAM;GACN,MAAM;GACN,QAAQ;EACV;EACA,SAAS;GACP,SAAS;GACT,MAAM;GACN,SAAS;GACT,WACE;EACJ;EACA,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,OAAO;EACP,MAAM;CACR;AACF,CACF;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA,MAAa,SAA+B,EAC1C,WACA,UAAU,WACV,QAAQ,WACR,OAAO,MACP,UACA,YAAY,OACZ,cAAc,OACd,SACA,WACA,MACA,UACA,cAAc,WACd,GAAG,YACC;CACJ,MAAM,YAAY,YAAY,WAAW;CAEzC,MAAM,iBAAiB,UAA4C;EACjE,IAAI,aAAa,YAAY,MAAM,QAAQ,WAAW,MAAM,QAAQ,MAAM;GACxE,MAAM,eAAe;GACrB,QAAQ,KAAY;EACtB;CACF;CAEA,MAAM,iBAAiB,UAA4B;EACjD,MAAM,gBAAgB;EACtB,YAAY;CACd;CAEA,OACE,qBAAC,WAAD;EACE,WAAW,GACT,cAAc;GAAE;GAAS;GAAO;EAAK,CAAC,GACtC,aACE,oFACF,eAAe,QACf,SACF;EACA,SAAS,YAAY,UAAU;EAC/B,WAAW,YAAY,gBAAgB;EACvC,MAAM,SAAS,YAAY,WAAW;EACtC,UAAU,YAAa,YAAY,IAAK;EACxC,cAAY,cAAc,YAAY,GAAG,SAAS,WAAW;EAC7D,GAAI;YAbN,CAeG,UACA,eACC,oBAAC,UAAD;GACE,MAAK;GACL,WAAU;GACV,SAAS;GACT,cAAY,UAAU,SAAS;aAE/B,qBAAC,OAAD;IACE,WAAU;IACV,SAAQ;IACR,MAAK;IACL,cAAW;cAJb,CAME,oBAAC,SAAD,YAAO,eAAmB,IAC1B,oBAAC,QAAD;KACE,UAAS;KACT,GAAE;KACF,UAAS;IACV,EACE;;EACC,EAED;;AAEf"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/Badge/index.tsx"],"sourcesContent":["import { cn } from '@utils/cn';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type { HTMLAttributes } from 'react';\n\n/**\n * Badge color variants enum\n * @description Defines the available color themes for the badge component\n */\nexport type BadgeColor =\n | 'primary'\n | 'secondary'\n | 'success'\n | 'error'\n | 'neutral'\n | 'light'\n | 'dark'\n | 'text'\n | 'custom';\n\n/**\n * Badge visual variants enum\n * @description Defines the available visual styles for the badge component\n */\nexport type BadgeVariant = 'default' | 'none' | 'outline' | 'hoverable';\n\n/**\n * Badge size variants enum\n * @description Defines the available sizes for the badge component\n */\nexport type BadgeSize = 'sm' | 'md' | 'lg';\n\n/**\n * Badge component variants using class-variance-authority\n * @description Defines the styling variants for different badge combinations\n */\nexport const badgeVariants = cva(\n 'inline-flex items-center rounded-md border px-2.5 py-0.5 font-semibold text-xs transition-colors focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n color: {\n primary: 'border-primary bg-primary text-primary hover:bg-primary-500',\n secondary:\n 'border-secondary bg-secondary text-secondary hover:bg-secondary-300',\n success: 'border-success bg-success text-success hover:bg-success-500',\n error: 'border-error bg-error text-error hover:bg-error-500',\n neutral: 'border-neutral bg-neutral text-neutral hover:bg-neutral-600',\n light: 'border-white bg-white text-white hover:bg-neutral-500',\n dark: 'border-neutral-800 bg-neutral-800 text-neutral-800 hover:bg-neutral-900',\n text: 'border-text bg-text text-text hover:opacity-80',\n custom: '',\n },\n variant: {\n default: 'rounded-lg text-text-opposite',\n none: 'border-none bg-opacity-0 text-inherit hover:bg-opacity-0',\n outline: 'rounded-lg border-[1.3px] bg-opacity-0 hover:bg-opacity-30',\n hoverable:\n 'rounded-lg border-none bg-opacity-0 transition hover:bg-opacity-10',\n },\n size: {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-0.5 text-xs',\n lg: 'px-3 py-1 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n color: 'primary',\n size: 'md',\n },\n }\n);\n\n/**\n * Badge component props interface\n * @description Comprehensive props for the Badge component with accessibility and interactive features\n */\nexport type BadgeProps = HTMLAttributes<HTMLElement> & {\n /** The content to display inside the badge */\n children?: React.ReactNode;\n /** Color theme variant */\n color?: BadgeColor | `${BadgeColor}`;\n /** Visual style variant */\n variant?: BadgeVariant | `${BadgeVariant}`;\n /** Size of the badge */\n size?: BadgeSize | `${BadgeSize}`;\n /** Whether the badge is clickable */\n clickable?: boolean;\n /** Whether the badge is dismissible (shows close button) */\n dismissible?: boolean;\n /** Click handler for the badge */\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n /** Click handler for the dismiss button */\n onDismiss?: () => void;\n /** ARIA label for accessibility */\n 'aria-label'?: string;\n /** Badge role for accessibility (default: 'status') */\n role?: 'status' | 'button' | 'generic';\n /** Whether badge should be focusable */\n tabIndex?: number;\n};\n\n/**\n * Utility type for badge variant props\n */\nexport type BadgeVariantProps = VariantProps<typeof badgeVariants>;\n\n/**\n * Badge component for displaying status indicators, labels, and notifications\n *\n * @description A flexible badge component that supports multiple visual styles, colors, and interactive features.\n * It maintains accessibility standards and provides comprehensive customization options.\n *\n * @example\n * ```tsx\n * // Basic badge\n * <Badge>New</Badge>\n *\n * // Colored badge\n * <Badge color=\"error\">Error</Badge>\n *\n * // Clickable badge\n * <Badge clickable onClick={() => console.log('clicked')}>\n * Clickable\n * </Badge>\n *\n * // Dismissible badge\n * <Badge dismissible onDismiss={() => console.log('dismissed')}>\n * Dismissible\n * </Badge>\n * ```\n */\nexport const Badge: React.FC<BadgeProps> = ({\n className,\n variant = 'default',\n color = 'primary',\n size = 'md',\n children,\n clickable = false,\n dismissible = false,\n onClick,\n onDismiss,\n role,\n tabIndex,\n 'aria-label': ariaLabel,\n ...props\n}) => {\n const Component = clickable ? 'button' : 'span';\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (clickable && onClick && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n onClick(event as any);\n }\n };\n\n const handleDismiss = (event: React.MouseEvent) => {\n event.stopPropagation();\n onDismiss?.();\n };\n\n return (\n <Component\n className={cn(\n badgeVariants({ variant, color, size }),\n clickable &&\n 'cursor-pointer hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2',\n dismissible && 'pr-1',\n className\n )}\n onClick={clickable ? onClick : undefined}\n onKeyDown={clickable ? handleKeyDown : undefined}\n role={role || (clickable ? 'button' : 'status')}\n tabIndex={clickable ? (tabIndex ?? 0) : tabIndex}\n aria-label={ariaLabel || (clickable ? `${children} button` : undefined)}\n {...props}\n >\n {children}\n {dismissible && (\n <button\n type=\"button\"\n className=\"ml-1 inline-flex h-4 w-4 items-center justify-center rounded-full hover:bg-black/10 focus:outline-none focus:ring-1 focus:ring-offset-1\"\n onClick={handleDismiss}\n aria-label={`Remove ${children} badge`}\n >\n <svg\n className=\"size-3\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-label=\"Remove badge\"\n >\n <title>Remove badge</title>\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n )}\n </Component>\n );\n};\n"],"mappings":";;;;;;;;;AAmCA,MAAa,gBAAgB,IAC3B,0KACA;CACE,UAAU;EACR,OAAO;GACL,SAAS;GACT,WACE;GACF,SAAS;GACT,OAAO;GACP,SAAS;GACT,OAAO;GACP,MAAM;GACN,MAAM;GACN,QAAQ;GACT;EACD,SAAS;GACP,SAAS;GACT,MAAM;GACN,SAAS;GACT,WACE;GACH;EACD,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL;EACF;CACD,iBAAiB;EACf,SAAS;EACT,OAAO;EACP,MAAM;EACP;CACF,CACF;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DD,MAAa,SAA+B,EAC1C,WACA,UAAU,WACV,QAAQ,WACR,OAAO,MACP,UACA,YAAY,OACZ,cAAc,OACd,SACA,WACA,MACA,UACA,cAAc,WACd,GAAG,YACC;CACJ,MAAM,YAAY,YAAY,WAAW;CAEzC,MAAM,iBAAiB,UAA4C;AACjE,MAAI,aAAa,YAAY,MAAM,QAAQ,WAAW,MAAM,QAAQ,MAAM;AACxE,SAAM,gBAAgB;AACtB,WAAQ,MAAa;;;CAIzB,MAAM,iBAAiB,UAA4B;AACjD,QAAM,iBAAiB;AACvB,eAAa;;AAGf,QACE,qBAAC,WAAD;EACE,WAAW,GACT,cAAc;GAAE;GAAS;GAAO;GAAM,CAAC,EACvC,aACE,oFACF,eAAe,QACf,UACD;EACD,SAAS,YAAY,UAAU;EAC/B,WAAW,YAAY,gBAAgB;EACvC,MAAM,SAAS,YAAY,WAAW;EACtC,UAAU,YAAa,YAAY,IAAK;EACxC,cAAY,cAAc,YAAY,GAAG,SAAS,WAAW;EAC7D,GAAI;YAbN,CAeG,UACA,eACC,oBAAC,UAAD;GACE,MAAK;GACL,WAAU;GACV,SAAS;GACT,cAAY,UAAU,SAAS;aAE/B,qBAAC,OAAD;IACE,WAAU;IACV,SAAQ;IACR,MAAK;IACL,cAAW;cAJb,CAME,oBAAC,SAAD,YAAO,gBAAoB,GAC3B,oBAAC,QAAD;KACE,UAAS;KACT,GAAE;KACF,UAAS;KACT,EACE;;GACC,EAED"}
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumb.content.mjs","names":[],"sources":["../../../../src/components/Breadcrumb/breadcrumb.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const breadCrumbContent = {\n key: 'breadcrumb',\n content: {\n linkLabel: t({\n en: 'Go to',\n fr: 'Aller à',\n es: 'Ir a',\n 'en-GB': 'Go to',\n de: 'Gehe zu',\n ja: 'に移動',\n ko: '로 이동',\n zh: '转到',\n it: 'Vai a',\n pt: 'Ir para',\n hi: 'कर जाएं',\n ar: 'اذهب إلى',\n ru: 'Перейти на',\n tr: 'Git',\n pl: 'Przejdź do',\n id: 'Pergi ke',\n vi: 'Đi tới',\n uk: 'Перейти до',\n }),\n },\n title: 'Breadcrumb navigation',\n description:\n \"Content declaration for the breadcrumb component's navigation label, used to guide users through hierarchical structures within the interface.\",\n tags: ['navigation', 'breadcrumb'],\n} satisfies Dictionary;\n\nexport default breadCrumbContent;\n"],"mappings":";;;AAEA,MAAa,oBAAoB;CAC/B,KAAK;CACL,SAAS,EACP,WAAW,EAAE;EACX,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,SAAS;EACT,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;CACN,CAAC,EACH;CACA,OAAO;CACP,aACE;CACF,MAAM,CAAC,cAAc,YAAY;AACnC"}
1
+ {"version":3,"file":"breadcrumb.content.mjs","names":[],"sources":["../../../../src/components/Breadcrumb/breadcrumb.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const breadCrumbContent = {\n key: 'breadcrumb',\n content: {\n linkLabel: t({\n en: 'Go to',\n fr: 'Aller à',\n es: 'Ir a',\n 'en-GB': 'Go to',\n de: 'Gehe zu',\n ja: 'に移動',\n ko: '로 이동',\n zh: '转到',\n it: 'Vai a',\n pt: 'Ir para',\n hi: 'कर जाएं',\n ar: 'اذهب إلى',\n ru: 'Перейти на',\n tr: 'Git',\n pl: 'Przejdź do',\n id: 'Pergi ke',\n vi: 'Đi tới',\n uk: 'Перейти до',\n }),\n },\n title: 'Breadcrumb navigation',\n description:\n \"Content declaration for the breadcrumb component's navigation label, used to guide users through hierarchical structures within the interface.\",\n tags: ['navigation', 'breadcrumb'],\n} satisfies Dictionary;\n\nexport default breadCrumbContent;\n"],"mappings":";;;AAEA,MAAa,oBAAoB;CAC/B,KAAK;CACL,SAAS,EACP,WAAW,EAAE;EACX,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,SAAS;EACT,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,CAAC,EACH;CACD,OAAO;CACP,aACE;CACF,MAAM,CAAC,cAAc,aAAa;CACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/Breadcrumb/index.tsx"],"sourcesContent":["'use client';\n\nimport type { LocalesValues } from '@intlayer/types/module_augmentation';\nimport { cn } from '@utils/cn';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { getIntlayer } from 'intlayer';\nimport { ChevronRightIcon } from 'lucide-react';\nimport { type FC, Fragment, type HTMLAttributes, type ReactNode } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Button, type ButtonProps } from '../Button';\nimport { Link, type LinkColor } from '../Link';\n\n/**\n * Props for LinkLink sub-component that renders breadcrumb items as links\n */\ntype LinkLinkProps = {\n /**\n * Position of the breadcrumb item in the list (1-based index)\n */\n position: number;\n /**\n * Locale for internationalization\n */\n locale?: LocalesValues;\n /**\n * URL to navigate to\n */\n href?: string;\n /**\n * Link color\n */\n color?: LinkColor | `${LinkColor}`;\n /**\n * Click handler\n */\n onClick?: () => void;\n /**\n * Children content\n */\n children?: string;\n /**\n * Additional CSS classes\n */\n className?: string;\n} & Omit<\n HTMLAttributes<HTMLAnchorElement>,\n 'href' | 'onClick' | 'color' | 'children' | 'className'\n>;\n\n/**\n * Maps LinkColor to corresponding Tailwind text color classes\n */\nconst getColorClass = (color?: LinkColor | `${LinkColor}`): string => {\n if (!color) return '';\n\n const colorMap: Record<LinkColor, string> = {\n primary: 'text-primary',\n secondary: 'text-secondary',\n neutral: 'text-neutral',\n light: 'text-white',\n dark: 'text-neutral-800',\n text: 'text-text',\n 'text-inverse': 'text-text-opposite',\n error: 'text-error',\n success: 'text-success',\n custom: '',\n };\n\n return colorMap[color as LinkColor] || '';\n};\n\n/**\n * Breadcrumb variant styles using class-variance-authority\n */\nconst breadcrumbVariants = cva('flex flex-row flex-wrap items-center text-sm', {\n variants: {\n size: {\n small: 'gap-1 text-xs',\n medium: 'gap-2 text-sm',\n large: 'gap-3 text-base',\n },\n spacing: {\n compact: 'gap-1',\n normal: 'gap-2',\n loose: 'gap-4',\n },\n },\n defaultVariants: {\n size: 'medium',\n spacing: 'normal',\n },\n});\n\n/**\n * LinkLink sub-component for breadcrumb items that navigate to other pages\n */\nconst LinkLink: FC<LinkLinkProps> = ({\n href,\n lang,\n children,\n onClick,\n color,\n position,\n locale,\n className,\n ...props\n}) => {\n const content = getIntlayer('breadcrumb');\n const linkLabel = content.linkLabel;\n\n return (\n <>\n <Link\n href={href}\n locale={locale}\n color={color}\n onClick={onClick}\n itemProp=\"item\"\n isExternalLink={false}\n itemScope\n itemType=\"https://schema.org/WebPage\"\n {...props}\n label={`${linkLabel} ${children}`}\n itemID={href}\n size=\"sm\"\n >\n <span itemProp=\"name\">{children}</span>\n </Link>\n <meta itemProp=\"position\" content={position.toString()} />\n </>\n );\n};\n\n/**\n * Props for ButtonLink sub-component that renders breadcrumb items as interactive buttons\n */\ntype ButtonButtonProps = {\n /**\n * Text content for the breadcrumb button\n */\n children: string;\n /**\n * Position of the breadcrumb item in the list (1-based index)\n */\n position: number;\n} & Omit<ButtonProps, 'children' | 'label'>;\n\n/**\n * ButtonLink sub-component for breadcrumb items with click handlers\n */\nconst ButtonLink: FC<ButtonButtonProps> = ({\n children: text,\n onClick,\n color,\n position,\n className,\n ...props\n}) => {\n const { linkLabel } = useIntlayer('breadcrumb');\n\n return (\n <>\n <Button\n onClick={onClick}\n variant=\"link\"\n label={`${linkLabel} ${text}`}\n color={color}\n itemProp=\"item\"\n {...props}\n >\n <span itemProp=\"name\">{text}</span>\n </Button>\n <meta itemProp=\"position\" content={position.toString()} />\n </>\n );\n};\n\n/**\n * Props for Span sub-component that renders static breadcrumb text\n */\ntype SpanProps = {\n /**\n * Text content for the static breadcrumb item\n */\n children: string;\n /**\n * Position of the breadcrumb item in the list (1-based index)\n */\n position: number;\n} & HTMLAttributes<HTMLSpanElement>;\n\n/**\n * Span sub-component for static breadcrumb text items\n */\nconst Span: FC<SpanProps> = ({ children, position, className, ...props }) => (\n <span\n itemProp=\"item\"\n className={cn(\n 'inline-flex items-center',\n 'font-medium text-neutral-700',\n 'transition-colors duration-200',\n className\n )}\n >\n <span itemProp=\"name\" {...props}>\n {children}\n </span>\n <meta itemProp=\"position\" content={position.toString()} />\n </span>\n);\n\n/**\n * Detailed breadcrumb link configuration with optional href or onClick\n */\ntype DetailedBreadcrumbLink = {\n /**\n * URL to navigate to when the breadcrumb item is clicked\n */\n href?: string;\n /**\n * Text content to display for this breadcrumb item\n */\n text: string;\n /**\n * Custom click handler function for interactive breadcrumb items\n */\n onClick?: () => void;\n};\n\n/**\n * Union type representing different breadcrumb item configurations:\n * - string: Simple text breadcrumb item\n * - DetailedBreadcrumbLink: Object with href, text, and/or onClick properties\n */\nexport type BreadcrumbLink = string | DetailedBreadcrumbLink;\n\nexport type BreadcrumbProps = {\n /**\n * Array of breadcrumb items\n */\n links: BreadcrumbLink[];\n /**\n * Color scheme for breadcrumb links\n * @default \"text\"\n */\n color?: LinkColor | `${LinkColor}`;\n /**\n * Locale for internationalization\n */\n locale?: LocalesValues;\n /**\n * Element type for ARIA current attribute\n * @default 'page'\n */\n elementType?: 'page' | 'location';\n /**\n * Custom separator between breadcrumb items\n * @default ChevronRightIcon\n */\n separator?: ReactNode;\n /**\n * ARIA label for breadcrumb navigation\n * @default 'breadcrumb'\n */\n ariaLabel?: string;\n /**\n * Whether to include structured data markup\n * @default true\n */\n includeStructuredData?: boolean;\n /**\n * Maximum number of breadcrumb items to show before truncation\n */\n maxItems?: number;\n} & VariantProps<typeof breadcrumbVariants> &\n HTMLAttributes<HTMLOListElement>;\n\n/**\n * Breadcrumb component providing navigational context with accessibility features\n *\n * Features:\n * - Supports links, buttons, and static text elements\n * - Full keyboard navigation support\n * - ARIA attributes for screen readers\n * - Schema.org structured data for SEO\n * - Customizable separators and styling\n * - Internationalization support\n * - Responsive design variants\n *\n * @example\n * ```tsx\n * <Breadcrumb\n * links={[\n * 'Home',\n * { href: '/products', text: 'Products' },\n * { onClick: handleCategory, text: 'Electronics' },\n * 'Smartphones'\n * ]}\n * size=\"medium\"\n * ariaLabel=\"Product navigation\"\n * />\n * ```\n */\nexport const Breadcrumb: FC<BreadcrumbProps> = ({\n links,\n className,\n color = 'text',\n locale,\n elementType = 'page',\n separator = <ChevronRightIcon size={10} />,\n ariaLabel = 'breadcrumb',\n includeStructuredData = true,\n maxItems,\n size,\n spacing,\n ...props\n}) => {\n const displayLinks =\n maxItems && links.length > maxItems\n ? [...links.slice(0, 1), '...', ...links.slice(-(maxItems - 2))]\n : links;\n\n return (\n <nav aria-label={ariaLabel}>\n <ol\n className={cn(breadcrumbVariants({ size, spacing }), className)}\n {...(includeStructuredData && {\n itemScope: true,\n itemType: 'http://schema.org/BreadcrumbList',\n })}\n {...props}\n >\n {displayLinks.map((link, index) => {\n const isLastLink = index === displayLinks.length - 1;\n const isLink =\n typeof link === 'object' && typeof link.href === 'string';\n const isButton =\n typeof link === 'object' && typeof link.onClick === 'function';\n const isActive = index === displayLinks.length - 1;\n const ariaCurrent = isActive ? elementType : undefined;\n const isTruncated = link === '...';\n\n const text = (link as DetailedBreadcrumbLink).text ?? link;\n\n const separatorColorClass = getColorClass(color);\n\n if (isTruncated) {\n return (\n <Fragment key={`truncated-${text}`}>\n <li className=\"flex items-center\" aria-hidden=\"true\">\n <span className=\"text-neutral-500\">…</span>\n </li>\n {!isLastLink && (\n <li aria-hidden=\"true\" className=\"flex items-center\">\n <span className={cn(separatorColorClass)}>{separator}</span>\n </li>\n )}\n </Fragment>\n );\n }\n\n let section = (\n <Span\n key={text}\n position={index + 1}\n aria-current={ariaCurrent}\n className={cn(\n 'transition-colors duration-200',\n isActive && 'text-neutral-900'\n )}\n >\n {text}\n </Span>\n );\n\n if (isLink) {\n section = (\n <LinkLink\n key={text}\n href={link.href!}\n color={color}\n position={index + 1}\n locale={locale}\n aria-current={ariaCurrent}\n className={cn(isActive && 'cursor-default text-neutral-900')}\n >\n {text}\n </LinkLink>\n );\n } else if (isButton) {\n section = (\n <ButtonLink\n key={text}\n onClick={link.onClick!}\n color={color}\n position={index + 1}\n aria-current={ariaCurrent}\n className={cn(isActive && 'cursor-default text-neutral-900')}\n >\n {text}\n </ButtonLink>\n );\n }\n\n const listElement = (\n <li\n {...(includeStructuredData && {\n itemProp: 'itemListElement',\n itemScope: true,\n itemType: 'https://schema.org/ListItem',\n })}\n key={text}\n className=\"flex items-center\"\n >\n {section}\n </li>\n );\n\n if (isLastLink) {\n return listElement;\n }\n\n return (\n <Fragment key={text}>\n {listElement}\n <li aria-hidden=\"true\" className=\"flex items-center\">\n <span className={cn(separatorColorClass)}>{separator}</span>\n </li>\n </Fragment>\n );\n })}\n </ol>\n </nav>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/Breadcrumb/index.tsx"],"sourcesContent":["'use client';\n\nimport type { LocalesValues } from '@intlayer/types/module_augmentation';\nimport { cn } from '@utils/cn';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { getIntlayer } from 'intlayer';\nimport { ChevronRightIcon } from 'lucide-react';\nimport { type FC, Fragment, type HTMLAttributes, type ReactNode } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Button, type ButtonProps } from '../Button';\nimport { Link, type LinkColor } from '../Link';\n\n/**\n * Props for LinkLink sub-component that renders breadcrumb items as links\n */\ntype LinkLinkProps = {\n /**\n * Position of the breadcrumb item in the list (1-based index)\n */\n position: number;\n /**\n * Locale for internationalization\n */\n locale?: LocalesValues;\n /**\n * URL to navigate to\n */\n href?: string;\n /**\n * Link color\n */\n color?: LinkColor | `${LinkColor}`;\n /**\n * Click handler\n */\n onClick?: () => void;\n /**\n * Children content\n */\n children?: string;\n /**\n * Additional CSS classes\n */\n className?: string;\n} & Omit<\n HTMLAttributes<HTMLAnchorElement>,\n 'href' | 'onClick' | 'color' | 'children' | 'className'\n>;\n\n/**\n * Maps LinkColor to corresponding Tailwind text color classes\n */\nconst getColorClass = (color?: LinkColor | `${LinkColor}`): string => {\n if (!color) return '';\n\n const colorMap: Record<LinkColor, string> = {\n primary: 'text-primary',\n secondary: 'text-secondary',\n neutral: 'text-neutral',\n light: 'text-white',\n dark: 'text-neutral-800',\n text: 'text-text',\n 'text-inverse': 'text-text-opposite',\n error: 'text-error',\n success: 'text-success',\n custom: '',\n };\n\n return colorMap[color as LinkColor] || '';\n};\n\n/**\n * Breadcrumb variant styles using class-variance-authority\n */\nconst breadcrumbVariants = cva('flex flex-row flex-wrap items-center text-sm', {\n variants: {\n size: {\n small: 'gap-1 text-xs',\n medium: 'gap-2 text-sm',\n large: 'gap-3 text-base',\n },\n spacing: {\n compact: 'gap-1',\n normal: 'gap-2',\n loose: 'gap-4',\n },\n },\n defaultVariants: {\n size: 'medium',\n spacing: 'normal',\n },\n});\n\n/**\n * LinkLink sub-component for breadcrumb items that navigate to other pages\n */\nconst LinkLink: FC<LinkLinkProps> = ({\n href,\n lang,\n children,\n onClick,\n color,\n position,\n locale,\n className,\n ...props\n}) => {\n const content = getIntlayer('breadcrumb');\n const linkLabel = content.linkLabel;\n\n return (\n <>\n <Link\n href={href}\n locale={locale}\n color={color}\n onClick={onClick}\n itemProp=\"item\"\n isExternalLink={false}\n itemScope\n itemType=\"https://schema.org/WebPage\"\n {...props}\n label={`${linkLabel} ${children}`}\n itemID={href}\n size=\"sm\"\n >\n <span itemProp=\"name\">{children}</span>\n </Link>\n <meta itemProp=\"position\" content={position.toString()} />\n </>\n );\n};\n\n/**\n * Props for ButtonLink sub-component that renders breadcrumb items as interactive buttons\n */\ntype ButtonButtonProps = {\n /**\n * Text content for the breadcrumb button\n */\n children: string;\n /**\n * Position of the breadcrumb item in the list (1-based index)\n */\n position: number;\n} & Omit<ButtonProps, 'children' | 'label'>;\n\n/**\n * ButtonLink sub-component for breadcrumb items with click handlers\n */\nconst ButtonLink: FC<ButtonButtonProps> = ({\n children: text,\n onClick,\n color,\n position,\n className,\n ...props\n}) => {\n const { linkLabel } = useIntlayer('breadcrumb');\n\n return (\n <>\n <Button\n onClick={onClick}\n variant=\"link\"\n label={`${linkLabel} ${text}`}\n color={color}\n itemProp=\"item\"\n {...props}\n >\n <span itemProp=\"name\">{text}</span>\n </Button>\n <meta itemProp=\"position\" content={position.toString()} />\n </>\n );\n};\n\n/**\n * Props for Span sub-component that renders static breadcrumb text\n */\ntype SpanProps = {\n /**\n * Text content for the static breadcrumb item\n */\n children: string;\n /**\n * Position of the breadcrumb item in the list (1-based index)\n */\n position: number;\n} & HTMLAttributes<HTMLSpanElement>;\n\n/**\n * Span sub-component for static breadcrumb text items\n */\nconst Span: FC<SpanProps> = ({ children, position, className, ...props }) => (\n <span\n itemProp=\"item\"\n className={cn(\n 'inline-flex items-center',\n 'font-medium text-neutral-700',\n 'transition-colors duration-200',\n className\n )}\n >\n <span itemProp=\"name\" {...props}>\n {children}\n </span>\n <meta itemProp=\"position\" content={position.toString()} />\n </span>\n);\n\n/**\n * Detailed breadcrumb link configuration with optional href or onClick\n */\ntype DetailedBreadcrumbLink = {\n /**\n * URL to navigate to when the breadcrumb item is clicked\n */\n href?: string;\n /**\n * Text content to display for this breadcrumb item\n */\n text: string;\n /**\n * Custom click handler function for interactive breadcrumb items\n */\n onClick?: () => void;\n};\n\n/**\n * Union type representing different breadcrumb item configurations:\n * - string: Simple text breadcrumb item\n * - DetailedBreadcrumbLink: Object with href, text, and/or onClick properties\n */\nexport type BreadcrumbLink = string | DetailedBreadcrumbLink;\n\nexport type BreadcrumbProps = {\n /**\n * Array of breadcrumb items\n */\n links: BreadcrumbLink[];\n /**\n * Color scheme for breadcrumb links\n * @default \"text\"\n */\n color?: LinkColor | `${LinkColor}`;\n /**\n * Locale for internationalization\n */\n locale?: LocalesValues;\n /**\n * Element type for ARIA current attribute\n * @default 'page'\n */\n elementType?: 'page' | 'location';\n /**\n * Custom separator between breadcrumb items\n * @default ChevronRightIcon\n */\n separator?: ReactNode;\n /**\n * ARIA label for breadcrumb navigation\n * @default 'breadcrumb'\n */\n ariaLabel?: string;\n /**\n * Whether to include structured data markup\n * @default true\n */\n includeStructuredData?: boolean;\n /**\n * Maximum number of breadcrumb items to show before truncation\n */\n maxItems?: number;\n} & VariantProps<typeof breadcrumbVariants> &\n HTMLAttributes<HTMLOListElement>;\n\n/**\n * Breadcrumb component providing navigational context with accessibility features\n *\n * Features:\n * - Supports links, buttons, and static text elements\n * - Full keyboard navigation support\n * - ARIA attributes for screen readers\n * - Schema.org structured data for SEO\n * - Customizable separators and styling\n * - Internationalization support\n * - Responsive design variants\n *\n * @example\n * ```tsx\n * <Breadcrumb\n * links={[\n * 'Home',\n * { href: '/products', text: 'Products' },\n * { onClick: handleCategory, text: 'Electronics' },\n * 'Smartphones'\n * ]}\n * size=\"medium\"\n * ariaLabel=\"Product navigation\"\n * />\n * ```\n */\nexport const Breadcrumb: FC<BreadcrumbProps> = ({\n links,\n className,\n color = 'text',\n locale,\n elementType = 'page',\n separator = <ChevronRightIcon size={10} />,\n ariaLabel = 'breadcrumb',\n includeStructuredData = true,\n maxItems,\n size,\n spacing,\n ...props\n}) => {\n const displayLinks =\n maxItems && links.length > maxItems\n ? [...links.slice(0, 1), '...', ...links.slice(-(maxItems - 2))]\n : links;\n\n return (\n <nav aria-label={ariaLabel}>\n <ol\n className={cn(breadcrumbVariants({ size, spacing }), className)}\n {...(includeStructuredData && {\n itemScope: true,\n itemType: 'http://schema.org/BreadcrumbList',\n })}\n {...props}\n >\n {displayLinks.map((link, index) => {\n const isLastLink = index === displayLinks.length - 1;\n const isLink =\n typeof link === 'object' && typeof link.href === 'string';\n const isButton =\n typeof link === 'object' && typeof link.onClick === 'function';\n const isActive = index === displayLinks.length - 1;\n const ariaCurrent = isActive ? elementType : undefined;\n const isTruncated = link === '...';\n\n const text = (link as DetailedBreadcrumbLink).text ?? link;\n\n const separatorColorClass = getColorClass(color);\n\n if (isTruncated) {\n return (\n <Fragment key={`truncated-${text}`}>\n <li className=\"flex items-center\" aria-hidden=\"true\">\n <span className=\"text-neutral-500\">…</span>\n </li>\n {!isLastLink && (\n <li aria-hidden=\"true\" className=\"flex items-center\">\n <span className={cn(separatorColorClass)}>{separator}</span>\n </li>\n )}\n </Fragment>\n );\n }\n\n let section = (\n <Span\n key={text}\n position={index + 1}\n aria-current={ariaCurrent}\n className={cn(\n 'transition-colors duration-200',\n isActive && 'text-neutral-900'\n )}\n >\n {text}\n </Span>\n );\n\n if (isLink) {\n section = (\n <LinkLink\n key={text}\n href={link.href!}\n color={color}\n position={index + 1}\n locale={locale}\n aria-current={ariaCurrent}\n className={cn(isActive && 'cursor-default text-neutral-900')}\n >\n {text}\n </LinkLink>\n );\n } else if (isButton) {\n section = (\n <ButtonLink\n key={text}\n onClick={link.onClick!}\n color={color}\n position={index + 1}\n aria-current={ariaCurrent}\n className={cn(isActive && 'cursor-default text-neutral-900')}\n >\n {text}\n </ButtonLink>\n );\n }\n\n const listElement = (\n <li\n {...(includeStructuredData && {\n itemProp: 'itemListElement',\n itemScope: true,\n itemType: 'https://schema.org/ListItem',\n })}\n key={text}\n className=\"flex items-center\"\n >\n {section}\n </li>\n );\n\n if (isLastLink) {\n return listElement;\n }\n\n return (\n <Fragment key={text}>\n {listElement}\n <li aria-hidden=\"true\" className=\"flex items-center\">\n <span className={cn(separatorColorClass)}>{separator}</span>\n </li>\n </Fragment>\n );\n })}\n </ol>\n </nav>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAoDA,MAAM,iBAAiB,UAA+C;AACpE,KAAI,CAAC,MAAO,QAAO;AAenB,QAAO;EAZL,SAAS;EACT,WAAW;EACX,SAAS;EACT,OAAO;EACP,MAAM;EACN,MAAM;EACN,gBAAgB;EAChB,OAAO;EACP,SAAS;EACT,QAAQ;EAGK,CAAC,UAAuB;;;;;AAMzC,MAAM,qBAAqB,IAAI,gDAAgD;CAC7E,UAAU;EACR,MAAM;GACJ,OAAO;GACP,QAAQ;GACR,OAAO;GACR;EACD,SAAS;GACP,SAAS;GACT,QAAQ;GACR,OAAO;GACR;EACF;CACD,iBAAiB;EACf,MAAM;EACN,SAAS;EACV;CACF,CAAC;;;;AAKF,MAAM,YAA+B,EACnC,MACA,MACA,UACA,SACA,OACA,UACA,QACA,WACA,GAAG,YACC;CAEJ,MAAM,YADU,YAAY,aACH,CAAC;AAE1B,QACE,8CACE,oBAAC,MAAD;EACQ;EACE;EACD;EACE;EACT,UAAS;EACT,gBAAgB;EAChB;EACA,UAAS;EACT,GAAI;EACJ,OAAO,GAAG,UAAU,GAAG;EACvB,QAAQ;EACR,MAAK;YAEL,oBAAC,QAAD;GAAM,UAAS;GAAQ;GAAgB;EAClC,GACP,oBAAC,QAAD;EAAM,UAAS;EAAW,SAAS,SAAS,UAAU;EAAI,EACzD;;;;;AAqBP,MAAM,cAAqC,EACzC,UAAU,MACV,SACA,OACA,UACA,WACA,GAAG,YACC;CACJ,MAAM,EAAE,cAAc,YAAY,aAAa;AAE/C,QACE,8CACE,oBAAC,QAAD;EACW;EACT,SAAQ;EACR,OAAO,GAAG,UAAU,GAAG;EAChB;EACP,UAAS;EACT,GAAI;YAEJ,oBAAC,QAAD;GAAM,UAAS;aAAQ;GAAY;EAC5B,GACT,oBAAC,QAAD;EAAM,UAAS;EAAW,SAAS,SAAS,UAAU;EAAI,EACzD;;;;;AAqBP,MAAM,QAAuB,EAAE,UAAU,UAAU,WAAW,GAAG,YAC/D,qBAAC,QAAD;CACE,UAAS;CACT,WAAW,GACT,4BACA,gCACA,kCACA,UACD;WAPH,CASE,oBAAC,QAAD;EAAM,UAAS;EAAO,GAAI;EACvB;EACI,GACP,oBAAC,QAAD;EAAM,UAAS;EAAW,SAAS,SAAS,UAAU;EAAI,EACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+FT,MAAa,cAAmC,EAC9C,OACA,WACA,QAAQ,QACR,QACA,cAAc,QACd,YAAY,oBAAC,kBAAD,EAAkB,MAAM,IAAM,GAC1C,YAAY,cACZ,wBAAwB,MACxB,UACA,MACA,SACA,GAAG,YACC;CACJ,MAAM,eACJ,YAAY,MAAM,SAAS,WACvB;EAAC,GAAG,MAAM,MAAM,GAAG,EAAE;EAAE;EAAO,GAAG,MAAM,MAAM,EAAE,WAAW,GAAG;EAAC,GAC9D;AAEN,QACE,oBAAC,OAAD;EAAK,cAAY;YACf,oBAAC,MAAD;GACE,WAAW,GAAG,mBAAmB;IAAE;IAAM;IAAS,CAAC,EAAE,UAAU;GAC/D,GAAK,yBAAyB;IAC5B,WAAW;IACX,UAAU;IACX;GACD,GAAI;aAEH,aAAa,KAAK,MAAM,UAAU;IACjC,MAAM,aAAa,UAAU,aAAa,SAAS;IACnD,MAAM,SACJ,OAAO,SAAS,YAAY,OAAO,KAAK,SAAS;IACnD,MAAM,WACJ,OAAO,SAAS,YAAY,OAAO,KAAK,YAAY;IACtD,MAAM,WAAW,UAAU,aAAa,SAAS;IACjD,MAAM,cAAc,WAAW,cAAc;IAC7C,MAAM,cAAc,SAAS;IAE7B,MAAM,OAAQ,KAAgC,QAAQ;IAEtD,MAAM,sBAAsB,cAAc,MAAM;AAEhD,QAAI,YACF,QACE,qBAAC,UAAD,aACE,oBAAC,MAAD;KAAI,WAAU;KAAoB,eAAY;eAC5C,oBAAC,QAAD;MAAM,WAAU;gBAAmB;MAAQ;KACxC,GACJ,CAAC,cACA,oBAAC,MAAD;KAAI,eAAY;KAAO,WAAU;eAC/B,oBAAC,QAAD;MAAM,WAAW,GAAG,oBAAoB;gBAAG;MAAiB;KACzD,EAEE,IATI,aAAa,OASjB;IAIf,IAAI,UACF,oBAAC,MAAD;KAEE,UAAU,QAAQ;KAClB,gBAAc;KACd,WAAW,GACT,kCACA,YAAY,mBACb;eAEA;KACI,EATA,KASA;AAGT,QAAI,OACF,WACE,oBAAC,UAAD;KAEE,MAAM,KAAK;KACJ;KACP,UAAU,QAAQ;KACV;KACR,gBAAc;KACd,WAAW,GAAG,YAAY,kCAAkC;eAE3D;KACQ,EATJ,KASI;aAEJ,SACT,WACE,oBAAC,YAAD;KAEE,SAAS,KAAK;KACP;KACP,UAAU,QAAQ;KAClB,gBAAc;KACd,WAAW,GAAG,YAAY,kCAAkC;eAE3D;KACU,EARN,KAQM;IAIjB,MAAM,cACJ,8BAAC,MAAD;KACE,GAAK,yBAAyB;MAC5B,UAAU;MACV,WAAW;MACX,UAAU;MACX;KACD,KAAK;KACL,WAAU;KAGP,EADF,QACE;AAGP,QAAI,WACF,QAAO;AAGT,WACE,qBAAC,UAAD,aACG,aACD,oBAAC,MAAD;KAAI,eAAY;KAAO,WAAU;eAC/B,oBAAC,QAAD;MAAM,WAAW,GAAG,oBAAoB;gBAAG;MAAiB;KACzD,EACI,IALI,KAKJ;KAEb;GACC;EACD"}