xertica-ui 2.5.3 → 2.7.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 (635) hide show
  1. package/CHANGELOG.md +705 -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 +10 -10
  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/{templates/src/features/auth/ui → components/blocks/auth}/AuthPageShell.tsx +37 -32
  26. package/components/blocks/auth/PasswordStrengthMeter.tsx +41 -0
  27. package/components/blocks/auth/SocialLoginButtons.tsx +95 -0
  28. package/components/blocks/auth/index.ts +11 -0
  29. package/components/blocks/auth/usePasswordStrength.ts +13 -0
  30. package/components/blocks/card-patterns/card-patterns.mdx +123 -123
  31. package/components/blocks/index.ts +1 -0
  32. package/components/brand/branding/branding.mdx +27 -27
  33. package/components/brand/language-selector/language-selector.mdx +126 -126
  34. package/components/brand/theme-toggle/theme-toggle.mdx +47 -47
  35. package/components/brand/theme-toggle/theme-toggle.test.tsx +6 -2
  36. package/components/brand/xertica-logo/xertica-logo.mdx +56 -56
  37. package/components/brand/xertica-orbe/xertica-orbe.mdx +38 -38
  38. package/components/brand/xertica-provider/XerticaProvider.tsx +112 -112
  39. package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
  40. package/components/brand/xertica-provider/xertica-provider.test.tsx +25 -13
  41. package/components/brand/xertica-xlogo/xertica-xlogo.mdx +55 -55
  42. package/components/examples/DrawingMapExample.tsx +1 -4
  43. package/components/layout/header/header.mdx +117 -117
  44. package/components/layout/header/header.test.tsx +2 -1
  45. package/components/layout/sidebar/sidebar.mdx +99 -99
  46. package/components/layout/sidebar/sidebar.stories.tsx +1033 -1033
  47. package/components/layout/sidebar/sidebar.test.tsx +2 -1
  48. package/components/layout/sidebar/sidebar.tsx +1509 -1506
  49. package/components/media/audio-player/AudioPlayer.mdx +67 -67
  50. package/components/media/audio-player/AudioPlayer.test.tsx +2 -1
  51. package/components/media/floating-media-wrapper.mdx +74 -74
  52. package/components/media/video-player/VideoPlayer.mdx +102 -102
  53. package/components/media/video-player/VideoPlayer.test.tsx +3 -2
  54. package/components/pages/forgot-password-page/ForgotPasswordPage.tsx +94 -188
  55. package/components/pages/forgot-password-page/forgot-password-page.mdx +60 -60
  56. package/components/pages/forgot-password-page/forgot-password-page.test.tsx +2 -1
  57. package/components/pages/home-content/HomeContent.tsx +119 -119
  58. package/components/pages/home-content/home-content.mdx +62 -62
  59. package/components/pages/home-page/HomePage.stories.tsx +8 -15
  60. package/components/pages/home-page/home-page.mdx +53 -53
  61. package/components/pages/home-page/home-page.test.tsx +2 -1
  62. package/components/pages/login-page/LoginPage.mdx +31 -31
  63. package/components/pages/login-page/LoginPage.tsx +125 -218
  64. package/components/pages/login-page/login-page.test.tsx +2 -1
  65. package/components/pages/reset-password-page/ResetPasswordPage.tsx +153 -243
  66. package/components/pages/reset-password-page/reset-password-page.mdx +63 -63
  67. package/components/pages/template-content/TemplateContent.tsx +1353 -1353
  68. package/components/pages/template-content/template-content.mdx +61 -61
  69. package/components/pages/template-page/TemplatePage.stories.tsx +32 -32
  70. package/components/pages/template-page/template-page.mdx +53 -53
  71. package/components/pages/template-page/template-page.test.tsx +2 -1
  72. package/components/pages/verify-email-page/VerifyEmailPage.tsx +104 -206
  73. package/components/pages/verify-email-page/verify-email-page.mdx +55 -55
  74. package/components/public-api-smoke.test.tsx +10 -6
  75. package/components/shared/assistant-utils.ts +3 -2
  76. package/components/shared/navigation.ts +2 -2
  77. package/components/ui/accordion/accordion.mdx +29 -29
  78. package/components/ui/alert/alert.mdx +29 -29
  79. package/components/ui/alert-dialog/alert-dialog.mdx +26 -26
  80. package/components/ui/aspect-ratio/aspect-ratio.mdx +25 -25
  81. package/components/ui/assistant-chart/AssistantChart.tsx +8 -2
  82. package/components/ui/assistant-chart/assistant-chart.mdx +25 -25
  83. package/components/ui/avatar/avatar.mdx +26 -26
  84. package/components/ui/badge/badge.mdx +28 -28
  85. package/components/ui/breadcrumb/breadcrumb.mdx +26 -26
  86. package/components/ui/button/button.mdx +29 -29
  87. package/components/ui/calendar/calendar.mdx +26 -26
  88. package/components/ui/card/card.mdx +26 -26
  89. package/components/ui/carousel/carousel.mdx +26 -26
  90. package/components/ui/chart/chart.mdx +26 -26
  91. package/components/ui/chart/chart.test.tsx +178 -178
  92. package/components/ui/chart/chart.tsx +2252 -2245
  93. package/components/ui/checkbox/checkbox.mdx +26 -26
  94. package/components/ui/collapsible/collapsible.mdx +25 -25
  95. package/components/ui/command/command.mdx +26 -26
  96. package/components/ui/context-menu/context-menu.mdx +26 -26
  97. package/components/ui/dialog/dialog.mdx +26 -26
  98. package/components/ui/drawer/drawer.mdx +26 -26
  99. package/components/ui/dropdown-menu/dropdown-menu.mdx +26 -26
  100. package/components/ui/empty/empty.mdx +26 -26
  101. package/components/ui/file-upload/file-upload.mdx +26 -26
  102. package/components/ui/form/form.mdx +20 -20
  103. package/components/ui/google-maps-loader/google-maps-loader.mdx +68 -68
  104. package/components/ui/hover-card/hover-card.mdx +26 -26
  105. package/components/ui/input/input.mdx +29 -29
  106. package/components/ui/input-otp/input-otp.mdx +26 -26
  107. package/components/ui/label/label.mdx +25 -25
  108. package/components/ui/map/map.mdx +26 -26
  109. package/components/ui/map/map.tsx +6 -1
  110. package/components/ui/menubar/menubar.mdx +26 -26
  111. package/components/ui/navigation-menu/navigation-menu.mdx +26 -26
  112. package/components/ui/notification-badge/notification-badge.mdx +26 -26
  113. package/components/ui/page-header/page-header.mdx +44 -44
  114. package/components/ui/pagination/pagination.mdx +26 -26
  115. package/components/ui/popover/popover.mdx +26 -26
  116. package/components/ui/progress/progress.mdx +25 -25
  117. package/components/ui/radio-group/radio-group.mdx +26 -26
  118. package/components/ui/rating/rating.mdx +26 -26
  119. package/components/ui/resizable/resizable.mdx +26 -26
  120. package/components/ui/resizable/resizable.tsx +13 -8
  121. package/components/ui/rich-text-editor/rich-text-editor.mdx +47 -47
  122. package/components/ui/route-map/route-map.mdx +26 -26
  123. package/components/ui/scroll-area/scroll-area.mdx +25 -25
  124. package/components/ui/search/search.mdx +27 -27
  125. package/components/ui/select/select.mdx +26 -26
  126. package/components/ui/separator/separator.mdx +25 -25
  127. package/components/ui/sheet/sheet.mdx +26 -26
  128. package/components/ui/simple-map/simple-map.mdx +25 -25
  129. package/components/ui/skeleton/skeleton.mdx +25 -25
  130. package/components/ui/slider/slider.mdx +26 -26
  131. package/components/ui/sonner/sonner.mdx +26 -26
  132. package/components/ui/stats-card/stats-card.mdx +26 -26
  133. package/components/ui/stats-card/stats-card.stories.tsx +117 -117
  134. package/components/ui/stats-card/stats-card.tsx +109 -109
  135. package/components/ui/stepper/stepper.mdx +26 -26
  136. package/components/ui/switch/switch.mdx +25 -25
  137. package/components/ui/table/table.mdx +27 -27
  138. package/components/ui/tabs/tabs.mdx +26 -26
  139. package/components/ui/textarea/textarea.mdx +25 -25
  140. package/components/ui/timeline/timeline.mdx +26 -26
  141. package/components/ui/toggle/toggle.mdx +26 -26
  142. package/components/ui/toggle-group/toggle-group.mdx +26 -26
  143. package/components/ui/tooltip/tooltip.mdx +26 -26
  144. package/components/ui/tree-view/tree-view.mdx +26 -26
  145. package/components.json +511 -511
  146. package/contexts/BrandColorsContext.tsx +282 -282
  147. package/contexts/i18n-singleton.test.tsx +57 -0
  148. package/contexts/theme-data.ts +391 -391
  149. package/dist/{AssistantChart-DNdwuS-t.js → AssistantChart-BMNSA_Pk.js} +4 -4
  150. package/dist/{AssistantChart-COGiOV-g.cjs → AssistantChart-BzM7plyc.cjs} +31 -21
  151. package/dist/{AssistantChart-CWX1OWNM.js → AssistantChart-C842evTi.js} +31 -21
  152. package/dist/{AssistantChart-D0A1FPYt.cjs → AssistantChart-CImCNLfD.cjs} +150 -114
  153. package/dist/{AssistantChart-BW9JK6jw.cjs → AssistantChart-CVF2uh37.cjs} +4 -4
  154. package/dist/{AssistantChart-BXU1ACnh.js → AssistantChart-DfdIfmQr.js} +134 -240
  155. package/dist/{AssistantChart-BZTPJ5dP.cjs → AssistantChart-JooMdVQU.cjs} +5 -5
  156. package/dist/{AssistantChart-DMJJ_Amf.js → AssistantChart-KHS-tp-L.js} +5 -5
  157. package/dist/{BrandColorsContext-BwY-b6M4.cjs → BrandColorsContext-B4_81eas.cjs} +2 -2
  158. package/dist/{BrandColorsContext-BMRJ04Wf.js → BrandColorsContext-DbK5LnQ_.js} +2 -2
  159. package/dist/{CodeBlock-CjeFavqV.js → CodeBlock-DiKO8ocT.js} +11 -11
  160. package/dist/{CodeBlock-CV6dtsTM.cjs → CodeBlock-ZYThr7Kn.cjs} +12 -9
  161. package/dist/{FeatureCard-Cfs6Ishq.js → FeatureCard-BhpfmPPx.js} +20 -20
  162. package/dist/{FeatureCard-ie3L8Fpr.cjs → FeatureCard-D-5yS_OD.cjs} +31 -18
  163. package/dist/{progress-DDeuWPZw.cjs → ImageWithFallback-CfkAkctC.cjs} +34 -9
  164. package/dist/{progress-Cs9i4DPx.js → ImageWithFallback-bw-CxxDc.js} +27 -10
  165. package/dist/LanguageContext-CX_zdxre.js +1912 -0
  166. package/dist/LanguageContext-CjhSSqJT.cjs +1917 -0
  167. package/dist/LanguageSelector-BR3Ss0k_.js +46 -0
  168. package/dist/LanguageSelector-CHOLPmHr.cjs +48 -0
  169. package/dist/{XerticaXLogo-mqjoBiLI.js → LanguageSelector-CmTj3lWq.js} +85 -82
  170. package/dist/{XerticaXLogo-BX3ueACh.js → LanguageSelector-DxW6o7bt.js} +81 -81
  171. package/dist/{XerticaXLogo-uQgwns_E.cjs → LanguageSelector-Sw73qvWV.cjs} +84 -81
  172. package/dist/PasswordStrengthMeter-C8irs0G1.js +173 -0
  173. package/dist/PasswordStrengthMeter-MLzhax-d.cjs +179 -0
  174. package/dist/{ThemeContext-BgclCB35.js → ThemeContext-BGeh_Kdr.js} +290 -212
  175. package/dist/{ThemeContext-bSzuOit2.cjs → ThemeContext-CEY9pCn-.cjs} +15 -10
  176. package/dist/{ThemeContext-BblcjQup.cjs → ThemeContext-D50irx5T.cjs} +291 -205
  177. package/dist/{ThemeContext-RTy1m2Uq.js → ThemeContext-Dk3tH7Ym.js} +14 -13
  178. package/dist/{XerticaXLogo-CFuIlYFH.js → ThemeToggle-BpM_iHh8.js} +56 -93
  179. package/dist/{XerticaXLogo-CziKMQil.cjs → ThemeToggle-CZRlv0d4.cjs} +62 -85
  180. package/dist/{VerifyEmailPage-C_Zk6Gen.cjs → VerifyEmailPage-B6bOrybJ.cjs} +17 -17
  181. package/dist/VerifyEmailPage-BKiaw2YK.js +2954 -0
  182. package/dist/{VerifyEmailPage-B31mCrMc.js → VerifyEmailPage-BRE5Fz59.js} +8 -8
  183. package/dist/{VerifyEmailPage-Cyl55sJb.js → VerifyEmailPage-BcCluouh.js} +135 -65
  184. package/dist/VerifyEmailPage-Beaicc6V.cjs +2963 -0
  185. package/dist/VerifyEmailPage-BehPBp0F.cjs +2963 -0
  186. package/dist/VerifyEmailPage-Bx1sr0uQ.cjs +3298 -0
  187. package/dist/{VerifyEmailPage-Bci0bA-P.js → VerifyEmailPage-DUYyXCX9.js} +3 -3
  188. package/dist/VerifyEmailPage-DXXMHbzq.js +3289 -0
  189. package/dist/VerifyEmailPage-Djb6hthM.js +2954 -0
  190. package/dist/{VerifyEmailPage-u_Dn7t1U.cjs → VerifyEmailPage-DpYtFk35.cjs} +21 -21
  191. package/dist/{VerifyEmailPage-X14vhdyl.js → VerifyEmailPage-NXKWW3Dk.js} +12 -12
  192. package/dist/{VerifyEmailPage-C7KiYXrm.cjs → VerifyEmailPage-QrCz4Wqr.cjs} +11 -11
  193. package/dist/{VerifyEmailPage-Bv8Ah_TK.cjs → VerifyEmailPage-ZmQra0Wi.cjs} +144 -74
  194. package/dist/{XerticaProvider-BErr83Bg.js → XerticaProvider-BF3q_myt.js} +5 -4
  195. package/dist/{XerticaProvider-B8CaV7xu.cjs → XerticaProvider-BijpC_py.cjs} +18 -11
  196. package/dist/{XerticaProvider-DQtvJU7m.js → XerticaProvider-C2wDRQhT.js} +17 -13
  197. package/dist/{XerticaProvider-CeS5G_n5.cjs → XerticaProvider-C_JSOz1U.cjs} +2 -2
  198. package/dist/{XerticaProvider-CwOkHxiT.cjs → XerticaProvider-D5zjrqZq.cjs} +5 -4
  199. package/dist/{XerticaProvider-ra2NciRq.js → XerticaProvider-KTGl4Cn1.js} +2 -2
  200. package/dist/{alert-dialog-DqlRW_An.js → alert-dialog-BrpwXKwS.js} +3 -3
  201. package/dist/{alert-dialog-yckpaOpy.cjs → alert-dialog-BzIcTKn_.cjs} +173 -166
  202. package/dist/{alert-dialog-DhwPioBa.cjs → alert-dialog-CZU1Zase.cjs} +3 -3
  203. package/dist/{alert-dialog-KpoabzJb.js → alert-dialog-ClRoLH7l.js} +40 -56
  204. package/dist/{alert-dialog-B4M3vQKS.cjs → alert-dialog-DBBqvU-V.cjs} +53 -38
  205. package/dist/{alert-dialog-iDe5VE5o.js → alert-dialog-kty5pxQp.js} +160 -183
  206. package/dist/assistant.cjs.js +2 -2
  207. package/dist/assistant.es.js +2 -2
  208. package/dist/blocks.cjs.js +7 -3
  209. package/dist/blocks.es.js +2 -2
  210. package/dist/brand.cjs.js +7 -6
  211. package/dist/brand.es.js +3 -2
  212. package/dist/cli.js +63 -21
  213. package/dist/components/assistant/code-block/CodeBlock.d.ts +2 -1
  214. package/dist/components/assistant/formatted-document/FormattedDocument.d.ts +2 -1
  215. package/dist/components/assistant/markdown-message/MarkdownMessage.d.ts +2 -1
  216. package/dist/components/assistant/modern-chat-input/ModernChatInput.d.ts +2 -1
  217. package/dist/components/assistant/xertica-assistant/parts/AssistantCollapsedView.d.ts +2 -1
  218. package/dist/components/assistant/xertica-assistant/parts/AssistantConversationList.d.ts +2 -1
  219. package/dist/components/assistant/xertica-assistant/parts/AssistantDocumentEditor.d.ts +2 -1
  220. package/dist/components/assistant/xertica-assistant/parts/AssistantFeedbackDialog.d.ts +2 -1
  221. package/dist/components/assistant/xertica-assistant/parts/AssistantHeader.d.ts +2 -1
  222. package/dist/components/assistant/xertica-assistant/parts/AssistantMessageBubble.d.ts +2 -1
  223. package/dist/components/assistant/xertica-assistant/parts/AssistantTabBar.d.ts +2 -1
  224. package/dist/components/assistant/xertica-assistant/parts/AssistantTypingIndicator.d.ts +2 -1
  225. package/dist/components/assistant/xertica-assistant/parts/AssistantWelcomeScreen.d.ts +2 -1
  226. package/dist/components/assistant/xertica-assistant/types.d.ts +3 -2
  227. package/dist/components/assistant/xertica-assistant/use-assistant.d.ts +1 -1
  228. package/dist/components/assistant/xertica-assistant/xertica-assistant.d.ts +2 -1
  229. package/dist/components/blocks/auth/AuthPageShell.d.ts +12 -0
  230. package/dist/components/blocks/auth/PasswordStrengthMeter.d.ts +7 -0
  231. package/dist/components/blocks/auth/SocialLoginButtons.d.ts +8 -0
  232. package/dist/components/blocks/auth/index.d.ts +8 -0
  233. package/dist/components/blocks/auth/usePasswordStrength.d.ts +3 -0
  234. package/dist/components/blocks/card-patterns/ActivityCard.d.ts +1 -1
  235. package/dist/components/blocks/card-patterns/ActivityCardSkeleton.d.ts +1 -1
  236. package/dist/components/blocks/card-patterns/FeatureCard.d.ts +1 -1
  237. package/dist/components/blocks/card-patterns/FeatureCardSkeleton.d.ts +1 -1
  238. package/dist/components/blocks/card-patterns/NotificationCard.d.ts +1 -1
  239. package/dist/components/blocks/card-patterns/NotificationCardSkeleton.d.ts +1 -1
  240. package/dist/components/blocks/card-patterns/ProfileCard.d.ts +1 -1
  241. package/dist/components/blocks/card-patterns/ProfileCardSkeleton.d.ts +1 -1
  242. package/dist/components/blocks/card-patterns/ProjectCard.d.ts +1 -1
  243. package/dist/components/blocks/card-patterns/ProjectCardSkeleton.d.ts +1 -1
  244. package/dist/components/blocks/card-patterns/QuickActionCard.d.ts +1 -1
  245. package/dist/components/blocks/card-patterns/QuickActionCardSkeleton.d.ts +1 -1
  246. package/dist/components/blocks/index.d.ts +1 -0
  247. package/dist/components/brand/language-selector/LanguageSelector.d.ts +2 -1
  248. package/dist/components/brand/theme-toggle/ThemeToggle.d.ts +2 -1
  249. package/dist/components/brand/xertica-logo/XerticaLogo.d.ts +2 -1
  250. package/dist/components/brand/xertica-orbe/XerticaOrbe.d.ts +2 -1
  251. package/dist/components/brand/xertica-provider/XerticaProvider.d.ts +1 -1
  252. package/dist/components/brand/xertica-xlogo/XerticaXLogo.d.ts +2 -1
  253. package/dist/components/examples/DrawingMapExample.d.ts +2 -1
  254. package/dist/components/examples/FilterableMapExample.d.ts +1 -1
  255. package/dist/components/examples/MapShowcase.d.ts +2 -1
  256. package/dist/components/examples/SimpleFilterableMap.d.ts +2 -1
  257. package/dist/components/figma/ImageWithFallback.d.ts +1 -1
  258. package/dist/components/layout/header/header.d.ts +1 -1
  259. package/dist/components/layout/sidebar/sidebar.d.ts +25 -13
  260. package/dist/components/media/FloatingMediaWrapper.d.ts +1 -1
  261. package/dist/components/media/audio-player/AudioPlayer.d.ts +2 -1
  262. package/dist/components/media/video-player/VideoPlayer.d.ts +2 -1
  263. package/dist/components/pages/forgot-password-page/ForgotPasswordPage.d.ts +2 -1
  264. package/dist/components/pages/home-content/HomeContent.d.ts +2 -1
  265. package/dist/components/pages/home-page/HomePage.d.ts +2 -1
  266. package/dist/components/pages/login-page/LoginPage.d.ts +2 -1
  267. package/dist/components/pages/reset-password-page/ResetPasswordPage.d.ts +3 -2
  268. package/dist/components/pages/template-content/TemplateContent.d.ts +2 -1
  269. package/dist/components/pages/template-page/TemplatePage.d.ts +2 -1
  270. package/dist/components/pages/verify-email-page/VerifyEmailPage.d.ts +2 -1
  271. package/dist/components/shared/CustomTooltipContent.d.ts +1 -1
  272. package/dist/components/shared/assistant-utils.d.ts +3 -2
  273. package/dist/components/shared/error-boundary.d.ts +4 -4
  274. package/dist/components/shared/error-fallbacks.d.ts +4 -3
  275. package/dist/components/shared/navigation.d.ts +6 -2
  276. package/dist/components/ui/accordion/accordion.d.ts +4 -4
  277. package/dist/components/ui/alert/alert.d.ts +3 -3
  278. package/dist/components/ui/alert-dialog/alert-dialog.d.ts +10 -10
  279. package/dist/components/ui/aspect-ratio/aspect-ratio.d.ts +1 -1
  280. package/dist/components/ui/assistant-chart/AssistantChart.d.ts +4 -3
  281. package/dist/components/ui/avatar/avatar.d.ts +3 -3
  282. package/dist/components/ui/badge/badge.d.ts +1 -1
  283. package/dist/components/ui/breadcrumb/breadcrumb.d.ts +7 -7
  284. package/dist/components/ui/calendar/calendar.d.ts +2 -2
  285. package/dist/components/ui/card/card.d.ts +7 -7
  286. package/dist/components/ui/carousel/carousel.d.ts +5 -5
  287. package/dist/components/ui/chart/chart.d.ts +16 -16
  288. package/dist/components/ui/collapsible/collapsible.d.ts +3 -3
  289. package/dist/components/ui/command/command.d.ts +9 -9
  290. package/dist/components/ui/context-menu/context-menu.d.ts +15 -15
  291. package/dist/components/ui/dialog/dialog.d.ts +9 -9
  292. package/dist/components/ui/drawer/drawer.d.ts +10 -10
  293. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +15 -15
  294. package/dist/components/ui/form/form.d.ts +7 -7
  295. package/dist/components/ui/google-maps-loader/google-maps-loader.d.ts +3 -3
  296. package/dist/components/ui/hover-card/hover-card.d.ts +3 -3
  297. package/dist/components/ui/input-otp/input-otp.d.ts +4 -4
  298. package/dist/components/ui/label/label.d.ts +1 -1
  299. package/dist/components/ui/menubar/menubar.d.ts +16 -16
  300. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +8 -8
  301. package/dist/components/ui/page-header/page-header.d.ts +3 -3
  302. package/dist/components/ui/pagination/pagination.d.ts +7 -7
  303. package/dist/components/ui/popover/popover.d.ts +4 -4
  304. package/dist/components/ui/progress/progress.d.ts +1 -1
  305. package/dist/components/ui/resizable/resizable.d.ts +11 -7
  306. package/dist/components/ui/rich-text-editor/rich-text-editor.d.ts +1 -1
  307. package/dist/components/ui/scroll-area/scroll-area.d.ts +2 -2
  308. package/dist/components/ui/separator/separator.d.ts +1 -1
  309. package/dist/components/ui/sheet/sheet.d.ts +10 -10
  310. package/dist/components/ui/skeleton/skeleton.d.ts +1 -1
  311. package/dist/components/ui/sonner/sonner.d.ts +2 -1
  312. package/dist/components/ui/stats-card/stats-card-skeleton.d.ts +1 -1
  313. package/dist/components/ui/table/table.d.ts +8 -8
  314. package/dist/components/ui/tabs/tabs.d.ts +4 -4
  315. package/dist/components/ui/tooltip/tooltip.d.ts +4 -4
  316. package/dist/contexts/ApiKeyContext.d.ts +2 -2
  317. package/dist/contexts/AssistenteContext.d.ts +1 -1
  318. package/dist/contexts/AuthContext.d.ts +1 -1
  319. package/dist/contexts/LanguageContext.d.ts +2 -2
  320. package/dist/contexts/LayoutContext.d.ts +2 -2
  321. package/dist/contexts/ThemeContext.d.ts +1 -1
  322. package/dist/features/assistant/hooks/useAssistantConfig.d.ts +1 -1
  323. package/dist/features/home/hooks/useDashboardStats.d.ts +1 -1
  324. package/dist/features/home/hooks/useFeatureCards.d.ts +1 -1
  325. package/dist/features/home/hooks/useTeamMembers.d.ts +1 -1
  326. package/dist/{google-maps-loader-BCe58h9D.js → google-maps-loader-BOug999f.js} +0 -4
  327. package/dist/{google-maps-loader-casMyxlo.cjs → google-maps-loader-DfeBRI8Q.cjs} +0 -5
  328. package/dist/hooks.cjs.js +6 -5
  329. package/dist/hooks.es.js +3 -2
  330. package/dist/{index-9GWd0qxq.cjs → index-BQjx1Mdf.cjs} +1 -1
  331. package/dist/index-Bei5DzAL.js +6 -0
  332. package/dist/index.cjs.js +32 -27
  333. package/dist/index.es.js +15 -14
  334. package/dist/layout.cjs.js +1 -1
  335. package/dist/layout.es.js +1 -1
  336. package/dist/pages.cjs.js +1 -1
  337. package/dist/pages.es.js +1 -1
  338. package/dist/{rich-text-editor-B2CKz7nx.cjs → rich-text-editor-BuqSu718.cjs} +68 -3
  339. package/dist/{rich-text-editor-DloeW0wc.js → rich-text-editor-CV8FtA_l.js} +66 -4
  340. package/dist/{sidebar-B4ZWaMrE.js → sidebar-B7YzwAp3.js} +365 -6
  341. package/dist/{sidebar-CLmIjgNd.cjs → sidebar-BGJ0j567.cjs} +84 -67
  342. package/dist/{sidebar-Duermn32.js → sidebar-BI6mZlC8.js} +81 -64
  343. package/dist/{sidebar-BS1p2V7t.cjs → sidebar-BtmotOg-.cjs} +367 -9
  344. package/dist/{sidebar-DyYvgyBj.cjs → sidebar-Cb0U7NsV.cjs} +368 -9
  345. package/dist/{sidebar-QwCoeoZ_.js → sidebar-D3EgGVxF.js} +1 -1
  346. package/dist/{sidebar-CQn_rwxP.cjs → sidebar-DDTqMGnR.cjs} +4 -4
  347. package/dist/{sidebar-3XyzjVBw.js → sidebar-I7EXyf5D.js} +364 -6
  348. package/dist/ui.cjs.js +9 -9
  349. package/dist/ui.es.js +5 -5
  350. package/dist/{xertica-assistant-BbgzsgsG.js → xertica-assistant-8fh8KA2K.js} +60 -51
  351. package/dist/{xertica-assistant-d2qs2Vd9.cjs → xertica-assistant-BjfG3zyL.cjs} +63 -46
  352. package/dist/{xertica-assistant-B687qEPU.js → xertica-assistant-CJVnvMqU.js} +17 -8
  353. package/dist/{xertica-assistant-sOHwTgIP.cjs → xertica-assistant-CKPtc1z5.cjs} +19 -10
  354. package/dist/{xertica-assistant-QFUnv5I2.cjs → xertica-assistant-DER0brPQ.cjs} +6 -5
  355. package/dist/{xertica-assistant-CyikE3N_.js → xertica-assistant-DQCjpk5M.js} +4 -3
  356. package/dist/{xertica-assistant-B1NaSFFj.js → xertica-assistant-Dk-9AJzw.js} +6 -5
  357. package/dist/{xertica-assistant-CIaUlbIt.cjs → xertica-assistant-DxhIKvuY.cjs} +8 -7
  358. package/dist/xertica-ui.css +2 -2
  359. package/docs/components/audio-player.md +1 -1
  360. package/docs/components/sidebar.md +331 -331
  361. package/docs/components/stats-card.md +138 -138
  362. package/docs/components/toggle.md +12 -0
  363. package/docs/doc-audit.md +35 -229
  364. package/docs/i18n.md +33 -10
  365. package/docs/llms.md +6 -4
  366. package/llms-compact.txt +444 -444
  367. package/llms-full.txt +12144 -12144
  368. package/llms.txt +187 -187
  369. package/package.json +223 -219
  370. package/scripts/a11y-audit.mjs +162 -162
  371. package/scripts/fix-stories.cjs +19 -19
  372. package/styles/globals.css +0 -1
  373. package/styles/xertica/base.css +8 -0
  374. package/styles/xertica/tokens.css +240 -240
  375. package/templates/.env.example +2 -2
  376. package/templates/.prettierignore +4 -4
  377. package/templates/.prettierrc +10 -10
  378. package/templates/guidelines/Guidelines.md +865 -865
  379. package/templates/index.html +13 -13
  380. package/templates/package.json +69 -69
  381. package/templates/src/app/components/AuthGuard.tsx +11 -0
  382. package/templates/src/features/auth/ui/ForgotPasswordContent.tsx +1 -2
  383. package/templates/src/features/auth/ui/LoginContent.tsx +1 -2
  384. package/templates/src/features/auth/ui/ResetPasswordContent.tsx +3 -57
  385. package/templates/src/features/auth/ui/VerifyEmailContent.tsx +1 -2
  386. package/templates/src/features/home/index.ts +0 -10
  387. package/templates/src/features/home/ui/HomeContent.tsx +62 -116
  388. package/templates/src/features/settings/index.ts +2 -0
  389. package/templates/src/features/settings/ui/SettingsContent.tsx +134 -0
  390. package/templates/src/features/template/index.ts +0 -4
  391. package/templates/src/features/template/ui/TemplateContent.tsx +68 -1321
  392. package/templates/src/i18n.ts +36 -13
  393. package/templates/src/locales/en/pages/settings.json +15 -0
  394. package/templates/src/locales/en/pages/templates.json +5 -313
  395. package/templates/src/locales/es/pages/settings.json +15 -0
  396. package/templates/src/locales/es/pages/templates.json +5 -313
  397. package/templates/src/locales/pt-BR/pages/settings.json +15 -0
  398. package/templates/src/locales/pt-BR/pages/templates.json +5 -313
  399. package/templates/src/pages/SettingsPage.tsx +28 -0
  400. package/templates/src/shared/config/navigation.ts +2 -2
  401. package/templates/src/styles/xertica/tokens.css +240 -240
  402. package/utils/gemini.ts +2 -2
  403. package/dist/AssistantChart-9w31gdAb.cjs +0 -3363
  404. package/dist/AssistantChart-BAudAfne.cjs +0 -3591
  405. package/dist/AssistantChart-BAx9VQvb.cjs +0 -3374
  406. package/dist/AssistantChart-BP8upjMk.js +0 -3565
  407. package/dist/AssistantChart-CVko2A1W.js +0 -3348
  408. package/dist/AssistantChart-CVzmmhx4.js +0 -3337
  409. package/dist/AssistantChart-CeU2dIb6.js +0 -3469
  410. package/dist/AssistantChart-DO5UuX4J.cjs +0 -3495
  411. package/dist/AudioPlayer-1ypwE2Wh.cjs +0 -936
  412. package/dist/AudioPlayer-BJ2IuRQW.cjs +0 -1275
  413. package/dist/AudioPlayer-BWDW6TN9.cjs +0 -1279
  414. package/dist/AudioPlayer-CM962GEh.js +0 -1280
  415. package/dist/AudioPlayer-CbZId7cj.cjs +0 -998
  416. package/dist/AudioPlayer-DU8zt8-z.js +0 -999
  417. package/dist/AudioPlayer-DuKXrCfy.js +0 -937
  418. package/dist/AudioPlayer-Xxma6_-H.js +0 -1276
  419. package/dist/BrandColorsContext-DLVJgtmH.js +0 -666
  420. package/dist/BrandColorsContext-DZT7JjeD.js +0 -659
  421. package/dist/BrandColorsContext-GUyFmkX0.cjs +0 -665
  422. package/dist/BrandColorsContext-awnBCmC4.cjs +0 -666
  423. package/dist/CodeBlock-C2ZUXt8V.js +0 -219
  424. package/dist/CodeBlock-C5oYnLQp.cjs +0 -218
  425. package/dist/CodeBlock-DuxdtN-l.js +0 -219
  426. package/dist/CodeBlock-POVYONvC.cjs +0 -218
  427. package/dist/CustomTooltipContent-BT6brkVJ.cjs +0 -49
  428. package/dist/CustomTooltipContent-CfOfikhq.js +0 -33
  429. package/dist/CustomTooltipContent-DHjkY0ww.js +0 -40
  430. package/dist/CustomTooltipContent-c_K-DWRr.cjs +0 -56
  431. package/dist/FeatureCard-9GhnlgL3.js +0 -336
  432. package/dist/FeatureCard-Bcb3Zi54.js +0 -302
  433. package/dist/FeatureCard-CkPd2psQ.cjs +0 -301
  434. package/dist/FeatureCard-Dkp-xmzM.cjs +0 -335
  435. package/dist/FeatureCardSkeleton-CAgu8stE.js +0 -27
  436. package/dist/FeatureCardSkeleton-mO3Bdm_V.cjs +0 -26
  437. package/dist/LanguageContext-BwhwC3G2.js +0 -657
  438. package/dist/LanguageContext-DvUt5jBg.cjs +0 -656
  439. package/dist/LayoutContext-BDmcZfMH.cjs +0 -84
  440. package/dist/LayoutContext-C4kKN9RV.cjs +0 -93
  441. package/dist/LayoutContext-CGEe1oPq.js +0 -94
  442. package/dist/LayoutContext-CwT5KLiW.cjs +0 -104
  443. package/dist/LayoutContext-DVLCsoQn.js +0 -105
  444. package/dist/LayoutContext-dbQvdC4O.js +0 -85
  445. package/dist/ThemeContext-BbBNoFTG.js +0 -735
  446. package/dist/ThemeContext-Bo-W2WZH.js +0 -1856
  447. package/dist/ThemeContext-CP3a0jxy.cjs +0 -1855
  448. package/dist/ThemeContext-Cmr8Ex8H.cjs +0 -734
  449. package/dist/ThemeContext-CpqYShLq.cjs +0 -324
  450. package/dist/ThemeContext-D3LzacmG.js +0 -188
  451. package/dist/ThemeContext-DQUOeziy.cjs +0 -1855
  452. package/dist/ThemeContext-Du2nE1PL.js +0 -325
  453. package/dist/ThemeContext-GeEBTJ3q.cjs +0 -1621
  454. package/dist/ThemeContext-JyLK9B1o.js +0 -1622
  455. package/dist/ThemeContext-U4dEYc6C.cjs +0 -187
  456. package/dist/ThemeContext-ept8jhXI.js +0 -1856
  457. package/dist/VerifyEmailPage-BE-L9mB7.js +0 -2828
  458. package/dist/VerifyEmailPage-BIBOKV7Z.js +0 -3214
  459. package/dist/VerifyEmailPage-BJjAMUTW.js +0 -3223
  460. package/dist/VerifyEmailPage-BRSP-Pwt.cjs +0 -3196
  461. package/dist/VerifyEmailPage-Bae2cBXT.cjs +0 -2827
  462. package/dist/VerifyEmailPage-BiRm7Nh4.cjs +0 -3213
  463. package/dist/VerifyEmailPage-Bvfv8HVQ.js +0 -3214
  464. package/dist/VerifyEmailPage-CR7kb5df.cjs +0 -2827
  465. package/dist/VerifyEmailPage-C_ihbcth.js +0 -2828
  466. package/dist/VerifyEmailPage-CbgjOF0v.js +0 -2828
  467. package/dist/VerifyEmailPage-CdYPSJoO.js +0 -2828
  468. package/dist/VerifyEmailPage-CkBYfsNy.cjs +0 -3232
  469. package/dist/VerifyEmailPage-D-FRj5TU.cjs +0 -3213
  470. package/dist/VerifyEmailPage-DF2ilhum.cjs +0 -3210
  471. package/dist/VerifyEmailPage-DMBh4NM9.cjs +0 -2827
  472. package/dist/VerifyEmailPage-DTtFfC-J.js +0 -3197
  473. package/dist/VerifyEmailPage-Dt7zgA4w.cjs +0 -2827
  474. package/dist/VerifyEmailPage-EhudUdqF.js +0 -3211
  475. package/dist/VerifyEmailPage-RrUApqBN.js +0 -3214
  476. package/dist/VerifyEmailPage-VoMI7MYH.cjs +0 -3213
  477. package/dist/VerifyEmailPage-hdB8JQGv.cjs +0 -3213
  478. package/dist/VerifyEmailPage-vYHbYK3q.js +0 -3214
  479. package/dist/XerticaOrbe-BCUVSPPB.cjs +0 -1924
  480. package/dist/XerticaOrbe-BGIB1CTK.js +0 -1355
  481. package/dist/XerticaOrbe-By8eEvR-.js +0 -1925
  482. package/dist/XerticaOrbe-FWGjBj0U.cjs +0 -1354
  483. package/dist/XerticaProvider-AChwphCO.cjs +0 -48
  484. package/dist/XerticaProvider-AbWlr7Af.cjs +0 -48
  485. package/dist/XerticaProvider-BITjgC5p.js +0 -39
  486. package/dist/XerticaProvider-BSyFrmC0.js +0 -49
  487. package/dist/XerticaProvider-By8q3Roe.cjs +0 -38
  488. package/dist/XerticaProvider-CUYJZc32.js +0 -49
  489. package/dist/XerticaProvider-CW9hpCdF.cjs +0 -39
  490. package/dist/XerticaProvider-CWgby5mY.js +0 -49
  491. package/dist/XerticaProvider-CWs6EwNa.js +0 -49
  492. package/dist/XerticaProvider-CiNKjMx1.cjs +0 -48
  493. package/dist/XerticaProvider-CjQAQPcn.cjs +0 -48
  494. package/dist/XerticaProvider-D5lLumH-.js +0 -49
  495. package/dist/XerticaProvider-DUOJg9iX.js +0 -49
  496. package/dist/XerticaProvider-Dl_b72_l.cjs +0 -51
  497. package/dist/XerticaProvider-qQUDop71.cjs +0 -48
  498. package/dist/XerticaProvider-siSt9uG2.js +0 -40
  499. package/dist/XerticaXLogo-8TTzBjHw.cjs +0 -251
  500. package/dist/XerticaXLogo-B2svDGZh.cjs +0 -251
  501. package/dist/XerticaXLogo-BWaag64t.js +0 -252
  502. package/dist/XerticaXLogo-CU-U-GP4.cjs +0 -251
  503. package/dist/XerticaXLogo-ChryA6xj.js +0 -252
  504. package/dist/XerticaXLogo-CowGv7BC.js +0 -252
  505. package/dist/XerticaXLogo-D8jf0SNv.cjs +0 -214
  506. package/dist/XerticaXLogo-DHz5SugF.js +0 -252
  507. package/dist/XerticaXLogo-DTee_y8X.cjs +0 -251
  508. package/dist/XerticaXLogo-DfUvz-lD.js +0 -243
  509. package/dist/XerticaXLogo-DzXKZBtG.js +0 -231
  510. package/dist/XerticaXLogo-fAJMy3H4.js +0 -215
  511. package/dist/XerticaXLogo-kslQ8Tk_.cjs +0 -251
  512. package/dist/XerticaXLogo-xWbElCZj.cjs +0 -230
  513. package/dist/avatar-Cq5_E8r9.cjs +0 -78
  514. package/dist/avatar-CuYu2MKt.cjs +0 -72
  515. package/dist/avatar-Cxyofu1H.js +0 -56
  516. package/dist/avatar-DSBfJMRJ.js +0 -62
  517. package/dist/breadcrumb-CVzzzqfo.js +0 -103
  518. package/dist/breadcrumb-DIJ0X3Ot.js +0 -96
  519. package/dist/breadcrumb-DjSxkjlQ.cjs +0 -95
  520. package/dist/breadcrumb-DnDlQFg2.cjs +0 -102
  521. package/dist/button-0CXwCRTm.cjs +0 -85
  522. package/dist/button-Bnv9SvYK.cjs +0 -79
  523. package/dist/button-C6uvh0rV.js +0 -63
  524. package/dist/button-qkz7Icqf.js +0 -69
  525. package/dist/card-B8-Gl5DL.js +0 -73
  526. package/dist/card-Bv_c57KU.cjs +0 -72
  527. package/dist/card-DJTsYhLL.cjs +0 -89
  528. package/dist/card-fi8zAN-I.js +0 -90
  529. package/dist/dropdown-menu-B_uEXNc4.cjs +0 -220
  530. package/dist/dropdown-menu-CFuCssWA.js +0 -204
  531. package/dist/dropdown-menu-Ze1YZFyc.cjs +0 -247
  532. package/dist/dropdown-menu-nc_Lvg-u.js +0 -231
  533. package/dist/google-maps-loader-BVoVhUwA.js +0 -316
  534. package/dist/google-maps-loader-BqsYL48U.cjs +0 -285
  535. package/dist/google-maps-loader-DjJaYhV6.cjs +0 -316
  536. package/dist/google-maps-loader-t2IlYBzw.js +0 -286
  537. package/dist/index-B7A523O_.js +0 -8
  538. package/dist/index-BabBx2pa.js +0 -6
  539. package/dist/index-CkTUgOwX.js +0 -8
  540. package/dist/index-D3RLKRAs.cjs +0 -7
  541. package/dist/index-DmHhnb7a.cjs +0 -7
  542. package/dist/index.umd.js +0 -13712
  543. package/dist/input-CNFHVKvo.cjs +0 -145
  544. package/dist/input-CPl84zAx.cjs +0 -151
  545. package/dist/input-C_UiS2Py.cjs +0 -152
  546. package/dist/input-D-6IsAca.js +0 -133
  547. package/dist/input-cc-PTD4R.js +0 -123
  548. package/dist/input-wPYg0d0P.js +0 -127
  549. package/dist/progress-BLwqortq.cjs +0 -105
  550. package/dist/progress-D9mtsf6j.js +0 -89
  551. package/dist/rich-text-editor-1UW3Y2JK.js +0 -2891
  552. package/dist/rich-text-editor-BM-LPpTh.js +0 -2902
  553. package/dist/rich-text-editor-BmsjY03B.js +0 -2949
  554. package/dist/rich-text-editor-BrdC5evx.js +0 -2244
  555. package/dist/rich-text-editor-CyggTOLQ.cjs +0 -2908
  556. package/dist/rich-text-editor-DbV-S7Fi.cjs +0 -2261
  557. package/dist/rich-text-editor-DoCkKhzk.cjs +0 -2919
  558. package/dist/rich-text-editor-DqLICivI.js +0 -2832
  559. package/dist/rich-text-editor-DxO1Hz3a.cjs +0 -2903
  560. package/dist/rich-text-editor-GS2kpTAK.cjs +0 -2966
  561. package/dist/routes.d.ts +0 -10
  562. package/dist/select-Cmb8zF7w.cjs +0 -156
  563. package/dist/select-CprSNX0z.js +0 -139
  564. package/dist/select-DT7Zjn42.cjs +0 -162
  565. package/dist/select-En8DkoaQ.js +0 -145
  566. package/dist/sidebar-B3EYhli0.cjs +0 -800
  567. package/dist/sidebar-B9NR0lCe.cjs +0 -800
  568. package/dist/sidebar-BcJ6LxvX.cjs +0 -733
  569. package/dist/sidebar-BvF5I2Ue.cjs +0 -800
  570. package/dist/sidebar-C5B_LHek.cjs +0 -795
  571. package/dist/sidebar-CA6_ek3f.js +0 -801
  572. package/dist/sidebar-CRMiBtAi.js +0 -801
  573. package/dist/sidebar-CVUGHOS_.cjs +0 -756
  574. package/dist/sidebar-CZ2mWaMM.cjs +0 -800
  575. package/dist/sidebar-CmvwjnVb.js +0 -757
  576. package/dist/sidebar-CplprZpM.js +0 -801
  577. package/dist/sidebar-Dz7bd3zP.js +0 -796
  578. package/dist/sidebar-KIS0C2JH.js +0 -801
  579. package/dist/sidebar-OTO_up7Z.js +0 -801
  580. package/dist/sidebar-WoKvFWCN.js +0 -717
  581. package/dist/sidebar-zowjejT2.cjs +0 -800
  582. package/dist/skeleton-4zoHiFJ_.cjs +0 -83
  583. package/dist/skeleton-C4bHqUBf.js +0 -84
  584. package/dist/slider-C0JKA9k3.js +0 -56
  585. package/dist/slider-CPmwzm_3.cjs +0 -73
  586. package/dist/slider-DcJharR9.cjs +0 -73
  587. package/dist/slider-Pay3fka2.js +0 -56
  588. package/dist/sonner-DeUIj0Zg.cjs +0 -63
  589. package/dist/sonner-g9RIfi35.js +0 -47
  590. package/dist/tooltip-CNtsL5cB.cjs +0 -71
  591. package/dist/tooltip-CTyZCD8h.js +0 -55
  592. package/dist/tooltip-CwgSdy3h.cjs +0 -67
  593. package/dist/tooltip-D-OrYnKO.js +0 -51
  594. package/dist/use-audio-player-BJFV24XW.js +0 -188
  595. package/dist/use-audio-player-Bkh23vQ3.js +0 -177
  596. package/dist/use-audio-player-Dn1NR9xN.cjs +0 -176
  597. package/dist/use-audio-player-DyVYlOnR.cjs +0 -187
  598. package/dist/use-mobile-BB4M_4Ru.cjs +0 -47
  599. package/dist/use-mobile-CLu9nqGL.js +0 -31
  600. package/dist/use-mobile-CNwiBNxu.js +0 -33
  601. package/dist/use-mobile-Dlf74ufz.cjs +0 -49
  602. package/dist/xertica-assistant-B1IaHXnB.cjs +0 -1894
  603. package/dist/xertica-assistant-BMqdyRVi.js +0 -2082
  604. package/dist/xertica-assistant-Bj3vBCq_.cjs +0 -2081
  605. package/dist/xertica-assistant-CfBCo21g.js +0 -2148
  606. package/dist/xertica-assistant-DIM_Do1k.js +0 -1866
  607. package/dist/xertica-assistant-DPsESB6t.js +0 -1878
  608. package/dist/xertica-assistant-DrsRwla1.cjs +0 -2147
  609. package/dist/xertica-assistant-Qp3ydksa.cjs +0 -1882
  610. package/dist/xertica-assistant-gnCJdcZY.js +0 -1866
  611. package/dist/xertica-assistant-yyrR0JKl.cjs +0 -1882
  612. package/styles/xertica/app-overrides/scrollbar.css +0 -33
  613. package/templates/src/features/auth/ui/SocialLoginButtons.tsx +0 -78
  614. package/templates/src/features/home/data/mock.ts +0 -41
  615. package/templates/src/features/home/hooks/useFeatureCards.ts +0 -20
  616. package/templates/src/features/home/store/dashboardStore.ts +0 -25
  617. package/templates/src/features/template/ui/CrudTemplate.tsx +0 -112
  618. package/templates/src/features/template/ui/DashboardTemplate.tsx +0 -110
  619. package/templates/src/features/template/ui/FormTemplate.tsx +0 -117
  620. package/templates/src/features/template/ui/LoginTemplate.tsx +0 -59
  621. package/templates/src/locales/en/pages/crudTemplate.json +0 -25
  622. package/templates/src/locales/en/pages/dashboardTemplate.json +0 -20
  623. package/templates/src/locales/en/pages/formTemplate.json +0 -16
  624. package/templates/src/locales/en/pages/loginTemplate.json +0 -9
  625. package/templates/src/locales/es/pages/crudTemplate.json +0 -25
  626. package/templates/src/locales/es/pages/dashboardTemplate.json +0 -20
  627. package/templates/src/locales/es/pages/formTemplate.json +0 -16
  628. package/templates/src/locales/es/pages/loginTemplate.json +0 -9
  629. package/templates/src/locales/pt-BR/pages/crudTemplate.json +0 -25
  630. package/templates/src/locales/pt-BR/pages/dashboardTemplate.json +0 -20
  631. package/templates/src/locales/pt-BR/pages/formTemplate.json +0 -16
  632. package/templates/src/locales/pt-BR/pages/loginTemplate.json +0 -9
  633. package/templates/vite.config.d.ts +0 -2
  634. package/templates/vite.config.js +0 -20
  635. 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-yyrR0JKl.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;