├── .env.example ├── .github └── workflows │ └── contributors.yaml ├── .gitignore ├── .vercel └── project.json ├── .vscode ├── extensions.json ├── launch.json └── settings.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── README.md ├── astro.config.mjs ├── package.json ├── public ├── adevinta-logo.webp ├── bento-info │ ├── company-opinion.webp │ ├── emergent-positions.webp │ ├── no-experience.webp │ └── selection-process.webp ├── favicon.ico ├── footer-app-store.webp ├── footer-google-play.webp ├── hero-pattern.webp ├── img │ ├── bento-info-modal-cards │ │ ├── bell.webp │ │ ├── double-authenticity.webp │ │ ├── eyes.webp │ │ ├── fire.webp │ │ ├── focus-on-your-skills.webp │ │ ├── heart-on-fire.webp │ │ ├── learning-ability.webp │ │ ├── questions-and-answers.webp │ │ ├── register.webp │ │ ├── search-ideal-offer.webp │ │ ├── show-enthusiasm.webp │ │ ├── sincerity-and-trust.webp │ │ ├── style-your-cv.webp │ │ └── you-are-their-candidate.webp │ ├── cool-jobs │ │ ├── btravel.webp │ │ ├── cool-jobs.webp │ │ ├── dominos.webp │ │ ├── grefusa.webp │ │ ├── maxibon.webp │ │ ├── pattern.webp │ │ ├── port-aventura.webp │ │ ├── visa.webp │ │ └── wizink-center.webp │ ├── emergent-positions │ │ ├── barcelona.webp │ │ ├── bg2Img1.webp │ │ ├── bg2Img2.webp │ │ ├── bg2Img3.webp │ │ ├── bg2Img4.webp │ │ ├── bg2Img5.webp │ │ ├── bg2Img6.webp │ │ ├── bg2Img7.webp │ │ ├── bgImg1.webp │ │ ├── bgImg2.webp │ │ ├── bgImg3.webp │ │ ├── bgImg4.webp │ │ ├── bgImg5.webp │ │ ├── bgImg6.webp │ │ ├── bgImg7.webp │ │ ├── bilbao.webp │ │ ├── madrid.webp │ │ ├── malaga.webp │ │ ├── sevilla.webp │ │ ├── valencia.webp │ │ └── zaragoza.webp │ ├── kings-league │ │ ├── background.webp │ │ └── players.webp │ ├── pre-footer │ │ ├── info-tiktok.webp │ │ └── oferta-empleo.webp │ └── thumbnails │ │ ├── cristinini.webp │ │ ├── ibai.webp │ │ ├── jijantes.webp │ │ ├── marcos.webp │ │ └── midudev.webp ├── logo.svg └── og.jpg ├── src ├── components │ ├── AdevintaInfo.astro │ ├── BentoInfo.astro │ ├── CoolJobBackground.astro │ ├── CoolJobBrand.astro │ ├── CoolJobCard.astro │ ├── CoolJobs.astro │ ├── EmergentPositions.astro │ ├── FollowUs.astro │ ├── FollowUsLink.astro │ ├── Footer.astro │ ├── Header.astro │ ├── HeroSearch.astro │ ├── InfographicBody.astro │ ├── InfographicHeader.astro │ ├── InfographicModal.astro │ ├── InfographicTips.astro │ ├── KingsLeagueInfo.astro │ ├── LinksColumns.astro │ ├── LiteYoutube.astro │ ├── OportunidadesTikTok.astro │ ├── PreFooter.astro │ ├── SectionContainer.astro │ ├── SocialBest.astro │ ├── StandsInterviews.astro │ ├── Subtitle.astro │ ├── TiktokVideo.astro │ ├── YourNextJob.astro │ └── ui │ │ ├── Button.astro │ │ └── Icon.astro ├── const.ts ├── env.d.ts ├── icons │ ├── AppStore.astro │ ├── ChevronDown.astro │ ├── CloseIcon.astro │ ├── Facebook.astro │ ├── GooglePlay.astro │ ├── LeftArrow.astro │ ├── Play.astro │ ├── RightArrow.astro │ ├── Search.astro │ ├── Spinner.astro │ ├── TikTok.astro │ ├── Twitter.astro │ └── YouTube.astro ├── layouts │ └── Layout.astro ├── lib │ ├── generate-infojobs-keywords-url.ts │ ├── generate-infojobs-url.ts │ ├── get-ij-studies.ts │ ├── list-provinces-ids.ts │ ├── mocks.ts │ ├── query.ts │ └── queryKeywords.ts ├── pages │ └── index.astro └── types.ts ├── tailwind.config.mjs └── tsconfig.json /.env.example: -------------------------------------------------------------------------------- 1 | API_INFOJOBS_TOKEN="Get from https://developer.infojobs.net/" 2 | -------------------------------------------------------------------------------- /.github/workflows/contributors.yaml: -------------------------------------------------------------------------------- 1 | name: Add contributors 2 | on: 3 | schedule: 4 | - cron: '20 20 * * *' 5 | 6 | jobs: 7 | add-contributors: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - uses: BobAnkh/add-contributors@master 12 | with: 13 | CONTRIBUTOR: '## Contribuidores' 14 | COLUMN_PER_ROW: '6' 15 | ACCESS_TOKEN: ${{secrets.GITHUB_TOKEN}} 16 | IMG_WIDTH: '100' 17 | FONT_SIZE: '14' 18 | PATH: '/README.md' 19 | COMMIT_MESSAGE: 'docs(README): update contributors' 20 | AVATAR_SHAPE: 'round' -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # build output 2 | dist/ 3 | 4 | # generated types 5 | .astro/ 6 | 7 | # dependencies 8 | node_modules/ 9 | 10 | # logs 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | #locks 17 | bun.lockb 18 | pnpm-lock.yaml 19 | package-lock.json 20 | 21 | # environment variables 22 | .env 23 | .env.production 24 | .env.local 25 | 26 | # macOS-specific files 27 | .DS_Store 28 | 29 | # jetbrains setting folder 30 | .idea/ 31 | -------------------------------------------------------------------------------- /.vercel/project.json: -------------------------------------------------------------------------------- 1 | {"projectId":"prj_SsanVSwAoWqNeWqovW1OdwWn8CrZ","orgId":"team_pzEis5cENnPrEa0YhyEfJ7Ek"} -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["astro-build.astro-vscode"], 3 | "unwantedRecommendations": [] 4 | } 5 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "command": "./node_modules/.bin/astro dev", 6 | "name": "Development server", 7 | "request": "launch", 8 | "type": "node-terminal" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": ["Coméntalo", "infojobs", "jovenes", "Twitea"] 3 | } 4 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Código de Conducta para Contribuyentes 2 | 3 | ## Nuestro compromiso 4 | 5 | Nosotros, como miembros, contribuyentes y administradores nos comprometemos a hacer de la participación en nuestra comunidad una experiencia libre de acoso para todos, independientemente de la edad, dimensión corporal, discapacidad visible o invisible, etnicidad, características sexuales, identidad y expresión de género, nivel de experiencia, educación, nivel socio-económico, nacionalidad, apariencia personal, raza, religión, o identidad u orientación sexual. 6 | 7 | Nos comprometemos a actuar e interactuar de maneras que contribuyan a una comunidad abierta, acogedora, diversa, inclusiva y sana. 8 | 9 | ## Nuestros estándares 10 | 11 | Ejemplos de comportamiento que contribuyen a crear un ambiente positivo: 12 | 13 | * Demostrar empatía y amabilidad ante otras personas 14 | * Respeto a diferentes opiniones, puntos de vista y experiencias 15 | * Dar y aceptar adecuadamente retroalimentación constructiva 16 | * Aceptar la responsabilidad y disculparse ante quienes se vean afectados por nuestros errores, aprendiendo de la experiencia 17 | * Centrarse en lo que sea mejor no sólo para nosotros como individuos, sino para la comunidad en general 18 | 19 | Ejemplos de comportamiento inaceptable: 20 | 21 | * El uso de lenguaje o imágenes sexualizadas, y aproximaciones o atenciones sexuales de cualquier tipo 22 | * Comentarios despectivos (_trolling_), insultantes o derogatorios, y ataques personales o políticos 23 | * El acoso en público o privado 24 | * Publicar información privada de otras personas, tales como direcciones físicas o de correo electrónico, sin su permiso explícito 25 | * Otras conductas que puedan ser razonablemente consideradas como inapropiadas en un entorno profesional 26 | 27 | ## Aplicación de las responsabilidades 28 | 29 | Los administradores de la comunidad son responsables de aclarar y hacer cumplir nuestros estándares de comportamiento aceptable y tomarán acciones apropiadas y correctivas de forma justa en respuesta a cualquier comportamiento que consideren inapropiado, amenazante, ofensivo o dañino. 30 | 31 | Los administradores de la comunidad tendrán el derecho y la responsabilidad de eliminar, editar o rechazar comentarios, _commits_, código, ediciones de páginas de wiki, _issues_ y otras contribuciones que no se alineen con este Código de Conducta, y comunicarán las razones para sus decisiones de moderación cuando sea apropiado. 32 | 33 | ## Alcance 34 | 35 | Este código de conducta aplica tanto a espacios del proyecto como a espacios públicos donde un individuo esté en representación del proyecto o comunidad. Ejemplos de esto incluyen el uso de la cuenta oficial de correo electrónico, publicaciones a través de las redes sociales oficiales, o presentaciones con personas designadas en eventos en línea o no. 36 | 37 | ## Aplicación 38 | 39 | Instancias de comportamiento abusivo, acosador o inaceptable de otro modo podrán ser reportadas a los administradores de la comunidad responsables del cumplimiento a través de . Todas las quejas serán evaluadas e investigadas de una manera puntual y justa. 40 | 41 | Todos los administradores de la comunidad están obligados a respetar la privacidad y la seguridad de quienes reporten incidentes. 42 | 43 | ## Guías de Aplicación 44 | 45 | Los administradores de la comunidad seguirán estas Guías de Impacto en la Comunidad para determinar las consecuencias de cualquier acción que juzguen como un incumplimiento de este Código de Conducta: 46 | 47 | ### 1. Corrección 48 | 49 | **Impacto en la Comunidad**: El uso de lenguaje inapropiado u otro comportamiento considerado no profesional o no acogedor en la comunidad. 50 | 51 | **Consecuencia**: Un aviso escrito y privado de los administradores de la comunidad, proporcionando claridad alrededor de la naturaleza de este incumplimiento y una explicación de por qué el comportamiento es inaceptable. Una disculpa pública podría ser solicitada. 52 | 53 | ### 2. Aviso 54 | 55 | **Impacto en la Comunidad**: Un incumplimiento causado por un único incidente o por una cadena de acciones. 56 | 57 | **Consecuencia**: Un aviso con consecuencias por comportamiento prolongado. No se interactúa con las personas involucradas, incluyendo interacción no solicitada con quienes se encuentran aplicando el Código de Conducta, por un período específico de tiempo. Esto incluye evitar las interacciones en espacios de la comunidad, así como a través de canales externos como las redes sociales. Incumplir estos términos puede conducir a una expulsión temporal o permanente. 58 | 59 | ### 3. Expulsión temporal 60 | 61 | **Impacto en la Comunidad**: Una serie de incumplimientos de los estándares de la comunidad, incluyendo comportamiento inapropiado continuo. 62 | 63 | **Consecuencia**: Una expulsión temporal de cualquier forma de interacción o comunicación pública con la comunidad durante un intervalo de tiempo especificado. No se permite interactuar de manera pública o privada con las personas involucradas, incluyendo interacciones no solicitadas con quienes se encuentran aplicando el Código de Conducta, durante este período. Incumplir estos términos puede conducir a una expulsión permanente. 64 | 65 | ### 4. Expulsión permanente 66 | 67 | **Impacto en la Comunidad**: Demostrar un patrón sistemático de incumplimientos de los estándares de la comunidad, incluyendo conductas inapropiadas prolongadas en el tiempo, acoso de individuos, o agresiones o menosprecio a grupos de individuos. 68 | 69 | **Consecuencia**: Una expulsión permanente de cualquier tipo de interacción pública con la comunidad del proyecto. 70 | 71 | ## Atribución 72 | 73 | Este Código de Conducta es una adaptación del [Contributor Covenant][homepage], versión 2.0, 74 | disponible en https://www.contributor-covenant.org/es/version/2/0/code_of_conduct.html 75 | 76 | Las Guías de Impacto en la Comunidad están inspiradas en la [escalera de aplicación del código de conducta de Mozilla](https://github.com/mozilla/diversity). 77 | 78 | [homepage]: https://www.contributor-covenant.org 79 | 80 | Para respuestas a las preguntas frecuentes de este código de conducta, consulta las FAQ en 81 | https://www.contributor-covenant.org/faq. Hay traducciones disponibles en 82 | https://www.contributor-covenant.org/translations. -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribuir a Landing de InfoJobs 2 | 3 | Primero que nada, ¡gracias por tomarte el tiempo para contribuir! ❤️ 4 | 5 | Se anima y valora todo tipo de contribuciones. Consulta la [Tabla de Contenidos](#tabla-de-contenidos) para conocer las diferentes maneras de ayudar y detalles sobre cómo maneja este proyecto las contribuciones. Asegúrate de leer la sección relevante antes de hacer tu contribución, lo que facilitará mucho el trabajo a los mantenedores y mejorará la experiencia para todos los involucrados. La comunidad espera tus contribuciones con entusiasmo. 🎉 6 | 7 | > Y si te gusta el proyecto pero no tienes tiempo para contribuir, no te preocupes. Hay otras formas sencillas de apoyar el proyecto y mostrar tu aprecio, las cuales también agradeceríamos mucho: 8 | > - Dale una estrella al proyecto 9 | > - Twitea sobre él 10 | > - Menciona este proyecto en el README de tu proyecto 11 | > - Coméntalo en reuniones locales y cuéntaselo a tus amigos/colegas 12 | 13 | 14 | ## Tabla de Contenidos 15 | 16 | - [Código de Conducta](#código-de-conducta) 17 | - [Tengo una Pregunta](#tengo-una-pregunta) 18 | - [Quiero Contribuir](#quiero-contribuir) 19 | - [Reportar Errores](#reportar-errores) 20 | - [Sugerir Mejoras](#sugerir-mejoras) 21 | - [Tu Primera Contribución de Código](#tu-primera-contribución-de-código) 22 | - [Mensajes de Commit](#mensajes-de-commit) 23 | 24 | 25 | ## Código de Conducta 26 | 27 | Este proyecto y todos los que participan en él están regidos por el [Código de Conducta de Landing de InfoJobs](https://github.com/midudev/landing-infojobs/blob/main/CODE_OF_CONDUCT.md). Al participar, se espera que cumplas con este código. Por favor, reporta cualquier comportamiento inaceptable a . 28 | 29 | ## Tengo una Pregunta 30 | 31 | > Si quieres hacer una pregunta, asumimos que has leído la [Documentación](https://github.com/midudev/landing-infojobs) disponible. 32 | 33 | Antes de hacer una pregunta, lo mejor es buscar [Issues](https://github.com/midudev/landing-infojobs/issues) existentes que puedan ayudarte. En caso de encontrar un issue adecuado y aún necesitar aclaraciones, puedes escribir tu pregunta en ese issue. También es aconsejable buscar respuestas en internet primero. 34 | 35 | Si después de esto todavía sientes la necesidad de hacer una pregunta y necesitas aclaración, te recomendamos lo siguiente: 36 | 37 | - Abre un [Issue](https://github.com/midudev/landing-infojobs/issues/new). 38 | - Proporciona el mayor contexto posible sobre el problema que estás enfrentando. 39 | - Proporciona versiones del proyecto y la plataforma (Node.js, npm, etc.), dependiendo de lo que parezca relevante. 40 | 41 | Nos encargaremos del issue lo antes posible. 42 | 43 | ## Quiero Contribuir 44 | 45 | > ### Aviso Legal 46 | > Al contribuir a este proyecto, debes aceptar que eres el autor del 100% del contenido, que tienes los derechos necesarios para el contenido, y que el contenido que contribuyas puede ser proporcionado bajo la licencia del proyecto. 47 | 48 | ### Reportar Errores 49 | 50 | #### Antes de Enviar un Informe de Error 51 | 52 | Un buen informe de error no debería dejar a otros necesitando más información. Por lo tanto, te pedimos que investigues cuidadosamente, recopiles información y describas el problema en detalle en tu informe. Completa los siguientes pasos para ayudarnos a solucionar cualquier error potencial lo más rápido posible. 53 | 54 | - Asegúrate de estar utilizando la última versión. 55 | - Verifica si el problema realmente es un error y no un problema de configuración (Asegúrate de haber leído la [documentación](https://github.com/midudev/landing-infojobs). Si buscas soporte, podrías consultar [esta sección](#tengo-una-pregunta)). 56 | - Para ver si otros usuarios han experimentado (y posiblemente resuelto) el mismo problema, verifica si ya existe un informe para ese error en el [rastreador de errores](https://github.com/midudev/landing-infojobs/issues?q=label%3Abug). 57 | - También asegúrate de buscar en internet (incluyendo Stack Overflow) para ver si usuarios fuera de la comunidad de GitHub han discutido el problema. 58 | - Recopila información sobre el error: 59 | - Traza de pila (Stack trace) 60 | - Sistema operativo, plataforma y versión (Windows, Linux, macOS, x86, ARM) 61 | - Versión del intérprete, compilador, SDK, entorno de ejecución, gestor de paquetes, dependiendo de lo que parezca relevante. 62 | - Posiblemente, tu entrada y salida 63 | - ¿Puedes reproducir el problema de manera confiable? ¿Y también con versiones anteriores? 64 | 65 | #### ¿Cómo Enviar un Buen Informe de Error? 66 | 67 | > Nunca debes informar problemas relacionados con la seguridad, vulnerabilidades o errores que incluyan información sensible en el rastreador de issues o en otro lugar público. En su lugar, los errores sensibles deben ser enviados por correo electrónico a . 68 | 69 | Utilizamos issues de GitHub para rastrear errores. Si encuentras un problema con el proyecto: 70 | 71 | - Abre un [Issue](https://github.com/midudev/landing-infojobs/issues/new). (Dado que en este punto no estamos seguros si es un error, te pedimos que no lo llames "bug" aún ni lo etiquetes). 72 | - Explica el comportamiento esperado y el comportamiento real. 73 | - Proporciona tanto contexto como sea posible y describe los *pasos para reproducir* que alguien más puede seguir para recrear el problema. Esto usualmente incluye tu código. Para buenos informes de error, deberías aislar el problema y crear un caso de prueba reducido. 74 | - Proporciona la información que recopilaste en la sección anterior. 75 | 76 | Una vez enviado: 77 | 78 | - El equipo del proyecto etiquetará el issue según corresponda. 79 | - Un miembro del equipo intentará reproducir el problema con los pasos proporcionados. Si no hay pasos para reproducir o no es obvio cómo hacerlo, el equipo te pedirá esos pasos y marcará el issue como `needs-repro`. Los errores con la etiqueta `needs-repro` no serán atendidos hasta que se puedan reproducir. 80 | - Si el equipo puede reproducir el problema, será etiquetado como `needs-fix`, además de posiblemente otras etiquetas (como `critical`), y el issue quedará disponible para ser [implementado por alguien](#tu-primera-contribución-de-código). 81 | 82 | ### Sugerir Mejoras 83 | 84 | Esta sección te guiará en la presentación de una sugerencia de mejora para Landing de InfoJobs, **incluyendo nuevas características y mejoras menores de la funcionalidad existente**. Seguir estas pautas ayudará a los mantenedores y la comunidad a entender tu sugerencia y encontrar sugerencias relacionadas. 85 | 86 | #### Antes de Enviar una Mejora 87 | 88 | - Asegúrate de estar utilizando la última versión. 89 | - Lee la [documentación](https://github.com/midudev/landing-infojobs) detenidamente y verifica si la funcionalidad ya está cubierta, tal vez por una configuración individual. 90 | - Realiza una [búsqueda](https://github.com/midudev/landing-infojobs/issues) para ver si la mejora ya ha sido sugerida. Si es así, añade un comentario al issue existente en lugar de abrir uno nuevo. 91 | - Asegúrate de que tu idea encaje con el alcance y los objetivos del proyecto. Es tu responsabilidad hacer una fuerte argumentación para convencer a los desarrolladores del proyecto de los méritos de esta característica. Ten en cuenta que buscamos características que sean útiles para la mayoría de nuestros usuarios y no solo para un pequeño grupo. Si solo estás apuntando a una minoría de usuarios, considera escribir una biblioteca de complementos. 92 | 93 | #### ¿Cómo Enviar una Buena Sugerencia de Mejora? 94 | 95 | Las sugerencias de mejora se rastrean como [issues de GitHub](https://github.com/midudev/landing-infojobs/issues). 96 | 97 | - Usa un **título claro y descriptivo** para el issue que identifique la sugerencia. 98 | - Proporciona una **descripción paso a paso de la mejora sugerida** con tantos detalles como sea posible. 99 | - **Describe el comportamiento actual** y **explica qué comportamiento esperabas ver en su lugar** y por qué. En este punto, también puedes indicar qué alternativas no funcionan para ti. 100 | - Puedes **incluir capturas de pantalla y GIFs animados** que te ayuden a demostrar los pasos o señalar la parte relacionada con la sugerencia. Puedes usar [esta herramienta](https://www.cockos.com/licecap/) para grabar GIFs en macOS y Windows, y [esta herramienta](https://github.com/colinkeenan/silentcast) o [esta herramienta](https://github.com/GNOME/byzanz) en Linux. 101 | - **Explica por qué esta mejora sería útil** para la mayoría de los usuarios de Landing de InfoJobs. También puedes mencionar otros proyectos que hayan resuelto mejor el problema y que podrían servir de inspiración. 102 | 103 | ### Tu Primera Contribución de Código 104 | 105 | ¿Listo para contribuir con código? ¡Genial! A continuación, te mostramos cómo empezar: 106 | 107 | 1. **Bifurca (Fork) el repositorio** en tu cuenta de GitHub. 108 | 109 | 2. **Clona el repositorio bifurcado** en tu máquina local: 110 | ```bash 111 | git clone https://github.com/tu-usuario/landing-infojobs.git 112 | ``` 113 | 114 | 3. **Crea una rama nueva** para tu contribución. Utiliza un nombre de rama descriptivo: 115 | ```bash 116 | git checkout -b nombre-de-tu-rama 117 | ``` 118 | 4. **Haz tus cambios**. Asegúrate de seguir las pautas de codificación del proyecto y de que tus contribuciones sean claras y concisas. Si estás agregando una nueva característica, asegúrate de que tenga cobertura de pruebas. 119 | 5. **Prueba tus cambios** para verificar que todo funcione correctamente: 120 | ```bash 121 | npm run preview 122 | ``` 123 | 6. **Haz commit de tus cambios** siguiendo las convenciones de mensajes de commit (ver la sección [Mensajes de Commit](#mensajes-de-commit)). 124 | 7. **Sube tu rama** a GitHub: 125 | ```bash 126 | git push origin nombre-de-tu-rama 127 | ``` 128 | 8. **Abre un Pull Request (PR)** desde tu rama y describe claramente los cambios que has realizado. Si tu PR resuelve un issue existente, asegúrate de mencionarlo en la descripción. 129 | 9. **Espera la revisión**. Un mantenedor revisará tu PR, te proporcionará comentarios y lo aprobará si está listo para ser fusionado. 130 | 131 | ### Mensajes de Commit 132 | 133 | Para mantener un historial de cambios consistente y claro, utilizamos una convención para los mensajes de commit. El formato es el siguiente: 134 | 135 | ```scss 136 | tipo(área): descripción corta [opcional] 137 | ``` 138 | 139 | - **tipo**: indica la naturaleza del cambio. Algunos ejemplos son: 140 | - `feat`: una nueva característica para el proyecto. 141 | - `fix`: corrección de errores. 142 | - `docs`: cambios en la documentación. 143 | - `style`: cambios que no afectan la lógica del código (formato, espacios, etc.). 144 | - `refactor`: cambios en el código que no corrigen errores ni agregan funciones. 145 | - `test`: agregar o corregir pruebas. 146 | - `chore`: cambios en el proceso de construcción o herramientas auxiliares. 147 | - **área**: especifica la parte del proyecto que se ve afectada (por ejemplo, un archivo o módulo). 148 | - **descripción breve**: explica de manera concisa qué se ha hecho. Usa el modo imperativo (por ejemplo, "agrega", "corrige"). 149 | - **descripción detallada opcional**: puede incluir más detalles sobre el commit. 150 | 151 |
152 | 153 | **Ejemplo de mensaje de commit:** 154 | ```scss 155 | docs(readme.md): add local install instructions 156 | ``` 157 | 158 | Este mensaje indica que se han añadido instrucciones de instalación local en el archivo `readme.md`. 159 | 160 |
161 | 162 | 163 | ¡Gracias por contribuir! Tu ayuda hace una gran diferencia para el proyecto. 164 | 165 |
166 | 167 | 168 | ## Atribución 169 | 170 | Esta guía está basada en **contributing-gen**. [¡Haz la tuya!](https://github.com/bttger/contributing-gen) 171 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Landing de InfoJobs 3 | 4 | Este proyecto es una landing page para InfoJobs, diseñada para proporcionar una presentación moderna y atractiva de la plataforma, destacando sus características y beneficios. La landing page busca captar la atención de los usuarios y motivarlos a explorar los servicios de InfoJobs, promoviendo una mejor experiencia de búsqueda de empleo. 5 | 6 | 7 | ## Tech Stack 8 | 9 | ![ASTRO](https://img.shields.io/badge/astro-%23E34F26.svg?style=for-the-badge&logo=astro&logoColor=white) 10 | 11 | ![TailwindCSS](https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge&logo=tailwind-css&logoColor=white) 12 | 13 | ![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white) 14 | 15 | 16 | ## Contribuidores 17 | 18 | 19 | 20 | 27 | 34 | 41 | 48 | 55 | 62 | 63 | 64 | 71 | 78 | 85 | 92 | 99 | 106 | 107 | 108 | 115 | 122 | 129 | 136 | 143 | 150 | 151 |
21 | 22 | Miguel 23 |
24 | Miguel Ángel Durán 25 |
26 |
28 | 29 | Luciano 30 |
31 | Luciano Fernández 32 |
33 |
35 | 36 | Andrea 37 |
38 | Andrea Llovera De Sousa 39 |
40 |
42 | 43 | Diego 44 |
45 | Diego Ronaldo Sanchez 46 |
47 |
49 | 50 | Melissa 51 |
52 | Melissa Iman Noriega 53 |
54 |
56 | 57 | Jordi 58 |
59 | Jordi Gómez Devesa 60 |
61 |
65 | 66 | Edu/ 67 |
68 | Edu 69 |
70 |
72 | 73 | DevMetal00/ 74 |
75 | DevMetal00 76 |
77 |
79 | 80 | alesdevux/ 81 |
82 | alesdevux 83 |
84 |
86 | 87 | DiegoT4l/ 88 |
89 | DiegoT4l 90 |
91 |
93 | 94 | Luis 95 |
96 | Luis Gustavo Sequeiros Condori 97 |
98 |
100 | 101 | Javi 102 |
103 | Javi Mata 104 |
105 |
109 | 110 | Izan 111 |
112 | Izan Sánchez Ginés 113 |
114 |
116 | 117 | Juan 118 |
119 | Juan Cuellar 120 |
121 |
123 | 124 | Anthony 125 |
126 | Anthony Moya Ochoa 127 |
128 |
130 | 131 | Miguel 132 |
133 | Miguel Vallina Samaniego 134 |
135 |
137 | 138 | Nunu/ 139 |
140 | Nunu 141 |
142 |
144 | 145 | Houston 146 |
147 | Houston (Bot) 148 |
149 |
152 | 153 | 154 | ## Correr Localmente 155 | 156 | Clona el proyecto 157 | 158 | ```bash 159 | git clone https://github.com/midudev/landing-infojobs.git 160 | ``` 161 | 162 | Dirigete al directorio del proyecto 163 | 164 | ```bash 165 | cd landing-infojobs 166 | ``` 167 | 168 | Instala las dependencias 169 | 170 | ```bash 171 | npm install 172 | ``` 173 | 174 | Inicia el servidor 175 | 176 | ```bash 177 | npm run start 178 | ``` 179 | 180 | 181 | ## Variables de entorno 182 | 183 | Para correr este proyecto, necesitarás agregar las siguientes variable de entorno `API_INFOJOBS_TOKEN` en tu archivo .env 184 | 185 | > [!NOTE] 186 | > Puedes conseguir el token en esta url [Developer Site InfoJobs](https://developer.infojobs.net/). 187 | > Debes loguearte con tu cuenta infojobs, y al crear una app, te darán tus credenciales. 188 | 189 | > [!WARNING] 190 | > Deshabilitado en este momento. 191 | 192 | ## Contribuciones 193 | 194 | Las contribuciones son siempre bienvenidas. 195 | 196 | Consulta `contributing.md` para saber cómo empezar. 197 | 198 | Por favor, respete el `código de conducta` de este proyecto. 199 | 200 | -------------------------------------------------------------------------------- /astro.config.mjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | import { defineConfig } from 'astro/config'; 3 | 4 | import tailwind from '@astrojs/tailwind'; 5 | 6 | // https://astro.build/config 7 | export default defineConfig({ 8 | build: { 9 | inlineStylesheets: 'always' 10 | }, 11 | integrations: [tailwind()] 12 | }); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "landing-jovenes-infojobs", 3 | "type": "module", 4 | "version": "0.0.1", 5 | "scripts": { 6 | "dev": "astro dev", 7 | "start": "astro dev", 8 | "build": "astro check && astro build", 9 | "preview": "astro preview", 10 | "astro": "astro" 11 | }, 12 | "dependencies": { 13 | "@astrojs/check": "0.9.4", 14 | "@astrojs/tailwind": "5.1.2", 15 | "astro": "4.16.13", 16 | "tailwindcss": "3.4.15", 17 | "typescript": "5.6.3" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /public/adevinta-logo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/adevinta-logo.webp -------------------------------------------------------------------------------- /public/bento-info/company-opinion.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/bento-info/company-opinion.webp -------------------------------------------------------------------------------- /public/bento-info/emergent-positions.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/bento-info/emergent-positions.webp -------------------------------------------------------------------------------- /public/bento-info/no-experience.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/bento-info/no-experience.webp -------------------------------------------------------------------------------- /public/bento-info/selection-process.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/bento-info/selection-process.webp -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/favicon.ico -------------------------------------------------------------------------------- /public/footer-app-store.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/footer-app-store.webp -------------------------------------------------------------------------------- /public/footer-google-play.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/footer-google-play.webp -------------------------------------------------------------------------------- /public/hero-pattern.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/hero-pattern.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/bell.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/bell.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/double-authenticity.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/double-authenticity.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/eyes.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/eyes.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/fire.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/fire.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/focus-on-your-skills.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/focus-on-your-skills.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/heart-on-fire.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/heart-on-fire.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/learning-ability.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/learning-ability.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/questions-and-answers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/questions-and-answers.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/register.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/register.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/search-ideal-offer.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/search-ideal-offer.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/show-enthusiasm.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/show-enthusiasm.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/sincerity-and-trust.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/sincerity-and-trust.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/style-your-cv.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/style-your-cv.webp -------------------------------------------------------------------------------- /public/img/bento-info-modal-cards/you-are-their-candidate.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/bento-info-modal-cards/you-are-their-candidate.webp -------------------------------------------------------------------------------- /public/img/cool-jobs/btravel.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/cool-jobs/btravel.webp -------------------------------------------------------------------------------- /public/img/cool-jobs/cool-jobs.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/cool-jobs/cool-jobs.webp -------------------------------------------------------------------------------- /public/img/cool-jobs/dominos.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/cool-jobs/dominos.webp -------------------------------------------------------------------------------- /public/img/cool-jobs/grefusa.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/cool-jobs/grefusa.webp -------------------------------------------------------------------------------- /public/img/cool-jobs/maxibon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/cool-jobs/maxibon.webp -------------------------------------------------------------------------------- /public/img/cool-jobs/pattern.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/cool-jobs/pattern.webp -------------------------------------------------------------------------------- /public/img/cool-jobs/port-aventura.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/cool-jobs/port-aventura.webp -------------------------------------------------------------------------------- /public/img/cool-jobs/visa.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/cool-jobs/visa.webp -------------------------------------------------------------------------------- /public/img/cool-jobs/wizink-center.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/cool-jobs/wizink-center.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/barcelona.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/barcelona.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bg2Img1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bg2Img1.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bg2Img2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bg2Img2.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bg2Img3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bg2Img3.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bg2Img4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bg2Img4.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bg2Img5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bg2Img5.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bg2Img6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bg2Img6.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bg2Img7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bg2Img7.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bgImg1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bgImg1.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bgImg2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bgImg2.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bgImg3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bgImg3.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bgImg4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bgImg4.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bgImg5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bgImg5.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bgImg6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bgImg6.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bgImg7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bgImg7.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/bilbao.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/bilbao.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/madrid.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/madrid.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/malaga.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/malaga.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/sevilla.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/sevilla.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/valencia.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/valencia.webp -------------------------------------------------------------------------------- /public/img/emergent-positions/zaragoza.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/emergent-positions/zaragoza.webp -------------------------------------------------------------------------------- /public/img/kings-league/background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/kings-league/background.webp -------------------------------------------------------------------------------- /public/img/kings-league/players.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/kings-league/players.webp -------------------------------------------------------------------------------- /public/img/pre-footer/info-tiktok.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/pre-footer/info-tiktok.webp -------------------------------------------------------------------------------- /public/img/pre-footer/oferta-empleo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/pre-footer/oferta-empleo.webp -------------------------------------------------------------------------------- /public/img/thumbnails/cristinini.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/thumbnails/cristinini.webp -------------------------------------------------------------------------------- /public/img/thumbnails/ibai.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/thumbnails/ibai.webp -------------------------------------------------------------------------------- /public/img/thumbnails/jijantes.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/thumbnails/jijantes.webp -------------------------------------------------------------------------------- /public/img/thumbnails/marcos.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/thumbnails/marcos.webp -------------------------------------------------------------------------------- /public/img/thumbnails/midudev.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/img/thumbnails/midudev.webp -------------------------------------------------------------------------------- /public/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /public/og.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/midudev/landing-infojobs/0d817eaf1bf27cca212d16da6096f65e3edece66/public/og.jpg -------------------------------------------------------------------------------- /src/components/AdevintaInfo.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const LINKS = [ 3 | { 4 | label: "JobisJob", 5 | href: "https://www.jobisjob.es/", 6 | }, 7 | { 8 | label: "Fotocasa", 9 | href: "https://www.fotocasa.es/es", 10 | }, 11 | { 12 | label: "habitaclia", 13 | href: "https://www.habitaclia.com/", 14 | }, 15 | { 16 | label: "Coches.net", 17 | href: "https://www.coches.net/", 18 | }, 19 | { 20 | label: "Motos.net", 21 | href: "https://motos.coches.net/", 22 | }, 23 | { 24 | label: "Milanuncios", 25 | href: "https://www.milanuncios.com/", 26 | }, 27 | ] 28 | --- 29 | 30 |
31 | 59 |
60 | -------------------------------------------------------------------------------- /src/components/BentoInfo.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import SectionContainer from "@components/SectionContainer.astro" 3 | import Subtitle from "@components/Subtitle.astro" 4 | 5 | const ARTICLES = [ 6 | { 7 | title: "Qué esperar de un proceso de selección", 8 | contentId: "selection-process", 9 | class: 10 | "bg-gradient-to-r from-[#fef6db] to-[#fce197] text-ij-yellow md:aspect-[16/8] md:col-span-2 md:row-span-1 h-full", 11 | image: "/bento-info/selection-process.webp", 12 | imageClass: 13 | "w-full h-auto object-contain object-bottom md:h-auto md:w-auto md:object-right md:max-h-none", 14 | action: "modal", 15 | track: "blog_selection_process", 16 | }, 17 | { 18 | title: "Los puestos emergentes que van a petarlo", 19 | contentId: "emergent-positions", 20 | class: 21 | "bg-gradient-to-r from-[#ffd2d2] to-[#f9b395] text-ij-red md:col-start-3 md:row-span-2 md:h-full", 22 | image: "/bento-info/emergent-positions.webp", 23 | imageClass: 24 | "w-full h-full object-cover object-[center_30%] md:object-center", 25 | action: "modal", 26 | track: "blog_emerging_jobs", 27 | }, 28 | { 29 | title: "Las opinión de las empresas", 30 | contentId: "company-opinion", 31 | class: "bg-sky-800 text-ij-blue md:h-row-span-1", 32 | image: "/bento-info/company-opinion.webp", 33 | imageClass: "w-full h-full object-cover", 34 | action: "link", 35 | link: "https://www.tiktok.com/@infojobs/video/7291016517217520928?_r=1&%3B_t=8oUBsz4let7", 36 | track: "blog_companies_opinions", 37 | }, 38 | { 39 | title: "¿Sin experiencia? Destaca en las entrevistas", 40 | contentId: "no-experience", 41 | class: 42 | "bg-gradient-to-r from-[#e6f6ee] to-[#8bcfad] text-ij-green md:h-row-span-1 md:h-full", 43 | image: "/bento-info/no-experience.webp", 44 | imageClass: "w-3/4 h-auto object-contain mb-4", 45 | action: "modal", 46 | track: "blog_interview_tips", 47 | }, 48 | ] 49 | --- 50 | 51 | 52 | Prepárate para ganar 53 |
54 | { 55 | ARTICLES.map( 56 | ({ 57 | class: className, 58 | title, 59 | contentId, 60 | image, 61 | imageClass, 62 | action, 63 | link, 64 | track, 65 | }) => 66 | action === "link" ? ( 67 | 76 |
82 | 90 |
91 |
92 | 93 | {title} 94 | 95 |
96 |
97 | ) : ( 98 | 138 | ) 139 | ) 140 | } 141 |
142 |
143 | 144 | 200 | -------------------------------------------------------------------------------- /src/components/CoolJobBackground.astro: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /src/components/CoolJobBrand.astro: -------------------------------------------------------------------------------- 1 | 11 |
12 | Logo Cool Jobs 17 |

20 | {"Ver todos >"} 21 |

22 |
23 |
24 | -------------------------------------------------------------------------------- /src/components/CoolJobCard.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const { image, brand, title, id } = Astro.props 3 | --- 4 | 5 | 10 |
13 |
16 |
17 | {brand} 18 |
19 |

20 | {title} 21 |

22 |
23 |
24 |
25 | -------------------------------------------------------------------------------- /src/components/CoolJobs.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import CoolJobCard from "@components/CoolJobCard.astro" 3 | import type { CoolJobs } from "@types" 4 | import CoolJobBackground from "@components/CoolJobBackground.astro" 5 | import CoolJobBrand from "@components/CoolJobBrand.astro" 6 | 7 | const coolJobs: CoolJobs[] = [ 8 | { 9 | image: "/img/cool-jobs/port-aventura.webp", 10 | title: "Probador de montañas rusas", 11 | brand: "Port Aventura World", 12 | section_id: "lp-pom-box-499", 13 | }, 14 | { 15 | image: "/img/cool-jobs/maxibon.webp", 16 | title: "Catadora de helados", 17 | brand: "Maxibon", 18 | section_id: "lp-pom-box-515", 19 | }, 20 | { 21 | image: "/img/cool-jobs/wizink-center.webp", 22 | title: "Probadora de conciertos", 23 | brand: "WiZink Center", 24 | section_id: "lp-pom-box-528", 25 | }, 26 | { 27 | image: "/img/cool-jobs/dominos.webp", 28 | title: "Catadora de pizzas", 29 | brand: "Domino's", 30 | section_id: "lp-pom-box-534", 31 | }, 32 | { 33 | image: "/img/cool-jobs/btravel.webp", 34 | title: "Probadora de viajes", 35 | brand: "B travel", 36 | section_id: "lp-pom-box-584", 37 | }, 38 | { 39 | image: "/img/cool-jobs/grefusa.webp", 40 | title: "Probadora de snacks", 41 | brand: "Grefusa", 42 | section_id: "lp-pom-box-522", 43 | }, 44 | { 45 | image: "/img/cool-jobs/visa.webp", 46 | title: "Probador de pagos con el móvil", 47 | brand: "Visa", 48 | section_id: "lp-pom-box-598", 49 | }, 50 | ] 51 | --- 52 | 53 |
54 |
57 | 58 | 59 |

62 | Los trabajos más cool 63 |

64 | 65 |
68 | { 69 | coolJobs.map(({ image, title, brand, section_id }) => ( 70 | 76 | )) 77 | } 78 | 79 |
81 | 82 | 83 |
84 |
85 | -------------------------------------------------------------------------------- /src/components/EmergentPositions.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import InfographicBody from "./InfographicBody.astro"; 3 | import InfographicHeader from "./InfographicHeader.astro"; 4 | 5 | const standsInterviewsBig = [ 6 | { 7 | title: "Inteligencia Artificial", 8 | description: "Ingeniero/a de Machine Learning", 9 | requirements: [ 10 | { 11 | label: "📖 Estudios", 12 | tag: ["Ciencia Computacional", "Matemáticas", "Estadística"], 13 | }, 14 | { 15 | label: "📝 Condiciones", 16 | tag: ["Contrato indefinido", "Salario de 35k-58k €/año"], 17 | }, 18 | { 19 | label: "🦾 Hard Skills", 20 | tag: ["Python", "R", "TensorFlow", "PyTorch"], 21 | }, 22 | { 23 | label: "👋 Soft Skills", 24 | tag: ["Pensamiento critico", "Trabajo en equipo", "Analisis"], 25 | }, 26 | ], 27 | location: [ 28 | { 29 | label: "📍 Dónde", 30 | tag1: "Madrid", 31 | tag2: "Barcelona", 32 | }, 33 | ], 34 | image1: 35 | "bg-[url(/img/emergent-positions/madrid.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center ", 36 | image2: 37 | "bg-[url(/img/emergent-positions/barcelona.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center", 38 | backgroundColor: 39 | "bg-[url(/img/emergent-positions/bg2Img1.webp)] text-[#3C49F0] md:bg-cover md:bg-[url(/img/emergent-positions/bgImg1.webp)] ", 40 | backgroundColor2: "bg-[#CCCCFA]", 41 | backgroundColor3: "bg-[#9B9DF6]", 42 | }, 43 | { 44 | title: "Data/Analytics", 45 | description: "Data Engineer", 46 | requirements: [ 47 | { 48 | label: "📖 Estudios", 49 | tag: ["Ingeniería informática", "Telecomunicaciones"], 50 | }, 51 | { 52 | label: "📝 Condiciones", 53 | tag: ["Contrato indefinido", "Salario de 33k-60k €/año"], 54 | }, 55 | { 56 | label: "🦾 Hard Skills", 57 | tag: ["SQL", "Python", "Big Data", "Spark"], 58 | }, 59 | { 60 | label: "👋 Soft Skills", 61 | tag: ["Resolución de problemas", "Adaptación al cambio"], 62 | }, 63 | ], 64 | location: [ 65 | { 66 | label: "📍 Dónde", 67 | tag1: "Barcelona", 68 | tag2: "Valencia", 69 | }, 70 | ], 71 | image1: 72 | "bg-[url(/img/emergent-positions/barcelona.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center", 73 | image2: 74 | "bg-[url(/img/emergent-positions/valencia.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center", 75 | backgroundColor: 76 | " text-[#008949] bg-[url(/img/emergent-positions/bg2Img2.webp)] md:bg-cover md:bg-[url(/img/emergent-positions/bgImg2.webp)] ", 77 | backgroundColor2: "bg-[#B4E5CD]", 78 | backgroundColor3: "bg-[#3EB87E]", 79 | }, 80 | { 81 | title: " Building Information Modeling (BIM)", 82 | description: "Arquitecto/a BIM", 83 | requirements: [ 84 | { 85 | label: "📖 Estudios", 86 | tag: ["Arquitectura", "Ingeneiría de Edificación"], 87 | }, 88 | { 89 | label: "📝 Condiciones", 90 | tag: ["Contrato indefinido", "Salario de 30k-50k €/año"], 91 | }, 92 | { 93 | label: "🦾 Hard Skills", 94 | tag: ["Revit", "AutoCAD", "Gestión de proyectos"], 95 | }, 96 | { 97 | label: "👋 Soft Skills", 98 | tag: ["Comunicación", "Liderazgo", "Autogestión"], 99 | }, 100 | ], 101 | location: [ 102 | { 103 | label: "📍 Dónde", 104 | tag1: "Barcelona", 105 | tag2: "Sevilla", 106 | }, 107 | ], 108 | image1: 109 | "bg-[url(/img/emergent-positions/barcelona.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center", 110 | image2: 111 | "bg-[url(/img/emergent-positions/sevilla.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center", 112 | backgroundColor: 113 | " text-[#D1A22E] bg-[url(/img/emergent-positions/bg2Img3.webp)] md:bg-cover md:bg-[url(/img/emergent-positions/bgImg3.webp)]", 114 | backgroundColor2: "bg-[#FDECBE]", 115 | backgroundColor3: "bg-[#F7CE5B] text-xs md:text-[0.7rem]", 116 | }, 117 | { 118 | title: " Ciberseguridad / Cloud", 119 | description: "Cloud Security Engineer", 120 | requirements: [ 121 | { 122 | label: "📖 Estudios", 123 | tag: ["Informática", "Ingeneiría en telecomunicaciones"], 124 | }, 125 | { 126 | label: "📝 Condiciones", 127 | tag: ["Contrato indefinido", "Salario de 40k-60k €/año"], 128 | }, 129 | { 130 | label: "🦾 Hard Skills", 131 | tag: ["AWS", "Azure", "Seguridad en la nube"], 132 | }, 133 | { 134 | label: "👋 Soft Skills", 135 | tag: ["Atención al detalle", "Pensamiento analítico"], 136 | }, 137 | ], 138 | location: [ 139 | { 140 | label: "📍 Dónde", 141 | tag1: "Madrid", 142 | tag2: "Málaga", 143 | }, 144 | ], 145 | image1: 146 | "bg-[url(/img/emergent-positions/madrid.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center", 147 | image2: 148 | "bg-[url(/img/emergent-positions/malaga.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center", 149 | backgroundColor: 150 | "bg-[url(/img/emergent-positions/bg2Img4.webp)] md:bg-cover md:bg-[url(/img/emergent-positions/bgImg4.webp)] text-[#006895]", 151 | backgroundColor2: "bg-[#C4DFEB]", 152 | backgroundColor3: "bg-[#7BB6D3] text-xs", 153 | }, 154 | { 155 | title: "Quality Assurance (QA)", 156 | description: "QA Automation Engineer", 157 | requirements: [ 158 | { 159 | label: "📖 Estudios", 160 | tag: ["Ingeneiría Técnica o Superior "], 161 | }, 162 | { 163 | label: "📝 Condiciones", 164 | tag: ["Contrato indefinido", "Salario de 30k-50k €/año"], 165 | }, 166 | { 167 | label: "🦾 Hard Skills", 168 | tag: ["Selenium", "Jenkins", "Python"], 169 | }, 170 | { 171 | label: "👋 Soft Skills", 172 | tag: ["Proactividad", "Resolución de problemas"], 173 | }, 174 | ], 175 | location: [ 176 | { 177 | label: "📍 Dónde", 178 | tag1: "Madrid", 179 | tag2: "Bilbao", 180 | }, 181 | ], 182 | image1: 183 | "bg-[url(/img/emergent-positions/madrid.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center", 184 | image2: 185 | "bg-[url(/img/emergent-positions/bilbao.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center", 186 | backgroundColor: 187 | "bg-[url(/img/emergent-positions/bg2Img5.webp)] md:bg-cover md:bg-[url(/img/emergent-positions/bgImg5.webp)] text-[#DF4D3A]", 188 | backgroundColor2: "bg-[#FAC7C8]", 189 | backgroundColor3: "bg-[#F1696E] text-xs", 190 | }, 191 | { 192 | title: "Eficiencia Energética", 193 | description: "Ingeniero/a de Eficiencia Energética", 194 | requirements: [ 195 | { 196 | label: "📖 Estudios", 197 | tag: ["Ingeniero/a de Eficiencia Energética"], 198 | }, 199 | { 200 | label: "📝 Condiciones", 201 | tag: ["Contrato indefinido", "Salario de 30k-50k €/año"], 202 | }, 203 | { 204 | label: "🦾 Hard Skills", 205 | tag: ["Presto", "DIALux", "Análisis de costes"], 206 | }, 207 | { 208 | label: "👋 Soft Skills", 209 | tag: ["Organización", "Planificación"], 210 | }, 211 | ], 212 | location: [ 213 | { 214 | label: "📍 Dónde", 215 | tag1: "Valencia", 216 | tag2: "Zaragoza", 217 | }, 218 | ], 219 | image1: 220 | "bg-[url(/img/emergent-positions/valencia.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center", 221 | image2: 222 | "bg-[url(/img/emergent-positions/zaragoza.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center", 223 | backgroundColor: 224 | "bg-[url(/img/emergent-positions/bg2Img6.webp)] md:bg-cover md:bg-[url(/img/emergent-positions/bgImg6.webp)] text-[#009B4E] ", 225 | backgroundColor2: "bg-[#B4E5CD]", 226 | backgroundColor3: "bg-[#008949] md:text-[0.6rem]", 227 | }, 228 | { 229 | title: "Vocación social", 230 | description: "Psicólogo/a", 231 | requirements: [ 232 | { 233 | label: "📖 Estudios", 234 | tag: ["Psicología", "Trabajo Social"], 235 | }, 236 | { 237 | label: "📝 Condiciones", 238 | tag: ["Contrato indefinido", "Salario de 12k-24k €/año"], 239 | }, 240 | { 241 | label: "🦾 Hard Skills", 242 | tag: ["Intervención psicológica", "Programas sociales"], 243 | }, 244 | { 245 | label: "👋 Soft Skills", 246 | tag: ["Empatía", "Paciencia", "Comunicación asertiva"], 247 | }, 248 | ], 249 | location: [ 250 | { 251 | label: "📍 Dónde", 252 | tag1: "Madrid", 253 | tag2: "Valencia", 254 | }, 255 | ], 256 | image1: 257 | "bg-[url(/img/emergent-positions/madrid.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center", 258 | image2: 259 | "bg-[url(/img/emergent-positions/valencia.webp)] w-[31.25rem] md:h-[11rem] h-[7rem] bg-cover bg-center", 260 | backgroundColor: 261 | "bg-[url(/img/emergent-positions/bg2Img7.webp)] md:bg-cover md:bg-[url(/img/emergent-positions/bgImg7.webp)] text-[#006895]", 262 | backgroundColor2: "bg-[#C4DFEB]", 263 | backgroundColor3: "bg-[#7BB6D3] md:text-[0.6rem]", 264 | }, 265 | // Agrega más objetos según sea necesario 266 | ]; 267 | 268 | const { infographicId } = Astro.props; 269 | --- 270 | 271 | 283 | -------------------------------------------------------------------------------- /src/components/FollowUs.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import FollowUsLink from "@components/FollowUsLink.astro"; 3 | import Icon from "./ui/Icon.astro"; 4 | 5 | const hoverSocialNetworks = "md:transition-transform md:hover:scale-110"; 6 | const hoverStoreApps = "md:transition-opacity md:duration-150 md:ease-in-out md:hover:opacity-90"; 7 | --- 8 | 9 | 10 |
11 |
14 |

15 | ¡Síguenos! 16 |

17 | 18 | 19 | 24 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 40 | 41 | 42 | 43 | 48 | 49 | 50 | 51 |
52 | 53 |
56 | 61 | 62 | 63 | 64 | 69 | 70 | 71 |
72 |
73 | -------------------------------------------------------------------------------- /src/components/FollowUsLink.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const { href, socialPlatform } = Astro.props; 3 | --- 4 | 5 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/components/Footer.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import LinksColumns from "@components/LinksColumns.astro" 3 | import FollowUs from "@components/FollowUs.astro" 4 | import AdevintaInfo from "@components/AdevintaInfo.astro" 5 | --- 6 | 7 |
8 |
9 | 10 | 11 | 12 |
13 |
14 | -------------------------------------------------------------------------------- /src/components/Header.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Button from "./ui/Button.astro" 3 | --- 4 | 5 | -------------------------------------------------------------------------------- /src/components/HeroSearch.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import SearchIcon from "@icons/Search.astro" 3 | import { getStudies } from "@lib/get-ij-studies" 4 | import SectionContainer from "@components/SectionContainer.astro" 5 | import Button from "@ui/Button.astro" 6 | import ChevronDown from "@icons/ChevronDown.astro" 7 | 8 | const SHORTCUTS = [ 9 | { 10 | label: "🌱 Sin experiencia", 11 | href: "https://www.infojobs.net/jobsearch/search-results/list.xhtml?keyword=&segmentId=&page=1&sortBy=PUBLICATION_DATE&onlyForeignCountry=false&countryIds=17&sinceDate=ANY&experienceMin=_0_YEARS&experienceMax=_0_YEARS", 12 | track: "explore_no_experience", 13 | }, 14 | { 15 | label: "🗓️ Findes", 16 | href: "https://www.infojobs.net/ofertas-trabajo/fines-de-semana", 17 | track: "explore_weekend_jobs", 18 | }, 19 | { 20 | label: "🕒 Media jornada", 21 | href: "https://www.infojobs.net/ofertas-trabajo/media-jornada", 22 | track: "explore_part_time", 23 | }, 24 | { 25 | label: "💼 Prácticas", 26 | href: "https://www.infojobs.net/ofertas-trabajo/practicas", 27 | track: "explore_internships", 28 | }, 29 | ] as const 30 | 31 | const studies = await getStudies() 32 | const sortedStudies = studies.sort((a, b) => a.order - b.order) 33 | --- 34 | 35 | 36 |
39 |

42 | Tu carrera empieza aquí 43 |

44 | 45 |

48 | Conecta tus estudios con el empleo ideal 49 |

50 | 51 | 52 |
56 | 101 | 102 |
103 | 114 | 115 |
    122 |
123 |
124 | 125 |
126 | 131 |
132 | 145 |
146 |
147 | 148 |
149 |

Explora trabajos que se adaptan a ti

150 |
153 | { 154 | SHORTCUTS.map(({ label, href, track }) => ( 155 | 168 | )) 169 | } 170 |
171 |
172 |
173 |
174 | 175 | 187 | 188 | 211 | 212 | 356 | 357 | 370 | 371 | 381 | 382 | 516 | -------------------------------------------------------------------------------- /src/components/InfographicBody.astro: -------------------------------------------------------------------------------- 1 | --- 2 | type Props = { 3 | bentoInfoModalCards?: readonly BentoInfoModalCard[]; // Ahora es opcional 4 | bentoInfoModalCardsBig?: BentoInfoModalCardBig[]; 5 | }; 6 | 7 | type BentoInfoModalCard = { 8 | image: string; 9 | title: string; 10 | description: string; 11 | firstBgColor: string; 12 | secondBgColor: string; 13 | textColor: string; 14 | }; 15 | 16 | type BentoInfoModalCardBig = { 17 | title: string; 18 | description: string; 19 | requirements: { label: string; tag: string[] }[]; 20 | location: { label: string; tag1: string; tag2: string }[]; 21 | image1: string; 22 | image2: string; 23 | backgroundColor: string; 24 | backgroundColor2: string; 25 | backgroundColor3: string; 26 | }; 27 | 28 | const { bentoInfoModalCards = [], bentoInfoModalCardsBig = [] } = 29 | Astro.props as Props; 30 | --- 31 | 32 |
35 | { 36 | bentoInfoModalCards.map( 37 | ({ 38 | image, 39 | title, 40 | description, 41 | firstBgColor, 42 | secondBgColor, 43 | textColor, 44 | }) => ( 45 |
51 |
52 | {`${title} 57 | 58 |
59 |

63 | {title} 64 |

65 | 66 |

70 | {description} 71 |

72 |
73 |
74 |
75 | ) 76 | ) 77 | } 78 |
79 | 80 |
81 | { 82 | bentoInfoModalCardsBig.map((card) => ( 83 |
87 |
90 | {card.title} 91 |
92 |

93 | {card.description} 94 |

95 | 96 |
97 | {card.requirements.map((requirement) => ( 98 |
101 |
102 | {requirement.label} 103 |
104 |
105 | {requirement.tag.map((tag) => ( 106 | 107 | {tag} 108 | 109 | ))} 110 |
111 |
112 | ))} 113 |
114 | 115 |
116 | {card.location.map((location) => ( 117 |
120 |
121 | {location.label} 122 |
123 |
124 |
127 | 128 | {location.tag1} 129 | 130 |
131 |
134 | 135 | {location.tag2} 136 | 137 |
138 |
139 |
140 | ))} 141 |
142 |
143 | )) 144 | } 145 |
146 | 147 | 167 | -------------------------------------------------------------------------------- /src/components/InfographicHeader.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const { badgeText, title, subtitle } = Astro.props 3 | --- 4 | 5 |
6 | 9 | {badgeText} 10 | 11 | 12 |
13 |

16 | {title} 17 |

18 | 19 |

{subtitle}

20 |
21 |
22 | -------------------------------------------------------------------------------- /src/components/InfographicModal.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import CloseIcon from "@icons/CloseIcon.astro"; 3 | --- 4 | 5 | 23 | 24 | 30 | -------------------------------------------------------------------------------- /src/components/InfographicTips.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const TIPS = [ 3 | { 4 | title: "Favoritos", 5 | description: "Marca como favoritas las empresas que te molen", 6 | image: "/img/bento-info-modal-cards/heart-on-fire.webp", 7 | firstBgColor: "#FFB3B6", 8 | secondBgColor: "#FCD3D3", 9 | titleColor: "#EA2E39", 10 | descriptionColor: "#F1696E", 11 | }, 12 | { 13 | title: "Notificaciones", 14 | description: "¡Recibirás un aviso cuando publiquen una oferta!", 15 | image: "/img/bento-info-modal-cards/bell.webp", 16 | firstBgColor: "#FFB3B6", 17 | secondBgColor: "#FCD3D3", 18 | titleColor: "#EA2E39", 19 | descriptionColor: "#F1696E", 20 | }, 21 | { 22 | title: "Revisa tu CV", 23 | description: 24 | "Y tómate tu tiempo para contestar bien a las preguntas que hacen ", 25 | image: "/img/bento-info-modal-cards/eyes.webp", 26 | firstBgColor: "#FFB3B6", 27 | secondBgColor: "#FCD3D3", 28 | titleColor: "#EA2E39", 29 | descriptionColor: "#F1696E", 30 | }, 31 | ] as const; 32 | --- 33 | 34 |
35 | Icono de fuego 40 | 41 |
42 |

45 | Trucos para petarlo 46 |

47 |
50 | { 51 | TIPS.map( 52 | ({ 53 | image, 54 | title, 55 | description, 56 | firstBgColor, 57 | secondBgColor, 58 | titleColor, 59 | descriptionColor, 60 | }) => ( 61 |
67 | {`${title} 72 |

76 | {title} 77 |

78 |

82 | {description} 83 |

84 |
85 | ), 86 | ) 87 | } 88 |
89 |
90 |
91 | 92 | 103 | -------------------------------------------------------------------------------- /src/components/KingsLeagueInfo.astro: -------------------------------------------------------------------------------- 1 | 32 | -------------------------------------------------------------------------------- /src/components/LinksColumns.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const linksInfo = [ 3 | { 4 | title: "Nosotros", 5 | links: [ 6 | { 7 | label: "Ayuda", 8 | href: "https://ayuda.infojobs.net/hc/es", 9 | showOnMobile: true, 10 | }, 11 | { 12 | label: "Seguridad", 13 | href: "https://nosotros.infojobs.net/infojobs-seguridad", 14 | }, 15 | { 16 | label: "Condiciones legales", 17 | href: "https://www.infojobs.net/lex.xhtml", 18 | showOnMobile: true, 19 | }, 20 | { 21 | label: "Política de privacidad", 22 | href: "https://www.infojobs.net/privacy-policy/extended.xhtml", 23 | }, 24 | 25 | { 26 | label: "Uso del servicio", 27 | href: "https://www.infojobs.net/rules-and-services.xhtml", 28 | }, 29 | { 30 | label: "Política de cookies", 31 | href: "https://www.infojobs.net/lex.xhtml#cookies-policy", 32 | }, 33 | { 34 | label: "Gestión de cookies", 35 | href: "https://www.figma.com/exit?url=javascript%3Avoid(null)%3B", 36 | }, 37 | ], 38 | }, 39 | { 40 | title: "Sobre InfoJobs", 41 | links: [ 42 | { 43 | label: "InfoJobs hoy", 44 | href: "https://nosotros.infojobs.net/", 45 | }, 46 | { 47 | label: "Trabaja con nosotros", 48 | href: "https://www.infojobs.net/candidate/candidate-login/candidate-login.xhtml?error=caducado&dgv=8615867714346349222", 49 | }, 50 | { 51 | label: "Ofertas de empleo", 52 | href: "https://www.infojobs.net/ofertas-empleo", 53 | }, 54 | ], 55 | }, 56 | { 57 | title: "+ InfoJobs", 58 | links: [ 59 | { 60 | label: "InfoJobs Awards", 61 | href: "https://awards.infojobs.net/", 62 | }, 63 | { 64 | label: "InfoJobs Academy", 65 | href: "https://infojobsacademy.com/", 66 | }, 67 | { 68 | label: "Orientación laboral", 69 | href: "https://orientacion-laboral.infojobs.net/", 70 | }, 71 | { 72 | label: "InfoJobs Formación", 73 | href: "https://formacion.infojobs.net/", 74 | }, 75 | { 76 | label: "Blog empresas", 77 | href: "https://recursos-humanos.infojobs.net/", 78 | }, 79 | { 80 | label: "Offerte di lavoro in Italia", 81 | href: "https://www.infojobs.it/", 82 | }, 83 | ], 84 | }, 85 | { 86 | title: "Prensa", 87 | links: [ 88 | { 89 | label: "Indicadores de InfoJobs", 90 | href: "https://nosotros.infojobs.net/indicadores-infojobs", 91 | }, 92 | { 93 | label: "Notas de prensa", 94 | href: "https://nosotros.infojobs.net/prensa/notas-prensa", 95 | }, 96 | { 97 | label: "Contacto de prensa", 98 | href: "https://nosotros.infojobs.net/contacto-prensa/contacto-de-prensa", 99 | }, 100 | ], 101 | }, 102 | ] 103 | --- 104 | 105 |
108 | { 109 | linksInfo.map(({ title, links }, index) => { 110 | return ( 111 |
112 | 115 | 116 |
    117 | {links.map(({ label, href, showOnMobile }) => { 118 | return ( 119 |
  • 125 | 126 | {label} 127 | 128 |
  • 129 | ) 130 | })} 131 |
132 |
133 | ) 134 | }) 135 | } 136 |
137 | -------------------------------------------------------------------------------- /src/components/LiteYoutube.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Icon from "./ui/Icon.astro" 3 | 4 | interface Props { 5 | videoId: string 6 | title?: string 7 | } 8 | 9 | const { videoId, title } = Astro.props 10 | --- 11 | 12 | 18 | 25 | {title} 26 | 27 | 28 | 29 | 30 | 291 | 292 | -------------------------------------------------------------------------------- /src/components/OportunidadesTikTok.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const cardsOportunidades = [ 3 | { 4 | title1: "Oferta de empleo", 5 | title2: "Miles de oportunidades", 6 | img: "./img/pre-footer/oferta-empleo.webp", 7 | gradient: "bg-gradient-to-t from-[#8BCFAD] to-[#E6F6EE]", 8 | colorTitle: "text-[#0E8247]", 9 | imageClass: "p-4 sm:p-8 md:p-4 lg:p-8 !pb-0", 10 | href: "https://www.infojobs.net/", 11 | track: "job_offers", 12 | }, 13 | { 14 | title1: "InfoJobs en TikTok", 15 | title2: "Consejos para encontrar trabajo", 16 | img: "./img/pre-footer/info-tiktok.webp", 17 | gradient: "bg-gradient-to-t from-[#FFE4A2] to-[#FEF6DB]", 18 | colorTitle: "text-[#EFA500]", 19 | imageClass: "", 20 | href: "https://www.tiktok.com/@infojobs/playlist/Encontrar%20trabajo-7401023016819378977 ", 21 | track: "tik_tok", 22 | }, 23 | ] as const 24 | --- 25 | 26 |
27 | { 28 | cardsOportunidades.map((card) => ( 29 | 35 |

{card.title1}

36 |

37 | {card.title2} 38 |

39 | 40 |
41 | InfoJobs 47 |
48 |
49 | )) 50 | } 51 |
52 | -------------------------------------------------------------------------------- /src/components/PreFooter.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import KingsLeagueInfo from "@components/KingsLeagueInfo.astro" 3 | import SectionContainer from "@components/SectionContainer.astro" 4 | import OportunidadesTikTok from "@components/OportunidadesTikTok.astro" 5 | import Subtitle from "@components/Subtitle.astro" 6 | --- 7 | 8 | 9 | InfoJobs, ¿la de trabajar te la sabes? 10 |
11 | 12 | 13 |
14 |
15 | -------------------------------------------------------------------------------- /src/components/SectionContainer.astro: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
6 | -------------------------------------------------------------------------------- /src/components/SocialBest.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import SectionContainer from "./SectionContainer.astro" 3 | import TiktokVideo from "./TiktokVideo.astro" 4 | import Icon from "./ui/Icon.astro" 5 | import Subtitle from "./Subtitle.astro" 6 | 7 | const VIDEOS = [ 8 | { 9 | videoId: "7222709244125007109", 10 | thumbnailUrl: "/img/thumbnails/ibai.webp", 11 | title: "La relación de Ibai con Marcos", 12 | }, 13 | { 14 | videoId: "7258016065563807003", 15 | thumbnailUrl: "/img/thumbnails/jijantes.webp", 16 | title: "Fichaje del nuevo reportero de Jijantes", 17 | }, 18 | { 19 | videoId: "7343332399662533920", 20 | thumbnailUrl: "/img/thumbnails/midudev.webp", 21 | title: "Fichajes de la web de La Velada junto a Midudev", 22 | }, 23 | { 24 | videoId: "7265231719068880160", 25 | thumbnailUrl: "/img/thumbnails/cristinini.webp", 26 | title: "Ganadora de la Beca Infojobs Cristinini", 27 | }, 28 | { 29 | videoId: "7285448407756393761", 30 | thumbnailUrl: "/img/thumbnails/marcos.webp", 31 | title: "Entrevista a Marcos de Olañeta", 32 | }, 33 | ] as const 34 | --- 35 | 36 | 37 |
38 | Trabaja con los mejores 39 | 40 | 57 |
58 | 59 | 79 |
80 | 81 | 129 | 130 | 190 | -------------------------------------------------------------------------------- /src/components/StandsInterviews.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import InfographicBody from "./InfographicBody.astro" 3 | import InfographicHeader from "./InfographicHeader.astro" 4 | 5 | const standsInterviews = [ 6 | { 7 | image: "/img/bento-info-modal-cards/sincerity-and-trust.webp", 8 | title: "Sinceridad y confianza", 9 | description: 10 | "¡Si te han llamado será por algo! Demuestra que lo que te falta de experiencia, te sobra de aptitud.", 11 | firstBgColor: "#B4E5CD", 12 | secondBgColor: "#E1F4EB", 13 | textColor: "#008949", 14 | }, 15 | { 16 | image: "/img/bento-info-modal-cards/show-enthusiasm.webp", 17 | title: "Demuestra entusiasmo", 18 | description: 19 | "Infórmate sobre la empresa y el puesto para explicar al entrevistador/a tu interés.", 20 | firstBgColor: "#FDECBE", 21 | secondBgColor: "#FFF7E4", 22 | textColor: "#B08B2B", 23 | }, 24 | { 25 | image: "/img/bento-info-modal-cards/focus-on-your-skills.webp", 26 | title: "Céntrate en tus habilidades", 27 | description: 28 | "Muestra iniciativa y remarca tus conocimientos: tecnologías, herramientas digitales, idiomas o deportes", 29 | firstBgColor: "#FFBFB5", 30 | secondBgColor: "#FBE9E7", 31 | textColor: "#FF523C", 32 | }, 33 | { 34 | image: "/img/bento-info-modal-cards/learning-ability.webp", 35 | title: "Capacidad de aprendizaje", 36 | description: 37 | "Si no tienes experiencia laboral, muestra tus ganas por seguir formándote, dentro y fuera de la compañía.", 38 | firstBgColor: "#64C6F6", 39 | secondBgColor: "#D2EEFA", 40 | textColor: "#085C81", 41 | }, 42 | { 43 | image: "/img/bento-info-modal-cards/questions-and-answers.webp", 44 | title: "Practica preguntas y respuestas", 45 | description: 46 | "Prepárate posibles respuestas y preguntas sobre la compañía y tu rol, ¡así verán que vas a por todas!", 47 | firstBgColor: "#88DBFF", 48 | secondBgColor: "#E1F8FF", 49 | textColor: "#0073AA", 50 | }, 51 | { 52 | image: "/img/bento-info-modal-cards/double-authenticity.webp", 53 | title: "La autenticidad puntúa doble", 54 | description: 55 | "Mira a los ojos, exprésate con las manos, tú tienes el control de la situación. ¡Y sonríe de forma natural!", 56 | firstBgColor: "#FFBEBF", 57 | secondBgColor: "#FBE9E7", 58 | textColor: "#DF4D3A", 59 | }, 60 | ] as const 61 | 62 | const { infographicId } = Astro.props 63 | --- 64 | 65 | 77 | 78 | -------------------------------------------------------------------------------- /src/components/Subtitle.astro: -------------------------------------------------------------------------------- 1 |

2 | 3 |

-------------------------------------------------------------------------------- /src/components/TiktokVideo.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Icon from "./ui/Icon.astro" 3 | 4 | interface Props { 5 | videoId: string 6 | thumbnailUrl: string 7 | title: string 8 | } 9 | 10 | const { videoId, thumbnailUrl, title } = Astro.props 11 | --- 12 | 13 | 23 |
28 | 29 |
30 |
31 | 32 | 99 | -------------------------------------------------------------------------------- /src/components/YourNextJob.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import InfographicBody from "./InfographicBody.astro" 3 | import InfographicHeader from "./InfographicHeader.astro" 4 | import InfographicTips from "./InfographicTips.astro" 5 | 6 | const yourNextJobContent = [ 7 | { 8 | image: "/img/bento-info-modal-cards/style-your-cv.webp", 9 | title: "Pon guapo tu CV", 10 | description: "Actualízalo, sube una foto profesional ¡y rellena tus habilidades/skills! (sobre todo si te falta experiencia).", 11 | firstBgColor: "#FDECBE", 12 | secondBgColor: "#FFF7E4", 13 | textColor: "#B08B2B", 14 | 15 | }, 16 | { 17 | image: "/img/bento-info-modal-cards/search-ideal-offer.webp", 18 | title: "Busca tu oferta ideal", 19 | description: "Utiliza las recomendaciones que te ofrece InfoJobs o busca a tu medida según el sector que más te interesa.", 20 | firstBgColor: "#B4E5CD", 21 | secondBgColor: "#E1F4EB", 22 | textColor: "#008949", 23 | }, 24 | { 25 | image: "/img/bento-info-modal-cards/register.webp", 26 | title: "¡Inscríbete!", 27 | description: "Lee bien la oferta, ajusta tu CV y adjúntalo. Y no olvides añadir una carta de presentación personalizada a la oferta. ¡Todo suma!", 28 | firstBgColor: "#BADAE8", 29 | secondBgColor: "#E3EFF5", 30 | textColor: "#006895", 31 | }, 32 | { 33 | image: "/img/bento-info-modal-cards/you-are-their-candidate.webp", 34 | title: "Ya eres su candidato/a", 35 | description: "Toca esperar y cruzar los dedos, pero valora inscribirte en otras ofertas que también te interesen", 36 | firstBgColor: "#FFD1C8", 37 | secondBgColor: "#FBE9E7", 38 | textColor: "#FF523C", 39 | } 40 | ] as const 41 | const { infographicId } = Astro.props 42 | --- 43 | 44 | 57 | -------------------------------------------------------------------------------- /src/components/ui/Button.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Icon from "@ui/Icon.astro" 3 | 4 | interface ButtonProps { 5 | variant?: "solid" | "bordered" | "light" | "ghost" | "flat" 6 | color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" 7 | size?: "default" | "sm" | "lg" | "full" | "icon" 8 | radius?: "none" | "lg" | "xl" | "xxl" | "full" | string 9 | class?: string 10 | type?: "button" | "submit" | "reset" 11 | href?: string 12 | as?: "button" | "link" 13 | role?: "button" | "link" 14 | disabled?: boolean 15 | icon?: string 16 | iconPosition?: "left" | "right" 17 | block?: boolean 18 | iconOnly?: boolean 19 | loading?: boolean 20 | ariaLabel?: string 21 | track?: string 22 | disableSaturateHover?: boolean 23 | } 24 | 25 | // Estilos por variante 26 | const solid = { 27 | default: "bg-neutral-300 text-neutral-900", 28 | primary: "bg-primary text-white", 29 | secondary: "bg-accent text-white", 30 | success: "bg-ij-green text-white", 31 | warning: "bg-ij-yellow text-white", 32 | danger: "bg-red-500 text-white", 33 | foreground: "bg-black text-white", 34 | } 35 | 36 | const bordered = { 37 | default: "border-2 border-neutral-300 text-neutral-900", 38 | primary: "border-2 border-primary text-primary", 39 | secondary: "border-2 border-gray-500 text-gray-500", 40 | success: "border-2 border-ij-green text-ij-green", 41 | warning: "border-2 border-ij-yellow text-yellow-500", 42 | danger: "border-2 border-red-500 text-red-500", 43 | foreground: "border-2 border-black text-black", 44 | } 45 | 46 | const light = { 47 | default: "border-transparent text-black hover:bg-neutral-300", 48 | primary: "border-transparent text-primary hover:bg-primary/20", 49 | secondary: "border-transparent text-accent hover:bg-accent/20", 50 | success: "border-transparent text-ij-green hover:bg-ij-green/20", 51 | warning: "border-transparent text-ij-yellow hover:bg-ij-yellow/20", 52 | danger: "border-transparent text-red-500 hover:bg-ij-red/20", 53 | foreground: "border-transparent text-black hover:bg-black/20", 54 | } 55 | 56 | const ghost = { 57 | default: "border-2 border-neutral-300 text-neutral-900 hover:bg-neutral-300", 58 | primary: 59 | "border-2 border-primary text-primary hover:bg-primary hover:text-white", 60 | secondary: "border-2 border-gray-500 text-gray-500 hover:bg-accent", 61 | success: 62 | "border-2 border-ij-green text-ij-green hover:bg-ij-green hover:text-white", 63 | warning: 64 | "border-2 border-ij-yellow text-ij-yellow hover:bg-ij-yellow hover:text-white", 65 | danger: "border-2 border-ij-red text-ij-red hover:bg-ij-red hover:text-white", 66 | foreground: 67 | "border-2 border-black text-black hover:bg-black hover:text-white", 68 | } 69 | 70 | const flat = { 71 | default: "bg-neutral-300/40 text-neutral-900", 72 | primary: "bg-primary/20 text-primary", 73 | secondary: "bg-accent/20 text-accent", 74 | success: "bg-ij-green/20 text-ij-green", 75 | warning: "bg-ij-yellow/20 text-ij-yellow", 76 | danger: "bg-ij-red/20 text-ij-red", 77 | foreground: "bg-black/20 text-black", 78 | } 79 | 80 | const variants = { 81 | solid, 82 | bordered, 83 | light, 84 | ghost, 85 | flat, 86 | } 87 | 88 | // Función para obtener clases por variante y color 89 | function getVariantClasses( 90 | variant: keyof typeof variants, 91 | color: keyof typeof solid 92 | ) { 93 | const variantGroup = variants[variant] || variants.solid // fallback a 'solid' 94 | return variantGroup[color] ?? variantGroup.default 95 | } 96 | // Clases por tamaño 97 | const sizeClasses = { 98 | default: "px-4 py-2 text-lg gap-x-2 font-medium", 99 | sm: "px-3 min-w-16 h-8 text-sm gap-x-2", 100 | md: "px-4 min-w-20 h-10 text-base gap-x-2", 101 | lg: "px-6 min-w-24 h-12 text-lg gap-3 font-medium", 102 | full: "px-6 w-full py-2.5 text-lg gap-x-3 font-medium", 103 | icon: "h-10 w-10", 104 | } 105 | 106 | // Clases por radio 107 | const radiusClasses = { 108 | none: "rounded-none", 109 | lg: "rounded-xl", 110 | xl: "rounded-2xl", 111 | xxl: "rounded-4xl", 112 | full: "rounded-full", 113 | } 114 | 115 | // Desestructuración de props 116 | const { 117 | variant = "solid", 118 | color = "primary", 119 | size = "default", 120 | radius = "xl", 121 | class: extraClasses = "", 122 | type = "button", 123 | href, 124 | as = "button", 125 | role = "button", 126 | disabled = false, 127 | icon, 128 | iconPosition = "left", 129 | iconOnly = false, 130 | loading = false, 131 | ariaLabel, 132 | disableSaturateHover = false, 133 | track, 134 | } = Astro.props as ButtonProps 135 | 136 | // Definición de clases 137 | const customRadiusClass = 138 | typeof radius === "string" && radius.startsWith("rounded-") 139 | ? radius 140 | : radiusClasses[radius as keyof typeof radiusClasses] || "" 141 | 142 | const variantClasses = getVariantClasses(variant, color) 143 | 144 | const baseClasses = [ 145 | "z-0 group relative inline-flex items-center justify-center", 146 | "box-border appearance-none select-none whitespace-nowrap min-w-max", 147 | "subpixel-antialiased overflow-hidden tap-highlight-transparent", 148 | "focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-double", 149 | "focus-visible:outline-primary focus-visible:outline-offset-2", 150 | "disabled:opacity-75 disabled:select-none disabled:cursor-not-allowed", 151 | "disabled:active:scale-100", 152 | "active:scale-[0.99]", 153 | disableSaturateHover ? "" : "hover:saturate-150", 154 | "transition-transform-colors-opacity motion-reduce:transition-none", 155 | ] 156 | .filter(Boolean) 157 | .join(" ") 158 | 159 | const buttonClasses = [ 160 | baseClasses, 161 | variantClasses, 162 | sizeClasses[size], 163 | customRadiusClass, 164 | iconOnly ? "p-2" : "", 165 | extraClasses, 166 | loading ? "loading" : "", 167 | ] 168 | .filter(Boolean) 169 | .join(" ") 170 | --- 171 | 172 | { 173 | as === "button" ? ( 174 | 197 | ) : as === "link" && href ? ( 198 | 206 | {icon && iconPosition === "left" && } 207 | 208 | {icon && iconPosition === "right" && } 209 | 210 | ) : null 211 | } 212 | 213 | 218 | -------------------------------------------------------------------------------- /src/components/ui/Icon.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const icons = import.meta.glob("@icons/*.astro", { eager: true }) 3 | 4 | interface IconMap { 5 | [key: string]: (_props: Record) => any 6 | } 7 | 8 | const iconMap: IconMap = Object.fromEntries( 9 | Object.entries(icons).map(([path, module]) => [ 10 | path.split("/").pop()?.replace(".astro", "").toLowerCase() || "", 11 | (module as any).default, 12 | ]) 13 | ) 14 | 15 | const iconName = Astro.props.name?.toLowerCase() 16 | const IconComponent = iconMap[iconName] 17 | --- 18 | 19 | { 20 | IconComponent ? ( 21 | 22 | ) : ( 23 |
24 | Icon not found:{" "} 25 | {Astro.props.name} 26 |
27 | ) 28 | } 29 | -------------------------------------------------------------------------------- /src/const.ts: -------------------------------------------------------------------------------- 1 | export const DICTIONARY_TYPE = { 2 | AVAILABILITY: 'availability', 3 | CANDIDATE_EXPERIENCE: 'candidate-experience', 4 | CANDIDATE_SUBSEGMENT: 'candidate-subsegment', 5 | CATEGORY: 'category', 6 | CHANNEL: 'channel', 7 | CITY: 'city', 8 | CONTRACT_TYPE: 'contract-type', 9 | COUNTRY: 'country', 10 | DRIVER_LICENSE: 'driver-license', 11 | EMPLOYMENT_STATUS: 'employment-status', 12 | EMPLOYER_TYPE: 'employer-type', 13 | EXPERIENCE_MIN: 'experience-min', 14 | GENDER: 'gender', 15 | GRADE: 'grade', 16 | ID_TYPE: 'id-type', 17 | INDUSTRY: 'industry', 18 | LANGUAGE: 'language', 19 | LAST_JOB_SEARCH: 'last-job-search', 20 | LEGAL_FORM: 'legal-form', 21 | MANAGER_PROFESSIONAL_LEVEL: 'manager-professional-level', 22 | MANDATORY_STEPS: 'mandatory-steps', 23 | OFFER_RESIDENCE: 'offer-residence', 24 | OFFER_STATE: 'offer-state', 25 | PERIODOS_INTERVALOS: 'periodos-intervalos', 26 | PROFESSIONAL_LEVEL: 'professional-level', 27 | PROVINCE: 'province', 28 | READING_LEVEL: 'reading-level', 29 | REGION: 'region', 30 | REPORT_REASONS: 'report-reason', 31 | REPORTING_TO: 'reporting-to', 32 | SALARY_BENEFITS: 'salary-benefits', 33 | SALARY_PERIOD: 'salary-period', 34 | SALARY_RANGE: 'salary-range', 35 | STUDY: 'study', 36 | SKILL_LEVEL: 'skill-level', 37 | SPEAKING_LEVEL: 'speaking-level', 38 | STAFF: 'staff', 39 | STUDY_DETAIL: 'study-detail', 40 | SUBCATEGORY: 'subcategory', 41 | TELEWORKING: 'teleworking', 42 | TIMELINE_EVENT: 'timeline-event', 43 | URL_TYPE: 'url-type', 44 | WORK_PERMIT: 'work-permit', 45 | WORKDAY: 'workday', 46 | WRITING_LEVEL: 'writing-level' 47 | } as const 48 | -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// -------------------------------------------------------------------------------- /src/icons/AppStore.astro: -------------------------------------------------------------------------------- 1 | Logo App Store 6 | -------------------------------------------------------------------------------- /src/icons/ChevronDown.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const { ...props } = Astro.props 3 | --- 4 | 5 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/icons/CloseIcon.astro: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /src/icons/Facebook.astro: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/icons/GooglePlay.astro: -------------------------------------------------------------------------------- 1 | Logo Google Play 6 | -------------------------------------------------------------------------------- /src/icons/LeftArrow.astro: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /src/icons/Play.astro: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /src/icons/RightArrow.astro: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /src/icons/Search.astro: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/icons/Spinner.astro: -------------------------------------------------------------------------------- 1 | 8 | 15 | 16 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/icons/TikTok.astro: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/icons/Twitter.astro: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/icons/YouTube.astro: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/layouts/Layout.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Header from "../components/Header.astro" 3 | import Footer from "../components/Footer.astro" 4 | 5 | interface Props { 6 | title: string 7 | } 8 | 9 | const { title } = Astro.props 10 | --- 11 | 12 | 13 | 14 | 15 | 16 | {title} 17 | 21 | 22 | 23 | 27 | 28 | 32 | 36 | 37 | 41 | 42 | 43 | 47 | 48 | 49 | 50 | 119 | 120 | 181 | 182 | 186 | 187 | 192 | 203 | 204 | 205 | 206 |
207 |
208 | 209 |
210 |
211 |