Skip to content

Commit 79b34a2

Browse files
committed
feat: add more books to learn
1 parent 96fbcad commit 79b34a2

File tree

2 files changed

+89
-28
lines changed

2 files changed

+89
-28
lines changed

src/components/aprende/books.rs

+87-26
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,87 @@ use leptos::{component, view, IntoView};
22

33
use crate::components::ButtonLink;
44

5+
#[derive(Clone, Debug)]
6+
struct BookData {
7+
name: &'static str,
8+
description: &'static str,
9+
english: bool,
10+
complete: bool,
11+
url: &'static str,
12+
url_name: &'static str,
13+
}
14+
15+
const OTHER_BOOKS: [BookData; 5] = [BookData {
16+
name: "Comprehensive Rust",
17+
description: "Curso gratuito y de código abierto desarrollado por el equipo de Android de Google. Cubre todos los aspectos de Rust, desde la sintaxis básica hasta temas avanzados. Se ven algunos temas especializados como Android, Chromium y Bare-metal.",
18+
english: false,
19+
complete: true,
20+
url: "https://google.github.io/comprehensive-rust/es/index.html",
21+
url_name: "Ir a Comprehensive Rust",
22+
}, BookData { name: "Libro de Referencia de Rust", description: "Este libro es la guía definitiva para dominar Rust, explicando construcciones, memoria, concurrencia y más, con apéndices y referencias. Ideal para sumergirse en la programación con Rust.", english: true, complete: false, url: "https://doc.rust-lang.org/reference/introduction.html", url_name: "Ir a “El Libro de Referencia”" }, BookData { name: "Embedded Book", description: "Guía para usar Rust en sistemas integrados 'Bare Metal', ideal para programación integrada con seguridad y conceptos avanzados. Cubre configuración, prácticas y manuales, enfocado en ARM Cortex-M, sin asumir conocimientos previos.", english: true, complete: true, url: "https://docs.rust-embedded.org/book/intro/index.html", url_name: "Ir a “Embedded Book”" },
23+
BookData {
24+
name: "The Rustonomicon",
25+
description: "¡Descubre los oscuros secretos de Rust no seguro! Este libro te lleva a las profundidades de la programación no segura en Rust, con detalles espeluznantes y útiles sobre su uso. Perfecto para aquellos que desean explorar las entrañas del lenguaje o escribir código no seguro. ¡Prepárate para una inmersión intensa en el lado oscuro de Rust!",
26+
english: true,
27+
complete: false,
28+
url: "https://doc.rust-lang.org/nomicon/intro.html",
29+
url_name: "Ir a “The Rustonomicon”",
30+
},
31+
BookData {
32+
name: "CXX - Safe Interop",
33+
description: "CXX facilita la integración segura entre Rust y C++, evitando errores comunes al llamar código de uno al otro. Con análisis estático y generadores de código, protege las invariantes de ambos lenguajes, asegurando una integración eficiente y correcta. ",
34+
english: true,
35+
complete: true,
36+
url: "https://cxx.rs/",
37+
url_name: "Ir a “CXX”",
38+
}];
39+
540
#[component]
641
pub fn Books() -> impl IntoView {
42+
let book = |book: BookData| {
43+
view! {
44+
<section class="w-full md:w-1/2 lg:w-1/3 h-full xs:px-8">
45+
<div class="relative group flex flex-col gap-y-6 border border-black p-2 sm:p-6 bg-orange-100 drop-shadow-[0_0_0_rgba(0,0,0)] hover:drop-shadow-[-4px_-4px_0_rgba(0,0,0)] justify-between group transition-all transform">
46+
{book.english.then_some(|| view! {
47+
<span class="absolute top-0 end-0 inline-flex items-center size-3.5 group-hover:min-w-28 rounded-full border-2 border-white text-xs font-medium transition-all transform -translate-y-1/2 translate-x-1/2 bg-blue-400 dark:border-slate-900 badge-container">
48+
<span class="sr-only text-black badge-content transition-all transform">
49+
"En Inglés"
50+
</span>
51+
</span>
52+
})}
53+
<h1 class="font-alfa-slab text-xl sm:text-2xl lg:text-3xl text-center mb-5">
54+
{book.name}
55+
</h1>
56+
<p class="container mx-auto">{book.description}</p>
57+
{(!book.complete).then_some(||
58+
view! {
59+
<div class="flex gap-2 items-center bg-orange-200 rounded-md px-2 py-3">
60+
<p class="font-work-sans text-black text-sm">"ℹ️ Este Libro está marcado como incompleto"</p>
61+
</div>
62+
}
63+
)}
64+
<div class="mx-auto">
65+
<ButtonLink
66+
href=book.url
67+
size="big"
68+
class="max-w-fit"
69+
>
70+
{book.url_name}
71+
</ButtonLink>
72+
</div>
73+
</div>
74+
</section>
75+
}
76+
};
77+
78+
let books_list = move || {
79+
OTHER_BOOKS
80+
.into_iter()
81+
.map(book)
82+
.collect::<Vec<_>>()
83+
.into_view()
84+
};
85+
786
view! {
887
<section class=" bg-orange-300/30 py-20">
988
<div class="container mx-auto mb-5">
@@ -14,8 +93,8 @@ pub fn Books() -> impl IntoView {
1493
"Hemos dedicado tiempo y esfuerzo a adaptar libros al español, estamos orgullosos de compartir estos recursos, esperando que contribuyan al acceso y comprensión de valiosos conocimientos."
1594
</p>
1695
</div>
17-
<div class="flex flex-col md:flex-row justify-center items-center container mx-auto mb-16 md:mb-28 gap-4">
18-
<section class="w-full md:w-1/2 px-10">
96+
<div class="flex flex-col md:flex-row justify-center items-center container mx-auto mb-16 md:mb-28 gap-4">
97+
<section class="w-full md:w-1/2 px-8">
1998
<div class="relative group flex flex-col gap-y-6 border border-black p-2 sm:p-6 bg-orange-100 drop-shadow-[0_0_0_rgba(0,0,0)] hover:drop-shadow-[-4px_-4px_0_rgba(0,0,0)] justify-between group transition-all transform">
2099
<span class="absolute top-0 end-0 inline-flex items-center size-3.5 group-hover:min-w-28 rounded-full border-2 border-white text-xs font-medium transition-all transform -translate-y-1/2 translate-x-1/2 bg-teal-500 dark:border-slate-900 badge-container">
21100
<span class="sr-only text-black badge-content transition-all transform ">
@@ -29,14 +108,14 @@ pub fn Books() -> impl IntoView {
29108
"Cariñosamente conocido como “el libro”, El Lenguaje de Programación Rust te dará una visión del lenguaje desde los principios básicos. Construirás unos cuantos proyectos por el camino y, al final, tendrás una comprensión sólida del lenguaje."
30109
</p>
31110
<div class="mx-auto">
32-
<ButtonLink href="https://rustlanges.github.io/rust-book-es" size="big">
111+
<ButtonLink href="https://rustlang-es.org/rust-book-es" size="big">
33112
"Ir a “El Libro”"
34113
</ButtonLink>
35114
</div>
36115
</div>
37116
</section>
38117

39-
<section class="w-full md:w-1/2 px-10 flex flex-col h-full ">
118+
<section class="w-full md:w-1/2 px-8 flex flex-col h-full">
40119
<div class="group flex flex-col gap-y-6 border border-black p-2 sm:p-6 bg-orange-100 drop-shadow-[0_0_0_rgba(0,0,0)] hover:drop-shadow-[-4px_-4px_0_rgba(0,0,0)] transition justify-between">
41120
<span class="absolute top-0 end-0 inline-flex items-center size-3.5 group-hover:min-w-28 rounded-full border-2 border-white text-xs font-medium transition-all transform -translate-y-1/2 translate-x-1/2 bg-yellow-500 dark:border-slate-900 badge-container">
42121
<span class="sr-only text-black badge-content transition-all transform ">
@@ -51,7 +130,7 @@ pub fn Books() -> impl IntoView {
51130
</p>
52131
<div class="mx-auto">
53132
<ButtonLink
54-
href="https://rustlanges.github.io/rust-para-dotnet-devs"
133+
href="https://rustlang-es.org/rust-para-dotnet-devs"
55134
size="big"
56135
>
57136
"Ir a la guía"
@@ -66,29 +145,11 @@ pub fn Books() -> impl IntoView {
66145
"¡Otros Libros!"
67146
</h1>
68147
<p class="max-w-screen-xl mx-auto text-center text-balance text-lg">
69-
"Estos son algunos otros libros que nos interesa compartir con ustedes."
148+
"Estos son algunos otros libros que nos interesa compartir."
70149
</p>
71150
</div>
72-
<div class="flex flex-col md:flex-row justify-center items-center container mx-auto">
73-
<section class="w-full lg:w-1/2 px-10">
74-
<div class="relative group flex flex-col gap-y-6 border border-black p-2 sm:p-6 bg-orange-100 drop-shadow-[0_0_0_rgba(0,0,0)] hover:drop-shadow-[-4px_-4px_0_rgba(0,0,0)] justify-between group transition-all transform">
75-
<h1 class="font-alfa-slab text-xl sm:text-2xl lg:text-3xl text-center mb-5">
76-
"Comprehensive Rust"
77-
</h1>
78-
<p class="container mx-auto">
79-
"Curso gratuito y de código abierto desarrollado por el equipo de Android de Google. Cubre todos los aspectos de Rust, desde la sintaxis básica hasta temas avanzados. Se ven algunos temas especializados como Android, Chromium y Bare-metal."
80-
</p>
81-
<div class="mx-auto">
82-
<ButtonLink
83-
href="https://google.github.io/comprehensive-rust/es/index.html"
84-
size="big"
85-
class="max-w-fit"
86-
>
87-
"Ir a Comprehensive Rust"
88-
</ButtonLink>
89-
</div>
90-
</div>
91-
</section>
151+
<div class="flex flex-row flex-wrap w-full gap-y-6 justify-center items-center container mx-auto">
152+
{books_list}
92153
</div>
93154
</section>
94155
}

src/components/header.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ pub fn Header() -> impl IntoView {
4040
}>
4141
<ul class="flex items-center gap-6 flex-col lg:flex-row lg:items-center">
4242
<li>
43-
<a href="https://rustlanges.github.io/rust-book-es" target="_blank">
43+
<a href="https://rustlang-es.org/rust-book-es" target="_blank">
4444
"El Libro"
4545
</a>
4646
</li>
@@ -55,7 +55,7 @@ pub fn Header() -> impl IntoView {
5555
<a href="/colaboradores">"Colaboradores"</a>
5656
</li>
5757
<li>
58-
<a href="https://rustlanges.github.io/blog/" target="_self">
58+
<a href="https://rustlang-es.org/blog/" target="_self">
5959
"Blog"
6060
</a>
6161
</li>

0 commit comments

Comments
 (0)