Skip to content

Commit e039954

Browse files
Merge branch 'develop' into fix-38
2 parents 918eb2e + 7d5a801 commit e039954

File tree

238 files changed

+20520
-18427
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

238 files changed

+20520
-18427
lines changed

.eslintrc.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module.exports = {
2+
extends: [
3+
// 'eslint:recommended',
4+
// 'plugin:vue/vue3-recommended',
5+
// 'plugin:vue/recommended' // Use this if you are using Vue.js 2.x.
6+
],
7+
rules: {
8+
'indent': ['error', 2]
9+
},
10+
parser: "vue-eslint-parser",
11+
parserOptions: {
12+
"parser": "@typescript-eslint/parser",
13+
"sourceType": "module"
14+
}
15+
}

.github/workflows/build.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,11 @@ jobs:
3131
echo ${{ github.event.number }} > .pr
3232
- name: Upload dist
3333
if: github.event_name == 'pull_request'
34-
uses: actions/upload-artifact@v3
34+
uses: actions/upload-artifact@v4
3535
with:
3636
name: dist
3737
path: |
3838
dist/
3939
.pr
4040
retention-days: 1
41+
include-hidden-files: true

.github/workflows/check.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: check
2+
3+
on:
4+
push:
5+
branches: [develop]
6+
pull_request:
7+
8+
permissions:
9+
contents: read
10+
11+
jobs:
12+
lint:
13+
name: lint
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v4
18+
- name: Setup Node
19+
uses: actions/setup-node@v4
20+
with:
21+
node-version: 18
22+
- name: Install dependencies
23+
run: npm ci
24+
- name: Lint
25+
run: npm run lint

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,6 @@ If you would like to submit a bug report or feature request, or are looking for
88
2. Clone this repository and `cd` into it.
99
3. Run `npm install` to install the dependencies.
1010
4. Run `npm run dev` to start a development server listening on http://localhost:3000/.
11+
12+
## Note on Account Creation
13+
You need to create separate accounts for test instances (localhost, [https://test.bootstrap.academy](https://test.bootstrap.academy), PullRequest-preview pages) and live instances ([https://bootstrap.academy](https://bootstrap.academy)). These are two separate database systems.

components/Accordion.vue

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
!
2+
<template>
3+
<div class="p-2 rounded-md">
4+
<div
5+
class="bg-info text-primary p-4 font-bold rounded cursor-pointer text-center"
6+
v-on:click="isOpen = !isOpen"
7+
>
8+
{{ t(title) }}
9+
</div>
10+
<Transition name="fade" mode="out-in">
11+
<div
12+
class="mt-4 px-2 py-3 border-2 border-primary flex justify-center w-full"
13+
v-if="isOpen"
14+
>
15+
<slot />
16+
</div>
17+
</Transition>
18+
</div>
19+
</template>
20+
21+
<script setup lang="ts">
22+
import { useI18n } from "vue-i18n";
23+
24+
const props = defineProps<{
25+
title: string;
26+
}>();
27+
28+
const { t } = useI18n();
29+
30+
const isOpen = ref(false);
31+
</script>
32+
33+
<style scoped>
34+
.fade-enter-active,
35+
.fade-leave-active {
36+
transition: all 1s;
37+
}
38+
.fade-enter,
39+
.fade-leave-to,
40+
.fade-enter-from {
41+
opacity: 0;
42+
transform: translateY(-20px);
43+
}
44+
</style>

components/BtnSelf.vue

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -9,50 +9,50 @@
99
import { defineComponent } from 'vue';
1010
1111
export default defineComponent({
12-
props: {
13-
full: { type: Boolean, default: false },
14-
sm: { type: Boolean, default: false },
15-
md: { type: Boolean, default: true },
16-
lg: { type: Boolean, default: false },
17-
primary: { type: Boolean, default: true },
18-
secondary: { type: Boolean, default: false },
19-
tertiary: { type: Boolean, default: false },
20-
icon: { default: null },
21-
iconRight: { type: Boolean, default: false },
22-
bgColor: { type: String, default: 'bg-accent' },
23-
borderColor: { type: String, default: 'border-accent' },
24-
},
25-
emits: ['click'],
26-
setup(props, { emit }) {
27-
function onclick() {
28-
emit('click', true);
29-
}
12+
props: {
13+
full: { type: Boolean, default: false },
14+
sm: { type: Boolean, default: false },
15+
md: { type: Boolean, default: true },
16+
lg: { type: Boolean, default: false },
17+
primary: { type: Boolean, default: true },
18+
secondary: { type: Boolean, default: false },
19+
tertiary: { type: Boolean, default: false },
20+
icon: { default: null },
21+
iconRight: { type: Boolean, default: false },
22+
bgColor: { type: String, default: 'bg-accent' },
23+
borderColor: { type: String, default: 'border-accent' },
24+
},
25+
emits: ['click'],
26+
setup(props, { emit }) {
27+
function onclick() {
28+
emit('click', true);
29+
}
3030
31-
const textColor = computed(() => {
32-
return props.bgColor.includes('warning') ? 'text-primary' : 'text-white';
33-
});
34-
const classes = computed(() => {
35-
return [
36-
{
37-
lg: props.lg,
38-
md: props.md && !props.lg && !props.sm,
39-
sm: props.sm,
40-
'flex-row-reverse': props.iconRight,
41-
'text-center justify-center w-full': props.full,
42-
},
43-
props.primary && !props.secondary && !props.tertiary
44-
? `primary ${props.bgColor} text-primary hover:${props.bgColor} border ${props.borderColor} hover:ring-4 md:hover:ring-8 hover:ring-tertiary`
45-
: '',
46-
props.secondary
47-
? `secondary bg-transparent text-heading hover:bg-transparent border ${props.borderColor} hover:ring-4 md:hover:ring-8 hover:ring-tertiary`
48-
: '',
49-
props.tertiary
50-
? `tertiary bg-transparent text-heading hover:bg-transparent hover:scale-105 border border-transparent hover:ring-4 md:hover:ring-8 hover:ring-transparent`
51-
: '',
52-
];
53-
});
54-
return { classes, onclick };
55-
},
31+
const textColor = computed(() => {
32+
return props.bgColor.includes('warning') ? 'text-primary' : 'text-white';
33+
});
34+
const classes = computed(() => {
35+
return [
36+
{
37+
lg: props.lg,
38+
md: props.md && !props.lg && !props.sm,
39+
sm: props.sm,
40+
'flex-row-reverse': props.iconRight,
41+
'text-center justify-center w-full': props.full,
42+
},
43+
props.primary && !props.secondary && !props.tertiary
44+
? `primary ${props.bgColor} text-primary hover:${props.bgColor} border ${props.borderColor} hover:ring-4 md:hover:ring-8 hover:ring-tertiary`
45+
: '',
46+
props.secondary
47+
? `secondary bg-transparent text-heading hover:bg-transparent border ${props.borderColor} hover:ring-4 md:hover:ring-8 hover:ring-tertiary`
48+
: '',
49+
props.tertiary
50+
? `tertiary bg-transparent text-heading hover:bg-transparent hover:scale-105 border border-transparent hover:ring-4 md:hover:ring-8 hover:ring-transparent`
51+
: '',
52+
];
53+
});
54+
return { classes, onclick };
55+
},
5656
});
5757
</script>
5858
<style scoped>

components/CookiePolicy.vue

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -24,48 +24,48 @@ import { defineComponent } from 'vue';
2424
import Gleap from 'gleap';
2525
2626
export default defineComponent({
27-
setup() {
28-
const config = useRuntimeConfig().public;
27+
setup() {
28+
const config = useRuntimeConfig().public;
2929
30-
const dialog = computed(() => {
31-
return {
32-
type: 'info',
33-
heading: 'Headings.CookiePolicy',
34-
body: '',
35-
primaryBtn: {
36-
label: 'Buttons.CookiePolicy',
37-
onclick: () => {
38-
agreed.value = true;
39-
if (process.client) {
40-
Gleap.initialize(config.Gleap_API_KEY);
41-
}
42-
},
43-
},
44-
secondaryBtn: {
45-
label: '',
46-
onclick: () => {},
47-
},
48-
};
49-
});
30+
const dialog = computed(() => {
31+
return {
32+
type: 'info',
33+
heading: 'Headings.CookiePolicy',
34+
body: '',
35+
primaryBtn: {
36+
label: 'Buttons.CookiePolicy',
37+
onclick: () => {
38+
agreed.value = true;
39+
if (process.client) {
40+
Gleap.initialize(config.Gleap_API_KEY);
41+
}
42+
},
43+
},
44+
secondaryBtn: {
45+
label: '',
46+
onclick: () => {},
47+
},
48+
};
49+
});
5050
51-
const cookie_agreedToCookiePolicy = useCookie<boolean>(
52-
'agreedToCookiePolicy'
53-
);
51+
const cookie_agreedToCookiePolicy = useCookie<boolean>(
52+
'agreedToCookiePolicy'
53+
);
5454
55-
const router = useRouter();
56-
const route = useRoute();
55+
const router = useRouter();
56+
const route = useRoute();
5757
58-
const agreed = computed({
59-
get() {
60-
return cookie_agreedToCookiePolicy.value || false;
61-
},
62-
set(data: boolean) {
63-
cookie_agreedToCookiePolicy.value = data;
64-
},
65-
});
58+
const agreed = computed({
59+
get() {
60+
return cookie_agreedToCookiePolicy.value || false;
61+
},
62+
set(data: boolean) {
63+
cookie_agreedToCookiePolicy.value = data;
64+
},
65+
});
6666
67-
return { agreed, dialog, route };
68-
},
67+
return { agreed, dialog, route };
68+
},
6969
});
7070
</script>
7171

components/Download.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ import { defineComponent } from 'vue';
2020
import { useI18n } from 'vue-i18n';
2121
2222
export default defineComponent({
23-
setup() {
24-
const { t } = useI18n();
23+
setup() {
24+
const { t } = useI18n();
2525
26-
return { t };
27-
},
26+
return { t };
27+
},
2828
});
2929
</script>
3030

components/FAQ.vue

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -36,28 +36,28 @@ import { ChevronDownIcon } from '@heroicons/vue/24/solid';
3636
import { useI18n } from 'vue-i18n';
3737
3838
export default defineComponent({
39-
components: { ChevronDownIcon },
40-
props: {
41-
expand: { type: Boolean, default: false },
42-
heading: { type: String, default: '' },
43-
body: { type: String, default: '' },
44-
link: { default: null },
45-
},
46-
emits: ['expand'],
47-
setup(props, { emit }) {
48-
const { t } = useI18n();
39+
components: { ChevronDownIcon },
40+
props: {
41+
expand: { type: Boolean, default: false },
42+
heading: { type: String, default: '' },
43+
body: { type: String, default: '' },
44+
link: { default: null },
45+
},
46+
emits: ['expand'],
47+
setup(props, { emit }) {
48+
const { t } = useI18n();
4949
50-
const article = ref(null);
50+
const article = ref(null);
5151
52-
const max_height = computed(() => {
53-
return props.expand ? `${article?.value?.scrollHeight ?? 0}px` : `0px`;
54-
});
52+
const max_height = computed(() => {
53+
return props.expand ? `${article?.value?.scrollHeight ?? 0}px` : `0px`;
54+
});
5555
56-
function onclickToggleBoxBody() {
57-
emit('expand', !props.expand);
58-
}
59-
return { onclickToggleBoxBody, article, max_height, t };
60-
},
56+
function onclickToggleBoxBody() {
57+
emit('expand', !props.expand);
58+
}
59+
return { onclickToggleBoxBody, article, max_height, t };
60+
},
6161
});
6262
</script>
6363

0 commit comments

Comments
 (0)