From 7644929efe1c0baa5d9625c179690e74347aade6 Mon Sep 17 00:00:00 2001 From: Jeff Sagal Date: Thu, 13 Nov 2025 11:56:09 -0800 Subject: [PATCH] Refactor docs to use Nuxt Content v3 and file-based pages Migrates documentation from markdown-based content to Nuxt Content v3 with file-based routing. Removes old markdown content files, adds new Vue page components, updates layout and content rendering logic, introduces a Prose wrapper, and updates dependencies for Nuxt Content v3 and related packages. --- docs/.data/content/contents.sqlite | Bin 516096 -> 749568 bytes docs/app.vue | 42 +- docs/components/Hero.vue | 2 +- docs/components/PageContent.vue | 47 +- docs/components/PageContentHeader.vue | 8 +- docs/components/PageTableOfContents.vue | 9 +- docs/components/Prose.vue | 25 + docs/components/SidebarNavigation.vue | 4 +- docs/components/content/Lead.vue | 2 +- docs/components/content/QuickLink.vue | 2 +- docs/content.config.ts | 19 + docs/content/contributors.md | 10 - docs/content/index.md | 77 --- docs/content/sandbox.md | 6 - docs/content/sponsors.md | 9 - docs/content/validation.md | 1 - docs/layouts/default.vue | 26 + docs/package.json | 2 +- docs/pages/contributors.vue | 12 + docs/pages/guide/[...slug].vue | 18 + docs/pages/index.vue | 140 ++++++ docs/pages/sponsors.vue | 7 + pnpm-lock.yaml | 643 ++++++++++++++---------- 23 files changed, 669 insertions(+), 442 deletions(-) create mode 100644 docs/components/Prose.vue create mode 100644 docs/content.config.ts delete mode 100644 docs/content/contributors.md delete mode 100644 docs/content/index.md delete mode 100644 docs/content/sandbox.md delete mode 100644 docs/content/sponsors.md delete mode 100644 docs/content/validation.md create mode 100644 docs/layouts/default.vue create mode 100644 docs/pages/contributors.vue create mode 100644 docs/pages/guide/[...slug].vue create mode 100644 docs/pages/index.vue create mode 100644 docs/pages/sponsors.vue diff --git a/docs/.data/content/contents.sqlite b/docs/.data/content/contents.sqlite index 8a45c1919859aa585c2c4d01ccbfad2adf5a6bf7..14c8635c6bd3ec07535802ac1495d6ac0872af90 100644 GIT binary patch delta 7433 zcmb_Bdwdkt)pO^y+1>2ijpPCH$Oak_C1hr2cXro^B!Lj}Sn>n{YR$~fOiTz#AP)jo z!z7B;N=;bGVC@4e6>Du}jb!RqwLz)!{ra_qwzPi!YDKZNt!<_Fv!B}bUH~S{@_gyR+U6}Q2f*>sPH}lCHTPZI4HL+^{3J?5COJqhpFL~~BJ(oGp{oe^A~!Q67Lp@(^~p-7c1Ntct556dyF>12 zPyJ0CTiaMs)?DFhE-SCC@TD%rzn=LUN7&8g)fAHP?{U6sF{wWlgZM_+HM_hGFAHhQ zj|~S|N8XAR;NHS?A=>)e)uc%FXz!=XVXq-cjxn*m_U^8@-&4buWUzU4E8-ScuxN@= zQYd@;xe~_=LhckoQY?FXSNy8yPhcSaC+;TDA72h%cOw-qfgM=UyW^SO{Kap>Z^Oso zG58f|!h`St{5%|i_rN`{4|cj#WQ?2uXK;NkGr09oz1Mz>~vpnMO+WNy4}yi=Q4w?=FB|zNA6tLKivV> zo9+hp_JlFw9LlDO05VW9{_EM*-P5~jhq@_svbVFl4^KAdP{p&D+5mDHJlk|F6#=&H zil<1K=Pq^kU`t`DhJ0%66qVVtiq0*ppNqO(+oN{x?n0<_i>Wo!sQjx; zcEQG6N=Vx<){8ktlW6jbRQ9sk`BX3sZRQv?vxxE1qU^2Ji>TFUc>O(XyJWS!s|_)& zT0n);76;_cehqK8A&(N%SNgRO1 znr3i5MCJ}5+_g)nvb4Q=x_jHPCZ~ifpFPmD1$yMR_AVJCAmXyQn(gk7GkFU(3^5<%1NBbbMJlb&0LTsS;*n)W@ z?-g6`6@vvQGf4O#0nfk(t*ndS9yk;x*+OT5P!PLQi*4`i-+@EV;2v>d~`D69S6jmvlK0l61d69Mbs+AJhGkB+FVrQ^I#GZC97xwA7}xe)};=ftvfS zy@e@>K2Vj)FGbCQ!s~uTl{6uu>b#%@g_xiOLozRmYDm+hRF306nAb>p9_m=ltd1UO zvl-f^Ss4ojWPdOm5Q4FANRdOT!iR-OI3NZi3a{yDV%Zetne!maQnrx)WG1}q-(c?M zc0pDLw{B|a@gOCUl$*%-3*}B2SIOuXTFaO<(Zda?2S{@;N$|@8&nv1J@CP*{i=?WW zr0YmiLMWhVsYkFn{zx8Xs=o+JnMm}}U@Fg~TSlaqpO$*wm4G5xU z!9lv+JbHmTY;gvCg)={VlY$u}I6yGJ1qTv_0iwUJsA5+~jdKfA^^+Qwlt5StC=pfj z>tQh@#NDyC_O2b7Dhtu_u(8`w~E_{8E=uCwus4@N@B19ikS91}uf zNLOW9)^#Bm_6I_8nh#l}&r&~ig7uGkX)jjp38Z?ji=vtc=X_=@)s!$QD9<iLYpUv}(pF3q6y2|ec~O#hSyN;_h!r9P z12Gg80{+x(t=q@Q$2d=;eMiY0f;~d!Bn&56bGEOJjYN&nyHoimGiU%=lvl%&sHuJ> z77VINNKpf#Uy#G-W~qU+Jb~CbIioG>mi)z4-$pxE*5lwVEzL$a=j z2!1JsZbZQE*ZcuR*CmA)L`99r$mdW@Ogm~QmpbbNw@n-+X)g;HieRXO@iFZ=wX2?4 z8~x+XsiWiiWThHGLCCL$#7IC#Q9p)Q3t>H|3sO*y1eG-Juqzs~|3xaxJn=LMEs!90 zyTG=`&yijnEk0{y^&m}{`yQh`2lvtAbn8Fh;Z~AisFw)prG)W4s^+!gMr_ZgdsFS1 ztgD1Dx_8B@tus6_=gi%DVGmN{N z*`nz1$ikW8Z{|LQbsl|me?$-hDoRCy%m+j%7>>ySNl>Jjvm!F<*580*z~tTp85_{a zsyq9cN(t{U2mu zM9tjY;qY0(ddH7o+*e}H>G9M20&7*N<7e>TCVQsSY`7cv&C(puXMLY{R3P%JSuU(A zKm`dZm@sanDj(TU$%xTsic*a+Fjeh|fv{iY)kq+yiop;c4#s#z)A@iFRwNOHqclr= z?hCg>Qi3l@O!Lg7sg`CJ{r)S+<6curlno~elbVat@y;nH!X6blE!k)XuKVp=S~ z%VDH{8C~6=fC4o#QW|qa(duFbk>uOQ>CvnCV273CbG!%5_aVpzU2);oa%+p%@hvow z53-qV6j(L0^aW55zr1s~Rqq4i5cHT?l;bm2*z(c z6;0P6cDv$b7w@u0&#^sd;tn*?YkFU#ueVlDvM-~VZZy+p?({lx&C93Q3^Tip^~U+< zcUh-SvNh0pe+XoG5BE?sDhuBr;2ZES=tfZIVX>Dg1gRw`%uDo(7kTt34RlD`u*o-`A=1I%t&ih!(LB zQe9=b;72({P-IO+{DZ-;9+BmsjO(00P*iYWNwem}d2ke%rC(;~E$G0d4`!`H*)P62 zmF-Nwpy)A;S0qUbX{sdfnjrZF9r;K=2uOZ^Z05GkB{l#0F_~jE|DAk__KX#*WvZgb zrfO6ZcOAv3j*kTe4P|C25JDwnOh>hbj=1VtSd7HNx|kM9Z6fPTh`c!?6Bj<2@C<^) zQ8ROtnx8OUpmHZ8Bq!!vE%an%i|{Ob62{?fxDAHjA_%y*xU<}Mxi~k-ZR1L~#T@N<*YlsArx9}c$MRhS z&7P9EE!}i5$er5~%@$WVvmKgU2$g34yPk92+|F<&E?+at1=k-#S^vH(^v+^`T2~1F zwJV%y&AESFnrRq4DJK;0Lrw8)Ym_-x>KXrZr+50LuDR@!b&7NDQZnUbq<6(0-(51Fs&Lv4Ydd4Wb|uat;4Rz-@C2OTUV+{Oa7n*!Cl zw{>OVVYPqrx*BnBUs<^q52KqSjeT94!o6(}4{P>R3{|$&?u{w~93G3}ol>}bqbl@y z@KD|y5bFj9quSm~JlxpV-M@8LsK2_!jfYioOMN)d9qtrdcv#oeyDieNqt9RC#KY}@ z#;$08ZFNUw1|Bx5)jRp7aLtYm2Odi6>UXTI?2y}fYFIoj+g;XQ+Zf%jqo2XU-FL1V z*c#r_Q87s4VXdY%mv`MMszC}5wdiiSwz@@W-eSl0WUFdNV3b4OB$zi7#sy~Mp(W)^ zS@gtIQ9tALX-_43NDRtB)OOevH|h>zN`wyzQh*QRc1lkT!sA7+{L%^b#ee*bf>YPA zuS2FA2LqFzAm>|)FEf75m6R-Dd>epaQ@+5whO5}?p+%o#uE5;nQSADQdW&GrQ*R+* z|6c;)Ri`^*CpgCf!m%J>Ku6yB77DH@Fpk-AwwSoJXgbcK`u(RFz?j&_{0(L&^=(sw zhY9d-!nhC2e_p4(!n`XD!)+)87Z4-M^QXyAB$yV?bDw<(#|MPxZN~=*<6X!6FLbir z)%gbt3`|f&42w5T$87v$WG#Mz`47gIH2%E{8LnjU{xX~cZX~v>m}dUbcbNYL*-4+6 zI?~&OF@v-(d2OHVc5!P9-?h~( z5_bsG%y2(rJ(I&kUG6X1s&;k~&d!9PICBqVdAP{JBlh+w>KJx1eXJ`PEhaA0=*%+as$ zJNh0c7@O#E$ZT$Wk(Vo5cHDMofw;YR`mnoyNe?+)$#^$0iDbGq84j^bG%-LpA7O7H zbz)%5&~qPiWpir^UUK8@l6S*S$=26S(x<^9AENs5yA|``>U`tJPK;MXY@POL>#k?$ zNos-lc>OirVBX7H@1<<@-&;AO|4kEgIhA+#soS#9F25>H-^G41c=WpIErND zl93#3dc?f=SFqCJN9mtK@Q7IefNoAcN*~8>L?3b%)kA*(xnwFp6ofTYPrb^S|J6m; zyOKF$%=iuXibdDc=n3nq=mN0+uph6!7Ee?(&pvY<8V%@g3 z?RNf>w{2;ZdONx{?y>XNmYCQb-Yz#c;uiOt=+)AJEcN&a`lQ2a(W8zlkW0gO!aNPx z8?EA2$9db3-!k@l~Y0(#1gq$$XSAmCcbJq*OGx5ZW#rT27 zx_J^ch2*$m%3jBH|Jv4VL=QDbS>&V1)1u>@vNGz~k5KwlJJ?Oe{DJ=9!=2$!EEtOYuir(LUUx;aJG;4J zMV&kQ-dX&&%!jJwl+xg{1AbPWZA)4!x_4&Pa@E`{Q*u_}y|XI$JM4Af;;(ayz(PI` zUQxrp6A(_~T`uP}S}Qm`70<3Bry{A}sQFEe)%>KjG)Iwxh97tUiJ}rD><%RE%SVD; zz`)-TS(<$W&t)&c0dQ-k_T?9lRy1h7>xDDw4|N5?qmF?t5199_Sef z*M(v(Z`0N`SGcpLs=a;f-W%Y#8?v1T%T;n@_BsKti@GM&Um)M1)n=uVcKTkk3~~v; zTLio{H!RY1$DYK+b*9q zc|=Zsq*qv1O}m8dEai;wXTV%ZM;12jI=WcKl^XWGoyTGgkJZNe9eVK{8FP^|ZoX9y zxH4n>;|e^Oaa@kbvvHiuvoy~V@H2P;o`g@p5x5R6fjLmYeafBVj&MKYg4`<3 z!Rgq4vhT7}EYFUzZLEv6u%zY-&1KCQ&9gXf{2G&yECb1u8S(e`cKKty;SkE2EdH?5 zP-DS)lN^^)DpOC|=N>0~MjGZH+Ug$e?Fu?ahJ!c*P5ejsW?snJ&Md(2y-o|D`3v?81(jIv zqm44NLWNxxj$Z<4K*`%2^MHcimv1)7Gsx1p?V*fvM*G9DC@v*_y(43TEQ2hglR?45 z!4bqYcpM*m7Pp+>p6B}EA?_N~!F_NUw;UZ$Hk5IX!fCF7yA9ukPELedxozC*u#bBJ z{+@deehlm3QEol1h*|J0yMrTbplWk%mCLo+-xA5fusPr<8LZya=~-jJFdC@rYitNa z+8Z-5l(NQ*VPI8DT~%atxGrMC&=;ufU(nQ38(3(>u)EdMHR7xFZgFQ|SkUJ$T-aO@ zF7p{M^p9-aQ8T)>f3&eX9pgav+TI04k#5gG8ioVD()Pika8p~O9>bE2JuPm}+W!8M zR18~u?!v0x)x$Ag3WlEUZm+v}O;KT3hoLJn+#jsz3@-?1F>LJH;wdVu*jyZj7`E3} z_I0foX2Z!+r@9N@FPf=Bwm&GtzQV`ngs_XOnG#IX|s0%jw%C;5{s4?uW9CTNA z`(3ei2E#yUEEp_m?`iL)F|6n+tSG83Yb>guFf1u+TrskxWkpd?g<;gw<*r}2rlM_& z62oS%cR{4NWMQy1tiZT88zcsF;uaf4QrMR%}Bqbc^x{`VIty_(&7^2TpkFDY}V~ zG64DYp(x);--4W!2S{zDaPBr4I=G)w2v5I93L-a1|BC~)!t70uFBWvr??91kqHjYJ zN|(FYf;TKDq6B?NxkT1UM3L!E?KA2Ow$gT9jmg#dkliMD#tKz|AKQu1Q&fU<*7cA)Eajncqd^sGDQNG?_`T<^5qEomO) zr-{G3kKRP5OPP*!Wk5kFHzAJjXunQ*G>{4_ZR54^O1!Nx9om=eA2PF8tfL(YlT;H^ z>J)aV`PzKE$o!T(n{YFY%n%Qx(*rbUdKo(?6->fGx{sjykb{2Ous=nIbPts!b?-VT zj(ttVlnbQF!g?f;NhtOZ*U`_9KJj`jyVw{{*vRwc+JuR(Wd^}LOFeCpYH?pWWL<`F zA6_WegJO&cR!qH0^~z0BiM|}+*qYqW61QaW!-eQ15ci5NeL~eUz&Cx7`Vuly0Z*Sr zn3D<^In^v28&1pe7Me!bQlJ6D|}`yY7w6EVtAg-@hZdTjAV{EJN&^pgtgt zEtiWlc=Uzgp(B@R>CLn7y%xe@@RJh<15`1EKR-T8N;@1yYl9`9`UG$TFa^1zTZR!p~^tc za4OxUHWgQCiyuy8c%t<1ttVEMQ8N^Hcv_1?CJ`YD*#^O%M*a2V2h{yg3}?$(PSE~G zwTzM25jk=UfDYcXY@V1qtGWWGcarGXo9F2A;6>UXbiA)r3+1O6rMOzBJgX6}^{dYS zMq*85#S1{EP_9rGiXA7w1jk2SV#N z@hjCEz=EdxU(Qv)+PshF$7@hjOUKN`Ngfc+?osN+f9Fy%CN;39K@Jz^?p{A;(G{lU zjfHb<{Qi7{x)Qx-4D|+vW8on|7ox0F-&q*IJFogK_2IGs)VmBu)) zGIEQJV@DGFi1{g5*IPfO_t3C9aiYYV1bG~sA>QOY+L`(BXeL`|#*DT(&C+5{YW(1h z$M^la4}aCzg1T(J!&J&9LVve`-NxUnnYV2FT_m+p&v?zyZaZU+Z%3Bl*lNR^>12z$ zW;mGb3-$*)W5OjRY2iOIUl7)pD)hh3ke@T7@RuKIFrj2SUXN)5CtGqiuivH%G>p`f zO*b*9_M}b$>Hbud7vPX?Jt{9}v`6I;m6npRGXyuy&fuQ#IBSTHX0c_qvBX80^U$1i z;XpZE%D -import Hero from '~/components/Hero.vue' -import ApplicationHeader from '~/components/ApplicationHeader.vue' -import SidebarNavigation from '~/components/SidebarNavigation.vue' -import PageContent from '~/components/PageContent.vue' -import '../src/css/vue-select.css' - -useHead({ - title: 'Vue Select', - bodyAttrs: { class: 'bg-white dark:bg-slate-900' }, -}) - -const { page } = useContent() - + + + diff --git a/docs/components/Hero.vue b/docs/components/Hero.vue index b697dde..ef29496 100644 --- a/docs/components/Hero.vue +++ b/docs/components/Hero.vue @@ -35,7 +35,7 @@ import {

Everything you wish <select> could do, wrapped - up in a lightweight, extendable Vue component. + up in lightweight, composable Vue component.

diff --git a/docs/components/PageContent.vue b/docs/components/PageContent.vue index aa49839..5a89de5 100644 --- a/docs/components/PageContent.vue +++ b/docs/components/PageContent.vue @@ -1,36 +1,21 @@ diff --git a/docs/components/PageContentHeader.vue b/docs/components/PageContentHeader.vue index e2eb36e..b0be496 100644 --- a/docs/components/PageContentHeader.vue +++ b/docs/components/PageContentHeader.vue @@ -1,7 +1,11 @@