Commit working map with markers

This commit is contained in:
2025-08-18 01:06:36 +02:00
parent 75453a7303
commit 46671c72b4
13 changed files with 265 additions and 0 deletions

8
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

1
.idea/.name generated Normal file
View File

@@ -0,0 +1 @@
PetAdviser

12
.idea/PetAdviser.iml generated Normal file
View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/PetAdviser.iml" filepath="$PROJECT_DIR$/.idea/PetAdviser.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

BIN
public/hero-video.mp4 Normal file

Binary file not shown.

1
public/logo-white.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

9
public/logo.svg Normal file
View File

@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2" viewBox="0 0 1772 310">
<path d="M195.559 212.94c9.763-19.705-4.004-35.727-18.594-47.281-20.624-16.164-43.573-44.179-71.98-40.755-4.874.528-9.592 2.319-13.622 4.675-3.954 2.593-7.447 5.826-9.871 10.024-4.697 8.086-5.197 18.226-7.528 27.383-2.709 10.33-8.011 19.662-12.17 29.412-4.158 9.749-7.474 20.539-5.534 31.201 2.794 15.638 17.847 28.617 33.157 27.597 20.033-1.237 33.906-22.273 53.398-25.961 7.843-1.49 15.847-.144 23.922-.134 11.659.165 22.995-4.557 28.823-16.16l-.001-.001ZM77.513 84.578c11.172 16.577 11.383 35.99.472 43.362-10.911 7.371-28.813-.092-39.985-16.668-11.172-16.577-11.384-35.991-.473-43.362 10.912-7.372 28.813.091 39.986 16.668M48.032 142.304c11.173 16.577 11.384 35.99.473 43.362-10.911 7.371-28.813-.092-39.985-16.668-11.173-16.578-11.384-35.991-.473-43.362 10.911-7.371 28.812.092 39.985 16.668M119.969 41.207c13.161-.425 24.372 15.426 25.04 35.405.668 19.979-9.46 36.52-22.62 36.945-13.16.426-24.372-15.426-25.04-35.404-.668-19.979 9.459-36.521 22.62-36.946M172.447 68.007c13.161-.426 24.372 15.425 25.04 35.405.669 19.98-9.459 36.52-22.619 36.945-13.162.426-24.372-15.426-25.041-35.404-.668-19.979 9.459-36.52 22.62-36.946"/>
<path d="m326.811 40.85 53.034-7.167-25.442 119.684c11.467-.956 22.037-5.973 31.712-15.05 9.675-9.078 17.26-20.306 22.755-33.684 5.494-13.377 8.241-26.516 8.241-39.416 0-14.334-3.703-26.039-11.108-35.117-7.406-9.078-18.514-13.617-33.325-13.617-29.145 0-51.899 7.645-68.263 22.934-16.364 15.289-24.545 36.669-24.545 64.141 0 8.839.836 14.991 2.508 18.454 1.672 3.464 2.508 5.435 2.508 5.913-12.9 0-22.515-2.688-28.846-8.063-6.33-5.375-9.495-14.273-9.495-26.695 0-15.289 6.27-30.16 18.812-44.613 12.542-14.453 28.607-26.158 48.196-35.117C333.142 4.479 352.731 0 372.32 0c18.872 0 34.638 3.225 47.3 9.675 12.661 6.45 22.037 14.99 28.129 25.621 6.091 10.63 9.137 22.396 9.137 35.296 0 15.527-4.24 30.697-12.721 45.508-8.48 14.811-20.604 26.935-36.37 36.371-15.767 9.436-33.923 14.154-54.467 14.154h-1.792L329.678 268.75h-51.6l48.733-227.9ZM500.961 270.9c-17.678 0-31.414-4.599-41.208-13.796-9.795-9.197-14.692-23.59-14.692-43.179 0-16.483 3.225-34.639 9.675-54.467 6.45-19.827 16.961-36.968 31.534-51.421 14.572-14.452 33.086-21.679 55.541-21.679 26.278 0 39.417 11.467 39.417 34.4 0 13.378-3.822 25.681-11.467 36.909-7.644 11.227-17.797 20.246-30.458 27.054-12.661 6.808-26.158 10.69-40.492 11.646-.478 7.166-.716 11.944-.716 14.333 0 11.706 2.03 19.649 6.091 23.829 4.061 4.181 10.631 6.271 19.709 6.271 12.9 0 23.948-2.986 33.145-8.958 9.198-5.973 19.291-15.05 30.28-27.234h12.183c-26.517 44.195-59.364 66.292-98.542 66.292Zm.717-91.733c8.839-.478 17.26-3.584 25.262-9.317 8.003-5.733 14.453-13.019 19.35-21.858 4.898-8.839 7.346-18.156 7.346-27.95 0-9.795-2.986-14.692-8.958-14.692-8.6 0-17.021 7.525-25.263 22.575-8.241 15.05-14.154 32.131-17.737 51.242Z" style="fill-rule:nonzero"/>
<path d="M621.003 270.9c-12.183 0-21.202-3.703-27.054-11.108-5.853-7.406-8.779-17.2-8.779-29.384 0-6.211.716-12.541 2.15-18.991l22.933-107.5h-11.825l2.867-14.334h11.825l10.75-49.45 53.033-7.166c-2.15 9.077-3.345 14.452-3.583 16.125-1.673 6.689-4.539 20.186-8.6 40.491h21.5l-2.867 14.334h-21.5l-22.933 107.5c-1.195 5.255-1.792 9.436-1.792 12.541 0 8.6 4.18 12.9 12.542 12.9 4.3 0 7.405-.358 9.316-1.075-4.778 13.856-10.391 23.173-16.841 27.95-6.45 4.778-13.498 7.167-21.142 7.167ZM764.336 309.6c-8.839 0-16.603-.717-23.291-2.15-6.689-1.433-12.482-4.897-17.38-10.392-4.897-5.494-7.345-13.975-7.345-25.441 0-16.006 4.837-37.506 14.512-64.5 9.675-26.995 22.396-54.109 38.163-81.342-11.945.717-21.381 2.508-28.309 5.375-6.928 2.867-11.466 7.286-13.616 13.258.955 0 1.97 1.195 3.045 3.584a18.134 18.134 0 0 1 1.613 7.525c0 4.3-1.911 7.704-5.733 10.212-3.823 2.508-8.6 3.763-14.334 3.763-6.689 0-12.064-1.792-16.125-5.375-4.061-3.584-6.091-8.72-6.091-15.409 0-8.122 3.165-15.527 9.495-22.216 6.331-6.689 15.11-12.005 26.338-15.946 11.228-3.942 23.65-5.913 37.267-5.913 5.016 0 11.227.359 18.633 1.075 19.589-31.055 40.312-56.437 62.171-76.146C865.207 9.854 886.05 0 905.878 0c11.467 0 20.903 1.672 28.308 5.017L877.928 268.75h-51.6l27.592-130.075c-8.839-4.061-16.962-7.047-24.367-8.958-7.406-1.911-15.289-3.225-23.65-3.942-13.617 29.383-24.785 59.424-33.504 90.121-8.72 30.697-13.079 55.243-13.079 73.637 0 9.078 1.672 15.767 5.016 20.067ZM877.928 25.442c-10.272 5.494-20.963 15.707-32.071 30.637-11.108 14.931-21.918 33.027-32.429 54.288 17.2 3.344 31.772 7.525 43.717 12.541l20.783-97.466ZM968.586 270.9c-13.616 0-24.964-4.658-34.041-13.975-9.078-9.317-13.617-23.889-13.617-43.717 0-17.677 3.523-36.251 10.571-55.72 7.047-19.47 17.558-35.953 31.533-49.451 13.975-13.497 30.638-20.245 49.988-20.245 9.794 0 17.08 1.672 21.858 5.016 4.778 3.345 7.167 7.764 7.167 13.259v1.433l17.558-82.417 53.033-7.166-41.208 193.5c-.956 3.583-1.433 7.405-1.433 11.466 0 4.778 1.134 8.182 3.404 10.213 2.269 2.03 6.032 3.046 11.287 3.046 6.689 0 12.482-2.867 17.379-8.6 4.898-5.734 8.78-13.378 11.646-22.934h15.05c-14.572 42.761-38.58 64.142-72.025 64.142-9.794 0-17.737-2.628-23.829-7.883-6.092-5.256-9.854-12.9-11.287-22.934-6.212 9.556-13.677 17.439-22.396 23.65-8.72 6.211-18.932 9.317-30.638 9.317Zm23.292-34.758c5.733 0 11.526-2.628 17.379-7.884 5.853-5.255 9.854-12.541 12.004-21.858v-1.792l17.559-82.058c-2.15-8.361-7.048-12.542-14.692-12.542-9.556 0-18.156 5.554-25.8 16.663-7.645 11.108-13.617 24.486-17.917 40.133-4.3 15.647-6.45 29.443-6.45 41.388 0 11.944 1.732 19.589 5.196 22.933 3.464 3.344 7.704 5.017 12.721 5.017Z" style="fill-rule:nonzero"/>
<path d="M1154.56 270.9c-13.855 0-24.665-3.524-32.429-10.571-7.764-7.047-11.646-17.618-11.646-31.712 0-5.734.597-11.467 1.792-17.2l25.8-121.834h51.6l-25.8 121.834c-1.195 5.972-1.792 10.272-1.792 12.9 0 7.883 4.061 11.825 12.184 11.825 10.988 0 21.201-6.928 30.637-20.784 9.436-13.855 17.021-30.339 22.754-49.45 5.734-19.111 8.6-35.594 8.6-49.45-.478 1.195-2.03 2.091-4.658 2.688-2.628.597-4.897.896-6.808.896-4.062 0-7.227-1.911-9.496-5.734-2.27-3.822-3.404-8.002-3.404-12.541 0-5.734 1.851-10.392 5.554-13.975 3.702-3.584 9.257-5.375 16.662-5.375 7.884 0 13.617 2.926 17.2 8.779 3.584 5.853 5.375 13.318 5.375 22.396 0 21.5-3.703 44.493-11.108 68.979-7.406 24.486-18.753 45.329-34.042 62.529-15.289 17.2-34.28 25.8-56.975 25.8ZM1321.9 70.233c-7.883 0-14.572-2.747-20.067-8.241-5.494-5.495-8.241-12.184-8.241-20.067 0-7.883 2.747-14.632 8.241-20.246 5.495-5.614 12.184-8.421 20.067-8.421 7.883 0 14.632 2.807 20.246 8.421 5.614 5.614 8.421 12.363 8.421 20.246 0 7.883-2.807 14.572-8.421 20.067-5.614 5.494-12.363 8.241-20.246 8.241ZM1297.533 270.9c-11.466 0-20.723-3.583-27.771-10.75-7.047-7.167-10.57-17.917-10.57-32.25 0-5.972.955-13.736 2.866-23.292l24.367-115.025h51.6l-25.8 121.834c-.956 3.583-1.433 7.405-1.433 11.466 0 4.778 1.134 8.182 3.404 10.213 2.269 2.03 6.032 3.046 11.287 3.046 6.928 0 13.378-2.927 19.35-8.779 5.972-5.853 10.272-13.438 12.9-22.755h15.05c-8.839 25.8-20.186 43.299-34.041 52.496-13.856 9.197-27.592 13.796-41.209 13.796Z" style="fill-rule:nonzero"/>
<path d="M1398.59 270.9c-11.466 0-21.141-2.21-29.025-6.629-7.883-4.42-13.736-10.153-17.558-17.2-3.822-7.047-5.733-14.393-5.733-22.038 0-7.883 1.851-14.751 5.554-20.604 3.702-5.853 8.182-10.093 13.437-12.721 9.317-16.722 17.439-33.623 24.367-50.704 6.928-17.08 13.497-35.535 19.708-55.362l53.034-7.167c1.194 30.578 3.225 63.664 6.091 99.258 1.195 14.334 1.792 24.725 1.792 31.175 0 5.495-.478 10.034-1.433 13.617 11.227-6.45 19.827-12.422 25.8-17.917h15.05c-15.289 17.678-33.564 32.609-54.825 44.792-6.928 7.406-15.469 12.84-25.621 16.304-10.153 3.464-20.366 5.196-30.638 5.196Zm-11.466-28.308c8.838 0 16.244-2.628 22.216-7.884 5.972-5.255 8.959-13.736 8.959-25.441 0-7.167-.717-17.2-2.15-30.1-2.389-27.234-3.942-45.509-4.659-54.825-5.733 18.872-15.408 41.447-29.025 67.725 5.495 2.866 8.242 7.047 8.242 12.541 0 4.539-1.493 8.6-4.479 12.184-2.986 3.583-6.749 5.375-11.288 5.375-5.016 0-8.241-1.553-9.675-4.659 0 8.6 1.732 14.931 5.196 18.992 3.464 4.061 9.018 6.092 16.663 6.092Z" style="fill-rule:nonzero"/>
<path d="M1545.86 270.9c-17.678 0-31.414-4.599-41.208-13.796-9.795-9.197-14.692-23.59-14.692-43.179 0-16.483 3.225-34.639 9.675-54.467 6.45-19.827 16.961-36.968 31.534-51.421 14.572-14.452 33.086-21.679 55.541-21.679 26.278 0 39.417 11.467 39.417 34.4 0 13.378-3.822 25.681-11.467 36.909-7.644 11.227-17.797 20.246-30.458 27.054-12.661 6.808-26.158 10.69-40.492 11.646-.478 7.166-.716 11.944-.716 14.333 0 11.706 2.03 19.649 6.091 23.829 4.061 4.181 10.631 6.271 19.709 6.271 12.9 0 23.948-2.986 33.145-8.958 9.198-5.973 19.291-15.05 30.28-27.234h12.183c-26.517 44.195-59.364 66.292-98.542 66.292Zm.717-91.733c8.839-.478 17.26-3.584 25.262-9.317 8.003-5.733 14.453-13.019 19.35-21.858 4.898-8.839 7.346-18.156 7.346-27.95 0-9.795-2.986-14.692-8.958-14.692-8.6 0-17.021 7.525-25.263 22.575-8.241 15.05-14.154 32.131-17.737 51.242Z" style="fill-rule:nonzero"/>
<path d="M1656.59 89.583h51.6l-4.658 22.217c8.122-7.167 15.468-12.661 22.037-16.483 6.57-3.823 13.677-5.734 21.321-5.734 7.645 0 13.677 2.628 18.096 7.884 4.419 5.255 6.629 11.586 6.629 18.991 0 6.928-2.269 13.02-6.808 18.275-4.539 5.256-10.87 7.884-18.992 7.884-5.255 0-8.779-1.255-10.571-3.763-1.791-2.508-3.165-6.151-4.12-10.929-.717-3.106-1.434-5.375-2.15-6.808-.717-1.434-2.031-2.15-3.942-2.15-5.017 0-9.257 1.015-12.721 3.045-3.464 2.031-7.943 5.555-13.437 10.571l-28.667 136.167h-51.6l37.983-179.167Z" style="fill-rule:nonzero"/>
</svg>

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@@ -0,0 +1,108 @@
"use client"
import type { IconButtonProps, SpanProps } from "@chakra-ui/react"
import { ClientOnly, IconButton, Skeleton, Span } from "@chakra-ui/react"
import { ThemeProvider, useTheme } from "next-themes"
import type { ThemeProviderProps } from "next-themes"
import * as React from "react"
import { LuMoon, LuSun } from "react-icons/lu"
export interface ColorModeProviderProps extends ThemeProviderProps {}
export function ColorModeProvider(props: ColorModeProviderProps) {
return (
<ThemeProvider attribute="class" disableTransitionOnChange {...props} />
)
}
export type ColorMode = "light" | "dark"
export interface UseColorModeReturn {
colorMode: ColorMode
setColorMode: (colorMode: ColorMode) => void
toggleColorMode: () => void
}
export function useColorMode(): UseColorModeReturn {
const { resolvedTheme, setTheme, forcedTheme } = useTheme()
const colorMode = forcedTheme || resolvedTheme
const toggleColorMode = () => {
setTheme(resolvedTheme === "dark" ? "light" : "dark")
}
return {
colorMode: colorMode as ColorMode,
setColorMode: setTheme,
toggleColorMode,
}
}
export function useColorModeValue<T>(light: T, dark: T) {
const { colorMode } = useColorMode()
return colorMode === "dark" ? dark : light
}
export function ColorModeIcon() {
const { colorMode } = useColorMode()
return colorMode === "dark" ? <LuMoon /> : <LuSun />
}
interface ColorModeButtonProps extends Omit<IconButtonProps, "aria-label"> {}
export const ColorModeButton = React.forwardRef<
HTMLButtonElement,
ColorModeButtonProps
>(function ColorModeButton(props, ref) {
const { toggleColorMode } = useColorMode()
return (
<ClientOnly fallback={<Skeleton boxSize="8" />}>
<IconButton
onClick={toggleColorMode}
variant="ghost"
aria-label="Toggle color mode"
size="sm"
ref={ref}
{...props}
css={{
_icon: {
width: "5",
height: "5",
},
}}
>
<ColorModeIcon />
</IconButton>
</ClientOnly>
)
})
export const LightMode = React.forwardRef<HTMLSpanElement, SpanProps>(
function LightMode(props, ref) {
return (
<Span
color="fg"
display="contents"
className="chakra-theme light"
colorPalette="gray"
colorScheme="light"
ref={ref}
{...props}
/>
)
},
)
export const DarkMode = React.forwardRef<HTMLSpanElement, SpanProps>(
function DarkMode(props, ref) {
return (
<Span
color="fg"
display="contents"
className="chakra-theme dark"
colorPalette="gray"
colorScheme="dark"
ref={ref}
{...props}
/>
)
},
)

View File

@@ -0,0 +1,15 @@
"use client"
import { ChakraProvider, defaultSystem } from "@chakra-ui/react"
import {
ColorModeProvider,
type ColorModeProviderProps,
} from "./color-mode"
export function Provider(props: ColorModeProviderProps) {
return (
<ChakraProvider value={defaultSystem}>
<ColorModeProvider {...props} />
</ChakraProvider>
)
}

View File

@@ -0,0 +1,43 @@
"use client"
import {
Toaster as ChakraToaster,
Portal,
Spinner,
Stack,
Toast,
createToaster,
} from "@chakra-ui/react"
export const toaster = createToaster({
placement: "bottom-end",
pauseOnPageIdle: true,
})
export const Toaster = () => {
return (
<Portal>
<ChakraToaster toaster={toaster} insetInline={{ mdDown: "4" }}>
{(toast) => (
<Toast.Root width={{ md: "sm" }}>
{toast.type === "loading" ? (
<Spinner size="sm" color="blue.solid" />
) : (
<Toast.Indicator />
)}
<Stack gap="1" flex="1" maxWidth="100%">
{toast.title && <Toast.Title>{toast.title}</Toast.Title>}
{toast.description && (
<Toast.Description>{toast.description}</Toast.Description>
)}
</Stack>
{toast.action && (
<Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>
)}
{toast.closable && <Toast.CloseTrigger />}
</Toast.Root>
)}
</ChakraToaster>
</Portal>
)
}

View File

@@ -0,0 +1,46 @@
import { Tooltip as ChakraTooltip, Portal } from "@chakra-ui/react"
import * as React from "react"
export interface TooltipProps extends ChakraTooltip.RootProps {
showArrow?: boolean
portalled?: boolean
portalRef?: React.RefObject<HTMLElement>
content: React.ReactNode
contentProps?: ChakraTooltip.ContentProps
disabled?: boolean
}
export const Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(
function Tooltip(props, ref) {
const {
showArrow,
children,
disabled,
portalled = true,
content,
contentProps,
portalRef,
...rest
} = props
if (disabled) return children
return (
<ChakraTooltip.Root {...rest}>
<ChakraTooltip.Trigger asChild>{children}</ChakraTooltip.Trigger>
<Portal disabled={!portalled} container={portalRef}>
<ChakraTooltip.Positioner>
<ChakraTooltip.Content ref={ref} {...contentProps}>
{showArrow && (
<ChakraTooltip.Arrow>
<ChakraTooltip.ArrowTip />
</ChakraTooltip.Arrow>
)}
{content}
</ChakraTooltip.Content>
</ChakraTooltip.Positioner>
</Portal>
</ChakraTooltip.Root>
)
},
)

View File

@@ -0,0 +1,8 @@
import { createBrowserClient } from '@supabase/ssr'
export function createClient() {
return createBrowserClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
)
}