From 1f9754f681762dd78a1e1b8c4ae184a4cf2e94d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Rafael=20Siqueira?= Date: Thu, 17 Apr 2025 11:43:26 -0300 Subject: [PATCH] add itens --- superpage/src/components/FAQ.jsx | 81 +++-------- superpage/src/content.config.ts | 23 +++- superpage/src/data/courses/lei-lucas.md | 23 +++- .../nr-18-plataforma-de-trabalho-aereo.md | 22 ++- .../data/courses/nr-35-trabalhos-em-altura.md | 18 ++- .../prevencao-na-seguranca-do-trabalho.md | 10 ++ superpage/src/data/trainers/francis.md | 9 ++ superpage/src/layouts/Layout.astro | 18 ++- superpage/src/pages/[slug].astro | 126 +++++++++--------- superpage/src/pages/blog/[slug].astro | 0 superpage/src/pages/index.astro | 32 ++--- superpage/tsconfig.json | 3 +- 12 files changed, 204 insertions(+), 161 deletions(-) create mode 100644 superpage/src/data/posts/prevencao-na-seguranca-do-trabalho.md create mode 100644 superpage/src/data/trainers/francis.md create mode 100644 superpage/src/pages/blog/[slug].astro diff --git a/superpage/src/components/FAQ.jsx b/superpage/src/components/FAQ.jsx index 69f3735..996e851 100644 --- a/superpage/src/components/FAQ.jsx +++ b/superpage/src/components/FAQ.jsx @@ -5,69 +5,28 @@ import { } from '@headlessui/react' import { ChevronDownIcon } from '@heroicons/react/24/solid' -export function FAQ() { +export function Faq({ topics }) { return ( <> - - 1. Introdução - -

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sit - amet neque id libero semper vulputate a ut ex. Pellentesque semper - ultrices mi in efficitur. -

-

- Nulla sit amet quam eu neque convallis volutpat. Pellentesque eu - commodo sem. Suspendisse ac lobortis massa, ac mattis mauris. - Integer malesuada bibendum ante, sed consequat augue convallis et. -

-
-
- - 2. Aspectos gerais dos primeiros socorros - -

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sit - amet neque id libero semper vulputate a ut ex. Pellentesque semper - ultrices mi in efficitur. -

-

- Nulla sit amet quam eu neque convallis volutpat. Pellentesque eu - commodo sem. Suspendisse ac lobortis massa, ac mattis mauris. - Integer malesuada bibendum ante, sed consequat augue convallis et. -

-
-
- - 3. Sinais vitais e avaliação primária - -

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sit - amet neque id libero semper vulputate a ut ex. Pellentesque semper - ultrices mi in efficitur. -

-

- Nulla sit amet quam eu neque convallis volutpat. Pellentesque eu - commodo sem. Suspendisse ac lobortis massa, ac mattis mauris. - Integer malesuada bibendum ante, sed consequat augue convallis et. -

-
-
- - 4. Parada cardiorrespiratória - -

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sit - amet neque id libero semper vulputate a ut ex. Pellentesque semper - ultrices mi in efficitur. -

-

- Nulla sit amet quam eu neque convallis volutpat. Pellentesque eu - commodo sem. Suspendisse ac lobortis massa, ac mattis mauris. - Integer malesuada bibendum ante, sed consequat augue convallis et. -

-
-
+ {topics?.map((topic, idx) => ( + + + {idx + 1}. {topic} + + +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sit + amet neque id libero semper vulputate a ut ex. Pellentesque semper + ultrices mi in efficitur. +

+

+ Nulla sit amet quam eu neque convallis volutpat. Pellentesque eu + commodo sem. Suspendisse ac lobortis massa, ac mattis mauris. + Integer malesuada bibendum ante, sed consequat augue convallis et. +

+
+
+ ))} ) } diff --git a/superpage/src/content.config.ts b/superpage/src/content.config.ts index 597e915..c143128 100644 --- a/superpage/src/content.config.ts +++ b/superpage/src/content.config.ts @@ -1,13 +1,32 @@ -import { defineCollection, z } from 'astro:content' +import { defineCollection, z, reference } from 'astro:content' import { glob } from 'astro/loaders' +const trainers = defineCollection({ + loader: glob({ pattern: '**/*.md', base: './src/data/trainers' }), + schema: z.object({ + name: z.string(), + bio: z.string(), + }), +}) + const courses = defineCollection({ loader: glob({ pattern: '**/*.md', base: './src/data/courses' }), schema: z.object({ id: z.string(), title: z.string(), slug: z.string(), + course: z.object({ + hours: z.number(), + modules: z.array(z.string()), + trainer: reference('trainers').optional(), + }), + seo: z + .object({ + tags: z.array(z.string()), + }) + .optional(), + draft: z.boolean().default(true), }), }) -export const collections = { courses } +export const collections = { trainers, courses } diff --git a/superpage/src/data/courses/lei-lucas.md b/superpage/src/data/courses/lei-lucas.md index bc9bf43..657ab46 100644 --- a/superpage/src/data/courses/lei-lucas.md +++ b/superpage/src/data/courses/lei-lucas.md @@ -1,7 +1,20 @@ --- -id: '96c03c32-089c-4ccb-8aa1-73b0f49228b9' -title: 'Lei Lucas' -slug: 'lei-lucas' ---- +id: 96c03c32-089c-4ccb-8aa1-73b0f49228b9 +title: Lei Lucas +slug: lei-lucas +draft: false -asdasdas +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 +--- diff --git a/superpage/src/data/courses/nr-18-plataforma-de-trabalho-aereo.md b/superpage/src/data/courses/nr-18-plataforma-de-trabalho-aereo.md index 130f68e..c93ec0c 100644 --- a/superpage/src/data/courses/nr-18-plataforma-de-trabalho-aereo.md +++ b/superpage/src/data/courses/nr-18-plataforma-de-trabalho-aereo.md @@ -1,7 +1,23 @@ --- -id: '450a70ca-8ab5-4520-8a22-0e277359797d' -title: 'NR-18 PEMT Plataforma Móvel de Trabalho Aéreo' -slug: 'nr-18-plataforma-de-trabalho-aereo' +id: 450a70ca-8ab5-4520-8a22-0e277359797d +title: NR-18 PEMT Plataforma Móvel de Trabalho Aéreo +slug: nr-18-plataforma-de-trabalho-aereo +draft: false + +seo: + tags: + - test + +course: + hours: 4 + trainer: francis + modules: + - Aspectos regulamentares e legais da NR-18 + - Tipos construtivos das PEMTs, aplicações, características técnicas e operacionais + - 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 diff --git a/superpage/src/data/courses/nr-35-trabalhos-em-altura.md b/superpage/src/data/courses/nr-35-trabalhos-em-altura.md index b888b51..51372b3 100644 --- a/superpage/src/data/courses/nr-35-trabalhos-em-altura.md +++ b/superpage/src/data/courses/nr-35-trabalhos-em-altura.md @@ -1,7 +1,15 @@ --- -id: 'e1c44881-2fe3-484e-ada2-12b6bf5b9398' -title: 'NR-35 Trabalho em Altura' -slug: 'nr-35-trabalhos-em-altura-teorico' ---- +id: e1c44881-2fe3-484e-ada2-12b6bf5b9398 +title: NR-35 Trabalho em Altura +slug: nr-35-trabalhos-em-altura-teorico +draft: false -asdasdas +course: + hours: 8 + trainer: francis + modules: + - Introdução + - Aspectos gerais dos primeiros socorros + - Sinais vitais e avaliação primária + - Parada cardiorrespiratória +--- diff --git a/superpage/src/data/posts/prevencao-na-seguranca-do-trabalho.md b/superpage/src/data/posts/prevencao-na-seguranca-do-trabalho.md new file mode 100644 index 0000000..c74ffd7 --- /dev/null +++ b/superpage/src/data/posts/prevencao-na-seguranca-do-trabalho.md @@ -0,0 +1,10 @@ +--- +title: 'Prevenção na segurança do trabalho: um investimento que salva vidas' +slug: prevencao-na-seguranca-do-trabalho +--- + +Prevenção na segurança do trabalho ainda é vista por muitas empresas como um custo. No entanto, a verdade é que prevenir não é apenas mais barato — é vital. Reagir após um acidente pode custar milhões, impactar a imagem da empresa e, o mais grave, custar vidas humanas. + +Quando falamos de segurança do trabalho, a frase “prevenir é melhor do que remediar” não é apenas um clichê. É uma realidade que salva vidas, preserva famílias e evita prejuízos financeiros gigantescos para as empresas. Apesar disso, muitas organizações ainda enxergam a prevenção como um gasto, e não como um investimento estratégico. + +Neste artigo, vamos explorar por que essa visão precisa mudar com urgência. Afinal, reagir a um acidente de trabalho pode custar infinitamente mais — em dinheiro, em reputação e, mais grave ainda, em vidas humanas. diff --git a/superpage/src/data/trainers/francis.md b/superpage/src/data/trainers/francis.md new file mode 100644 index 0000000..8268ca9 --- /dev/null +++ b/superpage/src/data/trainers/francis.md @@ -0,0 +1,9 @@ +--- +name: Francis Ricardo Baretta +bio: + Francis Ricardo Baretta é Engenheiro em Segurança do Trabalho e Engenheiro Eletricista com registro no CREA SC 126693-0. Além disso, possui formação acadêmica pela Universidade Regional de Blumenau (FURB) em Engenharia de Telecomunicações e Engenharia Elétrica, além de estar cursando Pós-Graduação em Engenharia de Segurança do Trabalho pela UNIASSELVI. + + Participou de cursos e atividades complementares, incluindo NR-10, NR-35, eficiência energética, gerenciamento de projetos, energia fotovoltaica e treinamento de ferramentas de gestão avançadas. +networks: + - linkedin: https://www.linkedin.com/in/francis-ricardo-baretta-5262ab11a/ +--- diff --git a/superpage/src/layouts/Layout.astro b/superpage/src/layouts/Layout.astro index 4f578b4..6a1cc27 100644 --- a/superpage/src/layouts/Layout.astro +++ b/superpage/src/layouts/Layout.astro @@ -1,9 +1,15 @@ --- -import '../styles/app.css' -import { Regular as Logo } from '@components/Logo' -import { Container } from '@components/Container' -import { Menu } from '@components/Menu' +export interface Props { + title: string +} + +import '~/styles/app.css' +import { Regular as Logo } from '~/components/Logo' +import { Container } from '~/components/Container' +import { Menu } from '~/components/Menu' import { ArrowLeftStartOnRectangleIcon } from '@heroicons/react/24/solid' + +const { title } = Astro.props --- @@ -13,7 +19,9 @@ import { ArrowLeftStartOnRectangleIcon } from '@heroicons/react/24/solid' - EDUSEG® — Educação que garante sua segurança + + {title} ‐ EDUSEG® — Educação que garante sua segurança + diff --git a/superpage/src/pages/[slug].astro b/superpage/src/pages/[slug].astro index 0ccf99c..f48501f 100644 --- a/superpage/src/pages/[slug].astro +++ b/superpage/src/pages/[slug].astro @@ -1,24 +1,25 @@ --- -import Layout from '@layouts/Layout.astro' -import { Picture, Image } from 'astro:assets' -import { Container } from '@components/Container' -import { FAQ } from '@components/FAQ' +import { Picture } from 'astro:assets' +import Layout from '~/layouts/Layout.astro' +import { Container } from '~/components/Container' +import { Faq } from '~/components/Faq' import { StarIcon, ClockIcon } from '@heroicons/react/24/outline' import { CheckBadgeIcon } from '@heroicons/react/24/solid' -import { LinkedInIcon } from '@components/LinkedInIcon' -import nr18plataforma from '../assets/nr18-plataforma.png' -import mulherdenegocios from '../assets/mulher-de-negocios.png' -import homemdenegocios from '../assets/homem-de-negocios.png' -import francis from '../assets/francis.jpeg' -import Natura from '../assets/natura.svg' -import Nissan from '../assets/nissan.svg' -import Kordsa from '../assets/kordsa.svg' -import Manserv from '../assets/manserv.svg' -import Semeq from '../assets/semeq.svg' -import { getCollection, render } from 'astro:content' +import { LinkedInIcon } from '~/components/LinkedInIcon' +import nr18plataforma from '~/assets/nr18-plataforma.png' +import mulherdenegocios from '~/assets/mulher-de-negocios.png' +import homemdenegocios from '~/assets/homem-de-negocios.png' +import francis from '~/assets/francis.jpeg' +import Natura from '~/assets/natura.svg' +import Nissan from '~/assets/nissan.svg' +import Kordsa from '~/assets/kordsa.svg' +import Manserv from '~/assets/manserv.svg' +import Semeq from '~/assets/semeq.svg' + +import { getCollection, getEntry } from 'astro:content' export async function getStaticPaths() { - const posts = await getCollection('courses') + const posts = await getCollection('courses', ({ data }) => data.draft != true) return posts.map((course) => { return { @@ -27,12 +28,17 @@ export async function getStaticPaths() { } }) } -// 2. For your template, you can get the entry directly from the prop -const { course } = Astro.props -const { Content } = await render(course) + +const { + course: { data }, +} = Astro.props + +const trainer = data.course?.trainer + ? await getEntry(data.course?.trainer) + : null --- - + Curso de formação

- {course.data.title} + {data.title}

NR 18 PEMT capacita operadores de plataformas elevatórias para @@ -55,7 +61,7 @@ const { Content } = await render(course)

  • - Carga horária de 40 horas + Carga horária de {data.course.hours} horas
  • @@ -217,49 +223,45 @@ const { Content } = await render(course)

    - +
    - -
    -
    -
    - -
    -
    -
    Quem é o instrutor?
    -
    - Francis Ricardo Baretta -
    -

    - Francis Ricardo Baretta é Engenheiro em Segurança do Trabalho e - Engenheiro Eletricista com registro no CREA SC 126693-0. Além disso, - possui formação acadêmica pela Universidade Regional de Blumenau - (FURB) em Engenharia de Telecomunicações e Engenharia Elétrica, além - de estar cursando Pós-Graduação em Engenharia de Segurança do - Trabalho pela UNIASSELVI. -

    -

    - Participou de cursos e atividades complementares, incluindo NR-10, - NR-35, eficiência energética, gerenciamento de projetos, energia - fotovoltaica e treinamento de ferramentas de gestão avançadas. -

    -
    - - - + { + trainer && ( + +
    +
    +
    + +
    +
    +
    Quem é o instrutor?
    +
    + {trainer.data.name} +
    + + {trainer.data.bio.split(/\r?\n/).map((x) => ( +

    {x}

    + ))} + +
    + + + +
    +
    -
    -
    - + + ) + } diff --git a/superpage/src/pages/blog/[slug].astro b/superpage/src/pages/blog/[slug].astro new file mode 100644 index 0000000..e69de29 diff --git a/superpage/src/pages/index.astro b/superpage/src/pages/index.astro index c2f94d6..8f2e3a6 100644 --- a/superpage/src/pages/index.astro +++ b/superpage/src/pages/index.astro @@ -1,23 +1,23 @@ --- -import Layout from '@layouts/Layout.astro' -import { Picture, Image } from 'astro:assets' -import { Container } from '@components/Container' -import { FAQ } from '@components/FAQ' +import { Picture } from 'astro:assets' +import Layout from '~/layouts/Layout.astro' +import { Container } from '~/components/Container' +import { Faq } from '~/components/Faq' import { StarIcon, ClockIcon } from '@heroicons/react/24/outline' import { CheckBadgeIcon } from '@heroicons/react/24/solid' -import { LinkedInIcon } from '@components/LinkedInIcon' -import nr18plataforma from '../assets/nr18-plataforma.png' -import mulherdenegocios from '../assets/mulher-de-negocios.png' -import homemdenegocios from '../assets/homem-de-negocios.png' -import francis from '../assets/francis.jpeg' -import Natura from '../assets/natura.svg' -import Nissan from '../assets/nissan.svg' -import Kordsa from '../assets/kordsa.svg' -import Manserv from '../assets/manserv.svg' -import Semeq from '../assets/semeq.svg' +import { LinkedInIcon } from '~/components/LinkedInIcon' +import nr18plataforma from '~/assets/nr18-plataforma.png' +import mulherdenegocios from '~/assets/mulher-de-negocios.png' +import homemdenegocios from '~/assets/homem-de-negocios.png' +import francis from '~/assets/francis.jpeg' +import Natura from '~/assets/natura.svg' +import Nissan from '~/assets/nissan.svg' +import Kordsa from '~/assets/kordsa.svg' +import Manserv from '~/assets/manserv.svg' +import Semeq from '~/assets/semeq.svg' --- - +
    - +
    diff --git a/superpage/tsconfig.json b/superpage/tsconfig.json index 6d333cf..989f477 100644 --- a/superpage/tsconfig.json +++ b/superpage/tsconfig.json @@ -7,8 +7,7 @@ "jsxImportSource": "react", "baseUrl": ".", "paths": { - "@components/*": ["src/components/*"], - "@layouts/*": ["src/layouts/*"] + "~/*": ["src/*"] }, "strictNullChecks": true }