xertica-ui 2.0.2 → 2.0.4
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.
- package/CHANGELOG.md +8 -0
- package/README.md +1 -1
- package/bin/cli.ts +2 -1
- package/components/assistant/markdown-message/markdown-message.mdx +1 -1
- package/components/brand/language-selector/language-selector.mdx +1 -1
- package/components/brand/theme-toggle/theme-toggle.mdx +1 -1
- package/components/brand/xertica-logo/xertica-logo.mdx +1 -1
- package/components/brand/xertica-provider/xertica-provider.mdx +1 -1
- package/components/brand/xertica-xlogo/xertica-xlogo.mdx +1 -1
- package/components/index.ts +6 -0
- package/components/layout/header/header.mdx +1 -1
- package/components/layout/sidebar/sidebar.mdx +2 -1
- package/components/media/floating-media-wrapper.mdx +2 -2
- package/components/pages/forgot-password-page/ForgotPasswordPage.tsx +2 -4
- package/components/pages/home-content/HomeContent.tsx +1 -1
- package/components/pages/home-content/home-content.mdx +1 -1
- package/components/pages/home-page/HomePage.stories.tsx +39 -0
- package/components/pages/home-page/HomePage.tsx +2 -3
- package/components/pages/home-page/home-page.mdx +56 -0
- package/components/pages/login-page/LoginPage.tsx +2 -5
- package/components/pages/reset-password-page/reset-password-page.mdx +6 -2
- package/components/pages/template-page/TemplatePage.stories.tsx +39 -0
- package/components/pages/template-page/TemplatePage.tsx +3 -1
- package/components/pages/template-page/template-page.mdx +54 -0
- package/components/pages/verify-email-page/VerifyEmailPage.tsx +2 -4
- package/components/ui/accordion/accordion.stories.tsx +27 -1
- package/components/ui/alert-dialog/alert-dialog.stories.tsx +30 -0
- package/components/ui/button/button.stories.tsx +23 -0
- package/components/ui/checkbox/checkbox.stories.tsx +20 -1
- package/components/ui/dialog/dialog.stories.tsx +30 -0
- package/components/ui/google-maps-loader/google-maps-loader.mdx +1 -1
- package/components/ui/input/input.stories.tsx +24 -0
- package/components/ui/switch/switch.stories.tsx +20 -1
- package/components/ui/tabs/tabs.stories.tsx +26 -1
- package/components.json +1507 -530
- package/dist/cli.js +3 -2
- package/dist/components/index.d.ts +6 -0
- package/dist/index.cjs.js +1233 -484
- package/dist/index.es.js +778 -28
- package/dist/ui.cjs.js +178 -178
- package/dist/ui.es.js +1 -1
- package/dist/use-mobile-CaENcqm-.js +4508 -0
- package/dist/use-mobile-DMOvImGQ.cjs +4542 -0
- package/dist/xertica-ui.css +1 -1
- package/docs/decision-tree.md +287 -0
- package/guidelines/Guidelines.md +250 -657
- package/llms-compact.txt +327 -0
- package/llms.txt +160 -71
- package/package.json +193 -192
- package/templates/CLAUDE.md +160 -0
- package/templates/guidelines/Guidelines.md +245 -99
- package/templates/package.json +3 -3
package/dist/index.es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { X as XerticaAssistant } from "./CodeBlock-D6ffWXgc.js";
|
|
2
|
-
import { C, F, M, a
|
|
1
|
+
import { X as XerticaAssistant, g as gerarResposta } from "./CodeBlock-D6ffWXgc.js";
|
|
2
|
+
import { C, F, M, a } from "./CodeBlock-D6ffWXgc.js";
|
|
3
3
|
import { X } from "./XerticaProvider-6btlAlzc.js";
|
|
4
4
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
5
5
|
import { useNavigate, Link, useLocation } from "react-router-dom";
|
|
@@ -9,23 +9,24 @@ import { B as Button, e as cn } from "./tooltip-HDOoD2-0.js";
|
|
|
9
9
|
import { T, a as a2, b, c, d } from "./tooltip-HDOoD2-0.js";
|
|
10
10
|
import { S as ScrollArea, I as Input } from "./input-2R4loU86.js";
|
|
11
11
|
import { P, a as a3, b as b2, c as c2 } from "./input-2R4loU86.js";
|
|
12
|
-
import { B as Badge, aF as Map, I as Checkbox, aE as Label, t as Card, y as CardHeader, z as CardTitle, w as CardDescription, v as CardContent, bm as Separator, b3 as PageHeader, bB as Tabs, bD as TabsList, bE as TabsTrigger, bC as TabsContent, bA as Switch, d as Alert, q as AlertTitle, e as AlertDescription, bd as Progress, be as RadioGroup, bf as RadioGroupItem, x as CardFooter, f as AlertDialog, p as AlertDialogTrigger, i as AlertDialogContent, l as AlertDialogHeader, o as AlertDialogTitle, j as AlertDialogDescription, k as AlertDialogFooter, h as AlertDialogCancel, g as AlertDialogAction } from "./
|
|
13
|
-
import { A, a as a4, b as b3, c as c3, m, n, r, s, C as C2, u, D, E, F as F2, G, H, J, K, L, M as M2, N, O, P as P2, Q, R, S, T as T2, U, V, W, X as X2, Y, Z, _, $, a0, a1, a2 as a22, a3 as a32, a4 as a42, a5, a6, a7, a8, a9, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay,
|
|
12
|
+
import { B as Badge, aF as Map, I as Checkbox, aE as Label, t as Card, y as CardHeader, z as CardTitle, w as CardDescription, v as CardContent, bm as Separator, b3 as PageHeader, bB as Tabs, bD as TabsList, bE as TabsTrigger, bC as TabsContent, bA as Switch, d as Alert, q as AlertTitle, e as AlertDescription, bd as Progress, be as RadioGroup, bf as RadioGroupItem, x as CardFooter, f as AlertDialog, p as AlertDialogTrigger, i as AlertDialogContent, l as AlertDialogHeader, o as AlertDialogTitle, j as AlertDialogDescription, k as AlertDialogFooter, h as AlertDialogCancel, g as AlertDialogAction, az as ImageWithFallback } from "./use-mobile-CaENcqm-.js";
|
|
13
|
+
import { A, a as a4, b as b3, c as c3, m, n, r, s, C as C2, u, D, E, F as F2, G, H, J, K, L, M as M2, N, O, P as P2, Q, R, S, T as T2, U, V, W, X as X2, Y, Z, _, $, a0, a1, a2 as a22, a3 as a32, a4 as a42, a5, a6, a7, a8, a9, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, aA, aB, aC, aD, aG, aH, aI, aJ, aK, aL, aM, aN, aO, aP, aQ, aR, aS, aT, aU, aV, aW, aX, aY, aZ, a_, a$, b0, b1, b2 as b22, b4, b5, b6, b7, b8, b9, ba, bb, bc, bg, bh, bi, bj, bk, bl, bn, bo, bp, bq, br, bs, bt, bu, bv, bw, bx, by, bz, bF, bG, bH, bI, bJ, bK, bL, bM, bN, bO, bP, bQ, bR, bS, bT, bU, bV, bW } from "./use-mobile-CaENcqm-.js";
|
|
14
14
|
import { S as Select, h as SelectTrigger, i as SelectValue, a as SelectContent, c as SelectItem } from "./select-CvIVdX2n.js";
|
|
15
|
-
import { b as b10, d as d2, e, f, g
|
|
15
|
+
import { b as b10, d as d2, e, f, g } from "./select-CvIVdX2n.js";
|
|
16
16
|
import { D as Dialog, h as DialogContent, k as DialogHeader, n as DialogTitle, i as DialogDescription, w as Textarea, T as Table, u as TableHeader, v as TableRow, t as TableHead, p as TableBody, r as TableCell, o as DialogTrigger, j as DialogFooter } from "./rich-text-editor-B9UbSXNb.js";
|
|
17
|
-
import { C as C3, a as a10, b as b11, c as c4, d as d3, e as e2, f as f2, g as
|
|
18
|
-
import { Coffee, ShoppingBag, Landmark, Hotel, Utensils, MapPin, Filter, X as X3, MousePointer2, Circle, Square, Hexagon, Undo, Trash2, Save, Check, Pencil, Layers, Home, Settings, Users, Mail, Phone, Search, User, Calendar, Bell, FileEdit, ArrowRightLeft, Clock, Plus, Archive, Map as Map$1, FileText } from "lucide-react";
|
|
17
|
+
import { C as C3, a as a10, b as b11, c as c4, d as d3, e as e2, f as f2, g as g2, l, m as m2, R as R2, q, s as s2 } from "./rich-text-editor-B9UbSXNb.js";
|
|
18
|
+
import { Coffee, ShoppingBag, Landmark, Hotel, Utensils, MapPin, Filter, X as X3, MousePointer2, Circle, Square, Hexagon, Undo, Trash2, Save, Check, Pencil, Layers, Home, Settings, Users, Mail, Phone, Search, User, Calendar, Bell, FileEdit, ArrowRightLeft, Clock, Plus, Archive, Map as Map$1, FileText, Lock, ArrowLeft, CheckCircle2, AlertCircle } from "lucide-react";
|
|
19
19
|
import { S as Slider } from "./slider-Bc5Hd0y1.js";
|
|
20
20
|
import { toast } from "sonner";
|
|
21
21
|
import { u as useLayout } from "./LayoutContext-BAql6ZRY.js";
|
|
22
22
|
import { L as L2 } from "./LayoutContext-BAql6ZRY.js";
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
23
|
+
import { L as LanguageSelector, X as XerticaLogo } from "./LanguageSelector-B5YfbHra.js";
|
|
24
|
+
import { T as T3, a as a11 } from "./LanguageSelector-B5YfbHra.js";
|
|
25
|
+
import { A as A2, a as a12, b as b12, B, c as c5, d as d4, e as e3, f as f3, g as g3, h } from "./breadcrumb-CqJ7bHY5.js";
|
|
26
|
+
import { D as D2, a as a13, b as b13, c as c6, d as d5, e as e4, f as f4, g as g4, h as h2, i, j, k, l as l2, m as m3, n as n2 } from "./dropdown-menu-DQidbKBD.js";
|
|
27
|
+
import { T as T4 } from "./sonner-g9RIfi35.js";
|
|
26
28
|
import { G as G2, r as r2, u as u2 } from "./google-maps-loader-BFWp6VPd.js";
|
|
27
|
-
import {
|
|
28
|
-
import { X as X5 } from "./XerticaOrbe-zwS1p2a8.js";
|
|
29
|
+
import { X as X4 } from "./XerticaOrbe-zwS1p2a8.js";
|
|
29
30
|
import { A as A3, F as F3, V as V2 } from "./AudioPlayer-e8LfNoqO.js";
|
|
30
31
|
function createLucideIconSvg(iconName) {
|
|
31
32
|
const iconPaths = {
|
|
@@ -2022,6 +2023,9 @@ const routes = [
|
|
|
2022
2023
|
icon: FileText
|
|
2023
2024
|
}
|
|
2024
2025
|
];
|
|
2026
|
+
const getRouteByPath = (path) => {
|
|
2027
|
+
return routes.find((route) => route.path === path);
|
|
2028
|
+
};
|
|
2025
2029
|
function TemplatePage({ user, onLogout }) {
|
|
2026
2030
|
const { sidebarExpanded, sidebarWidth, assistenteExpanded, toggleSidebar, toggleAssistente } = useLayout();
|
|
2027
2031
|
const location = useLocation();
|
|
@@ -2058,11 +2062,751 @@ function TemplatePage({ user, onLogout }) {
|
|
|
2058
2062
|
{
|
|
2059
2063
|
isExpanded: assistenteExpanded,
|
|
2060
2064
|
onToggle: toggleAssistente,
|
|
2061
|
-
onEvaluation: (
|
|
2065
|
+
onEvaluation: () => {
|
|
2066
|
+
}
|
|
2062
2067
|
}
|
|
2063
2068
|
)
|
|
2064
2069
|
] });
|
|
2065
2070
|
}
|
|
2071
|
+
const SIDEBAR_COLLAPSED_WIDTH = 80;
|
|
2072
|
+
function HomeContent({ user, onLogout, onSettings }) {
|
|
2073
|
+
const { sidebarExpanded, sidebarWidth, assistenteExpanded } = useLayout();
|
|
2074
|
+
const location = useLocation();
|
|
2075
|
+
const navigate = useNavigate();
|
|
2076
|
+
const labelTranslations = {
|
|
2077
|
+
"home": "Início",
|
|
2078
|
+
"template": "Template"
|
|
2079
|
+
};
|
|
2080
|
+
const currentRoute = getRouteByPath(location.pathname);
|
|
2081
|
+
(currentRoute == null ? void 0 : currentRoute.label) ? labelTranslations[currentRoute.label.toLowerCase()] || currentRoute.label : "Início";
|
|
2082
|
+
return /* @__PURE__ */ jsxs(
|
|
2083
|
+
"div",
|
|
2084
|
+
{
|
|
2085
|
+
style: {
|
|
2086
|
+
paddingLeft: sidebarExpanded ? `${sidebarWidth}px` : SIDEBAR_COLLAPSED_WIDTH
|
|
2087
|
+
},
|
|
2088
|
+
className: "flex-1 flex flex-col overflow-hidden transition-all duration-300",
|
|
2089
|
+
children: [
|
|
2090
|
+
/* @__PURE__ */ jsx(
|
|
2091
|
+
Header,
|
|
2092
|
+
{
|
|
2093
|
+
showThemeToggle: true,
|
|
2094
|
+
showLanguageSelector: true,
|
|
2095
|
+
breadcrumbs: [
|
|
2096
|
+
{ label: "Design System", href: "/home" },
|
|
2097
|
+
{ label: "Início" }
|
|
2098
|
+
],
|
|
2099
|
+
renderLink: (href, props) => /* @__PURE__ */ jsx(Link, { to: href, ...props })
|
|
2100
|
+
}
|
|
2101
|
+
),
|
|
2102
|
+
/* @__PURE__ */ jsx("main", { className: "flex-1 overflow-hidden bg-muted", children: /* @__PURE__ */ jsx(ScrollArea, { className: "h-full", children: /* @__PURE__ */ jsx("div", { className: "p-2 sm:p-4 md:p-6", children: /* @__PURE__ */ jsxs("div", { className: "max-w-6xl mx-auto space-y-8", children: [
|
|
2103
|
+
/* @__PURE__ */ jsx(
|
|
2104
|
+
PageHeader,
|
|
2105
|
+
{
|
|
2106
|
+
title: "Bem-vindo ao Design System!",
|
|
2107
|
+
subtitle: "Sua plataforma inteligente para automação e análise de dados"
|
|
2108
|
+
}
|
|
2109
|
+
),
|
|
2110
|
+
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", children: /* @__PURE__ */ jsxs(Card, { className: "hover:shadow-xl transition-shadow duration-200 flex flex-col h-full", children: [
|
|
2111
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
2112
|
+
/* @__PURE__ */ jsx("div", { className: "p-2 bg-[var(--chart-2)]/20 rounded-[var(--radius)]", children: /* @__PURE__ */ jsx(FileText, { className: "w-6 h-6 text-[var(--chart-2)]" }) }),
|
|
2113
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2114
|
+
/* @__PURE__ */ jsx(CardTitle, { className: "text-sm", children: "Template CLI" }),
|
|
2115
|
+
/* @__PURE__ */ jsx(Badge, { variant: "default", className: "text-xs", children: "Novo" })
|
|
2116
|
+
] })
|
|
2117
|
+
] }) }),
|
|
2118
|
+
/* @__PURE__ */ jsx(CardContent, { className: "flex-1", children: /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: "Página de template pronta para uso CLI com todos os componentes configurados." }) }),
|
|
2119
|
+
/* @__PURE__ */ jsx(CardFooter, { children: /* @__PURE__ */ jsx(
|
|
2120
|
+
Button,
|
|
2121
|
+
{
|
|
2122
|
+
variant: "outline",
|
|
2123
|
+
className: "w-full",
|
|
2124
|
+
onClick: () => navigate("/template"),
|
|
2125
|
+
children: "Visualizar"
|
|
2126
|
+
}
|
|
2127
|
+
) })
|
|
2128
|
+
] }) })
|
|
2129
|
+
] }) }) }) })
|
|
2130
|
+
]
|
|
2131
|
+
}
|
|
2132
|
+
);
|
|
2133
|
+
}
|
|
2134
|
+
const richSuggestions = [
|
|
2135
|
+
{ id: "chart-1", text: "Ver análise de desempenho" },
|
|
2136
|
+
{ id: "table-1", text: "Gerar relatório do projeto" },
|
|
2137
|
+
{ id: "doc-1", text: "Criar documento de requisitos" },
|
|
2138
|
+
{ id: "pod-1", text: "Gerar podcast de resumo diário" }
|
|
2139
|
+
];
|
|
2140
|
+
const feedbackOptions = [
|
|
2141
|
+
"Não era o que eu estava procurando",
|
|
2142
|
+
"Informações incorretas",
|
|
2143
|
+
"Resposta incompleta"
|
|
2144
|
+
];
|
|
2145
|
+
function HomePage({ user, onLogout }) {
|
|
2146
|
+
const { sidebarExpanded, sidebarWidth, assistenteExpanded, toggleSidebar, toggleAssistente, toggleAssistenteWithTab } = useLayout();
|
|
2147
|
+
const location = useLocation();
|
|
2148
|
+
const navigate = useNavigate();
|
|
2149
|
+
return /* @__PURE__ */ jsxs("div", { className: "h-screen flex bg-muted overflow-hidden relative", children: [
|
|
2150
|
+
/* @__PURE__ */ jsx(
|
|
2151
|
+
Sidebar,
|
|
2152
|
+
{
|
|
2153
|
+
expanded: sidebarExpanded,
|
|
2154
|
+
width: sidebarWidth,
|
|
2155
|
+
onToggle: toggleSidebar,
|
|
2156
|
+
user: {
|
|
2157
|
+
...user,
|
|
2158
|
+
name: "Ariel Santos",
|
|
2159
|
+
avatar: "https://github.com/shadcn.png"
|
|
2160
|
+
},
|
|
2161
|
+
onLogout,
|
|
2162
|
+
onSettingsClick: () => navigate("/settings"),
|
|
2163
|
+
location,
|
|
2164
|
+
navigate,
|
|
2165
|
+
routes
|
|
2166
|
+
}
|
|
2167
|
+
),
|
|
2168
|
+
/* @__PURE__ */ jsx(
|
|
2169
|
+
HomeContent,
|
|
2170
|
+
{
|
|
2171
|
+
user,
|
|
2172
|
+
onLogout,
|
|
2173
|
+
onSettings: () => navigate("/settings")
|
|
2174
|
+
}
|
|
2175
|
+
),
|
|
2176
|
+
/* @__PURE__ */ jsx(
|
|
2177
|
+
XerticaAssistant,
|
|
2178
|
+
{
|
|
2179
|
+
isExpanded: assistenteExpanded,
|
|
2180
|
+
onToggle: toggleAssistente,
|
|
2181
|
+
defaultTab: "chat",
|
|
2182
|
+
demoMode: true,
|
|
2183
|
+
responseGenerator: gerarResposta,
|
|
2184
|
+
richSuggestions,
|
|
2185
|
+
feedbackOptions,
|
|
2186
|
+
onEvaluation: () => {
|
|
2187
|
+
}
|
|
2188
|
+
}
|
|
2189
|
+
)
|
|
2190
|
+
] });
|
|
2191
|
+
}
|
|
2192
|
+
function LoginPage({ onLogin }) {
|
|
2193
|
+
const navigate = useNavigate();
|
|
2194
|
+
const [email, setEmail] = useState("");
|
|
2195
|
+
const [password, setPassword] = useState("");
|
|
2196
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
2197
|
+
const [error, setError] = useState("");
|
|
2198
|
+
const handleSubmit = async (e5) => {
|
|
2199
|
+
e5.preventDefault();
|
|
2200
|
+
setError("");
|
|
2201
|
+
setIsLoading(true);
|
|
2202
|
+
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
2203
|
+
const success = onLogin(email, password);
|
|
2204
|
+
if (!success) {
|
|
2205
|
+
setError("Por favor, preencha todos os campos");
|
|
2206
|
+
}
|
|
2207
|
+
setIsLoading(false);
|
|
2208
|
+
};
|
|
2209
|
+
const handleSocialLogin = (_provider) => {
|
|
2210
|
+
onLogin("social@user.com", "social-auth");
|
|
2211
|
+
};
|
|
2212
|
+
return /* @__PURE__ */ jsxs("div", { className: "min-h-screen flex", children: [
|
|
2213
|
+
/* @__PURE__ */ jsxs("div", { className: "hidden lg:flex lg:flex-1 relative overflow-hidden", children: [
|
|
2214
|
+
/* @__PURE__ */ jsx(
|
|
2215
|
+
ImageWithFallback,
|
|
2216
|
+
{
|
|
2217
|
+
src: "https://images.unsplash.com/photo-1551434678-e076c223a692?w=1200&h=800&fit=crop&auto=format",
|
|
2218
|
+
alt: "Equipe trabalhando com tecnologia",
|
|
2219
|
+
className: "absolute inset-0 w-full h-full object-cover"
|
|
2220
|
+
}
|
|
2221
|
+
),
|
|
2222
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-[image:var(--gradient-diagonal)] opacity-80" })
|
|
2223
|
+
] }),
|
|
2224
|
+
/* @__PURE__ */ 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: [
|
|
2225
|
+
/* @__PURE__ */ jsx("div", { className: "absolute top-4 right-4 z-20", children: /* @__PURE__ */ jsx(LanguageSelector, { variant: "minimal", showIcon: false }) }),
|
|
2226
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 lg:hidden bg-[image:var(--gradient-diagonal)] opacity-10 dark:opacity-5" }),
|
|
2227
|
+
/* @__PURE__ */ jsxs("div", { className: "w-full max-w-sm space-y-6 relative z-10", children: [
|
|
2228
|
+
/* @__PURE__ */ jsxs("div", { className: "text-center", children: [
|
|
2229
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-center mb-4", children: /* @__PURE__ */ jsx(
|
|
2230
|
+
XerticaLogo,
|
|
2231
|
+
{
|
|
2232
|
+
className: "h-12 w-auto text-primary dark:text-foreground",
|
|
2233
|
+
variant: "theme"
|
|
2234
|
+
}
|
|
2235
|
+
) }),
|
|
2236
|
+
/* @__PURE__ */ jsx("h2", { className: "text-sm text-muted-foreground", children: "Acesse sua conta" })
|
|
2237
|
+
] }),
|
|
2238
|
+
/* @__PURE__ */ jsxs("form", { className: "space-y-6", onSubmit: handleSubmit, children: [
|
|
2239
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
2240
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "email", children: "E-mail" }),
|
|
2241
|
+
/* @__PURE__ */ jsx(
|
|
2242
|
+
Input,
|
|
2243
|
+
{
|
|
2244
|
+
id: "email",
|
|
2245
|
+
name: "email",
|
|
2246
|
+
type: "email",
|
|
2247
|
+
required: true,
|
|
2248
|
+
className: "w-full",
|
|
2249
|
+
placeholder: "seu@email.com",
|
|
2250
|
+
value: email,
|
|
2251
|
+
onChange: (e5) => setEmail(e5.target.value)
|
|
2252
|
+
}
|
|
2253
|
+
)
|
|
2254
|
+
] }),
|
|
2255
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
2256
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "password", children: "Senha" }),
|
|
2257
|
+
/* @__PURE__ */ jsx(
|
|
2258
|
+
Input,
|
|
2259
|
+
{
|
|
2260
|
+
id: "password",
|
|
2261
|
+
name: "password",
|
|
2262
|
+
type: "password",
|
|
2263
|
+
required: true,
|
|
2264
|
+
className: "w-full",
|
|
2265
|
+
placeholder: "••••••••",
|
|
2266
|
+
value: password,
|
|
2267
|
+
onChange: (e5) => setPassword(e5.target.value)
|
|
2268
|
+
}
|
|
2269
|
+
)
|
|
2270
|
+
] }),
|
|
2271
|
+
error && /* @__PURE__ */ jsx("div", { className: "text-destructive text-sm text-center", children: error }),
|
|
2272
|
+
/* @__PURE__ */ jsx(
|
|
2273
|
+
Button,
|
|
2274
|
+
{
|
|
2275
|
+
type: "submit",
|
|
2276
|
+
className: "w-full",
|
|
2277
|
+
disabled: isLoading,
|
|
2278
|
+
children: isLoading ? "Entrando..." : "Entrar"
|
|
2279
|
+
}
|
|
2280
|
+
),
|
|
2281
|
+
/* @__PURE__ */ jsx("div", { className: "text-center", children: /* @__PURE__ */ jsx(
|
|
2282
|
+
"button",
|
|
2283
|
+
{
|
|
2284
|
+
type: "button",
|
|
2285
|
+
onClick: () => navigate("/forgot-password"),
|
|
2286
|
+
className: "text-sm text-primary hover:opacity-80 transition-colors",
|
|
2287
|
+
children: "Esqueceu sua senha?"
|
|
2288
|
+
}
|
|
2289
|
+
) })
|
|
2290
|
+
] }),
|
|
2291
|
+
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
2292
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center", children: /* @__PURE__ */ jsx("div", { className: "w-full border-t border-border" }) }),
|
|
2293
|
+
/* @__PURE__ */ jsx("div", { className: "relative flex justify-center text-sm", children: /* @__PURE__ */ jsx("span", { className: "bg-muted px-2 text-muted-foreground", children: "ou continue com" }) })
|
|
2294
|
+
] }),
|
|
2295
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
2296
|
+
/* @__PURE__ */ jsxs(
|
|
2297
|
+
Button,
|
|
2298
|
+
{
|
|
2299
|
+
type: "button",
|
|
2300
|
+
variant: "outline",
|
|
2301
|
+
className: "w-full justify-center",
|
|
2302
|
+
onClick: () => handleSocialLogin(),
|
|
2303
|
+
children: [
|
|
2304
|
+
/* @__PURE__ */ jsxs("svg", { className: "w-5 h-5 mr-2", viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
2305
|
+
/* @__PURE__ */ 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" }),
|
|
2306
|
+
/* @__PURE__ */ 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" }),
|
|
2307
|
+
/* @__PURE__ */ 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" }),
|
|
2308
|
+
/* @__PURE__ */ 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" }),
|
|
2309
|
+
/* @__PURE__ */ jsx("path", { fill: "none", d: "M0 0h48v48H0z" })
|
|
2310
|
+
] }),
|
|
2311
|
+
/* @__PURE__ */ jsx("span", { children: "Entrar com Google" })
|
|
2312
|
+
]
|
|
2313
|
+
}
|
|
2314
|
+
),
|
|
2315
|
+
/* @__PURE__ */ jsxs(
|
|
2316
|
+
Button,
|
|
2317
|
+
{
|
|
2318
|
+
type: "button",
|
|
2319
|
+
variant: "outline",
|
|
2320
|
+
className: "w-full justify-center",
|
|
2321
|
+
onClick: () => handleSocialLogin(),
|
|
2322
|
+
children: [
|
|
2323
|
+
/* @__PURE__ */ jsx(Lock, { className: "w-5 h-5 mr-2 text-[var(--chart-4)]" }),
|
|
2324
|
+
/* @__PURE__ */ jsx("span", { children: "Entrar com MT Login" })
|
|
2325
|
+
]
|
|
2326
|
+
}
|
|
2327
|
+
),
|
|
2328
|
+
/* @__PURE__ */ jsx(
|
|
2329
|
+
Button,
|
|
2330
|
+
{
|
|
2331
|
+
type: "button",
|
|
2332
|
+
variant: "outline",
|
|
2333
|
+
className: "w-full justify-center font-normal",
|
|
2334
|
+
onClick: () => handleSocialLogin(),
|
|
2335
|
+
children: /* @__PURE__ */ jsxs("span", { children: [
|
|
2336
|
+
"Entrar com ",
|
|
2337
|
+
/* @__PURE__ */ jsx("strong", { className: "font-semibold", children: "gov.br" })
|
|
2338
|
+
] })
|
|
2339
|
+
}
|
|
2340
|
+
)
|
|
2341
|
+
] })
|
|
2342
|
+
] })
|
|
2343
|
+
] })
|
|
2344
|
+
] });
|
|
2345
|
+
}
|
|
2346
|
+
function ForgotPasswordPage() {
|
|
2347
|
+
const navigate = useNavigate();
|
|
2348
|
+
const [email, setEmail] = useState("");
|
|
2349
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
2350
|
+
const handleSubmit = async (e5) => {
|
|
2351
|
+
e5.preventDefault();
|
|
2352
|
+
setIsLoading(true);
|
|
2353
|
+
await new Promise((resolve) => setTimeout(resolve, 1500));
|
|
2354
|
+
navigate("/verify-email", { state: { email } });
|
|
2355
|
+
setIsLoading(false);
|
|
2356
|
+
};
|
|
2357
|
+
const handleSocialLogin = (_provider) => {
|
|
2358
|
+
};
|
|
2359
|
+
return /* @__PURE__ */ jsxs("div", { className: "min-h-screen flex", children: [
|
|
2360
|
+
/* @__PURE__ */ jsxs("div", { className: "hidden lg:flex lg:flex-1 relative overflow-hidden", children: [
|
|
2361
|
+
/* @__PURE__ */ jsx(
|
|
2362
|
+
ImageWithFallback,
|
|
2363
|
+
{
|
|
2364
|
+
src: "https://images.unsplash.com/photo-1557804506-669a67965ba0?w=1200&h=800&fit=crop&auto=format",
|
|
2365
|
+
alt: "Segurança e tecnologia",
|
|
2366
|
+
className: "absolute inset-0 w-full h-full object-cover"
|
|
2367
|
+
}
|
|
2368
|
+
),
|
|
2369
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-[image:var(--gradient-diagonal)] opacity-80" })
|
|
2370
|
+
] }),
|
|
2371
|
+
/* @__PURE__ */ 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: [
|
|
2372
|
+
/* @__PURE__ */ jsx("div", { className: "absolute top-4 right-4 z-20", children: /* @__PURE__ */ jsx(LanguageSelector, { variant: "minimal", showIcon: false }) }),
|
|
2373
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 lg:hidden bg-[image:var(--gradient-diagonal)] opacity-10 dark:opacity-5" }),
|
|
2374
|
+
/* @__PURE__ */ jsxs("div", { className: "w-full max-w-sm space-y-6 relative z-10", children: [
|
|
2375
|
+
/* @__PURE__ */ jsxs("div", { className: "text-center", children: [
|
|
2376
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-center mb-4", children: /* @__PURE__ */ jsx(
|
|
2377
|
+
XerticaLogo,
|
|
2378
|
+
{
|
|
2379
|
+
className: "h-12 w-auto text-primary dark:text-foreground",
|
|
2380
|
+
variant: "theme"
|
|
2381
|
+
}
|
|
2382
|
+
) }),
|
|
2383
|
+
/* @__PURE__ */ jsx("h2", { className: "text-sm text-muted-foreground", children: "Recuperar senha" }),
|
|
2384
|
+
/* @__PURE__ */ jsx("p", { className: "mt-2 text-muted-foreground", children: "Digite seu e-mail e enviaremos as instruções para redefinir sua senha" })
|
|
2385
|
+
] }),
|
|
2386
|
+
/* @__PURE__ */ jsxs("form", { className: "space-y-6", onSubmit: handleSubmit, children: [
|
|
2387
|
+
/* @__PURE__ */ jsxs("div", { className: "form-group space-y-2", children: [
|
|
2388
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "email", className: "form-label", children: "E-mail" }),
|
|
2389
|
+
/* @__PURE__ */ jsx(
|
|
2390
|
+
Input,
|
|
2391
|
+
{
|
|
2392
|
+
id: "email",
|
|
2393
|
+
name: "email",
|
|
2394
|
+
type: "email",
|
|
2395
|
+
required: true,
|
|
2396
|
+
className: "w-full",
|
|
2397
|
+
placeholder: "seu@email.com",
|
|
2398
|
+
value: email,
|
|
2399
|
+
onChange: (e5) => setEmail(e5.target.value)
|
|
2400
|
+
}
|
|
2401
|
+
)
|
|
2402
|
+
] }),
|
|
2403
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
2404
|
+
/* @__PURE__ */ jsx(
|
|
2405
|
+
Button,
|
|
2406
|
+
{
|
|
2407
|
+
type: "submit",
|
|
2408
|
+
className: "w-full",
|
|
2409
|
+
disabled: isLoading,
|
|
2410
|
+
children: isLoading ? "Enviando..." : "Enviar instruções"
|
|
2411
|
+
}
|
|
2412
|
+
),
|
|
2413
|
+
/* @__PURE__ */ jsxs(
|
|
2414
|
+
Button,
|
|
2415
|
+
{
|
|
2416
|
+
type: "button",
|
|
2417
|
+
onClick: () => navigate("/login"),
|
|
2418
|
+
variant: "outline",
|
|
2419
|
+
className: "w-full text-muted-foreground hover:text-foreground",
|
|
2420
|
+
children: [
|
|
2421
|
+
/* @__PURE__ */ jsx(ArrowLeft, { className: "w-4 h-4 mr-2" }),
|
|
2422
|
+
"Voltar para o login"
|
|
2423
|
+
]
|
|
2424
|
+
}
|
|
2425
|
+
)
|
|
2426
|
+
] })
|
|
2427
|
+
] }),
|
|
2428
|
+
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
2429
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center", children: /* @__PURE__ */ jsx("div", { className: "w-full border-t border-border" }) }),
|
|
2430
|
+
/* @__PURE__ */ jsx("div", { className: "relative flex justify-center text-sm", children: /* @__PURE__ */ jsx("span", { className: "bg-muted px-2 text-muted-foreground", children: "ou continue com" }) })
|
|
2431
|
+
] }),
|
|
2432
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
2433
|
+
/* @__PURE__ */ jsxs(
|
|
2434
|
+
Button,
|
|
2435
|
+
{
|
|
2436
|
+
type: "button",
|
|
2437
|
+
variant: "outline",
|
|
2438
|
+
className: "w-full justify-center",
|
|
2439
|
+
onClick: () => handleSocialLogin(),
|
|
2440
|
+
children: [
|
|
2441
|
+
/* @__PURE__ */ jsxs("svg", { className: "w-5 h-5 mr-2", viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
2442
|
+
/* @__PURE__ */ 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" }),
|
|
2443
|
+
/* @__PURE__ */ 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" }),
|
|
2444
|
+
/* @__PURE__ */ 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" }),
|
|
2445
|
+
/* @__PURE__ */ 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" }),
|
|
2446
|
+
/* @__PURE__ */ jsx("path", { fill: "none", d: "M0 0h48v48H0z" })
|
|
2447
|
+
] }),
|
|
2448
|
+
/* @__PURE__ */ jsx("span", { children: "Entrar com Google" })
|
|
2449
|
+
]
|
|
2450
|
+
}
|
|
2451
|
+
),
|
|
2452
|
+
/* @__PURE__ */ jsxs(
|
|
2453
|
+
Button,
|
|
2454
|
+
{
|
|
2455
|
+
type: "button",
|
|
2456
|
+
variant: "outline",
|
|
2457
|
+
className: "w-full justify-center",
|
|
2458
|
+
onClick: () => handleSocialLogin(),
|
|
2459
|
+
children: [
|
|
2460
|
+
/* @__PURE__ */ jsx(Lock, { className: "w-5 h-5 mr-2 text-[var(--chart-4)]" }),
|
|
2461
|
+
/* @__PURE__ */ jsx("span", { children: "Entrar com MT Login" })
|
|
2462
|
+
]
|
|
2463
|
+
}
|
|
2464
|
+
),
|
|
2465
|
+
/* @__PURE__ */ jsx(
|
|
2466
|
+
Button,
|
|
2467
|
+
{
|
|
2468
|
+
type: "button",
|
|
2469
|
+
variant: "outline",
|
|
2470
|
+
className: "w-full justify-center font-normal",
|
|
2471
|
+
onClick: () => handleSocialLogin(),
|
|
2472
|
+
children: /* @__PURE__ */ jsxs("span", { children: [
|
|
2473
|
+
"Entrar com ",
|
|
2474
|
+
/* @__PURE__ */ jsx("strong", { className: "font-semibold", children: "gov.br" })
|
|
2475
|
+
] })
|
|
2476
|
+
}
|
|
2477
|
+
)
|
|
2478
|
+
] })
|
|
2479
|
+
] })
|
|
2480
|
+
] })
|
|
2481
|
+
] });
|
|
2482
|
+
}
|
|
2483
|
+
function VerifyEmailPage() {
|
|
2484
|
+
var _a;
|
|
2485
|
+
const navigate = useNavigate();
|
|
2486
|
+
const location = useLocation();
|
|
2487
|
+
const email = ((_a = location.state) == null ? void 0 : _a.email) || "your@email.com";
|
|
2488
|
+
const [isResending, setIsResending] = useState(false);
|
|
2489
|
+
const [resendSuccess, setResendSuccess] = useState(false);
|
|
2490
|
+
const handleResend = async () => {
|
|
2491
|
+
setIsResending(true);
|
|
2492
|
+
setResendSuccess(false);
|
|
2493
|
+
await new Promise((resolve) => setTimeout(resolve, 1500));
|
|
2494
|
+
setIsResending(false);
|
|
2495
|
+
setResendSuccess(true);
|
|
2496
|
+
setTimeout(() => setResendSuccess(false), 3e3);
|
|
2497
|
+
};
|
|
2498
|
+
const handleSocialLogin = (_provider) => {
|
|
2499
|
+
};
|
|
2500
|
+
return /* @__PURE__ */ jsxs("div", { className: "min-h-screen flex", children: [
|
|
2501
|
+
/* @__PURE__ */ jsxs("div", { className: "hidden lg:flex lg:flex-1 relative overflow-hidden", children: [
|
|
2502
|
+
/* @__PURE__ */ jsx(
|
|
2503
|
+
ImageWithFallback,
|
|
2504
|
+
{
|
|
2505
|
+
src: "https://images.unsplash.com/photo-1563986768609-322da13575f3?w=1200&h=800&fit=crop&auto=format",
|
|
2506
|
+
alt: "E-mail e comunicação",
|
|
2507
|
+
className: "absolute inset-0 w-full h-full object-cover"
|
|
2508
|
+
}
|
|
2509
|
+
),
|
|
2510
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-[image:var(--gradient-diagonal)] opacity-80" })
|
|
2511
|
+
] }),
|
|
2512
|
+
/* @__PURE__ */ 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: [
|
|
2513
|
+
/* @__PURE__ */ jsx("div", { className: "absolute top-4 right-4 z-20", children: /* @__PURE__ */ jsx(LanguageSelector, { variant: "minimal", showIcon: false }) }),
|
|
2514
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 lg:hidden bg-[image:var(--gradient-diagonal)] opacity-10 dark:opacity-5" }),
|
|
2515
|
+
/* @__PURE__ */ jsxs("div", { className: "w-full max-w-sm space-y-6 relative z-10", children: [
|
|
2516
|
+
/* @__PURE__ */ jsxs("div", { className: "text-center", children: [
|
|
2517
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-center mb-4", children: /* @__PURE__ */ jsx(
|
|
2518
|
+
XerticaLogo,
|
|
2519
|
+
{
|
|
2520
|
+
className: "h-12 w-auto text-primary dark:text-foreground",
|
|
2521
|
+
variant: "theme"
|
|
2522
|
+
}
|
|
2523
|
+
) }),
|
|
2524
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-center mb-4", children: /* @__PURE__ */ jsx("div", { className: "p-4 bg-primary/10 rounded-[var(--radius)]", children: /* @__PURE__ */ jsx(Mail, { className: "w-12 h-12 text-primary" }) }) }),
|
|
2525
|
+
/* @__PURE__ */ jsx("h2", { className: "text-sm text-muted-foreground", children: "Verifique seu e-mail" }),
|
|
2526
|
+
/* @__PURE__ */ jsx("p", { className: "mt-2 text-muted-foreground", children: "Enviamos as instruções para redefinir sua senha para:" }),
|
|
2527
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1 text-primary", children: email })
|
|
2528
|
+
] }),
|
|
2529
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-accent rounded-[var(--radius)] p-4 space-y-3", children: [
|
|
2530
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: "Siga as instruções no e-mail para redefinir sua senha. O link expira em 24 horas." }),
|
|
2531
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 text-muted-foreground", children: [
|
|
2532
|
+
/* @__PURE__ */ jsx(CheckCircle2, { className: "w-4 h-4 mt-0.5 flex-shrink-0 text-[var(--chart-2)]" }),
|
|
2533
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm", children: "Verifique sua pasta de spam se não encontrar o e-mail" })
|
|
2534
|
+
] })
|
|
2535
|
+
] }),
|
|
2536
|
+
resendSuccess && /* @__PURE__ */ 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: [
|
|
2537
|
+
/* @__PURE__ */ jsx(CheckCircle2, { className: "w-5 h-5 text-[var(--chart-2)] flex-shrink-0" }),
|
|
2538
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-[var(--chart-2)]", children: "E-mail reenviado com sucesso!" })
|
|
2539
|
+
] }),
|
|
2540
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
2541
|
+
/* @__PURE__ */ jsx("p", { className: "text-center text-muted-foreground", children: "Não recebeu o e-mail?" }),
|
|
2542
|
+
/* @__PURE__ */ jsx(
|
|
2543
|
+
Button,
|
|
2544
|
+
{
|
|
2545
|
+
variant: "outline",
|
|
2546
|
+
className: "w-full",
|
|
2547
|
+
onClick: handleResend,
|
|
2548
|
+
disabled: isResending,
|
|
2549
|
+
children: isResending ? "Reenviando..." : "Reenviar e-mail"
|
|
2550
|
+
}
|
|
2551
|
+
),
|
|
2552
|
+
/* @__PURE__ */ jsxs(
|
|
2553
|
+
Button,
|
|
2554
|
+
{
|
|
2555
|
+
type: "button",
|
|
2556
|
+
onClick: () => navigate("/login"),
|
|
2557
|
+
variant: "outline",
|
|
2558
|
+
className: "w-full text-muted-foreground hover:text-foreground",
|
|
2559
|
+
children: [
|
|
2560
|
+
/* @__PURE__ */ jsx(ArrowLeft, { className: "w-4 h-4 mr-2" }),
|
|
2561
|
+
"Voltar para o login"
|
|
2562
|
+
]
|
|
2563
|
+
}
|
|
2564
|
+
)
|
|
2565
|
+
] }),
|
|
2566
|
+
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
2567
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center", children: /* @__PURE__ */ jsx("div", { className: "w-full border-t border-border" }) }),
|
|
2568
|
+
/* @__PURE__ */ jsx("div", { className: "relative flex justify-center text-sm", children: /* @__PURE__ */ jsx("span", { className: "bg-muted px-2 text-muted-foreground", children: "ou continue com" }) })
|
|
2569
|
+
] }),
|
|
2570
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
2571
|
+
/* @__PURE__ */ jsxs(
|
|
2572
|
+
Button,
|
|
2573
|
+
{
|
|
2574
|
+
type: "button",
|
|
2575
|
+
variant: "outline",
|
|
2576
|
+
className: "w-full justify-center",
|
|
2577
|
+
onClick: () => handleSocialLogin(),
|
|
2578
|
+
children: [
|
|
2579
|
+
/* @__PURE__ */ jsxs("svg", { className: "w-5 h-5 mr-2", viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
2580
|
+
/* @__PURE__ */ 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" }),
|
|
2581
|
+
/* @__PURE__ */ 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" }),
|
|
2582
|
+
/* @__PURE__ */ 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" }),
|
|
2583
|
+
/* @__PURE__ */ 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" }),
|
|
2584
|
+
/* @__PURE__ */ jsx("path", { fill: "none", d: "M0 0h48v48H0z" })
|
|
2585
|
+
] }),
|
|
2586
|
+
/* @__PURE__ */ jsx("span", { children: "Entrar com Google" })
|
|
2587
|
+
]
|
|
2588
|
+
}
|
|
2589
|
+
),
|
|
2590
|
+
/* @__PURE__ */ jsxs(
|
|
2591
|
+
Button,
|
|
2592
|
+
{
|
|
2593
|
+
type: "button",
|
|
2594
|
+
variant: "outline",
|
|
2595
|
+
className: "w-full justify-center",
|
|
2596
|
+
onClick: () => handleSocialLogin(),
|
|
2597
|
+
children: [
|
|
2598
|
+
/* @__PURE__ */ jsx(Lock, { className: "w-5 h-5 mr-2 text-[var(--chart-4)]" }),
|
|
2599
|
+
/* @__PURE__ */ jsx("span", { children: "Entrar com MT Login" })
|
|
2600
|
+
]
|
|
2601
|
+
}
|
|
2602
|
+
),
|
|
2603
|
+
/* @__PURE__ */ jsx(
|
|
2604
|
+
Button,
|
|
2605
|
+
{
|
|
2606
|
+
type: "button",
|
|
2607
|
+
variant: "outline",
|
|
2608
|
+
className: "w-full justify-center font-normal",
|
|
2609
|
+
onClick: () => handleSocialLogin(),
|
|
2610
|
+
children: /* @__PURE__ */ jsxs("span", { children: [
|
|
2611
|
+
"Entrar com ",
|
|
2612
|
+
/* @__PURE__ */ jsx("strong", { className: "font-semibold", children: "gov.br" })
|
|
2613
|
+
] })
|
|
2614
|
+
}
|
|
2615
|
+
)
|
|
2616
|
+
] })
|
|
2617
|
+
] })
|
|
2618
|
+
] })
|
|
2619
|
+
] });
|
|
2620
|
+
}
|
|
2621
|
+
function ResetPasswordPage() {
|
|
2622
|
+
const navigate = useNavigate();
|
|
2623
|
+
const [password, setPassword] = useState("");
|
|
2624
|
+
const [confirmPassword, setConfirmPassword] = useState("");
|
|
2625
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
2626
|
+
const [error, setError] = useState("");
|
|
2627
|
+
const [passwordStrength, setPasswordStrength] = useState(null);
|
|
2628
|
+
const checkPasswordStrength = (pwd) => {
|
|
2629
|
+
if (pwd.length === 0) {
|
|
2630
|
+
setPasswordStrength(null);
|
|
2631
|
+
return;
|
|
2632
|
+
}
|
|
2633
|
+
if (pwd.length < 6) {
|
|
2634
|
+
setPasswordStrength("weak");
|
|
2635
|
+
} else if (pwd.length < 10) {
|
|
2636
|
+
setPasswordStrength("medium");
|
|
2637
|
+
} else {
|
|
2638
|
+
setPasswordStrength("strong");
|
|
2639
|
+
}
|
|
2640
|
+
};
|
|
2641
|
+
const handlePasswordChange = (value) => {
|
|
2642
|
+
setPassword(value);
|
|
2643
|
+
checkPasswordStrength(value);
|
|
2644
|
+
setError("");
|
|
2645
|
+
};
|
|
2646
|
+
const handleSubmit = async (e5) => {
|
|
2647
|
+
e5.preventDefault();
|
|
2648
|
+
setError("");
|
|
2649
|
+
if (password.length < 6) {
|
|
2650
|
+
setError("A senha deve ter pelo menos 6 caracteres");
|
|
2651
|
+
return;
|
|
2652
|
+
}
|
|
2653
|
+
if (password !== confirmPassword) {
|
|
2654
|
+
setError("As senhas não coincidem");
|
|
2655
|
+
return;
|
|
2656
|
+
}
|
|
2657
|
+
setIsLoading(true);
|
|
2658
|
+
await new Promise((resolve) => setTimeout(resolve, 1500));
|
|
2659
|
+
navigate("/login", { state: { resetSuccess: true } });
|
|
2660
|
+
setIsLoading(false);
|
|
2661
|
+
};
|
|
2662
|
+
const getStrengthColor = () => {
|
|
2663
|
+
switch (passwordStrength) {
|
|
2664
|
+
case "weak":
|
|
2665
|
+
return "text-destructive";
|
|
2666
|
+
case "medium":
|
|
2667
|
+
return "text-[var(--chart-3)]";
|
|
2668
|
+
case "strong":
|
|
2669
|
+
return "text-[var(--chart-2)]";
|
|
2670
|
+
default:
|
|
2671
|
+
return "text-muted-foreground";
|
|
2672
|
+
}
|
|
2673
|
+
};
|
|
2674
|
+
const getStrengthText = () => {
|
|
2675
|
+
switch (passwordStrength) {
|
|
2676
|
+
case "weak":
|
|
2677
|
+
return "Senha fraca";
|
|
2678
|
+
case "medium":
|
|
2679
|
+
return "Senha média";
|
|
2680
|
+
case "strong":
|
|
2681
|
+
return "Senha forte";
|
|
2682
|
+
default:
|
|
2683
|
+
return "";
|
|
2684
|
+
}
|
|
2685
|
+
};
|
|
2686
|
+
return /* @__PURE__ */ jsxs("div", { className: "min-h-screen flex", children: [
|
|
2687
|
+
/* @__PURE__ */ jsxs("div", { className: "hidden lg:flex lg:flex-1 relative overflow-hidden", children: [
|
|
2688
|
+
/* @__PURE__ */ jsx(
|
|
2689
|
+
ImageWithFallback,
|
|
2690
|
+
{
|
|
2691
|
+
src: "https://images.unsplash.com/photo-1555949963-aa79dcee981c?w=1200&h=800&fit=crop&auto=format",
|
|
2692
|
+
alt: "Segurança e proteção",
|
|
2693
|
+
className: "absolute inset-0 w-full h-full object-cover"
|
|
2694
|
+
}
|
|
2695
|
+
),
|
|
2696
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-[image:var(--gradient-diagonal)] opacity-80" })
|
|
2697
|
+
] }),
|
|
2698
|
+
/* @__PURE__ */ 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: [
|
|
2699
|
+
/* @__PURE__ */ jsx("div", { className: "absolute top-4 right-4 z-20", children: /* @__PURE__ */ jsx(LanguageSelector, { variant: "minimal", showIcon: false }) }),
|
|
2700
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 lg:hidden bg-[image:var(--gradient-diagonal)] opacity-10 dark:opacity-5" }),
|
|
2701
|
+
/* @__PURE__ */ jsxs("div", { className: "w-full max-w-sm space-y-6 relative z-10", children: [
|
|
2702
|
+
/* @__PURE__ */ jsxs(
|
|
2703
|
+
"button",
|
|
2704
|
+
{
|
|
2705
|
+
onClick: () => navigate("/login"),
|
|
2706
|
+
className: "flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors",
|
|
2707
|
+
children: [
|
|
2708
|
+
/* @__PURE__ */ jsx(ArrowLeft, { className: "w-4 h-4" }),
|
|
2709
|
+
/* @__PURE__ */ jsx("span", { className: "text-small", children: "Voltar para o login" })
|
|
2710
|
+
]
|
|
2711
|
+
}
|
|
2712
|
+
),
|
|
2713
|
+
/* @__PURE__ */ jsxs("div", { className: "text-center", children: [
|
|
2714
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-center mb-4", children: /* @__PURE__ */ jsx(
|
|
2715
|
+
XerticaLogo,
|
|
2716
|
+
{
|
|
2717
|
+
className: "h-12 w-auto text-primary dark:text-foreground",
|
|
2718
|
+
variant: "theme"
|
|
2719
|
+
}
|
|
2720
|
+
) }),
|
|
2721
|
+
/* @__PURE__ */ jsx("h2", { className: "text-sm text-muted-foreground", children: "Redefinir senha" }),
|
|
2722
|
+
/* @__PURE__ */ jsx("p", { className: "mt-2 text-muted-foreground", children: "Crie uma nova senha segura para sua conta" })
|
|
2723
|
+
] }),
|
|
2724
|
+
/* @__PURE__ */ jsxs("form", { className: "space-y-6", onSubmit: handleSubmit, children: [
|
|
2725
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
2726
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "password", children: "Nova senha" }),
|
|
2727
|
+
/* @__PURE__ */ jsx(
|
|
2728
|
+
Input,
|
|
2729
|
+
{
|
|
2730
|
+
id: "password",
|
|
2731
|
+
name: "password",
|
|
2732
|
+
type: "password",
|
|
2733
|
+
required: true,
|
|
2734
|
+
className: "w-full",
|
|
2735
|
+
placeholder: "••••••••",
|
|
2736
|
+
value: password,
|
|
2737
|
+
onChange: (e5) => handlePasswordChange(e5.target.value)
|
|
2738
|
+
}
|
|
2739
|
+
),
|
|
2740
|
+
passwordStrength && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2741
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 h-1 bg-muted rounded-full overflow-hidden", children: /* @__PURE__ */ jsx(
|
|
2742
|
+
"div",
|
|
2743
|
+
{
|
|
2744
|
+
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)]"}`
|
|
2745
|
+
}
|
|
2746
|
+
) }),
|
|
2747
|
+
/* @__PURE__ */ jsx("span", { className: `text-small ${getStrengthColor()}`, children: getStrengthText() })
|
|
2748
|
+
] })
|
|
2749
|
+
] }),
|
|
2750
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
2751
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "confirmPassword", children: "Confirmar senha" }),
|
|
2752
|
+
/* @__PURE__ */ jsx(
|
|
2753
|
+
Input,
|
|
2754
|
+
{
|
|
2755
|
+
id: "confirmPassword",
|
|
2756
|
+
name: "confirmPassword",
|
|
2757
|
+
type: "password",
|
|
2758
|
+
required: true,
|
|
2759
|
+
className: "w-full",
|
|
2760
|
+
placeholder: "••••••••",
|
|
2761
|
+
value: confirmPassword,
|
|
2762
|
+
onChange: (e5) => {
|
|
2763
|
+
setConfirmPassword(e5.target.value);
|
|
2764
|
+
setError("");
|
|
2765
|
+
}
|
|
2766
|
+
}
|
|
2767
|
+
)
|
|
2768
|
+
] }),
|
|
2769
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-accent rounded-[var(--radius)] p-4 space-y-2", children: [
|
|
2770
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm", children: "Requisitos de senha:" }),
|
|
2771
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
|
|
2772
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2773
|
+
/* @__PURE__ */ jsx(
|
|
2774
|
+
CheckCircle2,
|
|
2775
|
+
{
|
|
2776
|
+
className: `w-4 h-4 ${password.length >= 6 ? "text-[var(--chart-2)]" : "text-muted-foreground"}`
|
|
2777
|
+
}
|
|
2778
|
+
),
|
|
2779
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: "Mínimo de 6 caracteres" })
|
|
2780
|
+
] }),
|
|
2781
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2782
|
+
/* @__PURE__ */ jsx(
|
|
2783
|
+
CheckCircle2,
|
|
2784
|
+
{
|
|
2785
|
+
className: `w-4 h-4 ${password === confirmPassword && password.length > 0 ? "text-[var(--chart-2)]" : "text-muted-foreground"}`
|
|
2786
|
+
}
|
|
2787
|
+
),
|
|
2788
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: "As senhas coincidem" })
|
|
2789
|
+
] })
|
|
2790
|
+
] })
|
|
2791
|
+
] }),
|
|
2792
|
+
error && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-destructive bg-destructive/10 rounded-[var(--radius)] p-3", children: [
|
|
2793
|
+
/* @__PURE__ */ jsx(AlertCircle, { className: "w-4 h-4 flex-shrink-0" }),
|
|
2794
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm", children: error })
|
|
2795
|
+
] }),
|
|
2796
|
+
/* @__PURE__ */ jsx(
|
|
2797
|
+
Button,
|
|
2798
|
+
{
|
|
2799
|
+
type: "submit",
|
|
2800
|
+
className: "w-full",
|
|
2801
|
+
disabled: isLoading,
|
|
2802
|
+
children: isLoading ? "Redefinindo..." : "Redefinir senha"
|
|
2803
|
+
}
|
|
2804
|
+
)
|
|
2805
|
+
] })
|
|
2806
|
+
] })
|
|
2807
|
+
] })
|
|
2808
|
+
] });
|
|
2809
|
+
}
|
|
2066
2810
|
export {
|
|
2067
2811
|
A as Accordion,
|
|
2068
2812
|
a4 as AccordionContent,
|
|
@@ -2086,7 +2830,7 @@ export {
|
|
|
2086
2830
|
s as AssistantChart,
|
|
2087
2831
|
A3 as AudioPlayer,
|
|
2088
2832
|
A2 as Avatar,
|
|
2089
|
-
|
|
2833
|
+
a12 as AvatarFallback,
|
|
2090
2834
|
b12 as AvatarImage,
|
|
2091
2835
|
Badge,
|
|
2092
2836
|
B as Breadcrumb,
|
|
@@ -2094,7 +2838,7 @@ export {
|
|
|
2094
2838
|
d4 as BreadcrumbItem,
|
|
2095
2839
|
e3 as BreadcrumbLink,
|
|
2096
2840
|
f3 as BreadcrumbList,
|
|
2097
|
-
|
|
2841
|
+
g3 as BreadcrumbPage,
|
|
2098
2842
|
h as BreadcrumbSeparator,
|
|
2099
2843
|
Button,
|
|
2100
2844
|
C2 as Calendar,
|
|
@@ -2147,7 +2891,7 @@ export {
|
|
|
2147
2891
|
a7 as ContextMenuTrigger,
|
|
2148
2892
|
Dialog,
|
|
2149
2893
|
f2 as DialogBody,
|
|
2150
|
-
|
|
2894
|
+
g2 as DialogClose,
|
|
2151
2895
|
DialogContent,
|
|
2152
2896
|
DialogDescription,
|
|
2153
2897
|
DialogFooter,
|
|
@@ -2167,13 +2911,13 @@ export {
|
|
|
2167
2911
|
ag as DrawerTitle,
|
|
2168
2912
|
ah as DrawerTrigger,
|
|
2169
2913
|
D2 as DropdownMenu,
|
|
2170
|
-
|
|
2914
|
+
a13 as DropdownMenuCheckboxItem,
|
|
2171
2915
|
b13 as DropdownMenuContent,
|
|
2172
2916
|
c6 as DropdownMenuGroup,
|
|
2173
2917
|
d5 as DropdownMenuItem,
|
|
2174
2918
|
e4 as DropdownMenuLabel,
|
|
2175
2919
|
f4 as DropdownMenuPortal,
|
|
2176
|
-
|
|
2920
|
+
g4 as DropdownMenuRadioGroup,
|
|
2177
2921
|
h2 as DropdownMenuRadioItem,
|
|
2178
2922
|
i as DropdownMenuSeparator,
|
|
2179
2923
|
j as DropdownMenuShortcut,
|
|
@@ -2189,6 +2933,7 @@ export {
|
|
|
2189
2933
|
an as EmptyTitle,
|
|
2190
2934
|
ao as FileUpload,
|
|
2191
2935
|
F3 as FloatingMediaWrapper,
|
|
2936
|
+
ForgotPasswordPage,
|
|
2192
2937
|
ap as Form,
|
|
2193
2938
|
aq as FormControl,
|
|
2194
2939
|
ar as FormDescription,
|
|
@@ -2199,18 +2944,21 @@ export {
|
|
|
2199
2944
|
F as FormattedDocument,
|
|
2200
2945
|
G2 as GoogleMapsLoaderProvider,
|
|
2201
2946
|
Header,
|
|
2947
|
+
HomeContent,
|
|
2948
|
+
HomePage,
|
|
2202
2949
|
aw as HoverCard,
|
|
2203
2950
|
ax as HoverCardContent,
|
|
2204
2951
|
ay as HoverCardTrigger,
|
|
2205
|
-
|
|
2952
|
+
ImageWithFallback,
|
|
2206
2953
|
Input,
|
|
2207
2954
|
aA as InputOTP,
|
|
2208
2955
|
aB as InputOTPGroup,
|
|
2209
2956
|
aC as InputOTPSeparator,
|
|
2210
2957
|
aD as InputOTPSlot,
|
|
2211
2958
|
Label,
|
|
2212
|
-
|
|
2959
|
+
LanguageSelector,
|
|
2213
2960
|
L2 as LayoutProvider,
|
|
2961
|
+
LoginPage,
|
|
2214
2962
|
Map,
|
|
2215
2963
|
M as MarkdownMessage,
|
|
2216
2964
|
aG as Menubar,
|
|
@@ -2256,6 +3004,7 @@ export {
|
|
|
2256
3004
|
RadioGroup,
|
|
2257
3005
|
RadioGroupItem,
|
|
2258
3006
|
bg as Rating,
|
|
3007
|
+
ResetPasswordPage,
|
|
2259
3008
|
bh as ResizableHandle,
|
|
2260
3009
|
bi as ResizablePanel,
|
|
2261
3010
|
bj as ResizablePanelGroup,
|
|
@@ -2271,7 +3020,7 @@ export {
|
|
|
2271
3020
|
d2 as SelectLabel,
|
|
2272
3021
|
e as SelectScrollDownButton,
|
|
2273
3022
|
f as SelectScrollUpButton,
|
|
2274
|
-
|
|
3023
|
+
g as SelectSeparator,
|
|
2275
3024
|
SelectTrigger,
|
|
2276
3025
|
SelectValue,
|
|
2277
3026
|
Separator,
|
|
@@ -2305,7 +3054,7 @@ export {
|
|
|
2305
3054
|
TabsTrigger,
|
|
2306
3055
|
TemplatePage,
|
|
2307
3056
|
Textarea,
|
|
2308
|
-
|
|
3057
|
+
T3 as ThemeToggle,
|
|
2309
3058
|
bF as Timeline,
|
|
2310
3059
|
bG as TimelineContent,
|
|
2311
3060
|
bH as TimelineDescription,
|
|
@@ -2313,7 +3062,7 @@ export {
|
|
|
2313
3062
|
bJ as TimelineHeading,
|
|
2314
3063
|
bK as TimelineItem,
|
|
2315
3064
|
bL as TimelineTime,
|
|
2316
|
-
|
|
3065
|
+
T4 as Toaster,
|
|
2317
3066
|
bM as Toggle,
|
|
2318
3067
|
bN as ToggleGroup,
|
|
2319
3068
|
bO as ToggleGroupItem,
|
|
@@ -2322,17 +3071,18 @@ export {
|
|
|
2322
3071
|
b as TooltipProvider,
|
|
2323
3072
|
c as TooltipTrigger,
|
|
2324
3073
|
bP as TreeView,
|
|
3074
|
+
VerifyEmailPage,
|
|
2325
3075
|
V2 as VideoPlayer,
|
|
2326
3076
|
XerticaAssistant,
|
|
2327
|
-
|
|
2328
|
-
|
|
3077
|
+
XerticaLogo,
|
|
3078
|
+
X4 as XerticaOrbe,
|
|
2329
3079
|
X as XerticaProvider,
|
|
2330
|
-
|
|
3080
|
+
a11 as XerticaXLogo,
|
|
2331
3081
|
bQ as badgeVariants,
|
|
2332
3082
|
d as buttonVariants,
|
|
2333
3083
|
cn,
|
|
2334
|
-
|
|
2335
|
-
|
|
3084
|
+
gerarResposta as generateDemoResponse,
|
|
3085
|
+
gerarResposta,
|
|
2336
3086
|
bR as navigationMenuTriggerStyle,
|
|
2337
3087
|
r2 as reloadGoogleMaps,
|
|
2338
3088
|
bS as toggleVariants,
|