spb/phi-conseil
Public
1/**2 * Illustrations vectorielles de remplacement, dans la palette du site.3 * Elles occupent exactement la place des photographies de la capture4 * (bureau avec plante, tasse et ordinateur ; vase et livres) en attendant les5 * photos sous licence du client. Voir docs/ASSET_REGISTER.md.6 */78export function DeskScene({ className = "" }: { className?: string }) {9 return (10 <svg11 className={className}12 viewBox="0 0 640 440"13 role="img"14 aria-labelledby="desk-title"15 preserveAspectRatio="xMidYMid slice"16 >17 <title id="desk-title">18 Illustration : bureau lumineux avec une plante, une tasse et un ordinateur portable19 </title>20 <defs>21 <linearGradient id="desk-light" x1="0" y1="0" x2="1" y2="1">22 <stop offset="0" stopColor="#fbf6ed" />23 <stop offset="0.55" stopColor="#f3e9da" />24 <stop offset="1" stopColor="#e5dccb" />25 </linearGradient>26 <linearGradient id="desk-wood" x1="0" y1="0" x2="1" y2="0">27 <stop offset="0" stopColor="#e4cfae" />28 <stop offset="1" stopColor="#cdb389" />29 </linearGradient>30 <linearGradient id="desk-screen" x1="0" y1="0" x2="0" y2="1">31 <stop offset="0" stopColor="#f6f3ec" />32 <stop offset="1" stopColor="#dfe6ec" />33 </linearGradient>34 <radialGradient id="desk-glow" cx="0.6" cy="0.3" r="0.6">35 <stop offset="0" stopColor="#ffffff" stopOpacity="0.9" />36 <stop offset="1" stopColor="#ffffff" stopOpacity="0" />37 </radialGradient>38 </defs>39 <rect width="640" height="440" fill="url(#desk-light)" />40 {/* fenêtre / lumière */}41 <rect x="360" y="20" width="250" height="260" rx="6" fill="#f7f0e4" />42 <rect x="372" y="32" width="110" height="236" fill="#fbf8f1" />43 <rect x="494" y="32" width="104" height="236" fill="#f9f4ea" />44 <rect width="640" height="440" fill="url(#desk-glow)" />45 {/* plan de travail */}46 <path d="M0 300 L640 282 L640 440 L0 440 Z" fill="url(#desk-wood)" />47 <path d="M0 300 L640 282 L640 292 L0 310 Z" fill="#f0e0c5" opacity="0.7" />48 {/* ordinateur portable */}49 <g transform="translate(372 170)">50 <rect x="0" y="0" width="240" height="140" rx="8" fill="#9aa5ae" />51 <rect x="8" y="8" width="224" height="124" rx="4" fill="url(#desk-screen)" />52 <path53 d="M-18 140 L258 140 L278 160 Q280 166 272 166 L-32 166 Q-40 166 -38 160 Z"54 fill="#aab4bc"55 />56 <rect x="90" y="150" width="60" height="5" rx="2" fill="#8c979f" />57 </g>58 {/* tasse */}59 <g transform="translate(260 240)">60 <ellipse cx="38" cy="86" rx="46" ry="8" fill="#b9a88a" opacity="0.35" />61 <path d="M0 20 Q0 86 38 86 Q76 86 76 20 Z" fill="#fbfaf6" />62 <ellipse cx="38" cy="20" rx="38" ry="9" fill="#efe9dd" />63 <ellipse cx="38" cy="20" rx="30" ry="6" fill="#d9c8ad" />64 <path65 d="M76 36 Q104 36 102 58 Q100 78 74 76"66 fill="none"67 stroke="#fbfaf6"68 strokeWidth="9"69 />70 </g>71 {/* plante */}72 <g transform="translate(150 150)">73 <ellipse cx="40" cy="170" rx="60" ry="9" fill="#b9a88a" opacity="0.3" />74 <path d="M-10 110 L90 110 L80 170 L0 170 Z" fill="#f4eee3" />75 <path d="M-10 110 L90 110 L87 124 L-7 124 Z" fill="#e6dccb" />76 <g fill="#6f8f6a">77 <path d="M40 112 C 20 90, 10 60, 40 40 C 70 60, 60 90, 40 112 Z" />78 <path d="M42 110 C 70 100, 95 80, 110 45 C 80 50, 55 75, 42 110 Z" fill="#7d9c74" />79 <path d="M38 110 C 10 100, -20 85, -30 50 C 0 55, 25 78, 38 110 Z" fill="#86a37c" />80 <path d="M44 112 C 60 118, 95 120, 125 105 C 100 95, 65 100, 44 112 Z" fill="#6a8a66" />81 <path d="M36 112 C 20 118, -15 122, -45 110 C -20 98, 15 100, 36 112 Z" fill="#92ad88" />82 <path83 d="M42 100 C 55 70, 75 45, 95 20 C 70 30, 50 60, 42 100 Z"84 fill="#9db694"85 opacity="0.9"86 />87 </g>88 </g>89 </svg>90 );91}9293export function VaseScene({ className = "" }: { className?: string }) {94 return (95 <svg96 className={className}97 viewBox="0 0 440 560"98 role="img"99 aria-labelledby="vase-title"100 preserveAspectRatio="xMidYMid slice"101 >102 <title id="vase-title">103 Illustration : vase transparent avec feuillage posé sur des livres, lumière douce104 </title>105 <defs>106 <linearGradient id="vase-bg" x1="0" y1="0" x2="1" y2="1">107 <stop offset="0" stopColor="#f6efe4" />108 <stop offset="1" stopColor="#e9dfd0" />109 </linearGradient>110 <linearGradient id="vase-glass" x1="0" y1="0" x2="1" y2="0">111 <stop offset="0" stopColor="#ffffff" stopOpacity="0.75" />112 <stop offset="0.5" stopColor="#dfe8ee" stopOpacity="0.55" />113 <stop offset="1" stopColor="#ffffff" stopOpacity="0.8" />114 </linearGradient>115 </defs>116 <rect width="440" height="560" fill="url(#vase-bg)" />117 <rect x="0" y="0" width="440" height="560" fill="#ffffff" opacity="0.18" />118 {/* table */}119 <path d="M0 470 L440 450 L440 560 L0 560 Z" fill="#dcc6a4" />120 <path d="M0 470 L440 450 L440 460 L0 480 Z" fill="#efe2cc" opacity="0.7" />121 {/* livres */}122 <g transform="translate(20 380)">123 <rect x="0" y="60" width="300" height="34" rx="3" fill="#5f7a94" />124 <rect x="0" y="60" width="300" height="6" rx="2" fill="#7b94ab" />125 <rect x="14" y="26" width="280" height="34" rx="3" fill="#a9b8c6" />126 <rect x="14" y="26" width="280" height="6" rx="2" fill="#c5d1dc" />127 <rect x="6" y="-8" width="290" height="34" rx="3" fill="#e8dfd0" />128 <rect x="6" y="-8" width="290" height="6" rx="2" fill="#f5efe4" />129 </g>130 {/* vase */}131 <g transform="translate(140 200)">132 <path133 d="M30 0 L90 0 L100 60 Q110 150 60 172 Q10 150 20 60 Z"134 fill="url(#vase-glass)"135 stroke="#ffffff"136 strokeWidth="2"137 />138 <path d="M24 90 Q20 150 60 168 Q100 150 96 90 Z" fill="#dbe6ec" opacity="0.55" />139 </g>140 {/* tiges et feuilles */}141 <g fill="#7f9a76" stroke="#5e7858" strokeWidth="1">142 <path d="M200 200 C 190 150, 170 110, 150 60" fill="none" />143 <path d="M205 200 C 215 150, 240 110, 270 70" fill="none" />144 <path d="M198 200 C 180 160, 150 140, 110 120" fill="none" />145 {[146 [150, 60, -30],147 [170, 110, -20],148 [120, 95, -60],149 [270, 70, 25],150 [240, 110, 35],151 [285, 115, 60],152 [110, 120, -70],153 [140, 150, -35],154 [225, 150, 45],155 ].map(([x, y, r], i) => (156 <ellipse157 key={i}158 cx={0}159 cy={-22}160 rx={11}161 ry={24}162 transform={`translate(${x} ${y}) rotate(${r})`}163 />164 ))}165 </g>166 </svg>167 );168}169