@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
|
@@ -1,318 +0,0 @@
|
|
|
1
|
-
export type FloatingSide = "top" | "bottom" | "left" | "right"
|
|
2
|
-
export type FloatingAlign = "start" | "center" | "end"
|
|
3
|
-
|
|
4
|
-
interface Placement {
|
|
5
|
-
side: FloatingSide
|
|
6
|
-
align: FloatingAlign
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
interface Position {
|
|
10
|
-
top: number
|
|
11
|
-
left: number
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
interface OverflowAmount {
|
|
15
|
-
left: number
|
|
16
|
-
right: number
|
|
17
|
-
top: number
|
|
18
|
-
bottom: number
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface ResolvePlacementOptions {
|
|
22
|
-
side: FloatingSide
|
|
23
|
-
align: FloatingAlign
|
|
24
|
-
sideOffset: number
|
|
25
|
-
triggerRect: DOMRect
|
|
26
|
-
contentWidth: number
|
|
27
|
-
contentHeight: number
|
|
28
|
-
viewportWidth: number
|
|
29
|
-
viewportHeight: number
|
|
30
|
-
viewportPadding: number
|
|
31
|
-
avoidCollisions?: boolean
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export interface ResolvePlacementResult {
|
|
35
|
-
side: FloatingSide
|
|
36
|
-
align: FloatingAlign
|
|
37
|
-
top: number
|
|
38
|
-
left: number
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function getOppositeSide(side: FloatingSide): FloatingSide {
|
|
42
|
-
switch (side) {
|
|
43
|
-
case "top":
|
|
44
|
-
return "bottom"
|
|
45
|
-
case "bottom":
|
|
46
|
-
return "top"
|
|
47
|
-
case "left":
|
|
48
|
-
return "right"
|
|
49
|
-
case "right":
|
|
50
|
-
return "left"
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function getOppositeAlign(align: FloatingAlign): FloatingAlign {
|
|
55
|
-
switch (align) {
|
|
56
|
-
case "start":
|
|
57
|
-
return "end"
|
|
58
|
-
case "end":
|
|
59
|
-
return "start"
|
|
60
|
-
case "center":
|
|
61
|
-
return "center"
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function getPlacementCandidates(side: FloatingSide, align: FloatingAlign): Placement[] {
|
|
66
|
-
const placements: Placement[] = []
|
|
67
|
-
|
|
68
|
-
const pushUnique = (candidate: Placement) => {
|
|
69
|
-
if (
|
|
70
|
-
!placements.some(
|
|
71
|
-
(placement) => placement.side === candidate.side && placement.align === candidate.align
|
|
72
|
-
)
|
|
73
|
-
) {
|
|
74
|
-
placements.push(candidate)
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const oppositeSide = getOppositeSide(side)
|
|
79
|
-
const oppositeAlign = getOppositeAlign(align)
|
|
80
|
-
|
|
81
|
-
pushUnique({ side, align })
|
|
82
|
-
pushUnique({ side: oppositeSide, align })
|
|
83
|
-
pushUnique({ side, align: "center" })
|
|
84
|
-
pushUnique({ side: oppositeSide, align: "center" })
|
|
85
|
-
pushUnique({ side, align: oppositeAlign })
|
|
86
|
-
pushUnique({ side: oppositeSide, align: oppositeAlign })
|
|
87
|
-
|
|
88
|
-
if (side === "top" || side === "bottom") {
|
|
89
|
-
for (const fallbackAlign of ["start", "center", "end"] as const) {
|
|
90
|
-
pushUnique({ side: "right", align: fallbackAlign })
|
|
91
|
-
pushUnique({ side: "left", align: fallbackAlign })
|
|
92
|
-
}
|
|
93
|
-
} else {
|
|
94
|
-
for (const fallbackAlign of ["start", "center", "end"] as const) {
|
|
95
|
-
pushUnique({ side: "bottom", align: fallbackAlign })
|
|
96
|
-
pushUnique({ side: "top", align: fallbackAlign })
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return placements
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
function getPlacementPosition(
|
|
104
|
-
placement: Placement,
|
|
105
|
-
triggerRect: DOMRect,
|
|
106
|
-
contentWidth: number,
|
|
107
|
-
contentHeight: number,
|
|
108
|
-
sideOffset: number
|
|
109
|
-
): Position {
|
|
110
|
-
let top = 0
|
|
111
|
-
let left = 0
|
|
112
|
-
|
|
113
|
-
if (placement.side === "bottom" || placement.side === "top") {
|
|
114
|
-
top =
|
|
115
|
-
placement.side === "bottom"
|
|
116
|
-
? triggerRect.bottom + sideOffset
|
|
117
|
-
: triggerRect.top - contentHeight - sideOffset
|
|
118
|
-
|
|
119
|
-
if (placement.align === "start") {
|
|
120
|
-
left = triggerRect.left
|
|
121
|
-
} else if (placement.align === "end") {
|
|
122
|
-
left = triggerRect.right - contentWidth
|
|
123
|
-
} else {
|
|
124
|
-
left = triggerRect.left + (triggerRect.width - contentWidth) / 2
|
|
125
|
-
}
|
|
126
|
-
} else {
|
|
127
|
-
left =
|
|
128
|
-
placement.side === "right"
|
|
129
|
-
? triggerRect.right + sideOffset
|
|
130
|
-
: triggerRect.left - contentWidth - sideOffset
|
|
131
|
-
|
|
132
|
-
if (placement.align === "start") {
|
|
133
|
-
top = triggerRect.top
|
|
134
|
-
} else if (placement.align === "end") {
|
|
135
|
-
top = triggerRect.bottom - contentHeight
|
|
136
|
-
} else {
|
|
137
|
-
top = triggerRect.top + (triggerRect.height - contentHeight) / 2
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
return { top, left }
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
function clampPositionToViewport(
|
|
145
|
-
position: Position,
|
|
146
|
-
contentWidth: number,
|
|
147
|
-
contentHeight: number,
|
|
148
|
-
viewportWidth: number,
|
|
149
|
-
viewportHeight: number,
|
|
150
|
-
viewportPadding: number
|
|
151
|
-
): Position {
|
|
152
|
-
const maxLeft = Math.max(viewportPadding, viewportWidth - contentWidth - viewportPadding)
|
|
153
|
-
const maxTop = Math.max(viewportPadding, viewportHeight - contentHeight - viewportPadding)
|
|
154
|
-
|
|
155
|
-
return {
|
|
156
|
-
left: Math.min(Math.max(viewportPadding, position.left), maxLeft),
|
|
157
|
-
top: Math.min(Math.max(viewportPadding, position.top), maxTop)
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
function getOverflowAmount(
|
|
162
|
-
position: Position,
|
|
163
|
-
contentWidth: number,
|
|
164
|
-
contentHeight: number,
|
|
165
|
-
viewportWidth: number,
|
|
166
|
-
viewportHeight: number,
|
|
167
|
-
viewportPadding: number
|
|
168
|
-
): OverflowAmount {
|
|
169
|
-
const right = position.left + contentWidth
|
|
170
|
-
const bottom = position.top + contentHeight
|
|
171
|
-
|
|
172
|
-
return {
|
|
173
|
-
left: Math.max(0, viewportPadding - position.left),
|
|
174
|
-
top: Math.max(0, viewportPadding - position.top),
|
|
175
|
-
right: Math.max(0, right - (viewportWidth - viewportPadding)),
|
|
176
|
-
bottom: Math.max(0, bottom - (viewportHeight - viewportPadding))
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
function getMainAxisShift(
|
|
181
|
-
side: FloatingSide,
|
|
182
|
-
preferredPosition: Position,
|
|
183
|
-
clampedPosition: Position
|
|
184
|
-
): number {
|
|
185
|
-
if (side === "top" || side === "bottom") {
|
|
186
|
-
return Math.abs(clampedPosition.top - preferredPosition.top)
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
return Math.abs(clampedPosition.left - preferredPosition.left)
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
function getCrossAxisShift(
|
|
193
|
-
side: FloatingSide,
|
|
194
|
-
preferredPosition: Position,
|
|
195
|
-
clampedPosition: Position
|
|
196
|
-
): number {
|
|
197
|
-
if (side === "top" || side === "bottom") {
|
|
198
|
-
return Math.abs(clampedPosition.left - preferredPosition.left)
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
return Math.abs(clampedPosition.top - preferredPosition.top)
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Resolves the best side/alignment placement for floating content.
|
|
206
|
-
*/
|
|
207
|
-
export function resolvePlacement(options: ResolvePlacementOptions): ResolvePlacementResult {
|
|
208
|
-
const {
|
|
209
|
-
side,
|
|
210
|
-
align,
|
|
211
|
-
sideOffset,
|
|
212
|
-
triggerRect,
|
|
213
|
-
contentWidth,
|
|
214
|
-
contentHeight,
|
|
215
|
-
viewportWidth,
|
|
216
|
-
viewportHeight,
|
|
217
|
-
viewportPadding,
|
|
218
|
-
avoidCollisions = true
|
|
219
|
-
} = options
|
|
220
|
-
|
|
221
|
-
const preferredPlacement: Placement = { side, align }
|
|
222
|
-
|
|
223
|
-
if (!avoidCollisions) {
|
|
224
|
-
const preferredPosition = getPlacementPosition(
|
|
225
|
-
preferredPlacement,
|
|
226
|
-
triggerRect,
|
|
227
|
-
contentWidth,
|
|
228
|
-
contentHeight,
|
|
229
|
-
sideOffset
|
|
230
|
-
)
|
|
231
|
-
|
|
232
|
-
return {
|
|
233
|
-
side,
|
|
234
|
-
align,
|
|
235
|
-
top: preferredPosition.top,
|
|
236
|
-
left: preferredPosition.left
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
const candidates = getPlacementCandidates(side, align)
|
|
241
|
-
|
|
242
|
-
let bestPlacement = candidates[0] ?? preferredPlacement
|
|
243
|
-
let bestPosition = clampPositionToViewport(
|
|
244
|
-
getPlacementPosition(bestPlacement, triggerRect, contentWidth, contentHeight, sideOffset),
|
|
245
|
-
contentWidth,
|
|
246
|
-
contentHeight,
|
|
247
|
-
viewportWidth,
|
|
248
|
-
viewportHeight,
|
|
249
|
-
viewportPadding
|
|
250
|
-
)
|
|
251
|
-
let bestScore = Number.POSITIVE_INFINITY
|
|
252
|
-
|
|
253
|
-
for (const placement of candidates) {
|
|
254
|
-
const preferredPosition = getPlacementPosition(
|
|
255
|
-
placement,
|
|
256
|
-
triggerRect,
|
|
257
|
-
contentWidth,
|
|
258
|
-
contentHeight,
|
|
259
|
-
sideOffset
|
|
260
|
-
)
|
|
261
|
-
const clampedPosition = clampPositionToViewport(
|
|
262
|
-
preferredPosition,
|
|
263
|
-
contentWidth,
|
|
264
|
-
contentHeight,
|
|
265
|
-
viewportWidth,
|
|
266
|
-
viewportHeight,
|
|
267
|
-
viewportPadding
|
|
268
|
-
)
|
|
269
|
-
|
|
270
|
-
const overflow = getOverflowAmount(
|
|
271
|
-
preferredPosition,
|
|
272
|
-
contentWidth,
|
|
273
|
-
contentHeight,
|
|
274
|
-
viewportWidth,
|
|
275
|
-
viewportHeight,
|
|
276
|
-
viewportPadding
|
|
277
|
-
)
|
|
278
|
-
|
|
279
|
-
const overflowTotal = overflow.left + overflow.right + overflow.top + overflow.bottom
|
|
280
|
-
const mainAxisShift = getMainAxisShift(placement.side, preferredPosition, clampedPosition)
|
|
281
|
-
const crossAxisShift = getCrossAxisShift(placement.side, preferredPosition, clampedPosition)
|
|
282
|
-
|
|
283
|
-
const sidePenalty = placement.side === side ? 0 : 32
|
|
284
|
-
const alignPenalty = placement.align === align ? 0 : 8
|
|
285
|
-
const score =
|
|
286
|
-
overflowTotal * 24 + mainAxisShift * 8 + crossAxisShift * 3 + sidePenalty + alignPenalty
|
|
287
|
-
|
|
288
|
-
if (score < bestScore) {
|
|
289
|
-
bestScore = score
|
|
290
|
-
bestPlacement = placement
|
|
291
|
-
bestPosition = clampedPosition
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
return {
|
|
296
|
-
side: bestPlacement.side,
|
|
297
|
-
align: bestPlacement.align,
|
|
298
|
-
top: bestPosition.top,
|
|
299
|
-
left: bestPosition.left
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
/**
|
|
304
|
-
* Returns a transform-origin value that matches the resolved placement.
|
|
305
|
-
*/
|
|
306
|
-
export function getTransformOrigin(side: FloatingSide, align: FloatingAlign): string {
|
|
307
|
-
if (side === "top" || side === "bottom") {
|
|
308
|
-
const vertical = side === "bottom" ? "top" : "bottom"
|
|
309
|
-
const horizontal = align === "start" ? "left" : align === "end" ? "right" : "center"
|
|
310
|
-
|
|
311
|
-
return `${horizontal} ${vertical}`
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
const horizontal = side === "right" ? "left" : "right"
|
|
315
|
-
const vertical = align === "start" ? "top" : align === "end" ? "bottom" : "center"
|
|
316
|
-
|
|
317
|
-
return `${horizontal} ${vertical}`
|
|
318
|
-
}
|
package/src/locales/de/blog.json
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Blog | Daniel Marchi",
|
|
3
|
-
"hero_title": "Blog",
|
|
4
|
-
"hero_description": "Meine Einblicke auf meiner Reise als Entwickler.",
|
|
5
|
-
"latest_article": "Neuester Artikel",
|
|
6
|
-
"latest": "Neu",
|
|
7
|
-
"read_article": "Artikel lesen",
|
|
8
|
-
"all_posts": "Alle Beiträge"
|
|
9
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"seo": {
|
|
3
|
-
"title": "Zero-JS i18n Astro Starter für Cloudflare Workers",
|
|
4
|
-
"description": "Erstellen Sie mehrsprachige Apps schneller ohne Hydrations-Ballast. Volle Integration mit Cloudflare Workers & KV, automatisierte TypeScript-Generierung und Edge-Caching out-of-the-box."
|
|
5
|
-
},
|
|
6
|
-
"nav": {
|
|
7
|
-
"home": "Astro-Komponenten & Islands",
|
|
8
|
-
"blog": "Beispiele für i18n mit Markdown",
|
|
9
|
-
"mobileButton": "Menü"
|
|
10
|
-
},
|
|
11
|
-
"footer": {
|
|
12
|
-
"license": "Unter der MIT-Lizenz."
|
|
13
|
-
},
|
|
14
|
-
"notFound": {
|
|
15
|
-
"title": "404 — Seite nicht gefunden",
|
|
16
|
-
"message": "Die gesuchte Seite existiert nicht oder wurde verschoben.",
|
|
17
|
-
"backToHome": "Zurück zur Startseite"
|
|
18
|
-
}
|
|
19
|
-
}
|
package/src/locales/de/home.json
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Daniel Marchi | Webentwickler",
|
|
3
|
-
"meta_description": "Ich bin ein auf Astro und Hochleistungs-Websites spezialisierter Webentwickler.",
|
|
4
|
-
"hero_title": "Hallo, ich bin Daniel Marchi",
|
|
5
|
-
"hero_description": "Ich bin ein auf Astro und Hochleistungs-Websites spezialisierter Webentwickler.",
|
|
6
|
-
"hero_view_components": "Komponenten anzeigen",
|
|
7
|
-
"hero_contact_me": "Kontakt aufnehmen",
|
|
8
|
-
"stack_title": "Moderne Webentwicklung, moderner Stack",
|
|
9
|
-
"stack_description": "Ich helfe Einzelpersonen und Unternehmen beim Aufbau von Hochleistungs-Webanwendungen, die auf Edge-Plattformen bereitgestellt werden. Von der Architektur bis zum Deployment sorge ich dafür, dass Ihr Projekt auf Skalierbarkeit ausgelegt ist.",
|
|
10
|
-
"stack_view_services": "Dienstleistungen ansehen",
|
|
11
|
-
"stack_resume": "Lebenslauf",
|
|
12
|
-
"marquee_title": "Aufgebaut und bereitgestellt mit diesen erstaunlichen Technologien:",
|
|
13
|
-
"projects_title": "Aktuelle Projekte",
|
|
14
|
-
"projects_description": "Eine Auswahl meiner neuesten technischen Arbeiten und Open-Source-Projekte.",
|
|
15
|
-
"projects_view_all": "Alle Projekte anzeigen",
|
|
16
|
-
"cta_title": "Bereit, etwas Erstaunliches aufzubauen?",
|
|
17
|
-
"cta_description": "Ich stehe derzeit für neue Projekte und Beratungen zur Verfügung. Lassen Sie uns zusammenarbeiten, um Ihre Vision zum Leben zu erwecken.",
|
|
18
|
-
"cta_contact": "Kontakt aufnehmen",
|
|
19
|
-
"cta_resume": "Lebenslauf herunterladen"
|
|
20
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"errors": {
|
|
3
|
-
"ui": {
|
|
4
|
-
"MISSING_TRANSLATED_UI": "Entschuldigung, diese Seite ist in der ausgewählten Sprache noch nicht vollständig verfügbar.",
|
|
5
|
-
"MISSING_TRANSLATED_CONTENT": "Entschuldigung, dieser Artikel ist in der ausgewählten Sprache noch nicht verfügbar."
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
}
|
package/src/locales/de/nav.json
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"home": "Startseite",
|
|
3
|
-
"projects": "Projekte",
|
|
4
|
-
"blog": "Blog",
|
|
5
|
-
"about": "Über mich",
|
|
6
|
-
"services": "Dienstleistungen",
|
|
7
|
-
"resume": "Lebenslauf",
|
|
8
|
-
"contact": "Kontakt",
|
|
9
|
-
"components": "Komponenten",
|
|
10
|
-
"privacy_policy": "Datenschutzerklärung",
|
|
11
|
-
"terms_of_service": "Nutzungsbedingungen",
|
|
12
|
-
"cookie_policy": "Cookie-Richtlinie"
|
|
13
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Projekte | Daniel Marchi",
|
|
3
|
-
"hero_title": "Projekte",
|
|
4
|
-
"hero_description": "Eine Auswahl meiner Arbeiten und Open-Source-Beiträge.",
|
|
5
|
-
"latest": "Neuestes Projekt",
|
|
6
|
-
"latest_badge": "Neu",
|
|
7
|
-
"view_project": "Projekt ansehen",
|
|
8
|
-
"all": "Alle Projekte"
|
|
9
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Dienstleistungen | Daniel Marchi",
|
|
3
|
-
"hero_title": "Premium Dienstleistungen",
|
|
4
|
-
"hero_description": "Ich biete hochwertige Entwicklungs- und Designdienstleistungen an, um Ihr Unternehmen wachsen zu lassen und sich in der digitalen Landschaft hervorzuheben.",
|
|
5
|
-
"capabilities_title": "Fähigkeiten",
|
|
6
|
-
"capabilities_description": "Eine Übersicht über die Kerndienstleistungen, die ich meinen Kunden anbiete.",
|
|
7
|
-
"web_dev_title": "Webentwicklung",
|
|
8
|
-
"web_dev_description": "Erstellung hochperformanter, barrierefreier und skalierbarer Webanwendungen mit modernen Technologien wie Astro, Vue und Nuxt.",
|
|
9
|
-
"ui_ux_title": "UI/UX Design",
|
|
10
|
-
"ui_ux_description": "Erstellung intuitiver und visuell beeindruckender Benutzeroberflächen mit Fokus auf Benutzererfahrung und Markenidentität.",
|
|
11
|
-
"perf_title": "Leistungsoptimierung",
|
|
12
|
-
"perf_description": "Audit und Optimierung Ihrer Website für Geschwindigkeit, SEO und Barrierefreiheit, um perfekte Lighthouse-Scores zu erzielen.",
|
|
13
|
-
"perf_security_title": "Leistung und Sicherheit",
|
|
14
|
-
"perf_security_description": "Ihre Benutzer verdienen ein schnelles und sicheres Erlebnis. Ich erstelle Websites, die sofort geladen werden und auf allen Geräten einwandfrei funktionieren.",
|
|
15
|
-
"testimonials_title": "Was unsere Benutzer sagen",
|
|
16
|
-
"testimonials_description": "Schließen Sie sich Tausenden von Entwicklern an, die mit Astronaut die nächste Generation des Webs aufbauen.",
|
|
17
|
-
"faq_title": "Häufig gestellte Fragen (FAQ)",
|
|
18
|
-
"faq_description": "Alles, was Sie über Astronaut wissen müssen und wie Sie damit erstaunliche Dinge bauen können.",
|
|
19
|
-
"cta_title": "Bereit loszulegen?",
|
|
20
|
-
"cta_description": "Lassen Sie uns an Ihrem nächsten großen Projekt zusammenarbeiten. Ich stehe derzeit für freiberufliche Tätigkeit und Beratung zur Verfügung.",
|
|
21
|
-
"cta_contact": "Kontakt aufnehmen",
|
|
22
|
-
"cta_portfolio": "Portfolio ansehen",
|
|
23
|
-
"badge_ceo": "CEO",
|
|
24
|
-
"badge_founder": "Gründer",
|
|
25
|
-
"badge_cto": "CTO",
|
|
26
|
-
"badge_senior_ui": "Senior UI Engineer",
|
|
27
|
-
"badge_chef": "Chef",
|
|
28
|
-
"badge_product_designer": "Product Designer",
|
|
29
|
-
"testimonial_1": "Astronaut ist zweifellos das beste Boilerplate, das ich je verwendet habe. Die Geschwindigkeit und die saubere Architektur passen perfekt dazu, wie ich bauen möchte.",
|
|
30
|
-
"testimonial_2": "Die Komponentenbibliothek und die Art und Weise, wie sie Tailwind 4 handhabt, ist ein Game Changer. Ich konnte mein Projekt in Rekordzeit starten.",
|
|
31
|
-
"testimonial_3": "Endlich ein Boilerplate, das sich nicht überladen anfühlt, mir aber alle Werkzeuge gibt, die ich brauche. Der SSR-Support auf Cloudflare ist fehlerfrei.",
|
|
32
|
-
"testimonial_4": "Der beste Ausgangspunkt für jedes moderne Webprojekt. Die Entwicklererfahrung ist Weltklasse und die Leistung ist unschlagbar.",
|
|
33
|
-
"testimonial_5": "Unglaubliche Liebe zum Detail in der Struktur. Es folgt allen Best Practices, ohne unnötige Komplexität hinzuzufügen.",
|
|
34
|
-
"testimonial_6": "Alles läuft so reibungslos! Übergänge, Komponenten, Logik - alles funktioniert einfach. Beste Entscheidung für mein neuestes Startup.",
|
|
35
|
-
"faq_category_general": "Allgemeines",
|
|
36
|
-
"faq_q1": "Was ist Astronaut?",
|
|
37
|
-
"faq_a1": "Astronaut ist ein produktionsbereites Boilerplate für Astro, das auf Geschwindigkeit, Leistung und Best Practices ausgelegt ist. Es verwendet Tailwind CSS 4, Nuxt UI-Muster und eine saubere Architektur.",
|
|
38
|
-
"faq_q2": "Wie fange ich an?",
|
|
39
|
-
"faq_a2": "Sie können einfach das Repository klonen, Abhängigkeiten mit pnpm installieren und den Dev-Server starten. Die Projektstruktur ist Standard-Astro, also werden Sie sich wie zu Hause fühlen.",
|
|
40
|
-
"faq_category_technical": "Technisches",
|
|
41
|
-
"faq_q3": "Unterstützt es Server-Side Rendering (SSR)?",
|
|
42
|
-
"faq_a3": "Ja, Astronaut unterstützt SSR vollständig und ist standardmäßig für den Cloudflare Workers voreingestellt, was Ihnen das Beste aus beiden Welten bietet: statische Geschwindigkeit und dynamische Leistung."
|
|
43
|
-
}
|
package/src/locales/en/blog.json
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Blog | Daniel Marchi",
|
|
3
|
-
"hero_title": "Blog",
|
|
4
|
-
"hero_description": "My insights throughout my journey as a developer.",
|
|
5
|
-
"latest_article": "Latest Article",
|
|
6
|
-
"latest": "Latest",
|
|
7
|
-
"read_article": "Read Article",
|
|
8
|
-
"all_posts": "All Posts"
|
|
9
|
-
}
|
package/src/locales/en/chat.json
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"title": "Join a Chat Room",
|
|
3
|
-
"description": "Enter a room name to start chatting",
|
|
4
|
-
"heading": "Real-time Chat",
|
|
5
|
-
"intro": "Enter a room name below to join a conversation. Each room is a unique Durable Object instance!",
|
|
6
|
-
"label": "Room Name",
|
|
7
|
-
"placeholder": "e.g. general, help, coffee-break",
|
|
8
|
-
"button": "Join Room",
|
|
9
|
-
"room": {
|
|
10
|
-
"title": "Chat Room",
|
|
11
|
-
"connecting": "Connecting…",
|
|
12
|
-
"connected": "Connected",
|
|
13
|
-
"disconnected": "Disconnected",
|
|
14
|
-
"placeholder": "Type a message…",
|
|
15
|
-
"send": "Send",
|
|
16
|
-
"system": {
|
|
17
|
-
"joining": "Joining room…",
|
|
18
|
-
"error": "Connection error",
|
|
19
|
-
"joined": "joined the room",
|
|
20
|
-
"left": "left the room",
|
|
21
|
-
"reconnecting": "Reconnecting in {delay} seconds... (attempt {attempt}/{max})",
|
|
22
|
-
"fail_reconnect": "Failed to reconnect. Please refresh the page.",
|
|
23
|
-
"no_connect": "Cannot send message: not connected",
|
|
24
|
-
"prompt_user": "Enter your username:",
|
|
25
|
-
"you": "(You)",
|
|
26
|
-
"online_users": "Online Users:"
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"seo": {
|
|
3
|
-
"title": "Zero-JS i18n Astro Starter for Cloudflare Workers",
|
|
4
|
-
"description": "Ship multilingual apps faster without hydration bloat. Full integration with Cloudflare Workers & KV, automated TypeScript generation, and edge caching out of the box."
|
|
5
|
-
},
|
|
6
|
-
"nav": {
|
|
7
|
-
"home": "Astro components & islands",
|
|
8
|
-
"blog": "Markdown i18n examples",
|
|
9
|
-
"mobileButton": "Menu"
|
|
10
|
-
},
|
|
11
|
-
"footer": {
|
|
12
|
-
"license": "Under the MIT license."
|
|
13
|
-
},
|
|
14
|
-
"notFound": {
|
|
15
|
-
"title": "404 — Page not found",
|
|
16
|
-
"message": "The page you are looking for does not exist or has been moved.",
|
|
17
|
-
"backToHome": "Go back to homepage"
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"title": "Cookie Policy",
|
|
3
|
-
"description": "This website does not use cookies, this is a sample of how it could work in your website as per your",
|
|
4
|
-
"privacy_policy": "Privacy Policy",
|
|
5
|
-
"reject_all": "Reject All",
|
|
6
|
-
"accept_all": "Accept All",
|
|
7
|
-
"accepted_toast": "Cookies Accepted",
|
|
8
|
-
"accepted_description": "You have accepted all cookies.",
|
|
9
|
-
"rejected_toast": "Cookies Rejected",
|
|
10
|
-
"rejected_description": "You have rejected all cookies."
|
|
11
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"title": "Editor",
|
|
3
|
-
"description": "Collaborative real-time document editor",
|
|
4
|
-
"collaborative_editor": "Collaborative Editor",
|
|
5
|
-
"status": {
|
|
6
|
-
"connecting": "Connecting…",
|
|
7
|
-
"connected": "Connected",
|
|
8
|
-
"disconnected": "Disconnected"
|
|
9
|
-
},
|
|
10
|
-
"history": "History",
|
|
11
|
-
"version_history": "Version History",
|
|
12
|
-
"no_versions": "No versions yet.",
|
|
13
|
-
"placeholder": "Start typing… your changes are synced in real-time.",
|
|
14
|
-
"word_count": {
|
|
15
|
-
"word": "word",
|
|
16
|
-
"words": "words",
|
|
17
|
-
"character": "character",
|
|
18
|
-
"characters": "characters"
|
|
19
|
-
},
|
|
20
|
-
"save": {
|
|
21
|
-
"saved": "Saved"
|
|
22
|
-
},
|
|
23
|
-
"restore_confirm": "Restore this version? Current content will be replaced."
|
|
24
|
-
}
|
package/src/locales/en/home.json
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Daniel Marchi | Web Developer",
|
|
3
|
-
"meta_description": "I'm a web developer specialized in Astro and high-performance websites.",
|
|
4
|
-
"hero_title": "Hey, I'm Daniel Marchi",
|
|
5
|
-
"hero_description": "I'm a web developer specialized in Astro and high-performance websites.",
|
|
6
|
-
"hero_view_components": "View Components",
|
|
7
|
-
"hero_contact_me": "Contact Me",
|
|
8
|
-
"stack_title": "Modern Web, Modern Stack",
|
|
9
|
-
"stack_description": "I help individuals and companies build high-performance web applications deployed on the edge. From architecture to deployment, I ensure your project is built for scale.",
|
|
10
|
-
"stack_view_services": "View Services",
|
|
11
|
-
"stack_resume": "Resume",
|
|
12
|
-
"marquee_title": "Built and deployed with these amazing technologies:",
|
|
13
|
-
"projects_title": "Recent Projects",
|
|
14
|
-
"projects_description": "A selection of my latest technical work and open source projects.",
|
|
15
|
-
"projects_view_all": "View All Projects",
|
|
16
|
-
"cta_title": "Ready to Build Something Amazing?",
|
|
17
|
-
"cta_description": "I'm currently available for new projects and consulting. Let's work together to bring your vision to life.",
|
|
18
|
-
"cta_contact": "Get in Touch",
|
|
19
|
-
"cta_resume": "Download Resume"
|
|
20
|
-
}
|
package/src/locales/en/nav.json
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"home": "Home",
|
|
3
|
-
"projects": "Projects",
|
|
4
|
-
"blog": "Blog",
|
|
5
|
-
"about": "About",
|
|
6
|
-
"services": "Services",
|
|
7
|
-
"resume": "Resume",
|
|
8
|
-
"contact": "Contact",
|
|
9
|
-
"components": "Components",
|
|
10
|
-
"privacy_policy": "Privacy Policy",
|
|
11
|
-
"terms_of_service": "Terms of Service",
|
|
12
|
-
"cookie_policy": "Cookie Policy"
|
|
13
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Projects | Daniel Marchi",
|
|
3
|
-
"hero_title": "Projects",
|
|
4
|
-
"hero_description": "A showcase of my work and open source contributions.",
|
|
5
|
-
"latest": "Latest Project",
|
|
6
|
-
"latest_badge": "Latest",
|
|
7
|
-
"view_project": "View Project",
|
|
8
|
-
"all": "All Projects"
|
|
9
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta_title": "Services | Daniel Marchi",
|
|
3
|
-
"hero_title": "Premium Services",
|
|
4
|
-
"hero_description": "I provide high-quality development and design services to help your business grow and stand out in the digital landscape.",
|
|
5
|
-
"capabilities_title": "Capabilities",
|
|
6
|
-
"capabilities_description": "An overview of the core services I provide to my clients.",
|
|
7
|
-
"web_dev_title": "Web Development",
|
|
8
|
-
"web_dev_description": "Crafting high-performance, accessible, and scalable web applications using modern technologies like Astro, Vue, and Nuxt.",
|
|
9
|
-
"ui_ux_title": "UI/UX Design",
|
|
10
|
-
"ui_ux_description": "Creating intuitive and visually stunning user interfaces focusing on user experience and brand identity.",
|
|
11
|
-
"perf_title": "Performance Optimization",
|
|
12
|
-
"perf_description": "Audit and optimize your website for speed, SEO, and accessibility to achieve perfect Lighthouse scores.",
|
|
13
|
-
"perf_security_title": "Performance & Security",
|
|
14
|
-
"perf_security_description": "Your users deserve a fast and secure experience. I build websites that load instantly and perform flawlessly across all devices.",
|
|
15
|
-
"testimonials_title": "What Our Users Say",
|
|
16
|
-
"testimonials_description": "Join thousands of developers building the next generation of the web with Astronaut.",
|
|
17
|
-
"faq_title": "Frequently Asked Questions",
|
|
18
|
-
"faq_description": "Everything you need to know about Astronaut and how to build amazing things with it.",
|
|
19
|
-
"cta_title": "Ready to Start?",
|
|
20
|
-
"cta_description": "Let's collaborate on your next big project. I'm currently available for freelance work and consulting.",
|
|
21
|
-
"cta_contact": "Get in Touch",
|
|
22
|
-
"cta_portfolio": "View Portfolio",
|
|
23
|
-
"badge_ceo": "CEO",
|
|
24
|
-
"badge_founder": "Founder",
|
|
25
|
-
"badge_cto": "CTO",
|
|
26
|
-
"badge_senior_ui": "Senior UI Engineer",
|
|
27
|
-
"badge_chef": "Chef",
|
|
28
|
-
"badge_product_designer": "Product Designer",
|
|
29
|
-
"testimonial_1": "Astronaut is hands down the best boilerplate I've ever used. The speed and clean architecture matching perfectly with how I want to build.",
|
|
30
|
-
"testimonial_2": "The component library and the way it handles Tailwind 4 is a game changer. I was able to launch my project in record time.",
|
|
31
|
-
"testimonial_3": "Finally a boilerplate that doesn't feel bloated but gives me all the tools I need. The SSR support on Cloudflare is flawless.",
|
|
32
|
-
"testimonial_4": "The best starting point for any modern web project. The developer experience is world-class and the performance is unbeatable.",
|
|
33
|
-
"testimonial_5": "Incredible attention to detail in the structure. It follows all the best practices without adding unnecessary complexity.",
|
|
34
|
-
"testimonial_6": "Everything is so smooth! Transitions, components, logic - it all just clicks. Best decision for my latest startup.",
|
|
35
|
-
"faq_category_general": "General",
|
|
36
|
-
"faq_q1": "What is Astronaut?",
|
|
37
|
-
"faq_a1": "Astronaut is a production-ready boilerplate for Astro, designed with speed, performance, and best practices in mind. It uses Tailwind CSS 4, Nuxt UI patterns, and a clean architecture.",
|
|
38
|
-
"faq_q2": "How do I get started?",
|
|
39
|
-
"faq_a2": "You can simply clone the repository, install dependencies with pnpm, and run the dev server. The project structure is standard Astro, so you'll feel right at home.",
|
|
40
|
-
"faq_category_technical": "Technical",
|
|
41
|
-
"faq_q3": "Does it support Server-Side Rendering (SSR)?",
|
|
42
|
-
"faq_a3": "Yes, Astronaut fully supports SSR and is configured for deployment on Cloudflare Workers by default, giving you the best of both worlds: static speed and dynamic power."
|
|
43
|
-
}
|