+
+
+ Buscando...
+
+
+
+
+
{{ query ? `Sin coincidencias para "${query}"` : 'No hay actividades' }}
+
+
+
-
-
- {{ activity.title }}
-
-
-
-
-
+
-
- {{ formatDate(new Date(activity.date).getTime()/1000) }} {{ formatLocation(activity) }}
-
-
+
+ {{ safeDate(row.activity) }}
+
+ {{ formatLocation(row.activity) }}
-
- - Youtube
- - Audio
- - Libro
- - Sencillo
-
+
+
+
+
+ Coincidencia en el documento (abre para ubicarla con la búsqueda interna)
+
+
+
+
+
+
+
+
+
+
+
+
+ Coincide en:
+ {{ row.extraFields.map(fieldLabel).join(', ') }}
+
+
+
+
+
+
+
+ Cargando más...
+
+
+
+ No hay más resultados
+
+
+
diff --git a/app/components/settings/MembersList.vue b/app/components/settings/MembersList.vue
deleted file mode 100755
index 33fc867..0000000
--- a/app/components/settings/MembersList.vue
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
- -
-
-
-
-
-
- {{ member.name }}
-
-
- {{ member.username }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/composables/useDashboard.ts b/app/composables/useDashboard.ts
index f5cf669..ad3f2c6 100755
--- a/app/composables/useDashboard.ts
+++ b/app/composables/useDashboard.ts
@@ -1,25 +1,14 @@
import { createSharedComposable } from '@vueuse/core'
const _useDashboard = () => {
- const route = useRoute()
const router = useRouter()
- const isNotificationsSlideoverOpen = ref(false)
defineShortcuts({
- 'g-h': () => router.push('/'),
- 'g-i': () => router.push('/inbox'),
- 'g-c': () => router.push('/customers'),
- 'g-s': () => router.push('/settings'),
- 'n': () => isNotificationsSlideoverOpen.value = !isNotificationsSlideoverOpen.value
+ 'g-a': () => router.push('/actividades'),
+ 'g-c': () => router.push('/conferencias')
})
- watch(() => route.fullPath, () => {
- isNotificationsSlideoverOpen.value = false
- })
-
- return {
- isNotificationsSlideoverOpen
- }
+ return {}
}
export const useDashboard = createSharedComposable(_useDashboard)
diff --git a/app/layouts/default.vue b/app/layouts/default.vue
index a0f96c4..64e69e5 100755
--- a/app/layouts/default.vue
+++ b/app/layouts/default.vue
@@ -1,87 +1,19 @@
@@ -94,13 +26,11 @@ onMounted(async () => {
class="bg-elevated/25"
:ui="{ footer: 'lg:border-t lg:border-default' }"
>
-
- La Gran Carpa Catedral
+
+ La Gran Carpa Catedral
-
-
{
tooltip
popover
/>
-
-
@@ -123,10 +45,6 @@ onMounted(async () => {
-
-
-
-
diff --git a/app/pages/actividades.vue b/app/pages/actividades.vue
index b6afdc0..bdf4bff 100755
--- a/app/pages/actividades.vue
+++ b/app/pages/actividades.vue
@@ -1,112 +1,200 @@
-
-
-
-
-
+
+
-
+
+
+
+
+
+
+ Tip: envuelve en
+ "comillas"
+ para frase exacta en ese orden.
+
+
+
+
+
+
+
-
+
-
+
+
+
+ {{ query ? 'Selecciona una coincidencia para ver el detalle' : 'Escribe arriba para buscar' }}
+
+
-
+
diff --git a/app/pages/conferencias.vue b/app/pages/conferencias.vue
index 6f33c29..35f3164 100755
--- a/app/pages/conferencias.vue
+++ b/app/pages/conferencias.vue
@@ -1,330 +1,196 @@
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
- {{ table?.tableApi?.getFilteredSelectedRowModel().rows.length }}
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Tip: envuelve en
+ "comillas"
+ para frase exacta en ese orden.
+
+
+
-
-
- {{ table?.tableApi?.getFilteredSelectedRowModel().rows.length || 0 }} of
- {{ table?.tableApi?.getFilteredRowModel().rows.length || 0 }} row(s) selected.
-
+
-
- table?.tableApi?.setPageIndex(p - 1)"
- />
-
-
-
+
+
+
+
+
+
+
+ {{ query ? 'Selecciona una coincidencia para ver el detalle' : 'Escribe arriba para buscar' }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/pages/index.vue b/app/pages/index.vue
index c22b538..45c1306 100755
--- a/app/pages/index.vue
+++ b/app/pages/index.vue
@@ -1,69 +1,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/app/pages/settings.vue b/app/pages/settings.vue
deleted file mode 100755
index 431b9c4..0000000
--- a/app/pages/settings.vue
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/pages/settings/index.vue b/app/pages/settings/index.vue
deleted file mode 100755
index 036c5c2..0000000
--- a/app/pages/settings/index.vue
+++ /dev/null
@@ -1,158 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/pages/settings/members.vue b/app/pages/settings/members.vue
deleted file mode 100755
index ef9a73a..0000000
--- a/app/pages/settings/members.vue
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/pages/settings/notifications.vue b/app/pages/settings/notifications.vue
deleted file mode 100755
index b64278e..0000000
--- a/app/pages/settings/notifications.vue
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/pages/settings/security.vue b/app/pages/settings/security.vue
deleted file mode 100755
index ba52114..0000000
--- a/app/pages/settings/security.vue
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/types/index.d.ts b/app/types/index.d.ts
index c1cb193..5825b9b 100755
--- a/app/types/index.d.ts
+++ b/app/types/index.d.ts
@@ -12,20 +12,42 @@ export interface User {
location: string
}
-export interface Activity {
- id: number
- title: string
+export interface SearchFiles {
+ youtube?: string
+ video?: string
+ audio?: string
+ booklet?: string
+ simple?: string
}
-export interface Mail {
- id: number
+export interface MatchPosition { start: number, length: number }
+
+export interface SearchHit {
+ _id: string | number
+ id?: string | number
+ title: string
+ slug?: string
+ date?: number | string
+ isodate?: string
+ activity?: string
+ conference?: string
+ place?: string
+ city?: string
+ state?: string
+ country?: string
+ body?: string
+ thumbnail?: string
+ type?: string
+ files?: SearchFiles
unread?: boolean
- from: User
- subject: string
- body: string
- date: string
+ _formatted?: Record
+ _matchesPosition?: Record
+ [key: string]: unknown
}
+// Backwards-compatible alias used by InboxList / InboxActivity
+export type Activity = SearchHit
+
export interface Member {
name: string
username: string
@@ -33,22 +55,6 @@ export interface Member {
avatar: AvatarProps
}
-export interface Stat {
- title: string
- icon: string
- value: number | string
- variation: number
- formatter?: (value: number) => string
-}
-
-export interface Sale {
- id: string
- date: string
- status: SaleStatus
- email: string
- amount: number
-}
-
export interface Notification {
id: number
unread?: boolean
@@ -56,10 +62,3 @@ export interface Notification {
body: string
date: string
}
-
-export type Period = 'daily' | 'weekly' | 'monthly'
-
-export interface Range {
- start: Date
- end: Date
-}
diff --git a/app/utils/fetchDocument.ts b/app/utils/fetchDocument.ts
index 7ee6ddf..cc21e85 100755
--- a/app/utils/fetchDocument.ts
+++ b/app/utils/fetchDocument.ts
@@ -1,57 +1,3 @@
-import Typesense from 'typesense';
-import { ref } from 'vue';
-
-const documentData = ref({});
-const error = ref("");
-
-// Initialize the Typesense client
-const client = new Typesense.Client({
- 'nodes': [{
- 'host': 'searchts.carpa.com', // For Typesense Cloud use xxx.a1.typesense.net
- 'port': 443, // For Typesense Cloud use 443
- 'protocol': 'https' // For Typesense Cloud use https
- }],
- 'apiKey': '3KrmYlcirARCxG4AZPV5bnJgQD0qtoW0',
- 'connectionTimeoutSeconds': 2
-});
-
-export async function fetchDocumentBySlug( collectionName:string, slug: string ){
- error.value = "";
- documentData.value = {};
-
- const nSlug = parseInt(slug);
-
- if( Number.isFinite( nSlug ) ){
- return fetchDocument( collectionName, slug );
- }
-
- try {
- // Call the retrieve a document API directly
- const doc = await client.collections(collectionName).documents().search({
- 'q': slug,
- 'query_by': 'slug'
- })
-
- //documentData.value = doc.hits?.[0]?.document;
- return doc.hits?.[0]?.document;
-
- } catch (err) {
- console.error("Error fetching document:", err);
- error.value = "Failed to fetch document.";
- }
-}
-
-export async function fetchDocument( collectionName:string, documentId:string) {
- error.value = "";
- documentData.value = {};
- try {
- // Call the retrieve a document API directly
- const doc = await client.collections(collectionName).documents(documentId).retrieve();
- //documentData.value = doc;
-
- return doc;
- } catch (err) {
- console.error("Error fetching document:", err);
- error.value = "Failed to fetch document.";
- }
-};
\ No newline at end of file
+// removed: Typesense fetcher no longer used. Document retrieval now uses
+// the Meilisearch client via `useMeiliSearchRef()`.
+export {}
diff --git a/app/utils/itemUtilities.ts b/app/utils/itemUtilities.ts
index 27cad9f..017493f 100755
--- a/app/utils/itemUtilities.ts
+++ b/app/utils/itemUtilities.ts
@@ -167,20 +167,5 @@ export function getAuthor( type:string ){
return author
}
-export function openItem( item:ItemObject ) {
- console.log("Open Item", item.id)
- // const { $i18n } = useNuxtApp();
- // const locale = $i18n.locale;
-
- // //Pinia datastore
- const dataStore = useDataStore()
-
- // //Set document into datastore array
- dataStore.openItem( item )
- dataStore.isDetail = true
-
- // //Create url for history
- // const newUrl = setUrl( item );
-
- // //return navigateTo( newUrl )
-}
\ No newline at end of file
+// removed: openItem relied on a Pinia store that is not installed in this app.
+// Detail navigation is now handled directly inside the search pages.
\ No newline at end of file
diff --git a/lang/en.json b/lang/en.json
new file mode 100644
index 0000000..30abc37
--- /dev/null
+++ b/lang/en.json
@@ -0,0 +1,8 @@
+{
+ "Activities": {
+ "video": "Video",
+ "audio": "Audio",
+ "book": "Book",
+ "simple": "Simple"
+ }
+}
diff --git a/lang/es.json b/lang/es.json
new file mode 100644
index 0000000..d464a61
--- /dev/null
+++ b/lang/es.json
@@ -0,0 +1,8 @@
+{
+ "Activities": {
+ "video": "Vídeo",
+ "audio": "Audio",
+ "book": "Libro",
+ "simple": "Sencillo"
+ }
+}
diff --git a/lang/fr.json b/lang/fr.json
new file mode 100644
index 0000000..ebb5bd4
--- /dev/null
+++ b/lang/fr.json
@@ -0,0 +1,8 @@
+{
+ "Activities": {
+ "video": "Vidéo",
+ "audio": "Audio",
+ "book": "Livre",
+ "simple": "Simple"
+ }
+}
diff --git a/lang/pt.json b/lang/pt.json
new file mode 100644
index 0000000..7519575
--- /dev/null
+++ b/lang/pt.json
@@ -0,0 +1,8 @@
+{
+ "Activities": {
+ "video": "Vídeo",
+ "audio": "Áudio",
+ "book": "Livro",
+ "simple": "Simples"
+ }
+}
diff --git a/locales/en.ts b/locales/en.ts
new file mode 100644
index 0000000..b7c26f6
--- /dev/null
+++ b/locales/en.ts
@@ -0,0 +1,8 @@
+export default defineI18nLocale(() => ({
+ Activities: {
+ video: 'Video',
+ audio: 'Audio',
+ book: 'Booklet',
+ simple: 'Simple'
+ }
+}))
diff --git a/locales/es.ts b/locales/es.ts
new file mode 100644
index 0000000..5418cd7
--- /dev/null
+++ b/locales/es.ts
@@ -0,0 +1,8 @@
+export default defineI18nLocale(() => ({
+ Activities: {
+ video: 'Video',
+ audio: 'Audio',
+ book: 'Folleto',
+ simple: 'Simple'
+ }
+}))
diff --git a/locales/fr.ts b/locales/fr.ts
new file mode 100644
index 0000000..5add8bb
--- /dev/null
+++ b/locales/fr.ts
@@ -0,0 +1,8 @@
+export default defineI18nLocale(() => ({
+ Activities: {
+ video: 'Vidéo',
+ audio: 'Audio',
+ book: 'Brochure',
+ simple: 'Simple'
+ }
+}))
diff --git a/locales/pt.ts b/locales/pt.ts
new file mode 100644
index 0000000..0489473
--- /dev/null
+++ b/locales/pt.ts
@@ -0,0 +1,8 @@
+export default defineI18nLocale(() => ({
+ Activities: {
+ video: 'Vídeo',
+ audio: 'Áudio',
+ book: 'Folheto',
+ simple: 'Simples'
+ }
+}))
diff --git a/nuxt.config.ts b/nuxt.config.ts
index d5c277c..63f2f63 100755
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -36,41 +36,20 @@ export default defineNuxtConfig({
},
i18n: {
- locales: [{
- code: "es",
- name: "Español",
- language: "es-PR",
- file: "es.json",
- icon: 'i-circle-flags:es',
- },
- {
- code: "en",
- name: "English",
- language: "en-US",
- file: "en.json",
- icon: 'i-circle-flags:en',
- },
- {
- code: "fr",
- name: "Francois",
- language: "fr-FR",
- file: "fr.json",
- icon: 'i-circle-flags:fr',
- },
- {
- code: "pt",
- name: "Portugues",
- language: "pt-BR",
- file: "pt.json",
- icon: 'i-circle-flags:br',
- }],
- lazy: true,
- langDir: 'lang/',
- strategy: "prefix",
- defaultLocale: "es",
- detectBrowserLanguage: false,
- //skipSettingLocaleOnNavigate: true
-
- //vueI18n: "./i18n.config.ts",
- },
+ restructureDir: false,
+ langDir: '../locales/',
+ locales: [
+ { code: 'es', language: 'es-PR', name: 'Español', flag: '🇵🇷', file: 'es.ts' },
+ { code: 'en', language: 'en-US', name: 'English', flag: '🇺🇸', file: 'en.ts' },
+ { code: 'fr', language: 'fr-FR', name: 'Français', flag: '🇫🇷', file: 'fr.ts' },
+ { code: 'pt', language: 'pt-BR', name: 'Português', flag: '🇧🇷', file: 'pt.ts' }
+ ],
+ defaultLocale: 'es',
+ strategy: 'prefix',
+ detectBrowserLanguage: {
+ useCookie: true,
+ cookieKey: 'i18n_redirected',
+ redirectOn: 'root'
+ }
+ }
})
\ No newline at end of file
diff --git a/server/api/customers.ts b/server/api/customers.ts
deleted file mode 100755
index 16c24c8..0000000
--- a/server/api/customers.ts
+++ /dev/null
@@ -1,187 +0,0 @@
-import type { User } from '~/types'
-
-const customers: User[] = [{
- id: 1,
- name: 'Alex Smith',
- email: 'alex.smith@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=1'
- },
- status: 'subscribed',
- location: 'New York, USA'
-}, {
- id: 2,
- name: 'Jordan Brown',
- email: 'jordan.brown@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=2'
- },
- status: 'unsubscribed',
- location: 'London, UK'
-}, {
- id: 3,
- name: 'Taylor Green',
- email: 'taylor.green@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=3'
- },
- status: 'bounced',
- location: 'Paris, France'
-}, {
- id: 4,
- name: 'Morgan White',
- email: 'morgan.white@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=4'
- },
- status: 'subscribed',
- location: 'Berlin, Germany'
-}, {
- id: 5,
- name: 'Casey Gray',
- email: 'casey.gray@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=5'
- },
- status: 'subscribed',
- location: 'Tokyo, Japan'
-}, {
- id: 6,
- name: 'Jamie Johnson',
- email: 'jamie.johnson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=6'
- },
- status: 'subscribed',
- location: 'Sydney, Australia'
-}, {
- id: 7,
- name: 'Riley Davis',
- email: 'riley.davis@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=7'
- },
- status: 'subscribed',
- location: 'New York, USA'
-}, {
- id: 8,
- name: 'Kelly Wilson',
- email: 'kelly.wilson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=8'
- },
- status: 'subscribed',
- location: 'London, UK'
-}, {
- id: 9,
- name: 'Drew Moore',
- email: 'drew.moore@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=9'
- },
- status: 'bounced',
- location: 'Paris, France'
-}, {
- id: 10,
- name: 'Jordan Taylor',
- email: 'jordan.taylor@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=10'
- },
- status: 'subscribed',
- location: 'Berlin, Germany'
-}, {
- id: 11,
- name: 'Morgan Anderson',
- email: 'morgan.anderson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=11'
- },
- status: 'subscribed',
- location: 'Tokyo, Japan'
-}, {
- id: 12,
- name: 'Casey Thomas',
- email: 'casey.thomas@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=12'
- },
- status: 'unsubscribed',
- location: 'Sydney, Australia'
-}, {
- id: 13,
- name: 'Jamie Jackson',
- email: 'jamie.jackson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=13'
- },
- status: 'unsubscribed',
- location: 'New York, USA'
-}, {
- id: 14,
- name: 'Riley White',
- email: 'riley.white@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=14'
- },
- status: 'unsubscribed',
- location: 'London, UK'
-}, {
- id: 15,
- name: 'Kelly Harris',
- email: 'kelly.harris@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=15'
- },
- status: 'subscribed',
- location: 'Paris, France'
-}, {
- id: 16,
- name: 'Drew Martin',
- email: 'drew.martin@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=16'
- },
- status: 'subscribed',
- location: 'Berlin, Germany'
-}, {
- id: 17,
- name: 'Alex Thompson',
- email: 'alex.thompson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=17'
- },
- status: 'unsubscribed',
- location: 'Tokyo, Japan'
-}, {
- id: 18,
- name: 'Jordan Garcia',
- email: 'jordan.garcia@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=18'
- },
- status: 'subscribed',
- location: 'Sydney, Australia'
-}, {
- id: 19,
- name: 'Taylor Rodriguez',
- email: 'taylor.rodriguez@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=19'
- },
- status: 'bounced',
- location: 'New York, USA'
-}, {
- id: 20,
- name: 'Morgan Lopez',
- email: 'morgan.lopez@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=20'
- },
- status: 'subscribed',
- location: 'London, UK'
-}]
-
-export default eventHandler(async () => {
- return customers
-})
diff --git a/server/api/mails.ts b/server/api/mails.ts
deleted file mode 100755
index 68f43dd..0000000
--- a/server/api/mails.ts
+++ /dev/null
@@ -1,691 +0,0 @@
-import { sub } from 'date-fns'
-
-const mails = [{
- id: 1,
- from: {
- name: 'Alex Smith',
- email: 'alex.smith@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=1'
- }
- },
- subject: 'Meeting Schedule: Q1 Marketing Strategy Review',
- body: `Dear Team,
-
-I hope this email finds you well. Just a quick reminder about our Q1 Marketing Strategy meeting scheduled for tomorrow at 10 AM EST in Conference Room A.
-
-Agenda:
-- Q4 Performance Review
-- New Campaign Proposals
-- Budget Allocation for Q2
-- Team Resource Planning
-
-Please come prepared with your department updates. I've attached the preliminary deck for your review.
-
-Best regards,
-Alex Smith
-Senior Marketing Director
-Tel: (555) 123-4567`,
- date: new Date().toISOString()
-}, {
- id: 2,
- unread: true,
- from: {
- name: 'Jordan Brown',
- email: 'jordan.brown@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=2'
- }
- },
- subject: 'RE: Project Phoenix - Sprint 3 Update',
- body: `Hi team,
-
-Quick update on Sprint 3 deliverables:
-
-✅ User authentication module completed
-🏗️ Payment integration at 80%
-⏳ API documentation pending review
-
-Key metrics:
-- Code coverage: 94%
-- Sprint velocity: 45 points
-- Bug resolution rate: 98%
-
-Please review the attached report for detailed analysis. Let's discuss any blockers in tomorrow's stand-up.
-
-Regards,
-Jordan
-
---
-Jordan Brown
-Lead Developer | Tech Solutions
-Mobile: +1 (555) 234-5678`,
- date: sub(new Date(), { minutes: 7 }).toISOString()
-}, {
- id: 3,
- unread: true,
- from: {
- name: 'Taylor Green',
- email: 'taylor.green@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=3'
- }
- },
- subject: 'Lunch Plans',
- body: `Hi there!
-
-I was wondering if you'd like to grab lunch this Friday? There's this amazing new Mexican restaurant downtown called "La Casa" that I've been wanting to try. They're known for their authentic tacos and house-made guacamole.
-
-Would 12:30 PM work for you? It would be great to catch up and discuss the upcoming team building event while we're there.
-
-Let me know what you think!
-
-Best,
-Taylor`,
- date: sub(new Date(), { hours: 3 }).toISOString()
-}, {
- id: 4,
- from: {
- name: 'Morgan White',
- email: 'morgan.white@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=4'
- }
- },
- subject: 'New Proposal: Project Horizon',
- body: `Hi team,
-
-I've just uploaded the comprehensive proposal for Project Horizon to our shared drive. The document includes:
-
-• Detailed project objectives and success metrics
-• Resource allocation and team structure
-• Timeline with key milestones
-• Budget breakdown
-• Risk assessment and mitigation strategies
-
-I'm particularly excited about our innovative approach to the user engagement component, which could set a new standard for our industry.
-
-Could you please review and provide feedback by EOD Friday? I'd like to present this to the steering committee next week.
-
-Thanks in advance,
-
-Morgan White
-Senior Project Manager
-Tel: (555) 234-5678`,
- date: sub(new Date(), { days: 1 }).toISOString()
-}, {
- id: 5,
- from: {
- name: 'Casey Gray',
- email: 'casey.gray@example.com'
- },
- subject: 'Updated: San Francisco Conference Trip Itinerary',
- body: `Dear [Name],
-
-Please find your confirmed travel itinerary below:
-
-FLIGHT DETAILS:
-Outbound: AA 1234
-Date: March 15, 2024
-DEP: JFK 09:30 AM
-ARR: SFO 12:45 PM
-
-HOTEL:
-Marriott San Francisco
-Check-in: March 15
-Check-out: March 18
-Confirmation #: MR123456
-
-SCHEDULE:
-March 15 - Evening: Welcome Reception (6 PM)
-March 16 - Conference Day 1 (9 AM - 5 PM)
-March 17 - Conference Day 2 (9 AM - 4 PM)
-
-Please let me know if you need any modifications.
-
-Best regards,
-Casey Gray
-Travel Coordinator
-Office: (555) 345-6789`,
- date: sub(new Date(), { days: 1 }).toISOString()
-}, {
- id: 6,
- from: {
- name: 'Jamie Johnson',
- email: 'jamie.johnson@example.com'
- },
- subject: 'Q1 2024 Financial Performance Review',
- body: `Dear Leadership Team,
-
-Please find attached our Q1 2024 financial analysis report. Key highlights:
-
-PERFORMANCE METRICS:
-• Revenue: $12.4M (+15% YoY)
-• Operating Expenses: $8.2M (-3% vs. budget)
-• Net Profit Margin: 18.5% (+2.5% vs. Q4 2023)
-
-AREAS OF OPTIMIZATION:
-1. Cloud infrastructure costs (+22% over budget)
-2. Marketing spend efficiency (-8% ROI vs. target)
-3. Office operational costs (+5% vs. forecast)
-
-I've scheduled a detailed review for Thursday at 2 PM EST. Calendar invite to follow.
-
-Best regards,
-Jamie Johnson
-Chief Financial Officer
-Ext: 4567`,
- date: sub(new Date(), { days: 2 }).toISOString()
-}, {
- id: 7,
- from: {
- name: 'Riley Davis',
- email: 'riley.davis@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=7'
- }
- },
- subject: '[Mandatory] New DevOps Tools Training Session',
- body: `Hello Development Team,
-
-This is a reminder about next week's mandatory training session on our updated DevOps toolkit.
-
-📅 Date: Tuesday, March 19
-⏰ Time: 10:00 AM - 12:30 PM EST
-📍 Location: Virtual (Zoom link below)
-
-We'll be covering:
-• GitLab CI/CD pipeline improvements
-• Docker container optimization
-• Kubernetes cluster management
-• New monitoring tools integration
-
-Prerequisites:
-1. Install Docker Desktop 4.25
-2. Update VS Code to latest version
-3. Complete pre-training survey (link attached)
-
-Zoom Link: https://zoom.us/j/123456789
-Password: DevOps2024
-
---
-Riley Davis
-DevOps Lead
-Technical Operations
-M: (555) 777-8888`,
- date: sub(new Date(), { days: 2 }).toISOString()
-}, {
- id: 8,
- unread: true,
- from: {
- name: 'Kelly Wilson',
- email: 'kelly.wilson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=8'
- }
- },
- subject: '🎉 Happy Birthday!',
- body: `Dear [Name],
-
-On behalf of the entire team, wishing you a fantastic birthday! 🎂
-
-We've organized a small celebration in the break room at 3 PM today. Cake and refreshments will be served!
-
-Your dedication and positive energy make our workplace better every day. Here's to another great year ahead!
-
-Best wishes,
-Kelly & The HR Team
-
-P.S. Don't forget to check your email for a special birthday surprise from the company! 🎁
-
---
-Kelly Wilson
-HR Director
-Human Resources Department
-Tel: (555) 999-0000`,
- date: sub(new Date(), { days: 2 }).toISOString()
-}, {
- id: 9,
- from: {
- name: 'Drew Moore',
- email: 'drew.moore@example.com'
- },
- subject: 'Website Redesign Feedback Request - Phase 2',
- body: `Hi there,
-
-We're entering Phase 2 of our website redesign project and would value your input on the latest iterations.
-
-New Features Implementation:
-1. Dynamic product catalog
-2. Enhanced search functionality
-3. Personalized user dashboard
-4. Mobile-responsive navigation
-
-Review Links:
-• Staging Environment: https://staging.example.com
-• Design Specs: [Figma Link]
-• User Flow Documentation: [Confluence Link]
-
-Please provide feedback by EOD Friday. Key areas to focus on:
-- User experience
-- Navigation flow
-- Content hierarchy
-- Mobile responsiveness
-
-Your insights will be crucial for our final implementation decisions.
-
-Thanks in advance,
-Drew Moore
-UX Design Lead
-Product Design Team`,
- date: sub(new Date(), { days: 5 }).toISOString()
-}, {
- id: 10,
- from: {
- name: 'Jordan Taylor',
- email: 'jordan.taylor@example.com'
- },
- subject: 'Corporate Wellness Program - Membership Renewal',
- body: `Dear Valued Member,
-
-Your corporate wellness program membership is due for renewal on April 1st, 2024.
-
-NEW AMENITIES:
-✨ Expanded yoga studio
-🏋️ State-of-the-art cardio equipment
-🧘 Meditation room
-👥 Additional group fitness classes
-
-RENEWAL BENEFITS:
-• 15% early bird discount
-• 3 complimentary personal training sessions
-• Free wellness assessment
-• Access to new mobile app
-
-To schedule a tour or discuss renewal options, please book a time here: [Booking Link]
-
-Stay healthy!
-
-Best regards,
-Jordan Taylor
-Corporate Wellness Coordinator
-Downtown Fitness Center
-Tel: (555) 123-7890`,
- date: sub(new Date(), { days: 5 }).toISOString()
-}, {
- id: 11,
- unread: true,
- from: {
- name: 'Morgan Anderson',
- email: 'morgan.anderson@example.com'
- },
- subject: 'Important: Updates to Your Corporate Insurance Policy',
- body: `Dear [Employee Name],
-
-This email contains important information about changes to your corporate insurance coverage effective April 1, 2024.
-
-KEY UPDATES:
-1. Health Insurance
- • Reduced co-pay for specialist visits ($35 → $25)
- • Extended telehealth coverage
- • New mental health benefits
-
-2. Dental Coverage
- • Increased annual maximum ($1,500 → $2,000)
- • Added orthodontic coverage for dependents
-
-3. Vision Benefits
- • Enhanced frame allowance
- • New LASIK discount program
-
-Please review the attached documentation carefully and complete the acknowledgment form by March 25th.
-
-Questions? Join our virtual info session:
-📅 March 20th, 2024
-⏰ 11:00 AM EST
-🔗 [Teams Link]
-
-Regards,
-Morgan Anderson
-Benefits Coordinator
-HR Department`,
- date: sub(new Date(), { days: 12 }).toISOString()
-}, {
- id: 12,
- from: {
- name: 'Casey Thomas',
- email: 'casey.thomas@example.com'
- },
- subject: '📚 March Book Club Meeting: "The Great Gatsby"',
- body: `Hello Book Lovers!
-
-I hope you're enjoying F. Scott Fitzgerald's masterpiece! Our next meeting details:
-
-📅 Thursday, March 21st
-⏰ 5:30 PM - 7:00 PM
-📍 Main Conference Room (or Zoom)
-
-Discussion Topics:
-1. Symbolism of the green light
-2. The American Dream theme
-3. Character development
-4. Social commentary
-
-Please bring your suggestions for April's book selection!
-
-Refreshments will be provided 🍪
-
-RSVP by replying to this email.
-
-Happy reading!
-Casey
-
---
-Casey Thomas
-Book Club Coordinator
-Internal Culture Committee`,
- date: sub(new Date(), { months: 1 }).toISOString()
-}, {
- id: 13,
- from: {
- name: 'Jamie Jackson',
- email: 'jamie.jackson@example.com'
- },
- subject: '🍳 Company Cookbook Project - Recipe Submission Reminder',
- body: `Dear Colleagues,
-
-Final call for our company cookbook project submissions!
-
-Guidelines for Recipe Submission:
-1. Include ingredients list with measurements
-2. Step-by-step instructions
-3. Cooking time and servings
-4. Photo of the finished dish (optional)
-5. Any cultural or personal significance
-
-Submission Deadline: March 22nd, 2024
-
-We already have some amazing entries:
-• Sarah's Famous Chili
-• Mike's Mediterranean Pasta
-• Lisa's Vegan Brownies
-• Tom's Family Paella
-
-All proceeds from cookbook sales will support our local food bank.
-
-Submit here: [Form Link]
-
-Cooking together,
-Jamie Jackson
-Community Engagement Committee
-Ext. 5432`,
- date: sub(new Date(), { months: 1 }).toISOString()
-}, {
- id: 14,
- from: {
- name: 'Riley White',
- email: 'riley.white@example.com'
- },
- subject: '🧘♀️ Updated Corporate Wellness Schedule - Spring 2024',
- body: `Dear Wellness Program Participants,
-
-Our Spring 2024 wellness schedule is now available!
-
-NEW CLASSES:
-Monday:
-• 7:30 AM - Morning Flow Yoga
-• 12:15 PM - HIIT Express
-• 5:30 PM - Meditation Basics
-
-Wednesday:
-• 8:00 AM - Power Vinyasa
-• 12:00 PM - Desk Stretching
-• 4:30 PM - Mindfulness Workshop
-
-Friday:
-• 7:45 AM - Gentle Yoga
-• 12:30 PM - Stress Management
-• 4:45 PM - Weekend Wind-Down
-
-All classes available in-person and via Zoom.
-Download our app to reserve your spot!
-
-Namaste,
-Riley White
-Corporate Wellness Instructor
-Wellness & Benefits Team`,
- date: sub(new Date(), { months: 1 }).toISOString()
-}, {
- id: 15,
- from: {
- name: 'Kelly Harris',
- email: 'kelly.harris@example.com'
- },
- subject: '📚 Book Launch Event: "Digital Transformation in the Modern Age"',
- body: `Dear [Name],
-
-You're cordially invited to the launch of my new book, "Digital Transformation in the Modern Age: A Leadership Guide"
-
-EVENT DETAILS:
-📅 Date: April 15th, 2024
-⏰ Time: 6:00 PM - 8:30 PM EST
-📍 Grand Hotel Downtown
- 123 Business Ave.
-
-AGENDA:
-6:00 PM - Welcome Reception
-6:30 PM - Keynote Presentation
-7:15 PM - Q&A Session
-7:45 PM - Book Signing
-8:00 PM - Networking
-
-Light refreshments will be served.
-Each attendee will receive a signed copy of the book.
-
-RSVP by April 1st: [Event Link]
-
-Looking forward to sharing this milestone with you!
-
-Best regards,
-Kelly Harris
-Digital Strategy Consultant
-Author, "Digital Transformation in the Modern Age"`,
- date: sub(new Date(), { months: 1 }).toISOString()
-}, {
- id: 16,
- from: {
- name: 'Drew Martin',
- email: 'drew.martin@example.com'
- },
- subject: '🚀 TechCon 2024: Early Bird Registration Now Open',
- body: `Dear Tech Enthusiasts,
-
-Registration is now open for TechCon 2024: "Innovation at Scale"
-
-CONFERENCE HIGHLIGHTS:
-📅 May 15-17, 2024
-📍 Tech Convention Center
-
-KEYNOTE SPEAKERS:
-• Sarah Johnson - CEO, Future Tech Inc.
-• Dr. Michael Chang - AI Research Director
-• Lisa Rodriguez - Cybersecurity Expert
-
-TRACKS:
-1. AI/ML Innovation
-2. Cloud Architecture
-3. DevSecOps
-4. Digital Transformation
-5. Emerging Technologies
-
-EARLY BIRD PRICING (ends April 1):
-Full Conference Pass: $899 (reg. $1,199)
-Team Discount (5+): 15% off
-
-Register here: [Registration Link]
-
-Best regards,
-Drew Martin
-Conference Director
-TechCon 2024`,
- date: sub(new Date(), { months: 1, days: 4 }).toISOString()
-}, {
- id: 17,
- from: {
- name: 'Alex Thompson',
- email: 'alex.thompson@example.com'
- },
- subject: '🎨 Modern Perspectives: Contemporary Art Exhibition',
- body: `Hi there,
-
-Hope you're well! I wanted to personally invite you to an extraordinary art exhibition this weekend.
-
-"Modern Perspectives: Breaking Boundaries"
-📅 Saturday & Sunday
-⏰ 10 AM - 6 PM
-📍 Metropolitan Art Gallery
-
-FEATURED ARTISTS:
-• Maria Chen - Mixed Media
-• James Wright - Digital Art
-• Sofia Patel - Installation
-• Robert Kim - Photography
-
-SPECIAL EVENTS:
-• Artist Talk: Saturday, 2 PM
-• Workshop: Sunday, 11 AM
-• Wine Reception: Saturday, 5 PM
-
-Would love to meet you there! Let me know if you'd like to go together.
-
-Best,
-Alex Thompson
-Curator
-Metropolitan Art Gallery
-Tel: (555) 234-5678`,
- date: sub(new Date(), { months: 1, days: 15 }).toISOString()
-}, {
- id: 18,
- from: {
- name: 'Jordan Garcia',
- email: 'jordan.garcia@example.com'
- },
- subject: '🤝 Industry Networking Event: "Connect & Innovate 2024"',
- body: `Dear Professional Network,
-
-You're invited to our premier networking event!
-
-EVENT DETAILS:
-📅 March 28th, 2024
-⏰ 6:00 PM - 9:00 PM
-📍 Innovation Hub
- 456 Enterprise Street
-
-SPEAKERS:
-• Mark Thompson - "Future of Work"
-• Dr. Sarah Chen - "Innovation Trends"
-• Robert Mills - "Digital Leadership"
-
-SCHEDULE:
-6:00 - Registration & Welcome
-6:30 - Keynote Presentations
-7:30 - Networking Session
-8:30 - Panel Discussion
-
-Complimentary hors d'oeuvres and beverages will be served.
-
-RSVP Required: [Registration Link]
-
-Best regards,
-Jordan Garcia
-Event Coordinator
-Professional Networking Association`,
- date: sub(new Date(), { months: 1, days: 18 }).toISOString()
-}, {
- id: 19,
- from: {
- name: 'Taylor Rodriguez',
- email: 'taylor.rodriguez@example.com'
- },
- subject: '🌟 Community Service Day - Volunteer Opportunities',
- body: `Dear Colleagues,
-
-Join us for our annual Community Service Day!
-
-EVENT DETAILS:
-📅 Saturday, April 6th, 2024
-⏰ 9:00 AM - 3:00 PM
-📍 Multiple Locations
-
-VOLUNTEER OPPORTUNITIES:
-1. City Park Cleanup
- • Garden maintenance
- • Trail restoration
- • Playground repair
-
-2. Food Bank
- • Sorting donations
- • Packing meals
- • Distribution
-
-3. Animal Shelter
- • Dog walking
- • Facility cleaning
- • Social media support
-
-All volunteers receive:
-• Company volunteer t-shirt
-• Lunch and refreshments
-• Certificate of participation
-• 8 hours community service credit
-
-Sign up here: [Volunteer Portal]
-
-Making a difference together,
-Taylor Rodriguez
-Community Outreach Coordinator
-Corporate Social Responsibility Team`,
- date: sub(new Date(), { months: 1, days: 25 }).toISOString()
-}, {
- id: 20,
- from: {
- name: 'Morgan Lopez',
- email: 'morgan.lopez@example.com'
- },
- subject: '🚗 Vehicle Maintenance Reminder: 30,000 Mile Service',
- body: `Dear Valued Customer,
-
-Your vehicle is due for its 30,000-mile maintenance service.
-
-RECOMMENDED SERVICES:
-• Oil and filter change
-• Tire rotation and alignment
-• Brake system inspection
-• Multi-point safety inspection
-• Fluid level check and top-off
-• Battery performance test
-
-SERVICE CENTER DETAILS:
-📍 Downtown Auto Care
- 789 Service Road
-
-☎️ (555) 987-6543
-
-Available Appointments:
-• Monday-Friday: 7:30 AM - 6:00 PM
-• Saturday: 8:00 AM - 2:00 PM
-
-Schedule online: [Booking Link]
-or call our service desk directly.
-
-Drive safely,
-Morgan Lopez
-Service Coordinator
-Downtown Auto Care
-Emergency: (555) 987-6544`,
- date: sub(new Date(), { months: 2 }).toISOString()
-}]
-
-export default eventHandler(async () => {
- return mails
-})
diff --git a/server/api/members.ts b/server/api/members.ts
deleted file mode 100755
index 8d4a00f..0000000
--- a/server/api/members.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-const members = [{
- name: 'Anthony Fu',
- username: 'antfu',
- role: 'member',
- avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/antfu' }
-}, {
- name: 'Baptiste Leproux',
- username: 'larbish',
- role: 'member',
- avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/larbish' }
-}, {
- name: 'Benjamin Canac',
- username: 'benjamincanac',
- role: 'owner',
- avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/benjamincanac' }
-}, {
- name: 'Céline Dumerc',
- username: 'celinedumerc',
- role: 'member',
- avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/celinedumerc' }
-}, {
- name: 'Daniel Roe',
- username: 'danielroe',
- role: 'member',
- avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/danielroe' }
-}, {
- name: 'Farnabaz',
- username: 'farnabaz',
- role: 'member',
- avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/farnabaz' }
-}, {
- name: 'Ferdinand Coumau',
- username: 'FerdinandCoumau',
- role: 'member',
- avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/FerdinandCoumau' }
-}, {
- name: 'Hugo Richard',
- username: 'hugorcd',
- role: 'owner',
- avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/hugorcd' }
-}, {
- name: 'Pooya Parsa',
- username: 'pi0',
- role: 'member',
- avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/pi0' }
-}, {
- name: 'Sarah Moriceau',
- username: 'SarahM19',
- role: 'member',
- avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/SarahM19' }
-}, {
- name: 'Sébastien Chopin',
- username: 'Atinux',
- role: 'owner',
- avatar: { src: 'https://ipx.nuxt.com/f_auto,s_192x192/gh_avatar/atinux' }
-}]
-
-export default eventHandler(async () => {
- return members
-})
diff --git a/server/api/notifications.ts b/server/api/notifications.ts
deleted file mode 100755
index 7e27941..0000000
--- a/server/api/notifications.ts
+++ /dev/null
@@ -1,256 +0,0 @@
-import { sub } from 'date-fns'
-
-const notifications = [{
- id: 1,
- unread: true,
- sender: {
- name: 'Jordan Brown',
- email: 'jordan.brown@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=2'
- }
- },
- body: 'sent you a message',
- date: sub(new Date(), { minutes: 7 }).toISOString()
-}, {
- id: 2,
- sender: {
- name: 'Lindsay Walton'
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { hours: 1 }).toISOString()
-}, {
- id: 3,
- unread: true,
- sender: {
- name: 'Taylor Green',
- email: 'taylor.green@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=3'
- }
- },
- body: 'sent you a message',
- date: sub(new Date(), { hours: 3 }).toISOString()
-}, {
- id: 4,
- sender: {
- name: 'Courtney Henry',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=4'
- }
- },
- body: 'added you to a project',
- date: sub(new Date(), { hours: 3 }).toISOString()
-}, {
- id: 5,
- sender: {
- name: 'Tom Cook',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=5'
- }
- },
- body: 'abandonned cart',
- date: sub(new Date(), { hours: 7 }).toISOString()
-}, {
- id: 6,
- sender: {
- name: 'Casey Thomas',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=6'
- }
- },
- body: 'purchased your product',
- date: sub(new Date(), { days: 1, hours: 3 }).toISOString()
-}, {
- id: 7,
- unread: true,
- sender: {
- name: 'Kelly Wilson',
- email: 'kelly.wilson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=8'
- }
- },
- body: 'sent you a message',
- date: sub(new Date(), { days: 2 }).toISOString()
-}, {
- id: 8,
- sender: {
- name: 'Jamie Johnson',
- email: 'jamie.johnson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=9'
- }
- },
- body: 'requested a refund',
- date: sub(new Date(), { days: 5, hours: 4 }).toISOString()
-}, {
- id: 9,
- unread: true,
- sender: {
- name: 'Morgan Anderson',
- email: 'morgan.anderson@example.com'
- },
- body: 'sent you a message',
- date: sub(new Date(), { days: 6 }).toISOString()
-}, {
- id: 10,
- sender: {
- name: 'Drew Moore'
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { days: 6 }).toISOString()
-}, {
- id: 11,
- sender: {
- name: 'Riley Davis'
- },
- body: 'abandonned cart',
- date: sub(new Date(), { days: 7 }).toISOString()
-}, {
- id: 12,
- sender: {
- name: 'Jordan Taylor'
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { days: 9 }).toISOString()
-}, {
- id: 13,
- sender: {
- name: 'Kelly Wilson',
- email: 'kelly.wilson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=8'
- }
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { days: 10 }).toISOString()
-}, {
- id: 14,
- sender: {
- name: 'Jamie Johnson',
- email: 'jamie.johnson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=9'
- }
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { days: 11 }).toISOString()
-}, {
- id: 15,
- sender: {
- name: 'Morgan Anderson'
- },
- body: 'purchased your product',
- date: sub(new Date(), { days: 12 }).toISOString()
-}, {
- id: 16,
- sender: {
- name: 'Drew Moore',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=16'
- }
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { days: 13 }).toISOString()
-}, {
- id: 17,
- sender: {
- name: 'Riley Davis'
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { days: 14 }).toISOString()
-}, {
- id: 18,
- sender: {
- name: 'Jordan Taylor'
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { days: 15 }).toISOString()
-}, {
- id: 19,
- sender: {
- name: 'Kelly Wilson',
- email: 'kelly.wilson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=8'
- }
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { days: 16 }).toISOString()
-}, {
- id: 20,
- sender: {
- name: 'Jamie Johnson',
- email: 'jamie.johnson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=9'
- }
- },
- body: 'purchased your product',
- date: sub(new Date(), { days: 17 }).toISOString()
-}, {
- id: 21,
- sender: {
- name: 'Morgan Anderson'
- },
- body: 'abandonned cart',
- date: sub(new Date(), { days: 17 }).toISOString()
-}, {
- id: 22,
- sender: {
- name: 'Drew Moore'
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { days: 18 }).toISOString()
-}, {
- id: 23,
- sender: {
- name: 'Riley Davis'
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { days: 19 }).toISOString()
-}, {
- id: 24,
- sender: {
- name: 'Jordan Taylor',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=24'
- }
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { days: 20 }).toISOString()
-}, {
- id: 25,
- sender: {
- name: 'Kelly Wilson',
- email: 'kelly.wilson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=8'
- }
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { days: 20 }).toISOString()
-}, {
- id: 26,
- sender: {
- name: 'Jamie Johnson',
- email: 'jamie.johnson@example.com',
- avatar: {
- src: 'https://i.pravatar.cc/128?u=9'
- }
- },
- body: 'abandonned cart',
- date: sub(new Date(), { days: 21 }).toISOString()
-}, {
- id: 27,
- sender: {
- name: 'Morgan Anderson'
- },
- body: 'subscribed to your email list',
- date: sub(new Date(), { days: 22 }).toISOString()
-}]
-
-export default eventHandler(async () => {
- return notifications
-})