From dc2cdc0a91a8d2fa2199c960be954cb7f98575af Mon Sep 17 00:00:00 2001 From: Julian Cuni Date: Sun, 5 Jul 2026 15:23:15 +0200 Subject: [PATCH] feat(web): self-host Chakra Petch as the app's primary face MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The booth is an offline appliance — no webfont CDN — so the font ships from public/fonts/chakra-petch: latin subset (covers en + sq ë/ç), the weights the UI actually uses (400/600/700 + 400 italic, ~40 KB total), SIL OFL license alongside the files. Chakra Petch leads all four family tokens (mono/display/ui/body) with the previous stacks kept as fallback; index.html preloads the two everywhere-weights so first paint doesn't flash the fallback. Not a true monospace — .num/.tabular still request tabular figures and columns verified aligned in the built app. Claude-Session: https://claude.ai/code/session_01Xcm6ikLgGoCxxHrxtjkk5V --- apps/web/index.html | 4 + apps/web/public/fonts/chakra-petch/OFL.txt | 93 ++++++++++++++++++ .../chakra-petch-latin-400-italic.woff2 | Bin 0 -> 10644 bytes .../chakra-petch/chakra-petch-latin-400.woff2 | Bin 0 -> 9756 bytes .../chakra-petch/chakra-petch-latin-600.woff2 | Bin 0 -> 9968 bytes .../chakra-petch/chakra-petch-latin-700.woff2 | Bin 0 -> 9900 bytes apps/web/src/index.css | 55 +++++++++-- 7 files changed, 142 insertions(+), 10 deletions(-) create mode 100644 apps/web/public/fonts/chakra-petch/OFL.txt create mode 100644 apps/web/public/fonts/chakra-petch/chakra-petch-latin-400-italic.woff2 create mode 100644 apps/web/public/fonts/chakra-petch/chakra-petch-latin-400.woff2 create mode 100644 apps/web/public/fonts/chakra-petch/chakra-petch-latin-600.woff2 create mode 100644 apps/web/public/fonts/chakra-petch/chakra-petch-latin-700.woff2 diff --git a/apps/web/index.html b/apps/web/index.html index ff9dfef..d276f41 100644 --- a/apps/web/index.html +++ b/apps/web/index.html @@ -4,6 +4,10 @@ + + + Parking System diff --git a/apps/web/public/fonts/chakra-petch/OFL.txt b/apps/web/public/fonts/chakra-petch/OFL.txt new file mode 100644 index 0000000..9cee5a5 --- /dev/null +++ b/apps/web/public/fonts/chakra-petch/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2018 The Chakra Petch Project Authors (https://github.com/m4rc1e/Chakra-Petch.git) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/apps/web/public/fonts/chakra-petch/chakra-petch-latin-400-italic.woff2 b/apps/web/public/fonts/chakra-petch/chakra-petch-latin-400-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..89fda8b9bbf9d291aea00c6823f7ecf4318338b3 GIT binary patch literal 10644 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 literal 0 HcmV?d00001 diff --git a/apps/web/public/fonts/chakra-petch/chakra-petch-latin-400.woff2 b/apps/web/public/fonts/chakra-petch/chakra-petch-latin-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f7a66022dde0ab1d862d202807f5988453a9bdf4 GIT binary patch literal 9756 zcmV+%Cga(6Pew8T0RR91045v&4gdfE0AKt7042l#0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/apps/web/src/index.css b/apps/web/src/index.css index b2328fb..990dd83 100644 --- a/apps/web/src/index.css +++ b/apps/web/src/index.css @@ -13,9 +13,42 @@ exposed as utilities (night-*, ink-*, paper-*, flag/amber/green/blue, the spacing/type/shadow scales) for new work. - Offline appliance: NO webfont @import (no network at runtime). Goldplay (the - TRM display face) is not self-hosted yet — display/heading text falls back to - a clean sans stack; wire local Goldplay @font-face here if it's wanted. */ + Offline appliance: NO webfont @import (no network at runtime). The primary + face is Chakra Petch, SELF-HOSTED from public/fonts/chakra-petch (SIL OFL, + license alongside the files) — latin subset only (covers en + sq ë/ç), the + weights the UI actually uses (400/600/700 + 400 italic). Not a true + monospace: it stays FIRST in --font-mono for the look, with the real mono + stack behind it as fallback; .num/.tabular still request tabular figures. */ + +@font-face { + font-family: "Chakra Petch"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url("/fonts/chakra-petch/chakra-petch-latin-400.woff2") format("woff2"); +} +@font-face { + font-family: "Chakra Petch"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url("/fonts/chakra-petch/chakra-petch-latin-600.woff2") format("woff2"); +} +@font-face { + font-family: "Chakra Petch"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url("/fonts/chakra-petch/chakra-petch-latin-700.woff2") format("woff2"); +} +@font-face { + font-family: "Chakra Petch"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url("/fonts/chakra-petch/chakra-petch-latin-400-italic.woff2") format("woff2"); +} + @theme { /* ============================================================ TERMINAL ACCENTS — aligned onto TRM's exact values. @@ -92,13 +125,15 @@ --color-viz-8: #5a5a53; /* ---------- TYPE — families ---------- */ - /* Mono is the booth's primary face (data-dense, tabular). Display/UI fall - back to a clean sans (Goldplay not self-hosted — see header note). */ - --font-mono: "JetBrains Mono", "IBM Plex Mono", ui-monospace, "SFMono-Regular", - "Menlo", "Consolas", monospace; - --font-display: "Goldplay", "Helvetica Neue", Arial, sans-serif; - --font-ui: "Goldplay", "Helvetica Neue", Arial, sans-serif; - --font-body: "Inter", "Helvetica Neue", Arial, sans-serif; + /* Chakra Petch (self-hosted, see @font-face above) is the booth's primary + face everywhere — it leads every stack so headings, body, and the + `font-mono` chrome all render with it; the stacks behind it are the + pre-2026-07-05 fallbacks for glyphs outside the latin subset. */ + --font-mono: "Chakra Petch", "JetBrains Mono", "IBM Plex Mono", ui-monospace, + "SFMono-Regular", "Menlo", "Consolas", monospace; + --font-display: "Chakra Petch", "Helvetica Neue", Arial, sans-serif; + --font-ui: "Chakra Petch", "Helvetica Neue", Arial, sans-serif; + --font-body: "Chakra Petch", "Inter", "Helvetica Neue", Arial, sans-serif; /* ---------- TYPE — scale (TRM, optimised for data density) ---------- */ --text-overline: 11px;