diff --git a/Server/app/layouts/main.jl.html b/Server/app/layouts/main.jl.html index e0e9a3e..ea10148 100644 --- a/Server/app/layouts/main.jl.html +++ b/Server/app/layouts/main.jl.html @@ -10,6 +10,7 @@ + diff --git a/Server/app/resources/basic/BasicController.jl b/Server/app/resources/basic/BasicController.jl index 59302a7..88918a5 100644 --- a/Server/app/resources/basic/BasicController.jl +++ b/Server/app/resources/basic/BasicController.jl @@ -8,6 +8,11 @@ using Server.DatabaseSupport, Server.TemplateEditor controller = "basic" dict_layouts = Dict( :landing => generate_layout_html("main",controller,"landing",css=["landing"]), + :manifesto => generate_layout_html("main",controller,"manifesto"), + :join_us => generate_layout_html("main",controller,"join_us"), + :groups => generate_layout_html("main",controller,"groups"), + :cooperatives => generate_layout_html("main",controller,"cooperatives"), + :communities => generate_layout_html("main",controller,"communities"), ) #---General----------------------------------------------------- @@ -20,5 +25,40 @@ function landing() ) end +function manifesto() + html(:basic,:manifesto, layout = dict_layouts[:manifesto], context = @__MODULE__, + title = "LibSoc - Manifesto", + description = "" + ) +end + +function join_us() + html(:basic,:join_us, layout = dict_layouts[:join_us], context = @__MODULE__, + title = "LibSoc - Join us", + description = "" + ) +end + +function groups() + html(:basic,:groups, layout = dict_layouts[:groups], context = @__MODULE__, + title = "LibSoc - Groups", + description = "" + ) +end + +function cooperatives() + html(:basic,:cooperatives, layout = dict_layouts[:cooperatives], context = @__MODULE__, + title = "LibSoc - Cooperatives", + description = "" + ) +end + +function communities() + html(:basic,:communities, layout = dict_layouts[:communities], context = @__MODULE__, + title = "LibSoc - Communities", + description = "" + ) +end + end \ No newline at end of file diff --git a/Server/app/resources/basic/views/communities.jl.html b/Server/app/resources/basic/views/communities.jl.html new file mode 100644 index 0000000..6363163 --- /dev/null +++ b/Server/app/resources/basic/views/communities.jl.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Server/app/resources/basic/views/cooperatives.jl.html b/Server/app/resources/basic/views/cooperatives.jl.html new file mode 100644 index 0000000..f0b9aa6 --- /dev/null +++ b/Server/app/resources/basic/views/cooperatives.jl.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Server/app/resources/basic/views/groups.jl.html b/Server/app/resources/basic/views/groups.jl.html new file mode 100644 index 0000000..93ad53e --- /dev/null +++ b/Server/app/resources/basic/views/groups.jl.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Server/app/resources/basic/views/join_us.jl.html b/Server/app/resources/basic/views/join_us.jl.html new file mode 100644 index 0000000..862cd73 --- /dev/null +++ b/Server/app/resources/basic/views/join_us.jl.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Server/app/resources/basic/views/manifesto.jl.html b/Server/app/resources/basic/views/manifesto.jl.html new file mode 100644 index 0000000..336c349 --- /dev/null +++ b/Server/app/resources/basic/views/manifesto.jl.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Server/app/svelte/public/css/footer.css b/Server/app/svelte/public/css/footer.css index 882c2d6..b5d8e8f 100644 --- a/Server/app/svelte/public/css/footer.css +++ b/Server/app/svelte/public/css/footer.css @@ -5,7 +5,8 @@ footer { bottom: 0; width: 100%; height: auto; - background: var(--dark-green); + background: #5B6970;/*var(--dark-green);*/ + border-top: #DD1C1A solid 0.5rem; } footer p, footer a { @@ -53,6 +54,15 @@ footer h2 { margin-bottom: 0; } + +#tag-line { + position: relative; + margin: auto; + font-size: 1.2rem; + text-align: center; + padding-bottom: 1rem; +} + footer a { font-size: 1.2rem; color: #d8d8d8; @@ -105,7 +115,7 @@ footer p, footer label { } #contact-us-container { - width: 14rem; + width: 16rem; } #contact-us-container h3 { diff --git a/Server/app/svelte/public/css/navbar.css b/Server/app/svelte/public/css/navbar.css index e201e2c..4e10415 100644 --- a/Server/app/svelte/public/css/navbar.css +++ b/Server/app/svelte/public/css/navbar.css @@ -27,8 +27,10 @@ } #navbar-logo { - width: 3.16rem; + height: 3.5rem; + width: 3.5rem; object-fit: contain; + border-radius: 10rem; } #navbar-logo-text { diff --git a/Server/app/svelte/rollup.config.js b/Server/app/svelte/rollup.config.js index c32a982..72c9b3c 100644 --- a/Server/app/svelte/rollup.config.js +++ b/Server/app/svelte/rollup.config.js @@ -10,7 +10,6 @@ import watch from "rollup-plugin-watch"; const production = !process.env.ROLLUP_WATCH; - function serve() { let server; diff --git a/Server/app/svelte/src/communities-component.svelte b/Server/app/svelte/src/communities-component.svelte new file mode 100644 index 0000000..1de1de2 --- /dev/null +++ b/Server/app/svelte/src/communities-component.svelte @@ -0,0 +1,24 @@ + + + + + + + \ No newline at end of file diff --git a/Server/app/svelte/src/cooperatives-component.svelte b/Server/app/svelte/src/cooperatives-component.svelte new file mode 100644 index 0000000..5c00464 --- /dev/null +++ b/Server/app/svelte/src/cooperatives-component.svelte @@ -0,0 +1,24 @@ + + + + + + + \ No newline at end of file diff --git a/Server/app/svelte/src/footer/footer-component.svelte b/Server/app/svelte/src/footer/footer-component.svelte index db1d397..1668703 100644 --- a/Server/app/svelte/src/footer/footer-component.svelte +++ b/Server/app/svelte/src/footer/footer-component.svelte @@ -2,8 +2,12 @@
@@ -11,18 +15,19 @@ - +
diff --git a/Server/app/svelte/src/groups-component.svelte b/Server/app/svelte/src/groups-component.svelte new file mode 100644 index 0000000..054755b --- /dev/null +++ b/Server/app/svelte/src/groups-component.svelte @@ -0,0 +1,24 @@ + + + + + + + \ No newline at end of file diff --git a/Server/app/svelte/src/join-us-component.svelte b/Server/app/svelte/src/join-us-component.svelte new file mode 100644 index 0000000..8e27f5b --- /dev/null +++ b/Server/app/svelte/src/join-us-component.svelte @@ -0,0 +1,24 @@ + + + + + + + \ No newline at end of file diff --git a/Server/app/svelte/src/landing-component.svelte b/Server/app/svelte/src/landing-component.svelte index f74bf6b..4ad890a 100644 --- a/Server/app/svelte/src/landing-component.svelte +++ b/Server/app/svelte/src/landing-component.svelte @@ -2,7 +2,7 @@ - - -

I AM A TEXT FOR TESTING

- + \ No newline at end of file diff --git a/Server/app/svelte/src/manifesto-component.svelte b/Server/app/svelte/src/manifesto-component.svelte new file mode 100644 index 0000000..27ad49a --- /dev/null +++ b/Server/app/svelte/src/manifesto-component.svelte @@ -0,0 +1,25 @@ + + + + + + + \ No newline at end of file diff --git a/Server/app/svelte/src/navbar/navbar-component.svelte b/Server/app/svelte/src/navbar/navbar-component.svelte index 54d684d..b37cf1f 100644 --- a/Server/app/svelte/src/navbar/navbar-component.svelte +++ b/Server/app/svelte/src/navbar/navbar-component.svelte @@ -35,8 +35,8 @@ diff --git a/Server/public/css/footer.css b/Server/public/css/footer.css index 882c2d6..b5d8e8f 100644 --- a/Server/public/css/footer.css +++ b/Server/public/css/footer.css @@ -5,7 +5,8 @@ footer { bottom: 0; width: 100%; height: auto; - background: var(--dark-green); + background: #5B6970;/*var(--dark-green);*/ + border-top: #DD1C1A solid 0.5rem; } footer p, footer a { @@ -53,6 +54,15 @@ footer h2 { margin-bottom: 0; } + +#tag-line { + position: relative; + margin: auto; + font-size: 1.2rem; + text-align: center; + padding-bottom: 1rem; +} + footer a { font-size: 1.2rem; color: #d8d8d8; @@ -105,7 +115,7 @@ footer p, footer label { } #contact-us-container { - width: 14rem; + width: 16rem; } #contact-us-container h3 { diff --git a/Server/public/css/navbar.css b/Server/public/css/navbar.css index e201e2c..4e10415 100644 --- a/Server/public/css/navbar.css +++ b/Server/public/css/navbar.css @@ -27,8 +27,10 @@ } #navbar-logo { - width: 3.16rem; + height: 3.5rem; + width: 3.5rem; object-fit: contain; + border-radius: 10rem; } #navbar-logo-text { diff --git a/Server/public/favicon.png b/Server/public/favicon.png new file mode 100644 index 0000000..d3f5d2b Binary files /dev/null and b/Server/public/favicon.png differ diff --git a/Server/public/favicon2.png b/Server/public/favicon2.png new file mode 100644 index 0000000..e590acc Binary files /dev/null and b/Server/public/favicon2.png differ diff --git a/Server/public/favicon3.png b/Server/public/favicon3.png new file mode 100644 index 0000000..500b605 Binary files /dev/null and b/Server/public/favicon3.png differ diff --git a/Server/public/img/common/flag.png b/Server/public/img/common/flag.png new file mode 100644 index 0000000..433035f Binary files /dev/null and b/Server/public/img/common/flag.png differ diff --git a/Server/public/img/common/flag2.png b/Server/public/img/common/flag2.png new file mode 100644 index 0000000..3f9c19b Binary files /dev/null and b/Server/public/img/common/flag2.png differ diff --git a/Server/public/js/components/communities-component.js b/Server/public/js/components/communities-component.js new file mode 100644 index 0000000..84d069b --- /dev/null +++ b/Server/public/js/components/communities-component.js @@ -0,0 +1,80 @@ + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, o as onMount, n as noop } from './index-bc9d3868.js'; + +/* src\communities-component.svelte generated by Svelte v3.52.0 */ + +function create_fragment(ctx) { + const block = { + c: function create() { + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: noop, + p: noop, + i: noop, + o: noop, + d: noop + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('communities-component', slots, []); + + onMount(() => { + + }); + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$capture_state = () => ({ onMount }); + return []; +} + +class Communities_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("communities-component", Communities_component); + +export { Communities_component as default }; diff --git a/Server/public/js/components/cooperatives-component.js b/Server/public/js/components/cooperatives-component.js new file mode 100644 index 0000000..7b15eb6 --- /dev/null +++ b/Server/public/js/components/cooperatives-component.js @@ -0,0 +1,80 @@ + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, o as onMount, n as noop } from './index-bc9d3868.js'; + +/* src\cooperatives-component.svelte generated by Svelte v3.52.0 */ + +function create_fragment(ctx) { + const block = { + c: function create() { + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: noop, + p: noop, + i: noop, + o: noop, + d: noop + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('cooperatives-component', slots, []); + + onMount(() => { + + }); + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$capture_state = () => ({ onMount }); + return []; +} + +class Cooperatives_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("cooperatives-component", Cooperatives_component); + +export { Cooperatives_component as default }; diff --git a/Server/public/js/components/footer-component.js b/Server/public/js/components/footer-component.js index 46b23fe..0c88d11 100644 --- a/Server/public/js/components/footer-component.js +++ b/Server/public/js/components/footer-component.js @@ -37,9 +37,9 @@ function create_fragment(ctx) { h2.textContent = "CONTACT US"; t1 = space(); p0 = element("p"); - t2 = text("Email: "); + t2 = text("WhatsApp: "); a = element("a"); - a.textContent = "test@test"; + a.textContent = "group invite link"; t4 = space(); button = element("button"); svg = svg_element("svg"); @@ -48,47 +48,48 @@ function create_fragment(ctx) { path = svg_element("path"); t5 = space(); p1 = element("p"); - p1.textContent = "© 2023 LibSoc"; + p1.textContent = "© 2023 A global network of Libertarian Socialists"; this.c = noop; - add_location(h2, file, 12, 16, 273); - attr_dev(a, "href", "mailto:info@chiron.com"); - add_location(a, file, 13, 26, 320); - add_location(p0, file, 13, 16, 310); + add_location(h2, file, 16, 16, 313); + attr_dev(a, "href", "https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh"); + attr_dev(a, "target", "_blank"); + add_location(a, file, 18, 29, 454); + add_location(p0, file, 18, 16, 441); attr_dev(div0, "id", "contact-us-container"); - add_location(div0, file, 11, 12, 224); + add_location(div0, file, 15, 12, 264); attr_dev(div1, "id", "footer-grid-content-container"); attr_dev(div1, "class", "logged"); - add_location(div1, file, 10, 8, 155); + add_location(div1, file, 14, 8, 195); attr_dev(rect, "id", "Rectangle_146"); attr_dev(rect, "data-name", "Rectangle 146"); attr_dev(rect, "width", "11"); attr_dev(rect, "height", "51"); attr_dev(rect, "rx", "5.5"); attr_dev(rect, "transform", "translate(22 24)"); - attr_dev(rect, "fill", "var(--pink)"); - add_location(rect, file, 19, 18, 723); + attr_dev(rect, "fill", "#DD1C1A"); + add_location(rect, file, 24, 18, 907); attr_dev(path, "id", "Path_1145"); attr_dev(path, "data-name", "Path 1145"); attr_dev(path, "d", "M23.814,4.021a5,5,0,0,1,7.372,0l16.134,17.6c2.94,3.207,1.046,10.4-3.686,8.379S28.02,14.081,28.391,13.524,16.544,27.976,11.366,30,4.741,24.828,7.68,21.621Z"); - attr_dev(path, "fill", "var(--pink)"); - add_location(path, file, 20, 18, 875); + attr_dev(path, "fill", "#DD1C1A"); + add_location(path, file, 25, 18, 1055); attr_dev(g, "id", "Group_268"); attr_dev(g, "data-name", "Group 268"); attr_dev(g, "transform", "translate(-6.177 -2.399)"); - add_location(g, file, 18, 16, 626); + add_location(g, file, 23, 16, 810); attr_dev(svg, "xmlns", "http://www.w3.org/2000/svg"); attr_dev(svg, "width", "42.545"); attr_dev(svg, "height", "72.601"); attr_dev(svg, "viewBox", "0 0 42.545 72.601"); - add_location(svg, file, 17, 12, 509); + add_location(svg, file, 22, 12, 693); attr_dev(button, "id", "footer-up"); attr_dev(button, "aria-label", "go up"); - add_location(button, file, 16, 8, 416); + add_location(button, file, 21, 8, 600); attr_dev(p1, "id", "footer-copyright"); - add_location(p1, file, 24, 8, 1198); + add_location(p1, file, 29, 8, 1374); attr_dev(div2, "id", "footer-content-container"); - add_location(div2, file, 9, 4, 110); - add_location(footer, file, 8, 0, 96); + add_location(div2, file, 13, 4, 150); + add_location(footer, file, 12, 0, 136); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); diff --git a/Server/public/js/components/groups-component.js b/Server/public/js/components/groups-component.js new file mode 100644 index 0000000..f5b8289 --- /dev/null +++ b/Server/public/js/components/groups-component.js @@ -0,0 +1,80 @@ + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, o as onMount, n as noop } from './index-bc9d3868.js'; + +/* src\groups-component.svelte generated by Svelte v3.52.0 */ + +function create_fragment(ctx) { + const block = { + c: function create() { + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: noop, + p: noop, + i: noop, + o: noop, + d: noop + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('groups-component', slots, []); + + onMount(() => { + + }); + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$capture_state = () => ({ onMount }); + return []; +} + +class Groups_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("groups-component", Groups_component); + +export { Groups_component as default }; diff --git a/Server/public/js/components/index-71f03132.js b/Server/public/js/components/index-71f03132.js new file mode 100644 index 0000000..6c034e1 --- /dev/null +++ b/Server/public/js/components/index-71f03132.js @@ -0,0 +1,445 @@ + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +function noop() { } +function add_location(element, file, line, column, char) { + element.__svelte_meta = { + loc: { file, line, column, char } + }; +} +function run(fn) { + return fn(); +} +function blank_object() { + return Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === 'function'; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +let src_url_equal_anchor; +function src_url_equal(element_src, url) { + if (!src_url_equal_anchor) { + src_url_equal_anchor = document.createElement('a'); + } + src_url_equal_anchor.href = url; + return element_src === src_url_equal_anchor.href; +} +function is_empty(obj) { + return Object.keys(obj).length === 0; +} +function append(target, node) { + target.appendChild(node); +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + node.parentNode.removeChild(node); +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function svg_element(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(' '); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); +} +function children(element) { + return Array.from(element.childNodes); +} +function set_style(node, key, value, important) { + if (value === null) { + node.style.removeProperty(key); + } + else { + node.style.setProperty(key, value, important ? 'important' : ''); + } +} +function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { + const e = document.createEvent('CustomEvent'); + e.initCustomEvent(type, bubbles, cancelable, detail); + return e; +} +function attribute_to_object(attributes) { + const result = {}; + for (const attribute of attributes) { + result[attribute.name] = attribute.value; + } + return result; +} + +let current_component; +function set_current_component(component) { + current_component = component; +} +function get_current_component() { + if (!current_component) + throw new Error('Function called outside component initialization'); + return current_component; +} +/** + * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM. + * It must be called during the component's initialisation (but doesn't need to live *inside* the component; + * it can be called from an external module). + * + * `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api). + * + * https://svelte.dev/docs#run-time-svelte-onmount + */ +function onMount(fn) { + get_current_component().$$.on_mount.push(fn); +} +/** + * Associates an arbitrary `context` object with the current component and the specified `key` + * and returns that object. The context is then available to children of the component + * (including slotted content) with `getContext`. + * + * Like lifecycle functions, this must be called during component initialisation. + * + * https://svelte.dev/docs#run-time-svelte-setcontext + */ +function setContext(key, context) { + get_current_component().$$.context.set(key, context); + return context; +} +/** + * Retrieves the context that belongs to the closest parent component with the specified `key`. + * Must be called during component initialisation. + * + * https://svelte.dev/docs#run-time-svelte-getcontext + */ +function getContext(key) { + return get_current_component().$$.context.get(key); +} + +const dirty_components = []; +const binding_callbacks = []; +const render_callbacks = []; +const flush_callbacks = []; +const resolved_promise = Promise.resolve(); +let update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +// flush() calls callbacks in this order: +// 1. All beforeUpdate callbacks, in order: parents before children +// 2. All bind:this callbacks, in reverse order: children before parents. +// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT +// for afterUpdates called during the initial onMount, which are called in +// reverse order: children before parents. +// Since callbacks might update component values, which could trigger another +// call to flush(), the following steps guard against this: +// 1. During beforeUpdate, any updated components will be added to the +// dirty_components array and will cause a reentrant call to flush(). Because +// the flush index is kept outside the function, the reentrant call will pick +// up where the earlier call left off and go through all dirty components. The +// current_component value is saved and restored so that the reentrant call will +// not interfere with the "parent" flush() call. +// 2. bind:this callbacks cannot trigger new flush() calls. +// 3. During afterUpdate, any updated components will NOT have their afterUpdate +// callback called a second time; the seen_callbacks set, outside the flush() +// function, guarantees this behavior. +const seen_callbacks = new Set(); +let flushidx = 0; // Do *not* move this inside the flush() function +function flush() { + const saved_component = current_component; + do { + // first, call beforeUpdate functions + // and update components + while (flushidx < dirty_components.length) { + const component = dirty_components[flushidx]; + flushidx++; + set_current_component(component); + update(component.$$); + } + set_current_component(null); + dirty_components.length = 0; + flushidx = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + // ...so guard against infinite loops + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + seen_callbacks.clear(); + set_current_component(saved_component); +} +function update($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } +} +const outroing = new Set(); +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} + +const globals = (typeof window !== 'undefined' + ? window + : typeof globalThis !== 'undefined' + ? globalThis + : global); +function mount_component(component, target, anchor, customElement) { + const { fragment, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); + // if the component was destroyed immediately + // it will update the `$$.on_destroy` reference to `null`. + // the destructured on_destroy may still reference to the old array + if (component.$$.on_destroy) { + component.$$.on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); +} +function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: [], + // state + props, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false, + root: options.target || parent_component.$$.root + }; + append_styles && append_styles($$.root); + let ready = false; + $$.ctx = instance + ? instance(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); + } + return ret; + }) + : []; + $$.update(); + ready = true; + run_all($$.before_update); + // `false` as a special case of no DOM component + $$.fragment = create_fragment ? create_fragment($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + const nodes = children(options.target); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + flush(); + } + set_current_component(parent_component); +} +let SvelteElement; +if (typeof HTMLElement === 'function') { + SvelteElement = class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + } + connectedCallback() { + const { on_mount } = this.$$; + this.$$.on_disconnect = on_mount.map(run).filter(is_function); + // @ts-ignore todo: improve typings + for (const key in this.$$.slotted) { + // @ts-ignore todo: improve typings + this.appendChild(this.$$.slotted[key]); + } + } + attributeChangedCallback(attr, _oldValue, newValue) { + this[attr] = newValue; + } + disconnectedCallback() { + run_all(this.$$.on_disconnect); + } + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + // TODO should this delegate to addEventListener? + if (!is_function(callback)) { + return noop; + } + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } + }; +} + +function dispatch_dev(type, detail) { + document.dispatchEvent(custom_event(type, Object.assign({ version: '3.52.0' }, detail), { bubbles: true })); +} +function append_dev(target, node) { + dispatch_dev('SvelteDOMInsert', { target, node }); + append(target, node); +} +function insert_dev(target, node, anchor) { + dispatch_dev('SvelteDOMInsert', { target, node, anchor }); + insert(target, node, anchor); +} +function detach_dev(node) { + dispatch_dev('SvelteDOMRemove', { node }); + detach(node); +} +function listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) { + const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : []; + if (has_prevent_default) + modifiers.push('preventDefault'); + if (has_stop_propagation) + modifiers.push('stopPropagation'); + dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers }); + const dispose = listen(node, event, handler, options); + return () => { + dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers }); + dispose(); + }; +} +function attr_dev(node, attribute, value) { + attr(node, attribute, value); + if (value == null) + dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute }); + else + dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value }); +} +function set_data_dev(text, data) { + data = '' + data; + if (text.wholeText === data) + return; + dispatch_dev('SvelteDOMSetData', { node: text, data }); + text.data = data; +} +function validate_each_argument(arg) { + if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) { + let msg = '{#each} only iterates over array-like objects.'; + if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) { + msg += ' You can use a spread to convert this iterable into an array.'; + } + throw new Error(msg); + } +} +function validate_slots(name, slot, keys) { + for (const slot_key of Object.keys(slot)) { + if (!~keys.indexOf(slot_key)) { + console.warn(`<${name}> received an unexpected slot "${slot_key}".`); + } + } +} + +export { run_all as A, svg_element as B, SvelteElement as S, attribute_to_object as a, insert_dev as b, add_location as c, dispatch_dev as d, element as e, detach_dev as f, attr_dev as g, append_dev as h, init as i, flush as j, validate_each_argument as k, globals as l, destroy_each as m, noop as n, onMount as o, binding_callbacks as p, space as q, set_style as r, safe_not_equal as s, text as t, listen_dev as u, validate_slots as v, set_data_dev as w, getContext as x, setContext as y, src_url_equal as z }; diff --git a/Server/public/js/components/join-us-component.js b/Server/public/js/components/join-us-component.js new file mode 100644 index 0000000..dd05dc6 --- /dev/null +++ b/Server/public/js/components/join-us-component.js @@ -0,0 +1,80 @@ + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, o as onMount, n as noop } from './index-bc9d3868.js'; + +/* src\join-us-component.svelte generated by Svelte v3.52.0 */ + +function create_fragment(ctx) { + const block = { + c: function create() { + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: noop, + p: noop, + i: noop, + o: noop, + d: noop + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('join-us-component', slots, []); + + onMount(() => { + + }); + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$capture_state = () => ({ onMount }); + return []; +} + +class Join_us_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("join-us-component", Join_us_component); + +export { Join_us_component as default }; diff --git a/Server/public/js/components/landing-component.js b/Server/public/js/components/landing-component.js index 373d232..482202a 100644 --- a/Server/public/js/components/landing-component.js +++ b/Server/public/js/components/landing-component.js @@ -1,33 +1,22 @@ (function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); -import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, e as element, n as noop, c as add_location, h as detach_dev } from './index-bc9d3868.js'; +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, o as onMount, n as noop } from './index-bc9d3868.js'; /* src\landing-component.svelte generated by Svelte v3.52.0 */ -const file = "src\\landing-component.svelte"; - function create_fragment(ctx) { - let p; - const block = { c: function create() { - p = element("p"); - p.textContent = "I AM A TEXT FOR TESTING"; this.c = noop; - add_location(p, file, 19, 0, 221); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); }, - m: function mount(target, anchor) { - insert_dev(target, p, anchor); - }, + m: noop, p: noop, i: noop, o: noop, - d: function destroy(detaching) { - if (detaching) detach_dev(p); - } + d: noop }; dispatch_dev("SvelteRegisterBlock", { @@ -41,13 +30,10 @@ function create_fragment(ctx) { return block; } -function instance($$self, $$props) { +function instance($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; validate_slots('landing-component', slots, []); - i; - // Import components - // Main code onMount(() => { }); @@ -58,6 +44,7 @@ function instance($$self, $$props) { if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); }); + $$self.$capture_state = () => ({ onMount }); return []; } diff --git a/Server/public/js/components/manifesto-component.js b/Server/public/js/components/manifesto-component.js new file mode 100644 index 0000000..01afb76 --- /dev/null +++ b/Server/public/js/components/manifesto-component.js @@ -0,0 +1,80 @@ + +(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document); +import { S as SvelteElement, i as init, a as attribute_to_object, b as insert_dev, s as safe_not_equal, d as dispatch_dev, v as validate_slots, o as onMount, n as noop } from './index-bc9d3868.js'; + +/* src\manifesto-component.svelte generated by Svelte v3.52.0 */ + +function create_fragment(ctx) { + const block = { + c: function create() { + this.c = noop; + }, + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + m: noop, + p: noop, + i: noop, + o: noop, + d: noop + }; + + dispatch_dev("SvelteRegisterBlock", { + block, + id: create_fragment.name, + type: "component", + source: "", + ctx + }); + + return block; +} + +function instance($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + validate_slots('manifesto-component', slots, []); + + onMount(() => { + + }); + + const writable_props = []; + + Object.keys($$props).forEach(key => { + if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$capture_state = () => ({ onMount }); + return []; +} + +class Manifesto_component extends SvelteElement { + constructor(options) { + super(); + this.shadowRoot.innerHTML = ``; + + init( + this, + { + target: this.shadowRoot, + props: attribute_to_object(this.attributes), + customElement: true + }, + instance, + create_fragment, + safe_not_equal, + {}, + null + ); + + if (options) { + if (options.target) { + insert_dev(options.target, this, options.anchor); + } + } + } +} + +customElements.define("manifesto-component", Manifesto_component); + +export { Manifesto_component as default }; diff --git a/Server/public/js/components/navbar-component.js b/Server/public/js/components/navbar-component.js index f193294..87b2c50 100644 --- a/Server/public/js/components/navbar-component.js +++ b/Server/public/js/components/navbar-component.js @@ -20,8 +20,20 @@ function create_fragment(ctx) { let t4; let nav; let ul; - let li; + let li0; let a1; + let t6; + let li1; + let a2; + let t8; + let li2; + let a3; + let t10; + let li3; + let a4; + let t12; + let li4; + let a5; let mounted; let dispose; @@ -32,7 +44,7 @@ function create_fragment(ctx) { img = element("img"); t0 = space(); span0 = element("span"); - span0.textContent = "LibSoc"; + span0.textContent = "Libertarian socialists"; t2 = space(); input = element("input"); t3 = space(); @@ -41,34 +53,62 @@ function create_fragment(ctx) { t4 = space(); nav = element("nav"); ul = element("ul"); - li = element("li"); + li0 = element("li"); a1 = element("a"); - a1.textContent = "test"; + a1.textContent = "Manifesto"; + t6 = space(); + li1 = element("li"); + a2 = element("a"); + a2.textContent = "Join us"; + t8 = space(); + li2 = element("li"); + a3 = element("a"); + a3.textContent = "Groups"; + t10 = space(); + li3 = element("li"); + a4 = element("a"); + a4.textContent = "Communities"; + t12 = space(); + li4 = element("li"); + a5 = element("a"); + a5.textContent = "Cooperatives"; this.c = noop; - if (!src_url_equal(img.src, img_src_value = "")) attr_dev(img, "src", img_src_value); + if (!src_url_equal(img.src, img_src_value = "img/common/flag.png")) attr_dev(img, "src", img_src_value); attr_dev(img, "id", "navbar-logo"); - attr_dev(img, "alt", "iql logo"); + attr_dev(img, "alt", "logo"); add_location(img, file, 37, 8, 810); attr_dev(span0, "id", "navbar-logo-text"); - add_location(span0, file, 38, 8, 864); + add_location(span0, file, 38, 8, 879); attr_dev(a0, "id", "logo-container"); attr_dev(a0, "href", "/"); add_location(a0, file, 36, 4, 770); attr_dev(input, "type", "checkbox"); attr_dev(input, "id", "side-menu"); - add_location(input, file, 41, 4, 950); + add_location(input, file, 41, 4, 981); attr_dev(span1, "id", "hamb-line"); - add_location(span1, file, 42, 37, 1073); + add_location(span1, file, 42, 37, 1104); attr_dev(label, "id", "hamb"); attr_dev(label, "for", "side-menu"); - add_location(label, file, 42, 4, 1040); - attr_dev(a1, "href", "/test"); - add_location(a1, file, 46, 16, 1190); - add_location(li, file, 46, 12, 1186); + add_location(label, file, 42, 4, 1071); + attr_dev(a1, "href", "/manifesto"); + add_location(a1, file, 46, 16, 1221); + add_location(li0, file, 46, 12, 1217); + attr_dev(a2, "href", "/join-us"); + add_location(a2, file, 47, 16, 1278); + add_location(li1, file, 47, 12, 1274); + attr_dev(a3, "href", "/groups"); + add_location(a3, file, 48, 16, 1331); + add_location(li2, file, 48, 12, 1327); + attr_dev(a4, "href", "/communities"); + add_location(a4, file, 49, 16, 1382); + add_location(li3, file, 49, 12, 1378); + attr_dev(a5, "href", "/cooperatives"); + add_location(a5, file, 50, 16, 1443); + add_location(li4, file, 50, 12, 1439); attr_dev(ul, "id", "menu"); - add_location(ul, file, 45, 8, 1158); + add_location(ul, file, 45, 8, 1189); attr_dev(nav, "id", "nav"); - add_location(nav, file, 44, 4, 1134); + add_location(nav, file, 44, 4, 1165); attr_dev(header, "id", "navbar"); add_location(header, file, 34, 0, 706); }, @@ -90,8 +130,20 @@ function create_fragment(ctx) { append_dev(header, t4); append_dev(header, nav); append_dev(nav, ul); - append_dev(ul, li); - append_dev(li, a1); + append_dev(ul, li0); + append_dev(li0, a1); + append_dev(ul, t6); + append_dev(ul, li1); + append_dev(li1, a2); + append_dev(ul, t8); + append_dev(ul, li2); + append_dev(li2, a3); + append_dev(ul, t10); + append_dev(ul, li3); + append_dev(li3, a4); + append_dev(ul, t12); + append_dev(ul, li4); + append_dev(li4, a5); /*header_binding*/ ctx[4](header); if (!mounted) { diff --git a/Server/routes.jl b/Server/routes.jl index e59902d..5c0f7f3 100644 --- a/Server/routes.jl +++ b/Server/routes.jl @@ -5,4 +5,15 @@ using Server.BasicController #---Basic----------------------------------------------------------- -route("/", BasicController.landing, named = :landing) \ No newline at end of file +route("/", BasicController.landing, named = :landing) + +route("/manifesto", BasicController.manifesto, named = :manifest) + +route("/join-us", BasicController.join_us, named = :join_us) + +route("/groups", BasicController.groups, named = :groups) + +route("/cooperatives", BasicController.cooperatives, named = :cooperatives) + +route("/communities", BasicController.communities, named = :communities) +