Resto·Ka — tous les restaurants du Québec, menus complets et prix réels (famille ·Ka)
Python 69.3%
TypeScript 16.7%
CSS 7.9%
JavaScript 4.7%
HTML 1.4%
1// ==============================================================================2// Author: Simon-Pierre Boucher <contact@spboucher.ai>3// File: components/Icons.tsx4// Desc: Icônes SVG inline (traits 2 u, coins ronds) — même style que Lou·Ka.5// ==============================================================================6interface IcoProps { size?: number; strokeWidth?: number }78const base = (size: number) => ({9 width: size, height: size, viewBox: "0 0 24 24", fill: "none",10 stroke: "currentColor", strokeLinecap: "round" as const,11 strokeLinejoin: "round" as const,12});1314export const IcoSearch = ({ size = 18, strokeWidth = 2 }: IcoProps) => (15 <svg {...base(size)} strokeWidth={strokeWidth} aria-hidden="true">16 <circle cx="11" cy="11" r="7" />17 <path d="m20 20-3.8-3.8" />18 </svg>19);2021export const IcoPlate = ({ size = 18, strokeWidth = 2 }: IcoProps) => (22 <svg {...base(size)} strokeWidth={strokeWidth} aria-hidden="true">23 <circle cx="12" cy="12" r="9" />24 <circle cx="12" cy="12" r="3.5" />25 </svg>26);2728export const IcoChart = ({ size = 18, strokeWidth = 2 }: IcoProps) => (29 <svg {...base(size)} strokeWidth={strokeWidth} aria-hidden="true">30 <path d="M4 20V10M10 20V4M16 20v-7M21 20H3" />31 </svg>32);3334export const IcoFolder = ({ size = 18, strokeWidth = 2 }: IcoProps) => (35 <svg {...base(size)} strokeWidth={strokeWidth} aria-hidden="true">36 <path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z" />37 </svg>38);3940export const IcoPin = ({ size = 18, strokeWidth = 2 }: IcoProps) => (41 <svg {...base(size)} strokeWidth={strokeWidth} aria-hidden="true">42 <path d="M12 21s-7-5.4-7-11a7 7 0 0 1 14 0c0 5.6-7 11-7 11Z" />43 <circle cx="12" cy="10" r="2.6" />44 </svg>45);4647export const IcoTag = ({ size = 18, strokeWidth = 2 }: IcoProps) => (48 <svg {...base(size)} strokeWidth={strokeWidth} aria-hidden="true">49 <path d="M3 3h8l10 10-8 8L3 11Z" />50 <circle cx="8" cy="8" r="1.6" />51 </svg>52);5354export const IcoClock = ({ size = 18, strokeWidth = 2 }: IcoProps) => (55 <svg {...base(size)} strokeWidth={strokeWidth} aria-hidden="true">56 <circle cx="12" cy="12" r="9" />57 <path d="M12 7v5l3.2 2" />58 </svg>59);6061export const IcoCompass = ({ size = 18, strokeWidth = 2 }: IcoProps) => (62 <svg {...base(size)} strokeWidth={strokeWidth} aria-hidden="true">63 <circle cx="12" cy="12" r="9" />64 <path d="m15.5 8.5-2 5-5 2 2-5Z" />65 </svg>66);6768export const IcoLeaf = ({ size = 18, strokeWidth = 2 }: IcoProps) => (69 <svg {...base(size)} strokeWidth={strokeWidth} aria-hidden="true">70 <path d="M5 19C5 9 12 4 20 4c0 8-5 15-15 15Z" />71 <path d="M5 19c3-5 7-8 11-10" />72 </svg>73);7475export const IcoBag = ({ size = 18, strokeWidth = 2 }: IcoProps) => (76 <svg {...base(size)} strokeWidth={strokeWidth} aria-hidden="true">77 <path d="M6 8h12l-1 12H7L6 8Z" />78 <path d="M9 8a3 3 0 0 1 6 0" />79 </svg>80);8182export const IcoHeart = ({ size = 18, strokeWidth = 2 }: IcoProps) => (83 <svg {...base(size)} strokeWidth={strokeWidth} aria-hidden="true">84 <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" />85 </svg>86);87