[Archived] Archived WIP of vielle.dev
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Move post styles to "post.css" to make blog/[id].astro smaller

vielle.dev 83096a7c c5b7053c

verified
+261 -264
+259
src/components/blog/post.css
··· 1 + .content { 2 + /* Custom Flags */ 3 + 4 + & blockquote { 5 + &[data-bq-flag--note], 6 + &[data-bq-flag--alert], 7 + &[data-bq-flag--info] { 8 + color: black; 9 + } 10 + 11 + &[data-bq-flag--note] { 12 + --accent: var(--rainbow-4); 13 + --icon: "📝"; 14 + --name: "Note"; 15 + } 16 + 17 + &[data-bq-flag--alert] { 18 + --accent: var(--rainbow-0); 19 + --icon: "🚨"; 20 + --name: "Alert"; 21 + } 22 + 23 + &[data-bq-flag--info] { 24 + --accent: var(--rainbow-5); 25 + --icon: "📚"; 26 + --name: "Info"; 27 + } 28 + } 29 + 30 + & p, 31 + & div:has(> p) { 32 + &[data-para-flag--bg-red], 33 + &[data-para-flag--bg-orange], 34 + &[data-para-flag--bg-yellow], 35 + &[data-para-flag--bg-green], 36 + &[data-para-flag--bg-blue], 37 + &[data-para-flag--bg-purple] { 38 + /* contrasting colour */ 39 + color: black; 40 + } 41 + 42 + &[data-para-flag--bg-red] { 43 + background-color: var(--rainbow-0); 44 + } 45 + 46 + &[data-para-flag--bg-orange] { 47 + background-color: var(--rainbow-1); 48 + } 49 + 50 + &[data-para-flag--bg-yellow] { 51 + background-color: var(--rainbow-2); 52 + } 53 + 54 + &[data-para-flag--bg-green] { 55 + background-color: var(--rainbow-3); 56 + } 57 + 58 + &[data-para-flag--bg-blue] { 59 + background-color: var(--rainbow-4); 60 + } 61 + 62 + &[data-para-flag--bg-purple] { 63 + background-color: var(--rainbow-5); 64 + } 65 + } 66 + 67 + & img { 68 + &[data-img-flag--small="true"] { 69 + width: 50%; 70 + } 71 + 72 + &[data-img-flag--left="true"] { 73 + float: left; 74 + } 75 + 76 + &[data-img-flag--right="true"] { 77 + float: right; 78 + } 79 + 80 + &[data-img-flag--centre="true"] { 81 + margin-inline: auto; 82 + } 83 + } 84 + 85 + /* Headings */ 86 + 87 + & h2, 88 + & h3, 89 + & h4 { 90 + margin-block-start: 2rem; 91 + margin-block-end: 2rem; 92 + 93 + color: var(--typo-subheading); 94 + 95 + & + & { 96 + margin-block-start: 0; 97 + } 98 + 99 + :has(+ &) { 100 + margin-block-end: 0; 101 + } 102 + } 103 + 104 + & h2 { 105 + font-size: 3.6rem; 106 + } 107 + 108 + & h3 { 109 + font-size: 2.8rem; 110 + } 111 + 112 + & h4 { 113 + font-size: 2.4rem; 114 + } 115 + 116 + /* Paragraphs */ 117 + & p, 118 + & blockquote { 119 + clear: both; 120 + margin-block: 2rem; 121 + } 122 + 123 + & div:has(> p) { 124 + margin-block: 1rem; 125 + } 126 + 127 + /* Images */ 128 + & img { 129 + height: auto; /* fix height issues ?? */ 130 + margin: 1rem; 131 + } 132 + 133 + & a { 134 + text-decoration: 0.2rem underline; 135 + 136 + &:link { 137 + color: var(--typo-url); 138 + } 139 + &:visited { 140 + color: var(--typo-visited); 141 + } 142 + &:hover { 143 + text-decoration: 0.1rem wavy underline; 144 + } 145 + &:active { 146 + color: var(--rainbow-3); 147 + } 148 + } 149 + 150 + /* Standard Lists */ 151 + & ul, 152 + & ol { 153 + margin-inline-start: 4rem; 154 + & & { 155 + margin-inline-start: 2rem; 156 + } 157 + } 158 + 159 + /* Blockquotes */ 160 + & blockquote { 161 + --accent: var(--bg-secondary); 162 + border-left: 0.2rem solid hsl(from var(--accent) h s calc(l * 0.9)); 163 + padding: 1rem 4rem 1rem 1rem; 164 + margin: 1rem; 165 + border-radius: 0.5rem; 166 + background-color: var(--accent); 167 + width: fit-content; 168 + min-width: 20rem; 169 + 170 + &::before { 171 + content: var(--icon) " " var(--name) / var(--name); 172 + } 173 + } 174 + 175 + /* Inline code */ 176 + :not(pre) > code { 177 + color: var(--typo-code); 178 + background-color: var(--bg-code); 179 + padding: 0.2rem; 180 + border-radius: 0.5rem; 181 + 182 + /* make blockquote code use a lighter version of the accent with a darker background */ 183 + :is(blockquote) & { 184 + color: hsl(from var(--accent) h calc(s * 0.8) calc(l * 1.4)); 185 + background-color: #00000080; 186 + } 187 + } 188 + 189 + /* Outline Code */ 190 + & pre:has(> code) { 191 + padding: 0.5rem; 192 + border-radius: 1rem; 193 + } 194 + 195 + .astro-code { 196 + background-color: var(--bg-code) !important; 197 + margin-block: 1rem; 198 + padding: 0; 199 + position: relative; 200 + 201 + & code { 202 + display: block; 203 + padding: 1rem; 204 + 205 + & span { 206 + color: light-dark(var(--shiki-light), var(--shiki-dark)) !important; 207 + } 208 + } 209 + } 210 + 211 + /* Check lists */ 212 + .task-list-item { 213 + list-style: none; 214 + } 215 + 216 + .task-list-item label { 217 + display: flex; 218 + margin-block-start: 0.5rem; 219 + margin-block-end: 0.75rem; 220 + 221 + gap: 0.5rem; 222 + 223 + & input[type="checkbox"] { 224 + width: 2.5rem; 225 + height: 2.5rem; 226 + margin-inline-end: 0.5rem; 227 + 228 + background: light-dark(rgb(0, 0, 0, 0.2), rgb(255, 255, 255, 0.4)); 229 + border-radius: 0.5rem; 230 + border: 0.1rem solid var(--typo-body); 231 + 232 + &:checked { 233 + --checkmark: url("../../assets/check.svg"); 234 + background: var(--checkmark) center/2rem padding-box no-repeat 235 + var(--rainbow-2); 236 + } 237 + } 238 + } 239 + 240 + /* Table */ 241 + & table { 242 + border-collapse: collapse; 243 + border-spacing: 0; 244 + 245 + & th, 246 + & td { 247 + border: 0.1rem solid white; 248 + padding: 0.5rem; 249 + } 250 + 251 + & thead th { 252 + background-color: var(--bg-secondary); 253 + } 254 + 255 + & tbody tr:nth-child(2n) { 256 + background-color: #ffffff10; 257 + } 258 + } 259 + }
+2 -264
src/pages/blog/[id].astro
··· 16 16 import { getEntry } from "astro:content"; 17 17 import { parse } from "node:path"; 18 18 19 + import "@/components/blog/post.css"; 20 + 19 21 const { id } = Astro.params; 20 22 if (!id) return Astro.redirect("/404"); 21 23 ··· 256 258 code.prepend(heading); 257 259 }); 258 260 </script> 259 - 260 - <!-- post content styles --> 261 - <!-- TODO: REFACTOR --> 262 - <style is:global> 263 - .content { 264 - /* Custom Flags */ 265 - 266 - & blockquote { 267 - &[data-bq-flag--note], 268 - &[data-bq-flag--alert], 269 - &[data-bq-flag--info] { 270 - color: black; 271 - } 272 - 273 - &[data-bq-flag--note] { 274 - --accent: var(--rainbow-4); 275 - --icon: "📝"; 276 - --name: "Note"; 277 - } 278 - 279 - &[data-bq-flag--alert] { 280 - --accent: var(--rainbow-0); 281 - --icon: "🚨"; 282 - --name: "Alert"; 283 - } 284 - 285 - &[data-bq-flag--info] { 286 - --accent: var(--rainbow-5); 287 - --icon: "📚"; 288 - --name: "Info"; 289 - } 290 - } 291 - 292 - & p, 293 - & div:has(> p) { 294 - &[data-para-flag--bg-red], 295 - &[data-para-flag--bg-orange], 296 - &[data-para-flag--bg-yellow], 297 - &[data-para-flag--bg-green], 298 - &[data-para-flag--bg-blue], 299 - &[data-para-flag--bg-purple] { 300 - /* contrasting colour */ 301 - color: black; 302 - } 303 - 304 - &[data-para-flag--bg-red] { 305 - background-color: var(--rainbow-0); 306 - } 307 - 308 - &[data-para-flag--bg-orange] { 309 - background-color: var(--rainbow-1); 310 - } 311 - 312 - &[data-para-flag--bg-yellow] { 313 - background-color: var(--rainbow-2); 314 - } 315 - 316 - &[data-para-flag--bg-green] { 317 - background-color: var(--rainbow-3); 318 - } 319 - 320 - &[data-para-flag--bg-blue] { 321 - background-color: var(--rainbow-4); 322 - } 323 - 324 - &[data-para-flag--bg-purple] { 325 - background-color: var(--rainbow-5); 326 - } 327 - } 328 - 329 - & img { 330 - &[data-img-flag--small="true"] { 331 - width: 50%; 332 - } 333 - 334 - &[data-img-flag--left="true"] { 335 - float: left; 336 - } 337 - 338 - &[data-img-flag--right="true"] { 339 - float: right; 340 - } 341 - 342 - &[data-img-flag--centre="true"] { 343 - margin-inline: auto; 344 - } 345 - } 346 - 347 - /* Headings */ 348 - 349 - & h2, 350 - & h3, 351 - & h4 { 352 - margin-block-start: 2rem; 353 - margin-block-end: 2rem; 354 - 355 - color: var(--typo-subheading); 356 - 357 - & + & { 358 - margin-block-start: 0; 359 - } 360 - 361 - :has(+ &) { 362 - margin-block-end: 0; 363 - } 364 - } 365 - 366 - & h2 { 367 - font-size: 3.6rem; 368 - } 369 - 370 - & h3 { 371 - font-size: 2.8rem; 372 - } 373 - 374 - & h4 { 375 - font-size: 2.4rem; 376 - } 377 - 378 - /* Paragraphs */ 379 - & p, 380 - & blockquote { 381 - clear: both; 382 - margin-block: 2rem; 383 - } 384 - 385 - & div:has(> p) { 386 - margin-block: 1rem; 387 - } 388 - 389 - /* Images */ 390 - & img { 391 - height: auto; /* fix height issues ?? */ 392 - margin: 1rem; 393 - } 394 - 395 - & a { 396 - text-decoration: 0.2rem underline; 397 - 398 - &:link { 399 - color: var(--typo-url); 400 - } 401 - &:visited { 402 - color: var(--typo-visited); 403 - } 404 - &:hover { 405 - text-decoration: 0.1rem wavy underline; 406 - } 407 - &:active { 408 - color: var(--rainbow-3); 409 - } 410 - } 411 - 412 - /* Standard Lists */ 413 - & ul, 414 - & ol { 415 - margin-inline-start: 4rem; 416 - & & { 417 - margin-inline-start: 2rem; 418 - } 419 - } 420 - 421 - /* Blockquotes */ 422 - & blockquote { 423 - --accent: var(--bg-secondary); 424 - border-left: 0.2rem solid hsl(from var(--accent) h s calc(l * 0.9)); 425 - padding: 1rem 4rem 1rem 1rem; 426 - margin: 1rem; 427 - border-radius: 0.5rem; 428 - background-color: var(--accent); 429 - width: fit-content; 430 - min-width: 20rem; 431 - 432 - &::before { 433 - content: var(--icon) " " var(--name) / var(--name); 434 - } 435 - } 436 - 437 - /* Inline code */ 438 - :not(pre) > code { 439 - color: var(--typo-code); 440 - background-color: var(--bg-code); 441 - padding: 0.2rem; 442 - border-radius: 0.5rem; 443 - 444 - /* make blockquote code use a lighter version of the accent with a darker background */ 445 - :is(blockquote) & { 446 - color: hsl(from var(--accent) h calc(s * 0.8) calc(l * 1.4)); 447 - background-color: #00000080; 448 - } 449 - } 450 - 451 - /* Outline Code */ 452 - & pre:has(> code) { 453 - padding: 0.5rem; 454 - border-radius: 1rem; 455 - } 456 - 457 - .astro-code { 458 - background-color: var(--bg-code) !important; 459 - margin-block: 1rem; 460 - padding: 0; 461 - position: relative; 462 - 463 - & code { 464 - display: block; 465 - padding: 1rem; 466 - 467 - & span { 468 - color: light-dark(var(--shiki-light), var(--shiki-dark)) !important; 469 - } 470 - } 471 - } 472 - 473 - /* Check lists */ 474 - .task-list-item { 475 - list-style: none; 476 - } 477 - 478 - .task-list-item label { 479 - display: flex; 480 - margin-block-start: 0.5rem; 481 - margin-block-end: 0.75rem; 482 - 483 - gap: 0.5rem; 484 - 485 - & input[type="checkbox"] { 486 - width: 2.5rem; 487 - height: 2.5rem; 488 - margin-inline-end: 0.5rem; 489 - 490 - background: light-dark(rgb(0, 0, 0, 0.2), rgb(255, 255, 255, 0.4)); 491 - border-radius: 0.5rem; 492 - border: 0.1rem solid var(--typo-body); 493 - 494 - &:checked { 495 - --checkmark: url("../../assets/check.svg"); 496 - background: var(--checkmark) center/2rem padding-box no-repeat 497 - var(--rainbow-2); 498 - } 499 - } 500 - } 501 - 502 - /* Table */ 503 - & table { 504 - border-collapse: collapse; 505 - border-spacing: 0; 506 - 507 - & th, 508 - & td { 509 - border: 0.1rem solid white; 510 - padding: 0.5rem; 511 - } 512 - 513 - & thead th { 514 - background-color: var(--bg-secondary); 515 - } 516 - 517 - & tbody tr:nth-child(2n) { 518 - background-color: #ffffff10; 519 - } 520 - } 521 - } 522 - </style> 523 261 524 262 <!-- page styles --> 525 263 <style>