@intlayer/design-system 8.5.2 → 8.6.1

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 (235) hide show
  1. package/dist/esm/{utils → components/Avatar}/image.mjs +1 -1
  2. package/dist/esm/components/Avatar/image.mjs.map +1 -0
  3. package/dist/esm/components/Browser/Browser.mjs +1 -2
  4. package/dist/esm/components/Browser/Browser.mjs.map +1 -1
  5. package/dist/esm/components/Carousel/index.mjs +1 -3
  6. package/dist/esm/components/Carousel/index.mjs.map +1 -1
  7. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +1 -1
  8. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
  9. package/dist/esm/{utils → components/DictionaryFieldEditor/ContentEditorView}/object.mjs +1 -1
  10. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/object.mjs.map +1 -0
  11. package/dist/esm/components/Form/layout/FormLabelLayout.mjs +2 -2
  12. package/dist/esm/components/Form/layout/FormLabelLayout.mjs.map +1 -1
  13. package/dist/esm/components/IDE/CodeBlockShiki.mjs +12 -0
  14. package/dist/esm/components/IDE/CodeBlockShiki.mjs.map +1 -1
  15. package/dist/esm/components/SocialNetworks/BitbucketLogo.mjs +3 -0
  16. package/dist/esm/components/SocialNetworks/GitHubLogo.mjs +3 -0
  17. package/dist/esm/components/SocialNetworks/GitLabLogo.mjs +3 -0
  18. package/dist/esm/components/SocialNetworks/GoogleLogo.mjs +3 -0
  19. package/dist/esm/components/SocialNetworks/LinkedInLogo.mjs +2 -32
  20. package/dist/esm/components/SocialNetworks/index.mjs +6 -2
  21. package/dist/esm/components/SocialNetworks/index.mjs.map +1 -1
  22. package/dist/esm/components/TechLogo/TechLogo.mjs +6 -1
  23. package/dist/esm/components/TechLogo/TechLogo.mjs.map +1 -1
  24. package/dist/esm/components/TechLogo/logos/Bitbucket.mjs +44 -0
  25. package/dist/esm/components/TechLogo/logos/Bitbucket.mjs.map +1 -0
  26. package/dist/esm/components/TechLogo/logos/ChatGPT.mjs +3 -6
  27. package/dist/esm/components/TechLogo/logos/ChatGPT.mjs.map +1 -1
  28. package/dist/esm/components/TechLogo/logos/DeepSeek.mjs +8 -10
  29. package/dist/esm/components/TechLogo/logos/DeepSeek.mjs.map +1 -1
  30. package/dist/esm/components/TechLogo/logos/Gemini.mjs +8 -5
  31. package/dist/esm/components/TechLogo/logos/Gemini.mjs.map +1 -1
  32. package/dist/esm/components/TechLogo/logos/GitHub.mjs +16 -0
  33. package/dist/esm/components/TechLogo/logos/GitHub.mjs.map +1 -0
  34. package/dist/esm/components/TechLogo/logos/GitLab.mjs +47 -0
  35. package/dist/esm/components/TechLogo/logos/GitLab.mjs.map +1 -0
  36. package/dist/esm/components/TechLogo/logos/Google.mjs +17 -0
  37. package/dist/esm/components/TechLogo/logos/Google.mjs.map +1 -0
  38. package/dist/esm/components/TechLogo/logos/GoogleAI.mjs +4 -8
  39. package/dist/esm/components/TechLogo/logos/GoogleAI.mjs.map +1 -1
  40. package/dist/esm/components/TechLogo/logos/Grok.mjs +3 -2
  41. package/dist/esm/components/TechLogo/logos/Grok.mjs.map +1 -1
  42. package/dist/esm/components/TechLogo/logos/LinkedIn.mjs +33 -0
  43. package/dist/esm/components/TechLogo/logos/LinkedIn.mjs.map +1 -0
  44. package/dist/esm/components/TechLogo/logos/Mistral.mjs +13 -53
  45. package/dist/esm/components/TechLogo/logos/Mistral.mjs.map +1 -1
  46. package/dist/esm/components/TechLogo/logos/Perplexity.mjs +10 -5
  47. package/dist/esm/components/TechLogo/logos/Perplexity.mjs.map +1 -1
  48. package/dist/esm/components/TechLogo/techLogos.mjs +11 -1
  49. package/dist/esm/components/TechLogo/techLogos.mjs.map +1 -1
  50. package/dist/esm/components/TechLogo/types.mjs +5 -0
  51. package/dist/esm/components/TechLogo/types.mjs.map +1 -1
  52. package/dist/esm/components/Toaster/useToast.mjs +1 -1
  53. package/dist/esm/components/Toaster/useToast.mjs.map +1 -1
  54. package/dist/esm/components/index.mjs +6 -2
  55. package/dist/esm/providers/ReactQueryProvider.mjs +2 -1
  56. package/dist/esm/providers/ReactQueryProvider.mjs.map +1 -1
  57. package/dist/esm/providers/index.mjs +2 -2
  58. package/dist/esm/routes.mjs +245 -0
  59. package/dist/esm/routes.mjs.map +1 -0
  60. package/dist/esm/utils/index.mjs +3 -0
  61. package/dist/types/{utils → components/Avatar}/image.d.ts +1 -1
  62. package/dist/types/components/Avatar/image.d.ts.map +1 -0
  63. package/dist/types/components/Badge/index.d.ts +3 -3
  64. package/dist/types/components/Badge/index.d.ts.map +1 -1
  65. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +2 -2
  66. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts.map +1 -1
  67. package/dist/types/components/Breadcrumb/index.d.ts +2 -2
  68. package/dist/types/components/Breadcrumb/index.d.ts.map +1 -1
  69. package/dist/types/components/Browser/Browser.content.d.ts +9 -9
  70. package/dist/types/components/Browser/Browser.content.d.ts.map +1 -1
  71. package/dist/types/components/Browser/Browser.d.ts +2 -2
  72. package/dist/types/components/Browser/Browser.d.ts.map +1 -1
  73. package/dist/types/components/Button/Button.d.ts +4 -4
  74. package/dist/types/components/Button/Button.d.ts.map +1 -1
  75. package/dist/types/components/Carousel/index.content.d.ts +4 -4
  76. package/dist/types/components/Carousel/index.content.d.ts.map +1 -1
  77. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -2
  78. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
  79. package/dist/types/components/Command/index.d.ts +17 -17
  80. package/dist/types/components/Command/index.d.ts.map +1 -1
  81. package/dist/types/components/Container/index.d.ts +3 -3
  82. package/dist/types/components/Container/index.d.ts.map +1 -1
  83. package/dist/types/components/CopyButton/CopyButton.content.d.ts +2 -2
  84. package/dist/types/components/CopyButton/CopyButton.content.d.ts.map +1 -1
  85. package/dist/types/{utils → components/DictionaryFieldEditor/ContentEditorView}/object.d.ts +1 -1
  86. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/object.d.ts.map +1 -0
  87. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +13 -13
  88. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts.map +1 -1
  89. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +5 -5
  90. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
  91. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +28 -28
  92. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts.map +1 -1
  93. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +17 -17
  94. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts.map +1 -1
  95. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +13 -13
  96. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts.map +1 -1
  97. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +17 -17
  98. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts.map +1 -1
  99. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +5 -5
  100. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts.map +1 -1
  101. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +4 -4
  102. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts.map +1 -1
  103. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +3 -3
  104. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts.map +1 -1
  105. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +16 -16
  106. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
  107. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +2 -2
  108. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts.map +1 -1
  109. package/dist/types/components/Form/FormBase.d.ts +4 -4
  110. package/dist/types/components/Form/FormBase.d.ts.map +1 -1
  111. package/dist/types/components/Form/FormField.d.ts +4 -4
  112. package/dist/types/components/Form/FormField.d.ts.map +1 -1
  113. package/dist/types/components/Form/FormItem.d.ts +2 -2
  114. package/dist/types/components/Form/FormItem.d.ts.map +1 -1
  115. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts +2 -2
  116. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts.map +1 -1
  117. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts +2 -2
  118. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts.map +1 -1
  119. package/dist/types/components/Form/elements/FormElement.d.ts +2 -2
  120. package/dist/types/components/Form/elements/FormElement.d.ts.map +1 -1
  121. package/dist/types/components/Form/elements/MultiselectElement.d.ts +2 -2
  122. package/dist/types/components/Form/elements/MultiselectElement.d.ts.map +1 -1
  123. package/dist/types/components/Form/elements/OTPElement.d.ts +2 -2
  124. package/dist/types/components/Form/elements/OTPElement.d.ts.map +1 -1
  125. package/dist/types/components/Form/elements/SelectElement.d.ts +2 -2
  126. package/dist/types/components/Form/elements/SelectElement.d.ts.map +1 -1
  127. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts +2 -2
  128. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts.map +1 -1
  129. package/dist/types/components/IDE/CodeBlockShiki.d.ts.map +1 -1
  130. package/dist/types/components/IDE/CodeContext.d.ts +2 -2
  131. package/dist/types/components/IDE/CodeContext.d.ts.map +1 -1
  132. package/dist/types/components/IDE/code.content.d.ts +3 -3
  133. package/dist/types/components/IDE/code.content.d.ts.map +1 -1
  134. package/dist/types/components/IDE/copyCode.content.d.ts +3 -3
  135. package/dist/types/components/IDE/copyCode.content.d.ts.map +1 -1
  136. package/dist/types/components/IDE/selectors.content.d.ts +7 -7
  137. package/dist/types/components/IDE/selectors.content.d.ts.map +1 -1
  138. package/dist/types/components/Input/Checkbox.d.ts +3 -3
  139. package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
  140. package/dist/types/components/Input/Input.d.ts +2 -2
  141. package/dist/types/components/Input/Input.d.ts.map +1 -1
  142. package/dist/types/components/Input/OTPInput.d.ts +6 -6
  143. package/dist/types/components/Input/OTPInput.d.ts.map +1 -1
  144. package/dist/types/components/Input/SearchInput.d.ts +2 -2
  145. package/dist/types/components/Input/SearchInput.d.ts.map +1 -1
  146. package/dist/types/components/Link/Link.d.ts +3 -3
  147. package/dist/types/components/Link/Link.d.ts.map +1 -1
  148. package/dist/types/components/Loader/index.content.d.ts +2 -2
  149. package/dist/types/components/Loader/index.content.d.ts.map +1 -1
  150. package/dist/types/components/Loader/spinner.d.ts +2 -2
  151. package/dist/types/components/Loader/spinner.d.ts.map +1 -1
  152. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +9 -9
  153. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts.map +1 -1
  154. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +7 -7
  155. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts.map +1 -1
  156. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts +43 -43
  157. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts.map +1 -1
  158. package/dist/types/components/MaxWidthSmoother/index.d.ts +2 -2
  159. package/dist/types/components/MaxWidthSmoother/index.d.ts.map +1 -1
  160. package/dist/types/components/Navbar/Burger.d.ts +2 -2
  161. package/dist/types/components/Navbar/Burger.d.ts.map +1 -1
  162. package/dist/types/components/Navbar/DesktopNavbar.d.ts +2 -2
  163. package/dist/types/components/Navbar/DesktopNavbar.d.ts.map +1 -1
  164. package/dist/types/components/Navbar/MobileNavbar.d.ts +2 -2
  165. package/dist/types/components/Navbar/MobileNavbar.d.ts.map +1 -1
  166. package/dist/types/components/Navbar/index.d.ts +2 -2
  167. package/dist/types/components/Navbar/index.d.ts.map +1 -1
  168. package/dist/types/components/Pagination/Pagination.d.ts +4 -4
  169. package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
  170. package/dist/types/components/Pagination/pagination.content.d.ts +6 -6
  171. package/dist/types/components/Pagination/pagination.content.d.ts.map +1 -1
  172. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts +3 -3
  173. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts.map +1 -1
  174. package/dist/types/components/Select/Select.d.ts +3 -3
  175. package/dist/types/components/Select/Select.d.ts.map +1 -1
  176. package/dist/types/components/SocialNetworks/BitbucketLogo.d.ts +2 -0
  177. package/dist/types/components/SocialNetworks/GitHubLogo.d.ts +2 -0
  178. package/dist/types/components/SocialNetworks/GitLabLogo.d.ts +2 -0
  179. package/dist/types/components/SocialNetworks/GoogleLogo.d.ts +2 -0
  180. package/dist/types/components/SocialNetworks/LinkedInLogo.d.ts +2 -7
  181. package/dist/types/components/SocialNetworks/index.d.ts +8 -4
  182. package/dist/types/components/SocialNetworks/index.d.ts.map +1 -1
  183. package/dist/types/components/SwitchSelector/index.d.ts +6 -6
  184. package/dist/types/components/SwitchSelector/index.d.ts.map +1 -1
  185. package/dist/types/components/Tab/Tab.d.ts +6 -6
  186. package/dist/types/components/Tab/Tab.d.ts.map +1 -1
  187. package/dist/types/components/Tab/TabContext.d.ts +2 -2
  188. package/dist/types/components/Tab/TabContext.d.ts.map +1 -1
  189. package/dist/types/components/TabSelector/TabSelector.d.ts +5 -5
  190. package/dist/types/components/TabSelector/TabSelector.d.ts.map +1 -1
  191. package/dist/types/components/Table/table.content.d.ts +3 -3
  192. package/dist/types/components/Table/table.content.d.ts.map +1 -1
  193. package/dist/types/components/Tag/index.d.ts +3 -3
  194. package/dist/types/components/Tag/index.d.ts.map +1 -1
  195. package/dist/types/components/TechLogo/TechLogo.d.ts.map +1 -1
  196. package/dist/types/components/TechLogo/logos/Bitbucket.d.ts +7 -0
  197. package/dist/types/components/TechLogo/logos/Bitbucket.d.ts.map +1 -0
  198. package/dist/types/components/TechLogo/logos/GitHub.d.ts +7 -0
  199. package/dist/types/components/TechLogo/logos/GitHub.d.ts.map +1 -0
  200. package/dist/types/components/TechLogo/logos/GitLab.d.ts +7 -0
  201. package/dist/types/components/TechLogo/logos/GitLab.d.ts.map +1 -0
  202. package/dist/types/components/TechLogo/logos/Google.d.ts +7 -0
  203. package/dist/types/components/TechLogo/logos/Google.d.ts.map +1 -0
  204. package/dist/types/components/TechLogo/logos/LinkedIn.d.ts +7 -0
  205. package/dist/types/components/TechLogo/logos/LinkedIn.d.ts.map +1 -0
  206. package/dist/types/components/TechLogo/logos/Lit.d.ts +2 -2
  207. package/dist/types/components/TechLogo/logos/Lit.d.ts.map +1 -1
  208. package/dist/types/components/TechLogo/logos/Vanilla.d.ts +2 -2
  209. package/dist/types/components/TechLogo/logos/Vanilla.d.ts.map +1 -1
  210. package/dist/types/components/TechLogo/techLogos.d.ts +7 -2
  211. package/dist/types/components/TechLogo/types.d.ts +6 -1
  212. package/dist/types/components/TechLogo/types.d.ts.map +1 -1
  213. package/dist/types/components/Terminal/terminal.content.d.ts +3 -3
  214. package/dist/types/components/Terminal/terminal.content.d.ts.map +1 -1
  215. package/dist/types/components/TextArea/ContentEditableTextArea.d.ts +2 -2
  216. package/dist/types/components/Toaster/Toast.d.ts +2 -2
  217. package/dist/types/components/Toaster/Toast.d.ts.map +1 -1
  218. package/dist/types/components/Toaster/Toaster.d.ts +2 -2
  219. package/dist/types/components/Toaster/Toaster.d.ts.map +1 -1
  220. package/dist/types/components/index.d.ts +6 -2
  221. package/dist/types/hooks/useUser/index.d.ts +2 -2
  222. package/dist/types/hooks/useUser/index.d.ts.map +1 -1
  223. package/dist/types/providers/ReactQueryProvider.d.ts +2 -1
  224. package/dist/types/providers/ReactQueryProvider.d.ts.map +1 -1
  225. package/dist/types/providers/index.d.ts +2 -2
  226. package/dist/types/routes.d.ts +244 -0
  227. package/dist/types/routes.d.ts.map +1 -0
  228. package/dist/types/utils/index.d.ts +2 -0
  229. package/package.json +31 -22
  230. package/dist/esm/components/SocialNetworks/LinkedInLogo.mjs.map +0 -1
  231. package/dist/esm/utils/image.mjs.map +0 -1
  232. package/dist/esm/utils/object.mjs.map +0 -1
  233. package/dist/types/components/SocialNetworks/LinkedInLogo.d.ts.map +0 -1
  234. package/dist/types/utils/image.d.ts.map +0 -1
  235. package/dist/types/utils/object.d.ts.map +0 -1
@@ -1,60 +1,20 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
1
+ import { jsx } from "react/jsx-runtime";
2
2
 
3
3
  //#region src/components/TechLogo/logos/Mistral.tsx
4
- const MistralLogo = (props) => /* @__PURE__ */ jsxs("svg", {
5
- ...props,
6
- preserveAspectRatio: "xMidYMid",
7
- viewBox: "0 0 256 233",
4
+ const MistralLogo = (props) => /* @__PURE__ */ jsx("svg", {
5
+ fill: "currentColor",
8
6
  role: "img",
9
7
  "aria-label": "Mistral logo",
10
- children: [
11
- /* @__PURE__ */ jsx("path", { d: "M186.18182 0h46.54545v46.54545h-46.54545z" }),
12
- /* @__PURE__ */ jsx("path", {
13
- fill: "#F7D046",
14
- d: "M209.45454 0h46.54545v46.54545h-46.54545z"
15
- }),
16
- /* @__PURE__ */ jsx("path", { d: "M0 0h46.54545v46.54545H0zM0 46.54545h46.54545V93.0909H0zM0 93.09091h46.54545v46.54545H0zM0 139.63636h46.54545v46.54545H0zM0 186.18182h46.54545v46.54545H0z" }),
17
- /* @__PURE__ */ jsx("path", {
18
- fill: "#F7D046",
19
- d: "M23.27273 0h46.54545v46.54545H23.27273z"
20
- }),
21
- /* @__PURE__ */ jsx("path", {
22
- fill: "#F2A73B",
23
- d: "M209.45454 46.54545h46.54545V93.0909h-46.54545zM23.27273 46.54545h46.54545V93.0909H23.27273z"
24
- }),
25
- /* @__PURE__ */ jsx("path", { d: "M139.63636 46.54545h46.54545V93.0909h-46.54545z" }),
26
- /* @__PURE__ */ jsx("path", {
27
- fill: "#F2A73B",
28
- d: "M162.90909 46.54545h46.54545V93.0909h-46.54545zM69.81818 46.54545h46.54545V93.0909H69.81818z"
29
- }),
30
- /* @__PURE__ */ jsx("path", {
31
- fill: "#EE792F",
32
- d: "M116.36364 93.09091h46.54545v46.54545h-46.54545zM162.90909 93.09091h46.54545v46.54545h-46.54545zM69.81818 93.09091h46.54545v46.54545H69.81818z"
33
- }),
34
- /* @__PURE__ */ jsx("path", { d: "M93.09091 139.63636h46.54545v46.54545H93.09091z" }),
35
- /* @__PURE__ */ jsx("path", {
36
- fill: "#EB5829",
37
- d: "M116.36364 139.63636h46.54545v46.54545h-46.54545"
38
- }),
39
- /* @__PURE__ */ jsx("path", {
40
- fill: "#EE792F",
41
- d: "M209.45454 93.09091h46.54545v46.54545h-46.54545zM23.27273 93.09091h46.54545v46.54545H23.27273z"
42
- }),
43
- /* @__PURE__ */ jsx("path", { d: "M186.18182 139.63636h46.54545v46.54545h-46.54545z" }),
44
- /* @__PURE__ */ jsx("path", {
45
- fill: "#EB5829",
46
- d: "M209.45454 139.63636h46.54545v46.54545h-46.54545z"
47
- }),
48
- /* @__PURE__ */ jsx("path", { d: "M186.18182 186.18182h46.54545v46.54545h-46.54545z" }),
49
- /* @__PURE__ */ jsx("path", {
50
- fill: "#EB5829",
51
- d: "M23.27273 139.63636h46.54545v46.54545H23.27273z"
52
- }),
53
- /* @__PURE__ */ jsx("path", {
54
- fill: "#EA3326",
55
- d: "M209.45454 186.18182h46.54545v46.54545h-46.54545zM23.27273 186.18182h46.54545v46.54545H23.27273z"
56
- })
57
- ]
8
+ fillRule: "evenodd",
9
+ height: "1em",
10
+ viewBox: "0 0 24 24",
11
+ width: "1em",
12
+ xmlns: "http://www.w3.org/2000/svg",
13
+ ...props,
14
+ children: /* @__PURE__ */ jsx("path", {
15
+ clipRule: "evenodd",
16
+ d: "M3.428 3.4h3.429v3.428h3.429v3.429h-.002 3.431V6.828h3.427V3.4h3.43v13.714H24v3.429H13.714v-3.428h-3.428v-3.429h-3.43v3.428h3.43v3.429H0v-3.429h3.428V3.4zm10.286 13.715h3.428v-3.429h-3.427v3.429z"
17
+ })
58
18
  });
59
19
 
60
20
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"Mistral.mjs","names":[],"sources":["../../../../../src/components/TechLogo/logos/Mistral.tsx"],"sourcesContent":["import type { FC, SVGProps } from 'react';\n\nexport const MistralLogo: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n {...props}\n preserveAspectRatio=\"xMidYMid\"\n viewBox=\"0 0 256 233\"\n role=\"img\"\n aria-label=\"Mistral logo\"\n >\n <path d=\"M186.18182 0h46.54545v46.54545h-46.54545z\" />\n <path fill=\"#F7D046\" d=\"M209.45454 0h46.54545v46.54545h-46.54545z\" />\n <path d=\"M0 0h46.54545v46.54545H0zM0 46.54545h46.54545V93.0909H0zM0 93.09091h46.54545v46.54545H0zM0 139.63636h46.54545v46.54545H0zM0 186.18182h46.54545v46.54545H0z\" />\n <path fill=\"#F7D046\" d=\"M23.27273 0h46.54545v46.54545H23.27273z\" />\n <path\n fill=\"#F2A73B\"\n d=\"M209.45454 46.54545h46.54545V93.0909h-46.54545zM23.27273 46.54545h46.54545V93.0909H23.27273z\"\n />\n <path d=\"M139.63636 46.54545h46.54545V93.0909h-46.54545z\" />\n <path\n fill=\"#F2A73B\"\n d=\"M162.90909 46.54545h46.54545V93.0909h-46.54545zM69.81818 46.54545h46.54545V93.0909H69.81818z\"\n />\n <path\n fill=\"#EE792F\"\n d=\"M116.36364 93.09091h46.54545v46.54545h-46.54545zM162.90909 93.09091h46.54545v46.54545h-46.54545zM69.81818 93.09091h46.54545v46.54545H69.81818z\"\n />\n <path d=\"M93.09091 139.63636h46.54545v46.54545H93.09091z\" />\n <path fill=\"#EB5829\" d=\"M116.36364 139.63636h46.54545v46.54545h-46.54545\" />\n <path\n fill=\"#EE792F\"\n d=\"M209.45454 93.09091h46.54545v46.54545h-46.54545zM23.27273 93.09091h46.54545v46.54545H23.27273z\"\n />\n <path d=\"M186.18182 139.63636h46.54545v46.54545h-46.54545z\" />\n <path\n fill=\"#EB5829\"\n d=\"M209.45454 139.63636h46.54545v46.54545h-46.54545z\"\n />\n <path d=\"M186.18182 186.18182h46.54545v46.54545h-46.54545z\" />\n <path fill=\"#EB5829\" d=\"M23.27273 139.63636h46.54545v46.54545H23.27273z\" />\n <path\n fill=\"#EA3326\"\n d=\"M209.45454 186.18182h46.54545v46.54545h-46.54545zM23.27273 186.18182h46.54545v46.54545H23.27273z\"\n />\n </svg>\n);\n"],"mappings":";;;AAEA,MAAa,eAA4C,UACvD,qBAAC,OAAD;CACE,GAAI;CACJ,qBAAoB;CACpB,SAAQ;CACR,MAAK;CACL,cAAW;WALb;EAOE,oBAAC,QAAD,EAAM,GAAE,6CAA8C;EACtD,oBAAC,QAAD;GAAM,MAAK;GAAU,GAAE;GAA8C;EACrE,oBAAC,QAAD,EAAM,GAAE,8JAA+J;EACvK,oBAAC,QAAD;GAAM,MAAK;GAAU,GAAE;GAA4C;EACnE,oBAAC,QAAD;GACE,MAAK;GACL,GAAE;GACF;EACF,oBAAC,QAAD,EAAM,GAAE,mDAAoD;EAC5D,oBAAC,QAAD;GACE,MAAK;GACL,GAAE;GACF;EACF,oBAAC,QAAD;GACE,MAAK;GACL,GAAE;GACF;EACF,oBAAC,QAAD,EAAM,GAAE,mDAAoD;EAC5D,oBAAC,QAAD;GAAM,MAAK;GAAU,GAAE;GAAqD;EAC5E,oBAAC,QAAD;GACE,MAAK;GACL,GAAE;GACF;EACF,oBAAC,QAAD,EAAM,GAAE,qDAAsD;EAC9D,oBAAC,QAAD;GACE,MAAK;GACL,GAAE;GACF;EACF,oBAAC,QAAD,EAAM,GAAE,qDAAsD;EAC9D,oBAAC,QAAD;GAAM,MAAK;GAAU,GAAE;GAAoD;EAC3E,oBAAC,QAAD;GACE,MAAK;GACL,GAAE;GACF;EACE"}
1
+ {"version":3,"file":"Mistral.mjs","names":[],"sources":["../../../../../src/components/TechLogo/logos/Mistral.tsx"],"sourcesContent":["import type { FC, SVGProps } from 'react';\n\nexport const MistralLogo: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n fill=\"currentColor\"\n role=\"img\"\n aria-label=\"Mistral logo\"\n fillRule=\"evenodd\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n clipRule=\"evenodd\"\n d=\"M3.428 3.4h3.429v3.428h3.429v3.429h-.002 3.431V6.828h3.427V3.4h3.43v13.714H24v3.429H13.714v-3.428h-3.428v-3.429h-3.43v3.428h3.43v3.429H0v-3.429h3.428V3.4zm10.286 13.715h3.428v-3.429h-3.427v3.429z\"\n />\n </svg>\n);\n"],"mappings":";;;AAEA,MAAa,eAA4C,UACvD,oBAAC,OAAD;CACE,MAAK;CACL,MAAK;CACL,cAAW;CACX,UAAS;CACT,QAAO;CACP,SAAQ;CACR,OAAM;CACN,OAAM;CACN,GAAI;WAEJ,oBAAC,QAAD;EACE,UAAS;EACT,GAAE;EACF;CACE"}
@@ -2,15 +2,20 @@ import { jsx } from "react/jsx-runtime";
2
2
 
3
3
  //#region src/components/TechLogo/logos/Perplexity.tsx
4
4
  const PerplexityLogo = (props) => /* @__PURE__ */ jsx("svg", {
5
- fill: "currentColor",
5
+ width: "400",
6
6
  role: "img",
7
7
  "aria-label": "Perplexity logo",
8
- height: "1em",
9
- viewBox: "0 0 24 24",
10
- width: "1em",
8
+ height: "400",
9
+ viewBox: "0 0 400 400",
10
+ fill: "none",
11
11
  xmlns: "http://www.w3.org/2000/svg",
12
12
  ...props,
13
- children: /* @__PURE__ */ jsx("path", { d: "M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm0 2c5.523 0 10 4.477 10 10s-4.477 10-10 10-10-4.477-10-10 4.477-10 10-10zm0 3c3.866 0 7 3.134 7 7s-3.134 7-7 7-7-3.134-7-7 3.134-7 7-7zm0 2c-2.761 0-5 2.239-5 5s2.239 5 5 5 5-2.239 5-5-2.239-5-5-5z" })
13
+ children: /* @__PURE__ */ jsx("path", {
14
+ fillRule: "evenodd",
15
+ clipRule: "evenodd",
16
+ d: "M101.008 42L190.99 124.905L190.99 124.886L190.99 42.1913H208.506L208.506 125.276L298.891 42V136.524L336 136.524V272.866H299.005V357.035L208.506 277.525L208.506 357.948H190.99L190.99 278.836L101.11 358V272.866H64V136.524H101.008V42ZM177.785 153.826H81.5159V255.564H101.088V223.472L177.785 153.826ZM118.625 231.149V319.392L190.99 255.655L190.99 165.421L118.625 231.149ZM209.01 254.812V165.336L281.396 231.068V272.866H281.489V318.491L209.01 254.812ZM299.005 255.564H318.484V153.826L222.932 153.826L299.005 222.751V255.564ZM281.375 136.524V81.7983L221.977 136.524L281.375 136.524ZM177.921 136.524H118.524V81.7983L177.921 136.524Z",
17
+ fill: "currentColor"
18
+ })
14
19
  });
15
20
 
16
21
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"Perplexity.mjs","names":[],"sources":["../../../../../src/components/TechLogo/logos/Perplexity.tsx"],"sourcesContent":["import type { FC, SVGProps } from 'react';\n\nexport const PerplexityLogo: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n fill=\"currentColor\"\n role=\"img\"\n aria-label=\"Perplexity logo\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm0 2c5.523 0 10 4.477 10 10s-4.477 10-10 10-10-4.477-10-10 4.477-10 10-10zm0 3c3.866 0 7 3.134 7 7s-3.134 7-7 7-7-3.134-7-7 3.134-7 7-7zm0 2c-2.761 0-5 2.239-5 5s2.239 5 5 5 5-2.239 5-5-2.239-5-5-5z\" />\n </svg>\n);\n"],"mappings":";;;AAEA,MAAa,kBAA+C,UAC1D,oBAAC,OAAD;CACE,MAAK;CACL,MAAK;CACL,cAAW;CACX,QAAO;CACP,SAAQ;CACR,OAAM;CACN,OAAM;CACN,GAAI;WAEJ,oBAAC,QAAD,EAAM,GAAE,qRAAsR;CAC1R"}
1
+ {"version":3,"file":"Perplexity.mjs","names":[],"sources":["../../../../../src/components/TechLogo/logos/Perplexity.tsx"],"sourcesContent":["import type { FC, SVGProps } from 'react';\n\nexport const PerplexityLogo: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"400\"\n role=\"img\"\n aria-label=\"Perplexity logo\"\n height=\"400\"\n viewBox=\"0 0 400 400\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M101.008 42L190.99 124.905L190.99 124.886L190.99 42.1913H208.506L208.506 125.276L298.891 42V136.524L336 136.524V272.866H299.005V357.035L208.506 277.525L208.506 357.948H190.99L190.99 278.836L101.11 358V272.866H64V136.524H101.008V42ZM177.785 153.826H81.5159V255.564H101.088V223.472L177.785 153.826ZM118.625 231.149V319.392L190.99 255.655L190.99 165.421L118.625 231.149ZM209.01 254.812V165.336L281.396 231.068V272.866H281.489V318.491L209.01 254.812ZM299.005 255.564H318.484V153.826L222.932 153.826L299.005 222.751V255.564ZM281.375 136.524V81.7983L221.977 136.524L281.375 136.524ZM177.921 136.524H118.524V81.7983L177.921 136.524Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n"],"mappings":";;;AAEA,MAAa,kBAA+C,UAC1D,oBAAC,OAAD;CACE,OAAM;CACN,MAAK;CACL,cAAW;CACX,QAAO;CACP,SAAQ;CACR,MAAK;CACL,OAAM;CACN,GAAI;WAEJ,oBAAC,QAAD;EACE,UAAS;EACT,UAAS;EACT,GAAE;EACF,MAAK;EACL;CACE"}
@@ -1,4 +1,9 @@
1
1
  import { __exportAll } from "../../_virtual/_rolldown/runtime.mjs";
2
+ import { LinkedInLogo } from "./logos/LinkedIn.mjs";
3
+ import { BitbucketLogo } from "./logos/Bitbucket.mjs";
4
+ import { GitHubLogo } from "./logos/GitHub.mjs";
5
+ import { GitLabLogo } from "./logos/GitLab.mjs";
6
+ import { GoogleLogo } from "./logos/Google.mjs";
2
7
  import { AdonisLogo } from "./logos/Adonis.mjs";
3
8
  import { AngularLogo } from "./logos/Angular.mjs";
4
9
  import { AnthropicLogo } from "./logos/Anthropic.mjs";
@@ -37,15 +42,20 @@ var techLogos_exports = /* @__PURE__ */ __exportAll({
37
42
  ANGULAR: () => AngularLogo,
38
43
  ANTHROPIC: () => AnthropicLogo,
39
44
  ASTRO: () => AstroLogo,
45
+ BITBUCKET: () => BitbucketLogo,
40
46
  CHATGPT: () => ChatGPTLogo,
41
47
  CLAUDE: () => ClaudeLogo,
42
48
  DEEPSEEK: () => DeepSeekLogo,
43
49
  EXPRESS: () => ExpressLogo,
44
50
  FASTIFY: () => FastifyLogo,
45
51
  GEMINI: () => GeminiLogo,
52
+ GITHUB: () => GitHubLogo,
53
+ GITLAB: () => GitLabLogo,
54
+ GOOGLE: () => GoogleLogo,
46
55
  GOOGLE_AI: () => GoogleAILogo,
47
56
  GROK: () => GrokLogo,
48
57
  HONO: () => HonoLogo,
58
+ LINKEDIN: () => LinkedInLogo,
49
59
  LIT: () => LitLogo,
50
60
  LYNX: () => LynxLogo,
51
61
  MISTRAL: () => MistralLogo,
@@ -67,5 +77,5 @@ var techLogos_exports = /* @__PURE__ */ __exportAll({
67
77
  });
68
78
 
69
79
  //#endregion
70
- export { AdonisLogo as ADONIS, AngularLogo as ANGULAR, AnthropicLogo as ANTHROPIC, AstroLogo as ASTRO, ChatGPTLogo as CHATGPT, ClaudeLogo as CLAUDE, DeepSeekLogo as DEEPSEEK, ExpressLogo as EXPRESS, FastifyLogo as FASTIFY, GeminiLogo as GEMINI, GoogleAILogo as GOOGLE_AI, GrokLogo as GROK, HonoLogo as HONO, LitLogo as LIT, LynxLogo as LYNX, MistralLogo as MISTRAL, NestJSLogo as NESTJS, NextJSLogo as NEXTJS, NodejsLogo as NODE, NuxtLogo as NUXT, OllamaLogo as OLLAMA, OpenAILogo as OPENAI, PerplexityLogo as PERPLEXITY, PreactLogo as PREACT, ReactLogo as REACT, SolidLogo as SOLID, SvelteLogo as SVELTE, TanstackLogo as TANSTACK, JavaScriptLogo as VANILLA, ViteLogo as VITE, VuejsLogo as VUE, techLogos_exports };
80
+ export { AdonisLogo as ADONIS, AngularLogo as ANGULAR, AnthropicLogo as ANTHROPIC, AstroLogo as ASTRO, BitbucketLogo as BITBUCKET, ChatGPTLogo as CHATGPT, ClaudeLogo as CLAUDE, DeepSeekLogo as DEEPSEEK, ExpressLogo as EXPRESS, FastifyLogo as FASTIFY, GeminiLogo as GEMINI, GitHubLogo as GITHUB, GitLabLogo as GITLAB, GoogleLogo as GOOGLE, GoogleAILogo as GOOGLE_AI, GrokLogo as GROK, HonoLogo as HONO, LinkedInLogo as LINKEDIN, LitLogo as LIT, LynxLogo as LYNX, MistralLogo as MISTRAL, NestJSLogo as NESTJS, NextJSLogo as NEXTJS, NodejsLogo as NODE, NuxtLogo as NUXT, OllamaLogo as OLLAMA, OpenAILogo as OPENAI, PerplexityLogo as PERPLEXITY, PreactLogo as PREACT, ReactLogo as REACT, SolidLogo as SOLID, SvelteLogo as SVELTE, TanstackLogo as TANSTACK, JavaScriptLogo as VANILLA, ViteLogo as VITE, VuejsLogo as VUE, techLogos_exports };
71
81
  //# sourceMappingURL=techLogos.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"techLogos.mjs","names":[],"sources":["../../../../src/components/TechLogo/techLogos.ts"],"sourcesContent":["export { AdonisLogo as ADONIS } from './logos/Adonis';\nexport { AngularLogo as ANGULAR } from './logos/Angular';\nexport { AnthropicLogo as ANTHROPIC } from './logos/Anthropic';\nexport { AstroLogo as ASTRO } from './logos/Astro';\nexport { ChatGPTLogo as CHATGPT } from './logos/ChatGPT';\nexport { ClaudeLogo as CLAUDE } from './logos/Claude';\nexport { DeepSeekLogo as DEEPSEEK } from './logos/DeepSeek';\nexport { ExpressLogo as EXPRESS } from './logos/Express';\nexport { FastifyLogo as FASTIFY } from './logos/Fastify';\nexport { GeminiLogo as GEMINI } from './logos/Gemini';\nexport { GoogleAILogo as GOOGLE_AI } from './logos/GoogleAI';\nexport { GrokLogo as GROK } from './logos/Grok';\nexport { HonoLogo as HONO } from './logos/Hono';\nexport { LitLogo as LIT } from './logos/Lit';\nexport { LynxLogo as LYNX } from './logos/Lynx';\nexport { MistralLogo as MISTRAL } from './logos/Mistral';\nexport { NestJSLogo as NESTJS } from './logos/NestJS';\nexport { NextJSLogo as NEXTJS } from './logos/Nextjs';\nexport { NodejsLogo as NODE } from './logos/Node';\nexport { NuxtLogo as NUXT } from './logos/Nuxt';\nexport { OllamaLogo as OLLAMA } from './logos/Ollama';\nexport { OpenAILogo as OPENAI } from './logos/OpenAI';\nexport { PerplexityLogo as PERPLEXITY } from './logos/Perplexity';\nexport { PreactLogo as PREACT } from './logos/Preact';\nexport { ReactLogo as REACT } from './logos/Reactjs';\nexport { SolidLogo as SOLID } from './logos/Solid';\nexport { SvelteLogo as SVELTE } from './logos/Svelte';\nexport { TanstackLogo as TANSTACK } from './logos/Tanstack';\nexport { JavaScriptLogo as VANILLA } from './logos/Vanilla';\nexport { ViteLogo as VITE } from './logos/Vitejs';\nexport { VuejsLogo as VUE } from './logos/Vuejs';\n"],"mappings":""}
1
+ {"version":3,"file":"techLogos.mjs","names":[],"sources":["../../../../src/components/TechLogo/techLogos.ts"],"sourcesContent":["export { AdonisLogo as ADONIS } from './logos/Adonis';\nexport { AngularLogo as ANGULAR } from './logos/Angular';\nexport { AnthropicLogo as ANTHROPIC } from './logos/Anthropic';\nexport { AstroLogo as ASTRO } from './logos/Astro';\nexport { BitbucketLogo as BITBUCKET } from './logos/Bitbucket';\nexport { ChatGPTLogo as CHATGPT } from './logos/ChatGPT';\nexport { ClaudeLogo as CLAUDE } from './logos/Claude';\nexport { DeepSeekLogo as DEEPSEEK } from './logos/DeepSeek';\nexport { ExpressLogo as EXPRESS } from './logos/Express';\nexport { FastifyLogo as FASTIFY } from './logos/Fastify';\nexport { GeminiLogo as GEMINI } from './logos/Gemini';\nexport { GitHubLogo as GITHUB } from './logos/GitHub';\nexport { GitLabLogo as GITLAB } from './logos/GitLab';\nexport { GoogleLogo as GOOGLE } from './logos/Google';\nexport { GoogleAILogo as GOOGLE_AI } from './logos/GoogleAI';\nexport { GrokLogo as GROK } from './logos/Grok';\nexport { HonoLogo as HONO } from './logos/Hono';\nexport { LinkedInLogo as LINKEDIN } from './logos/LinkedIn';\nexport { LitLogo as LIT } from './logos/Lit';\nexport { LynxLogo as LYNX } from './logos/Lynx';\nexport { MistralLogo as MISTRAL } from './logos/Mistral';\nexport { NestJSLogo as NESTJS } from './logos/NestJS';\nexport { NextJSLogo as NEXTJS } from './logos/Nextjs';\nexport { NodejsLogo as NODE } from './logos/Node';\nexport { NuxtLogo as NUXT } from './logos/Nuxt';\nexport { OllamaLogo as OLLAMA } from './logos/Ollama';\nexport { OpenAILogo as OPENAI } from './logos/OpenAI';\nexport { PerplexityLogo as PERPLEXITY } from './logos/Perplexity';\nexport { PreactLogo as PREACT } from './logos/Preact';\nexport { ReactLogo as REACT } from './logos/Reactjs';\nexport { SolidLogo as SOLID } from './logos/Solid';\nexport { SvelteLogo as SVELTE } from './logos/Svelte';\nexport { TanstackLogo as TANSTACK } from './logos/Tanstack';\nexport { JavaScriptLogo as VANILLA } from './logos/Vanilla';\nexport { ViteLogo as VITE } from './logos/Vitejs';\nexport { VuejsLogo as VUE } from './logos/Vuejs';\n"],"mappings":""}
@@ -31,6 +31,11 @@ let TechLogoName = /* @__PURE__ */ function(TechLogoName) {
31
31
  TechLogoName["Ollama"] = "ollama";
32
32
  TechLogoName["OpenAI"] = "openai";
33
33
  TechLogoName["Perplexity"] = "perplexity";
34
+ TechLogoName["GitHub"] = "github";
35
+ TechLogoName["GitLab"] = "gitlab";
36
+ TechLogoName["Bitbucket"] = "bitbucket";
37
+ TechLogoName["Google"] = "google";
38
+ TechLogoName["LinkedIn"] = "linkedin";
34
39
  return TechLogoName;
35
40
  }({});
36
41
 
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","names":[],"sources":["../../../../src/components/TechLogo/types.ts"],"sourcesContent":["export enum TechLogoName {\n Adonis = 'adonis',\n Angular = 'angular',\n Astro = 'astro',\n Express = 'express',\n Fastify = 'fastify',\n Hono = 'hono',\n Lynx = 'lynx',\n NestJS = 'nestjs',\n Nextjs = 'nextjs',\n Node = 'node',\n Nuxt = 'nuxt',\n Preact = 'preact',\n React = 'react',\n Solid = 'solid',\n Svelte = 'svelte',\n Tanstack = 'tanstack',\n Vite = 'vite',\n Vue = 'vue',\n Lit = 'lit',\n Vanilla = 'vanilla',\n Anthropic = 'anthropic',\n Claude = 'claude',\n ChatGPT = 'chatgpt',\n DeepSeek = 'deepseek',\n Gemini = 'gemini',\n GoogleAI = 'googleai',\n Grok = 'grok',\n Mistral = 'mistral',\n Ollama = 'ollama',\n OpenAI = 'openai',\n Perplexity = 'perplexity',\n}\n"],"mappings":";AAAA,IAAY,eAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;KACD"}
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../../../../src/components/TechLogo/types.ts"],"sourcesContent":["export enum TechLogoName {\n Adonis = 'adonis',\n Angular = 'angular',\n Astro = 'astro',\n Express = 'express',\n Fastify = 'fastify',\n Hono = 'hono',\n Lynx = 'lynx',\n NestJS = 'nestjs',\n Nextjs = 'nextjs',\n Node = 'node',\n Nuxt = 'nuxt',\n Preact = 'preact',\n React = 'react',\n Solid = 'solid',\n Svelte = 'svelte',\n Tanstack = 'tanstack',\n Vite = 'vite',\n Vue = 'vue',\n Lit = 'lit',\n Vanilla = 'vanilla',\n Anthropic = 'anthropic',\n Claude = 'claude',\n ChatGPT = 'chatgpt',\n DeepSeek = 'deepseek',\n Gemini = 'gemini',\n GoogleAI = 'googleai',\n Grok = 'grok',\n Mistral = 'mistral',\n Ollama = 'ollama',\n OpenAI = 'openai',\n Perplexity = 'perplexity',\n GitHub = 'github',\n GitLab = 'gitlab',\n Bitbucket = 'bitbucket',\n Google = 'google',\n LinkedIn = 'linkedin',\n}\n"],"mappings":";AAAA,IAAY,eAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;KACD"}
@@ -116,7 +116,7 @@ const reducer = (state, action) => {
116
116
  };
117
117
  return {
118
118
  ...state,
119
- toasts: state.toasts.filter((t) => t.id !== action.toastId)
119
+ toasts: state.toasts.filter((toast) => toast.id !== action.toastId)
120
120
  };
121
121
  }
122
122
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useToast.mjs","names":[],"sources":["../../../../src/components/Toaster/useToast.tsx"],"sourcesContent":["'use client';\n\nimport { type ReactNode, useEffect, useState } from 'react';\nimport type { ToastActionElement, ToastProps } from './Toast';\n\n/**\n * Maximum number of toasts that can be displayed simultaneously.\n * Prevents UI overflow and maintains clean notification experience.\n */\nconst TOAST_LIMIT = 1;\n\n/**\n * Delay before automatically removing dismissed toasts from memory.\n * Set to 15 minutes (900,000ms) to allow for potential undo actions.\n */\nconst TOAST_REMOVE_DELAY = 15 * 60 * 1000; // 15 seconds\n\n/**\n * Extended toast configuration with additional properties for the toast system.\n *\n * Combines base ToastProps with specific fields needed for toast management\n * including unique identification and content elements.\n *\n * @example\n * ```tsx\n * const toast: ToasterToast = {\n * id: '1',\n * variant: 'success',\n * title: 'Success!',\n * description: 'Your action completed successfully.',\n * action: <ToastAction altText=\"View details\">View</ToastAction>\n * };\n * ```\n */\ntype ToasterToast = ToastProps & {\n /** Unique identifier for the toast instance */\n id: string;\n /** Optional title text or React element */\n title?: ReactNode;\n /** Optional description text or React element */\n description?: ReactNode;\n /** Optional action button element */\n action?: ToastActionElement;\n};\n\n/**\n * Action types for toast state management using reducer pattern.\n *\n * Defines all possible actions that can be performed on the toast state,\n * enabling predictable state updates and better debugging.\n */\nenum ActionTypes {\n /** Add a new toast to the display queue */\n ADD_TOAST = 'ADD_TOAST',\n /** Update properties of an existing toast */\n UPDATE_TOAST = 'UPDATE_TOAST',\n /** Mark a toast as dismissed (triggers exit animation) */\n DISMISS_TOAST = 'DISMISS_TOAST',\n /** Completely remove a toast from memory */\n REMOVE_TOAST = 'REMOVE_TOAST',\n}\n\nlet count = 0;\n\nconst genId = () => {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n};\n\ntype Action =\n | {\n type: ActionTypes.ADD_TOAST;\n toast: ToasterToast;\n }\n | {\n type: ActionTypes.UPDATE_TOAST;\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionTypes.DISMISS_TOAST;\n toastId?: ToasterToast['id'];\n }\n | {\n type: ActionTypes.REMOVE_TOAST;\n toastId?: ToasterToast['id'];\n };\n\ntype State = {\n toasts: ToasterToast[];\n};\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: ActionTypes.REMOVE_TOAST,\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\n/**\n * Toast state reducer function that handles all toast state transitions.\n *\n * Implements predictable state updates using the reducer pattern, ensuring\n * consistent behavior across all toast operations.\n *\n * ## State Management\n * - **ADD_TOAST**: Adds new toast and enforces limit by removing excess toasts\n * - **UPDATE_TOAST**: Updates existing toast properties while preserving identity\n * - **DISMISS_TOAST**: Marks toasts as closed and schedules removal\n * - **REMOVE_TOAST**: Permanently removes toasts from state\n *\n * ## Side Effects\n * The DISMISS_TOAST action includes side effects for scheduling toast removal,\n * which could be extracted but is kept here for simplicity.\n *\n * @param state - Current toast state\n * @param action - Action to perform on the state\n * @returns Updated toast state\n *\n * @example\n * ```tsx\n * // Add a new toast\n * const newState = reducer(state, {\n * type: ActionTypes.ADD_TOAST,\n * toast: { id: '1', title: 'Hello', variant: 'default' }\n * });\n *\n * // Dismiss a specific toast\n * const dismissedState = reducer(state, {\n * type: ActionTypes.DISMISS_TOAST,\n * toastId: '1'\n * });\n * ```\n */\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case ActionTypes.ADD_TOAST:\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case ActionTypes.UPDATE_TOAST:\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case ActionTypes.DISMISS_TOAST: {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n };\n }\n case ActionTypes.REMOVE_TOAST:\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: ((state: State) => void)[] = [];\n\nlet memoryState: State = { toasts: [] };\n\nconst dispatch = (action: Action) => {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n};\n\n/**\n * Toast configuration type for creating new toasts.\n * Omits the 'id' field as it's automatically generated.\n */\ntype Toast = Omit<ToasterToast, 'id'>;\n\n/**\n * Creates and displays a new toast notification.\n *\n * This is the primary function for showing toast notifications to users.\n * It automatically generates unique IDs, handles state updates, and provides\n * control functions for managing the toast lifecycle.\n *\n * ## Features\n * - **Automatic ID Generation**: Each toast gets a unique identifier\n * - **State Management**: Integrates with global toast state\n * - **Lifecycle Control**: Returns functions to update or dismiss the toast\n * - **Auto-dismiss**: Automatically closes when user dismisses\n *\n * ## Return Value\n * Returns an object with control functions:\n * - `id`: Unique identifier for the toast\n * - `dismiss()`: Function to manually dismiss the toast\n * - `update()`: Function to update toast properties\n *\n * @param props - Toast configuration (title, description, variant, etc.)\n * @returns Object with toast ID and control functions\n *\n * @example\n * ```tsx\n * // Basic success toast\n * const { dismiss } = toast({\n * title: 'Success!',\n * description: 'Your file was uploaded successfully.',\n * variant: 'success'\n * });\n *\n * // Error toast with retry action\n * const errorToast = toast({\n * title: 'Upload Failed',\n * description: 'Could not upload file. Please try again.',\n * variant: 'error',\n * action: <ToastAction altText=\"Retry upload\">Retry</ToastAction>\n * });\n *\n * // Update toast content dynamically\n * errorToast.update({\n * title: 'Retrying...',\n * description: 'Please wait while we retry the upload.',\n * variant: 'default'\n * });\n *\n * // Manually dismiss toast\n * setTimeout(() => errorToast.dismiss(), 5000);\n * ```\n */\nconst toast = ({ ...props }: Toast) => {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: ActionTypes.UPDATE_TOAST,\n toast: { ...props, id },\n });\n const dismiss = () =>\n dispatch({ type: ActionTypes.DISMISS_TOAST, toastId: id });\n\n dispatch({\n type: ActionTypes.ADD_TOAST,\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n};\n\n/**\n * React hook for managing toast notifications.\n *\n * Provides access to the global toast state and functions for creating and\n * managing toast notifications. This hook connects components to the toast\n * system and ensures reactive updates when toasts change.\n *\n * ## Features\n * - **State Synchronization**: Automatically updates when toast state changes\n * - **Toast Creation**: Provides the `toast()` function for creating notifications\n * - **Batch Dismissal**: Can dismiss all toasts or specific toasts by ID\n * - **Memory Management**: Handles proper cleanup of listeners\n *\n * ## Return Value\n * - `toasts`: Array of current toast objects\n * - `toast()`: Function to create new toast notifications\n * - `dismiss()`: Function to dismiss toasts (all or by ID)\n *\n * @returns Toast state and control functions\n *\n * @example\n * ```tsx\n * function NotificationButton() {\n * const { toast, toasts, dismiss } = useToast();\n *\n * const showSuccess = () => {\n * toast({\n * title: 'Success!',\n * description: 'Operation completed successfully.',\n * variant: 'success'\n * });\n * };\n *\n * const clearAll = () => {\n * dismiss(); // Dismisses all toasts\n * };\n *\n * return (\n * <div>\n * <button onClick={showSuccess}>Show Success</button>\n * <button onClick={clearAll}>Clear All ({toasts.length})</button>\n * </div>\n * );\n * }\n *\n * // Usage in a form component\n * function ContactForm() {\n * const { toast } = useToast();\n *\n * const handleSubmit = async (data) => {\n * try {\n * await submitForm(data);\n * toast({\n * title: 'Form Submitted',\n * description: 'We\\'ll get back to you soon!',\n * variant: 'success'\n * });\n * } catch (error) {\n * toast({\n * title: 'Submission Failed',\n * description: 'Please check your connection and try again.',\n * variant: 'error',\n * action: <ToastAction altText=\"Retry\">Retry</ToastAction>\n * });\n * }\n * };\n *\n * // ... form JSX\n * }\n * ```\n *\n * ## Usage Notes\n * - Must be used within a component tree that includes `<Toaster />`\n * - Toast state is global - changes affect all components using this hook\n * - Toasts are automatically cleaned up after the configured delay\n * - Consider UX best practices: don't overwhelm users with too many toasts\n */\nconst useToast = () => {\n const [state, setState] = useState<State>(memoryState);\n\n useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) =>\n dispatch({ type: ActionTypes.DISMISS_TOAST, toastId }),\n };\n};\n\nexport { toast, useToast };\n"],"mappings":"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"}
1
+ {"version":3,"file":"useToast.mjs","names":[],"sources":["../../../../src/components/Toaster/useToast.tsx"],"sourcesContent":["'use client';\n\nimport { type ReactNode, useEffect, useState } from 'react';\nimport type { ToastActionElement, ToastProps } from './Toast';\n\n/**\n * Maximum number of toasts that can be displayed simultaneously.\n * Prevents UI overflow and maintains clean notification experience.\n */\nconst TOAST_LIMIT = 1;\n\n/**\n * Delay before automatically removing dismissed toasts from memory.\n * Set to 15 minutes (900,000ms) to allow for potential undo actions.\n */\nconst TOAST_REMOVE_DELAY = 15 * 60 * 1000; // 15 seconds\n\n/**\n * Extended toast configuration with additional properties for the toast system.\n *\n * Combines base ToastProps with specific fields needed for toast management\n * including unique identification and content elements.\n *\n * @example\n * ```tsx\n * const toast: ToasterToast = {\n * id: '1',\n * variant: 'success',\n * title: 'Success!',\n * description: 'Your action completed successfully.',\n * action: <ToastAction altText=\"View details\">View</ToastAction>\n * };\n * ```\n */\ntype ToasterToast = ToastProps & {\n /** Unique identifier for the toast instance */\n id: string;\n /** Optional title text or React element */\n title?: ReactNode;\n /** Optional description text or React element */\n description?: ReactNode;\n /** Optional action button element */\n action?: ToastActionElement;\n};\n\n/**\n * Action types for toast state management using reducer pattern.\n *\n * Defines all possible actions that can be performed on the toast state,\n * enabling predictable state updates and better debugging.\n */\nenum ActionTypes {\n /** Add a new toast to the display queue */\n ADD_TOAST = 'ADD_TOAST',\n /** Update properties of an existing toast */\n UPDATE_TOAST = 'UPDATE_TOAST',\n /** Mark a toast as dismissed (triggers exit animation) */\n DISMISS_TOAST = 'DISMISS_TOAST',\n /** Completely remove a toast from memory */\n REMOVE_TOAST = 'REMOVE_TOAST',\n}\n\nlet count = 0;\n\nconst genId = () => {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n};\n\ntype Action =\n | {\n type: ActionTypes.ADD_TOAST;\n toast: ToasterToast;\n }\n | {\n type: ActionTypes.UPDATE_TOAST;\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionTypes.DISMISS_TOAST;\n toastId?: ToasterToast['id'];\n }\n | {\n type: ActionTypes.REMOVE_TOAST;\n toastId?: ToasterToast['id'];\n };\n\ntype State = {\n toasts: ToasterToast[];\n};\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: ActionTypes.REMOVE_TOAST,\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\n/**\n * Toast state reducer function that handles all toast state transitions.\n *\n * Implements predictable state updates using the reducer pattern, ensuring\n * consistent behavior across all toast operations.\n *\n * ## State Management\n * - **ADD_TOAST**: Adds new toast and enforces limit by removing excess toasts\n * - **UPDATE_TOAST**: Updates existing toast properties while preserving identity\n * - **DISMISS_TOAST**: Marks toasts as closed and schedules removal\n * - **REMOVE_TOAST**: Permanently removes toasts from state\n *\n * ## Side Effects\n * The DISMISS_TOAST action includes side effects for scheduling toast removal,\n * which could be extracted but is kept here for simplicity.\n *\n * @param state - Current toast state\n * @param action - Action to perform on the state\n * @returns Updated toast state\n *\n * @example\n * ```tsx\n * // Add a new toast\n * const newState = reducer(state, {\n * type: ActionTypes.ADD_TOAST,\n * toast: { id: '1', title: 'Hello', variant: 'default' }\n * });\n *\n * // Dismiss a specific toast\n * const dismissedState = reducer(state, {\n * type: ActionTypes.DISMISS_TOAST,\n * toastId: '1'\n * });\n * ```\n */\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case ActionTypes.ADD_TOAST:\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case ActionTypes.UPDATE_TOAST:\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case ActionTypes.DISMISS_TOAST: {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n };\n }\n case ActionTypes.REMOVE_TOAST:\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((toast) => toast.id !== action.toastId),\n };\n }\n};\n\nconst listeners: ((state: State) => void)[] = [];\n\nlet memoryState: State = { toasts: [] };\n\nconst dispatch = (action: Action) => {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n};\n\n/**\n * Toast configuration type for creating new toasts.\n * Omits the 'id' field as it's automatically generated.\n */\ntype Toast = Omit<ToasterToast, 'id'>;\n\n/**\n * Creates and displays a new toast notification.\n *\n * This is the primary function for showing toast notifications to users.\n * It automatically generates unique IDs, handles state updates, and provides\n * control functions for managing the toast lifecycle.\n *\n * ## Features\n * - **Automatic ID Generation**: Each toast gets a unique identifier\n * - **State Management**: Integrates with global toast state\n * - **Lifecycle Control**: Returns functions to update or dismiss the toast\n * - **Auto-dismiss**: Automatically closes when user dismisses\n *\n * ## Return Value\n * Returns an object with control functions:\n * - `id`: Unique identifier for the toast\n * - `dismiss()`: Function to manually dismiss the toast\n * - `update()`: Function to update toast properties\n *\n * @param props - Toast configuration (title, description, variant, etc.)\n * @returns Object with toast ID and control functions\n *\n * @example\n * ```tsx\n * // Basic success toast\n * const { dismiss } = toast({\n * title: 'Success!',\n * description: 'Your file was uploaded successfully.',\n * variant: 'success'\n * });\n *\n * // Error toast with retry action\n * const errorToast = toast({\n * title: 'Upload Failed',\n * description: 'Could not upload file. Please try again.',\n * variant: 'error',\n * action: <ToastAction altText=\"Retry upload\">Retry</ToastAction>\n * });\n *\n * // Update toast content dynamically\n * errorToast.update({\n * title: 'Retrying...',\n * description: 'Please wait while we retry the upload.',\n * variant: 'default'\n * });\n *\n * // Manually dismiss toast\n * setTimeout(() => errorToast.dismiss(), 5000);\n * ```\n */\nconst toast = ({ ...props }: Toast) => {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: ActionTypes.UPDATE_TOAST,\n toast: { ...props, id },\n });\n const dismiss = () =>\n dispatch({ type: ActionTypes.DISMISS_TOAST, toastId: id });\n\n dispatch({\n type: ActionTypes.ADD_TOAST,\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n};\n\n/**\n * React hook for managing toast notifications.\n *\n * Provides access to the global toast state and functions for creating and\n * managing toast notifications. This hook connects components to the toast\n * system and ensures reactive updates when toasts change.\n *\n * ## Features\n * - **State Synchronization**: Automatically updates when toast state changes\n * - **Toast Creation**: Provides the `toast()` function for creating notifications\n * - **Batch Dismissal**: Can dismiss all toasts or specific toasts by ID\n * - **Memory Management**: Handles proper cleanup of listeners\n *\n * ## Return Value\n * - `toasts`: Array of current toast objects\n * - `toast()`: Function to create new toast notifications\n * - `dismiss()`: Function to dismiss toasts (all or by ID)\n *\n * @returns Toast state and control functions\n *\n * @example\n * ```tsx\n * function NotificationButton() {\n * const { toast, toasts, dismiss } = useToast();\n *\n * const showSuccess = () => {\n * toast({\n * title: 'Success!',\n * description: 'Operation completed successfully.',\n * variant: 'success'\n * });\n * };\n *\n * const clearAll = () => {\n * dismiss(); // Dismisses all toasts\n * };\n *\n * return (\n * <div>\n * <button onClick={showSuccess}>Show Success</button>\n * <button onClick={clearAll}>Clear All ({toasts.length})</button>\n * </div>\n * );\n * }\n *\n * // Usage in a form component\n * function ContactForm() {\n * const { toast } = useToast();\n *\n * const handleSubmit = async (data) => {\n * try {\n * await submitForm(data);\n * toast({\n * title: 'Form Submitted',\n * description: 'We\\'ll get back to you soon!',\n * variant: 'success'\n * });\n * } catch (error) {\n * toast({\n * title: 'Submission Failed',\n * description: 'Please check your connection and try again.',\n * variant: 'error',\n * action: <ToastAction altText=\"Retry\">Retry</ToastAction>\n * });\n * }\n * };\n *\n * // ... form JSX\n * }\n * ```\n *\n * ## Usage Notes\n * - Must be used within a component tree that includes `<Toaster />`\n * - Toast state is global - changes affect all components using this hook\n * - Toasts are automatically cleaned up after the configured delay\n * - Consider UX best practices: don't overwhelm users with too many toasts\n */\nconst useToast = () => {\n const [state, setState] = useState<State>(memoryState);\n\n useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) =>\n dispatch({ type: ActionTypes.DISMISS_TOAST, toastId }),\n };\n};\n\nexport { toast, useToast };\n"],"mappings":"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"}
@@ -70,12 +70,16 @@ import { LogoWithText } from "./Logo/LogoWithText.mjs";
70
70
  import { LogoWithTextBelow } from "./Logo/LogoWithTextBelow.mjs";
71
71
  import { DiscordLogo } from "./SocialNetworks/DiscordLogo.mjs";
72
72
  import { InstagramLogo } from "./SocialNetworks/InstagramLogo.mjs";
73
- import { LinkedInLogo } from "./SocialNetworks/LinkedInLogo.mjs";
73
+ import { LinkedInLogo } from "./TechLogo/logos/LinkedIn.mjs";
74
74
  import { ProductHuntLogo } from "./SocialNetworks/ProductHuntLogo.mjs";
75
75
  import { TiktokLogo } from "./SocialNetworks/TiktokLogo.mjs";
76
76
  import { XLogo } from "./SocialNetworks/XLogo.mjs";
77
77
  import { YoutubeLogo } from "./SocialNetworks/YoutubeLogo.mjs";
78
+ import { BitbucketLogo } from "./TechLogo/logos/Bitbucket.mjs";
78
79
  import { FacebookLogo } from "./SocialNetworks/FacebookLogo.mjs";
80
+ import { GitHubLogo } from "./TechLogo/logos/GitHub.mjs";
81
+ import { GitLabLogo } from "./TechLogo/logos/GitLab.mjs";
82
+ import { GoogleLogo } from "./TechLogo/logos/Google.mjs";
79
83
  import { SocialNetworks } from "./SocialNetworks/index.mjs";
80
84
  import { Footer } from "./Footer/index.mjs";
81
85
  import { HeightResizer } from "./HeightResizer/index.mjs";
@@ -106,4 +110,4 @@ import { Modes } from "./ThemeSwitcherDropDown/types.mjs";
106
110
  import { DesktopThemeSwitcher } from "./ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs";
107
111
  import { MobileThemeSwitcher } from "./ThemeSwitcherDropDown/MobileThemeSwitcher.mjs";
108
112
 
109
- export { Accordion, AutoCompleteTextarea, AutoSizedTextArea, Avatar, Badge, BadgeColor, BadgeSize, BadgeVariant, Breadcrumb, Browser, Button, ButtonColor, ButtonSize, ButtonTextAlign, ButtonVariant, Carousel, Checkbox, CheckboxColor, CheckboxSize, ClickOutsideDiv, Code, CodeBlock, CodeDefault, CollapsibleTable, Command, CommandRoot, Container, ContainerBackground, ContainerBorderColor, ContainerGap, ContainerPadding, ContainerRoundedSize, ContainerSeparator, ContainerTransparency, ContentEditableTextArea, ContentEditor, ContentSelector, CopyButton, CopyToClipboard, DesktopThemeSwitcher, Detail, DictionaryCreationForm, DictionaryEditor, DictionaryFieldEditor, DiscordLogo, DotPattern, DropDown, DropDownAlign, DropDownYAlign, EditableFieldInput, EditableFieldTextArea, ExpandCollapse, FacebookLogo, FileList, Flag, flags_exports as Flags, Footer, Form, GridPattern, H1, H2, H3, H4, H5, H6, HTMLRenderer, HeightResizer, HideShow, IDE, InformationTag, Input, InputIndicator, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputPassword, InputSize, InputVariant, InstagramLogo, KeyList, KeyPathBreadcrumb, KeyboardScreenAdapter, KeyboardShortcut, Label, LanguageBackground, LanguageSection, Link, LinkColor, LinkRoundedSize, LinkSize, LinkUnderlined, LinkVariant, LinkedInLogo, Loader, LocaleSwitcher, LocaleSwitcherContent, LocaleSwitcherContentProvider, Logo, LogoTextOnly, LogoWithText, LogoWithTextBelow, MarkdownRenderer, MaxHeightSmoother, MaxWidthSmoother, MobileThemeSwitcher, Modal, ModalSize, Modes, MultiSelect, Navbar, NumberItemsSelector, OTPInput, OTPInputContext, Pagination, PaginationSize, PaginationVariant, Popover, PopoverStatic, PopoverXAlign, PopoverYAlign, PressableSpan, ProductHuntLogo, RightDrawer, SaveForm, SearchInput, Select, SelectContent, SelectContentPosition, SelectLabel, SelectSeparator, ShowingResultsNumberItems, SocialNetworks, Spotlight, SwitchSelector, SwitchSelectorColor, SwitchSelectorSize, Tab, TabSelector, TabSelectorColor, Table, Tag, TagBackground, TagBorder, TagColor, TagRoundedSize, TagSize, TechLogo, TechLogoName, techLogos_exports as TechLogos, Terminal, TextArea, TextEditor, TextEditorContainer, TiktokLogo, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, VersionSwitcher, VersionSwitcherProvider, WithResizer, XLogo, YoutubeLogo, badgeVariants, baseMarkdownComponents, buttonVariants, checkIsExternalLink, checkboxVariants, containerVariants, drawerManager, getCapitals, getIntlayerHTMLOptions, getIntlayerMarkdownOptions, inputSlotVariants, inputVariants, isTextChildren, linkVariants, paginationVariants, reducer, toast, traceKeys, useContentEditable, useCopyToClipboard, useForm, useFormField, useLocaleSwitcherContent, usePasswordManagerBadge, usePrevious, useRightDrawer, useToast, useVersionSwitcher };
113
+ export { Accordion, AutoCompleteTextarea, AutoSizedTextArea, Avatar, Badge, BadgeColor, BadgeSize, BadgeVariant, BitbucketLogo, Breadcrumb, Browser, Button, ButtonColor, ButtonSize, ButtonTextAlign, ButtonVariant, Carousel, Checkbox, CheckboxColor, CheckboxSize, ClickOutsideDiv, Code, CodeBlock, CodeDefault, CollapsibleTable, Command, CommandRoot, Container, ContainerBackground, ContainerBorderColor, ContainerGap, ContainerPadding, ContainerRoundedSize, ContainerSeparator, ContainerTransparency, ContentEditableTextArea, ContentEditor, ContentSelector, CopyButton, CopyToClipboard, DesktopThemeSwitcher, Detail, DictionaryCreationForm, DictionaryEditor, DictionaryFieldEditor, DiscordLogo, DotPattern, DropDown, DropDownAlign, DropDownYAlign, EditableFieldInput, EditableFieldTextArea, ExpandCollapse, FacebookLogo, FileList, Flag, flags_exports as Flags, Footer, Form, GitHubLogo, GitLabLogo, GoogleLogo, GridPattern, H1, H2, H3, H4, H5, H6, HTMLRenderer, HeightResizer, HideShow, IDE, InformationTag, Input, InputIndicator, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputPassword, InputSize, InputVariant, InstagramLogo, KeyList, KeyPathBreadcrumb, KeyboardScreenAdapter, KeyboardShortcut, Label, LanguageBackground, LanguageSection, Link, LinkColor, LinkRoundedSize, LinkSize, LinkUnderlined, LinkVariant, LinkedInLogo, Loader, LocaleSwitcher, LocaleSwitcherContent, LocaleSwitcherContentProvider, Logo, LogoTextOnly, LogoWithText, LogoWithTextBelow, MarkdownRenderer, MaxHeightSmoother, MaxWidthSmoother, MobileThemeSwitcher, Modal, ModalSize, Modes, MultiSelect, Navbar, NumberItemsSelector, OTPInput, OTPInputContext, Pagination, PaginationSize, PaginationVariant, Popover, PopoverStatic, PopoverXAlign, PopoverYAlign, PressableSpan, ProductHuntLogo, RightDrawer, SaveForm, SearchInput, Select, SelectContent, SelectContentPosition, SelectLabel, SelectSeparator, ShowingResultsNumberItems, SocialNetworks, Spotlight, SwitchSelector, SwitchSelectorColor, SwitchSelectorSize, Tab, TabSelector, TabSelectorColor, Table, Tag, TagBackground, TagBorder, TagColor, TagRoundedSize, TagSize, TechLogo, TechLogoName, techLogos_exports as TechLogos, Terminal, TextArea, TextEditor, TextEditorContainer, TiktokLogo, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, VersionSwitcher, VersionSwitcherProvider, WithResizer, XLogo, YoutubeLogo, badgeVariants, baseMarkdownComponents, buttonVariants, checkIsExternalLink, checkboxVariants, containerVariants, drawerManager, getCapitals, getIntlayerHTMLOptions, getIntlayerMarkdownOptions, inputSlotVariants, inputVariants, isTextChildren, linkVariants, paginationVariants, reducer, toast, traceKeys, useContentEditable, useCopyToClipboard, useForm, useFormField, useLocaleSwitcherContent, usePasswordManagerBadge, usePrevious, useRightDrawer, useToast, useVersionSwitcher };
@@ -63,6 +63,7 @@ const useToastEvents = () => {
63
63
  onSuccess
64
64
  };
65
65
  };
66
+ const getQueryClient = () => new QueryClient({ defaultOptions: defaultQueryOptions });
66
67
  const ReactQueryProvider = ({ children }) => {
67
68
  const { onError, onSuccess } = useToastEvents();
68
69
  const clientRef = useRef(null);
@@ -91,5 +92,5 @@ const ReactQueryProvider = ({ children }) => {
91
92
  };
92
93
 
93
94
  //#endregion
94
- export { ReactQueryProvider };
95
+ export { ReactQueryProvider, getQueryClient };
95
96
  //# sourceMappingURL=ReactQueryProvider.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReactQueryProvider.mjs","names":[],"sources":["../../../src/providers/ReactQueryProvider.tsx"],"sourcesContent":["'use client';\n\nimport {\n type DefaultOptions,\n MutationCache,\n QueryClient,\n QueryClientProvider,\n type QueryKey,\n type UseMutationOptions,\n} from '@tanstack/react-query';\nimport { type FC, type PropsWithChildren, useRef } from 'react';\nimport { useToast } from '../components/Toaster';\n\nconst defaultQueryOptions: DefaultOptions = {\n queries: {\n retry: 1,\n // Keep data fresh for 30 seconds to avoid unnecessary refetches during navigation\n staleTime: 30 * 1000,\n // Give the cache a little breathing room across route transitions:\n gcTime: 5 * 60 * 1000, // e.g. 5 minutes\n // Only refetch on mount if data is stale (not every single mount)\n refetchOnMount: true,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n },\n mutations: {\n retry: 0,\n },\n};\n\nconst SHOW_ERROR_CODE = false;\n\ndeclare module '@tanstack/react-query' {\n interface Register {\n mutationMeta: {\n onSuccess?: UseMutationOptions['onSuccess'];\n onError?: UseMutationOptions['onError'];\n invalidateQueries?: QueryKey[];\n resetQueries?: QueryKey[];\n };\n }\n}\n\nconst formatErrorCode = (errorCode: string) => errorCode.split('_').join(' ');\n\n/**\n * Hook to handle error logging and toast notifications\n */\nconst useToastEvents = () => {\n const { toast } = useToast();\n\n const onError: MutationCache['config']['onError'] = (error: any) => {\n const parsed = (() => {\n try {\n if (typeof error === 'string') return JSON.parse(error);\n if (error instanceof Error) return JSON.parse(error.message);\n } catch (_) {}\n return error;\n })();\n\n [parsed].flat().forEach((err: any) => {\n // Check for nested error object (standard in your API responses: { statusCode, error: { ... } })\n const apiError = err?.error ?? err;\n\n if (apiError?.code === 'RATE_LIMIT_EXCEEDED_UNAUTHENTICATED') {\n toast({\n title: apiError.message,\n variant: 'error',\n });\n return;\n }\n\n toast({\n title: formatErrorCode(\n SHOW_ERROR_CODE\n ? (apiError?.code ?? err?.code)\n : (apiError?.title ?? err?.title ?? 'Error')\n ),\n description:\n apiError?.message ??\n err?.message ??\n String(apiError ?? 'An error occurred'),\n variant: 'error',\n });\n });\n };\n\n const onSuccess: MutationCache['config']['onSuccess'] = (data: any) => {\n if (data?.error) {\n toast({\n title: formatErrorCode(data.error.title ?? data.error.code ?? 'Error'),\n description:\n data.error.message ?? data.error.code ?? 'An error occurred',\n variant: 'error',\n });\n }\n\n if (data?.message) {\n toast({\n title: data.message,\n description: data.description,\n variant: 'success',\n });\n }\n };\n\n return {\n onError,\n onSuccess,\n };\n};\n\nexport const ReactQueryProvider: FC<PropsWithChildren> = ({ children }) => {\n const { onError, onSuccess } = useToastEvents();\n const clientRef = useRef<QueryClient>(null);\n\n if (!clientRef.current) {\n const mutationCache = new MutationCache({\n onSuccess,\n onError,\n onSettled: (_data, _error, _variables, _context, mutation) => {\n if (mutation.meta?.invalidateQueries) {\n mutation.meta.invalidateQueries.forEach((queryKey) => {\n queryClient.invalidateQueries({\n queryKey,\n });\n });\n }\n\n if (mutation.meta?.resetQueries) {\n mutation.meta.resetQueries.forEach((queryKey) => {\n queryClient.resetQueries({\n queryKey,\n });\n });\n }\n },\n });\n\n const queryClient = new QueryClient({\n defaultOptions: defaultQueryOptions,\n mutationCache,\n });\n clientRef.current = queryClient;\n }\n\n return (\n <QueryClientProvider client={clientRef.current}>\n {children}\n </QueryClientProvider>\n );\n};\n"],"mappings":";;;;;;;;AAaA,MAAM,sBAAsC;CAC1C,SAAS;EACP,OAAO;EAEP,WAAW,KAAK;EAEhB,QAAQ,MAAS;EAEjB,gBAAgB;EAChB,sBAAsB;EACtB,oBAAoB;EACrB;CACD,WAAW,EACT,OAAO,GACR;CACF;AAeD,MAAM,mBAAmB,cAAsB,UAAU,MAAM,IAAI,CAAC,KAAK,IAAI;;;;AAK7E,MAAM,uBAAuB;CAC3B,MAAM,EAAE,UAAU,UAAU;CAE5B,MAAM,WAA+C,UAAe;AASlE,UARsB;AACpB,OAAI;AACF,QAAI,OAAO,UAAU,SAAU,QAAO,KAAK,MAAM,MAAM;AACvD,QAAI,iBAAiB,MAAO,QAAO,KAAK,MAAM,MAAM,QAAQ;YACrD,GAAG;AACZ,UAAO;MACL,CAEI,CAAC,MAAM,CAAC,SAAS,QAAa;GAEpC,MAAM,WAAW,KAAK,SAAS;AAE/B,OAAI,UAAU,SAAS,uCAAuC;AAC5D,UAAM;KACJ,OAAO,SAAS;KAChB,SAAS;KACV,CAAC;AACF;;AAGF,SAAM;IACJ,OAAO,gBAGA,UAAU,SAAS,KAAK,SAAS,QACvC;IACD,aACE,UAAU,WACV,KAAK,WACL,OAAO,YAAY,oBAAoB;IACzC,SAAS;IACV,CAAC;IACF;;CAGJ,MAAM,aAAmD,SAAc;AACrE,MAAI,MAAM,MACR,OAAM;GACJ,OAAO,gBAAgB,KAAK,MAAM,SAAS,KAAK,MAAM,QAAQ,QAAQ;GACtE,aACE,KAAK,MAAM,WAAW,KAAK,MAAM,QAAQ;GAC3C,SAAS;GACV,CAAC;AAGJ,MAAI,MAAM,QACR,OAAM;GACJ,OAAO,KAAK;GACZ,aAAa,KAAK;GAClB,SAAS;GACV,CAAC;;AAIN,QAAO;EACL;EACA;EACD;;AAGH,MAAa,sBAA6C,EAAE,eAAe;CACzE,MAAM,EAAE,SAAS,cAAc,gBAAgB;CAC/C,MAAM,YAAY,OAAoB,KAAK;AAE3C,KAAI,CAAC,UAAU,SAAS;EAuBtB,MAAM,cAAc,IAAI,YAAY;GAClC,gBAAgB;GAChB,eAxBoB,IAAI,cAAc;IACtC;IACA;IACA,YAAY,OAAO,QAAQ,YAAY,UAAU,aAAa;AAC5D,SAAI,SAAS,MAAM,kBACjB,UAAS,KAAK,kBAAkB,SAAS,aAAa;AACpD,kBAAY,kBAAkB,EAC5B,UACD,CAAC;OACF;AAGJ,SAAI,SAAS,MAAM,aACjB,UAAS,KAAK,aAAa,SAAS,aAAa;AAC/C,kBAAY,aAAa,EACvB,UACD,CAAC;OACF;;IAGP,CAAC;GAKD,CAAC;AACF,YAAU,UAAU;;AAGtB,QACE,oBAAC,qBAAD;EAAqB,QAAQ,UAAU;EACpC;EACmB"}
1
+ {"version":3,"file":"ReactQueryProvider.mjs","names":[],"sources":["../../../src/providers/ReactQueryProvider.tsx"],"sourcesContent":["'use client';\n\nimport {\n type DefaultOptions,\n MutationCache,\n QueryClient,\n QueryClientProvider,\n type QueryKey,\n type UseMutationOptions,\n} from '@tanstack/react-query';\nimport { type FC, type PropsWithChildren, useRef } from 'react';\nimport { useToast } from '../components/Toaster';\n\nconst defaultQueryOptions: DefaultOptions = {\n queries: {\n retry: 1,\n // Keep data fresh for 30 seconds to avoid unnecessary refetches during navigation\n staleTime: 30 * 1000,\n // Give the cache a little breathing room across route transitions:\n gcTime: 5 * 60 * 1000, // e.g. 5 minutes\n // Only refetch on mount if data is stale (not every single mount)\n refetchOnMount: true,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n },\n mutations: {\n retry: 0,\n },\n};\n\nconst SHOW_ERROR_CODE = false;\n\ndeclare module '@tanstack/react-query' {\n interface Register {\n mutationMeta: {\n onSuccess?: UseMutationOptions['onSuccess'];\n onError?: UseMutationOptions['onError'];\n invalidateQueries?: QueryKey[];\n resetQueries?: QueryKey[];\n };\n }\n}\n\nconst formatErrorCode = (errorCode: string) => errorCode.split('_').join(' ');\n\n/**\n * Hook to handle error logging and toast notifications\n */\nconst useToastEvents = () => {\n const { toast } = useToast();\n\n const onError: MutationCache['config']['onError'] = (error: any) => {\n const parsed = (() => {\n try {\n if (typeof error === 'string') return JSON.parse(error);\n if (error instanceof Error) return JSON.parse(error.message);\n } catch (_) {}\n return error;\n })();\n\n [parsed].flat().forEach((err: any) => {\n // Check for nested error object (standard in your API responses: { statusCode, error: { ... } })\n const apiError = err?.error ?? err;\n\n if (apiError?.code === 'RATE_LIMIT_EXCEEDED_UNAUTHENTICATED') {\n toast({\n title: apiError.message,\n variant: 'error',\n });\n return;\n }\n\n toast({\n title: formatErrorCode(\n SHOW_ERROR_CODE\n ? (apiError?.code ?? err?.code)\n : (apiError?.title ?? err?.title ?? 'Error')\n ),\n description:\n apiError?.message ??\n err?.message ??\n String(apiError ?? 'An error occurred'),\n variant: 'error',\n });\n });\n };\n\n const onSuccess: MutationCache['config']['onSuccess'] = (data: any) => {\n if (data?.error) {\n toast({\n title: formatErrorCode(data.error.title ?? data.error.code ?? 'Error'),\n description:\n data.error.message ?? data.error.code ?? 'An error occurred',\n variant: 'error',\n });\n }\n\n if (data?.message) {\n toast({\n title: data.message,\n description: data.description,\n variant: 'success',\n });\n }\n };\n\n return {\n onError,\n onSuccess,\n };\n};\n\nexport const getQueryClient = () =>\n new QueryClient({ defaultOptions: defaultQueryOptions });\n\nexport const ReactQueryProvider: FC<PropsWithChildren> = ({ children }) => {\n const { onError, onSuccess } = useToastEvents();\n const clientRef = useRef<QueryClient>(null);\n\n if (!clientRef.current) {\n const mutationCache = new MutationCache({\n onSuccess,\n onError,\n onSettled: (_data, _error, _variables, _context, mutation) => {\n if (mutation.meta?.invalidateQueries) {\n mutation.meta.invalidateQueries.forEach((queryKey) => {\n queryClient.invalidateQueries({\n queryKey,\n });\n });\n }\n\n if (mutation.meta?.resetQueries) {\n mutation.meta.resetQueries.forEach((queryKey) => {\n queryClient.resetQueries({\n queryKey,\n });\n });\n }\n },\n });\n\n const queryClient = new QueryClient({\n defaultOptions: defaultQueryOptions,\n mutationCache,\n });\n clientRef.current = queryClient;\n }\n\n return (\n <QueryClientProvider client={clientRef.current}>\n {children}\n </QueryClientProvider>\n );\n};\n"],"mappings":";;;;;;;;AAaA,MAAM,sBAAsC;CAC1C,SAAS;EACP,OAAO;EAEP,WAAW,KAAK;EAEhB,QAAQ,MAAS;EAEjB,gBAAgB;EAChB,sBAAsB;EACtB,oBAAoB;EACrB;CACD,WAAW,EACT,OAAO,GACR;CACF;AAeD,MAAM,mBAAmB,cAAsB,UAAU,MAAM,IAAI,CAAC,KAAK,IAAI;;;;AAK7E,MAAM,uBAAuB;CAC3B,MAAM,EAAE,UAAU,UAAU;CAE5B,MAAM,WAA+C,UAAe;AASlE,UARsB;AACpB,OAAI;AACF,QAAI,OAAO,UAAU,SAAU,QAAO,KAAK,MAAM,MAAM;AACvD,QAAI,iBAAiB,MAAO,QAAO,KAAK,MAAM,MAAM,QAAQ;YACrD,GAAG;AACZ,UAAO;MACL,CAEI,CAAC,MAAM,CAAC,SAAS,QAAa;GAEpC,MAAM,WAAW,KAAK,SAAS;AAE/B,OAAI,UAAU,SAAS,uCAAuC;AAC5D,UAAM;KACJ,OAAO,SAAS;KAChB,SAAS;KACV,CAAC;AACF;;AAGF,SAAM;IACJ,OAAO,gBAGA,UAAU,SAAS,KAAK,SAAS,QACvC;IACD,aACE,UAAU,WACV,KAAK,WACL,OAAO,YAAY,oBAAoB;IACzC,SAAS;IACV,CAAC;IACF;;CAGJ,MAAM,aAAmD,SAAc;AACrE,MAAI,MAAM,MACR,OAAM;GACJ,OAAO,gBAAgB,KAAK,MAAM,SAAS,KAAK,MAAM,QAAQ,QAAQ;GACtE,aACE,KAAK,MAAM,WAAW,KAAK,MAAM,QAAQ;GAC3C,SAAS;GACV,CAAC;AAGJ,MAAI,MAAM,QACR,OAAM;GACJ,OAAO,KAAK;GACZ,aAAa,KAAK;GAClB,SAAS;GACV,CAAC;;AAIN,QAAO;EACL;EACA;EACD;;AAGH,MAAa,uBACX,IAAI,YAAY,EAAE,gBAAgB,qBAAqB,CAAC;AAE1D,MAAa,sBAA6C,EAAE,eAAe;CACzE,MAAM,EAAE,SAAS,cAAc,gBAAgB;CAC/C,MAAM,YAAY,OAAoB,KAAK;AAE3C,KAAI,CAAC,UAAU,SAAS;EAuBtB,MAAM,cAAc,IAAI,YAAY;GAClC,gBAAgB;GAChB,eAxBoB,IAAI,cAAc;IACtC;IACA;IACA,YAAY,OAAO,QAAQ,YAAY,UAAU,aAAa;AAC5D,SAAI,SAAS,MAAM,kBACjB,UAAS,KAAK,kBAAkB,SAAS,aAAa;AACpD,kBAAY,kBAAkB,EAC5B,UACD,CAAC;OACF;AAGJ,SAAI,SAAS,MAAM,aACjB,UAAS,KAAK,aAAa,SAAS,aAAa;AAC/C,kBAAY,aAAa,EACvB,UACD,CAAC;OACF;;IAGP,CAAC;GAKD,CAAC;AACF,YAAU,UAAU;;AAGtB,QACE,oBAAC,qBAAD;EAAqB,QAAQ,UAAU;EACpC;EACmB"}
@@ -1,4 +1,4 @@
1
- import { ReactQueryProvider } from "./ReactQueryProvider.mjs";
1
+ import { ReactQueryProvider, getQueryClient } from "./ReactQueryProvider.mjs";
2
2
  import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
3
3
 
4
- export { ReactQueryDevtools, ReactQueryProvider };
4
+ export { ReactQueryDevtools, ReactQueryProvider, getQueryClient };