From 41a37536235bc7a0d3d8739443464e51207c9766 Mon Sep 17 00:00:00 2001 From: Brian Beck Date: Wed, 16 Oct 2024 01:10:21 -0700 Subject: [PATCH] Add GitHub link --- docs/404.html | 2 +- docs/404/index.html | 2 +- .../chunks/8e1d74a4-2e60cc37d7b04363.js | 1 + .../chunks/8e1d74a4-8e519121d6db0557.js | 1 - .../chunks/app/page-65a64361088201e6.js | 1 + .../chunks/app/page-8de0c0ea0a779b3f.js | 1 - docs/_next/static/css/1febfadc1a5e3d46.css | 1 + docs/_next/static/css/2794c0e5d9dad442.css | 1 - .../_buildManifest.js | 0 .../_ssgManifest.js | 0 docs/index.html | 2 +- docs/index.txt | 4 +-- src/Forge.module.css | 35 ++++++++++++++++++- src/Forge.tsx | 14 +++++++- 14 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 docs/_next/static/chunks/8e1d74a4-2e60cc37d7b04363.js delete mode 100644 docs/_next/static/chunks/8e1d74a4-8e519121d6db0557.js create mode 100644 docs/_next/static/chunks/app/page-65a64361088201e6.js delete mode 100644 docs/_next/static/chunks/app/page-8de0c0ea0a779b3f.js create mode 100644 docs/_next/static/css/1febfadc1a5e3d46.css delete mode 100644 docs/_next/static/css/2794c0e5d9dad442.css rename docs/_next/static/{NPB9pL4Yl8_1AmmjUFpwy => mP5hGUGSmu-p0M7gsH5Gb}/_buildManifest.js (100%) rename docs/_next/static/{NPB9pL4Yl8_1AmmjUFpwy => mP5hGUGSmu-p0M7gsH5Gb}/_ssgManifest.js (100%) diff --git a/docs/404.html b/docs/404.html index 6eb3f36..f6aa109 100644 --- a/docs/404.html +++ b/docs/404.html @@ -1 +1 @@ -404: This page could not be found.VL2 Forge

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.VL2 Forge

404

This page could not be found.

\ No newline at end of file diff --git a/docs/404/index.html b/docs/404/index.html index 6eb3f36..f6aa109 100644 --- a/docs/404/index.html +++ b/docs/404/index.html @@ -1 +1 @@ -404: This page could not be found.VL2 Forge

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.VL2 Forge

404

This page could not be found.

\ No newline at end of file diff --git a/docs/_next/static/chunks/8e1d74a4-2e60cc37d7b04363.js b/docs/_next/static/chunks/8e1d74a4-2e60cc37d7b04363.js new file mode 100644 index 0000000..ade2f20 --- /dev/null +++ b/docs/_next/static/chunks/8e1d74a4-2e60cc37d7b04363.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[699],{9089:function(a,t,c){c.d(t,{AMf:function(){return u},hJX:function(){return r}});var n=c(6231);function r(a){return(0,n.w_)({tag:"svg",attr:{viewBox:"0 0 496 512"},child:[{tag:"path",attr:{d:"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"},child:[]}]})(a)}function u(a){return(0,n.w_)({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"},child:[]}]})(a)}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/8e1d74a4-8e519121d6db0557.js b/docs/_next/static/chunks/8e1d74a4-8e519121d6db0557.js deleted file mode 100644 index 3933eea..0000000 --- a/docs/_next/static/chunks/8e1d74a4-8e519121d6db0557.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[699],{9089:function(a,t,n){n.d(t,{AMf:function(){return c}});var u=n(6231);function c(a){return(0,u.w_)({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"},child:[]}]})(a)}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/page-65a64361088201e6.js b/docs/_next/static/chunks/app/page-65a64361088201e6.js new file mode 100644 index 0000000..91c440e --- /dev/null +++ b/docs/_next/static/chunks/app/page-65a64361088201e6.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{9343:function(e,t,i){Promise.resolve().then(i.bind(i,9330))},9330:function(e,t,i){"use strict";i.d(t,{Forge:function(){return T}});var a=i(7437),n=i(2265),s=i(7380),r=i(7635),l=i.n(r),o=i(12),m=i(1124),c=i.n(m),p=i(9089),u=i(2744),d=i(8637),g=i(1273),f=i(7780),y=i(6537),h=i.n(y);function _(e){let t=e.split("/"),i="",a="";return(t.length>1?(i=t.slice(0,-1).join("/"),a=t[t.length-1]):(i="",a=t[0]),i)?"".concat(i,"/").concat(a):(/\.(l|m|h)(male|female|bioderm)\.png$/i.test(a)||/^(vehicle|weapon)_.+png$/i.test(a)||/^dcase\d\d\.png$/i.test(a)?i="textures/skins":/\.(ter|spn)$/i.test(a)?i="terrains":/\.mis$/i.test(a)?i="missions":/\.dif$/i.test(a)&&(i="interiors"),i)?"".concat(i,"/").concat(a):a}function v(e){if(e.type){if(/^image\//i.test(e.type))return{mimeType:e.type,genericType:"image"};if(/^audio\//i.test(e.type))return{mimeType:e.type,genericType:"audio"}}if(/\.png$/i.test(e.name))return{mimeType:"image/png",genericType:"image"};if(/\.jpg$/i.test(e.name))return{mimeType:"image/jpeg",genericType:"image"};if(/\.bmp$/i.test(e.name))return{mimeType:"image/bmp",genericType:"image"};if(/\.webp$/i.test(e.name))return{mimeType:"image/webp",genericType:"image"};if(/\.gif$/i.test(e.name))return{mimeType:"image/gif",genericType:"image"};if(/\.tiff$/i.test(e.name))return{mimeType:"image/tiff",genericType:"image"};if(/\.svg$/i.test(e.name))return{mimeType:"image/svg+xml",genericType:"image"};else if(/\.wav$/i.test(e.name))return{mimeType:"audio/wav",genericType:"audio"};else if(/\.mp3$/i.test(e.name))return{mimeType:"audio/mpeg",genericType:"audio"};return e.type?{mimeType:e.type,genericType:null}:null}function x(e){var t,i;let{file:n,onDelete:s,onRename:r}=e,l=null;return n.dataUri&&(null===(t=n.type)||void 0===t?void 0:t.genericType)==="image"?l=(0,a.jsx)("img",{className:h().PreviewIcon,src:n.dataUri,width:24,alt:""}):(null===(i=n.type)||void 0===i?void 0:i.genericType)==="audio"?l=(0,a.jsx)(f.Eow,{}):/\.cs$/i.test(n.path)?l=(0,a.jsx)(d.HXH,{}):/\.mis$/i.test(n.path)?l=(0,a.jsx)(g.W95,{}):/\.dif$/i.test(n.path)?l=(0,a.jsx)(u.JEK,{}):/\.ter$/i.test(n.path)?l=(0,a.jsx)(u.seb,{}):/\.spn$/i.test(n.path)&&(l=(0,a.jsx)(g.ekl,{})),(0,a.jsxs)("div",{className:h().File,children:[(0,a.jsx)("span",{className:h().IconContainer,children:l})," ",(0,a.jsx)("span",{className:h().Path,onDoubleClick:()=>{let e=window.prompt("Rename file (".concat(n.path,"):"),n.path);e&&(e=e.trim().replace(/\/+/g,"/").replace(/^\//,"").replace(/\/$/,"").trim())&&e!==n.path&&r(n.path,e)},children:n.path}),(0,a.jsx)("button",{className:h().DeleteButton,type:"button","aria-label":"Delete",title:"Delete",onClick:e=>{s(n.path)},children:(0,a.jsx)(p.AMf,{})})]})}async function w(e){let t=await l().loadAsync(e),i=new Map;for(let e in t.files){let s=t.files[e];if(!s.dir){var a,n;let t={path:e=_(e),buffer:await s.async("arraybuffer"),dataUri:null,date:s.date,unixPermissions:s.unixPermissions,dosPermissions:s.dosPermissions,type:v(s)};if((null===(a=t.type)||void 0===a?void 0:a.genericType)==="image"||(null===(n=t.type)||void 0===n?void 0:n.genericType)==="audio"){let e=await s.async("base64");t.dataUri="data:".concat(t.type.mimeType,";base64,").concat(e)}i.set(e,t)}}return i}async function b(e){var t,i;let a;let n=new Map;if(e.path)(a=e.path).startsWith("/")&&(a=a.slice(1));else{if(!e.name)return n;a=e.name}a=_(a);let s=await new Promise((t,i)=>{let a=new FileReader;a.addEventListener("load",e=>{t(e.target.result)}),a.readAsArrayBuffer(e)}),r={path:a,buffer:s,dataUri:null,date:null,unixPermissions:null,dosPermissions:null,type:v(e)};if((null===(t=r.type)||void 0===t?void 0:t.genericType)==="image"||(null===(i=r.type)||void 0===i?void 0:i.genericType)==="audio"){let e=function(e){for(var t,i,a,n,s="",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=new Uint8Array(e),o=l.byteLength,m=o%3,c=o-m,p=0;p>18]+r[(258048&n)>>12]+r[(4032&n)>>6]+r[63&n];return 1==m?s+=r[t=(252&(n=l[c]))>>2]+r[(3&n)<<4]+"==":2==m&&(s+=r[t=(64512&(n=l[c]<<8|l[c+1]))>>10]+r[(1008&n)>>4]+r[(15&n)<<2]+"="),s}(s);r.dataUri="data:".concat(r.type.mimeType,";base64,").concat(e)}return n.set(a,r),n}async function F(e){return/\.(zip|vl2)$/i.test(e.name)?w(e):b(e)}async function j(e,t){let i=await e.generateAsync({type:"blob",mimeType:"application/octet-stream"});(0,o.saveAs)(i,t)}function T(){let[e,t]=(0,n.useState)(()=>[]),[i,r]=(0,n.useState)(()=>new Map),o=(0,n.useCallback)(async e=>{let i=[],a=new Map;(await Promise.all(e.map(e=>F(e)))).forEach(e=>{e.forEach((e,t)=>{a.has(t)&&i.push({type:"overwrite",path:t}),a.set(t,e)})}),r(e=>new Map([...Array.from(e.entries()),...Array.from(a.entries())])),t(e=>[...e,...i])},[]),{getRootProps:m,getInputProps:u,open:d,isDragActive:g}=(0,s.uI)({noClick:!0,onDrop:o}),f=(0,n.useMemo)(()=>c()(Array.from(i.keys()),[e=>e.toLowerCase()],["asc"]).map(e=>i.get(e)),[i]),y=(0,a.jsx)("button",{type:"button",className:h().AddButton,"aria-label":"Add files",title:"Add files",onClick:d,children:"+"}),_=(0,n.useCallback)(e=>{r(t=>{let i=new Map(t);return i.delete(e),i})},[]),v=(0,n.useCallback)((e,t)=>{r(i=>{let a={...i.get(e),path:t},n=new Map(i);return n.delete(e),n.set(t,a),n})},[]);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("section",{className:h().Forge,...m(),children:[(0,a.jsxs)("header",{className:h().Header,children:[(0,a.jsx)("a",{className:h().HeaderLink,href:"https://github.com/exogen/vl2-forge",children:(0,a.jsx)(p.hJX,{"aria-label":"GitHub"})}),(0,a.jsx)("img",{width:210,height:188,src:"/vl2-forge/logo-md.png",alt:"VL2 Forge"}),y]}),(0,a.jsx)("input",{...u()}),(0,a.jsx)("div",{className:h().ListArea,children:f.length?(0,a.jsx)("ul",{className:h().FileList,children:f.map(e=>(0,a.jsx)("li",{children:(0,a.jsx)(x,{file:e,onDelete:_,onRename:v})},e.path))}):(0,a.jsx)("div",{className:h().EmptyMessage,children:"Drop files onto the page or press the add button. No need to extract existing .vl2 files first –\xa0just drop ‘em in and it’ll do that for you!"})})]}),(0,a.jsxs)("footer",{className:h().Footer,children:[(0,a.jsx)("a",{className:h().FooterLink,href:"https://github.com/exogen/vl2-forge",children:(0,a.jsx)(p.hJX,{"aria-label":"GitHub"})}),(0,a.jsxs)("form",{onSubmit:async e=>{e.preventDefault();let t=e.target.elements.fileName,i=t.value.trim();if(i){if(f.length){let e=function(e){let t=new(l());for(let i of e)t.file(i.path,i.buffer,{date:i.date,dosPermissions:i.dosPermissions,unixPermissions:i.unixPermissions});return t}(f);await j(e,"".concat(i,".vl2"))}else window.alert("Add some files!")}else window.alert("Name thy file."),t.focus()},children:[(0,a.jsx)("div",{className:h().NameInput,children:(0,a.jsx)("input",{name:"fileName",type:"text",placeholder:"name thy file",onChange:e=>{/\.vl2$/i.test(e.target.value)&&(e.target.value=e.target.value.slice(0,-4))}})}),(0,a.jsx)("button",{type:"submit",className:h().DownloadButton,children:"Download"})]})]})]})}},6537:function(e){e.exports={Forge:"Forge_Forge__dDZFe",Footer:"Forge_Footer__ghw3O",NameInput:"Forge_NameInput__lpcsg",DownloadButton:"Forge_DownloadButton__CnFTn",ListArea:"Forge_ListArea__OpY_R",FileList:"Forge_FileList__9JOyh",EmptyMessage:"Forge_EmptyMessage__Lrlud",AddButton:"Forge_AddButton__09pXD",Header:"Forge_Header__7t3Qc",File:"Forge_File__Mn05Y",DeleteButton:"Forge_DeleteButton__Csfdg",IconContainer:"Forge_IconContainer__AgM_T",PreviewIcon:"Forge_PreviewIcon__HFERe",Path:"Forge_Path__GZs81",HeaderLink:"Forge_HeaderLink__fEDGG",FooterLink:"Forge_FooterLink__gznaM"}}},function(e){e.O(0,[359,51,212,516,240,699,634,971,117,744],function(){return e(e.s=9343)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/page-8de0c0ea0a779b3f.js b/docs/_next/static/chunks/app/page-8de0c0ea0a779b3f.js deleted file mode 100644 index a9ede98..0000000 --- a/docs/_next/static/chunks/app/page-8de0c0ea0a779b3f.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{9343:function(e,t,i){Promise.resolve().then(i.bind(i,9330))},9330:function(e,t,i){"use strict";i.d(t,{Forge:function(){return j}});var n=i(7437),a=i(2265),s=i(7380),r=i(7635),l=i.n(r),o=i(12),m=i(1124),p=i.n(m),c=i(9089),u=i(2744),d=i(8637),g=i(1273),f=i(7780),y=i(6537),h=i.n(y);function _(e){let t=e.split("/"),i="",n="";return(t.length>1?(i=t.slice(0,-1).join("/"),n=t[t.length-1]):(i="",n=t[0]),i)?"".concat(i,"/").concat(n):(/\.(l|m|h)(male|female|bioderm)\.png$/i.test(n)||/^(vehicle|weapon)_.+png$/i.test(n)||/^dcase\d\d\.png$/i.test(n)?i="textures/skins":/\.(ter|spn)$/i.test(n)?i="terrains":/\.mis$/i.test(n)?i="missions":/\.dif$/i.test(n)&&(i="interiors"),i)?"".concat(i,"/").concat(n):n}function w(e){if(e.type){if(/^image\//i.test(e.type))return{mimeType:e.type,genericType:"image"};if(/^audio\//i.test(e.type))return{mimeType:e.type,genericType:"audio"}}if(/\.png$/i.test(e.name))return{mimeType:"image/png",genericType:"image"};if(/\.jpg$/i.test(e.name))return{mimeType:"image/jpeg",genericType:"image"};if(/\.bmp$/i.test(e.name))return{mimeType:"image/bmp",genericType:"image"};if(/\.webp$/i.test(e.name))return{mimeType:"image/webp",genericType:"image"};if(/\.gif$/i.test(e.name))return{mimeType:"image/gif",genericType:"image"};if(/\.tiff$/i.test(e.name))return{mimeType:"image/tiff",genericType:"image"};if(/\.svg$/i.test(e.name))return{mimeType:"image/svg+xml",genericType:"image"};else if(/\.wav$/i.test(e.name))return{mimeType:"audio/wav",genericType:"audio"};else if(/\.mp3$/i.test(e.name))return{mimeType:"audio/mpeg",genericType:"audio"};return e.type?{mimeType:e.type,genericType:null}:null}function v(e){var t,i;let{file:a,onDelete:s,onRename:r}=e,l=null;return a.dataUri&&(null===(t=a.type)||void 0===t?void 0:t.genericType)==="image"?l=(0,n.jsx)("img",{className:h().PreviewIcon,src:a.dataUri,width:24,alt:""}):(null===(i=a.type)||void 0===i?void 0:i.genericType)==="audio"?l=(0,n.jsx)(f.Eow,{}):/\.cs$/i.test(a.path)?l=(0,n.jsx)(d.HXH,{}):/\.mis$/i.test(a.path)?l=(0,n.jsx)(g.W95,{}):/\.dif$/i.test(a.path)?l=(0,n.jsx)(u.JEK,{}):/\.ter$/i.test(a.path)?l=(0,n.jsx)(u.seb,{}):/\.spn$/i.test(a.path)&&(l=(0,n.jsx)(g.ekl,{})),(0,n.jsxs)("div",{className:h().File,children:[(0,n.jsx)("span",{className:h().IconContainer,children:l})," ",(0,n.jsx)("span",{className:h().Path,onDoubleClick:()=>{let e=window.prompt("Rename file (".concat(a.path,"):"),a.path);e&&(e=e.trim().replace(/\/+/g,"/").replace(/^\//,"").replace(/\/$/,"").trim())&&e!==a.path&&r(a.path,e)},children:a.path}),(0,n.jsx)("button",{className:h().DeleteButton,type:"button","aria-label":"Delete",title:"Delete",onClick:e=>{s(a.path)},children:(0,n.jsx)(c.AMf,{})})]})}async function x(e){let t=await l().loadAsync(e),i=new Map;for(let e in t.files){let s=t.files[e];if(!s.dir){var n,a;let t={path:e=_(e),buffer:await s.async("arraybuffer"),dataUri:null,date:s.date,unixPermissions:s.unixPermissions,dosPermissions:s.dosPermissions,type:w(s)};if((null===(n=t.type)||void 0===n?void 0:n.genericType)==="image"||(null===(a=t.type)||void 0===a?void 0:a.genericType)==="audio"){let e=await s.async("base64");t.dataUri="data:".concat(t.type.mimeType,";base64,").concat(e)}i.set(e,t)}}return i}async function T(e){var t,i;let n;let a=new Map;if(e.path)(n=e.path).startsWith("/")&&(n=n.slice(1));else{if(!e.name)return a;n=e.name}n=_(n);let s=await new Promise((t,i)=>{let n=new FileReader;n.addEventListener("load",e=>{t(e.target.result)}),n.readAsArrayBuffer(e)}),r={path:n,buffer:s,dataUri:null,date:null,unixPermissions:null,dosPermissions:null,type:w(e)};if((null===(t=r.type)||void 0===t?void 0:t.genericType)==="image"||(null===(i=r.type)||void 0===i?void 0:i.genericType)==="audio"){let e=function(e){for(var t,i,n,a,s="",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=new Uint8Array(e),o=l.byteLength,m=o%3,p=o-m,c=0;c>18]+r[(258048&a)>>12]+r[(4032&a)>>6]+r[63&a];return 1==m?s+=r[t=(252&(a=l[p]))>>2]+r[(3&a)<<4]+"==":2==m&&(s+=r[t=(64512&(a=l[p]<<8|l[p+1]))>>10]+r[(1008&a)>>4]+r[(15&a)<<2]+"="),s}(s);r.dataUri="data:".concat(r.type.mimeType,";base64,").concat(e)}return a.set(n,r),a}async function F(e){return/\.(zip|vl2)$/i.test(e.name)?x(e):T(e)}async function b(e,t){let i=await e.generateAsync({type:"blob",mimeType:"application/octet-stream"});(0,o.saveAs)(i,t)}function j(){let[e,t]=(0,a.useState)(()=>[]),[i,r]=(0,a.useState)(()=>new Map),o=(0,a.useCallback)(async e=>{let i=[],n=new Map;(await Promise.all(e.map(e=>F(e)))).forEach(e=>{e.forEach((e,t)=>{n.has(t)&&i.push({type:"overwrite",path:t}),n.set(t,e)})}),r(e=>new Map([...Array.from(e.entries()),...Array.from(n.entries())])),t(e=>[...e,...i])},[]),{getRootProps:m,getInputProps:c,open:u,isDragActive:d}=(0,s.uI)({noClick:!0,onDrop:o}),g=(0,a.useMemo)(()=>p()(Array.from(i.keys()),[e=>e.toLowerCase()],["asc"]).map(e=>i.get(e)),[i]),f=(0,n.jsx)("button",{type:"button",className:h().AddButton,"aria-label":"Add files",title:"Add files",onClick:u,children:"+"}),y=(0,a.useCallback)(e=>{r(t=>{let i=new Map(t);return i.delete(e),i})},[]),_=(0,a.useCallback)((e,t)=>{r(i=>{let n={...i.get(e),path:t},a=new Map(i);return a.delete(e),a.set(t,n),a})},[]);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("section",{className:h().Forge,...m(),children:[(0,n.jsxs)("header",{className:h().Header,children:[(0,n.jsx)("img",{width:210,height:188,src:"/vl2-forge/logo-md.png",alt:"VL2 Forge"}),f]}),(0,n.jsx)("input",{...c()}),(0,n.jsx)("div",{className:h().ListArea,children:g.length?(0,n.jsx)("ul",{className:h().FileList,children:g.map(e=>(0,n.jsx)("li",{children:(0,n.jsx)(v,{file:e,onDelete:y,onRename:_})},e.path))}):(0,n.jsx)("div",{className:h().EmptyMessage,children:"Drop files onto the page or press the add button. No need to extract existing .vl2 files first –\xa0just drop ‘em in and it’ll do that for you!"})})]}),(0,n.jsx)("footer",{className:h().Footer,children:(0,n.jsxs)("form",{onSubmit:async e=>{e.preventDefault();let t=e.target.elements.fileName,i=t.value.trim();if(i){if(g.length){let e=function(e){let t=new(l());for(let i of e)t.file(i.path,i.buffer,{date:i.date,dosPermissions:i.dosPermissions,unixPermissions:i.unixPermissions});return t}(g);await b(e,"".concat(i,".vl2"))}else window.alert("Add some files!")}else window.alert("Name thy file."),t.focus()},children:[(0,n.jsx)("div",{className:h().NameInput,children:(0,n.jsx)("input",{name:"fileName",type:"text",placeholder:"name thy file",onChange:e=>{/\.vl2$/i.test(e.target.value)&&(e.target.value=e.target.value.slice(0,-4))}})}),(0,n.jsx)("button",{type:"submit",className:h().DownloadButton,children:"Download"})]})})]})}},6537:function(e){e.exports={Forge:"Forge_Forge__dDZFe",Footer:"Forge_Footer__ghw3O",NameInput:"Forge_NameInput__lpcsg",DownloadButton:"Forge_DownloadButton__CnFTn",ListArea:"Forge_ListArea__OpY_R",FileList:"Forge_FileList__9JOyh",EmptyMessage:"Forge_EmptyMessage__Lrlud",AddButton:"Forge_AddButton__09pXD",Header:"Forge_Header__7t3Qc",File:"Forge_File__Mn05Y",DeleteButton:"Forge_DeleteButton__Csfdg",IconContainer:"Forge_IconContainer__AgM_T",PreviewIcon:"Forge_PreviewIcon__HFERe",Path:"Forge_Path__GZs81"}}},function(e){e.O(0,[359,51,212,516,240,699,634,971,117,744],function(){return e(e.s=9343)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/css/1febfadc1a5e3d46.css b/docs/_next/static/css/1febfadc1a5e3d46.css new file mode 100644 index 0000000..34c6222 --- /dev/null +++ b/docs/_next/static/css/1febfadc1a5e3d46.css @@ -0,0 +1 @@ +.Forge_Forge__dDZFe{flex:1 0 auto;display:grid;grid-template-columns:auto 1fr;grid-template-rows:1fr;align-content:stretch;font-family:var(--font-departure),monospace;color:#fff;text-shadow:2px 1px 0 #000;padding:20px;grid-gap:20px;gap:20px}.Forge_Footer__ghw3O{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px;padding:40px;background:rgba(59,55,49,.8);border-image-slice:18 26 26 23;border-image-width:16px 16px 16px 16px;border-image-outset:0 0 0 0;border-image-repeat:round repeat;border-image-source:url(/vl2-forge/_next/static/media/border.d6506fa8.png);border-style:solid;box-shadow:0 0 8px rgba(0,0,0,.3),inset 0 0 12px rgba(0,0,0,.8)}.Forge_Footer__ghw3O:before{content:"";position:absolute;top:-3px;left:-3px;right:-3px;bottom:-3px;border-color:rgba(255,250,234,.4) hsla(0,0%,9%,.5) hsla(0,0%,9%,.5) rgba(255,250,234,.4);border-style:solid;border-width:4px 4px 5px;pointer-events:none}.Forge_Footer__ghw3O:after{display:block;content:"";position:absolute;top:10px;left:10px;right:10px;bottom:10px;border-color:hsla(0,0%,9%,.5) rgba(255,250,234,.4) rgba(255,250,234,.4) hsla(0,0%,9%,.5);border-style:solid;border-width:4px;pointer-events:none}.Forge_Footer__ghw3O form{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:12px;margin:0 auto}.Forge_NameInput__lpcsg{position:relative;font-size:18px;font-family:var(--font-lora);font-weight:500;font-style:italic;line-height:1.25}.Forge_NameInput__lpcsg input{display:block;min-width:240px;max-width:100%;min-height:46px;background:#fff;color:#333;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;line-height:inherit;padding:2px 50px 2px 0;text-indent:10px}.Forge_NameInput__lpcsg:after{display:grid;place-content:center;content:".vl2";position:absolute;top:0;right:0;bottom:0;width:50px;color:#999}.Forge_DownloadButton__CnFTn{border:0;margin:0;padding:0 12px;min-width:128px;min-height:46px;font-family:var(--font-alagard),monospace;font-size:24px;font-style:normal;font-weight:400;line-height:1;border-radius:2px;background:url(/vl2-forge/_next/static/media/button.69ed12fe.png) transparent;background-repeat:no-repeat;background-size:150% 190%;background-position:50% 50%;border-color:rgba(255,145,105,.5) rgba(36,14,14,.7) rgba(36,14,14,.7) rgba(255,178,150,.5);border-style:solid;border-width:3px;color:#fff;text-shadow:0 0 5px rgba(255,226,82,.358),2px 3px 0 rgba(0,0,0,.5);cursor:pointer}.Forge_ListArea__OpY_R{display:flex;align-items:center;justify-content:center;padding:32px;background:rgba(2,2,84,.252);border-radius:12px}.Forge_FileList__9JOyh{width:100%;display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}.Forge_EmptyMessage__Lrlud{align-self:center;text-align:center;text-wrap:balance;line-height:1.75}.Forge_AddButton__09pXD{border:0;margin:0;padding:0 0 2px;min-width:48px;min-height:48px;font-family:var(--font-departure),monospace;font-size:40px;font-style:inherit;font-weight:inherit;line-height:1;border-radius:3px;background:url(/vl2-forge/_next/static/media/button.69ed12fe.png) transparent;background-repeat:no-repeat;background-size:150% 190%;background-position:50% 50%;border-color:rgba(255,145,105,.5) rgba(36,14,14,.7) rgba(36,14,14,.7) rgba(255,178,150,.5);border-style:solid;border-width:3px;color:#fff;text-shadow:0 0 5px rgba(255,226,82,.358),2px 3px 0 rgba(0,0,0,.5);cursor:pointer;vertical-align:middle}.Forge_Header__7t3Qc{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:40px}.Forge_File__Mn05Y{display:flex;align-items:center;gap:12px}.Forge_DeleteButton__Csfdg{flex:0 0 auto;border:0;background:transparent;display:grid;place-content:center;font-size:24px;margin:0;padding:0;color:rgba(0,0,0,.4);cursor:pointer}.Forge_DeleteButton__Csfdg:hover{color:#ff5959}.Forge_DeleteButton__Csfdg svg{pointer-events:none}.Forge_IconContainer__AgM_T{flex:0 0 auto;display:grid;place-content:center;width:24px;font-size:22px;color:hsla(0,0%,100%,.9)}.Forge_PreviewIcon__HFERe{width:auto;height:auto;max-width:100%;max-height:24px;border:1px solid #000}.Forge_Path__GZs81{background:rgba(0,0,0,.3);padding:3px 8px;border-radius:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.Forge_HeaderLink__fEDGG{display:none;margin-left:0;place-content:center;flex:0 0 auto;color:rgba(53,57,75,.8);text-decoration:none;font-size:48px}.Forge_HeaderLink__fEDGG svg{border:0}.Forge_FooterLink__gznaM{display:grid;margin-left:0;place-content:center;flex:0 0 auto;color:hsla(0,0%,100%,.4);font-size:40px}@media (max-width:767px){.Forge_Forge__dDZFe{grid-template-columns:1fr;grid-template-rows:auto 1fr;padding:12px;gap:12px}.Forge_Header__7t3Qc{flex-direction:row}.Forge_Header__7t3Qc img{width:auto;max-height:96px}.Forge_HeaderLink__fEDGG{display:grid}.Forge_FooterLink__gznaM{display:none}} \ No newline at end of file diff --git a/docs/_next/static/css/2794c0e5d9dad442.css b/docs/_next/static/css/2794c0e5d9dad442.css deleted file mode 100644 index 00b22a9..0000000 --- a/docs/_next/static/css/2794c0e5d9dad442.css +++ /dev/null @@ -1 +0,0 @@ -.Forge_Forge__dDZFe{flex:1 0 auto;display:grid;grid-template-columns:auto 1fr;grid-template-rows:1fr;align-content:stretch;font-family:var(--font-departure),monospace;color:#fff;text-shadow:2px 1px 0 #000;padding:20px;grid-gap:20px;gap:20px}.Forge_Footer__ghw3O{position:relative;display:flex;align-items:center;justify-content:center;padding:40px;background:rgba(59,55,49,.8);border-image-slice:18 26 26 23;border-image-width:16px 16px 16px 16px;border-image-outset:0 0 0 0;border-image-repeat:round repeat;border-image-source:url(/vl2-forge/_next/static/media/border.d6506fa8.png);border-style:solid;box-shadow:0 0 8px rgba(0,0,0,.3),inset 0 0 12px rgba(0,0,0,.8)}.Forge_Footer__ghw3O:before{top:-3px;left:-3px;right:-3px;bottom:-3px;border-color:rgba(255,250,234,.4) hsla(0,0%,9%,.5) hsla(0,0%,9%,.5) rgba(255,250,234,.4);border-style:solid;border-width:4px 4px 5px}.Forge_Footer__ghw3O:after,.Forge_Footer__ghw3O:before{display:block;content:"";position:absolute;pointer-events:none}.Forge_Footer__ghw3O:after{top:10px;left:10px;right:10px;bottom:10px;border-color:hsla(0,0%,9%,.5) rgba(255,250,234,.4) rgba(255,250,234,.4) hsla(0,0%,9%,.5);border-style:solid;border-width:4px}.Forge_Footer__ghw3O form{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:12px}.Forge_NameInput__lpcsg{position:relative;font-size:18px;font-family:var(--font-lora);font-weight:500;font-style:italic;line-height:1.25}.Forge_NameInput__lpcsg input{display:block;min-width:240px;max-width:100%;min-height:46px;background:#fff;color:#333;font-size:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;line-height:inherit;padding:2px 50px 2px 0;text-indent:10px}.Forge_NameInput__lpcsg:after{display:grid;place-content:center;content:".vl2";position:absolute;top:0;right:0;bottom:0;width:50px;color:#999}.Forge_DownloadButton__CnFTn{border:0;margin:0;padding:0 12px;min-width:128px;min-height:46px;font-family:var(--font-alagard),monospace;font-size:24px;font-style:normal;font-weight:400;line-height:1;border-radius:2px;background:url(/vl2-forge/_next/static/media/button.69ed12fe.png) transparent;background-repeat:no-repeat;background-size:150% 190%;background-position:50% 50%;border-color:rgba(255,145,105,.5) rgba(36,14,14,.7) rgba(36,14,14,.7) rgba(255,178,150,.5);border-style:solid;border-width:3px;color:#fff;text-shadow:0 0 5px rgba(255,226,82,.358),2px 3px 0 rgba(0,0,0,.5);cursor:pointer}.Forge_ListArea__OpY_R{display:flex;align-items:center;justify-content:center;padding:32px;background:rgba(2,2,84,.252);border-radius:12px}.Forge_FileList__9JOyh{width:100%;display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}.Forge_EmptyMessage__Lrlud{align-self:center;text-align:center;text-wrap:balance;line-height:1.75}.Forge_AddButton__09pXD{border:0;margin:0;padding:0 0 2px;min-width:48px;min-height:48px;font-family:var(--font-departure),monospace;font-size:40px;font-style:inherit;font-weight:inherit;line-height:1;border-radius:3px;background:url(/vl2-forge/_next/static/media/button.69ed12fe.png) transparent;background-repeat:no-repeat;background-size:150% 190%;background-position:50% 50%;border-color:rgba(255,145,105,.5) rgba(36,14,14,.7) rgba(36,14,14,.7) rgba(255,178,150,.5);border-style:solid;border-width:3px;color:#fff;text-shadow:0 0 5px rgba(255,226,82,.358),2px 3px 0 rgba(0,0,0,.5);cursor:pointer;vertical-align:middle}.Forge_Header__7t3Qc{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:40px}.Forge_File__Mn05Y{display:flex;align-items:center;gap:12px}.Forge_DeleteButton__Csfdg{flex:0 0 auto;border:0;background:transparent;display:grid;place-content:center;font-size:24px;margin:0;padding:0;color:rgba(0,0,0,.4);cursor:pointer}.Forge_DeleteButton__Csfdg:hover{color:#ff5959}.Forge_DeleteButton__Csfdg svg{pointer-events:none}.Forge_IconContainer__AgM_T{flex:0 0 auto;display:grid;place-content:center;width:24px;font-size:22px;color:hsla(0,0%,100%,.9)}.Forge_PreviewIcon__HFERe{width:auto;height:auto;max-width:100%;max-height:24px;border:1px solid #000}.Forge_Path__GZs81{background:rgba(0,0,0,.3);padding:3px 8px;border-radius:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:767px){.Forge_Forge__dDZFe{grid-template-columns:1fr;grid-template-rows:auto 1fr;padding:12px;gap:12px}.Forge_Header__7t3Qc{flex-direction:row}.Forge_Header__7t3Qc img{width:auto;max-height:96px}} \ No newline at end of file diff --git a/docs/_next/static/NPB9pL4Yl8_1AmmjUFpwy/_buildManifest.js b/docs/_next/static/mP5hGUGSmu-p0M7gsH5Gb/_buildManifest.js similarity index 100% rename from docs/_next/static/NPB9pL4Yl8_1AmmjUFpwy/_buildManifest.js rename to docs/_next/static/mP5hGUGSmu-p0M7gsH5Gb/_buildManifest.js diff --git a/docs/_next/static/NPB9pL4Yl8_1AmmjUFpwy/_ssgManifest.js b/docs/_next/static/mP5hGUGSmu-p0M7gsH5Gb/_ssgManifest.js similarity index 100% rename from docs/_next/static/NPB9pL4Yl8_1AmmjUFpwy/_ssgManifest.js rename to docs/_next/static/mP5hGUGSmu-p0M7gsH5Gb/_ssgManifest.js diff --git a/docs/index.html b/docs/index.html index a22ded5..08c30fa 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -VL2 Forge
\ No newline at end of file +VL2 Forge
\ No newline at end of file diff --git a/docs/index.txt b/docs/index.txt index ac19aa9..d049f11 100644 --- a/docs/index.txt +++ b/docs/index.txt @@ -1,6 +1,6 @@ -2:I[9330,["51","static/chunks/795d4814-53044e1cf9e42373.js","212","static/chunks/59650de3-d12eb82ab0e85613.js","516","static/chunks/f7333993-8f32bf8e5c1e3f32.js","240","static/chunks/53c13509-17317f399c482fd7.js","699","static/chunks/8e1d74a4-8e519121d6db0557.js","634","static/chunks/634-d90cc75f8d4e4c06.js","931","static/chunks/app/page-8de0c0ea0a779b3f.js"],"Forge"] +2:I[9330,["51","static/chunks/795d4814-53044e1cf9e42373.js","212","static/chunks/59650de3-d12eb82ab0e85613.js","516","static/chunks/f7333993-8f32bf8e5c1e3f32.js","240","static/chunks/53c13509-17317f399c482fd7.js","699","static/chunks/8e1d74a4-2e60cc37d7b04363.js","634","static/chunks/634-d90cc75f8d4e4c06.js","931","static/chunks/app/page-65a64361088201e6.js"],"Forge"] 3:I[4707,[],""] 4:I[6423,[],""] -0:["NPB9pL4Yl8_1AmmjUFpwy",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{}],[["$","link","0",{"rel":"stylesheet","href":"/vl2-forge/_next/static/css/2794c0e5d9dad442.css","precedence":"next","crossOrigin":"$undefined"}]]],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/vl2-forge/_next/static/css/9805353de4b13899.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","className":"__variable_6dd175 __variable_60c549 __variable_b97ccf","children":["$","body",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L5",null]]]] +0:["mP5hGUGSmu-p0M7gsH5Gb",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{}],[["$","link","0",{"rel":"stylesheet","href":"/vl2-forge/_next/static/css/1febfadc1a5e3d46.css","precedence":"next","crossOrigin":"$undefined"}]]],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/vl2-forge/_next/static/css/9805353de4b13899.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","className":"__variable_6dd175 __variable_60c549 __variable_b97ccf","children":["$","body",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L5",null]]]] 5:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"VL2 Forge"}],["$","meta","3",{"name":"description","content":"Create .vl2 files for Tribes 2"}],["$","meta","4",{"name":"next-size-adjust"}]] 1:null diff --git a/src/Forge.module.css b/src/Forge.module.css index d987694..846e73c 100644 --- a/src/Forge.module.css +++ b/src/Forge.module.css @@ -14,8 +14,10 @@ .Footer { position: relative; display: flex; + flex-wrap: wrap; align-items: center; justify-content: center; + gap: 12px; padding: 40px; background: rgba(59, 55, 49, 0.8); @@ -30,7 +32,6 @@ } .Footer::before { - display: block; content: ""; position: absolute; top: -3px; @@ -65,6 +66,7 @@ justify-content: center; flex-wrap: wrap; gap: 12px; + margin: 0 auto; } .NameInput { @@ -240,6 +242,29 @@ user-select: none; } +.HeaderLink { + display: none; + margin-left: 0; + place-content: center; + flex: 0 0 auto; + color: rgba(53, 57, 75, 0.8); + text-decoration: none; + font-size: 48px; +} + +.HeaderLink svg { + border: 0; +} + +.FooterLink { + display: grid; + margin-left: 0; + place-content: center; + flex: 0 0 auto; + color: rgba(255, 255, 255, 0.4); + font-size: 40px; +} + @media (max-width: 767px) { .Forge { grid-template-columns: 1fr; @@ -256,4 +281,12 @@ width: auto; max-height: 96px; } + + .HeaderLink { + display: grid; + } + + .FooterLink { + display: none; + } } diff --git a/src/Forge.tsx b/src/Forge.tsx index 2ff0783..53963c4 100644 --- a/src/Forge.tsx +++ b/src/Forge.tsx @@ -4,7 +4,7 @@ import { useDropzone } from "react-dropzone"; import JSZip from "jszip"; import { saveAs } from "file-saver"; import orderBy from "lodash.orderby"; -import { FaTrashAlt } from "react-icons/fa"; +import { FaTrashAlt, FaGithub } from "react-icons/fa"; import { MdCastle, MdTerrain } from "react-icons/md"; import { LuScrollText } from "react-icons/lu"; import { FaClipboardList, FaMapPin } from "react-icons/fa6"; @@ -335,6 +335,12 @@ export function Forge() { <>
+ + +