From b5ef4da6cb46b226858c75ef02487ac3a1208d0d Mon Sep 17 00:00:00 2001 From: Wil Wade Date: Thu, 15 May 2025 16:00:09 +0000 Subject: [PATCH 01/23] mdbook update --- .github/workflows/common/set-up-mdbook/action.yaml | 5 +---- README.md | 13 ++++++++----- book.toml | 13 ------------- 3 files changed, 9 insertions(+), 22 deletions(-) diff --git a/.github/workflows/common/set-up-mdbook/action.yaml b/.github/workflows/common/set-up-mdbook/action.yaml index cce037b..777e3fa 100644 --- a/.github/workflows/common/set-up-mdbook/action.yaml +++ b/.github/workflows/common/set-up-mdbook/action.yaml @@ -11,10 +11,7 @@ runs: uses: jontze/action-mdbook@0765bef0c7c5792f93bf3ed3d487a0ca32c9da33 with: token: ${{ inputs.token }} - mdbook-version: "0.4.47" # Use a semver compatible string - # Optional Plugins have to be enabled - use-linkcheck: true - linkcheck-version: "~0.7.7" + mdbook-version: "0.4.49" # Use a semver compatible string - name: Show mdbook version shell: bash diff --git a/README.md b/README.md index c904b83..71e84d9 100644 --- a/README.md +++ b/README.md @@ -10,16 +10,19 @@ or [Frequency on GitHub](https://github.com/frequency-chain/frequency) ## Install -To build the generator locally, install [mdBook](https://github.com/rust-lang/mdBook.git) -and [link checker](https://github.com/Michael-F-Bryan/mdbook-linkcheck). The link checker will run during build process and throw warnings for any broken internal -or external links. +To build the generator locally, install [mdBook](https://github.com/rust-lang/mdBook.git). ```bash -cargo install mdbook@v0.4.47 -cargo install mdbook-linkcheck +cargo install mdbook@0.4.49 npm install ``` +### Local Link Checking + +Use [mdbook linkcheck](https://github.com/Michael-F-Bryan/mdbook-linkcheck). +The link checker will run during build process and throw warnings for any broken internal or external links. +Not run in CI due to a high number of false negatives. + ## Run ### (Option 1) Active Build and Serve via HTTP diff --git a/book.toml b/book.toml index 2a4bea1..b5569bb 100644 --- a/book.toml +++ b/book.toml @@ -36,18 +36,5 @@ additional-css = [ [output.html.redirect] "/Core.html" = "/Whitepaper.html" -# https://github.com/Michael-F-Bryan/mdbook-linkcheck -# [output.linkcheck] -# exclude = [ -# 'github\.com/paseo-network', -# 'github\.com/frequency-chain/docs', -# 'github\.com/frequency-chain/frequency/releases', -# 'github\.com/frequency-chain/frequency', -# 'twitter\.com', -# 'www\.frequency\.xyz', -# ] -# follow-web-links = true -# traverse-parent-directories = false - [output.html.fold] enable = true From 58af389368452aadc3c5b5f9b91869fd47d1fe9e Mon Sep 17 00:00:00 2001 From: Wil Wade Date: Thu, 15 May 2025 16:21:28 +0000 Subject: [PATCH 02/23] Update favicon --- theme/favicon.ico | Bin 106851 -> 152126 bytes theme/favicon.svg | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/theme/favicon.ico b/theme/favicon.ico index f92e3348d1235c59cd13044e9002440c56ced87a..01ced570ccc3e889bcd4d808434f8fcadde025a4 100644 GIT binary patch literal 152126 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 literal 106851 zcmeHQ2UrtH8{Q;Tks_klD59R&Jqu?C+ljp%VgSO12RzeUe@|6f^^x4gFJR6+2K9Pn04)zqaUdIF}wPE_Vd`SI|S^WC>|TUQkxx4 zwhZm?jV-AAO?}RO_W|YD8J>ph(uKP0$X+?t|Hgi<{;;kU*gQA9MCt>CN~mp6W&RIZS2FbO#N4^%`hSXjVC;bDRTWm zS=2#Yj5C%5I|9ZZ$&Ut}?8ce&gWvuon>hQCni2XFRuj$=9uQtifo<%=F_b~sjJn@S z&V7$;UD~cqm`%7&_&|`2dv@C>gR-cDx(eALQ{I@irx5NFveP5aKGcN_$dcHRo9A2^ zN^24J6TTAU(UV&l$bc-!%+Ut!7^O`Jmk7DZROT3DLUy(`NcV%UY;{ZeEsfbjfN#f3 zdF_F0Nt=-6L8`kfrH2UL$b!BxztNaG!I1TvXeb%;aybuvQ$LGL=zy*a6KI=Hm_|q? zd{ZAj`_fpuFPdQ^V;FYb8g164bEYx#n>yLak?w;I=;FfwN`bnBM}%zUKtINM73qf# z=z>n@hVKgq+3Lpr0?-d#&W9R5trQR<#7x; zp?gyvyyx(ZGV@wNtS=KK}kD=9T9wX)p8wns#_V! zoKT5z0lJ^c>dJ0ATm94zBgqEz$Gr!5?8c3ntZ=fSqWu!OF&D^{M_K*QiTUI5CA#d6 za6!5av@eS6*uG1^j_y-lk@1n6hsdv=^n|QSpR>8s+-vR(eKu^fri7DiI|b~h-U{n~ zrjY-ne|?CSB+im^0<}BLfiWLmGQX5$ZlBG3Iw$|2`?6B{Wv*c)c2Hl$JXpc=0(7Gf z@e3S>TAd@FxAI8Ky^g|bPO6DMx!VX_T_VZ2ZW20zXnKHUep70q{MskgY zdj%vfJ3t3?N#-9ia}dmlqI0Mtxkd&Lav}F~5p-mlf63TThmKvz(T42($B5|znGM^5`86S5_GWOZ}f+%ZaF<3U39?Ljf!kO5f|zbWO^Wt-x- z6yON+R52kZpYqy|x{x8^o6>A`X5EQ$GQd1_9^nSzBOx!HD1)-7!_9Fe^0Mm5D^K-h z?J%eOK*CzWp9J*bBq^|seK>|PD4S6?H$ALKz_JX(rZS9e3d2|=F^r*@VYEdIBM{Q9 z1AtNT$JG~+EHTN1Z0LY4=!93htEEMcbx?{)Ej0oU`5&@@j+Jag;?J)P)SlDlk7} zWz%*Q!ej!*ozDc$CS_B|fGo&_Y?b;UBTtXET?iPf(+JAin^Qf=gly=5E{PusHjzxl zIT@5%6Sfml2s!Cj)qd!JF6dO+2d*xqzY?wyRAryMa-b8s74|_|hexR+0b_`~I#pc` zx?uxs$<#J-%AlOI`~XT5397b9QF*Wdw&dvpm632oX(z%HLY}&~Yem^qo_Y$Ffi18p z*R~`*j{C8gC*)~6t}F5EV{HF&>{tf^r6YTl&$FI9va=}zn1?(e?Bzz*|sR#BW_S<)--)q73 zXVejf#dT%@+7H`cVE?lH5C^>(&)?-CTh7!#3CmTQhv1 zZS?Kw1i8^MgCD;T~ydm}W-XQt*C!PVES` zKUJmudubg}#G&;2$Fe?1{GfJ)_JujqNX4F~o&n|j97JB*Q4Y2*<>V`pDr3JQ^5rZG+XoR;GJnXa z{m5yHB5_Aq*bLjP31Wgm^>d9s<~`CjpI4fXJ`9^-yEXy$wN+w2#(i8DV|*XoH*e&l zAH!zYj%xrHLcXtGaE`({+-)>>!#OH1V6HmPue36AZP*H%VLMQTpwK)hyY?e{j>UN@ zFW`Q~qPcp?*biG_v*a3{Qe40L5%P8Y&e<<-ivEss0b)VA5b9)t#C*N~_I_KuNK0vXy1KYB_e<*{}h&z^3d>{$?M_5wP|K^NR$6JbDVE z40OW=*z%2?x$QuCDLPXs*YgZ2r%E576T0(kGdcOe)upsHVK+gpX9H9&KYl<5bU~-m zwsSslGAJ!g7(uvB$d7%w)rD;6fUbPoo{bNXX-@DV;Q8zqLT>iRa||*d3o;>FVmDG% z|72y;c0~gE)^@^e!Uuvp_M!~Rq7Ldp24oeO-C5%xtBbZZ3DpRF33CZi1gysp6P`(d zZS2D_ltEe4LEU`WEm@?*EmT5^#Y9L&w73YVkk$_&g%k9L))>($BZi^%MzrGSzm%#` zMS4dHDZMAfr6T0pNk6@r;NCXq;cfp znz2ZW!byd(PRouUBxJ19q8*C7PexT0`pLE#={DA3RVLUG+z87Ek%aREJeRv81-7vd z$4~}kQ3rK1t>vP;LN*mfVb~-C^c_5p$9TJy@HYYX6H^KDjw2|GI;aa7kOi6f?w6{J z2iYU*cNxm}A?zUhOThJW{K{=!9tAm5Ne}0{1#Pb+ zydfxSzpCoN2G|0dB=+UzgR;k@vT?1{k?*b19-^)0W1s4tZ>pVGp(##B`-VJmD_ zItEmiYx4oc%y%w^hyiR@xGzY3$Gw%Yg!cqaW^qelJA6>+J`t4%_x6P61ciOZyKH#h z8S7v(KzS9d?NHPn_yAw>>h6-`C`Yg&Tp=i`OXB0~Y5MG%)!J+@t z^mz{c5zAHKq8&i{$Dt&;n7#e{$O3ZLOW+I|!v-`qn+Uj7em zUrEt*F)Fbu8~@-le6LQpo6T{h^ycV4t$PaFq9OSv7v6>A*3YR*uM%?LGkotsc&|kL zY~z!Y|CkG6tr6CcBMw-f=0V?uMEL@Imm*smrM|*v_&%MWlD-eQx%tn{hq*OZJHq+w zvPHV=EV z{^38TTQdKl^{;rJX%hE7lT6v;!wXzMg$i{T%zhQa;lhkgJFJ zu!{VLkMNaqpX&prwC@sp$PaRA|C}GnrYiIwKEl@w|FMBQ!JUvwP&x)`?mv8kkC}Xz z@xMGBJD*?wvs?dw`A>d;cT#8ho|OS8*4qV-a(bX zJFWS+7XqK)TeiN-_>cL}My35n+;II;0LYh3={~`?9Q~Jx0iKIo&!;}++K;mBF86xy z1wQ5KJ9iM}2;B&nC#aJj%Gd%Q;0xzoo+-)__=NEUMc#i?#=e5A1KZ&Pe96;q*#am} zzt>Rn zXdIvux?zLl9S2Ga!sTpbLYEX}DIGyLN5DH5iu$2wdFX&H=!EV9=RDg0&`wUbG&P~L zKVc6cfuN{gd6kDu$cBy#ziB%s^9pT0Y>)xkVm*QzVHe>R;SJ#{Auk`f<0y+ds0$g8 z1(_M`oVE+iKY10wrYz8;yg8vG!IQ9taF}q35Knk01-7vd$4~}kQ3rJ)Ba>Wt?UAP( z%ce1mKTAK!hXg1U;ll#-Lv2dZKS02;=^rLwSuyr&ONvPf3X$if7pDp&4L^TLHTt3h zmrAOq|Gyd>HCp5Q|8A>i6!9bqeBA0bi-Y-1mep$y8R z4(dV%WI<-8{>tSG)8`*u7Z-Dx6xRe8Pumg35>^pn2sa2%2$)BHCMbHILLJnF49J2^ z$c7H+f=T;O1CRf+J_KKzUaHe1nhh zHPaj+OSky0v*bJ1{tamx*Vz{did>%+_jUkZ;WKLGL7Kq7r+YUJ2D8;xpkD$)an+vi;PG z!%xHtF+=Q%T^rzRrWDV*uM&PF?o{b3Vuu(On>HY|RfAGo+dL+yG9EvoEW{A8L`>Cs zS_u0Hcuwv^z&f8Fk*|XA8L>o6C2J7Wu@R7M;9id~pYV}T5OMgCWg@1CEn=)zO#t=~ za35Y%56%Cl-h~Vh;`qbr^s?0`5_cBqS3`I4_zQ zAok!ua=*AR8Ug77_dplIQ$h*%MH>Tf04^lF6m%Pq>Zwm@ETM#Z^@stu04D`XKjafk z2!{xT%f0m5fpULiOLgDWDqKI6k1IFRKIqb7kBh6Lv0rLv-#8 z`7mp$K7C`BzOnq{v;%MgZVF^RNOHk{Z$c8GQ2PY>yx&Aa$+wg7y{tSz-(=dokH?N5 zY?7bv3Kgo4DvBw%0Y@qw10auJMYu{R^ted)r*G)X{f#whBfBE_?6@C~e{chiz?Dkc z0OSy~2&)K%&OLN0%s+i!@CW7}9DyrvmhUzI8HDbHH-r-Yizo&P#vWXOvwZQ7`h;?X z(}W`79(qgqzf!RWXW&lhHb8ZGgo%VAeXdi&zf$~zGjK;=fKdEL_0acg5aJ0%*7u>i zgny;u5AMLB!VQ4x;GXhaLXof4F5zEk{=pqMB@}tzhYcnDKi@onOK_U!7=SVa zZ-QF%eX^s3|NQqua0yQ3;UCwG7Z7)KK}r8t2^ZkBTy713j-&7QBdFDSt`h!L!aq0# zw>dTeI)-P5+X-sZ_hCy3|0?4H+-hdm0BAq@KCTn~C6w^5W-(9^C*U^QYeCu%{znrE zb!`Xf%d@SO^#8nLBu^Zr+=An8h5*{9O^77q$wy(ADdAtGoPcBPtPOzn)g-9h*pIeW z!oN!S2gfyK`KLU_{vm`Sea=VvvmJX%_|HBrImIiF{ooi}XEXuY#{J&4glywq)cY0Y zU%LLwgVu}=R?YuaRm-^KgBNg}aX*;0jS2W3om%>-F#ojvYtMcjJ9|3T0GH4Bzm4kZ zUlG^^u8p|?fVLYEUKW8JalaXcxF{ z1pX=I&i!h4-N(g4S^m)mxV7Rt!ujm7MY^ol2xE3w*9ww3Wj_ArtX%DuvtJEUa4new zPzwI>F0tDBlpp>x){Nu50eUZBPZW<`w^m#7KEbHoKlHf)oP&E@_wWDi`KPgfYYS)x z5r-IdGo2ge|G4J{a1QP(5U%}5{AaWS>AOTb_t3dv@eg-y0O#PoA>ql7$UoN(_GLOZ zXr-SU`h55225=7UyAj^~(EMk2ZrDoa24QK*d#B&&bptpD_hSfZ{l7L;GXIm|IHTX^ zvX8rNz`0>Log2JIes|Xm;2hk~A*jt-FS6yE>yV=0KckIs=LWi;6tYf>^`B(Oj>5Tt z>@4QjkKi2Kug@;#>a?#&`Ii|ZGOiow+z?3T2HanE`t{rPs!p-X!xnJAFOM?c^vA+3 zuP*#^V}j(|K-Z9)sU3{zSH3up1K|EdVe_e|K4tmm&fy$ys!Sn!N4S6;^INgzAKa_$ zb04mqD8oPQ{RgkqVMD_-CHHzTcB`8IZMy{QXqpQY<9PtMzrw{?T~lTF-+PcJxz|6U zrztzb(}-Ogtj&hgyh}h*a#{0RAzz7~Z2;e`5~(f0y&W zz0|MqtUo*cGqnR66I|%rFlks>HYl(ZyPeJrlIH<=%n`ui{-{_u=Jp9Z0%bgp>I+kPS(03*!*A2Ox8^Hg@jhd`$H{w5=dzQsyAGlY`HUF~l zD-8ZQeK;=wxNey4VZ;Wn(q?z#+(3K-+{#r)YHI0yGw`=5~En;MP-YRA7C#z+bNz&W_DM7XX*{X#om zl<;35=VovY?sW(UOZYF47#CU}QG!2k4({;|z#=8;7n*M+{l7rkCO8N8fD-}l1Qi;m zis&lgU*)`jYj7@k1(ebzgja+T{?#-FD&_`UH<5Y&*O>B`RIEc~ZKT!AwMn9jZ^WDs-+A%vpxC*yy3aPMFhhqMUe1+KtZ_M|Gf7jg(S2sa2t z*9J;-%M*KW1g;chIrrj_M{pz*>3M+k%M*hiwG6lcN4b-!#8Jp3;Q4S6p-8U>NdJ$@ zZ*G2r6L15LlwdgTDv(RSobos!H(N@M6@GlcNxtX%d9?!4fi}>X5Kk!KSv_I^F2G4% z^yT|FbV$*g(ieo1Hc+%N00-bg!b`phmP3G47oHD{BdGPaBgnq*xqTw`-~e36!JO)f zKp#PyFq@!O>&3{P@0oMXH^dyV2M4MnRsl)SODIiPK~T$ghsZ82Uf)xSSR>|$y#kD> zz9{q)j0mdjQ`_VvJZT!BoLjfjv^Y zmQnhNppJc~INOAnBDQMBJ=dzpHnagfLIB|%p*Y7|ooq)e5mUsL3%6RPu#bRykZy$M z1a*pIakK?7L@W#JzOJep64{D2fVD&22{#GFG4ASMGh&ArB9^MAsX*nyUMU(-dWcZ+ z%t-!zfLI}Bh@B*k1xi){3FmC5)PyjX@S30w{Ysr}K#UM8#H`qI&owE|2TC;vy$F{H z>Ky-~v<_YgR@FU+d zgzty}Vu6@^x7_E@4$6|x_y+wALQ#&pMWGu$!*|5shu}SjHUQr(2{Q<{2}Qw0Vd{jB z@D)Bwct`r9{$yi7+dmNyn^?kELSgb!khA_U7>mWykaRFCp_->EBM3L%v62jLC@ zYhynWlv$I4I;aa7kOi5L4IR)0ozR`p$GL4e-6<)S&j@hw&XQu>H6&OOS`hjXJP30L z!Gs-zD8g}qND6FYAC936%AyYHLIz|(CS-qCe6x~Y3d2~WZ>9eQF*5li|cE-#j38Eq~vOwaSAd1>_w0n+Lj0wmf|MQVX4y?TZPLM|^A$YrH2 zWQdn4$Ph18kRe{GK>S~QiN&J-@)DPY|K%kL|I11g%BYhlOqD%u%d%PXGUiAOk}*eO zkXW`p8I(0Il08la3T5+TVAj0sVKO+AxnywGd?s@l#x`p{llkO8UinP!k%L+D;>`AG z=am;_E-%O{FU(w?m*0G5aV5FJjzE6-%UWNQ*?~OUlQ?sE?Y#0?+k4i0Ui~NQ@vQwZ zYd&j#&YEX4+yCu&A(SmZ?r8G|Gz6d8joAWy~sTjXUFO0xecl&F)5h(sOBW+;%JuQC)^ zq}R{z$Ui;L36zS<2&u$c6p;$BkQV1c;?L#N1!Pp0S|HUfDFlu(O4A0JC_Nn5t4AmO zQk6&G;)9UtNqi z*uo*cvm`!Y7_*2NwPK|4m>Xc_P79dS75{th>f&d08wXnZ|6 zamRhXFCK=0a{^u-zWBbzC-D|$vbM#AS(_Rd`n}?PwYyT<|D3g_aZ-S;xLL#Uss2_e z6$IyI1ywY=Hz7RnaJT2;Bj&jG0aQ zQy=+VBio(i$C#vO?h${P85Hw%$S2WSv1@~*lOk79&q!yV1!G!hYPK77_NB#db-VX{ zw<%+^=Gb+7F0kxJl*Rh% zCAB-)uECfdg8N!+<_u|GL7>^z4aWwEYrmM!PMrL;&9fei)9Ds7=jpua)orZN)<#Ub zvnMP1lub$$Y2A9Xd`Y}vYUQMgFIGS9H`i`ApK30Qx-fP8`PI*#PaN7}Rn+6N7U%0* z7_>h+)3O||*Wa&fE2qp5cZ{2Q^3MvMEt5WqW^8?W(DKa%hxTVrmiIAD;=ORVvpzAZ z^YDL#J6t|as4IHaxY^&o#4J8A-S5RTcaK$Z2Bcv~T=y3Ki_E^3wU~B&W#>J5DV5#L z+Ll>K5)ic5U3{%O*s%}wb9VE&ZmQG zIz0&wP7aA_#cTD?FEN*T4%Dgs#Kdy)4JZEbiay%WUeWdk3>XW|w2HScHu-snM&MI& zn{6VVCAuBi`fbO7E@h(cpZ-bQTkO-Phwd;7CTunPlh`$`(a=jtUBe#>FGT%4v%Tob z3ePS^xBCjO_C9Gi=-iiMqS_R&e$Du))uPv@ls@xurR8cf;;6wN5s4?u-i@fU;lR@5 zL88|D(&yi=wDjf~)lLhK3S8TN^J=FS4d!`hPigMGE2&qN_LdGjBa@Tb$2C$kJ_r}b zZ9HfHVrrcJh+8gK+WEE`SJfzl(OGa(FGc@F>e#FA*L2|52}p1W*73jjOU&LX!AA2t zG8$)3G9gc=TYQ+iu*3hX+}~6b1%1{!T<(z(f0-f0=u5!IVZ5se)4EwTws!s)Quj{ypKy&o$cYk87<_ zS@?y7ZU}VK>ClLATfjDbTE9);rqZ4jqa7aK+d0?nUw-KJ6sN`YlRNuP?a)fYsvHyc zkZoAouk+k4I_{P;s~W9^J~M~ZeeKRR_}>Fw@I=2J;>rEmSsIh~Y^8pw%LlJAiqVOw zS$l&p8AU5bYu`@1I(t*~;CU|xTnm~bO!ngU5LjBLwQ;|4;(oi}&(%M*5tS8zwwyR3wC^OwJUW^k;%GGg z&pAho0%S~s#{GO zwB&Au!&}CC-nMVqKGcI}6o2;PT~WQ4sY9)F50gz|3m|=GT5jJ=^!ZxCdF9gfg*`MKvwB`^pFsxO>%D}f<=sbZTI}IJw!`%>;f5~vsrbv` zb&d&FYf{KH#a9A?!?v8Xue0~u^F!Nq@b?Z~{>4iCe(UckGw#3FS$?JKUE7}x!}pqr z`Vaav&!%3p&-=8}1U?b7eyQ1_RnWt~&aRxUC!87jzEz`Yu9MBodW^m5XPEMv^V6gy zgF@0y4~*pv7yc3!>z8t*?x;Dd&GRP-j#E1 zFK5NA9@c$K3s`I;zO*+bdAaDy$fQXFH0@drZLX^rtg4!w(&HJ#=g3c0M%%Tf>-t-nX<`-sl&>6+O2|7kzEJq{YF` ziK~K-`u)8y{P|6` zYKNctZLv3Ru{UGxZ7^|h;uO2;k0VaGMTIqOoopbydW~H?+TXU!t)o!`-FNDZ-YQ5E z_79!$wd3Z8UH1Hxa98tU9j0AZzx(r-q*?Xu{fzH$ea}a}Jp@nw=GA3}nx;B+*gWc9(}DdN zjlhZep0g7BTU#AC%8S{4uYTw~gHSym{j0A(#|Hkn=X2D+y@>;=OwzI&9mJX*@f%^) zC)kuX>-}Wj`^n_T=~G&__I2s-d_OPzpXR1ov1OUAQHcwuMQ^fiH9TtFhGd(s1IUD` z8|Rcyn}6ogD$#)_E%euf3;uN3d&cV4zF#{$8BxaJ*nwAnH^24M#<4=v7{3~gX5H{u zyy^O_J29rtO;gWwb86_yXzV@xe)NGWPv5jEbKa+zj6gKxWHKNI;2)92ICguTMpB-4O5 z&rUc;Gmd(#&cCm-w4#sWn^Ap!?{wng%jS;tUax(%;_tLX-FP-p=oQhafmQbb+Jk@j zJ65>Xz+$TS(arF6X&7aoIxqu7elGzSFF)BfPr7-}H$2q4@{TbiC*} zPdwSouKaZVt`A>KJI^)Wv%P`iW!oW4-F7ce+Fu`hp-G)-JM@J0L=LyMlv}nsenIR9 zlfKl}I>l6Sd@=2y)%89L1H#89@Z4Go>x*kYInl|k!^0Z$Vn3|hFw;%otb6o*|LVIU z&bS@lZNq2H+|uV(aDC(w%+dW^i#kCCa#OwvH1(^_tdL#@M;4=tgdKb zz|dP;$}Wq3u30~#n}$ORVcqC%y>4HaUwx2P_*);imGn#HqD)$5fK9i>@x zzm~$Lqje)EFEC6wk=T3d0E6(U6XU*~5=3;WUdza2#*vy=&U}9C^Qgw#FF|(k=Htuj z3+(zEjMa8%`e|O^#fu-SKI%R2`uUV|zbzWFf9^v&TRro*j(+!-@I@0` z)%e_DHf2cj1$BZOMvu^c6w<%%z~dtGQBS7&w9xk)QzMLVd@!xaa-&r?Cl8BA*P@~O zR|k64vHtkvivPWjr)Eu@(&LKF0mdO89wfW;o8#M(n2rY-~YrnWZ&kXkSbTh z4eUmmnjE^nVM~l#tu4WOM)*Fe{gY{fX8vjSoF9DoR6o^SYhRORpMTrl`;g#I{!ybk zeLuAk_a1unbV|ny6>lG164>;@z*|qg^or=lU!Z5c^peXIt!E~7-L_qFx_LhC3GZC= zp0Izl7XNjSE~@$Qwln}-%T9lSm!wq6Yt^I{Juvr6SukAvsRjRi>8j)G_ijBF;j^^ z?Fz?y^v{l1Xc-ddey!)S_q`q*Th-oQ@bkZYFHiY7daCeR*ISJzT<=(7?d&X zA_^?stHXtWM>RkAySDMW+47`$+ZLC!7gXFMSmW8cQs=5Y&4lgCYM6e{AXpi+zrp6aVaM;%!m=E%D!&= z+H<$HZe^JCzx9=Od=X8U=4~EINuw=~!mcb7bQE_mXr{j?#(Z)0MG0+>bbEDUz}x8t zedA`#kJ!>v^9wt*w(rMZg?~49F5Qej_{Fpi#*_NSr;-x0&5`5hzv!E=`@*WV0d=vI=^KK7Fbg)H}{A=?@#HITlSj>1v9~;K1(aPow^1egBM4b#+U2-5k$b zDLfs~soKwF#wE||(K~L&(m(E18$K`g$@z;ep(|S+f8?MQeSe~k9{;YH_21zh$y3N` zvF@QyZ~E~K=puRSA@Qa&<4QfB)VfjNnl2&!Z%fZ<-5$PAad-6aJHB{WQ`;KMue}(Z z_2ZLk);{n_yVi@oA)73#-OvzCaPQ;1Dsfq0`%`}WwUZwGyQ$f)F2V7svs=uJ^=-;r z=1mW%GdQSQ6`jMMY;C(ec+=i3d4)#sHjBHf$dCvF+P0bN@65+Igwx ziQgSB^%sPeZnflY)s4t?|CQrkR9$IlD0{12(x-)*L-g97B%Ht8?I!Tk?p39rv8Ou*zwtmR-X#DMk%T z*PYV3&)U-~ZCLBpEe)@G*?XM0=vKjJXCt1D>AlqC4oP9m{Fpm|f18-wnp}Jmeku59 zzvsv3+%h*{UO@QZpnfBttoms{im1mlbN#gXUI&9ew^|hI^V{|(dJ9B`SAPn-_T-Dt zqiy1VakYJST{w8Cbq!|bq*>a!Lw;I1zt7zZsp~b&OK)ON&oN^}=Hj0vC%kE;!(Z0g zt|x3P`Wn%xj#WJ`TZh|yyO}a0#O5<^Yj&*u;j&B9ArW8CX!4BKS8Jv5VoGbbGGhY2 z-Wbg8`}1N_>&lMOS|;ens?ro?Lt z?fZVIz05a`N3i&P1;Aqn8rQ+{M&r{_TIdY zmv5wW6xWE zKAqZviL5urHt3b1QQ*4Xdu-+o|PDm&o|_!BaKut`1z!w3&63 zS+=vnS+}=meB=E`?-4LwJgeTz6EO|ZK{;w)$-CnzI z>Eu6pzd+~2o7Qn}+uyBaeZ68Ehe;os^i92*T8j~BtnScq$jLfZwW7*~9|;`EhHe*F z+J|ls*&Z5ZM^Vt-bJN>q`n!2ICo|6V{+A$ZdH44QR=YfFI*hH?{PDQX%n}@HQXmYJariYk}Mqt z)w{dl*fz5F?-e3#Vc!kYMs+ZLW#Z7cXY|{rhI?N#wNL1#>P=fMv_H_rvEGaWX8t~O zC1t-;S6uDs$g0am-dz}by+e3V+STm_mKC1170(cb*_>#8?eWx?Uzav%Haqs}DQ^>7 zyNF8-#K%PQgeRF&9%)0biN6fLvSfK{FRd%%&p#h+xS+=IVY({?oo(jEUY>IMQ}_7K zJx4o#smFAU{O7{0=;Y}g=W0LR*vhZ|?VICQRIGTu&NH{MGiUI8>Lm3$wj}LpfUCU` zKX_Qn)kFVz_1aX|qxsugSI5{bZ(aJhxzC;rXAQ63J8k0WeI@8wbigY zI62~O0$V$+dS$+!cFf_sXANH-E8T3v?ErtfFFFe@4mSy3cDv1soOxP1&DvYDnd@vf?1&*Ci)T+V^{L-t9rn`X{D#YRT;M z<}uSFzl3bkes|R8jn$G3qWH9Z?YuNSI(fBXoV)0>T5!pCsNv*e6&B8~mLRk}zwvor z@7}3mYbLZ3zfF>>d*`=J?SjMK%%9xr@x=S{0yc*~)Skydg*XXHsbVrxLRvx`H+UOrQt>8T*)o58ey>`wf$37mhI5x^o zZ%*~jwe@DCX*8=i=i$8h8ca9c01JMI@WNI7ealO?Nva{fD|)lj#I}RPj)ce_&h?U- z+|ac@zDn4De^R^3l0I+RpW!px_mn?g*>TYmjp`>BINoN*Ia|A(H7rwakEO=1!Y`5f z9XFPVjaqOqbiT)vPopOL%wT;xMDKL_No!Kvnb4cM_Ei?q{jGb3>le7aX+K+lpwFFS zS7uPnrAvO-tP!#Ck8#hwT6+HU7fCdvu-lc1v1q0{xO*k#wm@G4BYz~);#>qrkVqf>Dx}M@!{(1(w>@2 zr?j@|ysEM2ywFy2qcEkM?HS))9!VDiT1C(MJYBdr;(Ya8k%rUbV-o`ZH~fCLVYhg* zHSdb5C+Q?rb8Z|Nutqzi!|I^Dy=G`9H4QaMcsOs3Hq)(n4Ih4tAW^4&`+GGx{m^LGTic3v?%IIQcO>y?g0P5Nr+GO1^vwV%Cnc$JHK!oB5E z8jH8>ti1GGH^%9__v^sNb=kqj*Lbt%91W=ItnFDPM#J&>G1~G?uu1hyQoVQZbuA{Y%1Am|9y_q&uyO*_?UORS&uz_>X&aS^b=)d)Y zg|D@SXq@%5YSCMLey3ZngIWjHd+@bxpG#Y3+#F&RPd0ZiSO~Qe=8DGkV{;{tYb3;e7 zt$9kvx;lQEx2M}Zbk#{I?~r24oNGJBsVlGHtaX+#d>=tlqZg}Pe;6 zF0Q#VY1B6VKPORTgOIw%D~43NYBulM&jFX7`|GBZvN_V9UoLI13FEcC3Q!A;Rv);6EZI3N>Ih^2EIpofl zGSRI~L;u*+K+|rP+e}Nr9$v)xKg37H2?Jf?D%B7hc^_n3MAx}eHFWSNemOr^6Q*9T zvRaz%o0Ed09-q6S;Sknv%|2sKjh27hpX>2%e~|N$`a7QvYRkLYu4!8)lF^%$D6AZL zVS&JIUt-j+H*`EJ9CM#y>V4+E_If@4Wu;DfnJ^xWx>xu&;82{~=~3DigCciW?06rx zqvMMK(~d>eY&xJwHXX>v-S1l+a+!Po-PE`0JEbU89InZERcvmfjduWs$4q zN$u%J|8DPi>h<}N@4hCPhCjXClP4B630QiH?@}+?>D0D3n~}jT$=Z5>_haY$>|XP3 zwYa9Ahs3$w^;=-}pl6wNX9VSr>y={8Z`Yl*z})@x@<-=j+XV kBR>D=V%xLkhOA+O6`$6Ij;f+dkMo$$9eZ?$Xy-ih{~8MssQ>@~ diff --git a/theme/favicon.svg b/theme/favicon.svg index ee5b6f3..9b17a17 100644 --- a/theme/favicon.svg +++ b/theme/favicon.svg @@ -1 +1,2 @@ - \ No newline at end of file + + From 147a77b5c55561a2808ac9b80ba237ed8a4b6590 Mon Sep 17 00:00:00 2001 From: Wil Wade Date: Thu, 15 May 2025 16:24:37 +0000 Subject: [PATCH 03/23] Update tailwind package --- book.toml | 2 +- package-lock.json | 903 ++++++++++++++++++++-------------------------- package.json | 5 +- 3 files changed, 399 insertions(+), 511 deletions(-) diff --git a/book.toml b/book.toml index b5569bb..46a6c8e 100644 --- a/book.toml +++ b/book.toml @@ -15,7 +15,7 @@ command = "node preprocessors/title-image.mjs" [preprocessor.tailwind] renderers = ["html"] -command = 'node preprocessors/noop-npx.mjs "npx -y tailwindcss -i ./theme/css/tailwind.css -o ./css/tailwind.css"' +command = 'node preprocessors/noop-npx.mjs "npx -y @tailwindcss/cli -i ./theme/css/tailwind.css -o ./css/tailwind.css"' [output.html] no-section-label = true diff --git a/package-lock.json b/package-lock.json index 0cb71a8..b14fbed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,35 +9,23 @@ "version": "0.0.1", "license": "CC-BY-SA-4.0", "devDependencies": { - "@frequency-chain/style-guide": "^0.1.28", + "@frequency-chain/style-guide": "^0.1.37", + "@tailwindcss/cli": "^4.1.7", "remark": "^15.0.1", "remark-cli": "^12.0.1", "remark-lint": "^10.0.1", "remark-preset-lint-recommended": "^7.0.1", "spellchecker-cli": "^7.0.0", - "tailwindcss": "^3.4.15" + "tailwindcss": "^4.1.7" }, "engines": { "node": ">=20" } }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -165,18 +153,44 @@ "license": "MIT" }, "node_modules/@frequency-chain/style-guide": { - "version": "0.1.28", - "resolved": "https://registry.npmjs.org/@frequency-chain/style-guide/-/style-guide-0.1.28.tgz", - "integrity": "sha512-Bx78T2yDq6dJabaiwxnA9AvohKv0ZVVzOuiNtTDsLPVGYTvKskh/uV0WD6nnigAIRN63ro8KPX5ZcEfxEQvgaA==", + "version": "0.1.37", + "resolved": "https://registry.npmjs.org/@frequency-chain/style-guide/-/style-guide-0.1.37.tgz", + "integrity": "sha512-XlEvsRwhUmaPcBh332+z3LUPH2J6+cvupzCycYpDMkJn5XwVhGAPTsCed4FzCaC/sOzcvLe0tA4Dr9szCbXIzg==", "dev": true, "license": "Apache-2.0", "dependencies": { "bits-ui": "^0.22.0", "clsx": "^2.1.1", - "svelte": "^4.2.19", + "svelte": "^5.0.0", "tailwind-merge": "^3.0.2" } }, + "node_modules/@frequency-chain/style-guide/node_modules/svelte": { + "version": "5.30.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.30.1.tgz", + "integrity": "sha512-QIYtKnJGkubWXtNkrUBKVCvyo9gjcccdbnvXfwsGNhvbeNNdQjRDTa/BiQcJ2kWXbXPQbWKyT7CUu53KIj1rfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/estree": "^1.0.5", + "acorn": "^8.12.1", + "aria-query": "^5.3.1", + "axobject-query": "^4.1.0", + "clsx": "^2.1.1", + "esm-env": "^1.2.1", + "esrap": "^1.4.6", + "is-reference": "^3.0.3", + "locate-character": "^3.0.0", + "magic-string": "^0.30.11", + "zimmerframe": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@internationalized/date": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.7.0.tgz", @@ -204,11 +218,22 @@ "node": ">=12" } }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -222,7 +247,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -231,7 +255,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -239,14 +262,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -367,6 +388,61 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -377,6 +453,16 @@ "node": ">=14" } }, + "node_modules/@sveltejs/acorn-typescript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.5.tgz", + "integrity": "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8.9.0" + } + }, "node_modules/@swc/helpers": { "version": "0.5.15", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", @@ -387,6 +473,92 @@ "tslib": "^2.8.0" } }, + "node_modules/@tailwindcss/cli": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.1.7.tgz", + "integrity": "sha512-hJNjpov/UiJc9ZWH4j/eEQxqklADrD/71s+t8Y0wbyQVAwtLkSp+MeC/sHTb03X+28rfbe0fRXkiBsf73/IwPg==", + "license": "MIT", + "dependencies": { + "@parcel/watcher": "^2.5.1", + "@tailwindcss/node": "4.1.7", + "@tailwindcss/oxide": "4.1.7", + "enhanced-resolve": "^5.18.1", + "mri": "^1.2.0", + "picocolors": "^1.1.1", + "tailwindcss": "4.1.7" + }, + "bin": { + "tailwindcss": "dist/index.mjs" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.7.tgz", + "integrity": "sha512-9rsOpdY9idRI2NH6CL4wORFY0+Q6fnx9XP9Ju+iq/0wJwGD5IByIgFmwVbyy4ymuyprj8Qh4ErxMKTUL4uNh3g==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.7" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.7.tgz", + "integrity": "sha512-5SF95Ctm9DFiUyjUPnDGkoKItPX/k+xifcQhcqX5RA85m50jw1pT/KzjdvlqxRja45Y52nR4MR9fD1JYd7f8NQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.7", + "@tailwindcss/oxide-darwin-arm64": "4.1.7", + "@tailwindcss/oxide-darwin-x64": "4.1.7", + "@tailwindcss/oxide-freebsd-x64": "4.1.7", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.7", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.7", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.7", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.7", + "@tailwindcss/oxide-linux-x64-musl": "4.1.7", + "@tailwindcss/oxide-wasm32-wasi": "4.1.7", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.7", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.7" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.7.tgz", + "integrity": "sha512-81jUw9To7fimGGkuJ2W5h3/oGonTOZKZ8C2ghm/TTxbwvfSiFSDPd6/A/KE2N7Jp4mv3Ps9OFqg2fEKgZFfsvg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide/node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/@types/concat-stream": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-2.0.3.tgz", @@ -538,12 +710,6 @@ "node": ">=4" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -557,12 +723,6 @@ "node": ">= 8" } }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -695,7 +855,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, "dependencies": { "fill-range": "^7.1.1" }, @@ -709,15 +868,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", @@ -804,6 +954,15 @@ "fsevents": "~2.3.2" } }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/ci-info": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", @@ -835,6 +994,7 @@ "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "@types/estree": "^1.0.1", @@ -952,15 +1112,6 @@ "integrity": "sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==", "dev": true }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/concat-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", @@ -977,10 +1128,11 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -996,6 +1148,7 @@ "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -1004,18 +1157,6 @@ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/date-format": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.3.tgz", @@ -1074,6 +1215,18 @@ "node": ">=6" } }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -1147,12 +1300,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -1174,12 +1321,6 @@ "node": ">=8" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -1202,6 +1343,19 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -1232,6 +1386,13 @@ "node": ">=0.8.0" } }, + "node_modules/esm-env": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", + "dev": true, + "license": "MIT" + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -1245,12 +1406,23 @@ "node": ">=4" } }, + "node_modules/esrap": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.6.tgz", + "integrity": "sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "^1.0.0" } @@ -1310,7 +1482,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1406,15 +1577,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/gemoji": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/gemoji/-/gemoji-7.1.0.tgz", @@ -1482,8 +1644,7 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/has-flag": { "version": "3.0.0", @@ -1494,18 +1655,6 @@ "node": ">=4" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/hast-util-embedded": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", @@ -2045,21 +2194,6 @@ "node": ">=4" } }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "dev": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-decimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", @@ -2080,7 +2214,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2098,7 +2231,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -2120,7 +2252,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -2172,12 +2303,12 @@ } }, "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", - "dev": true, + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "license": "MIT", "bin": { - "jiti": "bin/jiti.js" + "jiti": "lib/jiti-cli.mjs" } }, "node_modules/js-tokens": { @@ -2310,13 +2441,61 @@ "node": ">=6" } }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, "engines": { - "node": ">=10" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss/node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" } }, "node_modules/lines-and-columns": { @@ -2405,7 +2584,6 @@ "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" @@ -4003,7 +4181,8 @@ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true, - "license": "CC0-1.0" + "license": "CC0-1.0", + "peer": true }, "node_modules/merge2": { "version": "1.4.1", @@ -4477,7 +4656,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -4508,19 +4686,45 @@ "dev": true }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, "engines": { "node": ">=4" } @@ -4531,35 +4735,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/nlcst-affix-emoticon-modifier": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nlcst-affix-emoticon-modifier/-/nlcst-affix-emoticon-modifier-2.1.1.tgz", @@ -4657,6 +4832,12 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT" + }, "node_modules/nopt": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", @@ -4705,24 +4886,6 @@ "integrity": "sha512-/fYevVkXRcyBiZDg6yzZbm0RuaD6i0qRfn8yr+6D0KgBMOndFPxuW10qCHpzs50nN8qKuv78k8MuotZhcVX6Pw==", "dev": true }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -4837,12 +5000,6 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, "node_modules/path-scurry": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", @@ -4874,6 +5031,7 @@ "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^3.0.0", @@ -4883,14 +5041,12 @@ "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -4898,24 +5054,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/pkg-dir": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-6.0.1.tgz", @@ -4940,161 +5078,6 @@ "node": ">=4" } }, - "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/postcss-nested": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", - "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "postcss-selector-parser": "^6.1.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, "node_modules/proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", @@ -5144,15 +5127,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, "node_modules/read-package-json-fast": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", @@ -8067,23 +8041,6 @@ "node": ">= 0.10" } }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/retext": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/retext/-/retext-8.1.0.tgz", @@ -8380,7 +8337,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -8811,34 +8767,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, "node_modules/supports-color": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", @@ -8851,24 +8779,13 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/svelte": { "version": "4.2.19", "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz", "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", @@ -8942,53 +8859,44 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.15.tgz", - "integrity": "sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==", - "dev": true, + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.7.tgz", + "integrity": "sha512-kr1o/ErIdNhTz8uzAYL7TpaUuzKIE6QPQ4qmSdxnoX/lo+5wmUHQA6h3L5yIqEImSRnAAURDirLu/BgiXGPAhg==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.6.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.2", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.6", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.8", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.1.1", - "postcss": "^8.4.47", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.2", - "postcss-nested": "^6.2.0", - "postcss-selector-parser": "^6.1.2", - "resolve": "^1.22.8", - "sucrase": "^3.35.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, "engines": { - "node": ">=14.0.0" + "node": ">=6" } }, - "node_modules/tailwindcss/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "license": "ISC", "dependencies": { - "is-glob": "^4.0.3" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=18" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, "node_modules/text-table": { @@ -8997,32 +8905,10 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -9056,12 +8942,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -10049,6 +9929,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zimmerframe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", + "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", + "dev": true, + "license": "MIT" + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index bd67f4f..43d3629 100644 --- a/package.json +++ b/package.json @@ -19,13 +19,14 @@ "lint": "npm run lint:md && npm run lint:spellcheck" }, "devDependencies": { - "@frequency-chain/style-guide": "^0.1.28", + "@frequency-chain/style-guide": "^0.1.37", + "@tailwindcss/cli": "^4.1.7", "remark": "^15.0.1", "remark-cli": "^12.0.1", "remark-lint": "^10.0.1", "remark-preset-lint-recommended": "^7.0.1", "spellchecker-cli": "^7.0.0", - "tailwindcss": "^3.4.15" + "tailwindcss": "^4.1.7" }, "engines": { "node": ">=20" From 71925dab7fdf5daa81f6b4dc238eb05fc68d1cd1 Mon Sep 17 00:00:00 2001 From: Wil Wade Date: Thu, 15 May 2025 16:29:44 +0000 Subject: [PATCH 04/23] Some updates --- theme/index.hbs | 50 ++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/theme/index.hbs b/theme/index.hbs index bcc4364..2741534 100644 --- a/theme/index.hbs +++ b/theme/index.hbs @@ -21,21 +21,21 @@ {{#if favicon_svg}} - + {{/if}} {{#if favicon_png}} - + {{/if}} - - - + + + {{#if print_enable}} - + {{/if}} {{#if copy_fonts}} - + {{/if}} @@ -51,7 +51,7 @@ {{/if}} - + - - - - + + + + + {{/if}} {{#if search_js}} - - - + + + {{/if}} - - - + + + {{#each additional_js}} - + {{/each}} {{#if is_print}} From b22168923ce3ec8cd89ae4435b5169e2ee6f4b07 Mon Sep 17 00:00:00 2001 From: Wil Wade Date: Thu, 15 May 2025 21:15:02 +0000 Subject: [PATCH 05/23] Initial work --- book.toml | 2 +- css/highlight-dark.css | 2 +- css/highlight.css | 2 +- css/overrides.css | 6 ++ theme/book.js | 197 +++++++++++++++++++++-------------- theme/css/chrome.css | 96 ++++++++++++++--- theme/css/general.css | 64 +++++++++--- theme/css/variables.css | 182 +++++++++++++++++--------------- theme/head.hbs | 6 +- theme/header.hbs | 12 +-- theme/index.hbs | 154 +++++++++++++++------------ theme/{css => }/tailwind.css | 6 +- theme/toc.html.hbs | 15 +-- theme/toc.js.hbs | 3 +- 14 files changed, 462 insertions(+), 285 deletions(-) rename theme/{css => }/tailwind.css (97%) diff --git a/book.toml b/book.toml index 46a6c8e..01b88c5 100644 --- a/book.toml +++ b/book.toml @@ -15,7 +15,7 @@ command = "node preprocessors/title-image.mjs" [preprocessor.tailwind] renderers = ["html"] -command = 'node preprocessors/noop-npx.mjs "npx -y @tailwindcss/cli -i ./theme/css/tailwind.css -o ./css/tailwind.css"' +command = 'node preprocessors/noop-npx.mjs "npx -y @tailwindcss/cli -i ./theme/tailwind.css -o ./css/tailwind.css"' [output.html] no-section-label = true diff --git a/css/highlight-dark.css b/css/highlight-dark.css index df3309b..fef4356 100644 --- a/css/highlight-dark.css +++ b/css/highlight-dark.css @@ -140,5 +140,5 @@ pre .hljs { .embed-number { font-size: 60px; font-weight: bold; - color: #f77c47; + color: var(--color-secondary); } diff --git a/css/highlight.css b/css/highlight.css index 442cffe..c4990ec 100644 --- a/css/highlight.css +++ b/css/highlight.css @@ -200,5 +200,5 @@ pre .hljs { .embed-number { font-size: 60px; font-weight: bold; - color: #f77c47; + color: var(--color-secondary); } diff --git a/css/overrides.css b/css/overrides.css index 61a3835..6ac16bb 100644 --- a/css/overrides.css +++ b/css/overrides.css @@ -190,6 +190,11 @@ body { margin-inline-start: 0; } +.sidebar-resize-handle .sidebar-resize-indicator::after, +.sidebar-resize-handle .sidebar-resize-indicator::before { + border-left: none !important; +} + @media only screen and (min-width: 620px) { .sidebar-resize-handle .sidebar-resize-indicator { display: inherit; @@ -265,6 +270,7 @@ body { transition-property: border, color; transition-duration: 0.5s; margin-bottom: 24px; + width: auto; } #content .mobile-nav-chapters:hover { diff --git a/theme/book.js b/theme/book.js index e5f65b9..502fe32 100644 --- a/theme/book.js +++ b/theme/book.js @@ -1,14 +1,16 @@ "use strict"; +/* global default_theme, default_dark_theme, default_light_theme, hljs, ClipboardJS */ + // Fix back button cache problem window.onunload = function () {}; // Global variable, shared between modules function playground_text(playground, hidden = true) { - let code_block = playground.querySelector("code"); + const code_block = playground.querySelector("code"); if (window.ace && code_block.classList.contains("editable")) { - let editor = window.ace.edit(code_block); + const editor = window.ace.edit(code_block); return editor.getValue(); } else if (hidden) { return code_block.textContent; @@ -25,7 +27,7 @@ function playground_text(playground, hidden = true) { ]); } - var playgrounds = Array.from(document.querySelectorAll(".playground")); + const playgrounds = Array.from(document.querySelectorAll(".playground")); if (playgrounds.length > 0) { fetch_with_timeout("https://play.rust-lang.org/meta/crates", { headers: { @@ -37,7 +39,7 @@ function playground_text(playground, hidden = true) { .then((response) => response.json()) .then((response) => { // get list of crates available in the rust playground - let playground_crates = response.crates.map((item) => item["id"]); + const playground_crates = response.crates.map((item) => item["id"]); playgrounds.forEach((block) => handle_crate_list_update(block, playground_crates)); }); } @@ -48,10 +50,10 @@ function playground_text(playground, hidden = true) { // and install on change listener to dynamically update ACE editors if (window.ace) { - let code_block = playground_block.querySelector("code"); + const code_block = playground_block.querySelector("code"); if (code_block.classList.contains("editable")) { - let editor = window.ace.edit(code_block); - editor.addEventListener("change", function (e) { + const editor = window.ace.edit(code_block); + editor.addEventListener("change", () => { update_play_button(playground_block, playground_crates); }); // add Ctrl-Enter command to execute rust code @@ -70,7 +72,7 @@ function playground_text(playground, hidden = true) { // updates the visibility of play button based on `no_run` class and // used crates vs ones available on https://play.rust-lang.org function update_play_button(pre_block, playground_crates) { - var play_button = pre_block.querySelector(".play-button"); + const play_button = pre_block.querySelector(".play-button"); // skip if code is `no_run` if (pre_block.querySelector("code").classList.contains("no_run")) { @@ -79,16 +81,17 @@ function playground_text(playground, hidden = true) { } // get list of `extern crate`'s from snippet - var txt = playground_text(pre_block); - var re = /extern\s+crate\s+([a-zA-Z_0-9]+)\s*;/g; - var snippet_crates = []; - var item; + const txt = playground_text(pre_block); + const re = /extern\s+crate\s+([a-zA-Z_0-9]+)\s*;/g; + const snippet_crates = []; + let item; + // eslint-disable-next-line no-cond-assign while ((item = re.exec(txt))) { snippet_crates.push(item[1]); } // check if all used crates are available on play.rust-lang.org - var all_available = snippet_crates.every(function (elem) { + const all_available = snippet_crates.every(function (elem) { return playground_crates.indexOf(elem) > -1; }); @@ -100,7 +103,7 @@ function playground_text(playground, hidden = true) { } function run_rust_code(code_block) { - var result_block = code_block.querySelector(".result"); + let result_block = code_block.querySelector(".result"); if (!result_block) { result_block = document.createElement("code"); result_block.className = "result hljs language-bash"; @@ -108,15 +111,15 @@ function playground_text(playground, hidden = true) { code_block.append(result_block); } - let text = playground_text(code_block); - let classes = code_block.querySelector("code").classList; + const text = playground_text(code_block); + const classes = code_block.querySelector("code").classList; let edition = "2015"; - if (classes.contains("edition2018")) { - edition = "2018"; - } else if (classes.contains("edition2021")) { - edition = "2021"; - } - var params = { + classes.forEach((className) => { + if (className.startsWith("edition")) { + edition = className.slice(7); + } + }); + const params = { version: "stable", optimize: "0", code: text, @@ -156,7 +159,7 @@ function playground_text(playground, hidden = true) { languages: [], // Languages used for auto-detection }); - let code_nodes = Array.from(document.querySelectorAll("code")) + const code_nodes = Array.from(document.querySelectorAll("code")) // Don't highlight `inline code` blocks in headers. .filter(function (node) { return !node.parentElement.classList.contains("header"); @@ -193,19 +196,21 @@ function playground_text(playground, hidden = true) { }); Array.from(document.querySelectorAll("code.hljs")).forEach(function (block) { - var lines = Array.from(block.querySelectorAll(".boring")); + const lines = Array.from(block.querySelectorAll(".boring")); // If no lines were hidden, return if (!lines.length) { return; } block.classList.add("hide-boring"); - var buttons = document.createElement("div"); + const buttons = document.createElement("div"); buttons.className = "buttons"; - buttons.innerHTML = ''; + buttons.innerHTML = + ''; // add expand button - var pre_block = block.parentNode; + const pre_block = block.parentNode; pre_block.insertBefore(buttons, pre_block.firstChild); pre_block.querySelector(".buttons").addEventListener("click", function (e) { @@ -229,16 +234,16 @@ function playground_text(playground, hidden = true) { if (window.playground_copyable) { Array.from(document.querySelectorAll("pre code")).forEach(function (block) { - var pre_block = block.parentNode; + const pre_block = block.parentNode; if (!pre_block.classList.contains("playground")) { - var buttons = pre_block.querySelector(".buttons"); + let buttons = pre_block.querySelector(".buttons"); if (!buttons) { buttons = document.createElement("div"); buttons.className = "buttons"; pre_block.insertBefore(buttons, pre_block.firstChild); } - var clipButton = document.createElement("button"); + const clipButton = document.createElement("button"); clipButton.className = "clip-button"; clipButton.title = "Copy to clipboard"; clipButton.setAttribute("aria-label", clipButton.title); @@ -252,26 +257,26 @@ function playground_text(playground, hidden = true) { // Process playground code blocks Array.from(document.querySelectorAll(".playground")).forEach(function (pre_block) { // Add play button - var buttons = pre_block.querySelector(".buttons"); + let buttons = pre_block.querySelector(".buttons"); if (!buttons) { buttons = document.createElement("div"); buttons.className = "buttons"; pre_block.insertBefore(buttons, pre_block.firstChild); } - var runCodeButton = document.createElement("button"); + const runCodeButton = document.createElement("button"); runCodeButton.className = "fa fa-play play-button"; runCodeButton.hidden = true; runCodeButton.title = "Run this code"; runCodeButton.setAttribute("aria-label", runCodeButton.title); buttons.insertBefore(runCodeButton, buttons.firstChild); - runCodeButton.addEventListener("click", function (e) { + runCodeButton.addEventListener("click", () => { run_rust_code(pre_block); }); if (window.playground_copyable) { - var copyCodeClipboardButton = document.createElement("button"); + const copyCodeClipboardButton = document.createElement("button"); copyCodeClipboardButton.className = "clip-button"; copyCodeClipboardButton.innerHTML = ''; copyCodeClipboardButton.title = "Copy to clipboard"; @@ -280,9 +285,9 @@ function playground_text(playground, hidden = true) { buttons.insertBefore(copyCodeClipboardButton, buttons.firstChild); } - let code_block = pre_block.querySelector("code"); + const code_block = pre_block.querySelector("code"); if (window.ace && code_block.classList.contains("editable")) { - var undoChangesButton = document.createElement("button"); + const undoChangesButton = document.createElement("button"); undoChangesButton.className = "fa fa-history reset-button"; undoChangesButton.title = "Undo changes"; undoChangesButton.setAttribute("aria-label", undoChangesButton.title); @@ -290,7 +295,7 @@ function playground_text(playground, hidden = true) { buttons.insertBefore(undoChangesButton, buttons.firstChild); undoChangesButton.addEventListener("click", function () { - let editor = window.ace.edit(code_block); + const editor = window.ace.edit(code_block); editor.setValue(editor.originalCode); editor.clearSelection(); }); @@ -299,15 +304,15 @@ function playground_text(playground, hidden = true) { })(); (function themes() { - var html = document.querySelector("html"); - var themeToggleButton = document.getElementById("theme-toggle"); - var themePopup = document.getElementById("theme-list"); - var themeColorMetaTag = document.querySelector('meta[name="theme-color"]'); - var themeIds = []; + const html = document.querySelector("html"); + const themeToggleButton = document.getElementById("theme-toggle"); + const themePopup = document.getElementById("theme-list"); + const themeColorMetaTag = document.querySelector('meta[name="theme-color"]'); + const themeIds = []; themePopup.querySelectorAll("button.theme").forEach(function (el) { themeIds.push(el.id); }); - var stylesheets = { + const stylesheets = { // MOD: Different stylesheets // ayuHighlight: document.querySelector("[href$='ayu-highlight.css']"), // tomorrowNight: document.querySelector("[href$='tomorrow-night.css']"), @@ -325,7 +330,13 @@ function playground_text(playground, hidden = true) { themePopup.querySelectorAll(".theme-selected").forEach(function (el) { el.classList.remove("theme-selected"); }); - themePopup.querySelector("button#" + get_theme()).classList.add("theme-selected"); + const selected = get_saved_theme() ?? "default_theme"; + let element = themePopup.querySelector("button#" + selected); + if (element === null) { + // Fall back in case there is no "Default" item. + element = themePopup.querySelector("button#" + get_theme()); + } + element.classList.add("theme-selected"); } function hideThemes() { @@ -334,18 +345,35 @@ function playground_text(playground, hidden = true) { themeToggleButton.focus(); } - function get_theme() { - var theme; + function get_saved_theme() { + let theme = null; try { theme = localStorage.getItem("mdbook-theme"); - } catch (e) {} + } catch (e) { + // ignore error. + } + return theme; + } + + function delete_saved_theme() { + localStorage.removeItem("mdbook-theme"); + } + + function get_theme() { + const theme = get_saved_theme(); if (theme === null || theme === undefined || !themeIds.includes(theme)) { - return default_theme; + if (typeof default_dark_theme === "undefined") { + // A customized index.hbs might not define this, so fall back to + // old behavior of determining the default on page load. + return default_theme; + } + return window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme; } else { return theme; } } + let previousTheme = default_theme; function set_theme(theme, store = true) { let ace_theme; @@ -371,23 +399,27 @@ function playground_text(playground, hidden = true) { }); } - var previousTheme = get_theme(); - if (store) { try { localStorage.setItem("mdbook-theme", theme); - } catch (e) {} + } catch (e) { + // ignore error. + } } html.classList.remove(previousTheme); html.classList.add(theme); + previousTheme = theme; updateThemeSelected(); } - // Set theme - var theme = get_theme(); + const query = window.matchMedia("(prefers-color-scheme: dark)"); + query.onchange = function () { + set_theme(get_theme(), false); + }; - set_theme(theme, false); + // Set theme. + set_theme(get_theme(), false); themeToggleButton.addEventListener("click", function () { if (themePopup.style.display === "block") { @@ -398,7 +430,7 @@ function playground_text(playground, hidden = true) { }); themePopup.addEventListener("click", function (e) { - var theme; + let theme; if (e.target.className === "theme") { theme = e.target.id; } else if (e.target.parentElement.className === "theme") { @@ -406,7 +438,12 @@ function playground_text(playground, hidden = true) { } else { return; } - set_theme(theme); + if (theme === "default_theme" || theme === null) { + delete_saved_theme(); + set_theme(get_theme(), false); + } else { + set_theme(theme); + } }); themePopup.addEventListener("focusout", function (e) { @@ -416,7 +453,8 @@ function playground_text(playground, hidden = true) { } }); - // Should not be needed, but it works around an issue on macOS & iOS: https://github.com/rust-lang/mdBook/issues/628 + // Should not be needed, but it works around an issue on macOS & iOS: + // https://github.com/rust-lang/mdBook/issues/628 document.addEventListener("click", function (e) { if ( themePopup.style.display === "block" && @@ -435,6 +473,7 @@ function playground_text(playground, hidden = true) { return; } + let li; switch (e.key) { case "Escape": e.preventDefault(); @@ -442,14 +481,14 @@ function playground_text(playground, hidden = true) { break; case "ArrowUp": e.preventDefault(); - var li = document.activeElement.parentElement; + li = document.activeElement.parentElement; if (li && li.previousElementSibling) { li.previousElementSibling.querySelector("button").focus(); } break; case "ArrowDown": e.preventDefault(); - var li = document.activeElement.parentElement; + li = document.activeElement.parentElement; if (li && li.nextElementSibling) { li.nextElementSibling.querySelector("button").focus(); } @@ -468,13 +507,13 @@ function playground_text(playground, hidden = true) { // MOD: Sidebar is now dependent on the checkbox, so had to adjust how the js responds (function sidebar() { - var body = document.querySelector("body"); - var sidebar = document.getElementById("sidebar"); - var sidebarLinks = document.querySelectorAll("#sidebar a"); - var sidebarToggleButton = document.getElementById("sidebar-toggle"); - var sidebarResizeHandle = document.getElementById("sidebar-resize-handle"); - var sidebarToggleAnchor = document.getElementById("sidebar-toggle-anchor"); - var firstContact = null; + const body = document.querySelector("body"); + const sidebar = document.getElementById("sidebar"); + const sidebarLinks = document.querySelectorAll("#sidebar a"); + const sidebarToggleButton = document.getElementById("sidebar-toggle"); + const sidebarToggleAnchor = document.getElementById("sidebar-toggle-anchor"); + const sidebarResizeHandle = document.getElementById("sidebar-resize-handle"); + let firstContact = null; function showSidebar() { if (sidebarToggleAnchor.checked !== true) { @@ -540,7 +579,7 @@ function playground_text(playground, hidden = true) { body.classList.add("sidebar-resizing"); } function resize(e) { - var pos = e.clientX - sidebar.offsetLeft; + let pos = e.clientX - sidebar.offsetLeft; if (pos < 20) { hideSidebar(); } else { @@ -550,7 +589,7 @@ function playground_text(playground, hidden = true) { } } //on mouseup remove windows functions mousemove & mouseup - function stopResize(e) { + function stopResize() { body.classList.remove("sidebar-resizing"); window.removeEventListener("mousemove", resize, false); window.removeEventListener("mouseup", stopResize, false); @@ -572,8 +611,8 @@ function playground_text(playground, hidden = true) { function (e) { if (!firstContact) return; - var curX = e.touches[0].clientX; - var xDiff = curX - firstContact.x, + const curX = e.touches[0].clientX; + const xDiff = curX - firstContact.x, tDiff = Date.now() - firstContact.time; if (tDiff < 250 && Math.abs(xDiff) >= 150) { @@ -595,16 +634,16 @@ function playground_text(playground, hidden = true) { if (window.search && window.search.hasFocus()) { return; } - var html = document.querySelector("html"); + const html = document.querySelector("html"); function next() { - var nextButton = document.querySelector(".nav-chapters.next"); + const nextButton = document.querySelector(".nav-chapters.next"); if (nextButton) { window.location.href = nextButton.href; } } function prev() { - var previousButton = document.querySelector(".nav-chapters.previous"); + const previousButton = document.querySelector(".nav-chapters.previous"); if (previousButton) { window.location.href = previousButton.href; } @@ -612,7 +651,7 @@ function playground_text(playground, hidden = true) { switch (e.key) { case "ArrowRight": e.preventDefault(); - if (html.dir == "rtl") { + if (html.dir === "rtl") { prev(); } else { next(); @@ -620,7 +659,7 @@ function playground_text(playground, hidden = true) { break; case "ArrowLeft": e.preventDefault(); - if (html.dir == "rtl") { + if (html.dir === "rtl") { next(); } else { prev(); @@ -631,7 +670,7 @@ function playground_text(playground, hidden = true) { })(); (function clipboard() { - var clipButtons = document.querySelectorAll(".clip-button"); + const clipButtons = document.querySelectorAll(".clip-button"); function hideTooltip(elem) { elem.firstChild.innerText = ""; @@ -643,10 +682,10 @@ function playground_text(playground, hidden = true) { elem.className = "clip-button tooltipped"; } - var clipboardSnippets = new ClipboardJS(".clip-button", { + const clipboardSnippets = new ClipboardJS(".clip-button", { text: function (trigger) { hideTooltip(trigger); - let playground = trigger.closest("pre"); + const playground = trigger.closest("pre"); return playground_text(playground, false); }, }); @@ -668,7 +707,7 @@ function playground_text(playground, hidden = true) { })(); (function scrollToTop() { - var menuTitle = document.querySelector(".menu-title"); + const menuTitle = document.querySelector(".menu-title"); menuTitle.addEventListener("click", function () { document.scrollingElement.scrollTo({ top: 0, behavior: "smooth" }); diff --git a/theme/css/chrome.css b/theme/css/chrome.css index 5b5e5b1..ca4586d 100644 --- a/theme/css/chrome.css +++ b/theme/css/chrome.css @@ -3,9 +3,10 @@ html { scrollbar-color: var(--scrollbar) var(--bg); } +/* MOD: Force a:visited to apply to .content only */ #searchresults a, .content a:link, -a:visited, +.content a:visited, a > .hljs { color: var(--links); } @@ -437,11 +438,14 @@ ul#searchresults span.teaser em { color: var(--sidebar-fg); } .sidebar-iframe-inner { + --padding: 10px; + background-color: var(--sidebar-bg); color: var(--sidebar-fg); - padding: 10px 10px; + padding: var(--padding); margin: 0; font-size: 1.4rem; + min-height: calc(100vh - var(--padding) * 2); } .sidebar-iframe-outer { border: none; @@ -490,9 +494,24 @@ html:not(.sidebar-resizing) .sidebar { .sidebar-resize-handle .sidebar-resize-indicator { width: 100%; - height: 12px; - background-color: var(--icons); + height: 16px; + color: var(--icons); margin-inline-start: var(--sidebar-resize-indicator-space); + display: flex; + align-items: center; + justify-content: flex-start; +} +.sidebar-resize-handle .sidebar-resize-indicator::before { + content: ""; + width: 2px; + height: 12px; + border-left: dotted 2px currentColor; +} +.sidebar-resize-handle .sidebar-resize-indicator::after { + content: ""; + width: 2px; + height: 16px; + border-left: dotted 2px currentColor; } [dir="rtl"] .sidebar .sidebar-resize-handle { @@ -519,21 +538,23 @@ html:not(.sidebar-resizing) .sidebar { } /* sidebar-visible */ -/* #sidebar-toggle-anchor:checked ~ .page-wrapper { - transform: translateX(calc(var(--sidebar-width) + var(--sidebar-resize-indicator-width))); +/* MOD: replaced with side-nav.css +#sidebar-toggle-anchor:checked ~ .page-wrapper { + transform: translateX(calc(var(--sidebar-width) + var(--sidebar-resize-indicator-width))); } -[dir="rtl"] #sidebar-toggle-anchor:checked ~ .page-wrapper { - transform: translateX(calc(0px - var(--sidebar-width) - var(--sidebar-resize-indicator-width))); +[dir=rtl] #sidebar-toggle-anchor:checked ~ .page-wrapper { + transform: translateX(calc(0px - var(--sidebar-width) - var(--sidebar-resize-indicator-width))); } @media only screen and (min-width: 620px) { - #sidebar-toggle-anchor:checked ~ .page-wrapper { - transform: none; - margin-inline-start: calc(var(--sidebar-width) + var(--sidebar-resize-indicator-width)); - } - [dir="rtl"] #sidebar-toggle-anchor:checked ~ .page-wrapper { - transform: none; - } -} */ + #sidebar-toggle-anchor:checked ~ .page-wrapper { + transform: none; + margin-inline-start: calc(var(--sidebar-width) + var(--sidebar-resize-indicator-width)); + } + [dir=rtl] #sidebar-toggle-anchor:checked ~ .page-wrapper { + transform: none; + } +} +END MOD: replaced with side-nav.css */ .chapter { list-style: none outside none; @@ -664,3 +685,46 @@ html:not(.sidebar-resizing) .sidebar { margin-inline-start: -14px; width: 14px; } + +/* The container for the help popup that covers the whole window. */ +#mdbook-help-container { + /* Position and size for the whole window. */ + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + /* This uses flex layout (which is set in book.js), and centers the popup + in the window.*/ + display: none; + align-items: center; + justify-content: center; + z-index: 1000; + /* Dim out the book while the popup is visible. */ + background: var(--overlay-bg); +} + +/* The popup help box. */ +#mdbook-help-popup { + box-shadow: 0 4px 24px rgba(0, 0, 0, 0.15); + min-width: 300px; + max-width: 500px; + width: 100%; + box-sizing: border-box; + display: flex; + flex-direction: column; + align-items: center; + background-color: var(--bg); + color: var(--fg); + border-width: 1px; + border-color: var(--theme-popup-border); + border-style: solid; + border-radius: 8px; + padding: 10px; +} + +.mdbook-help-title { + text-align: center; + /* mdbook's margin for h2 is way too large. */ + margin: 10px; +} diff --git a/theme/css/general.css b/theme/css/general.css index a126492..e929313 100644 --- a/theme/css/general.css +++ b/theme/css/general.css @@ -87,13 +87,16 @@ h6:target::before { box-sizing: border-box; background-color: var(--bg); } -/* .no-js .page-wrapper, + +/* MOD: Replaced with side-nav.css +.no-js .page-wrapper, .js:not(.sidebar-resizing) .page-wrapper { - transition: margin-left 0.3s ease, transform 0.3s ease; /* Animation: slide away */ -/* } + transition: margin-left 0.3s ease, transform 0.3s ease; +} [dir=rtl] .js:not(.sidebar-resizing) .page-wrapper { - transition: margin-right 0.3s ease, transform 0.3s ease; /* Animation: slide away */ -/* } */ + transition: margin-right 0.3s ease, transform 0.3s ease; +} +END MOD: Replaced with side-nav.css */ .content { overflow-y: auto; @@ -201,16 +204,53 @@ sup { line-height: 0; } -:not(.footnote-definition) + .footnote-definition, -.footnote-definition + :not(.footnote-definition) { - margin-block-start: 2em; -} .footnote-definition { font-size: 0.9em; - margin: 0.5em 0; } -.footnote-definition p { - display: inline; +/* The default spacing for a list is a little too large. */ +.footnote-definition ul, +.footnote-definition ol { + padding-left: 20px; +} +.footnote-definition > li { + /* Required to position the ::before target */ + position: relative; +} +.footnote-definition > li:target { + scroll-margin-top: 50vh; +} +.footnote-reference:target { + scroll-margin-top: 50vh; +} +/* Draws a border around the footnote (including the marker) when it is selected. + TODO: If there are multiple linkbacks, highlight which one you just came + from so you know which one to click. +*/ +.footnote-definition > li:target::before { + border: 2px solid var(--footnote-highlight); + border-radius: 6px; + position: absolute; + top: -8px; + right: -8px; + bottom: -8px; + left: -32px; + pointer-events: none; + content: ""; +} +/* Pulses the footnote reference so you can quickly see where you left off reading. + This could use some improvement. +*/ +@media not (prefers-reduced-motion) { + .footnote-reference:target { + animation: fn-highlight 0.8s; + border-radius: 2px; + } + + @keyframes fn-highlight { + from { + background-color: var(--footnote-highlight); + } + } } .tooltiptext { diff --git a/theme/css/variables.css b/theme/css/variables.css index b5b55ae..9c3e73b 100644 --- a/theme/css/variables.css +++ b/theme/css/variables.css @@ -1,34 +1,38 @@ /* Globals */ +/* + * MOD: We have to modify this fairly heavily. + * To update, just make sure that we have all the new variables. + */ :root { /* Colors from Style Guide */ - --navy: #14313f; - /* Primary is usually used for headers, nav, etc... */ - --primary: #18465e; - --teal: #55b1ab; - /* Neutral Colors */ - --black: #000000; - --gray1: #4f4f4f; - --gray2: #828282; - --gray3: #c8cdd0; - --white: #ffffff; - --shadow: #00000040; - /* Supporting Colors */ - --tealDark: #339b94; - --tealBright: #00b6af; - --brightBlue: #5e69ff; - --dustyRose: #a06b87; - --orange: #f77c47; - --yellow: #ffd647; - /* State tailwindColors */ - --error: #eb5757; - --warning: #f99a2a; - --success: #27ae60; - --info: #2f80ed; + --color-primary: #790e70; + --color-purple25: #9a4a94; + --color-purple50: #bc86b7; + --color-purple75: #ddc3db; + --color-darkPurple: #331e49; + --color-secondary: #ff9a02; + + /* State Colors */ + --color-error: #eb5757; + --color-warning: #f99a2a; + --color-success: #27ae60; + --color-info: #2f80ed; + + /* Neutrals */ + --color-black: #242527; + --color-gray1: #717171; + --color-gray2: #8b8b8b; + --color-gray3: #dbdbdb; + --color-white: #ffffff; + --color-cream: #fcf3e4; + + /* Gradients */ + --gradient-primary: -90deg, #311e48 0%, #790e70 50%, #aa40a1 100%; + --gradient-secondary: -90deg, #ff5b2f 0%, #ff9a02 50%, #ffcf2c 100%; /* Extra Colors */ - --whiteDark: #f0f0f0; - --navyDark: #0b1e28; + --color-cream: #f0f0f0; /* Extra Variables */ --sidebar-width-mobile: calc(100vw - 50px); @@ -48,84 +52,86 @@ /* Themes */ .coal { - --bg: var(--navy); - --fg: var(--whiteDark); - --headers: var(--whiteDark); + --bg: var(--color-black); + --fg: var(--color-cream); + --headers: var(--color-cream); - --sidebar-bg: var(--navyDark); - --sidebar-fg: var(--whiteDark); + --sidebar-bg: var(--color-darkPurple); + --sidebar-fg: var(--color-cream); --sidebar-non-existant: var(--sidebar-fg); - --sidebar-active: var(--teal); + --sidebar-active: var(--color-purple75); --sidebar-spacer: var(--sidebar-bg); --scrollbar: var(--sidebar-fg); - --icons: var(--whiteDark); - --icons-hover: var(--teal); + --icons: var(--color-cream); + --icons-hover: var(--color-purple75); - --links: var(--teal); - --links-hover: var(--whiteDark); + --links: var(--color-white); + --links-hover: var(--color-purple75); - --inline-code-color: var(--gray3); + --inline-code-color: var(--color-gray3); --theme-popup-fg: var(--sidebar-fg); --theme-popup-bg: var(--sidebar-bg); - --theme-popup-border: var(--links); - --theme-hover: var(--sidebar-active); + --theme-popup-border: var(--color-purple75); + --theme-hover: var(--color-purple25); --quote-bg: hsl(234, 21%, 18%); --quote-border: hsl(234, 21%, 23%); - --warning-border: var(--warning); + --warning-border: var(--color-warning); - --table-border-color: var(--gray1); + --table-border-color: var(--color-gray1); --table-header-bg: var(--sidebar-bg); --table-alternate-bg: var(--sidebar-bg); --searchbar-border-color: #aaa; - --searchbar-bg: var(--white); - --searchbar-fg: var(--navyDark); + --searchbar-bg: var(--color-white); + --searchbar-fg: var(--color-darkPurple); --searchbar-shadow-color: #aaa; --searchresults-header-fg: var(--headers); --searchresults-border-color: var(--headers); - --searchresults-li-bg: var(--shadow); - --search-mark-bg: var(--shadow); + --searchresults-li-bg: var(--color-gray1); + --search-mark-bg: var(--color-gray1); --color-scheme: dark; --page-nav-fg: var(--headers); --page-nav-bg: var(--sidebar-bg); - --button-nav-bg: var(--navyDark); + --button-nav-bg: var(--color-darkPurple); --button-nav-fg: var(--headers); --button-nav-hover-fg: var(--headers); - --button-nav-hover-bg: var(--navyDark); + --button-nav-hover-bg: var(--color-darkPurple); --button-nav-hover-border: var(--headers); /* Same as `--icons` */ --copy-button-filter: invert(26%) sepia(8%) saturate(575%) hue-rotate(169deg) brightness(87%) contrast(82%); /* Same as `--sidebar-active` */ --copy-button-filter-hover: invert(36%) sepia(70%) saturate(503%) hue-rotate(167deg) brightness(98%) contrast(89%); + + --footnote-highlight: var(--links); } .light, html:not(.js) { --bg: #fff; --fg: #000; - --headers: var(--primary); + --headers: var(--color-darkPurple); - --sidebar-bg: var(--navy); + --sidebar-bg: var(--color-primary); --sidebar-fg: #fff; --sidebar-non-existant: var(--sidebar-fg); - --sidebar-active: var(--teal); + --sidebar-active: var(--color-white); --sidebar-spacer: var(--sidebar-bg); --scrollbar: var(--sidebar-fg); - --icons: var(--navy); - --icons-hover: var(--teal); + --icons: var(--color-primary); + --icons-hover: var(--color-darkPurple); - --links: var(--primary); + --links: var(--color-darkPurple); --links-hover: var(--sidebar-active); --inline-code-color: #301900; @@ -133,102 +139,106 @@ html:not(.js) { --theme-popup-fg: var(--sidebar-fg); --theme-popup-bg: var(--sidebar-bg); --theme-popup-border: var(--links); - --theme-hover: var(--sidebar-active); + --theme-hover: var(--color-darkPurple); --quote-bg: hsl(197, 37%, 96%); --quote-border: hsl(197, 37%, 91%); - --warning-border: var(--warning); + --warning-border: var(--color-warning); --table-border-color: var(--sidebar-bg); - --table-header-bg: var(--gray2); - --table-alternate-bg: var(--gray3); + --table-header-bg: var(--color-gray2); + --table-alternate-bg: var(--color-gray3); --searchbar-border-color: #aaa; - --searchbar-bg: var(--white); - --searchbar-fg: var(--navyDark); + --searchbar-bg: var(--color-white); + --searchbar-fg: var(--color-darkPurple); --searchbar-shadow-color: #aaa; --searchresults-header-fg: var(--headers); --searchresults-border-color: var(--headers); - --searchresults-li-bg: var(--shadow); - --search-mark-bg: var(--shadow); + --searchresults-li-bg: var(--color-gray3); + --search-mark-bg: var(--color-gray3); --color-scheme: light; --page-nav-fg: var(--headers); --page-nav-bg: var(--sidebar-bg); - --button-nav-bg: var(--teal); - --button-nav-fg: var(--black); - --button-nav-hover-fg: var(--black); - --button-nav-hover-bg: var(--tealDark); - --button-nav-hover-border: var(--tealDark); + --button-nav-bg: var(--color-primary); + --button-nav-fg: var(--color-cream); + --button-nav-hover-fg: var(--color-cream); + --button-nav-hover-bg: var(--color-darkPurple); + --button-nav-hover-border: var(--color-primary); /* Same as `--icons` */ --copy-button-filter: invert(45.49%); /* Same as `--sidebar-active` */ --copy-button-filter-hover: invert(14%) sepia(93%) saturate(4250%) hue-rotate(243deg) brightness(99%) contrast(130%); + + --footnote-highlight: var(--links); } @media (prefers-color-scheme: dark) { html:not(.js) { - --bg: var(--navy); - --fg: var(--whiteDark); - --headers: var(--whiteDark); + --bg: var(--color-black); + --fg: var(--color-cream); + --headers: var(--color-cream); - --sidebar-bg: var(--navyDark); - --sidebar-fg: var(--whiteDark); + --sidebar-bg: var(--color-darkPurple); + --sidebar-fg: var(--color-cream); --sidebar-non-existant: var(--sidebar-fg); - --sidebar-active: var(--teal); + --sidebar-active: var(--color-purple75); --sidebar-spacer: var(--sidebar-bg); --scrollbar: var(--sidebar-fg); - --icons: var(--whiteDark); - --icons-hover: var(--teal); + --icons: var(--color-cream); + --icons-hover: var(--color-purple75); - --links: var(--teal); - --links-hover: #f0f0f0; + --links: var(--color-white); + --links-hover: var(--color-purple75); - --inline-code-color: #c5c8c6; + --inline-code-color: var(--color-gray3); --theme-popup-fg: var(--sidebar-fg); --theme-popup-bg: var(--sidebar-bg); - --theme-popup-border: var(--links); - --theme-hover: var(--sidebar-active); + --theme-popup-border: var(--color-purple75); + --theme-hover: var(--color-purple25); --quote-bg: hsl(234, 21%, 18%); --quote-border: hsl(234, 21%, 23%); - --warning-border: var(--warning); + --warning-border: var(--color-warning); - --table-border-color: var(--gray1); + --table-border-color: var(--color-gray1); --table-header-bg: var(--sidebar-bg); --table-alternate-bg: var(--sidebar-bg); --searchbar-border-color: #aaa; - --searchbar-bg: var(--white); - --searchbar-fg: var(--navyDark); + --searchbar-bg: var(--color-white); + --searchbar-fg: var(--color-darkPurple); --searchbar-shadow-color: #aaa; --searchresults-header-fg: var(--headers); --searchresults-border-color: var(--headers); - --searchresults-li-bg: var(--shadow); - --search-mark-bg: var(--shadow); + --searchresults-li-bg: var(--color-gray1); + --search-mark-bg: var(--color-gray1); --color-scheme: dark; --page-nav-fg: var(--headers); --page-nav-bg: var(--sidebar-bg); - --button-nav-bg: var(--navyDark); + --button-nav-bg: var(--color-darkPurple); --button-nav-fg: var(--headers); --button-nav-hover-fg: var(--headers); - --button-nav-hover-bg: var(--navyDark); + --button-nav-hover-bg: var(--color-darkPurple); --button-nav-hover-border: var(--headers); /* Same as `--icons` */ --copy-button-filter: invert(26%) sepia(8%) saturate(575%) hue-rotate(169deg) brightness(87%) contrast(82%); /* Same as `--sidebar-active` */ --copy-button-filter-hover: invert(36%) sepia(70%) saturate(503%) hue-rotate(167deg) brightness(98%) contrast(89%); + + --footnote-highlight: var(--links); } } diff --git a/theme/head.hbs b/theme/head.hbs index 45b7a66..5282b55 100644 --- a/theme/head.hbs +++ b/theme/head.hbs @@ -1,4 +1,4 @@ {{!-- Put your head HTML text here --}} - - - + + + diff --git a/theme/header.hbs b/theme/header.hbs index 1917247..87c433c 100644 --- a/theme/header.hbs +++ b/theme/header.hbs @@ -1,12 +1,12 @@