feat(integration): add docs/visio logos, theme.css, and nginx updates

Add SVG logos for docs and visio apps. Update drive, mail, people logos.
Add theme.css served at /api/v2/theme.css for La Suite frontend theming.
Update nginx to serve theme endpoint and tighten cache headers.
Update Dockerfile to include new static assets.
This commit is contained in:
2026-03-06 11:46:01 +00:00
parent 14a01dd5e7
commit 11d5c624e4
9 changed files with 80 additions and 9 deletions

View File

@@ -1,7 +1,7 @@
# ── Stage 1: build lagaufre.js from suitenumerique/integration source ──────────
# Build context must be the sunbeam/ root so we can reach both
# integration/packages/widgets/ and integration-service/.
FROM node:22-alpine AS widget-build
FROM --platform=$BUILDPLATFORM node:22-alpine AS widget-build
WORKDIR /src
COPY integration/packages/widgets/ .
RUN npm ci && npm run build
@@ -23,5 +23,8 @@ COPY --from=widget-build /src/dist/lagaufre.js /usr/share/nginx/html/widget/laga
# Derives its origin from the script URL at runtime; no DOMAIN_SUFFIX baked in.
COPY integration-service/gaufre.js /usr/share/nginx/html/gaufre.js
# Runtime brand CSS variable overrides for the estudio theme.
COPY integration-service/theme.css /usr/share/nginx/html/theme.css
# Nginx config — only services.json is mounted at runtime (from ConfigMap).
COPY integration-service/nginx.conf /etc/nginx/conf.d/default.conf

View File

@@ -38,6 +38,7 @@
label: 'O Estúdio',
closeLabel: 'Fechar',
newWindowLabelSuffix: ' · nova janela',
fontFamily: 'Ysabeau Variable, Inter, sans-serif',
}]);
widgetReady = true;
};

10
logos/docs.svg Normal file
View File

@@ -0,0 +1,10 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Document body -->
<path d="M10 6a2 2 0 00-2 2v32a2 2 0 002 2h28a2 2 0 002-2V16l-10-10H10z" fill="#f59e0b"/>
<!-- Folded corner -->
<path d="M30 6l10 10H32a2 2 0 01-2-2V6z" fill="#d97706"/>
<!-- Text lines -->
<rect x="14" y="22" width="20" height="2" rx="1" fill="#d97706"/>
<rect x="14" y="27" width="20" height="2" rx="1" fill="#d97706"/>
<rect x="14" y="32" width="14" height="2" rx="1" fill="#d97706"/>
</svg>

After

Width:  |  Height:  |  Size: 531 B

View File

@@ -1,6 +1,6 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Folder tab -->
<path d="M4 20v-4a3 3 0 013-3h9.17l3.41 3.41A2 2 0 0021 17h20a3 3 0 013 3v2H4z" fill="#e1000f"/>
<path d="M4 20v-4a3 3 0 013-3h9.17l3.41 3.41A2 2 0 0021 17h20a3 3 0 013 3v2H4z" fill="#d97706"/>
<!-- Folder body -->
<path d="M4 22h40v16a4 4 0 01-4 4H8a4 4 0 01-4-4V22z" fill="#000091"/>
<path d="M4 22h40v16a4 4 0 01-4 4H8a4 4 0 01-4-4V22z" fill="#f59e0b"/>
</svg>

Before

Width:  |  Height:  |  Size: 320 B

After

Width:  |  Height:  |  Size: 320 B

View File

@@ -1,6 +1,6 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Envelope body -->
<path d="M4 14h40v22a2 2 0 01-2 2H6a2 2 0 01-2-2V14z" fill="#000091"/>
<path d="M4 14h40v22a2 2 0 01-2 2H6a2 2 0 01-2-2V14z" fill="#f59e0b"/>
<!-- Envelope fold (chevron) -->
<path d="M4 14l20 15 20-15H4z" fill="#e1000f"/>
<path d="M4 14l20 15 20-15H4z" fill="#d97706"/>
</svg>

Before

Width:  |  Height:  |  Size: 286 B

After

Width:  |  Height:  |  Size: 286 B

View File

@@ -1,10 +1,10 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Person 2 head (behind) -->
<circle cx="30" cy="13" r="7" fill="#e1000f"/>
<circle cx="30" cy="13" r="7" fill="#d97706"/>
<!-- Person 2 body (behind) -->
<path d="M18 38c0-6.627 5.373-12 12-12s12 5.373 12 12H18z" fill="#e1000f"/>
<path d="M18 38c0-6.627 5.373-12 12-12s12 5.373 12 12H18z" fill="#d97706"/>
<!-- Person 1 head (front) -->
<circle cx="18" cy="13" r="7" fill="#000091"/>
<circle cx="18" cy="13" r="7" fill="#f59e0b"/>
<!-- Person 1 body (front) -->
<path d="M6 38c0-6.627 5.373-12 12-12s12 5.373 12 12H6z" fill="#000091"/>
<path d="M6 38c0-6.627 5.373-12 12-12s12 5.373 12 12H6z" fill="#f59e0b"/>
</svg>

Before

Width:  |  Height:  |  Size: 489 B

After

Width:  |  Height:  |  Size: 489 B

9
logos/visio.svg Normal file
View File

@@ -0,0 +1,9 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Camera body -->
<rect x="4" y="14" width="28" height="20" rx="3" fill="#f59e0b"/>
<!-- Camera lens -->
<circle cx="18" cy="24" r="6" fill="#d97706"/>
<circle cx="18" cy="24" r="3" fill="#f59e0b"/>
<!-- Play triangle (video) -->
<path d="M36 16l8 8-8 8V16z" fill="#d97706"/>
</svg>

After

Width:  |  Height:  |  Size: 396 B

View File

@@ -26,6 +26,14 @@ server {
add_header Cache-Control "public, max-age=86400";
}
# v2 theme — brand CSS variable overrides served from image
location = /api/v2/theme.css {
alias /usr/share/nginx/html/theme.css;
add_header Content-Type "text/css; charset=utf-8";
add_header Access-Control-Allow-Origin "*";
add_header Cache-Control "public, max-age=3600";
}
# v1 gaufre.js — thin wrapper served from image (no DOMAIN_SUFFIX needed)
location = /api/v1/gaufre.js {
alias /usr/share/nginx/html/gaufre.js;

40
theme.css Normal file
View File

@@ -0,0 +1,40 @@
/*
* O Estúdio — runtime brand overrides for docs + people.
* Loaded after the compiled Cunningham CSS via nginx sub_filter injection.
* Overrides :root CSS variables — no app rebuild required.
*/
:root {
/* Font */
--c--globals--font--families--base: 'Ysabeau Variable', Inter, sans-serif;
--c--globals--font--families--accent: 'Ysabeau Variable', Inter, sans-serif;
/* Brand — amber/gold palette (replaces default blue/purple) */
--c--globals--colors--brand-050: #fffbeb;
--c--globals--colors--brand-100: #fef3c7;
--c--globals--colors--brand-150: #fde9a0;
--c--globals--colors--brand-200: #fde68a;
--c--globals--colors--brand-250: #fde047;
--c--globals--colors--brand-300: #fcd34d;
--c--globals--colors--brand-350: #fbcf3f;
--c--globals--colors--brand-400: #fbbf24;
--c--globals--colors--brand-450: #f8b31a;
--c--globals--colors--brand-500: #f59e0b;
--c--globals--colors--brand-550: #e8920a;
--c--globals--colors--brand-600: #d97706;
--c--globals--colors--brand-650: #c26d05;
--c--globals--colors--brand-700: #b45309;
--c--globals--colors--brand-750: #9a4508;
--c--globals--colors--brand-800: #92400e;
--c--globals--colors--brand-850: #7c370c;
--c--globals--colors--brand-900: #78350f;
--c--globals--colors--brand-950: #451a03;
/* Logo gradient colours used by ui-kit header components */
--c--globals--colors--logo-1: #f59e0b;
--c--globals--colors--logo-2: #d97706;
--c--globals--colors--logo-1-light: #f59e0b;
--c--globals--colors--logo-2-light: #d97706;
--c--globals--colors--logo-1-dark: #fcd34d;
--c--globals--colors--logo-2-dark: #fbbf24;
}