Drop your image here or click to upload
79 |├── og.webp ├── yeag.webp ├── style.css ├── index.html └── script.js /og.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seatedro/yeaag/HEAD/og.webp -------------------------------------------------------------------------------- /yeag.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seatedro/yeaag/HEAD/yeag.webp -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: #0f0f0f; 3 | --card-bg: #1a1a1a; 4 | --text-primary: #ffffff; 5 | --text-secondary: #a0a0a0; 6 | --accent: #646cff; 7 | --accent-hover: #747bff; 8 | --border-color: #2a2a2a; 9 | --input-bg: #2a2a2a; 10 | } 11 | 12 | * { 13 | margin: 0; 14 | padding: 0; 15 | box-sizing: border-box; 16 | text-transform: lowercase; 17 | } 18 | 19 | body { 20 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, 21 | sans-serif; 22 | line-height: 1.5; 23 | color: var(--text-primary); 24 | background: var(--bg-color); 25 | min-height: 100vh; 26 | } 27 | 28 | .app { 29 | max-width: 1400px; 30 | margin: 0 auto; 31 | padding: 2rem; 32 | display: flex; 33 | flex-direction: column; 34 | min-height: 100vh; 35 | gap: 2rem; 36 | } 37 | 38 | header { 39 | text-align: center; 40 | } 41 | 42 | h1 { 43 | font-size: 3rem; 44 | font-weight: 800; 45 | background: linear-gradient(90deg, var(--accent), var(--accent-hover)); 46 | -webkit-background-clip: text; 47 | -webkit-text-fill-color: transparent; 48 | margin-bottom: 0.5rem; 49 | } 50 | 51 | .title { 52 | text-align: center; 53 | justify-content: center; 54 | align-items: center; 55 | display: flex; 56 | gap: 1rem; 57 | } 58 | 59 | .subtitle { 60 | color: var(--text-secondary); 61 | font-size: 1.1rem; 62 | } 63 | 64 | main { 65 | display: grid; 66 | grid-template-columns: 300px 1fr; 67 | gap: 2rem; 68 | flex: 1; 69 | } 70 | 71 | .card { 72 | background: var(--card-bg); 73 | border-radius: 12px; 74 | border: 1px solid var(--border-color); 75 | overflow: hidden; 76 | } 77 | 78 | .controls-card { 79 | padding: 1.5rem; 80 | display: flex; 81 | flex-direction: column; 82 | gap: 1.5rem; 83 | } 84 | 85 | .drag-area { 86 | border: 2px dashed var(--border-color); 87 | border-radius: 8px; 88 | padding: 2rem 1rem; 89 | text-align: center; 90 | cursor: pointer; 91 | transition: all 0.3s ease; 92 | } 93 | 94 | .drag-area:hover { 95 | border-color: var(--accent); 96 | } 97 | 98 | .drag-content { 99 | display: flex; 100 | flex-direction: column; 101 | align-items: center; 102 | gap: 1rem; 103 | color: var(--text-secondary); 104 | } 105 | 106 | .drag-content svg { 107 | stroke: var(--text-secondary); 108 | } 109 | 110 | .control-groups { 111 | display: flex; 112 | flex-direction: column; 113 | gap: 2rem; 114 | } 115 | 116 | .control-group { 117 | display: flex; 118 | flex-direction: column; 119 | gap: 1rem; 120 | border: 1px dotted var(--border-color); 121 | padding: 1rem; 122 | border-radius: 6px; 123 | } 124 | 125 | label { 126 | display: flex; 127 | flex-direction: column; 128 | gap: 0.5rem; 129 | } 130 | 131 | .slider-container { 132 | display: flex; 133 | align-items: center; 134 | gap: 1rem; 135 | } 136 | 137 | input[type="range"] { 138 | flex: 1; 139 | height: 4px; 140 | -webkit-appearance: none; 141 | background: var(--input-bg); 142 | border-radius: 2px; 143 | outline: none; 144 | } 145 | 146 | input[type="range"]::-webkit-slider-thumb { 147 | -webkit-appearance: none; 148 | width: 16px; 149 | height: 16px; 150 | border-radius: 50%; 151 | background: var(--accent); 152 | cursor: pointer; 153 | transition: all 0.2s ease; 154 | } 155 | 156 | input[type="range"]::-webkit-slider-thumb:hover { 157 | background: var(--accent-hover); 158 | } 159 | 160 | .value { 161 | min-width: 3ch; 162 | color: var(--text-secondary); 163 | } 164 | 165 | .text-input { 166 | background: var(--input-bg); 167 | border: 1px solid var(--border-color); 168 | color: var(--text-primary); 169 | padding: 0.5rem; 170 | border-radius: 6px; 171 | font-family: monospace; 172 | font-size: 1rem; 173 | } 174 | 175 | .text-input:focus { 176 | border-color: var(--accent); 177 | outline: none; 178 | } 179 | 180 | .toggles { 181 | display: flex; 182 | gap: 1rem; 183 | } 184 | 185 | .toggle { 186 | flex-direction: row; 187 | align-items: center; 188 | cursor: pointer; 189 | } 190 | 191 | .toggle input { 192 | display: none; 193 | } 194 | 195 | .toggle-label { 196 | position: relative; 197 | padding-left: 50px; 198 | user-select: none; 199 | } 200 | 201 | .toggle-label:before { 202 | content: ""; 203 | position: absolute; 204 | left: 0; 205 | width: 40px; 206 | height: 22px; 207 | background: var(--input-bg); 208 | border-radius: 11px; 209 | transition: all 0.3s ease; 210 | } 211 | 212 | .toggle-label:after { 213 | content: ""; 214 | position: absolute; 215 | left: 2px; 216 | top: 2px; 217 | width: 18px; 218 | height: 18px; 219 | background: var(--text-secondary); 220 | border-radius: 50%; 221 | transition: all 0.3s ease; 222 | } 223 | 224 | .toggle input:checked + .toggle-label:before { 225 | background: var(--accent); 226 | } 227 | 228 | .toggle input:checked + .toggle-label:after { 229 | left: 20px; 230 | background: white; 231 | } 232 | 233 | .buttons { 234 | display: flex; 235 | gap: 1rem; 236 | } 237 | 238 | button { 239 | flex: 1; 240 | background: var(--input-bg); 241 | color: var(--text-primary); 242 | border: 1px solid var(--border-color); 243 | padding: 0.75rem 1.5rem; 244 | border-radius: 6px; 245 | cursor: pointer; 246 | font-size: 1rem; 247 | transition: all 0.2s ease; 248 | } 249 | 250 | button:hover { 251 | background: #333; 252 | } 253 | 254 | button.primary { 255 | background: var(--accent); 256 | border: none; 257 | } 258 | 259 | button.primary:hover { 260 | background: var(--accent-hover); 261 | } 262 | 263 | .output-card { 264 | display: flex; 265 | align-items: center; 266 | justify-content: center; 267 | padding: 1rem; 268 | } 269 | 270 | #outputCanvas { 271 | max-width: 100%; 272 | max-height: 80vh; 273 | } 274 | 275 | .select-input { 276 | background: var(--input-bg); 277 | border: 1px solid var(--border-color); 278 | color: var(--text-primary); 279 | padding: 0.5rem; 280 | border-radius: 6px; 281 | font-size: 1rem; 282 | width: 100%; 283 | outline: none; 284 | } 285 | 286 | .select-input:focus { 287 | border-color: var(--accent); 288 | } 289 | 290 | .color-pickers { 291 | display: grid; 292 | grid-template-columns: 1fr 1fr; 293 | gap: 1rem; 294 | } 295 | 296 | .color-pickers label { 297 | display: flex; 298 | flex-direction: column; 299 | gap: 0.5rem; 300 | } 301 | 302 | input[type="color"] { 303 | -webkit-appearance: none; 304 | width: 100%; 305 | height: 40px; 306 | padding: 0; 307 | border: 1px solid var(--border-color); 308 | border-radius: 6px; 309 | background: var(--input-bg); 310 | cursor: pointer; 311 | } 312 | 313 | input[type="color"]::-webkit-color-swatch-wrapper { 314 | padding: 2px; 315 | } 316 | 317 | input[type="color"]::-webkit-color-swatch { 318 | border: none; 319 | border-radius: 4px; 320 | } 321 | 322 | footer { 323 | text-align: center; 324 | color: var(--text-secondary); 325 | font-size: 0.9rem; 326 | } 327 | 328 | .sigma-controls { 329 | display: flex; 330 | flex-direction: column; 331 | gap: 1rem; 332 | margin-top: 1rem; 333 | display: none; /* hidden by default */ 334 | } 335 | 336 | .sigma-controls.active { 337 | display: flex; 338 | } 339 | 340 | @media (max-width: 768px) { 341 | main { 342 | grid-template-columns: 1fr; 343 | } 344 | 345 | .app { 346 | padding: 1rem; 347 | } 348 | } 349 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |
50 | yet another ascii art generator
52 |Drop your image here or click to upload
79 |