diff --git a/web/src/app/dashboard/page.tsx b/web/src/app/dashboard/page.tsx index 14b9a99..4a0908a 100644 --- a/web/src/app/dashboard/page.tsx +++ b/web/src/app/dashboard/page.tsx @@ -17,7 +17,7 @@ export default function Dashboard() { } > -
+
diff --git a/web/src/app/globals.css b/web/src/app/globals.css index 2f2ba1d..fcd5555 100644 --- a/web/src/app/globals.css +++ b/web/src/app/globals.css @@ -137,4 +137,29 @@ .rich-text h3 { @apply text-base font-semibold my-2; } .rich-text code { @apply rounded bg-muted px-1 py-0.5 text-xs; } .rich-text pre { @apply my-3 overflow-x-auto rounded bg-muted p-3 text-xs; } + + .rich-text .ProseMirror.is-editor-empty::before, + .rich-text .ProseMirror p.is-editor-empty:first-child::before { + color: #94a3b8; + content: attr(data-placeholder); + pointer-events: none; + height: 0; + float: left; + font-weight: 400; + } + + @keyframes recent-ticket-enter { + 0% { + opacity: 0; + transform: translateY(-12px); + } + 100% { + opacity: 1; + transform: translateY(0); + } + } + + .recent-ticket-enter { + animation: recent-ticket-enter 0.45s ease-out; + } } diff --git a/web/src/components/tickets/category-select.tsx b/web/src/components/tickets/category-select.tsx index 522fdcf..679e860 100644 --- a/web/src/components/tickets/category-select.tsx +++ b/web/src/components/tickets/category-select.tsx @@ -25,6 +25,7 @@ interface CategorySelectProps { subcategoryLabel?: string className?: string secondaryEmptyLabel?: string + layout?: "grid" | "stacked" } function findCategory(categories: TicketCategory[], categoryId: string | null) { @@ -44,6 +45,7 @@ export function CategorySelectFields({ subcategoryLabel = "Secundária", secondaryEmptyLabel = "Selecione uma categoria primária", className, + layout = "grid", }: CategorySelectProps) { const { categories, isLoading } = useTicketCategories(tenantId) const activeCategory = useMemo(() => findCategory(categories, categoryId), [categories, categoryId]) @@ -74,8 +76,10 @@ export function CategorySelectFields({ } }, [categoryId, secondaryOptions, subcategoryId, onSubcategoryChange]) + const containerClass = layout === "stacked" ? "flex flex-col gap-3" : "grid gap-3 sm:grid-cols-2" + return ( -
+