2 Commits

Author SHA1 Message Date
Felipe Coutinho
9456aa98bc fix(ci): passar NEXT_PUBLIC_LOGO_DEV_TOKEN como build arg no Docker
NEXT_PUBLIC_* é inlined pelo Next.js em build time — a variável precisa
ser injetada via ARG no Dockerfile e build-args no workflow do CI.
Sem isso, o token fica undefined e os logos nunca são exibidos.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 01:06:23 +00:00
Felipe Coutinho
21c6a8d9d0 fix(lint): corrigir schema biome.json e formatação de imports
- biome.json: bump schema 2.4.10 → 2.4.11
- establishment-logo-picker.tsx, establishment-logo.tsx, navigation-menu.tsx, logo/index.ts: organizar imports e ajustar formatação conforme Biome 2.4.11

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 00:31:46 +00:00
7 changed files with 18 additions and 14 deletions

View File

@@ -85,6 +85,8 @@ jobs:
cache-from: type=gha
cache-to: type=gha,mode=max
platforms: linux/amd64,linux/arm64
build-args: |
NEXT_PUBLIC_LOGO_DEV_TOKEN=${{ secrets.NEXT_PUBLIC_LOGO_DEV_TOKEN }}
- name: Image digest
run: echo ${{ steps.meta.outputs.digest }}

View File

@@ -40,6 +40,10 @@ COPY --from=deps /app/public/pdf.worker.min.mjs ./public/pdf.worker.min.mjs
ENV NEXT_TELEMETRY_DISABLED=1 \
NODE_ENV=production
# Token público do Logo.dev — injetado em build time (NEXT_PUBLIC_* é inlined pelo Next.js)
ARG NEXT_PUBLIC_LOGO_DEV_TOKEN
ENV NEXT_PUBLIC_LOGO_DEV_TOKEN=$NEXT_PUBLIC_LOGO_DEV_TOKEN
# Build da aplicação Next.js
RUN pnpm build

View File

@@ -1,5 +1,5 @@
{
"$schema": "https://biomejs.dev/schemas/2.4.10/schema.json",
"$schema": "https://biomejs.dev/schemas/2.4.11/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",

View File

@@ -9,11 +9,7 @@ import {
PopoverTrigger,
} from "@/shared/components/ui/popover";
import { Spinner } from "@/shared/components/ui/spinner";
import {
buildLogoDevUrl,
logoQueryKeys,
toNameKey,
} from "@/shared/lib/logo";
import { buildLogoDevUrl, logoQueryKeys, toNameKey } from "@/shared/lib/logo";
import {
removeEstablishmentLogoAction,
saveEstablishmentLogoAction,
@@ -84,7 +80,9 @@ export function EstablishmentLogoPicker({
function handleSelect(domain: string) {
startTransition(async () => {
await saveEstablishmentLogoAction(name, domain);
queryClient.setQueryData(logoQueryKeys.mapping(toNameKey(name)), { domain });
queryClient.setQueryData(logoQueryKeys.mapping(toNameKey(name)), {
domain,
});
onSelect(domain);
});
}
@@ -128,7 +126,8 @@ export function EstablishmentLogoPicker({
onClick={handleReset}
className={cn(
"flex flex-col items-center gap-1 rounded-md p-1.5 text-center transition-colors hover:bg-accent disabled:opacity-50",
resolvedDomain === null && "ring-2 ring-primary ring-offset-1",
resolvedDomain === null &&
"ring-2 ring-primary ring-offset-1",
)}
title="Usar iniciais coloridas"
>
@@ -157,7 +156,8 @@ export function EstablishmentLogoPicker({
onClick={() => handleSelect(r.domain)}
className={cn(
"flex flex-col items-center gap-1 rounded-md p-1.5 text-center transition-colors hover:bg-accent disabled:opacity-50",
resolvedDomain === r.domain && "ring-2 ring-primary ring-offset-1",
resolvedDomain === r.domain &&
"ring-2 ring-primary ring-offset-1",
)}
title={r.name}
>

View File

@@ -4,8 +4,8 @@ import { RiPencilLine } from "@remixicon/react";
import { useQuery } from "@tanstack/react-query";
import { useEffect, useState } from "react";
import {
LOGO_DEV_TOKEN,
buildLogoDevUrl,
LOGO_DEV_TOKEN,
logoQueryKeys,
toNameKey,
} from "@/shared/lib/logo";

View File

@@ -1,6 +1,6 @@
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
import { RiArrowDropDownLine } from "@remixicon/react";
import { cva } from "class-variance-authority";
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
import type * as React from "react";
import { cn } from "@/shared/utils";

View File

@@ -48,9 +48,7 @@ export const toNameKey = (name: string): string => name.trim().toLowerCase();
export const LOGO_DEV_TOKEN = process.env.NEXT_PUBLIC_LOGO_DEV_TOKEN;
export function buildLogoDevUrl(
domain?: string | null,
): string | null {
export function buildLogoDevUrl(domain?: string | null): string | null {
if (!LOGO_DEV_TOKEN || !domain) return null;
return `https://img.logo.dev/${domain}?token=${LOGO_DEV_TOKEN}&size=64&format=png`;
}