xertica-ui 2.5.3 → 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 (583) hide show
  1. package/CHANGELOG.md +687 -664
  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 +384 -359
  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 -1506
  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 +119 -119
  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 +1353 -1353
  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-DNdwuS-t.js → AssistantChart-BMNSA_Pk.js} +4 -4
  144. package/dist/{AssistantChart-COGiOV-g.cjs → AssistantChart-BzM7plyc.cjs} +31 -21
  145. package/dist/{AssistantChart-CWX1OWNM.js → AssistantChart-C842evTi.js} +31 -21
  146. package/dist/{AssistantChart-BW9JK6jw.cjs → AssistantChart-CVF2uh37.cjs} +4 -4
  147. package/dist/{AssistantChart-BZTPJ5dP.cjs → AssistantChart-JooMdVQU.cjs} +5 -5
  148. package/dist/{AssistantChart-DMJJ_Amf.js → AssistantChart-KHS-tp-L.js} +5 -5
  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-Cyl55sJb.js → VerifyEmailPage-BcCluouh.js} +135 -65
  161. package/dist/VerifyEmailPage-Bx1sr0uQ.cjs +3298 -0
  162. package/dist/{VerifyEmailPage-Bci0bA-P.js → VerifyEmailPage-DUYyXCX9.js} +3 -3
  163. package/dist/VerifyEmailPage-DXXMHbzq.js +3289 -0
  164. package/dist/{VerifyEmailPage-u_Dn7t1U.cjs → VerifyEmailPage-DpYtFk35.cjs} +21 -21
  165. package/dist/{VerifyEmailPage-X14vhdyl.js → VerifyEmailPage-NXKWW3Dk.js} +12 -12
  166. package/dist/{VerifyEmailPage-C7KiYXrm.cjs → VerifyEmailPage-QrCz4Wqr.cjs} +11 -11
  167. package/dist/{VerifyEmailPage-Bv8Ah_TK.cjs → VerifyEmailPage-ZmQra0Wi.cjs} +144 -74
  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 +15 -15
  295. package/dist/index.es.js +11 -11
  296. package/dist/layout.cjs.js +1 -1
  297. package/dist/layout.es.js +1 -1
  298. package/dist/pages.cjs.js +1 -1
  299. package/dist/pages.es.js +1 -1
  300. package/dist/{rich-text-editor-B2CKz7nx.cjs → rich-text-editor-BuqSu718.cjs} +68 -3
  301. package/dist/{rich-text-editor-DloeW0wc.js → rich-text-editor-CV8FtA_l.js} +66 -4
  302. package/dist/{sidebar-CLmIjgNd.cjs → sidebar-BGJ0j567.cjs} +84 -67
  303. package/dist/{sidebar-Duermn32.js → sidebar-BI6mZlC8.js} +81 -64
  304. package/dist/{sidebar-BS1p2V7t.cjs → sidebar-BtmotOg-.cjs} +367 -9
  305. package/dist/{sidebar-QwCoeoZ_.js → sidebar-D3EgGVxF.js} +1 -1
  306. package/dist/{sidebar-CQn_rwxP.cjs → sidebar-DDTqMGnR.cjs} +4 -4
  307. package/dist/{sidebar-3XyzjVBw.js → sidebar-I7EXyf5D.js} +364 -6
  308. package/dist/ui.cjs.js +4 -4
  309. package/dist/ui.es.js +4 -4
  310. package/dist/{xertica-assistant-B687qEPU.js → xertica-assistant-CJVnvMqU.js} +17 -8
  311. package/dist/{xertica-assistant-sOHwTgIP.cjs → xertica-assistant-CKPtc1z5.cjs} +19 -10
  312. package/dist/{xertica-assistant-QFUnv5I2.cjs → xertica-assistant-DER0brPQ.cjs} +6 -5
  313. package/dist/{xertica-assistant-CyikE3N_.js → xertica-assistant-DQCjpk5M.js} +4 -3
  314. package/dist/{xertica-assistant-B1NaSFFj.js → xertica-assistant-Dk-9AJzw.js} +6 -5
  315. package/dist/{xertica-assistant-CIaUlbIt.cjs → xertica-assistant-DxhIKvuY.cjs} +8 -7
  316. package/dist/xertica-ui.css +2 -2
  317. package/docs/components/audio-player.md +1 -1
  318. package/docs/components/sidebar.md +331 -331
  319. package/docs/components/stats-card.md +138 -138
  320. package/docs/components/toggle.md +12 -0
  321. package/docs/doc-audit.md +35 -229
  322. package/docs/i18n.md +31 -10
  323. package/docs/llms.md +6 -4
  324. package/llms-compact.txt +444 -444
  325. package/llms-full.txt +12144 -12144
  326. package/llms.txt +187 -187
  327. package/package.json +223 -219
  328. package/scripts/a11y-audit.mjs +162 -162
  329. package/scripts/fix-stories.cjs +19 -19
  330. package/styles/globals.css +0 -1
  331. package/styles/xertica/base.css +8 -0
  332. package/styles/xertica/tokens.css +240 -240
  333. package/templates/.env.example +2 -2
  334. package/templates/.prettierignore +4 -4
  335. package/templates/.prettierrc +10 -10
  336. package/templates/guidelines/Guidelines.md +865 -865
  337. package/templates/index.html +13 -13
  338. package/templates/package.json +69 -69
  339. package/templates/src/app/components/AuthGuard.tsx +11 -0
  340. package/templates/src/features/auth/ui/AuthPageShell.tsx +32 -32
  341. package/templates/src/features/home/ui/HomeContent.tsx +116 -116
  342. package/templates/src/features/settings/index.ts +2 -0
  343. package/templates/src/features/settings/ui/SettingsContent.tsx +134 -0
  344. package/templates/src/features/template/ui/TemplateContent.tsx +1321 -1321
  345. package/templates/src/i18n.ts +36 -13
  346. package/templates/src/locales/en/pages/settings.json +15 -0
  347. package/templates/src/locales/es/pages/settings.json +15 -0
  348. package/templates/src/locales/pt-BR/pages/settings.json +15 -0
  349. package/templates/src/pages/SettingsPage.tsx +28 -0
  350. package/templates/src/shared/config/navigation.ts +2 -2
  351. package/templates/src/styles/xertica/tokens.css +240 -240
  352. package/templates/vite.config.d.ts +2 -2
  353. package/templates/vite.config.js +20 -20
  354. package/utils/gemini.ts +2 -2
  355. package/dist/AssistantChart-9w31gdAb.cjs +0 -3363
  356. package/dist/AssistantChart-BAudAfne.cjs +0 -3591
  357. package/dist/AssistantChart-BAx9VQvb.cjs +0 -3374
  358. package/dist/AssistantChart-BP8upjMk.js +0 -3565
  359. package/dist/AssistantChart-BXU1ACnh.js +0 -3489
  360. package/dist/AssistantChart-CVko2A1W.js +0 -3348
  361. package/dist/AssistantChart-CVzmmhx4.js +0 -3337
  362. package/dist/AssistantChart-CeU2dIb6.js +0 -3469
  363. package/dist/AssistantChart-D0A1FPYt.cjs +0 -3515
  364. package/dist/AssistantChart-DO5UuX4J.cjs +0 -3495
  365. package/dist/AudioPlayer-1ypwE2Wh.cjs +0 -936
  366. package/dist/AudioPlayer-BJ2IuRQW.cjs +0 -1275
  367. package/dist/AudioPlayer-BWDW6TN9.cjs +0 -1279
  368. package/dist/AudioPlayer-CM962GEh.js +0 -1280
  369. package/dist/AudioPlayer-CbZId7cj.cjs +0 -998
  370. package/dist/AudioPlayer-DU8zt8-z.js +0 -999
  371. package/dist/AudioPlayer-DuKXrCfy.js +0 -937
  372. package/dist/AudioPlayer-Xxma6_-H.js +0 -1276
  373. package/dist/BrandColorsContext-DLVJgtmH.js +0 -666
  374. package/dist/BrandColorsContext-DZT7JjeD.js +0 -659
  375. package/dist/BrandColorsContext-GUyFmkX0.cjs +0 -665
  376. package/dist/BrandColorsContext-awnBCmC4.cjs +0 -666
  377. package/dist/CodeBlock-C2ZUXt8V.js +0 -219
  378. package/dist/CodeBlock-C5oYnLQp.cjs +0 -218
  379. package/dist/CodeBlock-DuxdtN-l.js +0 -219
  380. package/dist/CodeBlock-POVYONvC.cjs +0 -218
  381. package/dist/CustomTooltipContent-BT6brkVJ.cjs +0 -49
  382. package/dist/CustomTooltipContent-CfOfikhq.js +0 -33
  383. package/dist/CustomTooltipContent-DHjkY0ww.js +0 -40
  384. package/dist/CustomTooltipContent-c_K-DWRr.cjs +0 -56
  385. package/dist/FeatureCard-9GhnlgL3.js +0 -336
  386. package/dist/FeatureCard-Bcb3Zi54.js +0 -302
  387. package/dist/FeatureCard-Cfs6Ishq.js +0 -485
  388. package/dist/FeatureCard-CkPd2psQ.cjs +0 -301
  389. package/dist/FeatureCard-Dkp-xmzM.cjs +0 -335
  390. package/dist/FeatureCard-ie3L8Fpr.cjs +0 -484
  391. package/dist/FeatureCardSkeleton-CAgu8stE.js +0 -27
  392. package/dist/FeatureCardSkeleton-mO3Bdm_V.cjs +0 -26
  393. package/dist/LanguageContext-BwhwC3G2.js +0 -657
  394. package/dist/LanguageContext-DvUt5jBg.cjs +0 -656
  395. package/dist/LayoutContext-BDmcZfMH.cjs +0 -84
  396. package/dist/LayoutContext-C4kKN9RV.cjs +0 -93
  397. package/dist/LayoutContext-CGEe1oPq.js +0 -94
  398. package/dist/LayoutContext-CwT5KLiW.cjs +0 -104
  399. package/dist/LayoutContext-DVLCsoQn.js +0 -105
  400. package/dist/LayoutContext-dbQvdC4O.js +0 -85
  401. package/dist/ThemeContext-BbBNoFTG.js +0 -735
  402. package/dist/ThemeContext-Bo-W2WZH.js +0 -1856
  403. package/dist/ThemeContext-CP3a0jxy.cjs +0 -1855
  404. package/dist/ThemeContext-Cmr8Ex8H.cjs +0 -734
  405. package/dist/ThemeContext-CpqYShLq.cjs +0 -324
  406. package/dist/ThemeContext-D3LzacmG.js +0 -188
  407. package/dist/ThemeContext-DQUOeziy.cjs +0 -1855
  408. package/dist/ThemeContext-Du2nE1PL.js +0 -325
  409. package/dist/ThemeContext-GeEBTJ3q.cjs +0 -1621
  410. package/dist/ThemeContext-JyLK9B1o.js +0 -1622
  411. package/dist/ThemeContext-RTy1m2Uq.js +0 -82
  412. package/dist/ThemeContext-U4dEYc6C.cjs +0 -187
  413. package/dist/ThemeContext-bSzuOit2.cjs +0 -81
  414. package/dist/ThemeContext-ept8jhXI.js +0 -1856
  415. package/dist/VerifyEmailPage-BE-L9mB7.js +0 -2828
  416. package/dist/VerifyEmailPage-BIBOKV7Z.js +0 -3214
  417. package/dist/VerifyEmailPage-BJjAMUTW.js +0 -3223
  418. package/dist/VerifyEmailPage-BRSP-Pwt.cjs +0 -3196
  419. package/dist/VerifyEmailPage-Bae2cBXT.cjs +0 -2827
  420. package/dist/VerifyEmailPage-BiRm7Nh4.cjs +0 -3213
  421. package/dist/VerifyEmailPage-Bvfv8HVQ.js +0 -3214
  422. package/dist/VerifyEmailPage-CR7kb5df.cjs +0 -2827
  423. package/dist/VerifyEmailPage-C_ihbcth.js +0 -2828
  424. package/dist/VerifyEmailPage-CbgjOF0v.js +0 -2828
  425. package/dist/VerifyEmailPage-CdYPSJoO.js +0 -2828
  426. package/dist/VerifyEmailPage-CkBYfsNy.cjs +0 -3232
  427. package/dist/VerifyEmailPage-D-FRj5TU.cjs +0 -3213
  428. package/dist/VerifyEmailPage-DF2ilhum.cjs +0 -3210
  429. package/dist/VerifyEmailPage-DMBh4NM9.cjs +0 -2827
  430. package/dist/VerifyEmailPage-DTtFfC-J.js +0 -3197
  431. package/dist/VerifyEmailPage-Dt7zgA4w.cjs +0 -2827
  432. package/dist/VerifyEmailPage-EhudUdqF.js +0 -3211
  433. package/dist/VerifyEmailPage-RrUApqBN.js +0 -3214
  434. package/dist/VerifyEmailPage-VoMI7MYH.cjs +0 -3213
  435. package/dist/VerifyEmailPage-hdB8JQGv.cjs +0 -3213
  436. package/dist/VerifyEmailPage-vYHbYK3q.js +0 -3214
  437. package/dist/XerticaOrbe-BCUVSPPB.cjs +0 -1924
  438. package/dist/XerticaOrbe-BGIB1CTK.js +0 -1355
  439. package/dist/XerticaOrbe-By8eEvR-.js +0 -1925
  440. package/dist/XerticaOrbe-FWGjBj0U.cjs +0 -1354
  441. package/dist/XerticaProvider-AChwphCO.cjs +0 -48
  442. package/dist/XerticaProvider-AbWlr7Af.cjs +0 -48
  443. package/dist/XerticaProvider-B8CaV7xu.cjs +0 -39
  444. package/dist/XerticaProvider-BITjgC5p.js +0 -39
  445. package/dist/XerticaProvider-BSyFrmC0.js +0 -49
  446. package/dist/XerticaProvider-By8q3Roe.cjs +0 -38
  447. package/dist/XerticaProvider-CUYJZc32.js +0 -49
  448. package/dist/XerticaProvider-CW9hpCdF.cjs +0 -39
  449. package/dist/XerticaProvider-CWgby5mY.js +0 -49
  450. package/dist/XerticaProvider-CWs6EwNa.js +0 -49
  451. package/dist/XerticaProvider-CiNKjMx1.cjs +0 -48
  452. package/dist/XerticaProvider-CjQAQPcn.cjs +0 -48
  453. package/dist/XerticaProvider-D5lLumH-.js +0 -49
  454. package/dist/XerticaProvider-DQtvJU7m.js +0 -40
  455. package/dist/XerticaProvider-DUOJg9iX.js +0 -49
  456. package/dist/XerticaProvider-Dl_b72_l.cjs +0 -51
  457. package/dist/XerticaProvider-qQUDop71.cjs +0 -48
  458. package/dist/XerticaProvider-siSt9uG2.js +0 -40
  459. package/dist/XerticaXLogo-8TTzBjHw.cjs +0 -251
  460. package/dist/XerticaXLogo-B2svDGZh.cjs +0 -251
  461. package/dist/XerticaXLogo-BWaag64t.js +0 -252
  462. package/dist/XerticaXLogo-CFuIlYFH.js +0 -252
  463. package/dist/XerticaXLogo-CU-U-GP4.cjs +0 -251
  464. package/dist/XerticaXLogo-ChryA6xj.js +0 -252
  465. package/dist/XerticaXLogo-CowGv7BC.js +0 -252
  466. package/dist/XerticaXLogo-CziKMQil.cjs +0 -242
  467. package/dist/XerticaXLogo-D8jf0SNv.cjs +0 -214
  468. package/dist/XerticaXLogo-DHz5SugF.js +0 -252
  469. package/dist/XerticaXLogo-DTee_y8X.cjs +0 -251
  470. package/dist/XerticaXLogo-DfUvz-lD.js +0 -243
  471. package/dist/XerticaXLogo-DzXKZBtG.js +0 -231
  472. package/dist/XerticaXLogo-fAJMy3H4.js +0 -215
  473. package/dist/XerticaXLogo-kslQ8Tk_.cjs +0 -251
  474. package/dist/XerticaXLogo-xWbElCZj.cjs +0 -230
  475. package/dist/alert-dialog-iDe5VE5o.js +0 -842
  476. package/dist/alert-dialog-yckpaOpy.cjs +0 -865
  477. package/dist/avatar-Cq5_E8r9.cjs +0 -78
  478. package/dist/avatar-CuYu2MKt.cjs +0 -72
  479. package/dist/avatar-Cxyofu1H.js +0 -56
  480. package/dist/avatar-DSBfJMRJ.js +0 -62
  481. package/dist/breadcrumb-CVzzzqfo.js +0 -103
  482. package/dist/breadcrumb-DIJ0X3Ot.js +0 -96
  483. package/dist/breadcrumb-DjSxkjlQ.cjs +0 -95
  484. package/dist/breadcrumb-DnDlQFg2.cjs +0 -102
  485. package/dist/button-0CXwCRTm.cjs +0 -85
  486. package/dist/button-Bnv9SvYK.cjs +0 -79
  487. package/dist/button-C6uvh0rV.js +0 -63
  488. package/dist/button-qkz7Icqf.js +0 -69
  489. package/dist/card-B8-Gl5DL.js +0 -73
  490. package/dist/card-Bv_c57KU.cjs +0 -72
  491. package/dist/card-DJTsYhLL.cjs +0 -89
  492. package/dist/card-fi8zAN-I.js +0 -90
  493. package/dist/dropdown-menu-B_uEXNc4.cjs +0 -220
  494. package/dist/dropdown-menu-CFuCssWA.js +0 -204
  495. package/dist/dropdown-menu-Ze1YZFyc.cjs +0 -247
  496. package/dist/dropdown-menu-nc_Lvg-u.js +0 -231
  497. package/dist/google-maps-loader-BVoVhUwA.js +0 -316
  498. package/dist/google-maps-loader-BqsYL48U.cjs +0 -285
  499. package/dist/google-maps-loader-DjJaYhV6.cjs +0 -316
  500. package/dist/google-maps-loader-t2IlYBzw.js +0 -286
  501. package/dist/index-B7A523O_.js +0 -8
  502. package/dist/index-BabBx2pa.js +0 -6
  503. package/dist/index-CkTUgOwX.js +0 -8
  504. package/dist/index-D3RLKRAs.cjs +0 -7
  505. package/dist/index-DmHhnb7a.cjs +0 -7
  506. package/dist/index.umd.js +0 -13712
  507. package/dist/input-CNFHVKvo.cjs +0 -145
  508. package/dist/input-CPl84zAx.cjs +0 -151
  509. package/dist/input-C_UiS2Py.cjs +0 -152
  510. package/dist/input-D-6IsAca.js +0 -133
  511. package/dist/input-cc-PTD4R.js +0 -123
  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-DqLICivI.js +0 -2832
  525. package/dist/rich-text-editor-DxO1Hz3a.cjs +0 -2903
  526. package/dist/rich-text-editor-GS2kpTAK.cjs +0 -2966
  527. package/dist/routes.d.ts +0 -10
  528. package/dist/select-Cmb8zF7w.cjs +0 -156
  529. package/dist/select-CprSNX0z.js +0 -139
  530. package/dist/select-DT7Zjn42.cjs +0 -162
  531. package/dist/select-En8DkoaQ.js +0 -145
  532. package/dist/sidebar-B3EYhli0.cjs +0 -800
  533. package/dist/sidebar-B4ZWaMrE.js +0 -792
  534. package/dist/sidebar-B9NR0lCe.cjs +0 -800
  535. package/dist/sidebar-BcJ6LxvX.cjs +0 -733
  536. package/dist/sidebar-BvF5I2Ue.cjs +0 -800
  537. package/dist/sidebar-C5B_LHek.cjs +0 -795
  538. package/dist/sidebar-CA6_ek3f.js +0 -801
  539. package/dist/sidebar-CRMiBtAi.js +0 -801
  540. package/dist/sidebar-CVUGHOS_.cjs +0 -756
  541. package/dist/sidebar-CZ2mWaMM.cjs +0 -800
  542. package/dist/sidebar-CmvwjnVb.js +0 -757
  543. package/dist/sidebar-CplprZpM.js +0 -801
  544. package/dist/sidebar-DyYvgyBj.cjs +0 -795
  545. package/dist/sidebar-Dz7bd3zP.js +0 -796
  546. package/dist/sidebar-KIS0C2JH.js +0 -801
  547. package/dist/sidebar-OTO_up7Z.js +0 -801
  548. package/dist/sidebar-WoKvFWCN.js +0 -717
  549. package/dist/sidebar-zowjejT2.cjs +0 -800
  550. package/dist/skeleton-4zoHiFJ_.cjs +0 -83
  551. package/dist/skeleton-C4bHqUBf.js +0 -84
  552. package/dist/slider-C0JKA9k3.js +0 -56
  553. package/dist/slider-CPmwzm_3.cjs +0 -73
  554. package/dist/slider-DcJharR9.cjs +0 -73
  555. package/dist/slider-Pay3fka2.js +0 -56
  556. package/dist/sonner-DeUIj0Zg.cjs +0 -63
  557. package/dist/sonner-g9RIfi35.js +0 -47
  558. package/dist/tooltip-CNtsL5cB.cjs +0 -71
  559. package/dist/tooltip-CTyZCD8h.js +0 -55
  560. package/dist/tooltip-CwgSdy3h.cjs +0 -67
  561. package/dist/tooltip-D-OrYnKO.js +0 -51
  562. package/dist/use-audio-player-BJFV24XW.js +0 -188
  563. package/dist/use-audio-player-Bkh23vQ3.js +0 -177
  564. package/dist/use-audio-player-Dn1NR9xN.cjs +0 -176
  565. package/dist/use-audio-player-DyVYlOnR.cjs +0 -187
  566. package/dist/use-mobile-BB4M_4Ru.cjs +0 -47
  567. package/dist/use-mobile-CLu9nqGL.js +0 -31
  568. package/dist/use-mobile-CNwiBNxu.js +0 -33
  569. package/dist/use-mobile-Dlf74ufz.cjs +0 -49
  570. package/dist/xertica-assistant-B1IaHXnB.cjs +0 -1894
  571. package/dist/xertica-assistant-BMqdyRVi.js +0 -2082
  572. package/dist/xertica-assistant-BbgzsgsG.js +0 -2164
  573. package/dist/xertica-assistant-Bj3vBCq_.cjs +0 -2081
  574. package/dist/xertica-assistant-CfBCo21g.js +0 -2148
  575. package/dist/xertica-assistant-DIM_Do1k.js +0 -1866
  576. package/dist/xertica-assistant-DPsESB6t.js +0 -1878
  577. package/dist/xertica-assistant-DrsRwla1.cjs +0 -2147
  578. package/dist/xertica-assistant-Qp3ydksa.cjs +0 -1882
  579. package/dist/xertica-assistant-d2qs2Vd9.cjs +0 -2163
  580. package/dist/xertica-assistant-gnCJdcZY.js +0 -1866
  581. package/dist/xertica-assistant-yyrR0JKl.cjs +0 -1882
  582. package/styles/xertica/app-overrides/scrollbar.css +0 -33
  583. package/dist/{XerticaXLogo-qBPhwK3g.cjs → LanguageSelector-1cINLJ23.cjs} +80 -80
@@ -1,2827 +0,0 @@
1
- "use strict";
2
- const jsxRuntime = require("react/jsx-runtime");
3
- const React = require("react");
4
- const button = require("./button-0CXwCRTm.cjs");
5
- const input = require("./input-CPl84zAx.cjs");
6
- const alertDialog = require("./alert-dialog-yckpaOpy.cjs");
7
- const XerticaXLogo = require("./XerticaXLogo-xWbElCZj.cjs");
8
- const lucideReact = require("lucide-react");
9
- const reactRouterDom = require("react-router-dom");
10
- const sidebar = require("./sidebar-BcJ6LxvX.cjs");
11
- const card = require("./card-DJTsYhLL.cjs");
12
- const progress = require("./progress-BLwqortq.cjs");
13
- const LayoutContext = require("./LayoutContext-CwT5KLiW.cjs");
14
- const xerticaAssistant = require("./xertica-assistant-Qp3ydksa.cjs");
15
- const richTextEditor = require("./rich-text-editor-DbV-S7Fi.cjs");
16
- const select = require("./select-DT7Zjn42.cjs");
17
- const slider = require("./slider-CPmwzm_3.cjs");
18
- const sonner = require("sonner");
19
- function ForgotPasswordPage() {
20
- const navigate = reactRouterDom.useNavigate();
21
- const [email, setEmail] = React.useState("");
22
- const [isLoading, setIsLoading] = React.useState(false);
23
- const handleSubmit = async (e) => {
24
- e.preventDefault();
25
- setIsLoading(true);
26
- await new Promise((resolve) => setTimeout(resolve, 1500));
27
- navigate("/verify-email", { state: { email } });
28
- setIsLoading(false);
29
- };
30
- const handleSocialLogin = (_provider) => {
31
- };
32
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-h-screen flex", children: [
33
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden lg:flex lg:flex-1 relative overflow-hidden", children: [
34
- /* @__PURE__ */ jsxRuntime.jsx(
35
- alertDialog.ImageWithFallback,
36
- {
37
- src: "https://images.unsplash.com/photo-1557804506-669a67965ba0?w=1200&h=800&fit=crop&auto=format",
38
- alt: "Segurança e tecnologia",
39
- className: "absolute inset-0 w-full h-full object-cover"
40
- }
41
- ),
42
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-[image:var(--gradient-diagonal)] opacity-80" })
43
- ] }),
44
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex items-center justify-center px-4 sm:px-6 lg:px-8 lg:flex-none lg:w-1/2 relative bg-muted", children: [
45
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-4 right-4 z-20", children: /* @__PURE__ */ jsxRuntime.jsx(XerticaXLogo.LanguageSelector, { variant: "minimal", showIcon: false }) }),
46
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 lg:hidden bg-[image:var(--gradient-diagonal)] opacity-10 dark:opacity-5" }),
47
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full max-w-sm space-y-6 relative z-10", children: [
48
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
49
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center mb-4", children: /* @__PURE__ */ jsxRuntime.jsx(
50
- XerticaXLogo.XerticaLogo,
51
- {
52
- className: "h-12 w-auto text-primary dark:text-foreground",
53
- variant: "theme"
54
- }
55
- ) }),
56
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-sm text-muted-foreground", children: "Recuperar senha" }),
57
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-muted-foreground", children: "Digite seu e-mail e enviaremos as instruções para redefinir sua senha" })
58
- ] }),
59
- /* @__PURE__ */ jsxRuntime.jsxs("form", { className: "space-y-6", onSubmit: handleSubmit, children: [
60
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "form-group space-y-2", children: [
61
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "email", className: "form-label", children: "E-mail" }),
62
- /* @__PURE__ */ jsxRuntime.jsx(
63
- input.Input,
64
- {
65
- id: "email",
66
- name: "email",
67
- type: "email",
68
- required: true,
69
- className: "w-full",
70
- placeholder: "seu@email.com",
71
- value: email,
72
- onChange: (e) => setEmail(e.target.value)
73
- }
74
- )
75
- ] }),
76
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
77
- /* @__PURE__ */ jsxRuntime.jsx(
78
- button.Button,
79
- {
80
- type: "submit",
81
- className: "w-full",
82
- disabled: isLoading,
83
- children: isLoading ? "Enviando..." : "Enviar instruções"
84
- }
85
- ),
86
- /* @__PURE__ */ jsxRuntime.jsxs(
87
- button.Button,
88
- {
89
- type: "button",
90
- onClick: () => navigate("/login"),
91
- variant: "outline",
92
- className: "w-full text-muted-foreground hover:text-foreground",
93
- children: [
94
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeft, { className: "w-4 h-4 mr-2" }),
95
- "Voltar para o login"
96
- ]
97
- }
98
- )
99
- ] })
100
- ] }),
101
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
102
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full border-t border-border" }) }),
103
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex justify-center text-sm", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "bg-muted px-2 text-muted-foreground", children: "ou continue com" }) })
104
- ] }),
105
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
106
- /* @__PURE__ */ jsxRuntime.jsxs(
107
- button.Button,
108
- {
109
- type: "button",
110
- variant: "outline",
111
- className: "w-full justify-center",
112
- onClick: () => handleSocialLogin(),
113
- children: [
114
- /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "w-5 h-5 mr-2", viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", children: [
115
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#EA4335", d: "M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z" }),
116
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#4285F4", d: "M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z" }),
117
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#FBBC05", d: "M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z" }),
118
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#34A853", d: "M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z" }),
119
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "none", d: "M0 0h48v48H0z" })
120
- ] }),
121
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Entrar com Google" })
122
- ]
123
- }
124
- ),
125
- /* @__PURE__ */ jsxRuntime.jsxs(
126
- button.Button,
127
- {
128
- type: "button",
129
- variant: "outline",
130
- className: "w-full justify-center",
131
- onClick: () => handleSocialLogin(),
132
- children: [
133
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Lock, { className: "w-5 h-5 mr-2 text-[var(--chart-4)]" }),
134
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Entrar com MT Login" })
135
- ]
136
- }
137
- ),
138
- /* @__PURE__ */ jsxRuntime.jsx(
139
- button.Button,
140
- {
141
- type: "button",
142
- variant: "outline",
143
- className: "w-full justify-center font-normal",
144
- onClick: () => handleSocialLogin(),
145
- children: /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
146
- "Entrar com ",
147
- /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "font-semibold", children: "gov.br" })
148
- ] })
149
- }
150
- )
151
- ] })
152
- ] })
153
- ] })
154
- ] });
155
- }
156
- const routes = [
157
- {
158
- path: "/home",
159
- label: "Home",
160
- icon: lucideReact.Home
161
- },
162
- {
163
- path: "/template",
164
- label: "Template",
165
- icon: lucideReact.FileText
166
- }
167
- ];
168
- const getRouteByPath = (path) => {
169
- return routes.find((route) => route.path === path);
170
- };
171
- const SIDEBAR_COLLAPSED_WIDTH = 80;
172
- function HomeContent({ user, onLogout, onSettings }) {
173
- const layout = LayoutContext.useOptionalLayout();
174
- const sidebarExpanded = (layout == null ? void 0 : layout.sidebarExpanded) ?? false;
175
- const sidebarWidth = (layout == null ? void 0 : layout.sidebarWidth) ?? 256;
176
- const location = reactRouterDom.useLocation();
177
- const navigate = reactRouterDom.useNavigate();
178
- const labelTranslations = {
179
- "home": "Início",
180
- "template": "Template"
181
- };
182
- const currentRoute = getRouteByPath(location.pathname);
183
- (currentRoute == null ? void 0 : currentRoute.label) ? labelTranslations[currentRoute.label.toLowerCase()] || currentRoute.label : "Início";
184
- return /* @__PURE__ */ jsxRuntime.jsxs(
185
- "div",
186
- {
187
- style: {
188
- paddingLeft: sidebarExpanded ? `${sidebarWidth}px` : SIDEBAR_COLLAPSED_WIDTH
189
- },
190
- className: "flex-1 flex flex-col overflow-hidden transition-all duration-300",
191
- children: [
192
- /* @__PURE__ */ jsxRuntime.jsx(
193
- sidebar.Header,
194
- {
195
- showThemeToggle: true,
196
- showLanguageSelector: true,
197
- breadcrumbs: [
198
- { label: "Design System", href: "/home" },
199
- { label: "Início" }
200
- ],
201
- renderLink: (href, props) => /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Link, { to: href, ...props })
202
- }
203
- ),
204
- /* @__PURE__ */ jsxRuntime.jsx("main", { className: "flex-1 overflow-hidden bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx(input.ScrollArea, { className: "h-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-2 sm:p-4 md:p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-6xl mx-auto space-y-8", children: [
205
- /* @__PURE__ */ jsxRuntime.jsx(
206
- alertDialog.PageHeader,
207
- {
208
- title: "Bem-vindo ao Design System!",
209
- subtitle: "Sua plataforma inteligente para automação e análise de dados"
210
- }
211
- ),
212
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", children: /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { className: "hover:shadow-xl transition-shadow duration-200 flex flex-col h-full", children: [
213
- /* @__PURE__ */ jsxRuntime.jsx(card.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
214
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-2 bg-[var(--chart-2)]/20 rounded-[var(--radius)]", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "w-6 h-6 text-[var(--chart-2)]" }) }),
215
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
216
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { className: "text-sm", children: "Template CLI" }),
217
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "default", className: "text-xs", children: "Novo" })
218
- ] })
219
- ] }) }),
220
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: "Página de template pronta para uso CLI com todos os componentes configurados." }) }),
221
- /* @__PURE__ */ jsxRuntime.jsx(card.CardFooter, { children: /* @__PURE__ */ jsxRuntime.jsx(
222
- button.Button,
223
- {
224
- variant: "outline",
225
- className: "w-full",
226
- onClick: () => navigate("/template"),
227
- children: "Visualizar"
228
- }
229
- ) })
230
- ] }) })
231
- ] }) }) }) })
232
- ]
233
- }
234
- );
235
- }
236
- const richSuggestions = [
237
- { id: "chart-1", text: "Ver análise de desempenho" },
238
- { id: "table-1", text: "Gerar relatório do projeto" },
239
- { id: "doc-1", text: "Criar documento de requisitos" },
240
- { id: "pod-1", text: "Gerar podcast de resumo diário" }
241
- ];
242
- const feedbackOptions = [
243
- "Não era o que eu estava procurando",
244
- "Informações incorretas",
245
- "Resposta incompleta"
246
- ];
247
- function HomePage({ user, onLogout }) {
248
- const layout = LayoutContext.useOptionalLayout();
249
- const [localSidebarExpanded, setLocalSidebarExpanded] = React.useState(false);
250
- const [localAssistantExpanded, setLocalAssistantExpanded] = React.useState(false);
251
- const sidebarExpanded = (layout == null ? void 0 : layout.sidebarExpanded) ?? localSidebarExpanded;
252
- const sidebarWidth = (layout == null ? void 0 : layout.sidebarWidth) ?? 256;
253
- const assistenteExpanded = (layout == null ? void 0 : layout.assistenteExpanded) ?? localAssistantExpanded;
254
- const toggleSidebar = (layout == null ? void 0 : layout.toggleSidebar) ?? (() => setLocalSidebarExpanded((value) => !value));
255
- const toggleAssistente = (layout == null ? void 0 : layout.toggleAssistente) ?? (() => setLocalAssistantExpanded((value) => !value));
256
- const location = reactRouterDom.useLocation();
257
- const navigate = reactRouterDom.useNavigate();
258
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "h-screen flex bg-muted overflow-hidden relative", children: [
259
- /* @__PURE__ */ jsxRuntime.jsx(
260
- sidebar.Sidebar,
261
- {
262
- expanded: sidebarExpanded,
263
- width: sidebarWidth,
264
- onToggle: toggleSidebar,
265
- user: {
266
- ...user,
267
- name: "Ariel Santos",
268
- avatar: "https://github.com/shadcn.png"
269
- },
270
- onLogout,
271
- onSettingsClick: () => navigate("/settings"),
272
- location,
273
- navigate,
274
- routes
275
- }
276
- ),
277
- /* @__PURE__ */ jsxRuntime.jsx(
278
- HomeContent,
279
- {
280
- user,
281
- onLogout,
282
- onSettings: () => navigate("/settings")
283
- }
284
- ),
285
- /* @__PURE__ */ jsxRuntime.jsx(
286
- xerticaAssistant.XerticaAssistant,
287
- {
288
- isExpanded: assistenteExpanded,
289
- onToggle: toggleAssistente,
290
- defaultTab: "chat",
291
- demoMode: true,
292
- responseGenerator: xerticaAssistant.gerarResposta,
293
- richSuggestions,
294
- feedbackOptions,
295
- onEvaluation: () => {
296
- }
297
- }
298
- )
299
- ] });
300
- }
301
- function LoginPage({ onLogin }) {
302
- const navigate = reactRouterDom.useNavigate();
303
- const [email, setEmail] = React.useState("");
304
- const [password, setPassword] = React.useState("");
305
- const [isLoading, setIsLoading] = React.useState(false);
306
- const [error, setError] = React.useState("");
307
- const handleSubmit = async (e) => {
308
- e.preventDefault();
309
- setError("");
310
- setIsLoading(true);
311
- await new Promise((resolve) => setTimeout(resolve, 1e3));
312
- const success = onLogin(email, password);
313
- if (!success) {
314
- setError("Por favor, preencha todos os campos");
315
- }
316
- setIsLoading(false);
317
- };
318
- const handleSocialLogin = (_provider) => {
319
- onLogin("social@user.com", "social-auth");
320
- };
321
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-h-screen flex", children: [
322
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden lg:flex lg:flex-1 relative overflow-hidden", children: [
323
- /* @__PURE__ */ jsxRuntime.jsx(
324
- alertDialog.ImageWithFallback,
325
- {
326
- src: "https://images.unsplash.com/photo-1551434678-e076c223a692?w=1200&h=800&fit=crop&auto=format",
327
- alt: "Equipe trabalhando com tecnologia",
328
- className: "absolute inset-0 w-full h-full object-cover"
329
- }
330
- ),
331
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-[image:var(--gradient-diagonal)] opacity-80" })
332
- ] }),
333
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex items-center justify-center px-4 sm:px-6 lg:px-8 lg:flex-none lg:w-1/2 relative bg-muted", children: [
334
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-4 right-4 z-20", children: /* @__PURE__ */ jsxRuntime.jsx(XerticaXLogo.LanguageSelector, { variant: "minimal", showIcon: false }) }),
335
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 lg:hidden bg-[image:var(--gradient-diagonal)] opacity-10 dark:opacity-5" }),
336
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full max-w-sm space-y-6 relative z-10", children: [
337
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
338
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center mb-4", children: /* @__PURE__ */ jsxRuntime.jsx(
339
- XerticaXLogo.XerticaLogo,
340
- {
341
- className: "h-12 w-auto text-primary dark:text-foreground",
342
- variant: "theme"
343
- }
344
- ) }),
345
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-sm text-muted-foreground", children: "Acesse sua conta" })
346
- ] }),
347
- /* @__PURE__ */ jsxRuntime.jsxs("form", { className: "space-y-6", onSubmit: handleSubmit, children: [
348
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
349
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "email", children: "E-mail" }),
350
- /* @__PURE__ */ jsxRuntime.jsx(
351
- input.Input,
352
- {
353
- id: "email",
354
- name: "email",
355
- type: "email",
356
- required: true,
357
- className: "w-full",
358
- placeholder: "seu@email.com",
359
- value: email,
360
- onChange: (e) => setEmail(e.target.value)
361
- }
362
- )
363
- ] }),
364
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
365
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "password", children: "Senha" }),
366
- /* @__PURE__ */ jsxRuntime.jsx(
367
- input.Input,
368
- {
369
- id: "password",
370
- name: "password",
371
- type: "password",
372
- required: true,
373
- className: "w-full",
374
- placeholder: "••••••••",
375
- value: password,
376
- onChange: (e) => setPassword(e.target.value)
377
- }
378
- )
379
- ] }),
380
- error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-destructive text-sm text-center", children: error }),
381
- /* @__PURE__ */ jsxRuntime.jsx(
382
- button.Button,
383
- {
384
- type: "submit",
385
- className: "w-full",
386
- disabled: isLoading,
387
- children: isLoading ? "Entrando..." : "Entrar"
388
- }
389
- ),
390
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center", children: /* @__PURE__ */ jsxRuntime.jsx(
391
- "button",
392
- {
393
- type: "button",
394
- onClick: () => navigate("/forgot-password"),
395
- className: "text-sm text-primary hover:opacity-80 transition-colors",
396
- children: "Esqueceu sua senha?"
397
- }
398
- ) })
399
- ] }),
400
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
401
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full border-t border-border" }) }),
402
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex justify-center text-sm", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "bg-muted px-2 text-muted-foreground", children: "ou continue com" }) })
403
- ] }),
404
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
405
- /* @__PURE__ */ jsxRuntime.jsxs(
406
- button.Button,
407
- {
408
- type: "button",
409
- variant: "outline",
410
- className: "w-full justify-center",
411
- onClick: () => handleSocialLogin(),
412
- children: [
413
- /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "w-5 h-5 mr-2", viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", children: [
414
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#EA4335", d: "M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z" }),
415
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#4285F4", d: "M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z" }),
416
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#FBBC05", d: "M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z" }),
417
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#34A853", d: "M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z" }),
418
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "none", d: "M0 0h48v48H0z" })
419
- ] }),
420
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Entrar com Google" })
421
- ]
422
- }
423
- ),
424
- /* @__PURE__ */ jsxRuntime.jsxs(
425
- button.Button,
426
- {
427
- type: "button",
428
- variant: "outline",
429
- className: "w-full justify-center",
430
- onClick: () => handleSocialLogin(),
431
- children: [
432
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Lock, { className: "w-5 h-5 mr-2 text-[var(--chart-4)]" }),
433
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Entrar com MT Login" })
434
- ]
435
- }
436
- ),
437
- /* @__PURE__ */ jsxRuntime.jsx(
438
- button.Button,
439
- {
440
- type: "button",
441
- variant: "outline",
442
- className: "w-full justify-center font-normal",
443
- onClick: () => handleSocialLogin(),
444
- children: /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
445
- "Entrar com ",
446
- /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "font-semibold", children: "gov.br" })
447
- ] })
448
- }
449
- )
450
- ] })
451
- ] })
452
- ] })
453
- ] });
454
- }
455
- function ResetPasswordPage() {
456
- const navigate = reactRouterDom.useNavigate();
457
- const [password, setPassword] = React.useState("");
458
- const [confirmPassword, setConfirmPassword] = React.useState("");
459
- const [isLoading, setIsLoading] = React.useState(false);
460
- const [error, setError] = React.useState("");
461
- const [passwordStrength, setPasswordStrength] = React.useState(null);
462
- const checkPasswordStrength = (pwd) => {
463
- if (pwd.length === 0) {
464
- setPasswordStrength(null);
465
- return;
466
- }
467
- if (pwd.length < 6) {
468
- setPasswordStrength("weak");
469
- } else if (pwd.length < 10) {
470
- setPasswordStrength("medium");
471
- } else {
472
- setPasswordStrength("strong");
473
- }
474
- };
475
- const handlePasswordChange = (value) => {
476
- setPassword(value);
477
- checkPasswordStrength(value);
478
- setError("");
479
- };
480
- const handleSubmit = async (e) => {
481
- e.preventDefault();
482
- setError("");
483
- if (password.length < 6) {
484
- setError("A senha deve ter pelo menos 6 caracteres");
485
- return;
486
- }
487
- if (password !== confirmPassword) {
488
- setError("As senhas não coincidem");
489
- return;
490
- }
491
- setIsLoading(true);
492
- await new Promise((resolve) => setTimeout(resolve, 1500));
493
- navigate("/login", { state: { resetSuccess: true } });
494
- setIsLoading(false);
495
- };
496
- const getStrengthColor = () => {
497
- switch (passwordStrength) {
498
- case "weak":
499
- return "text-destructive";
500
- case "medium":
501
- return "text-[var(--chart-3)]";
502
- case "strong":
503
- return "text-[var(--chart-2)]";
504
- default:
505
- return "text-muted-foreground";
506
- }
507
- };
508
- const getStrengthText = () => {
509
- switch (passwordStrength) {
510
- case "weak":
511
- return "Senha fraca";
512
- case "medium":
513
- return "Senha média";
514
- case "strong":
515
- return "Senha forte";
516
- default:
517
- return "";
518
- }
519
- };
520
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-h-screen flex", children: [
521
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden lg:flex lg:flex-1 relative overflow-hidden", children: [
522
- /* @__PURE__ */ jsxRuntime.jsx(
523
- alertDialog.ImageWithFallback,
524
- {
525
- src: "https://images.unsplash.com/photo-1555949963-aa79dcee981c?w=1200&h=800&fit=crop&auto=format",
526
- alt: "Segurança e proteção",
527
- className: "absolute inset-0 w-full h-full object-cover"
528
- }
529
- ),
530
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-[image:var(--gradient-diagonal)] opacity-80" })
531
- ] }),
532
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex items-center justify-center px-4 sm:px-6 lg:px-8 lg:flex-none lg:w-1/2 relative bg-muted", children: [
533
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-4 right-4 z-20", children: /* @__PURE__ */ jsxRuntime.jsx(XerticaXLogo.LanguageSelector, { variant: "minimal", showIcon: false }) }),
534
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 lg:hidden bg-[image:var(--gradient-diagonal)] opacity-10 dark:opacity-5" }),
535
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full max-w-sm space-y-6 relative z-10", children: [
536
- /* @__PURE__ */ jsxRuntime.jsxs(
537
- "button",
538
- {
539
- onClick: () => navigate("/login"),
540
- className: "flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors",
541
- children: [
542
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeft, { className: "w-4 h-4" }),
543
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-small", children: "Voltar para o login" })
544
- ]
545
- }
546
- ),
547
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
548
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center mb-4", children: /* @__PURE__ */ jsxRuntime.jsx(
549
- XerticaXLogo.XerticaLogo,
550
- {
551
- className: "h-12 w-auto text-primary dark:text-foreground",
552
- variant: "theme"
553
- }
554
- ) }),
555
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-sm text-muted-foreground", children: "Redefinir senha" }),
556
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-muted-foreground", children: "Crie uma nova senha segura para sua conta" })
557
- ] }),
558
- /* @__PURE__ */ jsxRuntime.jsxs("form", { className: "space-y-6", onSubmit: handleSubmit, children: [
559
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
560
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "password", children: "Nova senha" }),
561
- /* @__PURE__ */ jsxRuntime.jsx(
562
- input.Input,
563
- {
564
- id: "password",
565
- name: "password",
566
- type: "password",
567
- required: true,
568
- className: "w-full",
569
- placeholder: "••••••••",
570
- value: password,
571
- onChange: (e) => handlePasswordChange(e.target.value)
572
- }
573
- ),
574
- passwordStrength && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
575
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 h-1 bg-muted rounded-full overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
576
- "div",
577
- {
578
- className: `h-full transition-all duration-300 ${passwordStrength === "weak" ? "w-1/3 bg-destructive" : passwordStrength === "medium" ? "w-2/3 bg-[var(--chart-3)]" : "w-full bg-[var(--chart-2)]"}`
579
- }
580
- ) }),
581
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-small ${getStrengthColor()}`, children: getStrengthText() })
582
- ] })
583
- ] }),
584
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
585
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "confirmPassword", children: "Confirmar senha" }),
586
- /* @__PURE__ */ jsxRuntime.jsx(
587
- input.Input,
588
- {
589
- id: "confirmPassword",
590
- name: "confirmPassword",
591
- type: "password",
592
- required: true,
593
- className: "w-full",
594
- placeholder: "••••••••",
595
- value: confirmPassword,
596
- onChange: (e) => {
597
- setConfirmPassword(e.target.value);
598
- setError("");
599
- }
600
- }
601
- )
602
- ] }),
603
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-accent rounded-[var(--radius)] p-4 space-y-2", children: [
604
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm", children: "Requisitos de senha:" }),
605
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
606
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
607
- /* @__PURE__ */ jsxRuntime.jsx(
608
- lucideReact.CheckCircle2,
609
- {
610
- className: `w-4 h-4 ${password.length >= 6 ? "text-[var(--chart-2)]" : "text-muted-foreground"}`
611
- }
612
- ),
613
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: "Mínimo de 6 caracteres" })
614
- ] }),
615
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
616
- /* @__PURE__ */ jsxRuntime.jsx(
617
- lucideReact.CheckCircle2,
618
- {
619
- className: `w-4 h-4 ${password === confirmPassword && password.length > 0 ? "text-[var(--chart-2)]" : "text-muted-foreground"}`
620
- }
621
- ),
622
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: "As senhas coincidem" })
623
- ] })
624
- ] })
625
- ] }),
626
- error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-destructive bg-destructive/10 rounded-[var(--radius)] p-3", children: [
627
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { className: "w-4 h-4 flex-shrink-0" }),
628
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: error })
629
- ] }),
630
- /* @__PURE__ */ jsxRuntime.jsx(
631
- button.Button,
632
- {
633
- type: "submit",
634
- className: "w-full",
635
- disabled: isLoading,
636
- children: isLoading ? "Redefinindo..." : "Redefinir senha"
637
- }
638
- )
639
- ] })
640
- ] })
641
- ] })
642
- ] });
643
- }
644
- function createLucideIconSvg(iconName) {
645
- const iconPaths = {
646
- utensils: '<path d="M3 2v7c0 1.1.9 2 2 2h4a2 2 0 0 0 2-2V2"></path><path d="M7 2v20"></path><path d="M21 15V2v0a5 5 0 0 0-5 5v6c0 1.1.9 2 2 2h3Zm0 0v7"></path>',
647
- hotel: '<path d="M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z"></path><path d="M8 6h8"></path><path d="M8 10h8"></path><path d="M8 14h8"></path><path d="M8 18h8"></path>',
648
- landmark: '<path d="m3 21 18-18"></path><path d="M9 15V6h6v9"></path><path d="M12 3v3"></path><path d="M3 15h18"></path><path d="M6 21v-6"></path><path d="M18 21v-6"></path>',
649
- shopping: '<path d="M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z"></path><path d="M3 6h18"></path><path d="M16 10a4 4 0 0 1-8 0"></path>',
650
- coffee: '<path d="M17 8h1a4 4 0 1 1 0 8h-1"></path><path d="M3 8h14v9a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4Z"></path><line x1="6" x2="6" y1="2" y2="4"></line><line x1="10" x2="10" y1="2" y2="4"></line><line x1="14" x2="14" y1="2" y2="4"></line>'
651
- };
652
- const path = iconPaths[iconName] || "";
653
- return `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">${path}</svg>`;
654
- }
655
- const markerGroups = {
656
- restaurant: {
657
- id: "restaurant",
658
- name: "Restaurantes",
659
- color: "var(--destructive)",
660
- // red
661
- iconColor: "#FFFFFF",
662
- // white para contraste
663
- iconName: "utensils",
664
- icon: lucideReact.Utensils
665
- },
666
- hotel: {
667
- id: "hotel",
668
- name: "Hotéis",
669
- color: "var(--info)",
670
- // blue
671
- iconColor: "#FFFFFF",
672
- iconName: "hotel",
673
- icon: lucideReact.Hotel
674
- },
675
- landmark: {
676
- id: "landmark",
677
- name: "Pontos Turísticos",
678
- color: "var(--success)",
679
- // green
680
- iconColor: "#FFFFFF",
681
- iconName: "landmark",
682
- icon: lucideReact.Landmark
683
- },
684
- shopping: {
685
- id: "shopping",
686
- name: "Compras",
687
- color: "var(--warning)",
688
- // orange
689
- iconColor: "#FFFFFF",
690
- iconName: "shopping",
691
- icon: lucideReact.ShoppingBag
692
- },
693
- cafe: {
694
- id: "cafe",
695
- name: "Cafeterias",
696
- color: "var(--primary)",
697
- // purple
698
- iconColor: "#FFFFFF",
699
- iconName: "coffee",
700
- icon: lucideReact.Coffee
701
- }
702
- };
703
- const sampleLocations = [
704
- // Restaurantes
705
- {
706
- position: { lat: -23.5505, lng: -46.6333 },
707
- title: "Restaurante Italiano",
708
- info: "Melhor pizza da cidade",
709
- group: "restaurant"
710
- },
711
- {
712
- position: { lat: -23.5485, lng: -46.635 },
713
- title: "Sushi Bar",
714
- info: "Comida japonesa autêntica",
715
- group: "restaurant"
716
- },
717
- {
718
- position: { lat: -23.552, lng: -46.631 },
719
- title: "Churrascaria Premium",
720
- info: "Rodízio tradicional brasileiro",
721
- group: "restaurant"
722
- },
723
- // Hotéis
724
- {
725
- position: { lat: -23.5475, lng: -46.6361 },
726
- title: "Hotel Luxo",
727
- info: "5 estrelas - Vista panorâmica",
728
- group: "hotel"
729
- },
730
- {
731
- position: { lat: -23.553, lng: -46.634 },
732
- title: "Hotel Boutique",
733
- info: "Design moderno e aconchegante",
734
- group: "hotel"
735
- },
736
- // Pontos Turísticos
737
- {
738
- position: { lat: -23.5613, lng: -46.6563 },
739
- title: "Parque Ibirapuera",
740
- info: "Maior parque urbano da cidade",
741
- group: "landmark"
742
- },
743
- {
744
- position: { lat: -23.5558, lng: -46.6396 },
745
- title: "MASP",
746
- info: "Museu de Arte de São Paulo",
747
- group: "landmark"
748
- },
749
- {
750
- position: { lat: -23.5489, lng: -46.6388 },
751
- title: "Avenida Paulista",
752
- info: "Centro financeiro e cultural",
753
- group: "landmark"
754
- },
755
- // Shopping
756
- {
757
- position: { lat: -23.5465, lng: -46.64 },
758
- title: "Shopping Center",
759
- info: "Mais de 300 lojas",
760
- group: "shopping"
761
- },
762
- {
763
- position: { lat: -23.554, lng: -46.638 },
764
- title: "Galeria de Arte",
765
- info: "Arte contemporânea e design",
766
- group: "shopping"
767
- },
768
- // Cafeterias
769
- {
770
- position: { lat: -23.5495, lng: -46.6345 },
771
- title: "Café Artesanal",
772
- info: "Café especial e brunch",
773
- group: "cafe"
774
- },
775
- {
776
- position: { lat: -23.551, lng: -46.637 },
777
- title: "Coffee House",
778
- info: "Café gourmet e wi-fi",
779
- group: "cafe"
780
- },
781
- {
782
- position: { lat: -23.5525, lng: -46.6355 },
783
- title: "Café Cultural",
784
- info: "Livros e café",
785
- group: "cafe"
786
- }
787
- ];
788
- function FilterableMapExample({ apiKey }) {
789
- const [activeFilters, setActiveFilters] = React.useState(
790
- new Set(Object.keys(markerGroups))
791
- );
792
- const [showFilters, setShowFilters] = React.useState(true);
793
- const filteredLocations = React.useMemo(() => {
794
- return sampleLocations.filter((location) => activeFilters.has(location.group));
795
- }, [activeFilters]);
796
- const toggleFilter = (groupId) => {
797
- setActiveFilters((prev) => {
798
- const newFilters = new Set(prev);
799
- if (newFilters.has(groupId)) {
800
- newFilters.delete(groupId);
801
- } else {
802
- newFilters.add(groupId);
803
- }
804
- return newFilters;
805
- });
806
- };
807
- const toggleAll = () => {
808
- if (activeFilters.size === Object.keys(markerGroups).length) {
809
- setActiveFilters(/* @__PURE__ */ new Set());
810
- } else {
811
- setActiveFilters(new Set(Object.keys(markerGroups)));
812
- }
813
- };
814
- const markersWithCustomization = filteredLocations.map((location) => ({
815
- ...location,
816
- customColor: markerGroups[location.group].color,
817
- iconSvg: createLucideIconSvg(markerGroups[location.group].iconName),
818
- iconColor: markerGroups[location.group].iconColor
819
- }));
820
- const getGroupCount = (groupId) => {
821
- return sampleLocations.filter((loc) => loc.group === groupId).length;
822
- };
823
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
824
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
825
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
826
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MapPin, { className: "w-5 h-5 text-primary" }),
827
- /* @__PURE__ */ jsxRuntime.jsx("h3", { children: "Filtro por Categorias" })
828
- ] }),
829
- /* @__PURE__ */ jsxRuntime.jsxs(progress.Badge, { variant: "secondary", children: [
830
- filteredLocations.length,
831
- " de ",
832
- sampleLocations.length,
833
- " locais"
834
- ] })
835
- ] }),
836
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: "Use os filtros compactos no canto superior esquerdo do mapa para visualizar marcadores por categoria" }),
837
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
838
- /* @__PURE__ */ jsxRuntime.jsx(
839
- alertDialog.Map,
840
- {
841
- center: { lat: -23.5505, lng: -46.6333 },
842
- zoom: 14,
843
- markers: markersWithCustomization,
844
- height: "500px",
845
- zoomControl: true,
846
- fullscreenControl: true,
847
- apiKey
848
- }
849
- ),
850
- /* @__PURE__ */ jsxRuntime.jsx(
851
- "div",
852
- {
853
- className: button.cn(
854
- "absolute top-4 left-4 z-10 transition-all duration-300",
855
- showFilters ? "translate-x-0" : "-translate-x-full"
856
- ),
857
- children: /* @__PURE__ */ jsxRuntime.jsxs(
858
- "div",
859
- {
860
- className: "p-2.5 rounded-lg shadow-[var(--shadow-elevation-sm)] bg-card border border-border max-w-[220px]",
861
- children: [
862
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2 gap-2", children: [
863
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
864
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Filter, { className: "w-3.5 h-3.5 text-foreground" }),
865
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-foreground", children: "Filtros" })
866
- ] }),
867
- /* @__PURE__ */ jsxRuntime.jsx(
868
- button.Button,
869
- {
870
- size: "sm",
871
- variant: "ghost",
872
- onClick: () => setShowFilters(false),
873
- className: "h-5 w-5 p-0",
874
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "w-3 h-3" })
875
- }
876
- )
877
- ] }),
878
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
879
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2 py-0.5", children: [
880
- /* @__PURE__ */ jsxRuntime.jsx(
881
- alertDialog.Checkbox,
882
- {
883
- id: "filter-all",
884
- checked: activeFilters.size === Object.keys(markerGroups).length,
885
- onCheckedChange: toggleAll
886
- }
887
- ),
888
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.Label, { htmlFor: "filter-all", className: "flex items-center gap-1.5 cursor-pointer text-sm", children: [
889
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MapPin, { className: "w-3.5 h-3.5" }),
890
- "Todos",
891
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "secondary", className: "text-xs h-4 px-1", children: sampleLocations.length })
892
- ] })
893
- ] }),
894
- Object.entries(markerGroups).map(([id, group]) => {
895
- const groupId = id;
896
- const Icon = group.icon;
897
- const isActive = activeFilters.has(groupId);
898
- const count = getGroupCount(groupId);
899
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2 py-0.5", children: [
900
- /* @__PURE__ */ jsxRuntime.jsx(
901
- alertDialog.Checkbox,
902
- {
903
- id: `filter-${id}`,
904
- checked: isActive,
905
- onCheckedChange: () => toggleFilter(groupId)
906
- }
907
- ),
908
- /* @__PURE__ */ jsxRuntime.jsxs(
909
- alertDialog.Label,
910
- {
911
- htmlFor: `filter-${id}`,
912
- className: "flex items-center gap-1.5 cursor-pointer text-sm",
913
- children: [
914
- /* @__PURE__ */ jsxRuntime.jsx(
915
- Icon,
916
- {
917
- className: "w-3.5 h-3.5",
918
- style: { color: group.color }
919
- }
920
- ),
921
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: isActive ? "text-foreground" : "text-muted-foreground", children: group.name }),
922
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "outline", className: "text-xs h-4 px-1", children: count })
923
- ]
924
- }
925
- )
926
- ] }, id);
927
- })
928
- ] })
929
- ]
930
- }
931
- )
932
- }
933
- ),
934
- !showFilters && /* @__PURE__ */ jsxRuntime.jsxs(
935
- button.Button,
936
- {
937
- size: "sm",
938
- onClick: () => setShowFilters(true),
939
- className: "absolute top-4 left-4 z-10 h-8 bg-primary text-primary-foreground",
940
- children: [
941
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Filter, { className: "w-3.5 h-3.5 mr-1.5" }),
942
- "Filtros"
943
- ]
944
- }
945
- )
946
- ] }),
947
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-3 justify-center pt-2 border-t border-border", children: Object.entries(markerGroups).map(([id, group]) => {
948
- const Icon = group.icon;
949
- const count = getGroupCount(id);
950
- return /* @__PURE__ */ jsxRuntime.jsxs(
951
- "div",
952
- {
953
- className: "flex items-center gap-2 px-3 py-1 rounded-lg bg-muted",
954
- children: [
955
- /* @__PURE__ */ jsxRuntime.jsx(
956
- "div",
957
- {
958
- className: "w-3 h-3 rounded-full",
959
- style: { backgroundColor: group.color }
960
- }
961
- ),
962
- /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "w-4 h-4", style: { color: group.color } }),
963
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", style: { color: "var(--foreground)" }, children: group.name }),
964
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "secondary", className: "text-xs h-5", children: count })
965
- ]
966
- },
967
- id
968
- );
969
- }) }),
970
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-3", children: [
971
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center p-3 rounded-lg bg-muted", children: [
972
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: "Total de Locais" }),
973
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-2xl text-foreground", children: sampleLocations.length })
974
- ] }),
975
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center p-3 rounded-lg bg-muted", children: [
976
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: "Visíveis" }),
977
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-2xl text-primary", children: filteredLocations.length })
978
- ] }),
979
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center p-3 rounded-lg bg-muted", children: [
980
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: "Categorias" }),
981
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-2xl text-foreground", children: Object.keys(markerGroups).length })
982
- ] }),
983
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center p-3 rounded-lg bg-muted", children: [
984
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: "Filtros Ativos" }),
985
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-2xl text-chart-2", children: activeFilters.size })
986
- ] })
987
- ] })
988
- ] });
989
- }
990
- function DrawingMapExample({ apiKey }) {
991
- const [mapInstance, setMapInstance] = React.useState(null);
992
- const [selectedMode, setSelectedMode] = React.useState(null);
993
- const [shapes, setShapes] = React.useState([]);
994
- const [showSaveDialog, setShowSaveDialog] = React.useState(false);
995
- const [savedData, setSavedData] = React.useState("");
996
- const [isDrawingPolygon, setIsDrawingPolygon] = React.useState(false);
997
- const tempPolylineRef = React.useRef(null);
998
- const polygonPathRef = React.useRef([]);
999
- const mapListenersRef = React.useRef([]);
1000
- const colors = {
1001
- fill: "#2C275B",
1002
- // Primary do CSS
1003
- stroke: "#2C275B",
1004
- fillOpacity: 0.2,
1005
- strokeWeight: 2,
1006
- editable: true,
1007
- draggable: true
1008
- };
1009
- const addMarker = React.useCallback((position) => {
1010
- if (!mapInstance) return;
1011
- const marker = new google.maps.marker.AdvancedMarkerElement({
1012
- position,
1013
- map: mapInstance,
1014
- gmpDraggable: true,
1015
- // Propriedade correta para AdvancedMarkerElement
1016
- title: "Marcador"
1017
- });
1018
- marker.addListener("dragend", () => {
1019
- sonner.toast.info("Posição do marcador atualizada");
1020
- });
1021
- const newShape = { type: "marker", overlay: marker };
1022
- setShapes((prev) => [...prev, newShape]);
1023
- sonner.toast.success("Marcador adicionado");
1024
- }, [mapInstance]);
1025
- const addCircle = React.useCallback((center) => {
1026
- if (!mapInstance) return;
1027
- const circle = new google.maps.Circle({
1028
- map: mapInstance,
1029
- center,
1030
- radius: 500,
1031
- fillColor: colors.fill,
1032
- fillOpacity: colors.fillOpacity,
1033
- strokeColor: colors.stroke,
1034
- strokeWeight: colors.strokeWeight,
1035
- editable: true,
1036
- draggable: true
1037
- });
1038
- const newShape = { type: "circle", overlay: circle };
1039
- setShapes((prev) => [...prev, newShape]);
1040
- sonner.toast.success("Círculo adicionado");
1041
- }, [mapInstance, colors]);
1042
- const addRectangle = React.useCallback((center) => {
1043
- if (!mapInstance) return;
1044
- const offset = 5e-3;
1045
- const bounds = {
1046
- north: center.lat() + offset,
1047
- south: center.lat() - offset,
1048
- east: center.lng() + offset,
1049
- west: center.lng() - offset
1050
- };
1051
- const rectangle = new google.maps.Rectangle({
1052
- map: mapInstance,
1053
- bounds,
1054
- fillColor: colors.fill,
1055
- fillOpacity: colors.fillOpacity,
1056
- strokeColor: colors.stroke,
1057
- strokeWeight: colors.strokeWeight,
1058
- editable: true,
1059
- draggable: true
1060
- });
1061
- const newShape = { type: "rectangle", overlay: rectangle };
1062
- setShapes((prev) => [...prev, newShape]);
1063
- sonner.toast.success("Retângulo adicionado");
1064
- }, [mapInstance, colors]);
1065
- const cancelPolygonDrawing = React.useCallback(() => {
1066
- if (tempPolylineRef.current) {
1067
- tempPolylineRef.current.setMap(null);
1068
- tempPolylineRef.current = null;
1069
- }
1070
- polygonPathRef.current = [];
1071
- setIsDrawingPolygon(false);
1072
- }, []);
1073
- const finishPolygon = React.useCallback(() => {
1074
- if (!mapInstance || polygonPathRef.current.length < 3) {
1075
- if (polygonPathRef.current.length < 3 && polygonPathRef.current.length > 0) {
1076
- sonner.toast.error("Polígono precisa de pelo menos 3 pontos.");
1077
- }
1078
- return;
1079
- }
1080
- const polygon = new google.maps.Polygon({
1081
- map: mapInstance,
1082
- paths: polygonPathRef.current,
1083
- fillColor: colors.fill,
1084
- fillOpacity: colors.fillOpacity,
1085
- strokeColor: colors.stroke,
1086
- strokeWeight: colors.strokeWeight,
1087
- editable: true,
1088
- draggable: true
1089
- });
1090
- const newShape = { type: "polygon", overlay: polygon };
1091
- setShapes((prev) => [...prev, newShape]);
1092
- cancelPolygonDrawing();
1093
- sonner.toast.success("Polígono criado com sucesso!");
1094
- }, [mapInstance, colors, cancelPolygonDrawing]);
1095
- const addPolygonPoint = React.useCallback((point) => {
1096
- var _a;
1097
- if (!mapInstance) return;
1098
- if (!isDrawingPolygon) {
1099
- setIsDrawingPolygon(true);
1100
- polygonPathRef.current = [point];
1101
- tempPolylineRef.current = new google.maps.Polyline({
1102
- map: mapInstance,
1103
- path: polygonPathRef.current,
1104
- strokeColor: colors.stroke,
1105
- strokeOpacity: 0.8,
1106
- strokeWeight: 2,
1107
- geodesic: true,
1108
- clickable: false
1109
- // Importante: não capturar cliques para não atrapalhar o mapa
1110
- });
1111
- sonner.toast.info("Clique para adicionar pontos. Duplo clique ou botão check para fechar.", { duration: 4e3 });
1112
- } else {
1113
- polygonPathRef.current.push(point);
1114
- (_a = tempPolylineRef.current) == null ? void 0 : _a.setPath(polygonPathRef.current);
1115
- }
1116
- }, [mapInstance, isDrawingPolygon, colors]);
1117
- const clearListeners = () => {
1118
- mapListenersRef.current.forEach((listener) => google.maps.event.removeListener(listener));
1119
- mapListenersRef.current = [];
1120
- };
1121
- React.useEffect(() => {
1122
- if (!mapInstance) return;
1123
- clearListeners();
1124
- if (!selectedMode) {
1125
- mapInstance.setOptions({ draggableCursor: "grab", clickableIcons: true });
1126
- return;
1127
- }
1128
- mapInstance.setOptions({
1129
- draggableCursor: "crosshair",
1130
- clickableIcons: false
1131
- });
1132
- const clickListener = mapInstance.addListener("click", (e) => {
1133
- if (!e.latLng) return;
1134
- switch (selectedMode) {
1135
- case "marker":
1136
- addMarker(e.latLng);
1137
- break;
1138
- case "circle":
1139
- addCircle(e.latLng);
1140
- break;
1141
- case "rectangle":
1142
- addRectangle(e.latLng);
1143
- break;
1144
- case "polygon":
1145
- addPolygonPoint(e.latLng);
1146
- break;
1147
- }
1148
- });
1149
- mapListenersRef.current.push(clickListener);
1150
- if (selectedMode === "polygon") {
1151
- const dblClickListener = mapInstance.addListener("dblclick", (e) => {
1152
- if (e.domEvent) e.domEvent.stopPropagation();
1153
- finishPolygon();
1154
- });
1155
- mapListenersRef.current.push(dblClickListener);
1156
- }
1157
- return () => {
1158
- clearListeners();
1159
- };
1160
- }, [mapInstance, selectedMode, addMarker, addCircle, addRectangle, addPolygonPoint, finishPolygon]);
1161
- const handleModeChange = (mode) => {
1162
- if (isDrawingPolygon) {
1163
- cancelPolygonDrawing();
1164
- }
1165
- setSelectedMode(mode);
1166
- };
1167
- const clearAll = () => {
1168
- shapes.forEach((shape) => {
1169
- if ("setMap" in shape.overlay) shape.overlay.setMap(null);
1170
- else shape.overlay.map = null;
1171
- });
1172
- setShapes([]);
1173
- if (isDrawingPolygon) cancelPolygonDrawing();
1174
- sonner.toast.info("Mapa limpo");
1175
- };
1176
- const undoLast = () => {
1177
- var _a;
1178
- if (isDrawingPolygon) {
1179
- if (polygonPathRef.current.length > 0) {
1180
- polygonPathRef.current.pop();
1181
- (_a = tempPolylineRef.current) == null ? void 0 : _a.setPath(polygonPathRef.current);
1182
- if (polygonPathRef.current.length === 0) {
1183
- cancelPolygonDrawing();
1184
- }
1185
- }
1186
- return;
1187
- }
1188
- if (shapes.length === 0) return;
1189
- const lastShape = shapes[shapes.length - 1];
1190
- if ("setMap" in lastShape.overlay) lastShape.overlay.setMap(null);
1191
- else lastShape.overlay.map = null;
1192
- setShapes((prev) => prev.slice(0, prev.length - 1));
1193
- };
1194
- const handleSave = () => {
1195
- if (shapes.length === 0) {
1196
- sonner.toast.error("Adicione desenhos ao mapa antes de salvar.");
1197
- return;
1198
- }
1199
- const exportData = shapes.map((s) => {
1200
- var _a, _b;
1201
- let data = {};
1202
- if (s.type === "marker") {
1203
- const marker = s.overlay;
1204
- const pos = marker.position;
1205
- if (pos) {
1206
- const lat = typeof pos.lat === "function" ? pos.lat() : pos.lat;
1207
- const lng = typeof pos.lng === "function" ? pos.lng() : pos.lng;
1208
- data = { lat, lng };
1209
- }
1210
- } else if (s.type === "circle") {
1211
- const circle = s.overlay;
1212
- data = {
1213
- center: { lat: (_a = circle.getCenter()) == null ? void 0 : _a.lat(), lng: (_b = circle.getCenter()) == null ? void 0 : _b.lng() },
1214
- radius: circle.getRadius()
1215
- };
1216
- } else if (s.type === "rectangle") {
1217
- const rect = s.overlay;
1218
- const bounds = rect.getBounds();
1219
- data = {
1220
- north: bounds == null ? void 0 : bounds.getNorthEast().lat(),
1221
- south: bounds == null ? void 0 : bounds.getSouthWest().lat(),
1222
- east: bounds == null ? void 0 : bounds.getNorthEast().lng(),
1223
- west: bounds == null ? void 0 : bounds.getSouthWest().lng()
1224
- };
1225
- } else if (s.type === "polygon") {
1226
- const poly = s.overlay;
1227
- const path = poly.getPath();
1228
- data = path.getArray().map((coord) => ({ lat: coord.lat(), lng: coord.lng() }));
1229
- }
1230
- return { type: s.type, data };
1231
- });
1232
- setSavedData(JSON.stringify(exportData, null, 2));
1233
- setShowSaveDialog(true);
1234
- };
1235
- const ToolButton = ({
1236
- active,
1237
- onClick,
1238
- icon: Icon,
1239
- label
1240
- }) => /* @__PURE__ */ jsxRuntime.jsxs(
1241
- button.Button,
1242
- {
1243
- variant: active ? "default" : "ghost",
1244
- className: `w-full justify-start gap-3 ${active ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:text-foreground"}`,
1245
- onClick,
1246
- children: [
1247
- /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-4 w-4" }),
1248
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium", children: label })
1249
- ]
1250
- }
1251
- );
1252
- return /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { className: "h-full border-0 shadow-none md:border md:shadow-sm", children: [
1253
- /* @__PURE__ */ jsxRuntime.jsx(card.CardHeader, { className: "border-b bg-muted/20 pb-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
1254
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1255
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Ferramentas de Desenho" }),
1256
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { className: "mt-1", children: "Crie geometrias personalizadas no mapa" })
1257
- ] }),
1258
- /* @__PURE__ */ jsxRuntime.jsxs(progress.Badge, { variant: "outline", className: "h-6", children: [
1259
- shapes.length,
1260
- " ",
1261
- shapes.length === 1 ? "elemento" : "elementos"
1262
- ] })
1263
- ] }) }),
1264
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardContent, { className: "p-0 flex flex-col md:flex-row h-[600px] bg-background", children: [
1265
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full md:w-64 border-b md:border-b-0 md:border-r bg-muted/10 flex flex-col", children: [
1266
- /* @__PURE__ */ jsxRuntime.jsx(input.ScrollArea, { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 space-y-6", children: [
1267
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
1268
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider px-2", children: "Ferramentas" }),
1269
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
1270
- /* @__PURE__ */ jsxRuntime.jsx(
1271
- ToolButton,
1272
- {
1273
- active: selectedMode === null,
1274
- onClick: () => handleModeChange(null),
1275
- icon: lucideReact.MousePointer2,
1276
- label: "Navegar"
1277
- }
1278
- ),
1279
- /* @__PURE__ */ jsxRuntime.jsx(
1280
- ToolButton,
1281
- {
1282
- active: selectedMode === "marker",
1283
- onClick: () => handleModeChange("marker"),
1284
- icon: lucideReact.MapPin,
1285
- label: "Marcador"
1286
- }
1287
- ),
1288
- /* @__PURE__ */ jsxRuntime.jsx(
1289
- ToolButton,
1290
- {
1291
- active: selectedMode === "circle",
1292
- onClick: () => handleModeChange("circle"),
1293
- icon: lucideReact.Circle,
1294
- label: "Círculo"
1295
- }
1296
- ),
1297
- /* @__PURE__ */ jsxRuntime.jsx(
1298
- ToolButton,
1299
- {
1300
- active: selectedMode === "rectangle",
1301
- onClick: () => handleModeChange("rectangle"),
1302
- icon: lucideReact.Square,
1303
- label: "Retângulo"
1304
- }
1305
- ),
1306
- /* @__PURE__ */ jsxRuntime.jsx(
1307
- ToolButton,
1308
- {
1309
- active: selectedMode === "polygon",
1310
- onClick: () => handleModeChange("polygon"),
1311
- icon: lucideReact.Hexagon,
1312
- label: "Polígono"
1313
- }
1314
- )
1315
- ] })
1316
- ] }),
1317
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, {}),
1318
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
1319
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider px-2", children: "Ações" }),
1320
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-2", children: [
1321
- /* @__PURE__ */ jsxRuntime.jsxs(
1322
- button.Button,
1323
- {
1324
- variant: "outline",
1325
- onClick: undoLast,
1326
- disabled: shapes.length === 0 && !isDrawingPolygon,
1327
- className: "w-full",
1328
- title: "Desfazer último",
1329
- "aria-label": "Desfazer último",
1330
- children: [
1331
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Undo, { className: "h-4 w-4 mr-2" }),
1332
- "Desfazer"
1333
- ]
1334
- }
1335
- ),
1336
- /* @__PURE__ */ jsxRuntime.jsxs(
1337
- button.Button,
1338
- {
1339
- variant: "destructive",
1340
- onClick: clearAll,
1341
- disabled: shapes.length === 0 && !isDrawingPolygon,
1342
- className: "w-full bg-destructive/10 text-destructive hover:bg-destructive hover:text-destructive-foreground border-0 shadow-none",
1343
- children: [
1344
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Trash2, { className: "h-4 w-4 mr-2" }),
1345
- "Limpar"
1346
- ]
1347
- }
1348
- )
1349
- ] }),
1350
- /* @__PURE__ */ jsxRuntime.jsxs(
1351
- button.Button,
1352
- {
1353
- variant: "default",
1354
- onClick: handleSave,
1355
- disabled: shapes.length === 0,
1356
- className: "w-full mt-2",
1357
- children: [
1358
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Save, { className: "h-4 w-4 mr-2" }),
1359
- "Salvar GeoJSON"
1360
- ]
1361
- }
1362
- )
1363
- ] })
1364
- ] }) }),
1365
- isDrawingPolygon && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 bg-primary/5 border-t border-primary/10", children: [
1366
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-2 text-primary text-xs font-medium", children: [
1367
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative flex h-2 w-2", children: [
1368
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "animate-ping absolute inline-flex h-full w-full rounded-full bg-primary opacity-75" }),
1369
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative inline-flex rounded-full h-2 w-2 bg-primary" })
1370
- ] }),
1371
- "Desenhando Polígono..."
1372
- ] }),
1373
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
1374
- /* @__PURE__ */ jsxRuntime.jsxs(
1375
- button.Button,
1376
- {
1377
- size: "sm",
1378
- className: "w-full bg-green-600 hover:bg-green-700 text-white",
1379
- onClick: finishPolygon,
1380
- children: [
1381
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-3 w-3 mr-1" }),
1382
- " Concluir"
1383
- ]
1384
- }
1385
- ),
1386
- /* @__PURE__ */ jsxRuntime.jsxs(
1387
- button.Button,
1388
- {
1389
- size: "sm",
1390
- variant: "outline",
1391
- className: "w-full",
1392
- onClick: cancelPolygonDrawing,
1393
- children: [
1394
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-3 w-3 mr-1" }),
1395
- " Cancelar"
1396
- ]
1397
- }
1398
- )
1399
- ] })
1400
- ] })
1401
- ] }),
1402
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 relative bg-muted/5 min-h-[400px]", children: [
1403
- /* @__PURE__ */ jsxRuntime.jsx(
1404
- alertDialog.Map,
1405
- {
1406
- className: "h-full w-full rounded-none md:rounded-br-lg",
1407
- center: { lat: -23.5505, lng: -46.6333 },
1408
- zoom: 13,
1409
- height: "100%",
1410
- mapContainerClassName: "h-full w-full rounded-none md:rounded-br-lg",
1411
- disableDefaultUI: true,
1412
- zoomControl: true,
1413
- onMapLoad: setMapInstance,
1414
- apiKey
1415
- }
1416
- ),
1417
- selectedMode && !isDrawingPolygon && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute bottom-6 left-1/2 -translate-x-1/2 bg-background/90 backdrop-blur border px-4 py-2 rounded-full shadow-sm text-xs font-medium text-muted-foreground pointer-events-none z-10", children: [
1418
- selectedMode === "marker" && "Clique no mapa para adicionar um marcador",
1419
- selectedMode === "circle" && "Clique no mapa para definir o centro do círculo",
1420
- selectedMode === "rectangle" && "Clique no mapa para criar um retângulo",
1421
- selectedMode === "polygon" && "Clique sequencialmente para desenhar a área"
1422
- ] })
1423
- ] }),
1424
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.Dialog, { open: showSaveDialog, onOpenChange: setShowSaveDialog, children: /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.DialogContent, { className: "max-w-md", children: [
1425
- /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.DialogHeader, { children: [
1426
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.DialogTitle, { children: "Dados Geográficos (GeoJSON)" }),
1427
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.DialogDescription, { children: "Copie os dados das formas desenhadas abaixo." })
1428
- ] }),
1429
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative mt-2", children: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "p-4 rounded-lg bg-muted overflow-auto max-h-[300px] text-xs font-mono", "data-custom-scrollbar": true, children: savedData }) }),
1430
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end mt-4", children: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { onClick: () => setShowSaveDialog(false), children: "Fechar" }) })
1431
- ] }) })
1432
- ] })
1433
- ] });
1434
- }
1435
- function MapShowcase() {
1436
- const [activeTab, setActiveTab] = React.useState("simple");
1437
- const [isTransitioning, setIsTransitioning] = React.useState(false);
1438
- const [apiKey, setApiKey] = React.useState("");
1439
- const [inputApiKey, setInputApiKey] = React.useState("");
1440
- const [showTraffic, setShowTraffic] = React.useState(false);
1441
- const [showTransit, setShowTransit] = React.useState(false);
1442
- const [showBicycling, setShowBicycling] = React.useState(false);
1443
- const [showZoomControl, setShowZoomControl] = React.useState(true);
1444
- const [showMapTypeControl, setShowMapTypeControl] = React.useState(false);
1445
- const [showStreetViewControl, setShowStreetViewControl] = React.useState(false);
1446
- const [showFullscreenControl, setShowFullscreenControl] = React.useState(true);
1447
- const handleTabChange = (value) => {
1448
- if (value === activeTab) return;
1449
- setIsTransitioning(true);
1450
- setTimeout(() => {
1451
- setActiveTab(value);
1452
- setIsTransitioning(false);
1453
- }, 50);
1454
- };
1455
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-8", children: [
1456
- /* @__PURE__ */ jsxRuntime.jsx(
1457
- alertDialog.PageHeader,
1458
- {
1459
- title: "Mapas",
1460
- subtitle: "Biblioteca de componentes de mapa para visualização de dados geoespaciais. Utiliza a API do Google Maps com estilização personalizada do Xertica UI.",
1461
- actions: /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { children: "Design System" })
1462
- }
1463
- ),
1464
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1465
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
1466
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Configuração da API Key" }),
1467
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Insira sua Google Maps API Key para renderizar os mapas abaixo." })
1468
- ] }),
1469
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full max-w-md items-center space-x-2", children: [
1470
- /* @__PURE__ */ jsxRuntime.jsx(
1471
- input.Input,
1472
- {
1473
- type: "password",
1474
- placeholder: "Cole sua Google Maps API Key aqui",
1475
- "aria-label": "Google Maps API Key",
1476
- value: inputApiKey,
1477
- onChange: (e) => setInputApiKey(e.target.value),
1478
- className: "max-w-md h-10"
1479
- }
1480
- ),
1481
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { onClick: () => setApiKey(inputApiKey), children: "Salvar" })
1482
- ] }) })
1483
- ] }),
1484
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.Tabs, { value: activeTab, onValueChange: handleTabChange, className: "w-full", children: [
1485
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.TabsList, { className: "grid w-full grid-cols-4 mb-8", children: [
1486
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsTrigger, { value: "simple", children: "Mapas Simples" }),
1487
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsTrigger, { value: "markers", children: "Marcadores" }),
1488
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsTrigger, { value: "controls", children: "Controles" }),
1489
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.TabsTrigger, { value: "drawing", className: "flex items-center gap-2", children: [
1490
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pencil, { className: "w-3 h-3" }),
1491
- " Desenho"
1492
- ] })
1493
- ] }),
1494
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsContent, { value: "simple", className: "space-y-8", children: !isTransitioning && activeTab === "simple" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1495
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1496
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
1497
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Mapa Padrão" }),
1498
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Configuração básica do mapa centralizado em uma coordenada específica." })
1499
- ] }),
1500
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx(
1501
- alertDialog.Map,
1502
- {
1503
- center: { lat: -23.5505, lng: -46.6333 },
1504
- zoom: 13,
1505
- height: "400px",
1506
- apiKey
1507
- }
1508
- ) })
1509
- ] }),
1510
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1511
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
1512
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Camadas (Layers)" }),
1513
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Sobreposição de informações como tráfego, transporte público e ciclovias." })
1514
- ] }),
1515
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardContent, { className: "space-y-4", children: [
1516
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap gap-6 p-4 border rounded-lg bg-muted/50", children: [
1517
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
1518
- /* @__PURE__ */ jsxRuntime.jsx(
1519
- alertDialog.Switch,
1520
- {
1521
- id: "traffic",
1522
- checked: showTraffic,
1523
- onCheckedChange: setShowTraffic
1524
- }
1525
- ),
1526
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.Label, { htmlFor: "traffic", className: "flex items-center gap-2", children: [
1527
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Layers, { className: "w-4 h-4" }),
1528
- " Trânsito"
1529
- ] })
1530
- ] }),
1531
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
1532
- /* @__PURE__ */ jsxRuntime.jsx(
1533
- alertDialog.Switch,
1534
- {
1535
- id: "transit",
1536
- checked: showTransit,
1537
- onCheckedChange: setShowTransit
1538
- }
1539
- ),
1540
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.Label, { htmlFor: "transit", className: "flex items-center gap-2", children: [
1541
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Layers, { className: "w-4 h-4" }),
1542
- " Transporte"
1543
- ] })
1544
- ] }),
1545
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
1546
- /* @__PURE__ */ jsxRuntime.jsx(
1547
- alertDialog.Switch,
1548
- {
1549
- id: "bicycling",
1550
- checked: showBicycling,
1551
- onCheckedChange: setShowBicycling
1552
- }
1553
- ),
1554
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.Label, { htmlFor: "bicycling", className: "flex items-center gap-2", children: [
1555
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Layers, { className: "w-4 h-4" }),
1556
- " Ciclovias"
1557
- ] })
1558
- ] })
1559
- ] }),
1560
- /* @__PURE__ */ jsxRuntime.jsx(
1561
- alertDialog.Map,
1562
- {
1563
- center: { lat: -23.5505, lng: -46.6333 },
1564
- zoom: 12,
1565
- height: "500px",
1566
- layers: {
1567
- traffic: showTraffic,
1568
- transit: showTransit,
1569
- bicycling: showBicycling
1570
- },
1571
- apiKey
1572
- }
1573
- )
1574
- ] })
1575
- ] }),
1576
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid md:grid-cols-3 gap-4", children: [
1577
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1578
- /* @__PURE__ */ jsxRuntime.jsx(card.CardHeader, { className: "p-4 pb-2", children: /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { className: "text-sm", children: "São Paulo" }) }),
1579
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { className: "p-4 pt-0", children: /* @__PURE__ */ jsxRuntime.jsx(
1580
- alertDialog.Map,
1581
- {
1582
- center: { lat: -23.5505, lng: -46.6333 },
1583
- zoom: 11,
1584
- height: "200px",
1585
- disableDefaultUI: true,
1586
- apiKey
1587
- }
1588
- ) })
1589
- ] }),
1590
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1591
- /* @__PURE__ */ jsxRuntime.jsx(card.CardHeader, { className: "p-4 pb-2", children: /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { className: "text-sm", children: "Rio de Janeiro" }) }),
1592
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { className: "p-4 pt-0", children: /* @__PURE__ */ jsxRuntime.jsx(
1593
- alertDialog.Map,
1594
- {
1595
- center: { lat: -22.9068, lng: -43.1729 },
1596
- zoom: 11,
1597
- height: "200px",
1598
- disableDefaultUI: true,
1599
- apiKey
1600
- }
1601
- ) })
1602
- ] }),
1603
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1604
- /* @__PURE__ */ jsxRuntime.jsx(card.CardHeader, { className: "p-4 pb-2", children: /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { className: "text-sm", children: "New York" }) }),
1605
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { className: "p-4 pt-0", children: /* @__PURE__ */ jsxRuntime.jsx(
1606
- alertDialog.Map,
1607
- {
1608
- center: { lat: 40.7128, lng: -74.006 },
1609
- zoom: 11,
1610
- height: "200px",
1611
- disableDefaultUI: true,
1612
- apiKey
1613
- }
1614
- ) })
1615
- ] })
1616
- ] })
1617
- ] }) }),
1618
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsContent, { value: "markers", className: "space-y-8", children: !isTransitioning && activeTab === "markers" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1619
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1620
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
1621
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Marcadores e Pins" }),
1622
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Exemplos de marcadores personalizados com diferentes cores e informações." })
1623
- ] }),
1624
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx(
1625
- alertDialog.Map,
1626
- {
1627
- center: { lat: -23.5505, lng: -46.6333 },
1628
- zoom: 13,
1629
- height: "500px",
1630
- apiKey,
1631
- markers: [
1632
- {
1633
- position: { lat: -23.5505, lng: -46.6333 },
1634
- title: "Principal",
1635
- info: "Marcador padrão",
1636
- customColor: "#4F46E5"
1637
- },
1638
- {
1639
- position: { lat: -23.54, lng: -46.64 },
1640
- title: "Secundário",
1641
- info: "Marcador de alerta",
1642
- customColor: "#EF4444",
1643
- icon: "!"
1644
- },
1645
- {
1646
- position: { lat: -23.56, lng: -46.62 },
1647
- title: "Loja",
1648
- info: "Ponto de venda",
1649
- customColor: "#10B981",
1650
- icon: "S"
1651
- }
1652
- ]
1653
- }
1654
- ) })
1655
- ] }),
1656
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1657
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
1658
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Marcador com Ações" }),
1659
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Marcador interativo que exibe conteúdo rico (texto, imagem, botões) ao ser clicado." })
1660
- ] }),
1661
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx(
1662
- alertDialog.Map,
1663
- {
1664
- center: { lat: -23.5505, lng: -46.6333 },
1665
- zoom: 13,
1666
- height: "500px",
1667
- apiKey,
1668
- markers: [
1669
- {
1670
- position: { lat: -23.5505, lng: -46.6333 },
1671
- label: "🏢",
1672
- richContent: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 max-w-[260px]", children: [
1673
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
1674
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-base", children: "Xertica HQ" }),
1675
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "outline", className: "text-[10px] h-5", children: "Open" })
1676
- ] }),
1677
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full h-32 bg-muted rounded-md mb-3 overflow-hidden relative", children: [
1678
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-[image:var(--gradient-diagonal)] opacity-80" }),
1679
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center text-white font-medium", children: "Office View" })
1680
- ] }),
1681
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-3 leading-relaxed", children: "Sede principal em São Paulo. Espaço moderno para reuniões e eventos." }),
1682
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-2", children: [
1683
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { size: "sm", className: "w-full h-8 text-xs shadow-sm", children: "Navegar" }),
1684
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { size: "sm", variant: "outline", className: "w-full h-8 text-xs bg-background", children: "Detalhes" })
1685
- ] })
1686
- ] })
1687
- }
1688
- ]
1689
- }
1690
- ) })
1691
- ] }),
1692
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1693
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
1694
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Áreas e Zonas" }),
1695
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Delimitação de áreas geográficas usando círculos e polígonos." })
1696
- ] }),
1697
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx(
1698
- alertDialog.Map,
1699
- {
1700
- center: { lat: -23.5505, lng: -46.6333 },
1701
- zoom: 12,
1702
- height: "500px",
1703
- apiKey,
1704
- markers: [
1705
- {
1706
- position: { lat: -23.5505, lng: -46.6333 },
1707
- title: "Centro da Zona",
1708
- info: "Raio de 3km",
1709
- customColor: "#6366F1"
1710
- }
1711
- ],
1712
- circle: {
1713
- center: { lat: -23.5505, lng: -46.6333 },
1714
- radius: 3e3,
1715
- fillColor: "#6366F1",
1716
- strokeColor: "#4F46E5"
1717
- },
1718
- polygon: {
1719
- paths: [
1720
- [
1721
- { lat: -23.52, lng: -46.6 },
1722
- { lat: -23.52, lng: -46.66 },
1723
- { lat: -23.58, lng: -46.66 },
1724
- { lat: -23.58, lng: -46.6 }
1725
- ]
1726
- ],
1727
- fillColor: "#10B981",
1728
- strokeColor: "#059669"
1729
- }
1730
- }
1731
- ) })
1732
- ] })
1733
- ] }) }),
1734
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsContent, { value: "controls", className: "space-y-8", children: !isTransitioning && activeTab === "controls" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1735
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1736
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
1737
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Controles do Mapa" }),
1738
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Personalize a interface do mapa ativando ou desativando controles nativos." })
1739
- ] }),
1740
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardContent, { className: "space-y-4", children: [
1741
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-4 p-4 border rounded-lg bg-muted/50", children: [
1742
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
1743
- /* @__PURE__ */ jsxRuntime.jsx(
1744
- alertDialog.Checkbox,
1745
- {
1746
- id: "zoom",
1747
- checked: showZoomControl,
1748
- onCheckedChange: (c) => setShowZoomControl(!!c)
1749
- }
1750
- ),
1751
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "zoom", children: "Zoom Control" })
1752
- ] }),
1753
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
1754
- /* @__PURE__ */ jsxRuntime.jsx(
1755
- alertDialog.Checkbox,
1756
- {
1757
- id: "maptype",
1758
- checked: showMapTypeControl,
1759
- onCheckedChange: (c) => setShowMapTypeControl(!!c)
1760
- }
1761
- ),
1762
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "maptype", children: "Map Type" })
1763
- ] }),
1764
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
1765
- /* @__PURE__ */ jsxRuntime.jsx(
1766
- alertDialog.Checkbox,
1767
- {
1768
- id: "streetview",
1769
- checked: showStreetViewControl,
1770
- onCheckedChange: (c) => setShowStreetViewControl(!!c)
1771
- }
1772
- ),
1773
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "streetview", children: "Street View" })
1774
- ] }),
1775
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
1776
- /* @__PURE__ */ jsxRuntime.jsx(
1777
- alertDialog.Checkbox,
1778
- {
1779
- id: "fullscreen",
1780
- checked: showFullscreenControl,
1781
- onCheckedChange: (c) => setShowFullscreenControl(!!c)
1782
- }
1783
- ),
1784
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "fullscreen", children: "Fullscreen" })
1785
- ] })
1786
- ] }),
1787
- /* @__PURE__ */ jsxRuntime.jsx(
1788
- alertDialog.Map,
1789
- {
1790
- center: { lat: -23.5505, lng: -46.6333 },
1791
- zoom: 13,
1792
- height: "400px",
1793
- apiKey,
1794
- zoomControl: showZoomControl,
1795
- mapTypeControl: showMapTypeControl,
1796
- streetViewControl: showStreetViewControl,
1797
- fullscreenControl: showFullscreenControl
1798
- }
1799
- )
1800
- ] })
1801
- ] }),
1802
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1803
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
1804
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Filtros Interativos" }),
1805
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Exemplo avançado de mapa com controles customizados para filtragem de marcadores." })
1806
- ] }),
1807
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx(FilterableMapExample, { apiKey }) })
1808
- ] })
1809
- ] }) }),
1810
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsContent, { value: "drawing", className: "space-y-8", children: !isTransitioning && activeTab === "drawing" && /* @__PURE__ */ jsxRuntime.jsx(DrawingMapExample, { apiKey }) })
1811
- ] }),
1812
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid md:grid-cols-3 gap-6 pt-8 border-t", children: [
1813
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1814
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-sm", children: "Documentação" }),
1815
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground", children: [
1816
- "Verifique ",
1817
- /* @__PURE__ */ jsxRuntime.jsx("code", { children: "MAP_SETUP.md" }),
1818
- " para configuração inicial e requisitos de API."
1819
- ] })
1820
- ] }),
1821
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1822
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-sm", children: "Performance" }),
1823
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: "Utiliza carregamento assíncrono e AdvancedMarkerElement para melhor desempenho." })
1824
- ] }),
1825
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1826
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-sm", children: "Design System" }),
1827
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground", children: [
1828
- "Componentes seguem estritamente as variáveis de tokens do ",
1829
- /* @__PURE__ */ jsxRuntime.jsx("code", { children: "globals.css" }),
1830
- "."
1831
- ] })
1832
- ] })
1833
- ] })
1834
- ] });
1835
- }
1836
- function TemplateContent({ user, onLogout, onSettings }) {
1837
- const layout = LayoutContext.useOptionalLayout();
1838
- const [localSidebarExpanded, setLocalSidebarExpanded] = React.useState(false);
1839
- const [localSidebarWidth, setLocalSidebarWidth] = React.useState(256);
1840
- const sidebarExpanded = (layout == null ? void 0 : layout.sidebarExpanded) ?? localSidebarExpanded;
1841
- const sidebarWidth = (layout == null ? void 0 : layout.sidebarWidth) ?? localSidebarWidth;
1842
- const setSidebarWidth = (layout == null ? void 0 : layout.setSidebarWidth) ?? setLocalSidebarWidth;
1843
- (layout == null ? void 0 : layout.toggleSidebar) ?? (() => setLocalSidebarExpanded((value) => !value));
1844
- reactRouterDom.useNavigate();
1845
- const [progress$1, setProgress] = React.useState(45);
1846
- const [sliderValue, setSliderValue] = React.useState([50]);
1847
- const [switchEnabled, setSwitchEnabled] = React.useState(false);
1848
- const [showSidebarUser, setShowSidebarUser] = React.useState(true);
1849
- const [showSidebarSettings, setShowSidebarSettings] = React.useState(true);
1850
- const [showSidebarLogout, setShowSidebarLogout] = React.useState(true);
1851
- const [showHeaderActions, setShowHeaderActions] = React.useState(true);
1852
- const [showHeaderBreadcrumbs, setShowHeaderBreadcrumbs] = React.useState(true);
1853
- const handleFormSubmit = (e) => {
1854
- e.preventDefault();
1855
- sonner.toast.success("Form submitted successfully!");
1856
- };
1857
- return /* @__PURE__ */ jsxRuntime.jsxs(
1858
- "div",
1859
- {
1860
- className: "flex-1 flex flex-col overflow-hidden transition-all duration-300",
1861
- style: {
1862
- paddingLeft: sidebarExpanded ? `${sidebarWidth}px` : "80px"
1863
- },
1864
- children: [
1865
- /* @__PURE__ */ jsxRuntime.jsx(
1866
- sidebar.Header,
1867
- {
1868
- showThemeToggle: true,
1869
- showLanguageSelector: true,
1870
- breadcrumbs: [
1871
- { label: "Design System", href: "/home", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Home, { className: "w-4 h-4" }) },
1872
- { label: "Página de Template" }
1873
- ],
1874
- renderLink: (href, props) => /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Link, { to: href, ...props })
1875
- }
1876
- ),
1877
- /* @__PURE__ */ jsxRuntime.jsx("main", { className: "flex-1 overflow-hidden bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx(input.ScrollArea, { className: "h-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-2 sm:p-4 md:p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-6xl mx-auto space-y-8", children: [
1878
- /* @__PURE__ */ jsxRuntime.jsx(
1879
- alertDialog.PageHeader,
1880
- {
1881
- title: "Página de Template",
1882
- subtitle: "Template completo com componentes do Design System"
1883
- }
1884
- ),
1885
- /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
1886
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4", children: "Header with Breadcrumbs" }),
1887
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1888
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
1889
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Main Header" }),
1890
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Example of Header with 4-level breadcrumbs" })
1891
- ] }),
1892
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardContent, { className: "p-0 border-t bg-background overflow-hidden rounded-b-[var(--radius-lg)]", children: [
1893
- /* @__PURE__ */ jsxRuntime.jsx(
1894
- sidebar.Header,
1895
- {
1896
- className: "border-b",
1897
- breadcrumbs: [
1898
- { label: "Dashboard", href: "#", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Home, { className: "w-4 h-4" }) },
1899
- { label: "Settings", href: "#", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "w-4 h-4" }) },
1900
- { label: "Users", href: "#", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Users, { className: "w-4 h-4" }) },
1901
- { label: "Access Profile" }
1902
- ],
1903
- showLanguageSelector: true,
1904
- showThemeToggle: true
1905
- }
1906
- ),
1907
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-6 min-h-[200px]", children: [
1908
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-lg font-semibold mb-2", children: "Example Content" }),
1909
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-muted-foreground", children: [
1910
- "Neste exemplo, o componente ",
1911
- /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Header" }),
1912
- " principal da aplicação agora suporta receber um array de breadcrumbs para navegações complexas com mais de 3 níveis."
1913
- ] })
1914
- ] })
1915
- ] })
1916
- ] })
1917
- ] }),
1918
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, { className: "my-8" }),
1919
- /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
1920
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4", children: "Alertas" }),
1921
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-4 md:grid-cols-2", children: [
1922
- /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.Alert, { variant: "info", children: [
1923
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.AlertTitle, { children: "Informação" }),
1924
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.AlertDescription, { children: "Este é um exemplo de alerta informativo usando os componentes do Design System." })
1925
- ] }),
1926
- /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.Alert, { variant: "destructive", children: [
1927
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.AlertTitle, { children: "Erro" }),
1928
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.AlertDescription, { children: "Ocorreu um erro ao processar sua solicitação." })
1929
- ] }),
1930
- /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.Alert, { variant: "success", children: [
1931
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.AlertTitle, { children: "Sucesso" }),
1932
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.AlertDescription, { children: "Operação realizada com sucesso!" })
1933
- ] }),
1934
- /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.Alert, { variant: "warning", children: [
1935
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.AlertTitle, { children: "Aviso" }),
1936
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.AlertDescription, { children: "Atenção: Esta ação não pode ser desfeita." })
1937
- ] })
1938
- ] })
1939
- ] }),
1940
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, { className: "my-8" }),
1941
- /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
1942
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4", children: "Cards & Abas" }),
1943
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.Tabs, { defaultValue: "overview", className: "w-full", children: [
1944
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.TabsList, { className: "grid w-full grid-cols-4", children: [
1945
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsTrigger, { value: "overview", children: "Visão Geral" }),
1946
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsTrigger, { value: "forms", children: "Formulários" }),
1947
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsTrigger, { value: "data", children: "Dados" }),
1948
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsTrigger, { value: "settings", children: "Configurações" })
1949
- ] }),
1950
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.TabsContent, { value: "overview", className: "space-y-4", children: [
1951
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-4 md:grid-cols-3", children: [
1952
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1953
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
1954
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Total de Usuários" }),
1955
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Últimos 30 dias" })
1956
- ] }),
1957
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-foreground", children: [
1958
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "[font-size:var(--text-stats)] [font-weight:var(--font-weight-bold)]", children: "1,234" }),
1959
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "default", className: "ml-2", children: "+12%" })
1960
- ] }) })
1961
- ] }),
1962
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1963
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
1964
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Receita Total" }),
1965
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Mês atual" })
1966
- ] }),
1967
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-foreground", children: [
1968
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "[font-size:var(--text-stats)] [font-weight:var(--font-weight-bold)]", children: "$ 45.2k" }),
1969
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "secondary", className: "ml-2", children: "+8%" })
1970
- ] }) })
1971
- ] }),
1972
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1973
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
1974
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Taxa de Conversão" }),
1975
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Semana atual" })
1976
- ] }),
1977
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-foreground", children: [
1978
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "[font-size:var(--text-stats)] [font-weight:var(--font-weight-bold)]", children: "3.2%" }),
1979
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "outline", className: "ml-2", children: "-2%" })
1980
- ] }) })
1981
- ] })
1982
- ] }),
1983
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
1984
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
1985
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Progresso & Sliders" }),
1986
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Exemplo de componentes de progresso" })
1987
- ] }),
1988
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardContent, { className: "space-y-6", children: [
1989
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1990
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
1991
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { children: "Progresso do Projeto" }),
1992
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "[font-size:var(--text-small)] text-muted-foreground", children: [
1993
- progress$1,
1994
- "%"
1995
- ] })
1996
- ] }),
1997
- /* @__PURE__ */ jsxRuntime.jsx(progress.Progress, { value: progress$1, className: "w-full" }),
1998
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
1999
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { size: "sm", onClick: () => setProgress(Math.max(0, progress$1 - 10)), children: "-10%" }),
2000
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { size: "sm", onClick: () => setProgress(Math.min(100, progress$1 + 10)), children: "+10%" })
2001
- ] })
2002
- ] }),
2003
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, {}),
2004
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2005
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
2006
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { children: "Volume" }),
2007
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "[font-size:var(--text-small)] text-muted-foreground", children: [
2008
- sliderValue[0],
2009
- "%"
2010
- ] })
2011
- ] }),
2012
- /* @__PURE__ */ jsxRuntime.jsx(
2013
- slider.Slider,
2014
- {
2015
- value: sliderValue,
2016
- onValueChange: setSliderValue,
2017
- min: 0,
2018
- max: 100,
2019
- step: 1,
2020
- className: "w-full",
2021
- "aria-label": "Volume"
2022
- }
2023
- )
2024
- ] })
2025
- ] })
2026
- ] })
2027
- ] }),
2028
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsContent, { value: "forms", className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
2029
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
2030
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Formulário de Cadastro" }),
2031
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Preencha os campos abaixo para criar uma nova conta" })
2032
- ] }),
2033
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleFormSubmit, className: "space-y-4", children: [
2034
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-4 md:grid-cols-2", children: [
2035
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2036
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "firstName", children: "Nome" }),
2037
- /* @__PURE__ */ jsxRuntime.jsx(input.Input, { id: "firstName", placeholder: "João" })
2038
- ] }),
2039
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2040
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "lastName", children: "Sobrenome" }),
2041
- /* @__PURE__ */ jsxRuntime.jsx(input.Input, { id: "lastName", placeholder: "Silva" })
2042
- ] })
2043
- ] }),
2044
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2045
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "email", children: "E-mail" }),
2046
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
2047
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mail, { className: "absolute left-3 top-3 h-4 w-4 text-muted-foreground" }),
2048
- /* @__PURE__ */ jsxRuntime.jsx(input.Input, { id: "email", type: "email", placeholder: "john@example.com", className: "pl-10" })
2049
- ] })
2050
- ] }),
2051
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2052
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "phone", children: "Telefone" }),
2053
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
2054
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Phone, { className: "absolute left-3 top-3 h-4 w-4 text-muted-foreground" }),
2055
- /* @__PURE__ */ jsxRuntime.jsx(input.Input, { id: "phone", type: "tel", placeholder: "(11) 99999-9999", className: "pl-10" })
2056
- ] })
2057
- ] }),
2058
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2059
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "role", children: "Função" }),
2060
- /* @__PURE__ */ jsxRuntime.jsxs(select.Select, { children: [
2061
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectTrigger, { id: "role", children: /* @__PURE__ */ jsxRuntime.jsx(select.SelectValue, { placeholder: "Selecione uma função" }) }),
2062
- /* @__PURE__ */ jsxRuntime.jsxs(select.SelectContent, { children: [
2063
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectItem, { value: "developer", children: "Desenvolvedor" }),
2064
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectItem, { value: "designer", children: "Designer" }),
2065
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectItem, { value: "manager", children: "Gerente" }),
2066
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectItem, { value: "analyst", children: "Analista" })
2067
- ] })
2068
- ] })
2069
- ] }),
2070
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2071
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "bio", children: "Biografia" }),
2072
- /* @__PURE__ */ jsxRuntime.jsx(
2073
- richTextEditor.Textarea,
2074
- {
2075
- id: "bio",
2076
- placeholder: "Conte-nos um pouco sobre você...",
2077
- rows: 4
2078
- }
2079
- )
2080
- ] }),
2081
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, {}),
2082
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
2083
- /* @__PURE__ */ jsxRuntime.jsx("h4", { children: "Preferências" }),
2084
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2085
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
2086
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Checkbox, { id: "newsletter" }),
2087
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "newsletter", className: "font-normal", children: "Receber newsletter por e-mail" })
2088
- ] }),
2089
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
2090
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Checkbox, { id: "notifications" }),
2091
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "notifications", className: "font-normal", children: "Ativar notificações push" })
2092
- ] }),
2093
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
2094
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Checkbox, { id: "updates" }),
2095
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "updates", className: "font-normal", children: "Receber atualizações sobre novos recursos" })
2096
- ] })
2097
- ] }),
2098
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, {}),
2099
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2100
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { children: "Tipo de Conta" }),
2101
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.RadioGroup, { defaultValue: "personal", "aria-label": "Tipo de Conta", children: [
2102
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
2103
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.RadioGroupItem, { value: "personal", id: "personal" }),
2104
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "personal", className: "font-normal", children: "Pessoal" })
2105
- ] }),
2106
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
2107
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.RadioGroupItem, { value: "business", id: "business" }),
2108
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "business", className: "font-normal", children: "Empresarial" })
2109
- ] }),
2110
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
2111
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.RadioGroupItem, { value: "enterprise", id: "enterprise" }),
2112
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "enterprise", className: "font-normal", children: "Corporativo" })
2113
- ] })
2114
- ] })
2115
- ] })
2116
- ] })
2117
- ] }) }),
2118
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardFooter, { className: "flex justify-between", children: [
2119
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "outline", children: "Cancelar" }),
2120
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { onClick: handleFormSubmit, children: "Criar Conta" })
2121
- ] })
2122
- ] }) }),
2123
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsContent, { value: "data", className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
2124
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
2125
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Lista de Usuários" }),
2126
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Gerenciar usuários do sistema" })
2127
- ] }),
2128
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardContent, { children: [
2129
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
2130
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "absolute left-3 top-3 h-4 w-4 text-muted-foreground" }),
2131
- /* @__PURE__ */ jsxRuntime.jsx(
2132
- input.Input,
2133
- {
2134
- placeholder: "Buscar usuários...",
2135
- "aria-label": "Buscar usuários",
2136
- className: "pl-10"
2137
- }
2138
- )
2139
- ] }) }),
2140
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-[var(--radius-lg)] border border-border overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.Table, { children: [
2141
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.TableRow, { children: [
2142
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableHead, { children: "Name" }),
2143
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableHead, { children: "Email" }),
2144
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableHead, { children: "Role" }),
2145
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableHead, { children: "Status" }),
2146
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableHead, { className: "text-right", children: "Actions" })
2147
- ] }) }),
2148
- /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.TableBody, { children: [
2149
- /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.TableRow, { children: [
2150
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: "Ana Silva" }),
2151
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: "ana.silva@example.com" }),
2152
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: "Developer" }),
2153
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "default", children: "Active" }) }),
2154
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { className: "text-right", children: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "ghost", size: "sm", children: "Edit" }) })
2155
- ] }),
2156
- /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.TableRow, { children: [
2157
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: "Bruno Costa" }),
2158
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: "bruno.costa@example.com" }),
2159
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: "Designer" }),
2160
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "default", children: "Active" }) }),
2161
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { className: "text-right", children: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "ghost", size: "sm", children: "Edit" }) })
2162
- ] }),
2163
- /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.TableRow, { children: [
2164
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: "Carla Oliveira" }),
2165
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: "carla.oliveira@example.com" }),
2166
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: "Manager" }),
2167
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "secondary", children: "Away" }) }),
2168
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { className: "text-right", children: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "ghost", size: "sm", children: "Edit" }) })
2169
- ] }),
2170
- /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.TableRow, { children: [
2171
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: "Diego Santos" }),
2172
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: "diego.santos@example.com" }),
2173
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: "Analyst" }),
2174
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "outline", children: "Inactive" }) }),
2175
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.TableCell, { className: "text-right", children: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "ghost", size: "sm", children: "Edit" }) })
2176
- ] })
2177
- ] })
2178
- ] }) })
2179
- ] }),
2180
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardFooter, { className: "flex justify-between items-center", children: [
2181
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: "Showing 4 of 127 users" }),
2182
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
2183
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "outline", size: "sm", children: "Previous" }),
2184
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "outline", size: "sm", children: "Next" })
2185
- ] })
2186
- ] })
2187
- ] }) }),
2188
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsContent, { value: "settings", className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
2189
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
2190
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Configurações do Sistema" }),
2191
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Gerenciar configurações gerais" })
2192
- ] }),
2193
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardContent, { className: "space-y-6", children: [
2194
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
2195
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
2196
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "dark-mode", children: "Dark Mode" }),
2197
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: "Enable dark theme in the interface" })
2198
- ] }),
2199
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Switch, { id: "dark-mode", checked: switchEnabled, onCheckedChange: setSwitchEnabled })
2200
- ] }),
2201
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, {}),
2202
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
2203
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
2204
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "email-notifications", children: "Email Notifications" }),
2205
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: "Receive important updates by email" })
2206
- ] }),
2207
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Switch, { id: "email-notifications", defaultChecked: true })
2208
- ] }),
2209
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, {}),
2210
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
2211
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
2212
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "push-notifications", children: "Push Notifications" }),
2213
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: "Receive instant notifications in the browser" })
2214
- ] }),
2215
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Switch, { id: "push-notifications" })
2216
- ] }),
2217
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, {}),
2218
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2219
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { children: "Language" }),
2220
- /* @__PURE__ */ jsxRuntime.jsxs(select.Select, { defaultValue: "pt-br", children: [
2221
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectTrigger, { "aria-label": "Idioma do sistema", children: /* @__PURE__ */ jsxRuntime.jsx(select.SelectValue, {}) }),
2222
- /* @__PURE__ */ jsxRuntime.jsxs(select.SelectContent, { children: [
2223
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectItem, { value: "pt-br", children: "Portuguese (Brazil)" }),
2224
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectItem, { value: "en", children: "English" }),
2225
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectItem, { value: "es", children: "Spanish" })
2226
- ] })
2227
- ] })
2228
- ] }),
2229
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, {}),
2230
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2231
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { children: "Time Zone" }),
2232
- /* @__PURE__ */ jsxRuntime.jsxs(select.Select, { defaultValue: "america-sao-paulo", children: [
2233
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectTrigger, { "aria-label": "Fuso horário", children: /* @__PURE__ */ jsxRuntime.jsx(select.SelectValue, {}) }),
2234
- /* @__PURE__ */ jsxRuntime.jsxs(select.SelectContent, { children: [
2235
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectItem, { value: "america-sao-paulo", children: "America/Sao Paulo (GMT-3)" }),
2236
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectItem, { value: "america-new-york", children: "America/New York (GMT-5)" }),
2237
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectItem, { value: "europe-london", children: "Europe/London (GMT+0)" })
2238
- ] })
2239
- ] })
2240
- ] })
2241
- ] }),
2242
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardFooter, { className: "flex justify-between", children: [
2243
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "outline", children: "Restaurar Padrões" }),
2244
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { children: "Salvar Alterações" })
2245
- ] })
2246
- ] }) })
2247
- ] })
2248
- ] }),
2249
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, { className: "my-8" }),
2250
- /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
2251
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4", children: "Botões" }),
2252
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
2253
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
2254
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Variações de Botão" }),
2255
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Diferentes estilos e tamanhos de botões" })
2256
- ] }),
2257
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardContent, { className: "space-y-6", children: [
2258
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2259
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { children: "Variants" }),
2260
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap gap-3", children: [
2261
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "default", children: "Default" }),
2262
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "secondary", children: "Secondary" }),
2263
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "outline", children: "Outline" }),
2264
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "ghost", children: "Ghost" }),
2265
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "link", children: "Link" }),
2266
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "destructive", children: "Destructive" })
2267
- ] })
2268
- ] }),
2269
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, {}),
2270
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2271
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { children: "Sizes" }),
2272
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [
2273
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { size: "sm", children: "Small" }),
2274
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { size: "default", children: "Default" }),
2275
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { size: "lg", children: "Large" }),
2276
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { size: "icon", "aria-label": "Configurações", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "h-4 w-4" }) })
2277
- ] })
2278
- ] }),
2279
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, {}),
2280
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2281
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { children: "With Icons" }),
2282
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap gap-3", children: [
2283
- /* @__PURE__ */ jsxRuntime.jsxs(button.Button, { children: [
2284
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { className: "mr-2 h-4 w-4" }),
2285
- "Profile"
2286
- ] }),
2287
- /* @__PURE__ */ jsxRuntime.jsxs(button.Button, { variant: "secondary", children: [
2288
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mail, { className: "mr-2 h-4 w-4" }),
2289
- "Messages"
2290
- ] }),
2291
- /* @__PURE__ */ jsxRuntime.jsxs(button.Button, { variant: "outline", children: [
2292
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Calendar, { className: "mr-2 h-4 w-4" }),
2293
- "Schedule"
2294
- ] })
2295
- ] })
2296
- ] }),
2297
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, {}),
2298
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2299
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { children: "States" }),
2300
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap gap-3", children: [
2301
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { disabled: true, children: "Disabled" }),
2302
- /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "outline", disabled: true, children: "Outline Disabled" })
2303
- ] })
2304
- ] })
2305
- ] })
2306
- ] })
2307
- ] }),
2308
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, { className: "my-8" }),
2309
- /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
2310
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4", children: "Badges" }),
2311
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
2312
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
2313
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Variações de Badge" }),
2314
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Estilos diferentes de badge para status e tags" })
2315
- ] }),
2316
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap gap-3", children: [
2317
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "default", children: "Padrão" }),
2318
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "secondary", children: "Secundário" }),
2319
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "outline", children: "Contorno" }),
2320
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "destructive", children: "Destrutivo" }),
2321
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { className: "bg-success text-success-foreground", children: "Sucesso" }),
2322
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { className: "bg-warning text-warning-foreground", children: "Aviso" }),
2323
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { className: "bg-info text-info-foreground", children: "Info" })
2324
- ] }) })
2325
- ] })
2326
- ] }),
2327
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, { className: "my-8" }),
2328
- /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
2329
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4", children: "Diálogos" }),
2330
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-4 md:grid-cols-2", children: [
2331
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
2332
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
2333
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Diálogo" }),
2334
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Um modal interativo básico" })
2335
- ] }),
2336
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { className: "flex justify-center py-6", children: /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.Dialog, { children: [
2337
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.DialogTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "outline", children: "Editar Perfil" }) }),
2338
- /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.DialogContent, { className: "sm:max-w-[425px]", children: [
2339
- /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.DialogHeader, { children: [
2340
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.DialogTitle, { children: "Editar Perfil" }),
2341
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.DialogDescription, { children: "Faça alterações no seu perfil aqui. Clique em salvar quando terminar." })
2342
- ] }),
2343
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-4 py-4", children: [
2344
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-4 items-center gap-4", children: [
2345
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "name", className: "text-right", children: "Nome" }),
2346
- /* @__PURE__ */ jsxRuntime.jsx(input.Input, { id: "name", defaultValue: "John Doe", className: "col-span-3" })
2347
- ] }),
2348
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-4 items-center gap-4", children: [
2349
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "username", className: "text-right", children: "Usuário" }),
2350
- /* @__PURE__ */ jsxRuntime.jsx(input.Input, { id: "username", defaultValue: "@johndoe", className: "col-span-3" })
2351
- ] })
2352
- ] }),
2353
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.DialogFooter, { children: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { type: "submit", children: "Atualizar" }) })
2354
- ] })
2355
- ] }) })
2356
- ] }),
2357
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
2358
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
2359
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Alerta de Diálogo" }),
2360
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Um alerta para decisões importantes" })
2361
- ] }),
2362
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { className: "flex justify-center py-6", children: /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.AlertDialog, { children: [
2363
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.AlertDialogTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(button.Button, { variant: "destructive", children: "Excluir Conta" }) }),
2364
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.AlertDialogContent, { className: "sm:max-w-[425px]", children: [
2365
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.AlertDialogHeader, { children: [
2366
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.AlertDialogTitle, { children: "Você tem certeza absoluta?" }),
2367
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.AlertDialogDescription, { children: "Esta ação não pode ser desfeita. Isso excluirá permanentemente sua conta e removerá seus dados de nossos servidores." })
2368
- ] }),
2369
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.AlertDialogFooter, { children: [
2370
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.AlertDialogCancel, { children: "Cancelar" }),
2371
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.AlertDialogAction, { className: "bg-destructive text-destructive-foreground hover:bg-destructive/90", children: "Continuar" })
2372
- ] })
2373
- ] })
2374
- ] }) })
2375
- ] })
2376
- ] })
2377
- ] }),
2378
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, { className: "my-8" }),
2379
- /* @__PURE__ */ jsxRuntime.jsx("section", { children: /* @__PURE__ */ jsxRuntime.jsx(MapShowcase, {}) }),
2380
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, { className: "my-8" }),
2381
- /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
2382
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4", children: "Variações de Cabeçalho" }),
2383
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
2384
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
2385
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Configurações do Cabeçalho Principal" }),
2386
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "O Header é focado em navegação (breadcrumbs) e ações contextuais rápidas." })
2387
- ] }),
2388
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardContent, { className: "space-y-6", children: [
2389
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 border rounded-[var(--radius-lg)] bg-muted/30", children: [
2390
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-semibold mb-4", children: "Elementos Visíveis" }),
2391
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-6", children: [
2392
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
2393
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Switch, { id: "header-actions", checked: showHeaderActions, onCheckedChange: setShowHeaderActions }),
2394
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "header-actions", className: "cursor-pointer", children: "Botões de Ação" })
2395
- ] }),
2396
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
2397
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Switch, { id: "header-bread", checked: showHeaderBreadcrumbs, onCheckedChange: setShowHeaderBreadcrumbs }),
2398
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "header-bread", className: "cursor-pointer", children: "Breadcrumbs" })
2399
- ] })
2400
- ] })
2401
- ] }),
2402
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative border rounded-[var(--radius-lg)] bg-muted/10 overflow-hidden shadow-inner", children: [
2403
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 bg-background/50 border-b text-xs font-mono text-muted-foreground", children: "Visualização" }),
2404
- /* @__PURE__ */ jsxRuntime.jsx(
2405
- sidebar.Header,
2406
- {
2407
- title: !showHeaderBreadcrumbs ? "Página Atual" : void 0,
2408
- breadcrumbs: showHeaderBreadcrumbs ? [
2409
- { label: "Xertica UI", href: "#", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Home, { className: "w-4 h-4" }) },
2410
- { label: "Configurações", href: "#" },
2411
- { label: "Perfil" }
2412
- ] : void 0,
2413
- actions: showHeaderActions ? [
2414
- { id: "notify", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Bell, { className: "w-5 h-5" }), onClick: () => sonner.toast("Notificações abertas") },
2415
- { id: "mail", label: "Mensagens", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mail, { className: "w-5 h-5" }), onClick: () => sonner.toast("Mensagens abertas") }
2416
- ] : void 0
2417
- }
2418
- ),
2419
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-32 flex items-center justify-center text-muted-foreground text-sm italic", children: "Área de Conteúdo da Página" })
2420
- ] })
2421
- ] })
2422
- ] })
2423
- ] }),
2424
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, { className: "my-8" }),
2425
- /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
2426
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4", children: "Variações da Sidebar" }),
2427
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { children: [
2428
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
2429
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Sidebar Modo Assistente vs Padrão" }),
2430
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "A Sidebar suporta flexibilidade através da propriedade variant." })
2431
- ] }),
2432
- /* @__PURE__ */ jsxRuntime.jsx(card.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.Tabs, { defaultValue: "assistant", className: "w-full", children: [
2433
- /* @__PURE__ */ jsxRuntime.jsxs(alertDialog.TabsList, { className: "mb-4", children: [
2434
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsTrigger, { value: "assistant", children: "Modo Assistente" }),
2435
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsTrigger, { value: "default", children: "Modo Padrão" })
2436
- ] }),
2437
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6 p-4 border rounded-[var(--radius-lg)] bg-muted/30", children: [
2438
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-semibold mb-4", children: "Configurações do Rodapé" }),
2439
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap gap-6 mt-2", children: [
2440
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
2441
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Switch, { id: "show-user", checked: showSidebarUser, onCheckedChange: setShowSidebarUser }),
2442
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "show-user", className: "cursor-pointer", children: "Perfil do Usuário" })
2443
- ] }),
2444
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
2445
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Switch, { id: "show-settings", checked: showSidebarSettings, onCheckedChange: setShowSidebarSettings }),
2446
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "show-settings", className: "cursor-pointer", children: "Configurações" })
2447
- ] }),
2448
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
2449
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Switch, { id: "show-logout", checked: showSidebarLogout, onCheckedChange: setShowSidebarLogout }),
2450
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Label, { htmlFor: "show-logout", className: "cursor-pointer", children: "Botão de Sair" })
2451
- ] })
2452
- ] }),
2453
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6 pt-6 border-t", children: [
2454
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-4", children: [
2455
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-semibold", children: "Largura da Sidebar (Desktop)" }),
2456
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs font-mono bg-muted px-2 py-1 rounded", children: [
2457
- sidebarWidth,
2458
- "px"
2459
- ] })
2460
- ] }),
2461
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [
2462
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground w-12 text-right", children: "240px" }),
2463
- /* @__PURE__ */ jsxRuntime.jsx(
2464
- slider.Slider,
2465
- {
2466
- value: [sidebarWidth],
2467
- onValueChange: (val) => setSidebarWidth(val[0]),
2468
- min: 240,
2469
- max: 450,
2470
- step: 10,
2471
- className: "flex-1",
2472
- "aria-label": "Largura da Sidebar"
2473
- }
2474
- ),
2475
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground w-12", children: "450px" })
2476
- ] })
2477
- ] })
2478
- ] }),
2479
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsContent, { value: "assistant", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative h-[600px] border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden", style: { transform: "translateZ(0)" }, children: [
2480
- /* @__PURE__ */ jsxRuntime.jsx(
2481
- sidebar.Sidebar,
2482
- {
2483
- expanded: true,
2484
- width: sidebarWidth,
2485
- onToggle: () => {
2486
- },
2487
- user: { email: "admin@xertica.com" },
2488
- onLogout: () => sonner.toast("Saiu"),
2489
- location: { pathname: "/assistant/current" },
2490
- navigate: () => {
2491
- },
2492
- variant: "assistant",
2493
- search: {
2494
- show: true,
2495
- placeholder: "Buscar tópicos...",
2496
- filter: {
2497
- show: true,
2498
- content: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-2 space-y-2", children: [
2499
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs font-semibold uppercase text-muted-foreground px-2", children: "Filtrar por Status" }),
2500
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap gap-2 p-1", children: [
2501
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { className: "bg-sidebar-foreground/20 text-sidebar-foreground border-none cursor-pointer hover:bg-sidebar-foreground/30", children: "Ativo" }),
2502
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "outline", className: "text-sidebar-foreground/70 border-sidebar-foreground/20 cursor-pointer hover:bg-sidebar-foreground/10", children: "Arquivado" }),
2503
- /* @__PURE__ */ jsxRuntime.jsx(progress.Badge, { variant: "outline", className: "text-sidebar-foreground/70 border-sidebar-foreground/20 cursor-pointer hover:bg-sidebar-foreground/10", children: "Pendente" })
2504
- ] })
2505
- ] })
2506
- }
2507
- },
2508
- fixedArea: {
2509
- show: true,
2510
- content: /* @__PURE__ */ jsxRuntime.jsxs(button.Button, { className: "w-full bg-sidebar-primary hover:bg-sidebar-primary/90 text-sidebar-primary-foreground shadow-lg font-bold border-none transition-all duration-300 transform hover:scale-[1.02] active:scale-[0.98]", children: [
2511
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "w-4 h-4 mr-2" }),
2512
- "Nova Conversa"
2513
- ] })
2514
- },
2515
- navigationGroups: [
2516
- {
2517
- id: "recent",
2518
- label: "Recentes",
2519
- icon: lucideReact.Clock,
2520
- items: [
2521
- {
2522
- path: "/assistant/refatoracao",
2523
- label: "Refatoração da Sidebar",
2524
- description: "Ativo agora",
2525
- actions: [
2526
- { label: "Renomear", icon: lucideReact.FileEdit, onClick: () => sonner.toast("Abrir renomear...") },
2527
- {
2528
- label: "Mover",
2529
- icon: lucideReact.ArrowRightLeft,
2530
- children: [
2531
- { label: "Projetos Ativos", onClick: () => sonner.toast("Movido para Projetos Ativos") },
2532
- { label: "Monitoramento", onClick: () => sonner.toast("Movido para Monitoramento") },
2533
- { label: "Arquivar", onClick: () => sonner.toast("Movido para Arquivo") }
2534
- ]
2535
- },
2536
- { label: "Limpar", icon: lucideReact.Trash2, onClick: () => sonner.toast("Histórico Limpo!"), variant: "destructive" }
2537
- ]
2538
- }
2539
- ]
2540
- },
2541
- {
2542
- id: "projects",
2543
- label: "Monitoramento de Projetos",
2544
- icon: lucideReact.Map,
2545
- actions: [
2546
- { label: "Nova Categoria", icon: lucideReact.Plus, onClick: () => sonner.toast("Criar nova categoria...") },
2547
- { label: "Arquivar Grupo", icon: lucideReact.Archive, onClick: () => sonner.toast("Arquivando grupo...") }
2548
- ],
2549
- items: [
2550
- {
2551
- path: "/assistant/br163",
2552
- label: "Restauração BR-163",
2553
- icon: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-2 h-2 rounded-full bg-yellow-500" }),
2554
- description: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5 min-w-[160px]", children: [
2555
- /* @__PURE__ */ jsxRuntime.jsx(progress.Progress, { value: 67, className: "h-1.5 bg-sidebar-foreground/10" }),
2556
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between items-center text-[10px] text-sidebar-foreground/60", children: [
2557
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Cuiabá, MT" }),
2558
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "67%" })
2559
- ] })
2560
- ] })
2561
- }
2562
- ]
2563
- }
2564
- ],
2565
- footer: {
2566
- showUser: showSidebarUser,
2567
- showSettings: showSidebarSettings,
2568
- showLogout: showSidebarLogout
2569
- }
2570
- }
2571
- ),
2572
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300", style: { left: `${sidebarWidth}px` }, children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground text-center", children: "Conteúdo do Modo Assistente" }) })
2573
- ] }) }),
2574
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.TabsContent, { value: "default", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative h-[600px] border rounded-[var(--radius-lg)] bg-muted/20 overflow-hidden", style: { transform: "translateZ(0)" }, children: [
2575
- /* @__PURE__ */ jsxRuntime.jsx(
2576
- sidebar.Sidebar,
2577
- {
2578
- expanded: true,
2579
- width: sidebarWidth,
2580
- onToggle: () => {
2581
- },
2582
- user: {
2583
- name: "Ariel Santos",
2584
- email: "admin@xertica.com",
2585
- avatar: "https://github.com/shadcn.png"
2586
- },
2587
- onLogout: () => sonner.toast("Saiu"),
2588
- onSettingsClick: () => sonner.toast("Configurações clicadas"),
2589
- location: { pathname: "/home" },
2590
- navigate: () => {
2591
- },
2592
- variant: "default",
2593
- routes: [
2594
- { path: "/home", label: "Início", icon: lucideReact.Home },
2595
- { path: "/dashboard", label: "Dashboard", icon: lucideReact.Users },
2596
- { path: "/settings", label: "Configurações", icon: lucideReact.Settings }
2597
- ],
2598
- footer: {
2599
- showUser: showSidebarUser,
2600
- showSettings: showSidebarSettings,
2601
- showLogout: showSidebarLogout
2602
- }
2603
- }
2604
- ),
2605
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-y-0 right-0 p-8 flex items-center justify-center transition-all duration-300", style: { left: `${sidebarWidth}px` }, children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground text-center", children: "Navegação Tradicional do Sistema" }) })
2606
- ] }) })
2607
- ] }) })
2608
- ] })
2609
- ] }),
2610
- /* @__PURE__ */ jsxRuntime.jsx(alertDialog.Separator, { className: "my-8" }),
2611
- /* @__PURE__ */ jsxRuntime.jsxs(card.Card, { className: "mt-8", children: [
2612
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardHeader, { children: [
2613
- /* @__PURE__ */ jsxRuntime.jsx(card.CardTitle, { children: "Template Pronto para CLI" }),
2614
- /* @__PURE__ */ jsxRuntime.jsx(card.CardDescription, { children: "Como usar este template" })
2615
- ] }),
2616
- /* @__PURE__ */ jsxRuntime.jsxs(card.CardContent, { className: "space-y-4", children: [
2617
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-muted-foreground", children: [
2618
- "Este template está pronto para ser usado como base para novos projetos. Todos os componentes usam as variáveis CSS definidas em ",
2619
- /* @__PURE__ */ jsxRuntime.jsx("code", { className: "bg-muted px-2 py-1 rounded-[var(--radius-sm)] [font-size:var(--text-small)]", children: "/styles/xertica/tokens.css" }),
2620
- "and follow the Xertica UI CLI-first architecture."
2621
- ] }),
2622
- /* @__PURE__ */ jsxRuntime.jsxs(richTextEditor.Alert, { variant: "info", children: [
2623
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.AlertTitle, { children: "Dica" }),
2624
- /* @__PURE__ */ jsxRuntime.jsx(richTextEditor.AlertDescription, { children: "Copie este arquivo como ponto de partida para suas páginas. Todos os componentes são reutilizáveis e customizáveis através de variáveis CSS." })
2625
- ] })
2626
- ] })
2627
- ] })
2628
- ] }) }) }) })
2629
- ]
2630
- }
2631
- );
2632
- }
2633
- function TemplatePage({ user, onLogout }) {
2634
- const layout = LayoutContext.useOptionalLayout();
2635
- const [localSidebarExpanded, setLocalSidebarExpanded] = React.useState(false);
2636
- const [localAssistantExpanded, setLocalAssistantExpanded] = React.useState(false);
2637
- const sidebarExpanded = (layout == null ? void 0 : layout.sidebarExpanded) ?? localSidebarExpanded;
2638
- const sidebarWidth = (layout == null ? void 0 : layout.sidebarWidth) ?? 256;
2639
- const assistenteExpanded = (layout == null ? void 0 : layout.assistenteExpanded) ?? localAssistantExpanded;
2640
- const toggleSidebar = (layout == null ? void 0 : layout.toggleSidebar) ?? (() => setLocalSidebarExpanded((value) => !value));
2641
- const toggleAssistente = (layout == null ? void 0 : layout.toggleAssistente) ?? (() => setLocalAssistantExpanded((value) => !value));
2642
- const location = reactRouterDom.useLocation();
2643
- const navigate = reactRouterDom.useNavigate();
2644
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "h-screen flex bg-muted overflow-hidden relative", children: [
2645
- /* @__PURE__ */ jsxRuntime.jsx(
2646
- sidebar.Sidebar,
2647
- {
2648
- expanded: sidebarExpanded,
2649
- width: sidebarWidth,
2650
- onToggle: toggleSidebar,
2651
- user: {
2652
- ...user,
2653
- name: "Ariel Santos",
2654
- avatar: "https://github.com/shadcn.png"
2655
- },
2656
- onLogout,
2657
- onSettingsClick: () => navigate("/settings"),
2658
- location,
2659
- navigate,
2660
- routes
2661
- }
2662
- ),
2663
- /* @__PURE__ */ jsxRuntime.jsx(
2664
- TemplateContent,
2665
- {
2666
- user,
2667
- onLogout,
2668
- onSettings: () => navigate("/settings")
2669
- }
2670
- ),
2671
- /* @__PURE__ */ jsxRuntime.jsx(
2672
- xerticaAssistant.XerticaAssistant,
2673
- {
2674
- isExpanded: assistenteExpanded,
2675
- onToggle: toggleAssistente,
2676
- onEvaluation: () => {
2677
- }
2678
- }
2679
- )
2680
- ] });
2681
- }
2682
- function VerifyEmailPage() {
2683
- var _a;
2684
- const navigate = reactRouterDom.useNavigate();
2685
- const location = reactRouterDom.useLocation();
2686
- const email = ((_a = location.state) == null ? void 0 : _a.email) || "your@email.com";
2687
- const [isResending, setIsResending] = React.useState(false);
2688
- const [resendSuccess, setResendSuccess] = React.useState(false);
2689
- const handleResend = async () => {
2690
- setIsResending(true);
2691
- setResendSuccess(false);
2692
- await new Promise((resolve) => setTimeout(resolve, 1500));
2693
- setIsResending(false);
2694
- setResendSuccess(true);
2695
- setTimeout(() => setResendSuccess(false), 3e3);
2696
- };
2697
- const handleSocialLogin = (_provider) => {
2698
- };
2699
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-h-screen flex", children: [
2700
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden lg:flex lg:flex-1 relative overflow-hidden", children: [
2701
- /* @__PURE__ */ jsxRuntime.jsx(
2702
- alertDialog.ImageWithFallback,
2703
- {
2704
- src: "https://images.unsplash.com/photo-1563986768609-322da13575f3?w=1200&h=800&fit=crop&auto=format",
2705
- alt: "E-mail e comunicação",
2706
- className: "absolute inset-0 w-full h-full object-cover"
2707
- }
2708
- ),
2709
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-[image:var(--gradient-diagonal)] opacity-80" })
2710
- ] }),
2711
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex items-center justify-center px-4 sm:px-6 lg:px-8 lg:flex-none lg:w-1/2 relative bg-muted", children: [
2712
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-4 right-4 z-20", children: /* @__PURE__ */ jsxRuntime.jsx(XerticaXLogo.LanguageSelector, { variant: "minimal", showIcon: false }) }),
2713
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 lg:hidden bg-[image:var(--gradient-diagonal)] opacity-10 dark:opacity-5" }),
2714
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full max-w-sm space-y-6 relative z-10", children: [
2715
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
2716
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center mb-4", children: /* @__PURE__ */ jsxRuntime.jsx(
2717
- XerticaXLogo.XerticaLogo,
2718
- {
2719
- className: "h-12 w-auto text-primary dark:text-foreground",
2720
- variant: "theme"
2721
- }
2722
- ) }),
2723
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center mb-4", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 bg-primary/10 rounded-[var(--radius)]", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mail, { className: "w-12 h-12 text-primary" }) }) }),
2724
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-sm text-muted-foreground", children: "Verifique seu e-mail" }),
2725
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-muted-foreground", children: "Enviamos as instruções para redefinir sua senha para:" }),
2726
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-primary", children: email })
2727
- ] }),
2728
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-accent rounded-[var(--radius)] p-4 space-y-3", children: [
2729
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: "Siga as instruções no e-mail para redefinir sua senha. O link expira em 24 horas." }),
2730
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-muted-foreground", children: [
2731
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "w-4 h-4 mt-0.5 flex-shrink-0 text-[var(--chart-2)]" }),
2732
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: "Verifique sua pasta de spam se não encontrar o e-mail" })
2733
- ] })
2734
- ] }),
2735
- resendSuccess && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-[var(--chart-2)]/10 border border-[var(--chart-2)]/20 rounded-[var(--radius)] p-3 flex items-center gap-2", children: [
2736
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "w-5 h-5 text-[var(--chart-2)] flex-shrink-0" }),
2737
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-[var(--chart-2)]", children: "E-mail reenviado com sucesso!" })
2738
- ] }),
2739
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2740
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-center text-muted-foreground", children: "Não recebeu o e-mail?" }),
2741
- /* @__PURE__ */ jsxRuntime.jsx(
2742
- button.Button,
2743
- {
2744
- variant: "outline",
2745
- className: "w-full",
2746
- onClick: handleResend,
2747
- disabled: isResending,
2748
- children: isResending ? "Reenviando..." : "Reenviar e-mail"
2749
- }
2750
- ),
2751
- /* @__PURE__ */ jsxRuntime.jsxs(
2752
- button.Button,
2753
- {
2754
- type: "button",
2755
- onClick: () => navigate("/login"),
2756
- variant: "outline",
2757
- className: "w-full text-muted-foreground hover:text-foreground",
2758
- children: [
2759
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeft, { className: "w-4 h-4 mr-2" }),
2760
- "Voltar para o login"
2761
- ]
2762
- }
2763
- )
2764
- ] }),
2765
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
2766
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full border-t border-border" }) }),
2767
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex justify-center text-sm", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "bg-muted px-2 text-muted-foreground", children: "ou continue com" }) })
2768
- ] }),
2769
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
2770
- /* @__PURE__ */ jsxRuntime.jsxs(
2771
- button.Button,
2772
- {
2773
- type: "button",
2774
- variant: "outline",
2775
- className: "w-full justify-center",
2776
- onClick: () => handleSocialLogin(),
2777
- children: [
2778
- /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "w-5 h-5 mr-2", viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", children: [
2779
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#EA4335", d: "M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z" }),
2780
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#4285F4", d: "M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z" }),
2781
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#FBBC05", d: "M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z" }),
2782
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#34A853", d: "M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z" }),
2783
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "none", d: "M0 0h48v48H0z" })
2784
- ] }),
2785
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Entrar com Google" })
2786
- ]
2787
- }
2788
- ),
2789
- /* @__PURE__ */ jsxRuntime.jsxs(
2790
- button.Button,
2791
- {
2792
- type: "button",
2793
- variant: "outline",
2794
- className: "w-full justify-center",
2795
- onClick: () => handleSocialLogin(),
2796
- children: [
2797
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Lock, { className: "w-5 h-5 mr-2 text-[var(--chart-4)]" }),
2798
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Entrar com MT Login" })
2799
- ]
2800
- }
2801
- ),
2802
- /* @__PURE__ */ jsxRuntime.jsx(
2803
- button.Button,
2804
- {
2805
- type: "button",
2806
- variant: "outline",
2807
- className: "w-full justify-center font-normal",
2808
- onClick: () => handleSocialLogin(),
2809
- children: /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
2810
- "Entrar com ",
2811
- /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "font-semibold", children: "gov.br" })
2812
- ] })
2813
- }
2814
- )
2815
- ] })
2816
- ] })
2817
- ] })
2818
- ] });
2819
- }
2820
- exports.ForgotPasswordPage = ForgotPasswordPage;
2821
- exports.HomeContent = HomeContent;
2822
- exports.HomePage = HomePage;
2823
- exports.LoginPage = LoginPage;
2824
- exports.ResetPasswordPage = ResetPasswordPage;
2825
- exports.TemplateContent = TemplateContent;
2826
- exports.TemplatePage = TemplatePage;
2827
- exports.VerifyEmailPage = VerifyEmailPage;