Initial commit

Needs navbar rework
This commit is contained in:
2023-04-10 20:42:15 +01:00
parent e74ec4678e
commit 992e6df464
88 changed files with 2269 additions and 171 deletions

View File

@@ -1,4 +1,26 @@
import { defineConfig } from 'astro/config'; import { defineConfig } from "astro/config";
import { fileURLToPath } from "url";
import path, { dirname } from "path";
import react from "@astrojs/react";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
// https://astro.build/config // https://astro.build/config
export default defineConfig({}); export default defineConfig({
vite: {
resolve: {
alias: {
"@/": `${path.resolve(__dirname, "src")}/`
}
},
css: {
preprocessorOptions: {
scss: {
additionalData: `@import "@/styles/vars.scss";`
}
}
}
},
integrations: [react()]
});

252
package-lock.json generated
View File

@@ -8,7 +8,15 @@
"name": "astro-skint", "name": "astro-skint",
"version": "0.0.1", "version": "0.0.1",
"dependencies": { "dependencies": {
"astro": "^2.2.1" "@astrojs/react": "^2.1.1",
"@popperjs/core": "^2.11.7",
"@types/react": "^18.0.34",
"@types/react-dom": "^18.0.11",
"astro": "^2.2.1",
"bootstrap": "^5.2.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sass": "^1.61.0"
} }
}, },
"node_modules/@ampproject/remapping": { "node_modules/@ampproject/remapping": {
@@ -89,6 +97,24 @@
"node": ">=16.12.0" "node": ">=16.12.0"
} }
}, },
"node_modules/@astrojs/react": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@astrojs/react/-/react-2.1.1.tgz",
"integrity": "sha512-nIcDFnn5H4FKGoSBYXZr95RIQvpcTNRcVV1hvUQifO0F5hQsgb0PVyk6TG4JWxiPGY4Jt4MVQb5JaaDQHlHu4w==",
"dependencies": {
"@babel/core": ">=7.0.0-0 <8.0.0",
"@babel/plugin-transform-react-jsx": "^7.17.12"
},
"engines": {
"node": ">=16.12.0"
},
"peerDependencies": {
"@types/react": "^17.0.50 || ^18.0.21",
"@types/react-dom": "^17.0.17 || ^18.0.6",
"react": "^17.0.2 || ^18.0.0",
"react-dom": "^17.0.2 || ^18.0.0"
}
},
"node_modules/@astrojs/telemetry": { "node_modules/@astrojs/telemetry": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-2.1.0.tgz", "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-2.1.0.tgz",
@@ -917,6 +943,15 @@
"url": "https://opencollective.com/unts" "url": "https://opencollective.com/unts"
} }
}, },
"node_modules/@popperjs/core": {
"version": "2.11.7",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz",
"integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/@types/babel__core": { "node_modules/@types/babel__core": {
"version": "7.20.0", "version": "7.20.0",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz",
@@ -1006,11 +1041,39 @@
"resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz",
"integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g=="
}, },
"node_modules/@types/prop-types": {
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
"integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"node_modules/@types/react": {
"version": "18.0.34",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.34.tgz",
"integrity": "sha512-NO1UO8941541CJl1BeOXi8a9dNKFK09Gnru5ZJqkm4Q3/WoQJtHvmwt0VX0SB9YCEwe7TfSSxDuaNmx6H2BAIQ==",
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
"csstype": "^3.0.2"
}
},
"node_modules/@types/react-dom": {
"version": "18.0.11",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz",
"integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==",
"dependencies": {
"@types/react": "*"
}
},
"node_modules/@types/resolve": { "node_modules/@types/resolve": {
"version": "1.20.2", "version": "1.20.2",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==" "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="
}, },
"node_modules/@types/scheduler": {
"version": "0.16.3",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
"integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
},
"node_modules/@types/unist": { "node_modules/@types/unist": {
"version": "2.0.6", "version": "2.0.6",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz",
@@ -1271,6 +1334,24 @@
"readable-stream": "^3.4.0" "readable-stream": "^3.4.0"
} }
}, },
"node_modules/bootstrap": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz",
"integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/twbs"
},
{
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
}
],
"peerDependencies": {
"@popperjs/core": "^2.11.6"
}
},
"node_modules/boxen": { "node_modules/boxen": {
"version": "6.2.1", "version": "6.2.1",
"resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz",
@@ -1644,6 +1725,11 @@
"node": ">= 8" "node": ">= 8"
} }
}, },
"node_modules/csstype": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
},
"node_modules/debug": { "node_modules/debug": {
"version": "4.3.4", "version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -2215,6 +2301,11 @@
} }
] ]
}, },
"node_modules/immutable": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
"integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg=="
},
"node_modules/import-meta-resolve": { "node_modules/import-meta-resolve": {
"version": "2.2.2", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.2.tgz", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.2.tgz",
@@ -2535,6 +2626,17 @@
"url": "https://github.com/sponsors/wooorm" "url": "https://github.com/sponsors/wooorm"
} }
}, },
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
},
"bin": {
"loose-envify": "cli.js"
}
},
"node_modules/lru-cache": { "node_modules/lru-cache": {
"version": "5.1.1", "version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -3809,6 +3911,29 @@
} }
] ]
}, },
"node_modules/react": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
"integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
"dependencies": {
"loose-envify": "^1.1.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-dom": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
"integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
"dependencies": {
"loose-envify": "^1.1.0",
"scheduler": "^0.23.0"
},
"peerDependencies": {
"react": "^18.2.0"
}
},
"node_modules/readable-stream": { "node_modules/readable-stream": {
"version": "3.6.2", "version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
@@ -4141,6 +4266,22 @@
} }
] ]
}, },
"node_modules/sass": {
"version": "1.61.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.61.0.tgz",
"integrity": "sha512-PDsN7BrVkNZK2+dj/dpKQAWZavbAQ87IXqVvw2+oEYI+GwlTWkvbQtL7F2cCNbMqJEYKPh1EcjSxsnqIb/kyaQ==",
"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/sass-formatter": { "node_modules/sass-formatter": {
"version": "0.7.6", "version": "0.7.6",
"resolved": "https://registry.npmjs.org/sass-formatter/-/sass-formatter-0.7.6.tgz", "resolved": "https://registry.npmjs.org/sass-formatter/-/sass-formatter-0.7.6.tgz",
@@ -4149,6 +4290,14 @@
"suf-log": "^2.5.3" "suf-log": "^2.5.3"
} }
}, },
"node_modules/scheduler": {
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
"integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
"dependencies": {
"loose-envify": "^1.1.0"
}
},
"node_modules/section-matter": { "node_modules/section-matter": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
@@ -5097,6 +5246,15 @@
"prismjs": "^1.28.0" "prismjs": "^1.28.0"
} }
}, },
"@astrojs/react": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@astrojs/react/-/react-2.1.1.tgz",
"integrity": "sha512-nIcDFnn5H4FKGoSBYXZr95RIQvpcTNRcVV1hvUQifO0F5hQsgb0PVyk6TG4JWxiPGY4Jt4MVQb5JaaDQHlHu4w==",
"requires": {
"@babel/core": ">=7.0.0-0 <8.0.0",
"@babel/plugin-transform-react-jsx": "^7.17.12"
}
},
"@astrojs/telemetry": { "@astrojs/telemetry": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-2.1.0.tgz", "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-2.1.0.tgz",
@@ -5608,6 +5766,11 @@
"tslib": "^2.4.0" "tslib": "^2.4.0"
} }
}, },
"@popperjs/core": {
"version": "2.11.7",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz",
"integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw=="
},
"@types/babel__core": { "@types/babel__core": {
"version": "7.20.0", "version": "7.20.0",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz",
@@ -5697,11 +5860,39 @@
"resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz",
"integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g=="
}, },
"@types/prop-types": {
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
"integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"@types/react": {
"version": "18.0.34",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.34.tgz",
"integrity": "sha512-NO1UO8941541CJl1BeOXi8a9dNKFK09Gnru5ZJqkm4Q3/WoQJtHvmwt0VX0SB9YCEwe7TfSSxDuaNmx6H2BAIQ==",
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
"csstype": "^3.0.2"
}
},
"@types/react-dom": {
"version": "18.0.11",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz",
"integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==",
"requires": {
"@types/react": "*"
}
},
"@types/resolve": { "@types/resolve": {
"version": "1.20.2", "version": "1.20.2",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==" "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="
}, },
"@types/scheduler": {
"version": "0.16.3",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
"integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
},
"@types/unist": { "@types/unist": {
"version": "2.0.6", "version": "2.0.6",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz",
@@ -5899,6 +6090,12 @@
"readable-stream": "^3.4.0" "readable-stream": "^3.4.0"
} }
}, },
"bootstrap": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz",
"integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==",
"requires": {}
},
"boxen": { "boxen": {
"version": "6.2.1", "version": "6.2.1",
"resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz",
@@ -6121,6 +6318,11 @@
"which": "^2.0.1" "which": "^2.0.1"
} }
}, },
"csstype": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
},
"debug": { "debug": {
"version": "4.3.4", "version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -6535,6 +6737,11 @@
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
}, },
"immutable": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
"integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg=="
},
"import-meta-resolve": { "import-meta-resolve": {
"version": "2.2.2", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.2.tgz", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.2.tgz",
@@ -6725,6 +6932,14 @@
"resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
"integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==" "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="
}, },
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"requires": {
"js-tokens": "^3.0.0 || ^4.0.0"
}
},
"lru-cache": { "lru-cache": {
"version": "5.1.1", "version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -7517,6 +7732,23 @@
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
}, },
"react": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
"integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
"requires": {
"loose-envify": "^1.1.0"
}
},
"react-dom": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
"integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
"requires": {
"loose-envify": "^1.1.0",
"scheduler": "^0.23.0"
}
},
"readable-stream": { "readable-stream": {
"version": "3.6.2", "version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
@@ -7735,6 +7967,16 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
}, },
"sass": {
"version": "1.61.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.61.0.tgz",
"integrity": "sha512-PDsN7BrVkNZK2+dj/dpKQAWZavbAQ87IXqVvw2+oEYI+GwlTWkvbQtL7F2cCNbMqJEYKPh1EcjSxsnqIb/kyaQ==",
"requires": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
"source-map-js": ">=0.6.2 <2.0.0"
}
},
"sass-formatter": { "sass-formatter": {
"version": "0.7.6", "version": "0.7.6",
"resolved": "https://registry.npmjs.org/sass-formatter/-/sass-formatter-0.7.6.tgz", "resolved": "https://registry.npmjs.org/sass-formatter/-/sass-formatter-0.7.6.tgz",
@@ -7743,6 +7985,14 @@
"suf-log": "^2.5.3" "suf-log": "^2.5.3"
} }
}, },
"scheduler": {
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
"integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
"requires": {
"loose-envify": "^1.1.0"
}
},
"section-matter": { "section-matter": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",

View File

@@ -10,6 +10,14 @@
"astro": "astro" "astro": "astro"
}, },
"dependencies": { "dependencies": {
"astro": "^2.2.1" "@astrojs/react": "^2.1.1",
"@popperjs/core": "^2.11.7",
"@types/react": "^18.0.34",
"@types/react-dom": "^18.0.11",
"astro": "^2.2.1",
"bootstrap": "^5.2.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sass": "^1.61.0"
} }
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,63 +0,0 @@
---
export interface Props {
title: string;
body: string;
href: string;
}
const { href, title, body } = Astro.props;
---
<li class="link-card">
<a href={href}>
<h2>
{title}
<span>&rarr;</span>
</h2>
<p>
{body}
</p>
</a>
</li>
<style>
.link-card {
list-style: none;
display: flex;
padding: 0.25rem;
background-color: white;
background-image: none;
background-size: 400%;
border-radius: 0.6rem;
background-position: 100%;
transition: background-position 0.6s cubic-bezier(0.22, 1, 0.36, 1);
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
}
.link-card > a {
width: 100%;
text-decoration: none;
line-height: 1.4;
padding: 1rem 1.3rem;
border-radius: 0.35rem;
color: #111;
background-color: white;
opacity: 0.8;
}
h2 {
margin: 0;
font-size: 1.25rem;
transition: color 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
p {
margin-top: 0.5rem;
margin-bottom: 0;
color: #444;
}
.link-card:is(:hover, :focus-within) {
background-position: 0;
background-image: var(--accent-gradient);
}
.link-card:is(:hover, :focus-within) h2 {
color: rgb(var(--accent));
}
</style>

View File

@@ -0,0 +1,17 @@
---
---
<div class="row">
<div class="jumbotron w100">
<h1 class="display-5">3<sup>rd</sup>-5<sup>th</sup> November 2023</h1>
</div>
</div>
<style>
.jumbotron {
text-align: center;
padding-top: 20px;
padding-bottom: 20px;
border-radius: 0;
background-color: #e9ecef;
}
</style>

View File

@@ -0,0 +1,62 @@
---
---
<!-- Begin MailChimp Signup Form -->
<div class="container">
<div id="mc_embed_signup">
<div style="font-weight:bold; text-align: center">
Subscribe to our mailing list
</div>
<form
action="//skintdance.us2.list-manage.com/subscribe/post?u=a8c148ef7fceb7571bb84657c&id=9d72550111"
method="post"
id="mc-embedded-subscribe-form"
name="mc-embedded-subscribe-form"
class="validate"
target="_blank"
novalidate
>
<div id="mc_embed_signup_scroll">
<input
type="email"
value=""
name="EMAIL"
class="email"
id="mce-EMAIL"
placeholder="Email address"
required
/>
<!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
<div style="position: absolute; left: -5000px;" aria-hidden="true">
<input
type="text"
name="b_a8c148ef7fceb7571bb84657c_9d72550111"
tabindex="-1"
value=""
/>
</div>
<div class="clear">
<input
type="submit"
value="Subscribe"
name="subscribe"
id="mc-embedded-subscribe"
class="button"
/>
</div>
</div>
</form>
</div>
</div>
<!--End mc_embed_signup-->
<style lang="scss">
#mc-embedded-subscribe {
background-color: $skint-highlight !important;
}
#mc_embed_signup {
margin: 0.5rem auto;
}
</style>

14
src/components/Hero.astro Normal file
View File

@@ -0,0 +1,14 @@
---
---
<div class="container skint-colour-2">
<h4>
<slot />
</h4>
</div>
<style lang="scss">
div {
text-align: center;
padding: 20px;
}
</style>

View File

@@ -0,0 +1,77 @@
.media {
display: flex;
> i {
margin-right: 16px;
min-width: 40px;
}
}
.resource-row {
padding: 20px;
margin: 20px;
border: 1px solid #ccc;
cursor: pointer;
}
table.resource-table {
margin-top: 20px;
}
.resource-table {
a {
text-decoration: none;
&:hover,
*:hover {
cursor: pointer;
}
}
tr:hover {
background-color: #edb579;
a {
color: #000;
}
}
i {
font-size: x-large;
}
}
.resource-row:hover {
background-color: #ff7f2a;
border: 1px solid #d95d29;
}
@media (min-width: 767px) {
#resource-filter-input {
width: 50%;
display: inline-block;
}
}
.year-filters .year-filter {
&.selected {
background-color: #edb579;
border-left: 1px solid #edb579;
border-right: 1px solid #edb579;
}
&:hover {
background-color: #ff7f2a;
}
display: inline-block;
height: 46px;
width: 60px;
padding-top: 11px;
text-align: center;
border-left: 1px solid #ccc;
border-right: 1px solid #ccc;
color: #000 !important;
}
.input-group-addon {
background-color: transparent !important;
}

112
src/components/Library.tsx Normal file
View File

@@ -0,0 +1,112 @@
import { useState } from "react";
import 'bootstrap/dist/css/bootstrap.css';
import './Library.scss';
interface Resource {
displayName: string;
year: number;
category: string;
tuneType: string;
workshop: string;
source: string;
}
const ToRow = (r: Resource) => {
return (
<tr key={`${r.displayName}-${r.category}`}>
<td>
<div className="media">
<i
className={"mr-3 fas " + (r.category === 'Recording' ? 'fa-music' : 'fa-file')}
title={r.category}
></i>
<div className="media-body">
<a href={`/resources/${r.year}/${r.source}`} target="_blank">
<h5 className="media-heading">{r.displayName}</h5>
</a>
<div >
{`${r.tuneType}, from ${r.workshop} ${r.year}`}
</div>
</div>
</div>
</td>
</tr>
)
}
const Library = (x: {resources: Resource[]}) => {
const [yearFilter, setYearFilter] = useState<number | null>(null);
const [searchFilter, setSearchFilter] = useState<string | null>(null);
const resources = x.resources
const years = [...new Set(resources.map(r => r.year))]
const filter = (r: Resource) => {
const normalize = (s: string | null) =>
s?.toLocaleLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, "")
const nSearchFilter = normalize(searchFilter)
const nDisplayName = normalize(r.displayName)
const nCategrory = normalize(r.category)
const nTuneType = normalize(r.tuneType)
return (!yearFilter || r.year === yearFilter)
&& (!nSearchFilter
|| nDisplayName?.includes(nSearchFilter)
|| nCategrory?.includes(nSearchFilter)
|| nTuneType?.includes(nSearchFilter))
}
return (
<>
<div className="input-group input-group-lg">
<span className="input-group-addon"
><i className="glyphicon glyphicon-search"></i></span>
<input
type="text"
id="resource-filter-input"
className="form-control"
placeholder="Search"
onChange={(e) => setSearchFilter(e.target.value)}
/>
<span className="year-filters">
<a>
<div
className={"year-filter " + (!yearFilter ? "selected" : "")}
onClick={() => setYearFilter(null)}
>
All
</div>
</a>
{years.sort().map(y => (
<a key={y}>
<div className={"year-filter " + (y === yearFilter ? "selected" : "")} onClick={() => setYearFilter(y)}>
{y}
</div>
</a>
))}
</span>
</div>
<div>
<table
className="table resource-table"
>
<tbody>
{resources
.filter(filter)
.sort((a, b) => a.displayName.localeCompare(b.displayName))
.map(ToRow)}
</tbody>
</table>
</div>
</>
)
}
export default Library;

View File

@@ -0,0 +1,87 @@
---
import logo from "../img/logo.svg";
---
<div class="skint-colour-1 sticky-top">
<nav class="container-fluid">
<a class="navbar-brand" href="/">
<img class="skint-unobtrusive-img navbar-brand" src={logo} />
</a>
<button
class="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#skint-navbar-collapse"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon" />
</button>
<div class="collapse navbar-collapse" id="skint-navbar-collapse">
<ul class="nav navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="/getinvolved">Get Involved</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/tickets">Tickets</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/yourvisit">Your Visit</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/library">Library</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/constitution">Constitution</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/contactus">Contact Us</a>
</li>
<!--
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Other
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="/committee">Committee</a>
<a class="dropdown-item" href="/constitution">Constitution</a>
</div>
</li>
-->
</ul>
</div>
</nav>
<div class="container">
<div class="navbar navbar-expand-md navbar-dark skint-nav">
</div>
</div>
</div>
<style lang="scss">
.skint-nav {
border: 0;
margin-bottom: 0;
.navbar-brand {
height: 80px;
}
.nav > li {
@media (min-width: 992px) {
padding-left: 10px;
padding-right: 10px;
> a {
font-size: larger;
}
}
> a,
&.active > a {
font-weight: bold;
}
.dropdown-menu {
a:hover {
background-color: $skint-colour-2;
}
}
}
}
</style>

386
src/data/resources.json Normal file
View File

@@ -0,0 +1,386 @@
[
{
"displayName": "Vallåtspolska från Orsa -efter Björn Ståbi",
"year": 2019,
"category": "Recording",
"tuneType": "Vallåtspolska",
"workshop": "Swedish",
"source": "2019_11_02_12_57_33- Vallåtspolska från Orsa -efter Björn Ståbi-.mp3"
},
{
"displayName": "Vallåtspolska från Orsa -efter Björn Ståbi (Second voice)",
"year": 2019,
"category": "Recording",
"tuneType": "Vallåtspolska",
"workshop": "Swedish",
"source": "2019_11_02_13_02_40- Vallåtspolska från Orsa -efter Björn Ståbi-2nd voice.mp3"
},
{
"displayName": "Klezmer tune",
"year": 2019,
"category": "Recording",
"tuneType": "Klezmer",
"workshop": "Klezmer",
"source": "2019_11_02_23_03_21- Klezmer tune-.mp3"
},
{
"displayName": "Where Were You During Prohibition?",
"year": 2019,
"category": "Recording",
"tuneType": "Unknown",
"workshop": "Unknown",
"source": "2019_11_02_23_06_19 - where were you during prohibition-.mp3"
},
{
"displayName": "Bridgewater",
"year": 2018,
"category": "Sheet Music",
"tuneType": "Choral",
"workshop": "Sacred Harp",
"source": "Bridgewater.jpg"
},
{
"displayName": "Idumea",
"year": 2018,
"category": "Sheet Music",
"tuneType": "Choral",
"workshop": "Sacred Harp",
"source": "Idumea.jpg"
},
{
"displayName": "Oak Grove",
"year": 2018,
"category": "Sheet Music",
"tuneType": "Choral",
"workshop": "Sacred Harp",
"source": "Oak Grove.jpg"
},
{
"displayName": "Old Hundred",
"year": 2018,
"category": "Sheet Music",
"tuneType": "Choral",
"workshop": "Sacred Harp",
"source": "Old Hundred.jpg"
},
{
"displayName": "Primrose",
"year": 2018,
"category": "Sheet Music",
"tuneType": "Choral",
"workshop": "Sacred Harp",
"source": "Primrose.jpg"
},
{
"displayName": "Bayati Shiraz",
"year": 2018,
"category": "Recording",
"tuneType": "Jewish / Arabic",
"workshop": "Jewish / Arabic tunes",
"source": "olga bayati shiraz.mp3"
},
{
"displayName": "Nawa Tune",
"year": 2018,
"category": "Recording",
"tuneType": "Jewish / Arabic",
"workshop": "Jewish / Arabic tunes",
"source": "olga nawa tune.mp3"
},
{
"displayName": "Idumea",
"year": 2018,
"category": "Recording",
"tuneType": "Choral",
"workshop": "Sacred Harp",
"source": "Shape Note Singing - Idumea.mp3"
},
{
"displayName": "Oak Grove",
"year": 2018,
"category": "Recording",
"tuneType": "Choral",
"workshop": "Sacred Harp",
"source": "Shape Note Singing - Oak Grove.mp3"
},
{
"displayName": "Primrose",
"year": 2018,
"category": "Recording",
"tuneType": "Choral",
"workshop": "Sacred Harp",
"source": "Shape Note Singing - Primrose.mp3"
},
{
"displayName": "Bridgewater",
"year": 2018,
"category": "Recording",
"tuneType": "Choral",
"workshop": "Sacred Harp",
"source": "Shape Note Singing Bridgewater.mp3"
},
{
"displayName": "Three Red Roses",
"year": 2018,
"category": "Recording",
"tuneType": "Schottisch",
"workshop": "Spelmanslag",
"source": "Spelmanslag - Three red roses.mp3"
},
{
"displayName": "Romja",
"year": 2018,
"category": "Recording",
"tuneType": "Schottisch",
"workshop": "Tune Swap",
"source": "Tune Swap - Romja.mp3"
},
{
"displayName": "Simply",
"year": 2018,
"category": "Recording",
"tuneType": "Gavotte de L'Aven",
"workshop": "Tune Swap",
"source": "Tune Swap - Simply.mp3"
},
{
"displayName": "Waltz e. Carl Fanta",
"year": 2018,
"category": "Recording",
"tuneType": "Waltz",
"workshop": "Tune Swap",
"source": "Tune Swap - Waltz efter Carl Fanta.mp3"
},
{
"displayName": "If you will not have me let me go",
"year": 2016,
"category": "Recording",
"tuneType": "3/2",
"workshop": "3/2 Tunes",
"source": "If you will not have me let me go.mp3"
},
{
"displayName": "Sylvia's Serenade",
"year": 2016,
"category": "Recording",
"tuneType": "3/2",
"workshop": "3/2 Tunes",
"source": "Sylvia_s Serenade.mp3"
},
{
"displayName": "Easter Thursday",
"year": 2016,
"category": "Recording",
"tuneType": "3/2",
"workshop": "3/2 Tunes",
"source": "Easter Thursday.mp3"
},
{
"displayName": "Finnskog Pols 1",
"year": 2016,
"category": "Recording",
"tuneType": "Pols",
"workshop": "Finnskog Pols",
"source": "Finnskog Pols 1.mp3"
},
{
"displayName": "Finnskog Pols 2",
"year": 2016,
"category": "Recording",
"tuneType": "Pols",
"workshop": "Finnskog Pols",
"source": "Finnskog Pols 2.mp3"
},
{
"displayName": "Finnskog Pols 3",
"year": 2016,
"category": "Recording",
"tuneType": "Pols",
"workshop": "Finnskog Pols",
"source": "Finnskog Pols 3.mp3"
},
{
"displayName": "Arthur",
"year": 2016,
"category": "Recording",
"tuneType": "Mazurka",
"workshop": "French Style Tunes",
"source": "Arthur.mp3"
},
{
"displayName": "Wonderful Waltz",
"year": 2016,
"category": "Recording",
"tuneType": "Waltz",
"workshop": "French Style Tunes",
"source": "Wonderful Waltz.mp3"
},
{
"displayName": "Bunch of Roses",
"year": 2016,
"category": "Recording",
"tuneType": "Jig",
"workshop": "French Style Tunes",
"source": "Bunch of Roses.mp3"
},
{
"displayName": "Varmland Polska 1",
"year": 2016,
"category": "Recording",
"tuneType": "Polska",
"workshop": "Varmland Polska",
"source": "Varmland Polska 1.mp3"
},
{
"displayName": "Varmland Polska 2",
"year": 2016,
"category": "Recording",
"tuneType": "Polska",
"workshop": "Varmland Polska",
"source": "Varmland Polska 2.mp3"
},
{
"displayName": "Aalborg Polka",
"year": 2015,
"category": "Recording",
"tuneType": "Polka",
"workshop": "Danish Tunes",
"source": "ZOOM0012_Danish_Tunes_-_Aalborg_Polka.MP3"
},
{
"displayName": "Ostindiens Velkomst",
"year": 2015,
"category": "Recording",
"tuneType": "Sonderhoning",
"workshop": "Danish Tunes",
"source": "ZOOM0013_Danish_Tunes_-_Ostindiens_Velkomst.MP3"
},
{
"displayName": "Polonaisse från Litresk",
"year": 2015,
"category": "Recording",
"tuneType": "Polonaisse",
"workshop": "Swedish Tunes",
"source": "ZOOM0015_Megan_-_Polonaisse_från_Litresk.MP3"
},
{
"displayName": "Polska e. Janne Mortenson",
"year": 2015,
"category": "Recording",
"tuneType": "Polska",
"workshop": "Swedish Tunes",
"source": "ZOOM0016_Megan_-_Polska_e._Janne_Mortenson.MP3"
},
{
"displayName": "Polska e. Jorgen Lind",
"year": 2015,
"category": "Recording",
"tuneType": "Polska",
"workshop": "Swedish Tunes",
"source": "ZOOM0017_Megan_-_Polska_e._Jorgen_Lind.MP3"
},
{
"displayName": "Welsh Morris",
"year": 2015,
"category": "Recording",
"tuneType": "U/K",
"workshop": "Welsh Tunes",
"source": "ZOOM0021_Welsh_Tunes_-_Welsh_Morris.MP3"
},
{
"displayName": "Welsh Waltz",
"year": 2015,
"category": "Recording",
"tuneType": "Waltz",
"workshop": "Welsh Tunes",
"source": "ZOOM0022_Welsh_Tunes_-_Waltz.MP3"
},
{
"displayName": "Fiddle Faddle",
"year": 2015,
"category": "Recording",
"tuneType": "Polka",
"workshop": "Welsh Tunes",
"source": "ZOOM0024_Welsh_Tunes_-_Fiddle_Faddle.MP3"
},
{
"displayName": "Mazurka by Steve Turner",
"year": 2015,
"category": "Recording",
"tuneType": "Mazurka",
"workshop": "French Tunes",
"source": "ZOOM0025_Mazurkas_-_Steve_Turner.MP3"
},
{
"displayName": "Muzique Mazurka",
"year": 2015,
"category": "Recording",
"tuneType": "Mazurka",
"workshop": "French Tunes",
"source": "ZOOM0027_Mazurkas_-_Muzique_Mazurka.MP3"
},
{
"displayName": "Der Brinner en Eld",
"year": 2015,
"category": "Recording",
"tuneType": "Polska (Song)",
"workshop": "Swedish Songs",
"source": "ZOOM0028_Swedish_Songs_-_Der_Brinner_en_Eld.MP3"
},
{
"displayName": "Du och Jag och Vi To (Song about clogs)",
"year": 2015,
"category": "Recording",
"tuneType": "Hottis (Song)",
"workshop": "Swedish Songs",
"source": "ZOOM0029_Swedish_Songs_-_Du_och_Jag_och_Vi_To_(Song_about_clogs).MP3"
},
{
"displayName": "Waltz",
"year": 2015,
"category": "Recording",
"tuneType": "Waltz (Song)",
"workshop": "Swedish Songs",
"source": "ZOOM0030_Swedish_Songs_-_Waltz.MP3"
},
{
"displayName": "La Chaud",
"year": 2015,
"category": "Recording",
"tuneType": "Bourrée",
"workshop": "French Tunes",
"source": "ZOOM0031_Bourees_-_Lachaud.MP3"
},
{
"displayName": "Bourrée de Alfred Mourre",
"year": 2015,
"category": "Recording",
"tuneType": "Bourrée",
"workshop": "French Tunes",
"source": "ZOOM0033_Bourees_-_Alfred_Mourre.MP3"
},
{
"displayName": "Calarem Calarem Pas",
"year": 2015,
"category": "Recording",
"tuneType": "Bourrée",
"workshop": "French Tunes",
"source": "ZOOM0035_Bourrees_-_Calloren_Calloren_Park.MP3"
},
{
"displayName": "Bourrée de l'hôpital",
"year": 2015,
"category": "Recording",
"tuneType": "Bourrée",
"workshop": "French Tunes",
"source": "ZOOM0036_Bourrees_-_La_Pitale.MP3"
},
{
"displayName": "Bourrée de l'hôpital",
"year": 2015,
"category": "Sheet Music",
"tuneType": "Bourrée",
"workshop": "French Tunes",
"source": "Bourree de l_Hopital.pdf"
}
]

BIN
src/img/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 678 KiB

BIN
src/img/frontPage/food.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 KiB

BIN
src/img/frontPage/food2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 KiB

228
src/img/logo.svg Normal file
View File

@@ -0,0 +1,228 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="290.97519mm"
height="114.75461mm"
viewBox="0 0 1031.0144 406.61082"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="logoPlaceholder.svg">
<defs
id="defs4">
<inkscape:path-effect
effect="spiro"
id="path-effect4202"
is_visible="true" />
<inkscape:path-effect
cusp_linecap_type="round"
end_linecap_type="zerowidth"
miter_limit="4"
linejoin_type="round"
start_linecap_type="zerowidth"
interpolator_beta="0.2"
interpolator_type="Linear"
sort_points="true"
offset_points="0,-1.6668433"
is_visible="true"
id="path-effect4198"
effect="powerstroke" />
<inkscape:path-effect
is_visible="true"
id="path-effect4196"
effect="spiro" />
<inkscape:path-effect
effect="spiro"
id="path-effect3390"
is_visible="true" />
<inkscape:path-effect
effect="powerstroke"
id="path-effect3386"
is_visible="true"
offset_points="0,0.5"
sort_points="true"
interpolator_type="Linear"
interpolator_beta="0.2"
start_linecap_type="zerowidth"
linejoin_type="round"
miter_limit="4"
end_linecap_type="zerowidth"
cusp_linecap_type="round" />
<inkscape:path-effect
effect="spiro"
id="path-effect3384"
is_visible="true" />
<inkscape:path-effect
effect="powerstroke"
id="path-effect3380"
is_visible="true"
offset_points="0,-3.4109607"
sort_points="true"
interpolator_type="Linear"
interpolator_beta="0.2"
start_linecap_type="zerowidth"
linejoin_type="round"
miter_limit="4"
end_linecap_type="zerowidth"
cusp_linecap_type="round" />
<inkscape:path-effect
effect="spiro"
id="path-effect3378"
is_visible="true" />
<inkscape:path-effect
effect="powerstroke"
id="path-effect3370"
is_visible="true"
offset_points="0.033074709,6.2310523"
sort_points="true"
interpolator_type="Linear"
interpolator_beta="0.2"
start_linecap_type="zerowidth"
linejoin_type="round"
miter_limit="4"
end_linecap_type="zerowidth"
cusp_linecap_type="round" />
<inkscape:path-effect
effect="spiro"
id="path-effect3368"
is_visible="true" />
<inkscape:path-effect
effect="powerstroke"
id="path-effect3364"
is_visible="true"
offset_points="0,0.5"
sort_points="true"
interpolator_type="Linear"
interpolator_beta="0.2"
start_linecap_type="zerowidth"
linejoin_type="round"
miter_limit="4"
end_linecap_type="zerowidth"
cusp_linecap_type="round" />
<inkscape:path-effect
effect="spiro"
id="path-effect3362"
is_visible="true" />
<inkscape:path-effect
effect="powerstroke"
id="path-effect3346"
is_visible="true"
offset_points="0,-9.7128462"
sort_points="true"
interpolator_type="Linear"
interpolator_beta="0.2"
start_linecap_type="zerowidth"
linejoin_type="round"
miter_limit="4"
end_linecap_type="zerowidth"
cusp_linecap_type="round" />
<inkscape:path-effect
effect="spiro"
id="path-effect3344"
is_visible="true" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4142136"
inkscape:cx="650.26516"
inkscape:cy="31.561615"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1377"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
fit-margin-bottom="-1.6"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(1.1937181,-325.0598)">
<path
style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 0.09283715,476.60018 C 175.48462,488.60297 353.41906,463.52483 518.79352,403.43194 c 44.12618,-15.94647 89.62863,-35.08239 135.16659,-49.6436 45.86,-14.66418 92.90883,-25.11736 141.67379,-23.9526 48.78914,1.34468 98.44628,15.17455 137.42336,45.35711 19.37442,15.23029 35.77667,34.35069 47.09613,56.23422 11.32043,21.88506 17.45204,46.49707 16.85647,71.06852 -0.67339,32.70159 -13.4663,64.72171 -34.77634,89.1203 -21.31574,24.40497 -50.91262,41.08679 -82.42432,47.30996 -34.56598,6.86182 -71.33533,1.10787 -101.96567,-15.78099 -30.63759,-16.89286 -54.88534,-44.78017 -67.34571,-77.19108 13.13224,32.15343 37.84507,59.27595 68.36839,75.29033 30.53055,16.01817 66.64437,20.81246 100.05927,13.45634 30.47275,-6.74092 58.57425,-23.54013 78.38412,-47.28975 19.81507,-23.756 31.13312,-54.37642 31.06702,-84.99799 -0.13893,-23.00906 -6.57963,-45.83327 -17.73544,-65.88796 -11.15646,-20.05625 -26.97899,-37.40774 -45.43799,-51.0349 -36.68873,-27.53225 -83.51796,-39.9724 -129.87436,-40.54832 -46.38139,-0.75681 -91.50636,9.52359 -136.37588,24.24456 -45.19259,14.82696 -88.9772,33.72166 -134.22903,50.46281 -167.38741,61.59507 -347.77345,87.79876 -525.9176992,76.33432 z"
id="path3342"
inkscape:path-effect="#path-effect3344;#path-effect3346"
inkscape:original-d="M -0.55047101,486.2917 C 506.0609,411.54042 521.75872,411.54042 521.75872,411.54042 c 0,0 518.02798,-2.02031 470.93452,90.91373 -47.09345,92.93403 79.32916,264.66868 -113.3259,134.359 C 686.71232,506.50347 319.47947,566.15683 710.49782,545.95378"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccssc" />
<path
style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 14.180584,486.19017 c 1.133601,2.00519 2.332875,3.98944 3.596379,5.95038 30.751843,-3.75901 59.05839,-21.83554 75.170312,-47.5854 6.5504,-11.24323 10.850055,-23.62619 12.690155,-36.23484 a 0.00162196,0.26607539 8.317374 0 0 0.0354,-0.25276 l -0.0734,-25.92309 -4.11404,25.59467 0.0354,-0.25275 c -3.106466,11.80797 -8.463345,22.87876 -15.594097,32.45555 -15.858909,22.89932 -42.253699,37.76236 -69.391665,39.79857 -0.716671,2.1592 -1.501123,4.31018 -2.354364,6.44967 z"
id="path3366"
inkscape:path-effect="#path-effect3368;#path-effect3370"
inkscape:original-d="m 14.180584,486.19017 c 24.17881,-52.9724 69.67152,2.63945 75.25636,-43.94163 2.0203,-22.72843 14.142126,-34.3452 14.142126,-34.3452 l 2.0203,-25.75888"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:315.35021973px;line-height:125%;font-family:Cambria;-inkscape-font-specification:Cambria;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="268.54575"
y="694.70093"
id="text3372"
sodipodi:linespacing="125%"
transform="scale(0.9716026,1.0292274)"><tspan
sodipodi:role="line"
id="tspan3374"
x="268.54575"
y="694.70093">Skint</tspan></text>
<path
style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 581.69204,389.69545 c 16.23354,-1.59103 32.60039,-1.00742 48.53338,1.69052 28.55371,4.38074 55.88097,15.62884 79.0603,32.4048 -23.83071,-15.84406 -51.34778,-25.84212 -79.51112,-29.02376 -15.7847,-1.53112 -31.69677,-0.94764 -47.18092,1.69052 z"
id="path3376"
inkscape:path-effect="#path-effect3378;#path-effect3380"
inkscape:original-d="m 582.14286,393.07649 c 91.00073,-92.97044 57.78291,-11.11772 47.85715,0 -4.47715,5.0148 87.89271,-22.03612 79.28571,30.71428"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csc" />
<path
sodipodi:nodetypes="csc"
inkscape:connector-curvature="0"
inkscape:original-d="m 931.16234,376.09819 c 41.56921,47.48284 26.39529,5.67815 21.86119,0 -2.04516,-2.56121 40.14946,11.25452 36.21777,-15.68672"
inkscape:path-effect="#path-effect4196;#path-effect4198"
id="path4194"
d="m 931.40307,374.44882 c 7.036,1.30772 14.30361,1.59427 21.50009,0.82469 13.06357,-1.62592 25.75216,-6.78677 36.33814,-14.86204 -10.23778,8.50825 -22.8197,14.29273 -36.0974,16.5114 -7.27546,1.34262 -14.78634,1.62927 -22.22229,0.82469 z"
style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:#aa0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 1029.8207,325.0598 c -4.9302,8.69837 -55.50383,17.06968 -46.1807,38.44885 l 17.3353,-17.69292 c -10.28761,12.80061 -8.42749,7.63371 -15.58781,18.93447 19.59521,-4.42655 37.47921,-16.95104 44.43321,-39.6904 z"
id="path4200"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path4205"
d="m 778.57209,493.97375 c -8.26687,-11.78818 -13.65681,-94.41242 -71.89742,-72.12096 16.79947,9.20127 29.60205,24.79851 43.88694,37.5621 -28.12928,-23.40196 -18.3311,-20.11942 -42.6702,-35.9342 10.60017,46.85184 16.22719,53.86601 70.68068,70.49306 z"
style="fill:#ff7f2a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

BIN
src/img/yourVisit/car.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

BIN
src/img/yourVisit/food.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 KiB

View File

@@ -1,35 +1,138 @@
--- ---
import "bootstrap/dist/css/bootstrap.css";
import Navbar from "../components/Navbar.astro";
import Hero from "../components/Hero.astro";
import Footer from "../components/Footer.astro";
import favicon from "../img/favicon.ico";
export interface Props { export interface Props {
title: string; title?: string;
hero?: string;
} }
const { title } = Astro.props; const { hero, title } = Astro.props;
--- ---
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" /> <meta charset="utf-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="generator" content={Astro.generator} /> <title>Skint Dance - International Dance and Music Weekend</title>
<title>{title}</title> <link rel="shortcut icon" type="image/x-icon" href={favicon} />
</head> <link
<body> href="//cdn-images.mailchimp.com/embedcode/horizontal-slim-10_7.css"
<slot /> rel="stylesheet"
</body> type="text/css"
/>
<link
rel="stylesheet"
href="https://use.fontawesome.com/releases/v5.5.0/css/all.css"
integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU"
crossorigin="anonymous"
/>
<body class="skint-colour-2">
<Navbar />
{hero && <Hero>{hero}</Hero>}
<div class="container skint-container skint-colour-w rounded">
<main>
{title && <h1 class="text-center">{title}</h1>}
<slot />
</main>
</div>
<Footer />
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"></script>
</body>
</html> </html>
<style is:global>
:root { <style lang="scss" is:global>
--accent: 124, 58, 237; @import url("https://fonts.googleapis.com/css?family=Open+Sans");
--accent-gradient: linear-gradient(45deg, rgb(var(--accent)), #da62c4 30%, white 60%);
} html {
html { position: relative;
font-family: system-ui, sans-serif; min-height: 100%;
background-color: #F6F6F6; }
}
code { .skint-container {
font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, margin-top: 20px;
Bitstream Vera Sans Mono, Courier New, monospace; margin-bottom: 20px;
} }
.skint-colour-1 {
background-color: $skint-highlight;
}
.skint-colour-2 {
background-color: #edb579;
}
.skint-colour-2-light {
background-color: #f6ddc2;
}
.skint-colour-w {
background-color: #fff;
}
.striped {
&:nth-child(odd) {
background-color: #fff;
.splash {
order: 1;
}
}
&:nth-child(even) {
background-color: #f6ddc2;
.splash {
order: 13;
}
}
h3 {
margin-top: 20px;
}
}
body:not(.home-body) {
font-family: "Open Sans", "sans-serif";
}
.skint-header-img {
width: 100%;
}
.skint-unobtrusive-img {
padding-left: 0;
margin-left: 0;
}
.centre-align {
text-align: center;
}
h1 {
padding-top: 1rem;
padding-bottom: 1rem;
}
h3 {
margin-bottom: 25px;
}
.w100 {
width: 100%;
}
.skint-button {
background-color: $skint-highlight !important;
border-color: $skint-highlight !important;
color: white !important;
}
.jumbotron {
text-align: center;
}
</style> </style>

View File

@@ -0,0 +1,102 @@
---
import Layout from "../layouts/Layout.astro";
---
<Layout title={"The Constitution"}>
<div class="pb-1">
<h4>1. Name</h4>
<p>
The name of the organisation is Skint (which is short for affordable
Scandinavian and International music and dance).
</p>
<h4>2. Aims and objectives</h4>
<p>
The promotion and enjoyment of international folk music and dance,
especially to encourage people to try unfamiliar traditions of music and
dance from different countries, and to make such opportunities available
at affordable rates to those with low disposable incomes. In particular an
annual weekend residential event is currently held to support these aims.
Skint is a non-profit making organisation.
</p>
<h4>3. Management</h4>
<p>
The management of the organisation is through a committee which includes
with Chair, Secretary, and Treasurer and other members as appropriate. All
committee members shall hold office until the next Annual General Meeting
(AGM), but shall then be eligible for re-election. During the year, the
committee shall have the power to co-opt additional members as necessary
until the next AGM.
</p>
<h4>4. Powers of the Committee</h4>
<p>a) to raise funds and receive contributions</p>
<p>
b) to organise insurance, e.g. through affiliation to a relevant
organisation such as the Society of International Folk Dancing (SIFD)
</p>
<p>
c) all other lawful things as appropriate for furthering the aims and
objectives.
</p>
<h4>5. Membership</h4>
<p>
There is no formal membership for Skint. It is open to all. Current and
previous attendees of events will be consulted and informed about major
future plans for Skint.
</p>
<h4>6. General Meetings</h4>
<p>
An AGM shall normally be held between 15 September and 15 November each
year.
</p>
<p>
Notice shall be given (of the AGM) to participants at the yearly
residential event.
</p>
<p>
At the AGM, three members of the committee must be present to achieve
quorum.
</p>
<p>
An Extraordinary General Meeting (EGM) may be called at other times of the
year at the discretion of one or more members of the committee, providing
notice is also given to the wider body of previous attendees.
</p>
<h4>7. Decision making</h4>
<p>
Decisions shall be taken via consensus if possible, and through a majority
vote if not.
</p>
<h4>8. Accounts</h4>
<p>
The accounts for Skint shall be kept by the Treasurer, and shall be
presented at the AGM. A bank account in the name of Skint and (with three
authorised signatories from the Skint committee) shall be used to hold
money for the organisation, and withdrawals must be authorised through at
least two authorised signatories.
</p>
<h4>9. Dissolution</h4>
<p>
Skint may be dissolved only by those present at an AGM or EGM. On
dissolution of the group, any money held by the organisation shall be
disposed of by the Committee, to an organisation which has similar aims to
that of Skint.
</p>
<h4>10. Alterations to the rules</h4>
<p>These rules may be amended by an AGM or EGM as deemed necessary.</p>
</div>
</Layout>

37
src/pages/contactus.astro Normal file
View File

@@ -0,0 +1,37 @@
---
import Layout from "../layouts/Layout.astro";
---
<Layout title={"Contact Us"}>
<div class="pb-1">
<p class="text-center">
If you have any questions or just want to chat, then don't hesitate to get
in touch!
</p>
<ul class="button-list text-center">
<li>
<a
class="btn skint-button"
href="https://www.facebook.com/skintdance"
target="_blank"><i class="fab fa-facebook-square"></i> skintdance</a>
</li>
<li>
<a class="btn skint-button" href="mailto:skint.dance@gmail.com"
><i class="fas fa-at"></i> skint.dance@gmail.com</a>
</li>
</ul>
</div>
</Layout>
<style lang="scss">
.button-list {
padding-left: 0;
list-style: none;
li {
margin-bottom: 20px;
margin-left: 20px;
display: inline-block;
}
}
</style>

123
src/pages/getinvolved.astro Normal file
View File

@@ -0,0 +1,123 @@
---
import Layout from "../layouts/Layout.astro";
import what from "../img/getInvolved/whatIsIt.jpg";
import volunteering from "../img/getInvolved/photo1.jpg";
import children from "../img/getInvolved/photo2.jpg";
import safe from "../img/getInvolved/safe.jpg";
---
<Layout title={"Get Involved"}>
<p>
So you want to come to Skint? Whether youve never missed one or its your
first time, wed love to welcome you.
</p>
<div>
<div class="row striped py-3">
<div class="col-lg-6 order-lg-last">
<img src={what} class="img-fluid p-2 rounded" />
</div>
<div class="col-lg-6">
<h3>What is Skint?</h3>
<p>
Skint is a weekend of international music and dance, held each year in
Derbyshire, England. One of the main aims of Skint is to make European
folk dance and music accessible to all, particularly to those who may
be unable to afford festivals in the UK or abroad. You can read more
about our aims in our constitution.
</p>
<p>
Skint is a very easy-going and friendly festival. During the day there
are workshops for dancers and musicians, suitable for both complete
beginners and the more experienced. The bals in the evening feature
music and dancing from a variety of European traditions, (e.g. France,
Scandinavia, England, Eastern Europe) much of which will have been
taught earlier in the day.
</p>
<p>
Skint is open to all, regardless of age or experience. You just need
an interest in European folk music and dance and a willingness to get
involved!
</p>
</div>
</div>
<div class="row striped py-3">
<div class="col-lg-6">
<img src={volunteering} class="img-fluid p-2 rounded" />
</div>
<div class="col-lg-6">
<h3>Volunteering</h3>
<p>
Everyone at Skint pitches in to ensure the smooth running of the
festival. When you first arrive there will be a volunteering sheet and
you'll sign up to help in one or two tasks. These include things like
getting the tables ready for lunch, preparing the food, tidying the
hall, and other such things
</p>
<p>
All of our workshops and concerts are taught and played by volunteers
as well. When you apply for a ticket we'll ask you if there's anything
that you would like to share with the festival.
</p>
<p>
No-one is paid, and the committee pay the same amount to attend as
other attendees.
</p>
</div>
</div>
<div class="row striped py-3">
<div class="col-lg-6 order-lg-last">
<img src={children} class="img-fluid p-2 rounded" />
</div>
<div class="col-lg-6">
<h3>Children</h3>
<p>
Children are very welcome at Skint. We seek to provide various
activities to keep them entertained however we cannot take any
responsibility for looking after them. For this reason we limit the
number of children attached to a ticket to 2. We are an inclusive
festival so if this causes a problem for you please contact us and we
will be happy to work with you to find a solution
</p>
</div>
</div>
<div class="row striped py-3">
<div class="col-lg-6">
<img src={safe} class="img-fluid p-2 rounded" />
</div>
<div class="col-lg-6">
<h3>Safer Spaces and Accessibility</h3>
<p>
At Skint we welcome all people, regardless of gender/gender identity,
race, ethnicity, sexual orientation, disability, age, physical
appearance, religion, employment status, dance or music ability, style
or dance role.
</p>
<p>
We are mindful and respectful of the needs and boundaries of each
attendee and be ready to make reasonable accommodation for those
needs, prioritising those that are typically marginalised by society.
We are able to say no, and respect when others say no.
</p>
<p>
Our full safer spaces policy can be <a
href="https://drive.google.com/open?id=1HY-979DCm9oXxBp3uxwkIn9w1bRZ8zxI"
>read here</a
>
</p>
</div>
</div>
</div>
</Layout>

View File

@@ -1,81 +1,70 @@
--- ---
import Layout from '../layouts/Layout.astro'; import Layout from "../layouts/Layout.astro";
import Card from '../components/Card.astro'; import DatesAndBooking from "../components/DatesAndBooking.astro";
import dancing1 from "../img/frontPage/dancing1.jpg";
import music from "../img/frontPage/music1.jpg";
import food from "../img/frontPage/food2.jpg";
import games from "../img/frontPage/funAndGames.jpg";
--- ---
<Layout title="Welcome to Astro."> <Layout
<main> hero="A warm, budget-friendly Scandi and International folk weekend in the Peaks, where everyone pitches in to help"
<h1>Welcome to <span class="text-gradient">Astro</span></h1> >
<p class="instructions"> <DatesAndBooking />
To get started, open the directory <code>src/pages</code> in your project.<br />
<strong>Code Challenge:</strong> Tweak the "Welcome to Astro" message above. <div>
</p> <div class="row striped py-3">
<ul role="list" class="link-card-grid"> <div class="col-md-6 order-md-last">
<Card <img src={dancing1} class="img-fluid p-2 rounded" />
href="https://docs.astro.build/" </div>
title="Documentation" <div class="col-md-6">
body="Learn how Astro works and explore the official API docs." <h3>Dancing</h3>
/> Skint is above all a dance festival. We revel in all forms of dancing from
<Card around the world but have a special love for Scandinavian and French. Whether
href="https://astro.build/integrations/" it's a twirly polska, a slinky mazurka, or a flowing contra, we have them
title="Integrations" all. We teach the dances during the day and then dance until we drop in the
body="Supercharge your project with new frameworks and libraries." evening.
/> </div>
<Card </div>
href="https://astro.build/themes/" <div class="row striped py-3">
title="Themes" <div class="col-md-6">
body="Explore a galaxy of community-built starter themes." <img style="float: right" src={music} class="img-fluid p-2 rounded" />
/> </div>
<Card <div class="col-md-6">
href="https://astro.build/chat/" <h3>Music</h3>
title="Community" What would dancing be without music? At Skint we aim to have 100% live music
body="Come say hi to our amazing Discord community. ❤️" all the time and all our live musicians are volunteers - We're here for the
/> love of the music and the dance. Our evening bals have a variety of groups
</ul> and scratch bands with everyone joining in. There are music workshops and
</main> informal sessions throughout the day.
</div>
</div>
<div class="row striped py-3">
<div class="col-md-6 order-md-last">
<img src={food} class="img-fluid p-2 rounded" />
</div>
<div class="col-md-6">
<h3>Food</h3>
The meals of Skint are one of the highlights of the festival. It's a time
when almost the entire festival is in one room, sharing one meal, and enjoying
the company. The food itself is consistently amazing, having been prepared
by festival-goers themselves. Just make sure you grab the midnight snack
before it goes!
</div>
</div>
<div class="row striped py-3">
<div class="col-md-6">
<img src={games} class="img-fluid p-2 rounded" />
</div>
<div class="col-md-6">
<h3>Games and silliness</h3>
Skint is not above some little silliness. We enjoy breaking the ice with
some form of game on the first night. And the games, and silliness, tend
to creep across the entire festival. Whether it's trolls chasing wizards,
passing round the boot, or simply singing silly songs, we make sure that
everyone has a good time.
</div>
</div>
</div>
</Layout> </Layout>
<style>
main {
margin: auto;
padding: 1.5rem;
max-width: 60ch;
}
h1 {
font-size: 3rem;
font-weight: 800;
margin: 0;
}
.text-gradient {
background-image: var(--accent-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-size: 400%;
background-position: 0%;
}
.instructions {
line-height: 1.6;
margin: 1rem 0;
border: 1px solid rgba(var(--accent), 25%);
background-color: white;
padding: 1rem;
border-radius: 0.4rem;
}
.instructions code {
font-size: 0.875em;
font-weight: bold;
background: rgba(var(--accent), 12%);
color: rgb(var(--accent));
border-radius: 4px;
padding: 0.3em 0.45em;
}
.instructions strong {
color: rgb(var(--accent));
}
.link-card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(24ch, 1fr));
gap: 1rem;
padding: 0;
}
</style>

15
src/pages/library.astro Normal file
View File

@@ -0,0 +1,15 @@
---
import Library from "../components/Library.jsx";
import Layout from "../layouts/Layout.astro";
import resources from "../data/resources.json";
---
<Layout title="Library">
<div class="pb-1">
<p>Here we store the records of Skints past.</p>
<Library resources={resources} client:load/>
</div>
</Layout>

166
src/pages/tickets.astro Normal file
View File

@@ -0,0 +1,166 @@
---
import DatesAndBooking from "../components/DatesAndBooking.astro";
import Layout from "../layouts/Layout.astro";
---
<Layout title={"Tickets"}>
<DatesAndBooking />
<div class="pb-1">
<p>
To be alerted when our booking opens, please sign up to our mailing list
below or follow us on <a href="https://www.facebook.com/skintdance"
>Facebook</a
>!
</p>
<h3>Tickets and Booking</h3>
<p>
Tickets for Skint very customisable. Accommodation and meals are optional
items. This allows us to overcome the traditional limiting factor of
Skint, catering for all of us, and allows you to choose which parts of
Skint you want to enjoy.
</p>
<p>
There are some fantastic pubs in the village which serve food, as well as
a small shop, and of course you are welcome to bring your own food.
However, there will be no kitchen space or seating in the hall for
self-catering.
</p>
<p>You can buy tickets for 2 adults at the same time.</p>
<p>
<strong>Tickets are non-transferrable</strong>. They allow only the named
person to attend. You cannot sell or give them to someone else. This is to
make the application process fair for everyone, and we enforce the rules.
In exceptional cases we may cancel tickets obtained in contravention of
the rules.
</p>
<h4>Cancellations and Refunds</h4>
<p>
Due to the exceptional circumstances this year, there will be no cut off
for refunds. We will be offering full refunds (minus our booking &amp;
banking fees) on tickets right up until the start of the festival. If your
circumstances change amd you are unable to attend Skint, please let us
know.
</p>
<h4>Children</h4>
<p>
Children under 16s don't need to buy the admission ticket, but they will
need to pay for any meals and camping they wish to use.
</p>
<h3>Costs</h3>
<div class="container" style="margin-bottom:20px">
<div class="row justify-content-start">
<div class="col-md-6">
<h5>In advance</h5>
<table
class="table table-condensed table-bordered"
style="background-color:#fff"
>
<tr>
<th colspan="32">A place at Skint</th>
</tr>
<tr>
<td></td>
<td>Admission (adult)</td>
<td style="width:70px">&pound;22</td>
</tr>
<tr>
<td></td>
<td>Admission (under 16)</td>
<td style="width:70px">&pound;0</td>
</tr>
<tr>
<th colspan="32">Meals</th>
</tr>
<tr>
<td style="width:10px"></td>
<td>Friday evening, 6pm</td>
<td style="width:70px">&pound;5</td>
</tr>
<tr>
<td></td>
<td>Saturday lunch, 1pm</td>
<td>&pound;4</td>
</tr>
<tr>
<td></td>
<td>Saturday evening, 6pm</td>
<td>&pound;5</td>
</tr>
<tr>
<td></td>
<td>Sunday lunch, 1pm</td>
<td>&pound;4</td>
</tr>
<tr>
<th colspan="32">Camping</th>
</tr>
<tr>
<td></td>
<td
>Indoor
<div style="font-size:smaller">
Friday & Saturday nights. Camping in the hall. Bring camping
mat, sleeping bag & ear plugs!
</div>
</td>
<td style="width:70px">&pound;10</td>
</tr>
<tr>
<td></td>
<td
>Outdoor
<div style="font-size:smaller">
Friday & Saturday nights. Camping in a nearby field. Bring a
tent & thermals!
</div>
</td>
<td style="width:70px">&pound;10</td>
</tr>
</table>
</div>
<div class="col-md-6">
<h5>On the door</h5>
<table
class="table table-condensed table-bordered"
style="background-color:#fff"
>
<tr>
<th colspan="32">Dancing and Workshops</th>
</tr>
<tr>
<td style="width:10px"></td>
<td>Friday evening bal, from 8pm</td>
<td style="width:70px">&pound;6</td>
</tr>
<tr>
<td></td>
<td>Saturday workshops</td>
<td>&pound;6</td>
</tr>
<tr>
<td></td>
<td>Saturday evening bal, from 8pm</td>
<td>&pound;6</td>
</tr>
<tr>
<td></td>
<td>Sunday workshops and bal</td>
<td>&pound;6</td>
</tr>
</table>
Meal tickets are not available on the door.
</div>
</div>
</div>
</div>
</Layout>

115
src/pages/usefulinfo.astro Normal file
View File

@@ -0,0 +1,115 @@
---
import Layout from "../layouts/Layout.astro";
---
<Layout title={"Useful Info"}>
<h1>Useful Info</h1>
<h3>Provisional Timetable</h3>
<div class="row">
<div class="col-md-4">
<table class="table table-condensed" style="background-color:#fff">
<tr>
<th colspan="2"
>Friday
<th> </th>
<tr>
<td style="width:120px">15:00</td>
<td>Venue opens</td>
</tr>
<tr>
<td>18:00 - 20:00</td>
<td>Dinner</td>
</tr>
<tr>
<td>20:00 - 00:00</td>
<td>Bal</td>
</tr>
</th>
</tr>
<div class="col-md-4">
<table class="table table-condensed" style="background-color:#fff">
<tr>
<th colspan="2"
>Saturday
<th> </th>
<tr>
<td style="width:120px">until 10:15</td>
<td>Breakfast</td>
</tr>
<tr>
<td>10:15 - 11:30</td>
<td>Workshop slot 1</td>
</tr>
<tr>
<td>11:45 - 13:00</td>
<td>Workshop slot 2</td>
</tr>
<tr>
<td>13:00 - 14:30</td>
<td>Lunch</td>
</tr>
<tr>
<td>14:30 - 15:45</td>
<td>Workshop slot 3</td>
</tr>
<tr>
<td>16:00 - 17:15</td>
<td>Workshop slot 4</td>
</tr>
<tr>
<td>18:00 - 20:00</td>
<td>Dinner</td>
</tr>
<tr>
<td>20:00 - 00:00</td>
<td>Bal</td>
</tr>
</th>
</tr>
<div class="col-md-4">
<table
class="table table-condensed"
style="background-color:#fff"
>
<tr>
<th colspan="2"
>Sunday
<th> </th>
<tr>
<td style="width:120px">until 10:00</td>
<td>Breakfast</td>
</tr>
<tr>
<td>10:00 - 11:15</td>
<td>Workshop slot 5</td>
</tr>
<tr>
<td>11:30 - 12:45</td>
<td>Workshop slot 6</td>
</tr>
<tr>
<td>12:45 - 14:00</td>
<td>Lunch</td>
</tr>
<tr>
<td>14:00 - 16:00</td>
<td>Clear-up</td>
</tr>
<tr>
<td>16:00 - 17:30</td>
<td>Bal</td>
</tr>
<tr>
<td>18:00</td>
<td>Venue closes</td>
</tr>
</th>
</tr>
</table>
</div>
</table>
</div>
</table>
</div>
</div>
</Layout>

242
src/pages/yourvisit.astro Normal file
View File

@@ -0,0 +1,242 @@
---
import Layout from "../layouts/Layout.astro";
import car from "../img/yourVisit/car.jpg";
import indoorCamping from "../img/yourVisit/indoorCamping.jpg";
import food from "../img/yourVisit/food.jpg";
import explore from "../img/yourVisit/explore.jpg";
---
<Layout title={"Your Visit"}>
<div>
<div class="row striped py-3">
<div class="col-lg-6 order-lg-last">
<div class="embed-responsive embed-responsive-16by9">
<iframe
class="embed-responsive-item"
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2391.964782681162!2d-1.478728048994796!3d53.16467119590682!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x48798f01f833bedb%3A0x36299d8139872251!2sAshover+Parish+Hall!5e0!3m2!1sen!2suk!4v1459949293259"
></iframe>
</div>
</div>
<div class="col-lg-6">
<h2>Where is it?</h2>
<p>
Skint takes place in Ashover Village Hall. Ashover is a Derbyshire
village situated in the Amber valley, just outside the Peak District
National Park, 4 miles north east of Matlock. It lies off the B6036
Matlock to Chesterfield road.
</p>
<p>The hall is on Milken Lane, opposite the Black Swan pub.</p>
<p>
<a href="http://goo.gl/maps/ll0k"
>Ashover Parish Hall, Milken Lane, Ashover, Derbyshire S45 0BA</a
>
</p>
</div>
</div>
<div class="row striped py-3">
<div class="col-lg-6">
<img src={car} class="img-fluid p-2 rounded" />
</div>
<div class="col-lg-6 order-lg-last">
<h2>Getting here?</h2>
<h4>Train, bus & taxis</h4>
<p>
The nearest train station is Chesterfield. Matlock and Sheffield
stations are also nearby.
</p>
<p>
Bus number 63 goes from Chesterfield to Ashover village, and number
X17 goes from Sheffield/ Chesterfield to Kelstedge (1 mile walk to
Ashover village hall). Buses are fairly regular but not frequent so
it's worth <a target="_blank" href="https://www.traveline.info/"
>checking times in advance</a
>
</p>
<p>
Chesterfield Station's <a
target="_blank"
href="https://www.nationalrail.co.uk/posters/CHD.pdf"
>onward travel information</a
> has useful information about bus stop locations, as well as local taxi
information in case you happen to arrive at a time when no buses are running:
</p>
<p>
If you're planning to take a taxi from the station, you might want to
make use of the Skint car- sharing site to find others to share the
taxi with (see below).
</p>
<h4>Car parking</h4>
<p>There is plenty of parking at the venue.</p>
<h4>Lift sharing</h4>
<p>
We encourage lift-sharing where possible. If you have a car, please
consider offering spaces to other Skinters. If you can drive but don't
have a car, maybe it's worth getting a group together to hire one for
the weekend.
</p>
<p>
To help with coordinating car shares we'll be sending out a link to a
Skint-specific car sharing site to all attendees, so keep an eye out
in your emails.
</p>
</div>
</div>
<div class="row striped py-3">
<div class="col-lg-6 order-lg-last">
<img src={indoorCamping} class="img-fluid p-2 rounded" />
</div>
<div class="col-lg-6">
<h2>Accommodation</h2>
<h4>Stay with us</h4>
<p>
As part of your weekend ticket you will have the option for indoor or
outdoor camping. Campers of both varieties have access to the showers
in the Sports Pavilion next door at certain times during the weekend.
The showers are coin-operated with 20p pieces, so please bring some
with you! There are communal showers for males/ females, as well as a
separate accessible shower for anyone who prefers to shower alone.
</p>
<p>
If you are camping indoors please bring a sleeping bag, mat, and
pillow. As everyone is sleeping in close proximity and there may be
music late into the night in adjoining rooms, we suggest that you
bring earplugs!
</p>
<p>
If you are camping outdoors, please bring a sleeping bag, mat, pillow,
lots of warm layers, and a tent! There is a small amount of
hardstanding for campervans on the camping field. Outdoor camping is
in the field next to the village hall. You are not allowed to sleep in
the hall carpark by order of the council (this will be externally
enforced).
</p>
<h4>Stay elsewhere</h4>
<p>
Some people like to sleep in a real bed. If that's you, you can look
for your own accommodation in the village. Here are some ideas to get
you started:
</p>
<ul>
<li>
<a
target="_blank"
href="https://www.titanicbrewery.co.uk/our-pubs/the-old-poets-corner/"
>Old Poets Corner</a
>
</li>
<li>
<a target="_blank" href="https://stampcoffeeshop.com/accommodation"
>Stamp Coffee shop</a
>
</li>
<li>
<a target="_blank" href="https://www.airbnb.co.uk/">Airbnb</a>
</li>
</ul>
</div>
</div>
<div class="row striped py-3">
<div class="col-lg-6">
<img src={food} class="img-fluid p-2 rounded" />
</div>
<div class="col-lg-6">
<h2>Food & Drink</h2>
<h4>At Skint</h4>
<p>
All food at Skint is delicious, vegetarian, and prepared by
Skint-goers themselves. We do cater for other dietary requirements and
allergies - please let us know when booking. If you'd like to join in
the Skint catering, make sure you include meals in your ticket when
you book.
</p>
<p>
Water, juice, tea, and coffee are provided, as well as late-night
snacks. You're welcome to join in these whether you have a meal ticket
or not.
</p>
<p>There's no bar on-site. Feel free to bring your own drinks.</p>
<h4>Nearby</h4>
<p>
There are several pubs and cafes in the village that offer fantastic
food and drinks
</p>
<ul>
<li>
<a target="_blank" href="https://www.facebook.com/dwbown/"
>D W Brown Butchers</a
> - (actually more like a farm shop/ corner shop) - Mon-Sun, ~8am-3 or
4pm, closed over lunchtimet
</li>
<li>
<a target="_blank" href="https://stampcoffeeshop.com">Stamp Cafe</a>
- Breakfast and lunch, Mon-Sat
</li>
<li>
<a target="_blank" href="https://www.theblackswanashover.com"
>Black Swan</a
> - Lunch and dinner, Tues-Sun
</li>
<li>
<a target="_blank" href="https://www.facebook.com/TheCrispinInn"
>Crispin Inn</a
> - Lunch and dinner, Mon-Sun
</li>
<li>
<a
target="_blank"
href="https://www.titanicbrewery.co.uk/our-pubs/the-old-poets-corner/"
>Old Poets Corner</a
> - Lunch and dinner, Tues-Sat
</li>
</ul>
</div>
</div>
<div class="row striped py-3">
<div class="col-lg-6 order-lg-last">
<img src={explore} class="img-fluid p-2 rounded" />
</div>
<div class="col-lg-6">
<h2>Explore the area</h2>
<p>
Ashover is surrounded by beautiful countryside, great for taking a
breather from the festival. Some good landmarks/ viewing points within
walking distance are <a
target="_blank"
href="https://www.greatbritishlife.co.uk/things-to-do/walks/county-walk-ashover-6501638"
>Ashover Rock</a
> (~ 1 mile) and <a
target="_blank"
href="http://www.derbyshire-peakdistrict.co.uk/ashoverwalk.htm"
>Cocking Tor</a
>
(~ 2 miles).
</p>
</div>
</div>
</div>
</Layout>

2
src/styles/vars.scss Normal file
View File

@@ -0,0 +1,2 @@
$skint-highlight: hsl(8, 57%, 35%);
$skint-colour-2: #edb579;

View File

@@ -1,3 +1,7 @@
{ {
"extends": "astro/tsconfigs/strict" "extends": "astro/tsconfigs/strict",
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "react"
}
} }