diff --git a/src/components/directory/DirectoryCard.vue b/src/components/directory/DirectoryCard.vue index 1ab6caf..b9627ad 100644 --- a/src/components/directory/DirectoryCard.vue +++ b/src/components/directory/DirectoryCard.vue @@ -48,89 +48,91 @@ const socialColors = { diff --git a/src/data/directory.ts b/src/data/directory.ts new file mode 100644 index 0000000..89df549 --- /dev/null +++ b/src/data/directory.ts @@ -0,0 +1,297 @@ +import { type DirectoryItem } from '@/types/directory' + +export const mockDirectoryItems: DirectoryItem[] = [ + { + id: '1', + name: 'Ixchel Cafe & Bakery', + category: 'restaurant', + description: 'A cozy cafe serving great coffee and accepting Bitcoin Lightning payments.', + url: 'https://ixchel.atitlan.io', + town: 'San Marcos', + mapsUrl: 'https://maps.app.goo.gl/sbjmvqP8U4SB4FS29', + social: { + facebook: 'https://www.facebook.com/emporium.atitlan' + } + }, + { + id: '2', + name: 'Axel', + category: 'taxi', + town: 'San Marcos', + contact: '+502 3846 1220', + contactType: ['whatsapp', 'telegram'], + lightning: 'axel@atitlan.io' + }, + { + id: '3', + name: 'Bitcoin Lake Lancha (fake)', + category: 'lancha', + address: 'Pier 21, Harbor Front', + contact: '+1 234-567-8902' + }, + { + id: '4', + name: 'Tor\'s Drums', + category: 'goods', + town: 'San Marcos', + contact: '+502 4900 1279', + contactType: ['whatsapp'], + social: { + facebook: 'https://www.facebook.com/share/1DcBdJhuFH/' + }, + lightning: 'tor@atitlan.io' + }, + { + id: '5', + name: 'Jade Maya', + category: 'goods', + local: true, + town: 'San Marcos', + mapsUrl: 'https://maps.app.goo.gl/kZiKdM2FFAw1TQMN8', + lightning: 'osman@atitlan.io', + }, + { + id: '6', + name: 'La Sala del Lago', + category: 'restaurant', + town: 'San Marcos', + social: { + facebook: 'https://www.facebook.com/La-Sala-Del-Lago-100220539146301' + } + }, + { + id: '7', + name: 'Nectar', + category: 'restaurant', + town: 'San Marcos', + social: { + facebook: 'https://www.facebook.com/lovenectar' + }, + local: true + }, + { + id: '8', + name: 'Arati Cafe', + category: 'restaurant', + town: 'San Marcos', + social: { + facebook: 'https://www.facebook.com/Arati-Cafe-105767784719695' + }, + local: true + }, + { + id: '9', + name: 'Fe Restaurant', + category: 'restaurant', + town: 'San Marcos', + social: { + facebook: 'https://www.facebook.com/fesanmarcos' + } + }, + { + id: '10', + name: 'Hostal del Lago', + category: 'lodging', + town: 'San Marcos', + social: { + facebook: 'https://www.facebook.com/Hostel-Del-Lago-605530306467708' + } + }, + { + id: '12', + name: 'Hostel Fe San Marcos', + category: 'lodging', + town: 'San Marcos', + social: { + facebook: 'https://www.facebook.com/HostelFeSanMarcos' + } + }, + { + id: '13', + name: 'Hotel Casa Maya', + category: 'lodging', + town: 'San Marcos', + mapsUrl: 'https://www.google.com/maps/place/Hotel+Casa+Maya' + }, + { + id: '15', + name: 'Artesanias San Marcos La Laguna', + category: 'goods', + town: 'San Marcos', + social: { + facebook: 'https://www.facebook.com/Artesanias-San-Marcos-La-Laguna-102826589071628/' + }, + local: true + }, + { + id: '16', + name: 'Textiles Felix San Marcos La Laguna', + category: 'goods', + town: 'San Marcos', + social: { + facebook: 'https://www.facebook.com/Textiles-Felix-San-Marcos-La-Laguna-102732085750559' + }, + local: true + }, + { + id: '17', + name: 'Health Food Store San Jose', + category: 'goods', + town: 'San Marcos', + social: { + facebook: 'https://www.facebook.com/Health-Food-Store-San-Jose-719299235179691' + }, + local: true + }, + { + id: '18', + name: 'Tienda San Jose 2', + category: 'goods', + town: 'San Marcos', + mapsUrl: 'https://www.google.com/maps/place/Tienda+San+José+%232', + local: true + }, + { + id: '19', + name: 'Sound Temple San Marcos', + category: 'services', + town: 'San Marcos', + social: { + facebook: 'https://www.facebook.com/SoundTempleSanMarcos' + } + }, + { + id: '20', + name: 'Granja Tz\'ikin', + category: 'restaurant', + town: 'Tzununa', + social: { + facebook: 'https://www.facebook.com/granjatzikin' + } + }, + { + id: '21', + name: 'Veda', + category: 'restaurant', + town: 'Tzununa', + social: { + facebook: 'https://www.facebook.com/vedafoodismedicine' + } + }, + { + id: '22', + name: 'Bambu Guest House', + category: 'lodging', + town: 'Tzununa', + social: { + facebook: 'https://www.facebook.com/bambuguesthousegt' + } + }, + { + id: '23', + name: 'Atitlan Organics', + category: 'goods', + town: 'Tzununa', + social: { + facebook: 'https://www.facebook.com/atitlanorganics' + } + }, + { + id: '24', + name: 'Holy Wow Cacao', + category: 'goods', + town: 'Tzununa', + social: { + facebook: 'https://www.facebook.com/HolyWowCacao' + } + }, + { + id: '25', + name: 'Multiservicios Yaxon', + category: 'services', + town: 'Tzununa', + social: { + facebook: 'https://www.facebook.com/Multiservicios-Yaxón-299907600397260' + }, + local: true + }, + { + id: '26', + name: 'Utz Kab', + category: 'goods', + town: 'San Pablo', + social: { + facebook: 'https://www.facebook.com/UTZ-KAB-534232490075686' + }, + local: true + }, + { + id: '27', + name: 'Utz Color Fashion', + category: 'goods', + town: 'San Pedro', + social: { + facebook: 'https://www.facebook.com/UtzColorFashion' + }, + local: true + }, + { + id: '28', + name: 'Do Bau', + category: 'goods', + town: 'San Pedro', + social: { + facebook: 'https://www.facebook.com/Adrianamatrioshka' + }, + local: true + }, + { + id: '29', + name: 'Full Print', + category: 'services', + town: 'San Pedro', + social: { + facebook: 'https://www.facebook.com/profile.php?id=100057645572968' + }, + local: true + }, + { + id: '30', + name: 'Atitlan Muay Thai', + category: 'services', + town: 'San Pedro', + social: { + facebook: 'https://www.facebook.com/muaythaiatitlan' + } + }, + { + id: '31', + name: 'Caffé Kitsch', + category: 'restaurant', + town: 'Panajachel', + social: { + facebook: 'https://www.facebook.com/Kitschers' + }, + local: true + }, + { + id: '32', + name: 'Zoe Nails & Spa', + category: 'services', + town: 'Panajachel', + social: { + facebook: 'https://www.facebook.com/zoenailsyspapanajachel' + }, + local: true + }, + { + id: '33', + name: 'Hotel Corazon del Mundo Fresh', + category: 'lodging', + town: 'Jaibalito', + social: { + facebook: 'https://www.facebook.com/corazondelmundofresh' + }, + local: true + } + ] \ No newline at end of file diff --git a/src/i18n/locales/en.ts b/src/i18n/locales/en.ts index 1569534..cbb6d72 100644 --- a/src/i18n/locales/en.ts +++ b/src/i18n/locales/en.ts @@ -31,7 +31,10 @@ export default { contact: 'Contact', location: 'Location', viewMap: 'View on Map', - lightning: 'Lightning Address' + lightning: 'Lightning Address', + itemNotFound: 'Directory Item Not Found', + itemNotFoundDesc: 'The directory item you are looking for could not be found.', + backToDirectory: 'Back to Directory', }, footer: { poweredBy: 'Powered by', diff --git a/src/i18n/locales/es.ts b/src/i18n/locales/es.ts index 61efeba..c132140 100644 --- a/src/i18n/locales/es.ts +++ b/src/i18n/locales/es.ts @@ -31,7 +31,10 @@ export default { contact: 'Contacto', location: 'Ubicación', viewMap: 'Ver en Mapa', - lightning: 'Dirección Lightning' + lightning: 'Dirección Lightning', + itemNotFound: 'Elemento del Directorio No Encontrado', + itemNotFoundDesc: 'No se pudo encontrar el elemento del directorio que estás buscando.', + backToDirectory: 'Volver al Directorio', }, footer: { poweredBy: 'Alimentado por', diff --git a/src/pages/Directory.vue b/src/pages/Directory.vue index 1743eb6..5adf0af 100644 --- a/src/pages/Directory.vue +++ b/src/pages/Directory.vue @@ -2,305 +2,12 @@ import { useI18n } from 'vue-i18n' import DirectoryGrid from '@/components/directory/DirectoryGrid.vue' import { type DirectoryItem } from '@/types/directory' +import { mockDirectoryItems } from '@/data/directory' const { t } = useI18n() -// This is temporary mock data - we'll replace it with real data later -const mockItems: DirectoryItem[] = [ - { - id: '1', - name: 'Ixchel Cafe & Bakery', - category: 'restaurant', - description: 'A cozy cafe serving great coffee and accepting Bitcoin Lightning payments.', - url: 'https://ixchel.atitlan.io', - town: 'San Marcos', - mapsUrl: 'https://maps.app.goo.gl/sbjmvqP8U4SB4FS29', - social: { - facebook: 'https://www.facebook.com/emporium.atitlan' - } - }, - { - id: '2', - name: 'Axel', - category: 'taxi', - town: 'San Marcos', - contact: '+502 3846 1220', - contactType: ['whatsapp', 'telegram'], - lightning: 'axel@atitlan.io' - }, - { - id: '3', - name: 'Bitcoin Lake Lancha (fake)', - category: 'lancha', - address: 'Pier 21, Harbor Front', - contact: '+1 234-567-8902' - }, - { - id: '4', - name: 'Tor\'s Drums', - category: 'goods', - town: 'San Marcos', - contact: '+502 4900 1279', - contactType: ['whatsapp'], - social: { - facebook: 'https://www.facebook.com/share/1DcBdJhuFH/' - }, - lightning: 'tor@atitlan.io' - }, - { - id: '5', - name: 'Jade Maya', - category: 'goods', - local: true, - town: 'San Marcos', - mapsUrl: 'https://maps.app.goo.gl/kZiKdM2FFAw1TQMN8', - lightning: 'osman@atitlan.io', - }, - { - id: '6', - name: 'La Sala del Lago', - category: 'restaurant', - town: 'San Marcos', - social: { - facebook: 'https://www.facebook.com/La-Sala-Del-Lago-100220539146301' - } - }, - { - id: '7', - name: 'Nectar', - category: 'restaurant', - town: 'San Marcos', - social: { - facebook: 'https://www.facebook.com/lovenectar' - }, - local: true - }, - { - id: '8', - name: 'Arati Cafe', - category: 'restaurant', - town: 'San Marcos', - social: { - facebook: 'https://www.facebook.com/Arati-Cafe-105767784719695' - }, - local: true - }, - { - id: '9', - name: 'Fe Restaurant', - category: 'restaurant', - town: 'San Marcos', - social: { - facebook: 'https://www.facebook.com/fesanmarcos' - } - }, - { - id: '10', - name: 'Hostal del Lago', - category: 'lodging', - town: 'San Marcos', - social: { - facebook: 'https://www.facebook.com/Hostel-Del-Lago-605530306467708' - } - }, - { - id: '12', - name: 'Hostel Fe San Marcos', - category: 'lodging', - town: 'San Marcos', - social: { - facebook: 'https://www.facebook.com/HostelFeSanMarcos' - } - }, - { - id: '13', - name: 'Hotel Casa Maya', - category: 'lodging', - town: 'San Marcos', - mapsUrl: 'https://www.google.com/maps/place/Hotel+Casa+Maya' - }, - { - id: '15', - name: 'Artesanias San Marcos La Laguna', - category: 'goods', - town: 'San Marcos', - social: { - facebook: 'https://www.facebook.com/Artesanias-San-Marcos-La-Laguna-102826589071628/' - }, - local: true - }, - { - id: '16', - name: 'Textiles Felix San Marcos La Laguna', - category: 'goods', - town: 'San Marcos', - social: { - facebook: 'https://www.facebook.com/Textiles-Felix-San-Marcos-La-Laguna-102732085750559' - }, - local: true - }, - { - id: '17', - name: 'Health Food Store San Jose', - category: 'goods', - town: 'San Marcos', - social: { - facebook: 'https://www.facebook.com/Health-Food-Store-San-Jose-719299235179691' - }, - local: true - }, - { - id: '18', - name: 'Tienda San Jose 2', - category: 'goods', - town: 'San Marcos', - mapsUrl: 'https://www.google.com/maps/place/Tienda+San+José+%232', - local: true - }, - { - id: '19', - name: 'Sound Temple San Marcos', - category: 'services', - town: 'San Marcos', - social: { - facebook: 'https://www.facebook.com/SoundTempleSanMarcos' - } - }, - { - id: '20', - name: 'Granja Tz\'ikin', - category: 'restaurant', - town: 'Tzununa', - social: { - facebook: 'https://www.facebook.com/granjatzikin' - } - }, - { - id: '21', - name: 'Veda', - category: 'restaurant', - town: 'Tzununa', - social: { - facebook: 'https://www.facebook.com/vedafoodismedicine' - } - }, - { - id: '22', - name: 'Bambu Guest House', - category: 'lodging', - town: 'Tzununa', - social: { - facebook: 'https://www.facebook.com/bambuguesthousegt' - } - }, - { - id: '23', - name: 'Atitlan Organics', - category: 'goods', - town: 'Tzununa', - social: { - facebook: 'https://www.facebook.com/atitlanorganics' - } - }, - { - id: '24', - name: 'Holy Wow Cacao', - category: 'goods', - town: 'Tzununa', - social: { - facebook: 'https://www.facebook.com/HolyWowCacao' - } - }, - { - id: '25', - name: 'Multiservicios Yaxon', - category: 'services', - town: 'Tzununa', - social: { - facebook: 'https://www.facebook.com/Multiservicios-Yaxón-299907600397260' - }, - local: true - }, - { - id: '26', - name: 'Utz Kab', - category: 'goods', - town: 'San Pablo', - social: { - facebook: 'https://www.facebook.com/UTZ-KAB-534232490075686' - }, - local: true - }, - { - id: '27', - name: 'Utz Color Fashion', - category: 'goods', - town: 'San Pedro', - social: { - facebook: 'https://www.facebook.com/UtzColorFashion' - }, - local: true - }, - { - id: '28', - name: 'Do Bau', - category: 'goods', - town: 'San Pedro', - social: { - facebook: 'https://www.facebook.com/Adrianamatrioshka' - }, - local: true - }, - { - id: '29', - name: 'Full Print', - category: 'services', - town: 'San Pedro', - social: { - facebook: 'https://www.facebook.com/profile.php?id=100057645572968' - }, - local: true - }, - { - id: '30', - name: 'Atitlan Muay Thai', - category: 'services', - town: 'San Pedro', - social: { - facebook: 'https://www.facebook.com/muaythaiatitlan' - } - }, - { - id: '31', - name: 'Caffé Kitsch', - category: 'restaurant', - town: 'Panajachel', - social: { - facebook: 'https://www.facebook.com/Kitschers' - }, - local: true - }, - { - id: '32', - name: 'Zoe Nails & Spa', - category: 'services', - town: 'Panajachel', - social: { - facebook: 'https://www.facebook.com/zoenailsyspapanajachel' - }, - local: true - }, - { - id: '33', - name: 'Hotel Corazon del Mundo Fresh', - category: 'lodging', - town: 'Jaibalito', - social: { - facebook: 'https://www.facebook.com/corazondelmundofresh' - }, - local: true - } -] +// Use the imported mock data +const items = mockDirectoryItems diff --git a/src/pages/DirectoryItem.vue b/src/pages/DirectoryItem.vue new file mode 100644 index 0000000..a0b1d51 --- /dev/null +++ b/src/pages/DirectoryItem.vue @@ -0,0 +1,71 @@ + + + \ No newline at end of file diff --git a/src/router/index.ts b/src/router/index.ts index de70667..9e69a33 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -20,6 +20,12 @@ const router = createRouter({ path: '/faq', name: 'faq', component: FAQ + }, + { + path: '/directory/:id', + name: 'directory-item', + component: () => import('@/pages/DirectoryItem.vue'), + props: true } ] })