This commit is contained in:
2025-11-29 12:10:23 -05:00
parent 010244847f
commit 1349158dcb
55 changed files with 2227 additions and 142 deletions

View File

@@ -0,0 +1,134 @@
<script setup>
import { storeToRefs } from 'pinia'
import { mainStore } from '../../stores/MainStore.vue'
import About from '../About.vue'
import qrCode from '../../assets/qr.digi.png'
const promo = mainStore().promo_display;
const { isOpen, modal} = storeToRefs(mainStore())
</script>
<template>
<div
v-show="isOpen"
class="
overflow-auto scrolling-touch left-0 top-0 bottom-100 right-0 w-full h-full fixed
overscroll-auto
flex
items-start
justify-center
mx-auto
z-40
"
>
<div class="max-w-2xl p-6 mt-10 rounded-md shadow-xl promo-overlay">
<!-- <div class="flex items-center justify-between">
<h3 v-show="modal" class="text-2xl">QR Code to DigiSnaxx</h3>
<h3 v-show="!modal" class="text-2xl">About DigiSnaxx</h3>
<svg
@click="isOpen = false"
xmlns="http://www.w3.org/2000/svg"
class="w-8 h-8 text-red-900 cursor-pointer"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
/>
</svg>
</div> -->
<!-- <About v-if="modal === 0" class="z-40"/> -->
<div v-if="modal === 0" class="p-2 template z-40">
<svg
@click="isOpen = false"
xmlns="http://www.w3.org/2000/svg"
class="w-8 h-8 text-red-900 cursor-pointer"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
/>
</svg>
<div>
<h2 class="text-2xl"><a href="">DreamFreely</a></h2>
<p class="p-10">DigiSnaxx is the creation of <a href="//canin.dreamfreely.org">Canin Carlos</a>.</p>
<p>You can <a href="https://airtable.com/appzQxsifc8AnD1zA/shrfUvOiFdaHI8xoz">submit a calendar here</a>, or <a href="https://airtable.com/appzQxsifc8AnD1zA/shrvhmYsAXY216C51">submit an event here</a>.</p>
<p>
<img :src="qrCode"/>
<h2 class="text-xl green p-5">Shareable QR Code</h2>
</p>
</div>
</div>
<div v-if="modal === 1" class="p-2 template z-40">
<svg
@click="isOpen = false"
xmlns="http://www.w3.org/2000/svg"
class="w-8 h-8 text-red-900 cursor-pointer"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
/>
</svg>
<img :src="qrCode"/>
<h2 class="text-xl green p-5">Shareable QR Code</h2>
</div>
<div v-if="modal === 2" class="p-10 template z-40 green">
<a class="text-lg underline font-bold" :href="promo[0].target_link">
<h2 class="text-xl">
{{ promo[0].title }}
</h2>
<p class="text-xs">
{{ promo[0].target_link }}
</p>
<img class="rounded-full" :src="promo[0].image"/>
</a>
<!-- <p>
{{ promo[0].promo_type }}
</p> -->
<div class="p-5" v-html="promo[0].long_text" />
</div>
</div>
</div>
</template>
<style scoped>
/* .template {
background-color: #000;
z-index: 4;
} */
.promo-overlay {
background-color: #000;
color: #fff;
}
div >>> p {
padding:.5rem;
}
</style>

View File

@@ -0,0 +1,107 @@
<script setup>
import { useMenuStore } from '../../stores/MenuStore';
import { useEventsStore } from '../../stores/EventsStore';
import { mainStore } from '../../stores/MainStore.vue';
import Modal from './Modal.vue';
const menuStore = useMenuStore();
const EventsStore = useEventsStore();
const MainStore = mainStore();
</script>
<template>
<div class="text-center p-0">
<button class="" v-on:click="menuStore.showMenu = !menuStore.showMenu">Filters</button>
<button
@click="MainStore.changeGallery(MainStore.isOpen, 0, 0, null)"
class="about"
type="button"
>
About
</button>
<!-- <button
@click="MainStore.changeGallery(MainStore.isOpen, 0, 1, null)"
class="qr-code"
type="button"
>
QR Code
</button> -->
</div>
</template>
<style scoped>
.menu {
color: #777 !important;
background-color: #111;
padding: .25em 1em .25em 1em;
}
.ads {
background-color: #222;
border: .1em solid #fff;
border-radius: 25px;
}
p {
padding: 1rem 1rem 1rem 0rem;
text-align: center;
}
input {
border-radius: 25px;
padding: .5rem;
color: #000;
}
button {
border-radius: 25px;
padding: .5rem;
margin: .75rem;
background-color: orange;
color: #000;
font-weight: bold;
}
#filter-btn {
border-radius: 25px;
padding: .5rem;
margin: .75rem;
background-color: cornflowerblue;
color: #000;
font-weight: bold;
}
button {
border-radius: 25px;
padding: .25rem .75rem;
margin: .25rem;
background-color: orange;
color: #000;
font-weight: bold;
}
.search {
border-radius: 25px;
padding: .5rem 1rem;
margin: .5rem;
margin-top: 10px;
background-color: hsla(160, 100%, 37%, 1);
color: #000;
font-weight: bold;
}
.days {
background-color: hsla(160, 100%, 37%, 1);
padding: .5rem 1rem .5rem 1rem;
font-size: 1.05rem;
}
.category {
/* background-color: hsla(160, 100%, 37%, 1); */
padding: .5rem 1rem .5rem 1rem;
font-size: 1.15rem;
}
</style>

View File

@@ -0,0 +1,45 @@
<script setup>
import { useMenuStore } from '../../stores/MenuStore';
import { useEventsStore } from '../../stores/EventsStore';
import { mainStore } from '../../stores/MainStore.vue';
import Modal from './Modal.vue';
const menuStore = useMenuStore();
const EventsStore = useEventsStore();
const MainStore = mainStore();
</script>
<template>
<div class="text-center p-0">
<input v-model="EventsStore.search_term" type="text" id="search" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 blockz p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500 align-middle"/>
<button class="btn search mt-8 align-middle" v-on:click.prevent="EventsStore.searchEvents(EventsStore.search_term)"><img class="lens align-middle" src="/search.png"/></button>
</div>
</template>
<style scoped>
input {
border-radius: 25px;
padding: .5rem;
color: #000;
}
button {
border-radius: 25px;
padding: .5rem;
margin: .75rem;
background-color: orange;
color: #000;
font-weight: bold;
}
.search {
border-radius: 25px;
padding: .5rem 1rem;
margin: .5rem;
margin-top: 10px;
background-color: hsla(160, 100%, 37%, 1);
color: #000;
font-weight: bold;
}
</style>

View File

@@ -0,0 +1,120 @@
<script setup>
import { useMenuStore } from '../../stores/MenuStore';
import { useEventsStore } from '../../stores/EventsStore';
import { mainStore } from '../../stores/MainStore.vue';
import Modal from './Modal.vue';
const menuStore = useMenuStore();
const EventsStore = useEventsStore();
const MainStore = mainStore();
</script>
<template>
<div v-if="menuStore.showMenu">
<div v-if="menuStore.isHidden">
<div>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(0)">Today</button>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(1)">Tomorrow</button>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(2)">+ 2</button>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(3)">+ 3</button>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(4)">+ 4</button>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(5)">+ 5</button>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(6)">+ 6</button>
</div>
<div>
<button class="btn category" v-on:click.prevent="EventsStore.getEventsByType('Mu')">Entertainment</button>
<button class="btn category" v-on:click.prevent="EventsStore.getEventsByType('Ed')">Education</button>
</div>
</div>
<!-- <div v-if="!menuStore.isHidden">
<div>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(0)">Today</button>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(1)">Tomorrow</button>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(2)">+ 2</button>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(3)">+ 3</button>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(4)">+ 4</button>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(5)">+ 5</button>
<button class="btn days" v-on:click.prevent="EventsStore.getEventByDate(6)">+ 6</button>
</div>
<div>
<button class="btn category" v-on:click.prevent="EventsStore.getEventsByType('Mu')">Music</button>
<button class="btn category" v-on:click.prevent="EventsStore.getEventsByType('Gv')">Government</button>
<button class="btn category" v-on:click.prevent="EventsStore.getEventsByType('Ed')">Education</button>
<button class="btn category" v-on:click.prevent="EventsStore.getEventsByType('Co')">Comedy</button>
<button class="btn category" v-on:click.prevent="EventsStore.getEventsByType('Ot')">Other</button>
</div>
</div> -->
<!-- <span>
<button id="filter-btn" v-if="menuStore.isHidden" v-on:click="menuStore.isHidden = !menuStore.isHidden">More Filters</button>
<button id="filter-btn" v-if="!menuStore.isHidden" v-on:click="menuStore.isHidden = !menuStore.isHidden">Less Filters</button>
<button id="filter-btn" v-on:click.prevent="EventsStore.fetchEvents()">Clear Filters</button>
</span> -->
<div class="text-center p-0">
<button class="menu" v-on:click="menuStore.close_menu()">X</button>
</div>
</div>
</template>
<style scoped>
.menu {
color: #777 !important;
background-color: #111;
padding: .25em 1em .25em 1em;
}
.ads {
background-color: #222;
border: .1em solid #fff;
border-radius: 25px;
}
p {
padding: 1rem 1rem 1rem 0rem;
text-align: center;
}
input {
border-radius: 25px;
padding: .5rem;
color: #000;
}
button {
border-radius: 25px;
padding: .5rem;
margin: .75rem;
background-color: orange;
color: #000;
font-weight: bold;
}
#filter-btn {
border-radius: 25px;
padding: .5rem;
margin: .75rem;
background-color: cornflowerblue;
color: #000;
font-weight: bold;
}
.search {
padding: .5rem 2rem .5rem 2rem;
}
.days {
background-color: hsla(160, 100%, 37%, 1);
padding: .5rem 1rem .5rem 1rem;
font-size: 1.05rem;
}
.category {
/* background-color: hsla(160, 100%, 37%, 1); */
padding: .5rem 1rem .5rem 1rem;
font-size: 1.15rem;
}
</style>