diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..b58b603
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/frontend.iml b/.idea/frontend.iml
new file mode 100644
index 0000000..24643cc
--- /dev/null
+++ b/.idea/frontend.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..f3d93d7
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml
new file mode 100644
index 0000000..9d98b43
--- /dev/null
+++ b/.idea/watcherTasks.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/innovagrant.zip b/innovagrant.zip
new file mode 100644
index 0000000..0cb42c6
Binary files /dev/null and b/innovagrant.zip differ
diff --git a/package-lock.json b/package-lock.json
index 8b2ff54..e76274e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,10 +9,13 @@
"version": "0.0.1",
"devDependencies": {
"@sveltejs/adapter-auto": "^2.0.0",
+ "@sveltejs/adapter-static": "^2.0.3",
"@sveltejs/kit": "^1.20.4",
"prettier": "^2.8.0",
"prettier-plugin-svelte": "^2.10.1",
+ "sass": "^1.69.3",
"svelte": "^4.0.5",
+ "svelte-moveable": "^0.43.4",
"vite": "^4.4.2"
}
},
@@ -29,6 +32,48 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@cfcs/core": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/@cfcs/core/-/core-0.0.6.tgz",
+ "integrity": "sha512-FxfJMwoLB8MEMConeXUCqtMGqxdtePQxRBOiGip9ULcYYam3WfCgoY6xdnMaSkYvRvmosp5iuG+TiPofm65+Pw==",
+ "dev": true,
+ "dependencies": {
+ "@egjs/component": "^3.0.2"
+ }
+ },
+ "node_modules/@daybrush/utils": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/@daybrush/utils/-/utils-1.13.0.tgz",
+ "integrity": "sha512-ALK12C6SQNNHw1enXK+UO8bdyQ+jaWNQ1Af7Z3FNxeAwjYhQT7do+TRE4RASAJ3ObaS2+TJ7TXR3oz2Gzbw0PQ==",
+ "dev": true
+ },
+ "node_modules/@egjs/agent": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/@egjs/agent/-/agent-2.4.3.tgz",
+ "integrity": "sha512-XvksSENe8wPeFlEVouvrOhKdx8HMniJ3by7sro2uPF3M6QqWwjzVcmvwoPtdjiX8O1lfRoLhQMp1a7NGlVTdIA==",
+ "dev": true
+ },
+ "node_modules/@egjs/children-differ": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@egjs/children-differ/-/children-differ-1.0.1.tgz",
+ "integrity": "sha512-DRvyqMf+CPCOzAopQKHtW+X8iN6Hy6SFol+/7zCUiE5y4P/OB8JP8FtU4NxtZwtafvSL4faD5KoQYPj3JHzPFQ==",
+ "dev": true,
+ "dependencies": {
+ "@egjs/list-differ": "^1.0.0"
+ }
+ },
+ "node_modules/@egjs/component": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@egjs/component/-/component-3.0.4.tgz",
+ "integrity": "sha512-sXA7bGbIeLF2OAw/vpka66c6QBBUPcA4UUhR4WGJfnp2XWdiI8QrnJGJMr/UxpE/xnevX9tN3jvNPlW8WkHl3g==",
+ "dev": true
+ },
+ "node_modules/@egjs/list-differ": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@egjs/list-differ/-/list-differ-1.0.1.tgz",
+ "integrity": "sha512-OTFTDQcWS+1ZREOdCWuk5hCBgYO4OsD30lXcOCyVOAjXMhgL5rBRDnt/otb6Nz8CzU0L/igdcaQBDLWc4t9gvg==",
+ "dev": true
+ },
"node_modules/@esbuild/android-arm": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
@@ -444,6 +489,34 @@
"integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==",
"dev": true
},
+ "node_modules/@scena/dragscroll": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@scena/dragscroll/-/dragscroll-1.4.0.tgz",
+ "integrity": "sha512-3O8daaZD9VXA9CP3dra6xcgt/qrm0mg0xJCwiX6druCteQ9FFsXffkF8PrqxY4Z4VJ58fFKEa0RlKqbsi/XnRA==",
+ "dev": true,
+ "dependencies": {
+ "@daybrush/utils": "^1.6.0",
+ "@scena/event-emitter": "^1.0.2"
+ }
+ },
+ "node_modules/@scena/event-emitter": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@scena/event-emitter/-/event-emitter-1.0.5.tgz",
+ "integrity": "sha512-AzY4OTb0+7ynefmWFQ6hxDdk0CySAq/D4efljfhtRHCOP7MBF9zUfhKG3TJiroVjASqVgkRJFdenS8ArZo6Olg==",
+ "dev": true,
+ "dependencies": {
+ "@daybrush/utils": "^1.1.1"
+ }
+ },
+ "node_modules/@scena/matrix": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@scena/matrix/-/matrix-1.1.1.tgz",
+ "integrity": "sha512-JVKBhN0tm2Srl+Yt+Ywqu0oLgLcdemDQlD1OxmN9jaCTwaFPZ7tY8n6dhVgMEaR9qcR7r+kAlMXnSfNyYdE+Vg==",
+ "dev": true,
+ "dependencies": {
+ "@daybrush/utils": "^1.4.0"
+ }
+ },
"node_modules/@sveltejs/adapter-auto": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.0.tgz",
@@ -456,6 +529,15 @@
"@sveltejs/kit": "^1.0.0"
}
},
+ "node_modules/@sveltejs/adapter-static": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-2.0.3.tgz",
+ "integrity": "sha512-VUqTfXsxYGugCpMqQv1U0LIdbR3S5nBkMMDmpjGVJyM6Q2jHVMFtdWJCkeHMySc6mZxJ+0eZK3T7IgmUCDrcUQ==",
+ "dev": true,
+ "peerDependencies": {
+ "@sveltejs/kit": "^1.5.0"
+ }
+ },
"node_modules/@sveltejs/kit": {
"version": "1.25.2",
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.25.2.tgz",
@@ -551,6 +633,19 @@
"node": ">=0.4.0"
}
},
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/aria-query": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
@@ -569,6 +664,54 @@
"dequal": "^2.0.3"
}
},
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
"node_modules/code-red": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz",
@@ -591,6 +734,71 @@
"node": ">= 0.6"
}
},
+ "node_modules/croact": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/croact/-/croact-1.0.4.tgz",
+ "integrity": "sha512-9GhvyzTY/IVUrMQ2iz/mzgZ8+NcjczmIo/t4FkC1CU0CEcau6v6VsEih4jkTa4ZmRgYTF0qXEZLObCzdDFplpw==",
+ "dev": true,
+ "dependencies": {
+ "@daybrush/utils": "^1.13.0",
+ "@egjs/list-differ": "^1.0.0"
+ }
+ },
+ "node_modules/croact-css-styled": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/croact-css-styled/-/croact-css-styled-1.1.9.tgz",
+ "integrity": "sha512-G7yvRiVJ3Eoj0ov2h2xR4312hpOzATay2dGS9clK8yJQothjH1sBXIyvOeRP5wBKD9mPcKcoUXPCPsl0tQog4w==",
+ "dev": true,
+ "dependencies": {
+ "@daybrush/utils": "^1.13.0",
+ "css-styled": "~1.0.8",
+ "framework-utils": "^1.1.0"
+ }
+ },
+ "node_modules/croact-moveable": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/croact-moveable/-/croact-moveable-0.7.2.tgz",
+ "integrity": "sha512-6Mi+02i04TnWLmvxzaoZVuBUoTd/9OhcMTfvuqO7y/htfrTjO68935AysPaWnN6FesHYFh6+6DaqgWt/DcS8Mg==",
+ "dev": true,
+ "dependencies": {
+ "@daybrush/utils": "^1.13.0",
+ "@egjs/agent": "^2.2.1",
+ "@egjs/children-differ": "^1.0.1",
+ "@egjs/list-differ": "^1.0.0",
+ "@scena/dragscroll": "^1.4.0",
+ "@scena/event-emitter": "^1.0.5",
+ "@scena/matrix": "^1.1.1",
+ "croact-css-styled": "^1.1.9",
+ "css-to-mat": "^1.1.1",
+ "framework-utils": "^1.1.0",
+ "gesto": "^1.19.0",
+ "overlap-area": "^1.1.0",
+ "react-css-styled": "^1.1.9",
+ "react-moveable": "~0.54.2"
+ },
+ "peerDependencies": {
+ "croact": "^1.0.4"
+ }
+ },
+ "node_modules/css-styled": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/css-styled/-/css-styled-1.0.8.tgz",
+ "integrity": "sha512-tCpP7kLRI8dI95rCh3Syl7I+v7PP+2JYOzWkl0bUEoSbJM+u8ITbutjlQVf0NC2/g4ULROJPi16sfwDIO8/84g==",
+ "dev": true,
+ "dependencies": {
+ "@daybrush/utils": "^1.13.0"
+ }
+ },
+ "node_modules/css-to-mat": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/css-to-mat/-/css-to-mat-1.1.1.tgz",
+ "integrity": "sha512-kvpxFYZb27jRd2vium35G7q5XZ2WJ9rWjDUMNT36M3Hc41qCrLXFM5iEKMGXcrPsKfXEN+8l/riB4QzwwwiEyQ==",
+ "dev": true,
+ "dependencies": {
+ "@daybrush/utils": "^1.13.0",
+ "@scena/matrix": "^1.0.0"
+ }
+ },
"node_modules/css-tree": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
@@ -697,6 +905,24 @@
"@types/estree": "^1.0.0"
}
},
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/framework-utils": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/framework-utils/-/framework-utils-1.1.0.tgz",
+ "integrity": "sha512-KAfqli5PwpFJ8o3psRNs8svpMGyCSAe8nmGcjQ0zZBWN2H6dZDnq+ABp3N3hdUmFeMrLtjOCTXD4yplUJIWceg==",
+ "dev": true
+ },
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -711,6 +937,28 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
+ "node_modules/gesto": {
+ "version": "1.19.2",
+ "resolved": "https://registry.npmjs.org/gesto/-/gesto-1.19.2.tgz",
+ "integrity": "sha512-i6OGsrR2GN7n2dQaUhY+LZ+AAZgBNg5/1kest/ST5VRRflfVl5bSfvOkJMDmKEUrGbKF6eIDkFz/DnCXJD4UMA==",
+ "dev": true,
+ "dependencies": {
+ "@daybrush/utils": "^1.13.0",
+ "@scena/event-emitter": "^1.0.2"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/globalyzer": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
@@ -723,6 +971,12 @@
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
"dev": true
},
+ "node_modules/immutable": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz",
+ "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==",
+ "dev": true
+ },
"node_modules/import-meta-resolve": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz",
@@ -733,6 +987,48 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
"node_modules/is-reference": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
@@ -742,6 +1038,24 @@
"@types/estree": "*"
}
},
+ "node_modules/keycode": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.1.tgz",
+ "integrity": "sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==",
+ "dev": true
+ },
+ "node_modules/keycon": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/keycon/-/keycon-1.4.0.tgz",
+ "integrity": "sha512-p1NAIxiRMH3jYfTeXRs2uWbVJ1WpEjpi8ktzUyBJsX7/wn2qu2VRXktneBLNtKNxJmlUYxRi9gOJt1DuthXR7A==",
+ "dev": true,
+ "dependencies": {
+ "@cfcs/core": "^0.0.6",
+ "@daybrush/utils": "^1.7.1",
+ "@scena/event-emitter": "^1.0.2",
+ "keycode": "^2.2.0"
+ }
+ },
"node_modules/kleur": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
@@ -787,6 +1101,19 @@
"node": ">=10.0.0"
}
},
+ "node_modules/moveable": {
+ "version": "0.51.2",
+ "resolved": "https://registry.npmjs.org/moveable/-/moveable-0.51.2.tgz",
+ "integrity": "sha512-m/mAwsnSkTmrbjSmX2Q3RZdeaC+nkObbZC8kDCl34TWX39mbS/BZszF6M1dj3DbPYSE5NQP7Y6DR8MIRBRIdKg==",
+ "dev": true,
+ "dependencies": {
+ "@daybrush/utils": "^1.13.0",
+ "@scena/event-emitter": "^1.0.5",
+ "croact": "^1.0.4",
+ "croact-moveable": "~0.7.2",
+ "react-moveable": "~0.54.2"
+ }
+ },
"node_modules/mri": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
@@ -829,6 +1156,24 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/overlap-area": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/overlap-area/-/overlap-area-1.1.0.tgz",
+ "integrity": "sha512-3dlJgJCaVeXH0/eZjYVJvQiLVVrPO4U1ZGqlATtx6QGO3b5eNM6+JgUKa7oStBTdYuGTk7gVoABCW6Tp+dhRdw==",
+ "dev": true,
+ "dependencies": {
+ "@daybrush/utils": "^1.7.1"
+ }
+ },
"node_modules/periscopic": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
@@ -846,6 +1191,18 @@
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
"dev": true
},
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/postcss": {
"version": "8.4.31",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
@@ -899,6 +1256,58 @@
"svelte": "^3.2.0 || ^4.0.0-next.0"
}
},
+ "node_modules/react-css-styled": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/react-css-styled/-/react-css-styled-1.1.9.tgz",
+ "integrity": "sha512-M7fJZ3IWFaIHcZEkoFOnkjdiUFmwd8d+gTh2bpqMOcnxy/0Gsykw4dsL4QBiKsxcGow6tETUa4NAUcmJF+/nfw==",
+ "dev": true,
+ "dependencies": {
+ "css-styled": "~1.0.8",
+ "framework-utils": "^1.1.0"
+ }
+ },
+ "node_modules/react-moveable": {
+ "version": "0.54.2",
+ "resolved": "https://registry.npmjs.org/react-moveable/-/react-moveable-0.54.2.tgz",
+ "integrity": "sha512-NGaVLbn0i9pb3+BWSKGWFqI/Mgm4+WMeWHxXXQ4Qi1tHxWCXrUrbGvpxEpt69G/hR7dez+/m68ex+fabjnvcUg==",
+ "dev": true,
+ "dependencies": {
+ "@daybrush/utils": "^1.13.0",
+ "@egjs/agent": "^2.2.1",
+ "@egjs/children-differ": "^1.0.1",
+ "@egjs/list-differ": "^1.0.0",
+ "@scena/dragscroll": "^1.4.0",
+ "@scena/event-emitter": "^1.0.5",
+ "@scena/matrix": "^1.1.1",
+ "css-to-mat": "^1.1.1",
+ "framework-utils": "^1.1.0",
+ "gesto": "^1.19.0",
+ "overlap-area": "^1.1.0",
+ "react-css-styled": "^1.1.9",
+ "react-selecto": "^1.25.0"
+ }
+ },
+ "node_modules/react-selecto": {
+ "version": "1.26.0",
+ "resolved": "https://registry.npmjs.org/react-selecto/-/react-selecto-1.26.0.tgz",
+ "integrity": "sha512-aBTZEYA68uE+o8TytNjTb2GpIn4oKEv0U4LIow3cspJQlF/PdAnBwkq9UuiKVuFluu5kfLQ7Keu3S2Tihlmw0g==",
+ "dev": true,
+ "dependencies": {
+ "selecto": "~1.26.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
"node_modules/rollup": {
"version": "3.29.4",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
@@ -927,6 +1336,41 @@
"node": ">=6"
}
},
+ "node_modules/sass": {
+ "version": "1.69.3",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.3.tgz",
+ "integrity": "sha512-X99+a2iGdXkdWn1akFPs0ZmelUzyAQfvqYc2P/MPTrJRuIRoTffGzT9W9nFqG00S+c8hXzVmgxhUuHFdrwxkhQ==",
+ "dev": true,
+ "dependencies": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/selecto": {
+ "version": "1.26.0",
+ "resolved": "https://registry.npmjs.org/selecto/-/selecto-1.26.0.tgz",
+ "integrity": "sha512-cEFKdv5rmkF6pf2OScQJllaNp4UJy/FvviB40ZaMSHrQCxC72X/Q6uhzW1tlb2RE+0danvUNJTs64cI9VXtUyg==",
+ "dev": true,
+ "dependencies": {
+ "@daybrush/utils": "^1.13.0",
+ "@egjs/children-differ": "^1.0.1",
+ "@scena/dragscroll": "^1.4.0",
+ "@scena/event-emitter": "^1.0.5",
+ "css-styled": "^1.0.8",
+ "css-to-mat": "^1.1.1",
+ "framework-utils": "^1.1.0",
+ "gesto": "^1.19.1",
+ "keycon": "^1.2.0",
+ "overlap-area": "^1.1.0"
+ }
+ },
"node_modules/set-cookie-parser": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz",
@@ -992,6 +1436,19 @@
"svelte": "^3.19.0 || ^4.0.0"
}
},
+ "node_modules/svelte-moveable": {
+ "version": "0.43.4",
+ "resolved": "https://registry.npmjs.org/svelte-moveable/-/svelte-moveable-0.43.4.tgz",
+ "integrity": "sha512-CkiOFODex7tp/qoUtq3TuVyV2J477tkkHLnE+KfRbK1a1l4jDRilV0+8gDQtt65TubskbrSX52x19NgpxlE1NA==",
+ "dev": true,
+ "dependencies": {
+ "framework-utils": "^1.1.0",
+ "moveable": "~0.51.2"
+ },
+ "peerDependencies": {
+ "svelte": "^3.54.0 || ^4.0.0"
+ }
+ },
"node_modules/tiny-glob": {
"version": "0.2.9",
"resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
@@ -1002,6 +1459,18 @@
"globrex": "^0.1.2"
}
},
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
"node_modules/totalist": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
diff --git a/package.json b/package.json
index 21d3e70..271adf8 100644
--- a/package.json
+++ b/package.json
@@ -11,10 +11,13 @@
},
"devDependencies": {
"@sveltejs/adapter-auto": "^2.0.0",
+ "@sveltejs/adapter-static": "^2.0.3",
"@sveltejs/kit": "^1.20.4",
"prettier": "^2.8.0",
"prettier-plugin-svelte": "^2.10.1",
+ "sass": "^1.69.3",
"svelte": "^4.0.5",
+ "svelte-moveable": "^0.43.4",
"vite": "^4.4.2"
},
"type": "module"
diff --git a/src/app.css b/src/app.css
index e69de29..bb0ab66 100644
--- a/src/app.css
+++ b/src/app.css
@@ -0,0 +1,49 @@
+html, body {
+ background-color: #171714;
+ color: #f9f5c3;
+ font-family: sans-serif;
+ justify-content: center;
+}
+
+div {
+ background-color: #171714;
+}
+
+header {
+ text-align: center;
+ width: 100%;
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ font-family: sans-serif;
+ font-size: 3em;
+ background-color: #0f1115;
+ justify-content: center;
+}
+
+header div, content div {
+ max-width: 800px;
+ margin: auto;
+}
+
+a:link, a:visited {
+ color: #f9f5c3;
+}
+header a:link {
+ color: #f9f5c3;
+ text-decoration: none;
+}
+
+header a:visited {
+ color: #f9f5c3;
+ text-decoration: none;
+}
+
+h1 {
+ color: #e6fbfb;
+ font-size: 2.5em;
+}
+h2 {
+ color: #e6fbfb;
+ font-size: 1.5em;
+ text-align: center;
+}
diff --git a/src/form.sass b/src/form.sass
new file mode 100644
index 0000000..32df705
--- /dev/null
+++ b/src/form.sass
@@ -0,0 +1,292 @@
+// colors
+
+$bg: #171714
+$vibrant: #E8474C
+
+$text: white
+$label: white
+
+$border: transparent
+$static: #222222
+$focus: #4E4E4E
+$active: white
+$inactive: #4E4E4E
+$error: #E8474C
+
+html
+ -webkit-font-smoothing: antialiased
+
+body
+ background-color: $bg
+ font-family: 'Titillium Web', sans-serif
+
+ @media screen and (min-width: 40em)
+ font-size: 1.25em
+
+%block
+ padding: .75em 1em
+ appearance: none
+ outline: none
+ line-height: normal
+ border-radius: 0
+ border: none
+ background: none
+ display: block
+
+%label
+ @extend %block
+ font-weight: bold
+ color: $label
+ padding:
+ top: 0
+ left: 0
+ letter-spacing: .025em
+ font-size: 1.125em
+ line-height: 1.25
+ position: relative
+ z-index: 100
+
+ .required &:after
+ content: '\0020*'
+ color: $error
+ font-weight: normal
+ font-size: .75em
+ vertical-align: top
+
+=stripes($color1: #555, $color2: transparent, $angle: 0deg, $stripe1-width: 25px, $stripe2-width: null)
+ @if $stripe2-width == null
+ $stripe2-width: $stripe1-width
+
+ $tile-size: ($stripe1-width + $stripe2-width) * 2
+ $stripe2-start: $stripe1-width / $tile-size * 100%
+ $stripe3-start: $stripe2-start + $stripe2-width / $tile-size * 100%
+ $stripe4-start: $stripe3-start + $stripe1-width / $tile-size * 100%
+
+ background-size: $tile-size $tile-size
+ background-image: linear-gradient($angle, $color1, $color1 $stripe2-start, $color2 $stripe2-start, $color2 $stripe3-start, $color1 $stripe3-start, $color1 $stripe4-start, $color2 $stripe4-start, $color2)
+ background-repeat: repeat
+
+%input
+ @extend %block
+ font: inherit
+ line-height: normal
+ width: 100%
+ box-sizing: border-box
+ background: $static
+ color: white
+ position: relative
+
+ &:placeholder
+ color: $label
+
+ &:-webkit-autofill
+ box-shadow: 0 0 0px 1000px $bg inset
+ -webkit-text-fill-color: white
+ border-top-color: $bg
+ border-left-color: $bg
+ border-right-color: $bg
+
+ &.required, &[required]
+
+ &:not(:focus):not(:active)
+ &.error, .error &
+ +stripes(rgba($vibrant,.5), transparent, 135deg, 2px, 2px)
+
+ &:active, &:focus
+ @extend %input-active
+
+%input-active
+ .form:not(.has-magic-focus) &
+ background: $focus
+
+%error
+ @extend %block
+ // color: red
+ position: absolute
+ bottom: 0
+ right: 0
+ z-index: 100
+ font-size: .625em
+ color: $label
+
+%checkbox
+ border: 0
+ clip: rect(0 0 0 0)
+ height: 1px
+ margin: -1px
+ overflow: hidden
+ padding: 0
+ position: absolute
+ width: 1px
+
+ + label
+ @extend %input
+ display: inline-block
+ width: auto
+ color: $inactive
+ position: relative
+ user-select: none
+ cursor: pointer
+
+ &:focus, &:active
+ + label
+ color: $focus
+
+ &:checked
+ + label
+ color: $active
+
+// &:focus, &:active
+// + label:before
+// box-shadow: inset 0px 0px 0px .5em $focus
+// color: $active
+
+%option
+ + label
+// &:before
+// border-radius: 50%
+// &:after
+// top: 1px
+// left: 1px
+// width: 1em
+// height: 1em
+// box-sizing: border-box
+// border: 3px solid $bg
+// border-radius: 50%
+// transform: none
+
+
+%button
+ @extend %block
+
+ font: inherit
+ // font-size: 1em
+ line-height: normal
+ cursor: pointer
+
+ background: $vibrant
+ color: white
+ font-weight: bold
+ width: auto
+ margin-left: auto
+ font-weight: bold
+ padding:
+ left: 2em
+ right: 2em
+
+ &:hover, &:focus, &:active
+ color: white
+ border-color: white
+
+ &:active
+ position: relative
+ top: 1px
+ left: 1px
+
+body
+ padding: 2em
+
+.form
+ max-width: 40em
+ margin: 0 auto
+ position: relative
+
+ display: flex
+ flex-flow: row wrap
+ justify-content: space-between
+ align-items: flex-end
+
+ .field
+ width: 100%
+ margin: 0 0 1.5em 0
+ &.half
+ @media screen and (min-width: 40em)
+ width: calc(50% - 1px)
+ &.last
+ margin-left: auto
+
+ .text-input
+ @extend %input
+
+ .textarea
+ @extend %input
+ max-width: 100%
+
+ .button
+ @extend %button
+
+ .label
+ @extend %label
+
+ .message
+ @extend %error
+
+ .select
+ @extend %input
+ text-indent: 0.01px
+ text-overflow: ""!important
+ &::-ms-expand
+ display: none
+
+ .checkboxes, .options
+ padding: 0
+ margin: 0
+ list-style-type: none
+ overflow: hidden
+
+ .checkbox, .option
+ float: left
+ margin: 1px
+
+ .checkbox-input
+ @extend %checkbox
+
+ .option-input
+ @extend %checkbox
+// @extend %option
+
+.customSelect
+ @extend %input
+ pointer-events: none
+ &:after
+ content: ''
+ pointer-events: none
+ width: .5em
+ height: .5em
+ border-style: solid
+ border-color: $label
+ border-width: 0 3px 3px 0
+ position: absolute
+ top: 50%
+ margin-top: -.625em
+ right: 1em
+ transform-origin: 0 0
+ transform: rotate(45deg)
+
+ &.customSelectHover
+
+ &.customSelectOpen
+
+ &.customSelectFocus
+ @extend %input-active
+ &:after
+ border-color: white
+
+
+ .customSelectInner
+
+.magic-focus
+ position: absolute
+ z-index: 0
+ width: 0
+ // height: 0
+ pointer-events: none
+ background: rgba(white,.15)
+
+ transition: top .2s, left .2s, width .2s
+
+ backface-visibility: hidden
+ transform-style: preserve-3d
+ will-change: top, left, width
+
+ transform-origin: 0 0
\ No newline at end of file
diff --git a/src/lib/ProjectForm.svelte b/src/lib/ProjectForm.svelte
new file mode 100644
index 0000000..36e4ce8
--- /dev/null
+++ b/src/lib/ProjectForm.svelte
@@ -0,0 +1,56 @@
+
+
diff --git a/src/lib/TreeView.svelte b/src/lib/TreeView.svelte
index 3739aa7..f7d6a79 100644
--- a/src/lib/TreeView.svelte
+++ b/src/lib/TreeView.svelte
@@ -7,9 +7,10 @@
+
+
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 5982b0a..975874a 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -1,2 +1,20 @@
-Welcome to SvelteKit
-Visit kit.svelte.dev to read the documentation
+
+
+
+
+
+
+
+
Project initialization
+
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/project/+page.svelte b/src/routes/project/+page.svelte
new file mode 100644
index 0000000..73227c8
--- /dev/null
+++ b/src/routes/project/+page.svelte
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+Declaration
+
+
+
+Budget
+
+
+
+
+Annex A2 Grant Application Form Full Application
+
+
+
\ No newline at end of file
diff --git a/static/logo.png b/static/logo.png
new file mode 100644
index 0000000..547da60
Binary files /dev/null and b/static/logo.png differ
diff --git a/svelte.config.js b/svelte.config.js
index 348fa32..7c609ca 100644
--- a/svelte.config.js
+++ b/svelte.config.js
@@ -1,4 +1,4 @@
-import adapter from '@sveltejs/adapter-auto';
+import adapter from '@sveltejs/adapter-static';
/** @type {import('@sveltejs/kit').Config} */
const config = {