spb/qwhpi Public
QHPI — Quebec Housing Price Index: quality-adjusted, hierarchically pooled housing price indexes.
Python 63.9%
TypeScript 25.4%
CSS 5.5%
TeX 3.5%
SQL 0.8%
Makefile 0.5%
Dockerfile 0.5%
1/**2 * =============================================================================3 * QWHPI — Quebec Weekly Housing Price Index4 * Author : Simon-Pierre Boucher5 * Contact : contact@spboucher.ai6 * File : web/app/opengraph-image.tsx7 * Purpose : Generated Open Graph share image (1200×630, brand chart motif).8 * =============================================================================9 */10import { ImageResponse } from "next/og";1112export const runtime = "edge";13export const alt = "QHPI — Quebec Housing Price Index (monthly)";14export const size = { width: 1200, height: 630 };15export const contentType = "image/png";1617export default function OgImage() {18 return new ImageResponse(19 (20 <div21 style={{22 width: "100%", height: "100%", display: "flex",23 flexDirection: "column", justifyContent: "space-between",24 background: "linear-gradient(135deg, #fcfcfb 60%, #e8f0fb 100%)",25 padding: 64, fontFamily: "Georgia, serif",26 }}27 >28 <div style={{ display: "flex", alignItems: "center", gap: 20 }}>29 <div30 style={{31 width: 56, height: 56, borderRadius: 14, background: "#2a78d6",32 display: "flex", alignItems: "center", justifyContent: "center",33 }}34 >35 <svg width="34" height="34" viewBox="0 0 22 22">36 <path d="M5 14.5 L9 10.5 L12 12.5 L17 6.5" fill="none"37 stroke="#fff" strokeWidth="2.2" strokeLinecap="round"38 strokeLinejoin="round" />39 </svg>40 </div>41 <div style={{ fontSize: 44, fontWeight: 700, color: "#0b0b0b" }}>42 QHPI43 </div>44 <div style={{ fontSize: 24, color: "#716f66" }}>45 Quebec Housing Price Index · monthly46 </div>47 </div>4849 <svg width="1072" height="270" viewBox="0 0 1072 270">50 <path51 d="M0 240 C 120 235, 180 200, 260 190 S 400 205, 470 18552 S 610 120, 700 110 S 850 70, 940 45 S 1030 25, 1072 15"53 fill="none" stroke="#2a78d6" strokeWidth="6" strokeLinecap="round"54 />55 <path56 d="M0 240 C 120 235, 180 200, 260 190 S 400 205, 470 18557 S 610 120, 700 110 S 850 70, 940 45 S 1030 25, 1072 1558 L 1072 270 L 0 270 Z"59 fill="rgba(42,120,214,0.12)"60 />61 </svg>6263 <div style={{ display: "flex", justifyContent: "space-between",64 alignItems: "flex-end" }}>65 <div style={{ fontSize: 34, color: "#0b0b0b", maxWidth: 760 }}>66 Quebec housing prices, measured monthly, robustly.67 </div>68 <div style={{ fontSize: 20, color: "#716f66" }}>69 indexqc.house70 </div>71 </div>72 </div>73 ),74 size,75 );76}77