\n \x3Cg style=\"paint-order:stroke fill markers;stroke-width:4.2333\">\n \x3Cpath d=\"m26.609 4.4429-0.8636 5.0165-5.0292-5.4356-1.5875 9.3091h2.032l0.8763-5.0165 5.0165 5.4356 1.6002-9.3091z\"/>\n \x3Cpath d=\"m29.842 5.3065c0 0.6096 0.4953 1.0287 1.1176 1.0287s1.1176-0.4191 1.1176-1.0287-0.4953-1.0414-1.1176-1.0414-1.1176 0.4318-1.1176 1.0414zm-0.1905 2.1844-0.9906 5.842h1.8415l1.0033-5.842z\"/>\n \x3Cpath d=\"m32.211 7.4909-0.2794 1.5875h0.9906l-0.7239 4.2545h1.8161l0.7366-4.2545h1.0033l0.2794-1.5875h-1.0033l0.3429-2.032h-1.8288l-0.3429 2.032z\"/>\n \x3Cpath d=\"m39.877 9.4721 1.0541-1.6129c-0.2413-0.2921-0.5715-0.508-0.9906-0.508-0.5715 0-1.143 0.381-1.5621 0.9398l0.1397-0.8001h-1.8669l-1.0033 5.842h1.8542l0.5334-3.0353c0.1397-0.6223 0.5969-1.1684 1.1811-1.1557 0.2921 0.0127 0.4826 0.1524 0.6604 0.3302z\"/>\n \x3Cpath d=\"m40.672 10.412c-0.2286 1.7526 1.0287 3.048 2.8448 3.048 1.8542 0 3.429-1.2573 3.6703-3.048 0.2286-1.7526-1.0287-3.048-2.8448-3.048-1.8542 0-3.429 1.2573-3.6703 3.048zm1.9431 0c0.1143-0.8001 0.8001-1.4859 1.5875-1.4605 0.762 0.0127 1.1557 0.6985 1.0414 1.4605-0.1143 0.8001-0.8128 1.4732-1.5875 1.4605-0.762-0.0127-1.1557-0.6985-1.0414-1.4605z\"/>\n \x3Cpath d=\"m48.972 16.127 0.6477-3.8481c0.2667 0.7366 0.8255 1.2573 1.7653 1.2573 1.5748 0.0127 2.9464-1.3335 3.1877-3.1242 0.2159-1.7145-0.6604-3.1242-2.2352-3.1242-0.8636 0.0127-1.5494 0.4191-2.0447 1.0541l0.1397-0.8509h-1.8923l-1.4859 8.636zm3.6195-5.7277c-0.127 0.8128-0.8636 1.4605-1.6383 1.4351-0.7112-0.0254-1.1176-0.635-1.016-1.4097 0.127-0.8255 0.8763-1.4478 1.5875-1.4351 0.7747 0.0254 1.1938 0.635 1.0668 1.4097z\"/>\n \x3Cpath d=\"m55.19 10.412c-0.2159 1.6764 0.6985 3.048 2.2479 3.0353 0.8255 0 1.5367-0.381 2.0574-0.9906l-0.1524 0.8763h1.8669l1.016-5.842h-1.8923l-0.1778 1.0668c-0.3048-0.7112-0.889-1.1938-1.7907-1.1938-1.5621 0-2.9464 1.3081-3.175 3.048zm1.9685 0c0.1397-0.8128 0.8636-1.524 1.6637-1.4986 0.7112 0.0254 1.1049 0.7239 0.9906 1.4986-0.127 0.8255-0.8636 1.5113-1.6002 1.4986-0.7747-0.0127-1.1684-0.7239-1.0541-1.4986z\"/>\n \x3Cpath d=\"m62.182 13.752c-0.0127 1.5875 0.9271 2.6162 2.8575 2.6162 1.8796-0.0127 3.2766-1.143 3.5941-3.1623l0.9779-5.715h-1.8288l-0.1778 0.9906c-0.3048-0.6731-0.9017-1.1176-1.778-1.1176-1.5494 0-2.9337 1.2192-3.1623 2.9591-0.2159 1.6891 0.7239 2.9845 2.2606 2.9718 0.8001 0 1.4986-0.3429 2.0066-0.9017l-0.1397 0.8128c-0.1397 0.9398-0.8509 1.6256-1.7272 1.6129-0.7112 0-1.0541-0.3937-1.0668-1.0541zm2.4511-3.4163c0.127-0.8001 0.8255-1.4351 1.651-1.4224 0.6731 0.0127 1.0795 0.5715 1.0287 1.3081l-0.0508 0.2794c-0.2032 0.7366-0.889 1.27-1.5621 1.2446-0.762-0.0127-1.1811-0.6223-1.0668-1.4097z\"/>\n \x3Cpath d=\"m72.997 13.46c1.4859 0 2.5654-0.6096 3.1877-1.7272l-1.6637-0.4191c-0.3175 0.4699-0.8001 0.762-1.4351 0.762-0.7366 0-1.143-0.4953-1.1303-1.2573h4.3688c0.0889-0.2413 0.1397-0.5842 0.1397-0.8636 0-1.6129-0.9525-2.5908-2.7178-2.5908-2.1717 0-3.683 1.4986-3.683 3.429 0 1.6637 1.1557 2.667 2.9337 2.667zm0.5715-4.8133c0.6477 0 0.9398 0.4064 0.9652 1.1049h-2.3749c0.254-0.6985 0.7112-1.1049 1.4097-1.1049z\"/>\n \x3C/g>\n\x3C/svg>",title:"\x3Cspan class=\"block\">Nitropage\x3C/span>",links:$R[53]={byId:$R[54]={i744284358:$R[55]={url:"/docs",text:"\x3Cspan class=\"block\">Docs\x3C/span>"},i905987100:$R[56]={url:"https://codeberg.org/nitropage/nitropage",text:"\x3Cspan class=\"block\">Source Code\x3C/span>"},j992pjr5jjqj7g11c6dibr1x:$R[57]={url:"/guide",text:"\x3Cspan class=\"block\">User Guide\x3C/span>"},heqm8da10e2meb4qgrh7aukk:$R[58]={url:"/",text:"\x3Cspan class=\"block\">Home\x3C/span>"},mvt6t49fezs65qcodgq1w20x:$R[59]={url:"/blog",text:"\x3Cspan class=\"block\">Blog\x3C/span>"}},ids:$R[60]=["heqm8da10e2meb4qgrh7aukk","j992pjr5jjqj7g11c6dibr1x","i744284358","mvt6t49fezs65qcodgq1w20x","i905987100"]},position:"fixed",fullWidth:void 0,titleColor:$R[61]={value:"var(--jwiem1o71y1r1r4h18t7bitv)",alpha:void 0},titleColorSticky:$R[62]={value:"var(--zp9mbzrpl4ht1weur8ik8g0g)",alpha:void 0},linkColor:$R[63]={value:"var(--jwiem1o71y1r1r4h18t7bitv)",alpha:void 0},linkColorHover:$R[64]={value:"var(--jn3m6ro6udqzqrewlud7xlp7)",alpha:void 0},linkColorSticky:$R[65]={value:"var(--un9vmcvyjwobci6rf8q5chj1)",alpha:void 0},backgroundColor:$R[66]={value:"var(--gh1t2zjavop2qz6m03z58o0e)",alpha:0},backgroundColorSticky:$R[67]={value:"var(--gh1t2zjavop2qz6m03z58o0e)",alpha:0.9},overlayColor:$R[68]={value:"var(--mvux7tpjvthvdiqwkr0wqtkx)"},overlayLinkColor:$R[69]={value:"255, 255, 255",alpha:void 0},glassyOverlay:!0,id:""},slots:$R[70]={cta:$R[71]={elements:$R[72]=["de6ca38f-fa8b-4c5a-9619-db4c1310b1b4"]}},parentSlot:"default"},"8dec3b98-38de-4d2f-b838-699d5db5d643":$R[73]={id:"8dec3b98-38de-4d2f-b838-699d5db5d643",elementId:"821b592c-00ef-435d-b4e6-855c56d2ce81",presetId:"9019c128-a78a-45cc-9c7f-2cde07d3f3e8",parentId:"5ab449fb-c280-4c8e-b94e-b6f9bb2e8202",dynamic:!1,blueprint:"zk7vp8rahquyz034aec4h2on",slots:$R[74]={},parentSlot:"default"},"5ab449fb-c280-4c8e-b94e-b6f9bb2e8202":$R[75]={id:"5ab449fb-c280-4c8e-b94e-b6f9bb2e8202",elementId:"49815e16-35d3-4da7-bf0f-d48b29e43dd7",presetId:void 0,parentId:"706bd491-254c-465b-ab28-1613ff02d986",dynamic:!0,blueprint:"oyf5ut4svjmudc6kl6hhm69h",ssrData:$R[76]={backgroundColor:void 0,topPadding:"xl",bottomPadding:"lg",horizontalPadding:"",fullWidth:void 0,id:""},slots:$R[77]={default:$R[78]={elements:$R[79]=["8dec3b98-38de-4d2f-b838-699d5db5d643","fe349146-038e-4451-8bd6-86bb6a255647"]}},parentSlot:"default"},"ad1a46ae-6ae9-482b-baf7-03b7397ac9a1":$R[80]={id:"ad1a46ae-6ae9-482b-baf7-03b7397ac9a1",elementId:"3788e552-49a6-44a5-afc6-0c238654a2e5",presetId:void 0,parentId:"62e17e5d-2205-4d68-b3ad-030ea229fc46",dynamic:!0,blueprint:"g5t3jgu1v9xwhb69c4wm52r5",ssrData:$R[81]={category:"\x3Cspan class=\"block\">Announcements\x3C/span>",categoryUrl:"/blog",date:"\x3Cspan class=\"block\">19.08.2024\x3C/span>",author:"\x3Cspan class=\"block\">Katja Lutz\x3C/span>",authorSubText:"\x3Cspan class=\"block\">Web Developer\x3C/span>",authorImage:$R[82]=["72d7a21e-9a44-42b1-920c-62dd52750230"],textColor:$R[83]={value:"255, 255, 255"},id:""},slots:$R[84]={},parentSlot:"default"},"706bd491-254c-465b-ab28-1613ff02d986":$R[85]={id:"706bd491-254c-465b-ab28-1613ff02d986",elementId:"5ee854ec-caec-4761-ae97-389771978180",presetId:"930f10ff-a882-4960-a040-f73990e2eb9e",parentId:"bb9e466f-30cb-44b2-b9b2-e67a25be8ce5",dynamic:!0,blueprint:"vigkf7auegf887geschdgb7w",ssrData:$R[86]={style:"",slotStyle:"",css:"#element { \n background:\n repeating-conic-gradient(from 30deg,#0000 0 120deg,var(--c3) 0 180deg) \n calc(.5*var(--s)) calc(.5*var(--s)*0.577),\n repeating-conic-gradient(from 30deg,var(--c1) 0 60deg,var(--c2) 0 120deg,var(--c3) 0 180deg);\n background-size: var(--s) calc(var(--s)*0.577);\n}\n",color1:$R[87]={value:"112, 0, 199",alpha:void 0},color2:$R[88]={value:"var(--mvux7tpjvthvdiqwkr0wqtkx)",alpha:void 0},color3:$R[89]={value:"91, 29, 139",alpha:void 0},length1:24,length2:void 0,length3:void 0,length4:void 0,id:""},slots:$R[90]={default:$R[91]={elements:$R[92]=["5ab449fb-c280-4c8e-b94e-b6f9bb2e8202"]}},parentSlot:"default"},"62e17e5d-2205-4d68-b3ad-030ea229fc46":$R[93]={id:"62e17e5d-2205-4d68-b3ad-030ea229fc46",elementId:"df3bef3c-71c8-4ff5-b391-eccb6bb85828",presetId:void 0,parentId:"fe349146-038e-4451-8bd6-86bb6a255647",dynamic:!0,blueprint:"g05w6l6tg4qpkaqrir8dnwrj",ssrData:$R[94]={link:"",borderRadius:void 0,shadow:"",padding:void 0,paddingMax:void 0,paddingY:void 0,paddingYMax:void 0,textColor:void 0,textColorHover:void 0,bgColor:$R[95]={value:"0, 0, 0",alpha:0.28},backgroundColorHover:void 0,borderColor:void 0,borderColorHover:void 0,id:""},slots:$R[96]={default:$R[97]={elements:$R[98]=["ad1a46ae-6ae9-482b-baf7-03b7397ac9a1"]}},parentSlot:"default"},"b364452b-11d8-4c85-ab90-767debd53267":$R[99]={id:"b364452b-11d8-4c85-ab90-767debd53267",elementId:"381b868b-fcfc-48ad-a1e8-1ce0feeba1d2",presetId:void 0,parentId:"a62cb0e3-b029-45b0-84d1-a8300043bb39",dynamic:!0,blueprint:"uhkonhxg2jcray627kltt8dk",ssrData:$R[100]={video:$R[101]=[],url:"https://www.youtube.com/watch?v=xvFZjo5PgG0",thumbnail:$R[102]=["add3113b-6bc6-45b0-b483-b64cb872e4bf"],highRes:!0,aspectRatio:"",autoload:void 0,backgroundColor:$R[103]={value:"var(--s8e4orihhrvtugqiqlvg5tr3)",alpha:void 0},id:"trailer"},slots:$R[104]={},parentSlot:"default"},"fe349146-038e-4451-8bd6-86bb6a255647":$R[105]={id:"fe349146-038e-4451-8bd6-86bb6a255647",elementId:"6a8c249b-48fe-481e-9606-c6991725f328",presetId:void 0,parentId:"5ab449fb-c280-4c8e-b94e-b6f9bb2e8202",dynamic:!0,blueprint:"ba0jpedvc304eoz55l5mkgpu",ssrData:$R[106]={align:"left",id:""},slots:$R[107]={default:$R[108]={elements:$R[109]=["62e17e5d-2205-4d68-b3ad-030ea229fc46"]}},parentSlot:"default"},"bb9e466f-30cb-44b2-b9b2-e67a25be8ce5":$R[110]={id:"bb9e466f-30cb-44b2-b9b2-e67a25be8ce5",elementId:"66451c42-ea2a-4414-a9e8-bd12055653f0",presetId:void 0,parentId:void 0,dynamic:!0,blueprint:"usedfsqfwa4g4aedh2wjkqkp",ssrData:$R[111]={backgroundColor:$R[112]={value:"var(--mvux7tpjvthvdiqwkr0wqtkx)",alpha:void 0},backgroundImage:$R[113]=[],backgroundImagePreload:void 0,backgroundImageOpacity:100,backgroundImageRatio:"",backgroundImageRepeat:void 0,repeatSize:void 0,overlayColor:void 0,overlayBlendMode:"",zIndex:1,shadow:"lg",topMask:"",bottomMask:"",id:""},slots:$R[114]={default:$R[115]={elements:$R[116]=["706bd491-254c-465b-ab28-1613ff02d986"]}},parentSlot:"default"},"d3345ca1-82a9-4c53-9b65-9555a791dd92":$R[117]={id:"d3345ca1-82a9-4c53-9b65-9555a791dd92",elementId:"e43194b0-331b-43eb-a74d-faf6db7b737d",presetId:void 0,parentId:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",dynamic:!0,blueprint:"uhkonhxg2jcray627kltt8dk",ssrData:$R[118]={video:$R[119]=["9f44a07b-f05b-49d8-a1ea-ce0a787d0600"],url:"",thumbnail:$R[120]=[],highRes:void 0,aspectRatio:"",autoload:!0,backgroundColor:void 0,id:""},slots:$R[121]={},parentSlot:"default"},"edfe7bf8-bcb4-48be-99c2-8bd638f4d716":$R[122]={id:"edfe7bf8-bcb4-48be-99c2-8bd638f4d716",elementId:"595f1445-e0ca-4152-8367-39bde96d3fa4",presetId:void 0,parentId:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",dynamic:!1,blueprint:"zcvngz3018ov60rtf8kdgqgs",slots:$R[123]={},parentSlot:"default"},"cbf8c072-89d8-4c31-a6b4-0e358c83da7a":$R[124]={id:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",elementId:"9a846767-1820-4f9b-9a4b-a7e2e1d3601c",presetId:void 0,parentId:"a62cb0e3-b029-45b0-84d1-a8300043bb39",dynamic:!0,blueprint:"ba0jpedvc304eoz55l5mkgpu",ssrData:$R[125]={align:"",id:""},slots:$R[126]={default:$R[127]={elements:$R[128]=["edfe7bf8-bcb4-48be-99c2-8bd638f4d716","d3345ca1-82a9-4c53-9b65-9555a791dd92","982206aa-04fd-4af7-a726-cdc8e20f3e7b","2a27cce7-2f36-43a2-a66a-505d05400239","e3f83483-fac4-4557-b273-ef82ca2b0fd2","504ba0b5-3a4f-4ed5-ab9a-5f1ad094038c","b9eed323-0fd8-4cd2-8316-008c3dc3f639","3f712bf2-31d6-49e6-9ec9-a5b8d32c9ae7","0acc3830-ce59-4fd9-bec0-6fc13537d5ee","975556ca-ce81-4dc6-9ea1-c0eccdb9de56","f8f97a33-a94d-4922-a404-c1237c07a847","ae1b937c-4aab-4985-a237-51c6b49e4031","b8541ac7-8ed6-4d38-b0c6-0c1206e4c151"]}},parentSlot:"default"},"a62cb0e3-b029-45b0-84d1-a8300043bb39":$R[129]={id:"a62cb0e3-b029-45b0-84d1-a8300043bb39",elementId:"fde6c112-9067-46c4-9cbd-f307b741245b",presetId:void 0,parentId:"1c380953-c9a6-4ec9-bd80-13b6e34af78c",dynamic:!0,blueprint:"oyf5ut4svjmudc6kl6hhm69h",ssrData:$R[130]={backgroundColor:void 0,topPadding:"lg",bottomPadding:"lg",horizontalPadding:"",fullWidth:void 0,id:""},slots:$R[131]={default:$R[132]={elements:$R[133]=["b364452b-11d8-4c85-ab90-767debd53267","cbf8c072-89d8-4c31-a6b4-0e358c83da7a"]}},parentSlot:"default"},"1c380953-c9a6-4ec9-bd80-13b6e34af78c":$R[134]={id:"1c380953-c9a6-4ec9-bd80-13b6e34af78c",elementId:"9cc60405-e0a5-4447-ba59-acf46ccff2ed",presetId:void 0,parentId:void 0,dynamic:!0,blueprint:"usedfsqfwa4g4aedh2wjkqkp",ssrData:$R[135]={backgroundColor:$R[136]={value:"var(--fxqipfiik4zybcosq58wul9n)",alpha:void 0},backgroundImage:$R[113],backgroundImagePreload:void 0,backgroundImageOpacity:100,backgroundImageRatio:"",backgroundImageRepeat:void 0,repeatSize:void 0,overlayColor:void 0,overlayBlendMode:"",zIndex:0,shadow:"",topMask:"",bottomMask:"",id:""},slots:$R[137]={default:$R[138]={elements:$R[139]=["a62cb0e3-b029-45b0-84d1-a8300043bb39"]}},parentSlot:"default"},"982206aa-04fd-4af7-a726-cdc8e20f3e7b":$R[140]={id:"982206aa-04fd-4af7-a726-cdc8e20f3e7b",elementId:"9b68e086-6884-4f4e-ae6f-d5bd379bc9c8",presetId:void 0,parentId:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",dynamic:!1,blueprint:"zcvngz3018ov60rtf8kdgqgs",slots:$R[141]={},parentSlot:"default"},"2a27cce7-2f36-43a2-a66a-505d05400239":$R[142]={id:"2a27cce7-2f36-43a2-a66a-505d05400239",elementId:"4cdd05b1-b020-4441-bf60-357600a6c28d",presetId:void 0,parentId:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",dynamic:!0,blueprint:"ezmzzfo6uu2aeuqgbmez4pfi",ssrData:$R[143]={image:$R[144]=["9214f606-ec1f-42b4-ad55-d57a3475cb7c"],description:"\x3Cspan class=\"block\">The new image settings dialog\x3C/span>",textColor:$R[145]={value:"var(--ixj151bbn767lww99yf2sqaa-i)",alpha:0.7},placeholder:!0,highRes:void 0,aspectRatio:"16/9",id:""},slots:$R[146]={},parentSlot:"default"},"e3f83483-fac4-4557-b273-ef82ca2b0fd2":$R[147]={id:"e3f83483-fac4-4557-b273-ef82ca2b0fd2",elementId:"85daf2c6-dcae-4617-8344-8e52f2db26e3",presetId:void 0,parentId:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",dynamic:!1,blueprint:"zcvngz3018ov60rtf8kdgqgs",slots:$R[148]={},parentSlot:"default"},"3f712bf2-31d6-49e6-9ec9-a5b8d32c9ae7":$R[149]={id:"3f712bf2-31d6-49e6-9ec9-a5b8d32c9ae7",elementId:"02e81902-50f0-4128-abe3-fbd7b8916681",presetId:void 0,parentId:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",dynamic:!1,blueprint:"ussx0679sbtu0kqcez8wyu70",slots:$R[150]={},parentSlot:"default"},"504ba0b5-3a4f-4ed5-ab9a-5f1ad094038c":$R[151]={id:"504ba0b5-3a4f-4ed5-ab9a-5f1ad094038c",elementId:"87ccfd1f-705e-41c2-871c-ae92d383db77",presetId:void 0,parentId:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",dynamic:!1,blueprint:"f6awh67sfhor4ghxubxid8t5",slots:$R[152]={},parentSlot:"default"},"b9eed323-0fd8-4cd2-8316-008c3dc3f639":$R[153]={id:"b9eed323-0fd8-4cd2-8316-008c3dc3f639",elementId:"828df0f8-e748-4911-aaac-82da6af6f619",presetId:void 0,parentId:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",dynamic:!1,blueprint:"zcvngz3018ov60rtf8kdgqgs",slots:$R[154]={},parentSlot:"default"},"0acc3830-ce59-4fd9-bec0-6fc13537d5ee":$R[155]={id:"0acc3830-ce59-4fd9-bec0-6fc13537d5ee",elementId:"7d11c4b9-a071-445d-bdb5-3f94747f06e1",presetId:void 0,parentId:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",dynamic:!1,blueprint:"zcvngz3018ov60rtf8kdgqgs",slots:$R[156]={},parentSlot:"default"},"975556ca-ce81-4dc6-9ea1-c0eccdb9de56":$R[157]={id:"975556ca-ce81-4dc6-9ea1-c0eccdb9de56",elementId:"28d8688a-5869-4494-b574-6c27532179ea",presetId:void 0,parentId:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",dynamic:!1,blueprint:"ussx0679sbtu0kqcez8wyu70",slots:$R[158]={},parentSlot:"default"},"f8f97a33-a94d-4922-a404-c1237c07a847":$R[159]={id:"f8f97a33-a94d-4922-a404-c1237c07a847",elementId:"a37cc78e-2460-4498-8ee9-c4ff916573f0",presetId:void 0,parentId:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",dynamic:!1,blueprint:"zcvngz3018ov60rtf8kdgqgs",slots:$R[160]={},parentSlot:"default"},"ae1b937c-4aab-4985-a237-51c6b49e4031":$R[161]={id:"ae1b937c-4aab-4985-a237-51c6b49e4031",elementId:"f0328a9b-77e8-4e86-9ae8-b94089be4ea1",presetId:void 0,parentId:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",dynamic:!1,blueprint:"ussx0679sbtu0kqcez8wyu70",slots:$R[162]={},parentSlot:"default"},"b8541ac7-8ed6-4d38-b0c6-0c1206e4c151":$R[163]={id:"b8541ac7-8ed6-4d38-b0c6-0c1206e4c151",elementId:"2027f4fc-9564-4ccb-946f-aeec24e504cb",presetId:void 0,parentId:"cbf8c072-89d8-4c31-a6b4-0e358c83da7a",dynamic:!1,blueprint:"zcvngz3018ov60rtf8kdgqgs",slots:$R[164]={},parentSlot:"default"},"0c219718-4a00-4fb5-8700-0fc88ff9134b":$R[165]={id:"0c219718-4a00-4fb5-8700-0fc88ff9134b",elementId:"622f19ef-430c-4cea-8c1b-6bef39526986",presetId:void 0,parentId:"2881c36e-017d-431a-9d18-e6611f0202c8",dynamic:!1,blueprint:"zk7vp8rahquyz034aec4h2on",slots:$R[166]={},parentSlot:"default"},"7c0a1f29-32e1-4b31-8508-455938897a7c":$R[167]={id:"7c0a1f29-32e1-4b31-8508-455938897a7c",elementId:"a968a29b-0f52-40bd-8b6f-1d4df1997655",presetId:void 0,parentId:"2881c36e-017d-431a-9d18-e6611f0202c8",dynamic:!0,blueprint:"fh2n2ya9tstf76uhh1l1iqtg",ssrData:$R[168]={items:$R[169]={byId:$R[170]={i216588782:$R[171]={image:$R[172]=["c6120643-01bc-4a3c-aa53-3e4a28439870"],title:"\x3Ch1>Announcing Nitropage\x3C/h1>",teaser:"\x3Ch1>The concept behind Nitropage and the way forward.\x3C/h1>",url:"/blog/announcing-nitropage",category:"\x3Cspan class=\"block\">Announcements\x3C/span>",categoryUrl:"/blog",date:"\x3Cspan class=\"block\">04.03.2024\x3C/span>"}},ids:$R[173]=["i216588782"]},author:"\x3Cspan class=\"block\">Katja Lutz\x3C/span>",authorSubText:"\x3Cspan class=\"block\">Web Developer\x3C/span>",authorImage:$R[174]=["72d7a21e-9a44-42b1-920c-62dd52750230"],urlText:"\x3Cspan class=\"block\">READ MORE\x3C/span>",titleFont:$R[175]={family:"var(--font-dh5sftajtxwktaafqm751ahd)",weight:void 0,italic:void 0,size:void 0,sizeMin:void 0,sizeMax:void 0,lineHeight:void 0,letterSpacing:void 0,letterSpacingMin:void 0,letterSpacingMax:void 0},textColor:$R[176]={value:"var(--onzpskjls7rjm6zwpf5oades-i)"},linkColor:$R[177]={value:"var(--jn3m6ro6udqzqrewlud7xlp7)",alpha:void 0},borderColor:void 0,id:""},slots:$R[178]={},parentSlot:"default"},"2881c36e-017d-431a-9d18-e6611f0202c8":$R[179]={id:"2881c36e-017d-431a-9d18-e6611f0202c8",elementId:"3a6dd945-6d9d-405e-81bd-be8dc9d66465",presetId:void 0,parentId:"c6082224-9969-45bd-84df-5225fed53a0a",dynamic:!0,blueprint:"oyf5ut4svjmudc6kl6hhm69h",ssrData:$R[180]={backgroundColor:void 0,topPadding:"lg",bottomPadding:"md",horizontalPadding:"",fullWidth:void 0,id:""},slots:$R[181]={default:$R[182]={elements:$R[183]=["0c219718-4a00-4fb5-8700-0fc88ff9134b","7c0a1f29-32e1-4b31-8508-455938897a7c"]}},parentSlot:"default"},"c6082224-9969-45bd-84df-5225fed53a0a":$R[184]={id:"c6082224-9969-45bd-84df-5225fed53a0a",elementId:"d27b6e18-fb4a-41eb-b157-521a7ee1c44e",presetId:void 0,parentId:void 0,dynamic:!0,blueprint:"usedfsqfwa4g4aedh2wjkqkp",ssrData:$R[185]={backgroundColor:$R[186]={value:"var(--y7i5y66zym0kmjguui83rhyb)",alpha:void 0},backgroundImage:$R[113],backgroundImagePreload:void 0,backgroundImageOpacity:100,backgroundImageRatio:"",backgroundImageRepeat:void 0,repeatSize:void 0,overlayColor:void 0,overlayBlendMode:"",zIndex:0,shadow:"",topMask:"diag",bottomMask:"",id:""},slots:$R[187]={default:$R[188]={elements:$R[189]=["2881c36e-017d-431a-9d18-e6611f0202c8"]}},parentSlot:"default"},"56650c61-01a5-4b50-836d-5a1f56fd9d37":$R[190]={id:"56650c61-01a5-4b50-836d-5a1f56fd9d37",elementId:"752111ec-0e57-4f02-9770-1d755f189c1f",presetId:void 0,parentId:"72040aff-c600-427e-a1b6-b15239953dfb",dynamic:!0,blueprint:"fmj4rug8jkbfy4lqe28n48wb",ssrData:$R[191]={formUrl:"https://newsletter.lufrai.org/subscription/form",emailInputName:"",emailInputPlaceholder:"",title:"\x3Cspan class=\"block\">Join the newsletter\x3C/span>",buttonText:"\x3Cspan class=\"block\">Subscribe\x3C/span>",buttonTextColor:void 0,buttonTextColorHover:void 0,buttonBgColor:$R[192]={value:"var(--jn3m6ro6udqzqrewlud7xlp7)",alpha:void 0},buttonBgColorHover:$R[193]={value:"var(--io2zqsa4taan5l54of4yc6p9)",alpha:void 0},titleColor:$R[194]={value:"255, 255, 255",alpha:void 0},titleFont:$R[195]={family:"var(--font-dh5sftajtxwktaafqm751ahd)",weight:void 0,italic:void 0,size:void 0,sizeMin:void 0,sizeMax:void 0,lineHeight:void 0,letterSpacing:"0.1em",letterSpacingMin:"0.1em",letterSpacingMax:void 0},hiddenHtml:"\x3Cinput id=\"34076\" type=\"checkbox\" name=\"l\" checked value=\"3407653d-4a1b-4cc4-950c-439d7fe1ac43\" />\x3Cinput id=\"6ce96\" type=\"checkbox\" name=\"l\" checked value=\"6ce96751-8cfb-4f6d-9d53-f7f8b65b2f1a\" />",captchaHtml:"\x3Cdiv class=\"captcha\">\n \x3Cdiv id=\"h-captcha\" class=\"h-captcha\" data-sitekey=\"a2fa0d1e-1bb7-4fad-8c8a-0d3518758283\">\x3C/div>\n\x3C/div>",captchaScript:"if (window.hcaptcha) hcaptcha.render('h-captcha');",captchaScriptSrc:"https://js.hcaptcha.com/1/api.js",honeypotInputName:"nonce",id:"newsletter"},slots:$R[196]={},parentSlot:"header"},"72040aff-c600-427e-a1b6-b15239953dfb":$R[197]={id:"72040aff-c600-427e-a1b6-b15239953dfb",elementId:"598856e0-6931-431e-8e65-069f10ec9468",presetId:void 0,parentId:void 0,dynamic:!0,blueprint:"b0ailno63q17afjl6wr83xz1",ssrData:$R[198]={title:"\x3Cspan class=\"block\">Nitropage\x3C/span>",titleColor:$R[199]={value:"255, 255, 255"},titleFont:$R[200]={family:"var(--font-dh5sftajtxwktaafqm751ahd)",weight:void 0,italic:!0,size:void 0,sizeMin:void 0,sizeMax:void 0,lineHeight:void 0,letterSpacing:void 0,letterSpacingMin:void 0,letterSpacingMax:void 0},textColor:$R[201]={value:"var(--jd3kc90m57yadhkww288u2k4)",alpha:0.7},hoverColor:$R[202]={value:"var(--jn3m6ro6udqzqrewlud7xlp7)",alpha:void 0},description:"\x3Cspan class=\"block\">The free visual website editor, that is powered with your own \x3Ca href=\"https://www.solidjs.com/\" rel=\"noopener noreferrer\" target=\"_blank\" class=\"ql-color-g3\">SolidJS\x3C/a> components. Open Source and without a premium plan.\x3C/span>",columns:$R[203]={byId:$R[204]={x1m2aui2ybzb14jbfp1bf2go:$R[205]={title:"\x3Cspan class=\"block\">Resources\x3C/span>",links:$R[206]={byId:$R[207]={dou0vh2hzkjpvi9c6e9xmaqq:$R[208]={url:"/docs",text:"\x3Cspan class=\"block\">Docs\x3C/span>"},zznk0z6k9ekwnxl1kphxqrr1:$R[209]={url:"/guide",text:"\x3Cspan class=\"block\">User Guide\x3C/span>"},im5yxk44o9bfzlef0fcuvpoz:$R[210]={url:"/blog",text:"\x3Cspan class=\"block\">Blog\x3C/span>"}},ids:$R[211]=["zznk0z6k9ekwnxl1kphxqrr1","dou0vh2hzkjpvi9c6e9xmaqq","im5yxk44o9bfzlef0fcuvpoz"]}},i4nti845dme801c4khx9xj2p:$R[212]={title:"\x3Cspan class=\"block\">Organisation\x3C/span>",links:$R[213]={byId:$R[214]={fk8nsu2uefr3om8e50qg2zah:$R[215]={url:"https://lufrai.org/about/",text:"\x3Cspan class=\"block\">About\x3C/span>"},vrqeuvkkb07pk0fjcqwziihl:$R[216]={url:"https://lufrai.org/donate",text:"\x3Cspan class=\"block\">Donate\x3C/span>"},axs9m5x9m9112pnbrcyajzog:$R[217]={url:"/#contact",text:"\x3Cspan class=\"block\">Contact\x3C/span>"}},ids:$R[218]=["vrqeuvkkb07pk0fjcqwziihl","fk8nsu2uefr3om8e50qg2zah","axs9m5x9m9112pnbrcyajzog"]}},crc842ey7j6wj5sudo4nr3jg:$R[219]={title:"\x3Cspan class=\"block\">Support\x3C/span>",links:$R[220]={byId:$R[221]={q5lecpdf0h9tnwgnznnme0o2:$R[222]={url:"https://community.lufrai.org",text:"\x3Cspan class=\"block\">Community\x3C/span>"},ozk9byvfw2ecuppo5l13mphk:$R[223]={url:"https://discord.com/invite/solidjs",text:"\x3Cspan class=\"block\">Discord\x3C/span>"},c4v6yxzjsv57mpxavsedfnx7:$R[224]={url:"https://codeberg.org/nitropage/nitropage/issues",text:"\x3Cspan class=\"block\">Issues\x3C/span>"}},ids:$R[225]=["c4v6yxzjsv57mpxavsedfnx7","ozk9byvfw2ecuppo5l13mphk","q5lecpdf0h9tnwgnznnme0o2"]}},o14xaj3x94hl3rl0swp5bbaq:$R[226]={title:"\x3Cspan class=\"block\">Project\x3C/span>",links:$R[227]={byId:$R[228]={so2rfqew3rkoezb8et0mztbs:$R[229]={url:"/#features",text:"\x3Cspan class=\"block\">Features\x3C/span>"},ohacpmqed60srxpp4mitaqnz:$R[230]={url:"/#faq",text:"\x3Cspan class=\"block\">FAQ\x3C/span>"},msgm82rez6gutigtdjv1ecgm:$R[231]={url:"/#trailer",text:"\x3Cspan class=\"block\">Trailer\x3C/span>"}},ids:$R[232]=["msgm82rez6gutigtdjv1ecgm","so2rfqew3rkoezb8et0mztbs","ohacpmqed60srxpp4mitaqnz"]}},p38nr0t8uk2ty47y5lrnx0ns:$R[233]={title:"\x3Cspan class=\"block\">Social\x3C/span>",links:$R[234]={byId:$R[235]={dq4l9yejug6d8i9umx1fnxxw:$R[236]={url:"https://iris.to/katywings",text:"\x3Cspan class=\"block\">Nostr\x3C/span>"},rfabvh49yovmy8te0lncezs2:$R[237]={url:"https://twitter.com/nitropage",text:"\x3Cspan class=\"block\">Twitter\x3C/span>"}},ids:$R[238]=["dq4l9yejug6d8i9umx1fnxxw","rfabvh49yovmy8te0lncezs2"]}}},ids:$R[239]=["o14xaj3x94hl3rl0swp5bbaq","x1m2aui2ybzb14jbfp1bf2go","crc842ey7j6wj5sudo4nr3jg","i4nti845dme801c4khx9xj2p","p38nr0t8uk2ty47y5lrnx0ns"]},fullWidth:void 0,copyrightPrefix:"\x3Cspan class=\"block\">\x3Ca href=\"https://lufrai.org\" rel=\"noopener noreferrer\" target=\"_blank\" class=\"ql-color-g8\">Lufrai\x3C/a>\x3C/span>",copyrightSuffix:"\x3Cspan class=\"block\">- Made with Nitropage\x3C/span>",bgColor:$R[240]={value:"var(--mvux7tpjvthvdiqwkr0wqtkx)",alpha:void 0},lineColor:$R[241]={value:"var(--io2zqsa4taan5l54of4yc6p9)",alpha:0.5},id:""},slots:$R[242]={header:$R[243]={elements:$R[244]=["56650c61-01a5-4b50-836d-5a1f56fd9d37"]}},parentSlot:"footer"}},blueprintIds:$R[245]={m2vqbubuu61s8cu8l9z3cllu:!1,pynj0gs5qlwztg60j596bkgm:!0,zk7vp8rahquyz034aec4h2on:!1,oyf5ut4svjmudc6kl6hhm69h:!0,g5t3jgu1v9xwhb69c4wm52r5:!0,vigkf7auegf887geschdgb7w:!0,g05w6l6tg4qpkaqrir8dnwrj:!0,uhkonhxg2jcray627kltt8dk:!0,ba0jpedvc304eoz55l5mkgpu:!0,usedfsqfwa4g4aedh2wjkqkp:!0,zcvngz3018ov60rtf8kdgqgs:!1,ezmzzfo6uu2aeuqgbmez4pfi:!0,ussx0679sbtu0kqcez8wyu70:!1,f6awh67sfhor4ghxubxid8t5:!1,fh2n2ya9tstf76uhh1l1iqtg:!0,fmj4rug8jkbfy4lqe28n48wb:!0,b0ailno63q17afjl6wr83xz1:!0},defaultFont:"ujrc6jnb5zyze9mgc51x6g0g",fonts:$R[246]=[$R[247]={id:"acc229f2-7e8e-4b63-94c3-0699d60ef891",publicId:"mh9jd8smhdlj1rrxoixq9y84",family:"MyTimes",preload:!1,fallbacks:$R[248]=["ui-serif"," Georgia"," Cambria"," \"Times New Roman\""," Times"," serif"],driver:"local",faces:$R[249]=[]},$R[250]={id:"47fe190f-3dfd-4b18-aa96-91ce3fe6c49d",publicId:"ujrc6jnb5zyze9mgc51x6g0g",family:"Barlow",preload:!1,fallbacks:$R[251]=[""],driver:void 0,faces:$R[252]=[$R[253]={id:"44600a01-22ce-4ab5-8fd1-cd4fa159f93c",preload:!0,weight:400,style:"italic",files:$R[254]=[$R[255]={format:"woff2",name:"barlow-latin-400-italic.woff2",mime:"font/woff2"}]},$R[256]={id:"7698671e-34e6-4390-83e9-417fccef0156",preload:!1,weight:500,style:"italic",files:$R[257]=[$R[258]={format:"woff2",name:"barlow-latin-500-italic.woff2",mime:"font/woff2"}]},$R[259]={id:"db6b280c-f22a-463f-8787-3deb61e4c374",preload:!1,weight:600,style:"italic",files:$R[260]=[$R[261]={format:"woff2",name:"barlow-latin-600-italic.woff2",mime:"font/woff2"}]},$R[262]={id:"1b89f007-0acb-4212-8b14-55c8f9583977",preload:!0,weight:700,style:"",files:$R[263]=[$R[264]={format:"woff2",name:"barlow-latin-700-normal.woff2",mime:"font/woff2"}]},$R[265]={id:"0030ba6b-6ae4-4219-a82d-88a5a261d396",preload:!0,weight:700,style:"italic",files:$R[266]=[$R[267]={format:"woff2",name:"barlow-latin-700-italic.woff2",mime:"font/woff2"}]},$R[268]={id:"8a987b34-3b3c-494b-9d0e-ccf9af37c6f7",preload:!1,weight:800,style:"italic",files:$R[269]=[$R[270]={format:"woff2",name:"barlow-latin-800-italic.woff2",mime:"font/woff2"}]},$R[271]={id:"8f047809-acaa-4b00-868b-46eb3bf08e5b",preload:!1,weight:900,style:"italic",files:$R[272]=[$R[273]={format:"woff2",name:"barlow-latin-900-italic.woff2",mime:"font/woff2"}]},$R[274]={id:"2494099b-2138-4257-b869-4ae7f7ad3045",preload:!1,weight:100,style:"",files:$R[275]=[$R[276]={format:"woff2",name:"barlow-latin-100-normal.woff2",mime:"font/woff2"}]},$R[277]={id:"c8ae5028-f9f9-4c5d-bc5e-f367b3b3cb9a",preload:!1,weight:100,style:"italic",files:$R[278]=[$R[279]={format:"woff2",name:"barlow-latin-100-italic.woff2",mime:"font/woff2"}]},$R[280]={id:"9e2f73a2-1a75-4e13-9697-763f32e70e05",preload:!1,weight:200,style:"",files:$R[281]=[$R[282]={format:"woff2",name:"barlow-latin-200-normal.woff2",mime:"font/woff2"}]},$R[283]={id:"1712c046-810d-4a41-bbe6-4ecb03366afd",preload:!1,weight:200,style:"italic",files:$R[284]=[$R[285]={format:"woff2",name:"barlow-latin-200-italic.woff2",mime:"font/woff2"}]},$R[286]={id:"4c0cd562-963c-4c75-8c45-9532460e36b6",preload:!1,weight:300,style:"",files:$R[287]=[$R[288]={format:"woff2",name:"barlow-latin-300-normal.woff2",mime:"font/woff2"}]},$R[289]={id:"896056df-937d-4c1a-814e-a629e01d0192",preload:!1,weight:300,style:"italic",files:$R[290]=[$R[291]={format:"woff2",name:"barlow-latin-300-italic.woff2",mime:"font/woff2"}]},$R[292]={id:"7d5bab39-92e4-444c-b0c0-38b98ccaaa93",preload:!0,weight:400,style:"",files:$R[293]=[$R[294]={format:"woff2",name:"barlow-latin-400-normal.woff2",mime:"font/woff2"}]},$R[295]={id:"4ff9e520-7622-4644-a20e-8483cec3c454",preload:!1,weight:500,style:"",files:$R[296]=[$R[297]={format:"woff2",name:"barlow-latin-500-normal.woff2",mime:"font/woff2"}]},$R[298]={id:"88854f35-0233-4899-9845-24e617e7591e",preload:!1,weight:600,style:"",files:$R[299]=[$R[300]={format:"woff2",name:"barlow-latin-600-normal.woff2",mime:"font/woff2"}]},$R[301]={id:"0e80edaa-8746-475d-805d-8c30a26cd051",preload:!1,weight:800,style:"",files:$R[302]=[$R[303]={format:"woff2",name:"barlow-latin-800-normal.woff2",mime:"font/woff2"}]},$R[304]={id:"3ab3e8a4-1087-41d8-894f-d2c09937a8b7",preload:!1,weight:900,style:"",files:$R[305]=[$R[306]={format:"woff2",name:"barlow-latin-900-normal.woff2",mime:"font/woff2"}]}]},$R[307]={id:"39f8d54d-d067-4b7b-be84-16eb3d10dc2d",publicId:"dh5sftajtxwktaafqm751ahd",family:"Jost",preload:!1,fallbacks:$R[308]=[""],driver:void 0,faces:$R[309]=[$R[310]={id:"d0894da0-2358-44a0-993d-89829f77e93f",preload:!1,weight:100,style:"",files:$R[311]=[$R[312]={format:"woff2",name:"jost-latin-100-normal.woff2",mime:"font/woff2"}]},$R[313]={id:"97dda3d2-25e3-4b84-bcbb-dbc9164c24e0",preload:!1,weight:100,style:"italic",files:$R[314]=[$R[315]={format:"woff2",name:"jost-latin-100-italic.woff2",mime:"font/woff2"}]},$R[316]={id:"69a87df0-ab0a-46ff-b83e-a7595410f912",preload:!1,weight:200,style:"",files:$R[317]=[$R[318]={format:"woff2",name:"jost-latin-200-normal.woff2",mime:"font/woff2"}]},$R[319]={id:"ae57e346-f01f-4b4b-9443-c2bddccd316d",preload:!1,weight:200,style:"italic",files:$R[320]=[$R[321]={format:"woff2",name:"jost-latin-200-italic.woff2",mime:"font/woff2"}]},$R[322]={id:"5030abfa-6bc7-4606-ac17-03f30ecf3c98",preload:!1,weight:300,style:"",files:$R[323]=[$R[324]={format:"woff2",name:"jost-latin-300-normal.woff2",mime:"font/woff2"}]},$R[325]={id:"76f34562-e7c6-486b-a654-d9eef18c9e02",preload:!1,weight:300,style:"italic",files:$R[326]=[$R[327]={format:"woff2",name:"jost-latin-300-italic.woff2",mime:"font/woff2"}]},$R[328]={id:"119cc769-4b70-462d-b3f2-cc8ae68fe711",preload:!1,weight:400,style:"",files:$R[329]=[$R[330]={format:"woff2",name:"jost-latin-400-normal.woff2",mime:"font/woff2"}]},$R[331]={id:"cba3e520-b08a-4fca-aa02-2134d2d38a3e",preload:!1,weight:400,style:"italic",files:$R[332]=[$R[333]={format:"woff2",name:"jost-latin-400-italic.woff2",mime:"font/woff2"}]},$R[334]={id:"2a4da2a4-a314-4faf-aa9f-461cdb581645",preload:!1,weight:500,style:"italic",files:$R[335]=[$R[336]={format:"woff2",name:"jost-latin-500-italic.woff2",mime:"font/woff2"}]},$R[337]={id:"caab3638-09ef-4fa5-9b9c-ebfe7c97c977",preload:!1,weight:600,style:"italic",files:$R[338]=[$R[339]={format:"woff2",name:"jost-latin-600-italic.woff2",mime:"font/woff2"}]},$R[340]={id:"b27db6be-14ec-4c11-bd1b-a7047b4ba2d5",preload:!0,weight:700,style:"italic",files:$R[341]=[$R[342]={format:"woff2",name:"jost-latin-700-italic.woff2",mime:"font/woff2"}]},$R[343]={id:"0f85203c-8f27-423d-b8b5-8ccd777325ba",preload:!1,weight:800,style:"italic",files:$R[344]=[$R[345]={format:"woff2",name:"jost-latin-800-italic.woff2",mime:"font/woff2"}]},$R[346]={id:"0b1143da-1938-4d4a-8dca-905cfa485a58",preload:!0,weight:900,style:"",files:$R[347]=[$R[348]={format:"woff2",name:"jost-latin-900-normal.woff2",mime:"font/woff2"}]},$R[349]={id:"27f15926-f965-4ead-9928-693ba8e18ddd",preload:!0,weight:900,style:"italic",files:$R[350]=[$R[351]={format:"woff2",name:"jost-latin-900-italic.woff2",mime:"font/woff2"}]},$R[352]={id:"f0cfbd62-b811-4cc7-a729-d31292159a60",preload:!1,weight:600,style:"",files:$R[353]=[$R[354]={format:"woff2",name:"jost-latin-600-normal.woff2",mime:"font/woff2"}]},$R[355]={id:"7a16ca9c-4319-4151-988c-abf9a65c5266",preload:!1,weight:800,style:"",files:$R[356]=[$R[357]={format:"woff2",name:"jost-latin-800-normal.woff2",mime:"font/woff2"}]},$R[358]={id:"c32ac4bb-84cc-4161-ab3f-1d5933a9ae3f",preload:!0,weight:700,style:"",files:$R[359]=[$R[360]={format:"woff2",name:"jost-latin-700-normal.woff2",mime:"font/woff2"}]},$R[361]={id:"68b4bcd9-9a29-4c28-a3c4-01e4b44c4513",preload:!1,weight:500,style:"",files:$R[362]=[$R[363]={format:"woff2",name:"jost-latin-500-normal.woff2",mime:"font/woff2"}]}]}],notFound:!1,metaDescription:"One small step for semver, one giant leap for website editing. Introducing SolidStart v1, S3 file storage, Markdown support, focal point image cropping, editor zoom, page load optimizations and a lot more.",colors:$R[364]={un9vmcvyjwobci6rf8q5chj1:$R[365]={light:$R[366]={r:59,g:7,b:100},dark:$R[367]={r:207,g:155,b:248}},mvux7tpjvthvdiqwkr0wqtkx:$R[368]={light:$R[369]={r:102,g:32,b:156}},j2jrmoq2uqqhow1comf9ea92:$R[370]={light:$R[371]={r:100,g:33,b:201}},s8e4orihhrvtugqiqlvg5tr3:$R[372]={light:$R[373]={r:147,g:51,b:234}},io2zqsa4taan5l54of4yc6p9:$R[374]={light:$R[375]={r:170,g:59,b:255}},whx8cy8pnykxn7winymicnvp:$R[376]={light:$R[377]={r:71,g:85,b:105}},jn3m6ro6udqzqrewlud7xlp7:$R[378]={light:$R[379]={r:219,g:59,b:247}},mqdh8zbb5o1c6z1yad7h4uj6:$R[380]={light:$R[381]={r:4,g:120,b:87}},gh1t2zjavop2qz6m03z58o0e:$R[382]={light:$R[383]={r:249,g:248,b:252},dark:$R[384]={r:12,g:10,b:21}},onzpskjls7rjm6zwpf5oades:$R[385]={light:$R[386]={r:245,g:237,b:253},dark:$R[387]={r:37,g:6,b:45}},y7i5y66zym0kmjguui83rhyb:$R[388]={light:$R[389]={r:246,g:244,b:250},dark:$R[390]={r:26,g:19,b:37}},jd3kc90m57yadhkww288u2k4:$R[391]={light:$R[392]={r:237,g:233,b:254}},fxqipfiik4zybcosq58wul9n:$R[393]={light:$R[394]={r:255,g:255,b:255},dark:$R[395]={r:0,g:0,b:0}},ixj151bbn767lww99yf2sqaa:$R[396]={light:$R[397]={r:226,g:214,b:235},dark:$R[398]={r:66,g:49,b:78}},zp9mbzrpl4ht1weur8ik8g0g:$R[399]={light:$R[400]={r:88,g:28,b:135},dark:$R[401]={r:224,g:209,b:255}},jwiem1o71y1r1r4h18t7bitv:$R[402]={light:$R[403]={r:255,g:255,b:255}},raze83pe71ebyjexfxgpu88m:$R[404]={light:$R[405]={r:81,g:71,b:118}},q59ctc4dvotxrx4ogcf2568o:$R[406]={light:$R[407]={r:59,g:43,b:90}}},richtext:$R[408]={textColors:$R[409]={dyn1:$R[410]={id:"j2jrmoq2uqqhow1comf9ea92",rgb:$R[411]={r:100,g:33,b:201},css:"88, 33, 172"},dyn2:$R[412]={css:"71, 85, 105",rgb:$R[413]={r:71,g:85,b:105},id:"whx8cy8pnykxn7winymicnvp"},dyn3:$R[414]={css:"192, 38, 211",rgb:$R[415]={r:192,g:38,b:211},id:"jn3m6ro6udqzqrewlud7xlp7"},dyn4:$R[416]={id:"mqdh8zbb5o1c6z1yad7h4uj6",rgb:$R[417]={r:4,g:120,b:87},css:"4, 120, 87"},dyn5:$R[418]={css:"45, 212, 191",rgb:$R[419]={r:45,g:212,b:191}},dyn6:$R[420]={css:"0, 0, 0",rgb:$R[421]={r:0,g:0,b:0}},dyn7:$R[422]={id:"y7i5y66zym0kmjguui83rhyb",rgb:$R[423]={r:248,g:250,b:252},css:"248, 250, 252"},dyn8:$R[424]={id:"jwiem1o71y1r1r4h18t7bitv"},dyn9:$R[425]={id:"zp9mbzrpl4ht1weur8ik8g0g",rgb:$R[426]={r:88,g:28,b:135},css:"88, 28, 135"},dyn10:$R[427]={id:"zp9mbzrpl4ht1weur8ik8g0g",invert:!0,rgb:$R[428]={r:88,g:28,b:135},css:"88, 28, 135"}}},blueprintDefaults:$R[429]={project:$R[430]={g26xzngulddq5qqn3ur23w29:$R[431]={backgroundColor:$R[432]={},id:$R[433]={value:$R[434]={content:""}}},m2vqbubuu61s8cu8l9z3cllu:$R[435]={link:$R[436]={value:$R[437]={content:""}},content:$R[438]={value:$R[439]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"}},iconSvg:$R[440]={value:$R[441]={content:""}},align:$R[442]={value:$R[443]={selected:""}},size:$R[444]={value:$R[445]={selected:""}},textColor:$R[446]={},textColorHover:$R[447]={},bgColor:$R[448]={value:$R[449]={css:"81, 71, 118",rgb:$R[450]={r:81,g:71,b:118},id:"raze83pe71ebyjexfxgpu88m"}},bgColorHover:$R[451]={value:$R[452]={css:"59, 43, 90",rgb:$R[453]={r:59,g:43,b:90},id:"q59ctc4dvotxrx4ogcf2568o"}},id:$R[454]={value:$R[455]={content:""}}},g5t3jgu1v9xwhb69c4wm52r5:$R[456]={category:$R[457]={value:$R[458]={content:"\x3Cspan class=\"block\">Guides\x3C/span>"}},categoryUrl:$R[459]={value:$R[460]={content:""}},date:$R[461]={value:$R[462]={content:""}},author:$R[463]={value:$R[464]={content:"\x3Cspan class=\"block\">Katja Lutz\x3C/span>"}},authorSubText:$R[465]={value:$R[466]={content:"\x3Cspan class=\"block\">Web Developer\x3C/span>"}},authorImage:$R[467]={value:$R[468]={mediaIds:$R[82]}},textColor:$R[469]={},id:$R[470]={value:$R[471]={content:""}}},may03wu7iylv7y3v62hyz9gc:$R[472]={items:$R[473]={value:$R[474]={byId:$R[475]={i898523985:$R[476]={image:$R[477]={mediaIds:$R[478]=[]},title:$R[479]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},link:$R[480]={content:""}},i874449080:$R[481]={image:$R[482]={mediaIds:$R[483]=[]},title:$R[484]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},link:$R[485]={content:""}},i480671446:$R[486]={image:$R[487]={mediaIds:$R[488]=[]},title:$R[489]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},link:$R[490]={content:""}}},ids:$R[491]=["i898523985","i874449080","i480671446"]}},linkText:$R[492]={value:$R[493]={content:"\x3Cspan class=\"block\">READ MORE\x3C/span>"}},titleFont:$R[494]={value:$R[495]={}},color:$R[496]={},linkColor:$R[497]={},id:$R[498]={value:$R[499]={content:""}}},ussx0679sbtu0kqcez8wyu70:$R[500]={code:$R[501]={value:$R[502]={content:""}},language:$R[503]={value:$R[504]={selected:"bash"}},fullWidth:$R[505]={value:$R[506]={content:!0}},bgColor:$R[507]={},borderColor:$R[508]={},id:$R[509]={value:$R[510]={content:""}},wordWrap:$R[511]={value:$R[512]={}}},fh2n2ya9tstf76uhh1l1iqtg:$R[513]={items:$R[514]={value:$R[515]={byId:$R[516]={i216588782:$R[517]={image:$R[518]={mediaIds:$R[519]=[]},title:$R[520]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},teaser:$R[521]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"},url:$R[522]={content:""},category:$R[523]={content:"\x3Cspan class=\"block\">Announcements\x3C/span>"},categoryUrl:$R[524]={content:"/blog"},date:$R[525]={content:""}}},ids:$R[526]=["i216588782"]}},author:$R[527]={value:$R[528]={content:"\x3Cspan class=\"block\">Katja Lutz\x3C/span>"}},authorSubText:$R[529]={value:$R[530]={content:"\x3Cspan class=\"block\">Web Developer\x3C/span>"}},authorImage:$R[531]={value:$R[532]={mediaIds:$R[174]}},urlText:$R[533]={value:$R[534]={content:"\x3Cspan class=\"block\">READ MORE\x3C/span>"}},titleFont:$R[535]={value:$R[536]={id:"39f8d54d-d067-4b7b-be84-16eb3d10dc2d",publicId:"dh5sftajtxwktaafqm751ahd"}},textColor:$R[537]={value:$R[538]={id:"onzpskjls7rjm6zwpf5oades",invert:!0,rgb:$R[539]={r:245,g:237,b:253},css:"245, 237, 253"}},linkColor:$R[540]={value:$R[541]={id:"jn3m6ro6udqzqrewlud7xlp7",rgb:$R[542]={r:219,g:59,b:247},css:"219, 59, 247"}},borderColor:$R[543]={},id:$R[544]={value:$R[545]={content:""}},image:$R[546]={value:$R[547]={mediaIds:$R[548]=[]}},title:$R[549]={value:$R[550]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"}},teaser:$R[551]={value:$R[552]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"}},url:$R[553]={value:$R[554]={content:""}},category:$R[555]={value:$R[556]={content:"\x3Cspan class=\"block\">Category\x3C/span>"}},categoryUrl:$R[557]={value:$R[558]={content:""}}},b0ailno63q17afjl6wr83xz1:$R[559]={title:$R[560]={value:$R[561]={content:"\x3Cspan class=\"block\">Nitropage\x3C/span>"}},titleColor:$R[562]={value:$R[563]={css:"255, 255, 255",rgb:$R[564]={r:255,g:255,b:255}}},titleFont:$R[565]={value:$R[566]={id:"39f8d54d-d067-4b7b-be84-16eb3d10dc2d",italic:!0,publicId:"dh5sftajtxwktaafqm751ahd"}},columns:$R[567]={value:$R[568]={byId:$R[569]={x1m2aui2ybzb14jbfp1bf2go:$R[570]={title:$R[571]={content:"\x3Cspan class=\"block\">Resources\x3C/span>"},links:$R[572]={byId:$R[573]={dou0vh2hzkjpvi9c6e9xmaqq:$R[574]={url:$R[575]={content:"/docs"},text:$R[576]={content:"\x3Cspan class=\"block\">Docs\x3C/span>"}},zznk0z6k9ekwnxl1kphxqrr1:$R[577]={url:$R[578]={content:"/guide"},text:$R[579]={content:"\x3Cspan class=\"block\">User Guide\x3C/span>"}},im5yxk44o9bfzlef0fcuvpoz:$R[580]={url:$R[581]={content:"/blog"},text:$R[582]={content:"\x3Cspan class=\"block\">Blog\x3C/span>"}}},ids:$R[211]}},i4nti845dme801c4khx9xj2p:$R[583]={title:$R[584]={content:"\x3Cspan class=\"block\">Organisation\x3C/span>"},links:$R[585]={byId:$R[586]={fk8nsu2uefr3om8e50qg2zah:$R[587]={url:$R[588]={content:"https://lufrai.org/about/"},text:$R[589]={content:"\x3Cspan class=\"block\">About\x3C/span>"}},vrqeuvkkb07pk0fjcqwziihl:$R[590]={url:$R[591]={content:"https://lufrai.org/donate"},text:$R[592]={content:"\x3Cspan class=\"block\">Donate\x3C/span>"}},axs9m5x9m9112pnbrcyajzog:$R[593]={url:$R[594]={content:"/#contact"},text:$R[595]={content:"\x3Cspan class=\"block\">Contact\x3C/span>"}}},ids:$R[218]}},crc842ey7j6wj5sudo4nr3jg:$R[596]={title:$R[597]={content:"\x3Cspan class=\"block\">Support\x3C/span>"},links:$R[598]={byId:$R[599]={q5lecpdf0h9tnwgnznnme0o2:$R[600]={url:$R[601]={content:"https://community.lufrai.org"},text:$R[602]={content:"\x3Cspan class=\"block\">Community\x3C/span>"}},ozk9byvfw2ecuppo5l13mphk:$R[603]={url:$R[604]={content:"https://discord.com/invite/solidjs"},text:$R[605]={content:"\x3Cspan class=\"block\">Discord\x3C/span>"}},c4v6yxzjsv57mpxavsedfnx7:$R[606]={url:$R[607]={content:"https://codeberg.org/nitropage/nitropage/issues"},text:$R[608]={content:"\x3Cspan class=\"block\">Issues\x3C/span>"}}},ids:$R[225]}},o14xaj3x94hl3rl0swp5bbaq:$R[609]={title:$R[610]={content:"\x3Cspan class=\"block\">Project\x3C/span>"},links:$R[611]={byId:$R[612]={so2rfqew3rkoezb8et0mztbs:$R[613]={url:$R[614]={content:"/#features"},text:$R[615]={content:"\x3Cspan class=\"block\">Features\x3C/span>"}},ohacpmqed60srxpp4mitaqnz:$R[616]={url:$R[617]={content:"/#faq"},text:$R[618]={content:"\x3Cspan class=\"block\">FAQ\x3C/span>"}},msgm82rez6gutigtdjv1ecgm:$R[619]={url:$R[620]={content:"/#trailer"},text:$R[621]={content:"\x3Cspan class=\"block\">Trailer\x3C/span>"}}},ids:$R[232]}},p38nr0t8uk2ty47y5lrnx0ns:$R[622]={title:$R[623]={content:"\x3Cspan class=\"block\">Social\x3C/span>"},links:$R[624]={byId:$R[625]={dq4l9yejug6d8i9umx1fnxxw:$R[626]={url:$R[627]={content:"https://iris.to/katywings"},text:$R[628]={content:"\x3Cspan class=\"block\">Nostr\x3C/span>"}},rfabvh49yovmy8te0lncezs2:$R[629]={url:$R[630]={content:"https://twitter.com/nitropage"},text:$R[631]={content:"\x3Cspan class=\"block\">Twitter\x3C/span>"}}},ids:$R[238]}}},ids:$R[239]},override:!0},copyrightPrefix:$R[632]={value:$R[633]={content:"\x3Cspan class=\"block\">\x3Ca href=\"https://lufrai.org\" rel=\"noopener noreferrer\" target=\"_blank\" class=\"ql-color-g8\">Lufrai\x3C/a>\x3C/span>"}},copyrightSuffix:$R[634]={value:$R[635]={content:"\x3Cspan class=\"block\">- Made with Nitropage\x3C/span>"}},bgColor:$R[636]={value:$R[637]={id:"mvux7tpjvthvdiqwkr0wqtkx",rgb:$R[638]={r:102,g:32,b:156},css:"102, 32, 156"}},lineColor:$R[639]={value:$R[640]={id:"io2zqsa4taan5l54of4yc6p9",rgb:$R[641]={r:170,g:59,b:255},css:"170, 59, 255",alpha:0.5}},id:$R[642]={value:$R[643]={content:""}},textColor:$R[644]={value:$R[645]={id:"jd3kc90m57yadhkww288u2k4",rgb:$R[646]={r:237,g:233,b:254},css:"237, 233, 254",alpha:0.7}},hoverColor:$R[647]={value:$R[648]={id:"jn3m6ro6udqzqrewlud7xlp7",rgb:$R[649]={r:219,g:59,b:247},css:"219, 59, 247"}},description:$R[650]={value:$R[651]={content:"\x3Cspan class=\"block\">The free visual website editor, that is powered with your own \x3Ca href=\"https://www.solidjs.com/\" rel=\"noopener noreferrer\" target=\"_blank\" class=\"ql-color-g3\">SolidJS\x3C/a> components. Open Source and without a premium plan.\x3C/span>"}},fullWidth:$R[652]={value:$R[653]={}}},fmj4rug8jkbfy4lqe28n48wb:$R[654]={formUrl:$R[655]={value:$R[656]={content:"https://newsletter.lufrai.org/subscription/form"}},emailInputName:$R[657]={value:$R[658]={content:""}},emailInputPlaceholder:$R[659]={value:$R[660]={content:""}},title:$R[661]={value:$R[662]={content:"\x3Cspan class=\"block\">Join the newsletter\x3C/span>"}},buttonText:$R[663]={value:$R[664]={content:"\x3Cspan class=\"block\">Subscribe\x3C/span>"}},buttonTextColor:$R[665]={},buttonTextColorHover:$R[666]={},buttonBgColor:$R[667]={value:$R[668]={id:"jn3m6ro6udqzqrewlud7xlp7",rgb:$R[669]={r:192,g:38,b:211},css:"192, 38, 211"}},buttonBgColorHover:$R[670]={value:$R[671]={id:"io2zqsa4taan5l54of4yc6p9",rgb:$R[672]={r:170,g:59,b:255},css:"170, 59, 255"}},titleColor:$R[673]={value:$R[674]={css:"255, 255, 255",rgb:$R[675]={r:255,g:255,b:255}}},titleFont:$R[676]={value:$R[677]={id:"39f8d54d-d067-4b7b-be84-16eb3d10dc2d",letterSpacing:0.1,publicId:"dh5sftajtxwktaafqm751ahd"}},hiddenHtml:$R[678]={value:$R[679]={content:"\x3Cinput id=\"34076\" type=\"checkbox\" name=\"l\" checked value=\"3407653d-4a1b-4cc4-950c-439d7fe1ac43\" />\x3Cinput id=\"6ce96\" type=\"checkbox\" name=\"l\" checked value=\"6ce96751-8cfb-4f6d-9d53-f7f8b65b2f1a\" />"}},captchaHtml:$R[680]={value:$R[681]={content:"\x3Cdiv class=\"captcha\">\n \x3Cdiv id=\"h-captcha\" class=\"h-captcha\" data-sitekey=\"a2fa0d1e-1bb7-4fad-8c8a-0d3518758283\">\x3C/div>\n\x3C/div>"}},honeypotInputName:$R[682]={value:$R[683]={content:"nonce"}},id:$R[684]={value:$R[685]={content:""}},captchaScript:$R[686]={value:$R[687]={content:"if (window.hcaptcha) hcaptcha.render('h-captcha');"}},captchaScriptSrc:$R[688]={value:$R[689]={content:"https://js.hcaptcha.com/1/api.js"}}},zk7vp8rahquyz034aec4h2on:$R[690]={content:$R[691]={value:$R[692]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"}},subtitle:$R[693]={value:$R[694]={content:""}},level:$R[695]={value:$R[696]={content:2}},size:$R[697]={value:$R[698]={selected:"lg"}},textColor:$R[699]={value:$R[700]={id:"zp9mbzrpl4ht1weur8ik8g0g",rgb:$R[701]={r:224,g:209,b:255},css:"88, 28, 135",invert:!1}},subtitleColor:$R[702]={},fullWidth:$R[703]={value:$R[704]={content:!0}},font:$R[705]={value:$R[706]={id:"39f8d54d-d067-4b7b-be84-16eb3d10dc2d",letterSpacing:-0.025,publicId:"dh5sftajtxwktaafqm751ahd"}},subtitleFont:$R[707]={value:$R[708]={weight:400}},subtitleGap:$R[709]={value:$R[710]={}},prependSubtitle:$R[711]={value:$R[712]={content:!1}},id:$R[713]={value:$R[714]={content:""}},hyphen:$R[715]={value:$R[716]={content:!0}},marginTop:$R[717]={value:$R[718]={}},marginTopMax:$R[719]={value:$R[720]={}},marginBottom:$R[721]={value:$R[722]={}},marginBottomMax:$R[723]={value:$R[724]={}},autoCollapseMargins:$R[725]={value:$R[726]={content:!0}},balancedWrap:$R[727]={value:$R[728]={content:!0}}},mk8emfe02k3ebqqwpf6dmsfg:$R[729]={title:$R[730]={value:$R[731]={content:"\x3Cspan class=\"block\">Contact\x3C/span>"}},subtitle:$R[732]={value:$R[733]={content:"\x3Cspan class=\"block\">Let's chat!\x3C/span>"}},description:$R[734]={value:$R[735]={content:""}},items:$R[736]={value:$R[737]={byId:$R[738]={i438816450:$R[739]={title:$R[740]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},description:$R[741]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"},contact:$R[742]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},iconSvg:$R[743]={content:""}},i363631369:$R[744]={title:$R[745]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},description:$R[746]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"},contact:$R[747]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},iconSvg:$R[748]={content:""}}},ids:$R[749]=["i438816450","i363631369"]}},titleFont:$R[750]={value:$R[751]={id:"39f8d54d-d067-4b7b-be84-16eb3d10dc2d",publicId:"dh5sftajtxwktaafqm751ahd"}},iconBackgroundColor:$R[752]={value:$R[753]={id:"fxqipfiik4zybcosq58wul9n",rgb:$R[754]={r:255,g:255,b:255},css:"255, 255, 255"}},titleColor:$R[755]={value:$R[756]={id:"fxqipfiik4zybcosq58wul9n",invert:!0,rgb:$R[757]={r:255,g:255,b:255},css:"255, 255, 255"}},itemTextColor:$R[758]={value:$R[759]={id:"fxqipfiik4zybcosq58wul9n",invert:!0,rgb:$R[760]={r:255,g:255,b:255},css:"255, 255, 255"}},itemBackgroundColor:$R[761]={value:$R[762]={id:"y7i5y66zym0kmjguui83rhyb",rgb:$R[763]={r:7,g:12,b:18},css:"241, 245, 249"}},highlightColor:$R[764]={value:$R[765]={id:"jn3m6ro6udqzqrewlud7xlp7",rgb:$R[766]={r:192,g:38,b:211},css:"192, 38, 211"}},id:$R[767]={value:$R[768]={content:""}}},fil2tlugy1pltj9006rv354c:$R[769]={title:$R[770]={value:$R[771]={content:"\x3Cspan class=\"block\">Table of Content\x3C/span>"}},sections:$R[772]={value:$R[773]={byId:$R[774]={i211698320:$R[775]={title:$R[776]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},items:$R[777]={byId:$R[778]={i154608347:$R[779]={question:$R[780]={content:"\x3Cspan class=\"block\">Can I use this to make a landing-page / blog / shop / government-site?\x3C/span>"},answer:$R[781]={content:"\x3Cspan class=\"block\">An Answer.\x3C/span>"}},i854319245:$R[782]={question:$R[783]={content:"\x3Cspan class=\"block\">Was this built by a single person?\x3C/span>"},answer:$R[784]={content:"\x3Cspan class=\"block\">An Answer.\x3C/span>"}},i777164678:$R[785]={question:$R[786]={content:"\x3Cspan class=\"block\">Wieso ist die Admin Oberfläche nicht auf Deutsch?\x3C/span>"},answer:$R[787]={content:"\x3Cspan class=\"block\">An Answer.\x3C/span>"}}},ids:$R[788]=["i154608347","i854319245","i777164678"]}},i523821391:$R[789]={title:$R[790]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},items:$R[791]={byId:$R[792]={i275945562:$R[793]={question:$R[794]={content:"\x3Cspan class=\"block\">A question?\x3C/span>"},answer:$R[795]={content:"\x3Cspan class=\"block\">An Answer.\x3C/span>"}},i392998386:$R[796]={question:$R[797]={content:"\x3Cspan class=\"block\">A question?\x3C/span>"},answer:$R[798]={content:"\x3Cspan class=\"block\">An Answer.\x3C/span>"}},i270653253:$R[799]={question:$R[800]={content:"\x3Cspan class=\"block\">A question?\x3C/span>"},answer:$R[801]={content:"\x3Cspan class=\"block\">An Answer.\x3C/span>"}}},ids:$R[802]=["i275945562","i392998386","i270653253"]}},i441030046:$R[803]={title:$R[804]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},items:$R[805]={byId:$R[806]={i276554276:$R[807]={question:$R[808]={content:"\x3Cspan class=\"block\">A question?\x3C/span>"},answer:$R[809]={content:"\x3Cspan class=\"block\">An Answer.\x3C/span>"}},i939864070:$R[810]={question:$R[811]={content:"\x3Cspan class=\"block\">A question?\x3C/span>"},answer:$R[812]={content:"\x3Cspan class=\"block\">An Answer.\x3C/span>"}},i132982106:$R[813]={question:$R[814]={content:"\x3Cspan class=\"block\">A question?\x3C/span>"},answer:$R[815]={content:"\x3Cspan class=\"block\">An Answer.\x3C/span>"}}},ids:$R[816]=["i276554276","i939864070","i132982106"]}}},ids:$R[817]=["i211698320","i523821391","i441030046"]}},textColor:$R[818]={value:$R[819]={id:"fxqipfiik4zybcosq58wul9n",invert:!0,rgb:$R[820]={r:255,g:255,b:255},css:"255, 255, 255"}},highlightColor:$R[821]={value:$R[822]={id:"s8e4orihhrvtugqiqlvg5tr3",rgb:$R[823]={r:147,g:51,b:234},css:"147, 51, 234"}},lineColor:$R[824]={value:$R[825]={id:"ixj151bbn767lww99yf2sqaa",rgb:$R[826]={r:226,g:214,b:235},css:"226, 214, 235"}},id:$R[827]={value:$R[828]={content:""}}},czbfkfg4rdgw5gf2543dv9r3:$R[829]={text:$R[830]={value:$R[831]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"}},fullWidth:$R[832]={value:$R[833]={}},textColor:$R[834]={value:$R[835]={id:"fxqipfiik4zybcosq58wul9n",invert:!0,rgb:$R[836]={r:255,g:255,b:255},css:"255, 255, 255"}},textFont:$R[837]={value:$R[838]={}},id:$R[839]={value:$R[840]={content:""}},hyphen:$R[841]={value:$R[842]={}}},oyf5ut4svjmudc6kl6hhm69h:$R[843]={backgroundColor:$R[844]={},topPadding:$R[845]={value:$R[846]={selected:"lg"}},bottomPadding:$R[847]={value:$R[848]={selected:"lg"}},horizontalPadding:$R[849]={value:$R[850]={selected:""}},id:$R[851]={value:$R[852]={content:""}},fullWidth:$R[853]={value:$R[854]={}}},why0uuxbciqwiujfv6w96o5z:$R[855]={image:$R[856]={value:$R[857]={mediaIds:$R[858]=[]}},verticalPadding:$R[859]={value:$R[860]={content:8}},slotFirstOnMobile:$R[861]={value:$R[862]={}},inverseOnDesktop:$R[863]={value:$R[864]={}},id:$R[865]={value:$R[866]={content:""}}},vigkf7auegf887geschdgb7w:$R[867]={style:$R[868]={value:$R[869]={content:""}},slotStyle:$R[870]={value:$R[871]={content:""}},css:$R[872]={value:$R[873]={content:""}},color1:$R[874]={},color2:$R[875]={},color3:$R[876]={},length1:$R[877]={value:$R[878]={}},length2:$R[879]={value:$R[880]={}},length3:$R[881]={value:$R[882]={}},length4:$R[883]={value:$R[884]={}},id:$R[885]={value:$R[886]={content:""}}},zuvec1ijvwpdq9pu19jpqylg:$R[887]={items:$R[888]={value:$R[889]={byId:$R[890]={i969128658:$R[891]={title:$R[892]={content:""},image:$R[893]={mediaIds:$R[894]=[]},url:$R[895]={content:""}},i426756063:$R[896]={title:$R[897]={content:""},image:$R[898]={mediaIds:$R[899]=[]},url:$R[900]={content:""}},i914767231:$R[901]={title:$R[902]={content:""},image:$R[903]={mediaIds:$R[904]=[]},url:$R[905]={content:""}},i313724418:$R[906]={title:$R[907]={content:""},image:$R[908]={mediaIds:$R[909]=[]},url:$R[910]={content:""}},i814799689:$R[911]={title:$R[912]={content:""},image:$R[913]={mediaIds:$R[914]=[]},url:$R[915]={content:""}}},ids:$R[916]=["i969128658","i426756063","i914767231","i313724418","i814799689"]}},color:$R[917]={value:$R[918]={id:"fxqipfiik4zybcosq58wul9n",invert:!0,rgb:$R[919]={r:255,g:255,b:255},css:"255, 255, 255"}},id:$R[920]={value:$R[921]={content:""}}},osq784w5pxym8kh1q9rsj1m4:$R[922]={audio:$R[923]={value:$R[924]={mediaIds:$R[925]=[]}},id:$R[926]={value:$R[927]={content:""}}},ae8f3r696oky0tpbdlu1accp:$R[928]={title:$R[929]={value:$R[930]={content:"\x3Cspan class=\"block\">Visual website editing for \x3Cem class=\"ql-color-g1\">individualists\x3C/em>\x3C/span>"}},titleColor:$R[931]={},titleFont:$R[932]={value:$R[933]={id:"39f8d54d-d067-4b7b-be84-16eb3d10dc2d",publicId:"dh5sftajtxwktaafqm751ahd"}},description:$R[934]={value:$R[935]={content:"\x3Cspan class=\"block\">The free visual website editor, that is powered with your own \x3Ca href=\"https://www.solidjs.com/\" rel=\"noopener noreferrer\" target=\"_blank\">SolidJS\x3C/a> components. Open Source (\x3Ca href=\"https://git.lufrai.org/nitropage/nitropage/src/branch/master/LICENSE\" rel=\"noopener noreferrer\" target=\"_blank\">MIT-Licence\x3C/a>) and without a premium plan. Current Version: \x3Ca href=\"https://git.lufrai.org/nitropage/nitropage/src/branch/master/packages/nitropage/CHANGELOG.md\" rel=\"noopener noreferrer\" target=\"_blank\" class=\"ql-color-g3\">\x3Cu>0.25.0\x3C/u>\x3C/a>\x3C/span>"}},descriptionColor:$R[936]={},descriptionFont:$R[937]={value:$R[938]={}},sideImage:$R[939]={value:$R[940]={mediaIds:$R[941]=[]}},sideImageFade:$R[942]={value:$R[943]={}},sideImageOpacity:$R[944]={value:$R[945]={content:100}},sideImagePosition:$R[946]={value:$R[947]={selected:""}},id:$R[948]={value:$R[949]={content:""}}},hfhknwqzq0f2o9qzrf2taxaj:$R[950]={title:$R[951]={value:$R[952]={content:"\x3Cspan class=\"block\">Page not found\x3C/span>"}},image:$R[953]={value:$R[954]={mediaIds:$R[955]=["7b7cbd4c-ec74-4f84-a9b0-d3ddad21add4"]}},error:$R[956]={value:$R[957]={content:"\x3Cspan class=\"block\">404 error\x3C/span>"}},description:$R[958]={value:$R[959]={content:"\x3Cspan class=\"block\">Sorry, the page you are looking for doesn't exist.\x3C/span>"}},textColor:$R[960]={value:$R[961]={id:"gh1t2zjavop2qz6m03z58o0e",rgb:$R[962]={r:249,g:248,b:252},css:"249, 248, 252",invert:!0}},highlightColor:$R[963]={value:$R[964]={id:"jn3m6ro6udqzqrewlud7xlp7",rgb:$R[965]={r:219,g:59,b:247},css:"219, 59, 247"}},links:$R[966]={value:$R[967]={byId:$R[968]={os9f7inkfhsebf6jbpvug2dr:$R[969]={link:$R[970]={content:"/"},title:$R[971]={content:"\x3Cspan class=\"block\">Home\x3C/span>"},description:$R[972]={content:"\x3Cspan class=\"block\">Head back to the homepage.\x3C/span>"}},njj5z07j3ekv67vg2fnyz6cn:$R[973]={link:$R[974]={content:"/guide"},title:$R[975]={content:"\x3Cspan class=\"block\">User Guide\x3C/span>"},description:$R[976]={content:"\x3Cspan class=\"block\">Learn more about Nitropage.\x3C/span>"}},y7z9l0gvmtinfoprhhyzkskk:$R[977]={link:$R[978]={content:"/docs"},title:$R[979]={content:"\x3Cspan class=\"block\">Developers\x3C/span>"},description:$R[980]={content:"\x3Cspan class=\"block\">API documentation, upgrades and more.\x3C/span>"}}},ids:$R[981]=["os9f7inkfhsebf6jbpvug2dr","njj5z07j3ekv67vg2fnyz6cn","y7z9l0gvmtinfoprhhyzkskk"]},override:!0},titleFont:$R[982]={value:$R[983]={id:"39f8d54d-d067-4b7b-be84-16eb3d10dc2d",publicId:"dh5sftajtxwktaafqm751ahd"}},id:$R[984]={value:$R[985]={content:""}}},w6dnxkdsgi6xakmog46728lx:$R[986]={description:$R[987]={value:$R[988]={content:"\x3Cspan class=\"block\">The roadmap is not set in stone and depends on community \x3Ca href=\"https://nitropage.com/#contact\" rel=\"noopener noreferrer\" target=\"_blank\">feedback\x3C/a>. At this stage in development, we don't hesitate releasing \x3Cu>breaking\x3C/u> changes.\x3C/span>"}},sections:$R[989]={value:$R[990]={byId:$R[991]={i421586447:$R[992]={title:$R[993]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},items:$R[994]={byId:$R[995]={i321048099:$R[996]={checked:$R[997]={},title:$R[998]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},description:$R[999]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"}},i939894870:$R[1000]={checked:$R[1001]={},title:$R[1002]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},description:$R[1003]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"}},i988135436:$R[1004]={checked:$R[1005]={},title:$R[1006]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},description:$R[1007]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"}}},ids:$R[1008]=["i321048099","i939894870","i988135436"]}},i057274184:$R[1009]={title:$R[1010]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},items:$R[1011]={byId:$R[1012]={i756401124:$R[1013]={checked:$R[1014]={},title:$R[1015]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},description:$R[1016]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"}},i896314484:$R[1017]={checked:$R[1018]={},title:$R[1019]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},description:$R[1020]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"}},i789610146:$R[1021]={checked:$R[1022]={},title:$R[1023]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},description:$R[1024]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"}}},ids:$R[1025]=["i756401124","i896314484","i789610146"]}}},ids:$R[1026]=["i421586447","i057274184"]}},maxColumns:$R[1027]={value:$R[1028]={content:4}},titleFont:$R[1029]={value:$R[1030]={id:"39f8d54d-d067-4b7b-be84-16eb3d10dc2d",publicId:"dh5sftajtxwktaafqm751ahd"}},textColor:$R[1031]={value:$R[1032]={id:"fxqipfiik4zybcosq58wul9n",invert:!0,rgb:$R[1033]={r:255,g:255,b:255},css:"255, 255, 255"}},iconColor:$R[1034]={value:$R[1035]={id:"s8e4orihhrvtugqiqlvg5tr3",rgb:$R[1036]={r:147,g:51,b:234},css:"147, 51, 234"}},id:$R[1037]={value:$R[1038]={content:""}}},ybys9hh5umjkoi2kfkiidglr:$R[1039]={style:$R[1040]={value:$R[1041]={selected:""}},color:$R[1042]={},fullWidth:$R[1043]={value:$R[1044]={}},id:$R[1045]={value:$R[1046]={content:""}}},f9zu52lepi4wlteaz0k8w79n:$R[1047]={rows:$R[1048]={value:$R[1049]={byId:$R[1050]={},ids:$R[1051]=[]}},column1:$R[1052]={value:$R[1053]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"}},column2:$R[1054]={value:$R[1055]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"}},column3:$R[1056]={value:$R[1057]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"}},column4:$R[1058]={value:$R[1059]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"}},column5:$R[1060]={value:$R[1061]={content:""}},column6:$R[1062]={value:$R[1063]={content:""}},column7:$R[1064]={value:$R[1065]={content:""}},column8:$R[1066]={value:$R[1067]={content:""}},column9:$R[1068]={value:$R[1069]={content:""}},fullWidth:$R[1070]={value:$R[1071]={}},spreadColumn:$R[1072]={value:$R[1073]={content:null}},alignTop:$R[1074]={value:$R[1075]={}},showNumeration:$R[1076]={value:$R[1077]={}},numerationLabel:$R[1078]={value:$R[1079]={content:"\x3Cspan class=\"block\">#\x3C/span>"}},textColor:$R[1080]={},headTextColor:$R[1081]={},borderColor:$R[1082]={},backgroundColor:$R[1083]={},headBackgroundColor:$R[1084]={},stripBackgroundColor:$R[1085]={},id:$R[1086]={value:$R[1087]={content:""}}},ow7706ppsblfx9iyd3mbfd16:$R[1088]={content:$R[1089]={value:$R[1090]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"}},link:$R[1091]={value:$R[1092]={content:""}},bgColor:$R[1093]={},textColor:$R[1094]={},uppercase:$R[1095]={value:$R[1096]={}},id:$R[1097]={value:$R[1098]={content:""}}},g05w6l6tg4qpkaqrir8dnwrj:$R[1099]={padding:$R[1100]={value:$R[1101]={selected:""}},borderRadius:$R[1102]={value:$R[1103]={selected:""}},shadow:$R[1104]={value:$R[1105]={selected:""}},textColor:$R[1106]={},bgColor:$R[1107]={},id:$R[1108]={value:$R[1109]={content:""}},link:$R[1110]={value:$R[1111]={content:""}},paddingMax:$R[1112]={value:$R[1113]={}},paddingY:$R[1114]={value:$R[1115]={}},paddingYMax:$R[1116]={value:$R[1117]={}},textColorHover:$R[1118]={},backgroundColorHover:$R[1119]={},borderColor:$R[1120]={},borderColorHover:$R[1121]={}},hfd1h2d6cg67y3c4xvuyowow:$R[1122]={quantity:$R[1123]={value:$R[1124]={content:2}},justifyColumns:$R[1125]={value:$R[1126]={selected:""}},id:$R[1127]={value:$R[1128]={content:""}}},cd3pv0e6xywtebw50ph4mc1s:$R[1129]={verticalAlign:$R[1130]={value:$R[1131]={selected:""}},spacing:$R[1132]={value:$R[1133]={selected:""}},id:$R[1134]={value:$R[1135]={content:""}},direction:$R[1136]={value:$R[1137]={selected:""}},justifyContent:$R[1138]={value:$R[1139]={selected:""}},alignItems:$R[1140]={value:$R[1141]={selected:""}},collapseOnMobile:$R[1142]={value:$R[1143]={selected:""}},grow:$R[1144]={value:$R[1145]={}},wrapItems:$R[1146]={value:$R[1147]={}},spacingMax:$R[1148]={value:$R[1149]={}},spacingY:$R[1150]={value:$R[1151]={}},spacingYMax:$R[1152]={value:$R[1153]={}},style:$R[1154]={value:$R[1155]={content:""}}},n0u4th54fk63w7er8w22uyje:$R[1156]={sections:$R[1157]={value:$R[1158]={byId:$R[1159]={},ids:$R[1160]=[]}},textColor:$R[1161]={value:$R[1162]={id:"fxqipfiik4zybcosq58wul9n",invert:!0,rgb:$R[1163]={r:255,g:255,b:255},css:"255, 255, 255"}},activeTextColor:$R[1164]={value:$R[1165]={id:"un9vmcvyjwobci6rf8q5chj1",rgb:$R[1166]={r:59,g:7,b:100},css:"59, 7, 100",invert:!1}},borderColor:$R[1167]={value:$R[1168]={id:"ixj151bbn767lww99yf2sqaa",rgb:$R[1169]={r:226,g:214,b:235},css:"71, 85, 105"}},activeButtonColor:$R[1170]={value:$R[1171]={id:"gh1t2zjavop2qz6m03z58o0e",rgb:$R[1172]={r:241,g:245,b:249},css:"241, 245, 249"}},statusColor:$R[1173]={},statusBgColor:$R[1174]={value:$R[1175]={id:"mvux7tpjvthvdiqwkr0wqtkx",rgb:$R[1176]={r:102,g:32,b:156},css:"102, 32, 156"}},previousLabel:$R[1177]={value:$R[1178]={content:"\x3Cspan class=\"block\">Previous\x3C/span>"}},nextLabel:$R[1179]={value:$R[1180]={content:"\x3Cspan class=\"block\">Next\x3C/span>"}},tocLabel:$R[1181]={value:$R[1182]={content:"\x3Cspan class=\"block\">On this page\x3C/span>"}},id:$R[1183]={value:$R[1184]={content:""}},menuColor:$R[1185]={value:$R[1186]={id:"onzpskjls7rjm6zwpf5oades",rgb:$R[1187]={r:245,g:237,b:253},css:"245, 237, 253"}},menuLabel:$R[1188]={value:$R[1189]={content:"\x3Cspan class=\"block\">Menu\x3C/span>"}}},uhkonhxg2jcray627kltt8dk:$R[1190]={video:$R[1191]={value:$R[1192]={mediaIds:$R[101]}},thumbnail:$R[1193]={value:$R[1194]={mediaIds:$R[120]}},fullWidth:$R[1195]={value:$R[1196]={}},aspectRatio:$R[1197]={value:$R[1198]={selected:""}},autoload:$R[1199]={value:$R[1200]={}},backgroundColor:$R[1201]={},id:$R[1202]={value:$R[1203]={content:""}},url:$R[1204]={value:$R[1205]={content:""}},highRes:$R[1206]={value:$R[1207]={}}},pynj0gs5qlwztg60j596bkgm:$R[1208]={titleFont:$R[1209]={value:$R[1210]={id:"39f8d54d-d067-4b7b-be84-16eb3d10dc2d",publicId:"dh5sftajtxwktaafqm751ahd"}},logo:$R[1211]={value:$R[1212]={mediaIds:$R[52]}},logoSvg:$R[1213]={value:$R[1214]={content:"\x3Csvg width=\"289\" height=\"64\" fill=\"currentColor\" version=\"1.1\" viewBox=\"0 0 76.465 16.933\" xmlns=\"http://www.w3.org/2000/svg\">\n \x3Cpath transform=\"matrix(1 0 -.16885 .98564 0 0)\" d=\"m2.6884 1.2562 2.3e-4 14.668h14.457l-2.3e-4 -14.668h-14.457zm0.54338 3.2212 4.6687 3.7691 0.016168-3.4147h2.1906l0.006014 7.8707-4.679-3.7691-0.0053158 3.4147h-2.1911l-0.0060149-7.8707zm7.6113 0.35442h2.7724c1.8663 0.021475 2.9626 0.93407 3.0918 2.5769 0.13285 1.6643-1.0398 2.5554-2.9518 2.5769h-0.62425l0.007185 2.3625h-2.2965l0.001118-7.5162zm2.2942 1.8686-0.005973 1.4062h0.49764c0.508 0 0.88965-0.24661 0.89636-0.70832 0.001564-0.4295-0.30666-0.6871-0.7953-0.69783h-0.59273z\" style=\"paint-order:stroke fill markers\"/>\n \x3Cg style=\"paint-order:stroke fill markers;stroke-width:4.2333\">\n \x3Cpath d=\"m26.609 4.4429-0.8636 5.0165-5.0292-5.4356-1.5875 9.3091h2.032l0.8763-5.0165 5.0165 5.4356 1.6002-9.3091z\"/>\n \x3Cpath d=\"m29.842 5.3065c0 0.6096 0.4953 1.0287 1.1176 1.0287s1.1176-0.4191 1.1176-1.0287-0.4953-1.0414-1.1176-1.0414-1.1176 0.4318-1.1176 1.0414zm-0.1905 2.1844-0.9906 5.842h1.8415l1.0033-5.842z\"/>\n \x3Cpath d=\"m32.211 7.4909-0.2794 1.5875h0.9906l-0.7239 4.2545h1.8161l0.7366-4.2545h1.0033l0.2794-1.5875h-1.0033l0.3429-2.032h-1.8288l-0.3429 2.032z\"/>\n \x3Cpath d=\"m39.877 9.4721 1.0541-1.6129c-0.2413-0.2921-0.5715-0.508-0.9906-0.508-0.5715 0-1.143 0.381-1.5621 0.9398l0.1397-0.8001h-1.8669l-1.0033 5.842h1.8542l0.5334-3.0353c0.1397-0.6223 0.5969-1.1684 1.1811-1.1557 0.2921 0.0127 0.4826 0.1524 0.6604 0.3302z\"/>\n \x3Cpath d=\"m40.672 10.412c-0.2286 1.7526 1.0287 3.048 2.8448 3.048 1.8542 0 3.429-1.2573 3.6703-3.048 0.2286-1.7526-1.0287-3.048-2.8448-3.048-1.8542 0-3.429 1.2573-3.6703 3.048zm1.9431 0c0.1143-0.8001 0.8001-1.4859 1.5875-1.4605 0.762 0.0127 1.1557 0.6985 1.0414 1.4605-0.1143 0.8001-0.8128 1.4732-1.5875 1.4605-0.762-0.0127-1.1557-0.6985-1.0414-1.4605z\"/>\n \x3Cpath d=\"m48.972 16.127 0.6477-3.8481c0.2667 0.7366 0.8255 1.2573 1.7653 1.2573 1.5748 0.0127 2.9464-1.3335 3.1877-3.1242 0.2159-1.7145-0.6604-3.1242-2.2352-3.1242-0.8636 0.0127-1.5494 0.4191-2.0447 1.0541l0.1397-0.8509h-1.8923l-1.4859 8.636zm3.6195-5.7277c-0.127 0.8128-0.8636 1.4605-1.6383 1.4351-0.7112-0.0254-1.1176-0.635-1.016-1.4097 0.127-0.8255 0.8763-1.4478 1.5875-1.4351 0.7747 0.0254 1.1938 0.635 1.0668 1.4097z\"/>\n \x3Cpath d=\"m55.19 10.412c-0.2159 1.6764 0.6985 3.048 2.2479 3.0353 0.8255 0 1.5367-0.381 2.0574-0.9906l-0.1524 0.8763h1.8669l1.016-5.842h-1.8923l-0.1778 1.0668c-0.3048-0.7112-0.889-1.1938-1.7907-1.1938-1.5621 0-2.9464 1.3081-3.175 3.048zm1.9685 0c0.1397-0.8128 0.8636-1.524 1.6637-1.4986 0.7112 0.0254 1.1049 0.7239 0.9906 1.4986-0.127 0.8255-0.8636 1.5113-1.6002 1.4986-0.7747-0.0127-1.1684-0.7239-1.0541-1.4986z\"/>\n \x3Cpath d=\"m62.182 13.752c-0.0127 1.5875 0.9271 2.6162 2.8575 2.6162 1.8796-0.0127 3.2766-1.143 3.5941-3.1623l0.9779-5.715h-1.8288l-0.1778 0.9906c-0.3048-0.6731-0.9017-1.1176-1.778-1.1176-1.5494 0-2.9337 1.2192-3.1623 2.9591-0.2159 1.6891 0.7239 2.9845 2.2606 2.9718 0.8001 0 1.4986-0.3429 2.0066-0.9017l-0.1397 0.8128c-0.1397 0.9398-0.8509 1.6256-1.7272 1.6129-0.7112 0-1.0541-0.3937-1.0668-1.0541zm2.4511-3.4163c0.127-0.8001 0.8255-1.4351 1.651-1.4224 0.6731 0.0127 1.0795 0.5715 1.0287 1.3081l-0.0508 0.2794c-0.2032 0.7366-0.889 1.27-1.5621 1.2446-0.762-0.0127-1.1811-0.6223-1.0668-1.4097z\"/>\n \x3Cpath d=\"m72.997 13.46c1.4859 0 2.5654-0.6096 3.1877-1.7272l-1.6637-0.4191c-0.3175 0.4699-0.8001 0.762-1.4351 0.762-0.7366 0-1.143-0.4953-1.1303-1.2573h4.3688c0.0889-0.2413 0.1397-0.5842 0.1397-0.8636 0-1.6129-0.9525-2.5908-2.7178-2.5908-2.1717 0-3.683 1.4986-3.683 3.429 0 1.6637 1.1557 2.667 2.9337 2.667zm0.5715-4.8133c0.6477 0 0.9398 0.4064 0.9652 1.1049h-2.3749c0.254-0.6985 0.7112-1.1049 1.4097-1.1049z\"/>\n \x3C/g>\n\x3C/svg>"}},title:$R[1215]={value:$R[1216]={content:"\x3Cspan class=\"block\">Nitropage\x3C/span>"}},links:$R[1217]={value:$R[1218]={byId:$R[1219]={i744284358:$R[1220]={url:$R[1221]={content:"/docs"},text:$R[1222]={content:"\x3Cspan class=\"block\">Docs\x3C/span>"}},i905987100:$R[1223]={url:$R[1224]={content:"https://codeberg.org/nitropage/nitropage"},text:$R[1225]={content:"\x3Cspan class=\"block\">Source Code\x3C/span>"}},j992pjr5jjqj7g11c6dibr1x:$R[1226]={url:$R[1227]={content:"/guide"},text:$R[1228]={content:"\x3Cspan class=\"block\">User Guide\x3C/span>"}},heqm8da10e2meb4qgrh7aukk:$R[1229]={url:$R[1230]={content:"/"},text:$R[1231]={content:"\x3Cspan class=\"block\">Home\x3C/span>"}},mvt6t49fezs65qcodgq1w20x:$R[1232]={url:$R[1233]={content:"/blog"},text:$R[1234]={content:"\x3Cspan class=\"block\">Blog\x3C/span>"}}},ids:$R[60]},override:!0},position:$R[1235]={value:$R[1236]={selected:"fixed"}},titleColor:$R[1237]={value:$R[1238]={id:"zp9mbzrpl4ht1weur8ik8g0g",rgb:$R[1239]={r:88,g:28,b:135}}},titleColorSticky:$R[1240]={value:$R[1241]={id:"zp9mbzrpl4ht1weur8ik8g0g",rgb:$R[1242]={r:88,g:28,b:135},css:"88, 28, 135"}},linkColor:$R[1243]={value:$R[1244]={id:"un9vmcvyjwobci6rf8q5chj1",rgb:$R[1245]={r:207,g:155,b:248},css:"59, 7, 100"}},linkColorHover:$R[1246]={value:$R[1247]={id:"jn3m6ro6udqzqrewlud7xlp7",rgb:$R[1248]={r:192,g:38,b:211},css:"192, 38, 211"},override:!1},linkColorSticky:$R[1249]={value:$R[1250]={id:"un9vmcvyjwobci6rf8q5chj1",rgb:$R[1251]={r:59,g:7,b:100},css:"59, 7, 100"}},backgroundColor:$R[1252]={value:$R[1253]={css:"241, 245, 249",rgb:$R[1254]={r:241,g:245,b:249},id:"gh1t2zjavop2qz6m03z58o0e",alpha:0.3}},backgroundColorSticky:$R[1255]={value:$R[1256]={id:"gh1t2zjavop2qz6m03z58o0e",rgb:$R[1257]={r:241,g:245,b:249},css:"241, 245, 249",alpha:0.9},override:!1},overlayColor:$R[1258]={value:$R[1259]={id:"mvux7tpjvthvdiqwkr0wqtkx",rgb:$R[1260]={r:102,g:32,b:156},css:"102, 32, 156"}},overlayLinkColor:$R[1261]={value:$R[1262]={css:"255, 255, 255",rgb:$R[1263]={r:255,g:255,b:255}}},glassyOverlay:$R[1264]={value:$R[1265]={content:!0}},id:$R[1266]={value:$R[1267]={content:""}},backgroundOpacity:$R[1268]={value:$R[1269]={content:0.7}},fullWidth:$R[1270]={value:$R[1271]={}}},usedfsqfwa4g4aedh2wjkqkp:$R[1272]={backgroundColor:$R[1273]={},backgroundImage:$R[1274]={value:$R[1275]={mediaIds:$R[113]}},backgroundImagePreload:$R[1276]={value:$R[1277]={}},backgroundImageOpacity:$R[1278]={value:$R[1279]={content:100}},backgroundImageRatio:$R[1280]={value:$R[1281]={selected:""}},backgroundImageRepeat:$R[1282]={value:$R[1283]={}},repeatSize:$R[1284]={value:$R[1285]={}},overlayColor:$R[1286]={},overlayBlendMode:$R[1287]={value:$R[1288]={selected:""}},zIndex:$R[1289]={value:$R[1290]={content:0}},shadow:$R[1291]={value:$R[1292]={selected:""}},topMask:$R[1293]={value:$R[1294]={selected:""}},bottomMask:$R[1295]={value:$R[1296]={selected:""}},id:$R[1297]={value:$R[1298]={content:""}}},vt5a4mjfbbbzn5d6y08pho35:$R[1299]={groups:$R[1300]={value:$R[1301]={byId:$R[1302]={i835636530:$R[1303]={title:$R[1304]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"},image:$R[1305]={mediaIds:$R[1306]=[]},features:$R[1307]={byId:$R[1308]={i530379018:$R[1309]={title:$R[1310]={content:"\x3Cspan class=\"block\">A feature\x3C/span>"},description:$R[1311]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"},iconSvg:$R[1312]={content:""}},i570512112:$R[1313]={title:$R[1314]={content:"\x3Cspan class=\"block\">A feature\x3C/span>"},description:$R[1315]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"},iconSvg:$R[1316]={content:""}},i232724630:$R[1317]={title:$R[1318]={content:"\x3Cspan class=\"block\">A feature\x3C/span>"},description:$R[1319]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"},iconSvg:$R[1320]={content:""}},i259794364:$R[1321]={title:$R[1322]={content:"\x3Cspan class=\"block\">A feature\x3C/span>"},description:$R[1323]={content:"\x3Cspan class=\"block\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\x3C/span>"},iconSvg:$R[1324]={content:""}}},ids:$R[1325]=["i530379018","i570512112","i232724630","i259794364"]}}},ids:$R[1326]=["i835636530"]}},imageMask:$R[1327]={value:$R[1328]={content:!1}},textColor:$R[1329]={value:$R[1330]={id:"fxqipfiik4zybcosq58wul9n",invert:!0,rgb:$R[1331]={r:255,g:255,b:255},css:"255, 255, 255"}},iconColor:$R[1332]={value:$R[1333]={id:"jn3m6ro6udqzqrewlud7xlp7",rgb:$R[1334]={r:192,g:38,b:211},css:"192, 38, 211"}},iconBackgroundColor:$R[1335]={value:$R[1336]={id:"jd3kc90m57yadhkww288u2k4",rgb:$R[1337]={r:237,g:233,b:254},css:"237, 233, 254"}},buttonTextColor:$R[1338]={},buttonTextColorHover:$R[1339]={},buttonBgColor:$R[1340]={value:$R[1341]={id:"raze83pe71ebyjexfxgpu88m",rgb:$R[1342]={r:81,g:71,b:118},css:"81, 71, 118"}},buttonBgColorHover:$R[1343]={value:$R[1344]={css:"59, 43, 90",rgb:$R[1345]={r:59,g:43,b:90},id:"q59ctc4dvotxrx4ogcf2568o"}},id:$R[1346]={value:$R[1347]={content:""}}},ktfqyfx6i7gru55hgndh0d9h:$R[1348]={itemsSpacing:$R[1349]={value:$R[1350]={selected:""}},headerSpacing:$R[1351]={value:$R[1352]={selected:""}},id:$R[1353]={value:$R[1354]={content:""}}},ezmzzfo6uu2aeuqgbmez4pfi:$R[1355]={image:$R[1356]={value:$R[1357]={mediaIds:$R[1358]=[]}},description:$R[1359]={value:$R[1360]={content:"\x3Cspan class=\"block\">Image Description\x3C/span>"}},textColor:$R[1361]={value:$R[1362]={id:"ixj151bbn767lww99yf2sqaa",rgb:$R[1363]={r:226,g:214,b:235},css:"226, 214, 235",invert:!0,alpha:0.7}},placeholder:$R[1364]={value:$R[1365]={content:!0}},fullWidth:$R[1366]={value:$R[1367]={}},aspectRatio:$R[1368]={value:$R[1369]={selected:""}},id:$R[1370]={value:$R[1371]={content:""}},highRes:$R[1372]={value:$R[1373]={}}},hxm8dhyn56up2pn9k2g31nng:$R[1374]={link:$R[1375]={value:$R[1376]={content:""}},description:$R[1377]={value:$R[1378]={content:"\x3Cspan class=\"block\">Lorem Ipsum\x3C/span>"}},textColor:$R[1379]={},linkColor:$R[1380]={},id:$R[1381]={value:$R[1382]={content:""}}},none:$R[1383]={},zcvngz3018ov60rtf8kdgqgs:$R[1384]={content:$R[1385]={value:$R[1386]={content:""}},fullWidth:$R[1387]={value:$R[1388]={}},headingFont:$R[1389]={value:$R[1390]={id:"39f8d54d-d067-4b7b-be84-16eb3d10dc2d",publicId:"dh5sftajtxwktaafqm751ahd"}},textColor:$R[1391]={value:$R[1392]={id:"fxqipfiik4zybcosq58wul9n",invert:!0,rgb:$R[1393]={r:255,g:255,b:255},css:"255, 255, 255"}},headingColor:$R[1394]={value:$R[1395]={id:"zp9mbzrpl4ht1weur8ik8g0g",rgb:$R[1396]={r:88,g:28,b:135},css:"88, 28, 135"}},highlightColor:$R[1397]={value:$R[1398]={id:"jn3m6ro6udqzqrewlud7xlp7",rgb:$R[1399]={r:219,g:59,b:247},css:"219, 59, 247"}},borderColor:$R[1400]={value:$R[1401]={id:"ixj151bbn767lww99yf2sqaa",rgb:$R[1402]={r:226,g:214,b:235},css:"226, 214, 235"}},id:$R[1403]={value:$R[1404]={content:""}}},f6awh67sfhor4ghxubxid8t5:$R[1405]={iframeHtml:$R[1406]={value:$R[1407]={content:""}},fullWidth:$R[1408]={value:$R[1409]={}},backgroundColor:$R[1410]={},accessibilityTitle:$R[1411]={value:$R[1412]={content:""}},id:$R[1413]={value:$R[1414]={content:""}}},ba0jpedvc304eoz55l5mkgpu:$R[1415]={align:$R[1416]={value:$R[1417]={selected:""}},id:$R[1418]={value:$R[1419]={content:""}}}}},backgroundColor:$R[1420]={id:"fxqipfiik4zybcosq58wul9n",rgb:$R[1421]={r:0,g:0,b:0}},metaImage:"f451880d-06e1-481f-903a-842a8d43f260",favicon:"a381a0b5-9813-44ce-a2c6-88062f9ed1a4"},blueprintFiles:$R[1422]={g5t3jgu1v9xwhb69c4wm52r5:"../blueprints/blog/postIntro.np.tsx",fh2n2ya9tstf76uhh1l1iqtg:"../blueprints/blog/postTeaser.np.tsx",may03wu7iylv7y3v62hyz9gc:"../blueprints/blog/postTeaserSmall.np.tsx",m2vqbubuu61s8cu8l9z3cllu:"../blueprints/button.np.tsx",ussx0679sbtu0kqcez8wyu70:"../blueprints/code/code.np.tsx",mk8emfe02k3ebqqwpf6dmsfg:"../blueprints/contactGrid.np.tsx",n0u4th54fk63w7er8w22uyje:"../blueprints/documentation.np.tsx",fil2tlugy1pltj9006rv354c:"../blueprints/faq/faq.np.tsx",vt5a4mjfbbbzn5d6y08pho35:"../blueprints/featureGrid/featureGrid.np.tsx",why0uuxbciqwiujfv6w96o5z:"../blueprints/fiftyfifty.np.tsx",zuvec1ijvwpdq9pu19jpqylg:"../blueprints/logoGrid.np.tsx",osq784w5pxym8kh1q9rsj1m4:"../blueprints/media/audio.np.tsx",ezmzzfo6uu2aeuqgbmez4pfi:"../blueprints/media/image.np.tsx",uhkonhxg2jcray627kltt8dk:"../blueprints/media/video.np.tsx",f6awh67sfhor4ghxubxid8t5:"../blueprints/media/videoEmbed.np.tsx",b0ailno63q17afjl6wr83xz1:"../blueprints/page/footer.np.tsx",fmj4rug8jkbfy4lqe28n48wb:"../blueprints/page/footerNewsletterForm.np.tsx",pynj0gs5qlwztg60j596bkgm:"../blueprints/page/header.np.tsx",ae8f3r696oky0tpbdlu1accp:"../blueprints/page/intro.np.tsx",hfhknwqzq0f2o9qzrf2taxaj:"../blueprints/page/notFound.np.tsx",usedfsqfwa4g4aedh2wjkqkp:"../blueprints/page/section.np.tsx",zk7vp8rahquyz034aec4h2on:"../blueprints/prose/heading.np.tsx",zcvngz3018ov60rtf8kdgqgs:"../blueprints/prose/markdown.np.tsx",czbfkfg4rdgw5gf2543dv9r3:"../blueprints/prose/text.np.tsx",hxm8dhyn56up2pn9k2g31nng:"../blueprints/qrLink.np.tsx",w6dnxkdsgi6xakmog46728lx:"../blueprints/roadmap.np.tsx",f9zu52lepi4wlteaz0k8w79n:"../blueprints/table.np.tsx",ow7706ppsblfx9iyd3mbfd16:"../blueprints/tag.np.tsx",g05w6l6tg4qpkaqrir8dnwrj:"../blueprints/utilities/card.np.tsx",hfd1h2d6cg67y3c4xvuyowow:"../blueprints/utilities/columns.np.tsx",oyf5ut4svjmudc6kl6hhm69h:"../blueprints/utilities/container.np.tsx",cd3pv0e6xywtebw50ph4mc1s:"../blueprints/utilities/flex.np.tsx",ba0jpedvc304eoz55l5mkgpu:"../blueprints/utilities/narrow.np.tsx",ybys9hh5umjkoi2kfkiidglr:"../blueprints/utilities/separator.np.tsx",vigkf7auegf887geschdgb7w:"../blueprints/utilities/style.np.tsx"}});_$HY.r["0000000010000000010100000000"]=$R[8];_$HY.r["00000000100000000101000000010000"]=!0;_$HY.r["np-publicMedia[{\"ids\":[\"f451880d-06e1-481f-903a-842a8d43f260\"]}]"]=$R[1423]=$R[1]();_$HY.r["np-publicMedia[{\"ids\":[\"a381a0b5-9813-44ce-a2c6-88062f9ed1a4\"]}]"]=$R[1424]=$R[1]();_$HY.r["00000000100000000101000000010001000010010"]=$R[1425]=$R[1]();_$HY.r["000000001000000001010000000100010000100210"]=$R[1426]=$R[1]();_$HY.r["00000000100000000101000000010001000010030"]=$R[1427]=$R[1]();$R[7]($R[3],!0);_$HY.r["00000000100000000101000000010001000010030001001000000"]=$R[1428]=[];_$HY.r["00000000100000000101000000010001000010030001001100000"]=$R[1429]=[];_$HY.r["00000000100000000101000000010001000010030001001200000"]=$R[1430]=[];_$HY.r["00000000100000000101000000010001000010030001001300000"]=$R[1431]=[];_$HY.r["00000000100000000101000000010001000010021000"]=$R[4];_$HY.r["np-publicMedia[{\"ids\":[\"add3113b-6bc6-45b0-b483-b64cb872e4bf\"],\"includeDataUrl\":true}]"]=$R[1432]=$R[1]();_$HY.r["np-publicMedia[{\"ids\":[\"9f44a07b-f05b-49d8-a1ea-ce0a787d0600\"]}]"]=$R[1433]=$R[1]();_$HY.r["np-publicMedia[{\"ids\":[\"c6120643-01bc-4a3c-aa53-3e4a28439870\"]}]"]=$R[1434]=$R[1]();_$HY.r["np-publicMedia[{\"ids\":[\"72d7a21e-9a44-42b1-920c-62dd52750230\"]}]"]=$R[1435]=$R[1]();$R[7]($R[1426],!0);_$HY.r["000000001000000001010000000100010000100300010012000040010000002001000000"]=$R[1436]=[];_$HY.r["000000001000000001010000000100010000100300010012000040010000002001100001001100001"]=$R[1437]=[];$R[7]($R[1423],$R[1438]=[$R[1439]={id:"f451880d-06e1-481f-903a-842a8d43f260",updatedAt:$R[1440]=new Date("2024-08-05T13:11:33.525Z"),publicId:"l13n3yttfenncokml7y2rey7",driver:"local",file:"l13n3yttfenncokml7y2rey7.png",mime:"image/png",width:1920,height:1920,blurhash:"U3C44q-HIpwA$qj]ayf89YRj%3t7#_a#j[oM",focalPointX:null,focalPointY:null,color:"104, 8, 200",description:null,timestamp:1722863493,url:"/image/l13n3yttfenncokml7y2rey7.webp?ts=1722863493",rawUrl:"/uploads/media/l13n3yttfenncokml7y2rey7.png?ts=1722863493"}]);_$HY.r["0000000010000000010100000001000100001001000"]=$R[1438];$R[7]($R[1424],$R[1441]=[$R[1442]={id:"a381a0b5-9813-44ce-a2c6-88062f9ed1a4",updatedAt:$R[1443]=new Date("2023-12-14T20:57:59.715Z"),publicId:"ny728hqw1l0m4vepxyylc99y",driver:null,file:"ny728hqw1l0m4vepxyylc99y.png",mime:"image/png",width:256,height:256,blurhash:"U9I4-y-q00~q_3D%ofj[00IB_2IB01_3M{t7",focalPointX:null,focalPointY:null,color:"88, 24, 136",description:null,timestamp:1702587479,url:"/image/ny728hqw1l0m4vepxyylc99y.webp?ts=1702587479",rawUrl:"/uploads/media/ny728hqw1l0m4vepxyylc99y.png?ts=1702587479"}]);_$HY.r["0000000010000000010100000001000100001001001"]=$R[1441];$R[7]($R[1425],!0);$R[7]($R[1432],$R[1444]=[$R[1445]={id:"add3113b-6bc6-45b0-b483-b64cb872e4bf",updatedAt:$R[1446]=new Date("2023-12-14T21:03:46.558Z"),publicId:"rg53yloqtwdfmnk3dkwq03qm",driver:null,dataUrl:"data:image/jpeg;base64,/9j/2wBDACAWGBwYFCAcGhwkIiAmMFA0MCwsMGJGSjpQdGZ6eHJmcG6AkLicgIiuim5woNqirr7EztDOfJri8uDI8LjKzsb/2wBDASIkJDAqMF40NF7GhHCExsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsb/wAARCAAFAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAEF/8QAFxABAQEBAAAAAAAAAAAAAAAAAAECEv/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDdu7Np3QB//9k=",file:"rg53yloqtwdfmnk3dkwq03qm.png",mime:"image/png",width:1920,height:1024,blurhash:"CISPR+%N%e?b~qazj[t6",focalPointX:null,focalPointY:null,color:"248, 248, 248",description:null,timestamp:1702587826,url:"/image/rg53yloqtwdfmnk3dkwq03qm.webp?ts=1702587826",rawUrl:"/uploads/media/rg53yloqtwdfmnk3dkwq03qm.png?ts=1702587826"}]);_$HY.r["000000001000000001010000000100010000100300010012000040010000002001000001"]=$R[1444];$R[7]($R[1433],$R[1447]=[$R[1448]={id:"9f44a07b-f05b-49d8-a1ea-ce0a787d0600",updatedAt:$R[1449]=new Date("2024-08-05T14:15:34.073Z"),publicId:"pdb8asq2viwu77l337d7qawh",driver:"local",file:"pdb8asq2viwu77l337d7qawh.mp4",mime:"video/mp4",width:null,height:null,blurhash:null,focalPointX:null,focalPointY:null,color:null,description:null,timestamp:1722867334,url:"/uploads/media/pdb8asq2viwu77l337d7qawh.mp4?ts=1722867334",rawUrl:"/uploads/media/pdb8asq2viwu77l337d7qawh.mp4?ts=1722867334"}]);_$HY.r["000000001000000001010000000100010000100300010012000040010000002001100001001100000"]=$R[1447];$R[7]($R[1434],$R[1450]=[$R[1451]={id:"c6120643-01bc-4a3c-aa53-3e4a28439870",updatedAt:$R[1452]=new Date("2024-08-04T11:41:08.109Z"),publicId:"dszarzcjh9ilnuq5u6m9y2vv",driver:null,file:"dszarzcjh9ilnuq5u6m9y2vv.png",mime:"image/png",width:3840,height:2880,blurhash:"LRIXIV4aR|_2~qoga$RjJJ%cV_IC",focalPointX:34,focalPointY:46,color:"8, 8, 8",description:"",timestamp:1722771668,url:"/image/dszarzcjh9ilnuq5u6m9y2vv.webp?ts=1722771668",rawUrl:"/uploads/media/dszarzcjh9ilnuq5u6m9y2vv.png?ts=1722771668"}]);_$HY.r["000000001000000001010000000100010000100300010013000040010000002001100000"]=$R[1450];$R[7]($R[1435],$R[1453]=[$R[1454]={id:"72d7a21e-9a44-42b1-920c-62dd52750230",updatedAt:$R[1455]=new Date("2024-08-19T10:48:17.211Z"),publicId:"h7ynh730pys1ze97epz3x5yy",driver:null,file:"h7ynh730pys1ze97epz3x5yy.jpg",mime:"image/jpeg",width:960,height:1280,blurhash:"dED]#NM|Ns~p0J9GRjD%_Ms=?HxtNFM{M{WB.8M|RQxu",focalPointX:50,focalPointY:31,color:"248, 248, 248",description:"",timestamp:1724064497,url:"/image/h7ynh730pys1ze97epz3x5yy.webp?ts=1724064497",rawUrl:"/uploads/media/h7ynh730pys1ze97epz3x5yy.jpg?ts=1724064497"}]);_$HY.r["np-publicMedia[{\"ids\":[\"9214f606-ec1f-42b4-ad55-d57a3475cb7c\"],\"includeDataUrl\":true}]"]=$R[1456]=$R[1]();_$HY.r["000000001000000001010000000100010000100300010013000040010000002001100001"]=$R[1453];_$HY.r["000000001000000001010000000100010000100300010012000040010000002001100001001000000"]="\x3Cp>Sorry about that, you can read about the reasons why I skipped making a trailer this time, in the \x3Ca href=\"#funding\">Funding\x3C/a>-Section.\x3C/p>\n\x3Cp>Five months ago, after the official \x3Ca href=\"/blog/announcing-nitropage\">announcement\x3C/a> blog post, I planned to work on several Nitropage-based websites and get a realistic feeling of the strengths and weaknesses of the editor in different production setups, while waiting for the ongoing development of \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://start.solidjs.com/\">SolidStart\x3C/a> - the underlying system.\x3C/p>\n\x3Cp>To my surprise SolidStart \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.solidjs.com/blog/solid-start-the-shape-frameworks-to-come\">released\x3C/a> its major version already, just two months after my announcement. From that moment on I knew that I had to get back to work on Nitropage and upgrade all internal systems from SolidStart v0.3.10 to v1.0. What I am presenting to you today is the culmination of all the changes that happened since that point.\x3C/p>\n\x3Cp>This is more than just an upgrade of pretty much all internal systems, this includes new essential features for users and developers alike and marks a very important step towards v1.0 of Nitropage. Meanwhile the starter kit has grown to a whooping \x3Cstrong>36\x3C/strong> built-in blueprints!\x3C/p>\n\x3Cp>To give you a list of the most noteworthy hightlights:\x3C/p>\n\x3Cul>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#new-toolbar--responsive-tools\">New toolbar & responsive tools\x3C/a>\x3C/strong>: Doesn't get in your way and lets you zoom the page preview.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#reworked-element-selection-ui\">Reworked element selection UI\x3C/a>\x3C/strong>: View the name of the hovered element in all situations.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#focal-point-image-cropping\">Focal point image cropping\x3C/a>\x3C/strong>: Keep the important parts when cropping an image. \x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#image-settings\">Image settings\x3C/a>\x3C/strong>: Customize "alt"-descriptions and fallback colors of your images.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#youtube-and-vimeo-support\">Youtube and Vimeo support\x3C/a>\x3C/strong>: Share Youtube and Vimeo videos without a hassle.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#new-markdown-blueprint\">New 'Markdown' blueprint\x3C/a>\x3C/strong>: Wanna write your site content with Markdown? Well now you can.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#new-embedded-video-blueprint\">New 'Embedded Video' blueprint\x3C/a>\x3C/strong>: Embed videos from \x3Cem>PeerTube\x3C/em>, \x3Cem>Odysee\x3C/em>, \x3Cem>Rumble\x3C/em> and others, via their iframe codes.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#new-narrow-blueprint\">New 'Narrow' blueprint\x3C/a>\x3C/strong>: Narrow layouts without the fuzz.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#solidstart-v10-nitro-and-vinxi\">SolidStart v1.0, Nitro and Vinxi\x3C/a>\x3C/strong>: Enjoy all new features of the upgraded SolidStart framework.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#global-server-configuration\">Global server configuration\x3C/a>\x3C/strong>: One place to configure all internal services.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#reworked-image-optimization-api\">Reworked image optimization API\x3C/a>\x3C/strong>: Fewer lines of code for the same result.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#s3-file-storage\">S3 file storage\x3C/a>\x3C/strong>: Upload and show media from S3 buckets.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#blueprint-css-without-foucs\">Blueprint CSS without FOUCs\x3C/a>\x3C/strong>: No more FOUCs when you import CSS files in your blueprints.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#global-page-css\">Global page CSS\x3C/a>\x3C/strong>: Globally style your pages without breaking the Nitropage Dashboard.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#built-in-prose-styles\">Built-in prose styles\x3C/a>\x3C/strong>: Consistent typography for richtext and markdown content.\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#reworked-link-traps\">Reworked link traps\x3C/a>\x3C/strong>: Preview links and buttons glitch-free .\x3C/li>\n\x3Cli>\x3Cstrong>\x3Ca href=\"#smaller-html-document-size\">Smaller HTML document size\x3C/a>\x3C/strong>: Passive blueprints no longer affected by the double data problem.\x3C/li>\n\x3C/ul>\n\x3Cp>Nitropage v0.59 isn't released yet, but you can already try it out with the following command, which will guide you through the whole setup of a new project:\x3C/p>\n\x3Cpre>\x3Ccode>pnpm create nitropage@latest\n\x3C/code>\x3C/pre>\n\x3Ch2 id=\"feedback--release-date\">Feedback & Release date\x3C/h2>\n\x3Cp>The new version hasn't been released yet, giving you the opportunity to try it out first. If you compare it to the currently shipped v0.58.1, you will find that almost no stone has left unturned. For active users of the old version this also means that they have to manually migrate their projects and turn some stones by hand, but don't worry: this site already runs the new version and the migration took me only about 15 minutes.\x3C/p>\n\x3Cp>You can send me feedback over the \x3Cstrong>#nitropage\x3C/strong> Discord channel on the \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://discord.com/invite/solidjs\">Solid\x3C/a> server or via my other contact options outlined \x3Ca href=\"/#contact\">here\x3C/a>. Depending on the amount and significance of your feedbacks, v0.59 will be released in about two weeks, together with a short migration guide.\x3C/p>\n\x3Ch2 id=\"funding\">Funding\x3C/h2>\n\x3Cp>The funding situation doesn't look as bright as the new version. Making open source software of this size sustainable feels like a fight against the whole humanity some days. If you are a developer you probably already know what I am talking about. The truth is that I invested most of my own money to bring this project to life, because I believe that having a free, fully-featured and open source website builder would help humanity tremendously. But so far I didn't truly succeed in sharing this idea with other people. Most people haven't really heard of Nitropage to begin with and those who did are still waiting for others to use it first, nobody likes taking the initial risk. It's a vicious cycle that probably only would end with a miracle or with questionable marketing tactics such as fake likes and followers. As a single human with a relentless illness (\x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://en.wikipedia.org/wiki/Phantosmia\">Phantosmia\x3C/a>) I can only do so much to keep this project alive and I absolutely need you. If you like the philosophy behind this project and you have an interest to keep it alive, then I plead you to:\x3C/p>\n\x3Cul>\n\x3Cli>\x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://codeberg.org/nitropage/nitropage/stars\">Like it\x3C/a> - Honestly, the current like count of 11 is insulting for a project with \x3Cstrong>over \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://codeberg.org/nitropage/nitropage/commits/branch/next\">1000\x3C/a> commits\x3C/strong>.\x3Cbr>1 of these likes is from my mom. Be better than my mom.\x3C/li>\n\x3Cli>Subscribe to the \x3Ca href=\"#newsletter\">newsletter\x3C/a> - You won't receive endless spam mails from this, promised!\x3C/li>\n\x3Cli>Share the project on social media and talk about it with your friends.\x3C/li>\n\x3Cli>Try it out and share your experience.\x3C/li>\n\x3Cli>Share your NP-based websites on \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://discord.com/invite/solidjs\">#nitropage\x3C/a> so that we can create an amazing showcase and blow newcomers away.\x3C/li>\n\x3Cli>Contribute new blueprints for the starter kit.\x3C/li>\n\x3Cli>\x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://lufrai.org/donate\">Donate\x3C/a> - This software might be free, but I actually still need to pay my rent and eat food some days.\x3C/li>\n\x3Cli>Become a sponsor.\x3C/li>\n\x3C/ul>\n\x3Cp>I am wholeheartedly committed to this project, but I cannot continue working on it in a meaningful pace, if it stays broadly unknown in the following months. So I plead you: \x3Cstrong>Let's make the miracle become a reality!\x3C/strong>\x3C/p>\n\x3Ch2 id=\"joining-the-solidstart-team\">Joining the SolidStart team\x3C/h2>\n\x3Cp>It's already some weeks ago since this happened, but I am very proud to officially announce that I got to be part of the awesome SolidStart contributors team! This voluntary engagement allows me to discuss and support the development of SolidStart and Vinxi in a more effective, direct way and to share the experience that I am getting as a major user of the framework.\x3C/p>\n\x3Ch2 id=\"additions-for-users\">Additions for users\x3C/h2>\n\x3Cp>With the administrative topics out of the way, let's now take a deeper look at the new features and changes of Nitropage v0.59. Even though the main focus of this version was the internal migration to \x3Ca href=\"#solidstart-v10-nitro-and-vinxi\">SolidStart v1\x3C/a>, I just couldn't stop myself from also improving some user-facing parts.\x3C/p>\n\x3Ch3 id=\"new-toolbar--responsive-tools\">New toolbar & responsive tools\x3C/h3>\n\x3Cp>The toolbar of the page editor got an overhauled look and is now positioned at the top. Gone are the days where the toolbar covers elements on the page. This new position also made space for a new \x3Cstrong>page zoom\x3C/strong> option. Last but not least the resize handle for the page preview now covers the whole page height, which is powered by corvus fantastic \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://corvu.dev/docs/primitives/resizable/\">Resizable\x3C/a> primitive, made by \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/GiyoMoon/\">Jasmin\x3C/a>.\x3C/p>\n\x3Cp>All of this allows you to work on your pages more efficiently and to simulate various viewing devices, even on small monitors.\x3C/p>\n\x3Cp>P.S. the toolbar buttons now show the respective tool name, which should help new users a bit. Let me know what you think about this. Depending on future additions, the names might have to be removed again, to make space for other fancy tools.\x3C/p>\n";_$HY.r["000000001000000001010000000100010000100300010012000040010000002001100001001200000"]="\x3Ch3 id=\"reworked-element-selection-ui\">Reworked element selection UI\x3C/h3>\n\x3Cp>Previously you could not see the blueprint name, when hovering over elements barely in the view, because the name was sticked to the top-border of the elements. With the new version this is no longer the case. You can now always see the name as it stays in the view, no matter the position of the scrollbar.\x3C/p>\n\x3Ch3 id=\"focal-point-image-cropping\">Focal point image cropping\x3C/h3>\n\x3Cp>With the complete redesign of the \x3Ca href=\"#reworked-image-optimization-api\">image optimization API\x3C/a> I also wanted to improve the actual results that you get from it. Whats not a better way, than to finally get rid of the unprecise gravity setting and tackle proper focal point cropping? \x3C/p>\n\x3Cp>Yes! With the new version you can set a specific focal point for each image and the automatic image cropping will make sure that the point stays visible, on all screen sizes!\x3C/p>\n\x3Ch3 id=\"image-settings\">Image settings\x3C/h3>\n\x3Cp>The focal point cropping feature asked for a place to configure image related settings. This place is a new dialog, opened via the Media Library. It also finally allows you to customize the \x3Cstrong>Color\x3C/strong> and \x3Cstrong>Description\x3C/strong> of your images.\x3C/p>\n";_$HY.r["000000001000000001010000000100010000100300010012000040010000002001100001001400000"]="\x3Ch3 id=\"youtube-and-vimeo-support\">Youtube and Vimeo support\x3C/h3>\n\x3Cp>Internally the '\x3Cstrong>Video\x3C/strong>' Blueprint already supported Youtube and Vimeo videos for a while, but this feature was hidden from users. That's changing with the new \x3Cstrong>URL\x3C/strong> field. You can see it in action on the \x3Ca href=\"#trailer\">trailer\x3C/a> at the top of this announcement, which is hosted on Youtube - for some self-explaining reason...\x3C/p>\n\x3Ch3 id=\"new-markdown-blueprint\">New '\x3Cstrong>Markdown\x3C/strong>' blueprint\x3C/h3>\n\x3Cp>Powered by \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://marked.js.org/\">Marked\x3C/a>, this useful new blueprint allows you not only to publish your beloved \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://daringfireball.net/projects/markdown/\">Markdown\x3C/a> content, it can also be used to just embed some quick \x3Cstrong>HTML\x3C/strong> on your site. The article you are reading at this very moment, has been written in Markdown :).\x3C/p>\n\x3Cp>Got bigger plans and wanna write a full manual in Markdown? This blueprint automatically assigns \x3Ccode>id\x3C/code> attributes for your headings, making it interoperable with the already existing '\x3Cstrong>Documentation\x3C/strong>' blueprint!\x3C/p>\n\x3Ch3 id=\"new-narrow-blueprint\">New 'Narrow' blueprint\x3C/h3>\n\x3Cp>It gives you access to a new narrow layout, as demonstrated by this article. Long form content is the perfect use case, as a narrow width can greatly improve readability. This replaces the \x3Cstrong>Full Width\x3C/strong> option, previously existing redundantly in several other blueprints. Wanna make those narrow again? Just put them in a '\x3Cstrong>Narrow\x3C/strong>'! Now you can make all your narrowest fantasies come true.\x3C/p>\n\x3Ch3 id=\"new-embedded-video-blueprint\">New '\x3Cstrong>Embedded Video\x3C/strong>' blueprint\x3C/h3>\n\x3Cp>The work on this new blueprint was sponsored by \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://digitaler-aktivist.de/\">Digitaler Aktivist\x3C/a>. Originally implemented to embed videos from their self-hosted \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://joinpeertube.org\">PeerTube\x3C/a> instance, this blueprint can also be used to embed video iframes from many other sources, including \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://odysee.com/\">Odysee\x3C/a> and \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://rumble.com/\">Rumble\x3C/a>. This brings Nitropage one step closer in becoming the first choice for freedom-loving activists on the web!\x3C/p>\n\x3Cp>Up for an example?\x3C/p>\n";_$HY.r["000000001000000001010000000100010000100300010012000040010000002001100001001600000"]="\x3Ch2 id=\"here-be-developers\">Here be developers\x3C/h2>\n\x3Ch3 id=\"solidstart-v10-nitro-and-vinxi\">SolidStart v1.0, Nitro and Vinxi\x3C/h3>\n\x3Cp>Up to this point Nitropage was running on SolidStart v0.3.1. However v0.4 completely redesigned essential APIs, making it nearly impossible to upgrade Nitropage in a sensible way. If you wanna learn what had changed, look no further than the \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/solidjs/solid-start/releases/tag/v0.4.0\">v0.4 announcement\x3C/a>. Luckily the later release of \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.solidjs.com/blog/solid-start-the-shape-frameworks-to-come\">SolidStart v1\x3C/a> signaled the stability of these new APIs and reassured that the time had come to bring Nitropage to new heights. \x3C/p>\n\x3Cp>The migration of Nitropage to SolidStart v1.0 in numbers:\x3C/p>\n\x3Ctable>\n\x3Cthead>\n\x3Ctr>\n\x3Cth align=\"right\">Amount\x3C/th>\n\x3Cth>Method\x3C/th>\n\x3Cth>Migrated to\x3C/th>\n\x3C/tr>\n\x3C/thead>\n\x3Ctbody>\x3Ctr>\n\x3Ctd align=\"right\">52\x3C/td>\n\x3Ctd>\x3Ccode>server$\x3C/code>\x3C/td>\n\x3Ctd>\x3Ccode>use server\x3C/code>\x3C/td>\n\x3C/tr>\n\x3Ctr>\n\x3Ctd align=\"right\">6\x3C/td>\n\x3Ctd>\x3Ccode>createResource\x3C/code>\x3C/td>\n\x3Ctd>\x3Ccode>createAsync\x3C/code>\x3C/td>\n\x3C/tr>\n\x3Ctr>\n\x3Ctd align=\"right\">15\x3C/td>\n\x3Ctd>\x3Ccode>createRouteData\x3C/code>\x3C/td>\n\x3Ctd>\x3Ccode>createAsync\x3C/code> & \x3Ccode>cache\x3C/code>\x3C/td>\n\x3C/tr>\n\x3Ctr>\n\x3Ctd align=\"right\">17\x3C/td>\n\x3Ctd>\x3Ccode>createRouteAction\x3C/code>\x3C/td>\n\x3Ctd>\x3Ccode>action\x3C/code>\x3C/td>\n\x3C/tr>\n\x3Ctr>\n\x3Ctd align=\"right\">4\x3C/td>\n\x3Ctd>\x3Ccode>createServerAction$\x3C/code>\x3C/td>\n\x3Ctd>\x3Ccode>action\x3C/code> & \x3Ccode>use server\x3C/code>\x3C/td>\n\x3C/tr>\n\x3C/tbody>\x3C/table>\n\x3Ch4 id=\"deployment-on-steroids\">Deployment on steroids\x3C/h4>\n\x3Cp>But you are probably here to learn what advantages this migration brought to you, let's start with the biggest one: Nitropage now is built and served via \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://nitro.unjs.io/\">Nitro\x3C/a> and \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://vinxi.vercel.app/\">Vinxi\x3C/a>, simplifying the deployment to hosting providers such as Netlify, Cloudflare and Vercel. We still need to figure out how simple this really is gonna be with Nitropage, but an important question with these providers is how and where to upload files. So I already proactively answered this question with the new \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"s3-file-storage\">S3 file storages\x3C/a>.\x3C/p>\n\x3Cp>Check out Nitros \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://nitro.unjs.io/deploy\">Deployment Guide\x3C/a> to learn more about the new possibilities.\x3C/p>\n\x3Cp>Now you might be wondering, what does \x3Cstrong>Nitro\x3C/strong> have to do with \x3Cstrong>Nitropage\x3C/strong>? Why the similar names? Is this a secret conspiracy? Is UnJS Nitro a product of Nitropage or vice-versa? To answer all of these questions from the get go:\x3C/p>\n\x3Cblockquote>\n\x3Cp>Nitropage and Nitro are completely independent projects, neither of us have heard about the others projects, when we decided on the names. I'm still wondering to this day, if this is just a stunning coincidence, or a divine providence.\x3C/p>\n\x3C/blockquote>\n\x3Ch4 id=\"page-speed-optimization\">Page speed optimization\x3C/h4>\n\x3Cp>\x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/solidjs/solid-router\">Solid Router\x3C/a> added the ability to preload data on link hover, resulting in a noticeable speed improvement for desktop users, not only when visiting pages, but also in the dashboard.\x3C/p>\n\x3Cp>The new version also leverages Solids \x3Cstrong>stream render\x3C/strong> and \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.solidjs.com/reference/components/suspense\">Suspense\x3C/a>. This is gonna be especially useful, when you wanna show data from slow external sources, just wrap your related blueprints in Suspense boundaries and fallback to some fancy loading spinners.\x3C/p>\n\x3Cp>Last but not least, blueprints are now loaded in a more optimal way: Nitropage keeps a list of already loaded blueprints and only loads the missing ones, when navigating between pages.\x3C/p>\n\x3Ch4 id=\"starter-kit\">Starter Kit\x3C/h4>\n\x3Cp>The migration asked for a complete revamp of the starter kit. A lot of files have changed in small ways. Upgrading your own projects to the new format is still relatively simple if you follow some key steps, that I will document in an upcoming migration guide.\x3C/p>\n\x3Cp>Two notable changes are, that the sqlite database file and local file uploads are moved to a centralized \x3Ccode>.data\x3C/code> folder and that the prisma database schema is using the new \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.prisma.io/docs/orm/prisma-schema/overview/location#multi-file-prisma-schema\">prismaSchemaFolder\x3C/a> feature.\x3C/p>\n\x3Ch4 id=\"refactored-npio-packages\">Refactored '@npio' packages\x3C/h4>\n\x3Cp>Contributing to a large project like Nitropage can feel very daunting. In an attempt to simplify the onboarding process for new contributors and to reduce the cognitive load, the \x3Ccode>nitropage\x3C/code> npm package has been split up into several packages:\x3C/p>\n\x3Cul>\n\x3Cli>\x3Ccode>@npio/cli\x3C/code>: Command-line tools for schema updates, user management and blueprint scaffolding\x3C/li>\n\x3Cli>\x3Ccode>@npio/filesystem\x3C/code>: Driver-agnostic filesystem layer\x3C/li>\n\x3Cli>\x3Ccode>@npio/internals\x3C/code>: Internal functionality used across the whole project\x3C/li>\n\x3Cli>\x3Ccode>@npio/server\x3C/code>: Backend related API for end-users\x3C/li>\n\x3Cli>\x3Ccode>nitropage\x3C/code>: Frontend and the pieces to glue everything together\x3C/li>\n\x3C/ul>\n\x3Ch3 id=\"global-server-configuration\">Global server configuration\x3C/h3>\n\x3Cp>v0.59 comes with a new convinient place for all server related configurations. The same configuration is also consumed by the command-line utilities, enabling features like the CLI based user management. If you have worked with Vites config in the past, you should feel right at home with this:\x3C/p>\n";_$HY.r["000000001000000001010000000100010000100300010012000040010000002001100001001800000"]="\x3Cp>For the full list of options, check out the default \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://codeberg.org/nitropage/nitropage/src/commit/48eda5f58ddd0b86eb1673aa0d0e7ce105b66ff0/packages/starter/src/config/server.ts#L3\">configuration\x3C/a> included in the starter kit.\x3C/p>\n\x3Ch3 id=\"reworked-image-optimization-api\">Reworked image optimization API\x3C/h3>\n\x3Cp>As mentioned in the "Road to v1.0" section from the \x3Ca href=\"/blog/announcing-nitropage\">announcement\x3C/a> article, the image optimization sadly couldn't stay as it was, because of the completely redesigend server functions that came with the \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/solidjs/solid-start/releases/tag/v0.4.0\">switch to Vinxi\n\x3C/a>. But this complication also was a chance to greatly improve the usability of the API and I am really happy about the result I am presenting you today. So what has changed?\x3C/p>\n\x3Cul>\n\x3Cli>Available aspect-ratios and sizes are now \x3Ca href=\"#global-server-configuration\">globally\x3C/a> configured, instead of per blueprint.\x3C/li>\n\x3Cli>Optimization logic is moved from an internal server function to a middleware, allowing for cleaner, human-readable URLs.\x3C/li>\n\x3Cli>JS-based helper APIs have been simplified drastically and are less essential because of the more accessible URL format.\x3C/li>\n\x3C/ul>\n\x3Cp>Take a look at the new URL format:\x3C/p>\n\x3Cpre>\x3Ccode>Syntax: /image/{imageId}.webp?s={size}&ar={aspectRatio}\nExample: /image/h7ynh730pys1ze97epz3x5yy.webp?s=320&ar=2/1\n\x3C/code>\x3C/pre>\n\x3Cp>As you can see this makes it really easy to generate optimal image sizes on the fly. Even better the optimization also automatically crops the image along its configured \x3Ca href=\"#focal-point-image-cropping\">focal point\x3C/a>:\x3C/p>\n\x3Ctable>\n\x3Cthead>\n\x3Ctr>\n\x3Cth>Original\x3C/th>\n\x3Cth>\x3Ccode>?s=640&ar=1/1\x3C/code>\x3C/th>\n\x3Cth>\x3Ccode>?s=320&ar=2/1\x3C/code>\x3C/th>\n\x3C/tr>\n\x3C/thead>\n\x3Ctbody>\x3Ctr>\n\x3Ctd>\x3Cimg src=\"https://nitropage.com/image/h7ynh730pys1ze97epz3x5yy.webp?s=1024\" alt=\"Hiking Katja\">\x3C/td>\n\x3Ctd>\x3Cimg src=\"https://nitropage.com/image/h7ynh730pys1ze97epz3x5yy.webp?s=640&ar=1/1\" alt=\"Hiking Katja\">\x3C/td>\n\x3Ctd>\x3Cimg src=\"https://nitropage.com/image/h7ynh730pys1ze97epz3x5yy.webp?s=320&ar=2/1\" alt=\"Hiking Katja\">\x3C/td>\n\x3C/tr>\n\x3C/tbody>\x3C/table>\n\x3Ch4 id=\"responsive-image-helpers\">Responsive image helpers\x3C/h4>\n\x3Cp>Chances are you wanna optimize your images responsively for different screen sizes and device-pixel-ratios. Luckily Nitropages \x3Ccode>Image\x3C/code> component accepts a sources array that can be generated with the new \x3Ccode>mediaSources\x3C/code> helper.\x3C/p>\n\x3Cp>P.S. The helper handles 1x and 2x DPR calculations implicitly - one less thing to worry about! 🎉\x3C/p>\n";_$HY.r["000000001000000001010000000100010000100300010012000040010000002001100001001a1000000"]="\x3Cp>But let's take this one last step further: The media records include additional information such as an alt-\x3Ccode>description\x3C/code>, a \x3Ccode>color\x3C/code> and an optional base64 \x3Ccode>dataUrl\x3C/code> which can be shown as a placeholder during loading. Manually mapping all of these to the \x3Ccode>Image\x3C/code> component gets very pesky after some time, so you can use \x3Ccode>MediaContainer\x3C/code> instead, which will take care of the mapping for you:\x3C/p>\n";_$HY.r["000000001000000001010000000100010000100300010012000040010000002001100001001a1200000"]="\x3Ch3 id=\"s3-file-storage\">S3 file storage\x3C/h3>\n\x3Cp>Many modern hosting providers drastically limit the size of uploaded files or disallow it completely. Nitropage recommends self hosting which completely avoids such limitations and gives you a lot more freedom. But you still might prefer that convenience of modern hosters and thats why I am happy to announce the support of S3 file storages! \x3C/p>\n\x3Cp>Originally coming from \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://medium.com/@dbrandonbawe/exploring-the-basics-of-amazon-simple-storage-service-s3-f8ad2af0a6f9\">Amazon\x3C/a>, these storages allow you to efficiently store large amounts of files. These days there exist several competitors and even an open source solution \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/minio/minio\">MinIO\x3C/a>, all compatible to the S3 architecture. To give you a few options:\x3C/p>\n\x3Cul>\n\x3Cli>\x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.backup.ch/s3/\">Backup One\x3C/a>\x3C/li>\n\x3Cli>\x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.infomaniak.com/en/swiss-backup\">Swiss Backup\x3C/a>\x3C/li>\n\x3Cli>\x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.digitalocean.com/products/spaces\">DigitalOcean Spaces\x3C/a>\x3C/li>\n\x3Cli>\x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.cloudflare.com/developer-platform/r2/\">Cloudflare R2\x3C/a>\x3C/li>\n\x3Cli>\x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExbmx4dnM2ZHEyZndlcnJwZTFxc2dsOW0xMnpzcG9ydGlzZm10MWF1OCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/11RUijoqnc1yJW/giphy.gif\">Amazon S3\x3C/a>\x3C/li>\n\x3C/ul>\n\x3Cp>When you've choosen your S3 provider, or launched a \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://min.io/docs/minio/container/index.html\">self-hosted\x3C/a> MinIO, you can enter its access key and related information in the new \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"global-server-configuration\">global server configuration\x3C/a> and Nitropage will take care of the rest. Newly uploaded files and optimized images will automatically land in the configured public bucket. Since such files are directly served from your bucket, make sure that it is configured with an \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://min.io/docs/minio/linux/reference/minio-mc/mc-anonymous-set.html\">anonymous download access policy\x3C/a>.\x3C/p>\n\x3Ch3 id=\"blueprint-css-without-foucs\">Blueprint CSS without FOUCs\x3C/h3>\n\x3Cp>You can now freely import CSS files in your blueprint components and also take advantage of CSS modules 🥳!\x3C/p>\n\x3Cp>Nitropage for performance reasons loads blueprint components lazily, which normally would result in dizzy flashes of unstyled content (\x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://en.wikipedia.org/wiki/Flash_of_unstyled_content#/media/File:Flash_of_unstyled_content_(FOUC)_while_loading_a_HTML,_CSS_page.gif\">FOUC\x3C/a>). You probably have seen this on some other websites, the content jumps around during page load. I couldn't accept this reality and invented a package, properly server rendering CSS from lazy loaded components: \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://codeberg.org/lufrai/solid-lazy-plus\">Solid Lazy Plus\x3C/a>. This is available as an independent package and therefore can be used in plain Solid projects.\x3C/p>\n\x3Ch3 id=\"global-page-css\">Global page CSS\x3C/h3>\n\x3Cp>A fundamental goal of Nitropage is to give you, the developer, the freedom to choose how you wanna style your project. The starter kit comes with Tailwind, but you should not be locked into this choice. Thus v0.59 introduces a new \x3Ccode>PageRoot\x3C/code> component, where you can fearlessly include global CSS rules (in most cases). Just make sure that you don't break the inline richtext editor (Quill), if you plan to use that one ;).\x3C/p>\n\x3Ch3 id=\"built-in-prose-styles\">Built-in prose styles\x3C/h3>\n\x3Cp>Consistent typography is an integral aspect of every website. v0.59 simplifies this aspect with newly added "prose" styles, inspired by \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/tailwindlabs/tailwindcss-typography\">Tailwind Typography\x3C/a>. You can access them via the \x3Ccode>Richtext\x3C/code> component from \x3Ccode>nitropage\x3C/code>, which is completely optional. \x3C/p>\n\x3Cp>The '\x3Cstrong>Text\x3C/strong>', '\x3Cstrong>Heading\x3C/strong>' and '\x3Cstrong>Markdown\x3C/strong>' blueprints all share a coherent typography thanks to these styles. Currently they are set in stone, but a future goal is to offer several customization options via the editor.\x3C/p>\n\x3Ch3 id=\"reworked-link-traps\">Reworked link traps\x3C/h3>\n\x3Cp>Internal links work differently in the editor, then when visiting a real page: Clicking them in the editor doesn't open the related URL, preventing unexpected editor closures. Previously this trap has been achieved by rendering links and buttons as \x3Ccode><span>\x3C/code> elements. But this also meant that CSS rules targeting \x3Ccode>a\x3C/code> and \x3Ccode>button\x3C/code> could not work properly in the editor.\x3C/p>\n\x3Cp>These traps are now completely reworked with Solid Routers \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/solidjs/solid-router?tab=readme-ov-file#usebeforeleave\">useBeforeLeave\x3C/a> and HTMLs \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\">beforeunload\x3C/a> event, which should lead to less unexpected surprises when you are designing your snazzy hyperlinks.\x3C/p>\n\x3Ch3 id=\"smaller-html-document-size\">Smaller HTML document size\x3C/h3>\n\x3Cp>A late addition to v0.59 that will make your sites even more efficient: \x3Cem>Passive blueprints\x3C/em> are no longer affected from the double data problem. The double data problem means that the result from server rendering a page has to include the needed data twice, in the form of HTML and in the form of JSON. You can read more about the problem in this detailed article by Ryan Carniato: "\x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://dev.to/this-is-learning/why-efficient-hydration-in-javascript-frameworks-is-so-challenging-1ca3\">Why Efficient Hydration in JavaScript Frameworks is so Challenging\x3C/a>".\x3C/p>\n\x3Cp>The existence of passive blueprints (blueprints that are excluded from hydration) allows us to exclude data for these blueprints during server rendering and therefore decrease the HTML document size. The effect of this optimization is seen best on pages with a lot of static content, such as blog posts. \x3C/p>\n\x3Cp>Results for \x3Ca href=\"/\">nitropage.com\x3C/a>:\x3C/p>\n\x3Ctable>\n\x3Cthead>\n\x3Ctr>\n\x3Cth>\x3C/th>\n\x3Cth>Uncompressed\x3C/th>\n\x3Cth>Compressed\x3C/th>\n\x3C/tr>\n\x3C/thead>\n\x3Ctbody>\x3Ctr>\n\x3Ctd>\x3Cstrong>Original\x3C/strong>\x3C/td>\n\x3Ctd>297.1 KB\x3C/td>\n\x3Ctd>62.6 KB\x3C/td>\n\x3C/tr>\n\x3Ctr>\n\x3Ctd>\x3Cstrong>Optimized\x3C/strong>\x3C/td>\n\x3Ctd>265.0 KB\x3C/td>\n\x3Ctd>55.2 KB\x3C/td>\n\x3C/tr>\n\x3C/tbody>\x3C/table>\n\x3Chr>\n\x3Cp>You found the end of this article, thank you for staying through the whole experience! If you liked what you saw you can try Nitropage v0.59 out with:\x3C/p>\n\x3Cpre>\x3Ccode>pnpm create nitropage@latest\n\x3C/code>\x3C/pre>\n\x3Cp>I wanna thank all of the supporters of this project wholeheartedly, from my family, my friends, the anonymous crypto donators and bitcoin maxis, up to the inspiring and welcoming Solid community, this project wouldn't exist without you!\x3C/p>\n\x3Cp>And a special thanks to \x3Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://twitter.com/davedbase\">Dave Di Biase\x3C/a> for proof-reading this article and providing several improvement ideas!\x3C/p>\n";_$HY.r["000000001000000001010000000100010000100300010012000040010000002001100001001700000"]="\x3Cspan class=\"hljs-keyword\">export\x3C/span> \x3Cspan class=\"hljs-keyword\">default\x3C/span> \x3Cspan class=\"hljs-title function_\">defineServerConfig\x3C/span>(\x3Cspan class=\"hljs-function\">() =>\x3C/span> {\n \x3Cspan class=\"hljs-keyword\">return\x3C/span> {\n \x3Cspan class=\"hljs-attr\">auth\x3C/span>: {\n \x3Cspan class=\"hljs-attr\">password\x3C/span>: process.\x3Cspan class=\"hljs-property\">env\x3C/span>[\x3Cspan class=\"hljs-string\">"NP_AUTH_IRON_PASSWORD"\x3C/span>]!,\n \x3Cspan class=\"hljs-attr\">cookie\x3C/span>: {\n \x3Cspan class=\"hljs-attr\">maxAge\x3C/span>: \x3Cspan class=\"hljs-built_in\">parseInt\x3C/span>(process.\x3Cspan class=\"hljs-property\">env\x3C/span>[\x3Cspan class=\"hljs-string\">"NP_AUTH_COOKIE_MAXAGE"\x3C/span>] || \x3Cspan class=\"hljs-string\">"0"\x3C/span>),\n },\n },\n \x3Cspan class=\"hljs-attr\">image\x3C/span>: {\n \x3Cspan class=\"hljs-attr\">sizes\x3C/span>: [\x3Cspan class=\"hljs-number\">320\x3C/span>, \x3Cspan class=\"hljs-number\">512\x3C/span>, \x3Cspan class=\"hljs-number\">640\x3C/span>, \x3Cspan class=\"hljs-number\">768\x3C/span>, \x3Cspan class=\"hljs-number\">1024\x3C/span>, \x3Cspan class=\"hljs-number\">1280\x3C/span>, \x3Cspan class=\"hljs-number\">1536\x3C/span>],\n \x3Cspan class=\"hljs-attr\">maxAge\x3C/span>: \x3Cspan class=\"hljs-number\">365\x3C/span> * \x3Cspan class=\"hljs-number\">24\x3C/span> * \x3Cspan class=\"hljs-number\">60\x3C/span> * \x3Cspan class=\"hljs-number\">60\x3C/span>,\n },\n \x3Cspan class=\"hljs-attr\">filesystem\x3C/span>: {\n \x3Cspan class=\"hljs-attr\">defaultDriver\x3C/span>: \x3Cspan class=\"hljs-string\">"local"\x3C/span>,\n \x3Cspan class=\"hljs-attr\">drivers\x3C/span>: {\n \x3Cspan class=\"hljs-attr\">local\x3C/span>: {\n \x3Cspan class=\"hljs-attr\">publicPath\x3C/span>: \x3Cspan class=\"hljs-string\">".data/storage/public"\x3C/span>,\n \x3Cspan class=\"hljs-attr\">privatePath\x3C/span>: \x3Cspan class=\"hljs-string\">".data/storage/private"\x3C/span>,\n },\n },\n },\n } \x3Cspan class=\"hljs-keyword\">satisfies\x3C/span> \x3Cspan class=\"hljs-title class_\">ServerConfig\x3C/span>;\n});";_$HY.r["000000001000000001010000000100010000100300010012000040010000002001100001001900000"]="\x3Cspan class=\"hljs-keyword\">import\x3C/span> {\n \x3Cspan class=\"hljs-title class_\">Image\x3C/span>,\n mediaSources,\n useMedia,\n} \x3Cspan class=\"hljs-keyword\">from\x3C/span> \x3Cspan class=\"hljs-string\">"nitropage/data/media"\x3C/span>;\n\n\x3Cspan class=\"hljs-comment\">// Load the media records for the selected images\x3C/span>\n\x3Cspan class=\"hljs-keyword\">const\x3C/span> images = \x3Cspan class=\"hljs-title function_\">useMedia\x3C/span>(\x3Cspan class=\"hljs-function\">() =>\x3C/span> props.\x3Cspan class=\"hljs-property\">data\x3C/span>.\x3Cspan class=\"hljs-property\">imageIds\x3C/span>);\n\n\x3Cspan class=\"hljs-comment\">// From screens > 1024 the size should be 1280, with a 1:1 aspect ratio\x3C/span>\n\x3Cspan class=\"hljs-comment\">// For smaller screens the size should be 512\x3C/span>\n\x3Cspan class=\"language-xml\">\x3Cspan class=\"hljs-tag\"><\x3Cspan class=\"hljs-name\">Image\x3C/span> \x3Cspan class=\"hljs-attr\">sources\x3C/span>=\x3Cspan class=\"hljs-string\">{mediaSources(images()[0],\x3C/span> [\n { \x3Cspan class=\"hljs-attr\">size:\x3C/span> \x3Cspan class=\"hljs-attr\">1280\x3C/span>, \x3Cspan class=\"hljs-attr\">aspectRatio:\x3C/span> "\x3Cspan class=\"hljs-attr\">1\x3C/span>/\x3Cspan class=\"hljs-attr\">1\x3C/span>", \x3Cspan class=\"hljs-attr\">screen:\x3C/span> \x3Cspan class=\"hljs-attr\">1024\x3C/span> },\n { \x3Cspan class=\"hljs-attr\">size:\x3C/span> \x3Cspan class=\"hljs-attr\">512\x3C/span> }\n])} />\x3C/span>\x3C/span>\n";_$HY.r["000000001000000001010000000100010000100300010012000040010000002001100001001a1100000"]="\x3Cspan class=\"hljs-keyword\">import\x3C/span> {\n \x3Cspan class=\"hljs-title class_\">MediaContainer\x3C/span>,\n useMedia,\n} \x3Cspan class=\"hljs-keyword\">from\x3C/span> \x3Cspan class=\"hljs-string\">"nitropage/data/media"\x3C/span>;\n\n\x3Cspan class=\"hljs-keyword\">const\x3C/span> images = \x3Cspan class=\"hljs-title function_\">useMedia\x3C/span>(\x3Cspan class=\"hljs-function\">() =>\x3C/span> props.\x3Cspan class=\"hljs-property\">data\x3C/span>.\x3Cspan class=\"hljs-property\">imageIds\x3C/span>, {\n \x3Cspan class=\"hljs-attr\">dataUrl\x3C/span>: \x3Cspan class=\"hljs-literal\">true\x3C/span>,\n});\n\n\x3Cspan class=\"language-xml\">\x3Cspan class=\"hljs-tag\"><\x3Cspan class=\"hljs-name\">MediaContainer\x3C/span> \x3Cspan class=\"hljs-attr\">media\x3C/span>=\x3Cspan class=\"hljs-string\">{images()[0]}\x3C/span> \x3Cspan class=\"hljs-attr\">placeholder\x3C/span> \x3Cspan class=\"hljs-attr\">sources\x3C/span>=\x3Cspan class=\"hljs-string\">{[\x3C/span>\n { \x3Cspan class=\"hljs-attr\">size:\x3C/span> \x3Cspan class=\"hljs-attr\">1280\x3C/span>, \x3Cspan class=\"hljs-attr\">aspectRatio:\x3C/span> "\x3Cspan class=\"hljs-attr\">1\x3C/span>/\x3Cspan class=\"hljs-attr\">1\x3C/span>", \x3Cspan class=\"hljs-attr\">screen:\x3C/span> \x3Cspan class=\"hljs-attr\">1024\x3C/span> },\n { \x3Cspan class=\"hljs-attr\">size:\x3C/span> \x3Cspan class=\"hljs-attr\">512\x3C/span> }\n]} />\x3C/span>\x3C/span>\n";$R[7]($R[1456],$R[1457]=[$R[1458]={id:"9214f606-ec1f-42b4-ad55-d57a3475cb7c",updatedAt:$R[1459]=new Date("2024-08-10T12:32:33.856Z"),publicId:"vdn5c786w9pyhxxdrerdubz5",driver:"local",dataUrl:"data:image/jpeg;base64,/9j/2wBDACAWGBwYFCAcGhwkIiAmMFA0MCwsMGJGSjpQdGZ6eHJmcG6AkLicgIiuim5woNqirr7EztDOfJri8uDI8LjKzsb/2wBDASIkJDAqMF40NF7GhHCExsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsb/wAARCAAHAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAIF/8QAGRAAAgMBAAAAAAAAAAAAAAAAAAIBERIh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQL/xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAwDAQACEQMRAD8A1WR65JGGAKof/9k=",file:"vdn5c786w9pyhxxdrerdubz5.png",mime:"image/png",width:879,height:586,blurhash:"LINU6Z.9NNVs03WZogRi~XV?Mwx]",focalPointX:26,focalPointY:82,color:"248, 248, 248",description:"Image settings",timestamp:1723293153,url:"/image/vdn5c786w9pyhxxdrerdubz5.webp?ts=1723293153",rawUrl:"/uploads/media/vdn5c786w9pyhxxdrerdubz5.png?ts=1723293153"}]);_$HY.r["000000001000000001010000000100010000100300010012000040010000002001100001001300000"]=$R[1457];_$HY.r["0000000010000000010100000001000100001003000100110000400100000200100000020011000010010000001001000000"]=$R[1453];$R[7]($R[1427],!0);
Nitropage v0.59
Nitropage v0.59
One small step for semver, one giant leap for website editing. Introducing SolidStart v1, S3 file storage, Markdown support, focal point image cropping, editor zoom, page load optimizations and a lot more.
Sorry about that, you can read about the reasons why I skipped making a trailer this time, in the Funding-Section.
Five months ago, after the official announcement blog post, I planned to work on several Nitropage-based websites and get a realistic feeling of the strengths and weaknesses of the editor in different production setups, while waiting for the ongoing development of SolidStart - the underlying system.
To my surprise SolidStart released its major version already, just two months after my announcement. From that moment on I knew that I had to get back to work on Nitropage and upgrade all internal systems from SolidStart v0.3.10 to v1.0. What I am presenting to you today is the culmination of all the changes that happened since that point.
This is more than just an upgrade of pretty much all internal systems, this includes new essential features for users and developers alike and marks a very important step towards v1.0 of Nitropage. Meanwhile the starter kit has grown to a whooping 36 built-in blueprints!
To give you a list of the most noteworthy hightlights:
Nitropage v0.59 isn't released yet, but you can already try it out with the following command, which will guide you through the whole setup of a new project:
pnpm create nitropage@latest
Feedback & Release date
The new version hasn't been released yet, giving you the opportunity to try it out first. If you compare it to the currently shipped v0.58.1, you will find that almost no stone has left unturned. For active users of the old version this also means that they have to manually migrate their projects and turn some stones by hand, but don't worry: this site already runs the new version and the migration took me only about 15 minutes.
You can send me feedback over the #nitropage Discord channel on the Solid server or via my other contact options outlined here. Depending on the amount and significance of your feedbacks, v0.59 will be released in about two weeks, together with a short migration guide.
Funding
The funding situation doesn't look as bright as the new version. Making open source software of this size sustainable feels like a fight against the whole humanity some days. If you are a developer you probably already know what I am talking about. The truth is that I invested most of my own money to bring this project to life, because I believe that having a free, fully-featured and open source website builder would help humanity tremendously. But so far I didn't truly succeed in sharing this idea with other people. Most people haven't really heard of Nitropage to begin with and those who did are still waiting for others to use it first, nobody likes taking the initial risk. It's a vicious cycle that probably only would end with a miracle or with questionable marketing tactics such as fake likes and followers. As a single human with a relentless illness (Phantosmia) I can only do so much to keep this project alive and I absolutely need you. If you like the philosophy behind this project and you have an interest to keep it alive, then I plead you to:
Like it - Honestly, the current like count of 11 is insulting for a project with over 1000 commits. 1 of these likes is from my mom. Be better than my mom.
Subscribe to the newsletter - You won't receive endless spam mails from this, promised!
Share the project on social media and talk about it with your friends.
Try it out and share your experience.
Share your NP-based websites on #nitropage so that we can create an amazing showcase and blow newcomers away.
Contribute new blueprints for the starter kit.
Donate - This software might be free, but I actually still need to pay my rent and eat food some days.
Become a sponsor.
I am wholeheartedly committed to this project, but I cannot continue working on it in a meaningful pace, if it stays broadly unknown in the following months. So I plead you: Let's make the miracle become a reality!
Joining the SolidStart team
It's already some weeks ago since this happened, but I am very proud to officially announce that I got to be part of the awesome SolidStart contributors team! This voluntary engagement allows me to discuss and support the development of SolidStart and Vinxi in a more effective, direct way and to share the experience that I am getting as a major user of the framework.
Additions for users
With the administrative topics out of the way, let's now take a deeper look at the new features and changes of Nitropage v0.59. Even though the main focus of this version was the internal migration to SolidStart v1, I just couldn't stop myself from also improving some user-facing parts.
New toolbar & responsive tools
The toolbar of the page editor got an overhauled look and is now positioned at the top. Gone are the days where the toolbar covers elements on the page. This new position also made space for a new page zoom option. Last but not least the resize handle for the page preview now covers the whole page height, which is powered by corvus fantastic Resizable primitive, made by Jasmin.
All of this allows you to work on your pages more efficiently and to simulate various viewing devices, even on small monitors.
P.S. the toolbar buttons now show the respective tool name, which should help new users a bit. Let me know what you think about this. Depending on future additions, the names might have to be removed again, to make space for other fancy tools.
Reworked element selection UI
Previously you could not see the blueprint name, when hovering over elements barely in the view, because the name was sticked to the top-border of the elements. With the new version this is no longer the case. You can now always see the name as it stays in the view, no matter the position of the scrollbar.
Focal point image cropping
With the complete redesign of the image optimization API I also wanted to improve the actual results that you get from it. Whats not a better way, than to finally get rid of the unprecise gravity setting and tackle proper focal point cropping?
Yes! With the new version you can set a specific focal point for each image and the automatic image cropping will make sure that the point stays visible, on all screen sizes!
Image settings
The focal point cropping feature asked for a place to configure image related settings. This place is a new dialog, opened via the Media Library. It also finally allows you to customize the Color and Description of your images.
The new image settings dialog
Youtube and Vimeo support
Internally the 'Video' Blueprint already supported Youtube and Vimeo videos for a while, but this feature was hidden from users. That's changing with the new URL field. You can see it in action on the trailer at the top of this announcement, which is hosted on Youtube - for some self-explaining reason...
New 'Markdown' blueprint
Powered by Marked, this useful new blueprint allows you not only to publish your beloved Markdown content, it can also be used to just embed some quick HTML on your site. The article you are reading at this very moment, has been written in Markdown :).
Got bigger plans and wanna write a full manual in Markdown? This blueprint automatically assigns id attributes for your headings, making it interoperable with the already existing 'Documentation' blueprint!
New 'Narrow' blueprint
It gives you access to a new narrow layout, as demonstrated by this article. Long form content is the perfect use case, as a narrow width can greatly improve readability. This replaces the Full Width option, previously existing redundantly in several other blueprints. Wanna make those narrow again? Just put them in a 'Narrow'! Now you can make all your narrowest fantasies come true.
New 'Embedded Video' blueprint
The work on this new blueprint was sponsored by Digitaler Aktivist. Originally implemented to embed videos from their self-hosted PeerTube instance, this blueprint can also be used to embed video iframes from many other sources, including Odysee and Rumble. This brings Nitropage one step closer in becoming the first choice for freedom-loving activists on the web!
Up for an example?
Here be developers
SolidStart v1.0, Nitro and Vinxi
Up to this point Nitropage was running on SolidStart v0.3.1. However v0.4 completely redesigned essential APIs, making it nearly impossible to upgrade Nitropage in a sensible way. If you wanna learn what had changed, look no further than the v0.4 announcement. Luckily the later release of SolidStart v1 signaled the stability of these new APIs and reassured that the time had come to bring Nitropage to new heights.
The migration of Nitropage to SolidStart v1.0 in numbers:
Amount
Method
Migrated to
52
server$
use server
6
createResource
createAsync
15
createRouteData
createAsync & cache
17
createRouteAction
action
4
createServerAction$
action & use server
Deployment on steroids
But you are probably here to learn what advantages this migration brought to you, let's start with the biggest one: Nitropage now is built and served via Nitro and Vinxi, simplifying the deployment to hosting providers such as Netlify, Cloudflare and Vercel. We still need to figure out how simple this really is gonna be with Nitropage, but an important question with these providers is how and where to upload files. So I already proactively answered this question with the new S3 file storages.
Check out Nitros Deployment Guide to learn more about the new possibilities.
Now you might be wondering, what does Nitro have to do with Nitropage? Why the similar names? Is this a secret conspiracy? Is UnJS Nitro a product of Nitropage or vice-versa? To answer all of these questions from the get go:
Nitropage and Nitro are completely independent projects, neither of us have heard about the others projects, when we decided on the names. I'm still wondering to this day, if this is just a stunning coincidence, or a divine providence.
Page speed optimization
Solid Router added the ability to preload data on link hover, resulting in a noticeable speed improvement for desktop users, not only when visiting pages, but also in the dashboard.
The new version also leverages Solids stream render and Suspense. This is gonna be especially useful, when you wanna show data from slow external sources, just wrap your related blueprints in Suspense boundaries and fallback to some fancy loading spinners.
Last but not least, blueprints are now loaded in a more optimal way: Nitropage keeps a list of already loaded blueprints and only loads the missing ones, when navigating between pages.
Starter Kit
The migration asked for a complete revamp of the starter kit. A lot of files have changed in small ways. Upgrading your own projects to the new format is still relatively simple if you follow some key steps, that I will document in an upcoming migration guide.
Two notable changes are, that the sqlite database file and local file uploads are moved to a centralized .data folder and that the prisma database schema is using the new prismaSchemaFolder feature.
Refactored '@npio' packages
Contributing to a large project like Nitropage can feel very daunting. In an attempt to simplify the onboarding process for new contributors and to reduce the cognitive load, the nitropage npm package has been split up into several packages:
@npio/cli: Command-line tools for schema updates, user management and blueprint scaffolding
@npio/internals: Internal functionality used across the whole project
@npio/server: Backend related API for end-users
nitropage: Frontend and the pieces to glue everything together
Global server configuration
v0.59 comes with a new convinient place for all server related configurations. The same configuration is also consumed by the command-line utilities, enabling features like the CLI based user management. If you have worked with Vites config in the past, you should feel right at home with this:
For the full list of options, check out the default configuration included in the starter kit.
Reworked image optimization API
As mentioned in the "Road to v1.0" section from the announcement article, the image optimization sadly couldn't stay as it was, because of the completely redesigend server functions that came with the switch to Vinxi
. But this complication also was a chance to greatly improve the usability of the API and I am really happy about the result I am presenting you today. So what has changed?
Available aspect-ratios and sizes are now globally configured, instead of per blueprint.
Optimization logic is moved from an internal server function to a middleware, allowing for cleaner, human-readable URLs.
JS-based helper APIs have been simplified drastically and are less essential because of the more accessible URL format.
As you can see this makes it really easy to generate optimal image sizes on the fly. Even better the optimization also automatically crops the image along its configured focal point:
Original
?s=640&ar=1/1
?s=320&ar=2/1
Responsive image helpers
Chances are you wanna optimize your images responsively for different screen sizes and device-pixel-ratios. Luckily Nitropages Image component accepts a sources array that can be generated with the new mediaSources helper.
P.S. The helper handles 1x and 2x DPR calculations implicitly - one less thing to worry about! 🎉
import {
Image,
mediaSources,
useMedia,
} from"nitropage/data/media";
// Load the media records for the selected imagesconst images = useMedia(() => props.data.imageIds);
// From screens > 1024 the size should be 1280, with a 1:1 aspect ratio// For smaller screens the size should be 512<Imagesources={mediaSources(images()[0], [
{ size:1280, aspectRatio: "1/1", screen:1024 },
{ size:512 }
])} />
But let's take this one last step further: The media records include additional information such as an alt-description, a color and an optional base64 dataUrl which can be shown as a placeholder during loading. Manually mapping all of these to the Image component gets very pesky after some time, so you can use MediaContainer instead, which will take care of the mapping for you:
Many modern hosting providers drastically limit the size of uploaded files or disallow it completely. Nitropage recommends self hosting which completely avoids such limitations and gives you a lot more freedom. But you still might prefer that convenience of modern hosters and thats why I am happy to announce the support of S3 file storages!
Originally coming from Amazon, these storages allow you to efficiently store large amounts of files. These days there exist several competitors and even an open source solution MinIO, all compatible to the S3 architecture. To give you a few options:
When you've choosen your S3 provider, or launched a self-hosted MinIO, you can enter its access key and related information in the new global server configuration and Nitropage will take care of the rest. Newly uploaded files and optimized images will automatically land in the configured public bucket. Since such files are directly served from your bucket, make sure that it is configured with an anonymous download access policy.
Blueprint CSS without FOUCs
You can now freely import CSS files in your blueprint components and also take advantage of CSS modules 🥳!
Nitropage for performance reasons loads blueprint components lazily, which normally would result in dizzy flashes of unstyled content (FOUC). You probably have seen this on some other websites, the content jumps around during page load. I couldn't accept this reality and invented a package, properly server rendering CSS from lazy loaded components: Solid Lazy Plus. This is available as an independent package and therefore can be used in plain Solid projects.
Global page CSS
A fundamental goal of Nitropage is to give you, the developer, the freedom to choose how you wanna style your project. The starter kit comes with Tailwind, but you should not be locked into this choice. Thus v0.59 introduces a new PageRoot component, where you can fearlessly include global CSS rules (in most cases). Just make sure that you don't break the inline richtext editor (Quill), if you plan to use that one ;).
Built-in prose styles
Consistent typography is an integral aspect of every website. v0.59 simplifies this aspect with newly added "prose" styles, inspired by Tailwind Typography. You can access them via the Richtext component from nitropage, which is completely optional.
The 'Text', 'Heading' and 'Markdown' blueprints all share a coherent typography thanks to these styles. Currently they are set in stone, but a future goal is to offer several customization options via the editor.
Reworked link traps
Internal links work differently in the editor, then when visiting a real page: Clicking them in the editor doesn't open the related URL, preventing unexpected editor closures. Previously this trap has been achieved by rendering links and buttons as <span> elements. But this also meant that CSS rules targeting a and button could not work properly in the editor.
These traps are now completely reworked with Solid Routers useBeforeLeave and HTMLs beforeunload event, which should lead to less unexpected surprises when you are designing your snazzy hyperlinks.
Smaller HTML document size
A late addition to v0.59 that will make your sites even more efficient: Passive blueprints are no longer affected from the double data problem. The double data problem means that the result from server rendering a page has to include the needed data twice, in the form of HTML and in the form of JSON. You can read more about the problem in this detailed article by Ryan Carniato: "Why Efficient Hydration in JavaScript Frameworks is so Challenging".
The existence of passive blueprints (blueprints that are excluded from hydration) allows us to exclude data for these blueprints during server rendering and therefore decrease the HTML document size. The effect of this optimization is seen best on pages with a lot of static content, such as blog posts.
You found the end of this article, thank you for staying through the whole experience! If you liked what you saw you can try Nitropage v0.59 out with:
pnpm create nitropage@latest
I wanna thank all of the supporters of this project wholeheartedly, from my family, my friends, the anonymous crypto donators and bitcoin maxis, up to the inspiring and welcoming Solid community, this project wouldn't exist without you!
And a special thanks to Dave Di Biase for proof-reading this article and providing several improvement ideas!