From 0c5b3e13d904b10163795f4a5e4e814ba751d615 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sat, 14 Jun 2025 17:53:33 -0500 Subject: [PATCH 1/6] Add custom font example --- examples/custom-fonts/README.md | 14 + examples/custom-fonts/assets/fonts.css | 21 ++ examples/custom-fonts/assets/style.css | 9 + examples/custom-fonts/entrypoints/content.ts | 39 +++ examples/custom-fonts/entrypoints/popup.html | 14 + examples/custom-fonts/package.json | 20 ++ .../fonts/overpass-v18-latin-regular.woff2 | Bin 0 -> 16976 bytes .../fonts/poppins-v23-latin-regular.woff2 | Bin 0 -> 7884 bytes examples/custom-fonts/tsconfig.json | 3 + examples/custom-fonts/wxt.config.ts | 16 + pnpm-lock.yaml | 302 ++++++++++++++++-- 11 files changed, 407 insertions(+), 31 deletions(-) create mode 100644 examples/custom-fonts/README.md create mode 100644 examples/custom-fonts/assets/fonts.css create mode 100644 examples/custom-fonts/assets/style.css create mode 100644 examples/custom-fonts/entrypoints/content.ts create mode 100644 examples/custom-fonts/entrypoints/popup.html create mode 100644 examples/custom-fonts/package.json create mode 100644 examples/custom-fonts/public/fonts/overpass-v18-latin-regular.woff2 create mode 100644 examples/custom-fonts/public/fonts/poppins-v23-latin-regular.woff2 create mode 100644 examples/custom-fonts/tsconfig.json create mode 100644 examples/custom-fonts/wxt.config.ts diff --git a/examples/custom-fonts/README.md b/examples/custom-fonts/README.md new file mode 100644 index 0000000..871aafd --- /dev/null +++ b/examples/custom-fonts/README.md @@ -0,0 +1,14 @@ +--- +name: Custom Font +description: Show how to use a custom font throughout your extension. +--- + +> [!IMPORTANT] +> This example only works for WXT v0.20.7 and above. For older versions, see [React Content Script UI Custom Font](https://github.com/wxt-dev/examples/tree/main/examples/react-content-ui-custom-font) example + +In this example, we'll add custom fonts from [Google Fonts](https://fonts.google.com/) to the popup and a ShadowRoot content script UI. + +```sh +pnpm i +pnpm dev +``` diff --git a/examples/custom-fonts/assets/fonts.css b/examples/custom-fonts/assets/fonts.css new file mode 100644 index 0000000..7d8c38f --- /dev/null +++ b/examples/custom-fonts/assets/fonts.css @@ -0,0 +1,21 @@ +/* Generated with https://gwfh.mranftl.com/fonts */ + +/* overpass-regular - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: "Overpass"; + font-style: normal; + font-weight: 400; + src: url("chrome-extension://__MSG_@@extension_id__/fonts/overpass-v18-latin-regular.woff2") + format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* poppins-regular - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: "Poppins"; + font-style: normal; + font-weight: 400; + src: url("chrome-extension://__MSG_@@extension_id__/fonts/poppins-v23-latin-regular.woff2") + format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} diff --git a/examples/custom-fonts/assets/style.css b/examples/custom-fonts/assets/style.css new file mode 100644 index 0000000..7155eea --- /dev/null +++ b/examples/custom-fonts/assets/style.css @@ -0,0 +1,9 @@ +@import url("./fonts.css"); + +.font-poppins { + font-family: "Poppins", sans-serif; +} + +.font-overpass { + font-family: "Overpass", sans-serif; +} diff --git a/examples/custom-fonts/entrypoints/content.ts b/examples/custom-fonts/entrypoints/content.ts new file mode 100644 index 0000000..a955728 --- /dev/null +++ b/examples/custom-fonts/entrypoints/content.ts @@ -0,0 +1,39 @@ +import { ContentScriptContext } from "#imports"; +import "~/assets/style.css"; + +export default defineContentScript({ + matches: ["*://*/*"], + cssInjectionMode: "ui", + + async main(ctx) { + const ui = await defineUi(ctx); + ui.autoMount(); + }, +}); + +function defineUi(ctx: ContentScriptContext) { + return createShadowRootUi(ctx, { + name: "custom-font-example", + position: "overlay", + anchor: "body", + append: "first", + onMount(container) { + // Make UI more visible, not necessary for fonts to work + container.style.backgroundColor = "white"; + container.style.position = "relative"; + container.style.zIndex = "9999"; + + // Create 3 paragraphs with different fonts + container.appendChild(createP("Default")); + container.appendChild(createP("Poppins", "font-poppins")); + container.appendChild(createP("Overpass", "font-overpass")); + }, + }); +} + +function createP(text: string, className?: string) { + const p = document.createElement("p"); + p.textContent = text; + if (className) p.classList.add(className); + return p; +} diff --git a/examples/custom-fonts/entrypoints/popup.html b/examples/custom-fonts/entrypoints/popup.html new file mode 100644 index 0000000..b1e275c --- /dev/null +++ b/examples/custom-fonts/entrypoints/popup.html @@ -0,0 +1,14 @@ + + + + + + Popup + + + +

Default

+

Poppins

+

Overpass

+ + diff --git a/examples/custom-fonts/package.json b/examples/custom-fonts/package.json new file mode 100644 index 0000000..35a89b0 --- /dev/null +++ b/examples/custom-fonts/package.json @@ -0,0 +1,20 @@ +{ + "name": "custom-fonts", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "wxt", + "dev:firefox": "wxt -b firefox", + "build": "wxt build", + "build:firefox": "wxt build -b firefox", + "zip": "wxt zip", + "zip:firefox": "wxt zip -b firefox", + "compile": "tsc --noEmit", + "postinstall": "wxt prepare" + }, + "devDependencies": { + "typescript": "^5.8.2", + "wxt": "^0.20.7" + } +} diff --git a/examples/custom-fonts/public/fonts/overpass-v18-latin-regular.woff2 b/examples/custom-fonts/public/fonts/overpass-v18-latin-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..707ebe73d4ecbaa4dd2c876d3777cbe3ecda70b6 GIT binary patch literal 16976 zcmV(@K-Rx^Pew8T0RR91076gz5C8xG0I19W072{k0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/examples/custom-fonts/public/fonts/poppins-v23-latin-regular.woff2 b/examples/custom-fonts/public/fonts/poppins-v23-latin-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b69e0091c26c46151996a7feec95515567f95ac2 GIT binary patch literal 7884 zcmV;-9y8&0Pew8T0RR9103OT$3;+NC06(Ar03LV%0RR9100000000000000000000 z0000R9vm(PU;u$s3g=AHHVcC`00A}vBm;(M1Rw>2TnB^;8-6mgBG@% z=OfY6IE+E4^fR8XV|adUJw$0E2@BZBRj`b|?XQCU1xpw;YFJ1bU7!aSoX3o6yePdk z^Y&eP6WhE=L}*&A_NR&c-3L+|AF%(QTkjiKBKJam(WfX=bu!GX^PQg%@h{3r2SpR{ z%B)nYY$d)ClLja9POV{13o=|RH!3iUp6?X{RsvE{|Nm=#+L^#26fv?OOlJ#vWXZAq z>dk$Dd3kwrCPW`gpJ$WO^5m70DFC@Dq{%WSB_y|QZGl{ckY5&Mg>+RJ6G_2$J69ik zx5GB86IfMtuLTbw_{0j4yO%yd0anNxC+3>#U=v7S2h0gIq&L!77(eatKqDE9Is^|q zl~OKz(YQNH3<7<%Ho(nEK^{X61c}9-<(7JmZoEgP1;>B`o9!73+xQoSTfYy0*8qB` z2LSsF1PTmblURxb2eL$+s(U>Bz-rI_4=KhT>Y3i}5Bo+@mWouN25smjb6;y)C0a>L zR{1!RZ0T>7zo?o-jrctkg6hf{D8qaTf!1BkgQw#QBUFc)+W@gkhsSci;x=IED{FHWEH&z$*Ya z6~wiqhOxC!m+uA%n+_DU@Y3mintLoBcnpZee!?N}&DBF1x9JUH!;s$| z!xMUC8}ccnIx9{Msm_7wk1}&)mhE$nx=lrJpg&$)7;CHO$q}BFzZ!6l8E$$6_>WsH zfmlh^C8MJv%8!mF@ii;t}nymL?`M0~v<`$UoX!IV<`!FTxCDSf=e#aM?+Y_p)c5o5hkWXOGDDEcExDkr?6Su&sm=0wm#g+bG*p~xOTn1>^ zJ^(j(F9|*|5XMN~SkY%0jj{RY^kisn^;Pg-1^r!}Vdr}DmNeLZzW8rT+6CKRadnW! z+>540jBl&;8A~0mm3eA87e@>=?EAF>P4Z7R0vNjdA*$N%c}46d{=U&o&8Xz!CV=u= zL_#B<>#Q+A2d3hM&REpvYecNUl#8#gb4&Q%EVW*YLytbQ!UqUkh;dwm@o^%--cKhF zkJR%oFcJzR5Z?&%rvn2-G$MBXh_Mrm#r56TR0I*#V zzp8a+TU}{DR#!Av3Xx(`3?AqfqxWv-w*}QxBPlcc?sthSQzJT(q?uGZG)s7{mDtvD z9IRh!+gFM|KR+6pgyN2C;b`@XchyLO?LhvCUC1%?C1rCbJY#oEI()|0A56|?&$+t8 z;G3A*BKwCKi(-l<0upMEgpHB9+EYgW+S*TE7qdoU|w$@wLwsfs1G+~10!%fvf*Iu@oh1`uJ1t(n@BCoz2% z*<+2^$&xP|Xy&d=2i#@-iRLzLHiot|rlxXeY5JZ>D?7aZz?l_L=H@PV2r_s6l=JYO z_saj^D0XxO9?S3)i%~*3?I=)^U`;1;>&En85 z)Zy@HlzNtQl0C!cNQ*Z43&%J4&zAnpUjb~dnmF8`e-ZHXiWm0o0R|uOS>oDFb8%aF z`Q%Ye3&Os9p&Gm0NPJAB?H~FoRu#pvSbf-nVRtxTs}XQ=mEU##Tg&;5MJv0XN2e<_ z&_8rr@!s0(S$uUbzV;ASy5bo3;bP_|zYxY};;VTs>OXCb>6jLC0c@1ER?M6biYV9W zi|2CT{{t&ldG0!N;*yII`;HwLl`)jgHIdm=;81SC4fV``C)7yCYq{&Z*!iUEX;(qp zeOGFi_JV&aj_Vcl;fRaEaMZ%InUuAI<&fBUu(4rZT>BhqPN1N;1=IT9inh*9ASu`c zYO!JSHbwJyP{B$EMx*S&rN6fr*<18OFE``%xu(v~XEBTrUi_(}^M4q?iN2&4@VG_B z5lTjeo{s8fh)M_X%f}_1;U}N@@n8oUF6MkQPq)7CtQGVIq&DihUHN+5zUKM57dNWc z=M6Aq5y9eM3S#wiy*<9x57ZuJRqA`uFg=Q?66k9}&Ot`H(G*weidT6=j6E-f!wlIB zl`t}DdCi~Hdz2p!aD;eLZ}>k@P_Nes1bUrBni!<=xhtafeSXui)p&e3JG%ylZ_fVj zaD|}DN_6@LhH6JM9@jiLn%`EyZ%5GeWCc`B;kX3~L$z+=tE0JCtjw5KMAsJNDaRuT zpL6q5P!r zZL<#_Wdq!C;bRNtv&X)k@bUQzcG$DQGG?+&A(kN7z-k{eMVE+y@JG)Ma$1asZaP}Q zSKW)-y^Ewmo>C@Jng+;hvEh~}fzrvfexrB8^hS@y2LCDqqRB0#L5Y`0Hqv;q;st{Q zLsd?gNwJqw6y>w4;{&z|qe>=&AePD}45Y$o2yn7^Gznk8Q}F}EAa9G*^|0y(zt+Fi zzBTq@O4DGF)Zu;*F3zVKOC{J!E<~%X78*ir6@!b5&l&jwt=6T{XiXZLhCJ4?<{NNe zWqq-A4%px;XNgLuw$w_f73F-mv>w52ofHP%a41n{`g(;b8!w~4R+m9$uqZWJn;N{I zKYG3+y}ey?AIx3IHgf1ROF0>au~c*moyE17Za^-vkYCb3h2c6X?1W;u`}&Z(TA@se zx$_tXu}Ex?Fn&Jalt=}3_4>*zRtv<4Oa%_jfw(-QrY&YI>>+c+Wps8(RWYr-Zb8kr zz0KI|LvcPG` zlKSpD;W<7f>g+?^@^LQBfb9>$^NvsB~j7#$lHFP?OyuHx(z(6M>ZB9}bt zunk>Nu}x=N*NNCYY>#!ja)1XLo#$a9csP73&I9kFO#$%o$1``!}$gX!++ zZg92aSG1y#Ml%J8vVqa}avz?gCG$i&PYimkK+2}kxLLINLH1NTlcg1jH@)5p3Qr*0 zHX)w6&Z=C0)s;#ytf&_Yn@mO^`B$WXD@9kTa($hZb)HRjWNQ$t?%QRuZLFxUZP;a~ z>yP%&s#>_Ht$oqbSlhf zCWApVtwE#+c1%es9iyBii#H>SRvH|h&34DuV9>E`v)vQ!s>=0&KwlK$_&7)uA^XT+ zcV85Vg1vpQmQc`Y3zZ?r00M6uMxXpIQw&7GSZGdboEk!gpFQjP@i>4b*qNaMW zQV9gzWVDh0J*)r|RyNj6orOZ8zcx;-weM(_3%PA8W`S8?TF1P3IGU%kN&VK%Fs`RN zw2;+W!Sn434(%LQJsyevs;#8a5H@6}G7RrVwFYJ>6%dyPiB+?}gSbi}*OK57$V3vM zQb5W7N|@d(8E!zaU?G!fEh9+0O`dq2U#{SAnQ|5_x96|Lk`YEU8x~P$#i1eyyz5gQ z2_xa7O0csp>a-W@b!_L1B7IhAVVBk{j~71&#%>IG{x zChajupQX_rfWXM*yHxJ;Zn(Du9PAvq!e*y-kQMEP15dlE7qstj{gZ6|H`)E|deD?( z8f5|xmq>2aYC&PCxVcfPfI{3&eh1nS>?!BT6%o0(&3KhVLQF&o#Ym8L9-rheKFCH? zCl8!_T)~wpBT{j*$tZ4Xlq=-r+@1jP0LiVd_?{wA$X}Yt4la)sjU&n*qUOm`O`zQ~ z%HqAQV{$a^a<9)_q2XwYe)oPm zQ0KQpYz_UBceJL%>(xw^N?Xllam!SRPBTd?XjD06IHe|+C@rzZsqFxBuf8AYm#gG? z4woqebB56K>Ollsj=`!ERs4oVp|)~yAjN9`)yWa5TuyU+Pl!JXYQpOrUHpD5>v$c` zM`eUyv7K(vTjY?b*g`-aAVWG`I5zM!?OqdLY-j`xd`&O^>#|^9C=_BjO`V(j2)z~o zEq9(h|DWAAH=eh|3>z>4?Eal5djQA-@IES&`>pCMQn}G?!QZcC1dV9B?6@Lnh`T-% z;tRn++_cGcV?o)a(sVj-4DdLiNh)hKo1oU|5{-syfLhFEWowI6L)4maR751AAVw^S zY`~J94a7u5-wIAVDwl>y^s3ChQ;&p@d?Zj`2_R5a{^<*`(C^51gf>?2At(ZU!_jv( ziolh&c2^;SMvB4J1YaQ&&T=s%6bAJ$3jJI(>?)i|7tjhxQY4>^gppV+QusTKv^INe zw&cGa#RPQ>jwH9|v%$f8;{0KSVzmKQNp)hmN%cPv0V*p53+*($ z-Xd2Ri!C^iX6(G`xq~X-ZM=Y7hwehTI=(jl8+7eOIj3KoebG7N(zHvUqU~bSMfaCO zzZ_ZGc468Dch8V7M*%cy)b?CgMf?xr1A7m49t2C2gH;h#;-Um)trC>235>AhCL)O* zETmIOSlWU-L;m=9(~v|rmPVCT45*;WY1l;fka*Mhd_!J=mL<`tAZ(&15y`a#Mt~zB zWF`VW^Vl8o-734Ua=@EgKX%*J=10RbL|jSQ(nv<_@#ddKW*E3)&`nWEnxUR`6mN*yPRgo}hK}7{OCphR14@F+a36S}ys)!4_N-P$a8wQyQ_{fV* z`DT7bN38%k@l&pV?($Lu!Kz4Xu_;3&=d&QOEbIQ=6N2uJ47UshhdH0R<{o^+;_T~M z+w~)d_wnM|OZ(XDLzhgQ$^1EyBSl3$n8HO2#&ir=)jU_UFJ^n*Iq|uT$i~Ai@0-0b zqPaVm!7lgq`~*Rqcq}p%u_qzZ5D=9wCSZtiM*+{#V2M#9oZU=%7bg9bIP+y7%WIS| zWERng{6+N}@*VZo0hm1_4isc;nf212>8n+07LWQ+s~1Ye8WEAK=Sw6SAra839*r6E zc+BX>w85j%3w~68YT;-z20S~u(QesNTFOZDKoG>LMeE#yj=Z@V#X^@;v1qQ=>6oJ> z-RZLJ=4c#TgSUuTCX;DfFN341(v1|G#v70;W!CCY69@bLtZ9U-N)3ZdDMqit5(pyn zU@qi>I3N4DE4kGKico08ztTnL z=8MJ)SoVB7)@nlJazn9&0OIsj>MH$&xJCDtfVH zJ@!D%9E6q`QFBLhRRdu_7vYRPjN>_1ThIF1_X=QYpL~>ke3b!3)+bxm`Q}A?poYcE ze_IA_K;i1`Mj@*z{PDCc>v-o@*#|9i7&mx>0q+?>XMkH*Z9mCsvQqnJ)-7Dt-o9|@ ztmc1?nU4M241QU;X;lw4E$i2>+W_?-Cf~RTEYx-5nxGJJ=KPx6lRUAqB(xbnO&$>X zvXckT(dE^P#SBjX*b!4sgTkj??=S-<4D>MzmLUg_rL(R+a68)|36}>+RkPw|0rtYi zh6bq@M^<5p1ktixO~c0gEEo-?3Sl3c$85vA$c55 zLgp-9l8cal@L3Auq@1SF=3xa!`j6hxnij8HT*Ez8t_|I&;7L7++9l1Cq_DV*F)#oJ zWL5Lv1_{3ratiRUE}sOIA#s|PK5~ZEJSUj}wPN4thKy7 zUcZ~b`2JW(zNA^9*EY!{?PjC2d5RRC#6>2$Bybys?40HSEy_MSf~E1{)3r2G8lgIWwwXqQ_Rexpl=k)HLtS0>~LeI z0R^K+c*BWKM7@>y7^yIv`N}>NkwTB_0LT9I^<*#g1! z6h?2X-tACu!pV>0Q#Qz+Oq?oHX{LoswJ9e{hkTAmVNIi07*TG1V8&CNA`#hP!jVV@ zCXVT8aOm-*IuuT$$tTK7kb!zTSl>C%1kE$dH9+9O>T`HpKY`GX!=EE69;c>0PEUU_ zEzOg3kh)ZwKXML1l$`t6|mHzBb1 z1%?d;fLX_c1!oNYRvi7|w|EevF7)$B!P*-#8HM_`pJxDwHoMFy~K%V7bQHdCQuKY}?7!WHeaaJaUlfeBI>c#3)2&l{NzyZSn zOK)28mONHwot7^Q5ZVq@xI7)3-JhK3UhT4_DJjdve!1lfx$*7jvwO~bxi(eGa^V|o zc%4|ep0A}Wm-+K(Gk;>FNjVQW$rsd#2PwW&gkolhJC*$123|KTB z5+6xfE_TW-8%G;Em<@zO0gy6q2modg0dr8Xl>|>vcwuDybsaR^!DL`23B{LU^e`_k z0ndeTy2$_EeDjc!c?qxr<$PAc&i8gTTk5QJs;IJWi;z^ESuP9cD`RuwZgUsA%Nllq z8pwNNv%Ae$CLZ_}ehAN}P#5P0&R1f!jJD2AEu`X_jat1SQ{%cw*f2i$E4og;ys zWxa+swT>ZVXrH>zvAe`cVnUh#8QQ1p?$os*;9UaBc|idHyTJ1z%wu#iv~S#38}buq zzAa@88QQ1DyHXYwnxnm-*oB$7<5;7zd(JvuBigiN>*y8(EXtBApEZ9Qt>yfe5IcSZ z`0~x=0PxKg`roHVpH3ykFFLN73^gMJzgwy=f0P;Ut{QTs&$+Mj65?6;R__V6prHmN ztJOGtqp-iru^B37RH{cdD}Ug2FRL^2bMvs=fXxqRZNQ5_ZuuxxBQ+v_N-H`IubgaI zorKdy3b$dCAXN-gZwhoQS5wr-D^Rz|YJhqS)a^;?#<XD?|UTUwg#RvtphVx~N zIBjxN$cP*fLmVZP)KwK`$II?^s_rmmT$9==xI#w8Cd6mAnO&v>)vFtk(;tNrBl3-4 zIIFIkAPALhQAj<~)}f1e-p+@Og|vE69BAtsW&xT3iPX^~!&J&>E2tzXFMwS=vNZ90C9((9MIeE6`Wjx?m4kd@1Dou>evgM30whv8Xg zT)Ww#G$F85Zw&8D>Y7Y+3n9Y{cS?GCS?5n~tK4pf?rEsT8(@B%Z*60S6gfC!0{O&S=0Q1&%B#fj@L(GmH%QB)gPmsR$AX zbTDEwZf=BqF-Mwzb)5 z+SabfwXK8K9dX9obP^offu}WWo;B*R5ENUSEM@VUILM<7XPPo~! zMo4u#jzM4~kx#@^H;f98h=@9_%rAn1iHsIoCP1y3<3)He?s<$osUztROlfc;T?;8!m1GRB=}4iQO&Q;6mW)V zD=@(Ge$IE0P5m{HX0ZKb(tmQ?JiL7T0)j%qh8tm|QAQghRho1e#u{h52`0*vB^wG_ zj$C>26)1#(g@Z>xL_$VEMMGDFfr*8UgNuhxKuAPPLP|ysqM)P#Q`6AW(K9eIF|)9; zDQ1UoaB^`g;mJUsW|--)RsJ%|BJ*w3X-5Wmb60DX9>TH0?xVMs!J}r;%`AWU2|QJQco>)$1S&&`PUtwAuDL;;2JO@Zm`k q7u|L*3=a_B6(4yfL?m7j6PIN0HLaC=Egty)l;Nb6Odihx0002ms`8-# literal 0 HcmV?d00001 diff --git a/examples/custom-fonts/tsconfig.json b/examples/custom-fonts/tsconfig.json new file mode 100644 index 0000000..008bc3c --- /dev/null +++ b/examples/custom-fonts/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "./.wxt/tsconfig.json" +} diff --git a/examples/custom-fonts/wxt.config.ts b/examples/custom-fonts/wxt.config.ts new file mode 100644 index 0000000..1a74c05 --- /dev/null +++ b/examples/custom-fonts/wxt.config.ts @@ -0,0 +1,16 @@ +import { defineConfig } from "wxt"; + +// See https://wxt.dev/api/config.html +export default defineConfig({ + manifest: { + web_accessible_resources: [ + { + resources: ["fonts/*"], + matches: ["*://*/*"], + }, + ], + }, + webExt: { + startUrls: ["https://wxt.dev"], + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 18da2c9..c6ce865 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -95,7 +95,7 @@ importers: version: 18.3.0 '@wxt-dev/module-react': specifier: ^1.1.3 - version: 1.1.3(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + version: 1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) typescript: specifier: 5.6.2 version: 5.6.2 @@ -112,6 +112,15 @@ importers: specifier: ^0.20.5 version: 0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + examples/custom-fonts: + devDependencies: + typescript: + specifier: ^5.8.2 + version: 5.8.3 + wxt: + specifier: ^0.20.7 + version: 0.20.7(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + examples/devcontainers: devDependencies: typescript: @@ -257,7 +266,7 @@ importers: version: 18.3.0 '@wxt-dev/module-react': specifier: ^1.1.3 - version: 1.1.3(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + version: 1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) typescript: specifier: ^5.8.2 version: 5.8.2 @@ -282,7 +291,7 @@ importers: version: 19.1.4(@types/react@19.1.4) '@wxt-dev/module-react': specifier: ^1.1.3 - version: 1.1.3(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.6(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + version: 1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.6(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) typescript: specifier: ^5.8.3 version: 5.8.3 @@ -310,7 +319,7 @@ importers: version: 18.3.0 '@wxt-dev/module-react': specifier: ^1.1.3 - version: 1.1.3(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5)) + version: 1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5)) postcss: specifier: ^8.4.38 version: 8.4.38 @@ -334,7 +343,7 @@ importers: version: 1.2.3(@types/react@19.1.4)(react@19.1.0) '@tailwindcss/vite': specifier: ^4.1.4 - version: 4.1.4(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + version: 4.1.4(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -368,7 +377,7 @@ importers: version: 19.1.4(@types/react@19.1.4) '@wxt-dev/module-react': specifier: ^1.1.3 - version: 1.1.3(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.6(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + version: 1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.6(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) tw-animate-css: specifier: ^1.2.9 version: 1.3.4 @@ -447,7 +456,7 @@ importers: version: 5.0.4 '@wxt-dev/module-svelte': specifier: ^2.0.3 - version: 2.0.3(svelte@5.28.2)(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + version: 2.0.3(svelte@5.28.2)(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) svelte: specifier: ^5.28.2 version: 5.28.2 @@ -495,7 +504,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.4 - version: 4.1.4(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + version: 4.1.4(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) tailwindcss: specifier: ^4.0.9 version: 4.0.9 @@ -535,7 +544,7 @@ importers: devDependencies: '@wxt-dev/module-vue': specifier: ^1.0.2 - version: 1.0.2(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(vue@3.4.28(typescript@5.8.2))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + version: 1.0.2(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(vue@3.4.28(typescript@5.8.2))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) typescript: specifier: ^5.8.2 version: 5.8.2 @@ -557,7 +566,7 @@ importers: devDependencies: '@wxt-dev/module-vue': specifier: ^1.0.2 - version: 1.0.2(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(vue@3.4.28(typescript@5.8.2))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + version: 1.0.2(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(vue@3.4.28(typescript@5.8.2))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) typescript: specifier: ^5.8.2 version: 5.8.2 @@ -1849,6 +1858,9 @@ packages: '@wxt-dev/browser@0.0.317': resolution: {integrity: sha512-tpFr/OJjTlGY7FLIr950fNi9fIBLQQ9pRVDDajeqEMip5LsXFAxpbF4I1GAGUkdTJEghKQ8P5N9XnsAdbPBAOQ==} + '@wxt-dev/browser@0.0.326': + resolution: {integrity: sha512-4Pb4ES7jMsxYFHEEhK005bOL2BnDEXO3jjZTOvF0gWdota8Ytpg81VtKVSC1ohj17C6tE6oNI3FdcVRfKUBl3Q==} + '@wxt-dev/i18n@0.2.3': resolution: {integrity: sha512-2X005PB1r+6sDYMOuZD5hxSOPkogEZZTLB5HEsOotQ5RYXF3c/OOMD+DffVeq+S0yKY2Dmg4Ujfu0Pq4busJYQ==} peerDependencies: @@ -2446,10 +2458,18 @@ packages: resolution: {integrity: sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==} engines: {node: '>=12'} + dotenv-expand@12.0.2: + resolution: {integrity: sha512-lXpXz2ZE1cea1gL4sz2Ipj8y4PiVjytYr3Ij0SWoms1PGxIv7m2CRKuRuCRtHdVuvM/hNJPMxt5PbhboNC4dPQ==} + engines: {node: '>=12'} + dotenv@16.4.7: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} + dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + engines: {node: '>=12'} + dtrace-provider@0.8.8: resolution: {integrity: sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==} engines: {node: '>=0.10'} @@ -3195,6 +3215,9 @@ packages: resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + linkedom@0.18.11: + resolution: {integrity: sha512-K03GU3FUlnhBAP0jPb7tN7YJl7LbjZx30Z8h6wgLXusnKF7+BEZvfEbdkN/lO9LfFzxN3S0ZAriDuJ/13dIsLA==} + linkedom@0.18.9: resolution: {integrity: sha512-Pfvhwjs46nBrcQdauQjMXDJZqj6VwN7KStT84xQqmIgD9bPH6UVJ/ESW8y4VHVF2h7di0/P+f4Iln4U5emRcmg==} @@ -3490,6 +3513,10 @@ packages: resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} + open@10.1.2: + resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} + engines: {node: '>=18'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -4522,6 +4549,46 @@ packages: yaml: optional: true + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitefu@1.0.6: resolution: {integrity: sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==} peerDependencies: @@ -4741,6 +4808,10 @@ packages: resolution: {integrity: sha512-CdExyv2yWfpmPWFjhrKBA+nUSHOTRpRKqScod66AaLpMQ0famZ18tM0+4a9m7oX4Pts1XZH4nw79XQp06QsC2Q==} hasBin: true + wxt@0.20.7: + resolution: {integrity: sha512-KABq5i3CnXMUaJTcORGDLCi04K/IceUVAx5rler2QbZpLvS13OUOO0k+4s/7LI3+N8zXLh/GlQArMyJfk3M2yQ==} + hasBin: true + xdg-basedir@5.1.0: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} @@ -5711,6 +5782,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)))(svelte@5.28.2)(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': + dependencies: + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.28.2)(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + debug: 4.4.0 + svelte: 5.28.2 + vite: 6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + transitivePeerDependencies: + - supports-color + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)))(svelte@5.28.2)(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) @@ -5724,6 +5804,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.2)(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)))(svelte@5.28.2)(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + debug: 4.4.0 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.17 + svelte: 5.28.2 + vite: 6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + vitefu: 1.0.6(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + transitivePeerDependencies: + - supports-color + '@szmarczak/http-timer@5.0.1': dependencies: defer-to-connect: 2.0.1 @@ -5786,12 +5879,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.4 '@tailwindcss/oxide-win32-x64-msvc': 4.1.4 - '@tailwindcss/vite@4.1.4(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': + '@tailwindcss/vite@4.1.4(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': dependencies: '@tailwindcss/node': 4.1.4 '@tailwindcss/oxide': 4.1.4 tailwindcss: 4.1.4 - vite: 6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + vite: 6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) '@testing-library/dom@10.4.0': dependencies: @@ -5902,31 +5995,42 @@ snapshots: '@types/node': 22.15.31 optional: true - '@vitejs/plugin-react@4.4.1(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5))': + '@vitejs/plugin-react@4.4.1(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5) + vite: 6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.4.1(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': + '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + vite: 6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.3(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(vue@3.4.28(typescript@5.8.2))': + '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': dependencies: - vite: 6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + '@babel/core': 7.26.10 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@5.2.3(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(vue@3.4.28(typescript@5.8.2))': + dependencies: + vite: 6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) vue: 3.4.28(typescript@5.8.2) '@vitest/expect@2.0.5': @@ -6126,6 +6230,11 @@ snapshots: '@types/filesystem': 0.0.36 '@types/har-format': 1.2.15 + '@wxt-dev/browser@0.0.326': + dependencies: + '@types/filesystem': 0.0.36 + '@types/har-format': 1.2.15 + '@wxt-dev/i18n@0.2.3(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': dependencies: chokidar: 3.6.0 @@ -6134,51 +6243,59 @@ snapshots: optionalDependencies: wxt: 0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) - '@wxt-dev/module-react@1.1.3(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5))': + '@wxt-dev/module-react@1.1.3(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': dependencies: - '@vitejs/plugin-react': 4.4.1(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5)) + '@vitejs/plugin-react': 4.4.1(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + wxt: 0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + transitivePeerDependencies: + - supports-color + - vite + + '@wxt-dev/module-react@1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5))': + dependencies: + '@vitejs/plugin-react': 4.4.1(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5)) wxt: 0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5) transitivePeerDependencies: - supports-color - vite - '@wxt-dev/module-react@1.1.3(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': + '@wxt-dev/module-react@1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': dependencies: - '@vitejs/plugin-react': 4.4.1(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + '@vitejs/plugin-react': 4.4.1(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) wxt: 0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) transitivePeerDependencies: - supports-color - vite - '@wxt-dev/module-react@1.1.3(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.6(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': + '@wxt-dev/module-react@1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.6(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': dependencies: - '@vitejs/plugin-react': 4.4.1(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + '@vitejs/plugin-react': 4.4.1(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) wxt: 0.20.6(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) transitivePeerDependencies: - supports-color - vite - '@wxt-dev/module-svelte@2.0.3(svelte@5.28.2)(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': + '@wxt-dev/module-svelte@2.0.3(svelte@5.28.2)(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.6(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': dependencies: '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.28.2)(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) svelte: 5.28.2 - wxt: 0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + wxt: 0.20.6(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) transitivePeerDependencies: - supports-color - vite - '@wxt-dev/module-svelte@2.0.3(svelte@5.28.2)(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.6(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': + '@wxt-dev/module-svelte@2.0.3(svelte@5.28.2)(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.28.2)(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.28.2)(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)) svelte: 5.28.2 - wxt: 0.20.6(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + wxt: 0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) transitivePeerDependencies: - supports-color - vite - '@wxt-dev/module-vue@1.0.2(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(vue@3.4.28(typescript@5.8.2))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': + '@wxt-dev/module-vue@1.0.2(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(vue@3.4.28(typescript@5.8.2))(wxt@0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))': dependencies: - '@vitejs/plugin-vue': 5.2.3(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(vue@3.4.28(typescript@5.8.2)) + '@vitejs/plugin-vue': 5.2.3(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5))(vue@3.4.28(typescript@5.8.2)) wxt: 0.20.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) transitivePeerDependencies: - vite @@ -6741,8 +6858,14 @@ snapshots: dependencies: dotenv: 16.4.7 + dotenv-expand@12.0.2: + dependencies: + dotenv: 16.5.0 + dotenv@16.4.7: {} + dotenv@16.5.0: {} + dtrace-provider@0.8.8: dependencies: nan: 2.20.0 @@ -7443,6 +7566,14 @@ snapshots: lines-and-columns@2.0.4: {} + linkedom@0.18.11: + dependencies: + css-select: 5.1.0 + cssom: 0.5.0 + html-escaper: 3.0.3 + htmlparser2: 10.0.0 + uhyphen: 0.2.0 + linkedom@0.18.9: dependencies: css-select: 5.1.0 @@ -7731,6 +7862,13 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 3.1.0 + open@10.1.2: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -8849,10 +8987,48 @@ snapshots: tsx: 4.15.4 yaml: 2.4.5 + vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.4.38))(tsx@4.15.4)(yaml@2.4.5): + dependencies: + esbuild: 0.25.2 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.3 + rollup: 4.40.1 + tinyglobby: 0.2.13 + optionalDependencies: + '@types/node': 22.15.31 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 + sugarss: 4.0.1(postcss@8.4.38) + tsx: 4.15.4 + yaml: 2.4.5 + + vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5): + dependencies: + esbuild: 0.25.2 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.3 + rollup: 4.40.1 + tinyglobby: 0.2.13 + optionalDependencies: + '@types/node': 22.15.31 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 + sugarss: 4.0.1(postcss@8.5.3) + tsx: 4.15.4 + yaml: 2.4.5 + vitefu@1.0.6(vite@6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)): optionalDependencies: vite: 6.3.3(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + vitefu@1.0.6(vite@6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5)): + optionalDependencies: + vite: 6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + vitest@3.1.2(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5): dependencies: '@vitest/expect': 3.1.2 @@ -9309,6 +9485,70 @@ snapshots: - utf-8-validate - yaml + wxt@0.20.7(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.1)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5): + dependencies: + '@1natsu/wait-element': 4.1.2 + '@aklinker1/rollup-plugin-visualizer': 5.12.0(rollup@4.40.1) + '@webext-core/fake-browser': 1.3.2 + '@webext-core/isolated-element': 1.1.2 + '@webext-core/match-patterns': 1.0.3 + '@wxt-dev/browser': 0.0.326 + '@wxt-dev/storage': 1.1.1 + async-mutex: 0.5.0 + c12: 3.0.3(magicast@0.3.5) + cac: 6.7.14 + chokidar: 4.0.3 + ci-info: 4.2.0 + consola: 3.4.2 + defu: 6.1.4 + dotenv: 16.5.0 + dotenv-expand: 12.0.2 + esbuild: 0.25.2 + fast-glob: 3.3.3 + filesize: 10.1.6 + fs-extra: 11.3.0 + get-port-please: 3.1.2 + giget: 2.0.0 + hookable: 5.5.3 + import-meta-resolve: 4.1.0 + is-wsl: 3.1.0 + json5: 2.2.3 + jszip: 3.10.1 + linkedom: 0.18.11 + magicast: 0.3.5 + minimatch: 10.0.1 + nano-spawn: 0.2.0 + normalize-path: 3.0.0 + nypm: 0.6.0 + ohash: 2.0.11 + open: 10.1.2 + ora: 8.2.0 + perfect-debounce: 1.0.0 + picocolors: 1.1.1 + prompts: 2.4.2 + publish-browser-extension: 3.0.0 + scule: 1.3.0 + unimport: 4.1.3 + vite: 6.3.5(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + vite-node: 3.1.2(@types/node@22.15.31)(jiti@2.4.2)(lightningcss@1.29.2)(sugarss@4.0.1(postcss@8.5.3))(tsx@4.15.4)(yaml@2.4.5) + web-ext-run: 0.2.3 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - jiti + - less + - lightningcss + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - utf-8-validate + - yaml + xdg-basedir@5.1.0: {} xml2js@0.5.0: From a7d54e142e567c8604e3f57f631f4c58624ce27a Mon Sep 17 00:00:00 2001 From: Aaron Date: Sat, 14 Jun 2025 18:10:28 -0500 Subject: [PATCH 2/6] WIP --- examples/custom-fonts/README.md | 14 ++++++++++++-- examples/custom-fonts/assets/fonts.css | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/examples/custom-fonts/README.md b/examples/custom-fonts/README.md index 871aafd..068d5e5 100644 --- a/examples/custom-fonts/README.md +++ b/examples/custom-fonts/README.md @@ -1,6 +1,6 @@ --- -name: Custom Font -description: Show how to use a custom font throughout your extension. +name: Custom Fonts +description: Show how to use custom fonts throughout your extension. --- > [!IMPORTANT] @@ -12,3 +12,13 @@ In this example, we'll add custom fonts from [Google Fonts](https://fonts.google pnpm i pnpm dev ``` + +Important steps: + +1. Export the fonts you want to use from Google Fonts using + - Set the folder prefix to `web-extension://__MSG_@@extension_id__/fonts/` and copy the CSS into `assets/fonts.css` + - Move the downloaded font files into the [`public/fonts` directory](public/fonts) + +2. Create `assets/style.css`. This file will contain the extension's base styles that all entrypoints will use. Make sure to import the `fonts.css` file: +3. In your HTML files, just link to the `style.css` file like normal: +4. In your content script entrypoint, import the `style.css`. If you're using `createShadowRootUi`, remember to set `cssInjectionMode: "ui"`, just like the [normal setup](https://wxt.dev/guide/essentials/content-scripts.html#shadow-root). There's nothing special here. diff --git a/examples/custom-fonts/assets/fonts.css b/examples/custom-fonts/assets/fonts.css index 7d8c38f..fd307cc 100644 --- a/examples/custom-fonts/assets/fonts.css +++ b/examples/custom-fonts/assets/fonts.css @@ -6,7 +6,7 @@ font-family: "Overpass"; font-style: normal; font-weight: 400; - src: url("chrome-extension://__MSG_@@extension_id__/fonts/overpass-v18-latin-regular.woff2") + src: url("wxt-extension://__MSG_@@extension_id__/fonts/overpass-v18-latin-regular.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } @@ -16,6 +16,6 @@ font-family: "Poppins"; font-style: normal; font-weight: 400; - src: url("chrome-extension://__MSG_@@extension_id__/fonts/poppins-v23-latin-regular.woff2") + src: url("wxt-extension://__MSG_@@extension_id__/fonts/poppins-v23-latin-regular.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } From 3726ca34104c8ff72147b389d1764f75955a8f83 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sat, 14 Jun 2025 18:13:18 -0500 Subject: [PATCH 3/6] Cleanup --- examples/custom-fonts/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/examples/custom-fonts/README.md b/examples/custom-fonts/README.md index 068d5e5..9834b4d 100644 --- a/examples/custom-fonts/README.md +++ b/examples/custom-fonts/README.md @@ -17,8 +17,14 @@ Important steps: 1. Export the fonts you want to use from Google Fonts using - Set the folder prefix to `web-extension://__MSG_@@extension_id__/fonts/` and copy the CSS into `assets/fonts.css` + TODO: Add code link - Move the downloaded font files into the [`public/fonts` directory](public/fonts) - 2. Create `assets/style.css`. This file will contain the extension's base styles that all entrypoints will use. Make sure to import the `fonts.css` file: + TODO: Add code link 3. In your HTML files, just link to the `style.css` file like normal: + TODO: Add code link 4. In your content script entrypoint, import the `style.css`. If you're using `createShadowRootUi`, remember to set `cssInjectionMode: "ui"`, just like the [normal setup](https://wxt.dev/guide/essentials/content-scripts.html#shadow-root). There's nothing special here. + TODO: Add code link + TODO: Add code link + +And that's it! You can now use custom fonts in your extension, wherever you want. From 56049c24357276de804ff1aa90c33c23434b8af5 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sat, 14 Jun 2025 18:13:29 -0500 Subject: [PATCH 4/6] Cleanup --- examples/custom-fonts/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/custom-fonts/README.md b/examples/custom-fonts/README.md index 9834b4d..e739c5e 100644 --- a/examples/custom-fonts/README.md +++ b/examples/custom-fonts/README.md @@ -16,7 +16,7 @@ pnpm dev Important steps: 1. Export the fonts you want to use from Google Fonts using - - Set the folder prefix to `web-extension://__MSG_@@extension_id__/fonts/` and copy the CSS into `assets/fonts.css` + - Set the folder prefix to `wxt-extension://__MSG_@@extension_id__/fonts/` and copy the CSS into `assets/fonts.css` TODO: Add code link - Move the downloaded font files into the [`public/fonts` directory](public/fonts) 2. Create `assets/style.css`. This file will contain the extension's base styles that all entrypoints will use. Make sure to import the `fonts.css` file: From 84eb502bda5a1544f58919b69769af0bd3e617a0 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sat, 14 Jun 2025 18:15:59 -0500 Subject: [PATCH 5/6] Cleanup --- examples/custom-fonts/entrypoints/content.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/custom-fonts/entrypoints/content.ts b/examples/custom-fonts/entrypoints/content.ts index a955728..c9faa6d 100644 --- a/examples/custom-fonts/entrypoints/content.ts +++ b/examples/custom-fonts/entrypoints/content.ts @@ -6,12 +6,12 @@ export default defineContentScript({ cssInjectionMode: "ui", async main(ctx) { - const ui = await defineUi(ctx); + const ui = await createUi(ctx); ui.autoMount(); }, }); -function defineUi(ctx: ContentScriptContext) { +function createUi(ctx: ContentScriptContext) { return createShadowRootUi(ctx, { name: "custom-font-example", position: "overlay", From 57ef97cd418db49c9fbc4540bf516a1d47ce2d6c Mon Sep 17 00:00:00 2001 From: Aaron Date: Sat, 14 Jun 2025 18:17:49 -0500 Subject: [PATCH 6/6] Add links --- examples/custom-fonts/README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/examples/custom-fonts/README.md b/examples/custom-fonts/README.md index e739c5e..dfa3e37 100644 --- a/examples/custom-fonts/README.md +++ b/examples/custom-fonts/README.md @@ -17,14 +17,15 @@ Important steps: 1. Export the fonts you want to use from Google Fonts using - Set the folder prefix to `wxt-extension://__MSG_@@extension_id__/fonts/` and copy the CSS into `assets/fonts.css` - TODO: Add code link + https://github.com/wxt-dev/examples/blob/84eb502bda5a1544f58919b69769af0bd3e617a0/examples/custom-fonts/assets/fonts.css#L1-L21 - Move the downloaded font files into the [`public/fonts` directory](public/fonts) 2. Create `assets/style.css`. This file will contain the extension's base styles that all entrypoints will use. Make sure to import the `fonts.css` file: - TODO: Add code link + https://github.com/wxt-dev/examples/blob/84eb502bda5a1544f58919b69769af0bd3e617a0/examples/custom-fonts/assets/style.css#L1 3. In your HTML files, just link to the `style.css` file like normal: - TODO: Add code link + https://github.com/wxt-dev/examples/blob/84eb502bda5a1544f58919b69769af0bd3e617a0/examples/custom-fonts/entrypoints/popup.html#L7 4. In your content script entrypoint, import the `style.css`. If you're using `createShadowRootUi`, remember to set `cssInjectionMode: "ui"`, just like the [normal setup](https://wxt.dev/guide/essentials/content-scripts.html#shadow-root). There's nothing special here. - TODO: Add code link - TODO: Add code link + https://github.com/wxt-dev/examples/blob/84eb502bda5a1544f58919b69769af0bd3e617a0/examples/custom-fonts/entrypoints/content.ts#L2 + https://github.com/wxt-dev/examples/blob/84eb502bda5a1544f58919b69769af0bd3e617a0/examples/custom-fonts/entrypoints/content.ts#L6 + https://github.com/wxt-dev/examples/blob/84eb502bda5a1544f58919b69769af0bd3e617a0/examples/custom-fonts/entrypoints/content.ts#L9-L10 And that's it! You can now use custom fonts in your extension, wherever you want.