Skip to content

Commit 0177f7b

Browse files
committed
Add oss-friends
1 parent c724eac commit 0177f7b

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed

web/layouts/website.vue

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,18 @@
265265
</a>
266266
</v-hover>
267267
</li>
268+
<li class="mt-2">
269+
<v-hover v-slot="{ hover }">
270+
<nuxt-link
271+
class="text--primary text-decoration-none"
272+
:class="{ 'text-decoration-underline': hover }"
273+
to="/oss-friends"
274+
>
275+
OSS Friends
276+
<v-icon small>{{ mdiDomain }}</v-icon>
277+
</nuxt-link>
278+
</v-hover>
279+
</li>
268280
</ul>
269281
</v-col>
270282
</v-row>
@@ -285,6 +297,7 @@ import {
285297
mdiShieldStar,
286298
mdiLightbulbOn50,
287299
mdiCreation,
300+
mdiDomain,
288301
mdiEyeOffOutline,
289302
mdiPost,
290303
mdiCreditCardOutline,
@@ -308,6 +321,7 @@ export default Vue.extend({
308321
mdiCreditCardOutline,
309322
mdiEmailOutline,
310323
mdiPost,
324+
mdiDomain,
311325
mdiCircle,
312326
mdiShieldStar,
313327
mdiLightbulbOn50,

web/pages/oss-friends/index.vue

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<template>
2+
<v-container class="mt-16">
3+
<v-row>
4+
<v-col cols="10" offset="1" class="mt-16">
5+
<h1 class="text-h2 mb-4 text-center">Open Source Friends</h1>
6+
<p class="text-h5 text--secondary text-center">
7+
Here are some of our favorites open-source projects.
8+
</p>
9+
<v-row class="mb-8 mt-8">
10+
<v-col v-if="apps.length == 0" class="text-center my-16">
11+
<v-progress-circular :size="100" color="primary" indeterminate />
12+
</v-col>
13+
<v-col v-for="app in apps" :key="app.href" cols="12" md="4">
14+
<v-card>
15+
<v-card-text class="mb-0 pb-0">
16+
<h4 class="text-h5 text--primary">
17+
{{ app.name }}
18+
</h4>
19+
<p class="mt-2 app-description mb-0">{{ app.description }}</p>
20+
</v-card-text>
21+
<v-card-actions>
22+
<v-btn text :href="app.href" color="primary">
23+
Learn More
24+
</v-btn>
25+
</v-card-actions>
26+
</v-card>
27+
</v-col>
28+
</v-row>
29+
<div class="px-16">
30+
<v-divider />
31+
</div>
32+
<div class="text-center mt-8 mb-4">
33+
<back-button />
34+
</div>
35+
</v-col>
36+
</v-row>
37+
</v-container>
38+
</template>
39+
40+
<script lang="ts">
41+
import Vue from 'vue'
42+
43+
type AppData = {
44+
name: string
45+
description: string
46+
href: string
47+
}
48+
49+
export default Vue.extend({
50+
name: 'OpenSourceFriendsIndex',
51+
layout: 'website',
52+
data: () => ({
53+
apps: [] as AppData[],
54+
}),
55+
async fetch() {
56+
const response = await fetch(
57+
'https://corsproxy.io/?https%3A%2F%2Fformbricks.com%2Fapi%2Foss-friends',
58+
).then((res) => res.json())
59+
this.apps = response.data
60+
},
61+
head() {
62+
return {
63+
title: 'Open Source Friends - httpSMS',
64+
}
65+
},
66+
})
67+
</script>
68+
69+
<style lang="scss" scoped>
70+
.app-description {
71+
display: -webkit-box;
72+
-webkit-line-clamp: 3;
73+
line-clamp: 3;
74+
-webkit-box-orient: vertical;
75+
overflow: hidden;
76+
text-overflow: ellipsis;
77+
height: 4.5em;
78+
}
79+
</style>

0 commit comments

Comments
 (0)