xertica-ui 2.5.2 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (577) hide show
  1. package/CHANGELOG.md +687 -656
  2. package/README.md +482 -482
  3. package/assets/xertica-logo.svg +37 -37
  4. package/assets/xertica-x-logo.svg +20 -20
  5. package/bin/cli.ts +1293 -1256
  6. package/bin/generate-tokens.ts +256 -262
  7. package/bin/language-config.test.ts +32 -0
  8. package/bin/language-config.ts +36 -11
  9. package/components/Introduction.mdx +121 -121
  10. package/components/assistant/code-block/CodeBlock.tsx +7 -6
  11. package/components/assistant/code-block/code-block.mdx +38 -38
  12. package/components/assistant/code-block/code-block.test.tsx +2 -1
  13. package/components/assistant/formatted-document/FormattedDocument.tsx +3 -0
  14. package/components/assistant/formatted-document/formatted-document.mdx +31 -31
  15. package/components/assistant/formatted-document/formatted-document.test.tsx +5 -4
  16. package/components/assistant/markdown-message/MarkdownMessage.tsx +1 -1
  17. package/components/assistant/markdown-message/markdown-message.mdx +44 -44
  18. package/components/assistant/modern-chat-input/modern-chat-input.mdx +71 -71
  19. package/components/assistant/modern-chat-input/modern-chat-input.test.tsx +3 -2
  20. package/components/assistant/xertica-assistant/parts/AssistantMessageBubble.tsx +1 -1
  21. package/components/assistant/xertica-assistant/types.ts +3 -2
  22. package/components/assistant/xertica-assistant/use-assistant.ts +5 -4
  23. package/components/assistant/xertica-assistant/xertica-assistant.mdx +66 -66
  24. package/components/assistant/xertica-assistant/xertica-assistant.test.tsx +2 -1
  25. package/components/blocks/card-patterns/card-patterns.mdx +123 -123
  26. package/components/brand/branding/branding.mdx +27 -27
  27. package/components/brand/language-selector/language-selector.mdx +126 -126
  28. package/components/brand/theme-toggle/theme-toggle.mdx +47 -47
  29. package/components/brand/theme-toggle/theme-toggle.test.tsx +6 -2
  30. package/components/brand/xertica-logo/xertica-logo.mdx +56 -56
  31. package/components/brand/xertica-orbe/xertica-orbe.mdx +38 -38
  32. package/components/brand/xertica-provider/XerticaProvider.tsx +112 -112
  33. package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
  34. package/components/brand/xertica-provider/xertica-provider.test.tsx +25 -13
  35. package/components/brand/xertica-xlogo/xertica-xlogo.mdx +55 -55
  36. package/components/examples/DrawingMapExample.tsx +1 -4
  37. package/components/layout/header/header.mdx +117 -117
  38. package/components/layout/header/header.test.tsx +2 -1
  39. package/components/layout/sidebar/sidebar.mdx +99 -99
  40. package/components/layout/sidebar/sidebar.stories.tsx +1033 -1033
  41. package/components/layout/sidebar/sidebar.test.tsx +2 -1
  42. package/components/layout/sidebar/sidebar.tsx +1509 -1501
  43. package/components/media/audio-player/AudioPlayer.mdx +67 -67
  44. package/components/media/audio-player/AudioPlayer.test.tsx +2 -1
  45. package/components/media/floating-media-wrapper.mdx +74 -74
  46. package/components/media/video-player/VideoPlayer.mdx +102 -102
  47. package/components/media/video-player/VideoPlayer.test.tsx +3 -2
  48. package/components/pages/forgot-password-page/ForgotPasswordPage.tsx +188 -188
  49. package/components/pages/forgot-password-page/forgot-password-page.mdx +60 -60
  50. package/components/pages/forgot-password-page/forgot-password-page.test.tsx +2 -1
  51. package/components/pages/home-content/HomeContent.tsx +2 -3
  52. package/components/pages/home-content/home-content.mdx +62 -62
  53. package/components/pages/home-page/HomePage.stories.tsx +8 -15
  54. package/components/pages/home-page/home-page.mdx +53 -53
  55. package/components/pages/home-page/home-page.test.tsx +2 -1
  56. package/components/pages/login-page/LoginPage.mdx +31 -31
  57. package/components/pages/login-page/LoginPage.tsx +218 -218
  58. package/components/pages/login-page/login-page.test.tsx +2 -1
  59. package/components/pages/reset-password-page/ResetPasswordPage.tsx +243 -243
  60. package/components/pages/reset-password-page/reset-password-page.mdx +63 -63
  61. package/components/pages/template-content/TemplateContent.tsx +2 -3
  62. package/components/pages/template-content/template-content.mdx +61 -61
  63. package/components/pages/template-page/TemplatePage.stories.tsx +32 -32
  64. package/components/pages/template-page/template-page.mdx +53 -53
  65. package/components/pages/template-page/template-page.test.tsx +2 -1
  66. package/components/pages/verify-email-page/VerifyEmailPage.tsx +206 -206
  67. package/components/pages/verify-email-page/verify-email-page.mdx +55 -55
  68. package/components/public-api-smoke.test.tsx +10 -6
  69. package/components/shared/assistant-utils.ts +3 -2
  70. package/components/shared/navigation.ts +2 -2
  71. package/components/ui/accordion/accordion.mdx +29 -29
  72. package/components/ui/alert/alert.mdx +29 -29
  73. package/components/ui/alert-dialog/alert-dialog.mdx +26 -26
  74. package/components/ui/aspect-ratio/aspect-ratio.mdx +25 -25
  75. package/components/ui/assistant-chart/AssistantChart.tsx +8 -2
  76. package/components/ui/assistant-chart/assistant-chart.mdx +25 -25
  77. package/components/ui/avatar/avatar.mdx +26 -26
  78. package/components/ui/badge/badge.mdx +28 -28
  79. package/components/ui/breadcrumb/breadcrumb.mdx +26 -26
  80. package/components/ui/button/button.mdx +29 -29
  81. package/components/ui/calendar/calendar.mdx +26 -26
  82. package/components/ui/card/card.mdx +26 -26
  83. package/components/ui/carousel/carousel.mdx +26 -26
  84. package/components/ui/chart/chart.mdx +26 -26
  85. package/components/ui/chart/chart.test.tsx +178 -178
  86. package/components/ui/chart/chart.tsx +2252 -2245
  87. package/components/ui/checkbox/checkbox.mdx +26 -26
  88. package/components/ui/collapsible/collapsible.mdx +25 -25
  89. package/components/ui/command/command.mdx +26 -26
  90. package/components/ui/context-menu/context-menu.mdx +26 -26
  91. package/components/ui/dialog/dialog.mdx +26 -26
  92. package/components/ui/drawer/drawer.mdx +26 -26
  93. package/components/ui/dropdown-menu/dropdown-menu.mdx +26 -26
  94. package/components/ui/empty/empty.mdx +26 -26
  95. package/components/ui/file-upload/file-upload.mdx +26 -26
  96. package/components/ui/form/form.mdx +20 -20
  97. package/components/ui/google-maps-loader/google-maps-loader.mdx +68 -68
  98. package/components/ui/hover-card/hover-card.mdx +26 -26
  99. package/components/ui/input/input.mdx +29 -29
  100. package/components/ui/input-otp/input-otp.mdx +26 -26
  101. package/components/ui/label/label.mdx +25 -25
  102. package/components/ui/map/map.mdx +26 -26
  103. package/components/ui/map/map.tsx +6 -1
  104. package/components/ui/menubar/menubar.mdx +26 -26
  105. package/components/ui/navigation-menu/navigation-menu.mdx +26 -26
  106. package/components/ui/notification-badge/notification-badge.mdx +26 -26
  107. package/components/ui/page-header/page-header.mdx +44 -44
  108. package/components/ui/pagination/pagination.mdx +26 -26
  109. package/components/ui/popover/popover.mdx +26 -26
  110. package/components/ui/progress/progress.mdx +25 -25
  111. package/components/ui/radio-group/radio-group.mdx +26 -26
  112. package/components/ui/rating/rating.mdx +26 -26
  113. package/components/ui/resizable/resizable.mdx +26 -26
  114. package/components/ui/resizable/resizable.tsx +13 -8
  115. package/components/ui/rich-text-editor/rich-text-editor.mdx +47 -47
  116. package/components/ui/route-map/route-map.mdx +26 -26
  117. package/components/ui/scroll-area/scroll-area.mdx +25 -25
  118. package/components/ui/search/search.mdx +27 -27
  119. package/components/ui/select/select.mdx +26 -26
  120. package/components/ui/separator/separator.mdx +25 -25
  121. package/components/ui/sheet/sheet.mdx +26 -26
  122. package/components/ui/simple-map/simple-map.mdx +25 -25
  123. package/components/ui/skeleton/skeleton.mdx +25 -25
  124. package/components/ui/slider/slider.mdx +26 -26
  125. package/components/ui/sonner/sonner.mdx +26 -26
  126. package/components/ui/stats-card/stats-card.mdx +26 -26
  127. package/components/ui/stats-card/stats-card.stories.tsx +117 -117
  128. package/components/ui/stats-card/stats-card.tsx +109 -109
  129. package/components/ui/stepper/stepper.mdx +26 -26
  130. package/components/ui/switch/switch.mdx +25 -25
  131. package/components/ui/table/table.mdx +27 -27
  132. package/components/ui/tabs/tabs.mdx +26 -26
  133. package/components/ui/textarea/textarea.mdx +25 -25
  134. package/components/ui/timeline/timeline.mdx +26 -26
  135. package/components/ui/toggle/toggle.mdx +26 -26
  136. package/components/ui/toggle-group/toggle-group.mdx +26 -26
  137. package/components/ui/tooltip/tooltip.mdx +26 -26
  138. package/components/ui/tree-view/tree-view.mdx +26 -26
  139. package/components.json +511 -511
  140. package/contexts/BrandColorsContext.tsx +282 -282
  141. package/contexts/i18n-singleton.test.tsx +57 -0
  142. package/contexts/theme-data.ts +391 -391
  143. package/dist/{AssistantChart-DMJJ_Amf.js → AssistantChart-BMNSA_Pk.js} +5 -5
  144. package/dist/{AssistantChart-D0A1FPYt.cjs → AssistantChart-BzM7plyc.cjs} +150 -114
  145. package/dist/{AssistantChart-BXU1ACnh.js → AssistantChart-C842evTi.js} +134 -240
  146. package/dist/{AssistantChart-BZTPJ5dP.cjs → AssistantChart-CVF2uh37.cjs} +5 -5
  147. package/dist/{AssistantChart-COGiOV-g.cjs → AssistantChart-JooMdVQU.cjs} +17 -7
  148. package/dist/{AssistantChart-CWX1OWNM.js → AssistantChart-KHS-tp-L.js} +17 -7
  149. package/dist/{BrandColorsContext-BwY-b6M4.cjs → BrandColorsContext-B4_81eas.cjs} +2 -2
  150. package/dist/{BrandColorsContext-BMRJ04Wf.js → BrandColorsContext-DbK5LnQ_.js} +2 -2
  151. package/dist/{CodeBlock-CjeFavqV.js → CodeBlock-DiKO8ocT.js} +11 -11
  152. package/dist/{CodeBlock-CV6dtsTM.cjs → CodeBlock-ZYThr7Kn.cjs} +12 -9
  153. package/dist/{XerticaXLogo-mqjoBiLI.js → LanguageSelector-CmTj3lWq.js} +85 -82
  154. package/dist/{XerticaXLogo-BX3ueACh.js → LanguageSelector-DxW6o7bt.js} +81 -81
  155. package/dist/{XerticaXLogo-uQgwns_E.cjs → LanguageSelector-Sw73qvWV.cjs} +84 -81
  156. package/dist/{ThemeContext-BgclCB35.js → ThemeContext-BGeh_Kdr.js} +290 -212
  157. package/dist/{ThemeContext-BblcjQup.cjs → ThemeContext-D50irx5T.cjs} +291 -205
  158. package/dist/{VerifyEmailPage-C_Zk6Gen.cjs → VerifyEmailPage-B6bOrybJ.cjs} +17 -17
  159. package/dist/{VerifyEmailPage-B31mCrMc.js → VerifyEmailPage-BRE5Fz59.js} +8 -8
  160. package/dist/{VerifyEmailPage-BJjAMUTW.js → VerifyEmailPage-BcCluouh.js} +151 -78
  161. package/dist/VerifyEmailPage-Bx1sr0uQ.cjs +3298 -0
  162. package/dist/{VerifyEmailPage-X14vhdyl.js → VerifyEmailPage-DUYyXCX9.js} +12 -12
  163. package/dist/VerifyEmailPage-DXXMHbzq.js +3289 -0
  164. package/dist/{VerifyEmailPage-u_Dn7t1U.cjs → VerifyEmailPage-DpYtFk35.cjs} +21 -21
  165. package/dist/{VerifyEmailPage-Cyl55sJb.js → VerifyEmailPage-NXKWW3Dk.js} +134 -64
  166. package/dist/{VerifyEmailPage-Bv8Ah_TK.cjs → VerifyEmailPage-QrCz4Wqr.cjs} +143 -73
  167. package/dist/{VerifyEmailPage-CkBYfsNy.cjs → VerifyEmailPage-ZmQra0Wi.cjs} +160 -87
  168. package/dist/{XerticaProvider-BErr83Bg.js → XerticaProvider-BF3q_myt.js} +5 -4
  169. package/dist/{XerticaProvider-CeS5G_n5.cjs → XerticaProvider-C_JSOz1U.cjs} +2 -2
  170. package/dist/{XerticaProvider-CwOkHxiT.cjs → XerticaProvider-D5zjrqZq.cjs} +5 -4
  171. package/dist/{XerticaProvider-ra2NciRq.js → XerticaProvider-KTGl4Cn1.js} +2 -2
  172. package/dist/{alert-dialog-DqlRW_An.js → alert-dialog-BrpwXKwS.js} +3 -3
  173. package/dist/{alert-dialog-DhwPioBa.cjs → alert-dialog-CZU1Zase.cjs} +3 -3
  174. package/dist/{alert-dialog-KpoabzJb.js → alert-dialog-ClRoLH7l.js} +40 -56
  175. package/dist/{alert-dialog-B4M3vQKS.cjs → alert-dialog-DBBqvU-V.cjs} +53 -38
  176. package/dist/assistant.cjs.js +2 -2
  177. package/dist/assistant.es.js +2 -2
  178. package/dist/brand.cjs.js +6 -6
  179. package/dist/brand.es.js +2 -2
  180. package/dist/cli.js +63 -21
  181. package/dist/components/assistant/code-block/CodeBlock.d.ts +2 -1
  182. package/dist/components/assistant/formatted-document/FormattedDocument.d.ts +2 -1
  183. package/dist/components/assistant/markdown-message/MarkdownMessage.d.ts +2 -1
  184. package/dist/components/assistant/modern-chat-input/ModernChatInput.d.ts +2 -1
  185. package/dist/components/assistant/xertica-assistant/parts/AssistantCollapsedView.d.ts +2 -1
  186. package/dist/components/assistant/xertica-assistant/parts/AssistantConversationList.d.ts +2 -1
  187. package/dist/components/assistant/xertica-assistant/parts/AssistantDocumentEditor.d.ts +2 -1
  188. package/dist/components/assistant/xertica-assistant/parts/AssistantFeedbackDialog.d.ts +2 -1
  189. package/dist/components/assistant/xertica-assistant/parts/AssistantHeader.d.ts +2 -1
  190. package/dist/components/assistant/xertica-assistant/parts/AssistantMessageBubble.d.ts +2 -1
  191. package/dist/components/assistant/xertica-assistant/parts/AssistantTabBar.d.ts +2 -1
  192. package/dist/components/assistant/xertica-assistant/parts/AssistantTypingIndicator.d.ts +2 -1
  193. package/dist/components/assistant/xertica-assistant/parts/AssistantWelcomeScreen.d.ts +2 -1
  194. package/dist/components/assistant/xertica-assistant/types.d.ts +3 -2
  195. package/dist/components/assistant/xertica-assistant/use-assistant.d.ts +1 -1
  196. package/dist/components/assistant/xertica-assistant/xertica-assistant.d.ts +2 -1
  197. package/dist/components/blocks/card-patterns/ActivityCard.d.ts +1 -1
  198. package/dist/components/blocks/card-patterns/ActivityCardSkeleton.d.ts +1 -1
  199. package/dist/components/blocks/card-patterns/FeatureCard.d.ts +1 -1
  200. package/dist/components/blocks/card-patterns/FeatureCardSkeleton.d.ts +1 -1
  201. package/dist/components/blocks/card-patterns/NotificationCard.d.ts +1 -1
  202. package/dist/components/blocks/card-patterns/NotificationCardSkeleton.d.ts +1 -1
  203. package/dist/components/blocks/card-patterns/ProfileCard.d.ts +1 -1
  204. package/dist/components/blocks/card-patterns/ProfileCardSkeleton.d.ts +1 -1
  205. package/dist/components/blocks/card-patterns/ProjectCard.d.ts +1 -1
  206. package/dist/components/blocks/card-patterns/ProjectCardSkeleton.d.ts +1 -1
  207. package/dist/components/blocks/card-patterns/QuickActionCard.d.ts +1 -1
  208. package/dist/components/blocks/card-patterns/QuickActionCardSkeleton.d.ts +1 -1
  209. package/dist/components/brand/language-selector/LanguageSelector.d.ts +2 -1
  210. package/dist/components/brand/theme-toggle/ThemeToggle.d.ts +2 -1
  211. package/dist/components/brand/xertica-logo/XerticaLogo.d.ts +2 -1
  212. package/dist/components/brand/xertica-orbe/XerticaOrbe.d.ts +2 -1
  213. package/dist/components/brand/xertica-provider/XerticaProvider.d.ts +1 -1
  214. package/dist/components/brand/xertica-xlogo/XerticaXLogo.d.ts +2 -1
  215. package/dist/components/examples/DrawingMapExample.d.ts +2 -1
  216. package/dist/components/examples/FilterableMapExample.d.ts +1 -1
  217. package/dist/components/examples/MapShowcase.d.ts +2 -1
  218. package/dist/components/examples/SimpleFilterableMap.d.ts +2 -1
  219. package/dist/components/figma/ImageWithFallback.d.ts +1 -1
  220. package/dist/components/layout/header/header.d.ts +1 -1
  221. package/dist/components/layout/sidebar/sidebar.d.ts +25 -13
  222. package/dist/components/media/FloatingMediaWrapper.d.ts +1 -1
  223. package/dist/components/media/audio-player/AudioPlayer.d.ts +2 -1
  224. package/dist/components/media/video-player/VideoPlayer.d.ts +2 -1
  225. package/dist/components/pages/forgot-password-page/ForgotPasswordPage.d.ts +2 -1
  226. package/dist/components/pages/home-content/HomeContent.d.ts +2 -1
  227. package/dist/components/pages/home-page/HomePage.d.ts +2 -1
  228. package/dist/components/pages/login-page/LoginPage.d.ts +2 -1
  229. package/dist/components/pages/reset-password-page/ResetPasswordPage.d.ts +2 -1
  230. package/dist/components/pages/template-content/TemplateContent.d.ts +2 -1
  231. package/dist/components/pages/template-page/TemplatePage.d.ts +2 -1
  232. package/dist/components/pages/verify-email-page/VerifyEmailPage.d.ts +2 -1
  233. package/dist/components/shared/CustomTooltipContent.d.ts +1 -1
  234. package/dist/components/shared/assistant-utils.d.ts +3 -2
  235. package/dist/components/shared/error-boundary.d.ts +4 -4
  236. package/dist/components/shared/error-fallbacks.d.ts +4 -3
  237. package/dist/components/shared/navigation.d.ts +6 -2
  238. package/dist/components/ui/accordion/accordion.d.ts +4 -4
  239. package/dist/components/ui/alert/alert.d.ts +3 -3
  240. package/dist/components/ui/alert-dialog/alert-dialog.d.ts +10 -10
  241. package/dist/components/ui/aspect-ratio/aspect-ratio.d.ts +1 -1
  242. package/dist/components/ui/assistant-chart/AssistantChart.d.ts +4 -3
  243. package/dist/components/ui/avatar/avatar.d.ts +3 -3
  244. package/dist/components/ui/badge/badge.d.ts +1 -1
  245. package/dist/components/ui/breadcrumb/breadcrumb.d.ts +7 -7
  246. package/dist/components/ui/calendar/calendar.d.ts +2 -2
  247. package/dist/components/ui/card/card.d.ts +7 -7
  248. package/dist/components/ui/carousel/carousel.d.ts +5 -5
  249. package/dist/components/ui/chart/chart.d.ts +16 -16
  250. package/dist/components/ui/collapsible/collapsible.d.ts +3 -3
  251. package/dist/components/ui/command/command.d.ts +9 -9
  252. package/dist/components/ui/context-menu/context-menu.d.ts +15 -15
  253. package/dist/components/ui/dialog/dialog.d.ts +9 -9
  254. package/dist/components/ui/drawer/drawer.d.ts +10 -10
  255. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +15 -15
  256. package/dist/components/ui/form/form.d.ts +7 -7
  257. package/dist/components/ui/google-maps-loader/google-maps-loader.d.ts +3 -3
  258. package/dist/components/ui/hover-card/hover-card.d.ts +3 -3
  259. package/dist/components/ui/input-otp/input-otp.d.ts +4 -4
  260. package/dist/components/ui/label/label.d.ts +1 -1
  261. package/dist/components/ui/menubar/menubar.d.ts +16 -16
  262. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +8 -8
  263. package/dist/components/ui/page-header/page-header.d.ts +3 -3
  264. package/dist/components/ui/pagination/pagination.d.ts +7 -7
  265. package/dist/components/ui/popover/popover.d.ts +4 -4
  266. package/dist/components/ui/progress/progress.d.ts +1 -1
  267. package/dist/components/ui/resizable/resizable.d.ts +11 -7
  268. package/dist/components/ui/rich-text-editor/rich-text-editor.d.ts +1 -1
  269. package/dist/components/ui/scroll-area/scroll-area.d.ts +2 -2
  270. package/dist/components/ui/separator/separator.d.ts +1 -1
  271. package/dist/components/ui/sheet/sheet.d.ts +10 -10
  272. package/dist/components/ui/skeleton/skeleton.d.ts +1 -1
  273. package/dist/components/ui/sonner/sonner.d.ts +2 -1
  274. package/dist/components/ui/stats-card/stats-card-skeleton.d.ts +1 -1
  275. package/dist/components/ui/table/table.d.ts +8 -8
  276. package/dist/components/ui/tabs/tabs.d.ts +4 -4
  277. package/dist/components/ui/tooltip/tooltip.d.ts +4 -4
  278. package/dist/contexts/ApiKeyContext.d.ts +2 -2
  279. package/dist/contexts/AssistenteContext.d.ts +1 -1
  280. package/dist/contexts/AuthContext.d.ts +1 -1
  281. package/dist/contexts/LanguageContext.d.ts +2 -2
  282. package/dist/contexts/LayoutContext.d.ts +2 -2
  283. package/dist/contexts/ThemeContext.d.ts +1 -1
  284. package/dist/features/assistant/hooks/useAssistantConfig.d.ts +1 -1
  285. package/dist/features/home/hooks/useDashboardStats.d.ts +1 -1
  286. package/dist/features/home/hooks/useFeatureCards.d.ts +1 -1
  287. package/dist/features/home/hooks/useTeamMembers.d.ts +1 -1
  288. package/dist/{google-maps-loader-BCe58h9D.js → google-maps-loader-BOug999f.js} +0 -4
  289. package/dist/{google-maps-loader-casMyxlo.cjs → google-maps-loader-DfeBRI8Q.cjs} +0 -5
  290. package/dist/hooks.cjs.js +2 -2
  291. package/dist/hooks.es.js +2 -2
  292. package/dist/{index-9GWd0qxq.cjs → index-BQjx1Mdf.cjs} +1 -1
  293. package/dist/index-Bei5DzAL.js +6 -0
  294. package/dist/index.cjs.js +18 -18
  295. package/dist/index.es.js +12 -12
  296. package/dist/{input-cc-PTD4R.js → input-B0_vbA3g.js} +3 -61
  297. package/dist/{input-C_UiS2Py.cjs → input-ByYuOv8A.cjs} +1 -62
  298. package/dist/layout.cjs.js +1 -1
  299. package/dist/layout.es.js +1 -1
  300. package/dist/pages.cjs.js +1 -1
  301. package/dist/pages.es.js +1 -1
  302. package/dist/{rich-text-editor-DxO1Hz3a.cjs → rich-text-editor-BuqSu718.cjs} +70 -5
  303. package/dist/{rich-text-editor-DqLICivI.js → rich-text-editor-CV8FtA_l.js} +68 -6
  304. package/dist/{rich-text-editor-DloeW0wc.js → rich-text-editor-DV1SixzE.js} +61 -3
  305. package/dist/{rich-text-editor-B2CKz7nx.cjs → rich-text-editor-DnSDglzW.cjs} +63 -2
  306. package/dist/{sidebar-BS1p2V7t.cjs → sidebar-BGJ0j567.cjs} +367 -9
  307. package/dist/{sidebar-3XyzjVBw.js → sidebar-BI6mZlC8.js} +364 -6
  308. package/dist/{sidebar-DyYvgyBj.cjs → sidebar-BtmotOg-.cjs} +367 -9
  309. package/dist/{sidebar-Duermn32.js → sidebar-D3EgGVxF.js} +77 -63
  310. package/dist/{sidebar-CLmIjgNd.cjs → sidebar-DDTqMGnR.cjs} +80 -66
  311. package/dist/{sidebar-B4ZWaMrE.js → sidebar-I7EXyf5D.js} +364 -6
  312. package/dist/ui.cjs.js +7 -7
  313. package/dist/ui.es.js +5 -5
  314. package/dist/{xertica-assistant-QFUnv5I2.cjs → xertica-assistant-BrF9jScR.cjs} +4 -4
  315. package/dist/{xertica-assistant-BbgzsgsG.js → xertica-assistant-CJVnvMqU.js} +55 -45
  316. package/dist/{xertica-assistant-d2qs2Vd9.cjs → xertica-assistant-CKPtc1z5.cjs} +58 -40
  317. package/dist/{xertica-assistant-CyikE3N_.js → xertica-assistant-CsBsxTsI.js} +2 -2
  318. package/dist/{xertica-assistant-CIaUlbIt.cjs → xertica-assistant-DER0brPQ.cjs} +6 -5
  319. package/dist/{xertica-assistant-B1NaSFFj.js → xertica-assistant-DQCjpk5M.js} +4 -3
  320. package/dist/{xertica-assistant-B687qEPU.js → xertica-assistant-Dk-9AJzw.js} +16 -7
  321. package/dist/{xertica-assistant-sOHwTgIP.cjs → xertica-assistant-DxhIKvuY.cjs} +18 -9
  322. package/dist/xertica-ui.css +2 -2
  323. package/docs/components/audio-player.md +1 -1
  324. package/docs/components/sidebar.md +331 -331
  325. package/docs/components/stats-card.md +138 -138
  326. package/docs/components/toggle.md +12 -0
  327. package/docs/doc-audit.md +35 -229
  328. package/docs/i18n.md +31 -10
  329. package/docs/llms.md +6 -4
  330. package/llms-compact.txt +444 -444
  331. package/llms-full.txt +12144 -12144
  332. package/llms.txt +187 -187
  333. package/package.json +223 -219
  334. package/scripts/a11y-audit.mjs +162 -162
  335. package/scripts/fix-stories.cjs +19 -19
  336. package/styles/globals.css +0 -1
  337. package/styles/xertica/base.css +8 -0
  338. package/styles/xertica/tokens.css +240 -240
  339. package/templates/.env.example +2 -2
  340. package/templates/.prettierignore +4 -4
  341. package/templates/.prettierrc +10 -10
  342. package/templates/guidelines/Guidelines.md +865 -865
  343. package/templates/index.html +13 -13
  344. package/templates/package.json +69 -69
  345. package/templates/src/app/components/AuthGuard.tsx +11 -0
  346. package/templates/src/features/auth/ui/AuthPageShell.tsx +32 -32
  347. package/templates/src/features/home/ui/HomeContent.tsx +2 -3
  348. package/templates/src/features/settings/index.ts +2 -0
  349. package/templates/src/features/settings/ui/SettingsContent.tsx +134 -0
  350. package/templates/src/features/template/ui/TemplateContent.tsx +2 -3
  351. package/templates/src/i18n.ts +36 -13
  352. package/templates/src/locales/en/pages/settings.json +15 -0
  353. package/templates/src/locales/es/pages/settings.json +15 -0
  354. package/templates/src/locales/pt-BR/pages/settings.json +15 -0
  355. package/templates/src/pages/SettingsPage.tsx +28 -0
  356. package/templates/src/shared/config/navigation.ts +2 -2
  357. package/templates/src/styles/xertica/tokens.css +240 -240
  358. package/templates/vite.config.d.ts +2 -2
  359. package/templates/vite.config.js +20 -20
  360. package/utils/gemini.ts +2 -2
  361. package/dist/AssistantChart-9w31gdAb.cjs +0 -3363
  362. package/dist/AssistantChart-BAudAfne.cjs +0 -3591
  363. package/dist/AssistantChart-BAx9VQvb.cjs +0 -3374
  364. package/dist/AssistantChart-BP8upjMk.js +0 -3565
  365. package/dist/AssistantChart-CVko2A1W.js +0 -3348
  366. package/dist/AssistantChart-CVzmmhx4.js +0 -3337
  367. package/dist/AssistantChart-CeU2dIb6.js +0 -3469
  368. package/dist/AssistantChart-DO5UuX4J.cjs +0 -3495
  369. package/dist/AudioPlayer-1ypwE2Wh.cjs +0 -936
  370. package/dist/AudioPlayer-BJ2IuRQW.cjs +0 -1275
  371. package/dist/AudioPlayer-BWDW6TN9.cjs +0 -1279
  372. package/dist/AudioPlayer-CM962GEh.js +0 -1280
  373. package/dist/AudioPlayer-CbZId7cj.cjs +0 -998
  374. package/dist/AudioPlayer-DU8zt8-z.js +0 -999
  375. package/dist/AudioPlayer-DuKXrCfy.js +0 -937
  376. package/dist/AudioPlayer-Xxma6_-H.js +0 -1276
  377. package/dist/BrandColorsContext-DLVJgtmH.js +0 -666
  378. package/dist/BrandColorsContext-DZT7JjeD.js +0 -659
  379. package/dist/BrandColorsContext-GUyFmkX0.cjs +0 -665
  380. package/dist/BrandColorsContext-awnBCmC4.cjs +0 -666
  381. package/dist/CodeBlock-C2ZUXt8V.js +0 -219
  382. package/dist/CodeBlock-C5oYnLQp.cjs +0 -218
  383. package/dist/CodeBlock-DuxdtN-l.js +0 -219
  384. package/dist/CodeBlock-POVYONvC.cjs +0 -218
  385. package/dist/CustomTooltipContent-BT6brkVJ.cjs +0 -49
  386. package/dist/CustomTooltipContent-CfOfikhq.js +0 -33
  387. package/dist/CustomTooltipContent-DHjkY0ww.js +0 -40
  388. package/dist/CustomTooltipContent-c_K-DWRr.cjs +0 -56
  389. package/dist/FeatureCard-9GhnlgL3.js +0 -336
  390. package/dist/FeatureCard-Bcb3Zi54.js +0 -302
  391. package/dist/FeatureCard-Cfs6Ishq.js +0 -485
  392. package/dist/FeatureCard-CkPd2psQ.cjs +0 -301
  393. package/dist/FeatureCard-Dkp-xmzM.cjs +0 -335
  394. package/dist/FeatureCard-ie3L8Fpr.cjs +0 -484
  395. package/dist/FeatureCardSkeleton-CAgu8stE.js +0 -27
  396. package/dist/FeatureCardSkeleton-mO3Bdm_V.cjs +0 -26
  397. package/dist/LanguageContext-BwhwC3G2.js +0 -657
  398. package/dist/LanguageContext-DvUt5jBg.cjs +0 -656
  399. package/dist/LayoutContext-BDmcZfMH.cjs +0 -84
  400. package/dist/LayoutContext-C4kKN9RV.cjs +0 -93
  401. package/dist/LayoutContext-CGEe1oPq.js +0 -94
  402. package/dist/LayoutContext-CwT5KLiW.cjs +0 -104
  403. package/dist/LayoutContext-DVLCsoQn.js +0 -105
  404. package/dist/LayoutContext-dbQvdC4O.js +0 -85
  405. package/dist/ThemeContext-BbBNoFTG.js +0 -735
  406. package/dist/ThemeContext-Bo-W2WZH.js +0 -1856
  407. package/dist/ThemeContext-CP3a0jxy.cjs +0 -1855
  408. package/dist/ThemeContext-Cmr8Ex8H.cjs +0 -734
  409. package/dist/ThemeContext-CpqYShLq.cjs +0 -324
  410. package/dist/ThemeContext-D3LzacmG.js +0 -188
  411. package/dist/ThemeContext-DQUOeziy.cjs +0 -1855
  412. package/dist/ThemeContext-Du2nE1PL.js +0 -325
  413. package/dist/ThemeContext-GeEBTJ3q.cjs +0 -1621
  414. package/dist/ThemeContext-JyLK9B1o.js +0 -1622
  415. package/dist/ThemeContext-RTy1m2Uq.js +0 -82
  416. package/dist/ThemeContext-U4dEYc6C.cjs +0 -187
  417. package/dist/ThemeContext-bSzuOit2.cjs +0 -81
  418. package/dist/ThemeContext-ept8jhXI.js +0 -1856
  419. package/dist/VerifyEmailPage-BE-L9mB7.js +0 -2828
  420. package/dist/VerifyEmailPage-BIBOKV7Z.js +0 -3214
  421. package/dist/VerifyEmailPage-BRSP-Pwt.cjs +0 -3196
  422. package/dist/VerifyEmailPage-Bae2cBXT.cjs +0 -2827
  423. package/dist/VerifyEmailPage-BiRm7Nh4.cjs +0 -3213
  424. package/dist/VerifyEmailPage-Bvfv8HVQ.js +0 -3214
  425. package/dist/VerifyEmailPage-CR7kb5df.cjs +0 -2827
  426. package/dist/VerifyEmailPage-C_ihbcth.js +0 -2828
  427. package/dist/VerifyEmailPage-CbgjOF0v.js +0 -2828
  428. package/dist/VerifyEmailPage-CdYPSJoO.js +0 -2828
  429. package/dist/VerifyEmailPage-D-FRj5TU.cjs +0 -3213
  430. package/dist/VerifyEmailPage-DF2ilhum.cjs +0 -3210
  431. package/dist/VerifyEmailPage-DMBh4NM9.cjs +0 -2827
  432. package/dist/VerifyEmailPage-DTtFfC-J.js +0 -3197
  433. package/dist/VerifyEmailPage-Dt7zgA4w.cjs +0 -2827
  434. package/dist/VerifyEmailPage-EhudUdqF.js +0 -3211
  435. package/dist/VerifyEmailPage-RrUApqBN.js +0 -3214
  436. package/dist/VerifyEmailPage-VoMI7MYH.cjs +0 -3213
  437. package/dist/VerifyEmailPage-hdB8JQGv.cjs +0 -3213
  438. package/dist/VerifyEmailPage-vYHbYK3q.js +0 -3214
  439. package/dist/XerticaOrbe-BCUVSPPB.cjs +0 -1924
  440. package/dist/XerticaOrbe-BGIB1CTK.js +0 -1355
  441. package/dist/XerticaOrbe-By8eEvR-.js +0 -1925
  442. package/dist/XerticaOrbe-FWGjBj0U.cjs +0 -1354
  443. package/dist/XerticaProvider-AChwphCO.cjs +0 -48
  444. package/dist/XerticaProvider-AbWlr7Af.cjs +0 -48
  445. package/dist/XerticaProvider-B8CaV7xu.cjs +0 -39
  446. package/dist/XerticaProvider-BITjgC5p.js +0 -39
  447. package/dist/XerticaProvider-BSyFrmC0.js +0 -49
  448. package/dist/XerticaProvider-By8q3Roe.cjs +0 -38
  449. package/dist/XerticaProvider-CUYJZc32.js +0 -49
  450. package/dist/XerticaProvider-CW9hpCdF.cjs +0 -39
  451. package/dist/XerticaProvider-CWgby5mY.js +0 -49
  452. package/dist/XerticaProvider-CWs6EwNa.js +0 -49
  453. package/dist/XerticaProvider-CiNKjMx1.cjs +0 -48
  454. package/dist/XerticaProvider-CjQAQPcn.cjs +0 -48
  455. package/dist/XerticaProvider-D5lLumH-.js +0 -49
  456. package/dist/XerticaProvider-DQtvJU7m.js +0 -40
  457. package/dist/XerticaProvider-DUOJg9iX.js +0 -49
  458. package/dist/XerticaProvider-Dl_b72_l.cjs +0 -51
  459. package/dist/XerticaProvider-qQUDop71.cjs +0 -48
  460. package/dist/XerticaProvider-siSt9uG2.js +0 -40
  461. package/dist/XerticaXLogo-8TTzBjHw.cjs +0 -251
  462. package/dist/XerticaXLogo-B2svDGZh.cjs +0 -251
  463. package/dist/XerticaXLogo-BWaag64t.js +0 -252
  464. package/dist/XerticaXLogo-CFuIlYFH.js +0 -252
  465. package/dist/XerticaXLogo-CU-U-GP4.cjs +0 -251
  466. package/dist/XerticaXLogo-ChryA6xj.js +0 -252
  467. package/dist/XerticaXLogo-CowGv7BC.js +0 -252
  468. package/dist/XerticaXLogo-CziKMQil.cjs +0 -242
  469. package/dist/XerticaXLogo-D8jf0SNv.cjs +0 -214
  470. package/dist/XerticaXLogo-DHz5SugF.js +0 -252
  471. package/dist/XerticaXLogo-DTee_y8X.cjs +0 -251
  472. package/dist/XerticaXLogo-DfUvz-lD.js +0 -243
  473. package/dist/XerticaXLogo-DzXKZBtG.js +0 -231
  474. package/dist/XerticaXLogo-fAJMy3H4.js +0 -215
  475. package/dist/XerticaXLogo-kslQ8Tk_.cjs +0 -251
  476. package/dist/XerticaXLogo-xWbElCZj.cjs +0 -230
  477. package/dist/alert-dialog-iDe5VE5o.js +0 -842
  478. package/dist/alert-dialog-yckpaOpy.cjs +0 -865
  479. package/dist/avatar-Cq5_E8r9.cjs +0 -78
  480. package/dist/avatar-CuYu2MKt.cjs +0 -72
  481. package/dist/avatar-Cxyofu1H.js +0 -56
  482. package/dist/avatar-DSBfJMRJ.js +0 -62
  483. package/dist/breadcrumb-CVzzzqfo.js +0 -103
  484. package/dist/breadcrumb-DIJ0X3Ot.js +0 -96
  485. package/dist/breadcrumb-DjSxkjlQ.cjs +0 -95
  486. package/dist/breadcrumb-DnDlQFg2.cjs +0 -102
  487. package/dist/button-0CXwCRTm.cjs +0 -85
  488. package/dist/button-Bnv9SvYK.cjs +0 -79
  489. package/dist/button-C6uvh0rV.js +0 -63
  490. package/dist/button-qkz7Icqf.js +0 -69
  491. package/dist/card-B8-Gl5DL.js +0 -73
  492. package/dist/card-Bv_c57KU.cjs +0 -72
  493. package/dist/card-DJTsYhLL.cjs +0 -89
  494. package/dist/card-fi8zAN-I.js +0 -90
  495. package/dist/dropdown-menu-B_uEXNc4.cjs +0 -220
  496. package/dist/dropdown-menu-CFuCssWA.js +0 -204
  497. package/dist/dropdown-menu-Ze1YZFyc.cjs +0 -247
  498. package/dist/dropdown-menu-nc_Lvg-u.js +0 -231
  499. package/dist/google-maps-loader-BVoVhUwA.js +0 -316
  500. package/dist/google-maps-loader-BqsYL48U.cjs +0 -285
  501. package/dist/google-maps-loader-DjJaYhV6.cjs +0 -316
  502. package/dist/google-maps-loader-t2IlYBzw.js +0 -286
  503. package/dist/index-B7A523O_.js +0 -8
  504. package/dist/index-BabBx2pa.js +0 -6
  505. package/dist/index-CkTUgOwX.js +0 -8
  506. package/dist/index-D3RLKRAs.cjs +0 -7
  507. package/dist/index-DmHhnb7a.cjs +0 -7
  508. package/dist/index.umd.js +0 -13712
  509. package/dist/input-CNFHVKvo.cjs +0 -145
  510. package/dist/input-CPl84zAx.cjs +0 -151
  511. package/dist/input-D-6IsAca.js +0 -133
  512. package/dist/input-wPYg0d0P.js +0 -127
  513. package/dist/progress-BLwqortq.cjs +0 -105
  514. package/dist/progress-Cs9i4DPx.js +0 -81
  515. package/dist/progress-D9mtsf6j.js +0 -89
  516. package/dist/progress-DDeuWPZw.cjs +0 -97
  517. package/dist/rich-text-editor-1UW3Y2JK.js +0 -2891
  518. package/dist/rich-text-editor-BM-LPpTh.js +0 -2902
  519. package/dist/rich-text-editor-BmsjY03B.js +0 -2949
  520. package/dist/rich-text-editor-BrdC5evx.js +0 -2244
  521. package/dist/rich-text-editor-CyggTOLQ.cjs +0 -2908
  522. package/dist/rich-text-editor-DbV-S7Fi.cjs +0 -2261
  523. package/dist/rich-text-editor-DoCkKhzk.cjs +0 -2919
  524. package/dist/rich-text-editor-GS2kpTAK.cjs +0 -2966
  525. package/dist/routes.d.ts +0 -10
  526. package/dist/select-Cmb8zF7w.cjs +0 -156
  527. package/dist/select-CprSNX0z.js +0 -139
  528. package/dist/select-DT7Zjn42.cjs +0 -162
  529. package/dist/select-En8DkoaQ.js +0 -145
  530. package/dist/sidebar-B3EYhli0.cjs +0 -800
  531. package/dist/sidebar-B9NR0lCe.cjs +0 -800
  532. package/dist/sidebar-BcJ6LxvX.cjs +0 -733
  533. package/dist/sidebar-BvF5I2Ue.cjs +0 -800
  534. package/dist/sidebar-C5B_LHek.cjs +0 -795
  535. package/dist/sidebar-CA6_ek3f.js +0 -801
  536. package/dist/sidebar-CRMiBtAi.js +0 -801
  537. package/dist/sidebar-CVUGHOS_.cjs +0 -756
  538. package/dist/sidebar-CZ2mWaMM.cjs +0 -800
  539. package/dist/sidebar-CmvwjnVb.js +0 -757
  540. package/dist/sidebar-CplprZpM.js +0 -801
  541. package/dist/sidebar-Dz7bd3zP.js +0 -796
  542. package/dist/sidebar-KIS0C2JH.js +0 -801
  543. package/dist/sidebar-OTO_up7Z.js +0 -801
  544. package/dist/sidebar-WoKvFWCN.js +0 -717
  545. package/dist/sidebar-zowjejT2.cjs +0 -800
  546. package/dist/skeleton-4zoHiFJ_.cjs +0 -83
  547. package/dist/skeleton-C4bHqUBf.js +0 -84
  548. package/dist/slider-C0JKA9k3.js +0 -56
  549. package/dist/slider-CPmwzm_3.cjs +0 -73
  550. package/dist/slider-DcJharR9.cjs +0 -73
  551. package/dist/slider-Pay3fka2.js +0 -56
  552. package/dist/sonner-DeUIj0Zg.cjs +0 -63
  553. package/dist/sonner-g9RIfi35.js +0 -47
  554. package/dist/tooltip-CNtsL5cB.cjs +0 -71
  555. package/dist/tooltip-CTyZCD8h.js +0 -55
  556. package/dist/tooltip-CwgSdy3h.cjs +0 -67
  557. package/dist/tooltip-D-OrYnKO.js +0 -51
  558. package/dist/use-audio-player-BJFV24XW.js +0 -188
  559. package/dist/use-audio-player-Bkh23vQ3.js +0 -177
  560. package/dist/use-audio-player-Dn1NR9xN.cjs +0 -176
  561. package/dist/use-audio-player-DyVYlOnR.cjs +0 -187
  562. package/dist/use-mobile-BB4M_4Ru.cjs +0 -47
  563. package/dist/use-mobile-CLu9nqGL.js +0 -31
  564. package/dist/use-mobile-CNwiBNxu.js +0 -33
  565. package/dist/use-mobile-Dlf74ufz.cjs +0 -49
  566. package/dist/xertica-assistant-B1IaHXnB.cjs +0 -1894
  567. package/dist/xertica-assistant-BMqdyRVi.js +0 -2082
  568. package/dist/xertica-assistant-Bj3vBCq_.cjs +0 -2081
  569. package/dist/xertica-assistant-CfBCo21g.js +0 -2148
  570. package/dist/xertica-assistant-DIM_Do1k.js +0 -1866
  571. package/dist/xertica-assistant-DPsESB6t.js +0 -1878
  572. package/dist/xertica-assistant-DrsRwla1.cjs +0 -2147
  573. package/dist/xertica-assistant-Qp3ydksa.cjs +0 -1882
  574. package/dist/xertica-assistant-gnCJdcZY.js +0 -1866
  575. package/dist/xertica-assistant-yyrR0JKl.cjs +0 -1882
  576. package/styles/xertica/app-overrides/scrollbar.css +0 -33
  577. package/dist/{XerticaXLogo-qBPhwK3g.cjs → LanguageSelector-1cINLJ23.cjs} +80 -80
@@ -1,67 +1,67 @@
1
- import { Meta, Title, Subtitle, Description, Primary, Controls, Canvas } from '@storybook/addon-docs/blocks';
2
- import * as AudioPlayerStories from './AudioPlayer.stories';
3
-
4
- <Meta of={AudioPlayerStories} />
5
-
6
- <Title />
7
- <Subtitle>A versatile and unified audio playback component supporting two distinct layouts: an interactive card and a global floating bar.</Subtitle>
8
-
9
- <Description>
10
- The `AudioPlayer` is designed to handle all media consumption needs across the platform, from audio previews in content pages to persistent global playback for podcasts or process audios. It features intelligent state transitions and a highly responsive interface.
11
- </Description>
12
-
13
- <Primary />
14
-
15
- ## Main Properties
16
- <Controls />
17
-
18
- ---
19
-
20
- ## Layout Variants
21
-
22
- The component is highly adaptable and can be used in two primary modes via the `variant` prop:
23
-
24
- ### 1. Card (Default)
25
- Ideal for embedding within pages, such as articles or process details.
26
-
27
- * **Auto-Float**: By default, if audio is playing and the user scrolls away, the player automatically transforms into a floating window in the corner.
28
- * **Behavior**: Can be disabled via the `enableAutoFloat={false}` prop.
29
-
30
- <Canvas>
31
- <AudioPlayerStories.Card />
32
- </Canvas>
33
-
34
- ### 2. Bar (Global)
35
- A fixed bar at the bottom of the application, perfect for continuous listening while the user navigates through different screens.
36
-
37
- * **Layout Adjustment**: Automatically respects sidebar and AI assistant expansion using `LayoutContext` to avoid overlapping vital UI elements.
38
- * **Podcast Style**: Can use `colorVariant="primary"` for a high-contrast look using brand colors.
39
-
40
- <Canvas>
41
- <AudioPlayerStories.GlobalBar />
42
- </Canvas>
43
-
44
- ---
45
-
46
- ## Features and Functionality
47
-
48
- ### Playback Speed Control
49
- The player allows adjusting the playback speed (`0.5x`, `1x`, `1.5x`, `2x`). On large screens, the control is directly accessible; on smaller screens, it automatically migrates to the secondary options menu.
50
-
51
- ### Intelligent Responsiveness
52
- Unlike static menus, the `AudioPlayer` uses dynamic reallocation logic:
53
- * **Volume, Speed, and Actions**: As the screen width decreases, these controls move from the main bar and are automatically grouped into the "More Options" menu (`...`), ensuring the player never breaks or hides vital controls.
54
-
55
- ### Floating Window
56
- When in floating mode (either via auto-float or manually), the player displays the fixed title **"Reproduzindo Mídia"** to maintain visual consistency and focus on playback, regardless of the original title length.
57
-
58
- ---
59
-
60
- ## AI Best Practices
61
-
62
- > [!TIP]
63
- > - **Recommended Variant** — Use the `bar` variant for audios the user should continue listening to while performing other tasks. Use the `card` variant for page-specific explanatory content.
64
- > - **Playback Identification** — When the player floats, it shows a generic title for a clean compact layout, but keeps metadata accessible in the controls.
65
-
66
- > [!IMPORTANT]
67
- > - **Singleton** — We recommend instantiating only one global `AudioPlayer` per application to avoid overlapping audio streams.
1
+ import { Meta, Title, Subtitle, Description, Primary, Controls, Canvas } from '@storybook/addon-docs/blocks';
2
+ import * as AudioPlayerStories from './AudioPlayer.stories';
3
+
4
+ <Meta of={AudioPlayerStories} />
5
+
6
+ <Title />
7
+ <Subtitle>A versatile and unified audio playback component supporting two distinct layouts: an interactive card and a global floating bar.</Subtitle>
8
+
9
+ <Description>
10
+ The `AudioPlayer` is designed to handle all media consumption needs across the platform, from audio previews in content pages to persistent global playback for podcasts or process audios. It features intelligent state transitions and a highly responsive interface.
11
+ </Description>
12
+
13
+ <Primary />
14
+
15
+ ## Main Properties
16
+ <Controls />
17
+
18
+ ---
19
+
20
+ ## Layout Variants
21
+
22
+ The component is highly adaptable and can be used in two primary modes via the `variant` prop:
23
+
24
+ ### 1. Card (Default)
25
+ Ideal for embedding within pages, such as articles or process details.
26
+
27
+ * **Auto-Float**: By default, if audio is playing and the user scrolls away, the player automatically transforms into a floating window in the corner.
28
+ * **Behavior**: Can be disabled via the `enableAutoFloat={false}` prop.
29
+
30
+ <Canvas>
31
+ <AudioPlayerStories.Card />
32
+ </Canvas>
33
+
34
+ ### 2. Bar (Global)
35
+ A fixed bar at the bottom of the application, perfect for continuous listening while the user navigates through different screens.
36
+
37
+ * **Layout Adjustment**: Automatically respects sidebar and AI assistant expansion using `LayoutContext` to avoid overlapping vital UI elements.
38
+ * **Podcast Style**: Can use `colorVariant="primary"` for a high-contrast look using brand colors.
39
+
40
+ <Canvas>
41
+ <AudioPlayerStories.GlobalBar />
42
+ </Canvas>
43
+
44
+ ---
45
+
46
+ ## Features and Functionality
47
+
48
+ ### Playback Speed Control
49
+ The player allows adjusting the playback speed (`0.5x`, `1x`, `1.5x`, `2x`). On large screens, the control is directly accessible; on smaller screens, it automatically migrates to the secondary options menu.
50
+
51
+ ### Intelligent Responsiveness
52
+ Unlike static menus, the `AudioPlayer` uses dynamic reallocation logic:
53
+ * **Volume, Speed, and Actions**: As the screen width decreases, these controls move from the main bar and are automatically grouped into the "More Options" menu (`...`), ensuring the player never breaks or hides vital controls.
54
+
55
+ ### Floating Window
56
+ When in floating mode (either via auto-float or manually), the player displays the fixed title **"Reproduzindo Mídia"** to maintain visual consistency and focus on playback, regardless of the original title length.
57
+
58
+ ---
59
+
60
+ ## AI Best Practices
61
+
62
+ > [!TIP]
63
+ > - **Recommended Variant** — Use the `bar` variant for audios the user should continue listening to while performing other tasks. Use the `card` variant for page-specific explanatory content.
64
+ > - **Playback Identification** — When the player floats, it shows a generic title for a clean compact layout, but keeps metadata accessible in the controls.
65
+
66
+ > [!IMPORTANT]
67
+ > - **Singleton** — We recommend instantiating only one global `AudioPlayer` per application to avoid overlapping audio streams.
@@ -9,7 +9,8 @@ class MockIntersectionObserver {
9
9
  }
10
10
  vi.stubGlobal('IntersectionObserver', MockIntersectionObserver);
11
11
 
12
- import { render, screen, fireEvent, waitFor } from '@testing-library/react';
12
+ import { screen, fireEvent, waitFor } from '@testing-library/react';
13
+ import { renderWithProviders as render } from '../../../test/render';
13
14
  import { AudioPlayer } from './AudioPlayer';
14
15
  import { LayoutProvider } from '../../../contexts/LayoutContext';
15
16
 
@@ -1,74 +1,74 @@
1
- import { Meta, Title, Subtitle } from '@storybook/addon-docs/blocks';
2
-
3
- <Meta title="Media/FloatingMediaWrapper" />
4
-
5
- <Title>FloatingMediaWrapper</Title>
6
- <Subtitle>Draggable, resizable floating portal wrapper for video and audio players.</Subtitle>
7
-
8
- ---
9
-
10
- ## Overview
11
-
12
- `FloatingMediaWrapper` wraps any media player (`VideoPlayer`, `AudioPlayer`, etc.) and provides two states:
13
-
14
- - **Inline** — The player renders in its normal document position.
15
- - **Floating** — The player detaches into a fixed, draggable, resizable overlay portal (`document.body`) while a placeholder occupies the original position.
16
-
17
- Position and size are persisted to `localStorage` per `playerId`, so the user's floating window survives page navigation.
18
-
19
- ```tsx
20
- import { FloatingMediaWrapper } from 'xertica-ui/media';
21
- import { VideoPlayer } from 'xertica-ui/media';
22
-
23
- function MyPage() {
24
- const [isFloating, setIsFloating] = React.useState(false);
25
-
26
- return (
27
- <FloatingMediaWrapper
28
- isFloating={isFloating}
29
- setIsFloating={setIsFloating}
30
- title="Tutorial Video"
31
- playerId="tutorial-v1"
32
- >
33
- <VideoPlayer src="https://example.com/video.mp4" />
34
- </FloatingMediaWrapper>
35
- );
36
- }
37
- ```
38
-
39
- ---
40
-
41
- ## Props
42
-
43
- | Prop | Type | Default | Description |
44
- |---|---|---|---|
45
- | `children` | `ReactNode` | **Required** | The media player to wrap. |
46
- | `isFloating` | `boolean` | **Required** | Controlled floating state. |
47
- | `setIsFloating` | `(floating: boolean) => void` | **Required** | Setter for the floating state. |
48
- | `title` | `string` | `'Reproduzindo Mídia'` | Title shown in the floating window's drag handle bar. |
49
- | `onClose` | `() => void` | — | Called when the close (X) button is clicked. |
50
- | `onCloseMedia` | `() => void` | — | Alternative close handler that takes priority over `onClose`. |
51
- | `aspectRatio` | `number` | `16/9` | Aspect ratio used for the inline placeholder height. |
52
- | `minWidth` | `number` | `320` | Minimum floating window width in pixels. |
53
- | `minHeight` | `number` | `110` | Minimum floating window height in pixels. |
54
- | `colorVariant` | `'default' \| 'primary'` | `'default'` | Floating window chrome color. `primary` uses brand colors. |
55
- | `playerId` | `string` | `'default'` | Unique key for persisting position/size to `localStorage`. |
56
- | `enablePadding` | `boolean` | `false` | Adds inner padding around the player inside the floating container. |
57
- | `className` | `string` | — | CSS classes applied to the inline container or placeholder. |
58
-
59
- ---
60
-
61
- ## Resize Handles
62
-
63
- When floating, all eight directional resize handles are active (top, bottom, left, right, and all four corners). The window respects `minWidth` and `minHeight` constraints.
64
-
65
- ---
66
-
67
- ## AI Best Practices
68
-
69
- > [!IMPORTANT]
70
- > - **Unique `playerId`** — Always provide a unique `playerId` per player instance. If two players share an ID, their saved positions will overwrite each other in `localStorage`.
71
- > - **Controlled state** — Manage `isFloating` in the parent component. A "Picture-in-Picture" or "Float" button in the player UI should call `setIsFloating(true)`.
72
- > - **Close vs. close media** — Use `onCloseMedia` to stop playback and `onClose` for navigation. `onCloseMedia` takes priority if both are provided.
73
- > - **SSR** — The portal uses `createPortal(…, document.body)`, which requires a browser DOM. Guard with `isMounted` state (already handled internally) when using SSR frameworks.
74
- > - **Aspect ratio** — Set `aspectRatio` to match your media source (e.g., `4/3` for legacy video, `1` for square audio art) so the inline placeholder has the correct height.
1
+ import { Meta, Title, Subtitle } from '@storybook/addon-docs/blocks';
2
+
3
+ <Meta title="Media/FloatingMediaWrapper" />
4
+
5
+ <Title>FloatingMediaWrapper</Title>
6
+ <Subtitle>Draggable, resizable floating portal wrapper for video and audio players.</Subtitle>
7
+
8
+ ---
9
+
10
+ ## Overview
11
+
12
+ `FloatingMediaWrapper` wraps any media player (`VideoPlayer`, `AudioPlayer`, etc.) and provides two states:
13
+
14
+ - **Inline** — The player renders in its normal document position.
15
+ - **Floating** — The player detaches into a fixed, draggable, resizable overlay portal (`document.body`) while a placeholder occupies the original position.
16
+
17
+ Position and size are persisted to `localStorage` per `playerId`, so the user's floating window survives page navigation.
18
+
19
+ ```tsx
20
+ import { FloatingMediaWrapper } from 'xertica-ui/media';
21
+ import { VideoPlayer } from 'xertica-ui/media';
22
+
23
+ function MyPage() {
24
+ const [isFloating, setIsFloating] = React.useState(false);
25
+
26
+ return (
27
+ <FloatingMediaWrapper
28
+ isFloating={isFloating}
29
+ setIsFloating={setIsFloating}
30
+ title="Tutorial Video"
31
+ playerId="tutorial-v1"
32
+ >
33
+ <VideoPlayer src="https://example.com/video.mp4" />
34
+ </FloatingMediaWrapper>
35
+ );
36
+ }
37
+ ```
38
+
39
+ ---
40
+
41
+ ## Props
42
+
43
+ | Prop | Type | Default | Description |
44
+ |---|---|---|---|
45
+ | `children` | `ReactNode` | **Required** | The media player to wrap. |
46
+ | `isFloating` | `boolean` | **Required** | Controlled floating state. |
47
+ | `setIsFloating` | `(floating: boolean) => void` | **Required** | Setter for the floating state. |
48
+ | `title` | `string` | `'Reproduzindo Mídia'` | Title shown in the floating window's drag handle bar. |
49
+ | `onClose` | `() => void` | — | Called when the close (X) button is clicked. |
50
+ | `onCloseMedia` | `() => void` | — | Alternative close handler that takes priority over `onClose`. |
51
+ | `aspectRatio` | `number` | `16/9` | Aspect ratio used for the inline placeholder height. |
52
+ | `minWidth` | `number` | `320` | Minimum floating window width in pixels. |
53
+ | `minHeight` | `number` | `110` | Minimum floating window height in pixels. |
54
+ | `colorVariant` | `'default' \| 'primary'` | `'default'` | Floating window chrome color. `primary` uses brand colors. |
55
+ | `playerId` | `string` | `'default'` | Unique key for persisting position/size to `localStorage`. |
56
+ | `enablePadding` | `boolean` | `false` | Adds inner padding around the player inside the floating container. |
57
+ | `className` | `string` | — | CSS classes applied to the inline container or placeholder. |
58
+
59
+ ---
60
+
61
+ ## Resize Handles
62
+
63
+ When floating, all eight directional resize handles are active (top, bottom, left, right, and all four corners). The window respects `minWidth` and `minHeight` constraints.
64
+
65
+ ---
66
+
67
+ ## AI Best Practices
68
+
69
+ > [!IMPORTANT]
70
+ > - **Unique `playerId`** — Always provide a unique `playerId` per player instance. If two players share an ID, their saved positions will overwrite each other in `localStorage`.
71
+ > - **Controlled state** — Manage `isFloating` in the parent component. A "Picture-in-Picture" or "Float" button in the player UI should call `setIsFloating(true)`.
72
+ > - **Close vs. close media** — Use `onCloseMedia` to stop playback and `onClose` for navigation. `onCloseMedia` takes priority if both are provided.
73
+ > - **SSR** — The portal uses `createPortal(…, document.body)`, which requires a browser DOM. Guard with `isMounted` state (already handled internally) when using SSR frameworks.
74
+ > - **Aspect ratio** — Set `aspectRatio` to match your media source (e.g., `4/3` for legacy video, `1` for square audio art) so the inline placeholder has the correct height.
@@ -1,103 +1,103 @@
1
- import { Meta, Title, Subtitle, Description, Primary, Controls, Canvas } from '@storybook/addon-docs/blocks';
2
- import * as VideoPlayerStories from './VideoPlayer.stories';
3
-
4
- <Meta of={VideoPlayerStories} />
5
-
6
- <Title />
7
- <Subtitle>A feature-rich video player component with floating mode support, custom controls, and automatic state management.</Subtitle>
8
-
9
- <Description>
10
- The `VideoPlayer` is a comprehensive video playback solution designed to deliver a seamless viewing experience across the platform. It features custom playback controls, automatic floating behavior when scrolled out of view, and full integration with the Xertica UI design system.
11
- </Description>
12
-
13
- <Primary />
14
-
15
- ## Main Properties
16
- <Controls />
17
-
18
- ---
19
-
20
- ## Features and Functionality
21
-
22
- ### Custom Playback Controls
23
- The player provides a complete set of controls:
24
- - **Play/Pause**: Toggle playback with a single click on the video or the control button
25
- - **Progress Bar**: Seek to any position in the video
26
- - **Volume Control**: Adjust volume with a slider that appears on hover
27
- - **Mute Toggle**: Quick mute/unmute button
28
- - **Picture-in-Picture**: Float the player as a small overlay
29
- - **Fullscreen**: Restore the player to full view
30
-
31
- ### Auto-Floating Mode
32
- When a video is playing and the user scrolls away:
33
- - The player automatically transforms into a floating window in the corner
34
- - Playback state is preserved (position, playing state)
35
- - The floating mode can be toggled manually via the PiP button
36
- - Clicking "Restore" returns the player to its original position
37
-
38
- <Canvas>
39
- <VideoPlayerStories.AutoFloat />
40
- </Canvas>
41
-
42
- ### Intelligent Controls Visibility
43
- Controls automatically hide after 2.5 seconds of inactivity while playing:
44
- - Moving the mouse restores controls visibility
45
- - Clicking anywhere on the video toggles play/pause
46
-
47
- ---
48
-
49
- ## Usage Examples
50
-
51
- ### Basic Video Player
52
- Use the default configuration for simple video embedding:
53
-
54
- ```tsx
55
- <VideoPlayer
56
- src="https://example.com/video.mp4"
57
- title="My Video"
58
- />
59
- ```
60
-
61
- ### Video with Poster Image
62
- Add a poster image for better visual presentation before playback:
63
-
64
- ```tsx
65
- <VideoPlayer
66
- src="https://example.com/video.mp4"
67
- poster="https://example.com/poster.jpg"
68
- title="Featured Video"
69
- />
70
- ```
71
-
72
- ### Autoplay Video
73
- Enable autoplay for background videos or featured content:
74
-
75
- ```tsx
76
- <VideoPlayer
77
- src="https://example.com/video.mp4"
78
- title="Autoplay Video"
79
- autoPlay
80
- />
81
- ```
82
-
83
- ### Disable Auto-Floating
84
- Disable the automatic floating behavior when scrolling:
85
-
86
- ```tsx
87
- <VideoPlayer
88
- src="https://example.com/video.mp4"
89
- title="Static Video"
90
- enableAutoFloat={false}
91
- />
92
- ```
93
-
94
- ---
95
-
96
- ## AI Best Practices
97
-
98
- > [!TIP]
99
- > - **Auto-Float** — The floating behavior is ideal for long-form content where users may want to continue watching while scrolling through other content.
100
- > - **Posters** — Always provide a `poster` image for better UX, especially for videos that may take time to load.
101
-
102
- > [!IMPORTANT]
1
+ import { Meta, Title, Subtitle, Description, Primary, Controls, Canvas } from '@storybook/addon-docs/blocks';
2
+ import * as VideoPlayerStories from './VideoPlayer.stories';
3
+
4
+ <Meta of={VideoPlayerStories} />
5
+
6
+ <Title />
7
+ <Subtitle>A feature-rich video player component with floating mode support, custom controls, and automatic state management.</Subtitle>
8
+
9
+ <Description>
10
+ The `VideoPlayer` is a comprehensive video playback solution designed to deliver a seamless viewing experience across the platform. It features custom playback controls, automatic floating behavior when scrolled out of view, and full integration with the Xertica UI design system.
11
+ </Description>
12
+
13
+ <Primary />
14
+
15
+ ## Main Properties
16
+ <Controls />
17
+
18
+ ---
19
+
20
+ ## Features and Functionality
21
+
22
+ ### Custom Playback Controls
23
+ The player provides a complete set of controls:
24
+ - **Play/Pause**: Toggle playback with a single click on the video or the control button
25
+ - **Progress Bar**: Seek to any position in the video
26
+ - **Volume Control**: Adjust volume with a slider that appears on hover
27
+ - **Mute Toggle**: Quick mute/unmute button
28
+ - **Picture-in-Picture**: Float the player as a small overlay
29
+ - **Fullscreen**: Restore the player to full view
30
+
31
+ ### Auto-Floating Mode
32
+ When a video is playing and the user scrolls away:
33
+ - The player automatically transforms into a floating window in the corner
34
+ - Playback state is preserved (position, playing state)
35
+ - The floating mode can be toggled manually via the PiP button
36
+ - Clicking "Restore" returns the player to its original position
37
+
38
+ <Canvas>
39
+ <VideoPlayerStories.AutoFloat />
40
+ </Canvas>
41
+
42
+ ### Intelligent Controls Visibility
43
+ Controls automatically hide after 2.5 seconds of inactivity while playing:
44
+ - Moving the mouse restores controls visibility
45
+ - Clicking anywhere on the video toggles play/pause
46
+
47
+ ---
48
+
49
+ ## Usage Examples
50
+
51
+ ### Basic Video Player
52
+ Use the default configuration for simple video embedding:
53
+
54
+ ```tsx
55
+ <VideoPlayer
56
+ src="https://example.com/video.mp4"
57
+ title="My Video"
58
+ />
59
+ ```
60
+
61
+ ### Video with Poster Image
62
+ Add a poster image for better visual presentation before playback:
63
+
64
+ ```tsx
65
+ <VideoPlayer
66
+ src="https://example.com/video.mp4"
67
+ poster="https://example.com/poster.jpg"
68
+ title="Featured Video"
69
+ />
70
+ ```
71
+
72
+ ### Autoplay Video
73
+ Enable autoplay for background videos or featured content:
74
+
75
+ ```tsx
76
+ <VideoPlayer
77
+ src="https://example.com/video.mp4"
78
+ title="Autoplay Video"
79
+ autoPlay
80
+ />
81
+ ```
82
+
83
+ ### Disable Auto-Floating
84
+ Disable the automatic floating behavior when scrolling:
85
+
86
+ ```tsx
87
+ <VideoPlayer
88
+ src="https://example.com/video.mp4"
89
+ title="Static Video"
90
+ enableAutoFloat={false}
91
+ />
92
+ ```
93
+
94
+ ---
95
+
96
+ ## AI Best Practices
97
+
98
+ > [!TIP]
99
+ > - **Auto-Float** — The floating behavior is ideal for long-form content where users may want to continue watching while scrolling through other content.
100
+ > - **Posters** — Always provide a `poster` image for better UX, especially for videos that may take time to load.
101
+
102
+ > [!IMPORTANT]
103
103
  > - **Single Instance** — For auto-floating to work correctly, ensure the player is the only instance or properly managed when multiple videos exist on the page.
@@ -9,7 +9,8 @@ class MockIntersectionObserver {
9
9
  }
10
10
  vi.stubGlobal('IntersectionObserver', MockIntersectionObserver);
11
11
 
12
- import { render, screen } from '@testing-library/react';
12
+ import { screen } from '@testing-library/react';
13
+ import { renderWithProviders as render } from '../../../test/render';
13
14
  import { VideoPlayer } from './VideoPlayer';
14
15
 
15
16
  // Mock HTMLVideoElement methods
@@ -57,7 +58,7 @@ describe('VideoPlayer', () => {
57
58
  it('renders with default title when none is provided', () => {
58
59
  const { container } = render(<VideoPlayer src="test.mp4" />);
59
60
  const video = container.querySelector('video');
60
- expect(video?.getAttribute('title')).toBe('Untitled Video');
61
+ expect(video?.getAttribute('title')).toBe('Vídeo');
61
62
  });
62
63
 
63
64
  it('does not autoPlay by default', () => {