diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..8d7547d Binary files /dev/null and b/.DS_Store differ diff --git a/backend/.gitignore b/backend/.gitignore index 2ed5eaf..bc45176 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -80,7 +80,6 @@ $RECYCLE.BIN/ ssl .idea nbproject -public/uploads/* !public/uploads/.gitkeep ############################ diff --git a/backend/config/plugins.js b/backend/config/plugins.js index 836f75e..bd1750c 100644 --- a/backend/config/plugins.js +++ b/backend/config/plugins.js @@ -1,5 +1,4 @@ module.exports = ({ env }) => ({ - // ... email: { config: { provider: 'strapi-provider-email-local-browser', // For community providers pass the full package name (e.g. provider: 'strapi-provider-email-mandrill') @@ -12,6 +11,36 @@ module.exports = ({ env }) => ({ testAddress: 'juliasedefdjian@strapi.io', }, }, + // Uncomment this (and comment above) to use a real SMTP email. + // config: { + // provider: 'nodemailer', + // providerOptions: { + // host: '', + // port: 587, + // auth: { + // user: '', + // pass: '', + // }, + // }, + // settings: { + // defaultFrom: 'from-email@example.com', + // defaultReplyTo: 'no-reply-email@example.com', + // }, + // } + }, + 'users-permissions': { + enabled: true, + config: { + jwtSecret: 'N1WVrkrjgmdjrSyTZYwUC6Fji41yoBjbMdN2qseiwZ8=', + jwt: { + expiresIn: '7d', + }, + register: { + allowedFields: ["activities_staff","registrationType","dni", + "phone_number","last_name","pseudonym","smial","room_code", + "menu_type","menu_comment","premium","premium_comment", + "aide","mentee","mentor","childrens","name","room_type"], + }, + }, }, - // ... }); \ No newline at end of file diff --git a/backend/package-lock.json b/backend/package-lock.json index 858284d..535f68b 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -10,6 +10,7 @@ "license": "MIT", "dependencies": { "@strapi/plugin-users-permissions": "5.6.0", + "@strapi/provider-email-nodemailer": "^5.11.3", "@strapi/strapi": "5.6.0", "better-sqlite3": "11.3.0", "fs-extra": "^10.0.0", @@ -4804,6 +4805,20 @@ "styled-components": "^6.0.0" } }, + "node_modules/@strapi/provider-email-nodemailer": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@strapi/provider-email-nodemailer/-/provider-email-nodemailer-5.11.3.tgz", + "integrity": "sha512-DX7J0kobsWpQ8Y0r+/Go3Wt/99F79OZBHijWfELCeg1YuUmtbFR6lBynV8o0kudQmmlkVHm48KIvcjyeQUaJ/Q==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "lodash": "4.17.21", + "nodemailer": "6.9.1" + }, + "engines": { + "node": ">=18.0.0 <=22.x.x", + "npm": ">=6.0.0" + } + }, "node_modules/@strapi/provider-email-sendmail": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/@strapi/provider-email-sendmail/-/provider-email-sendmail-5.6.0.tgz", @@ -13041,6 +13056,15 @@ "node": ">=6" } }, + "node_modules/nodemailer": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.1.tgz", + "integrity": "sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/nodemailer-fetch": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz", diff --git a/backend/package.json b/backend/package.json index 047d15c..7c8db3b 100644 --- a/backend/package.json +++ b/backend/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "@strapi/plugin-users-permissions": "5.6.0", + "@strapi/provider-email-nodemailer": "^5.11.3", "@strapi/strapi": "5.6.0", "better-sqlite3": "11.3.0", "fs-extra": "^10.0.0", diff --git a/backend/public/uploads/Escudo_EC_OK_e874e7c6c7.svg b/backend/public/uploads/Escudo_EC_OK_e874e7c6c7.svg new file mode 100644 index 0000000..8e09c07 --- /dev/null +++ b/backend/public/uploads/Escudo_EC_OK_e874e7c6c7.svg @@ -0,0 +1,563 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/public/uploads/Logo_STE_4cfde55bed.svg b/backend/public/uploads/Logo_STE_4cfde55bed.svg new file mode 100644 index 0000000..79fdceb --- /dev/null +++ b/backend/public/uploads/Logo_STE_4cfde55bed.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/public/uploads/Michael_Everson_Wikimedia_2011_hackathon_in_Berlin_087_491617b22f.jpg b/backend/public/uploads/Michael_Everson_Wikimedia_2011_hackathon_in_Berlin_087_491617b22f.jpg new file mode 100644 index 0000000..2448ade Binary files /dev/null and b/backend/public/uploads/Michael_Everson_Wikimedia_2011_hackathon_in_Berlin_087_491617b22f.jpg differ diff --git a/backend/public/uploads/Puerta_Hobbit_TR_472e3aae2a.webp b/backend/public/uploads/Puerta_Hobbit_TR_472e3aae2a.webp new file mode 100644 index 0000000..1e5716e Binary files /dev/null and b/backend/public/uploads/Puerta_Hobbit_TR_472e3aae2a.webp differ diff --git a/backend/public/uploads/Zanahorias_Hobbit_TR_c9a8c0d33d.webp b/backend/public/uploads/Zanahorias_Hobbit_TR_c9a8c0d33d.webp new file mode 100644 index 0000000..050aaae Binary files /dev/null and b/backend/public/uploads/Zanahorias_Hobbit_TR_c9a8c0d33d.webp differ diff --git a/backend/public/uploads/medium_Michael_Everson_Wikimedia_2011_hackathon_in_Berlin_087_491617b22f.jpg b/backend/public/uploads/medium_Michael_Everson_Wikimedia_2011_hackathon_in_Berlin_087_491617b22f.jpg new file mode 100644 index 0000000..992a656 Binary files /dev/null and b/backend/public/uploads/medium_Michael_Everson_Wikimedia_2011_hackathon_in_Berlin_087_491617b22f.jpg differ diff --git a/backend/public/uploads/medium_Puerta_Hobbit_TR_472e3aae2a.webp b/backend/public/uploads/medium_Puerta_Hobbit_TR_472e3aae2a.webp new file mode 100644 index 0000000..fcdfe18 Binary files /dev/null and b/backend/public/uploads/medium_Puerta_Hobbit_TR_472e3aae2a.webp differ diff --git a/backend/public/uploads/medium_Zanahorias_Hobbit_TR_c9a8c0d33d.webp b/backend/public/uploads/medium_Zanahorias_Hobbit_TR_c9a8c0d33d.webp new file mode 100644 index 0000000..b287f20 Binary files /dev/null and b/backend/public/uploads/medium_Zanahorias_Hobbit_TR_c9a8c0d33d.webp differ diff --git a/backend/public/uploads/medium_rene2025_EC_6206f11ca4.webp b/backend/public/uploads/medium_rene2025_EC_6206f11ca4.webp new file mode 100644 index 0000000..f6b86e7 Binary files /dev/null and b/backend/public/uploads/medium_rene2025_EC_6206f11ca4.webp differ diff --git a/backend/public/uploads/rene2025_EC_6206f11ca4.webp b/backend/public/uploads/rene2025_EC_6206f11ca4.webp new file mode 100644 index 0000000..f83a924 Binary files /dev/null and b/backend/public/uploads/rene2025_EC_6206f11ca4.webp differ diff --git a/backend/public/uploads/small_Michael_Everson_Wikimedia_2011_hackathon_in_Berlin_087_491617b22f.jpg b/backend/public/uploads/small_Michael_Everson_Wikimedia_2011_hackathon_in_Berlin_087_491617b22f.jpg new file mode 100644 index 0000000..0ad3cf5 Binary files /dev/null and b/backend/public/uploads/small_Michael_Everson_Wikimedia_2011_hackathon_in_Berlin_087_491617b22f.jpg differ diff --git a/backend/public/uploads/small_Puerta_Hobbit_TR_472e3aae2a.webp b/backend/public/uploads/small_Puerta_Hobbit_TR_472e3aae2a.webp new file mode 100644 index 0000000..acb397a Binary files /dev/null and b/backend/public/uploads/small_Puerta_Hobbit_TR_472e3aae2a.webp differ diff --git a/backend/public/uploads/small_Zanahorias_Hobbit_TR_c9a8c0d33d.webp b/backend/public/uploads/small_Zanahorias_Hobbit_TR_c9a8c0d33d.webp new file mode 100644 index 0000000..c29a7ad Binary files /dev/null and b/backend/public/uploads/small_Zanahorias_Hobbit_TR_c9a8c0d33d.webp differ diff --git a/backend/public/uploads/small_rene2025_EC_6206f11ca4.webp b/backend/public/uploads/small_rene2025_EC_6206f11ca4.webp new file mode 100644 index 0000000..ac54922 Binary files /dev/null and b/backend/public/uploads/small_rene2025_EC_6206f11ca4.webp differ diff --git a/backend/public/uploads/thumbnail_Michael_Everson_Wikimedia_2011_hackathon_in_Berlin_087_491617b22f.jpg b/backend/public/uploads/thumbnail_Michael_Everson_Wikimedia_2011_hackathon_in_Berlin_087_491617b22f.jpg new file mode 100644 index 0000000..653275d Binary files /dev/null and b/backend/public/uploads/thumbnail_Michael_Everson_Wikimedia_2011_hackathon_in_Berlin_087_491617b22f.jpg differ diff --git a/backend/public/uploads/thumbnail_Puerta_Hobbit_TR_472e3aae2a.webp b/backend/public/uploads/thumbnail_Puerta_Hobbit_TR_472e3aae2a.webp new file mode 100644 index 0000000..215ff89 Binary files /dev/null and b/backend/public/uploads/thumbnail_Puerta_Hobbit_TR_472e3aae2a.webp differ diff --git a/backend/public/uploads/thumbnail_Zanahorias_Hobbit_TR_c9a8c0d33d.webp b/backend/public/uploads/thumbnail_Zanahorias_Hobbit_TR_c9a8c0d33d.webp new file mode 100644 index 0000000..2647bcd Binary files /dev/null and b/backend/public/uploads/thumbnail_Zanahorias_Hobbit_TR_c9a8c0d33d.webp differ diff --git a/backend/public/uploads/thumbnail_rene2025_EC_6206f11ca4.webp b/backend/public/uploads/thumbnail_rene2025_EC_6206f11ca4.webp new file mode 100644 index 0000000..82daccb Binary files /dev/null and b/backend/public/uploads/thumbnail_rene2025_EC_6206f11ca4.webp differ diff --git a/backend/src/api/about-us/content-types/about-us/schema.json b/backend/src/api/about-us/content-types/about-us/schema.json index 1a1c536..4018327 100644 --- a/backend/src/api/about-us/content-types/about-us/schema.json +++ b/backend/src/api/about-us/content-types/about-us/schema.json @@ -4,7 +4,8 @@ "info": { "singularName": "about-us", "pluralName": "about-uses", - "displayName": "about-us" + "displayName": "about-us", + "description": "" }, "options": { "draftAndPublish": true @@ -34,6 +35,22 @@ "type": "richtext", "required": true, "default": "EasyFest provides a simple and straightforward event/festival webpage building toolkit." + }, + "image": { + "type": "media", + "multiple": false, + "required": false, + "allowedTypes": [ + "images", + "files", + "videos", + "audios" + ], + "pluginOptions": { + "i18n": { + "localized": true + } + } } } } diff --git a/backend/src/api/activity/content-types/activity/schema.json b/backend/src/api/activity/content-types/activity/schema.json index 1fce870..2a49515 100644 --- a/backend/src/api/activity/content-types/activity/schema.json +++ b/backend/src/api/activity/content-types/activity/schema.json @@ -188,11 +188,32 @@ }, "type": "enumeration", "enum": [ - "Talk", - "Keynote", - "Workshop", - "Party" + "Actividad", + "Charla", + "Taller", + "Infantil" ] + }, + "registered_users": { + "type": "relation", + "relation": "manyToMany", + "target": "plugin::users-permissions.user", + "inversedBy": "activities_registered" + }, + "queued_users": { + "type": "relation", + "relation": "manyToMany", + "target": "plugin::users-permissions.user", + "inversedBy": "activities_queued" + }, + "adjust_start": { + "pluginOptions": { + "i18n": { + "localized": true + } + }, + "type": "integer", + "default": 0 } } } diff --git a/backend/src/api/contact-info/content-types/contact-info/schema.json b/backend/src/api/contact-info/content-types/contact-info/schema.json index ce5789f..d7bc2f2 100644 --- a/backend/src/api/contact-info/content-types/contact-info/schema.json +++ b/backend/src/api/contact-info/content-types/contact-info/schema.json @@ -4,7 +4,8 @@ "info": { "singularName": "contact-info", "pluralName": "contact-infos", - "displayName": "contact-info" + "displayName": "contact", + "description": "" }, "options": { "draftAndPublish": true @@ -32,6 +33,22 @@ } }, "type": "richtext" + }, + "image": { + "type": "media", + "multiple": false, + "required": false, + "allowedTypes": [ + "images", + "files", + "videos", + "audios" + ], + "pluginOptions": { + "i18n": { + "localized": true + } + } } } } diff --git a/backend/src/api/enrollment/content-types/enrollment/schema.json b/backend/src/api/enrollment/content-types/enrollment/schema.json new file mode 100644 index 0000000..3c324d5 --- /dev/null +++ b/backend/src/api/enrollment/content-types/enrollment/schema.json @@ -0,0 +1,22 @@ +{ + "kind": "singleType", + "collectionName": "enrollments", + "info": { + "singularName": "enrollment", + "pluralName": "enrollments", + "displayName": "enrollment", + "description": "" + }, + "options": { + "draftAndPublish": true + }, + "pluginOptions": {}, + "attributes": { + "title": { + "type": "string" + }, + "content": { + "type": "richtext" + } + } +} diff --git a/backend/src/api/enrollment/controllers/enrollment.js b/backend/src/api/enrollment/controllers/enrollment.js new file mode 100644 index 0000000..115257e --- /dev/null +++ b/backend/src/api/enrollment/controllers/enrollment.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * enrollment controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::enrollment.enrollment'); diff --git a/backend/src/api/enrollment/routes/enrollment.js b/backend/src/api/enrollment/routes/enrollment.js new file mode 100644 index 0000000..96dcb9d --- /dev/null +++ b/backend/src/api/enrollment/routes/enrollment.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * enrollment router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::enrollment.enrollment'); diff --git a/backend/src/api/enrollment/services/enrollment.js b/backend/src/api/enrollment/services/enrollment.js new file mode 100644 index 0000000..c588cb3 --- /dev/null +++ b/backend/src/api/enrollment/services/enrollment.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * enrollment service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::enrollment.enrollment'); diff --git a/backend/src/api/homepage/content-types/homepage/schema.json b/backend/src/api/homepage/content-types/homepage/schema.json index cf31404..013cc12 100644 --- a/backend/src/api/homepage/content-types/homepage/schema.json +++ b/backend/src/api/homepage/content-types/homepage/schema.json @@ -76,6 +76,12 @@ "type": "component", "repeatable": false, "component": "homepage.accommodation_section" + }, + "subtitle": { + "type": "string" + }, + "richtitle": { + "type": "richtext" } } } diff --git a/backend/src/api/precios/content-types/precios/schema.json b/backend/src/api/precios/content-types/precios/schema.json new file mode 100644 index 0000000..1ded34f --- /dev/null +++ b/backend/src/api/precios/content-types/precios/schema.json @@ -0,0 +1,36 @@ +{ + "kind": "singleType", + "collectionName": "preciosos", + "info": { + "singularName": "precios", + "pluralName": "preciosos", + "displayName": "prices", + "description": "" + }, + "options": { + "draftAndPublish": true + }, + "pluginOptions": { + "i18n": { + "localized": true + } + }, + "attributes": { + "title": { + "type": "text", + "pluginOptions": { + "i18n": { + "localized": true + } + } + }, + "content": { + "type": "richtext", + "pluginOptions": { + "i18n": { + "localized": true + } + } + } + } +} diff --git a/backend/src/api/precios/controllers/precios.js b/backend/src/api/precios/controllers/precios.js new file mode 100644 index 0000000..c4009b7 --- /dev/null +++ b/backend/src/api/precios/controllers/precios.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * precios controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::precios.precios'); diff --git a/backend/src/api/precios/routes/precios.js b/backend/src/api/precios/routes/precios.js new file mode 100644 index 0000000..fa8f814 --- /dev/null +++ b/backend/src/api/precios/routes/precios.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * precios router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::precios.precios'); diff --git a/backend/src/api/precios/services/precios.js b/backend/src/api/precios/services/precios.js new file mode 100644 index 0000000..51adaa7 --- /dev/null +++ b/backend/src/api/precios/services/precios.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * precios service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::precios.precios'); diff --git a/backend/src/api/setting/content-types/setting/schema.json b/backend/src/api/setting/content-types/setting/schema.json index b548f14..c6c37e0 100644 --- a/backend/src/api/setting/content-types/setting/schema.json +++ b/backend/src/api/setting/content-types/setting/schema.json @@ -275,6 +275,25 @@ } }, "component": "site.nav-menu-item" + }, + "enrollment_active": { + "pluginOptions": { + "i18n": { + "localized": false + } + }, + "type": "boolean", + "default": false + }, + "show_activity_registration": { + "pluginOptions": { + "i18n": { + "localized": false + } + }, + "type": "boolean", + "default": false, + "required": true } } } diff --git a/backend/src/api/site/content-types/site/schema.json b/backend/src/api/site/content-types/site/schema.json index 509c00a..eb6a309 100644 --- a/backend/src/api/site/content-types/site/schema.json +++ b/backend/src/api/site/content-types/site/schema.json @@ -34,7 +34,7 @@ "default": "hidden", "required": true }, - "status": { + "eventStatus": { "type": "enumeration", "enum": [ "hype", @@ -43,6 +43,9 @@ ], "default": "hype", "required": true + }, + "loginEnabled": { + "type": "boolean" } } } diff --git a/backend/src/components/homepage/about_section.json b/backend/src/components/homepage/about_section.json index 3c58270..469b922 100644 --- a/backend/src/components/homepage/about_section.json +++ b/backend/src/components/homepage/about_section.json @@ -2,22 +2,23 @@ "collectionName": "comp_home_about_section", "info": { "displayName": "about section", - "icon": "picture" + "icon": "picture", + "description": "" }, "options": {}, "attributes": { "title": { "type": "string", - "required": true, + "required": false, "default": "An exciting event packed with" }, "image": { - "allowedTypes": [ - "images" - ], "type": "media", "multiple": false, - "required": true + "required": true, + "allowedTypes": [ + "images" + ] }, "content": { "type": "richtext", diff --git a/backend/src/components/site/nav-menu-item.json b/backend/src/components/site/nav-menu-item.json index 3a5e8fe..5058d42 100644 --- a/backend/src/components/site/nav-menu-item.json +++ b/backend/src/components/site/nav-menu-item.json @@ -24,7 +24,9 @@ "agenda", "speakers", "streaming", - "venue-info" + "venue-info", + "precios", + "preinscripcion" ] } } diff --git a/backend/src/components/site/social-media.json b/backend/src/components/site/social-media.json index 8ecf726..9b4ae94 100644 --- a/backend/src/components/site/social-media.json +++ b/backend/src/components/site/social-media.json @@ -15,7 +15,8 @@ "youtube", "twitter", "instagram", - "linkedin" + "linkedin", + "facebook" ], "required": true }, diff --git a/backend/src/extensions/users-permissions/content-types/user/schema.json b/backend/src/extensions/users-permissions/content-types/user/schema.json index 9da8688..3c14fc3 100644 --- a/backend/src/extensions/users-permissions/content-types/user/schema.json +++ b/backend/src/extensions/users-permissions/content-types/user/schema.json @@ -9,8 +9,7 @@ "displayName": "User" }, "options": { - "draftAndPublish": false, - "timestamps": true + "draftAndPublish": false }, "attributes": { "username": { @@ -71,6 +70,86 @@ "relation": "manyToMany", "target": "api::activity.activity", "mappedBy": "staff" + }, + "registrationType": { + "type": "enumeration", + "enum": [ + "full", + "partial" + ], + "default": "full" + }, + "dni": { + "type": "string" + }, + "phone_number": { + "type": "biginteger" + }, + "last_name": { + "type": "string" + }, + "pseudonym": { + "type": "string" + }, + "smial": { + "type": "string" + }, + "room_code": { + "type": "string" + }, + "menu_type": { + "type": "enumeration", + "enum": [ + "carne", + "pescado", + "vegano" + ] + }, + "menu_comment": { + "type": "text" + }, + "premium": { + "type": "boolean" + }, + "premium_comment": { + "type": "text" + }, + "aide": { + "type": "boolean" + }, + "mentee": { + "type": "boolean" + }, + "mentor": { + "type": "boolean" + }, + "childrens": { + "type": "text" + }, + "name": { + "type": "string" + }, + "room_type": { + "type": "enumeration", + "enum": [ + "Individual", + "Doble", + "Triple", + "Aleatoria Doble", + "Aleatoria Triple" + ] + }, + "activities_registered": { + "type": "relation", + "relation": "manyToMany", + "target": "api::activity.activity", + "mappedBy": "registered_users" + }, + "activities_queued": { + "type": "relation", + "relation": "manyToMany", + "target": "api::activity.activity", + "mappedBy": "queued_users" } } } diff --git a/backend/types/generated/components.d.ts b/backend/types/generated/components.d.ts index 1bd6708..9dd2a15 100644 --- a/backend/types/generated/components.d.ts +++ b/backend/types/generated/components.d.ts @@ -3,6 +3,7 @@ import type { Schema, Struct } from '@strapi/strapi'; export interface HomepageAboutSection extends Struct.ComponentSchema { collectionName: 'comp_home_about_section'; info: { + description: ''; displayName: 'about section'; icon: 'picture'; }; @@ -10,7 +11,6 @@ export interface HomepageAboutSection extends Struct.ComponentSchema { content: Schema.Attribute.RichText & Schema.Attribute.Required; image: Schema.Attribute.Media<'images'> & Schema.Attribute.Required; title: Schema.Attribute.String & - Schema.Attribute.Required & Schema.Attribute.DefaultTo<'An exciting event packed with'>; }; } @@ -144,6 +144,8 @@ export interface SiteNavMenuItem extends Struct.ComponentSchema { 'speakers', 'streaming', 'venue-info', + 'precios', + 'preinscripcion', ] >; path: Schema.Attribute.String; @@ -160,7 +162,15 @@ export interface SiteSocialMedia extends Struct.ComponentSchema { attributes: { label: Schema.Attribute.String; platform: Schema.Attribute.Enumeration< - ['github', 'mastodon', 'youtube', 'twitter', 'instagram', 'linkedin'] + [ + 'github', + 'mastodon', + 'youtube', + 'twitter', + 'instagram', + 'linkedin', + 'facebook', + ] > & Schema.Attribute.Required; url: Schema.Attribute.String & diff --git a/backend/types/generated/contentTypes.d.ts b/backend/types/generated/contentTypes.d.ts index 27f5e5d..115a734 100644 --- a/backend/types/generated/contentTypes.d.ts +++ b/backend/types/generated/contentTypes.d.ts @@ -372,6 +372,7 @@ export interface AdminUser extends Struct.CollectionTypeSchema { export interface ApiAboutUsAboutUs extends Struct.SingleTypeSchema { collectionName: 'about_uses'; info: { + description: ''; displayName: 'about-us'; pluralName: 'about-uses'; singularName: 'about-us'; @@ -396,6 +397,12 @@ export interface ApiAboutUsAboutUs extends Struct.SingleTypeSchema { createdAt: Schema.Attribute.DateTime; createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & Schema.Attribute.Private; + image: Schema.Attribute.Media<'images' | 'files' | 'videos' | 'audios'> & + Schema.Attribute.SetPluginOptions<{ + i18n: { + localized: true; + }; + }>; locale: Schema.Attribute.String; localizations: Schema.Attribute.Relation< 'oneToMany', @@ -479,6 +486,13 @@ export interface ApiActivityActivity extends Struct.CollectionTypeSchema { }; }; attributes: { + adjust_start: Schema.Attribute.Integer & + Schema.Attribute.SetPluginOptions<{ + i18n: { + localized: true; + }; + }> & + Schema.Attribute.DefaultTo<0>; attendees_limit: Schema.Attribute.Integer & Schema.Attribute.SetPluginOptions<{ i18n: { @@ -582,6 +596,14 @@ export interface ApiActivityActivity extends Struct.CollectionTypeSchema { 'api::public-profile.public-profile' >; publishedAt: Schema.Attribute.DateTime; + queued_users: Schema.Attribute.Relation< + 'manyToMany', + 'plugin::users-permissions.user' + >; + registered_users: Schema.Attribute.Relation< + 'manyToMany', + 'plugin::users-permissions.user' + >; short_description: Schema.Attribute.Text & Schema.Attribute.SetPluginOptions<{ i18n: { @@ -606,7 +628,7 @@ export interface ApiActivityActivity extends Struct.CollectionTypeSchema { }; }>; tag2: Schema.Attribute.Enumeration< - ['Talk', 'Keynote', 'Workshop', 'Party'] + ['Actividad', 'Charla', 'Taller', 'Infantil'] > & Schema.Attribute.SetPluginOptions<{ i18n: { @@ -717,7 +739,8 @@ export interface ApiCodeOfConductCodeOfConduct extends Struct.SingleTypeSchema { export interface ApiContactInfoContactInfo extends Struct.SingleTypeSchema { collectionName: 'contact_infos'; info: { - displayName: 'contact-info'; + description: ''; + displayName: 'contact'; pluralName: 'contact-infos'; singularName: 'contact-info'; }; @@ -739,6 +762,12 @@ export interface ApiContactInfoContactInfo extends Struct.SingleTypeSchema { createdAt: Schema.Attribute.DateTime; createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & Schema.Attribute.Private; + image: Schema.Attribute.Media<'images' | 'files' | 'videos' | 'audios'> & + Schema.Attribute.SetPluginOptions<{ + i18n: { + localized: true; + }; + }>; locale: Schema.Attribute.String; localizations: Schema.Attribute.Relation< 'oneToMany', @@ -835,6 +864,36 @@ export interface ApiCookiePolicyCookiePolicy extends Struct.SingleTypeSchema { }; } +export interface ApiEnrollmentEnrollment extends Struct.SingleTypeSchema { + collectionName: 'enrollments'; + info: { + description: ''; + displayName: 'enrollment'; + pluralName: 'enrollments'; + singularName: 'enrollment'; + }; + options: { + draftAndPublish: true; + }; + attributes: { + content: Schema.Attribute.RichText; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::enrollment.enrollment' + > & + Schema.Attribute.Private; + publishedAt: Schema.Attribute.DateTime; + title: Schema.Attribute.String; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + export interface ApiFaqFaq extends Struct.CollectionTypeSchema { collectionName: 'faqs'; info: { @@ -940,6 +999,7 @@ export interface ApiHomepageHomepage extends Struct.SingleTypeSchema { marquee_text: Schema.Attribute.String & Schema.Attribute.DefaultTo<'\uD83D\uDD25 Registration is open'>; publishedAt: Schema.Attribute.DateTime; + richtitle: Schema.Attribute.RichText; show_marquee_text: Schema.Attribute.Boolean & Schema.Attribute.Required & Schema.Attribute.DefaultTo; @@ -947,6 +1007,7 @@ export interface ApiHomepageHomepage extends Struct.SingleTypeSchema { 'homepage.speakers_section', false >; + subtitle: Schema.Attribute.String; title: Schema.Attribute.String & Schema.Attribute.Required & Schema.Attribute.DefaultTo<'EasyFest, straightforward festival webpages'>; @@ -1105,6 +1166,50 @@ export interface ApiOrgTeamOrgTeam extends Struct.SingleTypeSchema { }; } +export interface ApiPreciosPrecios extends Struct.SingleTypeSchema { + collectionName: 'preciosos'; + info: { + description: ''; + displayName: 'prices'; + pluralName: 'preciosos'; + singularName: 'precios'; + }; + options: { + draftAndPublish: true; + }; + pluginOptions: { + i18n: { + localized: true; + }; + }; + attributes: { + content: Schema.Attribute.RichText & + Schema.Attribute.SetPluginOptions<{ + i18n: { + localized: true; + }; + }>; + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::precios.precios' + >; + publishedAt: Schema.Attribute.DateTime; + title: Schema.Attribute.Text & + Schema.Attribute.SetPluginOptions<{ + i18n: { + localized: true; + }; + }>; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + export interface ApiPressKitPressKit extends Struct.SingleTypeSchema { collectionName: 'press_kits'; info: { @@ -1543,6 +1648,13 @@ export interface ApiSettingSetting extends Struct.SingleTypeSchema { localized: true; }; }>; + enrollment_active: Schema.Attribute.Boolean & + Schema.Attribute.SetPluginOptions<{ + i18n: { + localized: false; + }; + }> & + Schema.Attribute.DefaultTo; locale: Schema.Attribute.String; localizations: Schema.Attribute.Relation< 'oneToMany', @@ -1597,6 +1709,14 @@ export interface ApiSettingSetting extends Struct.SingleTypeSchema { }; }> & Schema.Attribute.DefaultTo; + show_activity_registration: Schema.Attribute.Boolean & + Schema.Attribute.Required & + Schema.Attribute.SetPluginOptions<{ + i18n: { + localized: false; + }; + }> & + Schema.Attribute.DefaultTo; show_agenda: Schema.Attribute.Boolean & Schema.Attribute.Required & Schema.Attribute.SetPluginOptions<{ @@ -1786,18 +1906,19 @@ export interface ApiSiteSite extends Struct.SingleTypeSchema { createdAt: Schema.Attribute.DateTime; createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & Schema.Attribute.Private; + eventStatus: Schema.Attribute.Enumeration<['hype', 'public', 'finished']> & + Schema.Attribute.Required & + Schema.Attribute.DefaultTo<'hype'>; locale: Schema.Attribute.String & Schema.Attribute.Private; localizations: Schema.Attribute.Relation<'oneToMany', 'api::site.site'> & Schema.Attribute.Private; + loginEnabled: Schema.Attribute.Boolean; publishedAt: Schema.Attribute.DateTime; registration: Schema.Attribute.Enumeration< ['hidden', 'soon', 'open', 'finished'] > & Schema.Attribute.Required & Schema.Attribute.DefaultTo<'hidden'>; - status: Schema.Attribute.Enumeration<['hype', 'public', 'finished']> & - Schema.Attribute.Required & - Schema.Attribute.DefaultTo<'hype'>; updatedAt: Schema.Attribute.DateTime; updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & Schema.Attribute.Private; @@ -2591,42 +2712,69 @@ export interface PluginUsersPermissionsUser }; options: { draftAndPublish: false; - timestamps: true; }; attributes: { + activities_queued: Schema.Attribute.Relation< + 'manyToMany', + 'api::activity.activity' + >; + activities_registered: Schema.Attribute.Relation< + 'manyToMany', + 'api::activity.activity' + >; activities_staff: Schema.Attribute.Relation< 'manyToMany', 'api::activity.activity' >; + aide: Schema.Attribute.Boolean; blocked: Schema.Attribute.Boolean & Schema.Attribute.DefaultTo; + childrens: Schema.Attribute.Text; confirmationToken: Schema.Attribute.String & Schema.Attribute.Private; confirmed: Schema.Attribute.Boolean & Schema.Attribute.DefaultTo; createdAt: Schema.Attribute.DateTime; createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & Schema.Attribute.Private; + dni: Schema.Attribute.String; email: Schema.Attribute.Email & Schema.Attribute.Required & Schema.Attribute.SetMinMaxLength<{ minLength: 6; }>; + last_name: Schema.Attribute.String; locale: Schema.Attribute.String & Schema.Attribute.Private; localizations: Schema.Attribute.Relation< 'oneToMany', 'plugin::users-permissions.user' > & Schema.Attribute.Private; + mentee: Schema.Attribute.Boolean; + mentor: Schema.Attribute.Boolean; + menu_comment: Schema.Attribute.Text; + menu_type: Schema.Attribute.Enumeration<['carne', 'pescado', 'vegano']>; + name: Schema.Attribute.String; password: Schema.Attribute.Password & Schema.Attribute.Private & Schema.Attribute.SetMinMaxLength<{ minLength: 6; }>; + phone_number: Schema.Attribute.BigInteger; + premium: Schema.Attribute.Boolean; + premium_comment: Schema.Attribute.Text; provider: Schema.Attribute.String; + pseudonym: Schema.Attribute.String; publishedAt: Schema.Attribute.DateTime; + registrationType: Schema.Attribute.Enumeration<['full', 'partial']> & + Schema.Attribute.DefaultTo<'full'>; resetPasswordToken: Schema.Attribute.String & Schema.Attribute.Private; role: Schema.Attribute.Relation< 'manyToOne', 'plugin::users-permissions.role' >; + room_code: Schema.Attribute.String; + room_type: Schema.Attribute.Enumeration< + ['Individual', 'Doble', 'Triple', 'Aleatoria Doble', 'Aleatoria Triple'] + >; + smial: Schema.Attribute.String; updatedAt: Schema.Attribute.DateTime; updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & Schema.Attribute.Private; @@ -2657,11 +2805,13 @@ declare module '@strapi/strapi' { 'api::contact-info.contact-info': ApiContactInfoContactInfo; 'api::contact-type.contact-type': ApiContactTypeContactType; 'api::cookie-policy.cookie-policy': ApiCookiePolicyCookiePolicy; + 'api::enrollment.enrollment': ApiEnrollmentEnrollment; 'api::faq.faq': ApiFaqFaq; 'api::homepage.homepage': ApiHomepageHomepage; 'api::news-item.news-item': ApiNewsItemNewsItem; 'api::newsletter-subscription.newsletter-subscription': ApiNewsletterSubscriptionNewsletterSubscription; 'api::org-team.org-team': ApiOrgTeamOrgTeam; + 'api::precios.precios': ApiPreciosPrecios; 'api::press-kit.press-kit': ApiPressKitPressKit; 'api::privacy-policy.privacy-policy': ApiPrivacyPolicyPrivacyPolicy; 'api::profile-contact.profile-contact': ApiProfileContactProfileContact; diff --git a/frontend/.env.example b/frontend/.env.example index 288c3ab..30d4318 100644 --- a/frontend/.env.example +++ b/frontend/.env.example @@ -13,6 +13,13 @@ # If on another machine, ensure it uses the HTTPS protocol on production VITE_API_URL="http://localhost:1337/api" +# CONFIG API Token generated by Strapi admin. +# Go to Settings / API Tokens and generate one with unlimited duration +# and Custom type. Then, go to Users-permissions group and set: +# - All of Auth +# - Update and Me of User +VITE_API_TOKEN="" + # CONFIG Base URL for the media provided by the CMS # With optional port and path but without trailing slash # In local development, this is exactly the same as the CMS origin diff --git a/frontend/.nvmrc b/frontend/.nvmrc index 53d1c14..e85bf59 100644 --- a/frontend/.nvmrc +++ b/frontend/.nvmrc @@ -1 +1 @@ -v22 +v22.12 diff --git a/frontend/messages/en.json b/frontend/messages/en.json index ec3a022..2230074 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -3,22 +3,54 @@ "accommodation_info": "Accommodation info", "about": "About", "agenda": "Agenda", + "an_error_has_occurred": "An error has occurred", + "cancel": "Cancel", + "check_your_email": "Check your email", "close": "Close", "code_of_conduct": "Code of Conduct", "contact_info": "Contact info", "cookie_policy": "Cookie policy", "day": "Day", + "did_you_forget_password": "Did you forget your password?", + "email": "Email", + "email_or_password_incorrect": "Email or password incorrect", + "edit": "Edit", + "edit_pseudonym": "Tell us your pseudonym in STE", + "edit_menu_options": "Tell us if you have any requirements on the menu (allergies, intolerances..).", + "enter_your_email": "Enter your email", + "enter_your_email_and_password": "You need to enter your email and password to see your registration data", + "enter_your_email_to_send_you_link": "Enter your email and we'll send you a link to set a new password.", + "enter_your_password": "Enter your password", + "enter_your_password_again": "Enter it again, for security", + "enter_your_new_password": "Enter your new password to access the web:", "error_404_not_found": "404 Not found", "error_404_message": "Sorry, we can't find the requested page. Please go back and try a different thing.", "error_500_internal_error": "500 Internal error", "error_500_message": "Sorry, an error has ocurred. Please try again.", "error_generic": "Error {status}", + "forgot_password": "Forgotten password", + "forgot_password_press_here": "Forgotten password? Press here.", + "get_magic_link": "Get a magic link for another email→", + "it_has_a_magic_link": "It has a magic link to log in without a password.", + "invalid_reset_link": "The reset password link is invalid or timed out.", "legal": "Legal", + "login": "Login", + "logout": "Logout", + "new_password": "New password", + "new_password_set": "Your new password has been set. You can now log in.", "org_team": "Org team", + "password": "Password", + "password_length": "Password length must be at least 6 characters", + "passwords_must_match": "Passwords must match", "press_kit": "Press kit", "privacy_policy": "Privacy policy", + "register": "Register", "registration": "Registration", + "reset_password_sent": "If your email is registered, a message has been sent with a link to set a new password.", + "send": "Send", "speakers": "Speakers", "streaming": "Streaming", - "venue_info": "Venue info" + "venue_info": "Venue info", + "we_sent_an_email": "We sent an email to you at {email}", + "you_need_to_register": "You need to register to be able to enter the tickets queue and get your tickets." } \ No newline at end of file diff --git a/frontend/messages/es.json b/frontend/messages/es.json index 05602c1..347c781 100644 --- a/frontend/messages/es.json +++ b/frontend/messages/es.json @@ -1,24 +1,58 @@ { "$schema": "https://inlang.com/schema/inlang-message-format", - "accommodation_info": "Alojamiento", - "about": "Sobre nosotros", + "accommodation_info": "Como llegar", + "about": "XXIX Mereth Aderthad", "agenda": "Agenda", + "an_error_has_occurred": "Ha ocurrido un error", + "cancel": "Cancelar", + "check_your_email": "Comprueba tu correo", "close": "Cerrar", "code_of_conduct": "Código de conducta", "contact_info": "Contacto", "cookie_policy": "Política de cookies", "day": "Día", + "did_you_forget_password": "¿Olvidaste tu contraseña?", + "email": "Email", + "email_or_password_incorrect": "Email o contraseña incorrecto", + "edit": "Editar", + "edit_pseudonym": "Indica tu pseudónimo en la STE", + "edit_premium_comment": "Indica aquí el número y tallas de camiseta que quieres.", + + "edit_menu_options": "Dinos si tienes cualquier particularidad con las comidas (alergias, intolerancias, etc.).", + "enter_your_email": "Introduce tu email", + "enter_your_email_and_password": "Tienes que introducir tu email y contraseña para ver tus datos de inscripción", + "enter_your_email_to_send_you_link": "Introduce tu email y te mandaremos un enlace para establecer una contraseña nueva.", + "enter_your_password": "Introduce tu contraseña", + "enter_your_password_again": "Introducela otra vez, por seguridad", + "enter_your_new_password": "Introduce tu nueva contraseña para acceder a la web:", "error_404_not_found": "404 Página no encontrada", "error_404_message": "Lo sentimos, no podemos encontrar la página solicitada. Por favor vuelve atrás e intenta algo diferente.", "error_500_internal_error": "500 Error interno", "error_500_message": "Lo sentimos, ha ocurrido un error. Por favor intenta de nuevo.", "error_generic": "Error {status}", + "forgot_password": "Contraseña olvidada", + "forgot_password_press_here": "¿Olvidaste la contraseña? Pulsa aquí.", + "get_magic_link": "Obtener un enlace para otro correo→", + "it_has_a_magic_link": "Contiene un enlace para entrar sin contraseña.", + "invalid_reset_link": "El enlace de establecer contraseña es inválido o está caducado.", "legal": "Aviso legal", + "login": "Entrar", + "logout": "Salir", + "new_password": "Nueva contraseña", + "new_password_set": "Se ha establecido tu nueva contraseña. Ahora puedes entrar.", "org_team": "Equipo organizador", + "password": "Contraseña", + "password_length": "La longitud de la contraseña debe ser al menos de 6 caracteres.", + "passwords_must_match": "Las contraseñas deben coincidir", "press_kit": "Kit de prensa", "privacy_policy": "Política de privacidad", + "register": "Registro", "registration": "Registro", + "reset_password_sent": "Si tu correo está registrado, hemos enviado un mensaje con un enlace para establecer una contraseña nueva.", + "send": "Enviar", "speakers": "Ponentes", "streaming": "Streaming", - "venue_info": "El lugar" + "venue_info": "El lugar", + "we_sent_an_email": "Te hemos enviado un correo a {email}", + "you_need_to_register": "Necesitas registrarte para entrar en la cola de espera y conseguir tus entradas." } \ No newline at end of file diff --git a/frontend/src/app.html b/frontend/src/app.html index 7cff33a..993f2be 100644 --- a/frontend/src/app.html +++ b/frontend/src/app.html @@ -1,32 +1,31 @@ - + - - - - - + + + + %sveltekit.head% - + - + - - - + + + - - + + -
%sveltekit.body%
+
%sveltekit.body%
diff --git a/frontend/src/app.scss b/frontend/src/app.scss index 1acee32..756be36 100644 --- a/frontend/src/app.scss +++ b/frontend/src/app.scss @@ -1,47 +1,62 @@ @use 'sass:map'; -@use 'design-system/colors.scss'; +// @use 'design-system/colors.scss'; @use 'design-system/typographies.scss'; // Theme configuration is done by giving value to Bulma variables // https://bulma.io/documentation/customize/concepts/ // -- Initial variables (with a literal value) +$Primary: #426A39ff; +$Secondary: #84B642ff; +$Secondary_Light: #cfb3ffff; +$White: #f7f8f9ff; +$Primary_Light: rgb(222, 235, 220); +$White_Bis: #f1f2f4ff; +$White_Ter: #dcdfe4ff; +$Secondary_Lighter: #e4d4ffff; +$Dark: #151132ff; +$ecviolet: #8d627b; +$ecorange:#e8b290; +$ecbeige: #c9aa88; +$ecblue:#8EB1C7; +$ecbrown:#af590c; -$text: colors.$Dark; -$family-sans-serif: map.get(typographies.$Body_Large, "font-family"), sans-serif; +$text: $Dark; +$family-primary:"Cormorant Infant", serif; +$family-secondary:"Cinzel Decorative", serif; -$size-1: map.get(typographies.$🖥_Title_Large , "font-size"); -$size-2: map.get(typographies.$🖥_Title_Medium, "font-size"); -$size-3: map.get(typographies.$🖥_Title_Small , "font-size"); -$size-4: map.get(typographies.$Body_Large , "font-size"); -$size-5: map.get(typographies.$Body_Medium, "font-size"); -$size-6: map.get(typographies.$Body_Small , "font-size"); -$size-7: map.get(typographies.$Body_Small_Uppercase, "font-size"); +$size-1: 63px; +$size-2: 54px; +$size-3: 31px; +$size-4: 21px; +$size-5: 18px; +$size-6: 15px; +$size-7: 13px; $radius-small: 0; $control-border-width: 2px; @use "bulma/sass" with ( - // -- Derived variables (that take value from other variables) - $primary: colors.$Primary, - // $primary-light: colors.$Primary_Light, - // $secondary /* custom */: colors.$Secondary, - // $secondary-light /* custom */: colors.$Secondary_Light, - // $secondary-lighter /* custom */: colors.$Secondary_Lighter, - $dark: colors.$Dark, - // $text-light: $text, - $text-strong: $text, - $white: colors.$White, - $white-bis: colors.$White_Bis, - $white-ter: colors.$White_Ter, -); + $primary: $Primary, + $dark: $Dark, + $white: $White, + $white-bis: $White_Bis, + $white-ter: $White_Ter, + $body-family:"Cormorant Infant", + $body-font-size:1.2rem, + $body-color:#1A1E18ff, + $link: #af590c, + $section-padding:1rem 1.5rem, + $section-padding-desktop:2rem 2.5rem, + $family-secondary:$family-secondary, + $footer-padding:3rem 1.5rem 2rem, + $content-heading-color:$Primary, + $input-border-color:$Secondary, + $card-header-background-color: $Primary_Light, -// $custom-colors: ( -// "secondary": ($secondary, findColorInvert($secondary), $secondary-light), -// "secondary-lighter": ($secondary-lighter, findColorInvert($secondary-lighter)), -// ); +); // -- Import all bulma styles @@ -50,77 +65,280 @@ $control-border-width: 2px; // -- Bulma style overrides -.title { - font-size: $size-1; -} - -.content h3 { - // color: $secondary; - - &:not(:first-child) { - margin-top: 0; - } -} - -.button { - border-radius: $radius-small; -} - -.tag { - border-radius: $radius-small !important; -} +// .tag { +// border-radius: $radius-small !important; +// } // -- Custom helpers -$genericTypographyFamilies: ( - "Work Sans": sans-serif, - "Playfair Display": serif, - "Roboto Slab": serif, - "IBM Plex Mono": monospace, - "Kalam": (cursive, sans-serif), -); - -@mixin mixTypographyClass($typographyMap) { - @each $prop, $value in $typographyMap { - @if $prop == "font-family" { - $value: $value, map.get($genericTypographyFamilies, $value); - } - #{$prop}: $value; - } +@mixin mixTypographyClassEC($lineheight:1.2,$fontsize:54px,$fontfamily:$family-primary){ + line-height: $lineheight; + font-style: normal; + text-transform: none; + font-weight: 400; + font-size: $fontsize; + letter-spacing: 0px; + font-family: $fontfamily; } - .header--large { - @include mixTypographyClass(typographies.$📱_Title_Large); + @include mixTypographyClassEC(1.2,45px,$family-secondary); @include mixins.tablet { - @include mixTypographyClass(typographies.$🖥_Title_Large); + @include mixTypographyClassEC(1.2,56px,$family-secondary); }; } .header--medium { - @include mixTypographyClass(typographies.$📱_Title_Medium); + @include mixTypographyClassEC(1.2,32px,$family-secondary); @include mixins.tablet { - @include mixTypographyClass(typographies.$🖥_Title_Medium); + @include mixTypographyClassEC(1.2,40px,$family-secondary); }; } .header--small { - @include mixTypographyClass(typographies.$📱_Title_Small); + @include mixTypographyClassEC(1.2,16px); @include mixins.tablet { - @include mixTypographyClass(typographies.$🖥_Title_Small); + @include mixTypographyClassEC(1.2,31px); }; } .text--large { - @include mixTypographyClass(typographies.$Body_Large); + @include mixTypographyClassEC(1.4,21px); } .text--medium { - @include mixTypographyClass(typographies.$Body_Medium); + @include mixTypographyClassEC(1.4,18px); } .text--small { - @include mixTypographyClass(typographies.$Body_Small); + @include mixTypographyClassEC(1.4,15px); } .text--small--uppercase { - @include mixTypographyClass(typographies.$Body_Small_Uppercase); + @include mixTypographyClassEC(1.4,13px); } -.border-color--secondary { - border-color: colors.$Secondary_Light; + +body{ + background-image: url('assets/images/backEC.jpg'); + background-color: #426A39; + background-blend-mode: multiply; + min-height: 100vh; +} +.container_all{ + box-shadow: 0 0 16px 8px rgba(0,0,0,0.5); + min-height: 100vh; + display: grid; + grid-template-rows: auto auto 1fr auto; +} +.navbar{ + .navbar-item{ + text-transform: uppercase; + font-weight: 600; + color: $Primary; + img{ + max-height: 90px; + } + &.brand{ + @include mixins.desktop{ + padding: 0; + transform: scale(1.2); + } + } + } +} +.hero-home{ + background-image:linear-gradient(to right, rgba(66, 106, 57, 0.6), rgba(132, 182, 66, 0.6)),url('assets/images/BG_Fiesta_Hobbit_72_tr.webp'),linear-gradient(to right, rgba(66, 106, 57, 1), rgba(132, 182, 66, 1)); + background-position: left 80%; + background-size: 120%; + background-blend-mode: normal,multiply; + background-repeat: no-repeat; + @include mixins.mobile { + background-size: cover; + } + .hero-body{ + padding:8rem 4rem; + @include mixins.mobile { + padding:3rem 2rem; + } + } + .hero-content{ + display: flex; + flex-direction: column; + align-items: center; + + } + .title{ + line-height: 89%; + margin-bottom: 0; + @include mixins.mobile { + font-size: 40px; + } + } + .subtitle_group{ + display: flex; + justify-content: space-between; + text-transform: uppercase; + font-family: "cinzel decorative", serif; + } + .highlight{ + max-width: 750px; + text-align: center; + } } +.content_border{ + border-image-source: url('assets/images/border_content.png'); + border-image-slice: 65; + border-image-width: auto; + border-image-outset: 15px; + padding:3rem 2rem; + @include mixins.mobile { + border-image: none; + padding:inherit; + } +} +.page_title{ + background-image: linear-gradient(to right, #426A39, #84B642); + font-family: "cinzel decorative", serif; + padding:1rem 2rem; + .title { + font-size: $size-3; + color: $White; + @include mixins.mobile { + font-size: $size-5; + } + } +} +footer{ + background-image: linear-gradient(to right, #426A39, #84B642); + .logo_footer{ + max-width: 200px; + display: block; + } +} +.button-hero{ + background-image: linear-gradient(to right, #426A39, #84B642); + &:hover{ + background-image: linear-gradient(to right, #84B642, #426A39); + } +} +.img_mark{ + border:thick double $Primary; + border-radius: 8px; +} +.img-draw{ + @media only screen and (max-width: 768px) { + max-width: 300px; + } +} +.table-precios { + + td:nth-of-type(3),td:nth-of-type(4) { + font-weight: bold; + } +} +@media only screen and (max-width: 768px) { + table, thead, tbody, th, td, tr { + display: block; + } + thead tr { + position: absolute; + top: -9999px; + left: -9999px; + } + tr { border: 1px solid #ccc; } + td { + border: none; + border-bottom: 1px solid #eee; + position: relative; + padding-left: 200px; + margin-left: 150px; + } + td:before { + position: absolute; + top: 12px; + left: 6px; + width: 200px; + padding-right: 40px; + white-space: nowrap; + margin-left: -150px; + } + td:nth-of-type(1):before { content: "Descripción"; } + td:nth-of-type(2):before { content: "Tipo"; } + td:nth-of-type(3):before { content: "EC Parcial"; } + td:nth-of-type(4):before { content: "EC Completa";} + +} +.content-comollegar{ + h4{ + margin-top:3rem; + margin-bottom:.6em; + font-family: $family-secondary; + } +} +.user_data{ + h3{ + display: grid; + grid-template-columns: auto 1fr; + text-align: center; + align-items: baseline; + grid-gap: 6px; + &::after{ + content: ""; + display: block; + width: 100%; + height: 1px; + background-color: $Primary; + } + } + label{ + text-transform: uppercase; + color: $Primary; + font-size: 0.9rem; + } + + .control { + p{ + font-weight: 600; + background-image: linear-gradient(150deg, $Primary_Light, #fff); + padding: 0.5rem; + border-radius: 5px; + min-height: 2.8rem; + } + input[type="checkbox"]{ + transform: scale(1.5); + accent-color: $Primary; + padding: 0.5rem; + } + } +} +.agenda-section{ + .tabs ul{ + margin-inline-start: 0; + } + @media only screen and (max-width: 768px) { + .tabs ul a{ + padding:0.4em 0.8em; + } + } +} +.agenda-table{ + position: relative; + overflow: scroll; + height: 100vh; + border:1px solid $Primary; + border-radius: 8px; + padding: 4px; + .columns{ + position: absolute; + width: 100%; + } + .tag.is-info{ + background-color: $ecviolet; + color: $White; + } + .column-header{ + position: sticky; + top: 0; + z-index: 10; + background-image: linear-gradient(to right, $Primary, $Secondary); + border-radius: 8px; + padding:1rem; + margin-bottom: 10px; + box-shadow: 0 10px 10px 0px rgba(0, 0, 0, 0.2), 0 -10px 10px 3px rgb(255, 255, 255); + } +} \ No newline at end of file diff --git a/frontend/src/assets/images/BG_Fiesta_Hobbit_72.webp b/frontend/src/assets/images/BG_Fiesta_Hobbit_72.webp new file mode 100644 index 0000000..09b3f75 Binary files /dev/null and b/frontend/src/assets/images/BG_Fiesta_Hobbit_72.webp differ diff --git a/frontend/src/assets/images/BG_Fiesta_Hobbit_72_tr.webp b/frontend/src/assets/images/BG_Fiesta_Hobbit_72_tr.webp new file mode 100644 index 0000000..f87429e Binary files /dev/null and b/frontend/src/assets/images/BG_Fiesta_Hobbit_72_tr.webp differ diff --git a/frontend/src/assets/images/BG_Fiesta_Hobbit_72_trans.webp b/frontend/src/assets/images/BG_Fiesta_Hobbit_72_trans.webp new file mode 100644 index 0000000..3e38630 Binary files /dev/null and b/frontend/src/assets/images/BG_Fiesta_Hobbit_72_trans.webp differ diff --git a/frontend/src/assets/images/Puerta_Hobbit_TR.webp b/frontend/src/assets/images/Puerta_Hobbit_TR.webp new file mode 100644 index 0000000..9019430 Binary files /dev/null and b/frontend/src/assets/images/Puerta_Hobbit_TR.webp differ diff --git a/frontend/src/assets/images/Puerta_Hobbit_TRd.webp b/frontend/src/assets/images/Puerta_Hobbit_TRd.webp new file mode 100644 index 0000000..024e3c8 Binary files /dev/null and b/frontend/src/assets/images/Puerta_Hobbit_TRd.webp differ diff --git a/frontend/src/assets/images/Quesos_Hobbit_TR.webp b/frontend/src/assets/images/Quesos_Hobbit_TR.webp new file mode 100644 index 0000000..07fd3d1 Binary files /dev/null and b/frontend/src/assets/images/Quesos_Hobbit_TR.webp differ diff --git a/frontend/src/assets/images/Zanahorias_Hobbit_TR.webp b/frontend/src/assets/images/Zanahorias_Hobbit_TR.webp new file mode 100644 index 0000000..175c2f4 Binary files /dev/null and b/frontend/src/assets/images/Zanahorias_Hobbit_TR.webp differ diff --git a/frontend/src/assets/images/backEC.jpg b/frontend/src/assets/images/backEC.jpg new file mode 100644 index 0000000..9aa640c Binary files /dev/null and b/frontend/src/assets/images/backEC.jpg differ diff --git a/frontend/src/assets/images/border_content.png b/frontend/src/assets/images/border_content.png new file mode 100644 index 0000000..7f6a0e0 Binary files /dev/null and b/frontend/src/assets/images/border_content.png differ diff --git a/frontend/src/assets/images/camisetas_EC.webp b/frontend/src/assets/images/camisetas_EC.webp new file mode 100644 index 0000000..6957787 Binary files /dev/null and b/frontend/src/assets/images/camisetas_EC.webp differ diff --git a/frontend/src/assets/images/chica.jpg b/frontend/src/assets/images/chica.jpg new file mode 100644 index 0000000..8632ebd Binary files /dev/null and b/frontend/src/assets/images/chica.jpg differ diff --git a/frontend/src/assets/images/chico.jpg b/frontend/src/assets/images/chico.jpg new file mode 100644 index 0000000..677a674 Binary files /dev/null and b/frontend/src/assets/images/chico.jpg differ diff --git a/frontend/src/assets/images/hotel_AGHCanet_1.webp b/frontend/src/assets/images/hotel_AGHCanet_1.webp new file mode 100644 index 0000000..af595b3 Binary files /dev/null and b/frontend/src/assets/images/hotel_AGHCanet_1.webp differ diff --git a/frontend/src/assets/images/hotel_AGHCanet_2.webp b/frontend/src/assets/images/hotel_AGHCanet_2.webp new file mode 100644 index 0000000..6014af4 Binary files /dev/null and b/frontend/src/assets/images/hotel_AGHCanet_2.webp differ diff --git a/frontend/src/assets/images/hotel_AGHCanet_3.webp b/frontend/src/assets/images/hotel_AGHCanet_3.webp new file mode 100644 index 0000000..86fef27 Binary files /dev/null and b/frontend/src/assets/images/hotel_AGHCanet_3.webp differ diff --git a/frontend/src/assets/images/hotel_AGHCanet_4.webp b/frontend/src/assets/images/hotel_AGHCanet_4.webp new file mode 100644 index 0000000..d0c3b2e Binary files /dev/null and b/frontend/src/assets/images/hotel_AGHCanet_4.webp differ diff --git a/frontend/src/lib/ActivityModal.svelte b/frontend/src/lib/ActivityModal.svelte new file mode 100644 index 0000000..22e84eb --- /dev/null +++ b/frontend/src/lib/ActivityModal.svelte @@ -0,0 +1,78 @@ + + +{#if isOpen} + + +{/if} + + \ No newline at end of file diff --git a/frontend/src/lib/Footer.svelte b/frontend/src/lib/Footer.svelte index 4e335f1..c86f0bd 100644 --- a/frontend/src/lib/Footer.svelte +++ b/frontend/src/lib/Footer.svelte @@ -1,64 +1,70 @@ -