arevdata 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +499 -0
- package/dist/arevdata.cjs +38955 -0
- package/dist/arevdata.cjs.map +1 -0
- package/dist/arevdata.js +38955 -0
- package/dist/arevdata.js.map +1 -0
- package/dist/assets/flags/LICENSE.flag-icons.txt +21 -0
- package/dist/assets/flags/README.md +11 -0
- package/dist/assets/flags/index.html +88 -0
- package/dist/assets/flags/overrides/xn.svg +6 -0
- package/dist/assets/flags/svg/ad.svg +150 -0
- package/dist/assets/flags/svg/ae.svg +6 -0
- package/dist/assets/flags/svg/af.svg +81 -0
- package/dist/assets/flags/svg/ag.svg +14 -0
- package/dist/assets/flags/svg/al.svg +5 -0
- package/dist/assets/flags/svg/am.svg +5 -0
- package/dist/assets/flags/svg/ao.svg +13 -0
- package/dist/assets/flags/svg/ar.svg +32 -0
- package/dist/assets/flags/svg/at.svg +4 -0
- package/dist/assets/flags/svg/au.svg +8 -0
- package/dist/assets/flags/svg/az.svg +8 -0
- package/dist/assets/flags/svg/ba.svg +12 -0
- package/dist/assets/flags/svg/bb.svg +6 -0
- package/dist/assets/flags/svg/bd.svg +4 -0
- package/dist/assets/flags/svg/be.svg +7 -0
- package/dist/assets/flags/svg/bf.svg +7 -0
- package/dist/assets/flags/svg/bg.svg +5 -0
- package/dist/assets/flags/svg/bh.svg +4 -0
- package/dist/assets/flags/svg/bi.svg +15 -0
- package/dist/assets/flags/svg/bj.svg +14 -0
- package/dist/assets/flags/svg/bn.svg +36 -0
- package/dist/assets/flags/svg/bo.svg +673 -0
- package/dist/assets/flags/svg/br.svg +45 -0
- package/dist/assets/flags/svg/bs.svg +13 -0
- package/dist/assets/flags/svg/bt.svg +89 -0
- package/dist/assets/flags/svg/bw.svg +7 -0
- package/dist/assets/flags/svg/by.svg +18 -0
- package/dist/assets/flags/svg/bz.svg +145 -0
- package/dist/assets/flags/svg/ca.svg +4 -0
- package/dist/assets/flags/svg/cd.svg +5 -0
- package/dist/assets/flags/svg/cf.svg +15 -0
- package/dist/assets/flags/svg/cg.svg +12 -0
- package/dist/assets/flags/svg/ch.svg +9 -0
- package/dist/assets/flags/svg/cl.svg +13 -0
- package/dist/assets/flags/svg/cm.svg +15 -0
- package/dist/assets/flags/svg/cn.svg +11 -0
- package/dist/assets/flags/svg/co.svg +7 -0
- package/dist/assets/flags/svg/cr.svg +7 -0
- package/dist/assets/flags/svg/cu.svg +13 -0
- package/dist/assets/flags/svg/cv.svg +13 -0
- package/dist/assets/flags/svg/cy.svg +6 -0
- package/dist/assets/flags/svg/cz.svg +5 -0
- package/dist/assets/flags/svg/de.svg +5 -0
- package/dist/assets/flags/svg/dj.svg +13 -0
- package/dist/assets/flags/svg/dk.svg +5 -0
- package/dist/assets/flags/svg/dm.svg +152 -0
- package/dist/assets/flags/svg/do.svg +121 -0
- package/dist/assets/flags/svg/dz.svg +5 -0
- package/dist/assets/flags/svg/ec.svg +138 -0
- package/dist/assets/flags/svg/ee.svg +5 -0
- package/dist/assets/flags/svg/eg.svg +38 -0
- package/dist/assets/flags/svg/er.svg +8 -0
- package/dist/assets/flags/svg/es.svg +544 -0
- package/dist/assets/flags/svg/et.svg +14 -0
- package/dist/assets/flags/svg/fi.svg +5 -0
- package/dist/assets/flags/svg/fj.svg +120 -0
- package/dist/assets/flags/svg/fm.svg +11 -0
- package/dist/assets/flags/svg/fr.svg +5 -0
- package/dist/assets/flags/svg/ga.svg +7 -0
- package/dist/assets/flags/svg/gb.svg +7 -0
- package/dist/assets/flags/svg/gd.svg +27 -0
- package/dist/assets/flags/svg/ge.svg +6 -0
- package/dist/assets/flags/svg/gh.svg +6 -0
- package/dist/assets/flags/svg/gm.svg +14 -0
- package/dist/assets/flags/svg/gn.svg +7 -0
- package/dist/assets/flags/svg/gq.svg +23 -0
- package/dist/assets/flags/svg/gr.svg +16 -0
- package/dist/assets/flags/svg/gt.svg +204 -0
- package/dist/assets/flags/svg/gw.svg +13 -0
- package/dist/assets/flags/svg/gy.svg +9 -0
- package/dist/assets/flags/svg/hn.svg +18 -0
- package/dist/assets/flags/svg/hr.svg +58 -0
- package/dist/assets/flags/svg/ht.svg +116 -0
- package/dist/assets/flags/svg/hu.svg +7 -0
- package/dist/assets/flags/svg/id.svg +4 -0
- package/dist/assets/flags/svg/ie.svg +7 -0
- package/dist/assets/flags/svg/il.svg +14 -0
- package/dist/assets/flags/svg/in.svg +25 -0
- package/dist/assets/flags/svg/iq.svg +10 -0
- package/dist/assets/flags/svg/ir.svg +219 -0
- package/dist/assets/flags/svg/is.svg +12 -0
- package/dist/assets/flags/svg/it.svg +7 -0
- package/dist/assets/flags/svg/jm.svg +8 -0
- package/dist/assets/flags/svg/jo.svg +16 -0
- package/dist/assets/flags/svg/jp.svg +11 -0
- package/dist/assets/flags/svg/ke.svg +23 -0
- package/dist/assets/flags/svg/kg.svg +4 -0
- package/dist/assets/flags/svg/kh.svg +61 -0
- package/dist/assets/flags/svg/ki.svg +36 -0
- package/dist/assets/flags/svg/km.svg +16 -0
- package/dist/assets/flags/svg/kn.svg +14 -0
- package/dist/assets/flags/svg/kp.svg +15 -0
- package/dist/assets/flags/svg/kr.svg +24 -0
- package/dist/assets/flags/svg/kw.svg +13 -0
- package/dist/assets/flags/svg/kz.svg +36 -0
- package/dist/assets/flags/svg/la.svg +12 -0
- package/dist/assets/flags/svg/lb.svg +15 -0
- package/dist/assets/flags/svg/lc.svg +8 -0
- package/dist/assets/flags/svg/li.svg +43 -0
- package/dist/assets/flags/svg/lk.svg +22 -0
- package/dist/assets/flags/svg/lr.svg +14 -0
- package/dist/assets/flags/svg/ls.svg +8 -0
- package/dist/assets/flags/svg/lt.svg +7 -0
- package/dist/assets/flags/svg/lu.svg +5 -0
- package/dist/assets/flags/svg/lv.svg +6 -0
- package/dist/assets/flags/svg/ly.svg +13 -0
- package/dist/assets/flags/svg/ma.svg +4 -0
- package/dist/assets/flags/svg/mc.svg +6 -0
- package/dist/assets/flags/svg/md.svg +70 -0
- package/dist/assets/flags/svg/me.svg +116 -0
- package/dist/assets/flags/svg/mg.svg +7 -0
- package/dist/assets/flags/svg/mh.svg +7 -0
- package/dist/assets/flags/svg/mk.svg +5 -0
- package/dist/assets/flags/svg/ml.svg +7 -0
- package/dist/assets/flags/svg/mm.svg +12 -0
- package/dist/assets/flags/svg/mn.svg +14 -0
- package/dist/assets/flags/svg/mr.svg +6 -0
- package/dist/assets/flags/svg/mt.svg +58 -0
- package/dist/assets/flags/svg/mu.svg +8 -0
- package/dist/assets/flags/svg/mv.svg +6 -0
- package/dist/assets/flags/svg/mw.svg +10 -0
- package/dist/assets/flags/svg/mx.svg +382 -0
- package/dist/assets/flags/svg/my.svg +26 -0
- package/dist/assets/flags/svg/mz.svg +21 -0
- package/dist/assets/flags/svg/na.svg +16 -0
- package/dist/assets/flags/svg/ne.svg +6 -0
- package/dist/assets/flags/svg/ng.svg +6 -0
- package/dist/assets/flags/svg/ni.svg +129 -0
- package/dist/assets/flags/svg/nl.svg +5 -0
- package/dist/assets/flags/svg/no.svg +7 -0
- package/dist/assets/flags/svg/np.svg +13 -0
- package/dist/assets/flags/svg/nr.svg +12 -0
- package/dist/assets/flags/svg/nz.svg +36 -0
- package/dist/assets/flags/svg/om.svg +115 -0
- package/dist/assets/flags/svg/pa.svg +14 -0
- package/dist/assets/flags/svg/pe.svg +4 -0
- package/dist/assets/flags/svg/pg.svg +9 -0
- package/dist/assets/flags/svg/ph.svg +6 -0
- package/dist/assets/flags/svg/pk.svg +15 -0
- package/dist/assets/flags/svg/pl.svg +6 -0
- package/dist/assets/flags/svg/ps.svg +6 -0
- package/dist/assets/flags/svg/pt.svg +57 -0
- package/dist/assets/flags/svg/pw.svg +11 -0
- package/dist/assets/flags/svg/py.svg +157 -0
- package/dist/assets/flags/svg/qa.svg +4 -0
- package/dist/assets/flags/svg/ro.svg +7 -0
- package/dist/assets/flags/svg/rs.svg +292 -0
- package/dist/assets/flags/svg/ru.svg +5 -0
- package/dist/assets/flags/svg/rw.svg +13 -0
- package/dist/assets/flags/svg/sa.svg +25 -0
- package/dist/assets/flags/svg/sb.svg +13 -0
- package/dist/assets/flags/svg/sc.svg +7 -0
- package/dist/assets/flags/svg/sd.svg +13 -0
- package/dist/assets/flags/svg/se.svg +4 -0
- package/dist/assets/flags/svg/sg.svg +13 -0
- package/dist/assets/flags/svg/si.svg +18 -0
- package/dist/assets/flags/svg/sk.svg +9 -0
- package/dist/assets/flags/svg/sl.svg +7 -0
- package/dist/assets/flags/svg/sm.svg +75 -0
- package/dist/assets/flags/svg/sn.svg +8 -0
- package/dist/assets/flags/svg/so.svg +11 -0
- package/dist/assets/flags/svg/sr.svg +6 -0
- package/dist/assets/flags/svg/ss.svg +8 -0
- package/dist/assets/flags/svg/st.svg +16 -0
- package/dist/assets/flags/svg/sv.svg +593 -0
- package/dist/assets/flags/svg/sy.svg +6 -0
- package/dist/assets/flags/svg/sz.svg +34 -0
- package/dist/assets/flags/svg/td.svg +7 -0
- package/dist/assets/flags/svg/tg.svg +14 -0
- package/dist/assets/flags/svg/th.svg +7 -0
- package/dist/assets/flags/svg/tj.svg +22 -0
- package/dist/assets/flags/svg/tl.svg +13 -0
- package/dist/assets/flags/svg/tm.svg +204 -0
- package/dist/assets/flags/svg/tn.svg +4 -0
- package/dist/assets/flags/svg/to.svg +10 -0
- package/dist/assets/flags/svg/tr.svg +8 -0
- package/dist/assets/flags/svg/tt.svg +5 -0
- package/dist/assets/flags/svg/tv.svg +9 -0
- package/dist/assets/flags/svg/tw.svg +34 -0
- package/dist/assets/flags/svg/tz.svg +13 -0
- package/dist/assets/flags/svg/ua.svg +6 -0
- package/dist/assets/flags/svg/ug.svg +30 -0
- package/dist/assets/flags/svg/us.svg +9 -0
- package/dist/assets/flags/svg/uy.svg +28 -0
- package/dist/assets/flags/svg/uz.svg +30 -0
- package/dist/assets/flags/svg/va.svg +190 -0
- package/dist/assets/flags/svg/vc.svg +8 -0
- package/dist/assets/flags/svg/ve.svg +26 -0
- package/dist/assets/flags/svg/vn.svg +11 -0
- package/dist/assets/flags/svg/vu.svg +21 -0
- package/dist/assets/flags/svg/ws.svg +7 -0
- package/dist/assets/flags/svg/xk.svg +5 -0
- package/dist/assets/flags/svg/xn.svg +6 -0
- package/dist/assets/flags/svg/ye.svg +7 -0
- package/dist/assets/flags/svg/za.svg +17 -0
- package/dist/assets/flags/svg/zm.svg +27 -0
- package/dist/assets/flags/svg/zw.svg +21 -0
- package/dist/data/languages/index.html +86 -0
- package/dist/docs/api-worker-plan/index.html +439 -0
- package/dist/docs/cities/index.html +193 -0
- package/dist/docs/continents-currencies/index.html +306 -0
- package/dist/docs/countries/index.html +274 -0
- package/dist/docs/country-maps/index.html +262 -0
- package/dist/docs/flags/index.html +300 -0
- package/dist/docs/geography/index.html +454 -0
- package/dist/docs/languages/index.html +304 -0
- package/dist/docs/phone-codes/index.html +152 -0
- package/dist/docs/states/index.html +334 -0
- package/dist/docs/world-map/index.html +345 -0
- package/dist/examples/vue-app/index.html +208 -0
- package/dist/index.html +784 -0
- package/dist/robots.txt +2 -0
- package/dist/style/app.css +1 -0
- package/dist/types/__tests__/cities.test.d.ts +1 -0
- package/dist/types/__tests__/continents.test.d.ts +1 -0
- package/dist/types/__tests__/countries.test.d.ts +1 -0
- package/dist/types/__tests__/countryMaps.test.d.ts +1 -0
- package/dist/types/__tests__/geography.test.d.ts +1 -0
- package/dist/types/__tests__/index.test.d.ts +1 -0
- package/dist/types/__tests__/phoneCodes.test.d.ts +1 -0
- package/dist/types/__tests__/states.test.d.ts +1 -0
- package/dist/types/__tests__/translations.test.d.ts +1 -0
- package/dist/types/api/index.d.ts +5 -0
- package/dist/types/api/index.test.d.ts +1 -0
- package/dist/types/api/query.d.ts +3 -0
- package/dist/types/api/response.d.ts +16 -0
- package/dist/types/api/router.d.ts +1 -0
- package/dist/types/api/routes/cities.d.ts +2 -0
- package/dist/types/api/routes/countries.d.ts +2 -0
- package/dist/types/api/routes/health.d.ts +1 -0
- package/dist/types/api/routes/maps.d.ts +1 -0
- package/dist/types/api/routes/meta.d.ts +1 -0
- package/dist/types/api/routes/phoneCodes.d.ts +1 -0
- package/dist/types/data/cities.d.ts +22 -0
- package/dist/types/data/continents.d.ts +9 -0
- package/dist/types/data/countries.d.ts +23 -0
- package/dist/types/data/countryMaps.d.ts +104 -0
- package/dist/types/data/currencies.d.ts +13 -0
- package/dist/types/data/flags.d.ts +37 -0
- package/dist/types/data/geography.d.ts +48 -0
- package/dist/types/data/languages/index.d.ts +2 -0
- package/dist/types/data/languages/language.test.d.ts +1 -0
- package/dist/types/data/languages/languageData.d.ts +6 -0
- package/dist/types/data/languages/languageFunctions.d.ts +43 -0
- package/dist/types/data/languages/translations/ar.d.ts +1189 -0
- package/dist/types/data/languages/translations/de.d.ts +1189 -0
- package/dist/types/data/languages/translations/es.d.ts +1189 -0
- package/dist/types/data/languages/translations/fr.d.ts +1189 -0
- package/dist/types/data/languages/translations/hi.d.ts +1189 -0
- package/dist/types/data/languages/translations/it.d.ts +1189 -0
- package/dist/types/data/languages/translations/ja.d.ts +1189 -0
- package/dist/types/data/languages/translations/ko.d.ts +1189 -0
- package/dist/types/data/languages/translations/nl.d.ts +1189 -0
- package/dist/types/data/languages/translations/pl.d.ts +1189 -0
- package/dist/types/data/languages/translations/pt.d.ts +1189 -0
- package/dist/types/data/languages/translations/ru.d.ts +1189 -0
- package/dist/types/data/languages/translations/tr.d.ts +1189 -0
- package/dist/types/data/languages/translations/zh.d.ts +1189 -0
- package/dist/types/data/phoneCodes.d.ts +16 -0
- package/dist/types/data/states.d.ts +18 -0
- package/dist/types/data/translations/ar.d.ts +1832 -0
- package/dist/types/data/translations/de.d.ts +2005 -0
- package/dist/types/data/translations/es.d.ts +1852 -0
- package/dist/types/data/translations/fr.d.ts +1860 -0
- package/dist/types/data/translations/hi.d.ts +1816 -0
- package/dist/types/data/translations/it.d.ts +1824 -0
- package/dist/types/data/translations/ja.d.ts +1833 -0
- package/dist/types/data/translations/ko.d.ts +1832 -0
- package/dist/types/data/translations/nl.d.ts +1826 -0
- package/dist/types/data/translations/pl.d.ts +1818 -0
- package/dist/types/data/translations/pt.d.ts +1829 -0
- package/dist/types/data/translations/ru.d.ts +1838 -0
- package/dist/types/data/translations/tr.d.ts +1818 -0
- package/dist/types/data/translations/zh.d.ts +1834 -0
- package/dist/types/data/translations.d.ts +73 -0
- package/dist/types/data/worldMap.d.ts +122 -0
- package/dist/types/index.d.ts +33 -0
- package/dist/types/types/index.d.ts +348 -0
- package/dist/types/utils/geo.d.ts +101 -0
- package/package.json +67 -0
package/dist/robots.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
body,html{width:100%;margin:0;padding:0}*{box-sizing:border-box}body{margin:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}html{background-color:var(--color-background);scroll-behavior:smooth}*{box-sizing:border-box}body{font-size:var(--font-size);font-family:Inter,system-ui,sans-serif;font-weight:400;line-height:1.7;letter-spacing:-0.01em}h1{line-height:.98;font-size:var(--font-size-xxxl);letter-spacing:-0.04em;font-weight:700}h2{line-height:1.05;font-size:var(--font-size-xxl);letter-spacing:-0.03em;font-weight:700}h3{line-height:1.15;font-size:var(--font-size-xl);letter-spacing:-0.02em;font-weight:650}h4{line-height:1.2;font-size:var(--font-size-l);font-weight:650}h6{font-size:var(--font-size-xs);color:inherit;letter-spacing:.08em;font-weight:600;text-transform:uppercase}pre code{font-size:var(--font-size-s)}pre[class^=language]{position:relative;border:var(--border-width-s) solid color-mix(in srgb, var(--color-foreground) 12%, transparent);background:color-mix(in srgb, var(--color-background) 96%, var(--color-foreground) 4%);color:var(--color-foreground);padding:var(--code-padding, var(--space));border-radius:var(--border-radius-s);overflow:scroll}pre[class^=language]::before{content:"";display:block;background-color:rgba(0,0,0,0);color:inherit;position:absolute;right:var(--space-s);top:var(--code-label-offset, var(--space-xs));padding:0;line-height:1;font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;opacity:.45}pre[class^=language].language-json::before{content:"json"}pre[class^=language].language-bash::before{content:"bash"}pre[class^=language].language-ejs::before{content:"ejs"}pre[class^=language].language-scss::before{content:"scss"}pre[class^=language].language-ts::before{content:"ts"}pre[class^=language].language-scss::before{content:"scss"}pre[class^=language].language-js::before{content:"js"}pre[class^=language].language-vue::before{content:"vue"}pre[class^=language].language-css::before{content:"css"}pre[class^=language].language-markdown::before{content:"markdown"}:not(pre)>code{font-size:var(--font-size-s);background:color-mix(in srgb, var(--color-background) 94%, var(--color-foreground) 6%);border:var(--border-width-s) solid color-mix(in srgb, var(--color-foreground) 12%, transparent);color:inherit;padding:var(--space-xxs) var(--space-xs);border-radius:var(--border-radius-s);white-space:normal}code[class*=language-]{font-family:Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{font-family:Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;overflow:auto}:root{--lightness: 30%}body[color-mode=dark]{--lightness: 70%}.token.content{all:unset}.token.comment{opacity:.33}.token.prolog{opacity:.75}.token.doctype{opacity:.75}.token.cdata{opacity:.75}.token.punctuation{opacity:.25}.token.namespace{opacity:.7}.token.property{color:hsl(0deg, 0%, var(--lightness))}.token.tag{color:hsl(0deg, 0%, var(--lightness))}.token.boolean{color:hsl(0deg, 0%, var(--lightness))}.token.number{color:hsl(0deg, 0%, var(--lightness))}.token.constant{color:hsl(0deg, 0%, var(--lightness))}.token.symbol{color:hsl(0deg, 0%, var(--lightness))}.token.deleted{color:hsl(0deg, 0%, var(--lightness))}.token.selector{color:hsl(0deg, 0%, var(--lightness))}.token.attr-name{color:hsl(0deg, 0%, var(--lightness))}.token.string{color:hsl(0deg, 0%, var(--lightness))}.token.char{color:hsl(0deg, 0%, var(--lightness))}.token.builtin{color:hsl(0deg, 0%, var(--lightness))}.token.inserted{color:hsl(0deg, 0%, var(--lightness))}.token.operator{color:hsl(0deg, 0%, var(--lightness))}.token.entity{color:hsl(0deg, 0%, var(--lightness));cursor:help}.token.url{color:hsl(0deg, 0%, var(--lightness))}.token .language-css.string{color:hsl(0deg, 0%, var(--lightness))}.token .style.string{color:hsl(0deg, 0%, var(--lightness))}.token.atrule{color:hsl(0deg, 0%, var(--lightness))}.token.attr-value{color:hsl(0deg, 0%, var(--lightness))}.token.keyword{color:hsl(0deg, 0%, var(--lightness))}.token.function{color:hsl(0deg, 0%, var(--lightness))}.token.class-name{color:hsl(0deg, 0%, var(--lightness))}.token.regex{color:hsl(0deg, 0%, var(--lightness))}.token.important{color:hsl(0deg, 0%, var(--lightness));font-weight:bold}.token.variable{color:hsl(0deg, 0%, var(--lightness))}.token.bold{font-weight:bold}.token.italic{font-style:italic}main .section .container{width:min(100%,var(--layout-width));margin:0 auto;padding:0 var(--space)}main .section{padding:var(--space-xxl) 0}.content{max-width:var(--content-width);margin:0 auto}main .section.archive .container,main .section.tags .container{width:min(100%,var(--layout-width))}.page-container{min-height:100svh}body{background-color:var(--color-background);color:var(--color-foreground)}body[color-mode=dark]{--color-dark: #0a0a0a;--color-dark-contrast: var(--color-light);--color-light: #ffffff;--color-light-contrast: var(--color-dark);--color-red: #c44747;--color-red-contrast: var(--color-light);--color-blue: #3f63dd;--color-blue-contrast: var(--color-light);--color-green: #3f8f5b;--color-green-contrast: var(--color-light);--color-yellow: #d1ab36;--color-yellow-contrast: var(--color-light);--color-orange: #d57b28;--color-orange-contrast: var(--color-light);--color-purple: #7655d8;--color-purple-contrast: var(--color-light);--color-pink: #d668a4;--color-pink-contrast: var(--color-light);--color-lime: #8bab2a;--color-lime-contrast: var(--color-light);--color-brown: #8c6343;--color-brown-contrast: var(--color-light);--color-gray: #767676;--color-gray-contrast: var(--color-light);--color-magenta: #b64cb0;--color-magenta-contrast: var(--color-light);--color-beige: #d7c1a2;--color-beige-contrast: var(--color-dark);--color-primary: #c44747;--color-primary-contrast: var(--color-light);--color-secondary: #3f63dd;--color-secondary-contrast: var(--color-light);--color-background: #0a0a0a;--color-background-contrast: var(--color-light);--color-foreground: #ffffff;--color-foreground-contrast: var(--color-dark);--color-error: #c44747;--color-error-contrast: var(--color-light);--color-info: #3f63dd;--color-info-contrast: var(--color-light);--color-warning: #d57b28;--color-warning-contrast: var(--color-light);--color-success: #3f8f5b;--color-success-contrast: var(--color-light);}body[color-mode=light]{--color-dark: #0a0a0a;--color-dark-contrast: var(--color-light);--color-light: #ffffff;--color-light-contrast: var(--color-dark);--color-red: #c44747;--color-red-contrast: var(--color-light);--color-blue: #3f63dd;--color-blue-contrast: var(--color-light);--color-green: #3f8f5b;--color-green-contrast: var(--color-light);--color-yellow: #d1ab36;--color-yellow-contrast: var(--color-light);--color-orange: #d57b28;--color-orange-contrast: var(--color-light);--color-purple: #7655d8;--color-purple-contrast: var(--color-light);--color-pink: #d668a4;--color-pink-contrast: var(--color-light);--color-lime: #8bab2a;--color-lime-contrast: var(--color-light);--color-brown: #8c6343;--color-brown-contrast: var(--color-light);--color-gray: #767676;--color-gray-contrast: var(--color-light);--color-magenta: #b64cb0;--color-magenta-contrast: var(--color-light);--color-beige: #d7c1a2;--color-beige-contrast: var(--color-dark);--color-primary: #c44747;--color-primary-contrast: var(--color-light);--color-secondary: #3f63dd;--color-secondary-contrast: var(--color-light);--color-background: #ffffff;--color-background-contrast: var(--color-dark);--color-foreground: #0a0a0a;--color-foreground-contrast: var(--color-light);--color-error: #c44747;--color-error-contrast: var(--color-light);--color-info: #3f63dd;--color-info-contrast: var(--color-light);--color-warning: #d57b28;--color-warning-contrast: var(--color-light);--color-success: #3f8f5b;--color-success-contrast: var(--color-light);}@media(prefers-color-scheme: dark){:root{--color-dark: #0a0a0a;--color-dark-contrast: var(--color-light);--color-light: #ffffff;--color-light-contrast: var(--color-dark);--color-red: #c44747;--color-red-contrast: var(--color-light);--color-blue: #3f63dd;--color-blue-contrast: var(--color-light);--color-green: #3f8f5b;--color-green-contrast: var(--color-light);--color-yellow: #d1ab36;--color-yellow-contrast: var(--color-light);--color-orange: #d57b28;--color-orange-contrast: var(--color-light);--color-purple: #7655d8;--color-purple-contrast: var(--color-light);--color-pink: #d668a4;--color-pink-contrast: var(--color-light);--color-lime: #8bab2a;--color-lime-contrast: var(--color-light);--color-brown: #8c6343;--color-brown-contrast: var(--color-light);--color-gray: #767676;--color-gray-contrast: var(--color-light);--color-magenta: #b64cb0;--color-magenta-contrast: var(--color-light);--color-beige: #d7c1a2;--color-beige-contrast: var(--color-dark);--color-primary: #c44747;--color-primary-contrast: var(--color-light);--color-secondary: #3f63dd;--color-secondary-contrast: var(--color-light);--color-background: #0a0a0a;--color-background-contrast: var(--color-light);--color-foreground: #ffffff;--color-foreground-contrast: var(--color-dark);--color-error: #c44747;--color-error-contrast: var(--color-light);--color-info: #3f63dd;--color-info-contrast: var(--color-light);--color-warning: #d57b28;--color-warning-contrast: var(--color-light);--color-success: #3f8f5b;--color-success-contrast: var(--color-light);}}@media(prefers-color-scheme: light){:root{--color-dark: #0a0a0a;--color-dark-contrast: var(--color-light);--color-light: #ffffff;--color-light-contrast: var(--color-dark);--color-red: #c44747;--color-red-contrast: var(--color-light);--color-blue: #3f63dd;--color-blue-contrast: var(--color-light);--color-green: #3f8f5b;--color-green-contrast: var(--color-light);--color-yellow: #d1ab36;--color-yellow-contrast: var(--color-light);--color-orange: #d57b28;--color-orange-contrast: var(--color-light);--color-purple: #7655d8;--color-purple-contrast: var(--color-light);--color-pink: #d668a4;--color-pink-contrast: var(--color-light);--color-lime: #8bab2a;--color-lime-contrast: var(--color-light);--color-brown: #8c6343;--color-brown-contrast: var(--color-light);--color-gray: #767676;--color-gray-contrast: var(--color-light);--color-magenta: #b64cb0;--color-magenta-contrast: var(--color-light);--color-beige: #d7c1a2;--color-beige-contrast: var(--color-dark);--color-primary: #c44747;--color-primary-contrast: var(--color-light);--color-secondary: #3f63dd;--color-secondary-contrast: var(--color-light);--color-background: #ffffff;--color-background-contrast: var(--color-dark);--color-foreground: #0a0a0a;--color-foreground-contrast: var(--color-light);--color-error: #c44747;--color-error-contrast: var(--color-light);--color-info: #3f63dd;--color-info-contrast: var(--color-light);--color-warning: #d57b28;--color-warning-contrast: var(--color-light);--color-success: #3f8f5b;--color-success-contrast: var(--color-light);}}:root{--spacing: clamp(0.95rem, 0.7rem + 0.9vw, 1.25rem);--space: var(--spacing);--space-xxs: calc(var(--space) * 0.25);--space-xs: calc(var(--space) * 0.5);--space-s: calc(var(--space) * 0.75);--space-l: calc(var(--space) * 1.5);--space-xl: calc(var(--space) * 2.5);--space-xxl: calc(var(--space) * 4);--font-size: 1.0625rem;--font-size-xs: calc(var(--font-size) * 0.75);--font-size-s: calc(var(--font-size) * 0.875);--font-size-l: calc(var(--font-size) * 1.125);--font-size-xl: calc(var(--font-size) * 1.35);--font-size-xxl: calc(var(--font-size) * 2.4);--font-size-xxxl: calc(var(--font-size) * 4.5);--font-size-lead: calc(var(--font-size) * 1.4);--border-radius: 0.375rem;--border-radius-s: calc(var(--border-radius) * 0.5);--border-radius-m: var(--border-radius);--border-radius-l: calc(var(--border-radius) * 2);--border-radius-round: 999px;--border-width: 1px;--border-width-s: var(--border-width);--border-width-m: calc(var(--border-width) * 2);--layout-width: calc(var(--font-size) * 82);--content-width: 72ch}.header{position:sticky;top:0;z-index:30;background-color:var(--color-background);border-bottom:var(--border-width-s) solid color-mix(in srgb, var(--color-foreground) 12%, transparent)}.header__container{position:static;width:min(100%,var(--layout-width));margin:0 auto;padding:var(--header-padding-y, var(--space-s)) var(--header-padding-x, var(--space));display:flex;justify-content:space-between;align-items:center;color:var(--color-foreground);gap:var(--header-gap, var(--space-l))}@media screen and (max-width: 720px){.header__container{flex-wrap:wrap;align-items:flex-start}}.footer{border-top:var(--border-width-s) solid color-mix(in srgb, var(--color-foreground) 12%, transparent);background-color:color-mix(in srgb, var(--color-background) 94%, var(--color-foreground) 6%)}.footer__container{width:min(100%,var(--layout-width));margin:0 auto;padding:var(--footer-padding-y, var(--space-xl)) var(--footer-padding-x, var(--space));display:grid;gap:var(--space-s)}.footer__navigation{width:100%;padding-bottom:var(--space-s);border-bottom:var(--border-width-s) solid color-mix(in srgb, var(--color-foreground) 12%, transparent)}.footer__controls{display:flex;justify-content:flex-start;flex-wrap:wrap;align-items:center;gap:var(--footer-gap, var(--space-l))}.footer__control{display:flex;align-items:center;gap:var(--space-s)}.footer__label{font-size:var(--font-size-xs);letter-spacing:.08em;opacity:.6}.footer__meta{padding-top:var(--space-s);border-top:var(--border-width-s) solid color-mix(in srgb, var(--color-foreground) 12%, transparent);display:flex;justify-content:space-between;align-items:center;gap:var(--space);flex-wrap:wrap}.footer .copyright{font-size:var(--font-size-s);opacity:.65}.footer .navigation{width:100%;margin-left:0}.footer .navigation__list{justify-content:flex-start}.socials{list-style-type:none;margin:0;padding:0;display:flex;gap:var(--space-s)}.socials__link{font-size:var(--font-size-s);color:inherit;text-decoration:none;opacity:.75;border-bottom:var(--border-width-s) solid rgba(0,0,0,0)}.socials__link:hover{opacity:1;border-bottom-color:currentColor}.color-mode-toggle{display:inline-flex;align-items:center;gap:var(--color-mode-gap, var(--space-xxs));padding:0;border:none;background:rgba(0,0,0,0);color:inherit;cursor:pointer;font:inherit;opacity:.75}.color-mode-toggle__value{font-size:var(--font-size);border-bottom:var(--border-width-s) solid rgba(0,0,0,0)}.color-mode-toggle:hover{opacity:1}.color-mode-toggle:hover .color-mode-toggle__value{border-bottom-color:var(--color-primary)}.navigation{font-size:var(--font-size)}.navigation__list,.navigation__item,.navigation__groups,.navigation__group{list-style-type:none;margin:0;padding:0}.navigation__entry{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xxs) var(--space-s);border-radius:var(--border-radius-s);transition:background-color .2s ease,color .2s ease}.navigation__mobile-toggle{display:none;align-items:center;gap:var(--space-xs);padding:0;border:none;background:rgba(0,0,0,0);color:inherit;font:inherit;font-weight:600;cursor:pointer}.navigation__mobile-toggle-icon{position:relative;display:inline-block;width:var(--space);height:calc(var(--space)*.75);border-top:var(--border-width-s) solid currentColor;border-bottom:var(--border-width-s) solid currentColor}.navigation__mobile-toggle-icon::before{content:"";position:absolute;top:50%;left:0;width:100%;border-top:var(--border-width-s) solid currentColor;transform:translateY(-50%)}.navigation__link{display:inline-flex;align-items:center;padding:0;color:inherit;text-decoration:none;opacity:.86;font-weight:600;line-height:1.2;transition:color .2s ease,opacity .2s ease}.navigation__link:hover{opacity:1}.navigation__item:hover>.navigation__entry,.navigation__item:focus-within>.navigation__entry{background-color:color-mix(in srgb, var(--color-secondary), transparent 88%)}.navigation__item--current>.navigation__entry,.navigation__item--parent>.navigation__entry,.navigation__item--open>.navigation__entry{background-color:color-mix(in srgb, var(--color-secondary), transparent 75%)}.navigation__item--current>.navigation__entry>.navigation__link,.navigation__item--parent>.navigation__entry>.navigation__link{opacity:1}.navigation__toggle{appearance:none;display:inline-flex;align-items:center;justify-content:center;width:var(--space-s);height:var(--space-s);padding:0;border:none;background:rgba(0,0,0,0);color:inherit;cursor:pointer;opacity:.55;transition:opacity .2s ease,transform .2s ease}.navigation__toggle:hover,.navigation__toggle:focus-visible{opacity:1}.navigation__toggle::before{content:"";width:.5em;height:.5em;border-right:var(--border-width-s) solid currentColor;border-bottom:var(--border-width-s) solid currentColor;transform:translateY(-12%) rotate(45deg)}.navigation__item--open>.navigation__entry>.navigation__toggle{opacity:1}.navigation__item--open>.navigation__entry>.navigation__toggle::before{transform:translateY(12%) rotate(-135deg)}.navigation__panel,.navigation__list--sub{display:none}.navigation__groups{display:grid;gap:var(--space-xs)}.navigation__group{display:grid;gap:var(--space-xs);align-content:start}.navigation__group-link{width:fit-content;display:inline-flex;align-items:center;color:inherit;text-decoration:none;padding:var(--space-xxs) 0;opacity:.88;font-weight:500;transition:opacity .2s ease}.navigation__group-link:hover{opacity:1}.navigation__group-link--heading,.navigation__group--current>.navigation__group-link,.navigation__group--parent>.navigation__group-link{opacity:1}.navigation__group-link--heading{font-size:var(--font-size);line-height:1.2;font-weight:600}.navigation--header{margin-left:auto;position:relative;display:flex;align-items:center;justify-content:flex-end;gap:var(--space-s)}.navigation--header .navigation__list{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:var(--navigation-gap, var(--space-s))}.navigation--header .navigation__item{position:static}.navigation--header .navigation__panel{position:absolute;top:100%;right:0;left:auto;z-index:20;width:min(100vw - var(--space)*2,58rem);margin-top:var(--space-xs);border:var(--border-width-s) solid color-mix(in srgb, var(--color-foreground) 12%, transparent);background-color:var(--color-background);box-shadow:0 var(--space-xs) var(--space) color-mix(in srgb, var(--color-foreground) 8%, transparent)}.navigation--header .navigation__item--open>.navigation__panel{display:block}.navigation--header .navigation__panel-inner{width:100%;margin:0;padding:var(--space) var(--space)}.navigation--header .navigation__groups--level-1{grid-template-columns:repeat(2, minmax(14rem, 1fr));gap:var(--space)}.navigation--header .navigation__groups--level-2,.navigation--header .navigation__groups--level-3,.navigation--header .navigation__groups--level-4,.navigation--header .navigation__groups--level-5{gap:var(--space-xs)}@media screen and (max-width: 720px){.navigation--header .navigation__panel{position:static;width:100%;margin-top:0;border:none;box-shadow:none;background:rgba(0,0,0,0)}.navigation--header .navigation__panel-inner{width:100%;padding:var(--space-xs) 0 0 var(--space)}.navigation--header .navigation__groups--level-1{grid-template-columns:1fr;gap:var(--space-s)}}@media screen and (max-width: 720px){.navigation--mobile-panel .navigation__mobile-toggle{display:inline-flex}.navigation--mobile-panel .navigation__list{display:none;position:absolute;top:calc(100% + var(--space-xs));right:0;width:min(24rem,100vw - var(--space)*2);max-height:min(32rem,100dvh - 6rem);overflow-y:auto;padding:var(--space-s) var(--space);border:var(--border-width-s) solid color-mix(in srgb, var(--color-foreground) 12%, transparent);background-color:var(--color-background);box-shadow:0 var(--space-xs) var(--space) color-mix(in srgb, var(--color-foreground) 8%, transparent);flex-direction:column;align-items:stretch;gap:var(--space-xxs);border-radius:var(--border-radius-s)}.navigation--mobile-panel.navigation--mobile-open .navigation__list{display:flex}.navigation--mobile-panel .navigation__item{width:100%}.navigation--mobile-panel .navigation__entry{width:100%;justify-content:space-between;padding:var(--space-xs) var(--space-s)}.navigation--mobile-panel .navigation__link{width:100%;padding:0}}@media screen and (max-width: 720px){.navigation--mobile-inline .navigation__list{width:auto;justify-content:flex-end;flex-direction:row;align-items:center;gap:var(--space-xs)}.navigation--mobile-inline .navigation__entry{width:auto;justify-content:flex-start}}.navigation--footer{width:100%;margin-left:0}.navigation--footer .navigation__footer-list,.navigation--footer .navigation__footer-item{list-style-type:none;margin:0;padding:0}.navigation--footer .navigation__footer-list--level-0{display:grid;grid-template-columns:repeat(auto-fit, minmax(16ch, 1fr));gap:var(--space-xl)}.navigation--footer .navigation__footer-list--level-1,.navigation--footer .navigation__footer-list--level-2,.navigation--footer .navigation__footer-list--level-3,.navigation--footer .navigation__footer-list--level-4,.navigation--footer .navigation__footer-list--level-5{display:grid;gap:var(--space-xs);margin-top:var(--space-s)}.navigation--footer .navigation__footer-link{width:fit-content;color:inherit;text-decoration:none;opacity:.78;border-bottom:var(--border-width-s) solid rgba(0,0,0,0);transition:opacity .2s ease,border-color .2s ease}.navigation--footer .navigation__footer-link:hover{opacity:1;border-bottom-color:currentColor}.navigation--footer .navigation__footer-link--heading{opacity:1;font-weight:600}.navigation--footer .navigation__footer-item--current>.navigation__footer-link,.navigation--footer .navigation__footer-item--parent>.navigation__footer-link{opacity:1}@media screen and (max-width: 720px){.navigation--footer .navigation__footer-list--level-0{grid-template-columns:1fr;gap:var(--space-l)}}.logo{color:inherit;text-decoration:none;display:inline-flex;align-items:center}.logo__text{font-size:var(--font-size-s);font-weight:700;letter-spacing:.18em;text-transform:uppercase}.logo--image-only svg{display:block;width:auto;max-width:var(--logo-max-width, calc(var(--space) * 6.5));height:var(--logo-height, calc(var(--space) * 1.1))}.logo--image-only svg path,.logo--image-only svg rect,.logo--image-only svg circle,.logo--image-only svg text{fill:var(--color-foreground)}.content ol,.content ul:not([class]),.content li:not([class]){list-style-type:none;padding:0}.content ol:not([class]){counter-reset:list}.content ol:not([class]) li{position:relative;counter-increment:list;padding-left:var(--list-indent, var(--space-l))}.content ol:not([class]) li::before{position:absolute;left:0;width:var(--list-marker-width, var(--space));content:counter(list) ".";opacity:.45}.content ol:not([class]) li+li{margin-top:var(--list-item-gap, var(--space-s))}.content ul:not([class]) li{position:relative;padding-left:var(--list-indent, var(--space-l))}.content ul:not([class]) li::before{position:absolute;left:0;width:var(--list-marker-width, var(--space));content:"—";opacity:.45}.content ul:not([class]) li+li{margin-top:var(--list-item-gap, var(--space-s))}.content table{width:100%;margin-left:0;font-size:var(--font-size-s);border-collapse:collapse}.content table th,.content table td{padding:var(--space-s) var(--space);vertical-align:top}@media screen and (min-width: 720px){.content table tr td{border-top:var(--border-width-s) solid color-mix(in srgb, var(--color-foreground) 12%, transparent)}}@media screen and (max-width: 720px){.content table tr{border-top:var(--border-width-s) solid color-mix(in srgb, var(--color-foreground) 12%, transparent)}}.content table thead th{text-align:left;color:inherit}@media screen and (max-width: 720px){.content table thead{display:none}}@media screen and (max-width: 720px){.content table tbody tr{display:flex;flex-direction:column;width:100%}.content table tbody tr+tr{margin-top:var(--space)}.content table tbody td{margin:0;width:100%;display:flex}.content table tbody td::before{display:block;content:attr(data-label);color:inherit;opacity:.55;width:33.33%}}.content{padding:0}.content>:first-child{margin-top:0}.content hr{margin:var(--space-xxl) 0;color:color-mix(in srgb, var(--color-foreground) 12%, transparent);background-color:color-mix(in srgb, var(--color-foreground) 12%, transparent);border:none;height:var(--border-width-s)}.content dl dt{font-weight:bold}.content dl dd{margin-top:var(--space-xs)}.content svg rect:not([fill]):not([style]):not([class]),.content svg path:not([fill]):not([style]):not([class]),.content svg circle:not([fill]):not([style]):not([class]){fill:currentColor}.content a{text-decoration:none;color:inherit;border-bottom:var(--border-width-s) solid currentColor}.content *{margin:0;margin-top:1em}.content p:first-of-type:has(+p){font-size:var(--font-size-lead);line-height:1.4;max-width:var(--content-lead-width, 42ch)}.content p{max-width:var(--content-copy-width, 72ch);opacity:.9}.content h1+p,.content h1+figure+p{margin-top:var(--content-inline-gap, var(--space-l))}.content h2,.content h3,.content h4{margin-top:var(--space-xl)}.content h6+h1,.content h6+h2,.content h6+h3,.content h6+h4,.content h6+h5{margin-top:0}.content img{max-width:100%;margin-left:0;border-radius:0}.content h1{margin:0}.content pre{margin-left:0;margin-right:0;overflow:auto}.content blockquote{margin-left:0;padding-left:var(--space);border-left:var(--border-width-m) solid var(--color-foreground)}.language,.language__item{list-style-type:none;margin:0;padding:0}.language{display:flex;gap:var(--language-gap, var(--space-s))}.language__item--active .language__link{opacity:1;border-bottom-color:currentColor}.language__link{display:block;line-height:1.2;color:inherit;font-weight:600;font-size:var(--font-size-xs);text-decoration:none;text-transform:uppercase;text-align:center;opacity:.7;border-bottom:var(--border-width-s) solid rgba(0,0,0,0);padding-bottom:var(--language-padding-bottom, var(--space-xxs))}.language__link:hover{opacity:1;border-bottom-color:currentColor}.archive--section{padding:var(--space-xxl) 0 0;border-top:var(--border-width-s) solid color-mix(in srgb, var(--color-foreground) 12%, transparent)}.archive-grid{list-style:none;margin:var(--space-xl) 0 0;padding:0;display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:var(--space) var(--space)}.archive-grid--blog{grid-template-columns:repeat(auto-fit, minmax(var(--archive-column-min-width, calc(var(--font-size) * 20)), 1fr));gap:var(--space-xl)}@media screen and (max-width: 840px){.archive-grid{grid-template-columns:1fr}}.section--related .content{margin-bottom:var(--space-xl)}.archive-card{margin:0;border:var(--border-width-s) solid color-mix(in srgb, var(--color-foreground) 12%, transparent);border-radius:var(--border-radius-s);background-color:color-mix(in srgb, var(--color-background) 94%, var(--color-foreground) 6%);overflow:hidden;transition:border-color .2s ease,background-color .2s ease,transform .2s ease}.archive-card__link{display:grid;grid-template-columns:auto 1fr;align-items:start;gap:var(--card-gap, var(--space));height:100%;padding:var(--card-padding, var(--space));text-decoration:none;color:var(--color-foreground);transition:background-color .2s ease,opacity .2s ease}.archive-card:hover{border-color:color-mix(in srgb, var(--color-foreground) 20%, transparent);background-color:color-mix(in srgb, var(--color-background) 90%, var(--color-foreground) 10%);transform:translateY(calc(var(--space-xxs) * -1))}.archive-card__link:hover{opacity:1}.archive-card__media{display:flex;align-items:center;justify-content:center}.archive-card__media--icon{width:var(--card-icon-size, var(--space-xxl));height:var(--card-icon-size, var(--space-xxl));border:var(--border-width-s) solid color-mix(in srgb, var(--color-foreground) 12%, transparent);border-radius:var(--border-radius-s);background-color:color-mix(in srgb, var(--color-foreground) 4%, transparent)}.archive-card__media--image{min-height:var(--card-media-min-height, calc(var(--space) * 12));overflow:hidden;margin-bottom:var(--space)}.archive-card__icon{width:var(--card-icon-inner-size, var(--space-s));height:var(--card-icon-inner-size, var(--space-s));object-fit:contain;opacity:.85}.archive-card__image{display:block;width:100%;height:100%;object-fit:cover}.archive-card__body{display:grid;gap:var(--card-row-gap, var(--space-xs));padding:0}.archive-card__title,.archive-card__meta,.archive-card__excerpt{margin:0}.archive-card__title{font-size:var(--font-size-l);line-height:1.2;color:var(--color-foreground)}.archive-card__meta{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.08em;opacity:.6}.archive-card__excerpt{opacity:.84;max-width:var(--card-copy-width, 60ch);color:color-mix(in srgb, var(--color-foreground), transparent 18%)}.archive-card--blog{border:none;background:rgba(0,0,0,0)}.archive-card--blog .archive-card__link{grid-template-columns:1fr;gap:var(--card-blog-gap, var(--space))}.archive-card--blog .archive-card__media--image{justify-content:flex-start}.archive-card--blog .archive-card__body{gap:var(--space-xs)}.section.tags{background-color:color-mix(in srgb, var(--color-background) 94%, var(--color-foreground) 6%);padding:var(--space-xl) 0}.tag__list{display:flex;align-items:center;justify-content:center;list-style-type:none;margin:0;padding:0;flex-wrap:wrap;gap:var(--space-s)}.tag__link{text-decoration:none;border-bottom:var(--border-width-s) solid rgba(0,0,0,0);padding:var(--tag-padding-y, var(--space-xxs)) 0;color:inherit;font-size:var(--font-size-s)}.tag__link::before{content:"#";opacity:.55}.tag__link:hover{border-bottom-color:currentColor}@keyframes coming-in{from{opacity:0;transform:scale(0.98) translateY(50px)}to{opacity:1;transform:scale(1) translateX(0%)}}@keyframes coming-in-section{from{transform:translateY(var(--y))}to{transform:translateY(0%)}}@keyframes going-away{from{opacity:1;transform:scale(1) translateX(0)}to{opacity:0;transform:scale(0.98) translateY(-50px)}}@keyframes going-away-section{from{transform:translateY(0%)}to{transform:translateY(var(--y))}}.main .section:nth-of-type(1){--y: 50px}.main .section:nth-of-type(2){--y: 100px}.main .section:nth-of-type(3){--y: 150px}.main .section:nth-of-type(4){--y: 200px}.main .section:nth-of-type(5){--y: 250px}.coming-in .main{animation:coming-in .33s ease-in-out forwards}.coming-in .main .section{animation:coming-in-section .33s ease-in-out forwards}.going-away .main{animation:going-away .33s ease-in-out forwards}.going-away .main .section{animation:going-away-section .33s ease-in-out forwards}.task-list{list-style-type:none;margin:0;padding:0}.task-list__label{align-items:center;display:flex}.task-list__label::before{content:"";display:block;width:1.5em;height:1.5em;border-radius:var(--border-radius-round);border:var(--border-width-m) solid color-mix(in srgb, var(--color-foreground) 25%, transparent);margin:var(--space-s);text-align:center;line-height:1.5em}.task-list__input{width:0;height:0;position:absolute}.task-list__input:checked~.task-list__label::before{background-color:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-contrast);content:"✓"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface JsonSuccessBody<T> {
|
|
2
|
+
data: T;
|
|
3
|
+
meta?: Record<string, unknown>;
|
|
4
|
+
}
|
|
5
|
+
export interface JsonErrorBody {
|
|
6
|
+
error: {
|
|
7
|
+
code: string;
|
|
8
|
+
message: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare function json<T>(body: JsonSuccessBody<T> | JsonErrorBody, init?: ResponseInit): Response;
|
|
12
|
+
export declare function ok<T>(data: T, meta?: Record<string, unknown>, init?: ResponseInit): Response;
|
|
13
|
+
export declare function error(status: number, code: string, message: string, init?: ResponseInit): Response;
|
|
14
|
+
export declare function methodNotAllowed(allow?: string): Response;
|
|
15
|
+
export declare function notFound(message?: string): Response;
|
|
16
|
+
export declare function noContent(init?: ResponseInit): Response;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function routeRequest(request: Request): Promise<Response>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function handleHealthRoute(): Response;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function handleWorldMapRoute(request: Request): Response;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function handleMetaRoute(): Response;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function handlePhoneCodesCollection(request: Request): Response;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { City } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Major world cities with geographic and demographic data.
|
|
4
|
+
* Includes the largest cities by population and all national capitals.
|
|
5
|
+
*/
|
|
6
|
+
export declare const cities: City[];
|
|
7
|
+
/**
|
|
8
|
+
* Get cities for a specific country.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getCitiesByCountry(countryCode: string, lang?: string): City[];
|
|
11
|
+
/**
|
|
12
|
+
* Get the capital city of a country.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getCapitalCity(countryCode: string, lang?: string): City | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Get cities sorted by population (largest first).
|
|
17
|
+
*/
|
|
18
|
+
export declare function getCitiesByPopulation(limit?: number, lang?: string): City[];
|
|
19
|
+
/**
|
|
20
|
+
* Search cities by name (case-insensitive partial match).
|
|
21
|
+
*/
|
|
22
|
+
export declare function searchCities(query: string, lang?: string): City[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Continent } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* The seven continents with key metadata.
|
|
4
|
+
*/
|
|
5
|
+
export declare const continents: Continent[];
|
|
6
|
+
/**
|
|
7
|
+
* Get a continent by its two-letter code.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getContinentByCode(code: string, lang?: string): Continent | undefined;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Country } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Complete list of world countries with ISO codes, flags, phone codes, and metadata.
|
|
4
|
+
* Based on ISO 3166-1 standard.
|
|
5
|
+
*/
|
|
6
|
+
export declare const countries: Country[];
|
|
7
|
+
/**
|
|
8
|
+
* Get a country by its ISO 3166-1 alpha-2 code.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getCountryByCode(code: string, lang?: string): Country | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Get countries by continent.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getCountriesByContinent(continent: Country["continent"], lang?: string): Country[];
|
|
15
|
+
/**
|
|
16
|
+
* Get a country's flag emoji by its ISO 3166-1 alpha-2 code.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getCountryFlag(alpha2: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Get all officially recognized sovereign countries.
|
|
21
|
+
* Excludes disputed or unrecognized territories.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getRecognizedCountries(lang?: string): Country[];
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Individual country SVG map utilities.
|
|
3
|
+
*
|
|
4
|
+
* Provides functions to render a standalone SVG for a single country, using
|
|
5
|
+
* the bundled world-map path data for the country outline and the bundled
|
|
6
|
+
* cities dataset for optional city markers. The viewBox is automatically
|
|
7
|
+
* derived from the country's geographic bounding box stored in the geography
|
|
8
|
+
* dataset.
|
|
9
|
+
*
|
|
10
|
+
* For maps that also show administrative subdivision (province / state)
|
|
11
|
+
* boundaries, use {@link getCountrySubdivisionMapUrl} to obtain a reference
|
|
12
|
+
* URL pointing to an external source – those boundaries are not bundled in
|
|
13
|
+
* this package.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { getCountrySvg } from "arevdata";
|
|
18
|
+
*
|
|
19
|
+
* // Render Germany with city markers
|
|
20
|
+
* document.getElementById("map").innerHTML = getCountrySvg("DE", {
|
|
21
|
+
* fill: "#4a90e2",
|
|
22
|
+
* stroke: "#ffffff",
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Render France without city markers
|
|
26
|
+
* document.getElementById("map").innerHTML = getCountrySvg("FR", {
|
|
27
|
+
* showCities: false,
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
import type { CountryMapOptions } from "../types/index.js";
|
|
32
|
+
/**
|
|
33
|
+
* Default styling and display options for single-country SVG maps.
|
|
34
|
+
*/
|
|
35
|
+
export declare const COUNTRY_MAP_DEFAULTS: Required<CountryMapOptions>;
|
|
36
|
+
/**
|
|
37
|
+
* Convert geographic coordinates (latitude / longitude) to the SVG coordinate
|
|
38
|
+
* system used by the bundled world-map path data.
|
|
39
|
+
*
|
|
40
|
+
* The world map uses a simple equirectangular projection scaled to a
|
|
41
|
+
* 2000 × 857 canvas (matching `WORLD_MAP_VIEWBOX`).
|
|
42
|
+
*
|
|
43
|
+
* @param lat Latitude in decimal degrees (−90 … +90)
|
|
44
|
+
* @param lon Longitude in decimal degrees (−180 … +180)
|
|
45
|
+
* @returns `{ x, y }` in world-map SVG units.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* const { x, y } = latLonToMapPoint(52.52, 13.41); // Berlin, Germany
|
|
49
|
+
*/
|
|
50
|
+
export declare function latLonToMapPoint(lat: number, lon: number): {
|
|
51
|
+
x: number;
|
|
52
|
+
y: number;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Return an external URL for a country's administrative-subdivision map.
|
|
56
|
+
*
|
|
57
|
+
* The URL points to a Wikimedia Commons PNG rendering (800 px wide) of the
|
|
58
|
+
* corresponding SVG map file. These maps typically include province, state,
|
|
59
|
+
* or region boundaries. The image is **not bundled** in this package – it is
|
|
60
|
+
* fetched at runtime from Wikimedia servers.
|
|
61
|
+
*
|
|
62
|
+
* **Note:** Wikimedia Commons SVG thumbnails require a hash-based path for
|
|
63
|
+
* most files. This helper uses the same simplified URL convention that is
|
|
64
|
+
* already in use in the `flags` module (`getCountryMapSvgUrl`). If a
|
|
65
|
+
* particular country's map file is not served at this path, the URL may
|
|
66
|
+
* return a 404; in that case, use the Wikimedia Commons search page for
|
|
67
|
+
* `"administrative divisions map of {country name}"` to find the correct file.
|
|
68
|
+
*
|
|
69
|
+
* @param alpha3 ISO 3166-1 alpha-3 code (case-insensitive, e.g. `"DEU"`, `"usa"`)
|
|
70
|
+
* @returns A reference URL string – not guaranteed to resolve for every country.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* getCountrySubdivisionMapUrl("DEU");
|
|
74
|
+
* // → "https://upload.wikimedia.org/wikipedia/commons/thumb/maps/DEU.svg/800px-DEU.svg.png"
|
|
75
|
+
*/
|
|
76
|
+
export declare function getCountrySubdivisionMapUrl(alpha3: string): string;
|
|
77
|
+
/**
|
|
78
|
+
* Render a standalone SVG string for a single country.
|
|
79
|
+
*
|
|
80
|
+
* The SVG shows:
|
|
81
|
+
* - The country's outline, drawn from the bundled world-map vector paths.
|
|
82
|
+
* - Optional city markers (dots) for every city in the bundled cities dataset
|
|
83
|
+
* that belongs to this country. Capital cities use a distinct colour and a
|
|
84
|
+
* slightly larger dot.
|
|
85
|
+
*
|
|
86
|
+
* Each country `<path>` element receives:
|
|
87
|
+
* - `id` — ISO alpha-2 code, e.g. `id="DE"`
|
|
88
|
+
* - `data-code` — same code
|
|
89
|
+
* - `data-name` — human-readable country name
|
|
90
|
+
*
|
|
91
|
+
* Each city `<circle>` element receives:
|
|
92
|
+
* - `data-city` — city name
|
|
93
|
+
* - `data-capital="true"` — only present for the capital city
|
|
94
|
+
*
|
|
95
|
+
* @param alpha2 ISO 3166-1 alpha-2 code (case-insensitive, e.g. `"DE"`, `"us"`)
|
|
96
|
+
* @param options Optional styling / display overrides.
|
|
97
|
+
* @returns A complete `<svg>…</svg>` string, or `null` if the country code is
|
|
98
|
+
* unknown or has no drawable path data.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* const svg = getCountrySvg("JP", { fill: "#e8f4f8", capitalColor: "#e24a4a" });
|
|
102
|
+
* document.getElementById("map")!.innerHTML = svg ?? "";
|
|
103
|
+
*/
|
|
104
|
+
export declare function getCountrySvg(alpha2: string, options?: CountryMapOptions): string | null;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Currency } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Major world currencies with ISO 4217 codes, symbols, and the countries that use them.
|
|
4
|
+
*/
|
|
5
|
+
export declare const currencies: Currency[];
|
|
6
|
+
/**
|
|
7
|
+
* Get currency by its ISO 4217 code.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getCurrencyByCode(code: string, lang?: string): Currency | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Get the currency used by a specific country.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getCurrencyByCountry(countryCode: string, lang?: string): Currency | undefined;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { FlagInfo } from "../types/index.js";
|
|
2
|
+
declare const FLAG_PNG_WIDTHS: readonly [40, 80, 160, 320, 640, 1280, 2560];
|
|
3
|
+
export type FlagPngWidth = (typeof FLAG_PNG_WIDTHS)[number];
|
|
4
|
+
/**
|
|
5
|
+
* Build the self-hosted SVG URL for a country's flag.
|
|
6
|
+
* @param alpha2 ISO 3166-1 alpha-2 country code (case-insensitive)
|
|
7
|
+
*/
|
|
8
|
+
export declare function getFlagSvgUrl(alpha2: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Build the self-hosted PNG URL for a country's flag.
|
|
11
|
+
* @param alpha2 ISO 3166-1 alpha-2 country code (case-insensitive)
|
|
12
|
+
* @param width Image width in pixels (40 | 80 | 160 | 320 | 640 | 1280 | 2560). Default: 320
|
|
13
|
+
*/
|
|
14
|
+
export declare function getFlagPngUrl(alpha2: string, width?: FlagPngWidth): string;
|
|
15
|
+
/**
|
|
16
|
+
* Build a Wikimedia Commons URL for a country's outline SVG map.
|
|
17
|
+
* This is a reference URL—not bundled in the package.
|
|
18
|
+
* @param alpha3 ISO 3166-1 alpha-3 code (e.g., "USA")
|
|
19
|
+
*/
|
|
20
|
+
export declare function getCountryMapSvgUrl(alpha3: string): string;
|
|
21
|
+
export declare const flagData: FlagInfo[];
|
|
22
|
+
/**
|
|
23
|
+
* Get flag data for a specific country by its alpha-2 code.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getFlagData(alpha2: string): FlagInfo | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Get all countries whose flags share one or more given colours.
|
|
28
|
+
* When an array is provided, flags matching any of the supplied colours are returned.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getFlagsByColor(color: FlagInfo["colors"][number]): FlagInfo[];
|
|
31
|
+
export declare function getFlagsByColor(colors: readonly FlagInfo["colors"][number][]): FlagInfo[];
|
|
32
|
+
/**
|
|
33
|
+
* Get all similar-flag entries for a given country.
|
|
34
|
+
* Returns an array of FlagInfo for each similar country.
|
|
35
|
+
*/
|
|
36
|
+
export declare function getSimilarFlags(alpha2: string): FlagInfo[];
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { CountryGeography } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Geographic and climate data for all world countries.
|
|
4
|
+
* Includes centroid coordinates, bounding boxes, area, landlocked status,
|
|
5
|
+
* neighbouring countries, climate zone, and average annual temperature.
|
|
6
|
+
*
|
|
7
|
+
* Centroid (lat/lon) is the geographical centre of the country, used for
|
|
8
|
+
* distance and direction calculations in geography games.
|
|
9
|
+
*
|
|
10
|
+
* Climate zone follows a simplified Köppen classification.
|
|
11
|
+
* avgTemperature is approximate mean annual temperature in °C.
|
|
12
|
+
* @note The `neighbors` arrays use ISO 3166-1 alpha-2 codes, including
|
|
13
|
+
* codes for disputed/special territories such as "EH" (Western Sahara)
|
|
14
|
+
* and "XK" (Kosovo). These are included to accurately reflect shared land
|
|
15
|
+
* borders, even where sovereignty is contested.
|
|
16
|
+
*/
|
|
17
|
+
export declare const countryGeography: CountryGeography[];
|
|
18
|
+
/**
|
|
19
|
+
* Get geography data for a specific country by its alpha-2 code.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getCountryGeography(alpha2: string): CountryGeography | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Get all landlocked countries.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getLandlockedCountries(): CountryGeography[];
|
|
26
|
+
/**
|
|
27
|
+
* Get countries by climate zone.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getCountriesByClimate(climate: CountryGeography["climate"]): CountryGeography[];
|
|
30
|
+
/**
|
|
31
|
+
* Get all countries that neighbour a given country.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getNeighbors(alpha2: string): CountryGeography[];
|
|
34
|
+
/**
|
|
35
|
+
* Check whether two countries share a land border.
|
|
36
|
+
*
|
|
37
|
+
* @param alpha2A - ISO 3166-1 alpha-2 code of the first country (case-insensitive).
|
|
38
|
+
* @param alpha2B - ISO 3166-1 alpha-2 code of the second country (case-insensitive).
|
|
39
|
+
* @returns `true` if the two countries are neighbours, `false` otherwise.
|
|
40
|
+
* Also returns `false` if either code is not found in the geography data.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* doCountriesBorder("DE", "FR"); // true – Germany and France share a border
|
|
45
|
+
* doCountriesBorder("DE", "US"); // false – no shared border
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function doCountriesBorder(alpha2A: string, alpha2B: string): boolean;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { allLanguages, languageCodeAliases, languageNameLocales, languageVariants, languages, } from "./languageData.js";
|
|
2
|
+
export { canonicalizeLanguageCode, getLanguageByCode, getLanguageName, getLanguagesBySpeakerCount, getLanguageVariants, getOfficialLanguageCountries, getOfficialLanguagesByCountry, officialLanguagesByCountry, searchLanguages, } from "./languageFunctions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Language } from "../../types/index.js";
|
|
2
|
+
export declare const languageNameLocales: ["en", "ar", "de", "es", "fr", "hi", "it", "ja", "ko", "nl", "pl", "pt", "ru", "tr", "zh"];
|
|
3
|
+
export declare const languageCodeAliases: Record<string, string>;
|
|
4
|
+
export declare const languages: Language[];
|
|
5
|
+
export declare const languageVariants: Language[];
|
|
6
|
+
export declare const allLanguages: Language[];
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Language, LanguageNameLocale, LanguageOfficialCountry } from "../../types/index.js";
|
|
2
|
+
export declare const officialLanguagesByCountry: Record<string, Language[]>;
|
|
3
|
+
/**
|
|
4
|
+
* Canonicalize a language or locale tag into a stable BCP 47 form.
|
|
5
|
+
* Accepts common aliases such as "iw" -> "he" and underscore-separated tags.
|
|
6
|
+
*/
|
|
7
|
+
export declare function canonicalizeLanguageCode(code: string): string | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* Look up a language or locale variant by its BCP 47 code.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getLanguageByCode(code: string): Language | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Return the localized display name for a language or locale code.
|
|
14
|
+
* Falls back to the English source name if the requested locale is unsupported.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getLanguageName(code: string, locale?: LanguageNameLocale | string): string | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Return all locale variants for a base language code.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getLanguageVariants(code: string): Language[];
|
|
21
|
+
/**
|
|
22
|
+
* Search languages by code or translated name.
|
|
23
|
+
*/
|
|
24
|
+
export declare function searchLanguages(query: string, options?: {
|
|
25
|
+
includeVariants?: boolean;
|
|
26
|
+
locale?: LanguageNameLocale | string;
|
|
27
|
+
minSpeakers?: number;
|
|
28
|
+
}): Language[];
|
|
29
|
+
/**
|
|
30
|
+
* Return languages whose estimated speaker count is at least `minSpeakers`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function getLanguagesBySpeakerCount(minSpeakers: number, options?: {
|
|
33
|
+
includeVariants?: boolean;
|
|
34
|
+
}): Language[];
|
|
35
|
+
/**
|
|
36
|
+
* Return the base-language official-language list for a given country.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getOfficialLanguagesByCountry(countryCode: string): Language[];
|
|
39
|
+
/**
|
|
40
|
+
* Return the official-country mappings for a given language, limited to countries
|
|
41
|
+
* present in this package's main `countries` dataset.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getOfficialLanguageCountries(code: string): LanguageOfficialCountry[];
|