update
This commit is contained in:
3
superpage/src/components/Accordion/Accordion.astro
Normal file
3
superpage/src/components/Accordion/Accordion.astro
Normal file
@@ -0,0 +1,3 @@
|
||||
<div class="space-y-2.5">
|
||||
<slot />
|
||||
</div>
|
||||
7
superpage/src/components/Accordion/Body.astro
Normal file
7
superpage/src/components/Accordion/Body.astro
Normal file
@@ -0,0 +1,7 @@
|
||||
<div
|
||||
x-show="open"
|
||||
class="text-sm/6 text-white/70 space-y-2.5 px-5 pb-3 [&_ul]:list-disc [&_ul]:list-inside"
|
||||
style="display: none;"
|
||||
>
|
||||
<slot />
|
||||
</div>
|
||||
15
superpage/src/components/Accordion/Header.astro
Normal file
15
superpage/src/components/Accordion/Header.astro
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
import { Icon } from "astro-icon/components";
|
||||
---
|
||||
|
||||
<div
|
||||
class="cursor-pointer flex items-center justify-between px-5 py-3"
|
||||
x-on:click="open = !open"
|
||||
>
|
||||
<slot />
|
||||
<Icon
|
||||
name="chevron-down"
|
||||
class="size-4 fill-white/60 group-data-[hover]:fill-white/50 shrink-0"
|
||||
:class="{'-rotate-180': open === true}"
|
||||
/>
|
||||
</div>
|
||||
7
superpage/src/components/Accordion/Item.astro
Normal file
7
superpage/src/components/Accordion/Item.astro
Normal file
@@ -0,0 +1,7 @@
|
||||
<div
|
||||
x-data="{ open: false }"
|
||||
class="bg-white/10 rounded-lg w-full"
|
||||
:class="{'bg-white/15': open === true}"
|
||||
>
|
||||
<slot />
|
||||
</div>
|
||||
4
superpage/src/components/Accordion/index.ts
Normal file
4
superpage/src/components/Accordion/index.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export { default as Accordion } from "./Accordion.astro";
|
||||
export { default as Item } from "./Item.astro";
|
||||
export { default as Header } from "./Header.astro";
|
||||
export { default as Body } from "./Body.astro";
|
||||
@@ -1,9 +1,12 @@
|
||||
---
|
||||
import { Icon } from 'astro-icon/components'
|
||||
import Container from './Container.astro'
|
||||
import { Icon } from "astro-icon/components";
|
||||
import Container from "./Container.astro";
|
||||
|
||||
import { getCollection } from 'astro:content'
|
||||
const courses = await getCollection('courses', ({ data }) => data.draft != true)
|
||||
import { getCollection } from "astro:content";
|
||||
const courses = await getCollection(
|
||||
"courses",
|
||||
({ data }) => data.draft != true,
|
||||
);
|
||||
---
|
||||
|
||||
<nav
|
||||
@@ -18,8 +21,10 @@ const courses = await getCollection('courses', ({ data }) => data.draft != true)
|
||||
x-on:click="open = true"
|
||||
aria-haspopup="true"
|
||||
>
|
||||
<div class="truncate max-w-36 sm:max-w-72 md:max-w-124">NR-18 PEMT Plataforma Móvel de Trabalho</div>
|
||||
<Icon name="chevron" aria-hidden="true" class="size-4" />
|
||||
<div class="truncate max-w-36 sm:max-w-72 md:max-w-124">
|
||||
NR-18 PEMT Plataforma Móvel de Trabalho
|
||||
</div>
|
||||
<Icon name="chevron-down" aria-hidden="true" class="size-4" />
|
||||
</button>
|
||||
|
||||
<button
|
||||
@@ -56,16 +61,22 @@ const courses = await getCollection('courses', ({ data }) => data.draft != true)
|
||||
|
||||
<div class="border-b border-black pb-6 lg:pb-12 mb-6 lg:mb-12">
|
||||
<span>Curso de formação</span>
|
||||
<h1 class="text-xl lg:text-2xl">NR-18 PEMT Plataforma Elevatória Móvel de Trabalho</h1>
|
||||
<h1 class="text-xl lg:text-2xl">
|
||||
NR-18 PEMT Plataforma Elevatória Móvel de Trabalho
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="flex max-lg:flex-col gap-2.5 justify-between mb-3.5">
|
||||
<h6 class="font-medium text-xl lg:text-2xl">Conheça outros cursos da EDUSEG®</h6>
|
||||
<h6 class="font-medium text-xl lg:text-2xl">
|
||||
Conheça outros cursos da EDUSEG®
|
||||
</h6>
|
||||
|
||||
<div class="flex max-lg:flex-col gap-0.5 lg:gap-4">
|
||||
<!-- Search -->
|
||||
<label class="flex gap-1 items-center">
|
||||
<span class="text-nowrap max-lg:w-2/5 text-right">Buscar por</span>
|
||||
<span class="text-nowrap max-lg:w-2/5 text-right"
|
||||
>Buscar por</span
|
||||
>
|
||||
<div
|
||||
class="flex items-center border rounded px-1.5 py-0.5 lg:px-2 lg:py-1 bg-white/20 focus-within:bg-white w-full transition duration-150"
|
||||
>
|
||||
@@ -77,7 +88,9 @@ const courses = await getCollection('courses', ({ data }) => data.draft != true)
|
||||
|
||||
<!-- Filter -->
|
||||
<label class="flex gap-1 items-center">
|
||||
<span class="text-nowrap max-lg:w-2/5 text-right">Exibir apenas</span>
|
||||
<span class="text-nowrap max-lg:w-2/5 text-right"
|
||||
>Exibir apenas</span
|
||||
>
|
||||
<div class="relative w-full lg:w-30 bg-white/20">
|
||||
<select
|
||||
class="flex border items-center justify-between gap-0.5 border-black rounded px-1.5 py-0.5 lg:px-2 lg:py-1 appearance-none focus:outline-none w-full lowercase"
|
||||
@@ -85,7 +98,10 @@ const courses = await getCollection('courses', ({ data }) => data.draft != true)
|
||||
<option value="formacao">Formação</option>
|
||||
<option value="reciclagem">Reciclagem</option>
|
||||
</select>
|
||||
<Icon name="chevron" class="absolute top-2.5 right-2.5 pointer-events-none size-3.5" />
|
||||
<Icon
|
||||
name="chevron-down"
|
||||
class="absolute top-2.5 right-2.5 pointer-events-none size-3.5"
|
||||
/>
|
||||
</div>
|
||||
</label>
|
||||
<!-- Filder End -->
|
||||
@@ -97,11 +113,14 @@ const courses = await getCollection('courses', ({ data }) => data.draft != true)
|
||||
courses.map(({ data: { title, slug } }) => {
|
||||
return (
|
||||
<li>
|
||||
<a href={`/${slug}`} class="font-bold hover:underline">
|
||||
<a
|
||||
href={`/${slug}`}
|
||||
class="font-bold hover:underline"
|
||||
>
|
||||
{title}
|
||||
</a>
|
||||
</li>
|
||||
)
|
||||
);
|
||||
})
|
||||
}
|
||||
</ul>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { defineCollection, z, reference } from 'astro:content'
|
||||
import { glob } from 'astro/loaders'
|
||||
import { defineCollection, z, reference } from "astro:content";
|
||||
import { glob } from "astro/loaders";
|
||||
|
||||
const trainers = defineCollection({
|
||||
loader: glob({ pattern: '**/*.md', base: './src/content/trainers' }),
|
||||
loader: glob({ pattern: "**/*.md", base: "./src/content/trainers" }),
|
||||
schema: ({ image }) =>
|
||||
z.object({
|
||||
name: z.string(),
|
||||
@@ -10,14 +10,14 @@ const trainers = defineCollection({
|
||||
networks: z.array(
|
||||
z.object({
|
||||
alt: z.string(),
|
||||
url: z.string(),
|
||||
url: z.string().url(),
|
||||
}),
|
||||
),
|
||||
}),
|
||||
})
|
||||
});
|
||||
|
||||
const courses = defineCollection({
|
||||
loader: glob({ pattern: '**/*.md', base: './src/content/courses' }),
|
||||
loader: glob({ pattern: "**/*.{md,mdx}", base: "./src/content/courses" }),
|
||||
schema: ({ image }) =>
|
||||
z.object({
|
||||
id: z.string(),
|
||||
@@ -28,16 +28,7 @@ const courses = defineCollection({
|
||||
course: z.object({
|
||||
hours: z.number(),
|
||||
reciclagem: z.boolean().default(false),
|
||||
modules: z.array(
|
||||
z.union([
|
||||
z.object({
|
||||
summary: z.string(),
|
||||
content: z.string(),
|
||||
}),
|
||||
z.string(),
|
||||
]),
|
||||
),
|
||||
trainer: reference('trainers').optional(),
|
||||
trainer: reference("trainers").optional(),
|
||||
}),
|
||||
seo: z
|
||||
.object({
|
||||
@@ -46,6 +37,6 @@ const courses = defineCollection({
|
||||
.optional(),
|
||||
draft: z.boolean().default(true),
|
||||
}),
|
||||
})
|
||||
});
|
||||
|
||||
export const collections = { trainers, courses }
|
||||
export const collections = { trainers, courses };
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
---
|
||||
id: 96c03c32-089c-4ccb-8aa1-73b0f49228b9
|
||||
title: Lei Lucas
|
||||
summary: Capacitação obrigatória em primeiros socorros para profissionais da educação, conforme a Lei 13.722/2018, abordando técnicas essenciais como RCP, controle de hemorragias e desobstrução das vias aéreas.
|
||||
slug: lei-lucas
|
||||
draft: false
|
||||
|
||||
course:
|
||||
hours: 8
|
||||
modules:
|
||||
- Introdução à Lei Lucas
|
||||
- Aspectos gerais dos primeiros socorros
|
||||
- Sinais vitais e avaliação primária
|
||||
- Parada cardiorrespiratória (PCR)
|
||||
- Hemorragias e controle
|
||||
- Queimaduras
|
||||
- Engasgo e manobra de Heimlich
|
||||
- fraturas, luxações e entorses
|
||||
- Emergências traumáticas
|
||||
- Convulsões e desmaios
|
||||
---
|
||||
41
superpage/src/content/courses/lei-lucas.mdx
Normal file
41
superpage/src/content/courses/lei-lucas.mdx
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
id: 96c03c32-089c-4ccb-8aa1-73b0f49228b9
|
||||
title: Lei Lucas
|
||||
summary: Capacitação obrigatória em primeiros socorros para profissionais da educação, conforme a Lei 13.722/2018, abordando técnicas essenciais como RCP, controle de hemorragias e desobstrução das vias aéreas.
|
||||
slug: lei-lucas
|
||||
draft: false
|
||||
|
||||
course:
|
||||
hours: 8
|
||||
---
|
||||
|
||||
import { Accordion, Item, Header, Body } from "~/components/Accordion";
|
||||
|
||||
<Accordion>
|
||||
<Item>
|
||||
<Header>Introdução à Lei Lucas</Header>
|
||||
<Body>
|
||||
<ul>
|
||||
<li>Contexto histórico</li>
|
||||
<li>Objetivos da legislação</li>
|
||||
<li>Exigências para instituições de ensino</li>
|
||||
</ul>
|
||||
</Body>
|
||||
</Item>
|
||||
|
||||
<Item>
|
||||
<Header>Aspectos gerais dos primeiros socorros</Header>
|
||||
<Body>
|
||||
<ul>
|
||||
<li>Definição e importância</li>
|
||||
<li>Conceitos de urgência e emergência</li>
|
||||
<li>Objetivos dos primeiros socorros</li>
|
||||
</ul>
|
||||
</Body>
|
||||
</Item>
|
||||
|
||||
<Item>
|
||||
<Header>Sinais vitais e avaliação primária</Header>
|
||||
<Body></Body>
|
||||
</Item>
|
||||
</Accordion>
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
id: 479516a7-5431-452e-8f28-228e34b86e0c
|
||||
title: NR-11 Segurança em Transpaleteira
|
||||
slug: nr-11-segurana-em-transpaleteira
|
||||
slug: nr-11-seguranca-em-transpaleteira
|
||||
summary: ...
|
||||
draft: false
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
id: a3c46d94-cf31-4b5f-8de3-6aa1c2d423f0
|
||||
title: NR-17 Ergonomia para Teleatendimento/Telemarketing
|
||||
slug: nr-17-ergonomia-para-teleatendimentotelemarketing
|
||||
slug: nr-17-ergonomia-para-teleatendimento-telemarketing
|
||||
summary: ...
|
||||
draft: false
|
||||
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
---
|
||||
id: 450a70ca-8ab5-4520-8a22-0e277359797d
|
||||
title: NR-18 PEMT Plataforma Móvel de Trabalho Aéreo
|
||||
summary: Capacita os profissionais para identificar e minimizar riscos, utilizar corretamente os Equipamentos de Proteção Individual (EPIs), realizar manutenções preventivas e corretivas, além de garantir a segurança durante a operação de plataformas elevatórias.
|
||||
slug: nr-18-plataforma-de-trabalho-aereo
|
||||
draft: false
|
||||
image: ./nr-18-plataforma.png
|
||||
|
||||
seo:
|
||||
tags:
|
||||
- test
|
||||
|
||||
course:
|
||||
hours: 4
|
||||
trainer: francis
|
||||
modules:
|
||||
- summary: Aspectos regulamentares e legais da NR-18
|
||||
content: lorem ipsum
|
||||
- summary: Tipos construtivos das PEMTs, aplicações, características técnicas e operacionais
|
||||
content: lorem ipsum
|
||||
- Acidentes previsíveis com PEMTs e como evitá-los
|
||||
- Plano de segurança da operação – PSO
|
||||
- Manutenção mínima de segurança nas PEMTs
|
||||
- Noções de primeiros socorros
|
||||
---
|
||||
|
||||
asdasdas
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
id: 450a70ca-8ab5-4520-8a22-0e277359797d
|
||||
title: NR-18 PEMT Plataforma Móvel de Trabalho Aéreo
|
||||
summary: Capacita os profissionais para identificar e minimizar riscos, utilizar corretamente os Equipamentos de Proteção Individual (EPIs), realizar manutenções preventivas e corretivas, além de garantir a segurança durante a operação de plataformas elevatórias.
|
||||
slug: nr-18-plataforma-de-trabalho-aereo
|
||||
draft: false
|
||||
image: ./nr-18-plataforma.png
|
||||
|
||||
seo:
|
||||
tags:
|
||||
- test
|
||||
|
||||
course:
|
||||
hours: 4
|
||||
trainer: francis
|
||||
---
|
||||
|
||||
import { Accordion, Item, Header, Body } from "~/components/Accordion";
|
||||
|
||||
<Accordion>
|
||||
<Item>
|
||||
<Header>Aspectos regulamentares e legais da NR-18</Header>
|
||||
<Body>
|
||||
<p>Exploração dos requisitos legais e normativos da NR-18 e da ABNT 16776 aplicáveis às Plataformas de Trabalho Aéreo, garantindo conformidade e segurança no ambiente de trabalho.</p>
|
||||
</Body>
|
||||
</Item>
|
||||
|
||||
<Item>
|
||||
<Header>Tipos construtivos das PEMTs, aplicações, características técnicas e operacionais</Header>
|
||||
<Body>
|
||||
<p>Apresentação dos diferentes modelos de Plataformas Elevatórias Móveis de Trabalho (PEMTs), suas aplicações práticas, especificações técnicas e modos operacionais.</p>
|
||||
</Body>
|
||||
</Item>
|
||||
|
||||
<Item>
|
||||
<Header>Acidentes previsíveis com PEMTs e como evitá-los</Header>
|
||||
<Body>
|
||||
<p>Análise de cenários de acidentes típicos envolvendo PEMTs, identificando causas e estabelecendo medidas preventivas para mitigar riscos.</p>
|
||||
</Body>
|
||||
</Item>
|
||||
|
||||
<Item>
|
||||
<Header>Plano de segurança da operação – PSO</Header>
|
||||
<Body>
|
||||
<p>Desenvolvimento e aplicação do Plano de Segurança da Operação (PSO) como ferramenta indispensável para operações seguras, abrangendo planejamento, execução e controle de atividades.</p>
|
||||
</Body>
|
||||
</Item>
|
||||
|
||||
<Item>
|
||||
<Header>Manutenção mínima de segurança nas PEMTs</Header>
|
||||
<Body>
|
||||
<p>Manutenção Mínima de Segurança nas PEMTs</p>
|
||||
</Body>
|
||||
</Item>
|
||||
|
||||
<Item>
|
||||
<Header>Noções de primeiros socorros</Header>
|
||||
<Body>
|
||||
<p>Capacitação em práticas essenciais de primeiros socorros, com foco em respostas rápidas e eficazes a possíveis incidentes durante o uso das PEMTs.</p>
|
||||
</Body>
|
||||
</Item>
|
||||
</Accordion>
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
id: 0e39c7af-a812-49aa-ac12-72f4e0ede8c9
|
||||
title: Reciclagem de NR-18 Plataforma de Trabalho Aéreo PEMT
|
||||
slug: reciclagem-de-nr-18-plataforma-de-trabalho-areo-pemt
|
||||
slug: reciclagem-de-nr-18-plataforma-de-trabalho-aereo-pemt
|
||||
summary: ...
|
||||
draft: false
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
id: 2b9a6e19-2e2d-4fc2-8924-b45d47057715
|
||||
title: Reciclagem em NR-33 Trabalhos em Espaços Confinados
|
||||
slug: reciclagem-em-nr-33-trabalhos-em-espaos-confinados
|
||||
slug: reciclagem-em-nr-33-trabalhos-em-espacos-confinados
|
||||
summary: ...
|
||||
draft: false
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 151 B After Width: | Height: | Size: 151 B |
@@ -1,38 +1,43 @@
|
||||
---
|
||||
import { Picture } from 'astro:assets'
|
||||
import { Icon } from 'astro-icon/components'
|
||||
import Layout from '~/layouts/Layout.astro'
|
||||
import Container from '~/components/Container.astro'
|
||||
import Carousel from '~/components/Carousel.astro'
|
||||
import Kordsa from '~/components/logos/Kordsa.astro'
|
||||
import Semeq from '~/components/logos/Semeq.astro'
|
||||
import Natura from '~/components/logos/Natura.astro'
|
||||
import Nissan from '~/components/logos/Nissan.astro'
|
||||
import Manserv from '~/components/logos/Manserv.astro'
|
||||
import Contact from './_components/Contact.jsx'
|
||||
import { Picture } from "astro:assets";
|
||||
import { Icon } from "astro-icon/components";
|
||||
import Layout from "~/layouts/Layout.astro";
|
||||
import Container from "~/components/Container.astro";
|
||||
import Carousel from "~/components/Carousel.astro";
|
||||
import Kordsa from "~/components/logos/Kordsa.astro";
|
||||
import Semeq from "~/components/logos/Semeq.astro";
|
||||
import Natura from "~/components/logos/Natura.astro";
|
||||
import Nissan from "~/components/logos/Nissan.astro";
|
||||
import Manserv from "~/components/logos/Manserv.astro";
|
||||
import Contact from "./_components/Contact.jsx";
|
||||
|
||||
import placeholder from './_assets/placeholder.png'
|
||||
import mulherdenegocios from './_assets/mulher-de-negocios.png'
|
||||
import homemdenegocios from './_assets/homem-de-negocios.png'
|
||||
import placeholder from "./_assets/placeholder.png";
|
||||
import mulherdenegocios from "./_assets/mulher-de-negocios.png";
|
||||
import homemdenegocios from "./_assets/homem-de-negocios.png";
|
||||
|
||||
import { getCollection, getEntry } from 'astro:content'
|
||||
import { getCollection, getEntry, render } from "astro:content";
|
||||
|
||||
export async function getStaticPaths() {
|
||||
const courses = await getCollection('courses', ({ data }) => data.draft != true)
|
||||
const courses = await getCollection(
|
||||
"courses",
|
||||
({ data }) => data.draft != true,
|
||||
);
|
||||
|
||||
return courses.map((course) => {
|
||||
return {
|
||||
params: { slug: course.id },
|
||||
props: { course },
|
||||
}
|
||||
})
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
const {
|
||||
course: { data },
|
||||
} = Astro.props
|
||||
const { course } = Astro.props;
|
||||
const { data } = course;
|
||||
const { Content } = await render(course);
|
||||
|
||||
const trainer = data.course?.trainer ? await getEntry(data.course?.trainer) : null
|
||||
const trainer = data.course?.trainer
|
||||
? await getEntry(data.course?.trainer)
|
||||
: null;
|
||||
---
|
||||
|
||||
<Fragment slot="head">
|
||||
@@ -45,41 +50,60 @@ const trainer = data.course?.trainer ? await getEntry(data.course?.trainer) : nu
|
||||
<Picture
|
||||
src={data?.image ? data.image : placeholder}
|
||||
alt={data.title}
|
||||
formats={['webp']}
|
||||
formats={["webp"]}
|
||||
class="max-lg:hidden max-w-116 grayscale-15"
|
||||
/>
|
||||
<section class="lg:py-24">
|
||||
<div class="space-y-5">
|
||||
<span class="font-medium">
|
||||
{data.course.reciclagem ? <>Curso de reciclagem</> : <>Curso de formação</>}
|
||||
{
|
||||
data.course.reciclagem ? (
|
||||
<>Curso de reciclagem</>
|
||||
) : (
|
||||
<>Curso de formação</>
|
||||
)
|
||||
}
|
||||
</span>
|
||||
<h1 class="text-pretty font-semibold text-4xl lg:text-7xl">
|
||||
{data.title}
|
||||
</h1>
|
||||
<p class="text-base/6">
|
||||
{data.summary}
|
||||
<a href="#modulos" class="text-blue-400 *:hover:underline">
|
||||
<a
|
||||
href="#modulos"
|
||||
class="text-blue-400 *:hover:underline"
|
||||
>
|
||||
<sup>[1]</sup>
|
||||
</a>
|
||||
</p>
|
||||
<ul class="lg:flex gap-3">
|
||||
<li class="flex gap-1">
|
||||
<Icon name="clock" class="size-5" />
|
||||
<span>Carga horária de {data.course.hours} horas</span>
|
||||
<span
|
||||
>Carga horária de {data.course.hours} horas</span
|
||||
>
|
||||
</li>
|
||||
|
||||
<li class="flex gap-1">
|
||||
<Icon name="check-badge" class="size-5 text-blue-400" />
|
||||
<Icon
|
||||
name="check-badge"
|
||||
class="size-5 text-blue-400"
|
||||
/>
|
||||
<span>
|
||||
Certificado com assinatura digital
|
||||
<a href="#certificado" class="text-blue-400 *:hover:underline">
|
||||
<a
|
||||
href="#certificado"
|
||||
class="text-blue-400 *:hover:underline"
|
||||
>
|
||||
<sup>[2]</sup>
|
||||
</a>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="flex max-lg:flex-col justify-center gap-2.5 lg:gap-8 lg:mt-16">
|
||||
<div
|
||||
class="flex max-lg:flex-col justify-center gap-2.5 lg:gap-8 lg:mt-16"
|
||||
>
|
||||
<a
|
||||
href="#"
|
||||
class="text-black font-semibold bg-lime-400 rounded p-3.5 hover:bg-white max-lg:text-center transition duration-150"
|
||||
@@ -95,18 +119,35 @@ const trainer = data.course?.trainer ? await getEntry(data.course?.trainer) : nu
|
||||
<span class="font-bold">4.7</span>
|
||||
<ul class="flex">
|
||||
<li>
|
||||
<Icon name="star" class="size-4 text-yellow-500" />
|
||||
<Icon
|
||||
name="star"
|
||||
class="size-4 text-yellow-500"
|
||||
/>
|
||||
</li>
|
||||
<li>
|
||||
<Icon name="star" class="size-4 text-yellow-500" />
|
||||
<Icon
|
||||
name="star"
|
||||
class="size-4 text-yellow-500"
|
||||
/>
|
||||
</li>
|
||||
<li>
|
||||
<Icon name="star" class="size-4 text-yellow-500" />
|
||||
<Icon
|
||||
name="star"
|
||||
class="size-4 text-yellow-500"
|
||||
/>
|
||||
</li>
|
||||
<li>
|
||||
<Icon name="star" class="size-4 text-yellow-500" />
|
||||
<Icon
|
||||
name="star"
|
||||
class="size-4 text-yellow-500"
|
||||
/>
|
||||
</li>
|
||||
<li>
|
||||
<Icon
|
||||
name="star"
|
||||
class="size-4 text-gray-500"
|
||||
/>
|
||||
</li>
|
||||
<li><Icon name="star" class="size-4 text-gray-500" /></li>
|
||||
</ul>
|
||||
</div>
|
||||
<span>66 avaliações no Google</span>
|
||||
@@ -117,7 +158,9 @@ const trainer = data.course?.trainer ? await getEntry(data.course?.trainer) : nu
|
||||
</Container>
|
||||
|
||||
<Container class="lg:text-center space-y-2.5 lg:space-y-6">
|
||||
<h2 class="text-pretty font-semibold text-4xl">Alguns clientes que acreditam em nós</h2>
|
||||
<h2 class="text-pretty font-semibold text-4xl">
|
||||
Alguns clientes que acreditam em nós
|
||||
</h2>
|
||||
<Carousel items={[Natura, Kordsa, Semeq, Nissan, Manserv]} />
|
||||
</Container>
|
||||
|
||||
@@ -125,15 +168,21 @@ const trainer = data.course?.trainer ? await getEntry(data.course?.trainer) : nu
|
||||
<Container class="flex justify-between lg:w-6/12">
|
||||
<ul class="space-y-2.5">
|
||||
<li class="text-5xl">+ 100k</li>
|
||||
<li class="uppercase font-bold text-white/50">Profissionais capacitados</li>
|
||||
<li class="uppercase font-bold text-white/50">
|
||||
Profissionais capacitados
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="space-y-2.5">
|
||||
<li class="text-5xl">+ 5k</li>
|
||||
<li class="uppercase font-bold text-white/50">Empresas atendidas</li>
|
||||
<li class="uppercase font-bold text-white/50">
|
||||
Empresas atendidas
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="space-y-2.5">
|
||||
<li class="text-5xl">12 anos</li>
|
||||
<li class="uppercase font-bold text-white/50">de experiência</li>
|
||||
<li class="uppercase font-bold text-white/50">
|
||||
de experiência
|
||||
</li>
|
||||
</ul>
|
||||
</Container>
|
||||
</div>
|
||||
@@ -145,13 +194,13 @@ const trainer = data.course?.trainer ? await getEntry(data.course?.trainer) : nu
|
||||
>
|
||||
<Picture
|
||||
alt="Homem de negócios"
|
||||
formats={['webp']}
|
||||
formats={["webp"]}
|
||||
src={homemdenegocios}
|
||||
class="w-94 absolute bottom-0 -left-28"
|
||||
/>
|
||||
<Picture
|
||||
alt="Mulher de negócios"
|
||||
formats={['webp']}
|
||||
formats={["webp"]}
|
||||
src={mulherdenegocios}
|
||||
class="w-96 absolute bottom-0 -right-24"
|
||||
/>
|
||||
@@ -163,20 +212,33 @@ const trainer = data.course?.trainer ? await getEntry(data.course?.trainer) : nu
|
||||
Por que capacitar sua equipe com a EDUSEG®
|
||||
</h3>
|
||||
<p>
|
||||
Nós cuidamos da burocracia, oferecemos uma plataforma completa para simplicar a gestão e
|
||||
capacitação em larga escala de seus colaboradores. Com a EDUSEG®, sua empresa se
|
||||
beneficia de uma tecnologia eficiente e confiável.
|
||||
Nós cuidamos da burocracia, oferecemos uma
|
||||
plataforma completa para simplicar a gestão e
|
||||
capacitação em larga escala de seus colaboradores.
|
||||
Com a EDUSEG®, sua empresa se beneficia de uma
|
||||
tecnologia eficiente e confiável.
|
||||
</p>
|
||||
|
||||
<ul class="grid md:grid-cols-2 gap-1 lg:gap-2.5">
|
||||
<li class="bg-white/10 p-2.5 lg:p-5 rounded-lg">Centralização de todos os certificados</li>
|
||||
<li class="bg-white/10 p-2.5 lg:p-5 rounded-lg">Agilidade na liberação de cursos</li>
|
||||
<li class="bg-white/10 p-2.5 lg:p-5 rounded-lg">Agendamento para liberação de cursos</li>
|
||||
<li class="bg-white/10 p-2.5 lg:p-5 rounded-lg">Aviso de vencimento para certificados</li>
|
||||
<li class="bg-white/10 p-2.5 lg:p-5 rounded-lg">
|
||||
Centralização de todos os certificados
|
||||
</li>
|
||||
<li class="bg-white/10 p-2.5 lg:p-5 rounded-lg">
|
||||
Agilidade na liberação de cursos
|
||||
</li>
|
||||
<li class="bg-white/10 p-2.5 lg:p-5 rounded-lg">
|
||||
Agendamento para liberação de cursos
|
||||
</li>
|
||||
<li class="bg-white/10 p-2.5 lg:p-5 rounded-lg">
|
||||
Aviso de vencimento para certificados
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="text-center">
|
||||
<a href="#contato" class="text-blue-400 underline hover:no-underline">
|
||||
<a
|
||||
href="#contato"
|
||||
class="text-blue-400 underline hover:no-underline"
|
||||
>
|
||||
Agendar uma demonstração
|
||||
</a>
|
||||
</div>
|
||||
@@ -186,51 +248,22 @@ const trainer = data.course?.trainer ? await getEntry(data.course?.trainer) : nu
|
||||
</Container>
|
||||
|
||||
<!-- Course Modules -->
|
||||
<Container id="modulos" class="grid gap-2.5 lg:grid-cols-3 lg:gap-5 2xl:w-3/6">
|
||||
<Container
|
||||
id="modulos"
|
||||
class="grid gap-2.5 lg:grid-cols-3 lg:gap-5 2xl:w-3/6"
|
||||
>
|
||||
<div class="space-y-2.5">
|
||||
<h4 class="text-pretty text-4xl lg:text-5xl">Módulos deste curso</h4>
|
||||
<h4 class="text-pretty text-4xl lg:text-5xl">
|
||||
Módulos deste curso
|
||||
</h4>
|
||||
<p class="text-base/6">
|
||||
O curso é dividido em módulos para facilitar seu aprendizado e garantir que você domine todos os
|
||||
aspectos teóricos e práticos.
|
||||
O curso é dividido em módulos para facilitar seu aprendizado
|
||||
e garantir que você domine todos os aspectos teóricos e
|
||||
práticos.
|
||||
</p>
|
||||
</div>
|
||||
<div class="lg:col-span-2 flex flex-col gap-1.5">
|
||||
{
|
||||
data.course.modules.map((data) => {
|
||||
if (typeof data === 'string') {
|
||||
return <div class="bg-white/10 rounded-lg w-full px-5 py-3">{data}</div>
|
||||
}
|
||||
|
||||
const { summary, content } = data
|
||||
|
||||
return (
|
||||
<div
|
||||
x-data="{ open: false }"
|
||||
class="bg-white/10 rounded-lg w-full"
|
||||
:class="{'bg-white/15': open === true}"
|
||||
>
|
||||
<div
|
||||
class="cursor-pointer flex items-center justify-between px-5 py-3"
|
||||
x-on:click="open = !open"
|
||||
>
|
||||
<span>{summary}</span>
|
||||
<Icon
|
||||
name="chevron"
|
||||
class="size-4 fill-white/60 group-data-[hover]:fill-white/50 shrink-0"
|
||||
:class="{'-rotate-180': open === true}"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
x-show="open"
|
||||
class="text-sm/6 text-white/70 space-y-2 px-5 pb-3"
|
||||
style="display: none;"
|
||||
>
|
||||
{content}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
})
|
||||
}
|
||||
<Content />
|
||||
</div>
|
||||
</Container>
|
||||
<!-- Course Modules End -->
|
||||
@@ -240,14 +273,21 @@ const trainer = data.course?.trainer ? await getEntry(data.course?.trainer) : nu
|
||||
<div
|
||||
class="text-black bg-linear-to-t from-lime-600 to-lime-400 border border-lime-400 p-5 lg:py-36 rounded-2xl relative overflow-hidden"
|
||||
>
|
||||
<Icon name="lock-closed" class="size-96 absolute -right-16 -bottom-16 text-black/10 max-lg:hidden" />
|
||||
<Icon
|
||||
name="lock-closed"
|
||||
class="size-96 absolute -right-16 -bottom-16 text-black/10 max-lg:hidden"
|
||||
/>
|
||||
|
||||
<div class="lg:w-8/12 2xl:w-6/14 mx-auto space-y-5">
|
||||
<h5 class="text-4xl lg:text-6xl/14 lg:font-black">
|
||||
Certificados digitais com respaldo legal e gestão completa
|
||||
Certificados digitais com respaldo legal e gestão
|
||||
completa
|
||||
</h5>
|
||||
<ul class="lg:text-lg list-disc list-inside">
|
||||
<li>Certificado com assinatura digital conforme o padrão ICP-Brasil</li>
|
||||
<li>
|
||||
Certificado com assinatura digital conforme o padrão
|
||||
ICP-Brasil
|
||||
</li>
|
||||
<li>Tudo digital e salvo para sempre na núvem</li>
|
||||
<li>Alertas automáticos de vencimento</li>
|
||||
</ul>
|
||||
@@ -266,24 +306,40 @@ const trainer = data.course?.trainer ? await getEntry(data.course?.trainer) : nu
|
||||
<Picture
|
||||
src={trainer.data.image}
|
||||
alt={trainer.data.name}
|
||||
formats={['webp']}
|
||||
formats={["webp"]}
|
||||
class="rounded-xl size-32 outline-2 outline-offset-2 outline-lime-400"
|
||||
/>
|
||||
</div>
|
||||
<div class="space-y-2.5">
|
||||
<h6 class="text-xl text-pretty">Quem é o(a) instrutor(a)?</h6>
|
||||
<p class="text-4xl lg:text-5xl text-pretty">{trainer.data.name}</p>
|
||||
<h6 class="text-xl text-pretty">
|
||||
Quem é o(a) instrutor(a)?
|
||||
</h6>
|
||||
<p class="text-4xl lg:text-5xl text-pretty">
|
||||
{trainer.data.name}
|
||||
</p>
|
||||
|
||||
<div class="text-sm/6 text-white/70 space-y-2.5" set:html={trainer?.rendered?.html} />
|
||||
<div
|
||||
class="text-sm/6 text-white/70 space-y-2.5"
|
||||
set:html={trainer?.rendered?.html}
|
||||
/>
|
||||
|
||||
<div class="flex">
|
||||
{trainer.data.networks.map(({ url, alt }) => {
|
||||
return (
|
||||
<a href={url} target="_blank" aria-labelledby={alt}>
|
||||
<Icon name={alt.toLowerCase()} class="fill-white/70 size-5" />
|
||||
</a>
|
||||
)
|
||||
})}
|
||||
{trainer.data.networks.map(
|
||||
({ url, alt }) => {
|
||||
return (
|
||||
<a
|
||||
href={url}
|
||||
target="_blank"
|
||||
aria-labelledby={alt}
|
||||
>
|
||||
<Icon
|
||||
name={alt.toLowerCase()}
|
||||
class="fill-white/70 size-5"
|
||||
/>
|
||||
</a>
|
||||
);
|
||||
},
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user