@olonjs/cli 3.0.84 → 3.0.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -596,7 +596,7 @@ cat << 'END_OF_FILE_CONTENT' > "package.json"
|
|
|
596
596
|
"@tiptap/extension-link": "^2.11.5",
|
|
597
597
|
"@tiptap/react": "^2.11.5",
|
|
598
598
|
"@tiptap/starter-kit": "^2.11.5",
|
|
599
|
-
"@olonjs/core": "^1.0.
|
|
599
|
+
"@olonjs/core": "^1.0.73",
|
|
600
600
|
"clsx": "^2.1.1",
|
|
601
601
|
"lucide-react": "^0.474.0",
|
|
602
602
|
"react": "^19.0.0",
|
|
@@ -3593,6 +3593,9 @@ export const Hero: React.FC<{ data: HeroData; settings?: HeroSettings }> = ({ da
|
|
|
3593
3593
|
'--local-cyan': 'var(--color-secondary, #22d3ee)',
|
|
3594
3594
|
'--local-border': 'var(--border)',
|
|
3595
3595
|
'--local-surface': 'var(--card)',
|
|
3596
|
+
'--local-radius-sm': 'var(--theme-radius-sm)',
|
|
3597
|
+
'--local-radius-md': 'var(--theme-radius-md)',
|
|
3598
|
+
'--local-radius-lg': 'var(--theme-radius-lg)',
|
|
3596
3599
|
} as React.CSSProperties}
|
|
3597
3600
|
className="jp-hero relative min-h-screen flex items-center overflow-hidden pt-24 pb-0 bg-[var(--local-bg)]"
|
|
3598
3601
|
>
|
|
@@ -3651,7 +3654,7 @@ export const Hero: React.FC<{ data: HeroData; settings?: HeroSettings }> = ({ da
|
|
|
3651
3654
|
data-jp-item-id={cta.id ?? `legacy-${idx}`}
|
|
3652
3655
|
data-jp-item-field="ctas"
|
|
3653
3656
|
className={cn(
|
|
3654
|
-
'inline-flex items-center gap-2 px-7 py-3 rounded-[
|
|
3657
|
+
'inline-flex items-center gap-2 px-7 py-3 rounded-[var(--local-radius-md)] font-semibold text-[0.95rem] transition-all duration-200 no-underline',
|
|
3655
3658
|
cta.variant === 'primary'
|
|
3656
3659
|
? 'bg-[var(--local-primary)] text-white hover:brightness-110 hover:-translate-y-0.5 shadow-[0_0_24px_rgba(59,130,246,0.25)]'
|
|
3657
3660
|
: 'bg-transparent text-[var(--local-text)] border border-[rgba(255,255,255,0.12)] hover:border-[rgba(255,255,255,0.3)] hover:bg-[rgba(255,255,255,0.04)]'
|
|
@@ -3684,13 +3687,13 @@ export const Hero: React.FC<{ data: HeroData; settings?: HeroSettings }> = ({ da
|
|
|
3684
3687
|
</div>
|
|
3685
3688
|
|
|
3686
3689
|
{/* RIGHT — ICE mini-mockup */}
|
|
3687
|
-
<div className="jp-animate-in jp-d2 rounded-[
|
|
3690
|
+
<div className="jp-animate-in jp-d2 rounded-[var(--local-radius-lg)] overflow-hidden border border-[rgba(255,255,255,0.10)] shadow-[0_0_0_1px_rgba(255,255,255,0.04),0_40px_80px_rgba(0,0,0,0.6),0_0_60px_rgba(59,130,246,0.08)]">
|
|
3688
3691
|
{/* Browser bar */}
|
|
3689
3692
|
<div className="bg-[#0f1923] px-3 py-2.5 flex items-center gap-1.5 border-b border-[rgba(255,255,255,0.05)]">
|
|
3690
3693
|
<span className="w-2.5 h-2.5 rounded-full bg-[#ef4444]" />
|
|
3691
3694
|
<span className="w-2.5 h-2.5 rounded-full bg-[#f59e0b]" />
|
|
3692
3695
|
<span className="w-2.5 h-2.5 rounded-full bg-[#22c55e]" />
|
|
3693
|
-
<span className="mx-auto font-mono text-[0.60rem] text-[rgba(255,255,255,0.20)] bg-[rgba(255,255,255,0.04)] px-3 py-0.5 rounded">localhost:5173 · Studio</span>
|
|
3696
|
+
<span className="mx-auto font-mono text-[0.60rem] text-[rgba(255,255,255,0.20)] bg-[rgba(255,255,255,0.04)] px-3 py-0.5 rounded-[var(--local-radius-sm)]">localhost:5173 · Studio</span>
|
|
3694
3697
|
</div>
|
|
3695
3698
|
{/* Split: canvas + inspector */}
|
|
3696
3699
|
<div className="grid grid-cols-[1fr_260px] h-[360px] bg-[#060d1b]">
|
|
@@ -3714,8 +3717,8 @@ export const Hero: React.FC<{ data: HeroData; settings?: HeroSettings }> = ({ da
|
|
|
3714
3717
|
{data.description?.slice(0, 100)}…
|
|
3715
3718
|
</p>
|
|
3716
3719
|
<div className="flex gap-1.5">
|
|
3717
|
-
<span className="text-[0.58rem] font-semibold bg-[#3b82f6] text-white px-2.5 py-1 rounded">Read the Docs</span>
|
|
3718
|
-
<span className="text-[0.58rem] border border-[rgba(255,255,255,0.15)] text-[#94a3b8] px-2.5 py-1 rounded">View on NPM</span>
|
|
3720
|
+
<span className="text-[0.58rem] font-semibold bg-[#3b82f6] text-white px-2.5 py-1 rounded-[var(--local-radius-sm)]">Read the Docs</span>
|
|
3721
|
+
<span className="text-[0.58rem] border border-[rgba(255,255,255,0.15)] text-[#94a3b8] px-2.5 py-1 rounded-[var(--local-radius-sm)]">View on NPM</span>
|
|
3719
3722
|
</div>
|
|
3720
3723
|
<div className="flex gap-4 mt-3 pt-3 border-t border-[rgba(255,255,255,0.05)]">
|
|
3721
3724
|
{(data.metrics ?? []).map((m, i) => (
|
|
@@ -3762,15 +3765,15 @@ export const Hero: React.FC<{ data: HeroData; settings?: HeroSettings }> = ({ da
|
|
|
3762
3765
|
<div className="flex-1 px-3.5 py-3 flex flex-col gap-2.5 overflow-hidden">
|
|
3763
3766
|
<div>
|
|
3764
3767
|
<div className="font-mono text-[0.50rem] uppercase tracking-widest text-[#334155] mb-1">Title</div>
|
|
3765
|
-
<div className="bg-[rgba(59,130,246,0.05)] border border-[rgba(59,130,246,0.45)] rounded px-2 py-1.5 font-mono text-[0.58rem] text-[#e2e8f0] truncate">{data.title}</div>
|
|
3768
|
+
<div className="bg-[rgba(59,130,246,0.05)] border border-[rgba(59,130,246,0.45)] rounded-[var(--local-radius-sm)] px-2 py-1.5 font-mono text-[0.58rem] text-[#e2e8f0] truncate">{data.title}</div>
|
|
3766
3769
|
</div>
|
|
3767
3770
|
<div>
|
|
3768
3771
|
<div className="font-mono text-[0.50rem] uppercase tracking-widest text-[#334155] mb-1">Subtitle</div>
|
|
3769
|
-
<div className="bg-[rgba(255,255,255,0.03)] border border-[rgba(255,255,255,0.07)] rounded px-2 py-1.5 font-mono text-[0.58rem] text-[#94a3b8] truncate">{data.titleHighlight}</div>
|
|
3772
|
+
<div className="bg-[rgba(255,255,255,0.03)] border border-[rgba(255,255,255,0.07)] rounded-[var(--local-radius-sm)] px-2 py-1.5 font-mono text-[0.58rem] text-[#94a3b8] truncate">{data.titleHighlight}</div>
|
|
3770
3773
|
</div>
|
|
3771
3774
|
<div>
|
|
3772
3775
|
<div className="font-mono text-[0.50rem] uppercase tracking-widest text-[#334155] mb-1">Badge</div>
|
|
3773
|
-
<div className="bg-[rgba(255,255,255,0.03)] border border-[rgba(255,255,255,0.07)] rounded px-2 py-1.5 font-mono text-[0.58rem] text-[#94a3b8] truncate">{data.badge}</div>
|
|
3776
|
+
<div className="bg-[rgba(255,255,255,0.03)] border border-[rgba(255,255,255,0.07)] rounded-[var(--local-radius-sm)] px-2 py-1.5 font-mono text-[0.58rem] text-[#94a3b8] truncate">{data.badge}</div>
|
|
3774
3777
|
</div>
|
|
3775
3778
|
</div>
|
|
3776
3779
|
{/* Bottom bar */}
|
|
@@ -3778,8 +3781,8 @@ export const Hero: React.FC<{ data: HeroData; settings?: HeroSettings }> = ({ da
|
|
|
3778
3781
|
<span className="w-1.5 h-1.5 rounded-full bg-[#22c55e]" />
|
|
3779
3782
|
<span className="font-mono text-[0.50rem] text-[#475569]">All Changes Saved</span>
|
|
3780
3783
|
<div className="ml-auto flex gap-1.5">
|
|
3781
|
-
<span className="font-mono text-[0.48rem] px-1.5 py-0.5 rounded border border-[rgba(59,130,246,0.3)] bg-[rgba(59,130,246,0.12)] text-[#60a5fa]">⬡ HTML</span>
|
|
3782
|
-
<span className="font-mono text-[0.48rem] px-1.5 py-0.5 rounded border border-[rgba(255,255,255,0.08)] bg-[rgba(255,255,255,0.03)] text-[#94a3b8] opacity-50">{ } JSON</span>
|
|
3784
|
+
<span className="font-mono text-[0.48rem] px-1.5 py-0.5 rounded-[var(--local-radius-sm)] border border-[rgba(59,130,246,0.3)] bg-[rgba(59,130,246,0.12)] text-[#60a5fa]">⬡ HTML</span>
|
|
3785
|
+
<span className="font-mono text-[0.48rem] px-1.5 py-0.5 rounded-[var(--local-radius-sm)] border border-[rgba(255,255,255,0.08)] bg-[rgba(255,255,255,0.03)] text-[#94a3b8] opacity-50">{ } JSON</span>
|
|
3783
3786
|
</div>
|
|
3784
3787
|
</div>
|
|
3785
3788
|
</div>
|
|
@@ -7308,13 +7311,14 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/theme.json"
|
|
|
7308
7311
|
"fontFamily": {
|
|
7309
7312
|
"primary": "'Instrument Sans', system-ui, sans-serif",
|
|
7310
7313
|
"mono": "'JetBrains Mono', monospace",
|
|
7311
|
-
"display": "'Bricolage Grotesque', system-ui, sans-serif"
|
|
7314
|
+
"display": "'Bricolage Grotesque', system-ui, sans-serif",
|
|
7315
|
+
"display-2":"'Instrument Sans'"
|
|
7312
7316
|
}
|
|
7313
7317
|
},
|
|
7314
7318
|
"borderRadius": {
|
|
7315
|
-
"sm": "
|
|
7316
|
-
"md": "
|
|
7317
|
-
"lg": "
|
|
7319
|
+
"sm": "4px",
|
|
7320
|
+
"md": "8px",
|
|
7321
|
+
"lg": "36px"
|
|
7318
7322
|
}
|
|
7319
7323
|
}
|
|
7320
7324
|
}
|
|
@@ -7932,72 +7936,6 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/pages/post.json"
|
|
|
7932
7936
|
]
|
|
7933
7937
|
}
|
|
7934
7938
|
END_OF_FILE_CONTENT
|
|
7935
|
-
mkdir -p "src/data/pages/servizi"
|
|
7936
|
-
echo "Creating src/data/pages/servizi/trattamento.json..."
|
|
7937
|
-
cat << 'END_OF_FILE_CONTENT' > "src/data/pages/servizi/trattamento.json"
|
|
7938
|
-
{
|
|
7939
|
-
"id": "servizi-trattamento-page",
|
|
7940
|
-
"slug": "servizi/trattamento",
|
|
7941
|
-
"meta": {
|
|
7942
|
-
"title": "Servizi - Trattamento",
|
|
7943
|
-
"description": "Pagina nested di smoke test per verificare routing visitor/admin/preview."
|
|
7944
|
-
},
|
|
7945
|
-
"sections": [
|
|
7946
|
-
{
|
|
7947
|
-
"id": "hero-servizi-trattamento",
|
|
7948
|
-
"type": "hero",
|
|
7949
|
-
"data": {
|
|
7950
|
-
"badge": "Smoke Test",
|
|
7951
|
-
"title": "Trattamento",
|
|
7952
|
-
"titleHighlight": "Pagina Nested",
|
|
7953
|
-
"description": "Questa pagina verifica il supporto ai nested slug su filesystem e router.",
|
|
7954
|
-
"ctas": [
|
|
7955
|
-
{
|
|
7956
|
-
"id": "cta-home",
|
|
7957
|
-
"label": "Torna Home",
|
|
7958
|
-
"href": "/",
|
|
7959
|
-
"variant": "primary"
|
|
7960
|
-
}
|
|
7961
|
-
]
|
|
7962
|
-
},
|
|
7963
|
-
"settings": {}
|
|
7964
|
-
}
|
|
7965
|
-
]
|
|
7966
|
-
}
|
|
7967
|
-
|
|
7968
|
-
END_OF_FILE_CONTENT
|
|
7969
|
-
echo "Creating src/data/pages/servizi_trattamento.json..."
|
|
7970
|
-
cat << 'END_OF_FILE_CONTENT' > "src/data/pages/servizi_trattamento.json"
|
|
7971
|
-
{
|
|
7972
|
-
"id": "servizi-trattamento-page",
|
|
7973
|
-
"slug": "servizi/trattamento",
|
|
7974
|
-
"meta": {
|
|
7975
|
-
"title": "Servizi - Trattamento",
|
|
7976
|
-
"description": "Pagina nested di smoke test per verificare routing visitor/admin/preview."
|
|
7977
|
-
},
|
|
7978
|
-
"sections": [
|
|
7979
|
-
{
|
|
7980
|
-
"id": "hero-servizi-trattamento",
|
|
7981
|
-
"type": "hero",
|
|
7982
|
-
"data": {
|
|
7983
|
-
"badge": "Smoke Test",
|
|
7984
|
-
"title": "Trattamentos",
|
|
7985
|
-
"titleHighlight": "Pagina Nested",
|
|
7986
|
-
"description": "Questa pagina verifica il supporto ai nested slug su filesystem e router.",
|
|
7987
|
-
"ctas": [
|
|
7988
|
-
{
|
|
7989
|
-
"id": "cta-home",
|
|
7990
|
-
"label": "Torna Home",
|
|
7991
|
-
"href": "/",
|
|
7992
|
-
"variant": "primary"
|
|
7993
|
-
}
|
|
7994
|
-
]
|
|
7995
|
-
},
|
|
7996
|
-
"settings": {}
|
|
7997
|
-
}
|
|
7998
|
-
]
|
|
7999
|
-
}
|
|
8000
|
-
END_OF_FILE_CONTENT
|
|
8001
7939
|
mkdir -p "src/emails"
|
|
8002
7940
|
echo "Creating src/emails/LeadNotificationEmail.tsx..."
|
|
8003
7941
|
cat << 'END_OF_FILE_CONTENT' > "src/emails/LeadNotificationEmail.tsx"
|
|
@@ -8311,7 +8249,7 @@ export default LeadSenderConfirmationEmail;
|
|
|
8311
8249
|
END_OF_FILE_CONTENT
|
|
8312
8250
|
echo "Creating src/fonts.css..."
|
|
8313
8251
|
cat << 'END_OF_FILE_CONTENT' > "src/fonts.css"
|
|
8314
|
-
@import url('https://fonts.googleapis.com/css2?family=
|
|
8252
|
+
@import url('https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Playfair+Display:wght@700;800;900&display=swap');
|
|
8315
8253
|
|
|
8316
8254
|
END_OF_FILE_CONTENT
|
|
8317
8255
|
mkdir -p "src/hooks"
|
|
@@ -8376,14 +8314,13 @@ cat << 'END_OF_FILE_CONTENT' > "src/index.css"
|
|
|
8376
8314
|
--font-primary: var(--theme-font-primary);
|
|
8377
8315
|
--font-mono: var(--theme-font-mono);
|
|
8378
8316
|
|
|
8379
|
-
/*
|
|
8380
|
-
|
|
8381
|
-
|
|
8382
|
-
|
|
8383
|
-
|
|
8384
|
-
automatically and the fallback becomes dead code.
|
|
8317
|
+
/*
|
|
8318
|
+
DISPLAY FONT bridge
|
|
8319
|
+
The core now emits --theme-font-display from theme.json, so this keeps
|
|
8320
|
+
the tenant on the stable semantic alias rather than depending on the
|
|
8321
|
+
flattened internal variable path.
|
|
8385
8322
|
*/
|
|
8386
|
-
--font-display: var(--theme-font-display
|
|
8323
|
+
--font-display: var(--theme-font-display);
|
|
8387
8324
|
}
|
|
8388
8325
|
|
|
8389
8326
|
/*
|
|
@@ -8401,7 +8338,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/index.css"
|
|
|
8401
8338
|
--muted: var(--theme-surface-alt);
|
|
8402
8339
|
--muted-foreground: var(--theme-text-muted);
|
|
8403
8340
|
--border: var(--theme-border);
|
|
8404
|
-
--radius:
|
|
8341
|
+
--radius: 3.45rem;
|
|
8405
8342
|
|
|
8406
8343
|
/*
|
|
8407
8344
|
🔧 ACCENT CHAIN — Forward-compatible workaround
|
|
@@ -596,7 +596,7 @@ cat << 'END_OF_FILE_CONTENT' > "package.json"
|
|
|
596
596
|
"@tiptap/extension-link": "^2.11.5",
|
|
597
597
|
"@tiptap/react": "^2.11.5",
|
|
598
598
|
"@tiptap/starter-kit": "^2.11.5",
|
|
599
|
-
"@olonjs/core": "^1.0.
|
|
599
|
+
"@olonjs/core": "^1.0.73",
|
|
600
600
|
"clsx": "^2.1.1",
|
|
601
601
|
"lucide-react": "^0.474.0",
|
|
602
602
|
"react": "^19.0.0",
|
|
@@ -596,7 +596,7 @@ cat << 'END_OF_FILE_CONTENT' > "package.json"
|
|
|
596
596
|
"@tiptap/extension-link": "^2.11.5",
|
|
597
597
|
"@tiptap/react": "^2.11.5",
|
|
598
598
|
"@tiptap/starter-kit": "^2.11.5",
|
|
599
|
-
"@olonjs/core": "^1.0.
|
|
599
|
+
"@olonjs/core": "^1.0.73",
|
|
600
600
|
"clsx": "^2.1.1",
|
|
601
601
|
"lucide-react": "^0.474.0",
|
|
602
602
|
"react": "^19.0.0",
|
|
@@ -3593,6 +3593,9 @@ export const Hero: React.FC<{ data: HeroData; settings?: HeroSettings }> = ({ da
|
|
|
3593
3593
|
'--local-cyan': 'var(--color-secondary, #22d3ee)',
|
|
3594
3594
|
'--local-border': 'var(--border)',
|
|
3595
3595
|
'--local-surface': 'var(--card)',
|
|
3596
|
+
'--local-radius-sm': 'var(--theme-radius-sm)',
|
|
3597
|
+
'--local-radius-md': 'var(--theme-radius-md)',
|
|
3598
|
+
'--local-radius-lg': 'var(--theme-radius-lg)',
|
|
3596
3599
|
} as React.CSSProperties}
|
|
3597
3600
|
className="jp-hero relative min-h-screen flex items-center overflow-hidden pt-24 pb-0 bg-[var(--local-bg)]"
|
|
3598
3601
|
>
|
|
@@ -3651,7 +3654,7 @@ export const Hero: React.FC<{ data: HeroData; settings?: HeroSettings }> = ({ da
|
|
|
3651
3654
|
data-jp-item-id={cta.id ?? `legacy-${idx}`}
|
|
3652
3655
|
data-jp-item-field="ctas"
|
|
3653
3656
|
className={cn(
|
|
3654
|
-
'inline-flex items-center gap-2 px-7 py-3 rounded-[
|
|
3657
|
+
'inline-flex items-center gap-2 px-7 py-3 rounded-[var(--local-radius-md)] font-semibold text-[0.95rem] transition-all duration-200 no-underline',
|
|
3655
3658
|
cta.variant === 'primary'
|
|
3656
3659
|
? 'bg-[var(--local-primary)] text-white hover:brightness-110 hover:-translate-y-0.5 shadow-[0_0_24px_rgba(59,130,246,0.25)]'
|
|
3657
3660
|
: 'bg-transparent text-[var(--local-text)] border border-[rgba(255,255,255,0.12)] hover:border-[rgba(255,255,255,0.3)] hover:bg-[rgba(255,255,255,0.04)]'
|
|
@@ -3684,13 +3687,13 @@ export const Hero: React.FC<{ data: HeroData; settings?: HeroSettings }> = ({ da
|
|
|
3684
3687
|
</div>
|
|
3685
3688
|
|
|
3686
3689
|
{/* RIGHT — ICE mini-mockup */}
|
|
3687
|
-
<div className="jp-animate-in jp-d2 rounded-[
|
|
3690
|
+
<div className="jp-animate-in jp-d2 rounded-[var(--local-radius-lg)] overflow-hidden border border-[rgba(255,255,255,0.10)] shadow-[0_0_0_1px_rgba(255,255,255,0.04),0_40px_80px_rgba(0,0,0,0.6),0_0_60px_rgba(59,130,246,0.08)]">
|
|
3688
3691
|
{/* Browser bar */}
|
|
3689
3692
|
<div className="bg-[#0f1923] px-3 py-2.5 flex items-center gap-1.5 border-b border-[rgba(255,255,255,0.05)]">
|
|
3690
3693
|
<span className="w-2.5 h-2.5 rounded-full bg-[#ef4444]" />
|
|
3691
3694
|
<span className="w-2.5 h-2.5 rounded-full bg-[#f59e0b]" />
|
|
3692
3695
|
<span className="w-2.5 h-2.5 rounded-full bg-[#22c55e]" />
|
|
3693
|
-
<span className="mx-auto font-mono text-[0.60rem] text-[rgba(255,255,255,0.20)] bg-[rgba(255,255,255,0.04)] px-3 py-0.5 rounded">localhost:5173 · Studio</span>
|
|
3696
|
+
<span className="mx-auto font-mono text-[0.60rem] text-[rgba(255,255,255,0.20)] bg-[rgba(255,255,255,0.04)] px-3 py-0.5 rounded-[var(--local-radius-sm)]">localhost:5173 · Studio</span>
|
|
3694
3697
|
</div>
|
|
3695
3698
|
{/* Split: canvas + inspector */}
|
|
3696
3699
|
<div className="grid grid-cols-[1fr_260px] h-[360px] bg-[#060d1b]">
|
|
@@ -3714,8 +3717,8 @@ export const Hero: React.FC<{ data: HeroData; settings?: HeroSettings }> = ({ da
|
|
|
3714
3717
|
{data.description?.slice(0, 100)}…
|
|
3715
3718
|
</p>
|
|
3716
3719
|
<div className="flex gap-1.5">
|
|
3717
|
-
<span className="text-[0.58rem] font-semibold bg-[#3b82f6] text-white px-2.5 py-1 rounded">Read the Docs</span>
|
|
3718
|
-
<span className="text-[0.58rem] border border-[rgba(255,255,255,0.15)] text-[#94a3b8] px-2.5 py-1 rounded">View on NPM</span>
|
|
3720
|
+
<span className="text-[0.58rem] font-semibold bg-[#3b82f6] text-white px-2.5 py-1 rounded-[var(--local-radius-sm)]">Read the Docs</span>
|
|
3721
|
+
<span className="text-[0.58rem] border border-[rgba(255,255,255,0.15)] text-[#94a3b8] px-2.5 py-1 rounded-[var(--local-radius-sm)]">View on NPM</span>
|
|
3719
3722
|
</div>
|
|
3720
3723
|
<div className="flex gap-4 mt-3 pt-3 border-t border-[rgba(255,255,255,0.05)]">
|
|
3721
3724
|
{(data.metrics ?? []).map((m, i) => (
|
|
@@ -3762,15 +3765,15 @@ export const Hero: React.FC<{ data: HeroData; settings?: HeroSettings }> = ({ da
|
|
|
3762
3765
|
<div className="flex-1 px-3.5 py-3 flex flex-col gap-2.5 overflow-hidden">
|
|
3763
3766
|
<div>
|
|
3764
3767
|
<div className="font-mono text-[0.50rem] uppercase tracking-widest text-[#334155] mb-1">Title</div>
|
|
3765
|
-
<div className="bg-[rgba(59,130,246,0.05)] border border-[rgba(59,130,246,0.45)] rounded px-2 py-1.5 font-mono text-[0.58rem] text-[#e2e8f0] truncate">{data.title}</div>
|
|
3768
|
+
<div className="bg-[rgba(59,130,246,0.05)] border border-[rgba(59,130,246,0.45)] rounded-[var(--local-radius-sm)] px-2 py-1.5 font-mono text-[0.58rem] text-[#e2e8f0] truncate">{data.title}</div>
|
|
3766
3769
|
</div>
|
|
3767
3770
|
<div>
|
|
3768
3771
|
<div className="font-mono text-[0.50rem] uppercase tracking-widest text-[#334155] mb-1">Subtitle</div>
|
|
3769
|
-
<div className="bg-[rgba(255,255,255,0.03)] border border-[rgba(255,255,255,0.07)] rounded px-2 py-1.5 font-mono text-[0.58rem] text-[#94a3b8] truncate">{data.titleHighlight}</div>
|
|
3772
|
+
<div className="bg-[rgba(255,255,255,0.03)] border border-[rgba(255,255,255,0.07)] rounded-[var(--local-radius-sm)] px-2 py-1.5 font-mono text-[0.58rem] text-[#94a3b8] truncate">{data.titleHighlight}</div>
|
|
3770
3773
|
</div>
|
|
3771
3774
|
<div>
|
|
3772
3775
|
<div className="font-mono text-[0.50rem] uppercase tracking-widest text-[#334155] mb-1">Badge</div>
|
|
3773
|
-
<div className="bg-[rgba(255,255,255,0.03)] border border-[rgba(255,255,255,0.07)] rounded px-2 py-1.5 font-mono text-[0.58rem] text-[#94a3b8] truncate">{data.badge}</div>
|
|
3776
|
+
<div className="bg-[rgba(255,255,255,0.03)] border border-[rgba(255,255,255,0.07)] rounded-[var(--local-radius-sm)] px-2 py-1.5 font-mono text-[0.58rem] text-[#94a3b8] truncate">{data.badge}</div>
|
|
3774
3777
|
</div>
|
|
3775
3778
|
</div>
|
|
3776
3779
|
{/* Bottom bar */}
|
|
@@ -3778,8 +3781,8 @@ export const Hero: React.FC<{ data: HeroData; settings?: HeroSettings }> = ({ da
|
|
|
3778
3781
|
<span className="w-1.5 h-1.5 rounded-full bg-[#22c55e]" />
|
|
3779
3782
|
<span className="font-mono text-[0.50rem] text-[#475569]">All Changes Saved</span>
|
|
3780
3783
|
<div className="ml-auto flex gap-1.5">
|
|
3781
|
-
<span className="font-mono text-[0.48rem] px-1.5 py-0.5 rounded border border-[rgba(59,130,246,0.3)] bg-[rgba(59,130,246,0.12)] text-[#60a5fa]">⬡ HTML</span>
|
|
3782
|
-
<span className="font-mono text-[0.48rem] px-1.5 py-0.5 rounded border border-[rgba(255,255,255,0.08)] bg-[rgba(255,255,255,0.03)] text-[#94a3b8] opacity-50">{ } JSON</span>
|
|
3784
|
+
<span className="font-mono text-[0.48rem] px-1.5 py-0.5 rounded-[var(--local-radius-sm)] border border-[rgba(59,130,246,0.3)] bg-[rgba(59,130,246,0.12)] text-[#60a5fa]">⬡ HTML</span>
|
|
3785
|
+
<span className="font-mono text-[0.48rem] px-1.5 py-0.5 rounded-[var(--local-radius-sm)] border border-[rgba(255,255,255,0.08)] bg-[rgba(255,255,255,0.03)] text-[#94a3b8] opacity-50">{ } JSON</span>
|
|
3783
3786
|
</div>
|
|
3784
3787
|
</div>
|
|
3785
3788
|
</div>
|
|
@@ -7308,13 +7311,14 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/theme.json"
|
|
|
7308
7311
|
"fontFamily": {
|
|
7309
7312
|
"primary": "'Instrument Sans', system-ui, sans-serif",
|
|
7310
7313
|
"mono": "'JetBrains Mono', monospace",
|
|
7311
|
-
"display": "'Bricolage Grotesque', system-ui, sans-serif"
|
|
7314
|
+
"display": "'Bricolage Grotesque', system-ui, sans-serif",
|
|
7315
|
+
"display-2":"'Instrument Sans'"
|
|
7312
7316
|
}
|
|
7313
7317
|
},
|
|
7314
7318
|
"borderRadius": {
|
|
7315
|
-
"sm": "
|
|
7316
|
-
"md": "
|
|
7317
|
-
"lg": "
|
|
7319
|
+
"sm": "4px",
|
|
7320
|
+
"md": "8px",
|
|
7321
|
+
"lg": "36px"
|
|
7318
7322
|
}
|
|
7319
7323
|
}
|
|
7320
7324
|
}
|
|
@@ -7932,72 +7936,6 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/pages/post.json"
|
|
|
7932
7936
|
]
|
|
7933
7937
|
}
|
|
7934
7938
|
END_OF_FILE_CONTENT
|
|
7935
|
-
mkdir -p "src/data/pages/servizi"
|
|
7936
|
-
echo "Creating src/data/pages/servizi/trattamento.json..."
|
|
7937
|
-
cat << 'END_OF_FILE_CONTENT' > "src/data/pages/servizi/trattamento.json"
|
|
7938
|
-
{
|
|
7939
|
-
"id": "servizi-trattamento-page",
|
|
7940
|
-
"slug": "servizi/trattamento",
|
|
7941
|
-
"meta": {
|
|
7942
|
-
"title": "Servizi - Trattamento",
|
|
7943
|
-
"description": "Pagina nested di smoke test per verificare routing visitor/admin/preview."
|
|
7944
|
-
},
|
|
7945
|
-
"sections": [
|
|
7946
|
-
{
|
|
7947
|
-
"id": "hero-servizi-trattamento",
|
|
7948
|
-
"type": "hero",
|
|
7949
|
-
"data": {
|
|
7950
|
-
"badge": "Smoke Test",
|
|
7951
|
-
"title": "Trattamento",
|
|
7952
|
-
"titleHighlight": "Pagina Nested",
|
|
7953
|
-
"description": "Questa pagina verifica il supporto ai nested slug su filesystem e router.",
|
|
7954
|
-
"ctas": [
|
|
7955
|
-
{
|
|
7956
|
-
"id": "cta-home",
|
|
7957
|
-
"label": "Torna Home",
|
|
7958
|
-
"href": "/",
|
|
7959
|
-
"variant": "primary"
|
|
7960
|
-
}
|
|
7961
|
-
]
|
|
7962
|
-
},
|
|
7963
|
-
"settings": {}
|
|
7964
|
-
}
|
|
7965
|
-
]
|
|
7966
|
-
}
|
|
7967
|
-
|
|
7968
|
-
END_OF_FILE_CONTENT
|
|
7969
|
-
echo "Creating src/data/pages/servizi_trattamento.json..."
|
|
7970
|
-
cat << 'END_OF_FILE_CONTENT' > "src/data/pages/servizi_trattamento.json"
|
|
7971
|
-
{
|
|
7972
|
-
"id": "servizi-trattamento-page",
|
|
7973
|
-
"slug": "servizi/trattamento",
|
|
7974
|
-
"meta": {
|
|
7975
|
-
"title": "Servizi - Trattamento",
|
|
7976
|
-
"description": "Pagina nested di smoke test per verificare routing visitor/admin/preview."
|
|
7977
|
-
},
|
|
7978
|
-
"sections": [
|
|
7979
|
-
{
|
|
7980
|
-
"id": "hero-servizi-trattamento",
|
|
7981
|
-
"type": "hero",
|
|
7982
|
-
"data": {
|
|
7983
|
-
"badge": "Smoke Test",
|
|
7984
|
-
"title": "Trattamentos",
|
|
7985
|
-
"titleHighlight": "Pagina Nested",
|
|
7986
|
-
"description": "Questa pagina verifica il supporto ai nested slug su filesystem e router.",
|
|
7987
|
-
"ctas": [
|
|
7988
|
-
{
|
|
7989
|
-
"id": "cta-home",
|
|
7990
|
-
"label": "Torna Home",
|
|
7991
|
-
"href": "/",
|
|
7992
|
-
"variant": "primary"
|
|
7993
|
-
}
|
|
7994
|
-
]
|
|
7995
|
-
},
|
|
7996
|
-
"settings": {}
|
|
7997
|
-
}
|
|
7998
|
-
]
|
|
7999
|
-
}
|
|
8000
|
-
END_OF_FILE_CONTENT
|
|
8001
7939
|
mkdir -p "src/emails"
|
|
8002
7940
|
echo "Creating src/emails/LeadNotificationEmail.tsx..."
|
|
8003
7941
|
cat << 'END_OF_FILE_CONTENT' > "src/emails/LeadNotificationEmail.tsx"
|
|
@@ -8311,7 +8249,7 @@ export default LeadSenderConfirmationEmail;
|
|
|
8311
8249
|
END_OF_FILE_CONTENT
|
|
8312
8250
|
echo "Creating src/fonts.css..."
|
|
8313
8251
|
cat << 'END_OF_FILE_CONTENT' > "src/fonts.css"
|
|
8314
|
-
@import url('https://fonts.googleapis.com/css2?family=
|
|
8252
|
+
@import url('https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Playfair+Display:wght@700;800;900&display=swap');
|
|
8315
8253
|
|
|
8316
8254
|
END_OF_FILE_CONTENT
|
|
8317
8255
|
mkdir -p "src/hooks"
|
|
@@ -8376,14 +8314,13 @@ cat << 'END_OF_FILE_CONTENT' > "src/index.css"
|
|
|
8376
8314
|
--font-primary: var(--theme-font-primary);
|
|
8377
8315
|
--font-mono: var(--theme-font-mono);
|
|
8378
8316
|
|
|
8379
|
-
/*
|
|
8380
|
-
|
|
8381
|
-
|
|
8382
|
-
|
|
8383
|
-
|
|
8384
|
-
automatically and the fallback becomes dead code.
|
|
8317
|
+
/*
|
|
8318
|
+
DISPLAY FONT bridge
|
|
8319
|
+
The core now emits --theme-font-display from theme.json, so this keeps
|
|
8320
|
+
the tenant on the stable semantic alias rather than depending on the
|
|
8321
|
+
flattened internal variable path.
|
|
8385
8322
|
*/
|
|
8386
|
-
--font-display: var(--theme-font-display
|
|
8323
|
+
--font-display: var(--theme-font-display);
|
|
8387
8324
|
}
|
|
8388
8325
|
|
|
8389
8326
|
/*
|
|
@@ -8401,7 +8338,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/index.css"
|
|
|
8401
8338
|
--muted: var(--theme-surface-alt);
|
|
8402
8339
|
--muted-foreground: var(--theme-text-muted);
|
|
8403
8340
|
--border: var(--theme-border);
|
|
8404
|
-
--radius:
|
|
8341
|
+
--radius: 3.45rem;
|
|
8405
8342
|
|
|
8406
8343
|
/*
|
|
8407
8344
|
🔧 ACCENT CHAIN — Forward-compatible workaround
|