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 (
-
+