Initial commit
This commit is contained in:
parent
6fc1013745
commit
826517a798
18 changed files with 16576 additions and 0 deletions
5
app/app.vue
Normal file
5
app/app.vue
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<template>
|
||||
<UApp>
|
||||
<NuxtPage />
|
||||
</UApp>
|
||||
</template>
|
||||
38
app/pages/admin/members.vue
Normal file
38
app/pages/admin/members.vue
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<!-- pages/admin/members.vue -->
|
||||
<template>
|
||||
<UContainer>
|
||||
<UTable :columns="columns" :rows="members" :loading="pending">
|
||||
<template #actions-data="{ row }">
|
||||
<UDropdown :items="actions(row)">
|
||||
<UButton variant="ghost" icon="i-heroicons-ellipsis-horizontal" />
|
||||
</UDropdown>
|
||||
</template>
|
||||
</UTable>
|
||||
</UContainer>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
const { data: members, pending } = await useFetch("/api/admin/members");
|
||||
|
||||
const columns = [
|
||||
{ key: "name", label: "Name" },
|
||||
{ key: "email", label: "Email" },
|
||||
{ key: "circle", label: "Circle" },
|
||||
{ key: "contributionTier", label: "Contribution" },
|
||||
{ key: "slackInvited", label: "Slack" },
|
||||
{ key: "actions" },
|
||||
];
|
||||
|
||||
const actions = (row) => [
|
||||
[
|
||||
{
|
||||
label: "Send Slack Invite",
|
||||
click: () => sendSlackInvite(row),
|
||||
},
|
||||
{
|
||||
label: "View Details",
|
||||
click: () => navigateTo(`/admin/members/${row._id}`),
|
||||
},
|
||||
],
|
||||
];
|
||||
</script>
|
||||
30
app/pages/index.vue
Normal file
30
app/pages/index.vue
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<!-- pages/index.vue -->
|
||||
<template>
|
||||
<div>
|
||||
<UContainer>
|
||||
<UHero>
|
||||
<template #title>
|
||||
Pay what you can, take what you need, build what we dream
|
||||
</template>
|
||||
<template #description>
|
||||
Ghost Guild: A solidarity-based community for game developers
|
||||
exploring cooperative models
|
||||
</template>
|
||||
<template #actions>
|
||||
<UButton to="/join" size="lg" color="purple">
|
||||
Join Ghost Guild
|
||||
</UButton>
|
||||
</template>
|
||||
</UHero>
|
||||
|
||||
<UGrid :cols="3" class="mt-16 gap-8">
|
||||
<UCard v-for="circle in circles" :key="circle.id">
|
||||
<template #header>
|
||||
<h3>{{ circle.name }}</h3>
|
||||
</template>
|
||||
{{ circle.description }}
|
||||
</UCard>
|
||||
</UGrid>
|
||||
</UContainer>
|
||||
</div>
|
||||
</template>
|
||||
44
app/pages/join.vue
Normal file
44
app/pages/join.vue
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
<!-- pages/join.vue -->
|
||||
<template>
|
||||
<UContainer class="py-12">
|
||||
<UForm :state="form" @submit="handleSubmit">
|
||||
<!-- Step 1: Basic Info -->
|
||||
<UFormGroup label="Email" name="email">
|
||||
<UInput v-model="form.email" type="email" />
|
||||
</UFormGroup>
|
||||
|
||||
<!-- Step 2: Choose Circle -->
|
||||
<URadioGroup
|
||||
v-model="form.circle"
|
||||
:options="circleOptions"
|
||||
name="circle" />
|
||||
|
||||
<!-- Step 3: Choose Contribution -->
|
||||
<URadioGroup
|
||||
v-model="form.contribution"
|
||||
:options="contributionOptions"
|
||||
name="contribution" />
|
||||
|
||||
<!-- Step 4: Helcim Checkout -->
|
||||
<div id="helcim-payment"></div>
|
||||
|
||||
<UButton type="submit" block> Complete Membership </UButton>
|
||||
</UForm>
|
||||
</UContainer>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
const form = reactive({
|
||||
email: "",
|
||||
name: "",
|
||||
circle: "community",
|
||||
contribution: "15",
|
||||
});
|
||||
|
||||
// Load Helcim.js
|
||||
onMounted(() => {
|
||||
const script = document.createElement("script");
|
||||
script.src = "https://secure.helcim.app/helcim-pay.js";
|
||||
document.head.appendChild(script);
|
||||
});
|
||||
</script>
|
||||
40
app/pages/members/index.vue
Normal file
40
app/pages/members/index.vue
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<!-- pages/members/index.vue -->
|
||||
<template>
|
||||
<UDashboard>
|
||||
<UDashboardPanel>
|
||||
<UDashboardHeader>
|
||||
<template #title> Welcome back, {{ member?.name }}! </template>
|
||||
</UDashboardHeader>
|
||||
|
||||
<UGrid :cols="2" class="gap-4">
|
||||
<UCard>
|
||||
<template #header>Your Circle</template>
|
||||
<p class="text-xl font-semibold">{{ member?.circle }}</p>
|
||||
<UButton variant="soft" size="sm" class="mt-2">
|
||||
Request Circle Change
|
||||
</UButton>
|
||||
</UCard>
|
||||
|
||||
<UCard>
|
||||
<template #header>Your Contribution</template>
|
||||
<p class="text-xl font-semibold">
|
||||
${{ member?.contributionTier }}/month
|
||||
</p>
|
||||
<p class="text-sm text-gray-600">Supporting 2 solidarity spots</p>
|
||||
<UButton variant="soft" size="sm" class="mt-2">
|
||||
Adjust Contribution
|
||||
</UButton>
|
||||
</UCard>
|
||||
</UGrid>
|
||||
|
||||
<UCard class="mt-6">
|
||||
<template #header>Quick Links</template>
|
||||
<UList>
|
||||
<li><NuxtLink to="/members/resources">Resource Library</NuxtLink></li>
|
||||
<li><a href="https://gamma-space.slack.com">Slack Community</a></li>
|
||||
<li><NuxtLink to="/members/events">Upcoming Events</NuxtLink></li>
|
||||
</UList>
|
||||
</UCard>
|
||||
</UDashboardPanel>
|
||||
</UDashboard>
|
||||
</template>
|
||||
Loading…
Add table
Add a link
Reference in a new issue