@regardio/react 0.3.3 → 0.4.2

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 (334) hide show
  1. package/dist/components/background-slideshow.d.ts +7 -5
  2. package/dist/components/background-slideshow.js +172 -74
  3. package/dist/components/blurry-gradient.d.ts +11 -4
  4. package/dist/components/blurry-gradient.js +121 -5
  5. package/dist/components/box.d.ts +12 -9
  6. package/dist/components/box.js +48 -23
  7. package/dist/components/carousel.d.ts +12 -10
  8. package/dist/components/carousel.js +146 -66
  9. package/dist/components/countdown.d.ts +5 -2
  10. package/dist/components/countdown.js +55 -21
  11. package/dist/components/definition-list.d.ts +19 -16
  12. package/dist/components/definition-list.js +83 -51
  13. package/dist/components/generic-error.d.ts +25 -5
  14. package/dist/components/generic-error.js +42 -34
  15. package/dist/components/heading.d.ts +14 -11
  16. package/dist/components/heading.js +114 -25
  17. package/dist/components/highlight.d.ts +11 -8
  18. package/dist/components/highlight.js +65 -17
  19. package/dist/components/icon-button.d.ts +7 -4
  20. package/dist/components/icon-button.js +16 -5
  21. package/dist/components/if.d.ts +6 -4
  22. package/dist/components/if.js +22 -14
  23. package/dist/components/iframe.d.ts +6 -4
  24. package/dist/components/iframe.js +26 -3
  25. package/dist/components/item.d.ts +18 -15
  26. package/dist/components/item.js +504 -301
  27. package/dist/components/leaflet-map.d.ts +5 -4
  28. package/dist/components/leaflet-map.js +192 -186
  29. package/dist/components/link.d.ts +24 -16
  30. package/dist/components/link.js +191 -102
  31. package/dist/components/list-item.d.ts +11 -8
  32. package/dist/components/list-item.js +35 -17
  33. package/dist/components/maptiler-map.d.ts +5 -4
  34. package/dist/components/maptiler-map.js +125 -112
  35. package/dist/components/markdown-container.d.ts +10 -8
  36. package/dist/components/markdown-container.js +181 -82
  37. package/dist/components/password-input.d.ts +7 -5
  38. package/dist/components/password-input.js +50 -8
  39. package/dist/components/picture.d.ts +19 -7
  40. package/dist/components/picture.js +75 -34
  41. package/dist/components/protected-email.d.ts +14 -3
  42. package/dist/components/protected-email.js +29 -15
  43. package/dist/components/text.d.ts +12 -9
  44. package/dist/components/text.js +42 -24
  45. package/dist/components/unordered-list.d.ts +11 -8
  46. package/dist/components/unordered-list.js +37 -19
  47. package/dist/hooks/use-current-route-data.d.ts +7 -2
  48. package/dist/hooks/use-current-route-data.js +13 -9
  49. package/dist/hooks/use-focus-search.d.ts +6 -3
  50. package/dist/hooks/use-focus-search.js +17 -13
  51. package/dist/hooks/use-matches-data.d.ts +9 -2
  52. package/dist/hooks/use-matches-data.js +12 -8
  53. package/dist/hooks/use-media-query.d.ts +8 -2
  54. package/dist/hooks/use-media-query.js +19 -15
  55. package/dist/hooks/use-mobile.d.ts +3 -2
  56. package/dist/hooks/use-mobile.js +18 -14
  57. package/dist/hooks/use-nonce.d.ts +12 -5
  58. package/dist/hooks/use-nonce.js +11 -7
  59. package/dist/hooks/use-orientation.d.ts +11 -3
  60. package/dist/hooks/use-orientation.js +28 -24
  61. package/dist/hooks/use-user.d.ts +43 -8
  62. package/dist/hooks/use-user.js +21 -13
  63. package/dist/utils/author.d.ts +4 -4
  64. package/dist/utils/author.js +49 -31
  65. package/dist/utils/cn.d.ts +8 -4
  66. package/dist/utils/cn.js +12 -8
  67. package/dist/utils/is-route-active.d.ts +19 -3
  68. package/dist/utils/is-route-active.js +45 -43
  69. package/dist/utils/locale.d.ts +66 -4
  70. package/dist/utils/locale.js +33 -22
  71. package/dist/utils/text.d.ts +24 -7
  72. package/dist/utils/text.js +114 -89
  73. package/package.json +5 -4
  74. package/dist/components/background-slideshow.d.ts.map +0 -1
  75. package/dist/components/blurry-gradient.d.ts.map +0 -1
  76. package/dist/components/box.d.ts.map +0 -1
  77. package/dist/components/carousel.d.ts.map +0 -1
  78. package/dist/components/countdown.d.ts.map +0 -1
  79. package/dist/components/definition-list.d.ts.map +0 -1
  80. package/dist/components/generic-error.d.ts.map +0 -1
  81. package/dist/components/heading.d.ts.map +0 -1
  82. package/dist/components/highlight.d.ts.map +0 -1
  83. package/dist/components/icon-button.d.ts.map +0 -1
  84. package/dist/components/if.d.ts.map +0 -1
  85. package/dist/components/iframe.d.ts.map +0 -1
  86. package/dist/components/item.d.ts.map +0 -1
  87. package/dist/components/leaflet-map.d.ts.map +0 -1
  88. package/dist/components/link.d.ts.map +0 -1
  89. package/dist/components/link.test.d.ts +0 -2
  90. package/dist/components/link.test.d.ts.map +0 -1
  91. package/dist/components/link.test.js +0 -204
  92. package/dist/components/list-item.d.ts.map +0 -1
  93. package/dist/components/maptiler-map.d.ts.map +0 -1
  94. package/dist/components/markdown-container.d.ts.map +0 -1
  95. package/dist/components/password-input.d.ts.map +0 -1
  96. package/dist/components/picture.d.ts.map +0 -1
  97. package/dist/components/protected-email.d.ts.map +0 -1
  98. package/dist/components/text.d.ts.map +0 -1
  99. package/dist/components/unordered-list.d.ts.map +0 -1
  100. package/dist/hooks/use-current-route-data.d.ts.map +0 -1
  101. package/dist/hooks/use-focus-search.d.ts.map +0 -1
  102. package/dist/hooks/use-matches-data.d.ts.map +0 -1
  103. package/dist/hooks/use-media-query.d.ts.map +0 -1
  104. package/dist/hooks/use-mobile.d.ts.map +0 -1
  105. package/dist/hooks/use-nonce.d.ts.map +0 -1
  106. package/dist/hooks/use-nonce.test.d.ts +0 -2
  107. package/dist/hooks/use-nonce.test.d.ts.map +0 -1
  108. package/dist/hooks/use-nonce.test.js +0 -27
  109. package/dist/hooks/use-orientation.d.ts.map +0 -1
  110. package/dist/hooks/use-user.d.ts.map +0 -1
  111. package/dist/shadcn/accordion.d.ts +0 -25
  112. package/dist/shadcn/accordion.d.ts.map +0 -1
  113. package/dist/shadcn/accordion.js +0 -45
  114. package/dist/shadcn/alert-dialog.d.ts +0 -73
  115. package/dist/shadcn/alert-dialog.d.ts.map +0 -1
  116. package/dist/shadcn/alert-dialog.js +0 -93
  117. package/dist/shadcn/alert.d.ts +0 -34
  118. package/dist/shadcn/alert.d.ts.map +0 -1
  119. package/dist/shadcn/alert.js +0 -42
  120. package/dist/shadcn/aspect-ratio.d.ts +0 -6
  121. package/dist/shadcn/aspect-ratio.d.ts.map +0 -1
  122. package/dist/shadcn/aspect-ratio.js +0 -7
  123. package/dist/shadcn/avatar.d.ts +0 -16
  124. package/dist/shadcn/avatar.d.ts.map +0 -1
  125. package/dist/shadcn/avatar.js +0 -27
  126. package/dist/shadcn/badge.d.ts +0 -29
  127. package/dist/shadcn/badge.d.ts.map +0 -1
  128. package/dist/shadcn/badge.js +0 -29
  129. package/dist/shadcn/breadcrumb.d.ts +0 -42
  130. package/dist/shadcn/breadcrumb.d.ts.map +0 -1
  131. package/dist/shadcn/breadcrumb.js +0 -74
  132. package/dist/shadcn/button.d.ts +0 -38
  133. package/dist/shadcn/button.d.ts.map +0 -1
  134. package/dist/shadcn/button.js +0 -38
  135. package/dist/shadcn/calendar.d.ts +0 -23
  136. package/dist/shadcn/calendar.d.ts.map +0 -1
  137. package/dist/shadcn/calendar.js +0 -163
  138. package/dist/shadcn/card.d.ts +0 -31
  139. package/dist/shadcn/card.d.ts.map +0 -1
  140. package/dist/shadcn/card.js +0 -55
  141. package/dist/shadcn/carousel.d.ts +0 -51
  142. package/dist/shadcn/carousel.d.ts.map +0 -1
  143. package/dist/shadcn/carousel.js +0 -161
  144. package/dist/shadcn/chart.d.ts +0 -103
  145. package/dist/shadcn/chart.d.ts.map +0 -1
  146. package/dist/shadcn/chart.js +0 -248
  147. package/dist/shadcn/checkbox.d.ts +0 -8
  148. package/dist/shadcn/checkbox.d.ts.map +0 -1
  149. package/dist/shadcn/checkbox.js +0 -22
  150. package/dist/shadcn/collapsible.d.ts +0 -16
  151. package/dist/shadcn/collapsible.d.ts.map +0 -1
  152. package/dist/shadcn/collapsible.js +0 -19
  153. package/dist/shadcn/command.d.ts +0 -61
  154. package/dist/shadcn/command.d.ts.map +0 -1
  155. package/dist/shadcn/command.js +0 -123
  156. package/dist/shadcn/context-menu.d.ts +0 -107
  157. package/dist/shadcn/context-menu.d.ts.map +0 -1
  158. package/dist/shadcn/context-menu.js +0 -151
  159. package/dist/shadcn/dialog.d.ts +0 -57
  160. package/dist/shadcn/dialog.d.ts.map +0 -1
  161. package/dist/shadcn/dialog.js +0 -96
  162. package/dist/shadcn/drawer.d.ts +0 -54
  163. package/dist/shadcn/drawer.d.ts.map +0 -1
  164. package/dist/shadcn/drawer.js +0 -96
  165. package/dist/shadcn/dropdown-menu.d.ts +0 -110
  166. package/dist/shadcn/dropdown-menu.d.ts.map +0 -1
  167. package/dist/shadcn/dropdown-menu.js +0 -152
  168. package/dist/shadcn/form.d.ts +0 -59
  169. package/dist/shadcn/form.d.ts.map +0 -1
  170. package/dist/shadcn/form.js +0 -99
  171. package/dist/shadcn/hover-card.d.ts +0 -20
  172. package/dist/shadcn/hover-card.d.ts.map +0 -1
  173. package/dist/shadcn/hover-card.js +0 -26
  174. package/dist/shadcn/input-otp.d.ts +0 -25
  175. package/dist/shadcn/input-otp.d.ts.map +0 -1
  176. package/dist/shadcn/input-otp.js +0 -54
  177. package/dist/shadcn/input.d.ts +0 -14
  178. package/dist/shadcn/input.d.ts.map +0 -1
  179. package/dist/shadcn/input.js +0 -48
  180. package/dist/shadcn/label.d.ts +0 -8
  181. package/dist/shadcn/label.d.ts.map +0 -1
  182. package/dist/shadcn/label.js +0 -16
  183. package/dist/shadcn/menubar.d.ts +0 -108
  184. package/dist/shadcn/menubar.d.ts.map +0 -1
  185. package/dist/shadcn/menubar.js +0 -174
  186. package/dist/shadcn/navigation-menu.d.ts +0 -79
  187. package/dist/shadcn/navigation-menu.d.ts.map +0 -1
  188. package/dist/shadcn/navigation-menu.js +0 -108
  189. package/dist/shadcn/pagination.d.ts +0 -45
  190. package/dist/shadcn/pagination.d.ts.map +0 -1
  191. package/dist/shadcn/pagination.js +0 -83
  192. package/dist/shadcn/popover.d.ts +0 -19
  193. package/dist/shadcn/popover.d.ts.map +0 -1
  194. package/dist/shadcn/popover.js +0 -29
  195. package/dist/shadcn/progress.d.ts +0 -9
  196. package/dist/shadcn/progress.d.ts.map +0 -1
  197. package/dist/shadcn/progress.js +0 -17
  198. package/dist/shadcn/radio-group.d.ts +0 -12
  199. package/dist/shadcn/radio-group.d.ts.map +0 -1
  200. package/dist/shadcn/radio-group.js +0 -32
  201. package/dist/shadcn/resizable.d.ts +0 -20
  202. package/dist/shadcn/resizable.d.ts.map +0 -1
  203. package/dist/shadcn/resizable.js +0 -32
  204. package/dist/shadcn/scroll-area.d.ts +0 -16
  205. package/dist/shadcn/scroll-area.d.ts.map +0 -1
  206. package/dist/shadcn/scroll-area.js +0 -40
  207. package/dist/shadcn/select.d.ts +0 -63
  208. package/dist/shadcn/select.d.ts.map +0 -1
  209. package/dist/shadcn/select.js +0 -120
  210. package/dist/shadcn/separator.d.ts +0 -10
  211. package/dist/shadcn/separator.d.ts.map +0 -1
  212. package/dist/shadcn/separator.js +0 -18
  213. package/dist/shadcn/sheet.d.ts +0 -48
  214. package/dist/shadcn/sheet.d.ts.map +0 -1
  215. package/dist/shadcn/sheet.js +0 -99
  216. package/dist/shadcn/sidebar.d.ts +0 -200
  217. package/dist/shadcn/sidebar.d.ts.map +0 -1
  218. package/dist/shadcn/sidebar.js +0 -528
  219. package/dist/shadcn/skeleton.d.ts +0 -6
  220. package/dist/shadcn/skeleton.d.ts.map +0 -1
  221. package/dist/shadcn/skeleton.js +0 -11
  222. package/dist/shadcn/slider.d.ts +0 -12
  223. package/dist/shadcn/slider.d.ts.map +0 -1
  224. package/dist/shadcn/slider.js +0 -50
  225. package/dist/shadcn/sonner.d.ts +0 -7
  226. package/dist/shadcn/sonner.d.ts.map +0 -1
  227. package/dist/shadcn/sonner.js +0 -20
  228. package/dist/shadcn/switch.d.ts +0 -8
  229. package/dist/shadcn/switch.d.ts.map +0 -1
  230. package/dist/shadcn/switch.js +0 -22
  231. package/dist/shadcn/table.d.ts +0 -35
  232. package/dist/shadcn/table.d.ts.map +0 -1
  233. package/dist/shadcn/table.js +0 -73
  234. package/dist/shadcn/tabs.d.ts +0 -20
  235. package/dist/shadcn/tabs.d.ts.map +0 -1
  236. package/dist/shadcn/tabs.js +0 -40
  237. package/dist/shadcn/textarea.d.ts +0 -7
  238. package/dist/shadcn/textarea.d.ts.map +0 -1
  239. package/dist/shadcn/textarea.js +0 -14
  240. package/dist/shadcn/toggle-group.d.ts +0 -22
  241. package/dist/shadcn/toggle-group.d.ts.map +0 -1
  242. package/dist/shadcn/toggle-group.js +0 -43
  243. package/dist/shadcn/toggle.d.ts +0 -29
  244. package/dist/shadcn/toggle.d.ts.map +0 -1
  245. package/dist/shadcn/toggle.js +0 -31
  246. package/dist/shadcn/tooltip.d.ts +0 -20
  247. package/dist/shadcn/tooltip.d.ts.map +0 -1
  248. package/dist/shadcn/tooltip.js +0 -40
  249. package/dist/stories/BackgroundSlideshow.stories.d.ts +0 -9
  250. package/dist/stories/BackgroundSlideshow.stories.d.ts.map +0 -1
  251. package/dist/stories/BackgroundSlideshow.stories.js +0 -60
  252. package/dist/stories/BlurryGradient.stories.d.ts +0 -11
  253. package/dist/stories/BlurryGradient.stories.d.ts.map +0 -1
  254. package/dist/stories/BlurryGradient.stories.js +0 -53
  255. package/dist/stories/Box.stories.d.ts +0 -13
  256. package/dist/stories/Box.stories.d.ts.map +0 -1
  257. package/dist/stories/Box.stories.js +0 -50
  258. package/dist/stories/Carousel.stories.d.ts +0 -9
  259. package/dist/stories/Carousel.stories.d.ts.map +0 -1
  260. package/dist/stories/Carousel.stories.js +0 -30
  261. package/dist/stories/Countdown.stories.d.ts +0 -7
  262. package/dist/stories/Countdown.stories.d.ts.map +0 -1
  263. package/dist/stories/Countdown.stories.js +0 -11
  264. package/dist/stories/DefinitionList.stories.d.ts +0 -9
  265. package/dist/stories/DefinitionList.stories.d.ts.map +0 -1
  266. package/dist/stories/DefinitionList.stories.js +0 -20
  267. package/dist/stories/GenericError.stories.d.ts +0 -9
  268. package/dist/stories/GenericError.stories.d.ts.map +0 -1
  269. package/dist/stories/GenericError.stories.js +0 -39
  270. package/dist/stories/Heading.stories.d.ts +0 -15
  271. package/dist/stories/Heading.stories.d.ts.map +0 -1
  272. package/dist/stories/Heading.stories.js +0 -61
  273. package/dist/stories/Highlight.stories.d.ts +0 -8
  274. package/dist/stories/Highlight.stories.d.ts.map +0 -1
  275. package/dist/stories/Highlight.stories.js +0 -19
  276. package/dist/stories/IconButton.stories.d.ts +0 -10
  277. package/dist/stories/IconButton.stories.d.ts.map +0 -1
  278. package/dist/stories/IconButton.stories.js +0 -32
  279. package/dist/stories/If.stories.d.ts +0 -13
  280. package/dist/stories/If.stories.d.ts.map +0 -1
  281. package/dist/stories/If.stories.js +0 -54
  282. package/dist/stories/Iframe.stories.d.ts +0 -8
  283. package/dist/stories/Iframe.stories.d.ts.map +0 -1
  284. package/dist/stories/Iframe.stories.js +0 -23
  285. package/dist/stories/Item.stories.d.ts +0 -10
  286. package/dist/stories/Item.stories.d.ts.map +0 -1
  287. package/dist/stories/Item.stories.js +0 -32
  288. package/dist/stories/Link.stories.d.ts +0 -10
  289. package/dist/stories/Link.stories.d.ts.map +0 -1
  290. package/dist/stories/Link.stories.js +0 -36
  291. package/dist/stories/ListItem.stories.d.ts +0 -9
  292. package/dist/stories/ListItem.stories.d.ts.map +0 -1
  293. package/dist/stories/ListItem.stories.js +0 -26
  294. package/dist/stories/MarkdownContainer.stories.d.ts +0 -11
  295. package/dist/stories/MarkdownContainer.stories.d.ts.map +0 -1
  296. package/dist/stories/MarkdownContainer.stories.js +0 -66
  297. package/dist/stories/PasswordInput.stories.d.ts +0 -9
  298. package/dist/stories/PasswordInput.stories.d.ts.map +0 -1
  299. package/dist/stories/PasswordInput.stories.js +0 -27
  300. package/dist/stories/Picture.stories.d.ts +0 -10
  301. package/dist/stories/Picture.stories.d.ts.map +0 -1
  302. package/dist/stories/Picture.stories.js +0 -46
  303. package/dist/stories/ProtectedEmail.stories.d.ts +0 -10
  304. package/dist/stories/ProtectedEmail.stories.d.ts.map +0 -1
  305. package/dist/stories/ProtectedEmail.stories.js +0 -34
  306. package/dist/stories/Text.stories.d.ts +0 -10
  307. package/dist/stories/Text.stories.d.ts.map +0 -1
  308. package/dist/stories/Text.stories.js +0 -31
  309. package/dist/stories/UnorderedList.stories.d.ts +0 -10
  310. package/dist/stories/UnorderedList.stories.d.ts.map +0 -1
  311. package/dist/stories/UnorderedList.stories.js +0 -24
  312. package/dist/test-setup.d.ts +0 -2
  313. package/dist/test-setup.d.ts.map +0 -1
  314. package/dist/test-setup.js +0 -1
  315. package/dist/utils/author.d.ts.map +0 -1
  316. package/dist/utils/author.test.d.ts +0 -2
  317. package/dist/utils/author.test.d.ts.map +0 -1
  318. package/dist/utils/author.test.js +0 -46
  319. package/dist/utils/cn.d.ts.map +0 -1
  320. package/dist/utils/cn.test.d.ts +0 -2
  321. package/dist/utils/cn.test.d.ts.map +0 -1
  322. package/dist/utils/cn.test.js +0 -33
  323. package/dist/utils/is-route-active.d.ts.map +0 -1
  324. package/dist/utils/is-route-active.test.d.ts +0 -2
  325. package/dist/utils/is-route-active.test.d.ts.map +0 -1
  326. package/dist/utils/is-route-active.test.js +0 -61
  327. package/dist/utils/locale.d.ts.map +0 -1
  328. package/dist/utils/locale.test.d.ts +0 -2
  329. package/dist/utils/locale.test.d.ts.map +0 -1
  330. package/dist/utils/locale.test.js +0 -99
  331. package/dist/utils/text.d.ts.map +0 -1
  332. package/dist/utils/text.test.d.ts +0 -2
  333. package/dist/utils/text.test.d.ts.map +0 -1
  334. package/dist/utils/text.test.js +0 -122
@@ -1,66 +0,0 @@
1
- import { MarkdownContainer } from '../components/markdown-container';
2
- const meta = {
3
- component: MarkdownContainer,
4
- parameters: {
5
- layout: 'padded',
6
- },
7
- tags: ['autodocs'],
8
- title: 'Components/MarkdownContainer',
9
- };
10
- export default meta;
11
- export const Default = {
12
- args: {
13
- children: `# Hello World
14
-
15
- This is a **markdown** paragraph with *italic* text.
16
-
17
- ## Features
18
-
19
- - List item 1
20
- - List item 2
21
- - List item 3
22
-
23
- [Link to example](https://example.com)`,
24
- locale: 'en',
25
- },
26
- };
27
- export const GermanLocale = {
28
- args: {
29
- children: `# Willkommen
30
-
31
- Dies ist ein "Beispieltext" mit typografischen Anführungszeichen.
32
-
33
- ## Funktionen
34
-
35
- - Punkt 1
36
- - Punkt 2`,
37
- locale: 'de',
38
- },
39
- };
40
- export const WithTruncation = {
41
- args: {
42
- children: 'This is a long paragraph that will be truncated. It contains multiple sentences. Each sentence adds more content. The truncation should work properly.',
43
- locale: 'en',
44
- sentences: 2,
45
- },
46
- };
47
- export const WithParagraphLimit = {
48
- args: {
49
- children: `First paragraph with some content.
50
-
51
- Second paragraph with more content.
52
-
53
- Third paragraph that should be hidden.
54
-
55
- Fourth paragraph also hidden.`,
56
- locale: 'en',
57
- paragraphs: 2,
58
- },
59
- };
60
- export const WithCharacterLimit = {
61
- args: {
62
- characters: 50,
63
- children: 'This is a long text that will be truncated after a certain number of characters.',
64
- locale: 'en',
65
- },
66
- };
@@ -1,9 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import { PasswordInput } from '../components/password-input';
3
- declare const meta: Meta<typeof PasswordInput>;
4
- export default meta;
5
- type Story = StoryObj<typeof PasswordInput>;
6
- export declare const Default: Story;
7
- export declare const WithValue: Story;
8
- export declare const WithCustomClass: Story;
9
- //# sourceMappingURL=PasswordInput.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PasswordInput.stories.d.ts","sourceRoot":"","sources":["../../src/stories/PasswordInput.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,aAAa,CAOpC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAC;AAE5C,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAK7B,CAAC"}
@@ -1,27 +0,0 @@
1
- import { PasswordInput } from '../components/password-input';
2
- const meta = {
3
- component: PasswordInput,
4
- parameters: {
5
- layout: 'padded',
6
- },
7
- tags: ['autodocs'],
8
- title: 'Components/PasswordInput',
9
- };
10
- export default meta;
11
- export const Default = {
12
- args: {
13
- placeholder: 'Enter password',
14
- },
15
- };
16
- export const WithValue = {
17
- args: {
18
- defaultValue: 'secretpassword',
19
- placeholder: 'Enter password',
20
- },
21
- };
22
- export const WithCustomClass = {
23
- args: {
24
- className: 'border border-gray-300 rounded px-3 py-2',
25
- placeholder: 'Styled password input',
26
- },
27
- };
@@ -1,10 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import { Picture } from '../components/picture';
3
- declare const meta: Meta<typeof Picture>;
4
- export default meta;
5
- type Story = StoryObj<typeof Picture>;
6
- export declare const SimpleImage: Story;
7
- export declare const WithFormats: Story;
8
- export declare const WithCustomSizes: Story;
9
- export declare const WithClassName: Story;
10
- //# sourceMappingURL=Picture.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Picture.stories.d.ts","sourceRoot":"","sources":["../../src/stories/Picture.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,OAAO,CAO9B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;AAEtC,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAUzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAU7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAC"}
@@ -1,46 +0,0 @@
1
- import { Picture } from '../components/picture';
2
- const meta = {
3
- component: Picture,
4
- parameters: {
5
- layout: 'padded',
6
- },
7
- tags: ['autodocs'],
8
- title: 'Components/Picture',
9
- };
10
- export default meta;
11
- export const SimpleImage = {
12
- args: {
13
- alt: 'Placeholder image',
14
- baseUrl: 'https://via.placeholder.com/400x300',
15
- },
16
- };
17
- export const WithFormats = {
18
- args: {
19
- alt: 'Responsive image',
20
- baseUrl: 'https://via.placeholder.com/{format}',
21
- formats: [
22
- { size: '480x360', width: 480 },
23
- { size: '800x600', width: 800 },
24
- { size: '1200x900', width: 1200 },
25
- ],
26
- },
27
- };
28
- export const WithCustomSizes = {
29
- args: {
30
- alt: 'Custom sizes image',
31
- baseUrl: 'https://via.placeholder.com/{format}',
32
- formats: [
33
- { size: '320x240', width: 320 },
34
- { size: '640x480', width: 640 },
35
- ],
36
- sizes: '(max-width: 640px) 320px, 640px',
37
- },
38
- };
39
- export const WithClassName = {
40
- args: {
41
- alt: 'Styled image',
42
- baseUrl: 'https://via.placeholder.com/400x300',
43
- className: 'rounded-lg shadow-lg',
44
- imgClassName: 'object-cover',
45
- },
46
- };
@@ -1,10 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import { ProtectedEmail } from '../components/protected-email';
3
- declare const meta: Meta<typeof ProtectedEmail>;
4
- export default meta;
5
- type Story = StoryObj<typeof ProtectedEmail>;
6
- export declare const Default: Story;
7
- export declare const WithCustomText: Story;
8
- export declare const WithClassName: Story;
9
- export declare const MultipleEmails: Story;
10
- //# sourceMappingURL=ProtectedEmail.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProtectedEmail.stories.d.ts","sourceRoot":"","sources":["../../src/stories/ProtectedEmail.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,cAAc,CAOrC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7C,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAM5B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAM3B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAkB5B,CAAC"}
@@ -1,34 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ProtectedEmail } from '../components/protected-email';
3
- const meta = {
4
- component: ProtectedEmail,
5
- parameters: {
6
- layout: 'padded',
7
- },
8
- tags: ['autodocs'],
9
- title: 'Components/ProtectedEmail',
10
- };
11
- export default meta;
12
- export const Default = {
13
- args: {
14
- domain: 'example.com',
15
- username: 'contact',
16
- },
17
- };
18
- export const WithCustomText = {
19
- args: {
20
- domain: 'example.com',
21
- text: 'Send us an email',
22
- username: 'info',
23
- },
24
- };
25
- export const WithClassName = {
26
- args: {
27
- className: 'text-blue-600 underline hover:text-blue-800',
28
- domain: 'company.org',
29
- username: 'support',
30
- },
31
- };
32
- export const MultipleEmails = {
33
- render: () => (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px' }, children: [_jsx(ProtectedEmail, { domain: "example.com", username: "sales" }), _jsx(ProtectedEmail, { domain: "example.com", username: "support" }), _jsx(ProtectedEmail, { domain: "example.com", text: "General Inquiries", username: "info" })] })),
34
- };
@@ -1,10 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import { Text } from '../components/text';
3
- declare const meta: Meta<typeof Text>;
4
- export default meta;
5
- type Story = StoryObj<typeof Text>;
6
- export declare const Default: Story;
7
- export declare const Subtitle: Story;
8
- export declare const Code: Story;
9
- export declare const AllVariants: Story;
10
- //# sourceMappingURL=Text.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Text.stories.d.ts","sourceRoot":"","sources":["../../src/stories/Text.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,CAO3B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAKlB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAQzB,CAAC"}
@@ -1,31 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Text } from '../components/text';
3
- const meta = {
4
- component: Text,
5
- parameters: {
6
- layout: 'padded',
7
- },
8
- tags: ['autodocs'],
9
- title: 'Components/Text',
10
- };
11
- export default meta;
12
- export const Default = {
13
- args: {
14
- children: 'This is default text content.',
15
- },
16
- };
17
- export const Subtitle = {
18
- args: {
19
- children: 'This is subtitle text with larger size.',
20
- variant: 'subtitle',
21
- },
22
- };
23
- export const Code = {
24
- args: {
25
- children: "const example = 'monospace code text';",
26
- variant: 'code',
27
- },
28
- };
29
- export const AllVariants = {
30
- render: () => (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '16px' }, children: [_jsx(Text, { variant: "primary", children: "Primary text (default)" }), _jsx(Text, { variant: "subtitle", children: "Subtitle text" }), _jsx(Text, { variant: "code", children: "Code text with monospace font" })] })),
31
- };
@@ -1,10 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
- import { UnorderedList } from '../components/unordered-list';
3
- declare const meta: Meta<typeof UnorderedList>;
4
- export default meta;
5
- type Story = StoryObj<typeof UnorderedList>;
6
- export declare const Default: Story;
7
- export declare const Inline: Story;
8
- export declare const Unstyled: Story;
9
- export declare const AllVariants: Story;
10
- //# sourceMappingURL=UnorderedList.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UnorderedList.stories.d.ts","sourceRoot":"","sources":["../../src/stories/UnorderedList.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,aAAa,CAOpC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAC;AAE5C,eAAO,MAAM,OAAO,EAAE,KAQrB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAQpB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAQtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KA0BzB,CAAC"}
@@ -1,24 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ListItem } from '../components/list-item';
3
- import { UnorderedList } from '../components/unordered-list';
4
- const meta = {
5
- component: UnorderedList,
6
- parameters: {
7
- layout: 'padded',
8
- },
9
- tags: ['autodocs'],
10
- title: 'Components/UnorderedList',
11
- };
12
- export default meta;
13
- export const Default = {
14
- render: () => (_jsxs(UnorderedList, { children: [_jsx(ListItem, { children: "Item 1" }), _jsx(ListItem, { children: "Item 2" }), _jsx(ListItem, { children: "Item 3" })] })),
15
- };
16
- export const Inline = {
17
- render: () => (_jsxs(UnorderedList, { variant: "inline", children: [_jsx(ListItem, { children: "Tag 1" }), _jsx(ListItem, { children: "Tag 2" }), _jsx(ListItem, { children: "Tag 3" })] })),
18
- };
19
- export const Unstyled = {
20
- render: () => (_jsxs(UnorderedList, { variant: "unstyled", children: [_jsx(ListItem, { children: "No bullet 1" }), _jsx(ListItem, { children: "No bullet 2" }), _jsx(ListItem, { children: "No bullet 3" })] })),
21
- };
22
- export const AllVariants = {
23
- render: () => (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '24px' }, children: [_jsxs("div", { children: [_jsx("h4", { children: "Primary (default)" }), _jsxs(UnorderedList, { variant: "primary", children: [_jsx(ListItem, { children: "Item 1" }), _jsx(ListItem, { children: "Item 2" })] })] }), _jsxs("div", { children: [_jsx("h4", { children: "Inline" }), _jsxs(UnorderedList, { variant: "inline", children: [_jsx(ListItem, { children: "Item 1" }), _jsx(ListItem, { children: "Item 2" })] })] }), _jsxs("div", { children: [_jsx("h4", { children: "Unstyled" }), _jsxs(UnorderedList, { variant: "unstyled", children: [_jsx(ListItem, { children: "Item 1" }), _jsx(ListItem, { children: "Item 2" })] })] })] })),
24
- };
@@ -1,2 +0,0 @@
1
- import '@testing-library/jest-dom/vitest';
2
- //# sourceMappingURL=test-setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-setup.d.ts","sourceRoot":"","sources":["../src/test-setup.ts"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC"}
@@ -1 +0,0 @@
1
- import '@testing-library/jest-dom/vitest';
@@ -1 +0,0 @@
1
- {"version":3,"file":"author.d.ts","sourceRoot":"","sources":["../../src/utils/author.tsx"],"names":[],"mappings":"AAAA,KAAK,UAAU,GAAG;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CA0B3D;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAoC3E"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=author.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"author.test.d.ts","sourceRoot":"","sources":["../../src/utils/author.test.ts"],"names":[],"mappings":""}
@@ -1,46 +0,0 @@
1
- import { describe, expect, test } from 'vitest';
2
- import { parseAuthorString } from './author';
3
- describe('parseAuthorString', () => {
4
- test('parses name only', () => {
5
- expect(parseAuthorString('John Doe')).toEqual({ name: 'John Doe' });
6
- });
7
- test('parses name and email', () => {
8
- expect(parseAuthorString('John Doe <john@example.com>')).toEqual({
9
- email: 'john@example.com',
10
- name: 'John Doe',
11
- });
12
- });
13
- test('parses name and URL', () => {
14
- expect(parseAuthorString('John Doe (https://example.com)')).toEqual({
15
- name: 'John Doe',
16
- url: 'https://example.com',
17
- });
18
- });
19
- test('parses name, email, and URL', () => {
20
- expect(parseAuthorString('John Doe <john@example.com> (https://example.com)')).toEqual({
21
- email: 'john@example.com',
22
- name: 'John Doe',
23
- url: 'https://example.com',
24
- });
25
- });
26
- test('handles email only (no name)', () => {
27
- expect(parseAuthorString('<john@example.com>')).toEqual({
28
- email: 'john@example.com',
29
- });
30
- });
31
- test('handles whitespace in name', () => {
32
- expect(parseAuthorString(' John Doe <john@example.com>')).toEqual({
33
- email: 'john@example.com',
34
- name: 'John Doe',
35
- });
36
- });
37
- test('returns empty object for empty string', () => {
38
- expect(parseAuthorString('')).toEqual({});
39
- });
40
- test('handles relative URL', () => {
41
- expect(parseAuthorString('John Doe (/about/john)')).toEqual({
42
- name: 'John Doe',
43
- url: '/about/john',
44
- });
45
- });
46
- });
@@ -1 +0,0 @@
1
- {"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../src/utils/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAgB,MAAM,KAAK,CAAC;AAGvC,YAAY,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC;AAExC,eAAO,MAAQ,GAAG,qBAAE,OAAO,uBAMzB,CAAC;AAEH,eAAO,MAAM,EAAE,GAAI,GAAG,QAAQ,UAAU,CAAC,OAAO,EAAE,CAAC,WAAwB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cn.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cn.test.d.ts","sourceRoot":"","sources":["../../src/utils/cn.test.ts"],"names":[],"mappings":""}
@@ -1,33 +0,0 @@
1
- import { expect, test } from 'vitest';
2
- import { cn } from './cn';
3
- test('removes conflicting classes using twMerge', () => {
4
- const classes = cn('text-red-500', 'text-blue-500');
5
- expect(classes).toBe('text-blue-500');
6
- });
7
- test('merges multiple classes into a single string', () => {
8
- const classes = cn('text-red-500', 'font-bold');
9
- expect(classes).toBe('text-red-500 font-bold');
10
- });
11
- test('removes empty classes', () => {
12
- const classes = cn('text-red-500', '', 'font-bold');
13
- expect(classes).toBe('text-red-500 font-bold');
14
- });
15
- test('removes undefined classes', () => {
16
- const classes = cn('text-red-500', undefined, 'font-bold');
17
- expect(classes).toBe('text-red-500 font-bold');
18
- });
19
- test('removes null classes', () => {
20
- const classes = cn('text-red-500', null, 'font-bold');
21
- expect(classes).toBe('text-red-500 font-bold');
22
- });
23
- test('resolves nested arrays', () => {
24
- const classes = cn('text-red-500', ['bg-blue-500', 'font-bold']);
25
- expect(classes).toBe('text-red-500 bg-blue-500 font-bold');
26
- });
27
- test('resolves nested objects', () => {
28
- const classes = cn('text-red-500', {
29
- 'bg-blue-500': true,
30
- 'font-bold': true,
31
- });
32
- expect(classes).toBe('text-red-500 bg-blue-500 font-bold');
33
- });
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-route-active.d.ts","sourceRoot":"","sources":["../../src/utils/is-route-active.ts"],"names":[],"mappings":"AASA,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,WAqBxD;AAUD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,SAAI,WAmBvF"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=is-route-active.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-route-active.test.d.ts","sourceRoot":"","sources":["../../src/utils/is-route-active.test.ts"],"names":[],"mappings":""}
@@ -1,61 +0,0 @@
1
- import { describe, expect, test } from 'vitest';
2
- import { checkIfRouteIsActive, isRouteActive } from './is-route-active';
3
- describe('isRouteActive', () => {
4
- test('returns true when path matches currentPath exactly', () => {
5
- expect(isRouteActive('/about', '/about')).toBe(true);
6
- expect(isRouteActive('/contact', '/contact')).toBe(true);
7
- });
8
- test('returns false when paths are different', () => {
9
- expect(isRouteActive('/about', '/contact')).toBe(false);
10
- });
11
- test('with end=true (default), only matches exact path', () => {
12
- expect(isRouteActive('/about', '/about/team', true)).toBe(false);
13
- expect(isRouteActive('/about', '/about', true)).toBe(true);
14
- });
15
- test('with end=false, matches parent paths', () => {
16
- expect(isRouteActive('/about', '/about/team', false)).toBe(true);
17
- expect(isRouteActive('/about', '/about/team/members', false)).toBe(true);
18
- });
19
- test('with end as function, uses function result', () => {
20
- const endFn = (path) => path.includes('team');
21
- expect(isRouteActive('/about', '/about/team', endFn)).toBe(false);
22
- expect(isRouteActive('/about', '/about/contact', endFn)).toBe(true);
23
- });
24
- test('root path only matches root', () => {
25
- expect(isRouteActive('/', '/')).toBe(true);
26
- expect(isRouteActive('/', '/about', true)).toBe(false);
27
- });
28
- });
29
- describe('checkIfRouteIsActive', () => {
30
- test('returns true for exact match', () => {
31
- expect(checkIfRouteIsActive('/about', '/about')).toBe(true);
32
- expect(checkIfRouteIsActive('/users/123', '/users/123')).toBe(true);
33
- });
34
- test('returns false when root is target but current is not root', () => {
35
- expect(checkIfRouteIsActive('/', '/about')).toBe(false);
36
- expect(checkIfRouteIsActive('/', '/users/123')).toBe(false);
37
- });
38
- test('returns true for root when current is root', () => {
39
- expect(checkIfRouteIsActive('/', '/')).toBe(true);
40
- });
41
- test('returns false when target is not in current path', () => {
42
- expect(checkIfRouteIsActive('/about', '/contact')).toBe(false);
43
- expect(checkIfRouteIsActive('/users', '/posts')).toBe(false);
44
- });
45
- test('with depth=1, matches when segments match within depth', () => {
46
- expect(checkIfRouteIsActive('/about', '/about/team', 1)).toBe(false);
47
- expect(checkIfRouteIsActive('/about', '/about/team/members', 1)).toBe(false);
48
- });
49
- test('with depth=2, matches one level deep', () => {
50
- expect(checkIfRouteIsActive('/about', '/about/team', 2)).toBe(true);
51
- expect(checkIfRouteIsActive('/about', '/about/team/members', 2)).toBe(true);
52
- });
53
- test('with depth=3, matches two levels deep', () => {
54
- expect(checkIfRouteIsActive('/about', '/about/team', 3)).toBe(true);
55
- expect(checkIfRouteIsActive('/about', '/about/team/members', 3)).toBe(true);
56
- expect(checkIfRouteIsActive('/about', '/about/team/members/details', 3)).toBe(true);
57
- });
58
- test('ignores query parameters in current route', () => {
59
- expect(checkIfRouteIsActive('/about', '/about?foo=bar')).toBe(true);
60
- });
61
- });
@@ -1 +0,0 @@
1
- {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/utils/locale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAK5C,MAAM,WAAW,mBAAmB;IAIlC,aAAa,EAAE,MAAM,CAAC;IAKtB,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAKpC,aAAa,CAAC,EAAE;QAId,IAAI,CAAC,EAAE,MAAM,CAAC;QAKd,MAAM,CAAC,EAAE,MAAM,CAAC;QAKhB,QAAQ,CAAC,EAAE,OAAO,CAAC;QAKnB,MAAM,CAAC,EAAE,OAAO,CAAC;QAKjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;KACtC,CAAC;IAKF,gBAAgB,CAAC,EAAE;QAIjB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;KAChD,CAAC;CACH;AAKD,MAAM,WAAW,YAAY;IAI3B,YAAY,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;IAK9C,gBAAgB,EAAE,sBAAsB,CAAC;CAC1C;AAoBD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAmC7E"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=locale.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"locale.test.d.ts","sourceRoot":"","sources":["../../src/utils/locale.test.ts"],"names":[],"mappings":""}
@@ -1,99 +0,0 @@
1
- import { LanguageDetectorLingui } from '@regardio/js/intl/language-detector';
2
- import { beforeEach, describe, expect, test } from 'vitest';
3
- import { createLocaleConfig } from './locale';
4
- describe('createLocaleConfig', () => {
5
- const originalEnvMode = import.meta.env.MODE;
6
- beforeEach(() => {
7
- import.meta.env.MODE = originalEnvMode;
8
- });
9
- test('creates config with default options', async () => {
10
- const config = createLocaleConfig({
11
- defaultLocale: 'en',
12
- supportedLocales: ['en', 'de'],
13
- });
14
- expect(config.localeCookie).toBeDefined();
15
- expect(config.localeCookie.name).toBe('locale');
16
- const request = new Request('https://example.com', {
17
- headers: {
18
- Cookie: await config.localeCookie.serialize('en'),
19
- },
20
- });
21
- const parsedValue = await config.localeCookie.parse(request.headers.get('Cookie'));
22
- expect(parsedValue).toBe('en');
23
- expect(config.languageDetector).toBeInstanceOf(LanguageDetectorLingui);
24
- const mockRequest = new Request('https://example.com/en/page', {
25
- headers: { 'Accept-Language': 'de' },
26
- });
27
- const detectedLocale = await config.languageDetector.getLocale(mockRequest);
28
- expect(detectedLocale).toBe('en');
29
- });
30
- test('creates config with custom cookie options', async () => {
31
- const config = createLocaleConfig({
32
- cookieOptions: {
33
- httpOnly: true,
34
- maxAge: 3600,
35
- name: 'custom-locale',
36
- sameSite: 'strict',
37
- secure: true,
38
- },
39
- defaultLocale: 'fr',
40
- supportedLocales: ['fr', 'es'],
41
- });
42
- expect(config.localeCookie.name).toBe('custom-locale');
43
- const cookieHeader = await config.localeCookie.serialize('fr');
44
- console.log('Custom cookie header:', cookieHeader);
45
- expect(typeof cookieHeader).toBe('string');
46
- expect(cookieHeader.includes('custom-locale=')).toBe(true);
47
- expect(/samesite=strict/i.test(cookieHeader)).toBe(true);
48
- expect(/httponly/i.test(cookieHeader)).toBe(true);
49
- expect(/secure/i.test(cookieHeader)).toBe(true);
50
- expect(/max-age=3600/i.test(cookieHeader)).toBe(true);
51
- });
52
- test('creates config with custom detection order', async () => {
53
- const config = createLocaleConfig({
54
- defaultLocale: 'de',
55
- detectionOptions: {
56
- order: ['header', 'cookie', 'urlPath'],
57
- },
58
- supportedLocales: ['de', 'en'],
59
- });
60
- const mockRequest = new Request('https://example.com/en/page', {
61
- headers: { 'Accept-Language': 'de' },
62
- });
63
- const detectedLocale = await config.languageDetector.getLocale(mockRequest);
64
- expect(detectedLocale).toBe('de');
65
- });
66
- test('secure cookie defaults to true in production environment', async () => {
67
- import.meta.env.MODE = 'production';
68
- const config = createLocaleConfig({
69
- defaultLocale: 'en',
70
- supportedLocales: ['en', 'de'],
71
- });
72
- const cookieHeader = await config.localeCookie.serialize('en');
73
- console.log('Production cookie header:', cookieHeader);
74
- expect(typeof cookieHeader).toBe('string');
75
- expect(/secure/i.test(cookieHeader)).toBe(true);
76
- });
77
- test('secure cookie defaults to false in development environment', async () => {
78
- import.meta.env.MODE = 'development';
79
- const config = createLocaleConfig({
80
- defaultLocale: 'en',
81
- supportedLocales: ['en', 'de'],
82
- });
83
- const cookieHeader = await config.localeCookie.serialize('en');
84
- console.log('Development cookie header:', cookieHeader);
85
- expect(typeof cookieHeader).toBe('string');
86
- expect(/secure/i.test(cookieHeader)).toBe(false);
87
- });
88
- test('handles readonly supportedLocales array', async () => {
89
- const supportedLocales = ['en', 'de'];
90
- const config = createLocaleConfig({
91
- defaultLocale: 'en',
92
- supportedLocales,
93
- });
94
- const enRequest = new Request('https://example.com/en/page');
95
- expect(await config.languageDetector.getLocale(enRequest)).toBe('en');
96
- const deRequest = new Request('https://example.com/de/page');
97
- expect(await config.languageDetector.getLocale(deRequest)).toBe('de');
98
- });
99
- });
@@ -1 +0,0 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/utils/text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAmD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE/F,eAAO,MAAM,cAAc,GAAI,MAAM,SAAS,GAAG,MAAM,EAAE,cAAc,QAAQ,KAAG,SA2CjF,CAAC;AAEF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAM7E;AAkCD,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAU/E;AA6FD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAWtE;AAKD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAE/D"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=text.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text.test.d.ts","sourceRoot":"","sources":["../../src/utils/text.test.ts"],"names":[],"mappings":""}