chore: update biome schema version and refactor code style

- Updated biome schema version from 2.3.1 to 2.3.11 in biome.json.
- Refactored package.json for better readability and updated dependencies.
- Adjusted class names in InformationBubble, ChatAttachments, ChatBubble, FileUpload, Loading, and other components for consistent styling.
- Changed height classes from fixed pixel values to relative values for better responsiveness.
- Removed unnecessary comments and unused variables in user.controller.ts.
This commit is contained in:
Marco Pedone 2026-01-14 14:21:57 +01:00
parent f7831d6b57
commit 539f4dc4f8
14 changed files with 182 additions and 183 deletions

View file

@ -1,5 +1,5 @@
{ {
"$schema": "https://biomejs.dev/schemas/2.3.1/schema.json", "$schema": "https://biomejs.dev/schemas/2.3.11/schema.json",
"assist": { "assist": {
"actions": { "actions": {
"source": { "source": {
@ -9,7 +9,6 @@
}, },
"enabled": true "enabled": true
}, },
"files": { "files": {
"ignoreUnknown": true, "ignoreUnknown": true,
"includes": [ "includes": [
@ -84,7 +83,6 @@
"complexity": { "complexity": {
"noUselessFragments": "off" "noUselessFragments": "off"
}, },
"correctness": { "correctness": {
"noUndeclaredVariables": "on", "noUndeclaredVariables": "on",
"useExhaustiveDependencies": "off", "useExhaustiveDependencies": "off",
@ -124,7 +122,10 @@
} }
} }
}, },
"plugins": ["biome_plugins/missing.grit", "biome_plugins/null.grit"], "plugins": [
"biome_plugins/missing.grit",
"biome_plugins/null.grit"
],
"vcs": { "vcs": {
"clientKind": "git", "clientKind": "git",
"enabled": true, "enabled": true,

View file

@ -1,137 +1,137 @@
{ {
"name": "infoalloggi", "name": "infoalloggi",
"private": true, "private": true,
"scripts": { "scripts": {
"build": "next build", "build": "next build",
"d": "npm run-p dev stripe-dev -cl", "d": "npm run-p dev stripe-dev -cl",
"dev": "next dev --turbopack", "dev": "next dev --turbopack",
"dev-https": "cross-env NEXT_PUBLIC_BASE_URL='https://localhost:3000' INTERNAL_BASE_URL='https://localhost:3000' BASE_URL='https://localhost:3000' next dev --experimental-https --turbopack", "dev-https": "cross-env NEXT_PUBLIC_BASE_URL='https://localhost:3000' INTERNAL_BASE_URL='https://localhost:3000' BASE_URL='https://localhost:3000' next dev --experimental-https --turbopack",
"email": "cross-env NEXT_PUBLIC_BASE_URL='https://localhost:3000' email dev --port 3500", "email": "cross-env NEXT_PUBLIC_BASE_URL='https://localhost:3000' email dev --port 3500",
"idev": "cross-env NODE_OPTIONS='--inspect' next dev --turbopack", "idev": "cross-env NODE_OPTIONS='--inspect' next dev --turbopack",
"knip": "knip --no-exit-code --no-config-hints", "knip": "knip --no-exit-code --no-config-hints",
"lint": "biome lint", "lint": "biome lint",
"format": "biome format --write", "format": "biome format --write",
"pg-typegen": "npx kanel", "pg-typegen": "npx kanel",
"start": "next start", "start": "next start",
"stripe-dev": "stripe listen --forward-to https://localhost:3000/api/stripe-webhook", "stripe-dev": "stripe listen --forward-to https://localhost:3000/api/stripe-webhook",
"test": "npm run lint && npm run types", "test": "npm run lint && npm run types",
"types": "tsc --noEmit", "types": "tsc --noEmit",
"analyze": "cross-env ANALYZE=true next build" "analyze": "cross-env ANALYZE=true next build"
}, },
"version": "0.1.0", "version": "0.1.0",
"dependencies": { "dependencies": {
"@dnd-kit/core": "^6.3.1", "@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0", "@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2", "@dnd-kit/utilities": "^3.2.2",
"@fattureincloud/fattureincloud-ts-sdk": "^2.1.1", "@fattureincloud/fattureincloud-ts-sdk": "^2.1.1",
"@hookform/resolvers": "^5.2.2", "@hookform/resolvers": "^5.2.2",
"@next/bundle-analyzer": "^16.0.2", "@next/bundle-analyzer": "^16.0.2",
"@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-popover": "^1.1.14", "@radix-ui/react-popover": "^1.1.14",
"@radix-ui/react-scroll-area": "^1.2.10", "@radix-ui/react-scroll-area": "^1.2.10",
"@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-slot": "^1.2.3",
"@radix-ui/react-toggle-group": "^1.1.10", "@radix-ui/react-toggle-group": "^1.1.10",
"@radix-ui/react-tooltip": "^1.2.8", "@radix-ui/react-tooltip": "^1.2.8",
"@react-email/components": "^1.0.4", "@react-email/components": "^1.0.4",
"@react-email/render": "^2.0.2", "@react-email/render": "^2.0.2",
"@stripe/react-stripe-js": "^3.9.0", "@stripe/react-stripe-js": "^3.9.0",
"@stripe/stripe-js": "^7.8.0", "@stripe/stripe-js": "^7.8.0",
"@t3-oss/env-nextjs": "^0.13.8", "@t3-oss/env-nextjs": "^0.13.8",
"@tailwindcss/forms": "^0.5.10", "@tailwindcss/forms": "^0.5.10",
"@tailwindcss/postcss": "^4.1.11", "@tailwindcss/postcss": "^4.1.11",
"@tailwindcss/typography": "^0.5.16", "@tailwindcss/typography": "^0.5.16",
"@tanstack/react-query": "^5.74.4", "@tanstack/react-query": "^5.74.4",
"@tanstack/react-table": "^8.21.3", "@tanstack/react-table": "^8.21.3",
"@tanstack/react-virtual": "^3.13.12", "@tanstack/react-virtual": "^3.13.12",
"@tiptap/core": "^3.15.3", "@tiptap/core": "^3.15.3",
"@tiptap/extension-link": "^3.15.3", "@tiptap/extension-link": "^3.15.3",
"@tiptap/extension-underline": "^3.15.3", "@tiptap/extension-underline": "^3.15.3",
"@tiptap/pm": "^3.15.3", "@tiptap/pm": "^3.15.3",
"@tiptap/react": "^3.15.3", "@tiptap/react": "^3.15.3",
"@tiptap/starter-kit": "^3.15.3", "@tiptap/starter-kit": "^3.15.3",
"@trpc/client": "^11.1.0", "@trpc/client": "^11.1.0",
"@trpc/next": "^11.4.3", "@trpc/next": "^11.4.3",
"@trpc/react-query": "^11.1.0", "@trpc/react-query": "^11.1.0",
"@trpc/server": "^11.1.0", "@trpc/server": "^11.1.0",
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"cmdk": "^1.1.1", "cmdk": "^1.1.1",
"cookies-next": "^6.1.1", "cookies-next": "^6.1.1",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"embla-carousel-react": "^8.6.0", "embla-carousel-react": "^8.6.0",
"framer-motion": "^12.26.2", "framer-motion": "^12.26.2",
"frimousse": "^0.3.0", "frimousse": "^0.3.0",
"html2canvas-pro": "^1.5.13", "html2canvas-pro": "^1.5.13",
"ioredis": "^5.9.1", "ioredis": "^5.9.1",
"jose": "^6.0.12", "jose": "^6.0.12",
"jspdf": "^4.0.0", "jspdf": "^4.0.0",
"kysely": "^0.28.9", "kysely": "^0.28.9",
"kysely-plugin-serialize": "^0.8.2", "kysely-plugin-serialize": "^0.8.2",
"leaflet": "^1.9.4", "leaflet": "^1.9.4",
"leaflet-defaulticon-compatibility": "^0.1.2", "leaflet-defaulticon-compatibility": "^0.1.2",
"lucide-react": "^0.562.0", "lucide-react": "^0.562.0",
"next": "15.4.10", "next": "15.4.10",
"next-themes": "^0.4.6", "next-themes": "^0.4.6",
"nextjs-progressbar": "^0.0.16", "nextjs-progressbar": "^0.0.16",
"nodemailer": "^7.0.12", "nodemailer": "^7.0.12",
"nodemailer-html-to-text": "^3.2.0", "nodemailer-html-to-text": "^3.2.0",
"nuqs": "^2.8.6", "nuqs": "^2.8.6",
"pg": "^8.16.3", "pg": "^8.16.3",
"postcss": "^8.5.6", "postcss": "^8.5.6",
"radix-ui": "^1.4.3", "radix-ui": "^1.4.3",
"react": "^19.1.0", "react": "^19.1.0",
"react-colorful": "^5.6.1", "react-colorful": "^5.6.1",
"react-day-picker": "^9.11.1", "react-day-picker": "^9.11.1",
"react-dom": "^19.1.1", "react-dom": "^19.1.1",
"react-email": "^5.2.3", "react-email": "^5.2.3",
"react-hook-form": "^7.71.1", "react-hook-form": "^7.71.1",
"react-hot-toast": "^2.5.2", "react-hot-toast": "^2.5.2",
"react-is": "^19.2.0", "react-is": "^19.2.0",
"react-leaflet": "^5.0.0", "react-leaflet": "^5.0.0",
"react-number-format": "^5.4.4", "react-number-format": "^5.4.4",
"react-pdf": "^10.2.0", "react-pdf": "^10.2.0",
"react-phone-number-input": "^3.4.14", "react-phone-number-input": "^3.4.14",
"react-reverse-portal": "^2.3.0", "react-reverse-portal": "^2.3.0",
"react-select": "^5.10.2", "react-select": "^5.10.2",
"react-to-print": "^3.2.0", "react-to-print": "^3.2.0",
"react-use": "^17.6.0", "react-use": "^17.6.0",
"recharts": "^2.15.4", "recharts": "^2.15.4",
"sharp": "^0.34.5", "sharp": "^0.34.5",
"stripe": "^20.1.2", "stripe": "^20.1.2",
"superjson": "2.2.2", "superjson": "2.2.2",
"tailwind-merge": "3.3", "tailwind-merge": "3.3",
"tailwind-scrollbar": "^4.0.2", "tailwind-scrollbar": "^4.0.2",
"tailwindcss": "^4.1.11", "tailwindcss": "^4.1.11",
"tunnel-rat": "^0.1.2", "tunnel-rat": "^0.1.2",
"tw-animate-css": "^1.3.6", "tw-animate-css": "^1.3.6",
"type-fest": "^5.4.1", "type-fest": "^5.4.1",
"uuid": "^13.0.0", "uuid": "^13.0.0",
"vaul": "^1.1.2", "vaul": "^1.1.2",
"zod": "^4.1.12" "zod": "^4.1.12"
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "^2.3.1", "@biomejs/biome": "^2.3.1",
"@hookform/devtools": "^4.4.0", "@hookform/devtools": "^4.4.0",
"@react-email/preview-server": "^5.2.3", "@react-email/preview-server": "^5.2.3",
"@total-typescript/ts-reset": "^0.6.1", "@total-typescript/ts-reset": "^0.6.1",
"@types/leaflet": "^1.9.20", "@types/leaflet": "^1.9.20",
"@types/node": "^24.2.0", "@types/node": "^24.2.0",
"@types/nodemailer": "^7.0.5", "@types/nodemailer": "^7.0.5",
"@types/nodemailer-html-to-text": "^3.1.3", "@types/nodemailer-html-to-text": "^3.1.3",
"@types/pg": "^8.15.5", "@types/pg": "^8.15.5",
"@types/react": "^19.1.8", "@types/react": "^19.1.8",
"@types/react-dom": "^19.1.7", "@types/react-dom": "^19.1.7",
"@types/react-is": "^19.2.0", "@types/react-is": "^19.2.0",
"@types/uuid": "^10.0.0", "@types/uuid": "^10.0.0",
"cross-env": "^10.1.0", "cross-env": "^10.1.0",
"jiti": "^2.6.1", "jiti": "^2.6.1",
"kanel": "^3.14.2", "kanel": "^3.14.2",
"kanel-kysely": "^0.7.1", "kanel-kysely": "^0.7.1",
"knip": "^5.81.0", "knip": "^5.81.0",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"typescript": "^5.9.2" "typescript": "^5.9.2"
}, },
"ct3aMetadata": { "ct3aMetadata": {
"initVersion": "7.9.0" "initVersion": "7.9.0"
} }
} }

View file

@ -54,7 +54,7 @@ const InformationBubble = ({
<HybridTooltip> <HybridTooltip>
<HybridTooltipTrigger <HybridTooltipTrigger
className={cn( className={cn(
`-top-2 -right-2 absolute flex size-6 items-center justify-center rounded-full bg-white`, `absolute -top-2 -right-2 flex size-6 items-center justify-center rounded-full bg-white`,
className, className,
)} )}
> >

View file

@ -51,7 +51,7 @@ export const ChatAttachments = ({
variant="ghost" variant="ghost"
> >
{attachments && attachments.length > 0 && ( {attachments && attachments.length > 0 && (
<span className="-top-1 absolute right-0 rounded-full bg-blue-500 px-1 font-bold text-white text-xs"> <span className="absolute -top-1 right-0 rounded-full bg-blue-500 px-1 font-bold text-white text-xs">
{attachments.length} {attachments.length}
</span> </span>
)} )}
@ -71,7 +71,7 @@ export const ChatAttachments = ({
userId={chatUserData.id} userId={chatUserData.id}
/> />
<div className="h-auto max-h-[40rem] max-w-lg overflow-auto rounded-lg"> <div className="h-auto max-h-160 max-w-lg overflow-auto rounded-lg">
{attachmentsLoading ? ( {attachmentsLoading ? (
<LoadingPage /> <LoadingPage />
) : ( ) : (
@ -137,7 +137,7 @@ export const ChatAttachments = ({
> >
<Paperclip /> {t.allegati.i_tuoi_allegati} <Paperclip /> {t.allegati.i_tuoi_allegati}
{attachments && attachments.length > 0 && ( {attachments && attachments.length > 0 && (
<span className="-top-1 -right-1 absolute flex size-5 items-center justify-center rounded-full bg-red-600 text-white text-xs"> <span className="absolute -top-1 -right-1 flex size-5 items-center justify-center rounded-full bg-red-600 text-white text-xs">
{attachments.length} {attachments.length}
</span> </span>
)} )}

View file

@ -100,7 +100,7 @@ const ChatBubbleMessage = React.forwardRef<
<div <div
className={cn( className={cn(
chatBubbleMessageVariants({ className, layout, variant }), chatBubbleMessageVariants({ className, layout, variant }),
"max-w-full whitespace-pre-wrap break-words", "wrap-break-word max-w-full whitespace-pre-wrap",
)} )}
ref={ref} ref={ref}
{...props} {...props}
@ -173,7 +173,7 @@ const ChatBubbleActionWrapper = React.forwardRef<
{show && ( {show && (
<div <div
className={cn( className={cn(
"-translate-y-1/2 absolute top-1/2 flex opacity-0 transition-opacity duration-200 group-hover:opacity-100", "absolute top-1/2 flex -translate-y-1/2 opacity-0 transition-opacity duration-200 group-hover:opacity-100",
variant === "sent" variant === "sent"
? "-left-1 -translate-x-full flex-row-reverse" ? "-left-1 -translate-x-full flex-row-reverse"
: "-right-1 translate-x-full", : "-right-1 translate-x-full",

View file

@ -817,7 +817,7 @@ function FileUploadDropzone(props: FileUploadDropzoneProps) {
tabIndex={context.disabled ? undefined : 0} tabIndex={context.disabled ? undefined : 0}
{...dropzoneProps} {...dropzoneProps}
className={cn( className={cn(
"relative flex select-none flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed p-6 outline-none transition-colors hover:bg-accent/30 focus-visible:border-ring/50 data-[disabled]:pointer-events-none data-[dragging]:border-primary/30 data-[invalid]:border-destructive data-[dragging]:bg-accent/30 data-[invalid]:ring-destructive/20", "relative flex select-none flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed p-6 outline-none transition-colors hover:bg-accent/30 focus-visible:border-ring/50 data-disabled:pointer-events-none data-dragging:border-primary/30 data-invalid:border-destructive data-dragging:bg-accent/30 data-invalid:ring-destructive/20",
className, className,
)} )}
onClick={onClick} onClick={onClick}
@ -1231,12 +1231,12 @@ function FileUploadItemProgress(props: FileUploadItemProgressProps) {
role="progressbar" role="progressbar"
{...progressProps} {...progressProps}
className={cn( className={cn(
"-translate-x-1/2 -translate-y-1/2 absolute top-1/2 left-1/2", "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
className, className,
)} )}
> >
<svg <svg
className="rotate-[-90deg] transform" className="-rotate-90 transform"
fill="none" fill="none"
height={size} height={size}
stroke="currentColor" stroke="currentColor"

View file

@ -5,7 +5,7 @@ export const LoadingPage = () => {
return ( return (
<div className="flex h-full max-h-full w-full animate-pulse items-center justify-center py-20"> <div className="flex h-full max-h-full w-full animate-pulse items-center justify-center py-20">
<div className="relative flex size-40 animate-spin items-center justify-center rounded-full border-8 border-muted-foreground border-t-red-400 text-4xl text-red-400"></div> <div className="relative flex size-40 animate-spin items-center justify-center rounded-full border-8 border-muted-foreground border-t-red-400 text-4xl text-red-400"></div>
<ASvg className="-translate-y-2 absolute size-24" /> <ASvg className="absolute size-24 -translate-y-2" />
</div> </div>
); );
}; };

View file

@ -293,7 +293,7 @@ const AddAnnuncio = ({
</Button> </Button>
</DialogTrigger> </DialogTrigger>
<DialogContent <DialogContent
className="sm:max-w-[425px]" className="sm:max-w-106.25"
onInteractOutside={(e) => { onInteractOutside={(e) => {
if (selectedAnnunci.length !== 0) { if (selectedAnnunci.length !== 0) {
e.preventDefault(); // Prevent closing the dialog if there are selected announcements e.preventDefault(); // Prevent closing the dialog if there are selected announcements
@ -559,7 +559,6 @@ const EditServizioAdmin = () => {
</CollapsibleTrigger> </CollapsibleTrigger>
<CollapsibleContent> <CollapsibleContent>
{(() => { {(() => {
// biome-ignore lint/correctness/noUnusedVariables: <need to extract>
const { annunci, ...rest } = servizio; const { annunci, ...rest } = servizio;
return <pre>{JSON.stringify(rest, null, 2)}</pre>; return <pre>{JSON.stringify(rest, null, 2)}</pre>;
})()} })()}

View file

@ -183,8 +183,8 @@ function CarouselPrevious({
className={cn( className={cn(
"absolute size-8 rounded-full", "absolute size-8 rounded-full",
orientation === "horizontal" orientation === "horizontal"
? "-left-12 -translate-y-1/2 top-1/2" ? "top-1/2 -left-12 -translate-y-1/2"
: "-top-12 -translate-x-1/2 left-1/2 rotate-90", : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
className, className,
)} )}
data-slot="carousel-previous" data-slot="carousel-previous"
@ -213,8 +213,8 @@ function CarouselNext({
className={cn( className={cn(
"absolute size-8 rounded-full", "absolute size-8 rounded-full",
orientation === "horizontal" orientation === "horizontal"
? "-right-12 -translate-y-1/2 top-1/2" ? "top-1/2 -right-12 -translate-y-1/2"
: "-bottom-12 -translate-x-1/2 left-1/2 rotate-90", : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
className, className,
)} )}
data-slot="carousel-next" data-slot="carousel-next"

View file

@ -35,7 +35,7 @@ function SelectTrigger({
return ( return (
<SelectPrimitive.Trigger <SelectPrimitive.Trigger
className={cn( className={cn(
"flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs outline-hidden transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[size=default]:h-9 data-[size=sm]:h-8 data-[placeholder]:text-muted-foreground *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:hover:bg-input/50 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0", "flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs outline-hidden transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[size=default]:h-9 data-[size=sm]:h-8 data-placeholder:text-muted-foreground *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:hover:bg-input/50 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0",
className, className,
)} )}
data-size={size} data-size={size}
@ -60,9 +60,9 @@ function SelectContent({
<SelectPrimitive.Portal> <SelectPrimitive.Portal>
<SelectPrimitive.Content <SelectPrimitive.Content
className={cn( className={cn(
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in",
position === "popper" && position === "popper" &&
"data-[side=left]:-translate-x-1 data-[side=top]:-translate-y-1 data-[side=right]:translate-x-1 data-[side=bottom]:translate-y-1", "data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1",
className, className,
)} )}
data-slot="select-content" data-slot="select-content"
@ -74,7 +74,7 @@ function SelectContent({
className={cn( className={cn(
"p-1", "p-1",
position === "popper" && position === "popper" &&
"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1", "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width) scroll-my-1",
)} )}
> >
{children} {children}
@ -106,7 +106,7 @@ function SelectItem({
return ( return (
<SelectPrimitive.Item <SelectPrimitive.Item
className={cn( className={cn(
"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
className, className,
)} )}
data-slot="select-item" data-slot="select-item"
@ -128,7 +128,7 @@ function SelectSeparator({
}: React.ComponentProps<typeof SelectPrimitive.Separator>) { }: React.ComponentProps<typeof SelectPrimitive.Separator>) {
return ( return (
<SelectPrimitive.Separator <SelectPrimitive.Separator
className={cn("-mx-1 pointer-events-none my-1 h-px bg-border", className)} className={cn("pointer-events-none -mx-1 my-1 h-px bg-border", className)}
data-slot="select-separator" data-slot="select-separator"
{...props} {...props}
/> />

View file

@ -1051,7 +1051,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
<FormMessage /> <FormMessage />
</div> </div>
<p className="h-[42px]">{field.value?.join(", ")}</p> <p className="h-10.5">{field.value?.join(", ")}</p>
</FormItem> </FormItem>
)} )}
/> />
@ -1105,7 +1105,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
<FormMessage /> <FormMessage />
{field.value !== null && ( {field.value !== null && (
<Button <Button
className="-top-2 absolute right-0 flex items-center gap-1" className="absolute -top-2 right-0 flex items-center gap-1"
onClick={() => { onClick={() => {
form.setValue("disponibile_da", null); form.setValue("disponibile_da", null);
}} }}
@ -1123,7 +1123,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
<FormControl> <FormControl>
<Button <Button
className={cn( className={cn(
"h-[42px] w-full pl-3 text-left font-medium", "h-10.5 w-full pl-3 text-left font-medium",
!field.value && "text-muted-foreground", !field.value && "text-muted-foreground",
"rounded-lg border border-neutral-300 shadow-xs outline-hidden file:border-0 file:bg-transparent file:font-medium file:text-sm disabled:cursor-not-allowed disabled:opacity-50 dark:focus:border-transparent", "rounded-lg border border-neutral-300 shadow-xs outline-hidden file:border-0 file:bg-transparent file:font-medium file:text-sm disabled:cursor-not-allowed disabled:opacity-50 dark:focus:border-transparent",
)} )}
@ -1395,7 +1395,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
</FormLabel> </FormLabel>
{field.value !== null && field.value !== 0 && ( {field.value !== null && field.value !== 0 && (
<Button <Button
className="-top-2 absolute right-0 flex items-center gap-1" className="absolute -top-2 right-0 flex items-center gap-1"
onClick={() => { onClick={() => {
form.setValue("piano_palazzo", null); form.setValue("piano_palazzo", null);
}} }}
@ -1441,7 +1441,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
</FormLabel> </FormLabel>
{field.value !== null && field.value !== 0 && ( {field.value !== null && field.value !== 0 && (
<Button <Button
className="-top-2 absolute right-0 flex items-center gap-1" className="absolute -top-2 right-0 flex items-center gap-1"
onClick={() => { onClick={() => {
form.setValue("unita_condominio", null); form.setValue("unita_condominio", null);
}} }}
@ -1487,7 +1487,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
</FormLabel> </FormLabel>
{field.value !== null && field.value !== 0 && ( {field.value !== null && field.value !== 0 && (
<Button <Button
className="-top-2 absolute right-0 flex items-center gap-1" className="absolute -top-2 right-0 flex items-center gap-1"
onClick={() => { onClick={() => {
form.setValue("numero_vani", null); form.setValue("numero_vani", null);
}} }}
@ -1533,7 +1533,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
</FormLabel> </FormLabel>
{field.value !== null && field.value !== 0 && ( {field.value !== null && field.value !== 0 && (
<Button <Button
className="-top-2 absolute right-0 flex items-center gap-1" className="absolute -top-2 right-0 flex items-center gap-1"
onClick={() => { onClick={() => {
form.setValue("numero_camere", null); form.setValue("numero_camere", null);
}} }}
@ -1578,7 +1578,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
</FormLabel> </FormLabel>
{field.value !== null && field.value !== 0 && ( {field.value !== null && field.value !== 0 && (
<Button <Button
className="-top-2 absolute right-0 flex items-center gap-1" className="absolute -top-2 right-0 flex items-center gap-1"
onClick={() => { onClick={() => {
form.setValue("numero_bagni", null); form.setValue("numero_bagni", null);
}} }}
@ -1623,7 +1623,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
</FormLabel> </FormLabel>
{field.value !== null && field.value !== 0 && ( {field.value !== null && field.value !== 0 && (
<Button <Button
className="-top-2 absolute right-0 flex items-center gap-1" className="absolute -top-2 right-0 flex items-center gap-1"
onClick={() => { onClick={() => {
form.setValue("numero_balconi", null); form.setValue("numero_balconi", null);
}} }}
@ -1668,7 +1668,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
</FormLabel> </FormLabel>
{field.value !== null && field.value !== 0 && ( {field.value !== null && field.value !== 0 && (
<Button <Button
className="-top-2 absolute right-0 flex items-center gap-1" className="absolute -top-2 right-0 flex items-center gap-1"
onClick={() => { onClick={() => {
form.setValue("numero_terrazzi", null); form.setValue("numero_terrazzi", null);
}} }}
@ -1713,7 +1713,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
</FormLabel> </FormLabel>
{field.value !== null && field.value !== 0 && ( {field.value !== null && field.value !== 0 && (
<Button <Button
className="-top-2 absolute right-0 flex items-center gap-1" className="absolute -top-2 right-0 flex items-center gap-1"
onClick={() => { onClick={() => {
form.setValue("numero_box", null); form.setValue("numero_box", null);
}} }}
@ -1758,7 +1758,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
</FormLabel> </FormLabel>
{field.value !== null && field.value !== 0 && ( {field.value !== null && field.value !== 0 && (
<Button <Button
className="-top-2 absolute right-0 flex items-center gap-1" className="absolute -top-2 right-0 flex items-center gap-1"
onClick={() => { onClick={() => {
form.setValue("numero_postiauto", null); form.setValue("numero_postiauto", null);
}} }}
@ -1806,7 +1806,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
</div> </div>
<FormControl> <FormControl>
<p className="h-[42px]">{field.value?.join(", ")}</p> <p className="h-10.5">{field.value?.join(", ")}</p>
</FormControl> </FormControl>
</FormItem> </FormItem>
)} )}
@ -1825,7 +1825,7 @@ export const AnnuncioEditForm = ({ data }: { data: AnnunciWithMedia }) => {
</div> </div>
<FormControl> <FormControl>
<p className="h-[42px]"> <p className="h-10.5">
{field.value {field.value
? filteredCaratteristiche(field.value) ? filteredCaratteristiche(field.value)
.map((v) => v.text) .map((v) => v.text)

View file

@ -810,7 +810,7 @@ export const FormNewServizioAcquisto = ({
<FormControl> <FormControl>
<Button <Button
className={cn( className={cn(
"h-[42px] w-full pl-3 text-left font-medium", "h-10.5 w-full pl-3 text-left font-medium",
!field.value && "text-muted-foreground", !field.value && "text-muted-foreground",
"rounded-lg border border-neutral-300 shadow-xs outline-hidden file:border-0 file:bg-transparent file:font-medium file:text-sm disabled:cursor-not-allowed disabled:opacity-50 dark:focus:border-transparent", "rounded-lg border border-neutral-300 shadow-xs outline-hidden file:border-0 file:bg-transparent file:font-medium file:text-sm disabled:cursor-not-allowed disabled:opacity-50 dark:focus:border-transparent",
)} )}
@ -1006,7 +1006,7 @@ export const FormNewServizioAcquisto = ({
<FormControl> <FormControl>
<Button <Button
className={cn( className={cn(
"h-[42px] w-full pl-3 text-left font-medium", "h-10.5 w-full pl-3 text-left font-medium",
!field.value && "text-muted-foreground", !field.value && "text-muted-foreground",
"rounded-lg border border-neutral-300 shadow-xs outline-hidden file:border-0 file:bg-transparent file:font-medium file:text-sm disabled:cursor-not-allowed disabled:opacity-50 dark:focus:border-transparent", "rounded-lg border border-neutral-300 shadow-xs outline-hidden file:border-0 file:bg-transparent file:font-medium file:text-sm disabled:cursor-not-allowed disabled:opacity-50 dark:focus:border-transparent",
)} )}
@ -1185,7 +1185,7 @@ export const FormNewServizioAcquisto = ({
<Tooltip delayDuration={0}> <Tooltip delayDuration={0}>
<TooltipTrigger className="relative flex items-center gap-x-2"> <TooltipTrigger className="relative flex items-center gap-x-2">
{t.anagrafica.sesso}{" "} {t.anagrafica.sesso}{" "}
<HelpCircleIcon className="-right-6 absolute size-5" /> <HelpCircleIcon className="absolute -right-6 size-5" />
</TooltipTrigger> </TooltipTrigger>
<TooltipContent> <TooltipContent>
{t.anagrafica.sesso_disclamer} {t.anagrafica.sesso_disclamer}

View file

@ -55,7 +55,7 @@ const FAQSection = () => {
<h2 className="font-bold text-3xl tracking-tighter md:text-4xl"> <h2 className="font-bold text-3xl tracking-tighter md:text-4xl">
{t.faq.titolo} {t.faq.titolo}
</h2> </h2>
<p className="mx-auto max-w-[600px] text-muted-foreground md:text-xl/relaxed lg:text-base/relaxed xl:text-xl/relaxed"> <p className="mx-auto max-w-150 text-muted-foreground md:text-xl/relaxed lg:text-base/relaxed xl:text-xl/relaxed">
{t.faq.descrizione} {t.faq.descrizione}
</p> </p>
</div> </div>
@ -83,7 +83,7 @@ const FAQSection = () => {
//defaultValue="0" //defaultValue="0"
type="single" type="single"
> >
<div className="-top-16 absolute" id={`faq-${item.id}`} /> <div className="absolute -top-16" id={`faq-${item.id}`} />
<h3 className="font-semibold text-2xl">{item.label}</h3> <h3 className="font-semibold text-2xl">{item.label}</h3>
<div className="flex flex-col gap-1"> <div className="flex flex-col gap-1">
{item.qas.map((f, i) => ( {item.qas.map((f, i) => (

View file

@ -38,7 +38,6 @@ export const editAnagraficaHandler = async ({
data: UsersAnagraficaUpdate; data: UsersAnagraficaUpdate;
}) => { }) => {
try { try {
// biome-ignore lint/correctness/noUnusedVariables: <ignore>
const { idanagrafica, userid, ...rest } = data; const { idanagrafica, userid, ...rest } = data;
if (!userId) { if (!userId) {
throw new TRPCError({ throw new TRPCError({