@slashclick/ui 0.1.15 → 0.1.16
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/README.md +108 -108
- package/dist/components/auth/providers.cjs.map +1 -1
- package/dist/components/auth/providers.js.map +1 -1
- package/dist/components/card/back-button.cjs.map +1 -1
- package/dist/components/card/back-button.js.map +1 -1
- package/dist/components/card/card-wrapper.cjs.map +1 -1
- package/dist/components/card/card-wrapper.js.map +1 -1
- package/dist/components/card/header.cjs.map +1 -1
- package/dist/components/card/header.js.map +1 -1
- package/dist/components/combobox/ComboList.cjs.map +1 -1
- package/dist/components/combobox/ComboList.js.map +1 -1
- package/dist/components/combobox/index.cjs.map +1 -1
- package/dist/components/combobox/index.js.map +1 -1
- package/dist/components/dashboard/account-select.cjs.map +1 -1
- package/dist/components/dashboard/account-select.js.map +1 -1
- package/dist/components/dashboard/account-switcher.cjs.map +1 -1
- package/dist/components/dashboard/account-switcher.js.map +1 -1
- package/dist/components/dashboard/sidebar/CollapsibleSection.cjs.map +1 -1
- package/dist/components/dashboard/sidebar/CollapsibleSection.js.map +1 -1
- package/dist/components/dashboard/sidebar/CollapsibleSection.styles.cjs.map +1 -1
- package/dist/components/dashboard/sidebar/CollapsibleSection.styles.js.map +1 -1
- package/dist/components/dashboard/sidebar/EntityList.cjs.map +1 -1
- package/dist/components/dashboard/sidebar/EntityList.js.map +1 -1
- package/dist/components/dashboard/sidebar/EntityList.styles.cjs.map +1 -1
- package/dist/components/dashboard/sidebar/EntityList.styles.js.map +1 -1
- package/dist/components/dashboard/sidebar/SectionHeader.cjs.map +1 -1
- package/dist/components/dashboard/sidebar/SectionHeader.js.map +1 -1
- package/dist/components/dashboard/sidebar/SectionHeader.styles.cjs.map +1 -1
- package/dist/components/dashboard/sidebar/SectionHeader.styles.js.map +1 -1
- package/dist/components/dashboard/sidebar/index.cjs.map +1 -1
- package/dist/components/dashboard/sidebar/index.js.map +1 -1
- package/dist/components/dashboard/sidebar/sidebar.cjs.map +1 -1
- package/dist/components/dashboard/sidebar/sidebar.js.map +1 -1
- package/dist/components/dashboard/sidebar/tabs.cjs.map +1 -1
- package/dist/components/dashboard/sidebar/tabs.js.map +1 -1
- package/dist/components/dashboard/sidebar/types.cjs.map +1 -1
- package/dist/components/dashboard/sidebar-nav.cjs.map +1 -1
- package/dist/components/dashboard/sidebar-nav.js.map +1 -1
- package/dist/components/dashboard/utils/build-nav.cjs.map +1 -1
- package/dist/components/dashboard/utils/build-nav.js.map +1 -1
- package/dist/components/dashboard/with-dashboard.cjs.map +1 -1
- package/dist/components/dashboard/with-dashboard.js.map +1 -1
- package/dist/components/detail/DetailLayout.styles.cjs.map +1 -1
- package/dist/components/detail/DetailLayout.styles.js.map +1 -1
- package/dist/components/detail/index.cjs.map +1 -1
- package/dist/components/detail/index.js.map +1 -1
- package/dist/components/flowbite/card-images.cjs.map +1 -1
- package/dist/components/flowbite/card-images.js.map +1 -1
- package/dist/components/flowbite/gallery.cjs.map +1 -1
- package/dist/components/flowbite/gallery.js.map +1 -1
- package/dist/components/flowbite/masonry.cjs.map +1 -1
- package/dist/components/flowbite/masonry.js.map +1 -1
- package/dist/components/flowbite/search-hero.cjs.map +1 -1
- package/dist/components/flowbite/search-hero.js.map +1 -1
- package/dist/components/generic/copyright.cjs.map +1 -1
- package/dist/components/generic/copyright.js.map +1 -1
- package/dist/components/generic/icons.cjs.map +1 -1
- package/dist/components/generic/icons.js.map +1 -1
- package/dist/components/generic/link.cjs.map +1 -1
- package/dist/components/generic/link.js.map +1 -1
- package/dist/components/header/header.cjs +16 -5
- package/dist/components/header/header.cjs.map +1 -1
- package/dist/components/header/header.d.ts +1 -1
- package/dist/components/header/header.d.ts.map +1 -1
- package/dist/components/header/header.js +6 -5
- package/dist/components/header/header.js.map +1 -1
- package/dist/components/header/internal/main-nav.cjs.map +1 -1
- package/dist/components/header/internal/main-nav.js.map +1 -1
- package/dist/components/header/internal/mobile-nav.cjs.map +1 -1
- package/dist/components/header/internal/mobile-nav.js.map +1 -1
- package/dist/components/header/internal/mode-toggle.cjs.map +1 -1
- package/dist/components/header/internal/mode-toggle.js.map +1 -1
- package/dist/components/header/internal/site-header.cjs.map +1 -1
- package/dist/components/header/internal/site-header.js.map +1 -1
- package/dist/components/header/langbutton/langbutton.cjs.map +1 -1
- package/dist/components/header/langbutton/langbutton.js.map +1 -1
- package/dist/components/header/userbutton/user-dropdown.cjs.map +1 -1
- package/dist/components/header/userbutton/user-dropdown.js.map +1 -1
- package/dist/components/header/userbutton/userbutton.cjs.map +1 -1
- package/dist/components/header/userbutton/userbutton.js.map +1 -1
- package/dist/components/hooks/use-page-nav.cjs.map +1 -1
- package/dist/components/hooks/use-page-nav.js.map +1 -1
- package/dist/components/hooks/use-user-entities.cjs.map +1 -1
- package/dist/components/hooks/use-user-entities.js.map +1 -1
- package/dist/components/icons/apple.cjs.map +1 -1
- package/dist/components/icons/apple.js.map +1 -1
- package/dist/components/icons/facebook.cjs.map +1 -1
- package/dist/components/icons/facebook.js.map +1 -1
- package/dist/components/icons/github.cjs.map +1 -1
- package/dist/components/icons/github.js.map +1 -1
- package/dist/components/icons/google.cjs.map +1 -1
- package/dist/components/icons/google.js.map +1 -1
- package/dist/components/icons/logo.cjs.map +1 -1
- package/dist/components/icons/logo.js.map +1 -1
- package/dist/components/lightbox/GallerySection.cjs.map +1 -1
- package/dist/components/lightbox/GallerySection.js.map +1 -1
- package/dist/components/lightbox/ImageLightbox.cjs.map +1 -1
- package/dist/components/lightbox/ImageLightbox.js.map +1 -1
- package/dist/components/lightbox/ImageLightbox.types.cjs.map +1 -1
- package/dist/components/lightbox/index.cjs.map +1 -1
- package/dist/components/lightbox/index.js.map +1 -1
- package/dist/components/lightbox/useEntityLightbox.cjs.map +1 -1
- package/dist/components/lightbox/useEntityLightbox.js.map +1 -1
- package/dist/components/lightbox/useLightbox.cjs.map +1 -1
- package/dist/components/lightbox/useLightbox.js.map +1 -1
- package/dist/components/search/search.cjs.map +1 -1
- package/dist/components/search/search.js.map +1 -1
- package/dist/components/tailwind/contact.cjs.map +1 -1
- package/dist/components/tailwind/contact.js.map +1 -1
- package/dist/components/tailwind/content-page.cjs.map +1 -1
- package/dist/components/tailwind/content-page.js.map +1 -1
- package/dist/components/tailwind/feature.cjs.map +1 -1
- package/dist/components/tailwind/feature.js.map +1 -1
- package/dist/components/tailwind/featurelist.cjs.map +1 -1
- package/dist/components/tailwind/featurelist.js.map +1 -1
- package/dist/components/tailwind/footer.cjs.map +1 -1
- package/dist/components/tailwind/footer.js.map +1 -1
- package/dist/components/tailwind/hero.cjs.map +1 -1
- package/dist/components/tailwind/hero.js.map +1 -1
- package/dist/components/tailwind/pricing.cjs.map +1 -1
- package/dist/components/tailwind/pricing.js.map +1 -1
- package/dist/components/tailwind/privacy.cjs.map +1 -1
- package/dist/components/tailwind/privacy.js.map +1 -1
- package/dist/components/tailwind/providerIcons.cjs.map +1 -1
- package/dist/components/tailwind/providerIcons.js.map +1 -1
- package/dist/components/ui/avatar.cjs.map +1 -1
- package/dist/components/ui/avatar.js.map +1 -1
- package/dist/components/ui/breadcrumb.cjs.map +1 -1
- package/dist/components/ui/breadcrumb.js.map +1 -1
- package/dist/components/ui/button.cjs.map +1 -1
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/card.cjs.map +1 -1
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/checkbox.cjs.map +1 -1
- package/dist/components/ui/checkbox.js.map +1 -1
- package/dist/components/ui/command.cjs.map +1 -1
- package/dist/components/ui/command.d.ts.map +1 -1
- package/dist/components/ui/command.js.map +1 -1
- package/dist/components/ui/dialog.cjs.map +1 -1
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/drawer.cjs.map +1 -1
- package/dist/components/ui/drawer.js.map +1 -1
- package/dist/components/ui/dropdown-menu.cjs.map +1 -1
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/input.cjs.map +1 -1
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/label.cjs.map +1 -1
- package/dist/components/ui/label.js.map +1 -1
- package/dist/components/ui/menubar.cjs.map +1 -1
- package/dist/components/ui/menubar.js.map +1 -1
- package/dist/components/ui/navigation-menu.cjs.map +1 -1
- package/dist/components/ui/navigation-menu.js.map +1 -1
- package/dist/components/ui/popover.cjs.map +1 -1
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/resizable.cjs.map +1 -1
- package/dist/components/ui/resizable.js.map +1 -1
- package/dist/components/ui/scroll-area.cjs.map +1 -1
- package/dist/components/ui/scroll-area.js.map +1 -1
- package/dist/components/ui/select.cjs.map +1 -1
- package/dist/components/ui/select.js.map +1 -1
- package/dist/components/ui/sheet.cjs.map +1 -1
- package/dist/components/ui/sheet.js.map +1 -1
- package/dist/components/ui/skeleton.cjs.map +1 -1
- package/dist/components/ui/skeleton.js.map +1 -1
- package/dist/components/ui/spinner.cjs.map +1 -1
- package/dist/components/ui/spinner.js.map +1 -1
- package/dist/components/ui/switch.cjs.map +1 -1
- package/dist/components/ui/switch.js.map +1 -1
- package/dist/components/ui/tabs.cjs.map +1 -1
- package/dist/components/ui/tabs.js.map +1 -1
- package/dist/components/ui/textarea.cjs.map +1 -1
- package/dist/components/ui/textarea.js.map +1 -1
- package/dist/components/ui/toast.cjs.map +1 -1
- package/dist/components/ui/toast.js.map +1 -1
- package/dist/components/ui/toaster.cjs.map +1 -1
- package/dist/components/ui/toaster.js.map +1 -1
- package/dist/components/ui/tooltip.cjs.map +1 -1
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/components/ui/use-toast.cjs.map +1 -1
- package/dist/components/ui/use-toast.js.map +1 -1
- package/dist/components/upgrade-prompt/UpgradePrompt.cjs.map +1 -1
- package/dist/components/upgrade-prompt/UpgradePrompt.js.map +1 -1
- package/dist/components/upgrade-prompt/index.cjs.map +1 -1
- package/dist/components/upgrade-prompt/index.js.map +1 -1
- package/dist/hooks/useRecaptcha.cjs.map +1 -1
- package/dist/hooks/useRecaptcha.js.map +1 -1
- package/dist/lib/utils.cjs.map +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/nav.cjs.map +1 -1
- package/dist/types/sitemap.cjs.map +1 -1
- package/dist/types/unist.cjs.map +1 -1
- package/package.json +14 -7
- package/styles/theme.css +52 -52
- package/dist/lib/utils.d.cjs +0 -17
- package/dist/lib/utils.d.cjs.map +0 -1
- package/dist/lib/utils.d.js +0 -1
- package/dist/lib/utils.d.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/header/internal/mobile-nav.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport Link, { LinkProps } from 'next/link'\nimport { useRouter } from 'next/navigation'\n\nimport { cn } from '../../../lib/utils'\nimport { Icons } from '../../generic/icons'\nimport { ScrollArea } from '../../ui/scroll-area'\nimport { Sheet, SheetContent, SheetTrigger } from '../../ui/sheet'\nimport { Button } from '../../ui/button'\n\nexport function MobileNav({\n siteName,\n mainNav,\n sidebarNav,\n}: {\n siteName?: string\n mainNav?: { href?: string; title: string }[]\n sidebarNav?: { title: string; items?: { href?: string; title: string; label?: string; disabled?: boolean }[] }[]\n}) {\n const [open, setOpen] = React.useState(false)\n\n return (\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button\n variant=\"ghost\"\n className=\"mr-2 flex px-0 text-base hover:bg-transparent focus-visible:bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0 md:hidden\"\n >\n <svg\n strokeWidth=\"1.5\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n >\n <path\n d=\"M3 5H11\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n ></path>\n <path\n d=\"M3 12H16\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n ></path>\n <path\n d=\"M3 19H21\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n ></path>\n </svg>\n <span className=\"sr-only\">Toggle Menu</span>\n </Button>\n </SheetTrigger>\n <SheetContent side=\"left\" className=\"pr-0\">\n <MobileLink\n href=\"/\"\n className=\"flex items-center\"\n onOpenChange={setOpen}\n >\n <Icons.logo className=\"mr-2 h-4 w-4\" />\n {siteName && <span className=\"font-bold\">{siteName}</span>}\n </MobileLink>\n <ScrollArea className=\"my-4 h-[calc(100vh-8rem)] pb-10 pl-6\">\n <div className=\"flex flex-col space-y-3\">\n {mainNav?.map(\n (item: any) =>\n item.href && (\n <MobileLink\n key={item.href}\n href={item.href}\n onOpenChange={setOpen}\n >\n {item.title}\n </MobileLink>\n ),\n )}\n </div>\n <div className=\"flex flex-col space-y-2\">\n {(sidebarNav ?? []).map((item: any, index: number) => (\n <div key={index} className=\"flex flex-col space-y-3 pt-6\">\n <h4 className=\"font-medium\">{item.title}</h4>\n {item?.items?.length &&\n item.items.map((item: any) => (\n <React.Fragment key={item.href}>\n {!item.disabled &&\n (item.href ? (\n <MobileLink\n href={item.href}\n onOpenChange={setOpen}\n className=\"text-muted-foreground\"\n >\n {item.title}\n {item.label && (\n <span className=\"ml-2 rounded-md bg-[#adfa1d] px-1.5 py-0.5 text-xs leading-none text-[#000000] no-underline group-hover:no-underline\">\n {item.label}\n </span>\n )}\n </MobileLink>\n ) : (\n item.title\n ))}\n </React.Fragment>\n ))}\n </div>\n ))}\n </div>\n </ScrollArea>\n </SheetContent>\n </Sheet>\n )\n}\n\ninterface MobileLinkProps extends LinkProps {\n onOpenChange?: (_open: boolean) => void\n children: React.ReactNode\n className?: string\n}\n\nfunction MobileLink({\n href,\n onOpenChange,\n className,\n children,\n ...props\n}: MobileLinkProps) {\n const router = useRouter()\n return (\n <Link\n href={href}\n onClick={() => {\n router.push(href.toString())\n onOpenChange?.(false)\n }}\n className={cn(className)}\n {...props}\n >\n {children}\n </Link>\n )\n}\n"],"mappings":"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","names":["item"]}
|
|
1
|
+
{"version":3,"sources":["../../../../components/header/internal/mobile-nav.tsx"],"sourcesContent":["'use client'\r\n\r\nimport * as React from 'react'\r\nimport Link, { LinkProps } from 'next/link'\r\nimport { useRouter } from 'next/navigation'\r\n\r\nimport { cn } from '../../../lib/utils'\r\nimport { Icons } from '../../generic/icons'\r\nimport { ScrollArea } from '../../ui/scroll-area'\r\nimport { Sheet, SheetContent, SheetTrigger } from '../../ui/sheet'\r\nimport { Button } from '../../ui/button'\r\n\r\nexport function MobileNav({\r\n siteName,\r\n mainNav,\r\n sidebarNav,\r\n}: {\r\n siteName?: string\r\n mainNav?: { href?: string; title: string }[]\r\n sidebarNav?: { title: string; items?: { href?: string; title: string; label?: string; disabled?: boolean }[] }[]\r\n}) {\r\n const [open, setOpen] = React.useState(false)\r\n\r\n return (\r\n <Sheet open={open} onOpenChange={setOpen}>\r\n <SheetTrigger asChild>\r\n <Button\r\n variant=\"ghost\"\r\n className=\"mr-2 flex px-0 text-base hover:bg-transparent focus-visible:bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0 md:hidden\"\r\n >\r\n <svg\r\n strokeWidth=\"1.5\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className=\"h-5 w-5\"\r\n >\r\n <path\r\n d=\"M3 5H11\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 12H16\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 19H21\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n <span className=\"sr-only\">Toggle Menu</span>\r\n </Button>\r\n </SheetTrigger>\r\n <SheetContent side=\"left\" className=\"pr-0\">\r\n <MobileLink\r\n href=\"/\"\r\n className=\"flex items-center\"\r\n onOpenChange={setOpen}\r\n >\r\n <Icons.logo className=\"mr-2 h-4 w-4\" />\r\n {siteName && <span className=\"font-bold\">{siteName}</span>}\r\n </MobileLink>\r\n <ScrollArea className=\"my-4 h-[calc(100vh-8rem)] pb-10 pl-6\">\r\n <div className=\"flex flex-col space-y-3\">\r\n {mainNav?.map(\r\n (item: any) =>\r\n item.href && (\r\n <MobileLink\r\n key={item.href}\r\n href={item.href}\r\n onOpenChange={setOpen}\r\n >\r\n {item.title}\r\n </MobileLink>\r\n ),\r\n )}\r\n </div>\r\n <div className=\"flex flex-col space-y-2\">\r\n {(sidebarNav ?? []).map((item: any, index: number) => (\r\n <div key={index} className=\"flex flex-col space-y-3 pt-6\">\r\n <h4 className=\"font-medium\">{item.title}</h4>\r\n {item?.items?.length &&\r\n item.items.map((item: any) => (\r\n <React.Fragment key={item.href}>\r\n {!item.disabled &&\r\n (item.href ? (\r\n <MobileLink\r\n href={item.href}\r\n onOpenChange={setOpen}\r\n className=\"text-muted-foreground\"\r\n >\r\n {item.title}\r\n {item.label && (\r\n <span className=\"ml-2 rounded-md bg-[#adfa1d] px-1.5 py-0.5 text-xs leading-none text-[#000000] no-underline group-hover:no-underline\">\r\n {item.label}\r\n </span>\r\n )}\r\n </MobileLink>\r\n ) : (\r\n item.title\r\n ))}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </ScrollArea>\r\n </SheetContent>\r\n </Sheet>\r\n )\r\n}\r\n\r\ninterface MobileLinkProps extends LinkProps {\r\n onOpenChange?: (_open: boolean) => void\r\n children: React.ReactNode\r\n className?: string\r\n}\r\n\r\nfunction MobileLink({\r\n href,\r\n onOpenChange,\r\n className,\r\n children,\r\n ...props\r\n}: MobileLinkProps) {\r\n const router = useRouter()\r\n return (\r\n <Link\r\n href={href}\r\n onClick={() => {\r\n router.push(href.toString())\r\n onOpenChange?.(false)\r\n }}\r\n className={cn(className)}\r\n {...props}\r\n >\r\n {children}\r\n </Link>\r\n )\r\n}\r\n"],"mappings":"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","names":["item"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/header/internal/mode-toggle.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect, useState } from 'react'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../../ui/dropdown-menu'\nimport { Button } from '../../ui/button'\nimport { MoonIcon, SunIcon } from '@heroicons/react/20/solid'\n\ninterface ModeToggleProps {\n theme: string | undefined\n resolvedTheme: string | undefined\n setTheme: (theme: string) => void\n}\n\nexport function ModeToggle({\n theme,\n resolvedTheme,\n setTheme,\n}: ModeToggleProps) {\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n if (!mounted) {\n return (\n <Button variant=\"ghost\" size=\"icon\" className=\"h-9 w-9\">\n <SunIcon className=\"h-[1.2rem] w-[1.2rem]\" />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n )\n }\n\n const isDark = resolvedTheme === 'dark'\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"relative h-9 w-9\">\n <SunIcon\n className={`absolute left-1/2 top-1/2 h-[1.2rem] w-[1.2rem] -translate-x-1/2 -translate-y-1/2 transition-all ${\n isDark\n ? 'rotate-90 scale-0 opacity-0'\n : 'rotate-0 scale-100 opacity-100'\n }`}\n />\n <MoonIcon\n className={`absolute left-1/2 top-1/2 h-[1.2rem] w-[1.2rem] -translate-x-1/2 -translate-y-1/2 transition-all ${\n isDark\n ? 'rotate-0 scale-100 opacity-100'\n : '-rotate-90 scale-0 opacity-0'\n }`}\n />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme('light')}>\n Light\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('dark')}>\n Dark\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('system')}>\n System\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BM;AA7BN,mBAAoC;AACpC,2BAKO;AACP,oBAAuB;AACvB,mBAAkC;AAQ3B,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,CAAC,SAAS,UAAU,QAAI,uBAAS,KAAK;AAE5C,8BAAU,MAAM;AACd,eAAW,IAAI;AAAA,EACjB,GAAG,CAAC,CAAC;AAEL,MAAI,CAAC,SAAS;AACZ,WACE,6CAAC,wBAAO,SAAQ,SAAQ,MAAK,QAAO,WAAU,WAC5C;AAAA,kDAAC,wBAAQ,WAAU,yBAAwB;AAAA,MAC3C,4CAAC,UAAK,WAAU,WAAU,0BAAY;AAAA,OACxC;AAAA,EAEJ;AAEA,QAAM,SAAS,kBAAkB;AAEjC,SACE,6CAAC,qCACC;AAAA,gDAAC,4CAAoB,SAAO,MAC1B,uDAAC,wBAAO,SAAQ,SAAQ,MAAK,QAAO,WAAU,oBAC5C;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,oGACT,SACI,gCACA,gCACN;AAAA;AAAA,MACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,oGACT,SACI,mCACA,8BACN;AAAA;AAAA,MACF;AAAA,MACA,4CAAC,UAAK,WAAU,WAAU,0BAAY;AAAA,OACxC,GACF;AAAA,IACA,6CAAC,4CAAoB,OAAM,OACzB;AAAA,kDAAC,yCAAiB,SAAS,MAAM,SAAS,OAAO,GAAG,mBAEpD;AAAA,MACA,4CAAC,yCAAiB,SAAS,MAAM,SAAS,MAAM,GAAG,kBAEnD;AAAA,MACA,4CAAC,yCAAiB,SAAS,MAAM,SAAS,QAAQ,GAAG,oBAErD;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../components/header/internal/mode-toggle.tsx"],"sourcesContent":["'use client'\r\n\r\nimport { useEffect, useState } from 'react'\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuTrigger,\r\n} from '../../ui/dropdown-menu'\r\nimport { Button } from '../../ui/button'\r\nimport { MoonIcon, SunIcon } from '@heroicons/react/20/solid'\r\n\r\ninterface ModeToggleProps {\r\n theme: string | undefined\r\n resolvedTheme: string | undefined\r\n setTheme: (theme: string) => void\r\n}\r\n\r\nexport function ModeToggle({\r\n theme,\r\n resolvedTheme,\r\n setTheme,\r\n}: ModeToggleProps) {\r\n const [mounted, setMounted] = useState(false)\r\n\r\n useEffect(() => {\r\n setMounted(true)\r\n }, [])\r\n\r\n if (!mounted) {\r\n return (\r\n <Button variant=\"ghost\" size=\"icon\" className=\"h-9 w-9\">\r\n <SunIcon className=\"h-[1.2rem] w-[1.2rem]\" />\r\n <span className=\"sr-only\">Toggle theme</span>\r\n </Button>\r\n )\r\n }\r\n\r\n const isDark = resolvedTheme === 'dark'\r\n\r\n return (\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <Button variant=\"ghost\" size=\"icon\" className=\"relative h-9 w-9\">\r\n <SunIcon\r\n className={`absolute left-1/2 top-1/2 h-[1.2rem] w-[1.2rem] -translate-x-1/2 -translate-y-1/2 transition-all ${\r\n isDark\r\n ? 'rotate-90 scale-0 opacity-0'\r\n : 'rotate-0 scale-100 opacity-100'\r\n }`}\r\n />\r\n <MoonIcon\r\n className={`absolute left-1/2 top-1/2 h-[1.2rem] w-[1.2rem] -translate-x-1/2 -translate-y-1/2 transition-all ${\r\n isDark\r\n ? 'rotate-0 scale-100 opacity-100'\r\n : '-rotate-90 scale-0 opacity-0'\r\n }`}\r\n />\r\n <span className=\"sr-only\">Toggle theme</span>\r\n </Button>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent align=\"end\">\r\n <DropdownMenuItem onClick={() => setTheme('light')}>\r\n Light\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => setTheme('dark')}>\r\n Dark\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => setTheme('system')}>\r\n System\r\n </DropdownMenuItem>\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BM;AA7BN,mBAAoC;AACpC,2BAKO;AACP,oBAAuB;AACvB,mBAAkC;AAQ3B,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,CAAC,SAAS,UAAU,QAAI,uBAAS,KAAK;AAE5C,8BAAU,MAAM;AACd,eAAW,IAAI;AAAA,EACjB,GAAG,CAAC,CAAC;AAEL,MAAI,CAAC,SAAS;AACZ,WACE,6CAAC,wBAAO,SAAQ,SAAQ,MAAK,QAAO,WAAU,WAC5C;AAAA,kDAAC,wBAAQ,WAAU,yBAAwB;AAAA,MAC3C,4CAAC,UAAK,WAAU,WAAU,0BAAY;AAAA,OACxC;AAAA,EAEJ;AAEA,QAAM,SAAS,kBAAkB;AAEjC,SACE,6CAAC,qCACC;AAAA,gDAAC,4CAAoB,SAAO,MAC1B,uDAAC,wBAAO,SAAQ,SAAQ,MAAK,QAAO,WAAU,oBAC5C;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,oGACT,SACI,gCACA,gCACN;AAAA;AAAA,MACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,oGACT,SACI,mCACA,8BACN;AAAA;AAAA,MACF;AAAA,MACA,4CAAC,UAAK,WAAU,WAAU,0BAAY;AAAA,OACxC,GACF;AAAA,IACA,6CAAC,4CAAoB,OAAM,OACzB;AAAA,kDAAC,yCAAiB,SAAS,MAAM,SAAS,OAAO,GAAG,mBAEpD;AAAA,MACA,4CAAC,yCAAiB,SAAS,MAAM,SAAS,MAAM,GAAG,kBAEnD;AAAA,MACA,4CAAC,yCAAiB,SAAS,MAAM,SAAS,QAAQ,GAAG,oBAErD;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/header/internal/mode-toggle.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect, useState } from 'react'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../../ui/dropdown-menu'\nimport { Button } from '../../ui/button'\nimport { MoonIcon, SunIcon } from '@heroicons/react/20/solid'\n\ninterface ModeToggleProps {\n theme: string | undefined\n resolvedTheme: string | undefined\n setTheme: (theme: string) => void\n}\n\nexport function ModeToggle({\n theme,\n resolvedTheme,\n setTheme,\n}: ModeToggleProps) {\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n if (!mounted) {\n return (\n <Button variant=\"ghost\" size=\"icon\" className=\"h-9 w-9\">\n <SunIcon className=\"h-[1.2rem] w-[1.2rem]\" />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n )\n }\n\n const isDark = resolvedTheme === 'dark'\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"relative h-9 w-9\">\n <SunIcon\n className={`absolute left-1/2 top-1/2 h-[1.2rem] w-[1.2rem] -translate-x-1/2 -translate-y-1/2 transition-all ${\n isDark\n ? 'rotate-90 scale-0 opacity-0'\n : 'rotate-0 scale-100 opacity-100'\n }`}\n />\n <MoonIcon\n className={`absolute left-1/2 top-1/2 h-[1.2rem] w-[1.2rem] -translate-x-1/2 -translate-y-1/2 transition-all ${\n isDark\n ? 'rotate-0 scale-100 opacity-100'\n : '-rotate-90 scale-0 opacity-0'\n }`}\n />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme('light')}>\n Light\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('dark')}>\n Dark\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('system')}>\n System\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n"],"mappings":";AA+BM,SACE,KADF;AA7BN,SAAS,WAAW,gBAAgB;AACpC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc;AACvB,SAAS,UAAU,eAAe;AAQ3B,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAE5C,YAAU,MAAM;AACd,eAAW,IAAI;AAAA,EACjB,GAAG,CAAC,CAAC;AAEL,MAAI,CAAC,SAAS;AACZ,WACE,qBAAC,UAAO,SAAQ,SAAQ,MAAK,QAAO,WAAU,WAC5C;AAAA,0BAAC,WAAQ,WAAU,yBAAwB;AAAA,MAC3C,oBAAC,UAAK,WAAU,WAAU,0BAAY;AAAA,OACxC;AAAA,EAEJ;AAEA,QAAM,SAAS,kBAAkB;AAEjC,SACE,qBAAC,gBACC;AAAA,wBAAC,uBAAoB,SAAO,MAC1B,+BAAC,UAAO,SAAQ,SAAQ,MAAK,QAAO,WAAU,oBAC5C;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,oGACT,SACI,gCACA,gCACN;AAAA;AAAA,MACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,oGACT,SACI,mCACA,8BACN;AAAA;AAAA,MACF;AAAA,MACA,oBAAC,UAAK,WAAU,WAAU,0BAAY;AAAA,OACxC,GACF;AAAA,IACA,qBAAC,uBAAoB,OAAM,OACzB;AAAA,0BAAC,oBAAiB,SAAS,MAAM,SAAS,OAAO,GAAG,mBAEpD;AAAA,MACA,oBAAC,oBAAiB,SAAS,MAAM,SAAS,MAAM,GAAG,kBAEnD;AAAA,MACA,oBAAC,oBAAiB,SAAS,MAAM,SAAS,QAAQ,GAAG,oBAErD;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../components/header/internal/mode-toggle.tsx"],"sourcesContent":["'use client'\r\n\r\nimport { useEffect, useState } from 'react'\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuTrigger,\r\n} from '../../ui/dropdown-menu'\r\nimport { Button } from '../../ui/button'\r\nimport { MoonIcon, SunIcon } from '@heroicons/react/20/solid'\r\n\r\ninterface ModeToggleProps {\r\n theme: string | undefined\r\n resolvedTheme: string | undefined\r\n setTheme: (theme: string) => void\r\n}\r\n\r\nexport function ModeToggle({\r\n theme,\r\n resolvedTheme,\r\n setTheme,\r\n}: ModeToggleProps) {\r\n const [mounted, setMounted] = useState(false)\r\n\r\n useEffect(() => {\r\n setMounted(true)\r\n }, [])\r\n\r\n if (!mounted) {\r\n return (\r\n <Button variant=\"ghost\" size=\"icon\" className=\"h-9 w-9\">\r\n <SunIcon className=\"h-[1.2rem] w-[1.2rem]\" />\r\n <span className=\"sr-only\">Toggle theme</span>\r\n </Button>\r\n )\r\n }\r\n\r\n const isDark = resolvedTheme === 'dark'\r\n\r\n return (\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <Button variant=\"ghost\" size=\"icon\" className=\"relative h-9 w-9\">\r\n <SunIcon\r\n className={`absolute left-1/2 top-1/2 h-[1.2rem] w-[1.2rem] -translate-x-1/2 -translate-y-1/2 transition-all ${\r\n isDark\r\n ? 'rotate-90 scale-0 opacity-0'\r\n : 'rotate-0 scale-100 opacity-100'\r\n }`}\r\n />\r\n <MoonIcon\r\n className={`absolute left-1/2 top-1/2 h-[1.2rem] w-[1.2rem] -translate-x-1/2 -translate-y-1/2 transition-all ${\r\n isDark\r\n ? 'rotate-0 scale-100 opacity-100'\r\n : '-rotate-90 scale-0 opacity-0'\r\n }`}\r\n />\r\n <span className=\"sr-only\">Toggle theme</span>\r\n </Button>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent align=\"end\">\r\n <DropdownMenuItem onClick={() => setTheme('light')}>\r\n Light\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => setTheme('dark')}>\r\n Dark\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => setTheme('system')}>\r\n System\r\n </DropdownMenuItem>\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n )\r\n}\r\n"],"mappings":";AA+BM,SACE,KADF;AA7BN,SAAS,WAAW,gBAAgB;AACpC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc;AACvB,SAAS,UAAU,eAAe;AAQ3B,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAE5C,YAAU,MAAM;AACd,eAAW,IAAI;AAAA,EACjB,GAAG,CAAC,CAAC;AAEL,MAAI,CAAC,SAAS;AACZ,WACE,qBAAC,UAAO,SAAQ,SAAQ,MAAK,QAAO,WAAU,WAC5C;AAAA,0BAAC,WAAQ,WAAU,yBAAwB;AAAA,MAC3C,oBAAC,UAAK,WAAU,WAAU,0BAAY;AAAA,OACxC;AAAA,EAEJ;AAEA,QAAM,SAAS,kBAAkB;AAEjC,SACE,qBAAC,gBACC;AAAA,wBAAC,uBAAoB,SAAO,MAC1B,+BAAC,UAAO,SAAQ,SAAQ,MAAK,QAAO,WAAU,oBAC5C;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,oGACT,SACI,gCACA,gCACN;AAAA;AAAA,MACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,oGACT,SACI,mCACA,8BACN;AAAA;AAAA,MACF;AAAA,MACA,oBAAC,UAAK,WAAU,WAAU,0BAAY;AAAA,OACxC,GACF;AAAA,IACA,qBAAC,uBAAoB,OAAM,OACzB;AAAA,0BAAC,oBAAiB,SAAS,MAAM,SAAS,OAAO,GAAG,mBAEpD;AAAA,MACA,oBAAC,oBAAiB,SAAS,MAAM,SAAS,MAAM,GAAG,kBAEnD;AAAA,MACA,oBAAC,oBAAiB,SAAS,MAAM,SAAS,QAAQ,GAAG,oBAErD;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/header/internal/site-header.tsx"],"sourcesContent":["import { Command } from '../../ui/command'\nimport { MainNav } from './main-nav'\n// import { MobileNav } from './mobile-nav'\nimport { ModeToggle } from './mode-toggle'\nimport { UserButton } from '../userbutton/userbutton'\nimport { LangButton } from '../langbutton/langbutton'\nimport { User } from '@auth/core/types'\n\ntype UserWithUsername = User & { username?: string | null }\nimport type { Cookies } from 'next-client-cookies'\n\nexport function SiteHeader({\n user,\n signOut,\n cookies,\n theme,\n resolvedTheme,\n setTheme,\n sitemap,\n siteName,\n}: {\n user: UserWithUsername | undefined\n signOut: () => Promise<void>\n cookies: Cookies\n theme: string | undefined\n resolvedTheme: string | undefined\n setTheme: (theme: string) => void\n sitemap?: any\n siteName?: string\n}) {\n return (\n <header className=\"border-border/40 bg-background/95 supports-backdrop-filter:bg-background/60 backdrop-blur-xs top-0 z-50 w-full border-b\">\n <div className=\"max-w-(--breakpoint-2xl) container mx-auto flex h-14 items-center px-2 py-2\">\n <MainNav userId={user?.username ?? user?.id} sitemap={sitemap} siteName={siteName} />\n {/* <MobileNav /> */}\n <div className=\"flex flex-1 items-center justify-between space-x-2 md:justify-end\">\n <div className=\"w-full flex-1 md:w-auto md:flex-none\">\n <Command />\n </div>\n <nav className=\"flex items-center gap-3\">\n <LangButton cookies={cookies} />\n <ModeToggle\n theme={theme}\n resolvedTheme={resolvedTheme}\n setTheme={setTheme}\n />\n <UserButton signOut={signOut} user={user} />\n </nav>\n </div>\n </div>\n </header>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCQ;AAjCR,qBAAwB;AACxB,sBAAwB;AAExB,yBAA2B;AAC3B,wBAA2B;AAC3B,wBAA2B;AAMpB,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GASG;AA7BH;AA8BE,SACE,4CAAC,YAAO,WAAU,2HAChB,uDAAC,SAAI,WAAU,+EACb;AAAA,gDAAC,2BAAQ,SAAQ,kCAAM,aAAN,YAAkB,6BAAM,IAAI,SAAkB,UAAoB;AAAA,IAEnF,6CAAC,SAAI,WAAU,qEACb;AAAA,kDAAC,SAAI,WAAU,wCACb,sDAAC,0BAAQ,GACX;AAAA,MACA,6CAAC,SAAI,WAAU,2BACb;AAAA,oDAAC,gCAAW,SAAkB;AAAA,QAC9B;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA,QACA,4CAAC,gCAAW,SAAkB,MAAY;AAAA,SAC5C;AAAA,OACF;AAAA,KACF,GACF;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../components/header/internal/site-header.tsx"],"sourcesContent":["import { Command } from '../../ui/command'\r\nimport { MainNav } from './main-nav'\r\n// import { MobileNav } from './mobile-nav'\r\nimport { ModeToggle } from './mode-toggle'\r\nimport { UserButton } from '../userbutton/userbutton'\r\nimport { LangButton } from '../langbutton/langbutton'\r\nimport { User } from '@auth/core/types'\r\n\r\ntype UserWithUsername = User & { username?: string | null }\r\nimport type { Cookies } from 'next-client-cookies'\r\n\r\nexport function SiteHeader({\r\n user,\r\n signOut,\r\n cookies,\r\n theme,\r\n resolvedTheme,\r\n setTheme,\r\n sitemap,\r\n siteName,\r\n}: {\r\n user: UserWithUsername | undefined\r\n signOut: () => Promise<void>\r\n cookies: Cookies\r\n theme: string | undefined\r\n resolvedTheme: string | undefined\r\n setTheme: (theme: string) => void\r\n sitemap?: any\r\n siteName?: string\r\n}) {\r\n return (\r\n <header className=\"border-border/40 bg-background/95 supports-backdrop-filter:bg-background/60 backdrop-blur-xs top-0 z-50 w-full border-b\">\r\n <div className=\"max-w-(--breakpoint-2xl) container mx-auto flex h-14 items-center px-2 py-2\">\r\n <MainNav userId={user?.username ?? user?.id} sitemap={sitemap} siteName={siteName} />\r\n {/* <MobileNav /> */}\r\n <div className=\"flex flex-1 items-center justify-between space-x-2 md:justify-end\">\r\n <div className=\"w-full flex-1 md:w-auto md:flex-none\">\r\n <Command />\r\n </div>\r\n <nav className=\"flex items-center gap-3\">\r\n <LangButton cookies={cookies} />\r\n <ModeToggle\r\n theme={theme}\r\n resolvedTheme={resolvedTheme}\r\n setTheme={setTheme}\r\n />\r\n <UserButton signOut={signOut} user={user} />\r\n </nav>\r\n </div>\r\n </div>\r\n </header>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCQ;AAjCR,qBAAwB;AACxB,sBAAwB;AAExB,yBAA2B;AAC3B,wBAA2B;AAC3B,wBAA2B;AAMpB,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GASG;AA7BH;AA8BE,SACE,4CAAC,YAAO,WAAU,2HAChB,uDAAC,SAAI,WAAU,+EACb;AAAA,gDAAC,2BAAQ,SAAQ,kCAAM,aAAN,YAAkB,6BAAM,IAAI,SAAkB,UAAoB;AAAA,IAEnF,6CAAC,SAAI,WAAU,qEACb;AAAA,kDAAC,SAAI,WAAU,wCACb,sDAAC,0BAAQ,GACX;AAAA,MACA,6CAAC,SAAI,WAAU,2BACb;AAAA,oDAAC,gCAAW,SAAkB;AAAA,QAC9B;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA,QACA,4CAAC,gCAAW,SAAkB,MAAY;AAAA,SAC5C;AAAA,OACF;AAAA,KACF,GACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/header/internal/site-header.tsx"],"sourcesContent":["import { Command } from '../../ui/command'\nimport { MainNav } from './main-nav'\n// import { MobileNav } from './mobile-nav'\nimport { ModeToggle } from './mode-toggle'\nimport { UserButton } from '../userbutton/userbutton'\nimport { LangButton } from '../langbutton/langbutton'\nimport { User } from '@auth/core/types'\n\ntype UserWithUsername = User & { username?: string | null }\nimport type { Cookies } from 'next-client-cookies'\n\nexport function SiteHeader({\n user,\n signOut,\n cookies,\n theme,\n resolvedTheme,\n setTheme,\n sitemap,\n siteName,\n}: {\n user: UserWithUsername | undefined\n signOut: () => Promise<void>\n cookies: Cookies\n theme: string | undefined\n resolvedTheme: string | undefined\n setTheme: (theme: string) => void\n sitemap?: any\n siteName?: string\n}) {\n return (\n <header className=\"border-border/40 bg-background/95 supports-backdrop-filter:bg-background/60 backdrop-blur-xs top-0 z-50 w-full border-b\">\n <div className=\"max-w-(--breakpoint-2xl) container mx-auto flex h-14 items-center px-2 py-2\">\n <MainNav userId={user?.username ?? user?.id} sitemap={sitemap} siteName={siteName} />\n {/* <MobileNav /> */}\n <div className=\"flex flex-1 items-center justify-between space-x-2 md:justify-end\">\n <div className=\"w-full flex-1 md:w-auto md:flex-none\">\n <Command />\n </div>\n <nav className=\"flex items-center gap-3\">\n <LangButton cookies={cookies} />\n <ModeToggle\n theme={theme}\n resolvedTheme={resolvedTheme}\n setTheme={setTheme}\n />\n <UserButton signOut={signOut} user={user} />\n </nav>\n </div>\n </div>\n </header>\n )\n}\n"],"mappings":"AAiCQ,cAME,YANF;AAjCR,SAAS,eAAe;AACxB,SAAS,eAAe;AAExB,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAMpB,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GASG;AA7BH;AA8BE,SACE,oBAAC,YAAO,WAAU,2HAChB,+BAAC,SAAI,WAAU,+EACb;AAAA,wBAAC,WAAQ,SAAQ,kCAAM,aAAN,YAAkB,6BAAM,IAAI,SAAkB,UAAoB;AAAA,IAEnF,qBAAC,SAAI,WAAU,qEACb;AAAA,0BAAC,SAAI,WAAU,wCACb,8BAAC,WAAQ,GACX;AAAA,MACA,qBAAC,SAAI,WAAU,2BACb;AAAA,4BAAC,cAAW,SAAkB;AAAA,QAC9B;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA,QACA,oBAAC,cAAW,SAAkB,MAAY;AAAA,SAC5C;AAAA,OACF;AAAA,KACF,GACF;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../components/header/internal/site-header.tsx"],"sourcesContent":["import { Command } from '../../ui/command'\r\nimport { MainNav } from './main-nav'\r\n// import { MobileNav } from './mobile-nav'\r\nimport { ModeToggle } from './mode-toggle'\r\nimport { UserButton } from '../userbutton/userbutton'\r\nimport { LangButton } from '../langbutton/langbutton'\r\nimport { User } from '@auth/core/types'\r\n\r\ntype UserWithUsername = User & { username?: string | null }\r\nimport type { Cookies } from 'next-client-cookies'\r\n\r\nexport function SiteHeader({\r\n user,\r\n signOut,\r\n cookies,\r\n theme,\r\n resolvedTheme,\r\n setTheme,\r\n sitemap,\r\n siteName,\r\n}: {\r\n user: UserWithUsername | undefined\r\n signOut: () => Promise<void>\r\n cookies: Cookies\r\n theme: string | undefined\r\n resolvedTheme: string | undefined\r\n setTheme: (theme: string) => void\r\n sitemap?: any\r\n siteName?: string\r\n}) {\r\n return (\r\n <header className=\"border-border/40 bg-background/95 supports-backdrop-filter:bg-background/60 backdrop-blur-xs top-0 z-50 w-full border-b\">\r\n <div className=\"max-w-(--breakpoint-2xl) container mx-auto flex h-14 items-center px-2 py-2\">\r\n <MainNav userId={user?.username ?? user?.id} sitemap={sitemap} siteName={siteName} />\r\n {/* <MobileNav /> */}\r\n <div className=\"flex flex-1 items-center justify-between space-x-2 md:justify-end\">\r\n <div className=\"w-full flex-1 md:w-auto md:flex-none\">\r\n <Command />\r\n </div>\r\n <nav className=\"flex items-center gap-3\">\r\n <LangButton cookies={cookies} />\r\n <ModeToggle\r\n theme={theme}\r\n resolvedTheme={resolvedTheme}\r\n setTheme={setTheme}\r\n />\r\n <UserButton signOut={signOut} user={user} />\r\n </nav>\r\n </div>\r\n </div>\r\n </header>\r\n )\r\n}\r\n"],"mappings":"AAiCQ,cAME,YANF;AAjCR,SAAS,eAAe;AACxB,SAAS,eAAe;AAExB,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAMpB,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GASG;AA7BH;AA8BE,SACE,oBAAC,YAAO,WAAU,2HAChB,+BAAC,SAAI,WAAU,+EACb;AAAA,wBAAC,WAAQ,SAAQ,kCAAM,aAAN,YAAkB,6BAAM,IAAI,SAAkB,UAAoB;AAAA,IAEnF,qBAAC,SAAI,WAAU,qEACb;AAAA,0BAAC,SAAI,WAAU,wCACb,8BAAC,WAAQ,GACX;AAAA,MACA,qBAAC,SAAI,WAAU,2BACb;AAAA,4BAAC,cAAW,SAAkB;AAAA,QAC9B;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA,QACA,oBAAC,cAAW,SAAkB,MAAY;AAAA,SAC5C;AAAA,OACF;AAAA,KACF,GACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/header/langbutton/langbutton.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../../ui/dropdown-menu'\nimport { Button } from '../../ui/button'\nimport { LanguageIcon } from '@heroicons/react/20/solid'\nconst locales = ['en', 'de']\n\nexport function LangButton({ cookies }: { cookies: any }) {\n const handleLocaleChange = (locale: string) => {\n cookies.set('NEXT_LOCALE', locale)\n window.location.reload()\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-9 w-9\">\n <LanguageIcon className=\"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all\" />\n <span className=\"sr-only\">Toggle language</span>\n </Button>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent align=\"end\">\n {locales.map((locale) => (\n <DropdownMenuItem\n key={locale}\n onClick={() => handleLocaleChange(locale)}\n >\n {locale}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBQ;AAnBR,2BAKO;AACP,oBAAuB;AACvB,mBAA6B;AAC7B,MAAM,UAAU,CAAC,MAAM,IAAI;AAEpB,SAAS,WAAW,EAAE,QAAQ,GAAqB;AACxD,QAAM,qBAAqB,CAAC,WAAmB;AAC7C,YAAQ,IAAI,eAAe,MAAM;AACjC,WAAO,SAAS,OAAO;AAAA,EACzB;AAEA,SACE,6CAAC,qCACC;AAAA,gDAAC,4CAAoB,SAAO,MAC1B,uDAAC,wBAAO,SAAQ,SAAQ,MAAK,QAAO,WAAU,WAC5C;AAAA,kDAAC,6BAAa,WAAU,2DAA0D;AAAA,MAClF,4CAAC,UAAK,WAAU,WAAU,6BAAe;AAAA,OAC3C,GACF;AAAA,IAEA,4CAAC,4CAAoB,OAAM,OACxB,kBAAQ,IAAI,CAAC,WACZ;AAAA,MAAC;AAAA;AAAA,QAEC,SAAS,MAAM,mBAAmB,MAAM;AAAA,QAEvC;AAAA;AAAA,MAHI;AAAA,IAIP,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../components/header/langbutton/langbutton.tsx"],"sourcesContent":["'use client'\r\n\r\nimport * as React from 'react'\r\n\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuTrigger,\r\n} from '../../ui/dropdown-menu'\r\nimport { Button } from '../../ui/button'\r\nimport { LanguageIcon } from '@heroicons/react/20/solid'\r\nconst locales = ['en', 'de']\r\n\r\nexport function LangButton({ cookies }: { cookies: any }) {\r\n const handleLocaleChange = (locale: string) => {\r\n cookies.set('NEXT_LOCALE', locale)\r\n window.location.reload()\r\n }\r\n\r\n return (\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <Button variant=\"ghost\" size=\"icon\" className=\"h-9 w-9\">\r\n <LanguageIcon className=\"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all\" />\r\n <span className=\"sr-only\">Toggle language</span>\r\n </Button>\r\n </DropdownMenuTrigger>\r\n\r\n <DropdownMenuContent align=\"end\">\r\n {locales.map((locale) => (\r\n <DropdownMenuItem\r\n key={locale}\r\n onClick={() => handleLocaleChange(locale)}\r\n >\r\n {locale}\r\n </DropdownMenuItem>\r\n ))}\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBQ;AAnBR,2BAKO;AACP,oBAAuB;AACvB,mBAA6B;AAC7B,MAAM,UAAU,CAAC,MAAM,IAAI;AAEpB,SAAS,WAAW,EAAE,QAAQ,GAAqB;AACxD,QAAM,qBAAqB,CAAC,WAAmB;AAC7C,YAAQ,IAAI,eAAe,MAAM;AACjC,WAAO,SAAS,OAAO;AAAA,EACzB;AAEA,SACE,6CAAC,qCACC;AAAA,gDAAC,4CAAoB,SAAO,MAC1B,uDAAC,wBAAO,SAAQ,SAAQ,MAAK,QAAO,WAAU,WAC5C;AAAA,kDAAC,6BAAa,WAAU,2DAA0D;AAAA,MAClF,4CAAC,UAAK,WAAU,WAAU,6BAAe;AAAA,OAC3C,GACF;AAAA,IAEA,4CAAC,4CAAoB,OAAM,OACxB,kBAAQ,IAAI,CAAC,WACZ;AAAA,MAAC;AAAA;AAAA,QAEC,SAAS,MAAM,mBAAmB,MAAM;AAAA,QAEvC;AAAA;AAAA,MAHI;AAAA,IAIP,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/header/langbutton/langbutton.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../../ui/dropdown-menu'\nimport { Button } from '../../ui/button'\nimport { LanguageIcon } from '@heroicons/react/20/solid'\nconst locales = ['en', 'de']\n\nexport function LangButton({ cookies }: { cookies: any }) {\n const handleLocaleChange = (locale: string) => {\n cookies.set('NEXT_LOCALE', locale)\n window.location.reload()\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-9 w-9\">\n <LanguageIcon className=\"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all\" />\n <span className=\"sr-only\">Toggle language</span>\n </Button>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent align=\"end\">\n {locales.map((locale) => (\n <DropdownMenuItem\n key={locale}\n onClick={() => handleLocaleChange(locale)}\n >\n {locale}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n"],"mappings":";AAuBQ,SACE,KADF;AAnBR;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAC7B,MAAM,UAAU,CAAC,MAAM,IAAI;AAEpB,SAAS,WAAW,EAAE,QAAQ,GAAqB;AACxD,QAAM,qBAAqB,CAAC,WAAmB;AAC7C,YAAQ,IAAI,eAAe,MAAM;AACjC,WAAO,SAAS,OAAO;AAAA,EACzB;AAEA,SACE,qBAAC,gBACC;AAAA,wBAAC,uBAAoB,SAAO,MAC1B,+BAAC,UAAO,SAAQ,SAAQ,MAAK,QAAO,WAAU,WAC5C;AAAA,0BAAC,gBAAa,WAAU,2DAA0D;AAAA,MAClF,oBAAC,UAAK,WAAU,WAAU,6BAAe;AAAA,OAC3C,GACF;AAAA,IAEA,oBAAC,uBAAoB,OAAM,OACxB,kBAAQ,IAAI,CAAC,WACZ;AAAA,MAAC;AAAA;AAAA,QAEC,SAAS,MAAM,mBAAmB,MAAM;AAAA,QAEvC;AAAA;AAAA,MAHI;AAAA,IAIP,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../components/header/langbutton/langbutton.tsx"],"sourcesContent":["'use client'\r\n\r\nimport * as React from 'react'\r\n\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuTrigger,\r\n} from '../../ui/dropdown-menu'\r\nimport { Button } from '../../ui/button'\r\nimport { LanguageIcon } from '@heroicons/react/20/solid'\r\nconst locales = ['en', 'de']\r\n\r\nexport function LangButton({ cookies }: { cookies: any }) {\r\n const handleLocaleChange = (locale: string) => {\r\n cookies.set('NEXT_LOCALE', locale)\r\n window.location.reload()\r\n }\r\n\r\n return (\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <Button variant=\"ghost\" size=\"icon\" className=\"h-9 w-9\">\r\n <LanguageIcon className=\"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all\" />\r\n <span className=\"sr-only\">Toggle language</span>\r\n </Button>\r\n </DropdownMenuTrigger>\r\n\r\n <DropdownMenuContent align=\"end\">\r\n {locales.map((locale) => (\r\n <DropdownMenuItem\r\n key={locale}\r\n onClick={() => handleLocaleChange(locale)}\r\n >\r\n {locale}\r\n </DropdownMenuItem>\r\n ))}\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n )\r\n}\r\n"],"mappings":";AAuBQ,SACE,KADF;AAnBR;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAC7B,MAAM,UAAU,CAAC,MAAM,IAAI;AAEpB,SAAS,WAAW,EAAE,QAAQ,GAAqB;AACxD,QAAM,qBAAqB,CAAC,WAAmB;AAC7C,YAAQ,IAAI,eAAe,MAAM;AACjC,WAAO,SAAS,OAAO;AAAA,EACzB;AAEA,SACE,qBAAC,gBACC;AAAA,wBAAC,uBAAoB,SAAO,MAC1B,+BAAC,UAAO,SAAQ,SAAQ,MAAK,QAAO,WAAU,WAC5C;AAAA,0BAAC,gBAAa,WAAU,2DAA0D;AAAA,MAClF,oBAAC,UAAK,WAAU,WAAU,6BAAe;AAAA,OAC3C,GACF;AAAA,IAEA,oBAAC,uBAAoB,OAAM,OACxB,kBAAQ,IAAI,CAAC,WACZ;AAAA,MAAC;AAAA;AAAA,QAEC,SAAS,MAAM,mBAAmB,MAAM;AAAA,QAEvC;AAAA;AAAA,MAHI;AAAA,IAIP,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/header/userbutton/user-dropdown.tsx"],"sourcesContent":["import {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from '../../ui/dropdown-menu'\nimport { Avatar, AvatarFallback, AvatarImage } from '../../ui/avatar'\nconst links = ['stories', 'characters', 'locations', 'timelines']\nimport React from 'react'\nimport { User } from '@auth/core/types'\n\ntype UserWithUsername = User & { username?: string | null }\n\nconst UserLinks: ({\n user,\n}: {\n user: UserWithUsername\n}) => React.JSX.Element = ({ user }: { user: UserWithUsername }) => {\n const handle = user?.username || user?.id\n return (\n <>\n {links.map((link) => {\n return (\n <a key={'user' + link} href={`/${handle}/${link}`}>\n <DropdownMenuItem>{link}</DropdownMenuItem>\n </a>\n )\n })}\n </>\n )\n}\n\nconst CreateLinks = () => {\n return (\n <>\n {links.map((link) => {\n return (\n <a key={'create' + link} href={`/create/${link}`}>\n <DropdownMenuItem>{link}</DropdownMenuItem>\n </a>\n )\n })}\n </>\n )\n}\n\nconst UserDropdown = ({\n user,\n logOut,\n}: {\n user: UserWithUsername\n logOut: () => void\n}) => {\n const handle = user?.username || user?.id\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Avatar data-tour=\"user-profile\" className=\"h-9 w-9 cursor-pointer\">\n <AvatarImage src={user?.image || ''} alt={user?.name || 'User'} />\n <AvatarFallback>{user?.name?.split('')[0]}</AvatarFallback>\n </Avatar>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\">\n <DropdownMenuLabel>{user?.name}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <a href={`/${handle}`}>\n <DropdownMenuItem>Profile</DropdownMenuItem>\n </a>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <UserLinks user={user} />\n <DropdownMenuSub>\n <DropdownMenuSubTrigger>Create New</DropdownMenuSubTrigger>\n <DropdownMenuPortal>\n <DropdownMenuSubContent>\n <CreateLinks />\n <DropdownMenuSeparator />\n <a href={`/create/`}>\n <DropdownMenuItem>More...</DropdownMenuItem>\n </a>\n </DropdownMenuSubContent>\n </DropdownMenuPortal>\n </DropdownMenuSub>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={logOut}>Log out</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport default UserDropdown\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BI;AA3BJ,2BAYO;AACP,oBAAoD;AACpD,MAAM,QAAQ,CAAC,WAAW,cAAc,aAAa,WAAW;AAMhE,MAAM,YAIoB,CAAC,EAAE,KAAK,MAAkC;AAClE,QAAM,UAAS,6BAAM,cAAY,6BAAM;AACvC,SACE,2EACG,gBAAM,IAAI,CAAC,SAAS;AACnB,WACE,4CAAC,OAAsB,MAAM,IAAI,MAAM,IAAI,IAAI,IAC7C,sDAAC,yCAAkB,gBAAK,KADlB,SAAS,IAEjB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,MAAM,cAAc,MAAM;AACxB,SACE,2EACG,gBAAM,IAAI,CAAC,SAAS;AACnB,WACE,4CAAC,OAAwB,MAAM,WAAW,IAAI,IAC5C,sDAAC,yCAAkB,gBAAK,KADlB,WAAW,IAEnB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,MAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA;AACF,MAGM;AA3DN;AA4DE,QAAM,UAAS,6BAAM,cAAY,6BAAM;AACvC,SACE,6CAAC,qCACC;AAAA,gDAAC,4CAAoB,SAAO,MAC1B,uDAAC,wBAAO,aAAU,gBAAe,WAAU,0BACzC;AAAA,kDAAC,6BAAY,MAAK,6BAAM,UAAS,IAAI,MAAK,6BAAM,SAAQ,QAAQ;AAAA,MAChE,4CAAC,gCAAgB,6CAAM,SAAN,mBAAY,MAAM,IAAI,IAAG;AAAA,OAC5C,GACF;AAAA,IACA,6CAAC,4CAAoB,WAAU,QAC7B;AAAA,kDAAC,0CAAmB,uCAAM,MAAK;AAAA,MAC/B,4CAAC,8CAAsB;AAAA,MACvB,4CAAC,0CACC,sDAAC,OAAE,MAAM,IAAI,MAAM,IACjB,sDAAC,yCAAiB,qBAAO,GAC3B,GACF;AAAA,MACA,4CAAC,8CAAsB;AAAA,MACvB,6CAAC,0CACC;AAAA,oDAAC,aAAU,MAAY;AAAA,QACvB,6CAAC,wCACC;AAAA,sDAAC,+CAAuB,wBAAU;AAAA,UAClC,4CAAC,2CACC,uDAAC,+CACC;AAAA,wDAAC,eAAY;AAAA,YACb,4CAAC,8CAAsB;AAAA,YACvB,4CAAC,OAAE,MAAM,YACP,sDAAC,yCAAiB,qBAAO,GAC3B;AAAA,aACF,GACF;AAAA,WACF;AAAA,SACF;AAAA,MACA,4CAAC,8CAAsB;AAAA,MACvB,4CAAC,yCAAiB,SAAS,QAAQ,qBAAO;AAAA,OAC5C;AAAA,KACF;AAEJ;AAEA,IAAO,wBAAQ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../components/header/userbutton/user-dropdown.tsx"],"sourcesContent":["import {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuGroup,\r\n DropdownMenuItem,\r\n DropdownMenuLabel,\r\n DropdownMenuPortal,\r\n DropdownMenuSeparator,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuTrigger,\r\n} from '../../ui/dropdown-menu'\r\nimport { Avatar, AvatarFallback, AvatarImage } from '../../ui/avatar'\r\nconst links = ['stories', 'characters', 'locations', 'timelines']\r\nimport React from 'react'\r\nimport { User } from '@auth/core/types'\r\n\r\ntype UserWithUsername = User & { username?: string | null }\r\n\r\nconst UserLinks: ({\r\n user,\r\n}: {\r\n user: UserWithUsername\r\n}) => React.JSX.Element = ({ user }: { user: UserWithUsername }) => {\r\n const handle = user?.username || user?.id\r\n return (\r\n <>\r\n {links.map((link) => {\r\n return (\r\n <a key={'user' + link} href={`/${handle}/${link}`}>\r\n <DropdownMenuItem>{link}</DropdownMenuItem>\r\n </a>\r\n )\r\n })}\r\n </>\r\n )\r\n}\r\n\r\nconst CreateLinks = () => {\r\n return (\r\n <>\r\n {links.map((link) => {\r\n return (\r\n <a key={'create' + link} href={`/create/${link}`}>\r\n <DropdownMenuItem>{link}</DropdownMenuItem>\r\n </a>\r\n )\r\n })}\r\n </>\r\n )\r\n}\r\n\r\nconst UserDropdown = ({\r\n user,\r\n logOut,\r\n}: {\r\n user: UserWithUsername\r\n logOut: () => void\r\n}) => {\r\n const handle = user?.username || user?.id\r\n return (\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <Avatar data-tour=\"user-profile\" className=\"h-9 w-9 cursor-pointer\">\r\n <AvatarImage src={user?.image || ''} alt={user?.name || 'User'} />\r\n <AvatarFallback>{user?.name?.split('')[0]}</AvatarFallback>\r\n </Avatar>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent className=\"w-56\">\r\n <DropdownMenuLabel>{user?.name}</DropdownMenuLabel>\r\n <DropdownMenuSeparator />\r\n <DropdownMenuGroup>\r\n <a href={`/${handle}`}>\r\n <DropdownMenuItem>Profile</DropdownMenuItem>\r\n </a>\r\n </DropdownMenuGroup>\r\n <DropdownMenuSeparator />\r\n <DropdownMenuGroup>\r\n <UserLinks user={user} />\r\n <DropdownMenuSub>\r\n <DropdownMenuSubTrigger>Create New</DropdownMenuSubTrigger>\r\n <DropdownMenuPortal>\r\n <DropdownMenuSubContent>\r\n <CreateLinks />\r\n <DropdownMenuSeparator />\r\n <a href={`/create/`}>\r\n <DropdownMenuItem>More...</DropdownMenuItem>\r\n </a>\r\n </DropdownMenuSubContent>\r\n </DropdownMenuPortal>\r\n </DropdownMenuSub>\r\n </DropdownMenuGroup>\r\n <DropdownMenuSeparator />\r\n <DropdownMenuItem onClick={logOut}>Log out</DropdownMenuItem>\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n )\r\n}\r\n\r\nexport default UserDropdown\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BI;AA3BJ,2BAYO;AACP,oBAAoD;AACpD,MAAM,QAAQ,CAAC,WAAW,cAAc,aAAa,WAAW;AAMhE,MAAM,YAIoB,CAAC,EAAE,KAAK,MAAkC;AAClE,QAAM,UAAS,6BAAM,cAAY,6BAAM;AACvC,SACE,2EACG,gBAAM,IAAI,CAAC,SAAS;AACnB,WACE,4CAAC,OAAsB,MAAM,IAAI,MAAM,IAAI,IAAI,IAC7C,sDAAC,yCAAkB,gBAAK,KADlB,SAAS,IAEjB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,MAAM,cAAc,MAAM;AACxB,SACE,2EACG,gBAAM,IAAI,CAAC,SAAS;AACnB,WACE,4CAAC,OAAwB,MAAM,WAAW,IAAI,IAC5C,sDAAC,yCAAkB,gBAAK,KADlB,WAAW,IAEnB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,MAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA;AACF,MAGM;AA3DN;AA4DE,QAAM,UAAS,6BAAM,cAAY,6BAAM;AACvC,SACE,6CAAC,qCACC;AAAA,gDAAC,4CAAoB,SAAO,MAC1B,uDAAC,wBAAO,aAAU,gBAAe,WAAU,0BACzC;AAAA,kDAAC,6BAAY,MAAK,6BAAM,UAAS,IAAI,MAAK,6BAAM,SAAQ,QAAQ;AAAA,MAChE,4CAAC,gCAAgB,6CAAM,SAAN,mBAAY,MAAM,IAAI,IAAG;AAAA,OAC5C,GACF;AAAA,IACA,6CAAC,4CAAoB,WAAU,QAC7B;AAAA,kDAAC,0CAAmB,uCAAM,MAAK;AAAA,MAC/B,4CAAC,8CAAsB;AAAA,MACvB,4CAAC,0CACC,sDAAC,OAAE,MAAM,IAAI,MAAM,IACjB,sDAAC,yCAAiB,qBAAO,GAC3B,GACF;AAAA,MACA,4CAAC,8CAAsB;AAAA,MACvB,6CAAC,0CACC;AAAA,oDAAC,aAAU,MAAY;AAAA,QACvB,6CAAC,wCACC;AAAA,sDAAC,+CAAuB,wBAAU;AAAA,UAClC,4CAAC,2CACC,uDAAC,+CACC;AAAA,wDAAC,eAAY;AAAA,YACb,4CAAC,8CAAsB;AAAA,YACvB,4CAAC,OAAE,MAAM,YACP,sDAAC,yCAAiB,qBAAO,GAC3B;AAAA,aACF,GACF;AAAA,WACF;AAAA,SACF;AAAA,MACA,4CAAC,8CAAsB;AAAA,MACvB,4CAAC,yCAAiB,SAAS,QAAQ,qBAAO;AAAA,OAC5C;AAAA,KACF;AAEJ;AAEA,IAAO,wBAAQ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/header/userbutton/user-dropdown.tsx"],"sourcesContent":["import {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from '../../ui/dropdown-menu'\nimport { Avatar, AvatarFallback, AvatarImage } from '../../ui/avatar'\nconst links = ['stories', 'characters', 'locations', 'timelines']\nimport React from 'react'\nimport { User } from '@auth/core/types'\n\ntype UserWithUsername = User & { username?: string | null }\n\nconst UserLinks: ({\n user,\n}: {\n user: UserWithUsername\n}) => React.JSX.Element = ({ user }: { user: UserWithUsername }) => {\n const handle = user?.username || user?.id\n return (\n <>\n {links.map((link) => {\n return (\n <a key={'user' + link} href={`/${handle}/${link}`}>\n <DropdownMenuItem>{link}</DropdownMenuItem>\n </a>\n )\n })}\n </>\n )\n}\n\nconst CreateLinks = () => {\n return (\n <>\n {links.map((link) => {\n return (\n <a key={'create' + link} href={`/create/${link}`}>\n <DropdownMenuItem>{link}</DropdownMenuItem>\n </a>\n )\n })}\n </>\n )\n}\n\nconst UserDropdown = ({\n user,\n logOut,\n}: {\n user: UserWithUsername\n logOut: () => void\n}) => {\n const handle = user?.username || user?.id\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Avatar data-tour=\"user-profile\" className=\"h-9 w-9 cursor-pointer\">\n <AvatarImage src={user?.image || ''} alt={user?.name || 'User'} />\n <AvatarFallback>{user?.name?.split('')[0]}</AvatarFallback>\n </Avatar>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\">\n <DropdownMenuLabel>{user?.name}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <a href={`/${handle}`}>\n <DropdownMenuItem>Profile</DropdownMenuItem>\n </a>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <UserLinks user={user} />\n <DropdownMenuSub>\n <DropdownMenuSubTrigger>Create New</DropdownMenuSubTrigger>\n <DropdownMenuPortal>\n <DropdownMenuSubContent>\n <CreateLinks />\n <DropdownMenuSeparator />\n <a href={`/create/`}>\n <DropdownMenuItem>More...</DropdownMenuItem>\n </a>\n </DropdownMenuSubContent>\n </DropdownMenuPortal>\n </DropdownMenuSub>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={logOut}>Log out</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport default UserDropdown\n"],"mappings":"AA2BI,mBAIQ,KAiCJ,YArCJ;AA3BJ;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,QAAQ,gBAAgB,mBAAmB;AACpD,MAAM,QAAQ,CAAC,WAAW,cAAc,aAAa,WAAW;AAMhE,MAAM,YAIoB,CAAC,EAAE,KAAK,MAAkC;AAClE,QAAM,UAAS,6BAAM,cAAY,6BAAM;AACvC,SACE,gCACG,gBAAM,IAAI,CAAC,SAAS;AACnB,WACE,oBAAC,OAAsB,MAAM,IAAI,MAAM,IAAI,IAAI,IAC7C,8BAAC,oBAAkB,gBAAK,KADlB,SAAS,IAEjB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,MAAM,cAAc,MAAM;AACxB,SACE,gCACG,gBAAM,IAAI,CAAC,SAAS;AACnB,WACE,oBAAC,OAAwB,MAAM,WAAW,IAAI,IAC5C,8BAAC,oBAAkB,gBAAK,KADlB,WAAW,IAEnB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,MAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA;AACF,MAGM;AA3DN;AA4DE,QAAM,UAAS,6BAAM,cAAY,6BAAM;AACvC,SACE,qBAAC,gBACC;AAAA,wBAAC,uBAAoB,SAAO,MAC1B,+BAAC,UAAO,aAAU,gBAAe,WAAU,0BACzC;AAAA,0BAAC,eAAY,MAAK,6BAAM,UAAS,IAAI,MAAK,6BAAM,SAAQ,QAAQ;AAAA,MAChE,oBAAC,kBAAgB,6CAAM,SAAN,mBAAY,MAAM,IAAI,IAAG;AAAA,OAC5C,GACF;AAAA,IACA,qBAAC,uBAAoB,WAAU,QAC7B;AAAA,0BAAC,qBAAmB,uCAAM,MAAK;AAAA,MAC/B,oBAAC,yBAAsB;AAAA,MACvB,oBAAC,qBACC,8BAAC,OAAE,MAAM,IAAI,MAAM,IACjB,8BAAC,oBAAiB,qBAAO,GAC3B,GACF;AAAA,MACA,oBAAC,yBAAsB;AAAA,MACvB,qBAAC,qBACC;AAAA,4BAAC,aAAU,MAAY;AAAA,QACvB,qBAAC,mBACC;AAAA,8BAAC,0BAAuB,wBAAU;AAAA,UAClC,oBAAC,sBACC,+BAAC,0BACC;AAAA,gCAAC,eAAY;AAAA,YACb,oBAAC,yBAAsB;AAAA,YACvB,oBAAC,OAAE,MAAM,YACP,8BAAC,oBAAiB,qBAAO,GAC3B;AAAA,aACF,GACF;AAAA,WACF;AAAA,SACF;AAAA,MACA,oBAAC,yBAAsB;AAAA,MACvB,oBAAC,oBAAiB,SAAS,QAAQ,qBAAO;AAAA,OAC5C;AAAA,KACF;AAEJ;AAEA,IAAO,wBAAQ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../components/header/userbutton/user-dropdown.tsx"],"sourcesContent":["import {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuGroup,\r\n DropdownMenuItem,\r\n DropdownMenuLabel,\r\n DropdownMenuPortal,\r\n DropdownMenuSeparator,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuTrigger,\r\n} from '../../ui/dropdown-menu'\r\nimport { Avatar, AvatarFallback, AvatarImage } from '../../ui/avatar'\r\nconst links = ['stories', 'characters', 'locations', 'timelines']\r\nimport React from 'react'\r\nimport { User } from '@auth/core/types'\r\n\r\ntype UserWithUsername = User & { username?: string | null }\r\n\r\nconst UserLinks: ({\r\n user,\r\n}: {\r\n user: UserWithUsername\r\n}) => React.JSX.Element = ({ user }: { user: UserWithUsername }) => {\r\n const handle = user?.username || user?.id\r\n return (\r\n <>\r\n {links.map((link) => {\r\n return (\r\n <a key={'user' + link} href={`/${handle}/${link}`}>\r\n <DropdownMenuItem>{link}</DropdownMenuItem>\r\n </a>\r\n )\r\n })}\r\n </>\r\n )\r\n}\r\n\r\nconst CreateLinks = () => {\r\n return (\r\n <>\r\n {links.map((link) => {\r\n return (\r\n <a key={'create' + link} href={`/create/${link}`}>\r\n <DropdownMenuItem>{link}</DropdownMenuItem>\r\n </a>\r\n )\r\n })}\r\n </>\r\n )\r\n}\r\n\r\nconst UserDropdown = ({\r\n user,\r\n logOut,\r\n}: {\r\n user: UserWithUsername\r\n logOut: () => void\r\n}) => {\r\n const handle = user?.username || user?.id\r\n return (\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <Avatar data-tour=\"user-profile\" className=\"h-9 w-9 cursor-pointer\">\r\n <AvatarImage src={user?.image || ''} alt={user?.name || 'User'} />\r\n <AvatarFallback>{user?.name?.split('')[0]}</AvatarFallback>\r\n </Avatar>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent className=\"w-56\">\r\n <DropdownMenuLabel>{user?.name}</DropdownMenuLabel>\r\n <DropdownMenuSeparator />\r\n <DropdownMenuGroup>\r\n <a href={`/${handle}`}>\r\n <DropdownMenuItem>Profile</DropdownMenuItem>\r\n </a>\r\n </DropdownMenuGroup>\r\n <DropdownMenuSeparator />\r\n <DropdownMenuGroup>\r\n <UserLinks user={user} />\r\n <DropdownMenuSub>\r\n <DropdownMenuSubTrigger>Create New</DropdownMenuSubTrigger>\r\n <DropdownMenuPortal>\r\n <DropdownMenuSubContent>\r\n <CreateLinks />\r\n <DropdownMenuSeparator />\r\n <a href={`/create/`}>\r\n <DropdownMenuItem>More...</DropdownMenuItem>\r\n </a>\r\n </DropdownMenuSubContent>\r\n </DropdownMenuPortal>\r\n </DropdownMenuSub>\r\n </DropdownMenuGroup>\r\n <DropdownMenuSeparator />\r\n <DropdownMenuItem onClick={logOut}>Log out</DropdownMenuItem>\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n )\r\n}\r\n\r\nexport default UserDropdown\r\n"],"mappings":"AA2BI,mBAIQ,KAiCJ,YArCJ;AA3BJ;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,QAAQ,gBAAgB,mBAAmB;AACpD,MAAM,QAAQ,CAAC,WAAW,cAAc,aAAa,WAAW;AAMhE,MAAM,YAIoB,CAAC,EAAE,KAAK,MAAkC;AAClE,QAAM,UAAS,6BAAM,cAAY,6BAAM;AACvC,SACE,gCACG,gBAAM,IAAI,CAAC,SAAS;AACnB,WACE,oBAAC,OAAsB,MAAM,IAAI,MAAM,IAAI,IAAI,IAC7C,8BAAC,oBAAkB,gBAAK,KADlB,SAAS,IAEjB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,MAAM,cAAc,MAAM;AACxB,SACE,gCACG,gBAAM,IAAI,CAAC,SAAS;AACnB,WACE,oBAAC,OAAwB,MAAM,WAAW,IAAI,IAC5C,8BAAC,oBAAkB,gBAAK,KADlB,WAAW,IAEnB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,MAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA;AACF,MAGM;AA3DN;AA4DE,QAAM,UAAS,6BAAM,cAAY,6BAAM;AACvC,SACE,qBAAC,gBACC;AAAA,wBAAC,uBAAoB,SAAO,MAC1B,+BAAC,UAAO,aAAU,gBAAe,WAAU,0BACzC;AAAA,0BAAC,eAAY,MAAK,6BAAM,UAAS,IAAI,MAAK,6BAAM,SAAQ,QAAQ;AAAA,MAChE,oBAAC,kBAAgB,6CAAM,SAAN,mBAAY,MAAM,IAAI,IAAG;AAAA,OAC5C,GACF;AAAA,IACA,qBAAC,uBAAoB,WAAU,QAC7B;AAAA,0BAAC,qBAAmB,uCAAM,MAAK;AAAA,MAC/B,oBAAC,yBAAsB;AAAA,MACvB,oBAAC,qBACC,8BAAC,OAAE,MAAM,IAAI,MAAM,IACjB,8BAAC,oBAAiB,qBAAO,GAC3B,GACF;AAAA,MACA,oBAAC,yBAAsB;AAAA,MACvB,qBAAC,qBACC;AAAA,4BAAC,aAAU,MAAY;AAAA,QACvB,qBAAC,mBACC;AAAA,8BAAC,0BAAuB,wBAAU;AAAA,UAClC,oBAAC,sBACC,+BAAC,0BACC;AAAA,gCAAC,eAAY;AAAA,YACb,oBAAC,yBAAsB;AAAA,YACvB,oBAAC,OAAE,MAAM,YACP,8BAAC,oBAAiB,qBAAO,GAC3B;AAAA,aACF,GACF;AAAA,WACF;AAAA,SACF;AAAA,MACA,oBAAC,yBAAsB;AAAA,MACvB,oBAAC,oBAAiB,SAAS,QAAQ,qBAAO;AAAA,OAC5C;AAAA,KACF;AAEJ;AAEA,IAAO,wBAAQ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/header/userbutton/userbutton.tsx"],"sourcesContent":["'use client'\nimport UserDropdown from './user-dropdown'\nimport { User } from '@auth/core/types'\n\ntype UserWithUsername = User & { username?: string | null }\n\nexport const UserButton = ({\n user,\n signOut,\n}: {\n user: UserWithUsername | undefined\n signOut: () => Promise<void>\n}) => {\n return user ? (\n <UserDropdown user={user} logOut={signOut} />\n ) : (\n <a href=\"/signin\" className=\"text-sm font-semibold leading-6 text-white\">\n Log in <span aria-hidden=\"true\">→</span>\n </a>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAcI;AAbJ,2BAAyB;AAKlB,MAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AACF,MAGM;AACJ,SAAO,OACL,4CAAC,qBAAAA,SAAA,EAAa,MAAY,QAAQ,SAAS,IAE3C,6CAAC,OAAE,MAAK,WAAU,WAAU,8CAA6C;AAAA;AAAA,IAChE,4CAAC,UAAK,eAAY,QAAO,oBAAM;AAAA,KACxC;AAEJ;","names":["UserDropdown"]}
|
|
1
|
+
{"version":3,"sources":["../../../../components/header/userbutton/userbutton.tsx"],"sourcesContent":["'use client'\r\nimport UserDropdown from './user-dropdown'\r\nimport { User } from '@auth/core/types'\r\n\r\ntype UserWithUsername = User & { username?: string | null }\r\n\r\nexport const UserButton = ({\r\n user,\r\n signOut,\r\n}: {\r\n user: UserWithUsername | undefined\r\n signOut: () => Promise<void>\r\n}) => {\r\n return user ? (\r\n <UserDropdown user={user} logOut={signOut} />\r\n ) : (\r\n <a href=\"/signin\" className=\"text-sm font-semibold leading-6 text-white\">\r\n Log in <span aria-hidden=\"true\">→</span>\r\n </a>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAcI;AAbJ,2BAAyB;AAKlB,MAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AACF,MAGM;AACJ,SAAO,OACL,4CAAC,qBAAAA,SAAA,EAAa,MAAY,QAAQ,SAAS,IAE3C,6CAAC,OAAE,MAAK,WAAU,WAAU,8CAA6C;AAAA;AAAA,IAChE,4CAAC,UAAK,eAAY,QAAO,oBAAM;AAAA,KACxC;AAEJ;","names":["UserDropdown"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/header/userbutton/userbutton.tsx"],"sourcesContent":["'use client'\nimport UserDropdown from './user-dropdown'\nimport { User } from '@auth/core/types'\n\ntype UserWithUsername = User & { username?: string | null }\n\nexport const UserButton = ({\n user,\n signOut,\n}: {\n user: UserWithUsername | undefined\n signOut: () => Promise<void>\n}) => {\n return user ? (\n <UserDropdown user={user} logOut={signOut} />\n ) : (\n <a href=\"/signin\" className=\"text-sm font-semibold leading-6 text-white\">\n Log in <span aria-hidden=\"true\">→</span>\n </a>\n )\n}\n"],"mappings":";AAcI,cAEA,YAFA;AAbJ,OAAO,kBAAkB;AAKlB,MAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AACF,MAGM;AACJ,SAAO,OACL,oBAAC,gBAAa,MAAY,QAAQ,SAAS,IAE3C,qBAAC,OAAE,MAAK,WAAU,WAAU,8CAA6C;AAAA;AAAA,IAChE,oBAAC,UAAK,eAAY,QAAO,oBAAM;AAAA,KACxC;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../components/header/userbutton/userbutton.tsx"],"sourcesContent":["'use client'\r\nimport UserDropdown from './user-dropdown'\r\nimport { User } from '@auth/core/types'\r\n\r\ntype UserWithUsername = User & { username?: string | null }\r\n\r\nexport const UserButton = ({\r\n user,\r\n signOut,\r\n}: {\r\n user: UserWithUsername | undefined\r\n signOut: () => Promise<void>\r\n}) => {\r\n return user ? (\r\n <UserDropdown user={user} logOut={signOut} />\r\n ) : (\r\n <a href=\"/signin\" className=\"text-sm font-semibold leading-6 text-white\">\r\n Log in <span aria-hidden=\"true\">→</span>\r\n </a>\r\n )\r\n}\r\n"],"mappings":";AAcI,cAEA,YAFA;AAbJ,OAAO,kBAAkB;AAKlB,MAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AACF,MAGM;AACJ,SAAO,OACL,oBAAC,gBAAa,MAAY,QAAQ,SAAS,IAE3C,qBAAC,OAAE,MAAK,WAAU,WAAU,8CAA6C;AAAA;AAAA,IAChE,oBAAC,UAAK,eAAY,QAAO,oBAAM;AAAA,KACxC;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/hooks/use-page-nav.tsx"],"sourcesContent":["import { createPagesSubNav } from '../dashboard/utils/build-nav'\nimport { createKeyIndex } from '../dashboard/utils/build-nav'\nimport { cn } from '../../lib/utils'\nimport Link from 'next/link'\nimport { ReactElement, useEffect, useState } from 'react'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../ui/dropdown-menu'\nimport { Sitemap } from '../../types/sitemap'\n\nexport const usePageNav = (\n sitemap: Sitemap,\n pathname: string,\n t: (key: string) => string,\n userId?: string,\n) => {\n const [pages, setPages] = useState([])\n\n useEffect(() => {\n const keyIndex = createKeyIndex(sitemap)\n const reducedPages = createPagesSubNav(keyIndex, 'pages', {})\n setPages(reducedPages)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [userId])\n\n return {\n pages: pages?.map(\n (page: { title: string; href: string; children?: ReactElement[] }) => {\n return page?.children ? (\n <DropdownMenu key={page?.title}>\n <DropdownMenuTrigger asChild>\n <Link\n key={page?.title}\n href={page?.href}\n className={cn(\n 'hover:text-foreground/80 transition-colors',\n pathname === page?.href\n ? 'text-foreground'\n : 'text-foreground/60',\n )}\n >\n {t(page?.title)}\n </Link>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\">\n {page?.children?.map((link: any) => (\n <DropdownMenuGroup key={link?.title}>\n <Link href={`${link?.href?.replace(':user', userId || '')}`}>\n <DropdownMenuItem>{t(link?.title)}</DropdownMenuItem>\n </Link>\n </DropdownMenuGroup>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n ) : (\n <Link\n key={page?.title}\n href={page?.href}\n className={cn(\n 'hover:text-foreground/80 transition-colors',\n pathname === page?.href\n ? 'text-foreground'\n : 'text-foreground/60',\n )}\n >\n {t(page?.title)}\n </Link>\n )\n },\n ),\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCU;AAjCV,uBAAkC;AAClC,IAAAA,oBAA+B;AAC/B,mBAAmB;AACnB,kBAAiB;AACjB,mBAAkD;AAClD,2BAMO;AAGA,MAAM,aAAa,CACxB,SACA,UACA,GACA,WACG;AACH,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAS,CAAC,CAAC;AAErC,8BAAU,MAAM;AACd,UAAM,eAAW,kCAAe,OAAO;AACvC,UAAM,mBAAe,oCAAkB,UAAU,SAAS,CAAC,CAAC;AAC5D,aAAS,YAAY;AAAA,EAEvB,GAAG,CAAC,MAAM,CAAC;AAEX,SAAO;AAAA,IACL,OAAO,+BAAO;AAAA,MACZ,CAAC,SAAqE;AA/B5E;AAgCQ,gBAAO,6BAAM,YACX,6CAAC,qCACC;AAAA,sDAAC,4CAAoB,SAAO,MAC1B;AAAA,YAAC,YAAAC;AAAA,YAAA;AAAA,cAEC,MAAM,6BAAM;AAAA,cACZ,eAAW;AAAA,gBACT;AAAA,gBACA,cAAa,6BAAM,QACf,oBACA;AAAA,cACN;AAAA,cAEC,YAAE,6BAAM,KAAK;AAAA;AAAA,YATT,6BAAM;AAAA,UAUb,GACF;AAAA,UACA,4CAAC,4CAAoB,WAAU,QAC5B,6CAAM,aAAN,mBAAgB,IAAI,CAAC,SAAW;AAjD/C,gBAAAC;AAkDgB,+DAAC,0CACC,sDAAC,YAAAD,SAAA,EAAK,MAAM,IAAGC,MAAA,6BAAM,SAAN,gBAAAA,IAAY,QAAQ,SAAS,UAAU,GAAG,IACvD,sDAAC,yCAAkB,YAAE,6BAAM,KAAK,GAAE,GACpC,KAHsB,6BAAM,KAI9B;AAAA,cAEJ;AAAA,aAvBiB,6BAAM,KAwBzB,IAEA;AAAA,UAAC,YAAAD;AAAA,UAAA;AAAA,YAEC,MAAM,6BAAM;AAAA,YACZ,eAAW;AAAA,cACT;AAAA,cACA,cAAa,6BAAM,QACf,oBACA;AAAA,YACN;AAAA,YAEC,YAAE,6BAAM,KAAK;AAAA;AAAA,UATT,6BAAM;AAAA,QAUb;AAAA,MAEJ;AAAA;AAAA,EAEJ;AACF;","names":["import_build_nav","Link","_a"]}
|
|
1
|
+
{"version":3,"sources":["../../../components/hooks/use-page-nav.tsx"],"sourcesContent":["import { createPagesSubNav } from '../dashboard/utils/build-nav'\r\nimport { createKeyIndex } from '../dashboard/utils/build-nav'\r\nimport { cn } from '../../lib/utils'\r\nimport Link from 'next/link'\r\nimport { ReactElement, useEffect, useState } from 'react'\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuGroup,\r\n DropdownMenuItem,\r\n DropdownMenuTrigger,\r\n} from '../ui/dropdown-menu'\r\nimport { Sitemap } from '../../types/sitemap'\r\n\r\nexport const usePageNav = (\r\n sitemap: Sitemap,\r\n pathname: string,\r\n t: (key: string) => string,\r\n userId?: string,\r\n) => {\r\n const [pages, setPages] = useState([])\r\n\r\n useEffect(() => {\r\n const keyIndex = createKeyIndex(sitemap)\r\n const reducedPages = createPagesSubNav(keyIndex, 'pages', {})\r\n setPages(reducedPages)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [userId])\r\n\r\n return {\r\n pages: pages?.map(\r\n (page: { title: string; href: string; children?: ReactElement[] }) => {\r\n return page?.children ? (\r\n <DropdownMenu key={page?.title}>\r\n <DropdownMenuTrigger asChild>\r\n <Link\r\n key={page?.title}\r\n href={page?.href}\r\n className={cn(\r\n 'hover:text-foreground/80 transition-colors',\r\n pathname === page?.href\r\n ? 'text-foreground'\r\n : 'text-foreground/60',\r\n )}\r\n >\r\n {t(page?.title)}\r\n </Link>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent className=\"w-56\">\r\n {page?.children?.map((link: any) => (\r\n <DropdownMenuGroup key={link?.title}>\r\n <Link href={`${link?.href?.replace(':user', userId || '')}`}>\r\n <DropdownMenuItem>{t(link?.title)}</DropdownMenuItem>\r\n </Link>\r\n </DropdownMenuGroup>\r\n ))}\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n ) : (\r\n <Link\r\n key={page?.title}\r\n href={page?.href}\r\n className={cn(\r\n 'hover:text-foreground/80 transition-colors',\r\n pathname === page?.href\r\n ? 'text-foreground'\r\n : 'text-foreground/60',\r\n )}\r\n >\r\n {t(page?.title)}\r\n </Link>\r\n )\r\n },\r\n ),\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCU;AAjCV,uBAAkC;AAClC,IAAAA,oBAA+B;AAC/B,mBAAmB;AACnB,kBAAiB;AACjB,mBAAkD;AAClD,2BAMO;AAGA,MAAM,aAAa,CACxB,SACA,UACA,GACA,WACG;AACH,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAS,CAAC,CAAC;AAErC,8BAAU,MAAM;AACd,UAAM,eAAW,kCAAe,OAAO;AACvC,UAAM,mBAAe,oCAAkB,UAAU,SAAS,CAAC,CAAC;AAC5D,aAAS,YAAY;AAAA,EAEvB,GAAG,CAAC,MAAM,CAAC;AAEX,SAAO;AAAA,IACL,OAAO,+BAAO;AAAA,MACZ,CAAC,SAAqE;AA/B5E;AAgCQ,gBAAO,6BAAM,YACX,6CAAC,qCACC;AAAA,sDAAC,4CAAoB,SAAO,MAC1B;AAAA,YAAC,YAAAC;AAAA,YAAA;AAAA,cAEC,MAAM,6BAAM;AAAA,cACZ,eAAW;AAAA,gBACT;AAAA,gBACA,cAAa,6BAAM,QACf,oBACA;AAAA,cACN;AAAA,cAEC,YAAE,6BAAM,KAAK;AAAA;AAAA,YATT,6BAAM;AAAA,UAUb,GACF;AAAA,UACA,4CAAC,4CAAoB,WAAU,QAC5B,6CAAM,aAAN,mBAAgB,IAAI,CAAC,SAAW;AAjD/C,gBAAAC;AAkDgB,+DAAC,0CACC,sDAAC,YAAAD,SAAA,EAAK,MAAM,IAAGC,MAAA,6BAAM,SAAN,gBAAAA,IAAY,QAAQ,SAAS,UAAU,GAAG,IACvD,sDAAC,yCAAkB,YAAE,6BAAM,KAAK,GAAE,GACpC,KAHsB,6BAAM,KAI9B;AAAA,cAEJ;AAAA,aAvBiB,6BAAM,KAwBzB,IAEA;AAAA,UAAC,YAAAD;AAAA,UAAA;AAAA,YAEC,MAAM,6BAAM;AAAA,YACZ,eAAW;AAAA,cACT;AAAA,cACA,cAAa,6BAAM,QACf,oBACA;AAAA,YACN;AAAA,YAEC,YAAE,6BAAM,KAAK;AAAA;AAAA,UATT,6BAAM;AAAA,QAUb;AAAA,MAEJ;AAAA;AAAA,EAEJ;AACF;","names":["import_build_nav","Link","_a"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/hooks/use-page-nav.tsx"],"sourcesContent":["import { createPagesSubNav } from '../dashboard/utils/build-nav'\nimport { createKeyIndex } from '../dashboard/utils/build-nav'\nimport { cn } from '../../lib/utils'\nimport Link from 'next/link'\nimport { ReactElement, useEffect, useState } from 'react'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../ui/dropdown-menu'\nimport { Sitemap } from '../../types/sitemap'\n\nexport const usePageNav = (\n sitemap: Sitemap,\n pathname: string,\n t: (key: string) => string,\n userId?: string,\n) => {\n const [pages, setPages] = useState([])\n\n useEffect(() => {\n const keyIndex = createKeyIndex(sitemap)\n const reducedPages = createPagesSubNav(keyIndex, 'pages', {})\n setPages(reducedPages)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [userId])\n\n return {\n pages: pages?.map(\n (page: { title: string; href: string; children?: ReactElement[] }) => {\n return page?.children ? (\n <DropdownMenu key={page?.title}>\n <DropdownMenuTrigger asChild>\n <Link\n key={page?.title}\n href={page?.href}\n className={cn(\n 'hover:text-foreground/80 transition-colors',\n pathname === page?.href\n ? 'text-foreground'\n : 'text-foreground/60',\n )}\n >\n {t(page?.title)}\n </Link>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\">\n {page?.children?.map((link: any) => (\n <DropdownMenuGroup key={link?.title}>\n <Link href={`${link?.href?.replace(':user', userId || '')}`}>\n <DropdownMenuItem>{t(link?.title)}</DropdownMenuItem>\n </Link>\n </DropdownMenuGroup>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n ) : (\n <Link\n key={page?.title}\n href={page?.href}\n className={cn(\n 'hover:text-foreground/80 transition-colors',\n pathname === page?.href\n ? 'text-foreground'\n : 'text-foreground/60',\n )}\n >\n {t(page?.title)}\n </Link>\n )\n },\n ),\n }\n}\n"],"mappings":"AAiCU,SAEI,KAFJ;AAjCV,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,UAAU;AACnB,OAAO,UAAU;AACjB,SAAuB,WAAW,gBAAgB;AAClD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGA,MAAM,aAAa,CACxB,SACA,UACA,GACA,WACG;AACH,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,CAAC,CAAC;AAErC,YAAU,MAAM;AACd,UAAM,WAAW,eAAe,OAAO;AACvC,UAAM,eAAe,kBAAkB,UAAU,SAAS,CAAC,CAAC;AAC5D,aAAS,YAAY;AAAA,EAEvB,GAAG,CAAC,MAAM,CAAC;AAEX,SAAO;AAAA,IACL,OAAO,+BAAO;AAAA,MACZ,CAAC,SAAqE;AA/B5E;AAgCQ,gBAAO,6BAAM,YACX,qBAAC,gBACC;AAAA,8BAAC,uBAAoB,SAAO,MAC1B;AAAA,YAAC;AAAA;AAAA,cAEC,MAAM,6BAAM;AAAA,cACZ,WAAW;AAAA,gBACT;AAAA,gBACA,cAAa,6BAAM,QACf,oBACA;AAAA,cACN;AAAA,cAEC,YAAE,6BAAM,KAAK;AAAA;AAAA,YATT,6BAAM;AAAA,UAUb,GACF;AAAA,UACA,oBAAC,uBAAoB,WAAU,QAC5B,6CAAM,aAAN,mBAAgB,IAAI,CAAC,SAAW;AAjD/C,gBAAAA;AAkDgB,uCAAC,qBACC,8BAAC,QAAK,MAAM,IAAGA,MAAA,6BAAM,SAAN,gBAAAA,IAAY,QAAQ,SAAS,UAAU,GAAG,IACvD,8BAAC,oBAAkB,YAAE,6BAAM,KAAK,GAAE,GACpC,KAHsB,6BAAM,KAI9B;AAAA,cAEJ;AAAA,aAvBiB,6BAAM,KAwBzB,IAEA;AAAA,UAAC;AAAA;AAAA,YAEC,MAAM,6BAAM;AAAA,YACZ,WAAW;AAAA,cACT;AAAA,cACA,cAAa,6BAAM,QACf,oBACA;AAAA,YACN;AAAA,YAEC,YAAE,6BAAM,KAAK;AAAA;AAAA,UATT,6BAAM;AAAA,QAUb;AAAA,MAEJ;AAAA;AAAA,EAEJ;AACF;","names":["_a"]}
|
|
1
|
+
{"version":3,"sources":["../../../components/hooks/use-page-nav.tsx"],"sourcesContent":["import { createPagesSubNav } from '../dashboard/utils/build-nav'\r\nimport { createKeyIndex } from '../dashboard/utils/build-nav'\r\nimport { cn } from '../../lib/utils'\r\nimport Link from 'next/link'\r\nimport { ReactElement, useEffect, useState } from 'react'\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuGroup,\r\n DropdownMenuItem,\r\n DropdownMenuTrigger,\r\n} from '../ui/dropdown-menu'\r\nimport { Sitemap } from '../../types/sitemap'\r\n\r\nexport const usePageNav = (\r\n sitemap: Sitemap,\r\n pathname: string,\r\n t: (key: string) => string,\r\n userId?: string,\r\n) => {\r\n const [pages, setPages] = useState([])\r\n\r\n useEffect(() => {\r\n const keyIndex = createKeyIndex(sitemap)\r\n const reducedPages = createPagesSubNav(keyIndex, 'pages', {})\r\n setPages(reducedPages)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [userId])\r\n\r\n return {\r\n pages: pages?.map(\r\n (page: { title: string; href: string; children?: ReactElement[] }) => {\r\n return page?.children ? (\r\n <DropdownMenu key={page?.title}>\r\n <DropdownMenuTrigger asChild>\r\n <Link\r\n key={page?.title}\r\n href={page?.href}\r\n className={cn(\r\n 'hover:text-foreground/80 transition-colors',\r\n pathname === page?.href\r\n ? 'text-foreground'\r\n : 'text-foreground/60',\r\n )}\r\n >\r\n {t(page?.title)}\r\n </Link>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent className=\"w-56\">\r\n {page?.children?.map((link: any) => (\r\n <DropdownMenuGroup key={link?.title}>\r\n <Link href={`${link?.href?.replace(':user', userId || '')}`}>\r\n <DropdownMenuItem>{t(link?.title)}</DropdownMenuItem>\r\n </Link>\r\n </DropdownMenuGroup>\r\n ))}\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n ) : (\r\n <Link\r\n key={page?.title}\r\n href={page?.href}\r\n className={cn(\r\n 'hover:text-foreground/80 transition-colors',\r\n pathname === page?.href\r\n ? 'text-foreground'\r\n : 'text-foreground/60',\r\n )}\r\n >\r\n {t(page?.title)}\r\n </Link>\r\n )\r\n },\r\n ),\r\n }\r\n}\r\n"],"mappings":"AAiCU,SAEI,KAFJ;AAjCV,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,UAAU;AACnB,OAAO,UAAU;AACjB,SAAuB,WAAW,gBAAgB;AAClD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGA,MAAM,aAAa,CACxB,SACA,UACA,GACA,WACG;AACH,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,CAAC,CAAC;AAErC,YAAU,MAAM;AACd,UAAM,WAAW,eAAe,OAAO;AACvC,UAAM,eAAe,kBAAkB,UAAU,SAAS,CAAC,CAAC;AAC5D,aAAS,YAAY;AAAA,EAEvB,GAAG,CAAC,MAAM,CAAC;AAEX,SAAO;AAAA,IACL,OAAO,+BAAO;AAAA,MACZ,CAAC,SAAqE;AA/B5E;AAgCQ,gBAAO,6BAAM,YACX,qBAAC,gBACC;AAAA,8BAAC,uBAAoB,SAAO,MAC1B;AAAA,YAAC;AAAA;AAAA,cAEC,MAAM,6BAAM;AAAA,cACZ,WAAW;AAAA,gBACT;AAAA,gBACA,cAAa,6BAAM,QACf,oBACA;AAAA,cACN;AAAA,cAEC,YAAE,6BAAM,KAAK;AAAA;AAAA,YATT,6BAAM;AAAA,UAUb,GACF;AAAA,UACA,oBAAC,uBAAoB,WAAU,QAC5B,6CAAM,aAAN,mBAAgB,IAAI,CAAC,SAAW;AAjD/C,gBAAAA;AAkDgB,uCAAC,qBACC,8BAAC,QAAK,MAAM,IAAGA,MAAA,6BAAM,SAAN,gBAAAA,IAAY,QAAQ,SAAS,UAAU,GAAG,IACvD,8BAAC,oBAAkB,YAAE,6BAAM,KAAK,GAAE,GACpC,KAHsB,6BAAM,KAI9B;AAAA,cAEJ;AAAA,aAvBiB,6BAAM,KAwBzB,IAEA;AAAA,UAAC;AAAA;AAAA,YAEC,MAAM,6BAAM;AAAA,YACZ,WAAW;AAAA,cACT;AAAA,cACA,cAAa,6BAAM,QACf,oBACA;AAAA,YACN;AAAA,YAEC,YAAE,6BAAM,KAAK;AAAA;AAAA,UATT,6BAAM;AAAA,QAUb;AAAA,MAEJ;AAAA;AAAA,EAEJ;AACF;","names":["_a"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/hooks/use-user-entities.tsx"],"sourcesContent":["export const useUserEntities = () => {}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,kBAAkB,MAAM;AAAC;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/hooks/use-user-entities.tsx"],"sourcesContent":["export const useUserEntities = () => {}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,kBAAkB,MAAM;AAAC;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/hooks/use-user-entities.tsx"],"sourcesContent":["export const useUserEntities = () => {}\n"],"mappings":"AAAO,MAAM,kBAAkB,MAAM;AAAC;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/hooks/use-user-entities.tsx"],"sourcesContent":["export const useUserEntities = () => {}\r\n"],"mappings":"AAAO,MAAM,kBAAkB,MAAM;AAAC;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/icons/apple.tsx"],"sourcesContent":["export const AppleIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 256 315\"\n width=\"18\"\n height=\"18\"\n >\n <path\n d=\"M213.803 167.03c.442 47.58 41.74 63.413 42.197 63.615c-.35 1.116-6.599 22.563-21.757 44.716c-13.104 19.153-26.705 38.235-48.13 38.63c-21.05.388-27.82-12.483-51.888-12.483c-24.061 0-31.582 12.088-51.51 12.871c-20.68.783-36.428-20.71-49.64-39.793c-27-39.033-47.633-110.3-19.928-158.406c13.763-23.89 38.36-39.017 65.056-39.405c20.307-.387 39.475 13.662 51.889 13.662c12.406 0 35.699-16.895 60.186-14.414c10.25.427 39.026 4.14 57.503 31.186c-1.49.923-34.335 20.044-33.978 59.822M174.24 50.199c10.98-13.29 18.369-31.79 16.353-50.199c-15.826.636-34.962 10.546-46.314 23.828c-10.173 11.763-19.082 30.589-16.678 48.633c17.64 1.365 35.66-8.964 46.64-22.262\"\n fill=\"#cbd5e1\"\n />\n </svg>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQM;AARC,MAAM,YAAY,MAAM;AAC7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,QAAO;AAAA,MAEP;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/icons/apple.tsx"],"sourcesContent":["export const AppleIcon = () => {\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 256 315\"\r\n width=\"18\"\r\n height=\"18\"\r\n >\r\n <path\r\n d=\"M213.803 167.03c.442 47.58 41.74 63.413 42.197 63.615c-.35 1.116-6.599 22.563-21.757 44.716c-13.104 19.153-26.705 38.235-48.13 38.63c-21.05.388-27.82-12.483-51.888-12.483c-24.061 0-31.582 12.088-51.51 12.871c-20.68.783-36.428-20.71-49.64-39.793c-27-39.033-47.633-110.3-19.928-158.406c13.763-23.89 38.36-39.017 65.056-39.405c20.307-.387 39.475 13.662 51.889 13.662c12.406 0 35.699-16.895 60.186-14.414c10.25.427 39.026 4.14 57.503 31.186c-1.49.923-34.335 20.044-33.978 59.822M174.24 50.199c10.98-13.29 18.369-31.79 16.353-50.199c-15.826.636-34.962 10.546-46.314 23.828c-10.173 11.763-19.082 30.589-16.678 48.633c17.64 1.365 35.66-8.964 46.64-22.262\"\r\n fill=\"#cbd5e1\"\r\n />\r\n </svg>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQM;AARC,MAAM,YAAY,MAAM;AAC7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,QAAO;AAAA,MAEP;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/icons/apple.tsx"],"sourcesContent":["export const AppleIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 256 315\"\n width=\"18\"\n height=\"18\"\n >\n <path\n d=\"M213.803 167.03c.442 47.58 41.74 63.413 42.197 63.615c-.35 1.116-6.599 22.563-21.757 44.716c-13.104 19.153-26.705 38.235-48.13 38.63c-21.05.388-27.82-12.483-51.888-12.483c-24.061 0-31.582 12.088-51.51 12.871c-20.68.783-36.428-20.71-49.64-39.793c-27-39.033-47.633-110.3-19.928-158.406c13.763-23.89 38.36-39.017 65.056-39.405c20.307-.387 39.475 13.662 51.889 13.662c12.406 0 35.699-16.895 60.186-14.414c10.25.427 39.026 4.14 57.503 31.186c-1.49.923-34.335 20.044-33.978 59.822M174.24 50.199c10.98-13.29 18.369-31.79 16.353-50.199c-15.826.636-34.962 10.546-46.314 23.828c-10.173 11.763-19.082 30.589-16.678 48.633c17.64 1.365 35.66-8.964 46.64-22.262\"\n fill=\"#cbd5e1\"\n />\n </svg>\n )\n}\n"],"mappings":"AAQM;AARC,MAAM,YAAY,MAAM;AAC7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,QAAO;AAAA,MAEP;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/icons/apple.tsx"],"sourcesContent":["export const AppleIcon = () => {\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 256 315\"\r\n width=\"18\"\r\n height=\"18\"\r\n >\r\n <path\r\n d=\"M213.803 167.03c.442 47.58 41.74 63.413 42.197 63.615c-.35 1.116-6.599 22.563-21.757 44.716c-13.104 19.153-26.705 38.235-48.13 38.63c-21.05.388-27.82-12.483-51.888-12.483c-24.061 0-31.582 12.088-51.51 12.871c-20.68.783-36.428-20.71-49.64-39.793c-27-39.033-47.633-110.3-19.928-158.406c13.763-23.89 38.36-39.017 65.056-39.405c20.307-.387 39.475 13.662 51.889 13.662c12.406 0 35.699-16.895 60.186-14.414c10.25.427 39.026 4.14 57.503 31.186c-1.49.923-34.335 20.044-33.978 59.822M174.24 50.199c10.98-13.29 18.369-31.79 16.353-50.199c-15.826.636-34.962 10.546-46.314 23.828c-10.173 11.763-19.082 30.589-16.678 48.633c17.64 1.365 35.66-8.964 46.64-22.262\"\r\n fill=\"#cbd5e1\"\r\n />\r\n </svg>\r\n )\r\n}\r\n"],"mappings":"AAQM;AARC,MAAM,YAAY,MAAM;AAC7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,QAAO;AAAA,MAEP;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/icons/facebook.tsx"],"sourcesContent":["export const FacebookIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n fill=\"currentColor\"\n className=\"bi bi-facebook\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M16 8.049c0-4.446-3.582-8.05-8-8.05C3.582-.001 0 3.603 0 8.049c0 4.017 2.926 7.347 6.75 7.95v-5.625h-2v-2.325h2V6.549c0-2 1.224-3.098 3-3.098.857 0 1.593.064 1.808.092v2.096h-1.24c-1.224 0-1.46.583-1.46 1.437v1.884h2.46l-.393 2.325h-2.067v5.625C13.074 15.396 16 12.066 16 8.049z\"\n fill=\"#cbd5e1\"\n ></path>\n </svg>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUM;AAVC,MAAM,eAAe,MAAM;AAChC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAQ;AAAA,MAER;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACN;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/icons/facebook.tsx"],"sourcesContent":["export const FacebookIcon = () => {\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n fill=\"currentColor\"\r\n className=\"bi bi-facebook\"\r\n viewBox=\"0 0 16 16\"\r\n >\r\n <path\r\n d=\"M16 8.049c0-4.446-3.582-8.05-8-8.05C3.582-.001 0 3.603 0 8.049c0 4.017 2.926 7.347 6.75 7.95v-5.625h-2v-2.325h2V6.549c0-2 1.224-3.098 3-3.098.857 0 1.593.064 1.808.092v2.096h-1.24c-1.224 0-1.46.583-1.46 1.437v1.884h2.46l-.393 2.325h-2.067v5.625C13.074 15.396 16 12.066 16 8.049z\"\r\n fill=\"#cbd5e1\"\r\n ></path>\r\n </svg>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUM;AAVC,MAAM,eAAe,MAAM;AAChC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAQ;AAAA,MAER;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACN;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/icons/facebook.tsx"],"sourcesContent":["export const FacebookIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n fill=\"currentColor\"\n className=\"bi bi-facebook\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M16 8.049c0-4.446-3.582-8.05-8-8.05C3.582-.001 0 3.603 0 8.049c0 4.017 2.926 7.347 6.75 7.95v-5.625h-2v-2.325h2V6.549c0-2 1.224-3.098 3-3.098.857 0 1.593.064 1.808.092v2.096h-1.24c-1.224 0-1.46.583-1.46 1.437v1.884h2.46l-.393 2.325h-2.067v5.625C13.074 15.396 16 12.066 16 8.049z\"\n fill=\"#cbd5e1\"\n ></path>\n </svg>\n )\n}\n"],"mappings":"AAUM;AAVC,MAAM,eAAe,MAAM;AAChC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAQ;AAAA,MAER;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACN;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/icons/facebook.tsx"],"sourcesContent":["export const FacebookIcon = () => {\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n fill=\"currentColor\"\r\n className=\"bi bi-facebook\"\r\n viewBox=\"0 0 16 16\"\r\n >\r\n <path\r\n d=\"M16 8.049c0-4.446-3.582-8.05-8-8.05C3.582-.001 0 3.603 0 8.049c0 4.017 2.926 7.347 6.75 7.95v-5.625h-2v-2.325h2V6.549c0-2 1.224-3.098 3-3.098.857 0 1.593.064 1.808.092v2.096h-1.24c-1.224 0-1.46.583-1.46 1.437v1.884h2.46l-.393 2.325h-2.067v5.625C13.074 15.396 16 12.066 16 8.049z\"\r\n fill=\"#cbd5e1\"\r\n ></path>\r\n </svg>\r\n )\r\n}\r\n"],"mappings":"AAUM;AAVC,MAAM,eAAe,MAAM;AAChC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAQ;AAAA,MAER;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACN;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/icons/github.tsx"],"sourcesContent":["export const GithubIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n fill=\"currentColor\"\n className=\"bi bi-github\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z\"\n fill=\"#cbd5e1\"\n ></path>\n </svg>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUM;AAVC,MAAM,aAAa,MAAM;AAC9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAQ;AAAA,MAER;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACN;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/icons/github.tsx"],"sourcesContent":["export const GithubIcon = () => {\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n fill=\"currentColor\"\r\n className=\"bi bi-github\"\r\n viewBox=\"0 0 16 16\"\r\n >\r\n <path\r\n d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z\"\r\n fill=\"#cbd5e1\"\r\n ></path>\r\n </svg>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUM;AAVC,MAAM,aAAa,MAAM;AAC9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAQ;AAAA,MAER;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACN;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/icons/github.tsx"],"sourcesContent":["export const GithubIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n fill=\"currentColor\"\n className=\"bi bi-github\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z\"\n fill=\"#cbd5e1\"\n ></path>\n </svg>\n )\n}\n"],"mappings":"AAUM;AAVC,MAAM,aAAa,MAAM;AAC9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAQ;AAAA,MAER;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACN;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/icons/github.tsx"],"sourcesContent":["export const GithubIcon = () => {\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n fill=\"currentColor\"\r\n className=\"bi bi-github\"\r\n viewBox=\"0 0 16 16\"\r\n >\r\n <path\r\n d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z\"\r\n fill=\"#cbd5e1\"\r\n ></path>\r\n </svg>\r\n )\r\n}\r\n"],"mappings":"AAUM;AAVC,MAAM,aAAa,MAAM;AAC9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAQ;AAAA,MAER;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACN;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/icons/google.tsx"],"sourcesContent":["export const GoogleIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n fill=\"currentColor\"\n className=\"bi bi-google\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M15.545 6.558a9.42 9.42 0 0 1 .139 1.626c0 2.434-.87 4.492-2.384 5.885h.002C11.978 15.292 10.158 16 8 16A8 8 0 1 1 8 0a7.689 7.689 0 0 1 5.352 2.082l-2.284 2.284A4.347 4.347 0 0 0 8 3.166c-2.087 0-3.86 1.408-4.492 3.304a4.792 4.792 0 0 0 0 3.063h.003c.635 1.893 2.405 3.301 4.492 3.301 1.078 0 2.004-.276 2.722-.764h-.003a3.702 3.702 0 0 0 1.599-2.431H8v-3.08h7.545z\"\n fill=\"#cbd5e1\"\n ></path>\n </svg>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUM;AAVC,MAAM,aAAa,MAAM;AAC9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAQ;AAAA,MAER;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACN;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/icons/google.tsx"],"sourcesContent":["export const GoogleIcon = () => {\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n fill=\"currentColor\"\r\n className=\"bi bi-google\"\r\n viewBox=\"0 0 16 16\"\r\n >\r\n <path\r\n d=\"M15.545 6.558a9.42 9.42 0 0 1 .139 1.626c0 2.434-.87 4.492-2.384 5.885h.002C11.978 15.292 10.158 16 8 16A8 8 0 1 1 8 0a7.689 7.689 0 0 1 5.352 2.082l-2.284 2.284A4.347 4.347 0 0 0 8 3.166c-2.087 0-3.86 1.408-4.492 3.304a4.792 4.792 0 0 0 0 3.063h.003c.635 1.893 2.405 3.301 4.492 3.301 1.078 0 2.004-.276 2.722-.764h-.003a3.702 3.702 0 0 0 1.599-2.431H8v-3.08h7.545z\"\r\n fill=\"#cbd5e1\"\r\n ></path>\r\n </svg>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUM;AAVC,MAAM,aAAa,MAAM;AAC9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAQ;AAAA,MAER;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACN;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/icons/google.tsx"],"sourcesContent":["export const GoogleIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n fill=\"currentColor\"\n className=\"bi bi-google\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M15.545 6.558a9.42 9.42 0 0 1 .139 1.626c0 2.434-.87 4.492-2.384 5.885h.002C11.978 15.292 10.158 16 8 16A8 8 0 1 1 8 0a7.689 7.689 0 0 1 5.352 2.082l-2.284 2.284A4.347 4.347 0 0 0 8 3.166c-2.087 0-3.86 1.408-4.492 3.304a4.792 4.792 0 0 0 0 3.063h.003c.635 1.893 2.405 3.301 4.492 3.301 1.078 0 2.004-.276 2.722-.764h-.003a3.702 3.702 0 0 0 1.599-2.431H8v-3.08h7.545z\"\n fill=\"#cbd5e1\"\n ></path>\n </svg>\n )\n}\n"],"mappings":"AAUM;AAVC,MAAM,aAAa,MAAM;AAC9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAQ;AAAA,MAER;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACN;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/icons/google.tsx"],"sourcesContent":["export const GoogleIcon = () => {\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"18\"\r\n height=\"18\"\r\n fill=\"currentColor\"\r\n className=\"bi bi-google\"\r\n viewBox=\"0 0 16 16\"\r\n >\r\n <path\r\n d=\"M15.545 6.558a9.42 9.42 0 0 1 .139 1.626c0 2.434-.87 4.492-2.384 5.885h.002C11.978 15.292 10.158 16 8 16A8 8 0 1 1 8 0a7.689 7.689 0 0 1 5.352 2.082l-2.284 2.284A4.347 4.347 0 0 0 8 3.166c-2.087 0-3.86 1.408-4.492 3.304a4.792 4.792 0 0 0 0 3.063h.003c.635 1.893 2.405 3.301 4.492 3.301 1.078 0 2.004-.276 2.722-.764h-.003a3.702 3.702 0 0 0 1.599-2.431H8v-3.08h7.545z\"\r\n fill=\"#cbd5e1\"\r\n ></path>\r\n </svg>\r\n )\r\n}\r\n"],"mappings":"AAUM;AAVC,MAAM,aAAa,MAAM;AAC9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAQ;AAAA,MAER;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACN;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/icons/logo.tsx"],"sourcesContent":["import { cn } from '../../lib/utils'\n\nexport const Logo = ({ className }: { className?: string }) => {\n return (\n <svg\n id=\"Layer_1\"\n data-name=\"Layer 1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 107.25 132.8\"\n className={cn('text-gray-900 dark:text-white', className)}\n >\n <path\n d=\"M5.23,48.29A31.58,31.58,0,0,1,2.45,34.87c0-10.09,4.4-18.66,12.74-24.79C24.16,3.48,35.44,0,51.79,0a99.06,99.06,0,0,1,50.83,14L91.21,32.15c-13-7.22-28.55-11.34-41.82-11.34C24.58,20.81,7.84,30.07,5.23,48.29Zm72.17,56.3c-4.59,4.38-13.35,6.35-24.9,6.35-13.49,0-28-4.35-40.85-11.51L0,118.09c16.51,9.56,32.87,14.71,51.51,14.71,22.84,0,32.17-7.9,32.17-16C83.68,111.65,81.3,107.75,77.4,104.59Zm-17.73-49C47,51.11,36.52,45.66,31.93,40.3c-4.87,2.94-8.41,7.53-8.41,13,0,9.71,9.53,16,25.4,21.52,25.39,7.82,51.08,18.74,53.15,38.11a32.5,32.5,0,0,0,5.18-18.27C107.25,70.63,80.76,63,59.67,55.57Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAWM;AAXN,mBAAmB;AAEZ,MAAM,OAAO,CAAC,EAAE,UAAU,MAA8B;AAC7D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,IAAG;AAAA,MACH,aAAU;AAAA,MACV,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,eAAW,iBAAG,iCAAiC,SAAS;AAAA,MAExD;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/icons/logo.tsx"],"sourcesContent":["import { cn } from '../../lib/utils'\r\n\r\nexport const Logo = ({ className }: { className?: string }) => {\r\n return (\r\n <svg\r\n id=\"Layer_1\"\r\n data-name=\"Layer 1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 107.25 132.8\"\r\n className={cn('text-gray-900 dark:text-white', className)}\r\n >\r\n <path\r\n d=\"M5.23,48.29A31.58,31.58,0,0,1,2.45,34.87c0-10.09,4.4-18.66,12.74-24.79C24.16,3.48,35.44,0,51.79,0a99.06,99.06,0,0,1,50.83,14L91.21,32.15c-13-7.22-28.55-11.34-41.82-11.34C24.58,20.81,7.84,30.07,5.23,48.29Zm72.17,56.3c-4.59,4.38-13.35,6.35-24.9,6.35-13.49,0-28-4.35-40.85-11.51L0,118.09c16.51,9.56,32.87,14.71,51.51,14.71,22.84,0,32.17-7.9,32.17-16C83.68,111.65,81.3,107.75,77.4,104.59Zm-17.73-49C47,51.11,36.52,45.66,31.93,40.3c-4.87,2.94-8.41,7.53-8.41,13,0,9.71,9.53,16,25.4,21.52,25.39,7.82,51.08,18.74,53.15,38.11a32.5,32.5,0,0,0,5.18-18.27C107.25,70.63,80.76,63,59.67,55.57Z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAWM;AAXN,mBAAmB;AAEZ,MAAM,OAAO,CAAC,EAAE,UAAU,MAA8B;AAC7D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,IAAG;AAAA,MACH,aAAU;AAAA,MACV,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,eAAW,iBAAG,iCAAiC,SAAS;AAAA,MAExD;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/icons/logo.tsx"],"sourcesContent":["import { cn } from '../../lib/utils'\n\nexport const Logo = ({ className }: { className?: string }) => {\n return (\n <svg\n id=\"Layer_1\"\n data-name=\"Layer 1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 107.25 132.8\"\n className={cn('text-gray-900 dark:text-white', className)}\n >\n <path\n d=\"M5.23,48.29A31.58,31.58,0,0,1,2.45,34.87c0-10.09,4.4-18.66,12.74-24.79C24.16,3.48,35.44,0,51.79,0a99.06,99.06,0,0,1,50.83,14L91.21,32.15c-13-7.22-28.55-11.34-41.82-11.34C24.58,20.81,7.84,30.07,5.23,48.29Zm72.17,56.3c-4.59,4.38-13.35,6.35-24.9,6.35-13.49,0-28-4.35-40.85-11.51L0,118.09c16.51,9.56,32.87,14.71,51.51,14.71,22.84,0,32.17-7.9,32.17-16C83.68,111.65,81.3,107.75,77.4,104.59Zm-17.73-49C47,51.11,36.52,45.66,31.93,40.3c-4.87,2.94-8.41,7.53-8.41,13,0,9.71,9.53,16,25.4,21.52,25.39,7.82,51.08,18.74,53.15,38.11a32.5,32.5,0,0,0,5.18-18.27C107.25,70.63,80.76,63,59.67,55.57Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n"],"mappings":"AAWM;AAXN,SAAS,UAAU;AAEZ,MAAM,OAAO,CAAC,EAAE,UAAU,MAA8B;AAC7D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,IAAG;AAAA,MACH,aAAU;AAAA,MACV,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,WAAW,GAAG,iCAAiC,SAAS;AAAA,MAExD;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/icons/logo.tsx"],"sourcesContent":["import { cn } from '../../lib/utils'\r\n\r\nexport const Logo = ({ className }: { className?: string }) => {\r\n return (\r\n <svg\r\n id=\"Layer_1\"\r\n data-name=\"Layer 1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 107.25 132.8\"\r\n className={cn('text-gray-900 dark:text-white', className)}\r\n >\r\n <path\r\n d=\"M5.23,48.29A31.58,31.58,0,0,1,2.45,34.87c0-10.09,4.4-18.66,12.74-24.79C24.16,3.48,35.44,0,51.79,0a99.06,99.06,0,0,1,50.83,14L91.21,32.15c-13-7.22-28.55-11.34-41.82-11.34C24.58,20.81,7.84,30.07,5.23,48.29Zm72.17,56.3c-4.59,4.38-13.35,6.35-24.9,6.35-13.49,0-28-4.35-40.85-11.51L0,118.09c16.51,9.56,32.87,14.71,51.51,14.71,22.84,0,32.17-7.9,32.17-16C83.68,111.65,81.3,107.75,77.4,104.59Zm-17.73-49C47,51.11,36.52,45.66,31.93,40.3c-4.87,2.94-8.41,7.53-8.41,13,0,9.71,9.53,16,25.4,21.52,25.39,7.82,51.08,18.74,53.15,38.11a32.5,32.5,0,0,0,5.18-18.27C107.25,70.63,80.76,63,59.67,55.57Z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n )\r\n}\r\n"],"mappings":"AAWM;AAXN,SAAS,UAAU;AAEZ,MAAM,OAAO,CAAC,EAAE,UAAU,MAA8B;AAC7D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,IAAG;AAAA,MACH,aAAU;AAAA,MACV,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,WAAW,GAAG,iCAAiC,SAAS;AAAA,MAExD;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/lightbox/GallerySection.tsx"],"sourcesContent":["'use client'\n\nimport type { EntityImage } from './ImageLightbox.types'\n\nexport interface GallerySectionProps {\n images: EntityImage[]\n onImageClick: (imageId: number) => void\n testId?: string\n}\n\n/**\n * Reusable gallery section component for entity detail pages.\n * Renders a grid of gallery thumbnails with click handlers for lightbox integration.\n */\nexport function GallerySection({\n images,\n onImageClick,\n testId = 'gallery-grid',\n}: GallerySectionProps) {\n if (images.length === 0) {\n return null\n }\n\n return (\n <aside className=\"w-64\">\n <h3 className=\"text-default dark:text-default-dark mb-3 text-sm font-semibold\">\n Gallery\n </h3>\n <div className=\"grid grid-cols-2 gap-2\" data-testid={testId}>\n {images.map((img) => (\n <img\n key={img.id}\n src={img.cloudinaryUrl}\n alt={`Gallery image ${img.displayOrder + 1}`}\n className=\"aspect-square w-full cursor-pointer rounded object-cover transition-opacity hover:opacity-80\"\n data-testid=\"gallery-thumbnail\"\n onClick={() => onImageClick(img.id)}\n />\n ))}\n </div>\n </aside>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBI;AAVG,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,SAAS;AACX,GAAwB;AACtB,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,SACE,6CAAC,WAAM,WAAU,QACf;AAAA,gDAAC,QAAG,WAAU,kEAAiE,qBAE/E;AAAA,IACA,4CAAC,SAAI,WAAU,0BAAyB,eAAa,QAClD,iBAAO,IAAI,CAAC,QACX;AAAA,MAAC;AAAA;AAAA,QAEC,KAAK,IAAI;AAAA,QACT,KAAK,iBAAiB,IAAI,eAAe,CAAC;AAAA,QAC1C,WAAU;AAAA,QACV,eAAY;AAAA,QACZ,SAAS,MAAM,aAAa,IAAI,EAAE;AAAA;AAAA,MAL7B,IAAI;AAAA,IAMX,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/lightbox/GallerySection.tsx"],"sourcesContent":["'use client'\r\n\r\nimport type { EntityImage } from './ImageLightbox.types'\r\n\r\nexport interface GallerySectionProps {\r\n images: EntityImage[]\r\n onImageClick: (imageId: number) => void\r\n testId?: string\r\n}\r\n\r\n/**\r\n * Reusable gallery section component for entity detail pages.\r\n * Renders a grid of gallery thumbnails with click handlers for lightbox integration.\r\n */\r\nexport function GallerySection({\r\n images,\r\n onImageClick,\r\n testId = 'gallery-grid',\r\n}: GallerySectionProps) {\r\n if (images.length === 0) {\r\n return null\r\n }\r\n\r\n return (\r\n <aside className=\"w-64\">\r\n <h3 className=\"text-default dark:text-default-dark mb-3 text-sm font-semibold\">\r\n Gallery\r\n </h3>\r\n <div className=\"grid grid-cols-2 gap-2\" data-testid={testId}>\r\n {images.map((img) => (\r\n <img\r\n key={img.id}\r\n src={img.cloudinaryUrl}\r\n alt={`Gallery image ${img.displayOrder + 1}`}\r\n className=\"aspect-square w-full cursor-pointer rounded object-cover transition-opacity hover:opacity-80\"\r\n data-testid=\"gallery-thumbnail\"\r\n onClick={() => onImageClick(img.id)}\r\n />\r\n ))}\r\n </div>\r\n </aside>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBI;AAVG,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,SAAS;AACX,GAAwB;AACtB,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,SACE,6CAAC,WAAM,WAAU,QACf;AAAA,gDAAC,QAAG,WAAU,kEAAiE,qBAE/E;AAAA,IACA,4CAAC,SAAI,WAAU,0BAAyB,eAAa,QAClD,iBAAO,IAAI,CAAC,QACX;AAAA,MAAC;AAAA;AAAA,QAEC,KAAK,IAAI;AAAA,QACT,KAAK,iBAAiB,IAAI,eAAe,CAAC;AAAA,QAC1C,WAAU;AAAA,QACV,eAAY;AAAA,QACZ,SAAS,MAAM,aAAa,IAAI,EAAE;AAAA;AAAA,MAL7B,IAAI;AAAA,IAMX,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/lightbox/GallerySection.tsx"],"sourcesContent":["'use client'\n\nimport type { EntityImage } from './ImageLightbox.types'\n\nexport interface GallerySectionProps {\n images: EntityImage[]\n onImageClick: (imageId: number) => void\n testId?: string\n}\n\n/**\n * Reusable gallery section component for entity detail pages.\n * Renders a grid of gallery thumbnails with click handlers for lightbox integration.\n */\nexport function GallerySection({\n images,\n onImageClick,\n testId = 'gallery-grid',\n}: GallerySectionProps) {\n if (images.length === 0) {\n return null\n }\n\n return (\n <aside className=\"w-64\">\n <h3 className=\"text-default dark:text-default-dark mb-3 text-sm font-semibold\">\n Gallery\n </h3>\n <div className=\"grid grid-cols-2 gap-2\" data-testid={testId}>\n {images.map((img) => (\n <img\n key={img.id}\n src={img.cloudinaryUrl}\n alt={`Gallery image ${img.displayOrder + 1}`}\n className=\"aspect-square w-full cursor-pointer rounded object-cover transition-opacity hover:opacity-80\"\n data-testid=\"gallery-thumbnail\"\n onClick={() => onImageClick(img.id)}\n />\n ))}\n </div>\n </aside>\n )\n}\n"],"mappings":";AAwBI,SACE,KADF;AAVG,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,SAAS;AACX,GAAwB;AACtB,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,SACE,qBAAC,WAAM,WAAU,QACf;AAAA,wBAAC,QAAG,WAAU,kEAAiE,qBAE/E;AAAA,IACA,oBAAC,SAAI,WAAU,0BAAyB,eAAa,QAClD,iBAAO,IAAI,CAAC,QACX;AAAA,MAAC;AAAA;AAAA,QAEC,KAAK,IAAI;AAAA,QACT,KAAK,iBAAiB,IAAI,eAAe,CAAC;AAAA,QAC1C,WAAU;AAAA,QACV,eAAY;AAAA,QACZ,SAAS,MAAM,aAAa,IAAI,EAAE;AAAA;AAAA,MAL7B,IAAI;AAAA,IAMX,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/lightbox/GallerySection.tsx"],"sourcesContent":["'use client'\r\n\r\nimport type { EntityImage } from './ImageLightbox.types'\r\n\r\nexport interface GallerySectionProps {\r\n images: EntityImage[]\r\n onImageClick: (imageId: number) => void\r\n testId?: string\r\n}\r\n\r\n/**\r\n * Reusable gallery section component for entity detail pages.\r\n * Renders a grid of gallery thumbnails with click handlers for lightbox integration.\r\n */\r\nexport function GallerySection({\r\n images,\r\n onImageClick,\r\n testId = 'gallery-grid',\r\n}: GallerySectionProps) {\r\n if (images.length === 0) {\r\n return null\r\n }\r\n\r\n return (\r\n <aside className=\"w-64\">\r\n <h3 className=\"text-default dark:text-default-dark mb-3 text-sm font-semibold\">\r\n Gallery\r\n </h3>\r\n <div className=\"grid grid-cols-2 gap-2\" data-testid={testId}>\r\n {images.map((img) => (\r\n <img\r\n key={img.id}\r\n src={img.cloudinaryUrl}\r\n alt={`Gallery image ${img.displayOrder + 1}`}\r\n className=\"aspect-square w-full cursor-pointer rounded object-cover transition-opacity hover:opacity-80\"\r\n data-testid=\"gallery-thumbnail\"\r\n onClick={() => onImageClick(img.id)}\r\n />\r\n ))}\r\n </div>\r\n </aside>\r\n )\r\n}\r\n"],"mappings":";AAwBI,SACE,KADF;AAVG,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,SAAS;AACX,GAAwB;AACtB,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,SACE,qBAAC,WAAM,WAAU,QACf;AAAA,wBAAC,QAAG,WAAU,kEAAiE,qBAE/E;AAAA,IACA,oBAAC,SAAI,WAAU,0BAAyB,eAAa,QAClD,iBAAO,IAAI,CAAC,QACX;AAAA,MAAC;AAAA;AAAA,QAEC,KAAK,IAAI;AAAA,QACT,KAAK,iBAAiB,IAAI,eAAe,CAAC;AAAA,QAC1C,WAAU;AAAA,QACV,eAAY;AAAA,QACZ,SAAS,MAAM,aAAa,IAAI,EAAE;AAAA;AAAA,MAL7B,IAAI;AAAA,IAMX,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/lightbox/ImageLightbox.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect, useRef, useState, useCallback } from 'react'\nimport { createPortal } from 'react-dom'\nimport { Button } from '../ui/button'\nimport type { ImageLightboxProps } from './ImageLightbox.types'\n\nexport function ImageLightbox({\n images,\n isOpen,\n initialIndex,\n onClose,\n onNavigate,\n}: ImageLightboxProps) {\n const [currentIndex, setCurrentIndex] = useState(initialIndex)\n const [mounted, setMounted] = useState(false)\n const imageRef = useRef<HTMLImageElement>(null)\n\n // Track if component is mounted (client-side only)\n useEffect(() => {\n setMounted(true)\n return () => setMounted(false)\n }, [])\n\n // Sync with initialIndex when lightbox opens\n useEffect(() => {\n if (isOpen) {\n setCurrentIndex(initialIndex)\n }\n }, [isOpen, initialIndex])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = ''\n }\n }\n }, [isOpen])\n\n // Navigation handlers\n const next = useCallback(() => {\n setCurrentIndex((prev) => {\n const newIndex = Math.min(prev + 1, images.length - 1)\n if (onNavigate) onNavigate(newIndex)\n return newIndex\n })\n }, [images.length, onNavigate])\n\n const prev = useCallback(() => {\n setCurrentIndex((prev) => {\n const newIndex = Math.max(prev - 1, 0)\n if (onNavigate) onNavigate(newIndex)\n return newIndex\n })\n }, [onNavigate])\n\n // Keyboard navigation\n useEffect(() => {\n if (!isOpen) return\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n if (e.key === 'ArrowLeft') prev()\n if (e.key === 'ArrowRight') next()\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [isOpen, onClose, prev, next])\n\n // Handle image errors\n const handleImageError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n e.currentTarget.src = '/placeholder-image.png'\n console.error('Failed to load image:', images[currentIndex]?.url)\n }\n\n // Handle swipe gestures\n useEffect(() => {\n if (!isOpen) return\n\n let touchStartX = 0\n let touchEndX = 0\n\n const handleTouchStart = (e: TouchEvent) => {\n touchStartX = e.changedTouches[0].screenX\n }\n\n const handleTouchEnd = (e: TouchEvent) => {\n touchEndX = e.changedTouches[0].screenX\n const swipeDistance = touchStartX - touchEndX\n const minSwipeDistance = 50\n\n if (Math.abs(swipeDistance) > minSwipeDistance) {\n if (swipeDistance > 0 && currentIndex < images.length - 1) {\n next()\n } else if (swipeDistance < 0 && currentIndex > 0) {\n prev()\n }\n }\n }\n\n window.addEventListener('touchstart', handleTouchStart, { passive: true })\n window.addEventListener('touchend', handleTouchEnd, { passive: true })\n\n return () => {\n window.removeEventListener('touchstart', handleTouchStart)\n window.removeEventListener('touchend', handleTouchEnd)\n }\n }, [isOpen, currentIndex, images.length, next, prev])\n\n // Handle backdrop click\n const handleBackdropClick = (e: React.MouseEvent) => {\n if (e.target === e.currentTarget) {\n onClose()\n }\n }\n\n // Empty gallery\n if (!images || images.length === 0) return null\n\n // Not open or not mounted (SSR safety)\n if (!mounted || !isOpen) return null\n\n const currentImage = images[currentIndex]\n const isFirstImage = currentIndex === 0\n const isLastImage = currentIndex === images.length - 1\n const isSingleImage = images.length === 1\n\n return createPortal(\n <div\n className=\"animate-in fade-in fixed inset-0 z-50 flex items-center justify-center bg-black/90 duration-200\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Image lightbox\"\n onClick={handleBackdropClick}\n >\n {/* Close button */}\n <Button\n onClick={onClose}\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute right-4 top-4 z-10 rounded-full bg-white/10 text-white hover:bg-white/20 focus:ring-white md:h-8 md:w-8\"\n aria-label=\"Close lightbox\"\n >\n <svg\n className=\"h-6 w-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </Button>\n\n {/* Previous button */}\n {!isSingleImage && (\n <Button\n onClick={prev}\n disabled={isFirstImage}\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute left-4 z-10 h-12 w-12 rounded-full bg-white/10 text-white hover:bg-white/20 focus:ring-white disabled:cursor-not-allowed disabled:opacity-50 md:left-8 md:opacity-0 md:hover:opacity-100\"\n aria-label=\"Previous image\"\n >\n <svg\n className=\"h-6 w-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </Button>\n )}\n\n {/* Image container */}\n <div className=\"relative mx-4 flex max-h-[90vh] max-w-[90vw] items-center justify-center\">\n <img\n ref={imageRef}\n src={currentImage.url}\n alt={currentImage.alt}\n className=\"max-h-[90vh] max-w-[90vw] object-contain transition-opacity duration-150\"\n style={{ touchAction: 'pan-x pan-y pinch-zoom' }}\n onError={handleImageError}\n />\n </div>\n\n {/* Next button */}\n {!isSingleImage && (\n <Button\n onClick={next}\n disabled={isLastImage}\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute right-4 z-10 h-12 w-12 rounded-full bg-white/10 text-white hover:bg-white/20 focus:ring-white disabled:cursor-not-allowed disabled:opacity-50 md:right-8 md:opacity-0 md:hover:opacity-100\"\n aria-label=\"Next image\"\n >\n <svg\n className=\"h-6 w-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </Button>\n )}\n\n {/* Image counter */}\n {!isSingleImage && (\n <div className=\"absolute bottom-4 left-1/2 -translate-x-1/2 rounded-full bg-black/50 px-4 py-2 text-sm text-white\">\n {currentIndex + 1} / {images.length}\n </div>\n )}\n </div>,\n document.body,\n )\n}\n"],"mappings":"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","names":["prev"]}
|
|
1
|
+
{"version":3,"sources":["../../../components/lightbox/ImageLightbox.tsx"],"sourcesContent":["'use client'\r\n\r\nimport { useEffect, useRef, useState, useCallback } from 'react'\r\nimport { createPortal } from 'react-dom'\r\nimport { Button } from '../ui/button'\r\nimport type { ImageLightboxProps } from './ImageLightbox.types'\r\n\r\nexport function ImageLightbox({\r\n images,\r\n isOpen,\r\n initialIndex,\r\n onClose,\r\n onNavigate,\r\n}: ImageLightboxProps) {\r\n const [currentIndex, setCurrentIndex] = useState(initialIndex)\r\n const [mounted, setMounted] = useState(false)\r\n const imageRef = useRef<HTMLImageElement>(null)\r\n\r\n // Track if component is mounted (client-side only)\r\n useEffect(() => {\r\n setMounted(true)\r\n return () => setMounted(false)\r\n }, [])\r\n\r\n // Sync with initialIndex when lightbox opens\r\n useEffect(() => {\r\n if (isOpen) {\r\n setCurrentIndex(initialIndex)\r\n }\r\n }, [isOpen, initialIndex])\r\n\r\n // Lock body scroll when open\r\n useEffect(() => {\r\n if (isOpen) {\r\n document.body.style.overflow = 'hidden'\r\n return () => {\r\n document.body.style.overflow = ''\r\n }\r\n }\r\n }, [isOpen])\r\n\r\n // Navigation handlers\r\n const next = useCallback(() => {\r\n setCurrentIndex((prev) => {\r\n const newIndex = Math.min(prev + 1, images.length - 1)\r\n if (onNavigate) onNavigate(newIndex)\r\n return newIndex\r\n })\r\n }, [images.length, onNavigate])\r\n\r\n const prev = useCallback(() => {\r\n setCurrentIndex((prev) => {\r\n const newIndex = Math.max(prev - 1, 0)\r\n if (onNavigate) onNavigate(newIndex)\r\n return newIndex\r\n })\r\n }, [onNavigate])\r\n\r\n // Keyboard navigation\r\n useEffect(() => {\r\n if (!isOpen) return\r\n\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') onClose()\r\n if (e.key === 'ArrowLeft') prev()\r\n if (e.key === 'ArrowRight') next()\r\n }\r\n\r\n window.addEventListener('keydown', handleKeyDown)\r\n return () => window.removeEventListener('keydown', handleKeyDown)\r\n }, [isOpen, onClose, prev, next])\r\n\r\n // Handle image errors\r\n const handleImageError = (e: React.SyntheticEvent<HTMLImageElement>) => {\r\n e.currentTarget.src = '/placeholder-image.png'\r\n console.error('Failed to load image:', images[currentIndex]?.url)\r\n }\r\n\r\n // Handle swipe gestures\r\n useEffect(() => {\r\n if (!isOpen) return\r\n\r\n let touchStartX = 0\r\n let touchEndX = 0\r\n\r\n const handleTouchStart = (e: TouchEvent) => {\r\n touchStartX = e.changedTouches[0].screenX\r\n }\r\n\r\n const handleTouchEnd = (e: TouchEvent) => {\r\n touchEndX = e.changedTouches[0].screenX\r\n const swipeDistance = touchStartX - touchEndX\r\n const minSwipeDistance = 50\r\n\r\n if (Math.abs(swipeDistance) > minSwipeDistance) {\r\n if (swipeDistance > 0 && currentIndex < images.length - 1) {\r\n next()\r\n } else if (swipeDistance < 0 && currentIndex > 0) {\r\n prev()\r\n }\r\n }\r\n }\r\n\r\n window.addEventListener('touchstart', handleTouchStart, { passive: true })\r\n window.addEventListener('touchend', handleTouchEnd, { passive: true })\r\n\r\n return () => {\r\n window.removeEventListener('touchstart', handleTouchStart)\r\n window.removeEventListener('touchend', handleTouchEnd)\r\n }\r\n }, [isOpen, currentIndex, images.length, next, prev])\r\n\r\n // Handle backdrop click\r\n const handleBackdropClick = (e: React.MouseEvent) => {\r\n if (e.target === e.currentTarget) {\r\n onClose()\r\n }\r\n }\r\n\r\n // Empty gallery\r\n if (!images || images.length === 0) return null\r\n\r\n // Not open or not mounted (SSR safety)\r\n if (!mounted || !isOpen) return null\r\n\r\n const currentImage = images[currentIndex]\r\n const isFirstImage = currentIndex === 0\r\n const isLastImage = currentIndex === images.length - 1\r\n const isSingleImage = images.length === 1\r\n\r\n return createPortal(\r\n <div\r\n className=\"animate-in fade-in fixed inset-0 z-50 flex items-center justify-center bg-black/90 duration-200\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-label=\"Image lightbox\"\r\n onClick={handleBackdropClick}\r\n >\r\n {/* Close button */}\r\n <Button\r\n onClick={onClose}\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"absolute right-4 top-4 z-10 rounded-full bg-white/10 text-white hover:bg-white/20 focus:ring-white md:h-8 md:w-8\"\r\n aria-label=\"Close lightbox\"\r\n >\r\n <svg\r\n className=\"h-6 w-6\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M6 18L18 6M6 6l12 12\"\r\n />\r\n </svg>\r\n </Button>\r\n\r\n {/* Previous button */}\r\n {!isSingleImage && (\r\n <Button\r\n onClick={prev}\r\n disabled={isFirstImage}\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"absolute left-4 z-10 h-12 w-12 rounded-full bg-white/10 text-white hover:bg-white/20 focus:ring-white disabled:cursor-not-allowed disabled:opacity-50 md:left-8 md:opacity-0 md:hover:opacity-100\"\r\n aria-label=\"Previous image\"\r\n >\r\n <svg\r\n className=\"h-6 w-6\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M15 19l-7-7 7-7\"\r\n />\r\n </svg>\r\n </Button>\r\n )}\r\n\r\n {/* Image container */}\r\n <div className=\"relative mx-4 flex max-h-[90vh] max-w-[90vw] items-center justify-center\">\r\n <img\r\n ref={imageRef}\r\n src={currentImage.url}\r\n alt={currentImage.alt}\r\n className=\"max-h-[90vh] max-w-[90vw] object-contain transition-opacity duration-150\"\r\n style={{ touchAction: 'pan-x pan-y pinch-zoom' }}\r\n onError={handleImageError}\r\n />\r\n </div>\r\n\r\n {/* Next button */}\r\n {!isSingleImage && (\r\n <Button\r\n onClick={next}\r\n disabled={isLastImage}\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"absolute right-4 z-10 h-12 w-12 rounded-full bg-white/10 text-white hover:bg-white/20 focus:ring-white disabled:cursor-not-allowed disabled:opacity-50 md:right-8 md:opacity-0 md:hover:opacity-100\"\r\n aria-label=\"Next image\"\r\n >\r\n <svg\r\n className=\"h-6 w-6\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M9 5l7 7-7 7\"\r\n />\r\n </svg>\r\n </Button>\r\n )}\r\n\r\n {/* Image counter */}\r\n {!isSingleImage && (\r\n <div className=\"absolute bottom-4 left-1/2 -translate-x-1/2 rounded-full bg-black/50 px-4 py-2 text-sm text-white\">\r\n {currentIndex + 1} / {images.length}\r\n </div>\r\n )}\r\n </div>,\r\n document.body,\r\n )\r\n}\r\n"],"mappings":"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","names":["prev"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/lightbox/ImageLightbox.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect, useRef, useState, useCallback } from 'react'\nimport { createPortal } from 'react-dom'\nimport { Button } from '../ui/button'\nimport type { ImageLightboxProps } from './ImageLightbox.types'\n\nexport function ImageLightbox({\n images,\n isOpen,\n initialIndex,\n onClose,\n onNavigate,\n}: ImageLightboxProps) {\n const [currentIndex, setCurrentIndex] = useState(initialIndex)\n const [mounted, setMounted] = useState(false)\n const imageRef = useRef<HTMLImageElement>(null)\n\n // Track if component is mounted (client-side only)\n useEffect(() => {\n setMounted(true)\n return () => setMounted(false)\n }, [])\n\n // Sync with initialIndex when lightbox opens\n useEffect(() => {\n if (isOpen) {\n setCurrentIndex(initialIndex)\n }\n }, [isOpen, initialIndex])\n\n // Lock body scroll when open\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = ''\n }\n }\n }, [isOpen])\n\n // Navigation handlers\n const next = useCallback(() => {\n setCurrentIndex((prev) => {\n const newIndex = Math.min(prev + 1, images.length - 1)\n if (onNavigate) onNavigate(newIndex)\n return newIndex\n })\n }, [images.length, onNavigate])\n\n const prev = useCallback(() => {\n setCurrentIndex((prev) => {\n const newIndex = Math.max(prev - 1, 0)\n if (onNavigate) onNavigate(newIndex)\n return newIndex\n })\n }, [onNavigate])\n\n // Keyboard navigation\n useEffect(() => {\n if (!isOpen) return\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n if (e.key === 'ArrowLeft') prev()\n if (e.key === 'ArrowRight') next()\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [isOpen, onClose, prev, next])\n\n // Handle image errors\n const handleImageError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n e.currentTarget.src = '/placeholder-image.png'\n console.error('Failed to load image:', images[currentIndex]?.url)\n }\n\n // Handle swipe gestures\n useEffect(() => {\n if (!isOpen) return\n\n let touchStartX = 0\n let touchEndX = 0\n\n const handleTouchStart = (e: TouchEvent) => {\n touchStartX = e.changedTouches[0].screenX\n }\n\n const handleTouchEnd = (e: TouchEvent) => {\n touchEndX = e.changedTouches[0].screenX\n const swipeDistance = touchStartX - touchEndX\n const minSwipeDistance = 50\n\n if (Math.abs(swipeDistance) > minSwipeDistance) {\n if (swipeDistance > 0 && currentIndex < images.length - 1) {\n next()\n } else if (swipeDistance < 0 && currentIndex > 0) {\n prev()\n }\n }\n }\n\n window.addEventListener('touchstart', handleTouchStart, { passive: true })\n window.addEventListener('touchend', handleTouchEnd, { passive: true })\n\n return () => {\n window.removeEventListener('touchstart', handleTouchStart)\n window.removeEventListener('touchend', handleTouchEnd)\n }\n }, [isOpen, currentIndex, images.length, next, prev])\n\n // Handle backdrop click\n const handleBackdropClick = (e: React.MouseEvent) => {\n if (e.target === e.currentTarget) {\n onClose()\n }\n }\n\n // Empty gallery\n if (!images || images.length === 0) return null\n\n // Not open or not mounted (SSR safety)\n if (!mounted || !isOpen) return null\n\n const currentImage = images[currentIndex]\n const isFirstImage = currentIndex === 0\n const isLastImage = currentIndex === images.length - 1\n const isSingleImage = images.length === 1\n\n return createPortal(\n <div\n className=\"animate-in fade-in fixed inset-0 z-50 flex items-center justify-center bg-black/90 duration-200\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Image lightbox\"\n onClick={handleBackdropClick}\n >\n {/* Close button */}\n <Button\n onClick={onClose}\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute right-4 top-4 z-10 rounded-full bg-white/10 text-white hover:bg-white/20 focus:ring-white md:h-8 md:w-8\"\n aria-label=\"Close lightbox\"\n >\n <svg\n className=\"h-6 w-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </Button>\n\n {/* Previous button */}\n {!isSingleImage && (\n <Button\n onClick={prev}\n disabled={isFirstImage}\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute left-4 z-10 h-12 w-12 rounded-full bg-white/10 text-white hover:bg-white/20 focus:ring-white disabled:cursor-not-allowed disabled:opacity-50 md:left-8 md:opacity-0 md:hover:opacity-100\"\n aria-label=\"Previous image\"\n >\n <svg\n className=\"h-6 w-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </Button>\n )}\n\n {/* Image container */}\n <div className=\"relative mx-4 flex max-h-[90vh] max-w-[90vw] items-center justify-center\">\n <img\n ref={imageRef}\n src={currentImage.url}\n alt={currentImage.alt}\n className=\"max-h-[90vh] max-w-[90vw] object-contain transition-opacity duration-150\"\n style={{ touchAction: 'pan-x pan-y pinch-zoom' }}\n onError={handleImageError}\n />\n </div>\n\n {/* Next button */}\n {!isSingleImage && (\n <Button\n onClick={next}\n disabled={isLastImage}\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute right-4 z-10 h-12 w-12 rounded-full bg-white/10 text-white hover:bg-white/20 focus:ring-white disabled:cursor-not-allowed disabled:opacity-50 md:right-8 md:opacity-0 md:hover:opacity-100\"\n aria-label=\"Next image\"\n >\n <svg\n className=\"h-6 w-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </Button>\n )}\n\n {/* Image counter */}\n {!isSingleImage && (\n <div className=\"absolute bottom-4 left-1/2 -translate-x-1/2 rounded-full bg-black/50 px-4 py-2 text-sm text-white\">\n {currentIndex + 1} / {images.length}\n </div>\n )}\n </div>,\n document.body,\n )\n}\n"],"mappings":"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","names":["prev"]}
|
|
1
|
+
{"version":3,"sources":["../../../components/lightbox/ImageLightbox.tsx"],"sourcesContent":["'use client'\r\n\r\nimport { useEffect, useRef, useState, useCallback } from 'react'\r\nimport { createPortal } from 'react-dom'\r\nimport { Button } from '../ui/button'\r\nimport type { ImageLightboxProps } from './ImageLightbox.types'\r\n\r\nexport function ImageLightbox({\r\n images,\r\n isOpen,\r\n initialIndex,\r\n onClose,\r\n onNavigate,\r\n}: ImageLightboxProps) {\r\n const [currentIndex, setCurrentIndex] = useState(initialIndex)\r\n const [mounted, setMounted] = useState(false)\r\n const imageRef = useRef<HTMLImageElement>(null)\r\n\r\n // Track if component is mounted (client-side only)\r\n useEffect(() => {\r\n setMounted(true)\r\n return () => setMounted(false)\r\n }, [])\r\n\r\n // Sync with initialIndex when lightbox opens\r\n useEffect(() => {\r\n if (isOpen) {\r\n setCurrentIndex(initialIndex)\r\n }\r\n }, [isOpen, initialIndex])\r\n\r\n // Lock body scroll when open\r\n useEffect(() => {\r\n if (isOpen) {\r\n document.body.style.overflow = 'hidden'\r\n return () => {\r\n document.body.style.overflow = ''\r\n }\r\n }\r\n }, [isOpen])\r\n\r\n // Navigation handlers\r\n const next = useCallback(() => {\r\n setCurrentIndex((prev) => {\r\n const newIndex = Math.min(prev + 1, images.length - 1)\r\n if (onNavigate) onNavigate(newIndex)\r\n return newIndex\r\n })\r\n }, [images.length, onNavigate])\r\n\r\n const prev = useCallback(() => {\r\n setCurrentIndex((prev) => {\r\n const newIndex = Math.max(prev - 1, 0)\r\n if (onNavigate) onNavigate(newIndex)\r\n return newIndex\r\n })\r\n }, [onNavigate])\r\n\r\n // Keyboard navigation\r\n useEffect(() => {\r\n if (!isOpen) return\r\n\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') onClose()\r\n if (e.key === 'ArrowLeft') prev()\r\n if (e.key === 'ArrowRight') next()\r\n }\r\n\r\n window.addEventListener('keydown', handleKeyDown)\r\n return () => window.removeEventListener('keydown', handleKeyDown)\r\n }, [isOpen, onClose, prev, next])\r\n\r\n // Handle image errors\r\n const handleImageError = (e: React.SyntheticEvent<HTMLImageElement>) => {\r\n e.currentTarget.src = '/placeholder-image.png'\r\n console.error('Failed to load image:', images[currentIndex]?.url)\r\n }\r\n\r\n // Handle swipe gestures\r\n useEffect(() => {\r\n if (!isOpen) return\r\n\r\n let touchStartX = 0\r\n let touchEndX = 0\r\n\r\n const handleTouchStart = (e: TouchEvent) => {\r\n touchStartX = e.changedTouches[0].screenX\r\n }\r\n\r\n const handleTouchEnd = (e: TouchEvent) => {\r\n touchEndX = e.changedTouches[0].screenX\r\n const swipeDistance = touchStartX - touchEndX\r\n const minSwipeDistance = 50\r\n\r\n if (Math.abs(swipeDistance) > minSwipeDistance) {\r\n if (swipeDistance > 0 && currentIndex < images.length - 1) {\r\n next()\r\n } else if (swipeDistance < 0 && currentIndex > 0) {\r\n prev()\r\n }\r\n }\r\n }\r\n\r\n window.addEventListener('touchstart', handleTouchStart, { passive: true })\r\n window.addEventListener('touchend', handleTouchEnd, { passive: true })\r\n\r\n return () => {\r\n window.removeEventListener('touchstart', handleTouchStart)\r\n window.removeEventListener('touchend', handleTouchEnd)\r\n }\r\n }, [isOpen, currentIndex, images.length, next, prev])\r\n\r\n // Handle backdrop click\r\n const handleBackdropClick = (e: React.MouseEvent) => {\r\n if (e.target === e.currentTarget) {\r\n onClose()\r\n }\r\n }\r\n\r\n // Empty gallery\r\n if (!images || images.length === 0) return null\r\n\r\n // Not open or not mounted (SSR safety)\r\n if (!mounted || !isOpen) return null\r\n\r\n const currentImage = images[currentIndex]\r\n const isFirstImage = currentIndex === 0\r\n const isLastImage = currentIndex === images.length - 1\r\n const isSingleImage = images.length === 1\r\n\r\n return createPortal(\r\n <div\r\n className=\"animate-in fade-in fixed inset-0 z-50 flex items-center justify-center bg-black/90 duration-200\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-label=\"Image lightbox\"\r\n onClick={handleBackdropClick}\r\n >\r\n {/* Close button */}\r\n <Button\r\n onClick={onClose}\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"absolute right-4 top-4 z-10 rounded-full bg-white/10 text-white hover:bg-white/20 focus:ring-white md:h-8 md:w-8\"\r\n aria-label=\"Close lightbox\"\r\n >\r\n <svg\r\n className=\"h-6 w-6\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M6 18L18 6M6 6l12 12\"\r\n />\r\n </svg>\r\n </Button>\r\n\r\n {/* Previous button */}\r\n {!isSingleImage && (\r\n <Button\r\n onClick={prev}\r\n disabled={isFirstImage}\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"absolute left-4 z-10 h-12 w-12 rounded-full bg-white/10 text-white hover:bg-white/20 focus:ring-white disabled:cursor-not-allowed disabled:opacity-50 md:left-8 md:opacity-0 md:hover:opacity-100\"\r\n aria-label=\"Previous image\"\r\n >\r\n <svg\r\n className=\"h-6 w-6\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M15 19l-7-7 7-7\"\r\n />\r\n </svg>\r\n </Button>\r\n )}\r\n\r\n {/* Image container */}\r\n <div className=\"relative mx-4 flex max-h-[90vh] max-w-[90vw] items-center justify-center\">\r\n <img\r\n ref={imageRef}\r\n src={currentImage.url}\r\n alt={currentImage.alt}\r\n className=\"max-h-[90vh] max-w-[90vw] object-contain transition-opacity duration-150\"\r\n style={{ touchAction: 'pan-x pan-y pinch-zoom' }}\r\n onError={handleImageError}\r\n />\r\n </div>\r\n\r\n {/* Next button */}\r\n {!isSingleImage && (\r\n <Button\r\n onClick={next}\r\n disabled={isLastImage}\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"absolute right-4 z-10 h-12 w-12 rounded-full bg-white/10 text-white hover:bg-white/20 focus:ring-white disabled:cursor-not-allowed disabled:opacity-50 md:right-8 md:opacity-0 md:hover:opacity-100\"\r\n aria-label=\"Next image\"\r\n >\r\n <svg\r\n className=\"h-6 w-6\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M9 5l7 7-7 7\"\r\n />\r\n </svg>\r\n </Button>\r\n )}\r\n\r\n {/* Image counter */}\r\n {!isSingleImage && (\r\n <div className=\"absolute bottom-4 left-1/2 -translate-x-1/2 rounded-full bg-black/50 px-4 py-2 text-sm text-white\">\r\n {currentIndex + 1} / {images.length}\r\n </div>\r\n )}\r\n </div>,\r\n document.body,\r\n )\r\n}\r\n"],"mappings":"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","names":["prev"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/lightbox/ImageLightbox.types.ts"],"sourcesContent":["export interface EntityImage {\n id: number\n entityType: 'story' | 'character' | 'location' | 'timeline'\n entityId: number\n cloudinaryPublicId: string\n cloudinaryUrl: string\n isPrimary: boolean\n displayOrder: number\n fileName: string\n fileSize: number\n width: number\n height: number\n createdAt: Date\n updatedAt: Date\n}\n\nexport interface LightboxImage {\n id: number\n url: string\n alt: string\n}\n\nexport interface ImageLightboxProps {\n images: LightboxImage[]\n isOpen: boolean\n initialIndex: number\n onClose: () => void\n onNavigate?: (index: number) => void\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../components/lightbox/ImageLightbox.types.ts"],"sourcesContent":["export interface EntityImage {\r\n id: number\r\n entityType: 'story' | 'character' | 'location' | 'timeline'\r\n entityId: number\r\n cloudinaryPublicId: string\r\n cloudinaryUrl: string\r\n isPrimary: boolean\r\n displayOrder: number\r\n fileName: string\r\n fileSize: number\r\n width: number\r\n height: number\r\n createdAt: Date\r\n updatedAt: Date\r\n}\r\n\r\nexport interface LightboxImage {\r\n id: number\r\n url: string\r\n alt: string\r\n}\r\n\r\nexport interface ImageLightboxProps {\r\n images: LightboxImage[]\r\n isOpen: boolean\r\n initialIndex: number\r\n onClose: () => void\r\n onNavigate?: (index: number) => void\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|