@rimelight/ui 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/package.json +22 -14
- package/src/components/BlogPost.astro +195 -0
- package/src/components/DynamicShowcase.astro +681 -0
- package/src/components/ExtendedCarousel.astro +107 -0
- package/src/components/FormattedDate.astro +6 -2
- package/src/components/Head.astro +153 -0
- package/src/components/ProjectPost.astro +197 -0
- package/src/components/RLHead.astro +3 -0
- package/src/components/ThemeToggle.astro +30 -42
- package/src/components/astro/RLAButton.astro +32 -42
- package/src/components/astro/RLAHeader.astro +75 -0
- package/src/components/nuxt/index.ts +1 -0
- package/src/components/vue/RLVButton.vue +50 -37
- package/src/components/vue/RLVHeader.vue +78 -0
- package/src/composables/index.ts +1 -1
- package/src/composables/{useComponentUI.ts → useUi.ts} +3 -3
- package/src/config/index.ts +0 -2
- package/src/config/site.config.ts +1 -1
- package/src/env.d.ts +13 -16
- package/src/integrations/ui.ts +106 -81
- package/src/integrations/vue-entrypoint.ts +6 -0
- package/src/middleware/sri.ts +2 -2
- package/src/styles/index.css +2 -0
- package/src/themes/button.theme.ts +350 -34
- package/src/themes/header.theme.ts +33 -0
- package/src/themes/index.ts +3 -1
- package/src/utils/index.ts +1 -2
- package/i18n-data.json +0 -186
- package/src/components/MissingTranslationBanner.astro +0 -39
- package/src/components/accordion/Accordion.astro +0 -257
- package/src/components/accordion/AccordionContent.astro +0 -34
- package/src/components/accordion/AccordionItem.astro +0 -29
- package/src/components/accordion/AccordionTrigger.astro +0 -33
- package/src/components/alert/Alert.astro +0 -34
- package/src/components/alert/AlertDescription.astro +0 -15
- package/src/components/alert/AlertTitle.astro +0 -17
- package/src/components/alert-dialog/AlertDialog.astro +0 -275
- package/src/components/alert-dialog/AlertDialogAction.astro +0 -46
- package/src/components/alert-dialog/AlertDialogCancel.astro +0 -46
- package/src/components/alert-dialog/AlertDialogContent.astro +0 -52
- package/src/components/alert-dialog/AlertDialogDescription.astro +0 -18
- package/src/components/alert-dialog/AlertDialogFooter.astro +0 -16
- package/src/components/alert-dialog/AlertDialogHeader.astro +0 -14
- package/src/components/alert-dialog/AlertDialogTitle.astro +0 -20
- package/src/components/alert-dialog/AlertDialogTrigger.astro +0 -47
- package/src/components/aspect-ratio/AspectRatio.astro +0 -32
- package/src/components/avatar/Avatar.astro +0 -29
- package/src/components/avatar/AvatarFallback.astro +0 -18
- package/src/components/avatar/AvatarImage.astro +0 -66
- package/src/components/badge/Badge.astro +0 -57
- package/src/components/breadcrumb/Breadcrumb.astro +0 -12
- package/src/components/breadcrumb/BreadcrumbEllipsis.astro +0 -29
- package/src/components/breadcrumb/BreadcrumbItem.astro +0 -15
- package/src/components/breadcrumb/BreadcrumbLink.astro +0 -24
- package/src/components/breadcrumb/BreadcrumbList.astro +0 -17
- package/src/components/breadcrumb/BreadcrumbPage.astro +0 -22
- package/src/components/breadcrumb/BreadcrumbSeparator.astro +0 -24
- package/src/components/button/Button.astro +0 -58
- package/src/components/button-group/ButtonGroup.astro +0 -64
- package/src/components/button-group/ButtonGroupSeparator.astro +0 -20
- package/src/components/button-group/ButtonGroupText.astro +0 -19
- package/src/components/card/Card.astro +0 -36
- package/src/components/card/CardAction.astro +0 -16
- package/src/components/card/CardContent.astro +0 -16
- package/src/components/card/CardDescription.astro +0 -16
- package/src/components/card/CardFooter.astro +0 -16
- package/src/components/card/CardHeader.astro +0 -19
- package/src/components/card/CardTitle.astro +0 -16
- package/src/components/carousel/Carousel.astro +0 -55
- package/src/components/carousel/CarouselContent.astro +0 -26
- package/src/components/carousel/CarouselItem.astro +0 -26
- package/src/components/carousel/CarouselNext.astro +0 -39
- package/src/components/carousel/CarouselPrevious.astro +0 -41
- package/src/components/carousel/carousel-script.ts +0 -188
- package/src/components/carousel/index.ts +0 -1
- package/src/components/checkbox/Checkbox.astro +0 -133
- package/src/components/collapsible/Collapsible.astro +0 -161
- package/src/components/collapsible/CollapsibleContent.astro +0 -22
- package/src/components/collapsible/CollapsibleTrigger.astro +0 -44
- package/src/components/dialog/Dialog.astro +0 -389
- package/src/components/dialog/DialogClose.astro +0 -35
- package/src/components/dialog/DialogContent.astro +0 -78
- package/src/components/dialog/DialogDescription.astro +0 -14
- package/src/components/dialog/DialogFooter.astro +0 -14
- package/src/components/dialog/DialogHeader.astro +0 -14
- package/src/components/dialog/DialogTitle.astro +0 -18
- package/src/components/dialog/DialogTrigger.astro +0 -47
- package/src/components/dropdown/Dropdown.astro +0 -604
- package/src/components/dropdown/DropdownContent.astro +0 -118
- package/src/components/dropdown/DropdownItem.astro +0 -48
- package/src/components/dropdown/DropdownLabel.astro +0 -29
- package/src/components/dropdown/DropdownSeparator.astro +0 -21
- package/src/components/dropdown/DropdownShortcut.astro +0 -17
- package/src/components/dropdown/DropdownSub.astro +0 -15
- package/src/components/dropdown/DropdownSubContent.astro +0 -39
- package/src/components/dropdown/DropdownSubTrigger.astro +0 -34
- package/src/components/dropdown/DropdownTrigger.astro +0 -52
- package/src/components/dropzone/Dropzone.astro +0 -236
- package/src/components/dropzone/DropzoneFilesList.astro +0 -26
- package/src/components/dropzone/DropzoneLoadingIndicator.astro +0 -10
- package/src/components/dropzone/DropzoneUploadIndicator.astro +0 -10
- package/src/components/embeds/YoutubeEmbed.astro +0 -94
- package/src/components/hero/Hero.astro +0 -166
- package/src/components/icons/Flag.astro +0 -62
- package/src/components/image/ExtendedImage.astro +0 -46
- package/src/components/image/Image.astro +0 -25
- package/src/components/input/Input.astro +0 -27
- package/src/components/input-group/InputGroup.astro +0 -28
- package/src/components/input-group/InputGroupAddon.astro +0 -76
- package/src/components/input-group/InputGroupButton.astro +0 -36
- package/src/components/input-group/InputGroupInput.astro +0 -18
- package/src/components/input-group/InputGroupText.astro +0 -17
- package/src/components/input-group/InputGroupTextarea.astro +0 -22
- package/src/components/input-otp/InputOtp.astro +0 -352
- package/src/components/input-otp/InputOtpGroup.astro +0 -16
- package/src/components/input-otp/InputOtpSeparator.astro +0 -25
- package/src/components/input-otp/InputOtpSlot.astro +0 -50
- package/src/components/input-otp/InputOtpTypes.ts +0 -6
- package/src/components/item/Item.astro +0 -52
- package/src/components/item/ItemActions.astro +0 -16
- package/src/components/item/ItemContent.astro +0 -16
- package/src/components/item/ItemDescription.astro +0 -19
- package/src/components/item/ItemFooter.astro +0 -16
- package/src/components/item/ItemGroup.astro +0 -16
- package/src/components/item/ItemHeader.astro +0 -16
- package/src/components/item/ItemMedia.astro +0 -40
- package/src/components/item/ItemSeparator.astro +0 -23
- package/src/components/item/ItemTitle.astro +0 -16
- package/src/components/kbd/Kbd.astro +0 -21
- package/src/components/kbd/KbdGroup.astro +0 -16
- package/src/components/label/Label.astro +0 -24
- package/src/components/marquee/Marquee.astro +0 -73
- package/src/components/native-select/NativeSelect.astro +0 -68
- package/src/components/native-select/NativeSelectOptGroup.astro +0 -15
- package/src/components/native-select/NativeSelectOption.astro +0 -15
- package/src/components/pagination/Pagination.astro +0 -20
- package/src/components/pagination/PaginationContent.astro +0 -16
- package/src/components/pagination/PaginationEllipsis.astro +0 -37
- package/src/components/pagination/PaginationItem.astro +0 -16
- package/src/components/pagination/PaginationLink.astro +0 -27
- package/src/components/pagination/PaginationNext.astro +0 -33
- package/src/components/pagination/PaginationPrevious.astro +0 -33
- package/src/components/popover/Popover.astro +0 -717
- package/src/components/popover/PopoverContent.astro +0 -102
- package/src/components/popover/PopoverDescription.astro +0 -14
- package/src/components/popover/PopoverHeader.astro +0 -14
- package/src/components/popover/PopoverTitle.astro +0 -14
- package/src/components/popover/PopoverTrigger.astro +0 -51
- package/src/components/progress/Progress.astro +0 -154
- package/src/components/prose/Prose.astro +0 -619
- package/src/components/radio-group/RadioGroup.astro +0 -162
- package/src/components/radio-group/RadioGroupItem.astro +0 -133
- package/src/components/radio-group/RadioGroupTypes.ts +0 -6
- package/src/components/section/Section.astro +0 -167
- package/src/components/select/Select.astro +0 -752
- package/src/components/select/SelectContent.astro +0 -94
- package/src/components/select/SelectGroup.astro +0 -9
- package/src/components/select/SelectItem.astro +0 -51
- package/src/components/select/SelectLabel.astro +0 -14
- package/src/components/select/SelectSearch.astro +0 -49
- package/src/components/select/SelectSeparator.astro +0 -12
- package/src/components/select/SelectTrigger.astro +0 -56
- package/src/components/select/SelectTypes.ts +0 -13
- package/src/components/select/SelectValue.astro +0 -19
- package/src/components/separator/Separator.astro +0 -36
- package/src/components/sheet/Sheet.astro +0 -15
- package/src/components/sheet/SheetClose.astro +0 -15
- package/src/components/sheet/SheetContent.astro +0 -89
- package/src/components/sheet/SheetDescription.astro +0 -16
- package/src/components/sheet/SheetFooter.astro +0 -16
- package/src/components/sheet/SheetHeader.astro +0 -16
- package/src/components/sheet/SheetTitle.astro +0 -16
- package/src/components/sheet/SheetTrigger.astro +0 -15
- package/src/components/sidebar/Sidebar.astro +0 -231
- package/src/components/sidebar/SidebarContent.astro +0 -25
- package/src/components/sidebar/SidebarFooter.astro +0 -22
- package/src/components/sidebar/SidebarGroup.astro +0 -22
- package/src/components/sidebar/SidebarGroupContent.astro +0 -22
- package/src/components/sidebar/SidebarGroupLabel.astro +0 -53
- package/src/components/sidebar/SidebarHeader.astro +0 -22
- package/src/components/sidebar/SidebarInput.astro +0 -24
- package/src/components/sidebar/SidebarInset.astro +0 -22
- package/src/components/sidebar/SidebarMenu.astro +0 -22
- package/src/components/sidebar/SidebarMenuAction.astro +0 -63
- package/src/components/sidebar/SidebarMenuBadge.astro +0 -31
- package/src/components/sidebar/SidebarMenuButton.astro +0 -124
- package/src/components/sidebar/SidebarMenuItem.astro +0 -22
- package/src/components/sidebar/SidebarMenuSkeleton.astro +0 -43
- package/src/components/sidebar/SidebarMenuSub.astro +0 -25
- package/src/components/sidebar/SidebarMenuSubButton.astro +0 -52
- package/src/components/sidebar/SidebarMenuSubItem.astro +0 -17
- package/src/components/sidebar/SidebarProvider.astro +0 -215
- package/src/components/sidebar/SidebarRail.astro +0 -72
- package/src/components/sidebar/SidebarSeparator.astro +0 -25
- package/src/components/sidebar/SidebarTrigger.astro +0 -69
- package/src/components/skeleton/Skeleton.astro +0 -14
- package/src/components/slider/Slider.astro +0 -425
- package/src/components/spinner/Spinner.astro +0 -23
- package/src/components/switch/Switch.astro +0 -192
- package/src/components/switch/SwitchTypes.ts +0 -6
- package/src/components/table/Table.astro +0 -20
- package/src/components/table/TableBody.astro +0 -18
- package/src/components/table/TableCaption.astro +0 -18
- package/src/components/table/TableCell.astro +0 -18
- package/src/components/table/TableFoot.astro +0 -18
- package/src/components/table/TableHead.astro +0 -18
- package/src/components/table/TableHeader.astro +0 -18
- package/src/components/table/TableRow.astro +0 -17
- package/src/components/tabs/Tabs.astro +0 -270
- package/src/components/tabs/TabsContent.astro +0 -28
- package/src/components/tabs/TabsList.astro +0 -23
- package/src/components/tabs/TabsTrigger.astro +0 -34
- package/src/components/textarea/Textarea.astro +0 -31
- package/src/components/toast/ToastDescription.astro +0 -22
- package/src/components/toast/ToastItem.astro +0 -56
- package/src/components/toast/ToastTemplate.astro +0 -27
- package/src/components/toast/ToastTitle.astro +0 -59
- package/src/components/toast/Toaster.astro +0 -981
- package/src/components/toast/index.ts +0 -1
- package/src/components/toast/toast-manager.ts +0 -234
- package/src/components/toggle/Toggle.astro +0 -174
- package/src/components/toggle/ToggleTypes.ts +0 -14
- package/src/components/tooltip/Tooltip.astro +0 -422
- package/src/components/tooltip/TooltipContent.astro +0 -83
- package/src/components/tooltip/TooltipTrigger.astro +0 -13
- package/src/components/video/Video.astro +0 -121
- package/src/config/cookies.ts +0 -5
- package/src/config/links.ts +0 -4
- package/src/domain/cms/index.ts +0 -1
- package/src/domain/cms/types.ts +0 -20
- package/src/domain/i18n/constants.ts +0 -21
- package/src/domain/i18n/cookie-storage.ts +0 -13
- package/src/domain/i18n/country-to-locale-map.ts +0 -67
- package/src/domain/i18n/fallbacks.generated.ts +0 -230
- package/src/domain/i18n/fetcher.ts +0 -278
- package/src/domain/i18n/flags.ts +0 -16
- package/src/domain/i18n/format.ts +0 -90
- package/src/domain/i18n/index.ts +0 -10
- package/src/domain/i18n/middleware/i18n.ts +0 -161
- package/src/domain/i18n/resolve-locale.ts +0 -55
- package/src/domain/i18n/runtime-constants.ts +0 -14
- package/src/domain/i18n/schema.ts +0 -29
- package/src/domain/index.ts +0 -4
- package/src/domain/seo/constants.ts +0 -6
- package/src/domain/seo/index.ts +0 -3
- package/src/domain/seo/services/index.ts +0 -3
- package/src/domain/seo/services/llms.ts +0 -56
- package/src/domain/seo/services/robots.ts +0 -12
- package/src/domain/seo/services/sitemap.ts +0 -56
- package/src/domain/seo/utils.ts +0 -36
- package/src/domain/theme/constants.ts +0 -6
- package/src/domain/theme/index.ts +0 -2
- package/src/domain/theme/schema.ts +0 -10
- package/src/i18n.generated.d.ts +0 -202
- package/src/lib/component-preview.ts +0 -73
- package/src/lib/index.ts +0 -6
- package/src/lib/remark/remark-modified-time.ts +0 -13
- package/src/lib/showcase-preview-elements.ts +0 -408
- package/src/lib/showcase-renderer.ts +0 -218
- package/src/lib/showcase-utils.ts +0 -189
- package/src/lib/turnstile.ts +0 -35
- package/src/lib/utils/starwind/positioning.ts +0 -318
- package/src/locales/de/blog.json +0 -9
- package/src/locales/de/common.json +0 -19
- package/src/locales/de/errors.json +0 -6
- package/src/locales/de/home.json +0 -20
- package/src/locales/de/messages.json +0 -8
- package/src/locales/de/nav.json +0 -13
- package/src/locales/de/projects.json +0 -9
- package/src/locales/de/services.json +0 -43
- package/src/locales/en/blog.json +0 -9
- package/src/locales/en/chat.json +0 -29
- package/src/locales/en/common.json +0 -19
- package/src/locales/en/cookie_notice.json +0 -11
- package/src/locales/en/editor.json +0 -24
- package/src/locales/en/errors.json +0 -6
- package/src/locales/en/home.json +0 -20
- package/src/locales/en/messages.json +0 -8
- package/src/locales/en/nav.json +0 -13
- package/src/locales/en/projects.json +0 -9
- package/src/locales/en/services.json +0 -43
- package/src/locales/es/blog.json +0 -9
- package/src/locales/es/common.json +0 -19
- package/src/locales/es/errors.json +0 -6
- package/src/locales/es/home.json +0 -20
- package/src/locales/es/messages.json +0 -8
- package/src/locales/es/nav.json +0 -13
- package/src/locales/es/projects.json +0 -9
- package/src/locales/es/services.json +0 -43
- package/src/locales/ja/blog.json +0 -9
- package/src/locales/ja/common.json +0 -19
- package/src/locales/ja/errors.json +0 -6
- package/src/locales/ja/home.json +0 -20
- package/src/locales/ja/messages.json +0 -8
- package/src/locales/ja/nav.json +0 -13
- package/src/locales/ja/projects.json +0 -9
- package/src/locales/ja/services.json +0 -43
- package/src/locales/pt/blog.json +0 -9
- package/src/locales/pt/chat.json +0 -29
- package/src/locales/pt/common.json +0 -19
- package/src/locales/pt/cookie_notice.json +0 -11
- package/src/locales/pt/editor.json +0 -24
- package/src/locales/pt/errors.json +0 -6
- package/src/locales/pt/home.json +0 -20
- package/src/locales/pt/messages.json +0 -8
- package/src/locales/pt/nav.json +0 -13
- package/src/locales/pt/projects.json +0 -9
- package/src/locales/pt/services.json +0 -43
- package/src/utils/server/cookies.ts +0 -98
- package/src/utils/server/index.ts +0 -1
- package/src/utils/shared/deep-merge.ts +0 -36
- package/src/utils/shared/index.ts +0 -3
- package/src/utils/shared/parse-boolean.ts +0 -14
- /package/src/utils/{shared/embed.ts → embed.ts} +0 -0
package/src/locales/es/blog.json
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Blog | Daniel Marchi",
|
|
3
|
-
"hero_title": "Blog",
|
|
4
|
-
"hero_description": "Mis reflexiones a lo largo de mi viaje como desarrollador.",
|
|
5
|
-
"latest_article": "Último artículo",
|
|
6
|
-
"latest": "Último",
|
|
7
|
-
"read_article": "Leer artículo",
|
|
8
|
-
"all_posts": "Todos los artículos"
|
|
9
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"seo": {
|
|
3
|
-
"title": "Zero-JS i18n Astro Starter para Cloudflare Workers",
|
|
4
|
-
"description": "Lance aplicaciones multilingües más rápido sin el peso de la hidratación. Integración total con Cloudflare Workers & KV, generación TypeScript automatizada y caché en el edge configurado."
|
|
5
|
-
},
|
|
6
|
-
"nav": {
|
|
7
|
-
"home": "Componentes e islas de Astro",
|
|
8
|
-
"blog": "Ejemplos de i18n con Markdown",
|
|
9
|
-
"mobileButton": "Menú"
|
|
10
|
-
},
|
|
11
|
-
"footer": {
|
|
12
|
-
"license": "Bajo la licencia MIT."
|
|
13
|
-
},
|
|
14
|
-
"notFound": {
|
|
15
|
-
"title": "404 — Página no encontrada",
|
|
16
|
-
"message": "La página que buscas no existe o ha sido movida.",
|
|
17
|
-
"backToHome": "Volver a la página de inicio"
|
|
18
|
-
}
|
|
19
|
-
}
|
package/src/locales/es/home.json
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Daniel Marchi | Desarrollador Web",
|
|
3
|
-
"meta_description": "Soy un desarrollador web especializado en Astro y sitios web de alto rendimiento.",
|
|
4
|
-
"hero_title": "Hola, soy Daniel Marchi",
|
|
5
|
-
"hero_description": "Soy un desarrollador web especializado en Astro y sitios web de alto rendimiento.",
|
|
6
|
-
"hero_view_components": "Ver Componentes",
|
|
7
|
-
"hero_contact_me": "Contáctame",
|
|
8
|
-
"stack_title": "Web Moderna, Stack Moderno",
|
|
9
|
-
"stack_description": "Ayudo a individuos y empresas a construir aplicaciones web de alto rendimiento desplegadas en el edge. Desde la arquitectura hasta el despliegue, me aseguro de que su proyecto esté construido para escalar.",
|
|
10
|
-
"stack_view_services": "Ver Servicios",
|
|
11
|
-
"stack_resume": "Currículum",
|
|
12
|
-
"marquee_title": "Construido y desplegado con estas increíbles tecnologías:",
|
|
13
|
-
"projects_title": "Proyectos Recientes",
|
|
14
|
-
"projects_description": "Una selección de mis trabajos técnicos más recientes y proyectos de código abierto.",
|
|
15
|
-
"projects_view_all": "Ver Todos los Proyectos",
|
|
16
|
-
"cta_title": "¿Listo para Construir Algo Increíble?",
|
|
17
|
-
"cta_description": "Actualmente estoy disponible para nuevos proyectos y consultoría. Trabajemos juntos para dar vida a su visión.",
|
|
18
|
-
"cta_contact": "Ponerse en Contacto",
|
|
19
|
-
"cta_resume": "Descargar Currículum"
|
|
20
|
-
}
|
package/src/locales/es/nav.json
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"home": "Inicio",
|
|
3
|
-
"projects": "Proyectos",
|
|
4
|
-
"blog": "Blog",
|
|
5
|
-
"about": "Sobre mí",
|
|
6
|
-
"services": "Servicios",
|
|
7
|
-
"resume": "Currículum",
|
|
8
|
-
"contact": "Contacto",
|
|
9
|
-
"components": "Componentes",
|
|
10
|
-
"privacy_policy": "Política de Privacidad",
|
|
11
|
-
"terms_of_service": "Términos de Servicio",
|
|
12
|
-
"cookie_policy": "Política de Cookies"
|
|
13
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Proyectos | Daniel Marchi",
|
|
3
|
-
"hero_title": "Proyectos",
|
|
4
|
-
"hero_description": "Una muestra de mi trabajo y contribuciones de código abierto.",
|
|
5
|
-
"latest": "Último proyecto",
|
|
6
|
-
"latest_badge": "Último",
|
|
7
|
-
"view_project": "Ver proyecto",
|
|
8
|
-
"all": "Todos los proyectos"
|
|
9
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Servicios | Daniel Marchi",
|
|
3
|
-
"hero_title": "Servicios Premium",
|
|
4
|
-
"hero_description": "Proporciono servicios de desarrollo y diseño de alta calidad para ayudar a que su negocio crezca y se destaque en el panorama digital.",
|
|
5
|
-
"capabilities_title": "Capacidades",
|
|
6
|
-
"capabilities_description": "Una visión general de los servicios principales que ofrezco a mis clientes.",
|
|
7
|
-
"web_dev_title": "Desarrollo Web",
|
|
8
|
-
"web_dev_description": "Creación de aplicaciones web de alto rendimiento, accesibles y escalables utilizando tecnologías modernas como Astro, Vue y Nuxt.",
|
|
9
|
-
"ui_ux_title": "Diseño UI/UX",
|
|
10
|
-
"ui_ux_description": "Creación de interfaces de usuario intuitivas y visualmente impresionantes enfocándose en la experiencia del usuario y la identidad de la marca.",
|
|
11
|
-
"perf_title": "Optimización del Rendimiento",
|
|
12
|
-
"perf_description": "Auditoría y optimización de su sitio web para velocidad, SEO y accesibilidad para lograr puntuaciones perfectas en Lighthouse.",
|
|
13
|
-
"perf_security_title": "Rendimiento y Seguridad",
|
|
14
|
-
"perf_security_description": "Sus usuarios merecen una experiencia rápida y segura. Construyo sitios web que se cargan instantáneamente y funcionan perfectamente en todos los dispositivos.",
|
|
15
|
-
"testimonials_title": "Lo Que Dicen Nuestros Usuarios",
|
|
16
|
-
"testimonials_description": "Únase a miles de desarrolladores que construyen la próxima generación de la web con Astronaut.",
|
|
17
|
-
"faq_title": "Preguntas Frecuentes (FAQ)",
|
|
18
|
-
"faq_description": "Todo lo que necesita saber sobre Astronaut y cómo construir cosas increíbles con él.",
|
|
19
|
-
"cta_title": "¿Listo para Comenzar?",
|
|
20
|
-
"cta_description": "Colaboremos en su próximo gran proyecto. Actualmente estoy disponible para trabajos independientes y consultoría.",
|
|
21
|
-
"cta_contact": "Ponerse en Contacto",
|
|
22
|
-
"cta_portfolio": "Ver Portafolio",
|
|
23
|
-
"badge_ceo": "CEO",
|
|
24
|
-
"badge_founder": "Fundador",
|
|
25
|
-
"badge_cto": "CTO",
|
|
26
|
-
"badge_senior_ui": "Ingeniero UI Sénior",
|
|
27
|
-
"badge_chef": "Chef",
|
|
28
|
-
"badge_product_designer": "Diseñador de Producto",
|
|
29
|
-
"testimonial_1": "Astronaut es sin duda el mejor boilerplate que he usado. La velocidad y la arquitectura limpia encajan perfectamente con cómo quiero construir.",
|
|
30
|
-
"testimonial_2": "La biblioteca de componentes y la forma en que maneja Tailwind 4 es un cambio de juego. Pude lanzar mi proyecto en un tiempo récord.",
|
|
31
|
-
"testimonial_3": "Finalmente, un boilerplate que no se siente inflado pero que me brinda todas las herramientas que necesito. El soporte de SSR en Cloudflare es impecable.",
|
|
32
|
-
"testimonial_4": "El mejor punto de partida para cualquier proyecto web moderno. La experiencia del desarrollador es de clase mundial y el rendimiento es insuperable.",
|
|
33
|
-
"testimonial_5": "Increíble atención al detalle en la estructura. Sigue todas las mejores prácticas sin agregar complejidad innecesaria.",
|
|
34
|
-
"testimonial_6": "¡Todo es tan fluido! Transiciones, componentes, lógica: todo simplemente funciona. La mejor decisión para nuestra última startup.",
|
|
35
|
-
"faq_category_general": "General",
|
|
36
|
-
"faq_q1": "¿Qué es Astronaut?",
|
|
37
|
-
"faq_a1": "Astronaut es un boilerplate listo para producción para Astro, diseñado con la velocidad, el rendimiento y las mejores prácticas en mente. Utiliza Tailwind CSS 4, patrones de Nuxt UI y una arquitectura limpia.",
|
|
38
|
-
"faq_q2": "¿Cómo empiezo?",
|
|
39
|
-
"faq_a2": "Simplemente puede clonar el repositorio, instalar las dependências con pnpm y arrancar el servidor dev. La estructura del proyecto es estándar de Astro, así que se sentirá como en casa.",
|
|
40
|
-
"faq_category_technical": "Técnico",
|
|
41
|
-
"faq_q3": "¿Admite Renderizado en el Lado del Servidor (SSR)?",
|
|
42
|
-
"faq_a3": "Sí, Astronaut admite totalmente SSR y está configurado para despliegue en Cloudflare Workers por defecto, ofreciéndole lo mejor de ambos mundos: velocidad de estático y potencia de dinâmico."
|
|
43
|
-
}
|
package/src/locales/ja/blog.json
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"seo": {
|
|
3
|
-
"title": "Cloudflare Workers 用 Zero-JS i18n Astro スターター",
|
|
4
|
-
"description": "ハイドレーションの肥大化なしで、多言語アプリをより速く提供します。Cloudflare Workers & KV との完全な統合、自動化された TypeScript 生成、およびエッジキャッシングを標準装備しています。"
|
|
5
|
-
},
|
|
6
|
-
"nav": {
|
|
7
|
-
"home": "Astro コンポーネント & アイランド",
|
|
8
|
-
"blog": "Markdown による i18n の例",
|
|
9
|
-
"mobileButton": "メニュー"
|
|
10
|
-
},
|
|
11
|
-
"footer": {
|
|
12
|
-
"license": "MIT ライセンスの下で提供されています。"
|
|
13
|
-
},
|
|
14
|
-
"notFound": {
|
|
15
|
-
"title": "404 — ページが見つかりません",
|
|
16
|
-
"message": "お探しのページは存在しないか、移動されました。",
|
|
17
|
-
"backToHome": "ホームページに戻る"
|
|
18
|
-
}
|
|
19
|
-
}
|
package/src/locales/ja/home.json
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Daniel Marchi | Web Developer",
|
|
3
|
-
"meta_description": "私はAstroとハイパフォーマンスなウェブサイトを専門とするウェブデベロッパーです。",
|
|
4
|
-
"hero_title": "こんにちは、ダニエル・マルキです",
|
|
5
|
-
"hero_description": "私はAstroとハイパフォーマンスなウェブサイトを専門とするウェブデベロッパーです。",
|
|
6
|
-
"hero_view_components": "コンポーネントを表示",
|
|
7
|
-
"hero_contact_me": "お問い合わせ",
|
|
8
|
-
"stack_title": "モダンウェブ、モダンスタック",
|
|
9
|
-
"stack_description": "エッジにデプロイされたハイパフォーマンスなウェブアプリケーションの構築を、個人および企業向けにサポートしています。アーキテクチャからデプロイまで、プロジェクトがスケールするように構築します。",
|
|
10
|
-
"stack_view_services": "サービスを表示",
|
|
11
|
-
"stack_resume": "履歴書",
|
|
12
|
-
"marquee_title": "これらの素晴らしいテクノロジーで構築・デプロイされています:",
|
|
13
|
-
"projects_title": "最近のプロジェクト",
|
|
14
|
-
"projects_description": "最新の技術的な仕事とオープンソースプロジェクトのセレクション。",
|
|
15
|
-
"projects_view_all": "すべてのプロジェクトを表示",
|
|
16
|
-
"cta_title": "素晴らしいものを一緒に作りませんか?",
|
|
17
|
-
"cta_description": "現在、新しいプロジェクトやコンサルティングを受け付けています。あなたのビジョンを形にするために一緒に働きましょう。",
|
|
18
|
-
"cta_contact": "連絡を取る",
|
|
19
|
-
"cta_resume": "履歴書をダウンロード"
|
|
20
|
-
}
|
package/src/locales/ja/nav.json
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"home": "ホーム",
|
|
3
|
-
"projects": "プロジェクト",
|
|
4
|
-
"blog": "ブログ",
|
|
5
|
-
"about": "私について",
|
|
6
|
-
"services": "サービス",
|
|
7
|
-
"resume": "履歴書",
|
|
8
|
-
"contact": "お問い合わせ",
|
|
9
|
-
"components": "コンポーネント",
|
|
10
|
-
"privacy_policy": "プライバシーポリシー",
|
|
11
|
-
"terms_of_service": "利用規約",
|
|
12
|
-
"cookie_policy": "クッキーポリシー"
|
|
13
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "サービス | ダニエル・マルキ",
|
|
3
|
-
"hero_title": "プレミアムサービス",
|
|
4
|
-
"hero_description": "ビジネスの成長を支援し、デジタル環境で際立つ高品質な開発・デザインサービスを提供します。",
|
|
5
|
-
"capabilities_title": "主要サービス",
|
|
6
|
-
"capabilities_description": "クライアントに提供している主要なサービスの概要です。",
|
|
7
|
-
"web_dev_title": "ウェブ開発",
|
|
8
|
-
"web_dev_description": "Astro、Vue、Nuxt などの最新技術を活用し、高パフォーマンスでアクセシブル、拡張性のあるウェブアプリケーションを構築します。",
|
|
9
|
-
"ui_ux_title": "UI/UX デザイン",
|
|
10
|
-
"ui_ux_description": "ユーザーエクスペリエンスとブランドアイデンティティに焦点を当て、直感的で視覚的に美しいユーザーインターフェースを作成します。",
|
|
11
|
-
"perf_title": "パフォーマンス最適化",
|
|
12
|
-
"perf_description": "速度、SEO、アクセシビリティについてウェブサイトを監査および最適化し、完璧な Lighthouse スコアを目指します。",
|
|
13
|
-
"perf_security_title": "パフォーマンスとセキュリティ",
|
|
14
|
-
"perf_security_description": "ユーザーは高速で安全な体験を受ける権利があります。瞬時に読み込み、すべてのデバイスで完璧に動作するウェブサイトを構築します。",
|
|
15
|
-
"testimonials_title": "ユーザーの声",
|
|
16
|
-
"testimonials_description": "Astronaut を使って次世代のウェブを構築している何千人もの開発者の仲間入りをしましょう。",
|
|
17
|
-
"faq_title": "よくある質問",
|
|
18
|
-
"faq_description": "Astronaut について、およびそれを使って素晴らしいものを構築する方法について知っておくべきすべてのこと。",
|
|
19
|
-
"cta_title": "始める準備はできましたか?",
|
|
20
|
-
"cta_description": "次の大きなプロジェクトで協力しましょう。現在、フリーランスの仕事やコンサルティングを受け付けています。",
|
|
21
|
-
"cta_contact": "お問い合わせ",
|
|
22
|
-
"cta_portfolio": "ポートフォリオを見る",
|
|
23
|
-
"badge_ceo": "CEO",
|
|
24
|
-
"badge_founder": "創設者",
|
|
25
|
-
"badge_cto": "CTO",
|
|
26
|
-
"badge_senior_ui": "シニア UI エンジニア",
|
|
27
|
-
"badge_chef": "シェフ",
|
|
28
|
-
"badge_product_designer": "プロダクトデザイナー",
|
|
29
|
-
"testimonial_1": "Astronaut は間違いなく私がこれまで使った中で最高のボイラープレートです。速度とクリーンなアーキテクチャが、私の構築したい方法と完璧にマッチしています。",
|
|
30
|
-
"testimonial_2": "コンポーネントライブラリと Tailwind 4 の扱い方は革新的です。記録的な速さでプロジェクトを立ち上げることができました。",
|
|
31
|
-
"testimonial_3": "ついに、肥大化せず、必要なツールをすべて提供してくれるボイラープレートに出会えました。Cloudflare 上での SSR サポートは完璧です。",
|
|
32
|
-
"testimonial_4": "あらゆるモダンなウェブプロジェクトにとって最高の出発点です。開発者体験はワールドクラスで、パフォーマンスは他に類を見ません。",
|
|
33
|
-
"testimonial_5": "構造への細部へのこだわりが素晴らしいです。不必要な複雑さを加えることなく、すべてのベストプラクティスに従っています。",
|
|
34
|
-
"testimonial_6": "すべてがとてもスムーズです!トランジション、コンポーネント、ロジック - すべてがうまく噛み合っています。最新のスタートアップにとって最良の決断でした。",
|
|
35
|
-
"faq_category_general": "全般",
|
|
36
|
-
"faq_q1": "Astronaut とは何ですか?",
|
|
37
|
-
"faq_a1": "Astronaut は、速度、パフォーマンス、ベストプラクティスを念頭に置いて設計された、Astro 用のプロダクション対応ボイラープレートです。Tailwind CSS 4、Nuxt UI パターン、クリーンなアーキテクチャを使用しています。",
|
|
38
|
-
"faq_q2": "どのように始めればよいですか?",
|
|
39
|
-
"faq_a2": "リポジトリをクローンし、pnpm で依存関係をインストールして、開発サーバーを実行するだけです。プロジェクト構造は標準的な Astro なので、すぐに慣れることができます。",
|
|
40
|
-
"faq_category_technical": "技術",
|
|
41
|
-
"faq_q3": "サーバーサイドレンダリング (SSR) をサポートしていますか?",
|
|
42
|
-
"faq_a3": "はい、Astronaut は SSR を完全にサポートしており、デフォルトで Cloudflare Workers へのデプロイ用に構成されています。静的な速度と動的なパワーの両方の利点を提供します。"
|
|
43
|
-
}
|
package/src/locales/pt/blog.json
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Blog | Daniel Marchi",
|
|
3
|
-
"hero_title": "Blog",
|
|
4
|
-
"hero_description": "Minhas reflexões ao longo da minha jornada como desenvolvedor.",
|
|
5
|
-
"latest_article": "Artigo Mais Recente",
|
|
6
|
-
"latest": "Último",
|
|
7
|
-
"read_article": "Ler Artigo",
|
|
8
|
-
"all_posts": "Todos os Artigos"
|
|
9
|
-
}
|
package/src/locales/pt/chat.json
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"title": "Entrar em uma Sala de Chat",
|
|
3
|
-
"description": "Entre em uma sala para começar a conversar",
|
|
4
|
-
"heading": "Chat em Tempo Real",
|
|
5
|
-
"intro": "Entre em um nome de sala abaixo para participar de uma conversa. Cada sala é uma instância única de Durable Object!",
|
|
6
|
-
"label": "Nome da Sala",
|
|
7
|
-
"placeholder": "ex: geral, ajuda, cafe",
|
|
8
|
-
"button": "Entrar na Sala",
|
|
9
|
-
"room": {
|
|
10
|
-
"title": "Sala de Chat",
|
|
11
|
-
"connecting": "Conectando…",
|
|
12
|
-
"connected": "Conectado",
|
|
13
|
-
"disconnected": "Desconectado",
|
|
14
|
-
"placeholder": "Digite uma mensagem…",
|
|
15
|
-
"send": "Enviar",
|
|
16
|
-
"system": {
|
|
17
|
-
"joining": "Entrando na sala…",
|
|
18
|
-
"error": "Erro de conexão",
|
|
19
|
-
"joined": "entrou na sala",
|
|
20
|
-
"left": "saiu da sala",
|
|
21
|
-
"reconnecting": "Reconectando em {delay} segundos... (tentativa {attempt}/{max})",
|
|
22
|
-
"fail_reconnect": "Falha ao reconectar. Por favor, atualize a página.",
|
|
23
|
-
"no_connect": "Não é possível enviar mensagem: não conectado",
|
|
24
|
-
"prompt_user": "Digite seu nome de usuário:",
|
|
25
|
-
"you": "(Você)",
|
|
26
|
-
"online_users": "Usuários Online:"
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"seo": {
|
|
3
|
-
"title": "Zero-JS i18n Astro Starter para Cloudflare Workers",
|
|
4
|
-
"description": "Lance apps multilíngues mais rápido sem o peso da hidratação. Integração total com Cloudflare Workers & KV, geração TypeScript automatizada e cache no edge configurado."
|
|
5
|
-
},
|
|
6
|
-
"nav": {
|
|
7
|
-
"home": "Componentes & islands do Astro",
|
|
8
|
-
"blog": "Exemplos de i18n com Markdown",
|
|
9
|
-
"mobileButton": "Menu"
|
|
10
|
-
},
|
|
11
|
-
"footer": {
|
|
12
|
-
"license": "Sob a licença MIT."
|
|
13
|
-
},
|
|
14
|
-
"notFound": {
|
|
15
|
-
"title": "404 — Página não encontrada",
|
|
16
|
-
"message": "A página que você procura não existe ou foi movida.",
|
|
17
|
-
"backToHome": "Voltar para a página inicial"
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"title": "Política de Cookies",
|
|
3
|
-
"description": "Este site não utiliza cookies, isto é um exemplo de como poderia funcionar no seu site de acordo com a sua",
|
|
4
|
-
"privacy_policy": "Política de Privacidade",
|
|
5
|
-
"reject_all": "Rejeitar Tudo",
|
|
6
|
-
"accept_all": "Aceitar Tudo",
|
|
7
|
-
"accepted_toast": "Cookies Aceitos",
|
|
8
|
-
"accepted_description": "Você aceitou todos os cookies.",
|
|
9
|
-
"rejected_toast": "Cookies Rejeitados",
|
|
10
|
-
"rejected_description": "Você rejeitou todos os cookies."
|
|
11
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"title": "Editor",
|
|
3
|
-
"description": "Editor de documentos colaborativo em tempo real",
|
|
4
|
-
"collaborative_editor": "Editor Colaborativo",
|
|
5
|
-
"status": {
|
|
6
|
-
"connecting": "Conectando…",
|
|
7
|
-
"connected": "Conectado",
|
|
8
|
-
"disconnected": "Desconectado"
|
|
9
|
-
},
|
|
10
|
-
"history": "Histórico",
|
|
11
|
-
"version_history": "Histórico de Versões",
|
|
12
|
-
"no_versions": "Nenhuma versão ainda.",
|
|
13
|
-
"placeholder": "Comece a digitar... suas mudanças são sincronizadas em tempo real.",
|
|
14
|
-
"word_count": {
|
|
15
|
-
"word": "palavra",
|
|
16
|
-
"words": "palavras",
|
|
17
|
-
"character": "caractere",
|
|
18
|
-
"characters": "caracteres"
|
|
19
|
-
},
|
|
20
|
-
"save": {
|
|
21
|
-
"saved": "Salvo"
|
|
22
|
-
},
|
|
23
|
-
"restore_confirm": "Restaurar esta versão? O conteúdo atual será substituído."
|
|
24
|
-
}
|
package/src/locales/pt/home.json
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Daniel Marchi | Desenvolvedor Web",
|
|
3
|
-
"meta_description": "Sou um desenvolvedor web especializado em Astro e websites de alta performance.",
|
|
4
|
-
"hero_title": "Olá, eu sou Daniel Marchi",
|
|
5
|
-
"hero_description": "Sou um desenvolvedor web especializado em Astro e websites de alta performance.",
|
|
6
|
-
"hero_view_components": "Ver Componentes",
|
|
7
|
-
"hero_contact_me": "Fale Comigo",
|
|
8
|
-
"stack_title": "Web Moderna, Stack Moderna",
|
|
9
|
-
"stack_description": "Ajudo indivíduos e empresas a construir aplicações web de alta performance distribuídas no edge. Da arquitetura ao deployment, garanto que o seu projeto seja construído para escala.",
|
|
10
|
-
"stack_view_services": "Ver Serviços",
|
|
11
|
-
"stack_resume": "Currículo",
|
|
12
|
-
"marquee_title": "Construído e implementado com estas tecnologias incríveis:",
|
|
13
|
-
"projects_title": "Projetos Recentes",
|
|
14
|
-
"projects_description": "Uma seleção dos meus trabalhos técnicos mais recentes e projetos de código aberto.",
|
|
15
|
-
"projects_view_all": "Ver Todos os Projetos",
|
|
16
|
-
"cta_title": "Pronto para Construir Algo Incrível?",
|
|
17
|
-
"cta_description": "Estou disponível para novos projetos e consultoria. Vamos trabalhar juntos para dar vida à sua visão.",
|
|
18
|
-
"cta_contact": "Entre em Contato",
|
|
19
|
-
"cta_resume": "Baixar Currículo"
|
|
20
|
-
}
|
package/src/locales/pt/nav.json
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"home": "Início",
|
|
3
|
-
"projects": "Projetos",
|
|
4
|
-
"blog": "Blog",
|
|
5
|
-
"about": "Sobre",
|
|
6
|
-
"services": "Serviços",
|
|
7
|
-
"resume": "Currículo",
|
|
8
|
-
"contact": "Contato",
|
|
9
|
-
"components": "Componentes",
|
|
10
|
-
"privacy_policy": "Política de Privacidade",
|
|
11
|
-
"terms_of_service": "Termos de Serviço",
|
|
12
|
-
"cookie_policy": "Política de Cookies"
|
|
13
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Projetos | Daniel Marchi",
|
|
3
|
-
"hero_title": "Projetos",
|
|
4
|
-
"hero_description": "Uma vitrine do meu trabalho e contribuições de código aberto.",
|
|
5
|
-
"latest": "Projeto Mais Recente",
|
|
6
|
-
"latest_badge": "Último",
|
|
7
|
-
"view_project": "Ver Projeto",
|
|
8
|
-
"all": "Todos os Projetos"
|
|
9
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Serviços | Daniel Marchi",
|
|
3
|
-
"hero_title": "Serviços Premium",
|
|
4
|
-
"hero_description": "Eu forneço serviços de desenvolvimento e design de alta qualidade para ajudar o seu negócio a crescer e se destacar no cenário digital.",
|
|
5
|
-
"capabilities_title": "Capacidades",
|
|
6
|
-
"capabilities_description": "Uma visão geral dos principais serviços que ofereço aos meus clientes.",
|
|
7
|
-
"web_dev_title": "Desenvolvimento Web",
|
|
8
|
-
"web_dev_description": "Criando aplicações web de alta performance, acessíveis e escaláveis usando tecnologias modernas como Astro, Vue e Nuxt.",
|
|
9
|
-
"ui_ux_title": "Design UI/UX",
|
|
10
|
-
"ui_ux_description": "Criando interfaces de usuário intuitivas e visualmente deslumbrantes, focando na experiência do usuário e na identidade da marca.",
|
|
11
|
-
"perf_title": "Otimização de Performance",
|
|
12
|
-
"perf_description": "Auditando e otimizando o seu site para velocidade, SEO e acessibilidade para alcançar pontuações perfeitas no Lighthouse.",
|
|
13
|
-
"perf_security_title": "Performance e Segurança",
|
|
14
|
-
"perf_security_description": "Seus usuários merecem uma experiência rápida e segura. Eu construo sites que carregam instantaneamente e funcionam perfeitamente em todos os dispositivos.",
|
|
15
|
-
"testimonials_title": "O que Nossos Usuários Dizem",
|
|
16
|
-
"testimonials_description": "Junte-se a milhares de desenvolvedores construindo a próxima geração da web com Astronaut.",
|
|
17
|
-
"faq_title": "Perguntas Frequentes",
|
|
18
|
-
"faq_description": "Tudo o que você precisa saber sobre o Astronaut e como construir coisas incríveis com ele.",
|
|
19
|
-
"cta_title": "Pronto para Começar?",
|
|
20
|
-
"cta_description": "Vamos colaborar no seu próximo grande projeto. Estou atualmente disponível para trabalho freelance e consultoria.",
|
|
21
|
-
"cta_contact": "Entre em Contato",
|
|
22
|
-
"cta_portfolio": "Ver Portfólio",
|
|
23
|
-
"badge_ceo": "CEO",
|
|
24
|
-
"badge_founder": "Fundador",
|
|
25
|
-
"badge_cto": "CTO",
|
|
26
|
-
"badge_senior_ui": "Engenheiro UI Sênior",
|
|
27
|
-
"badge_chef": "Chef",
|
|
28
|
-
"badge_product_designer": "Product Designer",
|
|
29
|
-
"testimonial_1": "O Astronaut é, sem dúvida, o melhor boilerplate que já usei. A velocidade e a arquitetura limpa combinam perfeitamente com o modo como quero construir.",
|
|
30
|
-
"testimonial_2": "A biblioteca de componentes e o modo como ela lida com o Tailwind 4 é um divisor de águas. Consegui lançar meu projeto em tempo recorde.",
|
|
31
|
-
"testimonial_3": "Finalmente um boilerplate que não parece inchado, mas me dá todas as ferramentas de que preciso. O suporte SSR no Cloudflare é impecável.",
|
|
32
|
-
"testimonial_4": "O melhor ponto de partida para qualquer projeto web moderno. A experiência do desenvolvedor é de classe mundial e a performance é imbatível.",
|
|
33
|
-
"testimonial_5": "Atenção incrível aos detalhes na estrutura. Segue todas as melhores práticas sem adicionar complexidade desnecessária.",
|
|
34
|
-
"testimonial_6": "Tudo é tão suave! Transições, componentes, lógica - tudo simplesmente funciona. Melhor decisão para minha startup mais recente.",
|
|
35
|
-
"faq_category_general": "Geral",
|
|
36
|
-
"faq_q1": "O que é o Astronaut?",
|
|
37
|
-
"faq_a1": "O Astronaut é um boilerplate pronto para produção para o Astro, projetado com foco em velocidade, performance e melhores práticas. Ele usa Tailwind CSS 4, padrões Nuxt UI e uma arquitetura limpa.",
|
|
38
|
-
"faq_q2": "Como eu começo?",
|
|
39
|
-
"faq_a2": "Você pode simplesmente clonar o repositório, instalar as dependências com pnpm e rodar o servidor de desenvolvimento. A estrutura do projeto é o padrão do Astro, então você se sentirá em casa.",
|
|
40
|
-
"faq_category_technical": "Técnico",
|
|
41
|
-
"faq_q3": "Ele suporta Server-Side Rendering (SSR)?",
|
|
42
|
-
"faq_a3": "Sim, o Astronaut suporta totalmente SSR e está configurado para implementação no Cloudflare Workers por padrão, oferecendo o melhor dos dois mundos: velocidade de estático e poder de dinâmico."
|
|
43
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import type { AstroCookies } from "astro"
|
|
2
|
-
import { z } from "astro/zod"
|
|
3
|
-
|
|
4
|
-
import { COOKIE_TTL } from "../../config"
|
|
5
|
-
|
|
6
|
-
type AstroCookieOptions = NonNullable<Parameters<AstroCookies["set"]>[2]>
|
|
7
|
-
|
|
8
|
-
const DEFAULT_OPTIONS: AstroCookieOptions = {
|
|
9
|
-
path: "/",
|
|
10
|
-
httpOnly: true,
|
|
11
|
-
secure: import.meta.env.PROD,
|
|
12
|
-
sameSite: "lax",
|
|
13
|
-
maxAge: COOKIE_TTL.oneYear
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export type SetCookieOverrides = Partial<AstroCookieOptions>
|
|
17
|
-
|
|
18
|
-
// ------------------------------
|
|
19
|
-
// SETTER
|
|
20
|
-
// ------------------------------
|
|
21
|
-
export function setCookie<T = string>(
|
|
22
|
-
cookies: AstroCookies,
|
|
23
|
-
name: string,
|
|
24
|
-
value: T,
|
|
25
|
-
overrides?: SetCookieOverrides
|
|
26
|
-
): void {
|
|
27
|
-
const stringValue = typeof value === "string" ? value : JSON.stringify(value)
|
|
28
|
-
|
|
29
|
-
cookies.set(name, stringValue, {
|
|
30
|
-
...DEFAULT_OPTIONS,
|
|
31
|
-
...overrides
|
|
32
|
-
})
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// ------------------------------
|
|
36
|
-
// STRING COOKIE WITH SCHEMA
|
|
37
|
-
// ------------------------------
|
|
38
|
-
export function getCookie(cookies: AstroCookies, name: string): string | null {
|
|
39
|
-
const entry = cookies.get(name)
|
|
40
|
-
if (!entry) return null
|
|
41
|
-
return entry.value
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// ------------------------------
|
|
45
|
-
// STRING COOKIE WITH SCHEMA
|
|
46
|
-
// ------------------------------
|
|
47
|
-
export function getCookieWithSchema<S extends z.ZodTypeAny>(
|
|
48
|
-
cookies: AstroCookies,
|
|
49
|
-
name: string,
|
|
50
|
-
schema: S
|
|
51
|
-
): z.infer<S> | null {
|
|
52
|
-
const entry = cookies.get(name)
|
|
53
|
-
if (!entry) return null
|
|
54
|
-
|
|
55
|
-
const raw = entry.value
|
|
56
|
-
|
|
57
|
-
const result = schema.safeParse(raw)
|
|
58
|
-
if (result.success) return result.data as z.infer<S>
|
|
59
|
-
|
|
60
|
-
if (!import.meta.env.PROD) {
|
|
61
|
-
console.warn(`Invalid cookie "${name}"`, z.treeifyError(result.error))
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return null
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// ------------------------------
|
|
68
|
-
// JSON COOKIE
|
|
69
|
-
// ------------------------------
|
|
70
|
-
export function getJsonCookieWithSchema<S extends z.ZodTypeAny>(
|
|
71
|
-
cookies: AstroCookies,
|
|
72
|
-
name: string,
|
|
73
|
-
schema: S
|
|
74
|
-
): z.infer<S> | null {
|
|
75
|
-
const entry = cookies.get(name)
|
|
76
|
-
if (!entry) return null
|
|
77
|
-
|
|
78
|
-
const raw = entry.value
|
|
79
|
-
|
|
80
|
-
let parsed: unknown
|
|
81
|
-
try {
|
|
82
|
-
parsed = JSON.parse(raw)
|
|
83
|
-
} catch {
|
|
84
|
-
if (!import.meta.env.PROD) {
|
|
85
|
-
console.warn(`Failed to parse JSON cookie "${name}"`)
|
|
86
|
-
}
|
|
87
|
-
return null
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const result = schema.safeParse(parsed)
|
|
91
|
-
if (result.success) return result.data as z.infer<S>
|
|
92
|
-
|
|
93
|
-
if (!import.meta.env.PROD) {
|
|
94
|
-
console.warn(`Invalid JSON cookie "${name}"`, z.treeifyError(result.error))
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return null
|
|
98
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./cookies"
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
function isObject(value: unknown): value is Record<string, unknown> {
|
|
2
|
-
return typeof value === "object" && value !== null && !Array.isArray(value)
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Deep-merge two dictionaries. - `base` provides known structure (fallback) - `overrides` can
|
|
7
|
-
* provide partial values - Both types are preserved and merged correctly
|
|
8
|
-
*/
|
|
9
|
-
function assertRecord(obj: unknown): asserts obj is Record<string, unknown> {
|
|
10
|
-
if (!obj || typeof obj !== "object") throw new Error("Expected object")
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
function assertA<T>(obj: unknown): asserts obj is T {
|
|
14
|
-
if (!obj) throw new Error("Expected result")
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export function deepMerge<A extends object, B extends Partial<A>>(base: A, overrides: B): A {
|
|
18
|
-
const result = { ...base }
|
|
19
|
-
assertRecord(result)
|
|
20
|
-
|
|
21
|
-
for (const key of Object.keys(overrides)) {
|
|
22
|
-
const overrideValue = Reflect.get(overrides, key)
|
|
23
|
-
const baseValue = Reflect.get(base, key)
|
|
24
|
-
|
|
25
|
-
if (overrideValue === undefined) continue
|
|
26
|
-
|
|
27
|
-
if (isObject(baseValue) && isObject(overrideValue)) {
|
|
28
|
-
Reflect.set(result, key, deepMerge(baseValue as object, overrideValue as Partial<object>))
|
|
29
|
-
} else {
|
|
30
|
-
Reflect.set(result, key, overrideValue)
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
assertA<A>(result)
|
|
35
|
-
return result
|
|
36
|
-
}
|